Pull to refresh
19
0
Valentin Briukhanov @DuoV

Game-Based Learning | Full-Stack Engineering

Send message

Создаём эмулятор легендарной игры «Ну, Погоди» на базе Raspberry Pi Pico

Level of difficultyMedium
Reading time22 min
Views18K


Многие из тех, кому сейчас за 30, и рождённых в СССР или на постсоветском пространстве, помнят электронную игру «Ну, погоди!». Во времена, когда не было ни интернета, ни ноутбуков, ни мобильных телефонов, а из общедоступных электронных развлечений были только аттракционы в парках культуры и видеосалоны, обладание бытовым компьютером, электронными наручными часами Montana или электронной игрой «Ну, погоди!» было мечтой многих детей.

Были ещё и другие электронные игры, но именно «Ну, погоди!» считается классикой.


Игре посвящено много ностальгических статей и видео. На различных торговых площадках можно купить её в различном состоянии от убитого до «с хранения» и даже новодел.


Лет 10 назад и я купил её в идеальном состоянии, поигрался, вспомнил детство и положил в ящик. Но несколько месяцев назад с разочарованием увидел, что «потекла» нижняя часть экрана.


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


Я не был одинок в своём желании воссоздать игру, этой теме посвящено также немало статей, но в них обычно создавали симуляторы, а не эмуляторы игры. Симулятор у меня ассоциируется с фразой: «Я художник, я так вижу», эмулятор — это более точное воспроизведение устройства.


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


Эмулятор максимально приближен к оригиналу, если не считать экран (он не сегментный, как в оригинале) и корпус (я пока реализовал на беспаечной макетной плате).


Если вам интересно, как за несколько вечеров воссоздать у себя эмулятор «Ну, погоди!» на современном микроконтроллере или просто поностальгировать, добро пожаловать под кат.


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

Программа Calibre. Управление библиотекой и универсальный конвертер электронных книг

Reading time4 min
Views220K

Предисловие


Так как являюсь большим поклонником чтения, то в какой момент взор мой упал на электронные книги. Преимущества были для меня налицо. Особенно с частыми командировками. Вес, размер, удобство, ну и цена электронных версий книг (предпочитаю честную покупку текстов). Попользовавшись несколькими экземплярами остановился на Sony PRS-505. Сначала смутил формат lrf, но выход был быстро найден — онлайн-конвертеры fb2 в lrf. Онлайн — потому что являюсь пользователем Linux и дома и на работе, плюс дома для игр использую WinXP. В общем полный разброд. Но когда начал искать книги на английском, то наткнулся на кучу других форматов от pdf до epub и еще более экзотические варианты. Плюс книг на компах стало много и разбираться в них стало трудновато (я не единственный пользователь еКниги в семье). В общем назрела необходимость в каком то управлении этим хаосом и удобным конвертированием форматов, плюс нативная поддержка Linux. В одном из комментов на Хабре увидел упоминание про Calibre. Скачал, поставил — понравилось. Теперь пользуюсь полностью ей. Поэтому хотелось бы сделать краткий обзор данной программы.
Читать дальше →

ИИ, Абсурд и Учимся Быстрее

Level of difficultyEasy
Reading time2 min
Views680

Представьте себе лису, стоящую в дверном проеме на крыше английского особняка, цепляющуюся за раму всеми лапами, пока дует сильнейший ветер. Или вообразите одного зеленого огра (вы знаете кого, но давайте избегать проблем с авторскими правами), стоящего перед иглу и пытающегося взвесить солнце против полукилограммовой гирьки, просто чтобы понять, который сейчас час. Странно, правда? Если вам сложно это представить, возможно, какой-нибудь ИИ, преобразующий текст в видео, сможет помочь. И чем абсурднее, тем лучше. Да, я же не сказал, зачем все это. Вот подсказка: 风 (ветер) и 时 (время).

Читать далее

Дискриминация сотрудников по возрасту — беспощадная и бессмысленная

