Обновить

Бэкенд

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

А может чайку

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

Все уже слышали, что в Go 1.25 завезли новый экспериментальный сборщик мусора - Green Tea GC. Теории о том, как он работает, много (и в том числе на Хабре).

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

Мы задались целью: найти условия, в которых Green Tea GC побеждает безоговорочно. Не на 1-2% в пределах погрешности, а так, чтобы график "пробил потолок". И у нас получилось добиться стабильного ускорения пауз GC на 40-50%.

Вот рецепт нашего успеха

Новости

PostgreSQL сost model для оценки стоимости сброса временных буферов на диск

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

Здесь я представляю результаты работы над первым шагом к внедрению временных таблиц в схему параллельного выполнения запросов в PostgreSQL - тестирование последовательной записи и чтения temp buffers. В системный каталог PostgreSQL добавлены функции измерения операций сброса буферов, и проведены тесты. Для целей оптимизатора выполнена оценка коэффициента стоимости сброса буфера временной таблицы на диск относительно уже существующего DEFAULT_SEQ_PAGE_COST. Выполнена оценка стоимости простого обхода temp buffers (dry-run). Измерения показывают, что последовательная запись примерно на 30% медленнее чтения. На основе этих результатов предложена формула оценки стоимости.

Читать далее

Особенности работы с Telegram Mini App (Web App). От биометрии до датчиков

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

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

Читать далее

Меня взломали! Утром мой сервер начал майнить Monero

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

Недавно моё утро началось с такого вот прекрасного e-mail от Hetzner:

Уважаемый, м-р Джей Сандерс,

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

Также просим вас прислать краткое пояснение с описанием того, как такое могло произойти, и что вы собираетесь в этом отношении предпринять. Если последующие шаги не будут успешно выполнены, ваш сервер может быть заблокирован в любой момент после 2025-12-17 12:46:15 +0100.

К письму прилагалось подтверждение того, что с моего сервера было выполнено сканирование некоего IP-диапазона в Таиланде. Отлично. Никакого вам «Здравствуйте», а лишь заявление о злоупотреблении и угроза отключить всю инфраструктуру через 4 часа.

Читать далее

Ragex: Гибридный RAG для анализа кода

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

Я поломался, поломался — и поломался на осколки. Признаю́: железные помощники Т9 действительно могут приносить пользу в разработке. Единственное, что мне не нравилось — то, что весь проект большой и хорошо натренированной модели не скормишь, а значит — неизбежны потери контекста, размывание смыслов и джойсовские галлюцинации.

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

Когда БЯМ научились подключать сторонние MCP-сервера, произошел качественный скачок. Теперь не нужно файнтьюнить модель, можно файнтьюнить буковку «R» из акронима «RAG». Я-то лучше знаю, как правильно извлекать смыслы из моего личного контента. Если речь про код — лучше всего искать правду в AST.

Так и был зачат Ragex — MCP-сервер для семантического анализа кодовых баз с элементами чёрной магии. Проект, понятно, написан на Elixir, потому что ну а на чем еще?

Читать далее

OpenAI облажались: как я получил доступ к видео Sora без водяных знаков за один вечер

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

Я не такой частый юзер Sora, но когда увидел, что люди ПРОДАЮТ доступ к видео без водяных знаков — сначала подумал, что они сделали машинное обучение и фотошопом каждый кадр обрабатывают. Но когда я попробовал - результат был готов за 1 секунду. В тот момент я осознал: ЗНАЧИТ ВИДЕО ЛЕЖАТ НА СЕРВЕРАХ. Во мне проснулся инстинкт хакера, и я начал искать ДЫРУ.

Первым делом я полез изучать вкладку Network, пробуя различные методы тыка туда-сюда... (ссылка на GitHub и на готовый продукт - в конце статьи)...

Читать далее

Оптимизируем программный декодер JPEG для архитектуры RISC-V

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

Графический формат JPEG уменьшает размер изображений без особо заметной для глаза потери качества — упрощая тем самым их хранение и передачу. Студенты из БГУИР — Артём Подгайский, Сергей Буйвид, Юрий Наскевич и Дмитрий Степанчук — в  в рамках Зимней школы RISC-V YADRO изучили работу декодера JPEG для архитектуры RISC-V, нашли пути для его оптимизации и далее расскажут о своем проекте.

