Обновить

Бэкенд

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

Как Go 1.24 и Swiss Tables вернули нам 200 гигабайт памяти

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

Команда Go for Devs подготовила перевод статьи о том, как Go 1.24 с новой реализацией Swiss Tables помог снизить использование памяти в продакшне на сотни гигабайт. В статье разбирают, что изменилось в реализации map, как это отразилось на профилях памяти, и какие оптимизации в коде дали дополнительный эффект.

Читать далее

Нововведения Python 3.14: автодополнение и подсветка синтаксиса в REPL

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

Команда Python for Devs подготовила перевод обзора новых возможностей REPL в Python 3.14. Теперь автодополнение и подсветка синтаксиса работают прямо в терминале, а цветовую тему можно настроить под себя.

Читать далее

Поздно пить Боржоми? Stack Overflow пробует в AI

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

Команда AI for Devs решила написать эту статью после выхода очередного продукта от Stack Overflow, в чьём имени красуется «AI». Когда-то платформа запрещала любой ИИ-контент, потом осторожно тестировала инструменты вроде OverflowAI и Question Assistant, а теперь явно строит стратегию вокруг искусственного интеллекта. Насколько это здорово для сообщества?

Читать далее

Как мы внедряли Dynatrace в банке для мониторинга Kafka, БД и Java/C++ сервисов

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

Я работаю в одном крупном российском банке, где занимаюсь разработкой распределённых систем. За последние несколько лет наша архитектура заметно усложнилась — часть сервисов работает в OpenShift, часть на виртуалках, а кое-что до сих пор крутится на «железе».

Основная боль заключалась в том, что у нас не было единой системы мониторинга. Метрики мы собирали из разных источников: где-то стоял Prometheus, где-то — Zabbix, в Kafka писали свои дашборды, а для C++ приложений вообще не было нормального мониторинга. Каждый инцидент превращался в расследование: мы переключались между тремя-четырьмя консолями, сверяли логи, писали временные скрипты для выгрузки метрик. В среднем на поиск корневой причины (root cause analysis) у нас уходило от нескольких часов до пары дней.

Читать далее

Разработка просветительского портала «ПроПаллиатив»: взгляд изнутри

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

Всем привет, на связи Андрей! 

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

Читать далее

Почему памятники надо ставить тем, кто автоматизирует MS Word

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

DocxKtm — это Kotlin DSL-обёртка над docx4j для автоматизации Word-документов.

Умеет: создавать документы «с нуля», вставлять текст, картинки, таблицы, колонтитулы, нумерацию страниц.

Поддерживает шаблоны с подстановками и логикой (через встроенный движок на базе MVEL2). По функциональности близко к Python-библиотеке docxtpl, но на JVM и с выразительностью Kotlin.

Если вам надоело вручную генерировать документы в Word — это может сэкономить кучу времени и нервов.

Внутри статьи — моя история создания этой библиотеки.

Читать далее

Динамическая память и реализация динамического массива в C

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

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

Читать далее

Как мы помогли Альфа-Банку перевести CRM в отделениях на российские Java-контейнеры

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

Перевести CRM-систему с тысячами пользователей на полностью российский стек — звучит как вызов? Мы тоже так подумали. Но теперь можем точно сказать: это возможно, и более того — это работает.

Команда Альфа-Банка с нашей поддержкой перенесла CRM-платформу, которую используют сотрудники в отделениях по всей стране, на Axiom JDK и контейнеризовала её с помощью Axiom Runtime Container.

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

Читать далее

Парсинг цен и данных о товарах конкурентов на Wildberries

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

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

Поэтому в этой статье мы разберём тему заново, но уже с акцентом на практическую пользу.

Читать далее

Grok 4 Fast — новая модель от xAI

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

Команда AI for Devs подготовила перевод анонса Grok 4 Fast — новой модели xAI, которая сочетает быстрые ответы и глубокие рассуждения, снижает стоимость токенов на 98 % и впервые становится доступной всем пользователям без ограничений.

Читать далее

Тим Маккиннон, Стив Фриман, Филип Крейг «Эндотестирование: юнит-тестирование с мок-объектами»

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

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

Читать далее

Как я перенёс опыт из PostgreSQL в MongoDB и получил готовый чек-лист

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

Работаете с PostgreSQL и хотите попробовать MongoDB? Я спроецировал опыт работы с реляционными БД на NoSQL и собрал два чек-листа: проверенные практики для PostgreSQL и их аналоги для MongoDB.

Без воды, только ключевые пункты чтобы быстро стартовать и не наступать на типичные грабли.

Читать далее

Строим полный граф импортов python на основе статического анализа

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

Эта статья о разработке средства визуализации импортов внутри проекта на python, основное назначение которого построить полный граф связи скриптов между собой и с внешними библиотеками, основываясь только на статическом анализе AST дерева. Код не будет выполняться, а доступность библиотек — проверятся. Цель показать, что было задумано, а не как это будет работать в текущем окружении.

