Обновить
1024K+

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

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

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

Low code умер, да здравствует low code

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

Привет, Хабр! Меня зовут Александр Сахаров, я отвечаю за партнерства в «Диасофт». Хочу разобрать с вами один сюжет, который рынок сейчас подает максимально противоречиво, - платформенную разработку.

Повод любопытный. Прямо сейчас идут два встречных сигнала. «Ведомости» в апреле написали, что интерес крупного бизнеса к low-code за год упал почти вдвое: с 66% компаний в 2025 году до 34% в 2026-м. А свежие обзоры по integrated development environment говорят ровно обратное: внутренние платформы разработки внедряют все активнее. Так в какую сторону мы на самом деле движемся - и чего при этом боимся?

Читать далее

Как Flutter поймал MITM

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

Итак, погрузимся в прошлое, помянем конец октября 2023 года.

При обновлении Flutter до версии 3.13.8 после запуска flutter doctor я получил неожиданное предупреждение:

Читать далее

Современные морфоанализаторы русского языка: от словарей к нейросетям

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

В статье «Извлечение и обработка требований из документов с помощью NLP-инструментов» я уже показывал, как переход от LLM к NLP-библиотекам помогает ускорить обработку текста. Это, конечно, не значит, что нужно совсем отказываться от LLM — они незаменимы для генерации текста и сложных рассуждений. Но чтобы определить, что «кошками» — это творительный падеж множественного числа существительного «кошка», действительно не нужен миллиард параметров нейросети. Для задач лемматизации, POS-тегирования и определения падежа существуют специализированные инструменты, которые работают быстрее, обходятся дешевле и зачастую точнее LLM в конкретных доменах. Это подтверждают годы их использования в поисковых системах, email-фильтрах и чат-ботах.

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

Читать далее

Изнурительно подробное руководство по SSH (лишь те аспекты, которые я нахожу полезными)

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

О, вам нравится SSH? А перечислите-ка все флаги!

Приветствую

Все мы видели эти красивые схемы, демонстрирующие, как в SSH устроен проброс  портов. Но, если мы с вами мыслим хотя бы немного схоже, то эти схемы оставляют у вас больше вопросов, чем дают ответов. Если вы за «красных» в области компьютерной безопасности, то, чтобы обрести в сети суперсилу и в дальнейшем бесчинствовать, вы должны понимать сеть лучше, чем те, кто её проектировал. Один из инструментов, наделяющих вас такой суперсилой — SSH. Но иногда нам мешают добиться поставленных целей сам синтаксис инструмента и другие концепции, на основе которых этот инструмент работает. Чтобы вы могли бесчинствовать эффективнее, не срывая сроков, я собрал для вас длинный список присущих SSH штук, которые я нахожу полезными. Хорошо, если вы его тоже почитаете, но составлял я его в основном для себя. Заметил, что сам я качественно усваиваю те или иные концепции, только если, изучая информацию, повторяю упражнения на клавиатуре. В этом посте я, в сущности, рассказываю, чему научился таким образом. Должен отметить, что во всех этих примерах я демонстрирую проброс портов при помощи веб-сервера, но таких же результатов можно добиться и при помощи почти любого сервиса, в частности, RDP, SQL, т.д.

Читать далее

Ваш docker‑compose.yml сломается: 5 настроек, которые все забывают

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

Локально docker-compose.yml обычно выглядит «рабочим» ровно до момента, пока сервис не уезжает на сервер. Потом внезапно заканчивается память, контейнеры не поднимаются после падения, логи разрастаются на десятки гигабайт, а Docker продолжает считать зависшее приложение живым.

В статье — пять настроек Compose, про которые почти всегда вспоминают уже после первого инцидента в проде: лимиты ресурсов, restart policy, healthcheck, ротация логов и работа с volumes.

Читать далее

6 моделей, 3 инфраструктурных задачи, 1 локальный AI-агент

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

В прошлой статье было показано, что обычный MacBook Pro M2 16GB может с оговорками решать инфраструктурные проблемы используя локальную LLM. В этой статье будут показаны результаты решения более сложных инфраструктурных задач на более тяжеловесных моделях.