Reading time5 min
Views63K
Возможно, вы знаете, что закон РФ № 1032-1 от 19.04.1991 в редакции от 02.07.2013 г. запрещает распространять информацию, ограничивающую права или устанавливающую преимущества для соискателей по полу, возрасту, семейному положению и другим обстоятельствам, не связанным с деловыми качествами работников. И, наверняка, вы слышали, что работодатели отказывают кандидатам в связи с ограничением по возрасту. Закон запрещает декларировать это ограничение открыто и поэтому кандидатам отказывают по другим причинам. Да, это незаконно, но это существует.

В этой статье я хочу рассказать о распространенных предрассудках, по которым в компаниях возникают возрастные ограничения при подборе персонала на примере профессиональной области “Информационные технологии”.

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

Краткая заметка по некоторым дополнительным возможностям Kindle третьего поколения

Reading time7 min
Views28K

В заметке я постараюсь начать описание нескольких интересных дополнительных возможностей этой замечательной читалки,. Речь пойдет о вариантах Kindle 3g и Kindle Wi-fi третьего поколения и некоторых штуках, не описаных в мануалах. Хотел бы заметить, что информацию о Киндле найти относительно не сложно, однако собрать все в одной заметке на русском, думаю, неплохая идея.

приступим

тестирования сети в Линукс

Reading time5 min
Views21K
Эта заметка выросла из шпаргалки для самого себя. Мне по работе приходится отлавливать баги в сети. Как проверить скорость в VPN-туннеле? Почему сервер не пингуется? Или пингуется, но не доступен. Кто забил весь канал торрентами? Где пропадают пакеты? Почтовый клиент выдает непонятную ошибку, что произошло на самом деле? Эти и многие другие вопросы периодически возникают у любого пользователя. Под катом описание программ входящих во все современные дистрибутивы, начиная от пинга и до таких экзотических как ngrep. А так же картинками, если картинками можно назвать, копии дампа с консоли.
Читать дальше →

Омышение компьютера или 2 и более указателей мыши на экране

Reading time6 min
Views172K
 Если вам предлагают платное
 решение информационной задачи,
 пробуйте найти бесплатное.


В ОС по умолчанию задана работа с 1 указателем мыши. Даже если подключите 2 и более устройств (тачпады, мыши, трекболы), все они в лучшем случае будут двигать один указатель. С этим все свыклись, как с аксиомой, и даже на ресурсах типа ответы.mail.ru есть авторитетные ответы, утверждённые модератором как закрытые, что сделать 2 указателя нельзя (кто имеет туда доступ — поправьте недоразумение).

    

Когда-то было известно коммерческое решение «2 рабочих места за 1 системным блоком» (EasyCLone) — возможность создать на компьютере рабочие столы на 2-4 разных комплектах «дисплей-мышь-клавиатура», и это было даже выгоднее, чем покупать 2 ПК для фирм, но стремительное удешевление комплектующих, видимо, быстро обесценивало такое решение и о нём забыли.

Но недавний топик на малоизвестном ответвлении Хабра неожиданно для многих пролил свет на эту зыбкую истину. Оказалось, что есть программа, которая на уровне драйверов ловит каждую новую подключенную мышь и создаёт для неё новый указатель. Увы, у неё триальный период 15 дней, что тут же испарило желание её включить. Зачем, если стоит задача попробовать неотработанную, неизвестную, но интересную технологию? Есть поиск, интернет и общественная потребность у задачи, а значит, есть возможность найти более гибкие решения.
Читать дальше →

Основы программирования под Android на примере игры Судоку

Reading time6 min
Views376K
В статье описаны основные трудности создания приложений под Android.
Рассматриваются базовые понятия программирования Android.
Для примера описано создание игры Sudoku из книги Hello, Android – Ed Burnette.
Осторожно много скриншотов.

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

Web2py фреймворк

Reading time4 min
Views26K
Я не изобретатель очередного велосипеда марсохода, а просто хочу рассказать про python фреймворк WEB2PY. На Хабре почему-то нет каких-либо статей про этот чудесный инструмент. Если интересно, под хабракатом небольшая история использования web2py и его описание.

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

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

Параметризованные запросы и производительность django orm

