Все потоки
Поиск
Написать публикацию
Обновить

Разработка

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

Как я пытался подружить PHP с NER — драма в 5 актах

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

Это статья — пример небольшого личного опыта, где я пытался решить одну чисто техническую задачу для одного из моих текущих проектов. Задача в конце‑концов была решена, насколько правильно — не знаю, но надеюсь многим будет интересен и полезен мой опыт. Итак, небольшая драма в 5-ти актах.

Читать далее

Не просто RAG: Строим MCP-сервер на Node.js, чтобы дать LLM «архитектурное зрение»

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

Привет, Хабр! Мы живем в удивительное время. Попросить LLM написать для нас код стало так же естественно, как гуглить ошибку. Но у этой магии есть предел. Попросите модель написать quickSort, и она справится блестяще. А теперь попросите ее: «Добавь метрики Prometheus в метод processOrder в нашем проекте».

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

Стандартный RAG (Retrieval-Augmented Generation) — это как дать стажеру доступ к одному файлу. Полезно, но картину целиком он все равно не увидит. А что, если мы могли бы дать ему не просто файл, а полный доступ к знаниям тимлида-архитектора? Что, если бы LLM могла видеть не просто строки кода, а всю паутину связей, зависимостей и паттернов вашего проекта?

Сегодня я расскажу о проекте code-graph-rag-mcp — это не просто очередной RAG-пайплайн. Это полноценный MCP-сервер, который строит граф знаний вашего кода и дает LLM «архитектурное зрение», превращая ее из простого кодера в настоящего цифрового ассистента.

Читать далее

Барьерные токены: Мощное расширение парсеров для работы с отступами языков Python и YAML

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

Сегодня я расскажу, как из-за случайной встречи с ANTLR я создал RCParsing, библиотеку на C# для парсинга практически любого вида синтаксиса, поддерживающую парсинг отступов из коробки. Мы разберемся, как работают разные алгоритмы парсинга и чем отличается тот, что используется у меня. Также я закину пример кода для парсинга упрощенного YAML с использованием моей библиотеки.

Читать далее

Дженерики в Python, простыми словами

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

Если вы только начинаете изучать Python и слышите слово дженерики, скорее всего в голове сразу каша: «что это вообще такое?». На самом деле дженерики - это очень простая идея. Представьте, что у вас есть коробка. В коробку можно положить игрушки, яблоки, книжки - всё что угодно.

Но иногда вы хотите, чтобы в коробке лежали только яблоки. А иногда - только игрушки. И вот тут вам помогают generics.

Читать далее

Прячемся в «пещере кода»

Время на прочтение6 мин
Количество просмотров2.1K

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

Но это вовсе не значит, что в выполнимые файлы нельзя вносить изменения. Если мы корректно заменим один или несколько байтов, приложение не перестанет работать, но его логика может измениться. Например, как мы все знаем по крякам, что программу можно отучить от жадности, просто заменив одну инструкцию условного перехода на безусловный. Да, контрольная сумма изменится, но кто ее проверяет?

Читать далее

Как QE США и Запреты Китая Сформировали Потоки Капитала. Великий Криптовалютный Передел

Время на прочтение8 мин
Количество просмотров2.3K

Период 2020–2021 годов характеризовался двумя на первый взгляд разнонаправленными, но синхронными процессами. С одной стороны, Федеральная резервная система США инициировала беспрецедентную по масштабам программу количественного смягчения (QE), что привело к экспоненциальному росту денежной массы и притоку ликвидности на финансовые рынки. С другой стороны, Народный банк Китая и другие регуляторы КНР последовательно ужесточали политику в отношении криптовалют, кульминацией чего стал полный запрет на майнинг и транзакции в 2021 году.

Читать далее

Эмоции на длинной дистанции: как ИИ учится быть эмпатичным

Время на прочтение3 мин
Количество просмотров625

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

Читать далее

Покраска Cтека (Stack Painting)

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

В процессорах ARM Cortex‑M стек растет от большего адреса к меньшему. То есть вниз. В этом тексте я написал как оценивать расходование стековой памяти прямо во время исполнения программы на микроконтроллере. Считать израсходованный стек можно определив соотношение непрерывно прописанных нулей к ненулевым значениям в диапазоне стековой памяти.

Читать далее

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

Время на прочтение11 мин
Количество просмотров58K

Хочу поделиться своим опытом разработки крупных игровых проектов на C++, где производительность и стабильность — это не просто приятные бонусы, а абсолютно естественные требования к разработке. За годы работы над движками и играми я понял, что подход к управлению памятью очень сильно влияет на весь проект. В отличие от многих приложений - игры, особенно большие, часто работают часами без прерываний и должны поддерживать стабильный фреймрейт и отзывчивость. Когда проседание fps или фриз происходит на глазах у сотен тысяч игроков, вам уже никто не поможет — ущерб уже нанесен, а в steam полетели отзывы о кривизне рук разработчиков.

