Pull to refresh
0
0.1
Евгений @pewpew

Бэкенд разработчик

Send message

Обновление MikroTik по SSH: Python-скрипт с автоматическим RouterBOARD upgrade

Level of difficultyMedium
Reading time2 min
Views2.9K

Обновление MikroTik — та ещё боль. То не влезешь по SSH, то забыл сделать routerboard upgrade, то устройство «уходит в себя» и не возвращается. Особенно, когда устройств не одно, а десятки. Вручную это превращается в спорт на выносливость и крепкие нервы.

Я решил, что хватит. Написал скрипт на Python, который делает всю грязную работу за меня: подключается, проверяет обновления, ставит новые пакеты, делает routerboard upgrade и даже ждёт, пока устройство снова появится в сети. Главное — всё логируется и работает аккуратно, как системный администратор в хорошем настроении.

В этой статье:

Читать далее

Проверка високосности года в трёх командах CPU

Level of difficultyMedium
Reading time11 min
Views16K

Показанным ниже кодом вы можете проверить на високосность год в интервале 0 ≤ y ≤ 102499 всего примерно тремя командами CPU:

bool is_leap_year_fast(uint32_t y) {

return ((y * 1073750999) & 3221352463) <= 126976;

}

Как это работает? Ответ на удивление сложен. В статье я объясню процесс; в основном он связан с забавным битовым жонглированием. В конце мы обсудим применение этого кода на практике.

Читать далее

Wizordum — пример правильной ностальгии

Level of difficultyEasy
Reading time8 min
Views5K

Недавно вышла Wizordum — очередной олдскульный шутер, письмо любви к Wolfenstein 3D, Heretic, Catacomb 3D и первой DOOM. Спрайтовая графика с рейкастингом, построенные из квадратных тайлов уровни и держащие верную булаву пиксельные руки главного героя. Разве что харизматичной морды около показателя здоровья не хватает.

Подобные релизы в последние годы — не редкость. Перезапуск DOOM 2016 года, а также такие инди-хиты как Dusk, Ion Fury и Amid Evil, вышедшие в знаковом для жанра 2018, напомнили геймерам, что шутеры — это не только Call of Duty и мультиплеерные проекты. А скорость, десятки пушек за спиной и грамотный дизайн уровней не менее важны, чем кинематографическая постановка и голливудские звёзды на озвучке.

Читать далее

Как я написал эмулятор Nintendo Gameboy на C++ за две недели

Level of difficultyEasy
Reading time8 min
Views8.1K

Расскажу, как устроена архитектура консоли Nintendo Gameboy, как можно эмулировать её основные компоненты, какие решения я принимал в процессе разработки и какие инструменты использовал.

Читать далее

Для защиты своего сервера я использую zip-бомбы

Level of difficultyEasy
Reading time3 min
Views86K

Основной объём трафика в вебе возникает из-за ботов. По большей части, эти боты используются для обнаружения нового контента. Это читалки RSS-фидов, поисковые движки, выполняющие краулинг вашего контента, а сегодня и боты ИИ, собирающие контент, чтобы скармливать его LLM. Но есть и зловредные боты. Их создают спамеры, скрейперы контента и хакеры. На моём прежнем месте работы бот обнаружил уязвимость Wordpress и встроил в наш сервер зловредный скрипт, а затем превратил машину в ботнет, используемый для DDOS. Один из моих первых веб-сайтов был полностью выдавлен из поиска Google из-за ботов, генерирующих спам. Мне нужно было найти способ защиты от этих ботов, поэтому я начал пользоваться zip-бомбами.

Читать далее

Децензурировать видео теперь проще, чем когда-либо

Level of difficultyEasy
Reading time3 min
Views5K

В прошлом месяце попросил ребят взломать часть моего видео на YouTube. Конкретнее — восстановить содержимое папки, которую «запиксил» начиная с отметки времени 4:57. Годами все так делают, чтобы размазать, точнее, «расквадратить» части видео с конфиденциальной информацией. И все это время слышно:

— Небезопасно же! Захотят — прочитают!

Так это правда? Как на самом деле‑то? Вопрос не праздный. Чтобы докопаться до истины, кинул клич:

— Пятьдесят баксов тому, кто скажет, что написано под квадратиками!
Читать дальше →

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

Level of difficultyMedium
Reading time22 min
Views18K


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

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


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


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


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


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


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


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


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


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

Подробная карта OpenSource инструментов для создания AI агентов

Level of difficultyMedium
Reading time7 min
Views14K

Как создать автономного ассистента без миллионных бюджетов?

Обзор 18 open-source инструментов для разработки: от CrewAI для оркестрации агентов до Qwen2-VL для анализа документов.

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

