Что регулярно ломается в реальных сервисах, когда надо совместить YAML, .env, переменные окружения и вложенный Config.Вот абсолютно бытовая ситуация. Есть config.yaml для локалки. Есть .env.example, который у каждого чуть свой. В проде значения прилетают через Docker/Kubernetes/systemd. В коде живет нормальный вложенный Config, а не плоская простыня.И вот в этот момент становится ясно: в Go нет одного «очевидного» инструмента, который без плясок закрывает всю цепочку целиком.Это не наезд на эко…
Привет, Хабр.Сегодня познакомим вас с самой долгожданной новинкой апреля — книгой «Алгоритмы на языке Go», которую мы успели выпустить в продажу 30 числа.Автор книги — Артём Михайлов, пишущий на Хабре под ником Morettom @morett1m, Go- и Rust-разработчик, также ведущий телеграм-канал t.me/coreartem.Внимательные читатели не будут удивлены увидеть эту книгу, поскольку мы систематически наполняем наш ассортимент качественными книгами по алгоритмам для очень разной целевой аудитории. Наиболее фунда…
Введение: Неделю назад я не думала писать такую базу данныхНачиналось всё с банального желания пополнить свое резюме парой строчек. Листала сайты с разными проектами, чтобы в резюме было что‑то посерьёзнее утилит для диагностики. Наткнулась на идею написать KV‑хранилище. Естественно, перед тем как что‑то планировать, нужно было разобраться, что из себя это чудо представляет и какие они вообще бывают. И вот тут для меня началось самое интересное.Случайно получилось, что моя встраиваемая БД — это…
Kubernetes давно стал повсеместной платформой, а написать к нему собственный оператор сегодня — задача нескольких часов. Стандартный путь — kubebuilder на основе controller-runtime: scaffold проекта, типы, реконсайлер. В типовых сценариях этого вполне достаточно. Но как только нагрузка растёт или поведение оператора начинает расходиться с ожиданиями, всплывает целый класс edge-кейсов, причина которых — непонимание того, как controller-runtime устроен внутри. Если вы пишете контроллеры для Kuber…
Не уверены, как правильно структурировать веб-приложение на Go?Выбор правильных имен в кодовой базе — важная (и порой непростая) часть разработки на Go. Это мелочь, которая сильно влияет на результат: хорошие имена делают код понятнее, предсказуемее и проще для навигации; плохие — наоборот.В Go есть довольно строгие соглашения и несколько жестких правил для именования. В этой статье мы разберем эти правила и рекомендации, дадим практические советы и покажем примеры удачных и неудачных имен в Go…
Всем привет! Меня зовут Дима, я QA-инженер по автоматизации в Туту.В микросервисной архитектуре ошибка — это не просто баг в отдельном сервисе. Это сорванный релиз, нестабильные интеграции, потерянные заказы и часы дорогой ручной проверки. Когда сервисов десятки, а релизы идут постоянно, цена отсутствия системной автоматизации становится слишком высокой.Уже больше полутора лет я пишу автотесты на Go. За это время мы прошли путь от «зачем вообще тестировать на Go?» до «почему мы не сделали это р…
С типом float рано или поздно сталкивается почти любой разработчик. Сначала все выглядит просто. Есть float32, есть float64, можно хранить дробные числа, делить, умножать, считать проценты, средние значения, коэффициенты и что угодно еще. Кажется, что это просто «числа с точкой».Но именно здесь у многих начинаются странные баги.Почему 0.1 + 0.2 != 0.3? Почему после серии вычислений число внезапно становится 9.99999999997 вместо 10? Почему сравнение двух значений с float64 иногда работает, а ино…
Зачем вообще писать ещё одно приложение для изучения языкаМой рабочий день - это код. Вечером я хочу разговаривать с кем-то по-английски, а не нажимать на пингвинчиков.Duolingo учит меня заказывать яблоки в магазине.Memrise превратился в видеоплатформу с озвучкой.ChatGPT-чат отлично объясняет грамматику, но не помнит, что я уже разбирал Present Perfect в среду и опять путаю его с Past Simple в пятницу.Я хотел простую штуку: написать модели «давай сегодня про багтрекеры», получить чат на 15 мину…
Знаете, кому 29 апреля стукнуло 30 лет? Спецификации FastCGI. Тридцать лет с 1996 года. Погодите. Эта заметка не про ностальгию по .fcgi-скриптам, которые на каждый запрос форкали отдельный процесс и которыми сегодня никто не пользуется. И не про CGI вообще.Разговор о другом. У нас всех в проде между прокси и бэкендом обычно стоит HTTP. nginx перед Go-приложением, Caddy перед Python-сервисом, Apache перед PHP-FPM, неважно, поверх там HTTP/1.1 или HTTP/2. И вот Эндрю Айер на agwa.name к юбилею F…