Библиотека Go (Golang) разработчика
2.63K subscribers
290 photos
96 videos
29 files
354 links
Полезные материалы по всему, что может быть полезно Golang разработчику. По всем вопросам @evgenycarter
Download Telegram
Lua конфигурация Neovim для разработки на Go

В процессе знакомства с Neovim было прочитано много статей, конфигураций на Github, было просмотрено огромное количество роликов на Youtube на тему настройки, но в большинстве случаев приходилось донастраивать все под себя. В этой статье я расскажу как я настроил Neovim для разработки на Go, используя только Lua плагины и init.lua.

Эта статья может быть полезна тебе, если:
пишешь на Go
есть конфиг на Vimscript, но хочется на Lua
хочется пересесть с тяжелых современных IDE или текстовых редакторов, таких как Goland, Vscode и других, на Neovim

https://habr.com/ru/articles/678298/

👉 @golang_lib
👍2
Distributed Services with Go Your Gui..pdf
5.2 MB
Distributed Services with Go: Your Guide to Reliable, Scalable, and Maintainable Systems
Автор: Travis Jeffery (2021)

Эта книга для разработчиков на Go, которые хотят научиться создавать распределенные системы. Вы знаете основы языка Go и хотите применить свои знания на практике. Создавайте распределенные службы, которые отличаются высокой доступностью, устойчивостью и масштабируемостью. Эта книга - именно то, что вам нужно для применения Go в реальных ситуациях.

Начните с самого необходимого - работы с хранилищами, затем пройдите путь через создание сети клиента и сервера и, наконец, через распределение экземпляров сервера, развертывание и тестирование. Все это сделает кодирование на вашей основной работе или в побочных проектах проще, быстрее и веселее.

👉 @golang_lib
👍2
Minecraft protocol VarInt и VarLong. Как из единиц и нулей сделать число на примере Go?

В этой статье я хочу объяснить на пальцах, как из байтов преобразуются числа в нужные типы данных (VarInt, VarLong). Детально рассмотрим реализацию, примеры и напишем unit-тесты. Вспомним бинарные операции, двоичную и шестнадцатеричную систему счисления.

https://habr.com/ru/articles/677642/

👉 @golang_lib
👍5
Проблемы функции Golang init

Прежде чем говорить о функции init в Golang, необходимо понять, что такое пакет в Golang. Программа go организована в пакеты. Пакет собирает несколько исходных файлов в одном каталоге. Он похож на ящик, в котором находятся некоторые инструменты или небольшая машина. Он является отправной точкой для инициализации всего пакета. По-видимому, это соответствует назначению функции init.

Предположим, что у вас есть код без функции init, например, такой:

// foo.go
package foo

var A int

func bar(){}

// main.go

import "foo"

func main(){
fmt.Println(foo.A)
}


https://habr.com/ru/articles/771858/

👉 @golang_lib
👍3
Использование WebSockets в NextJS и Golang

https://webapp.io/blog/using-websockets-with-nextjs/

👉 @golang_lib
👍4🥱1
Как завершить работу приложения Golang более чистым способом

Одной из главных особенностей GO является возможность параллельного выполнения нескольких задач. Этот язык программирования широко используется благодаря своей универсальности, быстроте выполнения и простоте использования.

Во многих приложениях необходимо уметь изящно завершать работу, особенно когда они имеют дело с каким-либо состоянием. Кроме того, он позволяет выполнять такие задачи, как очистка использованных ресурсов, плавное завершение независимых процессов и многие другие.

https://medium.com/@leonardo5621_66451/how-to-shutdown-a-golang-application-in-a-cleaner-way-e9307b0ea505

👉 @golang_lib
👍4
Результаты исследования Go-разработчиков
- 3/4 Go-разработчиков работают в продуктовых компаниях.
- Большинство - выходцы из разработки на Python и PHP.
- 70% используют Go для написания микросервисов.
- Дженерики ждали все, а в итоге регулярно их используют только 10% разработчиков.
- Самые привлекательные сферы для работы: DevTools, FinTech и FoodTech.

Эти и другие инсайты про то, куда переехали, где работают, что изучают и чем занимаются на работе Go-разработчики – в исследовании от DevCrowd.

👉 @golang_lib
🔥4👍2
100 Go Mistakes and How to Avoid Them .pdf
9.9 MB
100 Go Mistakes and How to Avoid Them
Автор: Teiva Harsanyi (2022)

Книга показывает, как заменить типичные проблемы программирования на языке Go идиоматичным и выразительным кодом. В книге вы познакомитесь с десятками интересных примеров и примеров из практики, научитесь выявлять ошибки, которые могут появиться в ваших собственных приложениях. Автор-эксперт Тейва Харсаньи организует приемы предотвращения ошибок в удобные категории, начиная с типов и строк и заканчивая параллелизмом и тестированием.

👉 @golang_lib
👍8
Clean Services in Go

