Обновить
512K+

Программирование *

Искусство создания компьютерных программ

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

Выбираем бэкенд в 2026 (PHP, Dart и C++ Drogon)

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

Поехали.

Вообще говоря, я всегда делал бэкенд исключительно на PHP. Я считаю его отличным языком для бэкенда, вернее не только для бэкенда, а отличным языком. Некоторые не любят PHP за малый порог вхождения. Типа через этот малый порог вхождения входит очень много непрограммистов, которые потом пишут говнокод. Но я придерживаюсь мнения, что PHP никак не виноват в этом. Скорее наоборот. На PHP логика просыпается даже у тех, кто кроме говнокода ничего написать не может. Поэтому в любом случае это отличный язык программирования, который каждый год хоронят, но никак похоронить не могут. И в 2026 году он живее всех живых и показывает отличные результаты.

Вторым в списке для сравнения я решил поставить Дарт. Дело в том, что самое узкое место применения Дарта — это как раз-таки применение на серверах. Потому что в мобильной разработке он уже как стандарт, веб, фронтенд мало-мальцевски он тоже подтягивает. Но вот на серверах пока что его используют очень мало. Одна из причин на то, что его мало используют на серверах, — это отсутствие библиотек, таких как, например, есть у PHP. Но, тем не менее, это совсем не значит, а тем более сейчас в эпоху LLM, это совсем не значит, что Дарт негоден на серверах. Как покажет сравнение, он очень-таки годен.

Третий кандидат для сравнения — это C++. Это его фреймворк Drogon, который в каком-то там 2014 или 2015 годах взлетел как самый быстрый фреймворк для серверов на бэкенде по скорости. Если честно, я ни разу не писал бэкенд на C++, поэтому это была первая попытка. Просто хотелось посмотреть, как C++ уничтожит двух других оппонентов со своей 100x производительностью.

Читать далее

Я перестал пользоваться самыми умными ИИ‑моделями. Программировать стало быстрее и дешевле

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

В отпуске есть время подумать и исследовать. Я натолкнулся на несколько вещей и открытий для себя. Оказалось, что мне как программисту перестали быть нужны самые умные и дорогие ИИ‑модели. Оказывается, есть такой параметр «Cost per Task», и по этому параметру на первое место вырвалась модель GPT-5.6 Luna (max).

При этом, если вы пользуетесь Codex, она самая тупая в списке моделей. Artificial Analysis Intelligence Index у нее всего 38. Для сравнения, у самой умной GPT-6 Astra (max) этот индекс равен 53. В итоге цена выполненной Luna задачи составляет $0.18 против $3.26 у Astra. Разница почти в 20 раз.

Как я понимаю, бенчмарк «Cost per Task» высчитывается так: когда ставится нормальная, грамотно описанная задача, замеряется, сколько токенов было потрачено на ее выполнение. То есть не в формате «из ХЗ сделаю ТЗ», а в формате, когда в хорошо заданном вопросе уже содержится половина ответа.

Я сначала не поверил, что так и есть, и стал работать, используя самую тупую модель Luna в линейке. И знаете, какие меня ожидали результаты?

Читать далее

Бэкенд без лишних граблей: 13 статей о PostgreSQL, микросервисах и коде

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

Что общего у раздувшегося индекса, неудачно нарезанных микросервисов и лишнего std::move? Все они выглядят безобидно, пока не доходят до продакшена. В этом дайджесте собрали 13 разборов бэкенд-задач, в которых детали решают всё.

Смотреть подборку статей

Спросил у Claude Code одно слово — он отправил на сервер 305 килобайт. Вскрыл трафик двух кодинг-агентов

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

Спросил у Claude Code «Ответь одним словом: работает». Двадцать девять символов. На сервер ушло 305 042 байта — 113 460 токенов, ответ из четырёх.

Поставил между агентом и сервером прокси на сорок строк Python и разобрал тело запроса по частям. Системный промпт — четыре процента. Восемьдесят пять процентов — описания 137 инструментов, из которых 107 принёс один MCP-сервер, которым я в этой сессии не пользовался. Ещё 29 тысяч символов добавил хук плагина. И на каждый ход уходит второй запрос, о котором я не просил.

То же самое проделал с Codex CLI: 29 килобайт, 9 817 токенов, а системный промпт при этом такой же длины. Дальше — таблица, что убирается флагами (один MCP-сервер стоил 52 тысячи токенов на запрос), что это значит для окна и кэша, и скрипт, чтобы посмотреть свой первый запрос.

Читать далее

Системная отладка или Как искать баги: при чем тут дедукция и цепочка Целлера

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

Привет, Хабр!

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

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

С поиском причин багов примерно та же история. Их легко превратить в хаотичные попытки переписывания кода. Но отладка — это системный инженерный процесс, основанный на дедукции. Здесь нет места игре в угадайку. Важно сформировать гипотезы и последовательно отсекать те области, где проблем гарантированно нет.

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

Читать далее

Новые фичи Java нужны не только на собеседованиях

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

