Обновить
1024K+

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

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

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

Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии

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

Привет Хабр! В нашем блоге кейс-пополнение. Дисклеймер: По причине соглашений о неразглашении (NDA) мы не всегда можем указать на конкретного заказчика, но стараемся описывать задачу проекта и ее решение максимально подробно. Сегодня рассказ про применение ИИ в российской металлургии. Итак, после предисловия перейдем к теме статьи.

Читать далее

Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1

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

Go-код никогда не исполняется напрямую.

Любая строка Go превращается в машинные инструкции, которые выполняет CPU.

В этой статье мы разберём:

1) Какие инструкции генерирует компилятор Go

2) Как выглядит Go assembler

3) И что на самом деле выполняет процессор

Думаю с обзором и общими положениями мы закончили, поэтому начнем с фундамента – что происходит в CPU когда мы запускаем наше Go-приложение. Конкретно в этой статье разберем основные инструкции, которые может выдать для нашего CPU компилятор Go, что они из себя представляют и как соотносятся с кодом Go. Сразу оговорюсь, что это НЕ гайд по Go Assembler, а разбор того, что из себя представляет Go End 2 End. Попытка докопаться до истины

Напомню, что сам CPU определяет:

Читать далее

Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг

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

Все началось пару месяцев назад, когда я всерьез увлекся темой автономных агентов. Если вы следите за индустрией, то наверняка слышали про ruflo — это мощнейший движок для оркестрации Claude Code. Он позволяет создавать настоящие «ульи» из агентов, которые сами пишут код, сами его проверяют и сами деплоят.

Но когда я попытался внедрить это в реальный проект, я столкнулся с суровой реальностью.

Читать далее

Разработка нового статического анализатора: PVS-Studio JavaScript

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

Вот уже 18 лет статический анализатор кода PVS-Studio находится на рынке. За это время он обзавёлся поддержкой языков C, C++, C# и Java. Разумеется, останавливаться на этих языках мы не планируем, и в этой статье расскажем про разработку нового JavaScript/TypeScript анализатора, который выйдет уже совсем скоро.

Читать далее

Деконструкция Go: модель памяти, happens-before и почему ваш код работает. Часть 0

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

Приветствую всех!

У меня было обилие мыслей на тему того, что можно сюда написать и решил разобраться в фундаменте мироустройства языков программирования. Копнуть в самую суть с разбором когда американских дедов(и их же репозиториев), которые вполне себе могли написать нечто и под знаменитым кукурузным XXX самогоном.

Решил я фундаментально разобрать то, как работает Golang, потому что в интернете(YT, Конфы и пр.), на мой взгляд, крайне много откровенно поверхностной и верхнеуровневой информации. Я, конечно, буду рад, если вы укорите меня в моих слабых навыках поиска и покажете мне, что реальность не такая, какой я её выдумал, но субъективно это так.

Разборы здесь будут скорее про то, что лежит в порождении сумрачного американского гения по ссылке github.com/golang/go с периодической синхронизацией с официальной документацией.

Моя главная цель – разобрать всё максимально исчерпывающе, насколько я это смогу.

Чтож, поехали!

Ах, да. В этом цикле не будет особо веселых рисуночков с гоферами, а скучные блок-схемы, диаграммы и вырезки из кода.

Структурная схема

Читать далее

Не общались напрямую. Как мы построили устойчивую связку Диадок-Битрикс24

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

Заходят как-то в бар Битрикс24 и Диадок — и быстро выясняется, что работать вместе им пока сложно. Битрикс24 отвечает за сделки и коммуникации, Диадок — за документы и статусы. А бизнесу нужна единая цепочка: документ появился в Диадоке — менеджер сразу видит его в CRM без переключений и ручных сверок.

Мы реализовали такую интеграцию с нуля. Настроили автоматическую передачу документов из Диадока в Битрикс24. Документы создают лиды, а статусы, файлы и история изменений отображаются в CRM.

Читать далее

Анализ технологии Denuvo

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

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

Я не стремлюсь нанести какой-либо ущерб Irdeto, поэтому часть информации была вырезана из поста.

Читать далее

Как мы перестали мерить качество ответов RAG-поиска «на глаз» и начали нормально сравнивать

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

Если вы делаете RAG-поиск по документации или базе знаний, то рано или поздно упираетесь в проблему: хорошо найти — это еще не хорошо ответить.

