Обновить

Бэкенд

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

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

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

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

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

Читать далее

Новости

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

Немного цифр

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

Читать далее

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

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

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

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

Читать далее

SearXNG + Claude Code: бесплатный веб-поиск вместо $10 за 1000 запросов

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

Встроенный WebSearch в Claude Code стоит $0.01 за запрос и регулярно падает с «Rate limit reached» — даже на подписке за $200/мес. Я поднял локальный SearXNG, подключил через MCP — и теперь поиск бесплатный, без лимитов, а запросы не уходят на серверы Anthropic. Установка — 10 минут, три файла конфигурации.

Показать решение

Как я устал дебажить MAX API, отреверсил их вебхуки и отучил Cursor галлюцинировать

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

Как я устал дебажить MAX API, отреверсил их вебхуки и отучил Cursor галлюцинировать

Когда я писал своего первого более-менее серьезного бота под Max, случилась классика. Я и мой ИИ-ассистент (Cursor) пишем код, строго опираясь на официальную документацию Max API. Запускаю — падает. Сижу по 5-6 итераций, пытаюсь отдебажить базовый функционал, который под ту же Телегу пишется с закрытыми глазами.

В какой-то момент меня это достало. Я понял, что проблема не во мне и не в галлюцинациях нейронки. Я просто включил логирование всех входящих POST-запросов и стал дампить реальные вебхуки, которые прилетают от серверов Max. Открыв логи, я понял, почему мы так долго буксовали: то, что написано в документации, и то, что прилетает по факту — это две большие разницы. А слепая привычка писать архитектуру под Telegram Bot API делает только хуже.

Различия с официальной документацией Max API (Docs vs Реальность)

Вскрываем реальные вебхуки Max API

Почему ReAct-агенты ломаются в продакшене и чем их заменить

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

Приветствую читателей.
Мы пытались построить LLM-чат для продакшена.
Через месяц у нас был 20k-токенный prompt, 50 тулзов и ответы по 2 минуты.
В итоге пришлось отказаться от ReAct и перейти на LLMCompiler.

А начали мы с того что компания захотела поекспериментировать с созданием чата

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

Простейший пример чата.

Читать далее

Как дата саинтист имиджборду писал

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

На дворе конец 2023. Я только что уволился из Яндекса и скучаю по ячану, чуть меньше скучаю по этушке, вообще не скучаю по таскам, дедлайнам, ревью. Чтобы заполнить возникший информационный вакуум, пробую переключиться на реддит, hacker news, пикабу, вышивание крестиком, сканворды, пилатес — не то. Тогда мне в голову приходит гениальная идея: а почему бы не сделать свою имиджборду с авторизацией по корпоративной почте крупных российских компаний? Ячан для всех!

Первая мысль — взять готовый движок и допилить под себя, в открытом доступе уже есть: lynx, vichan, wakaba, kareha, fchannel. Потыкался — ничего не понятно. Как ленивый человек решаю, что надо писать своё.
На тот момент я:

Не понимал разницу между HTTP и HTTPS

Не знал, что такое handler, router, middleware

Считал, что DNS — это какой-то раздел электронной музыки

Думал, что куки и кэш — это одно и то же

Не без труда отличал header от body

Не мог пропатчить kde2 под freebsd

Короче говоря, я был именно тем человеком, который должен был писать проект с нуля. Цель понятна, надо выбрать инструменты. Я неплохо знал питон и c++... поэтому языком разработки выбрал Голанг. Мой опыт с Голангом на тот момент ограничивался прослушанным фоном на х2 ШАДовским курсом. Прослушал я его в автопоездке Москва — Челябинск. Не написал на Го ни одной строчки кода, но суммарно прослушал — именно «прослушал», ибо рассмотреть мелкий шрифт на экране телефона, будучи за рулём, решительно невозможно — около 30 часов материала. Написать свой движок имиджборды - хороший повод попрактиковаться.

Читать далее