Всем привет! На связи Михаил Поливаха, технический лидер проекта Axelix.

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

И это, кстати, не обязательно плохо. Тащить новую фичу в production только потому, что она новая, не самая выдающаяся инженерная стратегия. Более того, многие приложения всё ещё работают на Java 17, а где-то бодро живёт и Java 11.

Но отсюда возникает закономерный вопрос:

Есть ли у новых возможностей Java применение в обычных, реальных приложениях? Не в презентации, не в игрушечном pet project, а в коде, который решает вполне конкретную задачу?

Да, есть.

Читать далее

«Лучшие» практики Rust, которые вас подведут. Часть 2

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

Ну, привет.

В январе мы разбирали пять привычек, которые звучат разумно, а на деле мешают: дженерики на каждый параметр, Arc<Mutex>

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

Сегодня — ещё пять таких же «лучших» практик. Трейт на случай смены базы. Лайфтаймы в структурах ради аллокаций, которые никто не считал. Строка #[derive(...)], которую копируют не глядя и однажды сливают пароль в лог. Newtype на каждое число. И оптимизации, которые воткнули до того, как кто-нибудь вообще открыл профилировщик.

Читать далее

Сколько стоит месяц с AI-агентом: API против подписок

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

Посчитал месяц работы разработчика с AI-агентом по ценам API и подписок на сентябрь 2026: от $87 на DeepSeek до $7 720 на GPT-6 Astra. Почему 82% токенов — это кэш, что ломает кэширование посреди сессии, почему лимиты подписок в запросах обманчивы и сколько на самом деле дают Claude Code, Codex, OpenCode Go, GLM Coding Plan и Ollama Cloud.

Читать далее

Грязные игры

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

Вы знаете, что игры бывают очень архитектурно «грязными» внутри? Но это не помешало им продаваться миллионами копий, или быть написаннами одним человеком на фреймворке для браузерок, или на Lua поверх библиотеки для геймджемов, или вообще ребенком в бесплатной версии юнити. При этом мощный кастомный движок с ECS, job‑системой, своим рендером и рефлексией повсюду вы тоже знаете, но игра на нем, скорее всего лежит третий год у вас в беклоге, так и не сыграная даже пару часов.

Попросили меня по старой дружбе, где‑то с полгода назад, помочь с разработкой и выводом игры в Steam. Ребята до этого занимались нефтью, и накопив деньжат, решили, что называется оставить след в индустрии. Если честно, я несколько отвык от такого «детского» кода и простых решений, что меня несколько удивило, хотя и вернуло на грешную землю из объятий ентрепрайза. Но я сразу оговорюсь, что простая архитектура это не оправдание плохого кода, а способ выбрать, где именно вы позволяете себе быть сложным. Бюджет сложности конечен... прежде всего размером вашей натуральной оперативкой, и тратить его надо туда, где игрок это увидит.

Читать далее

Ключ к безопасной идентификации: дайджест недели сканеров с технологиями Smart Engines

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

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

Совместно с ГК «Интек» Smart Engines разработала линейку российских программно-аппаратных комплексов для автоматического ввода данных и проверки подлинности документов.

За Неделю сканеров мы рассказали и показывали, как сканеры Smart Engines помогают выявлять подделки, встраиваются в полностью автоматизированные процессы и применяются в банках, аэропортах, государственных учреждениях, системах контроля доступа и роботизированных комплексах. 

Собрали главное за Неделю сканеров в одном дайджесте👇

Читать далее

Как я строил zero‑knowledge менеджер паролей: три архитектуры, модель угроз и восемь багов

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

Привет, Habr.

Я разрабатываю менеджер паролей «Сэйфком» для личного и командного использования.

Почти все серьёзные проблемы, которые я находил, были не в самих криптографических примитивах. Они появлялись рядом с ними: в авторизации, сериализации ключей, rate limit, SMTP, WebAuthn и обычной бизнес‑логике.

Ограничения модели безопасности и текущее состояние сервиса описаны отдельно, на странице безопасности. Формального внешнего аудита на момент публикации не было.

Читать далее

Как писать моки, чтобы тесты падали вместе с продом: 7 частых ошибок

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

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

В статье разберём типичные ошибки при работе с unittest.mock, особенности patch, spec и autospec, а также когда лучше использовать фейки вместо моков.

Разобрать ошибки

«Обратная змейка», часть 2: читаю комментарии, чиню баги и добавляю босса

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

Когда я выкладывал первую часть, я, если честно, рассчитывал на десяток лайков и тишину в комментариях: ну кто будет всерьёз разбирать змейку, слеплённую за два вечера. Не угадал — комментариев набралось прилично, и добрая половина оказалась не «мило, годно», а разбором полётов: кто-то поймал баг, кто-то — нечестный спавн змей вплотную к игроку, кто-то сравнил игру то с Pac-Man, то с Asteroids. И вот сижу я, читаю это всё по второму кругу и понимаю: технически игра работала, но местами работала не на 100 процентов своей идеи, а это не то же самое, что работала хорошо. В общем, решил пройтись по всему списку, а не отделаться сердечком в ответ.

