Обновить

Бэкенд

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

Почему ваши логи бесполезны и как это починить за полчаса

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

Когда продакшен падает в три часа ночи, строка ERROR Something went wrong не помогает никому. В статье разбираем, почему привычные текстовые логи быстро превращаются в шум при реальной нагрузке, как перейти на structured logging, зачем каждому запросу нужен request_id и как настроить нормальные JSON‑логи в Python и Go без лишней инфраструктуры.

Читать далее

Веб vs Мобилка: кто в опасности? Сравниваем безопасность двух миров

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

Спойлер: оба, но по-разному - и это важно понимать.

Каждый раз, когда слышим «у нас все нормально с безопасностью, мы же не банк», что-то внутри сжимается. За этой фразой обычно стоят токены аутентификации в SharedPreferences, SQL-запросы без параметризации и Firebase без правил доступа. Эта статья - попытка честно сравнить два мира, найти точки пересечения и разобраться, почему одни проблемы одинаковые, а другие - принципиально разные.

Исходные данные: OWASP Top 10 Web 2025, OWASP Mobile Top 10 2024, статистика NVD/CVE-базы, данные реальных пентестов, IBM Cost of a Data Breach 2024.

Читать далее

Как работает Shazam?

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

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

Как, прослушав всего несколько секунд музыки в шумном помещении, телефон мгновенно может найти её среди миллионов песен?

Можно подумать, что телефон слушает мелодию или распознаёт текст, но это не так. На самом деле, всё гораздо хитрее.

Читать далее

Centrifugo JS client в Laravel: frontend и production

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

Разбираем frontend и эксплуатацию real-time системы на Laravel и Centrifugo: JS client, reconnect, token refresh, HTTP recovery, Nginx, логи и мониторинг.

Читать далее

Менеджер паролей на python

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

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

Весь мой путь наполнен любовью к русским разработчикам и открытому коду, а также желанием продвигать российские IT‑продукты (не все конечно).

Читать далее

Spring Agent Toolkit: ультимативный набор для вашего AI-агента

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

AI-агенты уже стали частью повседневной разработки. Сначала это выглядит как магия: формулируешь задачу, получаешь код, тесты, иногда даже готовый PR.

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

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

Читать далее

Публикация событий из Laravel в Centrifugo: Events, listeners, queue jobs и безопасный real-time payload

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

В этой статье разберём, как правильно организовать публикацию real-time событий в Laravel: почему не стоит отправлять сообщения напрямую из контроллеров, как использовать Laravel Events и listeners, зачем нужны queue jobs, почему afterCommit() критичен для корректности данных и каким должен быть безопасный payload без полной Eloquent-модели.

Читать далее

node-ipc снова взломали — но не код, а домен за $9. Разбор атаки через DNS-туннели, которой не увидел ни один SIEM

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

npm снова горит — и на этот раз атакующим даже не пришлось ломать код.

Разбираем свежую supply chain-атаку на node-ipc, где доступ к популярному npm-пакету получили через… просроченный домен за $9. Без взлома npm, без bypass 2FA — только forgotten password и DNS.

В статье: как payload крал AWS, SSH и .env, почему эксфильтрация шла через DNS TXT, почему SIEM почти ничего не увидел, как dormant-аккаунты становятся оружием — и почему подобные атаки скоро станут массовыми.

Если у вас есть CI/CD, npm-зависимости или production на Node.js — это стоит прочитать.

Читать далее

Trace Points в C++: диагностика production-систем без перезапуска

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

Одна из самых неприятных особенностей production-проблем заключается в том, что они почти никогда не происходят тогда, когда разработчик готов их исследовать.

Во время разработки всё работает. На тестовом стенде тоже всё выглядит нормально. Логи кажутся вполне достаточными, а диагностическая информация — продуманной и аккуратно организованной. Но затем в production внезапно появляется странная проблема: соединение иногда сбрасывается без видимой причины, один запрос из нескольких тысяч начинает вести себя иначе, сервер под высокой нагрузкой неожиданно входит в reconnect loop или где-то глубоко внутри системы начинает происходить что-то, что невозможно воспроизвести локально.

И почти всегда в этот момент выясняется одна и та же неприятная вещь: логов, которые уже есть в системе, недостаточно.

Именно здесь традиционное логирование начинает постепенно ломаться.

Большинство систем логирования до сих пор построены вокруг довольно простой идеи: заранее решить, какие сообщения должны писаться постоянно. Разработчик добавляет INFO, WARNING, DEBUG, иногда каналы или категории, после чего приложение отправляется в production с надеждой, что этих логов когда-нибудь хватит для диагностики.

Иногда действительно хватает.

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

Первой реакцией обычно становится мысль: “давайте включим DEBUG logging”. На небольших проектах это ещё может работать вполне нормально. Однако в больших системах DEBUG-логи очень быстро превращаются в проблему сами по себе. Они начинают занимать гигабайты, полезная информация тонет в шуме, растёт нагрузка на диск, а иногда и само логирование начинает заметно влиять на производительность и тайминги приложения.

Читать далее

«Сто вопросов» взрослому энтерпрайзу: как мигрировать в облако без API

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

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

