Обновить
128K+

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

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

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

Как я автоматизировал подбор кандидатов с помощью Telegram‑бота и ускорил массовый найм в 3 раза

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

Все началось с отпуска HR.

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

Но каждая решенная проблема открывала следующую. Сначала появились анкеты и скоринг. Затем аналитика, триггерные сообщения, LLM, база знаний и собственный визуальный конструктор сценариев.

Если вы занимаетесь подбором персонала, автоматизируете HR‑процессы или разрабатываете Telegram‑ботов, возможно, мой опыт поможет избежать нескольких ошибок и сэкономить время.

Читать далее

Новости

Или я вообще ничего не понял про устройство NeoGeo, или я не понимаю, почему Wolf3D не был портирован на него в 90-х

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

Недавняя статья открыла для меня устройство столь упоро необычное и несущее столь любимый нами трудноуловимый флёр «балдёжности», существование которого раньше проходило мимо меня — NeoGeo. Как говорится, «это не первое моё родео» — на использовании 2D‑ускорителей в качестве 3D‑ускорителей я съел изрядного бобика.

Читать далее

Doom работает везде, даже на Neo Geo

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

Примерно месяц назад мы сняли видео [а на Хабре опубликовали его перевод] о сложности реализации игры наподобие Doom на консоли Neo Geo. Причина заключается в том, что у Neo Geo нет концепции буфера кадров, то есть всё, что мы видим на экране Neo Geo, рендерится, как спрайт. Также в этом видео я рассуждал о концепции движка рейкастинга, который вполне неплохо работал на Neo Geo. Придуманная мной концепция, по сути, заключалась в создании плоской сетки блоков и испускании одного луча на каждый вертикальный столбец. Разработчик Sabino даже предпринял любопытную попытку создать на этом движке игру в стиле Doom.

Но, разумеется, рейкастер и движок уровня Doom — это далеко не одно и то же. Рейкастер может работать только с сеткой, то есть с квадратными блоками, а значит, все объекты на карте должны иметь одинаковую высоту, а стены находиться под прямыми углами. Doom же устроен сложнее: в нём есть стены, располагающиеся под любыми углами, помещения с разной высотой полов, лестницы, лифты и двери. Ничто подобное невозможно реализовать в простой игре с рейкастингом. Даже в проекте Sabino поворот за угол выглядит не особо естественно. В конечном итоге, мы имеем дело с сеткой из квадратных блоков, поэтому в таком движке с рейкастингом невозможно реализовать что-то наподобие уровня E1M1, The Hangar.

Однако у этой саги «Doom на Neo Geo» недавно появилось несколько продолжений, и я в восторге от того, куда всё это может привести. Как я упоминал в последующем видео, люди действительно серьёзно принялись за решение этой задачи. У нас появились новые подходы к реализации Doom на Neo Geo.

Читать далее

Qwen 3.6 27b на 8-12gb vram в llama.cpp до 256к контекста

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

Вышло 2 модели prism-ml/Ternary-Bonsai-27B-gguf и prism-ml/Bonsai-27B-gguf

Модели представлены в 2-битном и 1-битном вариантах и занимают всего 7,2 и 3,8 ГБ соответственно. Но самое интересное здесь не размер, а качество после столь агрессивного сжатия. По заявленным результатам, 2-битная версия сохраняет около 95% качества FP16, а 1-битная - примерно 90%.

Благодаря столь компактному размеру 1-битную модель можно запускать даже на смартфонах. Например, на iPhone 17 Pro Max скорость генерации достигает примерно 11 токенов в секунду.

Для запуска потребовался форк PrismML-Eng/llama.cpp. На RTX 3090 мне удалось получить около 60 токенов в секунду. Скорость вполне достойная, однако потребление видеопамяти меня не устроило: при контексте в 256 тысяч токенов 2-битная версия заняла около 18 ГБ VRAM. В это значение входят примерно 3 ГБ, используемые Windows 11.

Я привык работать с TurboQuant версиями llama.cpp, которые заметно эффективнее расходуют память, при использовании параметров: -ctk tbqp3 -ctv tbq3 объём памяти занимаемый контекстом, сокращается в 4.71 раза. При этом качество такого сжатия контекста, согласно результатам тестов, оказывается примерно на 8% выше, чем у F16.

Читать далее

Как я написала программу для автоматического сопоставления номенклатуры в 1С. Мои полгода проб и ошибок

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

Давайте сразу оговорюсь, дабы вы не судили меня строго. Я не программист, а скорее маркетолог с навыками программирования и некоторыми знаниями в IT. Но речь в этой статье пойдет далеко не о маркетинге, а о программе, которую мне довелось разработать. Для меня это было внезапно ;-)

Летом 2025 года мне мой муж начал рассказывать о проблемах своей компании. У них просто ужасно много времени уходило на внесение в 1С заявок клиентов. Настолько ужасно, что для этого держали 8!!! офис-менеджеров, при общем штате компании человек в 40. Это чтобы вы осознали масштаб проблемы.

Я хлопала глазами и предлагала воспользоваться стандартным функционалом сопоставления номенклатуры в 1С. Он крутил у виска и говорил, что это не сработает: клиенты любили очень причудливо описывать требуемые позиции.

