Обновить
256K+

Ненормальное программирование *

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

238,94
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

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

Уровень сложностиСредний
Время на прочтение2 мин
Охват и читатели4.2K

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

Читать далее

Новости

Более 25 лет в Python не решаются исправить это

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

Сегодня (2026.04.01) прошло ровно 9731 день с тех пор, как сообщество Python узнало об изъяне в работе со строками.

Это было так давно, что у Python еще не было мажорных версий (для холиваров приходилось использовать PHP).

Так давно, что еще не существовало ни pythonchallenge.com, ни его прародителя notpron.com - легендарных убийц времени программистов.

Это было в прошлом тысячелетии. А именно - 1999 году, когда, согласно летописям, реализовали тип string. В том же году ведущий разработчик Jim Fulton опубликовал исследование, где без купюр указал на проблему.

Как ни странно, она не решена до сих пор.

Читать далее

Троллим ИИ на 1 апреля

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

Что ИИ ответил на серьезные запросы:

- как объяснить коту капитализм

- финансовый отчёт белки за третий квартал

- полная биография старого дуба — начиная с жёлудя

- резюме вампира в IT-компанию — 500 лет опыта, ночной график, требования к переговоркам

- дневник потерянного носка — день 1, день 340, принятие

- план побега комнатного растения

- ромком про чайник, который влюбился в посудомойку

- смета на строительство дома для семьи бобров

- поиск квартиры для мыши в современном городе

- план лечения выгорания у пчелы

- анкета волка на сайте знакомств

- анализ совместимости режимов сна у сов

- экзистенциальный кризис 180-летней черепахи

Что?

Игра в угадайку

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели7.2K

Играют двое: загадывающий и отгадывающий. Загадывающий загадывает целое число в известном диапазоне — скажем, от 1 до 100 включительно. Отгадывающий пытается это число отгадать, называя варианты. После каждого неверного варианта загадывающий говорит: «больше» или «меньше».

Задача: отгадать число за минимальное количество попыток, используя минимальный объем вычислений.

Вам кажется, что это очень просто? Поверьте, это совсем не так!

Читать далее

Типобезопасная работа с массивами PHP, ускоряемся в 4 раза

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

Всем привет!

Эта статья больше веха для себя, чем полезная информация для кого либо, но если вам близка тема парсинга API-ответов, то думаю вам будет интересно.

Что получилось

От базовой версии получилось ускориться в 4 раза, отставание от wplake/typed сократилось до "всего лишь" x2, если вам критична скорость вам к wplake/typed, если вам критична читаемость выбирайте sbwerewolf/language-specific.

Читать далее

Deploy Tarot — а что если спросить карты, можно ли сегодня деплоить?

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

Привет, я давно не заходил. Лет десять (или даже пятнадцать...) прошло с того момента, как я написал статьи о парсинге бинарных документов, типа doc, pdf или rtf, ради получения текста (кстати, я недавно обновил репозитории, немного пересобрал старые проекты, можете глянуть). Вы бы знали сколько воды с тех пор утекло, но это всё ностальгия и былое - давайте к серьёзному.

С пару недель назад я возвращался домой на метро и в голову пришла идея, которую не возможно было отбросить. А что если есть неуверенные люди (а они есть)? А что если есть неуверенные люди, которым нужен толчок свыше? А что если эти неуверенные люди среди нас, в разработке - на бэкэнде, в devops или среди продактов? А что если им всем помочь?..

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

Читать далее

OpenGL в PHP не привлекая внимания санитаров: OpenGL Расширения

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

В предыдущей статье мы подключали OpenGL. Но подключали его без уважения… Давайте сделаем это как надо!

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

Давайте разбираться, как с этим жить.

Читать далее

ПМК и Кастанеда. Часть 8. Сказки о силе

Уровень сложностиСложный
Время на прочтение7 мин
Охват и читатели5.3K

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

Читать далее

Кажется, во мне умирает программист

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

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

Читать далее

FOOF. Воспроизводим легендарный баг в процессоре Pentium

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

Приветствую всех!

Думаю, при упоминании знаменитого бага в процессоре Intel Pentium на ум сразу приходит ошибка деления. Но, как оказывается, она была не единственным косяком этих чипов.

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

