Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
299 - Telegram Web
Telegram Web
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
Go — 100 вопросов/заданий с собеседований

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

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

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

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

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

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

👉 @golang_lib
Go: точечная вставка значения в структуру

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

Для простой структуры этот пакет не нужен, а вот для иерархии посложнее проект dot Golang с открытым исходным кодом придется кстати.

https://medium.com/@mowshon/go-insert-the-value-into-the-structure-with-a-dot-5e806ae96455

👉 @golang_lib
Игрушечный сервер удаленного входа в систему

Реализация программы, похожей на крошечный ssh-сервер, но без защиты. Код можете найти на github здесь, а я объясню, как она работает, в этой статье.

https://jvns.ca/blog/2022/07/28/toy-remote-login-server/

👉 @golang_lib
Делаем RPG на Go: часть 0

В этой серии статей мы будем изучать движок Ebitengine и создадим RPG в процессе.

Что от вас ожидается:
Вам интересна разработка игр на Go
Вы уже владеете этим языком программирования
Никаких шуточек про название движка Ebitengine

Это не курс по программированию на Go, а я не буду убеждать вас, что разработка игр на Go — нечто великолепное. Однако, если вам любопытна эта тема, то мне есть, чем с вами поделиться.

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

👉 @golang_lib
Gotify/server

Простой сервер для отправки и получения сообщений в реальном времени по WebSocket. (Включает элегантный web-ui)

Нам нужен был простой сервер для отправки и получения сообщений (в реальном времени по WebSocket). Для этого существовало не так много проектов с открытым исходным кодом, а большинство существующих были заброшены. Также одним из требований была возможность самостоятельного хостинга. Мы знаем, что существует множество бесплатных и коммерческих push-сервисов.

Фичи
отправка сообщений через REST-API
принимать сообщения через WebSocket
управление пользователями, клиентами и приложениями
Плагины
Web-UI -> ./ui
CLI для отправки сообщений -> gotify/cli
Android-приложение -> gotify/android

https://github.com/gotify/server

👉 @golang_lib
Как управлять секретами приложений Go с помощью Vault

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

Если раньше их можно было хранить вместе с самим кодом, то сейчас - особенно в свете движения за 12-факторные приложения - это уже не так. Хранить любую конфиденциальную информацию в коде считается дурным тоном - и на то есть веские причины.

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

https://www.twilio.com/en-us/blog/manage-go-application-secrets-using-vault

👉 @golang_lib
Apress_Pro_Go_The_Complete_Guide_to_Programming_Reliable_and_Efficient.pdf
17.1 MB
Pro Go: The Complete Guide to Programming Reliable and Efficient Software Using Golang
Автор: Adam Freeman (2022)

Автор бестселлеров Адам Фриман объясняет, как получить максимальную отдачу от Go, начиная с основ и заканчивая самыми продвинутыми и сложными функциями языка. Вы узнаете, как Go строит простую и согласованную систему типов для создания комплексной и продуктивной разработки, позволяющей создавать быстрые и надежные приложения, работающие на разных платформах.

Во время чтения книги вы:
✔️Получите четкое представление о языке и инструментах Go;
✔️Получите глубокие знания стандартной библиотеки Go;
✔️Используете Go для одновременных/параллельных задач;
✔️Используете Go для клиентской и серверной разработки.

👉 @golang_lib
Golang: обработка десятков тысяч одновременных HTTP-запросов даже на Raspberry Pi

Привет! Сегодня мы будем развлекаться с одновременными HTTP-запросами и тем, как обрабатывать действительно большое их количество с минимальным потреблением оперативной памяти. Чтобы сделать этот процесс безумным, я выберу RaspberryPi 4B в качестве сервера и Macbook Air в качестве клиента.

https://waclawthedev.medium.com/golang-handling-tens-of-thousands-of-simultaneous-http-requests-even-on-raspberry-pi-5115ca9b152d

👉 @golang_lib
This media is not supported in your browser
VIEW IN TELEGRAM
Устранение ошибок, связанных с исчерпанием памяти, в моем веб-приложении Golang

В начале этого года я создал приложение с открытым исходным кодом под названием PicoShare. Это простое веб-приложение на языке Golang для обмена файлами. Я использую его для отправки файлов, которые слишком велики для вложений в электронную почту, но я не хочу, чтобы получатель имел дело с Dropbox или Google Drive.

https://mtlynch.io/notes/picoshare-perf/

👉 @golang_lib
Go и SQL: Проблемы с существующими библиотеками (и лучшее решение)