Мой личный выбор - Qwen3.6-35-A3B для проблем, которые сформулированы общими словами, Gemma4-26B-A4B - для чётко описанных проблем. Далее обо всём этом подробнее.

Читать далее

Собрал оркестратор для Codex на базе Beads и Superpowers — 4 skill, параллельные subagents, наблюдаемость

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

Я работаю с Codex каждый день и со временем собрал поверх него систему оркестрации: 4 локальных skill (setup, stage, router, closeout), .codex/orchestrator.toml как машинный контракт и обязательная Parallel Decomposition Matrix перед делегированием. Сверху — Beads как трекер задач и Superpowers как процессные skill. Что это даёт на практике: — параллельный запуск независимых streams, когда write zones не пересекаются; — видимые spawned subagents — можно кликнуть и зайти в каждого отдельного агента, полная наблюдаемость; — чистый контекст основного оркестратора: он диспетчер, а не исполнитель, токены тратятся только на координацию; — нулевой silent debt — закрытие этапа требует evidence. История того, как я к этому пришёл — полгода с большим AGENTS.md на 30 КБ, который не работал. Проблема была не в правилах, а в том, что одно полотно правил это не контракт, а эссе. В статье: фрагменты toml, шаблон worker-контракта, golden prompts, грабли с inline-делегированием. Архив со всеми 4 скиллами прикладываю к посту в моём Telegram-канале — можно скачать и поставить себе.

Читать далее

Эволюция API без боли: ArchUnit, Gradle и правила для библиотек

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

В Netflix тысячи Java-репозиториев. Когда в библиотеку вносят изменение, часть пользователей может перестать собираться или начать работать некорректно. Чаще всгео эта проблема возникает потому, что public контракты являются public только для авторов библиотеки, а не для пользователей.

С новом переводе от команды Spring АйО разбираемся, как ребята из Netflix ввели простые метки для API: @Public - можно использовать снаружи, @Experimental - тоже можно, но интерфейс может меняться, @Deprecated - готовится к удалению. Все остальное считается внутренним и использованию извне не подлежит. Но сами аннотации проблему не решают, нужна проверка на масштабе.

Решение - ArchUnit + Nebula ArchRules. 

ArchUnit анализирует скомпилированный байткод, поэтому одинаково работает для Java/Kotlin/Scala и проверяет реальный код на classpath. Команды пишут правила (например: «вне пакета библиотеки нельзя зависеть от ее deprecated/internal API»), публикуют их как отдельный arch-rules JAR, а runner автоматически запускает проверки в репозиториях и делает отчеты с точной строкой нарушения.

Читать далее

Анатомия ИИ-трейдера: Как создать своего автономного ИИ-агента и зарабатывать на бирже

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

ИИ может торговать на бирже в плюс — и мы это проверили в ходе эксперимента на 6 моделях. Разбираем автономного ИИ-трейдера по косточкам — архитектура, инструменты, результаты запусков и готовый код. Запустите своего агента торговать на виртуальный капитал 3 млн рублей на «Финам Арене» уже сегодня — лучшим денежные призы.

Читать далее

Настраиваем CI/CD в GitHub для Python-проекта с нуля

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

Настройка CI/CD часто кажется новичкам чем-то сложным и доступным только DevOps-инженерам. На самом деле автоматизировать рутину Python-проекта можно всего за полчаса. В этой статье мы по шагам разберем, как с нуля настроить GitHub Actions для простого FastAPI-приложения: от автоматического запуска тестов и быстрого линтера Ruff до сборки Docker-образа и публикации его в Docker Hub.

Читать далее

Запах SELECT'а. Обнаружение CODE SMELL до отправки T-SQL кода на прод

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

Взгляд на экосистему SQL-разработки под MS SQL SERVER через призму контроля качества кода. Обзор существующих инструментов, описание самостоятельной наработки для линтинга T-SQL кода.

Читать далее

Кроссплатформенное приложение на Go руками PHP разработчика

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

В вакансиях на hh всё чаще встречаются требования: Go + Python, Go + PHP. Для веб-разработки python и php во многом похожи, и у меня уже был опыт работы с ними.

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

Читать далее

