Блог инженера

History is written by its contributors

Factory Pattern в Go: создание объектов с помощью фабрик

2025-06-10 время чтения 5 мин Patterns Ilya Brin

Factory Pattern решает одну проблему: как создавать объекты, не привязываясь к конкретным типам. Вместо прямого вызова конструктора используется фабричная функция, которая решает, какой именно объект создать.

Читать далее

Ад каналов в Go: как мы победили chan map[string]*map[int]chan struct{}

2025-05-14 время чтения 8 мин Golang Concurrency Refactoring Ilya Brin

Привет, гошник! 👋

Видел ли ты когда-нибудь код вроде chan map[string]*map[int]chan struct{}? Если да, то ты знаешь, что такое ад каналов.

Это история о том, как мы начали с простого, дошли до кошмара и нашли элегантное решение. Real-time система уведомлений, которая выросла от 100 пользователей до 100,000, и как мы рефакторили архитектуру каналов.

Спойлер: в итоге мы заменили весь этот ужас на 3 простых интерфейса и типизированные каналы 🚀

Читать далее

Test Doubles: mocks, stubs и dependency injection в Go

2025-05-09 время чтения 6 мин Golang Testing Quality-Assurance Ilya Brin

Привет, тестировщик! 👋

Твои тесты медленные, хрупкие и зависят от внешних сервисов? Каждый раз когда база данных недоступна, половина тестов падает?

Test Doubles - это твоё спасение. Вместо реальных зависимостей используй подделки: моки, стабы, фейки.

Разбираем, как правильно изолировать код для тестирования и писать быстрые, надёжные unit-тесты в Go 🚀

Читать далее

C Memory Management для Go разработчиков: malloc, calloc, realloc и free

2025-05-01 время чтения 5 мин C Language Ilya Brin

Если вы Go разработчик, привыкший к автоматическому управлению памятью, работа с языком C может показаться архаичной. Но понимание malloc/free критично для CGO и низкоуровневой оптимизации.

Читать далее

Probability Theory: байесовская статистика для A/B тестов на Go

2025-04-29 время чтения 5 мин Mathematics Ilya Brin

Привет, любители Go и статистики!

A/B тестирование повсюду: цвета кнопок, цены, алгоритмы. Но большинство реализаций использует частотную статистику.

Байесовский подход даёт вероятность того, что вариант лучше, а не просто “статистически значимо”.

Разберемся в деталях и реализуем это на Go.

Читать далее

Linear Regression в Go: от нуля до production

2025-04-28 время чтения 7 мин Golang Machine-Learning Ilya Brin

Привет, Go-разработчик!

📊 Думаешь, машинное обучение - это только для Python-разработчиков? Хочешь добавить предсказательную аналитику в свой Go-сервис, но боишься математики?

Пока другие импортируют sklearn, ты узнаешь, как реализовать линейную регрессию на Go с нуля и довести до production-ready решения.

Читать далее

Система уведомлений: как синхронизировать миллионы устройств без боли

Привет, архитектор! 📱

Тебе нужно построить систему уведомлений, которая работает как у больших парней? Чтобы сообщения приходили мгновенно на все устройства пользователя, а сервер не падал от нагрузки?

Разберём, как спроектировать notification service, который выдержит миллионы пользователей и синхронизирует состояние между их устройствами.

Читать далее
Старые записи Новые записи