Обновить
16K+
357
Владимир@Firemoon

Пользователь

69
Рейтинг
210
Подписчики
Отправить сообщение

Вспоминаем молодость: как делались скриншоты на старых кнопочных Nokia

Время на прочтение9 мин
Охват и читатели14K

Возможность делать скриншот — это базовый минимум, который есть во всех современных смартфонах. Даже у героев вечных споров, iOS и Android используются похожие комбинации «Громкость + Кнопка питания». Разве что на iOS используется «+», а в Android — «-».

Пятнадцать лет назад все было иначе. На устройствах было больше кнопок, но возможность сделать скриншот была роскошью. Задача осложнялась тем, что бюджетные телефоны на платформе S40 не имели многозадачности, так что написать универсальное приложение-скриншотер на телефон было невозможно. 

Тем не менее, решения были. В этой статье я проведу небольшой экскурс в историю программ для скриншотов с телефона, кратко расскажу про протокол Phonet и, возможно, вызову легкие приступы ностальгии.

У меня был Nokia 6303 classic — стильный телефон с металлической крышкой на платформе Nokia Series 40 (S40). Мой путь с этим телефоном разошелся, но спустя почти полтора десятка лет я решил, что хочу разобраться в технологиях, которые использовал, будучи школьником. 

Я нашел в продаже б/у Nokia 6303 classic и погрузился в тему.

Читать далее

Большие языковые модели играют в Бесконечное Лето

Время на прочтение11 мин
Охват и читатели13K

ИИ-агенты на базе больших языковых моделей могут управлять вашим календарем и почтой, заниматься инвестициями, вносить вклад в OpenSource-проекты и даже писать в свой блог о дискриминации ИИ-агентов. Но может ли ИИ-агент сыграть в визуальную новеллу?

Я готовил инструкцию для локального развертывания DeepSeek, и меня осенило. Визуальная новелла — это текст. Очень много текста. Большие языковые модели созданы для работы с текстом.

Я развернул несколько моделей, познакомился с интерфейсом Ollama, пропатчил игру на движке Ren’Py и автоматизировал эксперимент. Под катом — технические подробности, а сюжетные повороты спрятаны под спойлер.

Читать далее

Литания: создаем свой язык программирования с лексером, парсером и интерпретатором

Время на прочтение16 мин
Охват и читатели12K

В наше время программирование стало очень доступным из-за развития инструментов и языков. Написать «привет, мир» может практически каждый, а количество фреймворков для JavaScript уже воспевается в шутках. Теперь, чтобы выделиться и впечатлить друзей и коллег, нужно спускаться глубже. Придумаем свой язык шуточный программирования! 

В этой статье кратко рассмотрим базу компиляторов и мемные эзотерические языки программирования. В конце придумаем свой язык и попробуем его реализовать. 

Это упрощенная статья, которая расширит ваш кругозор, а у некоторых вызовет интерес и любопытство погрузиться в тему.

Читать далее

Играем в морской бой через телеграфный ключ, дверной звонок и Arduino

Время на прочтение7 мин
Охват и читатели12K

В начале февраля в Steam был фестиваль печатания. Среди множества игр, проверяющих умение работы с клавиатурой, нашлась одна, которая предлагает уникальный опыт морского боя по телеграфу: индексы клеток вводятся азбукой Морзе.

Игра совместима с мышкой, клавиатурой и джойстиком. Я посчитал, что это не достаточно аутентично, и собрал свой контроллер с телеграфным ключом и дверным звонком. Получившееся устройство подходит не только для одной игры, но и для обучения азбуке Морзе и для набора сообщений в любые поля ввода в ОС.

Читать далее

Широкоформатные мониторы недооценены

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели19K

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

В этой статье я хочу рассказать историю, как мы пришли к тому, что 16:9 — теперь «стандарт», привлечь внимание к нише подобных дисплеев, а также поговорить про удобства и неудобства в работе и играх. Возможно, соотношение сторон 21:9 — это новое будущее.

Читать далее →

«Мы убираем только критические ошибки», или как разработчики игр высмеивают собственные баги

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели20K

Привет, Хабр! На связи Владимир Туров, разработчик в Selectel. Ошибки — неизбежная часть сложных процессов, особенно когда речь идет о таких многослойных проектах, как компьютерные игры. Даже самые опытные команды не застрахованы от технических сбоев, связанных с работой игровых движков. Воспроизведение законов физики, загрузка данных, одновременное взаимодействие множества подсистем — нетривиальная задача даже для признанных мастеров индустрии.

Однако помимо очевидных технических ошибок существуют и логические неточности. Появляются они не потому, что разработчики что-то «недоделали» или «недодумали», а из-за сознательных упрощений. Игровой мир редко подчиняется законам реальности полностью — персонажи могут носить десятки предметов в карманах, раны заживают за несколько секунд, а сложнейшие устройства управляются нажатием единственной кнопки. 

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

Читать далее →

Фитнес в VR? Добавляем свою музыку в BeatSaber

Время на прочтение7 мин
Охват и читатели12K

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