В идеальном мире миграция работает как часы: контроллер подключается к платформе по API, автоматически создает сети, разворачивает машины и переносит данные. В суровой реальности крупного энтерпрайза эта схема часто рушится: целевое облако может быть «самописным» и не иметь нужных методов, либо безопасники отказываются пускать стороннее ПО в закрытый контур. Для работы в условиях таких ограничений мы используем режим Direct2Target (D2T). Это подход, при котором данные передаются напрямую на диски заранее подготовленной ВМ, полностью минуя интеграцию с управляющим слоем облака.

В теории концепция звучит изящно, но у инженеров логично возникает скепсис по поводу физики процесса. Я расшифровал техническую сессию с нашего недавнего вебинара. Вопросов под катом, конечно, не сто, но я оставил самую суть — те, что нам чаще всего задают архитекторы: как не утилизировать сеть на 100%, как «наживую» перенести PostgreSQL без потери консистентности, как пробиться через глухой NAT и что делать, если целевая ВМ не завелась.

Кат

Как 1С-специалисту находить клиентов через Биржу заказов Инфостарт

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

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

28 мая в 11:00 мск проведем вебинар для исполнителей заказов на Инфостарте. Разберем, как работать с Биржей заказов не хаотично, а как с понятным каналом привлечения клиентов....

Читать далее

Такая разная агентская разработка: эволюция программирования с нейросетями

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

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

Читать далее

5 слоев кэширования в веб-приложениях: Полное руководство для Python-разработчиков

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

Содержание

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

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

Читать далее

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

Гайд как тестировать внешние API в Python: от DI-мока до настоящего HTTP-сервера

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

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

Эта статья про то, как выбирать инструмент под эту задачу. Не абстрактно — на одном маленьком, но гордом настоящем сервисе catfact-demo-service, в tests/ которого рядом лежат пять способов протестировать одну и ту же интеграцию. К концу мы их сравним и аргументированно выберем тот, который оставили бы в production-проекте.

Читать далее

ClickHouse не тормозит, но не умеет в DML. Часть 2. Append-only

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

Append-only — целебная пилюля для ClickHouse, без которой он скорее обуза, нежели буст для бизнеса. Разберем что это, и как этим пользоваться.

Читать далее

Telegraf.js умер. Как мы оживили фреймворк, переписали ядро на Native Fetch и затащили Bot API 9.6

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

Каждый, кто пишет Telegram‑ботов на Node.js / TypeScript, знает про библиотеку Telegraf.js. Это был стандарт индустрии. Ключевое слово — «был». Оригинальный репозиторий фактически заброшен майнтейнерами, пулл‑реквесты годами висят без ответа, а сам фреймворк застрял в прошлом.

Пока Telegram один за другим выкатывает масштабные апдейты (Звёзды, Подарки, Бизнес‑аккаунты, Улучшенные медиа), официальный Telegraf не поддерживает ничего из этого.

Мне надоело смотреть на падающие в продакшене боты и городить костыли, поэтому я создал форк — telegraf‑hardened. На прошлой неделе мы выпустили мажорный релиз v6.0.0. Рассказываю, как под капотом устроена обновленная либа.

Читать далее

Ego is your limit или как мы сопротивляемся собственному развитию в контексте AI-революции

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

В заметной части ИТ-сообщества до сих пор отмахиваются от AI-ассистентов: ругают за галлюцинации, смеются над «вайб-кодингом» и превозносят биологический мозг. Или это мне так кажется.

Я не сторонник вайб-кодинга и долгое время игнорировал существование агентов, но моё отрицание прогресса стало обходиться мне слишком дорого. И я шагнул на съедение страшным симуляторам программиста на подложке.

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

Да будет срач!

8 PoPs по миру за €46/мес: реальная экономика pet privacy-DNS в цифрах

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

Я полгода в одиночку пилю VantageDNS, privacy-focused recursive DNS с фильтрацией. Аналог NextDNS, юрисдикция EU. Ниже честный построчный разбор того, во что мне на самом деле обходится сеть из 8 нод по миру и контрол-плейн. Не маркетинговое «около ста евро», а реальная цифра, которая каждый месяц списывается с карты: €46.27.

В конце таблица расходов и прикидка, сколько платных юзеров надо, чтобы это перестало быть хобби.

Показать счёт

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

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

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

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

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

Я решил это проверить.

В данной статье будет описана задача и выбранные технологии.

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

В третьей части будет создано решение на базе Apache Spark и его функций по работе с графами.

Бонусом получится сравнить скорость выборки результирующих данных из Postgres с помощью рекурсивных запросов и запросов к Apache Spark с помощью GraphFrame.

Читать далее

Шифрование прикладных данных в .NET — от основ к key chain, ротации и компромиссам поиска

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

Если вы когда-нибудь выкатывали фичу, которая хранит персональные данные - почтовые адреса, заметки в свободной форме, API-токены, идентификационные номера - у вас наверняка возникала та же неприятная мысль: врядли стоит доверять базе данных. Бэкапы копируются на ноутбуки. Снапшоты оседают на файловых ресурсах. Галочка “encryption at rest” в облачной консоли защищает только от одного конкретного вида кражи - от того, что кто-то унесет диск.

Зашифровать данные до того, как они попадут в базу, на слайде звучит просто - AES, ключ, готово. В реальном коде простая версия ломается ровно в тот момент, когда вы пытаетесь ротировать ключ, найти запись по email, или объяснить ревьюверу, каким именно ключом зашифрована конкретная строка.

Читать далее