Category : golang

golang
Разбираемся, что такое S3 и делаем простое объектное хранилище на Go

Привет, Хабр! С вами снова Матвей Мочалов из cdnnow!, и в этом посте мы не будем разбираться с FFmpeg — в этот раз наша рубрика «Эээээксперименты!» будет затрагивать объектные хранилища. Разберёмся, чем S3 отличается от S3, а также почему не всё то S3, что называется S3. А заодно эксперимента ради сделаем своё собственное простенькое объектное хранилище на любимом языке всех DevOps и SRE-инженеров — Go.Что такое вообще объектные хранилища?Объектные хранилища — это способ хранения данных, созда…

  • пятница, 6 сентября 2024 г. в 00:00:07
golang
Погружение в параллелизм в Go

Привет, Хабр!Я просмотрел не мало источников, много из них были англоязычными, но хочу выделить отдельное спасибо авторам этих статей на Xабре:https://habr.com/ru/companies/mvideo/articles/778248/https://habr.com/ru/articles/141853/https://habr.com/ru/articles/490336/Эта статья является неким сборником многих статей про все, что связано с параллелизмом в Go, например: горутины, каналы, select и многое другое. При создании статьи моя "карта" выглядела так: Я хотел углубиться в тему горут…

  • четверг, 5 сентября 2024 г. в 00:00:14
golang
Первый питерский митап по Go в этом сезоне: построим PaaS без хардкода и научимся отлаживать прилож…

25 сентября в 19:00 инженеры из YADRO и AvitoTech расскажут, как подготовить CEL в конфиге, тестировать с Ginkgo/Gomega и аккуратно отлаживать сервис в проде.Если придете на митап офлайн, сможете полюбоваться «железом» для ЦОД и телеком-операторов, код для которого пишут Go-разработчики YADRO, и посетить выставку open source-инструментов от сообщества Go Spb. Регистрируйтесь, чтобы попасть на митап в Питере или получить ссылку на трансляцию, где можно будет задавать вопросы спикерам.Митап откро…

  • четверг, 5 сентября 2024 г. в 00:00:12
golang
Давайте работать с proto ошибками правильно :)

В программировании всегда есть несколько способов решения одной и той же проблемы. Но не все они одинаково эффективны. Сегодня поговорим о способах обработки ошибок в gRPC — удачных и не очень.message Result { oneof response { error.v1.Error error = 1; info.v1.Info info = 2; } }На первый взгляд может показаться, что использование oneof для представления либо ошибки, либо результата — это удобно. Однако такой подход вносит ненужную сложность в протокол обмена сообщениями и ухудшает ч…

  • четверг, 5 сентября 2024 г. в 00:00:11
golang
Как я свалил рутинные задачи на low-code-платформу и не пожалел

Больше не переживаю за горящие дедлайныПривет! На связи Леша Шамшур, разработчик ПО LiSeller[ссылка уд. мод.]. Недавно мой хороший знакомый Паша устроился джуниор-разработчиком в отдел бэкенд-разработки Debex: компания продает просроченные долги. После пришел ко мне и захотел поделиться уже своим опытом работы с low-код-инструментами. Решили, что будет круто выложить инсайты на Хабр. Начнем 👇 В первый месяц я успевал закрывать одну задачу за другой: и исправить нерабочую форму регистрации, и ав…

  • среда, 4 сентября 2024 г. в 00:00:07
golang
В поисках хорошего стиля. Часть 1. Зачем нам свои линтеры на Go в Островке

Мы написали свои линтеры для Go, которые умеют находить пустые инициализации и проверять экспортируемость полей и методов типов. Сегодня мы поговорим о том, как наша команда пришла к собственному линтеру, и немного погрузимся в детали его реализации.Всем привет! Меня зовут Артём Блохин, я Golang-разработчик в команде интеграций Островка.Если бы «Рождественская история» Чарльза Диккенса была про стиль кода, то получилось бы как-то так:«Начнём сначала: код-стайл умер. Сомневаться в этом не приход…

  • пятница, 30 августа 2024 г. в 00:00:12
golang
Собираем данные из сотни микросервисов, или Как мы разобрали Ozon на кубики, а потом собрали заново

Всем привет! Меня зовут Саша, я руковожу группой разработки Composer Core в Ozon Tech. В этой статье я расскажу о том, как устроена пользовательская часть одного из ведущих российских маркетплейсов, в развитии которой на момент написания статьи участвуют сотни специалистов из десятков команд. При наличии такого количества людей разработка новой функциональности, без риска сломать уже существующую, является достаточно сложной задачей.Поделюсь подходами, которые позволили нам организовать взаимод…

  • пятница, 30 августа 2024 г. в 00:00:12
golang
Типизированные eDSL на Go

В статье показано, как реализовать встраиваемый типизированный DSL на Go. Рассматриваемое представление будет типобезопасным, т.е. не позволит сконструировать некорректные выражения (термы), но допускает разные интерпретации выражений. Система типов DSL один-к-одному маппится на систему типов Go, поэтому весь type-checking производится компилятором.Обычно для этого требуются GADT или HKT. В статье показан механизм кодирования выражений, который не зависит ни от первого, ни от второго.В отличие …

  • понедельник, 26 августа 2024 г. в 00:00:15
golang
Применения Continuation-passing style в Go

В этой статье мы рассмотрим концепцию программирования в стиле передачи продолжений и примеры его применения, исследуем, как этот стиль может улучшить читаемость и поддержку кода в приложениях на Go. Также обсудим потенциальные подводные камни и ограничения, чтобы дать полное представление о том, как и когда использовать его в практике разработки.ВведениеПри обычном (Direct style) вызове мы подаём на вход функции параметры и на выходе ожидаем какое-то значение. Например, функция сложения:func a…

  • воскресенье, 25 августа 2024 г. в 00:00:06