Оптимизация буферов протоколов в приложениях Go

Оптимизация буферов протоколов в приложениях Go

Если вы когда-нибудь задумывались, почему ваше Go-приложение потребляет память, как на буфете с неограниченным количеством еды, скорее всего, вы не оптимизировали использование Protocol Buffers. Я сам был в такой ситуации, с ужасом глядя на профили кучи, обычно испытывая те же чувства, что и при проверке банковского счёта после ночной прогулки. Но вот хорошая новость: Protocol Buffers в Go могут быть невероятно быстрыми и эффективными по использованию памяти, если знать приёмы оптимизации....

16 октября 2025 14:01 · 5 минут · 1018 слов · Maxim Zhirnov
Оптимизация производительности приложения Python с помощью Cython

Оптимизация производительности приложения Python с помощью Cython

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

15 октября 2025 14:01 · 5 минут · 1038 слов · Maxim Zhirnov
Миф о безопасности Rust: Утечки памяти в предположительно 'безопасном' коде

Миф о безопасности Rust: Утечки памяти в предположительно 'безопасном' коде

Начну с признания, которое может вызвать недовольство в сообществе Rust: Rust не предотвращает утечки памяти. Вот, я это сказал. И прежде чем возьмутся за вилы, позвольте уточнить: это не баг, это особенность. Вернее, это продуманное дизайнерское решение, которое раскрывает нечто увлекательное о том, что на самом деле означает «безопасность памяти». Видите ли, когда мы, евангелисты, говорим, что Rust «безопасен в плане памяти», мы рисуем довольно широкими мазками. Нам нравится противопоставлять его C и C++, где висячий указатель может вызвать демонов через ваше нос (неопределённое поведение, для непосвящённых)....

15 октября 2025 06:01 · 5 минут · 962 слова · Maxim Zhirnov
Почему Ваш процесс собеседования по программированию нарушен (И Вы это знаете)

Почему Ваш процесс собеседования по программированию нарушен (И Вы это знаете)

Расскажу о том, как в последний раз реализовывал бинарное дерево поиска с нуля на работе. Никогда. А за сколько времени до этого? Тоже никогда. Приходилось ли мне обращать связанный список в производственной среде? Как вы уже догадались — никогда, и если бы такое случилось, меня бы, наверное, уволили за то, что я не использовал стандартную библиотеку. И вот мы в 2025 году, и по-прежнему просим кандидатов выполнять алгоритмические упражнения, которые имеют примерно такое же отношение к их повседневной работе, как средневековые рыцарские турниры к современному транспорту....

12 октября 2025 06:01 · 6 минут · 1103 слова · Maxim Zhirnov
Разработка плагинов Jenkins с помощью Groovy: Полное практическое руководство

Разработка плагинов Jenkins с помощью Groovy: Полное практическое руководство

Так, вы уже какое-то время используете Jenkins, кликаете по его веб-интерфейсу, настраиваете пайплайны и иногда ругаетесь, когда что-то ломается в 3 часа ночи. Но потом однажды вы думаете: «Хотелось бы, чтобы Jenkins мог делать вот это конкретное дело». Вы ищете плагин, пролистываете сотни результатов, и ничего не подходит под ваши нужды. Ну что ж, друг мой, пришло время закатать рукава и построить свой собственный плагин. Не волнуйтесь — разработка плагинов для Jenkins с помощью Groovy не так страшна, как отладка инцидента в продакшене без логов....

10 октября 2025 14:01 · 4 минуты · 1 слово · Maxim Zhirnov