Знакомьтесь, KSQL - библиотека, которую я написал для решения проблем Golang и SQL

За годы работы с Golang я пришел к выводу, что работа с SQL еще не является хорошо решенной проблемой. Имеющиеся библиотеки просто не удобны в использовании, и существует слишком много способов прострелить себе ногу.

Чтобы проиллюстрировать это, я попытаюсь описать в этой статье все эти проблемы в деталях, а затем кратко представить решение, которое я придумал для решения этих проблем: написанную мной библиотеку под названием KSQL.

https://betterprogramming.pub/golang-sql-problems-with-existing-libraries-145a037261b8

👉 @golang_lib
Media is too big
VIEW IN TELEGRAM
Создание исполняемых файлов Go

Одно из главных преимуществ Go - компиляция в один исполняемый файл.

В Go 1.16 появился новый пакет embed, который позволяет встраивать assets в сгенерированный исполняемый файл. Давайте посмотрим, как встроить статический каталог и .sql-файл.

👉 @golang_lib
Простой Regex Matcher Роба Пайка на языке C в Go

В 1998 году Роб Пайк, известный по Go и Plan 9, написал простую программу сопоставления регулярных выражений на языке C для книги "Практика программирования", которую он написал вместе с коллегой, Unix-хакером Брайаном Керниганом. Если вы еще не читали "экзегезу" этого кода, написанную Керниганом, то это определенно стоит того, чтобы потратить 30 минут времени на неспешное изучение этого кода.

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

https://benhoyt.com/writings/rob-pike-regex/

👉 @golang_lib
The Algorithms - Go — Алгоритмы, реализованные на GoLang

Репозиторий представляет собой коллекцию имплементаций и демонстраций наиболее популярных алгоритмов, реализованных в Go.

https://github.com/TheAlgorithms/Go

👉 @golang_lib
🍐 Элегантный Golang REST API Framework

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

Чистый код: Goyave имеет выразительный, элегантный синтаксис, надежную структуру и соглашения. Минимализм вызовов и сокращение избыточности - основные принципы Goyave.
Быстрая разработка: Разрабатывайте быстрее и сосредоточьтесь на бизнес-логике вашего приложения благодаря многочисленным помощникам и встроенным функциям.

Мощные функциональные возможности: Goyave - это доступный, но мощный фреймворк. Фреймворк включает маршрутизацию, разбор запросов, валидацию, локализацию, тестирование, аутентификацию и многое другое!

Надежность: Благодаря продвинутой обработке ошибок и восстановлению после падения, вы можете легко найти ошибки. Фреймворк глубоко протестирован.

https://github.com/go-goyave/goyave

👉 @golang_lib
Media is too big
VIEW IN TELEGRAM
SQLite в Golang - как использовать, на примере Telegram-бота

00:00 Вступление
00:16 Для кого этот ролик?
00:26 Почему именно SQLite?
01:10 Конкурс - 2000 подписчиков
01:30 Интерфейс Storage
01:58 SQLite-реализация Storage
02:37 Установка соединения с БД
03:36 Какием методы будем реализовывать
03:56 Метод Save()
07:36 Метод PickRandom()
10:18 Метод Remove()
10:47 Экранирование данных в SQL-запросах
13:31 Метод IsExists()
14:37 godoc-комментарии
15:40 Функция Init() - инициализация хранилища
17:04 Используем новый SQLite-Storage
20:36 Фиксим мелкие баги
23:10 Дебажим упавшего бота, stack trace
24:17 Тестируем бота с новым хранилищем
25:31 Конкурс - условия
26:38 Заключение

источник

👉 @golang_lib
Создаем базовое приложение для соревнований в реальном времени с помощью Go

Большинство из нас любят конкурсы на знание, верно? Существует множество приложений, которые утоляют нашу жажду, заставляя нас отвечать на вопросы, касающиеся различных профессий.

В этой статье я расскажу, как я реализовал приложение для проведения соревнований в реальном времени на Golang.

https://betterprogramming.pub/build-basic-real-time-competition-app-with-go-96c2ca0d35bf

👉 @golang_lib
Использование graphQL+gRPC+Golang для создания микросервиса аренды велосипедов, с персистенцией на ArangoDB

https://dev.to/myk_okoth_ogodo/using-graphqlgrpcgolang-to-create-a-bike-rental-microservices-with-persistence-on-arangodb-2a6h

👉 @golang_lib
2025/06/19 14:07:45
Back to Top
HTML Embed Code: