Если для компиляции proto-файлов вы всё ещё используете protoc, самое время перестать и перейти на buf. Разберём, как это сделать и почему это необходимо. Также рассмотрим проблемы доступа к buf.build.Меня зовут Эдгар Сипки, я Go-разработчик в Ozon Fintech. buf — мощная утилита для линтинга протофайлов, проверки обратной совместимости API, генерации кода и валидации запросов. Однако, из-за санкций она недоступна в России. Поэтому я расскажу, как мы разрабатывали собственное решение в рамках имп…
Бывает, что перед инженерами встает выбор: найти подходящее решение для задачи или написать свое. И часто разработчики предпочитают второй вариант.Большинство докладов в этой подборке — инструкции по созданию кастомных решений, которые инженеры и разработчики из YADRO, Avito Tech, Ozon Fintech и других технологических компаний уже опробовали на собственных продуктах. Если вашей команде не хватает инструмента для фаззинга или обработки ошибок на Go — можете сделать их по примерам, которые предст…
Привет, читатель! Это моя самая первая статья на тему программирования, на написание которой меня побудил интерес к микросервисной архитектуре.Первые строки кода.. Для начала я решил написать всё в монолитной архитектуре так как в силу своего опыта не имел дело с микросервисами и выбрал следующий стек технологий: PythonFastAPIPostgreSQLПримерная схема БД На моё удивление я быстро написал методы API к такой структуре БД, даже успел накинуть тесты) Эта схема выглядит вполне расширяемой …
Будучи поклонником suckless философии, минимализма и простоты в программном обеспечении, я не нахожу простых и маленьких VoIP решений. Программ связанных с VoIP очень много. Но это либо колоссальные системы для построения SIP-based экосистемы, либо что-то из мира WebRTC. Особняком выделяю Mumble -- популярное решение среди геймеров: централизованный сервер, указываешь его адрес и вот уже слышишь в наушниках другого человека. А нет ли чего ещё попроще?Чего я хочу? Просто указать адрес сервера, в…
Всем привет! Меня зовут Дмитрий Королёв, я бэкенд-разработчик в Авито. Go известен своей лаконичностью и простотой синтаксиса, но даже в нём есть множество подводных камней, с которыми можно столкнуться в работе. В этой статье я сделаю разбор распространённых ошибок с примерами и расскажу, как их можно избежать.Массивы и слайсыНачнём с базовых концепций:Массив — последовательность элементов определённого типа и фиксированной длины. Это неизменяемая структура данных и его capacity всегда равна е…
Привет, Хабр!В версии Go 1.22 пакет math/rand/v2претерпел значительные изменения, а в частности - переход на ChaCha8Rand. Этот новый генератор представляет собой модификацию широко известного и проверенного временем шифра ChaCha8, который используется в протоколах TLS и SSH.Немного про сам генераторChaCha8Rand основывается на алгоритме ChaCha8, который сам по себе является облегченной версией шифра ChaCha20. ChaCha8 выполняет восемь раундов перестановок и замен ключа и блока данных, что гарант…
Привет! Я Сино, бэкенд разрабочик на языке Golang. Работаю 1,5 года в банковской сфере.Так как я работаю в команде B2B, из-за этого часто приходится работать с отчётностью, платежами и файлами.В связи с тем, что часто приходится генерировать отчёт в разных файловых форматах, таких как xlsx, pdf, doc и т.п., мне приходится знать все тонкости работы с файлами. Самая частый формат из перечисленного это - excel формат (xlsx), так как, основная работа B2B - это работа с мерчантами (мерчант - это юр…
Многие Golang-разработчики пробовали работать с БД в Go, и у каждого — свои боли. В этой статье поисследуем библиотеку database/sql для работы с абстрактной СУБД и нашу имлементацию database/sql драйвера под СУБД YDB. Рассмотрим трудности эксплуатации при использовании драйвера database/sql на проде. А также расскажем, что мы делали для решения проблем.Меня зовут Алексей Мясников, я — руководитель Application Team в команде разработки YDB. Я очень люблю git blame за то, что с его помощью можно…
Привет, Хабр!GopherJS позволяет переводить Go-код в JavaScript — он предоставляет полноценную совместимость с большинством пакетов стандартной библиотеки Go. Также Gopher поддерживает горутины и каналы!В статье в общих деталях рассмотрим эту замечательную библиотеку.Установим:go get -u github.com/gopherjs/gopherjsОсновы работыgopherjs build - с этой командой можно компилировать Go-код в JavaScript. Она аналогична команде go build, но вместо создания исполняемого файла Go она генерирует файл .js…