Я облазил весь интернет в поисках шаблона, который позволил бы мне и моей команде использовать единообразный шаблон, чтобы все инженеры знали, где что искать и где быстро освоить, а также возможности тестирования, изоляции, переносимости и многого другого.

Пока что я не нашел паттерна, который мог бы дать мне это в чистом виде, я рассмотрел factory, builder, options, hexagonal и множество других, и ни один из них не дал мне того, что я хочу, но я нашел хорошее место для структурирования паттерна и хотел бы представить его широкой индустрии.

https://medium.com/@B1scuit/clean-services-in-go-63a7cc953841

👉 @golang_lib
👍3
Бенчмаркинг кода Go

Если вы уже некоторое время программируете на Go, вам, вероятно, очень нравится инструментарий, который поставляется вместе с ним. Сам язык до краев наполнен такими полезными инструментами, как go test, go fmt, go build и т. д. Мы уже рассказывали о тестировании. Сегодня мы рассмотрим, как можно провести бенчмаркинг нашего Go-кода.

https://dev.to/jpoly1219/benchmarking-go-code-1k23

👉 @golang_lib
👍2
Production Ready Go Concurrency

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

Руководство разделено на три части, каждая из которых имеет свою цель. Сначала мы поговорим о "правилах большого пальца", которые обычно являются правильными. Вторая часть посвящена тому, что нужно использовать для написания параллельного кода. И наконец, мы расскажем о том, как написать собственные примитивы параллелизма.

Прежде чем мы начнем, я должен отметить, что у многих из этих рекомендаций есть условия, при которых они не являются лучшим выбором. Основными ситуациями будут производительность и прототипирование.

https://www.storj.io/blog/production-concurrency

👉 @golang_lib
👍4
📌Должность: Ведущий разработчик Golang

Форма занятости: Полная занятость

Место работы: Удаленно

Заработная плата: От 4,000 до 6000 долларов США в месяц

Мы дружный коллектив серийных предпринимателей, за плечами которых более 5 успешных стартапов на мировом рынке.

В нашей команде открыта вакансия Ведущего разработчика Golang, который умеет выстраивать архитектуру проекта, мыслит как разработчик, и не просто "специалист с YouTube". Вы будете работать над передовым проектом по автоматизации социальной активности и анализу поведения.


Основные обязанности:
- Руководство разработкой архитектуры проекта
- Разработка бэкенда нашего продукта
- Руководство командой разработчиков
- Участие во всех фазах жизненного цикла разработки
- Перевод сложных функциональных и технических требований в подробную архитектуру и дизайн

Требования:
- Опыт разработки на Golang не менее 4 лет
- Опыт работы с Go, RabbitMQ, MySQL, и Redis
- Знание различных дизайнов, архитектурных шаблонов и инструментов
- Сильные навыки решения проблем и отладки
- Навыки письменной и устной коммуникации
- Умение эффективно руководить командой и выдвигать проекты вперед

Если вы опытный разработчик Golang и ищете роль руководителя, мы хотели бы с вами встретиться. Для получения дополнительной информации, пожалуйста, свяжитесь с @miminator.

#go #golang #lead
👍5
Создание и тестирование REST API на Go с помощью Gorilla Mux и PostgreSQL

В этом уроке будет показано, как можно создать REST API на базе PostgreSQL в Go, используя Gorilla Mux для маршрутизации. В уроке будет использована разработка, управляемая тестами, и в завершение будет рассказано, как можно постоянно тестировать базу данных в процессе разработки.

https://semaphoreci.com/community/tutorials/building-and-testing-a-rest-api-in-go-with-gorilla-mux-and-postgresql

👉 @golang_lib
👍3👎1
Создаем Pong в вашем терминале

Узнайте, как создать игру Pong в терминале с помощью Golang. Earthly гарантирует последовательную сборку вашей игры Pong на базе Go в любой среде разработки.

Часть 1 https://earthly.dev/blog/pongo/
Часть 2 https://earthly.dev/blog/pong-part2/

👉 @golang_lib
👍3🔥1
Создание безопасного сервиса обмена заметками в Go

В этой статье я буду использовать Go для разработки небольшого веб-сервиса, который может быть использован людьми или организациями для обмена секретами в несколько более приватной форме. У каждого из нас иногда возникает необходимость поделиться секретом с коллегой или другим человеком. Это может быть API-ключ, пароль или даже конфиденциальные данные клиента. Когда мы делимся секретами через такие каналы, как Slack, Teams или Email, мы, по сути, отправляем секрет на серверы совершенно незнакомого человека. Мы не контролируем, как обрабатываются данные, как долго они будут храниться на серверах третьих лиц и кто именно имеет к ним доступ. Передача секретов напрямую через Slack или Teams может иметь и другие нежелательные побочные эффекты. Например, новые сотрудники, добавленные в существующий канал, могут обнаружить ранее переданные конфиденциальные данные в истории чатов канала. Это уже само по себе может быть нарушением безопасности, если эти сотрудники не были заранее допущены к работе. Общие секреты и/или конфиденциальные данные никогда не должны передаваться напрямую через (ненадежные) сторонние каналы.