База знаний, RAG, найденные чанки, LLM строит ответ. Но пользователь не знает ни про DCG, ни про Recall@10, ни про чанки вообще. Он видит только то, что написано в итоговом ответе. А проблемы начинаются именно здесь: модель может что-то проигнорировать, ответить на другом языке, добавить что-то от себя или выдать уверенный текст с иероглифами посередине.

В прошлой статье мы разбирали, как улучшали сам retrieval: чанкование, метаданные, гибридный поиск, реранкинг. Но после того как с поиском более-менее разобрались, встал другой вопрос — как вообще понять, хороший ли ответ получает пользователь?

Привет, меня зовут Дима, я делаю ИИ-функции в Gramax. В этой статье расскажу, как мы выстроили методику оценки ответов RAG-поиска. Заодно поделюсь, какая модель прямо сейчас дает лучший результат на наших задачах.

Читать далее

«Большой взрыв ИИ»: из-за искусственного интеллекта компании перегружены кодом

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

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

Компания перешла от 25 000 строк кода в месяц к 250 000 строк. Это привело к накоплению миллиона строк кода, которые необходимо было проверить, рассказала Джони Клипперт, соучредитель и генеральный директор StackHawk, стартапа в сфере кибербезопасности, который сотрудничал с этой финансовой компанией.

«Огромный объём создаваемого кода и рост числа уязвимостей — это то, с чем они не могут справиться», — сказала она. А поскольку разработка программного обеспечения ускорилась, это заставило отделы продаж, маркетинга, поддержки клиентов и другие подразделения тоже ускориться, добавила Клипперт, что создало «огромный стресс».

Читать далее

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

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

Всем привет! Меня зовут Егор Ермаков, я бэкенд‑разработчик в группе разработки процессинга Техплатформы городских сервисов Яндекса.

Техплатформа — это инфраструктурная платформа для всех городских сервисов Яндекса: Такси, Еды, Лавки, Доставки, а также для различных шеринговых сервисов — каршеринга, зарядных станций, самокатов и других.

Один из ключевых сервисов нашей команды — ProcaaS (Processing as a Service). Он предназначен для асинхронного выполнения динамических сценариев. Подробнее о самом сервисе, его архитектуре и роли в сетке микросервисов Такси мы рассказывали в предыдущей статье. В этом материале я хочу поделиться опытом решения одной непростой и при этом очень интересной технической задачи, с которой мы столкнулись в рамках развития ProcaaS, а именно — рассказать, как мы написали свой транслятор кода.

Читать далее

Программисты опять не как все, даже выгорают по-особенному — разбираемся почему

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

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

В этой статье мы не будем зацикливаться на важности тайм-менеджмента, хобби и отказа от думскроллинга (хотя это тоже важно). Вместо этого посмотрим, какие факторы действительно запускают выгорание у представителей ИТ-профессий, как переработки усугубляют ситуацию и что можно сделать на уровне команды, компании и личных границ.

Читать далее

Claude Mythos, Java 26 и пещерный человек с 16 000 звёзд на GitHub

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

Девятый выпуск еженедельных IT-новостей от OpenIDE.

Милла Йовович выложила свой проект в open-source, Claude Code нашел баг в Linux, которому 23 года, Anthropic показали Claude Mythos и сразу закрыли доступ.

А Skill Caveman внезапно оказался самым простым и самым эффективным инструментом недели.

Читать далее

Как написать собственную версию Traceroute

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

Я никогда не понимал, как именно traceroute обнаруживает каждый сетевой переход. Оказывается, всё дело в хитром трюке с TTL и примерно в 80 строках на Rust.

Читать далее

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

USB для разработчиков ПО: введение в создание драйверов

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

Представьте: вам дали USB-устройство и попросили написать для него драйвер. Поначалу эта задача кажется пугающей, правда? Для создания драйверов нужно писать код ядра, а код ядра сложный и низкоуровневый, его трудно отлаживать и так далее.

Однако всё это неправда. На самом деле, написание драйвера для USB-устройства не намного сложнее, чем написание приложения, использующего Sockets.

