Обновить

Бэкенд

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

Структура-ориентированная кодовая база для агента

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

При первом запуске агент не знает структуру проекта. Из-за этого возникают проблемы:

Читает слишком много файлов и быстро расходует контекст.

Или, наоборот, не находит нужные файлы и места в коде.

Читать далее

Новости

Нотация к SQL-препроцессору, и не только

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

Статья представляет компактную математическую нотацию для SQL-препроцессора, разработанную для формирования сложных условных выражений из JSON-конфигураций. Нотация позволяет кратко записывать операции с множествами и интервалами: комбинированные операторы (>=[18,65]), стрелочные символы для интервалов (>> — BETWEEN, >< — NOT BETWEEN) и логическое отрицание через знак минус. Цель — создать интуитивно понятный, непротиворечивый и расширяемый язык запросов. Практическое применение — генерация SQL-кода в препроцессорах, DSL для построителей запросов, компактные фильтры в JSON-API. Рассматриваются сильные стороны и потенциальные проблемы нотации, сравнительный анализ с аналогами (Quist, SQL++, PRQL), выявляется уникальность подхода. Автор приглашает к обсуждению и предлагает сотрудничество.

Читать далее

Если вы умеете делать хороший code review, вы умеете работать с AI-агентами

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

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

Читать далее

Дженерики в Go: три года спустя

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

Когда в феврале 2022-го вышел Go 1.18 с дженериками, сообщество разделилось на два лагеря. Первые кричали «наконец-то!» и бросились переписывать всё подряд. Вторые — «не нужны были, не нужны и сейчас». Прошло три года. Пыль улеглась. И я хочу поговорить не о том, как написать func Max[T constraints.Ordered](a, b T) T — этому посвящены тысячи туториалов. Я хочу поговорить о том, что реально прижилось, какие паттерны оказались полезными, а где дженерики только мешают.

До 1.18 у нас было два пути: дублировать код под каждый тип или использовать interface{} (а теперь any) с приведением типов в рантайме. Оба такой вот компромисс.

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

Читать далее

OpenAI отменили собственный бенчмарк, а $600 на Claude Code дали ноль результата

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

Третий выпуск еженедельных IT-новостей от OpenIDE. В этот раз: Google тайно засунул 4 ГБ Gemini Nano в Chrome, разработчик сжёг $600 и отпуск на Claude Code и получил ничего, Трамп выкинул Claude из госзаказа, SWE-Bench оказался пустышкой, а Uber сделал ИИ-копию своего CEO.

Читать далее

Нетипичные оптимизации в PostgreSQL, или Креативное ускорение запросов

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

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

В этой статье Haki Benita показывает нетипичные техники оптимизации в PostgreSQL.

Читать далее

Scala Digest. Выпуск 38

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

Привет, Хабр! Мы — Настя, Эвелина и Михаил — бэкенд-разработчики Т-Банка, пишем код на Scala и горим желанием его популяризировать.

Приветствуем любую обратную связь! (づ ◕‿◕ )づ

Читать тридцать восьмой

Event-Driven подход в пет-проекте: автоматизация Telegram-канала на NiFi, Kafka и n8n

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

Привет, Хабр! Хочу рассказать про один странный пет-проект, который немного вырвался из-под контроля.

Все описанные потоки можно попробовать в github Скачивайте, ставьте звездочки)

Началось всё обычно: есть VPS (2 ядра, 6 ГБ RAM, 40 GB NVMe), есть свободное время и желание сделать что-то полезное. А ещё есть давняя хотелка — попробовать Kafka в реальном бою. Ну и Telegram-канал для изучения английского как-то сам напросился: новости BBC, разбор лексики, викторины — вроде не сложно, но и не совсем hello world.

Спойлер: Kafka я попробовал, канал работает до сих пор, а архитектура получилась немного безумной — с двумя очередями и разделением ответственности, которое я буду защищать в комментариях. Под катом — почему n8n не справился бы в одиночку, как подружить NiFi с расписанием и зачем я заставляю DeepSeek всегда класть правильный ответ в индекс 0.

Читать далее

Запускаем Doom на старом офисном телефоне

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

