Pull to refresh
356
178
Владимир@Firemoon

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

Send message

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

Reading time16 min
Reach and readers9.9K

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

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

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

Читать далее

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

Reading time7 min
Reach and readers11K

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

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

Читать далее

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

Level of difficultyEasy
Reading time6 min
Reach and readers18K

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

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

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

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

Level of difficultyEasy
Reading time8 min
Reach and readers19K

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

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

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

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

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

Reading time7 min
Reach and readers12K

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

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

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

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

Reading time7 min
Reach and readers18K

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

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

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

Читать далее

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

Reading time12 min
Reach and readers13K

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

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

Читать далее

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

Reading time13 min
Reach and readers13K

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

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

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

Читать далее

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

Level of difficultyEasy
Reading time12 min
Reach and readers18K

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

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

Читать далее

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

Level of difficultyEasy
Reading time10 min
Reach and readers15K

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

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

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

Читать далее

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

Reading time12 min
Reach and readers13K

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

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

Копать

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

Reading time10 min
Reach and readers3.3K

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

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

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

Reading time15 min
Reach and readers19K

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

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

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

Reading time14 min
Reach and readers7K

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

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

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

Reading time9 min
Reach and readers11K

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

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

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

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

Reading time13 min
Reach and readers8.3K

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

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

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

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

Reading time9 min
Reach and readers4.8K

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

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

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

Reading time12 min
Reach and readers1.5K

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

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

Как быстро растут нейросети: прогресс Stable Diffusion за все время

Reading time6 min
Reach and readers8.8K

В феврале 2024 года StabilityAI анонсировали третье поколение генеративной нейронной сети Stable Diffusion. Спустя четыре месяца, 12 июня, вышла «Сommunity-версия» Stable Diffusion 3 Medium. Нам обещают хорошую оптимизацию для домашних компьютеров, улучшенное восприятие запросов и бонусом новую лицензию.

Привет, Хабр! Меня зовут Вова Туров, я разработчик в Selectel. В этой статье на примере множества картинок сравним локальные «чистые» модели SD и «закрытые» сервисы с Stable Diffusion 3, а также выясним, стоит ли платить за новую модель. Под катом вас ждет множество изображений!
Читать дальше →

Пайплайны в GitLab для микросервисов

Reading time10 min
Reach and readers13K

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

Начнем с основ на примере монолитного приложения, а потом усложним их микросервисами и постараемся избавиться от однотипного кода. А еще…
Читать дальше →

Information

Rating
31-st
Location
Челябинск, Челябинская обл., Россия
Works in
Date of birth
Registered
Activity

Specialization

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