Golang-дайджест № 8 (1 – 31 августа  2021)

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Новости, события

  • Выпущен Go 1.17

    • Полные примечания к выпуску

    • Улучшения компилятора, дающие прирост производительности ~ 5%

    • 64-битная поддержка ARM в Windows.

    • Урезанные графы модулей

      • если модуль указывает go 1.17 или выше, граф модулей включает только непосредственные зависимости других модулей go 1.17, но не их полные транзитивные зависимости.

    • unsafe.Add

      • unsafe.Add(ptr, len) добавляет len к ptr и возвращает обновленный указатель unsafe.Pointer(uintptr(ptr) + uintptr(len)).

    • Преобразования из среза в указатель на массив

      • выражение s типа []T теперь может быть преобразовано в тип указателя массива *[N]T. Если a является результатом такого преобразования, то соответствующие индексы, находящиеся в диапазоне, относятся к одним и тем же базовым элементам: &a[i] == &s[i] для 0 <= i < N. Преобразование вызывает панику, если len(s) меньше N.

    • unsafe.Slice

      • для выражения ptr типа *T, unsafe.Slice(ptr, len) возвращает срез типа []T, базовый массив которого начинается с ptr, а длина и емкость равны len.

    • Комментарии к устаревшим модулям

      • Авторы модуля могут объявить модуль устаревшим, добавив комментарий // Deprecated: в go.mod, а затем пометив новую версию. go get теперь выводит предупреждение, если модуль, необходимый для сборки пакетов, указанных в командной строке, устарел. go list -m -u печатает устаревшие для всех зависимостей (используйте -f или -json, чтобы показать полное сообщение). Команда go считает разные основные версии отдельными модулями, поэтому этот механизм можно использовать, например, для предоставления пользователям инструкций по миграции для новой основной версии.

    • go get

      • Флаг go get -insecure устарел и был удален. Чтобы разрешить использование небезопасных схем при получении зависимостей, используйте переменную среды GOINSECURE. Флаг -insecure также обходит проверку суммы модуля, используйте GOPRIVATE или GONOSUMDB, если вам нужна эта функция.

      • go get выводит предупреждение об устаревании при установке команд вне основного модуля (без флага -d). go install cmd@version следует использовать вместо этого для установки команды определенной версии, используя суффикс типа @latest или @v1.2.3. В Go 1.18 всегда будет включен флаг -d, а go get будет использоваться только для изменения зависимостей в go.mod.

    • Cgo

      • Пакет runtime/cgo теперь предоставляет новую возможность, которая позволяет преобразовывать любые значения Go в безопасное представление, которое можно использовать для безопасной передачи значений между C и Go (runtime/cgo.Handle).

    • TLS строгий ALPN

      • Когда установлен Config.NextProtos, серверы теперь обеспечивают перекрытие между настроенными протоколами и протоколами ALPN, объявленными клиентом, если таковые имеются. Если нет взаимно поддерживаемого протокола, соединение закрывается с предупреждением no_application_protocol, как того требует RFC 7301. Это помогает смягчить межпротокольную атаку ALPACA.

      • В качестве исключения, когда значение "h2" включено в файл Config.NextProtos сервера, клиентам HTTP/1.1 будет разрешено подключаться, как если бы они не поддерживали ALPN.

    • gofmt

      • gofmt (и go fmt) теперь синхронизирует строки //go:build со строками // +build. Если файл содержит только строки // +build, они будут перемещены в соответствующее место в файле, и будут добавлены соответствующие строки //go:build. В противном случае строки // +build будут перезаписаны на основе любых существующих строк //go:build.

    • go run

      • go run теперь принимает аргументы с суффиксами версии (например, go run example.com/cmd@v1.0.0). Это приводит к тому, что go run создает и запускает пакеты в режиме с поддержкой модулей, игнорируя файл go.mod в текущем каталоге или любом родительском каталоге, если он есть. Это полезно для запуска исполняемых файлов без их установки или без изменения зависимостей текущего модуля.

    • vendor

      • Если в основном модуле указано go 1.17 или выше, go mod vendor теперь аннотирует vendor/modules.txt версией go, указанную каждым поставляемым модулем, в его собственном файле go.mod. Аннотированная версия используется при сборке пакетов модуля из исходного кода поставщика.

      • Если основной модуль указывает go 1.17 или выше, go mod vendor теперь не включает файлы go.mod и go.sum для зависимостей поставщика, которые в противном случае могут помешать команде go определить правильный корень модуля при вызове в дереве поставщиков.

  • Выпущена Gitea v1.15.0 популярной системы git forge

  • Amazon представила MemoryDB для Redis , управляемую службу, совместимую с Redis, предназначенную для первичного использования баз данных.

Awesome

  • https://awesome-go.com/

  • https://github.com/guardrailsio/awesome-golang-security

  • https://github.com/Binject/awesome-go-security

  • https://gist.github.com/hbt/d6ab942b882d5b94f331c5257076d05e

  • https://github.com/avelino/awesome-go

Материалы для обучения

  • Материалы учебных курсов по Go