Когда-то давно мне подарили кучу VoIP-телефонов, которые списали на моей старой работе. Среди них были два Snom 360 Business, выпущенные в 2005 году. Изначально я хотел настроить АТС на основе Asterisk для всех доставшихся мне телефонов, но в процессе обновления прошивки на одном из аппаратов Snom 360 мне пришла в голову идея получше. У телефона есть экран и клавиатура... получится ли на нём запустить Doom?

Читать далее

Мир снов, сгенерированный компьютером: виртуальная реальность для процессора 286

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

«Что есть "реальность"? И как определить её? Весь набор ощущений: зрительных, осязательных, обонятельных — это сигналы рецепторов, электрические импульсы, воспринятые мозгом.» — Морфеус, фильм «Матрица»

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

Моим первым компьютером был 286 с 1 МБ ОЗУ и жёстким диском на 50 МБ (если я правильно помню). Поэтому я решил взять процессор 286 и попробовать симулировать остальную часть компьютера вокруг него. Или хотя бы сделать так, чтобы он мог запускаться и выполнять какой-то простой ассемблерный код.

Два года назад я купил два процессора Harris 80C286-12. Мои воспоминания довольно туманны, но кажется, буква C в их маркировке важна, потому что она означает меньшую чувствительность к точности таймера (12 в конце означает, что процессор предпочитает работать на 12 МГц), и что на нём даже допустимо пошаговое выполнение.

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

Читать далее

Изучаем FastAPI за одну статью: от «Hello World» до структурированного API

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

Если вы пишете бэкенд на Python или только собираетесь вкатиться в эту тему, вы точно слышали про FastAPI. Он обещает скорость NodeJS, автодокументацию из коробки и строгую типизацию. Звучит круто, но для новичка любая новая технология выглядит пугающе.

В этом гайде я хочу взять вас за руку и провести по всем базовым концепциям фреймворка. Мы напишем свой первый API-сервис с нуля, разберем частые ошибки новичков с асинхронностью и поймем, как писать чистый код с помощью APIRouter. Спойлер: баз данных и сложных ORM сегодня не будет, сосредоточимся на чистом понимании магии FastAPI.

Читать далее

Materialized views и проекции в ClickHouse: когда что использовать и как не наступить на грабли

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

ClickHouse быстрый. Настолько быстрый, что первые полгода можно жить без оптимизаций вообще — агрегации по миллиарду строк отрабатывают за секунды. Потом данных становится больше, запросов тоже, дашборд начинает подтормаживать, и вы задумываетесь: «а можно ли считать агрегаты заранее?»

Можно. В ClickHouse для этого есть два механизма: materialized views и проекции (projections). Оба пересчитывают данные на этапе вставки. Оба ускоряют чтение. Но работают по-разному.

Читать далее

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

Почему macro_rules! может не остановиться и что с этим делает Rust

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

Приветствую.

В 1936 году Алан Тьюринг опубликовал статью, которая среди прочего доказала одну неприятную вещь: невозможно написать алгоритм, который для любой программы и любого входа определит, остановится программа или нет. Проблема остановки. Мы натыкаемся на неё гораздо чаще, чем кажется. Иногда прямо в Cargo.toml.

Читать далее

1C Metadata Viewer для IDE Cursor — работа с конфигурацией 1С

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

1C Metadata Viewer — расширение для Cursor и VS Code, предназначенное для работы с выгруженными конфигурациями 1С:Предприятие в XML-формате.

Читать далее

Проблема не в промпте: как Claude Code плывет на длинных задачах и как управлять контекстом

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

На коротких задачах coding-агент выглядит почти как живой разработчик: читает код, гоняет тесты, находит проблему, предлагает diff, но на длинной дистанции магия заканчивается. Стоит агенту или пользователю подмешать еще пару логов, несколько файлов "на всякий случай" или еще один MCP-сервер, и агент начинает забывать договоренности, повторять уже проверенные шаги и терять план.

Обычно это объясняют так: "модель тупит" или "надо лучше промптить", но на практике проблема часто в другом: мы складируем состояние задачи в историю чата и надеемся, что модель удержит его сама. Не удержит.

Контекст у LLM - это не бездонный мешок, а рабочая часть "памяти" модели, ее нужно проектировать: что хранить отдельно, что подмешивать just-in-time, что выбрасывать после шага и что обязательно возвращать после compaction.