Press F1 to continue

Достаточно подробная спецификация — это код

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

Эта статья, по сути, родилась как развёрнутая версия комичной зарисовки, которую вы видите выше.

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

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

Читать далее

Ударим автопробегом по галактическому бездорожью и разгильдяйству

Уровень сложностиСложный
Время на прочтение5 мин
Охват и читатели7.6K

или как уместить Вселенную в iPhone, не привлекая внимания санитаров

Разработчики — люди в целом неплохие, но с одной странностью: когда задача кажется им большой, они добавляют слой. Потом ещё слой. Потом, в три часа ночи, смотрят на то, что получилось, и долго молчат.

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

Но 250 миллионов — это как-то мелко, правда? Давайте замахнёмся на Вселенную. Ну или хотя бы на Млечный Путь для начала.

Читать далее

Ночью все кошки серы, а using'и одинаковы

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

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

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

Читать далее

Ближайшие события

Как убрать virtual и не сойти с ума: велосипедные генераторы через type loopholes

Уровень сложностиСложный
Время на прочтение14 мин
Охват и читатели7.4K

В C++ уже есть корутины. Есть диапазоны. Есть готовые библиотеки.

Но это не мешает взять гаечный ключ и начать собирать генератор вручную.

В предыдущей статье макросы внезапно начинают изображать из себя язык: DO, LET, IS управляют препроцессорным ритуалом и создают DSL. Это синтаксис. Это оболочка. Это фронтенд.

(чтение предыдущей статьи необязательно для понимания этой)

Но ведь есть не только синтаксис, можно создать и конкретную семантику — генераторы.

В этой статье я строю велосипедный генератор. Самый честный.

Читать далее

Агентная разработка в VS Code: Глубокая настройка RooCode для максимальной эффективности

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

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

Читать далее

Настройка личных серверов через Docker Compose

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

В январе 2023 мне пришла в голову идея: а почему бы не управлять своими серверами так же, как я управляю своими проектами — через docker compose up.
Довольно быстро стало понятно, что до меня в эту сторону массово не ходили, если кто так уже делает, то делает это молча… т.е. на все детские грабли на этом пути мне придётся наступить лично.
А вот вам повезло: если тоже захотите пойти в эту сторону, то у вас уже есть и эта статья и пример конкретной реализации.

Кому этот подход может подойти? Тут должны сойтись звёзды несколько факторов:

● Нужно быть программистом, хорошо знакомым с docker-compose.yml.
● Нужно иметь 1-5 личных серверов — не важно, дома или на обычном/облачном хостинге, настоящий ли это сервер или свой десктоп/ноут, выполняющий заодно и функции «сервера».
● Нужно иметь достаточно опыта настройки этих серверов вручную по ситуации, чтобы появилось понимание недостатков этого подхода и желание внедрить IaC (перенести конфигурацию серверов в git и сделать её легко воспроизводимой).
● Но главное — нужно не быть админом, которому Ansible привычнее. 😄

Читать далее

JMatrixPlatform: как я теперь за 5 минут загружаю данные, на которые другие тратят дни

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

Рассказываю, как я сделал простейший yaml сервис на Java и Vue для разовой загрузки данных, чтобы не писать тонны кода и не мучиться с JSON.

Предыдущая часть: Enovia умерла, да здравствует JMatrixPlatform: пересобираю легендарную платформу на Java и Vue

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

Читать далее

По следам Linux, X11 и ассемблера

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели5.2K

На написание этой статьи вдохновил этот пост: Learn x86-64 assembly by writing a GUI from scratch. Программу из статьи перепишем с nasm на fasmg и сократим размер исполняемого файла примерно на треть.

Читать далее

Я хотел потроллить друга, а обнаружил, что AI научился шутить

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

Я хотел потроллить друга — сделать самый бесполезный статистический сайт в мире. Попросил AI влепить cookie-баннер по приколу. Шутить не просил. А получил целую панель, где каждая категория — отдельная шутка. И понеслось: 6 разделов, специальный humor guide в CLAUDE.md. И еще AI отказался шутить на белорусском.

Под катом - попытки инженерии юмора с AI

ПМК и Кастанеда. Часть 7. Видение энергетического тела

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

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

Читать далее
1
23 ...