Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Ищите дары леса и готовьте изысканные блюда на лесной ферме с ресторанчиками!

Грибники: дары леса

Фермы, Симуляторы, 2D

Играть

Топ прошлой недели

  • solenakrivetka solenakrivetka 7 постов
  • Animalrescueed Animalrescueed 53 поста
  • ia.panorama ia.panorama 12 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
cbagpipe
cbagpipe
Лига программистов
Серия Прога мониторинга игровых ковров Artisan

Обновление проги мониторинга ковров Artisan. Практически 2.0⁠⁠

1 год назад

Продолжаю программировать)

Ссылка на первую часть: https://pikabu.ru/story/monitoring_dostupnosti_geymerskikh_kovrikov_artisan_11613910

Переписал своего бота мониторинга ковров практически с нуля.

Если раньше это была обычная программа, которую раз в полчаса запускал планировщик, то теперь это служба, которая работает круглосуточно, мониторит ковры нонстоп, а также отвечает на команды подписчиков в телеге.

Новые функции:

- Команды телеграм-бота. То есть они в принципе появились и ими можно пользоваться.

- Команда /get. Основное нововведение. Если вам не нужно постоянно получать уведомления о том какие ковры появились, а какие закончились, можно отписаться от уведомлений через /stop, но при этом по команде /get получать все доступные на данный момент ковры или только интересные вам.

То есть "/get 99" вернёт только ковры у которых в коде продукта есть 99, а "/get 99 xxl" - только те у которых в коде есть и 99 и xxl.

Кстати, сегодня вышел новый ковёр (キ83) . На сайте появился, а больше нигде никаких анонсов пока нет.

Кстати, сегодня вышел новый ковёр (キ83) . На сайте появился, а больше нигде никаких анонсов пока нет.

- Индивидуальные фильтры уведомлений. Если лично вам не нужны уведомления о том, что в продаже появились классические ковры размера S - это можно организовать. Пока фильтр настраивается только с моей стороны.

из переписки с пользователем бота

из переписки с пользователем бота

Немного технической информации для любителей программирования:

- Это всё ещё приложение на NET8.
- Пишу и собираю всё в линуксе в VS Code.
- Для основы сервиса использовал шаблон Worker, но так как кода не особо много и он не сложный, дополнительно на микросервисы внутри ихней HostedService инфраструктуры не стал дробить. Просто в пределах одного воркера на функциональные классы поделил и всё.
- Конфиги и данные храню в JSON. Сериализую периодически в файл встроенным сериализатором (System.Text.Json.JsonSerializer)

Прочая обвязка

- Для телеграм-бота использую `Telegram.Bot`
- Для логгирования `log4net`
- Для прикручивания к линуксовому диспетчеру служб Systemd - `Microsoft.Extensions.Hosting.Systemd`
- Для отображения таблички у себя на сайте использую `DataTables` (офигенная штука). И снова планировщик cron, который с бэкенда во фронтенд копирует периодически файлик с данными.
- Для персональных фильтров изпользовал `Dynamic.Linq` - тоже классная вещь, не надо самому мутить свой контракт и парсер для него.

Вроде всё... Программа простая, но так приятно смотреть как оно всё само работает)

Показать полностью 2
[моё] Linux Программа Приложение Microsoft Программирование Csharp Dotnet
0
HelloWorldSev
HelloWorldSev

Проблема решена⁠⁠

1 год назад

Немного подучив основы C# для Unity, я всё же смог решить для себя проблему, которую раньше не мог решить. Я не мог добавить замедленный счёт и ускорять его.

Проблема решена
Показать полностью 1
[моё] Программирование Unity Csharp
3
18
mopsicus
mopsicus
Лига Разработчиков Видеоигр

Фреймворк для онлайн игр⁠⁠

1 год назад

Всем привет! Запушил на гитхаб свой пет-проект. Это фреймворк для онлайн игр и приложений написанный на Node.js и Typescript, клиентская часть на Unity и C#.

Для чего это всё?

Можно делать многопользовательские онлайн игры и билдить под Android, iOS и WebGL, бесплатно, без регистрации и смс. Сейчас расскажу подробнее.

Давным-давно был такой проект на гитхабе Pomelo. По меркам интернета – реально древний, ему больше 10 лет. Он и сейчас там есть, но уже заархивирован и не поддерживается, но форки вроде пилятся. Кто первый раз слышит, это фреймворк для создания игровых серверов на JavaScript и Node.js. Проект довольно большой, куча модулей, клиенты под разные платформы, хорошая дока. Наткнулся я на него несколько лет назад и начал ковырять, запускать, что-то пробовать. В итоге, многие вещи в нём мне понравились, но показалось всё как-то замудрёно что ли. Наверно потому что китайцы писали, а может я в ноду не сильно мог 😅 В общем, оттуда я потягал какие-то скрипты, интересные решения, потом переписал, упростил и, получился у меня такой лайтовый сервер из нескольких файлов, на котором я тестил всякие свои проекты, изучал Node.js, JavaScript и TypeScript позднее.