Игра Beat Saber — это впечатляющий источник домашней физической нагрузки под музыку. В этой статье разберем, как играть на треках из пользовательской библиотеки, и попытаемся создать свою карту c любимой музыкой. Спойлер: инструменты не так страшны.

Отработать салатики

От первой статьи на Хабр до книги за десять лет

Время на прочтение7 мин
Охват и читатели18K

В детстве у многих были грандиозные планы: «вырасту — стану космонавтом». Я же долго не разделял этой категоричности сверстников: мир казался слишком большим и интересным, чтобы выбирать что-то одно. Да и подготовка космонавтов — дело нелегкое.

К выпускному стало ясно, что технические науки — и есть мой профиль. По русскому и литературе я перебивался с тройки на четверку, а классика совершенно не трогала. Но парадокс: где-то в глубине души жило безудержное желание творить.

Привет, Хабр! На связи Владимир Туров, разработчик в Selectel. В этой статье — о моем пути: как и зачем технарю писать тексты, чем создание публикации на Хабре отличается от работы над книгой. Также делюсь тем, что у меня получилось.

Читать далее

Обзор Divoom Times Gate для любителей кастомизации

Время на прочтение12 мин
Охват и читатели13K

Привет, Хабр! На связи Владимир Туров, разработчик в Selectel. В рекомендациях одного маркетплейса мне попалось чудо китайской киберпанковой мысли — часы и по совместительству пиксельный дисплей Divoom Times Gate. Мне понравился визуальный стиль и потенциальная возможность выводить любую информацию. У часов есть свое приложение с регистрацией, что навевает грустные мысли… Вдруг часы управляются исключительно через серверы производителя? 

Я купил девайс и немного разобрался в его интерфейсах. В этой статье проведу минимальный обзор устройства и расскажу про возможности API и локального управления на примере шуточной интеграции с Baldur’s Gate 3.

Читать далее

Реверс-инжиниринг приложений на Android: знакомство с Frida

Время на прочтение13 мин
Охват и читатели14K

Реверс-инжиниринг — это трудоемкая и интересная задача, которая поддается не всем. Любой может «скормить» программу декомпилятору, но не у всех хватит выдержки разобраться в хитросплетениях машинных команд. Процесс становится сложнее, если исследование проводится над программой для другого устройства, например телефона с ОС Android.

Звучит сложно. Долгое время и мне так казалось, особенно при создании модов для приложений. Байт-код smali неплох, но писать на нем сложную логику вручную — неблагодарное занятие. Но недавно мне попался на глаза решение для динамического реверс-инжиниринга — Frida.

Frida — это инструмент, который позволяет вживлять небольшой кусок JavaScript-кода прямо в запущенное приложение и менять его поведение. Под катом я расскажу, как работать с Frida, исследовать приложения на телефоне без root-доступа и создавать свои моды.

Читать далее

Как я разрабатывал плагин для синхронизации погоды на Minecraft-сервере и в Санкт-Петербурге

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели18K

Привет, Хабр! На связи Владимир Туров, разработчик в Selectel. В этом году разработчики Paper решили, что пора стать самостоятельным проектом. Теперь с каждой новой версией Minecraft, вероятно, интерфейсы Spigot и Paper начнут расходиться. Это значит, что пора изучить, как разрабатывать и отлаживать плагины для ядра Paper.

В статье расскажу, как разрабатывать собственные плагины для Minecraft, — на примере задачи синхронизации погоды в игре с погодой в Санкт-Петербурге.

Читать далее

Запускаем сервер в Minecraft: исследование конкурентов

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели16K

Несколько месяцев назад мы запустили свой небольшой бездонатный сервер для игры Minecraft. В статье с разбором технических подробностей я акцентировал внимание на том, что развитие сервера эволюционное: улучшения внедряются на основе обратной связи от игроков.

Теперь, набив собственных шишек, я готов заглянуть к «соседям». Чем они завлекают свою аудиторию? Есть ли уникальные игровые механики? Какие плагины используются и какие ограничения в игровом мире? Paper или Spigot? Velocity или BungeeCord?  

Этот текст подходит даже тем, кто никогда не занимался администрированием и не планировал — в процессе исследования я нашел множество потех.

Читать далее

Как мы в Selectel запускали Minecraft-сервер

Время на прочтение12 мин
Охват и читатели23K

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

Самая непредсказуемая переменная — действия игроков. За два месяца к нам пришло более 500 «Стивов», чтобы поиграть, покритиковать и попытаться сломать сервер. Именно действия пользователей стали самой сложной и интересной задачей.

Копать

Ультимативные крестики-нолики и iPXE

Время на прочтение10 мин
Охват и читатели10K

Привет, Хабр! Меня зовут Вова, я разработчик в Selectel. На днях меня осенило: загрузка сервера по сети — это прекрасный инструмент, из которого можно сделать что-нибудь необычное. Например, игру. У нас есть минимальный набор: командный интерпретатор, возможность скачивать и выполнять произвольный код.