Этот пост будет высокоуровневым введением в использование USB для разработчиков, мало работавших с оборудованием и просто желающих применить эту технологию. Существуют потрясающие ресурсы наподобие USB in a NutShell, подробно объясняющие работу USB (изучите их, если вам нужна дополнительная информация), но они довольно сложны для тех, кто раньше ни разу не работал с USB и не имеет опыта в сфере «железа». Чтобы пользоваться USB, не нужно быть разработчиком встраиваемых систем; точно так же, как не нужно быть специалистом по сетям для использования Sockets и Интернета.

Читать далее

Компиляторы тоже путаются в именах

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

Это продолжение темы начатой в статье Важны ли компилятору имена, и продолженой в Ночью все кошки серы, а using'и одинаковы, и если вам нужна полная картина, как компилятор превращает текст в программу, то без понимания поиска имён (name lookup) дальше двигаться уже не получится.

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

C++ в этом месте особенно коварен. Язык рос десятилетиями, и правила поиска имён эволюционировали вместе с ним: добавлялись пространства имён, шаблоны, ADL, двухфазный поиск. Всё это не просто усложнило модель, оно сделало её местами неинтуитивной даже для опытных разработчиков, добавим сюда еще, что разные компиляторы исторически реализовывали эти правила (по-своему) по-разному, и часть этих различий до сих пор всплывает в коде.

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

Какой-то странный, этот ваш с++

Что такое Harness? Полный разбор на примере Claude Code, OpenAI и LangChain

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

Глубокий разбор того, что на самом деле строят Anthropic, OpenAI, Perplexity и LangChain. Оркестрационный цикл, инструменты, память, управление контекстом — и всё остальное, что превращает stateless LLM в работающего агента.

Допустим, вы собрали чатбот. Может, даже прикрутили ReAct-цикл с несколькими инструментами. На демо работает. Но стоит попробовать сделать что-то production-grade — и всё начинает сыпаться: модель забывает, что делала три шага назад, вызовы инструментов падают без ошибок, контекстное окно забивается мусором.

Проблема не в модели. Проблема во всём, что её окружает.

LangChain это доказал: изменив только инфраструктуру вокруг LLM (та же модель, те же веса), они поднялись с позиции за пределами топ-30 на 5-е место в TerminalBench 2.0. В отдельном исследовательском проекте LLM оптимизировал саму инфраструктуру и достиг 76,4% pass rate, превзойдя системы, спроектированные вручную.

У этой инфраструктуры теперь есть название: agent harness (агентный харнесс).

Читать далее

Ставим Claude Code на Windows как профессионалы

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

У нас в команде AWS 9 человек — решения в AWS, 150+ аккаунтов в AWS Organizations. Один из нас работает на macOS, шестеро на Linux, двое на Windows (включая меня).

За год работы с Claude Code выработались правила: как поставить и что настроить. Правила менялись по мере выхода новых версий — появлялись новые возможности, отваливались старые костыли. Этот документ отражает актуальное состояние на апрель 2026.

На Linux не пересаживаюсь намеренно. Мои Windows-компетенции в команде востребованы: я единственный, кто имеет солидный опыт с Microsoft, кто отладит Lambda-парсер для обработки Windows Events, кто напишет и будет поддерживать большой PowerShell скрипт или SSM-документ с ним.

Claude Code у меня под Windows должен работать без ошибок и с максимально возможной производительностью, несмотря на то, что большую часть времени я работаю на linux-специфичное окружение.

Читать далее

Пробуем на себе: LLM в разработке

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

Рассказываю о реальном опыте использования AI в разработке и о тех практических результатах, которых удалось добиться за один год регулярной работы с современными языковыми моделями. Спойлер: получилось многое, но не все.

Читать далее

Как я сократил рабочий день до 4 часов и вырос в должности

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

Год назад я начал работать по 4 часа в день. Работал на обычной позиции Android-разработчика в продуктовой компании. При этом на performance review получал повышенные оценки и вырос в должности. Сейчас я сеньор в крупном Бигтехе и исполняю обязанности лида платформы.

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

Читать далее

Промпты для DeepSeek: как писать запросы, чтобы получить максимум от бесплатной нейросети

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

DeepSeek — бесплатная нейросеть уровня GPT-5, но большинство используют её как «бесплатный ChatGPT». Собрал промпты, которые выжимают максимум: код-ревью без придирок к стилю, дебаг по стектрейсу, архитектурные решения в DeepThink, structured output из хаоса. Готовые шаблоны для копипасты + правила, которые работают для любого промпта.

Читать далее