Codex с телефона, пока ты не за компьютером (даже с контролем git изменений)

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

Бывает так: ушёл на тренировку, сел в кафе, поехал куда-то. В голове крутится задача, которую хочется уже добить. Раньше приходилось ждать, пока вернёшься за стол. Теперь нет.

Codex Remote даёт браузерный интерфейс к Codex CLI на вашей машине. Открываешь с телефона, управляешь сессией, видишь изменения файлов до того, как они применились. Машина работает у тебя дома или на работе, ты где угодно.

Есть также возможность просматривать незакомиченные изменения в git'е в самом диалоге с моделью.

Читать далее

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

Ловушки времени

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

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

Читать далее

Telegram Bot API 9.5: Пользовательские теги и форматирование времени

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

Всем привет!

Сегодня Telegram выпустил небольшое, но как всегда интересное обновление своего Bot API под номером 9.5. Оно оказалось компактным, но в нём есть один интересный момент с надеждой на будущие обновления...

Кстати, одно из нововведений было известно ещё два дня назад в моём ТГ. Подписывайтесь на канал «Код на салфетке», если интересны подобные новости и разборы!

Читать далее

Когда использовать параллельный стрим в Java

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

Параллельные стримы в Java 8 выглядят как бесплатное ускорение: добавил .parallel() — и все ядра побежали работать. Но по факту всё сложнее, так как распараллеливание имеет накладные расходы, зависит от того, насколько хорошо делится источник данных, сколько стоит объединение результатов, и даже от локальности данных в памяти.

В новом переводе от команды Spring АйО на примерах и бенчмарках разберем, почему простая свёртка на маленьких диапазонах может стать медленнее, почему ArrayList часто выигрывает у LinkedList в параллели, как reduce может неожиданно сломаться из-за неверного identity, и что вообще происходит внутри common ForkJoinPool.

Читать далее

LTS, обновления и поддержка (support): что именно вы выбираете в Java и Spring

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

Когда начинается разговор про Java, почти всегда он внезапно уходит в сторону Spring. И это не случайность.

Проблемы с релизами, поддержкой, миграциями, безопасностью — это не «проблемы Spring». Это следствие того, как изменилась сама Java-экосистема.

Чтобы понять, что происходит со Spring, нужно сначала разобраться, что произошло с Java.

Читать далее

Интересный хак для упрощения сложных SELECT в Postgres

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

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

вот пример:

SELECT
price * quantity AS total_price,
(price * quantity) * 0.15 AS tax,
((price * quantity) + ((price * quantity) * 0.15)) AS grand_total
...

Здесь price * quantity вычисляется несколько раз, и tax вычисляется дважды. Но это выглядит еще ок, в реальности это зачастую всякие монструозные свитч-кейсы с NULLIF, COALESCE и прочими ребятами.

Но не суть, вам хочется один раз вычислить значение, без дублирования кода.

Long story short, это делается так:

Читать далее

Pandas на Python: От чтения CSV до сложной аналитики за 1 статью

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

Сколько раз вы пытались открыть в Excel файл на пару миллионов строк и смотрели на зависший белый экран под звук взлетающего кулера? А сколько раз писали трехэтажные циклы for в чистом Python, чтобы просто сгруппировать данные и посчитать среднее?
Pandas — это Excel на максималках и швейцарский нож любого разработчика и аналитика. В этой статье я собрал абсолютную выжимку: 10 главных шагов для работы с таблицами. Разберем вечную путаницу между loc и iloc, правильную очистку от пропусков, группировки и джойны (merge).

Читать далее

Webhook в Telegram и Discord: как подключить и чем лучше polling

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

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

Если вас заинтересовал заголовок, то вы, скорее всего, уже знакомы с разработкой Telegram или Discord-ботов. И что также вероятно: для получения обновлений вы используете обычный polling. Сегодня же я вам предлагаю ознакомиться с другим способом получения обновлений - через webhook.

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