Читать далее

Собираем бюджетный домашний NAS на 14 ТБ

Level of difficultyMedium
Reading time13 min
Views125K


Начав заниматься фотографией, я быстро ощутил нехватку места на компьютере. Фотографии в RAW имеют большой вес, а про видео говорить ещё страшнее. Решение проблемы очень простое — собрать NAS.

О моём опыте сборки бюджетного NAS на 14 ТБ я напишу далее в статье.
Читать дальше →

Особенности разработки и тестирования Telegram mini apps: от инициализации до запуска

Reading time13 min
Views6K

В этой статье мы поделимся своим опытом разработки приложений в Телеграм и подробно остановимся на следующих вопросах:

‭• Что представляют из себя Telegram mini apps?
‭• Чем они отличаются от других платформ?
‭• Какие перспективы развития у Telegram mini apps?
‭• Как правильно тестировать Telegram mini apps с учетом особенностей платформы
‭• Как настроить окружение для будущего приложения и инициализировать telegram-apps sdk?
‭• Какие нюансы существуют при разработке Telegram mini apps?

Читать далее

Вебаппки Телеграма пишутся проще ботов, показываю (20 минут на развёртывание)

Reading time11 min
Views22K
image

Как только мы позвали вас, хабраюзеров, в бету ковырять наши контейнеры, выяснилось, что вам они очень часто нужны для телеграм-ботов и телеграмных же вебаппов. Потому что контейнер — идеальное размещение для такого: не надо много ресурсов, а нужно, чтобы бот висел и иногда отвечал на запросы, но при этом был готов выдерживать очень большое число запросов, если нам повезёт и он завирусится. Сам бэк тарифицируется по фактическому потреблению, то есть вполне спокойно это могут быть и 100 рублей в месяц за сервер с 2 vCPU и 4 Gb оперативки.

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

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

Начну с того, что в Телеграме можно сделать webapp-приложение. По сути, это вебвьюха встроенная в мессенджер. Весь интерфейс можно делать точно так же, как на веб-фронте, на любом фреймворке (react, angular, vue…), то есть не ограничиваясь возможностями клиента. А главное, можно юзать API телефона и использовать авторизацию Телеграма.
Читать дальше →

R8: Шакалья работа (уменьшение apk через правки R8)

Level of difficultyHard
Reading time3 min
Views1.3K

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

Читать далее

Эпоха JAVA. 5 игр с мобильников, которые ничем не уступали играм с Game Boy и PSP

Level of difficultyEasy
Reading time4 min
Views12K

А вы помните времена JAVA-игр? Что первое приходит на ум? Уверен, что-нибудь простое, уровня Gravity Defied или классических частей Asphalt. 

Однако реальность такова, что на самом деле индустрия JAVA-игр была куда шире и глубже, чем ее запомнило большинство геймеров, и я сейчас даже не говорю об эксклюзивных для японских телефонов проектах. Их нет смысла упоминать, они потеряны, и запустить их, кроме как на каком-нибудь NTT Docomo, невозможно.

Вместо этого предлагаю вспомнить пять игр из эпохи JAVA, в которые можно залипнуть надолго даже сейчас. Они во многом могут спокойно конкурировать с проектами, которые выходили, например, на Game Boy Advance.

Читать далее

Контрабанда данных внутри эмодзи

Level of difficultyEasy
Reading time5 min
Views15K

Меня заинтриговал комментарий GuB-42 на Hacker News:

При помощи последовательностей ZWJ (Zero Width Joiner) теоретически можно закодировать в один эмодзи неограниченный объём данных.

Действительно ли можно закодировать в один эмодзи произвольные данные?

tl;dr: да, однако я нашёл решение и без ZWJ. На самом деле, можно закодировать данные в любой символ Unicode. Например, в этом предложении есть скрытое послание: This sentence has a hidden message󠅟󠅘󠄐󠅝󠅩󠄜󠄐󠅩󠅟󠅥󠄐󠅖󠅟󠅥󠅞󠅔󠄐󠅤󠅘󠅕󠄐󠅘󠅙󠅔󠅔󠅕󠅞󠄐󠅝󠅕󠅣󠅣󠅑󠅗󠅕󠄐󠅙󠅞󠄐󠅤󠅘󠅕󠄐󠅤󠅕󠅨󠅤󠄑. (Попробуйте вставить его в декодер.)

Читать далее

Telegram Storage. Бесплатная база данных

Level of difficultyEasy
Reading time3 min
Views3.5K