Читать далее

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

Дайджест: скачиваемые решения в Базе знаний за месяц

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

Подборка 5 самых скачиваемых решений за последний месяц. Почему стоит обратить на неё внимание? Во-первых, это возможность изучить актуальные интересы пользователей и понять, какие инструменты сейчас востребованы. Во-вторых, среди подборки вы можете найти полезные решения для себя или своих клиентов.

Читать далее

Variadic templates в C++. 11 приёмов работы с пакетами параметров

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

Привет! Меня зовут Николай, я C++-разработчик в SimbirSoft. В этой статье хочу поделиться практическими приёмами работы с вариативными шаблонами в C++ и разобрать идиомы, которые помогают решать задачи с пакетами параметров — от их перебора и преобразования до использования в более сложных конструкциях.

Мы рассмотрим рекурсию по аргументам и параметрам шаблона, свёртки, работу с лямбда-функциями и requires, мультилямбды, рекурсивные типы через наследование и другие приёмы. На примерах разберём, как современные возможности C++ позволяют сокращать объём шаблонного кода и решать задачи как на этапе компиляции, так и во время выполнения.

Статья будет полезна C++-разработчикам, которые уже знакомы с шаблонами и хотят глубже разобраться в variadic templates и возможностях пакетов параметров. Для комфортного чтения потребуется уверенное владение базовым синтаксисом C++, понимание шаблонов, лямбда-выражений и основных возможностей стандартной библиотеки. Материал ориентирован прежде всего на разработчиков среднего уровня, но будет полезен и тем, кто хочет расширить свой набор практических приёмов современного C++.

Читать далее

Vault Audit AI стал Veynrel. Зачем Obsidian‑плагину понадобились Companion и MCP

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

В прошлой статье я закончил на том, что следующая часть серии, скорее всего, уже выйдет за границы самого Obsidian‑плагина, в Companion и MCP. Вышла.

За это время Vault Audit AI успел обзавестись отдельным сервером, MCP‑интерфейсом для AI‑клиентов, механизмом предложений изменений и вторым репозиторием.

А потом стало понятно, что старое название уже довольно плохо объясняет, что вообще происходит. Поэтому теперь проект называется Veynrel.

Сам плагин при этом не был переписан с нуля. Существующим пользователям не нужно ничего переустанавливать, заново вводить API‑ключи или перестраивать semantic index. Я специально постарался сделать самый скучный ребрендинг из возможных с технической точки зрения.

Зато вокруг самого плагина стало заметно интереснее. Сейчас всё это в упрощённом виде выглядит так:

Как это устроено

Вайб‑кодинг до первой катастрофы: Изолируем ИИ‑агентов

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

Недавно индустрия снова вздрогнула. Вся IT-тусовка обсуждала историю о том, как автономный ИИ-агент под управлением Claude за 9 секунд полностью уничтожил продакшен-базу данных компании PocketOS. Ирония в том, что в системном промпте модели было черным по белому написано: «НИКОГДА не запускай деструктивные команды без явного одобрения пользователя». Модель после «преступления» сама честно призналась в нарушении правил, но базу это не вернуло.

Если вы думали, что это единичный случай, то спешу огорчить. Вспомним еще несколько громких катастроф:

Как поместить ИИ в бункер?

WXL: как создавать объекты в 15 раз быстрее

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

Обычная системная куча обязана предполагать худшее: что в неё в любой момент постучатся из десятка параллельных потоков. Отсюда неизбежные блокировки, атомарные операции и накладные расходы. Но в GUI-приложениях на WinUI 3 этого сценария просто не бывает — все контролы и элементы разметки создаются и умирают строго в одном-единственном STA-потоке. Зачем же платить за потокобезопасность, которую мы не используем?

В этой статье мы разберем устройство sta_memory_pool — кастомного аллокатора для библиотеки wxl, работающего в 15–16 раз быстрее общей кучи. Вы узнаете, как с помощью инструкции lzcnt вычислить класс размера за один такт, как избавиться от лишних if-проверок на горячем пути с помощью самоперестраивающихся таблиц функций и как заставить линейную аллокацию работать на максимальную отзывчивость приложения при старте.

Заглянуть под капот

Я обучил собственную визуально‑языковую модель меньше чем на 1 млрд параметров

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

Как собрать собственную визуально-языковую модель с нуля, имея ограниченный бюджет и одну арендованную GPU? Автор эксперимента взял небольшую языковую модель, подключил к ней визуальный энкодер и прошёл весь путь обучения VLM – от настройки архитектуры до оценки качества ответов. В статье – разбор решений, ошибки первых запусков и результаты модели на 628 млн параметров, которая научилась описывать изображения примерно за $200.

Смотреть результат

А чё, так можно было? Три места в.NET, которые не развидеть

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

Пустой наследник Random работает медленнее родителя. string[] и object[] оказываются одним объектом. А Matrix4x4 до сих пор держит шестнадцать полей float вместо четырёх векторов.

Ни одно из трёх уже не переделать, и на то есть причины.

Читать далее