Ранее я уже использовал инструменты не по назначению, когда создавал Морской бой на SQL, тетрис в QR-коде, крестики-нолики в DNS и Gravity Defied на sed. С прошлой «серии» ненормального программирования прошло почти два года — время вновь попробовать силы и придумать что-нибудь новое.
Читать дальше →

Интервью с DeepSeek: в чем смысл жизни и свиных крылышек

Время на прочтение15 мин
Охват и читатели47K

Китайский стартап DeepSeek выпустил в открытый доступ свою большую языковую модель DeepSeek-R1, которая, как заявлено, лучше аналогов от OpenAI, а обучение этой модели было гораздо дешевле. Кроме того, DeepSeek действительно открытая и ее можно запустить локально.

В этой статье вас ждет действительно простая инструкция по развертыванию локальной модели DeepSeek. А также короткое, но разнообразное интервью на русском языке с DeepSeek-R1, ее локальной копией, ChatGPT-4o и ChatGPT-o1.
Читать дальше →

Умный дом с радио из Cyberpunk: как я написал расширение для Home Assistant

Время на прочтение14 мин
Охват и читатели18K

Два с половиной года назад я делал радио из игры Cyberpunk 2077 на базе проекта Ka-Radio32 и собственной интерпретации модели из игры. Радио спокойно использовалось по назначению все это время, но вот наступили новогодние праздники. Я решил настроить Home Assistant (HA) и объединить все домашние умные устройства в локальном хабе.

Часть устройств добавилась без проблем, другая — сопротивлялась и требовала дополнительных действий. Но самодельное радио стояло особняком: для проекта Ka-Radio32 нет ни официальной интеграции, ни пользовательской. Хотя у Home Assistant широкая документация, начать разрабатывать свое расширение довольно сложно. В этой статье я разберу основные этапы на примере интеграции с Ka-Radio32.
Читать дальше →

Записываем PNG без мам, пап и внешних библиотек

Время на прочтение9 мин
Охват и читатели30K

Я решал очередную техническую задачу и столкнулся с проблемой: нужно сохранять изображения, а у меня нет сериализаторов и я не могу использовать готовые библиотеки. Ситуацию ухудшает, что из доступных форматов только PNG, JPEG и WebP. Выбор пал на PNG.

Формат изображения PNG известен с 1996 года, а на Хабре опубликовано несколько статей о декодировании этого формата. И ни одной — о кодировании. Я расскажу, как сохранить PNG своими руками на случай, если вам тоже придется это делать. Например, в академических целях.

Под катом вас ждет подробный разбор каждого байта на множестве иллюстраций.
Читать дальше →

Контроль привычек на запястье: как Mi Smart Band 7 поможет не забывать важное

Время на прочтение13 мин
Охват и читатели21K

В жизни бывают обстоятельства, которые требуют обязательного ежедневного выполнения одного действия — от утренней зарядки до приема лекарственных средств. Если пропустить зарядку или сделать ее дважды, это не критично. С лекарствами все сложнее: забыл выпить или выпил, но не помнишь?

«Если это действительно важно, то отмечайте даты на упаковке, используйте таблетницу или заведите будильник на телефоне», — скажете вы. Да, это решение. Но у меня есть фитнес-браслет, который, как заявляется, следит за моим здоровьем. Почему бы не научить его отвечать на вопрос «Не забыл ли я “…”»?

В тексте я расскажу про тернистый путь разработки под Mi Smart Band 7 и объясню важные детали для быстрого старта. В результате получится циферблат, который позволяет считать количество наиболее важных рутинных действий за день. Бонусом расскажу о приложении для броска кубиков 1d20 и 2d20.
Читать дальше →

«По вертикали и по горизонтали»: как перенести бумажные сканворды в онлайн, чтобы решать с друзьями на удаленке

Время на прочтение9 мин
Охват и читатели16K

Несмотря на развитие технологий, журналы с кроссвордами, сканвордами и судоку до сих пор актуальны. Бумажную версию удобно разгадывать или в одиночку, или с людьми, которые непосредственно рядом. Но что делать, если хочется разделить процесс с друзьями, которые находятся далеко? Обратиться к технологиям, конечно.

Как оцифровать сканворд по фотографии? Насколько сложно сделать систему общего доступа? Действительно ли интересно разгадывать бумажные сканворды на электронном устройстве? Ответы на эти и другие вопросы — под катом.
Читать дальше →

Как написать мод для TrackMania 2020 и не запутаться

Время на прочтение12 мин
Охват и читатели4.4K

Привет, Хабр! Меня зовут Вова, я разработчик в Selectel. В прошлом году серии TrackMania исполнилось 20 лет. Это игра моего детства и мне захотелось «размять свои юные олдскулы», посмотреть, что изменилось, и применить новые навыки.

В этой статье кратко расскажу запутанную историю серии, придумаю себе проблему в игре и героически решу самописным модом. Материал будет также интересен мододелам других игр — инструментарий здесь прекрасен.
Читать дальше →

Информация

В рейтинге
113-й
Откуда
Челябинск, Челябинская обл., Россия
Работает в
Дата рождения
Зарегистрирован
Активность

Специализация

Бэкенд разработчик
Средний
Python
Flask
SQLalchemy
Bash
C