Читать далее

Easy Maven — Dependencies Search. Или воскрешаем Maven Dependency Helper плагин

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

Всем привет! Недавно я опубликовал статью, в которой сказал что она будет последней по Easy Maven т.к. все что можно я уже делегировал Maven — импорт проекта, запуск тасков, анализ зависимостей. Но недавнее обилие багов в IDEA 2025.3 связанных как с зависанием так и повышенным потреблением памяти Maven проектами, окунуло меня в баг трекер IDEA, где я нашел много похожих проблем, которые также затрагивают и мавен индексы. Помню как меня самого это раздражало, когда IDEA чуть ли не при каждом открытии, начинает сканировать локальный репозиторий. Про это даже писали в комментариях — где ответ был один — отключить это. Плюс недавно один из постов в тг канале (спасибо за это @javadev), еще больше убедил меня в том, что так дальше жить нельзя и я решил поправить проблему поиска зависимостей так как я ее вижу — не изобретать велосипед, а делегировать поиск туда, где это уже реализовано. Ведь как известно: самый лучший код — тот который ты не написал. Посмотрим что из этого вышло.

Читать далее

Крошечный язык для инструкций к выключателям

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

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

Давайте посмотрим на выключатели со схем 1-7. Понятно, что выключатель №1 должен быть подключён по двум контактам (1 и 2), иначе это ошибка. А вот выключатель на схеме 2 (напомню, что штриховая вертикальная линия — это механическая кнопка, замыкающая сразу несколько контактов) должен быть подключён хотя бы по одной из пар 1-2 и 2-4. То есть, можно представить себе ситуацию, когда у нас нет в наличии простых выключателей со схемой 1, но есть ящик выключателей №2. Тогда получается, что мы должны подключать не все контакты, а только часть.

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

Читать далее

JsonToLinq – автоматическая конвертация фильтров из JSON в LINQ Expression деревья

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

Используй JSON для создания LINQ-выражений!

Если черный ящик поддерживает входные сигналы в форме JSON, то им могут пользоваться самые разные клиенты!

Читать далее

Telegram Bot API 9.3: Революция в ИИ-чатах

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

Всем привет!

Прямо в канун Нового года — а именно 31 декабря — Telegram представил крупное обновление Bot API 9.3. И не просто представил, а громко заявил: «Революция ИИ в чатах».

И, если пробежаться по списку изменений, масштаб обновления для ботов действительно ощущается — особенно в проектах, где используется ИИ. Давайте вместе пройдёмся по чейнджлогу и посмотрим, что Telegram приготовил нам в подарок на Новый год.

Если вам интересны подобные материалы, подписывайтесь на Telegram-канал «Код на салфетке». Там я делюсь гайдами для новичков, полезными инструментами и новостями. А прямо сейчас у нас там ещё и проходит новогодний розыгрыш.

Читать далее

Postgresso #11-12 (84-85)

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

Postgres Pro Enterprise 18.1.1

До Нового Года успела выйти 18-я версия Postgres Pro Enterprise - Postgres Pro Enterprise 18.1.1. Версии Postgres Pro Standard 18.1.1 и - до неё - Postgres Pro Standard 18.0.1 следовали за соответственно. А - как видно из номера - Postgres Pro Enterprise 18.1.1 - перепрыгнула через ступеньку. Поэтому, если будет желание отследить изменения, унаследованные от Standard и PostgreSQL, надо сравнивать сразу с 2 версиями каждой. Мы же здесь не будем фокусироваться на формальностях и просто приведём (неполный, конечно - полный слишком велик для нашего жанра) список нового.

Добавлена возможность создавать таблицы, которые разделяются на секции при помощи внешнего ключа. Внешний ключ используется как ссылка на родительскую секционированную таблицу и определяется в предложении PARTITION BY REFERENCE.

Обновлены модули, в том числе BiHA. В ней много важных изменений:

Читать далее

Ускоряем индексацию нодлистов Фидонета при помощи Java Streams и Spring Data JDBC: перебираем нодлисты прямиком с СУБД

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

Привет, это снова Егор. И да - это снова статья про Фидонет. Так уж сложилось, что именно эта тематика оказался слишком уж популярным на моём Хабре, и неразрывно связана со мной, хотя я всячески пытался "сбежать" от данной тематики.