https://dusted.codes/building-a-secure-note-sharing-service-in-go

👉 @golang_lib
👍4
Конкурентность в Go: пять примеров

Я Артем Чаадаев, Golang-разработчик в МТС Digital. Традиционно считается, что главная фича Go – это «многопоточность из коробки». Этому посвящено немало статей, авторы которых показывают, какие есть примитивы конкурентности в рамках языка. В процессе изучения этих статей я понял, что на начальном этапе изучения языка мне тяжело начать применять конкурентный код не имея каких-то простых наглядных примеров.

Поэтому я собрал в одной статье наиболее распространенные примеры использования конкурентного кода в Go на основе личного опыта.

https://habr.com/ru/companies/ru_mts/articles/680324/

👉 @golang_lib
👍11
Полное руководство по линтингу программ на Go

Линтинг - это процесс выявления закономерностей в коде и составления отчетов о них с целью улучшения согласованности и выявления ошибок на ранних этапах разработки. Это особенно полезно при работе в команде, так как помогает сделать весь код одинаковым, независимо от того, кто его пишет, что снижает сложность и упрощает сопровождение кода. В этой статье я продемонстрирую комплексную настройку линтинга для программ на Go и расскажу о том, как лучше всего внедрить ее в существующий проект.

https://freshman.tech/linting-golang/

👉 @golang_lib
👍5
Media is too big
VIEW IN TELEGRAM
Пишем gRPC сервис на Go - Сервис авторизации / УЛЬТИМАТИВНЫЙ гайд

- Напишем контракт protobuf, разберемся с кодогенерацией
- Научимся работать с ошибками и логами
- Настроим миграции для БД
- Настроим автоматический деплой через GitHub Actions, напишем для этого workflow
- и др.

00:00 Вступление
01:00 Мой Телеграм-канал, зачем на него подписываться
02:04 Теоретический ликбез
06:49 SSO или Auth?
07:58 Авторизация и аутентификация - в чем разница?
08:31 Архитектура авторизации в нашем сервисе
09:51 Что такое JWT и зачем он нужен?
14:01 Архитектура приложения
16:33 Protobuf контракт
31:24 Пишем SSO: каркас и структура проекта
38:03 Конфигурация приложения
52:32 Настраиваем логгер - log.slog
01:03:56 gRPC-сервер и хэндлеры
01:18:48 Запуск и проверка приложения
01:22:04 Graceful shutdown
01:27:08 Хэндлер Login()
01:34:28 Хэндлер Register()
01:36:01 Хэндлер IsAdmin()
01:36:53 Сервисный слой
01:46:27 Метод RegisterNewUser() и хэширование паролей
01:52:05 Метод Login() и сравнение хэшей паролей
01:58:00 Создание JWT-токена
02:04:45 Миграции базы данных
02:23:05 Слой работы с данными: реализация Storage
02:32:09 Собираем все компоненты воедино
02:37:11 Пишем функциональные тесты
03:05:22 Интеграция с другим сервисом: URL Shortener
03:15:05 Покупка облачного сервера для деплоя
03:19:16 GitHub Actions: настраиваем автоматический деплой
03:36:53 Тестируем задеплоенный сервис
03:41:23 Заключение
03:41:35 Наше сообщество - Gopher Club
03:43:16 Как поддержать развитие канала

Исходный код https://github.com/GolangLessons/sso/tree/guide-version

источник

👉 @golang_lib
👍18
Go — 100 вопросов/заданий с собеседований

В этой статье разберём 100 вопросов, они покрывают львиную долю того, что могут спросить на собеседовании джуниор Go-разработчика с практически любой специализацией. Конечно же, в реальной работе на Go требуются немного другие скиллы, чем умение быстро ответить на любой вопрос. Однако сложилась добрая традиция делать из собеседования викторину с главным призом в виде трудоустройства — к этому нужно быть готовым.

Тем не менее, я уверен, что эта статья будет очень полезна и начинающим, и бывалым гоферам. К каждому вопросу я привёл подробный ответ, поэтому можно использовать этот список как справочник с самой основной теорией по Go. Вперемешку с вопросами также и задачи, есть простые/средние/сложные. Некоторые из этих заданий прямо классические и 99% попадутся на собесе, так что полезно будет их прорешать.

https://habr.com/ru/articles/786826/

👉 @golang_lib
👍53🔥2
Простые приемы экономии памяти в Go

Если только вы не создаете прототип сервиса, вам, вероятно, небезразлично, сколько памяти использует ваше приложение. При меньшем объеме памяти снижаются затраты на инфраструктуру, а масштабирование становится немного проще/замедленнее. Несмотря на то, что Go известен тем, что не потребляет много памяти, есть способы еще больше снизить ее потребление. Некоторые из них требуют большого количества рефакторинга, но многие очень просты в исполнении.

https://www.ribice.ba/golang-memory-savings/

👉 @golang_lib
👍2