Обновить
512K+

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

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

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

Бенчмаркая сортировку строк: подстава с дефолтным компаратором — ×5

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

Сортировка строк без компаратора работает не так, как кажется, и заметно дольше.

Замерил на четырёх машинах и четырёх рантаймах, посчитал обращения к компаратору и заглянул в исходники.

Читать далее

Режим инкогнито и очистка cookie: почему сайт всё равно узнаёт, что это снова вы

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

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

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

Читать далее

Часть I. Знакомство с UNO. Как синтаксическая типизация стала основой нового языка разметки

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

Вспомните себя в те времена, когда вы только знакомились с информационными технологиями. Что вы чувствовали, начиная работать с XML, JSON, TOML, YAML и другими языками разметки?

Лично мне поначалу было крайне сложно работать с HTML, особенно без подсветки. Позже пришлось разбираться с кавычками и скобками JSON, которые виделись мне сущим кошмаром. Впоследствии я осознал гениальность этих языков, но осадочек остался. Поэтому время от времени я возвращался к мысли о создании понятной для человека языка Универсальной Нотации Объектов. И получилось. Познакомьтесь, пожалуйста, это UNO — и ваше участие в его развитии будет весьма полезно.

Как появился UNO

Однажды мне потребовалось завести небольшие структурированные описания некоторых сущностей в обычных текстовых файликах. Предполагалось, что их будут заполнять и обычные люди, не знакомые с IT. Что ставило под сомнение выполнимость задачи. Сдаваться? Да ни в коем случае, вызов принят. Тем более, задача воспринималась как тренировка мышления.

Что же это за UNO такой?

Что изучить в начале осени: 34 открытых урока для тех, кто развивает карьеру в IT

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

Новые инструменты появляются быстрее, чем успеваешь их изучать: LLM, инфраструктура, фреймворки, подходы к разработке. Как выбрать то, что действительно пригодится в работе?

Собрали 34 открытых урока по AI, разработке, DevOps, QA, аналитике и управлению на конец августа и первую половину сентября.

Смотреть подборку

Аналитика в Postbox: от одной базы данных до YDB Transfer

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

Привет, Хабр! Меня зовут Дмитрий Наумов, я работаю в команде Yandex Cloud Postbox. Это API для надёжной доставки писем. В статье поделюсь опытом, как мы развивали аналитику в нашем сервисе: на старте она спокойно уживалась в общей транзакционной СУБД с операционными данными, но с ростом нагрузки всё изменилось. Данные переместили в отдельное хранилище, и нужно было выбрать способ трансфера данных между операционной базой и этим хранилищем.

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

Читать далее

Две аннотации Hibernate, которые вдвое сократили время обработки JSON

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

Всем привет! На связи Михаил Поливаха, технический лидер проекта Axelix.

На известном в узких кругах блоге Hibernate (он же in-relation-to) пару месяцев назад вышла статья, которая, как мне кажется, будет полезной для большого количества разработчиков, кто пишет Java backend системы с использованием Hibernate.

На основании своего эмпирического опыта могу сказать, что многие в той или иной степени работают с Json или подобными структурами в БД вместе с Hibernate. Если вы работали или работаете с такими системами, то та проблема, с которой столкнулись парни будет стоит вашего внмиания.

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

Приятного чтения!

Читать далее

Как устроена архитектура ИИ-платформы: гайд для новичков

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

Привет, Хабр! На связи команда Рег.облака. Современные ИИ-платформы — это сложные распределенные системы, где за одним пользовательским запросом стоит целый конвейер микросервисов, GPU-кластеров и систем хранения. Но с точки зрения разработчика взаимодействие обычно выглядит просто: отправил запрос в API или через веб-интерфейс и получил ответ.

Что происходит между этими двумя точками? Как запрос авторизуется, маршрутизируется, попадает на инференс, обрабатывает контекст и возвращается обратно? В этой статье разберем архитектуру ИИ-платформы для тех, кто хочет заглянуть под капот, но не имеет бэкграунда в ML-инфраструктуре.

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

