Обновить
1024K+

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

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

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

SAX-парсинг больших XML в Free Pascal: разбираем OpenCorpora без переполнения памяти

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

Разбор XML казался тривиальной задачей — пока я не попытался загрузить словарь OpenCorpora объёмом свыше 400 МБ через стандартный DOM-парсер. Дерево документа строилось бесконечно долго, потребление памяти росло без остановки, а до обработки данных дело так и не доходило.
Решением оказался SAX-парсинг, давно присутствующий в стандартной библиотеке Free Pascal, но почти не встречающийся в актуальных примерах и туториалах. В статье разбираю, как устроена событийная модель разбора XML, почему она принципиально экономичнее DOM для больших файлов, и как на её основе был построен парсер словаря OpenCorpora для экспериментальной библиотеки.

Читать далее

Rust в высоконагруженной видеоаналитике: кейс «Фалькон Тех»

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

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

Именно поэтому всё больше команд, разрабатывающих высоконагруженные системы видеоаналитики, рассматривают Rust как альтернативу языкам с ручным управлением памятью (C/C++) — как минимум для критических компонентов, где важны предсказуемое время отклика и исключение ошибок работы с памятью.

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

При подготовке статьи комментариями поделился Антон Половихин, руководитель команды разработки сервисов локального комплекса в «Фалькон Тех». Он ответил на вопросы по работе с Rust в высоконагруженных бэкенд-системах и помог уточнить технические детали.

Читать далее

NVMe выдаёт 600 000 записей в секунду, а база коммитит 180

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

NVMe показывает сотни тысяч IOPS, а база упирается в пару сотен коммитов в секунду — знакомая ситуация, если ориентироваться на обычные тесты записи.

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

Читать разбор

Как Omit {T, K} растворил типы, или что такое дистрибутивность типов в TypeScript

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

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

Меня зовут Денис Платонов, я старший разработчик интерфейсов в Телемосте и я отвечаю за on-premise развёртывание веб-клиента Телемоста в инфраструктуре заказчика. В этой статье я расскажу о том, как безобидный на первый взгляд Omit превратил наш аккуратный тип событий в пустой объект. Заодно разберём, как работает дистрибутивность типов в TypeScript и поделимся, чему нас научил этот кейс.

Читать далее

Безопасность, инструменты разработчика и проекты с ИИ — популярные решения в Базе знаний Инфостарт

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

В новой подборке - пять практических материалов для разработчиков и специалистов по 1С. Разбираем безопасность хранения паролей СУБД, исправление проблем с DPI в конфигураторе, инструменты для точной вёрстки печатных форм и удобной работы со скриншотами.

А ещё - история создания pet-проекта «Домашний помощник»: от идеи, предложенной ИИ, до готовой подсистемы на 1С:Предприятие 8.5. Если интересны практические решения, небольшие инструменты и опыт их создания - выбирайте материал по теме и читайте.

Читать далее

Второй фактор, который жил в чужой странице: как я выбросил WebAuthn из своего сервиса ключей

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

Мы храним зашифрованные данные, и рядом с ними лежат ключи, которые к этим данным не подходят. Выглядит как расстройство для взломщика.

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

Читать далее

Три месяца с Claude: хороший ассистент, плохой программист

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

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

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

Узнать подробнее

Семантического поиска оказалось мало. Как я научил Obsidian находить похожие заметки

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

В прошлой статье я рассказывал, как добавил в Obsidian локальный семантический индекс. Сам проект развивается открыто, код лежит здесь:

GitHub: https://github.com/zinverno/obsidian-ai-hub

С тех пор semantic-слой заметно вырос. Появились автоматическая синхронизация индекса, Similar Notes и поиск потенциальных дублей. В какой-то момент стало понятно, что сам по себе семантический поиск решает только половину задачи.

Базовая схема у меня была такой:

Читать далее

Ни строчки руками: как я вайбкодил AI-мастера D&D и что показали два месяца открытой беты

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

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

Мне есть, что сказать...

Как совмещать работу и учёбу: кейс студентки онлайн-магистратуры ИТМО в партнёрстве с Яндексом

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

Привет, меня зовут Кристина Меликова, я учусь в онлайн-магистратуре ИТМО в партнёрстве с Яндексом на программе «Фронтенд и бэкенд-разработка» и работаю бэкенд-разработчиком в компании YADRO. До того, как пойти в сферу IT, я уже успела получить другое высшее образование, но решила переквалифицироваться. В статье расскажу, как проходит обучение в онлайн-магистратуре и как я совмещаю его с работой по специальности.

Читать далее

Деградация безопасности при итеративной генерации кода с помощью ИИ (краткое изложение исследования)

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

Что будет, если навайбкодить всякое, а потом внимательно посмотреть, что это мы натворили и насколько оно ужасно? Пора ли увольнять мясных программистов, или пора отменять подписку и нанимать мясных, чтобы они все исправили, пока не поздно?

Краткое изложение исследования с конференции IEEE-ISTAS 2025 о том, как LLMки пишут уязвимый код. Возможно вы замечали, что ИИ очень бодро начинает любой проект, быстро делает какой-то MVP, и даже код получается хороший, аккуратный, безопасный. Но через сколько-то шагов начинается кошмар. Вот внимательный разбор этого кошмара.