Статьи

  • Как работает len()

  • Создание оператора Kubernetes

  • Устранение распространенных проблем с CORS и JavaScript (в Go REST API)

  • Шесть инструментов командной строки

  • Повесть о двух копиях

  • Общие анти-шаблоны в веб-приложениях

  • Обработка ошибок отложенных функций

  • Запуск приложения на голом железе

  • map[string]interface{} - статья про не типизированную карту

  • Обучение на примерах: создание бота для Discord

  • Go 1.17 очень хорошо работает с C # в старой доброй игре Computer Language Benchmarks Game

  • Error stack traces in Go with x/xerror

  • Недостаточная полезность sync.Once - фантастический пример того, почему вы можете использовать это для очистки кода

  • Использование Go Generics

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

  • Brooks, Wirth and Go - отличная статья о двух гигантах в индустрии программного обеспечения

  • Как моделировать данные JSON в приложении с помощью CockroachDB

  • Как выпустить игру для Steam на GO

  • Советы по написанию JSON REST API в Go

  • Напишите инструмент статического анализа кода для определения состояния гонки

  • Автоматизация JIRA

  • Анализ теста по Go с PHDays

  • Опыт применения GitHub Actions для создания CI/CD с бесплатным хостингом на Heroku

  • GoLand 2021.2: Улучшенная поддержка Go-модулей, новые возможности запуска gofmt, поддержка Go 1.17

  • Как сделать конфигурационные файлы версионируемыми с инструментами Kubernetes

  • Real-time мониторинг тормозящих запросов PostgreSQL своими руками за полчаса

  • Go: как программа восстанавливается после паники?

  • Установка Golang в WSL (WSL 2) с помощью Visual Studio Code

  • Register-based calling convention, GO?

  • Как сделать alter table в высоконагруженной таблице

  • Go: объектный файл и релокация

  • Как в восемь раз уменьшить количество DNS-запросов в Go

  • Я сделал StackOverflow из IT-чатов Telegram

  • Эволюция Docker. Часть 2.1

  • Эволюция Docker. Часть 2.2

  • Эволюция Docker. Часть 2.3

  • Go: стоит ли использовать указатели вместо копий структуры?

  • Как работать с Tarantool на Golang вместо Lua

  • История платформы Highload.Fun для соревнований в оптимизации кода

  • Функциональные опции в Go: реализация шаблона опций в Golang

  • Прагматичные Unit тесты на Golang

Инструменты

  • Entity Framework - Ent v0.9.0

  • Библиотека проверка безопасности Golang - gosec v2.8.1

  • Библиотека для конфигурации на основе графов - virgo v0.0.1

  • Библиотека для генерации кодов TOTP / HOTP - otpgen v1.0.0

  • Расширенная поддержка стилей и цветов ANSI для терминальных приложений - termenv v0.9.0

  • Инструмент для переноса C в Go - cxgo v0.3.0

  • Библиотека cloudflare api - cloudflare-go v0.21.0

  • Утилита маршрутизации MIDI с расширенным интерфейсом OSC - Pigiron

  • Инструмент для обновления структур данных из командной строки - dasel v1.20.0

  • Инструмент для преобразования данных, моделирования данных, конвейеров и управления качеством данных - optimus v0.0.2

  • Инструмент для передачи файлов с одного компьютера на другой - croc v9.3.0

  • Библиотека индексирования текста - Bleve v2.1.0

  • Инструмент генерирует безопасный тип Go из SQL - sqlc v1.9.0

  • Почтовый сервер SMTP - Maddy v0.5.0

  • Реализация Go gRPC (HTTP / 2-based RPC) - grpc-go v1.40.0

  • Клиент для GitHub API v3 - go-github v38.1.0

  • Драйвер MongoDB Go 1.7.1

  • Комплексная аутентификация для веб-проектов Go authboss v3.2.0

  • Библиотека Premier ACME - Acmez v1.0

  • Крошечная реализация Git - ReGit

  • Сервер аутентификации LDAP - GLAuth v2.0

  • Официальный клиент GitHub CLI - GitHub CLI v2.0

  • Распределенная база данных, построенная на SQLite - rqlite v6.2.0

  • API клиент Spotify - Spotify v2.0

  • Инструмент слайд-шоу на основе терминала - slides v0.5.0

  • Фреймворк распределенных систем - micro v3.6.0

  • Клиент для PostgreSQL, MySQL и SQLite - bun v1.0.0

  • HTTP-маршрутизатор - treemux v0.7.3

  • Фреймворк для тестирования - testza v0.2.7

  • Библиотека кодирования base64 - base64 v0.1.2

  • Example code for Go generics

  • Платформа для создания и управления сетями - netmaker v0.7.3

  • OpenID Connect (OIDC) HTTP Middleware - go-oidc-middleware v0.0.11

Подкасты

GenericTalks

Go Tim‪e‬

Сообщества

Вопросы по языку на русскоязычном StackOverflow

Страница Go на stackoverflow

Информация о митапах

Форум в группах Google

https://t.me/vseins_tech

Источник: https://habr.com/ru/post/575814/


Интересные статьи

Интересные статьи

Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него. Читать дальше →
Новый тип never будет в PHP 8.1, на обсуждении частичные функции, а также другие предложения и новости из PHP Internals. PHP доступен на Google Cloud Functions, о взломе git.php.net, La...
Субботний вечер омрачен скандалом - сайт не работает, провайдер негодяй, админы - не специалисты, а сервера - решето. Вызов принят, или почему при всей нелюбви к 1С-Битри...
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него. Читать дальше →
Всем привет! Продолжаем дайджесты новостей и других материалов о свободном и открытом ПО и немного о железе. Всё самое главное про пингвинов и не только, в России и мире. Кто п...