Reading time7 min
Views10K
Столкнувшись с существенными потерями производительности на использовании django orm, я стал искать выход из положения, рассматривая разные способы использования orm. Что у меня получилось — смотрите подкатом.

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

Визуализация графов. Метод связывания ребер

Reading time7 min
Views58K
Иногда полезно представить граф в графической форме, так чтобы была видна структура. Можно привести десятки примеров, где это может пригодиться: визуализация иерархии классов и пакетов исходного кода какой-нибудь программы, визуализация социального графа (тот же Twitter или Facebook) или графа цитирования (какие публикации на кого ссылаются) и т.д. Но вот незадача: количество ребер в графе зачастую настолько велико, что нарисованный граф просто невозможно разобрать. Взгляните на эту картинку:



Это граф зависимостей некой программной системы. Он представляет собой дерево разбиения на пакеты (серые шарики — пакеты, белые — классы), на которое поверх наложены ребра зависимости одних классов от других. Чтобы не рисовать стрелки направления, ребра нарисованы в виде градиентных линий, где зеленый — это начало, а красный — конец ребра. Как видите, граф настолько визуально перегружен, что архитектуру программы невозможно проследить.
Под катом описание метода, решающего эту проблему.
Читать дальше →

Dice Wars на App Engine + Twisted

Reading time4 min
Views1.6K
С августа в свое свободное время я занимаюсь разработкой занятной risk-подобной игрушки, в мире известной под названием Dice Wars. Гениальный японский гейм-дизайнер Таро Ито придумал замечательные правила этой игры и создал ее на флеше (однопользовательскую), и она породил множество вариаций на эту тему, до сих пор плохо известных в России.

В этой статье я хотел бы проанализировать мой первый fail с risk-подобной игрой, о которой я писал в марте, рассказать, почему я отказался от идеи использовать App Engine везде и вся, показать связку из App Engine + Twisted к которой я пришел и которая, как мне кажется, довольно полезна для приложений с постоянным соединением. Кроме того, хотелось бы рассказать о своем опыте с Actionscript 3, что-то вроде взгляда back end разработчика на эту чуждую для меня технологию, а также поискать здесь на хабре компаньонов и единомышленников.
Читать дальше →

Обнаружение пешеходов

Reading time5 min
Views9.8K
Обнаружение пешеходов используется главным образом в исследованиях, посвященных беспилотным автомобилям. Общая цель обнаружения пешеходов — предотвращение столкновения автомобиля с человеком. На Хабре недавно был топик про «умные машины». Создание подобных систем очень популярное направление исследований (Darpa challenge). Я занимаюсь распознаванием пешеходов для подобного проекта интеллектуальных автомобилей. Очевидно, что проблема обнаружения пешеходов — программная, а предотвращение столкновения — аппаратная. В данной статье я упомяну лишь о программной части, кратко расскажу об одном способе обнаружения людей на изображении и алгоритме классификации.
Заинтересовавшихся прошу под кат.

Электронная очередь абитуриентов

Reading time9 min
Views11K
image

Введение


Хочу рассказать об одной интересной задаче, которая возникла передо мной и моим коллегой в университете. Хоть сейчас и лето, но жизнь там не угасает ни на минуту. Все суетятся, обрабатывают документы, подсчитывают абитуриентов, если все обобщать – сезон поступления в ВУЗы. Учусь я на техническом факультете университета, причем, учусь неплохо, поэтому нам предложили написание электронной очереди для поступления абитуриентов. Не долго думая, я и мой коллега (и по группе и по работе) согласились. Причиной не желания воспользоваться уже какими-то готовыми продуктами для университета стала заоблачная цена данных разработок, которая составляла порядка 300т.р. Может и не много, но для нашего города цена высокая, наверное, поэтому и решили привлечь студентов своего университета, ко всему прочему это ещё и неплохой опыт работы в данной отрасли.
Читать дальше →

Vim и кириллица: парочка приёмов

Reading time2 min
Views58K
image

