Делаем принт-сервер из старого ADSL модема

Попробуем переделать старый ADSL роутер в принт-сервер, который позволит подключить не менее старый принтер Samsung SCX-3200 в локальную сеть

Извращения с кодом

Попробуем переделать старый ADSL роутер в принт-сервер, который позволит подключить не менее старый принтер Samsung SCX-3200 в локальную сеть

Сегодня (2026.04.01) прошло ровно 9731 день с тех пор, как сообщество Python узнало об изъяне в работе со строками.
Это было так давно, что у Python еще не было мажорных версий (для холиваров приходилось использовать PHP).
Так давно, что еще не существовало ни pythonchallenge.com, ни его прародителя notpron.com - легендарных убийц времени программистов.
Это было в прошлом тысячелетии. А именно - 1999 году, когда, согласно летописям, реализовали тип string. В том же году ведущий разработчик Jim Fulton опубликовал исследование, где без купюр указал на проблему.
Как ни странно, она не решена до сих пор.

Что ИИ ответил на серьезные запросы:
- как объяснить коту капитализм
- финансовый отчёт белки за третий квартал
- полная биография старого дуба — начиная с жёлудя
- резюме вампира в IT-компанию — 500 лет опыта, ночной график, требования к переговоркам
- дневник потерянного носка — день 1, день 340, принятие
- план побега комнатного растения
- ромком про чайник, который влюбился в посудомойку
- смета на строительство дома для семьи бобров
- поиск квартиры для мыши в современном городе
- план лечения выгорания у пчелы
- анкета волка на сайте знакомств
- анализ совместимости режимов сна у сов
- экзистенциальный кризис 180-летней черепахи

Играют двое: загадывающий и отгадывающий. Загадывающий загадывает целое число в известном диапазоне — скажем, от 1 до 100 включительно. Отгадывающий пытается это число отгадать, называя варианты. После каждого неверного варианта загадывающий говорит: «больше» или «меньше».
Задача: отгадать число за минимальное количество попыток, используя минимальный объем вычислений.
Вам кажется, что это очень просто? Поверьте, это совсем не так!
Всем привет!
Эта статья больше веха для себя, чем полезная информация для кого либо, но если вам близка тема парсинга API-ответов, то думаю вам будет интересно.
Что получилось
От базовой версии получилось ускориться в 4 раза, отставание от wplake/typed сократилось до "всего лишь" x2, если вам критична скорость вам к wplake/typed, если вам критична читаемость выбирайте sbwerewolf/language-specific.

Привет, я давно не заходил. Лет десять (или даже пятнадцать...) прошло с того момента, как я написал статьи о парсинге бинарных документов, типа doc, pdf или rtf, ради получения текста (кстати, я недавно обновил репозитории, немного пересобрал старые проекты, можете глянуть). Вы бы знали сколько воды с тех пор утекло, но это всё ностальгия и былое - давайте к серьёзному.
С пару недель назад я возвращался домой на метро и в голову пришла идея, которую не возможно было отбросить. А что если есть неуверенные люди (а они есть)? А что если есть неуверенные люди, которым нужен толчок свыше? А что если эти неуверенные люди среди нас, в разработке - на бэкэнде, в devops или среди продактов? А что если им всем помочь?..
И родился проект Deploy Tarot. Да, это расклады таро на успех деплоя. Что если я, техлид, сегодня задеплою новую версию API? Нет проблем, карты расскажут. А что если наш бизнес аналитик захочет обновить документацию? Арканы помогут понять. А вдруг наш CTO возьмётся за старое, вспомнит про порох в этих самых и... сделает масштабный рефактор (ИИ, ну вы знаете)? Колода определённо знает. А если наша офис-леди?.. Ну, вы поняли.

В предыдущей статье мы подключали OpenGL. Но подключали его без уважения… Давайте сделаем это как надо!
А ещё признаем неприятный факт: мы тратим непозволительно много времени на бойлерплейт. Подключаем функции, прописываем константы, копируем typedef’ы и в целом занимаемся тем, что хочется автоматизировать уже на второй минуте.
Давайте разбираться, как с этим жить.

Завершение серии статей о параллелях между недокументированными операциями советских ПМК и концепциями Карлоса Кастанеды. Начало тут...

AI должен был сделать мою работу легче. Он сделал. Только вместе с этим куда-то пропало ощущение, что я вообще что-то создаю

Приветствую всех!
Думаю, при упоминании знаменитого бага в процессоре Intel Pentium на ум сразу приходит ошибка деления. Но, как оказывается, она была не единственным косяком этих чипов.
Первые «пеньки» имели ещё одну интересную особенность: существовали «роковые» четыре байта, выполнение которых заставляло компьютер зависнуть намертво. Что же это была за ошибка, как она проявлялась и как её воспроизвести? Сейчас и узнаем.

Эта статья, по сути, родилась как развёрнутая версия комичной зарисовки, которую вы видите выше.
Честно говоря, я довольно долго не видел надобности в подобной статье. Если кто-то начинал говорить о генерации кода на основе спецификаций, то я просто показывал ему эту картинку, и обычно этого хватало.
Однако сегодня сторонники агентного программирования утверждают, что нашли способ победить гравитацию и генерировать код исключительно на основе спецификаций. Более того, они настолько замутили воду, что теперь к приведённому фрагменту комикса нужно давать дополнительное пояснение, почему их утверждения нереалистичны.