Однажды моя команда закончила работу над довольно интересным проектом, который портировали больше двух лет на плойку. Движок старый, большой и мощный, но работа с памятью была ориентирована на ПК времен конца 2000-х, и что меня поразило, так это насколько сильно большая часть кодовой базы зависела от динамической памяти во время выполнения. На ограниченном железе (далеко не у всех есть PS5 pro) и в условиях жёстких требований к сертификации на консолях такие решения быстро превращаются в проблему.

В разработке для консолей (про мобильные устройства я молчу, потому что игра не влезает по памяти даже в восемь гигов) с ограниченными ресурсами, архитектура с частыми аллокациями не просто неэффективна — она становится реальной угрозой для стабильности проекта. Каждое выделение памяти в куче влечёт за собой накладные расходы: это дополнительные !миллисекунды! (в целом на кадре) задержки, риск большой фрагментации памяти, и непредсказуемое поведение в долгой игровой сессии. После двух часов игры постоянные операции с кучей буквально «сжигают» половину бюджета кадра.

Читать далее

Развитие интеллектуальных помощников в центрах кибербезопасности

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров835

Всем привет! Я работаю инженером-разработчиком в STEP LOGIC. Наша команда создает технологическую платформу для автоматизации анализа данных и расследования инцидентов STEP Security Data Lake (SDL). Мы были первыми на российском рынке, кто смог внедрить AI-ассистента в SIEM/SOAR. Поэтому в этой статье я хотел бы поразмышлять о перспективах развития и особенностях применения интеллектуальных помощников в системах мониторинга кибербезопасности.

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

Читать далее

PHP: Общая память

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

Хочется быстрый кеш или общение между процессами? Хочется использовать фишки long-running PHP, но без long-running?

Давайте разберёмся, как работать прямо с оперативной памятью: от System V до MapViewOfFile; От shmop до FFI.

Расшарить оперативу

Lens Blur Fields: нейросетевая ФРТ на службе улучшения фотографий и идентификации камеры

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

Оптическое размытие — обобщающий термин для различных факторов деградации изображения, таких как расфокусировка, дифракция и аберрации. Математически оно описывается функцией рассеяния точки. Форма ФРТ, как правило, пространственно-вариантна и зависит от координат в поле изображения, настройки фокуса, расстояния до объекта (глубины резкости), апертуры и длины волны. Поэтому любые попытки точно описать размытие реальной камеры сталкиваются с необходимостью измерять слишком большое количество параметров, что на практике выполнить почти невозможно.

Метод Lens Blur Fields предлагает новое решение: использовать многослойные перцептроны, которые обучаются представлять ФРТ в виде непрерывной функции высокой размерности (arXiv:2310.11535). Такая модель способна обобщать по всем параметрам сразу и восстанавливать плавные изменения ФРТ вместо того, чтобы хранить её в виде разрозненной таблицы замеров.

В теории это значит, что метод Lens Blur Fields позволит не только сделать очередной красивый фильтр с боке, но и различать экземпляры камер по снимкам с них.

Читать далее

Доверенный open source в российских продуктах: фантазия или рабочая цель?

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров800

Всем привет!

Сегодня представляем нового эксперта в нашей команде: Дмитрий Белков, руководитель консалтинга Application Security ГК «Солар». В своей первой колонке для Habr Дмитрий оценил вероятность появления доверенного open source и поделился своим мнением о процессах в основе безопасной разработки. Поехали!

Open source дал разработчикам главное — скорость и гибкость. Сторонние библиотеки ускоряют вывод релизов, снижают стоимость лицензий, расширяют функциональность. Но вместе с удобством пришли и угрозы: атаки через зависимости, бэкдоры, эксплойты. Мы все помним Log4j и OpenSSL: когда до 80% библиотек остаются не обновленными, отсутствие контроля зависимостей становится системным риском.

Может ли на этом фоне появиться доверенный open source — открытые компоненты, которые можно использовать без компромиссов по безопасности? Да. Но важно договориться о критериях и инфраструктуре.

Читать далее

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

USBODE: самодельный аналог «кармана» IODD / Zalman

Время на прочтение5 мин
Количество просмотров5K

Часто ли вам приходится переустанавливать операционную систему? Обычный пользователь на этот вопрос, скорее всего, ответит что-то вроде: «раз в пару лет». Кто-то вообще годами сидит на одной и той же, собирая всяческие глюки. Но есть и те, кто делает эту операцию каждый день. Например, системные администраторы и инженеры ЦОДов.