Читать далее

Агрегатор новостей заработал, когда я перестал доверять ИИ

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

С чего всё началось

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

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

Дальше по привычке открываю Телеграм. Там у меня десятки каналов и в каждом события дублируются раз восемь в восьми разных пересказах. А по‑настоящему важного среди всего этого набирается три‑четыре штуки в лучшем случае.

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

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

Читать далее

89% моих трат на AI‑агентов — это кэш, а не генерация. Написал CLI, чтобы увидеть

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

Я много работаю с кодинг‑агентами в Claude Code. В какой‑то момент поймал себя на том, что не представляю, на что уходят токены. Счёт в конце месяца есть, а из чего он складывается, непонятно.

Написал небольшую утилиту: она читает то, что Claude Code и так пишет на диск, и раскладывает расходы по статьям. То, что она показала, мне не понравилось.

Читать далее

Битва: Яндекс.Музыка vs Marshall или как лайкать треки с помощью кнопок наушников

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

На повестке дня — сервис Яндекс.Музыки. Я меломан, у меня куча лайкнутых треков, и знаете что? Я устала. Устала их лайкать. На телефоне-то всё удобно: сверху висит плашка с названием трека и сердечком, и всё делается за секунду.

А вот десктопное приложение — это просто до свидания. Я амбассадор мака (это слово нынче тренд), и меня дико бесит, что для лайка трека мне приходится сворачивать вкладку или уводить фокус со страницы, на которой я работаю.

Но мы упрямые. (и немного наивные)

Идеальная постановка задачи: нажатием кнопки на наушниках ставить лайк на играющий трек Яндекс.Музыки, если он ещё не лайкнут, и показывать overlay с его названием. А если уже лайкнут — просто написать, что вы его уже лайкнули.

Реалии, к которым я пришла: слёзы, куча матов, экзистенциальный кризис от невозможности переопределить кнопку M на Marshall и, конечно же, гора костылей.

Если интересно — читайте дальше.

Читать далее

Конвейер из 10 агентов без строчки кода: три промпта, 40 минут и прогон при зале

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

Недавно я вёл урок по прототипированию сервисов в Cursor. На рабочую часть ушло максимум 40 минут: 15–20 минут я рассказывал, 20–25 минут мы работали. Из этого времени сам Cursor чистыми отработал минут десять, остальное я говорил, копировал промпты и показывал на экране. На выходе получился репозиторий с прототипом редакционного конвейера для новостного сайта: оркестратор на 10 шагов, 10 ролей‑субагентов, 8 файлов правил, канон артефактов прогона. И тут же, при зале, мы прогнали цепочку целиком: от сырых источников до готового черновика новости и вердикта авто‑судьи. Прикладного кода: ноль строк. Каталога src/ в проекте нет вообще.

Сразу сниму ожидание магии. Мы не собирали работающий сервис: ни бэкенда, ни планировщика, ни деплоя. Прогон исполнили агенты Cursor по правилам, а не какая‑то запущенная система. Целью было показать практику: алгоритм будущей системы можно целиком проработать на уровне правил, до того как написана первая строка кода.

Читать далее

Мне было лень учиться, и я навайбкодил себе платформу для обучения

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

Всё началось с прокрастинации. Готовился к собеседованиям: SQL, git, брокеры сообщений, Django, алгоритмы. Открывал статьи, читал полтора абзаца и через десять минут обнаруживал себя где угодно, только не за материалом. К третьему заходу стало ясно: в формате «читать и запоминать» это в меня не лезет.

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

Спойлер: план провалился, учиться всё равно пришлось. Но по дороге вышло кое-что интереснее самого тренажёра, про это и статья.

Смотреть, что вышло

Обфусцированный bash-скрипт CDN Akamai продаётся потребителям в розничных магазинах

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

Когда жена сказала мне: «Давай покажу футболку, которую я нашла...», у меня не было совершенно никаких предположений, но я определённо не ждал увидеть напечатанный на спине обфусцированный bash-скрипт, который выводит сообщение-пасхалку.

Я не любитель кликбейтных заголовков, но понимаю, почему редакторам они так нравятся. Заголовок статьи, строго говоря, совершенно правдив, но, наверно, не в том смысле, в котором вы бы ожидали. Обфусцированный код на самом деле оказался пасхалкой, он распространяется в магазинах Uniqlo в рамках кампании Peace for All на замечательных футболках, дизайн которых разработала Akamai.

Читать далее

Почему у тебя не получится завайбкодить игру за час? Рассказываю на своем опыте

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

Всем привет! Меня зовут Саша, и я ML‑инженер. Современная разработка ML‑пайплайнов это уже давно не только обучение моделей. Хороший ML‑инженер, помимо всего прочего, пишет backend‑сервисы, настраивает Docker, занимается деплоем моделей, и иногда даже пишет автотесты для своих решений.

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

Узнать, что же там такое...

Две недели я делал народную карту заправок. Написать код оказалось самой скучной частью работы

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

Дисклеймер: автор делится личным опытом и практическими наблюдениями. Упоминание сервисов и инструментов не является рекламой, продвижением или призывом к использованию.

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