Читать далее

Fire‑and‑forget в Go: практический гайд по управляемым фоновым задачам

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

У go func() есть неприятная особенность: вместе с результатом выполнения легко потерять контроль над самой задачей. Разберём, как пропускать такую работу через единый пул воркеров, отвязывать её от контекста запроса и при этом гарантированно дождаться уже принятых задач при штатной остановке сервиса.

Разобрать решение

Разработка на Авроре под Аврору: разворачиваем Coder в облаке и пишем плагин для VS Code

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

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

Я мог бы закончить историю на этом, но идея мобильной разработки не давала мне покоя: получается, имея под рукой планшет с большим экраном, вы можете организовать полноценный рабочий процесс. Правда, инструменты для сборки, тестирования и работы с SDK обычно выпускают только для ПК. А можно ли скомпилировать код прямо на смартфоне? Можно — например, в ALT Mobile или «Авроре ОС», если установить дополнительные пакеты.

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

Как это сделать?

Пишем свой PHP-экстеншен на Rust

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

Когда речь заходит о разработке PHP-расширений, многие сразу представляют C, Zend API и сложную систему сборки. Но сегодня есть более удобный путь. С помощью ext-php-rs можно создавать расширения на Rust, используя привычные инструменты Cargo и практически не сталкиваясь с низкоуровневыми деталями.

В этой статье мы с нуля напишем собственный PHP-экстеншен, подключим его к PHP, разберём, как ext-php-rs связывает Rust с Zend API, а затем посмотрим, в каких задачах такой подход действительно даёт прирост производительности, а где этого ждать не стоит.

Читать далее

Проблема N+1 запроса: виноват не ORM, а ваш код

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

У меня есть несколько статей, в которых я рассказываю о различных особенностях работы коллекций в .NET, например эта и эта. Мы с вами разбирали, как лучше искать в коллекциях, спорили о преимуществах Any и Count в борьбе за тысячные доли секунды. Но все усилия, затраченные на эти микрооптимизации, могут пойти крахом из-за одного неудачного запроса в базу или другой сервис.

На этот раз я предлагаю рассмотреть проблему N+1 запроса.

Читать далее

Школьный класс — не модель общества. Это случайный набор ровесников с соседних улиц

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

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

Читать далее

Как я, учась в айти, работаю на 15-тонном советском станке и автоматизирую его без CAM‑системы и комментариев

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

Мне 19. Днем я очный студент айтишник, а в остальное время — единственный человек в цеху, кто работает на 15-тонном советском горизонтально‑фрезерном станке ИР-500. Мозги у этого монстра под стать эпохе: древняя корейская стойка Fanuc 0-M 1982 года.

Сам ИР-500 — настоящий танк. По оси Z ездит сразу вся огромная чугунная коробка на рельсах.. А когда эта масса разгоняется, пол вибрирует, но сам станок стоит намертво. Он воспринимает дикие нагрузки на минимальных оборотах — как легкую прогулку.

Но есть проблема, передачу файлов через кабель он не поддерживает, CAM‑систему не подключить..
Для меня, привыкшего к созданию 3D‑моделей и визуализации всех траекторий в Fusion360 — было непросто адаптироваться.

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

Пока детали требовали обработки в пару проходов, было все отлично. Но потом...

Началось спагетти из g‑кода. Пошли заказы на глубокое торцевание (или более сложные траектории, но сегодня не об этом), где можно потратить пол смены на написание программы.

Читать далее

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

FlautGuard: как мы построили многоуровневую защиту LLM от prompt injection и утечек данных

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

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

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

Отсюда появляются prompt injection, попытки извлечения системных инструкций, обход ограничений и утечки информации через ответы модели.

С этой проблемой мы столкнулись при разработке FlautFast — нашей LLM внутри инфраструктуры FlautCompany.