или как уместить Вселенную в iPhone, не привлекая внимания санитаров
Разработчики — люди в целом неплохие, но с одной странностью: когда задача кажется им большой, они добавляют слой. Потом ещё слой. Потом, в три часа ночи, смотрят на то, что получилось, и долго молчат.
Автор проекта «ЭХО» взял и убрал всё лишнее. Без предупреждения, без RFC, без голосования в команде. Остался минимальный Linux, один бинарник на Go и файловая система — всё остальное полетело в мусор вместе с базами данных, фреймворками и «чёрными ящиками» с гарантией на три года. Получилась система на 250 миллионов анкет, которая работает на обычном пользовательском компьютере и не требует звонить в поддержку AWS в два часа ночи.
Но 250 миллионов — это как-то мелко, правда? Давайте замахнёмся на Вселенную. Ну или хотя бы на Млечный Путь для начала.

Одной из самых сложных частей C++ до сих пор считаются правила поиска имён, и ошибки связанные с name lookup проявляются обычно уже в рантайме. Код компилится и даже работает какое-то время, но при свете луны ведёт себя не так как ожидает программист. За простыми идентификаторами скрывается многоуровневая система областей видимости, категорий имён и специальных правил, и очень многое в нашем текущем стандарте растёт прямиком из восьмидесятых, частенько без изменений. Давайте посмотрим как компилятор видит имена в C++, какие области видимости существуют и почему они ведут себя по-разному.
В C++ есть несколько типов областей видимости, вы наверное сходу назовёте глобальное пространство имён, область параметров шаблона, область видимости класса и область параметров функции, но также есть блочная область видимости и область видимости перечислений. Между этими областями есть исторически сложившаяся асимметрия, которая частенько удивляет: два объявления using, которые вводят одно и то же имя в одну и ту же область видимости внутри пространства имён компилятор съест без возражений, но если попытаться сделать то же самое других областях видимости, то получим ошибку на повторное объявление. В серии статей про "нескучное программирование" я разбираю скользкие случаи и как мы докатились до такого. Это продолжение темы, начатой в "Важны ли компилятору имена", поэтому чтобы картинка была цельной, лучше пробежать её по диагонали.

В C++ уже есть корутины. Есть диапазоны. Есть готовые библиотеки.
Но это не мешает взять гаечный ключ и начать собирать генератор вручную.
В предыдущей статье макросы внезапно начинают изображать из себя язык: DO, LET, IS управляют препроцессорным ритуалом и создают DSL. Это синтаксис. Это оболочка. Это фронтенд.
(чтение предыдущей статьи необязательно для понимания этой)
Но ведь есть не только синтаксис, можно создать и конкретную семантику — генераторы.
В этой статье я строю велосипедный генератор. Самый честный.

RooCode — расширение для VS Code с многоагентной системой (встроено 5 Модов: Orchestrator, Ask, Architect, Code, Debug)
Ключевые преимущества: синхронное выполнение задач (предсказуемость), гибкая настройка модов, MCP-серверы для снижения ошибок и количества запросов к LLM
Основная идея настройки: каждый Мод отвечает за свою задачу, Оркестратор распределяет работу между ними
Настройка идёт по спирали: от базовых настроек → скиллы → моды → провайдеры → итеративное улучшение

В январе 2023 мне пришла в голову идея: а почему бы не управлять своими серверами так же, как я управляю своими проектами — через docker compose up.
Довольно быстро стало понятно, что до меня в эту сторону массово не ходили, если кто так уже делает, то делает это молча… т.е. на все детские грабли на этом пути мне придётся наступить лично.
А вот вам повезло: если тоже захотите пойти в эту сторону, то у вас уже есть и эта статья и пример конкретной реализации.
Кому этот подход может подойти? Тут должны сойтись звёзды несколько факторов:
● Нужно быть программистом, хорошо знакомым с docker-compose.yml.
● Нужно иметь 1-5 личных серверов — не важно, дома или на обычном/облачном хостинге, настоящий ли это сервер или свой десктоп/ноут, выполняющий заодно и функции «сервера».
● Нужно иметь достаточно опыта настройки этих серверов вручную по ситуации, чтобы появилось понимание недостатков этого подхода и желание внедрить IaC (перенести конфигурацию серверов в git и сделать её легко воспроизводимой).
● Но главное — нужно не быть админом, которому Ansible привычнее. 😄
Рассказываю, как я сделал простейший yaml сервис на Java и Vue для разовой загрузки данных, чтобы не писать тонны кода и не мучиться с JSON.
Предыдущая часть: Enovia умерла, да здравствует JMatrixPlatform: пересобираю легендарную платформу на Java и Vue
Начинаю короткий цикл с мини-историями разработки JMatrixPlatform. Информации очень много, но я начну с задачи взаимодействия технических специалистов с самой системой и её данными.

На написание этой статьи вдохновил этот пост: Learn x86-64 assembly by writing a GUI from scratch. Программу из статьи перепишем с nasm на fasmg и сократим размер исполняемого файла примерно на треть.
Я хотел потроллить друга — сделать самый бесполезный статистический сайт в мире. Попросил AI влепить cookie-баннер по приколу. Шутить не просил. А получил целую панель, где каждая категория — отдельная шутка. И понеслось: 6 разделов, специальный humor guide в CLAUDE.md. И еще AI отказался шутить на белорусском.

Продолжение серии статей о параллелях между недокументированными особенностями советских ПМК и концепциями Карлоса Кастанеды, начало — тут..