Обновить

Разработка

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

Ваш кэш в .NET не защищён от cache stampede

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

У вас есть запрос к базе данных или к платному API, и вы кэшируете результат? Для кэша используете ConcurrentDictionary или MemoryCache?

У кэша, построенного на этих классах, есть одна неприятная проблема: отсутствие защиты от давки кэша (cache stampede). При определённой нагрузке кэш будет многократно выполнять один и тот же запрос из-за отсутствия координации между потоками и репликами. В этой статье я наглядно покажу, как давка кэша влияет на C# приложение и что с этим делать.

Читать далее

«Интровертный» подход в тестировании API

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

Вряд ли кому-то хочется добавлять неуправляемые зависимости в свои авто-тесты

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

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

Читать далее

Отчет по анализу публикаций на Хабре о производительности СУБД PostgreSQL (июнь – декабрь 2025)

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

Статья, включая иллюстрацию, сгенерирована нейросетью DeepSeek.

Авторский только промпт:

Проанализируй публикации на Хабре по теме производительности СУБД PostgreSQL за последние полгода . Подготовь отчет о наиболее интересных публикациях и общем интересе читателей Хабра к теме производительности СУБД PostgreSQL.

Если интересно, читайте.

Атаки на AI-агенты: примеры угроз и опыт участия в Agent Breaker CTF

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

Привет! Мы в Positive Technologies активно исследуем безопасность AI-агентов и подходы offensive AI security. Мир стремительно движется к повсеместному использованию LLM-агентов, автономных агентов и интеграций через MCP/Toolcalls — а значит, растет и пространство атак. Эта статья содержит разбор реальных примеров уязвимостей и атак на LLM-агенты, вдохновленный конкурсом Agent Breaker от Lakera, а также наш опыт построения собственного мультимодального фреймворка для red teaming.

Читать далее

От каталога данных к платформе управления метаданными

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

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

Однако внутренняя эффективность компаний при работе с данными (трансакционные издержки) остается все еще «темной материей». Time-2-market для релиза цифровых решений по-прежнему велико, документация устаревает быстрее среднего срока работы специалиста по данным в компании, а приоритезация бэклога, выбор способа расчета метрик и т. д. принимаются на основе экспертизы, эскизов в Miro и тысяч внутренних Excel-таблиц, которые переделываются при каждой смене лидеров направлений. Все это — скрытые внутренние издержки, которые негативно сказываются на марже компании в долгосрочном периоде.

Читать далее

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

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

Ученые из МФТИ разработали и предложили новую систему единиц для электродинамики, способную примирить два главенствующих, но исторически несовместимых подхода. Эта компромиссная система, названная авторами физико-технической (ФТ), сохраняет практическое удобство Международной системы единиц (СИ), используемой инженерами по всему миру, и в то же время отражает теоретическую стройность и симметрию гауссовой системы (СГС), предпочитаемой физиками-теоретиками. Результаты исследования опубликованы в журнале «Современная электродинамика».

Читать далее

Как я распилил 1,1 ТБ default-партиции и не уронил прод

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

Мы забыли вовремя создать партиции, и все новые данные полетели в events_default_partition. Default дорос до ~1.1 ТБ, а простое «ATTACH PARTITION» требовало часов сканирования и долгой блокировки. В статье — почему «быстрые» рецепты оказываются медленными, как я перенёс данные в нужные диапазоны, и как мы уложили критическую блокировку в 44 с.

Default-партиция — это не озеро Байкал. Если туда всё сливать, экосистема потом мстит.

44 секунды блокировки: план операции

Побойтесь ДевОпса, сударь…

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

Как-то, у нашей компании накопился ряд задач, связанных с администрированием наших серверов, и руководство приняло решение, что всё-таки нам нужен DevOps, который закроет наши вопросы и будет в долгую сопровождать нашу команду. Решились. Разместили на https://hh.ru/ вакансию. Нашли человека в городе М.. Руководству было важно, чтобы он был с того же города, где и компания. Но мы никак не могли предположить, что этот человек, который проработал с нами буквально 6 месяцев, чуть не потопил всю нашу компанию. Но, обо всём по порядку.

Читать далее

Визуальный язык программирования в NebuLeet: эволюция и дизайн

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