Можно ли вайбкодить на MacBook Neo: почти что настоящая разработка на самом дешевом ноутбуке Apple

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

Меня, наверное, сейчас поднимут на смех, но сам я и близко не разработчик. Вообще. Так, по-любительски пилю ботов для Telegram через Claude Code: пара вечеров, одна папка с проектом, и оно работает. И вот за этим занятием в какой-то момент возник простой вопрос: а на каком минимально возможном железе все это делать? Топовый MacBook Pro отпал сразу. Все-таки 300к за машину, на которой ты по выходным учишь нейросетку отвечать на стикеры — как-то жирновато. MacBook Air? Ну, возможно. А что если опуститься еще ниже и купить MacBook Neo? Звучит интересно. Но вот потянет ли?..

Читать далее

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

Я дал LLM писать unsafe Rust полгода. Miri плакал

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

Полгода я давал LLM писать unsafe Rust в боевых проектах и разбирал каждый блок под miri и санитайзерами. Категории ошибок, которые модели делают стабильно: aliasing, провенанс, layout в alloc/dealloc, забытый ManuallyDrop, гонки в FFI-колбэках, ручные Send/Sync, uninit-память, Pin. Каждая категория идёт с минимальным примером и фиксом.

Читать далее

Держим ИИ в узде. Как при разработке сложных продуктов обеспечить преемственность и масштабируемость проекта

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

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

Читать далее

Авторизация в Go без боли: как Casbin заменяет километры if-проверок

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

Пока в приложении две роли и три проверки, авторизация умещается в if user.Role == "admin". Но стоит добавить пару ресурсов, ролей и исключений — и условные проверки начинают расползаться по хендлерам, дублироваться и жить своей жизнью.

В этой статье разберём, как навести порядок с помощью Casbin: вынесем правила доступа из кода в конфиг, пройдём путь от простого ACL до RBAC с иерархией ролей, соберём HTTP-сервер на Go с авторизационной middleware и обсудим грабли, на которые легко наступить по дороге.

Читать далее

Зеленые потоки Celery. Gevent и Eventlet

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

Вторая статья цикла о внутрянке Celery: на этот раз — зелёные потоки (gevent/eventlet). Как gevent и eventlet работают под капотом Celery, что такое Hub, monkey patching и почему autoscale для гринлетов бесполезен. А ещё — неожиданный бенчмарк: prefork против gevent на одном ядре. Спойлер: gevent проигрывает, но не спешите его хоронить. Для тех, кто выбирает пул под свои задачи. А пойду готовить докер-селери-кубер-автоскейл.

Читать далее

Разбираем map, filter, reduce, any, all, zip и enumerate в Python

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

Все мы начинали писать на Python примерно одинаково: создавали пустой список, запускали цикл for, проверяли условие через if и делали .append(). Это надежно, предсказуемо, но по мере роста кодовой базы такие конструкции начинают утомлять — мы тратим 4-5 строк на банальную трансформацию данных, которую можно уложить в одну лаконичную строку.

В этой статье мы подробно разберем встроенный инструментарий Python для работы с итерируемыми объектами: map, filter, reduce, any, all, zip и enumerate.

Читать далее

Трое в лодке, нищета и собаки (с)

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

Недавно я был на отраслевой конференции, где встретил пару знакомых, с которыми начинал ещё в питерских студиях. В отличие от меня, который всегда работал на «дядю», они в какой-то момент выбрали тернистый путь создания инди, своих студий и (судя по тому, как они заказывали напитки) этот путь оказался значительно тернистее, чем выглядел десять лет назад. Хотя глаза у них горели ровно так же, как тогда. Что тогда, что сейчас эти горящие глаза одновременно вызывали и зависть, и лёгкое подозрение, что они просто не успели ещё по-настоящему устать.

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

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

Читать далее

3 ошибки при работе с dataclasses в Python

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

Dataclasses появились в Python 3.7 и быстро стали стандартом: меньше бойлерплейта, чем у обычных классов, проще, чем attrs, и не требуют зависимостей. Выглядят настолько просто, что кажется, что ломаться там нечему. Но у них есть три ловушки, которые не видны при написании.

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