Открыть врата ужаса

Конфигурация в Python: эволюция подходов

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

Привет, я Николай Видов, тимлид команды чат-ботов в Т-Банке, восемь лет пишу на Python. 

Казалось бы, конфигурация — это просто .env и settings.py. Но стоит приложению вырасти — и начинается: секреты утекают в логи, port внезапно приходит строкой abc, настройки дублируются между окружениями. Я прошел путь от хардкода до типизированных схем и понял: конфигурация — это не мусорный код на скорую руку, а часть инфраструктуры, которую нужно проектировать так же тщательно, как бизнес-логику.

В статье — эволюция подходов к конфигурации в Python: откуда мы пришли, куда идем и какие грабли встречаем на пути. Разберу, как в Python-проектах обычно подходят к управлению конфигурацией. Сравнения конкретных библиотек не будет — сосредоточусь на самих подходах и границах их применимости.

Читать далее

Проверка субъекта на входе как часть AML

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

Постоянно меняющиеся требования со стороны Центробанка и Росфинмониторинга заставляют финансовые организации уделять пристальное внимание своим клиентам с точки зрения их благонадежности. Каждый день производится ряд проверок, позволяющих оценить риски обслуживания организаций и физических лиц. В связи с этим появилась необходимость не просто автоматизировать данный процесс, но как-то его систематизировать и сделать удобным для сопровождения.

Читать далее

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

Утверждение «Код — это не самое сложное» оскорбляет всех программистов

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

Сегодня профессия разработчика ПО находится в эпицентре потрясений. Никто не знает, к чему нас приведёт ИИ-революция, но ясно одно — многие аспекты работы и повседневной жизни изменятся, в том числе программирование.

В последнее время я часто слышу утверждения, которые сводятся к двум основным идеям: «LLM могут хорошо писать код, но программная часть никогда не являлась самой сложной» и «Программировать легко — сложно понять, что именно требуется напрограммировать».

Как по мне, так это явное оскорбление для всех программистов.

Читать далее

Как собрать AI-контур на VPS: подписки ChatGPT и Claude, OmniRoute, LiteLLM и разработка без VPN

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

Пошагово собираем собственный AI-контур на VPS c зарубежным IP: подключаем ChatGPT и Claude через OmniRoute, объединяем модели в LiteLLM и настраиваем Codex, Qwen Code и VS Code для работы без VPN.

Читать далее

Сервер стал вдвое мощнее, а хвост задержек вырос втрое

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

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

Читать разбор

«Эй, агент, исправь мой билд». Строим первую линию техподдержки на n8n. Часть 3

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

Привет! Мы в шаге от выпуска новой версии нашей игры. Число изменений в сервисах и инфраструктуре выросло кратно, все хотят уложиться в дедлайны. Каналы с алертами напоминают Красное море, а в канале поддержки всем не терпится узнать, почему упал билд, — и, конечно, немедленно его починить.

С диагностикой нам уже помогает агент из первой и второй частей — но это только полдела. Дальше начинается самое муторное: инженер должен понять, где именно нужно внести изменения, оценить, сможет ли он сделать их сам или тут нужен разработчик, найти нужный репозиторий среди десятков похожих, внести правку, прогнать её через PR и ревью. В релизный кранч эти «ещё пятнадцать минут» на каждое обращение складываются в часы, а переключение контекста добивает остатки концентрации. Знакомо? У нас это выглядело так: агент за две минуты выдаёт диагноз «в workflow не передаётся input окружения», а потом инженер ещё полчаса ищет, в каком из реюзабельных workflow это чинить.

Именно поэтому мы решили пойти дальше и дать возможность просто сказать:

Эй, агент, исправь мой билд

Память агента без вектор-БД: 363 markdown-файла вместо эмбеддингов

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

У меня восемь агентов с постоянной памятью: больше 360 файлов, около 1,4 МБ текста. Векторной базы нет ни одной, эмбеддинги я не считаю вообще. И это не “руки не дошли”: вопрос про вектор-БД я поднимал трижды, каждый раз с конкретным кандидатом на внедрение, и каждый раз закрывал его отказом.

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

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

Читать далее

Как PHP превратился в героя мемов и пережил все свои «похороны»

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

Если бы в интернете вручали премию за количество мемов, в финал наверняка вышли бы Леонардо ДиКаприо, коты с осуждающим взглядом и язык PHP. Над последним разработчики шутят уже столько лет, что фразу «я пишу на PHP» лучше говорить шепотом или не говорить вовсе.

При этом язык, который регулярно объявляют мертвым, продолжает получать новые версии, обслуживать миллионы сайтов и оставаться востребованным в веб-разработке. Как появился PHP, чем он заслужил плохую репутацию и почему до сих пор не исчез — рассказываем в этой статье.

Читать далее

Пересекая реку Стикс: Spring Boot 3.5 и проблема зомби-зависимостей

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

Недавно я разбирал истории CVE, связанные с завершением поддержки Tomcat 8.5, и решил посмотреть на Spring Boot 3.5. Я задался тем же вопросом применительно к Spring Boot: что происходит с уровнем защищённости приложения, когда используемая версия достигает End Of Life (EOL)?

Читать далее