Однако я решил совместить приятное с полезным - рассказать про недавние мои поправки в NodehistJ, которые значительно ускорит индексацию диффов нодлистов сети Фидонет, а также значительно снизит потребление ОЗУ, за счёт одного из лучших вещей, которая есть в Spring Data JDBC - live streaming данных с СУБД без использования неэффективной пагинации. Данная технология позволяет быстро перебирать нодлисты за считанные минуты, и ускорить индексацию даже на слабых серверах, за счёт прямого перебора данных из СУБД, в live-режиме, без использования неэффективной пагинации, но с использованием самых обычного Java Streams.

Читать далее

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

Yii3. Официальный релиз

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

Это случилось! PHP-фреймворк Yii3 официально выпущен после многих лет интенсивной разработки и полировки.

Мы кратко рассмотрим основные моменты этого долгожданного релиза.

Читать далее

Генерация лабиринта с использованием Uber H3 на карте в Qt

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

Генерируем лабиринт на гексагональной сетке Uber H3 и ищем путь с помощью двунаправленного A* — всё это на Qt 6 с визуализацией на реальной карте

Читать далее

Как я вкатывался в Clickhouse

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

Я блокчейн разработчик, и в проекте у нас базы на сотни гигабайт с децентрализованных бирж. Чтобы строить аналитические отчеты и делать агрегации, такие как вычисления цен, биржевых свечей, объемов торгов, цен на токены, мы используем БД Clickhouse. До этого я работал только с Postgres (и давно с MSSQL), и хочу рассказать, как я вкатывался, что удивило – практический опыт и WTFы. Прочитав эту статью вам, возможно, захочется сделать аналитику по своим данным в Clickhouse – возможно, ищете, что полезного освоить на длинных выходных. Итак, поехали!

Читать далее

От Чёрного моря до Невы: история одного комьюнити-тура

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

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

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

Buckle up, folks!

Читать далее

Пара дней вне рутины: зачем разработчикам дают свободу

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

Вы когда-нибудь как разработчик хотели официально на работе заниматься тем чем хотите? Отменить все митинги и сосредоточиться на одной проблеме, которой хотел давно заняться, но не было времени? Попробовать новый фреймворк или покодить в свое удовольствие? Звучит заманчиво? В этой статье я хочу рассказать об Get Stuff Done Days (GSDD), которые позволяют разработчикам вырваться из рутины.

Читать далее

Мультиплексирование потоков данных Node.js Streams: пошагово программируем и разбираем задачу

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

Мне очень нравится идея потоков данных в Node.js - data streams. Они используются всюду: чтение файлов, сетевые запросы, архивирование файлов.

Не путать с потоками выполнения процессов - threads! Это совсем другое!

Есть много хороших статей по философии, теории и применении потоков, Хабр не стал исключением:
Ментальная модель потоков в Node.js

Много раз я сталкивался с необходимостью реализовывать свои потоки данных. И каждый раз я путался с кучей методов: write, push, _write, _read, с кучей событий - end, close, finish. В чем отличие write от _write?! Буквально почти все время, когда я имею дело с потоками у меня открыты доки Node.js - https://nodejs.org/api/stream.html.

Недавно, в моей статье про кастомный транспорт для ShadowSocks мне потребовался функционал передачи разных потоков данных по одному потоку (каналу)данных. Это задача мультиплексирования данных.

Я думаю, что эта задача является хорошей практикой для новичков в Node.js и программистов, любящих кодить всякие алгоритмы.
Во время программирования я встретился с несколькими "программистскими задачами" aka "подводными камнями", которые мне пришлось решить, и это было увлекательно, что и вылилось в данную статью.

Читать далее

Сервисы — место, где живет бизнес-логика

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

Сервисы — место, где живет бизнес-логика

Здравствуйте! Идея написать эту статью пришла мне в голову абсолютно спонтанно. Я работаю в компании и, так сложилось, что нас имеет мы имеем DRF монолит на писят два миллиона строк кода. И вот однажды, чью-то светлую голову посетила мысль — «а давайте писать код одинаково». Идея прозвучала чертвоски просто и соблазнительно. С этого момента мы завели себе ишака по имени «Django Service Layer», и все дружно начали на него наваливать. Теперь навалю и вам. Би-бу-бип.

Читать далее
1
23 ...