Архив рубрики: Dev

Категория, содержащая различные информационные заметки или посты об интересных проектах.

Написание простейших ботов для Telegram на JavaScript и Python

Как всем уже давно известно, в популярном клиенте для обмена мгновенными сообщениями Telegram появилась возможность создавать специальных ботов, которые могут оказаться весьма полезными, будучи добавленными в групповые чаты. Боты могут показывать участникам конференции различную полезную информацию, будь то последние новости какого-либо интересного сайта, погоду или курс валют. Функциональность программ для ботов практически не ограничена, например, можно реализовать бота, который будет отправлять в приватный или групповой чат фотографию с подключенной к компьютеру Web-камеры или мониторить температуру процессора на сервере. К примеру, запустив программу бота на домашнем компьютере, можно будет следить за какими-нибудь его показателями удалённо, просто отправляя команды боту с любого устройства, на котором установлен клиент Telegram. Однако, существует несколько ограничений, которые реализованы на уровне Telegram Bot API:

  • Во-первых, бот не может написать первым, он должен обязательно отозваться на команду пользователя;
  • Во-вторых, боты не могут отвечать на сообщения друг-друга.

Это сделано для того, чтобы усложнить жизнь различным мошенникам и спаммерам и предотвратить возможность неконтролируемого флуда множества ботов в чатах. Создавая программу, всегда нужно помнить об этих ограничениях.



Дайджест-бот, отдающий накопленные сообщения за день в процессе работы. Скриншот из Desktop’ного клиента Telegram.

Для сообщества любителей мобильных гаджетов от Motorola — MotoFan.Ru существует весьма активная конференция в Telegram, участником которой я также являюсь. Мной было замечено, что для того, чтобы отметить значимое событие, произошедшее в течении дня, или какую-нибудь важную информацию, пользователи часто прибегают к использованию тега #digest. Подобным тегом отмечаются сообщения, которые по мнению участников конференции необходимо добавить в сводку текущий событий. При этом посетители группового чата, которые появляются в конференции достаточно редко, могут не читать огромное количество оставленных ранее сообщений, а выделить с помощью тега #digest только основную информацию. Но для этого им нужно воспользоваться поиском тега по сообщениям и попрыгать по листингу чата, что достаточно неудобно. Поэтому возникла идея создания дайджест-бота, который будет накапливать и сохранять все сообщения участников конференции, отмеченные тегом #digest за какой-либо срок, например, за неделю, а потом выдавать их скопом по команде /digest в чат. Это весьма удобно, в отличие от ручного поиска необходимых сообщений.

Читать далее Написание простейших ботов для Telegram на JavaScript и Python

Dev, Manuals, Others

Cave Story (Doukutsu Monogatari) via NXEngine для различных платформ

Cave Story (или в оригинале — Dōkutsu Monogatari), является одной из самых известных бесплатных японских Indie-игр. Весь игровой контент, включая музыкальные композиции и код, был создан лишь одним человеком — Daisuke «Pixel» Amaya. Pixel в течении пяти лет трудился над своей игрой, уделяя ей как можно больше свободного времени. Именно благодаря знакомству с Cave Story многие начинающие Game Developer’ы вдохновились на создание собственных Indie-проектов. После своего первого релиза для PC, который состоялся в 2004 году, игра медленно завоёвывала популярность геймеров в японском интернете, а после её перевода на английский язык — стремительным темпом распространилась по всему миру. В целом, Cave Story получила достаточно положительные отзывы критиков за свой увлекательный геймплей и интересный сюжет. Несколько лет спустя, в ноябре 2011-го года, в сервисе цифровой дистрибуции Steam вышло переиздание игры, названное Cave Story+, содержащее незначительные отличия от оригинальной версии.



Скриншоты из русской версии Cave Story, запущенной с помощью NXEngine на устройстве Ritmix RZX-50; локации «Хранилище Яиц» и «Грасстаун»

Cave Story представляет собой 2D-платформер с элементами RPG, выполненный в антураже старых классических игр, в частности, разработчик вдохновлялся таким проектом, как Metroid. После проявления интереса к игре со стороны публики Cave Story была портирована на наиболее популярные платформы. Поскольку исходный код игры закрыт, Cave Story удалось перенести лишь на ограниченное количество игровых устройств. К счастью, нашлась энтузиастка, которая полностью переписала движок игры на C++ (изначально он был написан на C) и выпустила код под лицензией GNU GPL Version 3. Свой проект Caitlin «rogueeve» Shaw назвала NXEngine. Благодаря этому движку, практически полностью совместимому с оригинальным, в Cave Story можно поиграть на самых разных платформах и устройствах.

Но, к сожалению, не всё так гладко и NXEngine всё ещё нуждается в «доработке напильником». Например, на Dingoo A320 невозможно играть со включенной музыкой из-за возникающих «подтормаживаний» в игре. Caitlin Shaw хотела полностью сохранить совместимость с оригинальными DATA-файлами Cave Story, поэтому музыка в нём генерируется процедурно, создавая большую нагрузку на CPU. Центральный процессор Dingoo A320 не справляется с такой нагрузкой, отсюда и возникают «подтормаживания», сильно мешающие игровому процессу. Одна из моих модификаций исходного кода NXEngine позволяет использовать библиотеку SDL_mixer, добавляя в игру возможность воспроизведения трекерной музыкой из внешних файлов, вместо ресурсоёмкой процедуры генерации. Кроме того, NXEngine не мог отобразить русские буквы из русифицированных DATA-файлов, но с моим небольшим исправлением это стало возможным. Теперь геймеры, не слишком хорошо знающие английский язык, смогут всецело насладиться сюжетными диалогами. Помимо этого, в движок была добавлена возможность работы с широкоформатными дисплеями с разрешением 480×272, что позволило запускать Cave Story на Ritmix RZX-50 в полноэкранном режиме. Для удобства внесения изменений в NXEngine была произведена некоторая адаптация исходного кода к интегрированной среде разработки — Qt Creator.