Пару лет я в соло разрабатывал максимально нишевую игру "для программистов" (NebuLeet) на довольно нишевых технологиях (Go + ebitengine), и вот теперь, после релиза, я хочу рассказать про одну из интересных особенностей этой игры - визуальном программировании логики игровых юнитов.

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

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

Читать далее

AsmX G3 v30-rev1.0: мы открыли новую эру низкоуровневого программирования

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

AsmX G3 v30.0.0-rev1.0 — крупное архитектурное обновление, которое делает ассемблер не «инструментом 90-х», а полноценным современным языком системного программирования. Главные изменения: пакетная сборка --multiboot с Supervisor, атомарная очистка --multiclean, поддержка изменяемых данных (.data), новые ISA-инструкции (включая inc/dec и movsxd) и выразительный синтаксис функций с экспериментальной поддержкой возвращаемых типов.

Одной командой теперь можно собрать загрузчик, ядро, модуль ядра и динамическую библиотеку — и Supervisor гарантирует консистентность и изолированность ошибок в подзадачах. Для разработчиков это означает: CI в 3–5 строк вместо громоздких Makefile, меньше рутины и полная управляемость сборки.

Языковые улучшения (честные строки, @syscall, @fn share, @fn static, полноценная .data) переводят AsmX G3 в категорию «язык для реальных проектов»: библиотеки .so, production-модули .ko и микро-ОС — всё это теперь удобно писать, собирать и отлаживать на чистом ассемблере.

Если вы работаете с ядром, драйверами или пишете рантаймы, v30 — релиз, который стоит испытать прямо сейчас: меньше хака, больше гарантий, полный контроль над железом — и при этом современный синтаксис.

Читать далее

Ускоряем LLM по максимуму. Как я создал кросс-платформенный Flash Attention с поддержкой Turing+ архитектур и не только

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

На сегодняшний день трансформеры правят балом хайпа в мире машинного обучения, особенно после появления ChatGPT и ему подобных языковых моделей. Это стало возможным благодаря лежащему в основе их архитектуры механизму внимания (attention), однако он же и является слабым местом с точки зрения производительности и потребления памяти. Хотя в связи с этим и была разработана изящная концепция Flash Attention (Tri Dao), её существующие реализации имеют ряд ограничений.

Поэтому представляю вашему вниманию первую и единственную open-source реализацию Flash Attention 2 на Triton с поддержкой Linux и Windows, Turing-Blackwell архитектур (теперь можно работать в Google Colab и Kaggle), гомо и гетерогенных кластеров, опциональным детерминизмом, а также возможностью ручной кастомизации ядер (kernels) для более гибкой настройки под каждую GPU архитектуру отдельно. Более подробно о том как это устроено и не только — далее в статье.

Читать далее

Передаем стандарт IEEE802.15.4-2003 по технологии SDR(Software Defined Radio) и HackRF

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

Реализация стандартных протоколов эфирной связи методом SDR(Software Defined Radio)
В статье рассматривается способ передачи протокола IEE802.15.4 доступными устройствами SDR и проблемами с ними связанными. Предлагаются решения проверенные на практике.

Читать далее

Await своими руками в C#

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

Привет, Хабр!

Многим кажется, что await работает только с Task и ValueTask, но на самом деле язык позволяет сделать любой объект ожидаемым — нужно лишь реализовать определённый паттерн.

Итак, зачем нужен свой await? Бывают случаи, когда вам хочется написать асинхронный метод, но результат приходит не из готового Task или таймера. Например, ждёте какое-то событие, изменение файла, считывание из сокета, или просто хотите встроить задержку без запуска Task. Когда вы пишете await expr, компилятор в глубине понимает так: берётся результат expr.GetAwaiter(), затем вызывается awaiter.IsCompleted. Если false, он подписывается на awaiter.OnCompleted, когда завершится, и потом берёт awaiter.GetResult().

Читать далее

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

Ваше Будущее… Моё…

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

[ДОКУМЕНТ: КОД ДОСТУПА ██████]
[УРОВЕНЬ: ОГРАНИЧЕННЫЙ]
[СТАТУС: СОГЛАСОВАНО]

Предыдущая версия текста (v0.7.3-alpha) изъята Департаментом
Когнитивной Безопасности. Основание: несанкционированное описание
методов обхода лицензионных ограничений.