Расскажу с самого начала, заодно покажу цифры и то, что получилось собрать.


Читать далее

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

От Triton Inference Server к NVIDIA Dynamo: как изменился inference для агентов в 2026

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

Привет, Хабр! Меня зовут Александра, я Data Scientist в компании Рафт. В этой статье я разберу NVIDIA Dynamo — новый open‑source фреймворк для инференса и проверю, действительно ли его KV‑маршрутизация ускоряет агентные сценарии.

С появлением агентных систем требования к инференсу современных ML‑моделей существенно изменились. Если раньше типичная нагрузка была предсказуемой — один запрос, один ответ и фиксированная цепочка шагов, — то в 2025–2026 годах всё стало по‑другому. Агентные системы теперь выполняют множество последовательных и параллельных вызовов моделей и инструментов в рамках одной задачи.

Triton Inference server, ставший стандартом для инференса различных моделей от компьютерного зрения до LLM, появился ещё до массового распространения агентных систем, поэтому его архитектура проектировалась под классический сценарий. В ответ NVIDIA представила новый open‑source инференс фреймворк Dynamo, заточенный под LLM, рассуждающие модели и агентов.

Читать далее

Гео-аналитическая платформа вдвоём за 2,5 месяца, или история одной spec-driven разработки

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

Мне посчастливилось начать проект с чистого листа: амбициозная задача, никакого легаси и свобода выбрать любой подход. Я решил довериться AI по-максимуму и код больше не трогал.

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

Как это устроено и что нужно, чтобы повторить, — под катом.

Читать далее

Ваш API-ключ утечёт. Как сделать так, чтобы это ничего не стоило

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

По данным GitGuardian (State of Secrets Sprawl), только за 2024 год в публичный GitHub утекло около 23,7 млн секретов — ключей API, токенов, паролей. Подавляющее большинство — не результат взлома, а обычные коммиты, логи и клиентские бандлы. Свежий ключ, попавший в публичный репозиторий, боты начинают пробовать меньше чем через минуту.

Вывод, к которому мы пришли после N-го инцидента: бороться за то, чтобы ключ не утёк — проигранная война. Выигрышная — сделать утечку бесполезной.

Читать далее

Продакшн на Laravel руками ИИ‑агента: честный отчёт о том, что работает, а что чуть не уронило прод

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

Я аналитик, а не разработчик. Весь код для созданной нами платформы написал Claude Opus через Claude Code. Рассказываю без хайпа: как выглядит реальный workflow, где нейросеть незаменима, где она бесполезна, и какая инженерная дисциплина обязательна, чтобы это не превратилось в тыкву на боевом.

Сразу обозначу рамку, чтобы снять половину вопросов из комментариев.

Я не умею писать продакшн‑код. Я аналитик: читаю код, рассуждаю о системах, проектирую поведение — но профессионально не кодю. Тем не менее у нас в проде работает нетривиальное веб‑приложение, и каждую строчку кода написала нейросеть (Claude Opus, агент Claude Code). Моя роль — архитектор, продакт и QA. Второй ключевой специалист по разработке — дизайнер вебинтерфейсов, также освоивший Claude.

Это не пост «ИИ сам всё сделал, программисты не нужны». Скорее наоборот: я хочу показать, что инженерия никуда не делась — просто из неё вынули операцию «набирать код руками». Всё остальное (проектирование, компромиссы, ловля прод‑онли багов, дисциплина релизов) осталось на человеке. И вот об этом «остальном» — интереснее всего.

Читать далее

История одного зелёного теста: 97,8% mutation score и баг, который месяцами жил в проде

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

Небольшой инженерный постмортем про то, как метрики качества тестов дружно молчали, пока пользователь не прислал скриншот с очевидной ошибкой. И почему ни строчное покрытие, ни мутационное тестирование этот класс багов поймать не могли в принципе.

У меня есть внутренний дашборд, который собирает список рабочих копий проекта (git worktree) и показывает по каждой последнюю активность. В какой-то момент пришло сообщение: «разные ветки, а последнее сообщение и время везде одинаковые». Я открыл дашборд — и правда: каждая копия отображалась пять раз подряд, с идентичными данными. При этом тесты были зелёные, строчное покрытие — сто процентов, а мутационный прогон по этому куску показывал 97,8%. То есть все три метрики, которым принято доверять, дружно сказали «всё хорошо».

Читать далее

Паттерны доступа к данным, которые выбесят ваш процессор

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

Представим, что у нас есть массив целых чисел. Какой будет самый медленный способ их просуммировать? Будет ли это складывание слева направо, в случайном порядке или как-то иначе? Чтобы ответить на этот вопрос, мы воспользуемся слабыми местами системы управления памятью и с нуля разработаем такой паттерн обращения к данным, по которому сложение будет происходить максимально долго.

Читать далее

PowerHTML

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

Свой PowerPoint в одном файле: редактор презентаций на HTML, который делает презентации-HTML с работающими HTML-интерактивами. Один файл, офлайн, без аккаунтов. Вайбкодил учитель физики.

Ссылка в тексте.

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