Раньше для редактирования обычных русскоязычных текстов, я обычно откладывал Vim в сторонку и прибегал к помощи других редакторов. Причиной этому была парочка очень неприятных косяков:
  1. На каждый чих приходилось сто раз переключать раскладку, чтобы корректно ввести пару команд и вернуться обратно. Например, замена буквы-опечатки в только что написанном слове, выливалось в: switch → добраться до буквы, нажать r → switch → [нужная буква] → switch → A → [пишем дальше]. Ад!
  2. Штатный spell checker букву «ё» не любил и любое слово с её участием предлагал заменить на аналог через «е». А я ё люблю, меня это расстраивало.

И вот, наконец, я нашёл решение обеим проблемам. Сижу сейчас и набираю этот текст в Vim. Любопытно, что оба барьера обходятся штатными средствами, без дополнительных плагинов. Поскольку материалов на английском и на них основанных куда больше чем исконно русских, найти эту информацию мне было не просто. Поэтому хочу поделиться ей с теми кому интересно.
Читать дальше →

Пишем апплет-переводчик для Gnome [python]

Reading time11 min
Views3.3K

Предисловие



Сидел я как-то тихим вечером, читал англоязычные сайты. Когда понадобилось перевести пару фраз, я как обычно открыл новую вкладку, набрал translate.google.ru, скопировал, вставил текст, нажал перевести, прочитал. И ведь такую длинную последовательность действий приходится проделывать каждый раз, когда есть необходимость перевести текст, пару фраз или целый абзац. Да, можно использовать какой-либо клиент для перевода, но окно программы придется открывать или доставать из-под других окон. Да, последовательность короче, но все равно длинная. Было бы здорово сократить последовательность действий до скопировать, нажать кнопку. Так появилась идея для апплета. Его логика такая:
  • На панели появляется кнопка «GTranslate»
  • Если вам надо перевести текст, то копируете его и нажимаете на кнопку
  • Автоопределение языка

Поехали

Пишем апплет для GNOME на Python

Reading time9 min
Views4.9K
Публикую данный пост по просьбе уважаемого VladX, у которого возникло временное недопонимание с кармой.

Апплет — это маленькое приложение, встраиваемое непосредственно в панель GNOME. Обычно апплет выполняет какой-то опеределенный узкий функционал (изменение громкости, монтирование устройств), что выгодно отличает его от громоздкого оконного приложения. На самом деле знающему Python кодеру не составит труда написать собственный апплет, но и для незнающих есть выход: большое количество полезных (и не очень) апплетов лежит на сайте gnomefiles.org, помимо этого, на официальном сайте есть примеры написания апплетов на C.
Поехали!

Gnome Applets. Введение

Reading time5 min
Views4.6K
Апплет — это небольшое приложение, которое интегрированно в Gnome панель и выполняет какие — либо поэтапные действия. В этой серии постов, я хочу рассказать как создаются эти самые gnome applets, от простого к чему-нибудь к более сложному и интересному. Для создания апплетов мы будем использовать PyGTK, но в принципе писать апплеты для Gnome можно и с помощью связки С + GTK+.
Продолжение

Безопасная настройка виртуального хостинга Debian + Apache2 + vsftpd

Reading time7 min
Views33K

1. Постановка задачи


Дано
Debian-сервер «из коробки» (установлен из дистрибутива)

Задача
Организовать работу нескольких проектов на сервере, чтобы люди, которые ими занимаются, не имели доступа к соседним проектам:
  • Ограничить возможность обзора файловой системы определенной папкой для пользователя проекта.
  • Ограничить возможность запуска бинарников пользователями
  • Ограничить возможность открытия портов на сервере (нужно как-то по другому сформулировать)
  • Автоматизировать добавление пользователя в систему: создание папки, конфига apache, пользователей mysql или postgres
Читать дальше →

Python Tips, Tricks, and Hacks (часть 3)

Reading time6 min
Views49K
В этой части статьи рассматриваются уловки для выбора одного из двух значений на основе логического условия, передача и получение произвольного числа аргументов функций, а также распространенный источник ошибок — тот факт, что дефолтные значения аргументов функции вычисляются только один раз.
Читать дальше →
1

Information

Rating
Does not participate
Location
Белгород, Белгородская обл., Россия
Registered
Activity

Specialization

Fullstack Developer, Game Developer
Lead
Python
JavaScript
Lua