В .NET 9 появилась интересная функциональность — Log Buffering, которая позволяет буферизовать логи в памяти и выводить их только при определенных условиях. Меня заинтересовала эта идея, что я решил реализовать аналогичный механизм для Go. Так появился EmitLog — пакет для условной буферизации логов.Проблема традиционного логированияПредставьте типичный веб-сервис с детальным логированием:func ProcessPayment(ctx context.Context, paymentID string) error { log.Debug("Starting payment proc…
Rattle — лёгкий инструмент для мониторинга логов Docker, который помогает оперативно получать важные ошибки в Telegram до того, как о них напомнит клиент. Всё запускается через Docker Compose — без дополнительной инфраструктуры и сложной интеграции.Rattle — Telegram уведомления из Docker💡 Зачем нужен RattleИнструмент создан для разработчиков небольших проектов — когда нужно быстро получать важные ошибки и сообщения из Docker-контейнеров без развёртывания сложной инфраструктуры.Всё, что требует…
Привет, Хабр! Это Вадим из команды AvitoTech. Поговорить о программировании любите? Обновления обсудить, про подходы похоливарить, вот это вот все. Мы вот такое очень любим и даже вживую собираемся, чтобы поболтать на дринкапах.Дринкап если что – это такая тусовка на которой не монологичные доклады и формальные дискуссии нужно слушать, а разговаривать есть возможность. О наболевших для сообщества темах пообщаться, про личный опыт поговорить с коллегами, поспорить с ними о насущных проблемах. И …
Когда я вижу очередную статью или видеоурок про тестирование кода, я почти уверен, что мне опять расскажут про моки.Создаётся впечатление, что это самый лучший и правильный способ писать тесты, и вообще, невозможно обойтись без моков. Это не так! Можно писать тестируемый код без моков. Более того, использование моков следует избегать и использовать их только в специфичных случаях.Концепция мок-объектовКонцепция мок-объектов была впервые представлена в статье Endo-Testing: Unit Testing with Mock…
Несколько лет назад я начал добавлять Go в свой арсенал языков (будучи на тот момент Java разработчиком). Мне было очень непривычно. Более того, я принял язык не с первой попытки. Причём пришлось принять его больше из-за сложившихся обстоятельств, чем по собственному желанию.Но прошло время, Go стал моим основным языком и, рискну сказать, любимым. В статье ниже расскажу, почему язык казался мне непривычным, какие парадигмы мне пришлось поменять в своей голове и почему во многом это оказалось бо…
Здравствуйте,Меня зовут Александр Певзнер, и я программирую на Си и Go. Go обычно ассоциируется с бакендом, микросервисами и вот этим вот всем. Но я использую его необычным образом: я пишу на нём системное ПО.Почему я это делаю именно на Go? Этот язык привлекает меня своей простотой, лаконичностью, ясной семантикой, прекрасной документацией и великолепной стандартной библиотекой.Одна из моих программ, ipp-usb, написанная на Go, входит во все дистрибутивы Linux и *BSD и делает возможным использо…
Конкурентность — одна из самых мощных возможностей Go, и её освоение критически важно для создания масштабируемых и эффективных приложений. В этой статье мы рассмотрим 7 шаблонов конкурентности в Go, которые помогут вам писать надёжный код.1. Пул воркеровОписание: Пул воркеров создаёт фиксированное количество горутин, которые обрабатывают задачи из общей очереди. Этот шаблон полезен для управления количеством одновременно выполняемых задач и оптимизации использования ресурсов.package main impo…
В мире разработки веб‑приложений (да, да, это тот самый хайп про «хайлоад», «легковесные потоки», «io‑bound нагрузки» и другое) Go завоевал популярность благодаря своей производительности, легкости и надежности. Одним из ключевых компонентов экосистемы Go является стандартный пакет net/http, который предоставляет инструменты для создания HTTP‑серверов и клиентов. Однако, несмотря на кажущуюся простоту использования этого пакета, понимание внутренних механизмов работы сервера может значительно п…
Современные пользователи ожидают, что видео загрузится мгновенно, не зависнет на 47-й секунде и будет защищено от посторонних глаз. При этом большинство из них не догадывается, кто именно доставляет этот контент, и где начинается «магия» — а где инженерия.Мы в Kinescope — те, кто эту магию делает. Видео, которое вы смотрите в интернете, вполне может идти через нашу инфраструктуру — пусть даже вы об этом не знаете. Под капотом у нас: высоконагруженные сервисы, сотни тысяч RPS, терабиты трафика и…