Улучшенная маршрутизация HTTP-серверов в Go 1.22
В Go 1.22 ожидается появление интересного предложения - расширение возможностей по поиску шаблонов (pattern-matching) в мультиплексоре, используемом по умолчанию для обслуживания HTTP в пакете net/http.
Существующий мультиплексор (http.ServeMux) обеспечивает рудиментарное сопоставление путей, но не более того. Это привело к появлению целой индустрии сторонних библиотек для реализации более мощных возможностей. Я рассматривал эти возможности в серии статей "REST-серверы на Go", в частях 1 и 2.
Новый мультиплексор в версии 1.22 позволит значительно сократить отставание от пакетов сторонних разработчиков, обеспечив расширенное согласование. В этой небольшой заметке я кратко расскажу о новом мультиплексоре (mux). Я также вернусь к примеру из серии "REST-серверы на Go" и сравню, как новый stdlib mux справляется с gorilla/mux.
https://eli.thegreenplace.net/2023/better-http-server-routing-in-go-122/
👉 @golang_lib
В Go 1.22 ожидается появление интересного предложения - расширение возможностей по поиску шаблонов (pattern-matching) в мультиплексоре, используемом по умолчанию для обслуживания HTTP в пакете net/http.
Существующий мультиплексор (http.ServeMux) обеспечивает рудиментарное сопоставление путей, но не более того. Это привело к появлению целой индустрии сторонних библиотек для реализации более мощных возможностей. Я рассматривал эти возможности в серии статей "REST-серверы на Go", в частях 1 и 2.
Новый мультиплексор в версии 1.22 позволит значительно сократить отставание от пакетов сторонних разработчиков, обеспечив расширенное согласование. В этой небольшой заметке я кратко расскажу о новом мультиплексоре (mux). Я также вернусь к примеру из серии "REST-серверы на Go" и сравню, как новый stdlib mux справляется с gorilla/mux.
https://eli.thegreenplace.net/2023/better-http-server-routing-in-go-122/
👉 @golang_lib
👍5
Обзор синтаксиса и возможностей языка Go (шпаргалка)
Большинство примеров кода взято из книги A Tour of Go, которая является отличным введением в Go. Если вы новичок в Go, пройдите этот тур.
https://github.com/a8m/golang-cheat-sheet
👉 @golang_lib
Большинство примеров кода взято из книги A Tour of Go, которая является отличным введением в Go. Если вы новичок в Go, пройдите этот тур.
https://github.com/a8m/golang-cheat-sheet
👉 @golang_lib
👍1
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
В процессе знакомства с 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
Автор: 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
В этой статье я хочу объяснить на пальцах, как из байтов преобразуются числа в нужные типы данных (VarInt, VarLong). Детально рассмотрим реализацию, примеры и напишем unit-тесты. Вспомним бинарные операции, двоичную и шестнадцатеричную систему счисления.
https://habr.com/ru/articles/677642/
👉 @golang_lib
👍5
Проблемы функции Golang init
Прежде чем говорить о функции init в Golang, необходимо понять, что такое пакет в Golang. Программа go организована в пакеты. Пакет собирает несколько исходных файлов в одном каталоге. Он похож на ящик, в котором находятся некоторые инструменты или небольшая машина. Он является отправной точкой для инициализации всего пакета. По-видимому, это соответствует назначению функции init.
Предположим, что у вас есть код без функции init, например, такой:
https://habr.com/ru/articles/771858/
👉 @golang_lib
Прежде чем говорить о функции 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
Хабр
Проблемы функции Golang init
Прежде чем говорить о функции init в Golang, необходимо понять, что такое пакет в Golang. Программа go организована в пакеты. Пакет собирает несколько исходных файлов в одном каталоге. Он похож на...
👍3
Использование WebSockets в NextJS и Golang
https://webapp.io/blog/using-websockets-with-nextjs/
👉 @golang_lib
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
Одной из главных особенностей 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
- 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
Автор: 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
Я облазил весь интернет в поисках шаблона, который позволил бы мне и моей команде использовать единообразный шаблон, чтобы все инженеры знали, где что искать и где быстро освоить, а также возможности тестирования, изоляции, переносимости и многого другого.
Пока что я не нашел паттерна, который мог бы дать мне это в чистом виде, я рассмотрел 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
Если вы уже некоторое время программируете на 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
Параллелизм - это одна из тех вещей, в которых легко ошибиться, даже при наличии функций параллелизма в 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
Форма занятости: Полная занятость
Место работы: Удаленно
Заработная плата: От 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
В этом уроке будет показано, как можно создать 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
Узнайте, как создать игру 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
В этой статье я буду использовать 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
Я Артем Чаадаев, 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
Линтинг - это процесс выявления закономерностей в коде и составления отчетов о них с целью улучшения согласованности и выявления ошибок на ранних этапах разработки. Это особенно полезно при работе в команде, так как помогает сделать весь код одинаковым, независимо от того, кто его пишет, что снижает сложность и упрощает сопровождение кода. В этой статье я продемонстрирую комплексную настройку линтинга для программ на 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
- Напишем контракт 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