Привет, Хабр! С вами снова Матвей Мочалов из cdnnow!, и в этом посте мы не будем разбираться с FFmpeg - в этот раз наша рубрика «Эээээксперименты!» будет затрагивать объектные хранилища. Разберёмся, чем S3 отличается от S3, а также почему не всё то S3, что называется S3. А заодно эксперимента ради сделаем своё собственное простенькое объектное хранилище на любимом языке всех DevOps и SRE-инженеров – Go.
Go *
Компилируемый, многопоточный язык программирования
Давайте работать с proto ошибками правильно :)
В программировании всегда есть несколько способов решения одной и той же проблемы. Но не все они одинаково эффективны. Сегодня поговорим о способах обработки ошибок в gRPC — удачных и не очень.
Первый питерский митап по Go в этом сезоне: построим PaaS без хардкода и научимся отлаживать приложение в проде
25 сентября в 19:00 инженеры из YADRO и AvitoTech расскажут, как подготовить CEL в конфиге, тестировать с Ginkgo/Gomega и аккуратно отлаживать сервис в проде.
Если придете на митап офлайн, сможете полюбоваться «железом» для ЦОД и телеком-операторов, код для которого пишут Go-разработчики YADRO, и посетить выставку open source-инструментов из сообщества Go SPB. Регистрируйтесь, чтобы попасть на митап в Питере или получить ссылку на трансляцию, где можно будет задавать вопросы спикерам.
Погружение в параллелизм в Go
Привет, Хабр!
Эта статья является неким сборником многих статей про все, что связано с параллелизмом в Go, например: горутины, каналы, select и многое другое.
Я хотел углубиться в тему горутин с параллелизмом и, слушая на фоне "The Doors", поглощал информацию и выделял интересные мысли из статей
Надеюсь, Вы найдете для себя то, что искали.
Истории
Как я свалил рутинные задачи на low-code-платформу и не пожалел
Привет! На связи Леша Шамшур, разработчик ПО LiSeller. Недавно мой хороший знакомый Паша устроился джуниор-разработчиком в отдел бэкенд-разработки Debex: компания продает просроченные долги.
После пришел ко мне и захотел поделиться уже своим опытом работы с low-код-инструментами. Решили, что будет круто выложить инсайты на Хабр. Начнем 👇
Собираем данные из сотни микросервисов, или Как мы разобрали Ozon на кубики, а потом собрали заново
Всем привет! Меня зовут Саша, я руковожу группой разработки Composer Core в Ozon Tech. В этой статье я расскажу о том, как устроена пользовательская часть одного из ведущих российских маркетплейсов, в развитии которой на момент написания статьи участвуют сотни специалистов из десятков команд. При наличии такого количества людей разрабатывать новую функциональность, не рискуя сломать уже существующую, является достаточно сложной задачей.
Поделюсь подходами, которые позволили нам организовать взаимодействие большого количества сервисов доменных команд для формирования общих ответов пользователю. При этом менять содержимое страниц можно буквально по щелчку пальцев, а значит, быстро адаптироваться к постоянно меняющимся требованиям бизнеса.
Продукт, который мы разработали, вряд ли когда-нибудь станет open-source-проектом, так как он слишком зависит от специфики инфраструктуры Ozon Tech. Но основные принципы могут быть полезны при проектировании похожих систем.
В поисках хорошего стиля. Часть 1. Зачем нам свои линтеры на Go в Островке
Мы написали свои линтеры для Go, которые умеют находить пустые инициализации и проверять экспортируемость полей и методов типов. Сегодня мы поговорим о том, как наша команда пришла к собственному линтеру, и немного погрузимся в детали его реализации.
Всем привет! Меня зовут Артём Блохин, я Golang-разработчик в команде интеграций Островка.
Если бы «Рождественская история» Чарльза Диккенса была про стиль кода, то получилось бы как-то так:
«Начнём сначала: код‑стайл умер. Сомневаться в этом не приходилось. Свидетельство о его погребении было подписано девопсом, архитектором и тимлидом. Оно было подписано разработчиком Островка.»
Типизированные eDSL на Go
В статье показано, как реализовать встраиваемый типизированный DSL на Go. Рассматриваемое представление будет типобезопасным, т.е. не позволит сконструировать некорректные выражения (термы), но допускает разные интерпретации выражений. Система типов DSL один-к-одному маппится на систему типов Go, поэтому весь type-checking производится компилятором.
Обычно для этого требуются GADT или HKT. В статье показан механизм кодирования выражений, который не зависит ни от первого, ни от второго.
Применения Continuation-passing style в Go
В этой статье мы рассмотрим концепцию программирования в стиле передачи продолжений и примеры его применения, исследуем, как этот стиль может улучшить читаемость и поддержку кода в приложениях на Go. Также обсудим потенциальные подводные камни и ограничения, чтобы дать полное представление о том, как и когда использовать его в практике разработки.
Под капотом облаков. Строим облачную консоль. Часть 1. Знакомство
Привет, Хабр!
Это моя первая публикация из цикла статей про проектирование и разработку облачной консоли, с помощью которого пользователи могут гибко управлять инфраструктурой.
Идея подсветить данную тему пришла в результате накопленного многолетнего опыта проектирования тех самых облаков и ввиду дефицита информации о подобных системах в публичных источниках.
Думаю, многие из любознательных читателей этой статьи знакомы или сталкивались с такими понятиями, как "облачный провайдер” и "виртуализация".
А вы когда-нибудь задумывались, как происходит создание виртуальных машин в среде виртуализации, когда вы нажимаете на кнопку в консоли AWS? Или как реализуется заказ кластеров Kubernetes и дальнейший контроль жизненного цикла этого продукта: от биллинга услуги до управления доступом и ведения системы аудита?
Если я смог вам заинтересовать, то добро пожаловать под кат.
«Бобер выдыхай»: Go, WinAPI и ассемблер
Что вам приходит в голову при слове «Golang»? Google и микросервисы? Я тоже так думал, но реальность оказалась значительно интересней.
Лучшая система шаблонов в Go
Привет, Хабр!
В этой статье хочу поговорить про, пожалуй, мою самую любимую библиотеку для Go. Это Jet templates. Библиотека, которая очень упрощает работу с шаблонами(templates) в Go.
Продвинутые структуры Redis
Редис – это кеш? А, может быть, это основная база данных? Так мы и живём в Мойре – опенсорс-системе реалтайм-алёртинга, родом из компании Контур. Расскажу вам про плюсы и минусы такого подхода, про жизнь в Редисе при 3 миллионах RPS, про миграции данных и оптимизацию базы.
Ближайшие события
Reflection в Go
Сегодня мы рассмотрим в одну из интересных особенносстей Golang — reflection. Мы рассмотрим, что такое reflection, как он работает, и когда его стоит использовать. Reflection позволяет программам инспектировать свои структуры и модифицировать поведение в runtime.
Написание функционального тестирования в Go
Не все знают, как писать функциональные тесты. В этой статье будут библиотеки, фишки про функциональные тесты, а самое главное — попрактикуемся их писать на примере Rest API.
ChatOps на практике: создание бота для мониторинга логов
Недавно на работе меня попросили придумать рабочую задачку для студентов. Поскольку я работаю в инфраструктурной команде, мои повседневные задачи вряд ли подходят для их домашек или курсовых работ. Чтобы найти подходящую идею, я начал перебирать инструменты, которыми мы с командой часто пользуемся. Большинство из них интегрированы с чатами и ботами, и один из ключевых инструментов — это Алерт Бот. Он отслеживает логи и отправляет оповещения, если происходит что-то необычное. Это позволяет нам быстрее обнаруживать и устранять инциденты.
Как создать генератор кодов верификации на Go с помощью SMS API
Привет, Хабр! Всегда было любопытно, как автоматизировать отправку кодов через SMS для второго этапа подтверждения личности при входе пользователя. Мы с коллегой решили разработать простой, но эффективный инструмент, который мог бы автоматически генерировать и отправлять SMS с кодами пользователя. Для реализации этой задачи выбрали API сервиса МТС Exolve.
Как защитить свое Go-приложение
Очень важно думать о том, чтобы приложения были надежными и защищёнными. Go — язык, который известен своей простотой и производительностью. Но ни один язык не безопасен сам по себе и об этом нужно заботится самостоятельно.
В этой статье мы поделимся с вами методами, которые помогут сделать ваши Go-приложения неприступными крепостями.
Собиратель конфигураций на Go
Начну с того, что я C#-разработчик, но Go мне очень нравится и один из проектов я решил для разнообразия и расширения знаний написать в связке Go
+ React.js
+ MongoDB
. И тут я понял, что не могу найти библиотеку пакет для чтения единых настроек конфигурации из разных источников. Часть настроек была в .env
, часть - в переменных окружения. Хотелось получить экземпляр одной структуры со всеми значениями, выполнив какую-то одну функцию. Возможно, плохо искал. Но, не найдя, решил написать своё. Тем более у меня уже был опыт работы над подобным open-source проектом, но для C#.
Я никогда ранее не писал пакетов для Go, поэтому просто начал писать код как для программы, чтобы просто смотреть, запускать, тестировать. Понять, насколько это реализуемо. А потом уже оформил в пакет.
Как использовать defer в Go
Привет, Хабр!
Defer
— это ключевое слово в Go, которое позволяет отложить выполнение функции до момента завершения выполнения текущей функции. Это относительно простой способ управлять ресурсами.
В этой статье мы и рассмотрим как использовать defer
в Golang.
Вклад авторов
divan0 1343.0quasilyte 840.5mkevac 505.0AloneCoder 370.4varanio 343.4tioffs 327.0sqshq 296.0badcasedaily1 278.0ru_vds 264.4c-darwin 239.0