Именно для этой категории людей южнокорейская компания IODD придумала очень удобные устройства — эмуляторы оптического привода (их еще часто называют «карманами»). Стоит лишь залить нужные ISO-образы дисков в специально выделенную директорию, и девайс сможет прикидываться CD/DVD-приводом, подключенным по USB. Такие гаджеты делает и Zalman, а на Хабре мы уже писали про их особенности.

Во всем этом есть только одна проблема. Цена хорошего «кармана» сейчас от 80 до 100 $. Да и найти его довольно сложно — нишевая штука. Но если вы обладатель Raspberry Pi Zero W, то его можно превратить в такой девайс, к тому же более продвинутый и кастомизируемый.

Читать далее

Часть 1. Rsync: подробное руководство для админов

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

Привет, Хабр! В арсенале системного администратора и разработчика есть множество инструментов для переноса данных. Мы копируем файлы десятки раз в день: cp для локальных копий, scp для удалённых серверов. Но что если задача сложнее? Нужно не просто скопировать, а синхронизировать два дерева файлов, дёргая по сети лишь изменившиеся данные? Или поддерживать в актуальном состоянии зеркало веб‑контента?

О чём эта статья?
— Фундамент: как правильно путями в rsync и почему слеш в конце решает всё;
— Два основных режима работы: локально, с сервером;
— Разбор флага -a: что скрывается под капотом; — Главные опции: как сделать вывод подробным, а работу — безопасной; — Синхронизация поверх SSH: работа с нестандартными портами; — Самые опасные «грабли» и как их избежать.

Читать далее

Квантовые компьютеры: патентный анализ за 20 лет

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

Квантовый компьютер — вычислительное устройство, которое использует явления квантовой механики (квантовая суперпозиция, квантовая запутанность) для хранения, передачи и обработки данных. Квантовый компьютер (в отличие от классического) оперирует не битами (способными принимать значение либо 0, либо 1), а кубитами, значения которых представляют собой вектор — суперпозицию 0 и 1. Теоретически это позволяет обрабатывать все возможные состояния одновременно, достигая существенного преимущества (квантового превосходства) над обычными компьютерами в ряде алгоритмов. В этой статье мы рассмотрим, что творилось с патентами на квантовые компьютеры за последние 20 лет. 

Читать далее

DOOH и RTB: как Russ развивает программатические закупки в наружной рекламе

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров714

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

Читать далее

Не LLM едиными: генерируем юнит-тесты из реального исполнения на лету

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

Представьте себе: вы отлаживаете новый баг в сложном многослойном приложении (например, на Spring). Чтобы воспроизвести проблему, приходится взаимодействовать со всей системой end-to-end: отправлять запрос на эндпоинт или что-то кликать в UI. Юнит-теста, который бы изолировал нежелательное поведение до уровня злополучного сервиса или утилиты, нет. А хотелось бы, чтобы он был: во-первых, воспроизводить баг было бы проще (особенно если UI кликает QA, а не вы), а во-вторых, его потом можно было бы легко превратить в регрессионный и улучшить стабильность системы.

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

Сегодня расскажу о пройденном исследовательском пути, о том, как попробовать нашу экспериментальную фичу в плагине для IntelliJ IDEA, и о том, что у неё под капотом (спойлер: не только LLM).

Читать далее

Self-modifying SQL: динамическое изменение SQL-кода в процессе выполнения

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

Self-modifying SQL — это техника, при которой SQL-запросы не просто выполняют фиксированную операцию, а генерируют, изменяют и выполняют другие SQL-запросы во время работы приложения. Эта концепция может показаться экзотической и даже спорной, но в определённых сценариях она позволяет создать гибкие, адаптивные решения для динамического управления базой данных.

Эта статья предназначена для разработчиков всех уровней: от начинающих, которые хотят понять основы динамического SQL, до продвинутых специалистов, интересующихся нетривиальными приёмами и автоматизацией управления данными.

Читать далее

История создания Tarantool DB: реальные проблемы, удачные решения и превращение проекта в продукт

Время на прочтение9 мин
Количество просмотров2.5K

Два года назад все началось с первого коммита и туманного понимания, что мы вообще хотим сделать. Сегодня — два мажорных релиза, собственный модуль миграций, документация, тренинги и пользователи, которые безболезненно перешли на новую версию по нашим инструкциям. Но путь от «кучи кода для внутреннего использования» до полноценной коробочной In-memory-базы оказался совсем не прямым. 

Меня зовут Александр Кленов, я тимлид разработки Tarantool DB в команде Tarantool. Я расскажу историю о том, как мы брали зрелый, но очень гибкий Tarantool Enterprise и превращали его в решение, которое можно установить из коробки.

Читать далее