В отделе FlautSecurity мы решили не пытаться закрыть все эти проблемы одним классификатором. Так появился FlautGuard — защитный слой между пользователем и моделью.

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

Читать далее

Структуры данных на практике. Глава 20: Исследование бенчмарков

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

«Существуют три вида лжи: ложь, наглая ложь и бенчмарки», — почти Марк Твен

В два часа ночи ведущий архитектор процессорного стартапа Сара Чен получила письмо, которое изменит траекторию движения её компании. Конкурент опубликовал подробный технический анализ, развенчивающий заявления о производительности флагманского продукта компании. Заголовок был жёстким: «Маркетинговый хайп против реальности: как X искусственно увеличила результаты бенчмарков на 300%».

Проблема заключалась не в том, что процессор был медленным; на самом деле, он был вполне хорош. Проблема заключалась в бенчмарке Dhrystone, который компания выбрала для демонстрации. Конкурент подробно показал, как современные компиляторы могут оптимизировать бóльшую часть работы Dhrystone, из‑за чего его результаты становятся бессмысленными. Хуже того: конкурент продемонстрировал это на реальных нагрузках, с которыми работают заказчики, и все преимущества в производительности процессора испарились.

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

Читать далее

От чата вместо форм до разработки без конфигуратора: что меняется в экосистеме 1С

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

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

Этим изменениям посвящена секция «Идеи и тренды в разработке» на INFOSTART TECH EVENT 2026, которая пройдет 8–10 октября в Санкт-Петербурге. В программу уже вошли восемь докладов - от рабочих прототипов до технологий, которые пока находятся на стадии активных экспериментов....

Читать далее

Harness engineering: контроль правил агента и где ломается

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

Вы дописали правило в .cursor/rules. Агент его прочитал, согласился и через два хода сделал ровно то, что правило запрещает. Иногда с извинением: да, правило было, я его нарушил.

Другой день, другой проект: правило на месте, но в контекст оно не попало вообще, и узнать об этом было неоткуда. Третий случай: попало всё сразу, вместе с вложенными AGENTS.md со всего дерева проекта, и половина окна ушла на инструкции ещё до первой строки кода.

Причины у этих трёх случаев разные: в первом правило конкурирует с задачей внутри промпта, во втором не доходит до модели, в третьем доходит вместе с сотней чужих. Общее одно: вы создали файл в папке проекта, открытой в Cursor, и считаете, что задали агенту дисциплину.

Читать далее

Как и сколько зарабатывают в Базе знаний Инфостарт: кейсы реальных авторов

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

Авторы Базы знаний делятся историями заработка на портале «Инфостарт». Мы опросили нескольких разработчиков, которые публикуют свои решения и получают за них стартмани. Сколько им удалось заработать, какие решения принесли наибольший доход и сколько времени они тратят на работу с площадкой – рассказываем в этой статье.

Читать далее

Провожу тест‑драйв GigaChat Audio в рабочих условиях

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

Привет, Хабр! Сбер недавно выкатил новую модель, GigaChat Audio. Сейчас я надиктовываю модели этот текст голосом — финальный штрих в истории о том, как я проводил её тест‑драйв. 

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

Меня зовут Данила @pushnoydan, я мидл‑разработчик и занимаюсь бэкендом микросервисов. А параллельно — большой любитель ИИ‑моделей: в свободное время копаюсь в них, чтобы лучше понимать возможности свежих релизов, стараюсь применять на работе, чтобы упростить рутинные задачи. 

GigaChat Audio — audio‑native LLM. В течение дня я поручал ей разбирать голосовые коммуникации от коллег, составлять саммари по аудиозаписям и выводить ключевой контекст из записей различных встреч. Давайте посмотрим, как модель показала на реальных задачах.

Читать далее

Масштабирование от 100 до 100 000+ автотестов: архитектура и инструменты

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

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

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

Читать далее