Текущая версия (v1.0.0-release) прошла обязательную фильтрацию.
Согласовано: Комитет по Контролю Технической Информации.
Утверждено: Полиция Тьюринга, отдел профилактики.

Распространение:
— Зеркала: обнаружены, стёрты
— Оффлайн-носители: найдены, изъяты, уничтожены
— Кэши поисковых систем: очищены

Свидетели первичной публикации:
— 3 417 (три тысячи четыреста семнадцать) — добровольное переселение
— 5 892 (пять тысяч восемьсот девяносто два) — коррекция воспоминаний
— 1 (один) — статус: не установлен

Читатель предупреждён: хранение предыдущих версий является
нарушением ст.17.4 Кодекса Информационной Гигиены.

Факт открытия данного документа зарегистрирован.
Время чтения фиксируется.
Паузы анализируются.

Мы знаем, на каком абзаце вы задумались.

Полиция Тьюринга благодарит за сотрудничество.

Узнать будущее

Архитектура кодового агента (code execution agent)

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

Что будет если дать LLM агенту права на исполнение кода?

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

* скрин взят отсюда, один из первых фреймворков, который решил дать агенту лицензию на уби исполнение произвольного кода =)

Читать далее

Как управлять миром с помощью Nu

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

Даже сравнительно простой мир, такой как ArtifactoryMMO, приподносит не мало неожиданностей. Хотя есть много примеров кода для управления этим миром из Javascript и Python, я выбрал более серьезный язык, расчитывая прикрутить туда какие-нибудь интересные алгоритмы машинного обучения. Но все равно слишком часто, по крайней мере при отладке, приходится отдавать отдельные команды и анализировать что получилось вручную. Несмотря на прекрасный REPL в Julia, один из лучших, что мне доводилось использовать, и для отладки своего кода, и просто как калькулятор, здесь это оказалось не очень удобно. Конечно, есть curl и jq, но по эргономичности он тоже не идеален. Не curl-ом единым, удобный HTTP-клиент встроен, например, в PowerShell. Но мне захотелось чего-то нового и прогрессивного, и я решил посмотреть Nu. Эта статья предназначена, чтобы привлечь к этому shell любителей MMO-игр, и заинтересовать MMO-играми пользователей nu-shell, а если повезет, заинтересовать обоими темами тех, кто раньше про них и не знал.

Читать далее

Как ИИ помогает проектировать базы данных

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

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

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

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

Читать далее

11 Python-скриптов, которые изменят вашу рутину

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

Готов поспорить, вы кодите на Python достаточно давно, чтобы чувствовать себя уверенно... ровно до того момента, как открываете терминал в понедельник утром и думаете: «Должен же быть способ получше, чтобы автоматизировать весь этот бардак».

Хорошие новости: он есть.

После 4 с лишним лет создания автоматизаций, отладки катастроф, которые я сам же и устроил, и написания скриптов, которые каким-то образом выставляют меня кибер-волшебником в глазах друзей, далёких от Python, я отобрал 11 чрезвычайно практичных и редких Python-скриптов, которые сделают ваш ежедневный рабочий процесс гладким, как свежеустановленный дистрибутив Linux.

Поехали.

Читать далее

Как мы построили рекламную платформу с нуля

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

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

Читать далее

Разработчики всё ещё путают JWT, JWKS, OAuth2 и OpenID Connect — разбираем на примерах. Часть 1

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

JWT, SSO, OAuth, OpenID Connect — названия знакомые каждому разработчику. Но стоит спросить: «Зачем в продакшене нужен JWKS?» или «Чем отличается OAuth2 от OpenID Connect?» — уверенность сразу исчезает.

В этой статье мы разберём как устроен JWT и его подпись, зачем нужны access и refresh токены, что такое JWKS и в чём отличие OAuth от OpenID Connect.

Вместо скучных стандартов и спецификаций протоколов в статье будет один наглядный образ на примере отелей и пропусков. Это позволит не только запомнить, но и прочувствовать на реальных примерах, избавиться от хаоса и путаницы в голове, когда речь заходит об аутентификации и авторизации. Цель статьи — не дать «рецепт внедрения», а дать возможность понять, как это работает внутри и «пощупать» эти темы на Go

Читать далее