Освоение асинхронного Python: создание высокопроизводительных приложений с помощью asyncio

Представьте себе: вы в кофейне, и там всего один бариста. В синхронном мире этот бариста примет ваш заказ, помолет зёрна, приготовит кофе, подаст его, почистит машину и только потом перейдёт к следующему клиенту. Тем временем двадцать человек стоят в очереди, постукивая ногой и проверяя часы. Звучит неэффективно? Добро пожаловать в мир до asyncio. Теперь представьте, что тот же бариста может принимать несколько заказов, запускать несколько процессов приготовления и подавать готовые кофе, пока другие ещё готовятся....

13 августа 2025 14:01 · 5 минут · 943 слова · Maxim Zhirnov

Аргументы против того, чтобы всегда использовать функции Serverless

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

8 августа 2025 06:01 · 6 минут · 1 слово · Maxim Zhirnov

Искусство написания непереносимого кода: Когда выгодно использовать Lock-In

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

4 августа 2025 06:00 · 4 минуты · 1 слово · Maxim Zhirnov
Сделает ли WebAssembly JavaScript устаревшим через 5 лет?

Сделает ли WebAssembly JavaScript устаревшим через 5 лет?

Когда началась революция WebAssembly (Wasm), разработчики JavaScript коллективно пролили свой ремесленный кофе. Паника была ощутима: «Это конец JavaScript?» Пять лет спустя мы всё ещё используем оба языка, но почему? Давайте разберёмся в этом техническом танго с примерами кода, бенчмарками производительности и жестокой честной проверкой реальности. Великий миф о производительности Преимущество WebAssembly в скорости реально — для конкретных задач. Выполнение C++, скомпилированного в Wasm, превосходит JavaScript в сценариях с высокой нагрузкой на вычисления....

11 июля 2025 06:00 · 3 минуты · 596 слов · Maxim Zhirnov
Оптимизация WebSocket в высоконагруженных приложениях Go: руководство для практиков

Оптимизация WebSocket в высоконагруженных приложениях Go: руководство для практиков

Вы когда-нибудь пытались пасти кошек, жонглируя при этом бензопилами? Примерно так ощущается управление WebSockets в высоконагруженных системах Go без правильных оптимизаций. Я, как человек, который случайно устраивал DDoS-атаки на свои собственные серверы чаще, чем мне хотелось бы признать, обобщил свои с трудом усвоенные уроки в этом руководстве. Мы превратим ваши обработчики WebSocket из перегруженных гремлинов в закалённых в боях воинов. Управление подключениями: Танго с горутинами Горутины в Go делают параллелизм обманчиво простым — пока вы не создадите тысячи горутин для WebSocket-подключений и не увидите, как утекает память....

10 июля 2025 14:00 · 4 минуты · 1 слово · Maxim Zhirnov