Читать далее

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

Создание умных AI-агентов: полный курс по LangGraph от А до Я. Часть 2. Диалоговые агенты: память, сообщения и контекст

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

Во второй части курса по созданию ИИ-агентов превращаем безжизненные схемы в настоящих цифровых собеседников: подключаем нейросети к LangGraph, учим их запоминать контекст на сотни сообщений и гарантированно получать валидный JSON вместо творческой "болтовни".

Создаем умные системы, которые сами определяют тип сообщения — отзыв это или вопрос — и автоматически направляют в нужную ветку обработки.

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

Читать далее

Особенности REMOVEFILTERS в DAX из Power BI

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

Привет, Хабр! Одной из важных функций-модификаторов в DAX является REMOVEFILTERS, он позволяет, например, убрать фильтр для расчета знаменателя в доле. Однако логика REMOVEFILTERS для столбцов может выглядеть неочевидной, например, REMOVEFILTERS только для одного поля, по которому есть условие в FILTER, не влияет на результат DAX запроса. Так, REMOVEFILTERS(customer[customer_id]) не влияет на FILTER в SUMMARIZECOLUMNS вида FILTER(customer, customer[customer_id] > 2) и для сброса фильтра нужен REMOVEFILTERS(customer) по всей таблице. В связи с этим удобно представить принципы работы REMOVEFILTERS более формально, например, в виде ER диаграммы с подписанными связями. Для построения ER диаграммы был выбран Mermaid и генерация кода диаграммы реализована на C#. Интересующимся особенностями REMOVEFILTERS — добро пожаловать под кат :)

Читать далее

Кодинг-интервью: без боли и литкода

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

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

Я развлекаюсь интервьюингом больше десяти лет, лет пять вёл SRE Interview Club для собратьев по пейджеру и набрал небольшую базу любимых вопросов — которые задаю по сиюминутному желанию, в зависимости от фазы луны: они все работают для любых ситуаций.

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

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

Давайте рассмотрим один из моих любимых вопросов: доставайте свои вайтборды или блокнотики, начинаем кодить на доске!

Вращайте ~барабан~ дерево!

Что нового в Gradle 9.0.0?

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

В новом переводе от команды Spring АйО рассматривается новое крупное обновление Gradle, которое приносит с собой переход на Kotlin 2 и Groovy 4, а также делает кеш конфигурации рекомендуемым режимом сборки. В версии 9 улучшена система отчётности об ошибках, ускорена компиляция Kotlin DSL, добавлена интеграция с Jspecify, снижено потребление памяти и оптимизирована работа с IDE.

Читать далее

Нормализация vs Денормализация: Mongo, Postgres и реальная жизнь

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

Нормализация vs Денормализация: Mongo, Postgres и реальная жизнь. Почему у нас вырастает 160 таблиц там, где мог быть один jsonb? И как понять, когда денормализация — это костыль, а когда осознанный выбор?

Если при слове «нормализация» у тебя начинается зевота, а менеджер с порога предлагает «спроектировать базу» — этот текст для тебя.

Читать далее

Пишем с нуля ядро операционной системы

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

Недавно я реализовал минимальный proof of concept ядра операционной системы с разделением времени для RISC-V. В этом посте я расскажу о том, как работает прототип. Целевая аудитория поста — все, кому интересно понимание низкоуровневого системного ПО, драйверов, системных вызовов и так далее. Надеюсь, он окажется особенно полезным для студентов, изучающих архитектуру ПО и компьютеров.

Это новый подход к упражнению, которое я выполнил на моём студенческом курсе по операционным системам; функционально он должен напоминать типичный проект по ОС. Однако в этом эксперименте сделан упор на современный инструментарий, а также на современную архитектуру RISC-V. RISC-V — это потрясающая технология, в которой проще разобраться быстрее, чем в других архитектурах CPU; в то же время она остаётся популярным выбором для многих новых систем, а не только архитектурой для обучения.

Отличия от моего предыдущего проекта заключаются в том, что я реализовал это упражнение на Zig вместо традиционного C. Это не просто интересный эксперимент: я считаю, что Zig повышает возможность его воссоздания на вашей машине, потому что его очень легко настроить и он не требует установки.

Читать далее

Логирование и мониторинг WG

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

Всех приветствую! Послушал обзор курса «Мониторинг высоконагруженных систем» от OTUS, в котором упоминалось, что используется асинхронный подход в мониторинге и решил реализовать его в установленном WG. Готового легковесного в интернете ранее не нашел, а вопрос назрел в ввиду оперативного понимания, кто забивает канал, да и логи хотелось бы увидеть о событиях. Если читатель надеется, что тут я опишу изменение исходника, не тратьте время, будем обрабатывать вывод команды wg в консоли Python-ом, который уже есть в ubuntu 20.04 и содержит asincio. Можете по

Читать далее
12 ...
50