Обновить
1024K+

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

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

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

Bus factor = 1: 22 критичные для индустрии библиотеки, которые держатся на одном человеке

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

Где-то прямо сейчас один программист не спит и патчит баг в библиотеке, от которой зависит половина интернета. Он делает это бесплатно. Его никто не знает. Если он уйдёт — никто не придёт.

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

Читать далее

Создаем ИИ‑модель для генерации музыки на базе Lakh MIDI Dataset

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

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

Для разработчика генерация музыки — это отличная практическая задача. Работать с сырым аудио (waveform) вычислительно тяжело и требует сложных архитектур, но при использовании формата MIDI задача сводится к обработке последовательностей. Это делает процесс похожим на работу с текстом в NLP: мы берем дискретные токены (ноты, аккорды, паузы), находим между ними связи и предсказываем следующие шаги. Главный плюс — результат обучения модели можно в буквальном смысле услышать.

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

Наш стек технологий:

Читать далее

LLM без поиска — генератор галлюцинаций. Как мы с этим справились при создании поиска по интранету

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

Меня зовут Дима Кирпа, я разработчик из команды ML Laboratory в Yandex Infrastructure. Четыре года я делаю внутренний поиск по корпоративному интранету Яндекса. Сегодня предлагаю ненадолго отложить судорожный тюнинг промптов и температуры LLM и окинуть внутренние корпоративные знания более широким взглядом. На примере опыта Яндекса я разберу процесс LLM‑изации интранета компании с самых азов. На время мы вернёмся в ламповый мир старого доброго фича‑инжиниринга, неспешно пройдёмся от настроек ранжирования к настройкам поискового контекста для LLM и увидим, как фичи поиска плавно перетекают в фичи генеративки. Напоследок убедимся, что всё не зря и наши разработки реально приносят пользу компании.

Я расскажу, как устроен бэкенд и ранжирование внутреннего поиска Яндекса, как на базе внутреннего поиска мы построили генеративную Q&A‑систему AI Chat. Покажу обоснования разных внедрений в виде чисел из реальных A/B‑экспериментов. Никакого хайпа, только факты. Цель статьи — доказать, что поиск — это база для корпоративных процессов обмена знаниями, а модель роста от поиска к агенту — самая эффективная.

Читать далее

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 проигрывает, но не спешите его хоронить. Для тех, кто выбирает пул под свои задачи. А пойду готовить докер-селери-кубер-автоскейл.

Читать далее