Читать далее Cave Story (Doukutsu Monogatari) via NXEngine для различных платформ

Dev, Dingux, EZX, MotoMAGX

Установка MinGW/MSYS и настройка окружения для разработчика

Наверное, многие разработчики сталкивались с проблемой выбора или создания окружения для программирования. На мой взгляд, бесплатное окружение на основе порта компилятора gcc (MinGW) и какая-нибудь IDE, совместимая с ним — наиболее приемлемый выбор.
В этой статье я рассмотрю установку компилятора, его интеграцию с интегрированной средой разработки, его настройку, установку и компиляцию сторонних библиотек. Рассмотрю некоторые полезные утилиты для облегчения сборки исходного кода и системы контроля версий файлов.
Статья со временем будет обновляться и дополняться.


MinGW/MSYS и QtCreator

Данный мануал создавался с целью быть пособием и заметкой для разработчиков, помочь им собрать и настроить собственное окружение для разработки нативных приложений в семействе OS Windows.

Читать далее Установка MinGW/MSYS и настройка окружения для разработчика

Dev, Manuals, Others

Slitherlink — русификация и портирование игры на Ritmix RZX-50

Slitherlink или Китайская стена — это логическая головоломка, созданная японской компанией Nikoli. Кстати, эта компания получила известность благодаря Sudoku.



Цель игры — расставить таким образом линии среди цифр на поле, чтобы получился единый замкнутый и непересекающийся контур. Цифра внутри квадрата-ячейки обозначает количество линий, которые могут быть расположены по периметру ячейки. Когда все линии расставлены, они должны образовать замкнутую петлю без пересечений, ответвлений и разрывов. Сами линии не могут пересекаться и должны образовывать непрерывный контур. Существует лишь единственное решение головоломки, которое может быть найдено путем логического вывода, но никак не угадыванием и подбором.

Читать далее Slitherlink — русификация и портирование игры на Ritmix RZX-50

Dev, Dingux

Игра Color Lines для Ritmix RZX-50

Игра для Ritmix RZX-50, порт под экран 480×272, выполненный мной. Автор игры — разработчик nzeemin.



Правила игры:
Игровое поле представляет собой сетку 9×9 клеток. За один ход компьютер выставляет в случайных клетках три шарика случайного цвета. Игрок, в свою очередь, должен составлять цепочки из пяти и более шариков. Цепочки считаются по вертикали, горизонтали и диагонали. Передвигать можно только один шарик и то, только если между новым и старым местом есть проход. Таковы базовые правила игры.

Читать далее Игра Color Lines для Ritmix RZX-50

Dev, Dingux

Попытка портирования kLib на Motorola ZN5

Попробовал собрать интерфейсную библиотеку kLib из kInterface от -=Strelok=- для Motorola ZN5. Результаты оказались положительными, но, к сожалению, многое пока не работает.



А что работает — немного лагает. Но скриншотом полюбоваться уже можно.

Dev, MotoMAGX, Others

Открыт исходный код kInterface!

Недавно программист Влад Колертс, известный ещё под ником -=Strelok=-, открыл исходный код kInterface и ещё некоторых приложений-сателлитов:

  • kRepoz — Клиент для онлайн-репозиториев, когда-то я портировал его на Motorola ZN5;
  • rokrArc — Архиватор;
  • TReader — Читалка текстов;
  • PicView — Просмотрщик изображений;
  • kLib — Библиотека элементов интерфейса.



Напоминаю, что kInterface — это кастомный интерфейс для Motorola ROKR E2, обладающий весьма интересными возможностями, красивой анимацией и оформлением. Теперь, когда его исходники открыты, возможны порты этого интерфейса на такие девайсы, как Motorola ZN5, Z6, E8, EM30 и другие.

Читать далее Открыт исходный код kInterface!

Dev, EZX, MotoMAGX

Разгоняем Motorola ZN5: CPU Overclocking! @ 798/665 MHz

На днях поковырялся в ядре Linux от своего старого Motorola ZN5 и немного повысил частоту работы процессора. В целом, производительность устройства заметно увеличилась. Это можно судить по тестам из бенчмарка GPMark:



Слева направо: 532 MHz, 665 MHz и 798 MHz.

После поднятия частоты аппарат начал быстрее работать в некоторых меню, но, к сожалению, разгон процессора конечно же не помог полностью избавиться от глюков и подвисаний нашей Qt-оболочки. Телефон нормально запускается и работает на 798 MHz у меня уже примерно две недели. 798 MHz лишь заменяет 532 MHz при нагрузке, поэтому все утилиты типа zCpu, aiCPU и другие должны работать.

Читать далее Разгоняем Motorola ZN5: CPU Overclocking! @ 798/665 MHz

Dev, Manuals, MotoMAGX

Карточная игра Durak для Ritmix RZX-50

На выходных портировал карточную игру Durak на Ritmix RZX-50.



Вывод изображения и координаты были переделаны под широкоформатный экран игровой консоли — 480×272. Добавлены звуки переключения карт. Автор игры — мой друг, использующий никнейм baat.

Читать далее Карточная игра Durak для Ritmix RZX-50

Dev, Dingux