Да будет Хабр снова торт! Да приидут на него статьи о программировании! И да пребудут на нем всегда технические обсуждения. А теперь к делу... Каждый развивающийся программист, рано или поздно сталкивается с тем, что ему нужна облачная база данных для своего проекта. Между тем, ваш проект может быть не денег ради, а души для, друзей, знакомых, небольшой аудитории, и посему платить деньги за настоящее облачное хранилище данных жалко. Предлагаю вам простое в подключении, проверенное мной лично, хакерское решение, в котором не потребуется указывать никаких платежных или личных данных...

Это бесплатно

Код-послание из сериала «Черное зеркало: Захват голубя» расшифрован отечественным клоном ZX Spectrum 1992 года

Level of difficultyEasy
Reading time3 min
Views26K


Здравствуйте, дорогие друзья!

Вкратце, введу в курс дела. В сериале «Черное зеркало», есть серия «Захват голубя», иначе «Брандешмыг». Нас, любителей ретрокомпьютерной техники, эта серия может заинтересовать, не только видеорядом, но и присутствием настоящего компьютерного кода, включенного в сюжетную линию. Давайте не просто посмотрим серию, а загрузим фрагмент звуковой дорожки фильма, в ZX-Spectrum, с объемом ОЗУ 48к и посмотрим, что же там закодировано.

Под катом-детали исполнения. Добро пожаловать в «Брандешмыг»!
Читать дальше →

Лучшие бесплатные VPN для ПК и смартфона 2025 (которые работают)

Level of difficultyEasy
Reading time6 min
Views113K


Бесплатные VPN.

В последние несколько лет на территории РФ ужесточилась фильтрация интернет-трафика средствами ТСПУ. Сотни сайтов и интернет-сервисов внесены в чёрные списки и заблокированы. Получить доступ к ним можно только через VPN. Однако самые популярные VPN тоже подверглись блокировке.

Ограничения можно обойти через канал на собственном зарубежном сервере, купив там самый дешёвый хостинг за пару долларов или уже готовый VPS с установленным VPN (такие объявления есть на Авито). Если своего сервера нет, то остаётся только прибегнуть к услугам сторонних VPN-сервисов, которые ещё не заблокированы. Лучшие бесплатные VPN из выживших перечислены ниже.

Примечание. Эту статью Хабр наверняка заблокирует для пользователей из РФ, в исполнение запрета Роскомнадзора на информацию об обходе блокировок, так что лучше сразу после публикации сохранить её или подписаться на обновления в тг.
Читать дальше →

Измерительный пинцет DIY YCHEV001 на Arduino

Level of difficultyEasy
Reading time4 min
Views9.2K

Сегодня мы с Вами соберём бюджетный вариант Китайского измерительного пинцета FNIRSI LCR-ST1.

В качестве базы я выбрал Arduino, так как целью проекта стало сделать схему, как можно проще, что бы повторяемость измерительного пинцета среди зрителей канала https://www.youtube.com/@chevichelov была на уровне "Контролька на Arduino", по этому я упростил схему насколько это возможно, а в качестве измерительных алгоритмов выбрал самые простые, но в то же время самые надёжные из них. По предложению Хабравчан дал измерительному пинцету название YCHEV001.

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

Читать далее

Полезные паровозики. Часть 1: введение в железнодорожный моделизм

Level of difficultyEasy
Reading time10 min
Views7.6K

Кто из вас, дорогие читатели, не испытывал восторга, впервые увидев модельную железную дорогу — миниатюрные поезда, которые выглядят и, главное, ездят как настоящие? Кажется в любую эпоху это была топовая игрушка для тинейджеров и крутое хобби для взрослых. Но первым восторгом зачастую все и заканчивалось — старший брат или дядя говорил, что ни за что не отдаст (мой случай!), ценники в магазинах или на Авито поддерживали (красивый состав с хорошей детализацией даже без цифрового управления может потянуть на стоимость RTX4090!), да и места дома, казалось бы и нет.

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

Читать далее

Извлечение паролей из разных браузеров

Reading time3 min
Views8.7K


Если пользователь забыл мастер-пароль от парольного менеджера Bitwarden, 1Password, KeepassXC, то пароли невозможно восстановить. Другое дело — встроенные парольные менеджеры браузеров Chrome и Firefox, для расшифровки которых есть специальные инструменты. Этот факт следует иметь в виду при хранении пользовательских данных — и не допускать, чтобы злоумышленник получил физический или удалённый доступ к компьютеру с правами пользователя.

Примечание: перечисленные ниже инструменты не работают с последними версиями браузеров и приведены исключительно в информационно-образовательных целях.
Читать дальше →
1
23 ...

Information

Rating
3,949-th
Location
Россия
Date of birth
Registered
Activity

Specialization

Backend Developer, Game Developer
Senior
PHP
Git
SQL
REST
Godot Engine
GDScript
Lua
Redis
Yii framework