Когда что-то стало получаться, переписал всю серверную часть на TypeScript и всё это дело стало обретать какой-то полезный вид. И вот, в результате n-ой итерации, архитектура устоялась, протестировалась и получился Shardy.

Shardy – это фреймворк для онлайн игр и приложений на Node.js. Он даёт базовую функциональность для построения микросервисных решений: мобильных, социальных, веб, многопользовательских игр, приложений реального времени, чатов, middleware сервисов и т.п. Есть клиент на TS встроенный в фреймворк, а также пакет для Unity, который поддерживает сборки под iOS, Android и WebGL.

Основные фичи:

- микросервисная парадигма
- простой API: RPC, команды, подписки и т.п.
- транспорт данных через сокеты и вебсокеты
- легкость и быстрота: Node.js и TypeScript
- поддержка пользовательской сериализации
- поддержка пользовательской валидации рукопожатий (handshake)
- продвинутый логгер: теги, фильтры, области
- справочные материалы: документация, сниппеты, примеры
- почти нулевая конфигурация

Есть демка с примерами работы API и простенькая онлайн игра "Крестики-Нолики": как серверная часть, так и клиентская. Всё можно посмотреть, поковырять, запустить у себя и попробовать поиграть. Весь код старался комментировать, иногда даже излишне. Также есть документация с описанием всех компонентов и методов. Это всё в процессе наполнения и улучшения.

Ниже, пример WebGL билда с игрой "Крестики-Нолики".

Перейти к видео

В примере реализовано:

  • старт/остановка поиска свободных игр

  • простой матчмейкинг

  • отправка команды хода игрока

  • отправка команды выхода из игры

  • обнаружение ничьей и конца раунда

  • сохранение текущего счёта

Основная цель Shardy – предоставить простое бесплатное решение для создания многопользовательских онлайн игр. Вот так вот громко 😅 На это будет обращено основное внимание при дальнейшей разработке новых функций, сервисов и туторов (было бы время...).

Да, пока это голый фреймворк без полезной нагрузки в виде готовых каких-то решений, модулей, примеров игр и т.п. И да, входной порог есть, нужно уметь в Node.js и Typescript, чтобы делать серверную часть. Поэтому буду добавлять полезности по мере возможностей.

Приглашаю всех заинтересованных инди и не только, посмотреть, покрутить, примерить, потестить на своих каких-то задачах, играх, проектах, прототипах. Если будут вопросы, отвечу тут в комментах или на почту mail@mopsicus.ru.

Shardy

Shardy for Unity

Shardy Tic-Tac-Toe server

Docs

Показать полностью 1
[моё] Gamedev Разработка Unity Nodejs Typescript Csharp Open Source Видео Без звука Длиннопост
10
29
Вопрос из ленты «Эксперты»
MarinaLevy
Лига программистов

Курс С# для новичка⁠⁠

1 год назад

Здравствуйте!

Работаю с SQL Server, в интерфейсе, которым пользуюсь, есть возможность упростить работу скриптами С#.

Ищу онлайн курс для новичка по С#.

В гугле есть просто море всего, хотелось бы найти хороший курс.

Лучше всего, если он не только хороший, но и бесплатный :)

Буду благодарна вашим советам

[моё] Csharp Вопрос Спроси Пикабу Помогите найти Языки программирования Курсы программирования Текст
11
cbagpipe
cbagpipe
Серия Прога мониторинга игровых ковров Artisan

Мониторинг доступности геймерских ковриков Artisan⁠⁠

1 год назад

Может кому пригодится.

По просьбе одного хорошего человека написал программу и сделал удобную табличку с информацией о японских геймерских ковриках для мыши от компании Artisan.

