Обновить
1024K+

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

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

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

Властелин корзин: две вкладки и один Redis (часть 4)

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

Привет, Хабр! Это снова Алиса из сериала про Laravel рядом с Битриксом.  В первой части мы аккуратно подселили Laravel к Битриксу. Во второй — растащили события, авторизацию и тяжелую логику по нормальным сервисам, а в третьей — перестали мучить каталог SQL-запросами и отдали поиск OpenSearch.

Теперь добрались до места, где любой e-commerce начинает показывать характер: корзина и расчет заказа. Это каталог может тормозить незаметно. А вот если корзина начинает чудить — это уже чувствует бюджет.

Читать далее

Разработка аппаратной платформы для соревнований по Embedded программированию

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

Предыстория

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

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

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

«Long story short…»

Превратили настолку в цифровую игру на ̶U̶n̶i̶t̶y̶ Godot

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

Ambush! — быстрая дуэльная игра о боевых построениях и захвате фишек противника. Когда-то один из членов нашей команды создал настольную версию этой игры, а в рамках студенческого проекта в ФИИТ мы решили превратить её в полноценную компьютерную с мультиплеером. Рассказываем, почему выбрали не Unity, а Godot, что учились делать впервые без опыта и с какими проблемами столкнулись.

Читать далее

Как я собрал кубик Рубика в браузере на чистом Canvas

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

Недавно я увидел видео, где маленький мальчик собирает кубик Рубика за 2,76 секунды (вот оно), и мне тоже захотелось научиться его собирать. Конечно, не за такое время, но главное — суметь сложить хотя бы за 10 минут. Главная проблема в том, что кубика у меня нет; можно купить, но это как-то скучно, на троечку. Поэтому я подумал: а почему бы не написать за выходные простой код, чтобы побыстрее посмотреть и покрутить кубик, а потом уже можно и купить. Заодно и разберусь, где что находится у кубика.

Читать далее

NOT IN — не противоположность IN: что в запросе ломает один NULL

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

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

В этой статье разберём классическую ловушку NOT IN: почему один NULL в подзапросе может «отравить» всю выборку, чем IN на самом деле отличается от NOT IN и почему в таких случаях безопаснее писать через NOT EXISTS.

Читать далее

eBPF для начинающих: практическое введение

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

Современные инструменты мониторинга (Prometheus, Grafana, профилировщики) обеспечивают хорошую видимость состояния приложения, но имеют ограничения при анализе низкоуровневых проблем. Технология eBPF (Extended Berkeley Packet Filter) позволяет преодолеть этот барьер, предоставляя безопасный доступ к событиям ядра Linux. 

Статья — это практическое введение в eBPF: попробуем готовые команды для наблюдаемости, сети и безопасности, разберём, как программа попадает в ядро и взаимодействует с user-space через maps и helpers, почему верификатор отклоняет «опасный» код и чем отличаются BCC, libbpf и bpftrace. В конце — короткий обзор того, как eBPF используют Cilium, Falco и Pixie.

Материал будет полезен программистам, DevOps-инженерам, SRE-специалистам и всем, кто интересуется Linux.

Читать далее

Как стартер-кит может стать стандартом разработки

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

6-я статья из цикла туториалов о кастомизации своего бизнес-портала в Битрикс24.

Во всех наших туториалах мы опираемся на стартовый шаблон-репозиторий AI-starter-kit: https://github.com/bitrix-tools/b24-ai-starter. Это подготовленная для ИИ-ассистированной разработки база, которую удобно довести до работающего приложения с нужными функциями.

Сегодня рассказываем, почему ещё стартер-кит упрощает создание приложений и почему он может стать стандартом разработки.

Что есть в других статьях на сегодня: 
1. Пишем первое приложение с AI-стартером, чтобы видеть прибыли и убытки
2. Добавляем в бизнес-портал Битрикс24 роботов для автоматизации
3. Что даёт воспроизводимая среда разработки и как развернуть контейнеры на VPS 
4. Анализ и модернизация коннектора баз данных с помощью AI-агентов
5. Создание чат-бота в портале Битрикс24 с помощью AI-агентов 
6. Как стартер-кит может стать стандартом разработки (вы здесь)

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

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

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

Меня зовут Дима Кирпа, я разработчик из команды 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 мин
Охват и читатели34K

О, вам нравится 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 мин
Охват и читатели10K

В 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 мин
Охват и читатели18K

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

Читать далее

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

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

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

Читать далее