В этой статье я разберу context engineering на примере coding agents, а конкретно на Claude Code: почему long context до сих пор деградирует, почему проблема особенно больно бьет по агентам, чем полезны /compact и Plan Mode, и как собрать минимальный контекстный конвейер без магии и лишней философии.

Читать далее

Как обойти платную подписку Битрикс24 и вернуть своего бота к жизни: делаем свой провайдер событий на коробке

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

Привет, Хабр! (И тебе, страдалец, который три недели смотрит на мёртвого бота в Битриксе. И тебе, админ, который уже устал объяснять руководству, почему «оно перестало работать». И тебе, безопасник, который узнал, что данные компании летают через какой-то curator.pro и чуть не уронил кружку.)

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

Спойлер: стало хуже. Но мы справились.

Читать далее

Оптимизация Lineage 2 GeoData драйвера

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

В позапрошлом году вышла статья https://habr.com/ru/articles/814529/ про синхронизацию позиции персонажа между клиентом и сервером в Lineage 2. После прочтения появилось желание перенести эту логику в свои сырцы от когда-то разрабатываемого сервера и, возможно, запустить его где-то для себя и старых друзей поразвлекаться. Понятное дело, что современного ПК с кучей рам, хорошим процом и nvme дисками при желании было бы за глаза даже для запуска тысяч игроков, но заниматься организацией доступа из дикого интернета на свой ПК желания не было, да и обеспечивать постоянный доступ - дело такое себе. В наличии была самая дешманная впска у хостера F с доменом, но с сильно ограниченными ресурсами: одно ядро и 512Мб рам. Мягко скажем, памяти маловато.

Наспех восстановил сырцы, актуализировал сборку под современные версии java и либ, запустил - потребление хипа примерно 400Мб на старте. Без геодаты. А с геодатой - 1200Мб.

И тут появился спортивный интерес влезть в 512Мб, да еще и с геодатой.

Результатом стал оптимизированный драйвер геодаты, зашаренный на гитхабе https://github.com/mosinnik/l2-geo, репорт о потенциальном баге в JDK и эта статья.

Погружаемся в мир геодаты

Почему классический SSO не работает в энтерпрайзе

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

Идеальная система аутентификации создает максимум препятствий для злоумышленников и минимум — для легитимных пользователей. Но на практике приходится искать компромисс между надежностью и удобством, например, устанавливать требования к паролям по длине и сложности. Классические технологии единого входа (SSO), среди которых SAML, OIDC и Kerberos закрывают часть этих вопросов: упрощают доступ для сотрудников и централизуют аутентификацию в определенные системы, однако имеют собственные недостатки — в первую очередь, они связаны многообразием систем, используемых в реальных enterprise-инфраструктурах, длительностью сессии и других аспектах, о которых мы поговорим в статье. Меня зовут Дмитрий Грудинин, я владелец линейки продуктов Avanpost Access, и сегодня я на примере нашей технологии Avanpost Unified SSO расскажу, как решить эти проблемы.

Немного цифр

В этом году команда крупного американского телекома изучила более 22 тыс. утечек, произошедших в компаниях из 139 стран. Информацию о киберинцидентах собирали по внутренним и открытым источникам, а также от партнеров — например, судебных экспертов и брокеров, занимающихся киберстрахованием. Анализ показал, что при атаках на инфраструктуру злоумышленники чаще всего выбирали путь наименьшего сопротивления, и их главной целью становились учетные данные. Так, согласно отчету, 88% атак на веб-приложения осуществлялись с использованием украденных логинов и паролей. При этом значительная часть скомпрометированных комбинаций не отвечала даже минимальным требованиям к сложности [неудивительно, что количество успешных брутфорс-атак с перебором паролей выросло втрое по сравнению с прошлым годом].

Читать далее

Путь айтишника: как преодолевать все изменения на рынке и оставаться востребованным

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

За последние 25 лет в IT не просто обновились версии библиотек, а успели появиться и исчезнуть технологии и отрасли целиком. Сменили друг друга целые парадигмы разработки, каждая из которых ощутимо меняла подходы программиста к работе.

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

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