Category : golang

golang
Видишь суслика? А он есть! Как главная страница Яндекса переезжала на Go

Переезд большого сервиса с Perl на Golang едва ли кому‑то покажется простой задачей. А теперь представьте, что это главная страница Яндекса, на которую ежедневно заходят миллионы пользователей. И что продукт постоянно дорабатывается, а значит, нельзя взять и остановить разработку на пару лет переезда. Представили? Сложно? А вот, оказывается, всё возможно. Привет, Хабр! Меня зовут Вячеслав Круглов. Я руковожу одной из команд разработки бэкенда главной страницы Яндекса. Расскажу, как мы переписыв…

  • четверг, 13 февраля 2025 г. в 00:00:12
golang
Интерактивный тур по Go 1.24

Релиз Go 1.24 запланирован на февраль, поэтому сейчас самое время узнать, что нового появилось в языке. Официальные release notes (примечания к релизу) довольно сухие, поэтому я подготовил интерактивную версию с множеством примеров, которые покажут, что именно изменилось и как теперь работает код.Также я добавил ссылки на соответствующие предложения (𝗣) и коммиты (𝗖𝗟) для описанных фич. Рекомендую их изучить, чтобы лучше понять детали реализации.Эта статья основана на официальных примечаниях к …

  • четверг, 13 февраля 2025 г. в 00:00:10
golang
Идеи стоящие за дизайном языков программирования

Когда смотришь на дизайн синтаксиса того или иного языка программирования невольно задумываешься, почему сделано так, а не иначе. Тут я обозреваю лишь некоторые идеи стоящие за этим: "программисту нельзя доверять", "язык должен быть удобен для пользователя", "каким качеством должен обладать язык программирования, чтобы заменить другой?".Программисту нельзя доверятьВсе начиналось с С, сего девизом: «Доверяй программисту», на данный момент всем понятно, что это было ошибко…

  • среда, 12 февраля 2025 г. в 00:00:11
golang
Удобная ORM для Go с генерацией миграций и Query Builder’ом: Gormite

GitHubВ процессе разработки на Go нередко встаёт вопрос о создании удобного уровня абстракции для работы с базой данных: хочется иметь и простую генерацию миграций, и гибкий Query Builder. Проект Gormite был создан как раз для решения этих задач. Он предлагает облегчённый подход к ORM, при этом сохраняя гибкость при формировании SQL-запросов.Знакомство с GormiteGormite – это CLI-инструмент, которая не нуждается в прямой интеграции в go.mod. Она читает конфигурацию (mapping) из YAML-файла и по у…

  • среда, 12 февраля 2025 г. в 00:00:10
golang
Механика горутин и каналов в Golang: разбор с примерами

Как работать с данной статьейЗапускайте каждый пример: Не нужно просто читать код. Напечатайте его, запустите, разберитесь в поведении. Экспериментируйте и ломайте: Избавьтесь от каких то этапов, измените буфер каналов, модифицируйте счетчик горутин. Если что-то сломалось, это может помочь лучше понять, как оно работает.Разберись в поведении: Прежде чем запустить измененный код, постарайся предсказать результат. Увидев неожиданное поведение разберись. Не принимай на веру объяснения критикуй и …

  • вторник, 11 февраля 2025 г. в 00:00:10
golang
Закономерности развития языков программирования

В дизайне и эволюции разных языков программирования наблюдаются одни и те же шаблоны, но почему-то редко описываются идеи за ними стоящие, из-за чего возникают вопросы почему сделано так, а не иначе. Тут я обозреваю идеи: "программисту нельзя доверять" и "язык должен быть удобен для пользователя", "каким качеством должен обладать язык программирования, чтобы заменить другой?"с небольшими примерами на C++, Go, Swift.Программисту нельзя доверятьВсе начиналось с С, с его де…

  • вторник, 11 февраля 2025 г. в 00:00:09
golang
Обработка ошибок в Go — Не традиционный подход

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

  • понедельник, 10 февраля 2025 г. в 00:00:05
golang
Долой оверхед: как мы избавились от зависимостей в интеграционном тестировании микросервисов

В микросервисной архитектуре есть множество зависимостей от других сервисов и инфраструктуры. В результате чего возникают проблемы, которые съедают большое количество сил и времени. Приходит, например, тестировщик с описанием воспроизведения бага — а чтобы его воспроизвести, надо долго готовить данные, а потом еще дольше поднимать фронт… После N-й итерации повторять такое вы, конечно, не будете это, мягко говоря, утомляет. Так интеграционные тесты становятся определенным оверхедом вместо того, …

  • суббота, 8 февраля 2025 г. в 00:00:08
golang
FissionGo: как запускать Go-функции в Kubernetes

Привет, Хабр!Сегодня будем разбираться с FissionGo — фреймворком, который обещает избавить нас от работы с деплоями, контейнерами и YAML‑манифестами.Допустим, нам нужно запустить функцию — небольшой кусок кода, который что‑то делает (парсит JSON, отвечает на запрос, обрабатывает webhook). План работы был бы примерно таким:Написать кодЗапихнуть его в контейнерНаписать манифестыНастроить сервисыОбъяснить Kubernetes, как всем этим управлятьНадеяться, что всё не упадёт в продеА Fission убирает пунк…

  • суббота, 8 февраля 2025 г. в 00:00:07