Информация тянется с официального японского сайта (https://www.artisan-jp.com/) каждые полчаса. Есть возможность слать уведомления в телеграм.

https://cbagpipe.ru/artisan/

Табличка выглядит так:

Уведомления — так:

UPD:

Писал полностью в Linux. В качестве IDE использовал VS Code. Фреймворк — Net8.

Если интересны подробности, пишите в комментах - добавлю немного кода.

Затем закинул программу себе на сервер и добавил её периодическое выполнение в cron.

Из недостатков — для отправки уведомлений в Telegram использовал самый популярный пакет — Telegram.Bot. Так вот, в текущей версии этот пакет не поддерживает тримминг. Соответственно, собранное приложение вместо ~18МБ весит почти 100!

На сервере места достаточно, так что это не проблема. Но… 100МБ на очень скромное по функциям приложение! У моего внутреннего программиста-перфекциониска глаз дёргается от этого.

Показать полностью 2
[моё] Программирование Csharp Dotnet Геймеры Коврик Компьютер Киберспорт Товары Япония
0
2
cherkalexander
cherkalexander

Как я обычно узнаю о новых фичах в C#⁠⁠

1 год назад

О новых фичах в C# я обычно узнаю с помощью подсказок Райдера — IDE для C# от JetBrains.

В общем, обновился, пишу код, и Райдер предлагает что-то исправить там, где раньше все было окей. Думаю — ну ок, давай исправим. Но ощущение, что он перепутал C# c JavaScript.

- string[] array = new [] { “a”, “b”, } предлагает заменить на string[] array = ["a", "b"]
- Array.Empty<string>() на []
- List<string> list = new (vowels) на List<string> list = [.. vowels]

Особенно интересен последний пример, очень уж напоминающий spread оператор из JS. И действительно, в C# его тоже завезли, правда по пути потеряли одну точку и назвали spread element.


int[] row0 = [1, 2, 3];
int[] row1 = [4, 5, 6];
int[] row2 = [7, 8, 9];

int[] example1 = [..row0, ..row1, ..row2];
List<int> example2 = [..row0, row1[0]];


В общем, в C# 12 поднасыпали синтаксического сахара для работы с коллекциями. А ещё прихватили Primary конструктор из Scala. Это когда конструктор объявляется сразу после имени класса.


public class BankAccount(string accountID, string owner)
{
public string AccountID { get; } = accountID;
public string Owner { get; } = owner;

public override string ToString() => $"Account ID: {AccountID}, Owner: {Owner}";
}


Подробнее о релизе C# 12 здесь.

А о том, как добавить поддержку спред оператора для кастомных коллекций описывается тут.

Показать полностью
[моё] Кросспостинг Pikabu Publish Bot Csharp Текст Программирование IT
11
4
m0nya
Я смог - сможешь и ты!

Ответ Vanek239 в «Я написал свою книгу по программированию»⁠⁠3

1 год назад

Подержите мое пиво.

Итак, есть програмка. Хочется сделать ее более красивой.

Код как в изначальном примере, я тут только добавил реакцию на попытку открытия двери.

Файл Program.cs

Файл Program.cs

Поехали.

  1. Выделяем интерфейс для внешнего ввода IInput. Реализация внешнего ввода через консоль.

Файл ConsoleInput.cs

Файл ConsoleInput.cs

2. Выделяем интерфейс для внешнего вывода IOutput. Реализация вывода также через консоль.

Файл ConsoleOutput.cs

Файл ConsoleOutput.cs

3. Выделяем класс "Door". Класс зависит от внешних ввода и вывода. Т.е. от интерфейсов IInput, IOutput. Внедрение зависимостей через конструктор.

По сравнению с оригиналом, логика здесь чуть-чуть была причесана.

Файл Door.cs

Файл Door.cs

4. Делаем Program красивым. Program работает с IOutput и Door. Зависимости также задаются через конструктор.

В методе Main инициализируем все сущности, добавляем вызов метода Run у Program.

Измененный файл Program.cs

Измененный файл Program.cs

Итог.

"Ну и нафига все это надо?" - спросит читатель. - "Столько писанины лишней!".

Не спорю. Но дело в том что теперь:

1. Способы ввода и вывода можно менять, просто добавляя новые реализации (классы) для интерфейсов IInput и IOutput. Например, можно сделать чтение и вывод через файлы, просто создав соответствующие новые классы для этих интерфейсов и проинициализировав их в Program.cs

2. Функционал из IInput и IOutput можно использовать в других частях программы, если такие будут.

3. Наконец, можно покрыть основной код unit тестами.

Бонус.

Пример unit тестов (xUnit).

Используется Moq для подмены реализаций IInput и IOutput.

Классы Program и Door используются "настоящие" и именно их содержимое будет протестировано.

Начало файла ProgramTests.cs

Начало файла ProgramTests.cs

Здесь изображен конструктор для тестов. Он автоматически создает Program с зависимостями перед запуском каждого теста.

Проверяем, что у нас будет на выходе IOutput, если на IInput будут определенные воздействия.

1. Тесты. Если возраст менее или равен 18.

Файл ProgramTests.cs. Часть 2

Файл ProgramTests.cs. Часть 2

2. Тесты. Если возраст более 18.

Файл ProgramTests.cs. Часть 3

Файл ProgramTests.cs. Часть 3

Прохождение тестов:

В принципе, здесь можно еще тестов понаписать. Например, непокрытым остался private метод EnterAge, у класса Door (обработка ошибок парсинга ввода).

Вот такой рефакторинг получился.

Исходники тут (надеюсь, что будут доступны): https://filetransfer.io/data-package/c9BtU9lp#link

Показать полностью 9
Программирование IT Айтишники Программист Csharp Текст Ответ на пост Длиннопост
5
DELETED

Ответ на пост «Я написал свою книгу по программированию»⁠⁠3

1 год назад

Если данный господин является инфоцыганом, то предлагаю на него кинуть жалобу в СК РФ сейчас их любят кошмарить!

[моё] Программирование IT Айтишники Программист Csharp Unity Gamedev Ответ на пост Текст
7
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии