Свежая подборка новостей и материалов
Интересное в этом выпуске
-
Веб-браузер
-
Мониторинг почтовых служб
-
Сканер уязвимостей
-
Зашифрованная файловая система
Приятного чтения!
Материалы для обучения
-
Руководство для начинающих по разумным абстракциям с использованием Golang
-
Go-patterns (паттерны проектирования с примерами на Golang)
Новости, события
-
Модули включены по умолчанию в Go 1.16 теперь go-команда по умолчанию создает пакеты в режиме с поддержкой модулей
-
Профилирование блоков в Go контролирует долю событий блокировки горутин
-
Generic предложение добавить дженерики принято
-
Embed новый пакет embed обеспечивает доступ к файлам, встроенным в программу во время компиляции, с помощью новой директивы //go:embed
-
Unicode пакет unicode и связанная с ним поддержка во всей системе были обновлены с Unicode 12.0.0 до Unicode 13.0.0, что добавляет 5930 новых символов, включая 4 новых скрипта и 55 новых эмодзи
Предложения по улучшению языка
-
https://github.com/golang/go/issues/44221 - encoding/csv: Добавить возможность получения номера строки записи
Предложение предлагает новый метод:
func (r *Reader) Line() int
-
https://github.com/golang/go/issues/44253 Предложение добавить в дженерики тип и размер массива
type Array8[T any] interface {type [8]T}type ArraysOfSomeSizes[T any] interface {type [2]T, [4]T, [8]T, [16]T}
предложение предлагает следующий синтаксис для выражения этой идеи:
type Array[T any] interface {type []T}
-
https://github.com/golang/go/issues/36460 - cmd/go: Отложенная загрузка модуля
-
https://github.com/golang/go/issues/44551 Предложение добавить поддержку тестирования фаззинга
func FuzzMarshalFoo(f *testing.F) { // Seed the initial corpus f.Add("cat", big.NewInt(1341)) f.Add("!mouse", big.NewInt(0)) // Run the fuzz test f.Fuzz(func(t *testing.T, a string, num *big.Int) { t.Parallel() // seed corpus tests can run in parallel if num.Sign() <= 0 { t.Skip() // only test positive numbers } val, err := MarshalFoo(a, num) if err != nil { t.Skip() } if val == nil { t.Fatal("MarshalFoo: val == nil, err == nil") } a2, num2, err := UnmarshalFoo(val) if err != nil { t.Fatalf("failed to unmarshal valid Foo: %v", err) } if a2 == nil || num2 == nil { t.Error("UnmarshalFoo: a==nil, num==nil, err==nil") } if a2 != a || !num2.Equal(num) { t.Error("UnmarshalFoo does not match the provided input") } })}
-
https://github.com/golang/go/issues/44412 Предложение добавить Time.UnixMilli и Time.UnixMicro
// UnixMilli returns the local Time corresponding to the given Unix time,// msec milliseconds since January 1, 1970 UTC.func UnixMilli(msec int64) Time {if msec%1e3 < 0 {return unixTime(msec/1e3-1, int32((msec%1e3)1e6)+1e9)}return unixTime(msec/1e3, int32((msec%1e3)1e6))}// UnixMicro returns the local Time corresponding to the given Unix time,// usec milliseconds since January 1, 1970 UTC.func UnixMicro(usec int64) Time {if usec%1e6 < 0 {return unixTime(usec/1e6-1, int32((usec%1e6)1e3)+1e9)}return unixTime(usec/1e6, int32((usec%1e6)1e3))}
Статьи
-
Отправка и подделка писем с помощью пользовательских шаблонов в Golang
-
Создание Swagger и пользовательского интерфейса SwaggerUI для фреймворка Echo
-
Создаем бессерверное приложение с помощью Azure Functions и Go
-
Популярные задачи для собеседований бэкенд-разработчиков на Go и их решения
Инструменты
-
Инструмент непрерывной доставки GitOps для Kubernetes Argo CD
-
Сканирование для различных протоколов TCP, DNS, HTTP, File на основе шаблонов Nuclei сканер уязвимостей
-
Плагин для Terraform, который позволяет управлять полным жизненным циклом ресурсов AWS. Этот провайдер поддерживается внутри группы HashiCorp AWS Provider Terraform
-
Высокопроизводительная библиотека по работе с json Замена "encoding / json"
-
Инструмент обнаружения поддоменов. Обнаруживает поддомены для веб-сайтов с помощью пассивных онлайн-источников. Он имеет простую модульную архитектуру и оптимизирован по скорости Subfinder
-
Кросс-платформенное прокси сервер/клиент с шифрованием Brook
-
Настраиваемый механизм подсказок для любой оболочки, который может изменять строку подсказки с помощью функции или переменной Oh-my-posh
-
Горизонтально масштабируемая и распределенная база данных GraphQL с бэкендом графа Dgraph
-
Инструмент для изучения шахматных дебютов Chess-explorer-go
-
Небольшой и простой компилятор Go Babygo
-
Cli инструмент для выполнения sql запросов: поддержка sql, csv, ltsv, json, tbln Trdsql
-
Инструмент для работы с типом файлов MP4 Go-mp4
-
Платформа для создания приложений блокчейна на Golang Cosmos-SDK
-
Мониторинг почтовых служб, получение писем, проверка аккаунтов Сheck-mail
-
Высокопроизводительный, неблокирующий tcp фреймворк Nbio
-
Быстрый и гибкий DNS-сервер CoreDns
-
Веб-браузер умеет управлять cookie, историей, созданием вкладок, подменой юзер-агента Surf
-
Зашифрованная файловая система GoCryptfs
-
Консольное приложение для отслеживания и мониторинга статистики криптовалют в режиме реального времени Cointop
-
Интерфейс командной строки git Bit
-
Сервис собирает забавные сообщения о коммитах из Github Commits.lol
-
Структура файловой системы, обеспечивающая простой, унифицированный и универсальный API Afero
-
Реализация FrodoKEM, практическая инкапсуляция ключей с квантовой безопасностью FrodoKEM
-
Симулятор движения мыши Busy
Видео
-
Серия уроков Разработка rest api Golang, автор Maksim Zhashkevych
-
Серия трансляций по реализации сервисов Golang, автор comerc