Всем привет! Меня зовут Сухарев Даня, я руководитель FMS-продукта (Fleet Management System) в каршеринге Ситидрайв. Представьте 19 000+ автомобилей, которые нужно обслуживать, заправлять, мыть, чинить и следить, чтобы всё работало как часы. А теперь добавьте к этому старую Админку, разрозненные системы, бесконечные чаты и онлайн-таблицы, в которых исполнители координируют работу. Мы поняли, что так дальше нельзя, и за 3 квартала переписали всё, создав новую систему управления автопарком и мобил…
Особенность Go — удобный механизм конкурентности. Создавать конкурентные задачи в парадигме языка можно буквально «бесплатно» и предельно просто: достаточно написать ключевое слово go перед вызовом функции — и она начнет выполняться независимо от породившего ее потока.Но, чтобы такой код приносил пользу, необходимо правильно управлять синхронизацией: собирать результаты, корректно обрабатывать ошибки и учитывать возможные сценарии выполнения. На практике этому аспекту часто уделяют недостаточно…
Всем привет! На связи Speach (ex. IT-People). В прошлом году мы сменили имя, но не изменили своей любви к конференциям. И продолжаем организовывать самые душевные и классные мероприятия для айтишников. Приглашаем принять в них участие.25 апреля, DUMP EKB, ЕкатеринбургКрупнейшая конференция разработчиков на Урале, куда приезжают более 2000 человек! Конференция, которая традиционно собирает топовых IT-экспертов со всей страны. В 12 секциях прозвучат десятки докладов ТОЛЬКО на актуальные темы. Впе…
Давайте спроектируем с нуля планировщик Go — начнём с самой простой и понятной наивной реализации, а затем шаг за шагом будем разбираться, какие изъяны в ней есть, и придумывать как их решать, постепенно усложняя общую модель.Это один из лучших способов понять сложную систему или концепцию — пройти путь её поэтапного проектирования. Система сложна, осознать её очень непросто, но мы разобьём её на простые шаги, понять которые очень легко. После этого пазл сам собой сложится в голове, и общая кар…
Привет, Хабр! Сегодня рассмотрим паттерн Strategy в Go на примере котиков — от простых стратегий поведения до динамической смены алгоритмов в многопоточном окружении. Паттерн Strategy — это способ организации кода, при котором поведение объекта можно менять динамически, не изменяя его структуру. То есть мы не зашиваем логику прямо в класс (или структуру, если говорим о Go), а выносим её в отдельные стратегии — независимые объекты, реализующие единый интерфейс. Это избавляет от перегруженных if/…
Привет, Хабр!Сегодня рассмотрим regexp — стандартный пакет Go для работы с регулярными выражениями. Если вы уже пользовались регулярками в других языках (например, Python, JavaScript или Perl), то знаете, как они могут нагружать процессор и вызывать некоторые подвисания.Основное отличие Go — он использует движок RE2, который не поддерживает бэктрекинг. Это значит, что он работает за линейное время и не устроит сюрпризов в виде зависшего сервера.Компиляция regexp: как её делать правильно?Перед т…
Go 1.24 привнес в язык новый тип указателей – слабые указатели (weak pointers). В этой статье разберёмся, что они из себя представляют, как устроены внутри компилятора и runtime, а также как их использовать для оптимизации кода. Мы подробно изучим внутреннее устройство новых указателей, примеры их применения (например, для создания самоочищающихся кешей) и посмотрим, как они работают под капотом с точки зрения управления памятью и производительности.Что такое слабые указатели и зачем они нужныС…
ВведениеВ версии Go 1.24 разработчики кардинально изменили внутреннюю реализацию map, перейдя с традиционного механизма цепочек бакетов на Swiss Table. Этот новый подход улучшает производительность, снижает использование памяти и делает операции с map более эффективными. В этой статье мы не будем смотреть принципиальную разницу в подходах, это вы можете прочитать в оригинальной статье или переводе на хабре. Я же хочу быстро посмотреть изменения в коде, включая создание map, поиск элементов, обр…
Привет, Хабр! Инструмент, который генерирует производительный и безопасный код для работы с базой данных — миф или реальность? В этой статье обсудим, что такое sqlc, откуда он появился и какие идеи в него заложены. Разберём его возможности и ограничения, а также кейсы, когда он подходит лучше всего.Меня зовут Евгений Конечный, я Cluster Lead в Uzum Market, самом большом маркетплейсе в Узбекистане. В этой статье расскажу про инструмент для кодогенерации, который называется sqlc. Сразу оговорюсь,…