Golang Дайджест
7.75K subscribers
36 photos
1 file
165 links
Самое интересное из мира Go: новости, статьи, проекты, сервисы, изменения в языке и др.

Посты публикуются не часто - только самое важное, с чем я лично ознакомился.

Поэтому можно не мьютить канал =)

Обратная связь: @justskiv
Download Telegram
Channel created
#статья #dyi

Интересная статья о написании "игрушечного" DNS-резолвера. Также автор простым языком даёт необходимый ликбез.

Хороший способ получше разобраться в устройстве DNS и потрогать его своими руками.

https://jvns.ca/blog/2022/02/01/a-dns-resolver-in-80-lines-of-go/
#репозиторий #проект #утилита

Cheat - консольная утилита для создания и просмотра "шпаргалок" для командной строки (написана на Go).
Помогает работать с командами, которые мы часто используем, но недостаточно часто, чтобы запомнить.

Пример:

Нам понадобилось поработать с архивом с помощью tar, пишем:

cheat tar

Получаем:

# To extract an uncompressed archive:
tar -xvf '/path/to/foo.tar'

# To extract a .gz archive:
tar -xzvf '/path/to/foo.tgz'

# To create a .gz archive:
tar -czvf '/path/to/foo.tgz' '/path/to/foo/'

# To extract a .bz2 archive:
tar -xjvf '/path/to/foo.tgz'

# To create a .bz2 archive:
tar -cjvf '/path/to/foo.tgz' '/path/to/foo/'

https://github.com/cheat/cheat
#репозиторий #проект

Коллекция алгоритмов, реализованных на Go в образовательных целях.

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

https://github.com/TheAlgorithms/Go
#статья

Отличная статья о том, что такое пул соединений в MySQL, почему он необходим, и как его правильно настроить для Go-клиента.
Тема описана очень подробно, читается интересно.

В начале присутствует краткий ликбез про клиент-серверный протокол MySQL.

https://habr.com/ru/company/citymobil/blog/583558/
#статья

Как использовать пакет dockertest в Go.

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

Но самый простой и удобный способ, на мой взгляд - автоматическое поднятие контейнера в докере при запуске теста. Тогда вашим тестам не потребуется ни какое внешнее окружение - запускаем тест, поднимаются необходимые контейнеры с зависимостями, прогоняются тесты, контейнеры удаляются.

Сделать это можно, например, с помощью библиотеки dockertest. В статье на наглядном примере демонстрируется, как этим пользоваться.

https://eax.me/golang-dockertest/
#статья #diy #english

Делаем load balancer на Go (Implement a load balancer in Golang)

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

https://dev.to/bmf_san/implement-a-load-balancer-in-golang-8gj
#новость #generics #репозиторий

Дженерики наконец-то вышли, дождались! ❤️

Состоялся релиз Go 1.18, в который они вошли.

В качестве знакомства, предлагаю взглянуть на данный репозиторий. Это библиотека в стиле Lodash (крайне популярной библиотеки "на все случаи жизни" из мира JS).

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