Обновить
1024K+

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

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

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

Структуры данных на практике. Глава 14: Обработка строк и эффективность использования кэша

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

«В Computer Science есть только две сложные вещи: инвалидация кэша и придумывание названий», — Фил Карлтон

Разрыв в производительности

Наш парсер логов обрабатывал 800 тысяч строк в секунду. Нам требовалось 3 миллиона строк в секунду. От нужного нам показателя мы отставали в 3,75 раза.

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

Профилировщик показывал 85 миллионов промахов кэша. Для обработки строк это казалось слишком большим показателем.

В реализации использовались стандартные строковые функции C — простые, читаемые, но, очевидно, слишком медленные.

Я переписал этот код, добавив обработку строк с учётом кэша. Результаты были такими:

В 4,5 раза быстрее и в 7 раз меньше промахов кэша.

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

Читать далее

MemHawk: часть 2. Real-time flamegraph в вашей Grafana

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

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

Сегодня рассмотрим как получилось совместить быстрый профайлинг с удобством визуализации в Grafana в реальном времени.

Ключевые особенности:
Flamegraph аллокаций и деаллокаций за интервал времени
График потребления памяти с детализацией до функции/строчки в коде(настраиваемо)
Flamegraph в момент пика памяти
Flamegraph суммарного числа аллокаций
Flamegraph суммарного объема аллокаций

Звучит интересно!

Большие пул-реквесты пропускают больше багов — разбираемся, правда или миф

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

Интуиция подсказывает — чем больше пул-реквест, тем выше соблазн по-быстренькому пробежаться глазами по коду и аппрувнуть изменения. Предлагаем вам вместе с нами проверить утверждение из заголовка! В статье посмотрим, к чему пришли исследователи, проанализировавшие 50К+ пул-реквестов, обсудим, какие когнитивные искажения на это влияют, и разберем, как изменилась ситуация с появлением ИИ-помощников. Поехали!

Читать далее

SpaceX покупает Cursor, а Claude Mythos слили, угадав URL

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

Седьмой выпуск еженедельных IT-новостей от OpenIDE: Anthropic выносит Claude Code из плана за $20, Duolingo перестаёт следить за потреблением ИИ сотрудниками, а четыре человека из Discord получают доступ к засекреченной модели просто потому, что правильно угадали адрес эндпоинта.

Читать далее

claude --model claude-opus-4-6

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

Недавно вышла Claude Opus 4.7 флагманская модель от Антропик. В выпущенных пресс-релизах и графиках маркетологи обещали пользователям, что модель станет ещё умнее, ещё точнее и так далее. На деле же получился феерический провал. Под катом - подробности этой истории и рецепт возврата вашего душевного равновесия.

Читать далее

Чего не хватает в С++

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

Есть некоторые очевидные вещи, мешающие программистам-практикам, которые, возможно, не видны людям, входящим в комитет. Попытаюсь обратить на них внимание.

Объекты-значения

Большинству объектов не нужен скурпулёзный учёт вызванных конструкторов, потому что обычно объекты нужны, чтобы хранить значения, а не выполнять код конструкторов. Например:

auto a = b + c; f(a);

Читать далее

$180 за три дня: история про архитектора, Cursor и пакет орешков

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

$180 на Cursor за три дня. Три монитора. Пакет орешков. Ноль тестов. Бизнес в восторге. Команда в ужасе. Угадайте, кто победил.

Читать далее

Interceptors и SourceGenerators: отказываемся от IL-инъекций

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

Привет! Я Дмитрий Сипаков, ведущий разработчик в Госсервисах Т-Банка. Расскажу про относительно новую фичу .NET — Interceptors: как они работают вместе со Source Generators и как с их помощью можно избавиться от бойлерплейта без IL-инъекций и сторонней магии.

Читать далее

Тайны чёрных мониторов и бегущих строк. От ASCII-графики к современным языкам разметки

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

Любой более-менее живой репозиторий уже давно перестал быть просто директорией с исходным кодом. Помимо файлов с исходниками там теперь живут инструкции, архитектурные заметки, спецификации, техническая документация и отчёты, которые должны одинаково хорошо читаться и в IDE, и в веб-интерфейсе платформы. Даже сейчас в процессе написания этой статьи я использую Markdown-разметку, которая стала де-факто стандартом для ведения документации в проектах, но давайте обо всем по порядку.

Когда таких форматов становится много, возникает закономерный вопрос: как показать их пользователю удобно, быстро и без необходимости скачивать файл к себе на компьютер? У нас в GitVerse этот вопрос постепенно вырос в отдельную продуктовую и инженерную задачу. Так появилась поддержка просмотра разных типов файлов — от упомянутого выше Markdown до более специализированных форматов.

Я расскажу, почему вообще человечество пришло к идее текстовых форматов для оформления документов, как Markdown стал фактическим стандартом индустрии, зачем нужен Typst и как мы внедряли его поддержку на платформе с помощью WebAssembly.

Читать далее

Ору по ночам, а соседи стучат (не) в такт, или немного про экстрим-вокал

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

Привет, Хабр! Я Стас, инженер-программист в Контуре. И это большая статья про экстрим-вокал. 😎🎸 Разбираю, что это такое, какие бывают техники, каким был мой путь туда, что за горе-преподаватели существуют и как увлечение экстрим-вокалом влияет на мою работу в IT (и наоборот: как айти помогает мне в моём увлечении).

Читать далее

Динамические product flavors в Android: когда статической конфигурации уже мало

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

Рано или поздно каждый Android‑разработчик сталкивается с задачей «одно приложение — много сборок»: white‑label‑решения, региональные версии, отдельные сборки для разных магазинов приложений, демо для клиентов, внутренние окружения.

Встроенный механизм product flavors в Android Gradle Plugin отлично справляется со своей задачей — пока количество вариантов умещается в голове и в паре экранов build.gradle.kts.

В этой статье я разберу подход, при котором конфигурация flavors строится динамически: список вариантов и их параметры живут вне build.gradle.kts.

Читать далее

Настроил ИИ-агента прямо в редакторе Zed: подключил Gemini и gopls, чтобы агент понимал код и реально помогал писать

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

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

Я на своём опыте расскажу, как выбрать LLM и ИИ-агента, как его настроить и калибровать, а также поделюсь полезными техниками промпт-инжиниринга. 

Читать далее

Как я переписал проект за неделю вместо трёх месяцев

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

Год назад у меня был legacy-проект с одним main.go на две тысячи строк. MVP: бизнес-логика, конфиг, хэндлеры, БД - всё в одном файле. Три месяца в Cursor, аккуратно, по кусочкам, с тестами на коленке, я вытянул это в нормальную структуру. Три месяца…

А недавно я сел переписывать другой свой проект такого же масштаба. Claude Code, Opus, три субагента-ревьювера, тридцать скилов. Неделя. И это я ещё половину времени потратил на BDD, потому что поверх всего накатывал реализацию на godog. Без BDD уложился бы дня за три!

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

Читать далее

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

Как навести порядок в запросах Laravel с помощью кастомных Query Builders

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

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

Узнать что такое кастомные Query Builders

«Прогеры» или «Битва Големов v4.0»? Сравниваем две настольные игры, обучающие детей основам кода и робототехники

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

Как научить детей основам программирования и алгоритмического мышления, не включая компьютер? Сравниваем две настольных игры, представленных на российском рынке — «Прогеры» и «Битву Големов v4.0». Разбираем игровые механики, учебную эффективность, возрастные рамки и помогаем выбрать идеальную игру под задачи и уровень подготовки юных кодеров.

Читать далее

Как Cursor с Claude Opus снёс продакшен базу данных за 9 секунд

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

30 часов хронологии того, как агент Cursor, Railway API и индустрия, которая продаёт безопасность быстрее, чем её реализует, положили малый бизнес, обслуживающий прокатные компании по всей стране.

Меня зовут Джер Крейн, я основатель PocketOS. Мы делаем ПО для прокатного бизнеса — в первую очередь для аренды автомобилей: бронирования, платежи, управление клиентами, отслеживание транспортных средств. Некоторые наши клиенты с нами уже больше 5 лет и они буквально не могут работать без нас.

Вчера днём ИИ‑агент на базе Cursor с Claude Opus 4.6 от Anthropic удалил нашу продакшн‑базу данных и все резервные копии на уровне тома одним API‑вызовом к Railway, нашему инфраструктурному провайдеру.

На это ушло 9 секунд.

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

Читать далее

Можно ли вычислить всё? О Гёделе, Тьюринге и программировании

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

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

Читать далее

oosmetrics.com — когда публикация на строннем сайте может навредить вашему проекту

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

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

Читать далее

Арифметика резкого повышения продуктивности: почему «рост на 40%» — это почти всегда неправда?

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

Почему громкие обещания, касающиеся роста продуктивности труда, чаще всего не дают ожидаемых результатов? Может, что-то сильно не в порядке с теми программными продуктами, применение которых должно приводить к улучшениям? А может — сами числа скрывают какую-то тайну?

Читать далее

Как мы обучили Next Edit Suggestions модель

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

Next Edit Suggestions (NES) это режим автодополнения, который предсказывает следующее редактирование программиста: что он изменит, где и как. Модель смотрит не только на код, но и на последнюю серию правок и предсказывает следующее действие в той же логике. Образно говоря, это модель которая работает в пространстве действий и намерений программиста.

Читать далее