Вот уже два года как я планировал сделать свой собственный mmorpg мир с гвинтом и куртизанками, сидел вечерами кодил, высчитывал баланс, изучал язык программирования и вот, в один момент я понял, что это вытягивает время, силы, и не принесет ожидаемого результата с вероятностью почти 100%. Почему - да потому что таких игр сотни, если не тысячи, имею ввиду те, что про меч, магию и брожение по локациям в поисках очередного шлема великого магистра. Те проекты, которые пользуются спросом, практически все созданы большими командами, а я даже на анимацию более-менее нормальную не готов тратить несколько дней. Да, есть проекты, которые "выстреливают", но это нужно чтобы все звезды сошлись и была оригинальная идея. Смешно.
Ну и, как говорится, смех смехом, а эта самая кверху мехом, и не теряя лишних минут, я генерю за пару вечеров казуалку, которая с гораздо меньшими силами получается залипательнее. Пусть и механика избитая, но нет нет, да зайду иногда попробовать рекорд побить предыдущий. Правила просты - собираем зеленые мячи и уворачиваемся от красных, желтые тоже собираем, это бустеры - X2 к очкам за собранный зеленый шар, притягивание зеленых шаров на некоторое время и здоровье. Может кто еще какой бустер предложит, идеи приветствуются. Игра в телеге, если зайдет, перенесу на андроид или буду еще чего-нибудь придумывать простенькое, если не зайдет. Кому интересно https://t.me/jugreenbot
Недавно с товарищем разрабатывали один внутренний ресурс и понадобился удобный Alert. Нужно было получать уведомления, если система вдруг перестанет отвечать. Подумал, что телеграм в этом плане подойдет идеально: ничего дополнительно ставить не нужно, все под рукой.
Я пробовал поискать готового бота, пообщался с коллегами — давали разные варианты. Но либо функциональность не та, либо интерфейс неудобный. В итоге решил: «А почему бы не написать своего?»
И написал.
Бот по расписанию пингует API эндпоинты (в общем то любую страницу) и присылает уведомление в телеграм, если что-то пошло не так: нет соединения, долгий отклик или отрицательный код ответа. Звучит просто, но внутри все немного интереснее.
Писал на Java 21. Да, знаю, не супер прагматично для телеграм-бота, но я джавист — привычнее и спокойнее.
Начал с проектирования структуры и сущностей. Получились User (потом масштабировал в Chat), Api и HistoryApi. Первоначально бот управлялся через команды, но по мере роста модели управления пришлось перейти на inline-меню, чтобы UI был удобнее.
Проверку эндпоинтов реализовал конкурентно: выгрузку списка API из базы распределяю по виртуальным потокам (Java 21). В каждом потоке выполняются задачи проверки и асинхронного ожидания ответа (с учётом таймаутов). Такой подход позволил без лишних накладных расходов параллельно обрабатывать тысячи проверок.
В какой-то момент увлекся: добавил статистику, историю проверок, выгрузку журнала, работу в групповых чатах, возможность более точной настройки интервалов и времени отклика. Да, это добавило нагрузки, но зато функционал получился гибкий.
Кстати, сервер, через который бот выполняет проверки, находится в Санкт-Петербурге (пока). Это значит, что время отклика измеряется именно из этого региона, и результаты могут немного отличаться от того, что вы видите со своего компьютера.
Сейчас бот работает так:
добавляем эндпоинт — встали в очереди на проверку;
дефолтный интервал проверки — 15 минут;
максимальное время отклика до уведомления — 2000 мс;
интервал обхода очереди всех API раз в минуту.
Меню управления
В меню управления можно изменить название, URL, интервал проверки, время отклика, приостановить проверку, отключить уведомления для конкретного API или удалить его.
Если во время проверки больше 10 раз не удается получить положительный ответ, проверка ставится на паузу. Пользователь после решения проблемы с ресурсом может возобновить её вручную.
Авто-остановка проверок при многократных ошибках
Бот бесплатный, но есть разные планы для удобства и справедливого распределения ресурсов.
Бесплатный — для обычных пользователей: до 2 API, проверка не чаще чем раз в 15 минут, простой порог отклика 1000 мс, статистика только последней проверки. Для большинства это более чем достаточно.
Персональный — для тех, кто хочет больше контроля: до 5 API, проверка каждую минуту, порог отклика до 250 мс, статистика последних 5 проверок и выгрузка CSV до 14 дней.
Групповой — для команд и групп: работа в чатах, до 20 API.
Эти тарифы сделаны не для того, чтобы кого-то заставлять платить, а чтобы покрывать расходы на активных пользователей, которые используют ресурсоёмкие функции. Если вы просто хотите получать уведомления о своих парах API, бесплатного плана хватит с головой.
Из проблем, с которыми пришлось разбираться вручную, — работа с часовыми поясами. Сервер в UTC, пользователи в разных часовых поясах. Добавил ручной ввод смещения от UTC, теперь статистика и история отображаются в локальном времени.
В перспективе хочу добавить поддержку Мini app — чтобы UI стал еще удобнее и можно было управлять проверками прямо в Telegram без многоступенчатых меню.
🧑💻Начну свой первый пост со знакомства. Меня зовут Евгений, мне 19 лет. Я занимаюсь разработкой майнкрафт проектов, по простому я разработчик серверов или же их технический администратор.
🫶🏻В добавок к этому посту я прикрепил небольшой трейлер моего личного сервера, а точнее его beta части.
🖥Сейчас я активно занимаюсь разработкой своего сервера и нуждаюсь в людях которые могут меня поддержать и стать частью игрового комьюнити.
💻+📱Самое главное, я всегда создаю сервера кроссплатформенного типа, это значит что на сервер можно заходить с любого устройства, будь до телефон(minecraft pe) или же компьютер(Java). Я ориентируюсь на всех и никого не обделяю.
Если я смог тебя чем-то зацепить, то подпишись на меня, мне будет очень приятно увидеть твою поддержку.
Я открытый человек и всегда рад новым знакомствам!
Если имеется желание, то в добавок хочу оставить свой телеграмм канал, где ты можешь лампово провести время, поговорить со мной и просто найти новые знакомства!
Не так давно начал плотно работать с фреймворком Spring и нужно было углубить свои знания в этом направлении, к тому же частенько слышал про эту книгу от своих знакомых разработчиков, вот и решил почитать именно её.
Перейдем к самой книге! Понравилось что с первых страниц автор использовал доступный и понятный стиль изложения, не только объяснял, как работает Spring, но и делился практическими примерами, которые можно было сразу же протестировать. Так же изложил основополагающие моменты, которые позволили мне понять, как создавать более гибкие и поддерживаемые приложения.
Каждая глава строилась на практике. Я видел, как быстро можно внедрить тестирование, используя JUnit и Mockito, и как Spring упрощает эту задачу. В книге был не просто набор теоретических знаний, а предоставление инструментов и концепций, которые я смог применить в своих проектах. Так же я нашел раздел о Spring MVC особенно полезным: он открыл для меня пути к созданию RESTful веб-сервисов, которые стали неотъемлемой частью современных приложений.
В целом, "Spring в действии" – это отличный компаньон для любого разработчика, желающего освоить Spring Framework и создавать качественные приложения. Эта книга станет настольным руководством для вас на протяжении долгого времени и окажет неоценимую помощь в вашем пути.
На сегодняшний день это скорее реликвия, чем актуальный источник информации. В книге рассмотрена пятая версия Java, и, несмотря на то, что автор описывает фундаментальный функционал, который почти не меняется, здесь вы не найдёте описание инструментов, которые стали неотъемлемой частью Java за последние десять лет.
Книга охватывает множество тем — от основ синтаксиса до более сложных аспектов объектно-ориентированного программирования. Это не просто учебник по программированию на языке Java, а целая философская система, которая предлагает читателю глубокое понимание основ и принципов объектно-ориентированного программирования. Автор, Брус Эккель, отлично справляется с поставленной задачей, объединяя теорию и практику.
Книга очень качественная, обложка и печать очень порадовали. Перевод неплохой, но иногда встречаются термины, к которым приходится привыкать. Например, Heap переведена как Куча. Перевод правильный, но в реальной жизни его никто не употребляет. Обычно так и говорят "Хип", ну или память, на худой конец. Но это мелкая придирка.
В целом я считаю, хорошая. Конечно для того чтобы начать учить Java с нуля в наше время эта книга подойдет плохо, но для людей с опытом, замечательный вариант чтобы узнать что-то новое и усовершенствовать свой код!