Golang-дайджест № 27 (1 – 31 марта 2023)

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

Свежая подборка новостей и материалов.

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

  • Выпущены Go 1.20.3 и 1.19.8 - эти выпуски включают исправления безопасности

    • go/parser: бесконечный цикл при разборе.

      • Вызов любой из функций Parse в исходном коде Go, который содержит директивы //line с очень большими номерами строк, может вызвать бесконечный цикл из-за целочисленного переполнения.

    • html/templateобратные кавычки не рассматриваются как разделители строк

      • Шаблоны не учитывали обратные кавычки (`) как разделители строк Javascript и поэтому не экранировали их, как ожидалось. Обратные кавычки используются, начиная с ES6, для литералов шаблонов JS. Если шаблон
        содержал действие шаблона Go в литерале шаблона Javascript, содержимое действия можно было бы использовать для завершения литерала, внедряя произвольный код Javascript в шаблон Go.

    • net/http, net/textproto:  чрезмерное выделение памяти, при анализе заголовков HTTP и MIME может выделяться большой объем памяти даже при анализе небольших данных.

      • Входные данные могут привести к тому, что общая функция, используемая для анализа заголовков HTTP и MIME, будет выделять значительно больше памяти, чем требуется для хранения проанализированных заголовков. Злоумышленник может использовать это поведение, чтобы заставить HTTP-сервер выделять большие объемы памяти из небольшого запроса, что может привести к нехватке памяти и отказу в обслуживании.

    • net/http, net/textproto, mime/multipart: Анализ много компонентной формы может потреблять большое количество ресурсов ЦП и памяти при обработке входных данных формы, содержащих очень большое количество частей. Это связано с несколькими причинами:

      • mime/multipart.Reader.ReadForm ограничивает общую память, которую может потреблять проанализированная составная форма. ReadForm может занижать объем потребляемой памяти, что приводит к принятию большего количества входных данных, чем предполагалось.
        Ограничение общей памяти не учитывает повышенную нагрузку на сборщик мусора из-за большого количества небольших выделений памяти в формах, состоящих из многих частей.
        ReadForm может выделять большое количество недолговечных буферов, что еще больше увеличивает нагрузку на сборщик мусора.
        Сочетание этих факторов может позволить злоумышленнику заставить программу, анализирующую составные формы, потреблять большое количество ресурсов ЦП и памяти, что может привести к отказу в обслуживании. Это затрагивает программы, использующие mime/multipart.Reader.ReadForm, а также синтаксический анализ форм в пакете net/http с методами запроса FormFile, FormValue, ParseMultipartForm и PostFormValue.

  • Предложение log/slog: structured, leveled logging принято.

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 

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

  • Уроки для изучения Golang

  • Gopherlings - изучайте Go, исправляя неправильные программы 

  • Алгоритмы, реализованные в Go (для обучения)

  • LearnGo: большая коллекция примеров, упражнений

Статьи

  • Зачем откладывать разблокировку мьютексов

  • Импорт из форм Google в вашу CRM с помощью OpenFaaS

  • От Go on EC2 до Fly.io: больше удовольствия, меньше затрат?

  • Причуды и хитрости golang, часть 2

  • Руководство для начинающих по созданию веб-приложения с помощью Ent

  • Покрытие кода для интеграционных тестов Go

  • Визуализация образцов ЦП из трассировок выполнения Go

  • Полное руководство по slog 

  • Единственный, обязательный, вечный макет проекта Go

  • Примеры параллелизма Golang в реальном мире 

  • Обратный прокси-сервер с динамическим выбором бэкенда

  • Мощь интерфейсов с одним методом в Go 

  • a[low:high:max] трюк с slice

  • Паттерн синхронизации в Go

  • Планировщик Go

  • SwissMap: меньшая и более быстрая хэш-таблица Golang

  • Паттерн адаптера в Go 

  • Алгебра анонимных сетей

  • Go в SAMP

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

  • Переходим на Go: 16 материалов для самостоятельного изучения языка

  • Трассировка сервисов через очередь сообщений. OpenTelemetry, NATS

  • 5 паттернов параллельного программирования в GO, которые сделают ваш следующий проект лучше

  • Как мы сделали для разработчиков универсальную шину событий, не требующую знаний Kafka и прочих брокеров

  • Что не так с твоим покрытием тестов в Go?

  • Архитектура Hashicorp Vault

  • Эволюция алгоритма фильтрации модификаций товаров в Авито

  • Bazel, stamping, remote cache

  • Сказ о том как pet-project превратился в небольшой пассивный доход (часть 2)

  • Мой путь в профессию: из аналитиков в Go-разработчики

  • Выбираем IAM в 2023 или, что есть кроме Keycloak

  • Assembler в Go: техники ускорения и оптимизации

  • Шаблон backend сервера на Golang — часть 5 — оптимизация Worker pool

  • Тайные каналы связи или как централизованные сервисы способны разлагаться изнутри

  • Как я приложение с Go на Rust переписывал

Инструменты

  • vald 1.7.4 - Распределенная векторная поисковая система.

  • imagor 1.4.3 — сервер обработки изображений с поддержкой Docker.

  • ebitengine 2.5.1 — игровой движок с открытым исходным кодом 2D-игр.

  • mirrord 3.34.0 — инструмент для запуска локальной службы в облачном (Kubernetes) контексте.

  • zitadel 2.23.1 — система управления пользователями, которая быстро настраивается, мультитенантность с настройкой фирменного стиля, безопасный вход в систему, самообслуживание, OpenID Connect, OAuth2.x, SAML2, беспарольный доступ с FIDO2 (включая пароли), OTP, U2F и неограниченный контрольный журнал.

  • phoneinfoga 2.10.4 — инструмент для сканирования международных телефонных номеров. Это позволяет вам сначала собрать базовую информацию, такую ​​как страна, регион, оператор связи и тип линии, а затем использовать различные методы, чтобы попытаться найти провайдера VoIP или идентифицировать владельца.

  • Yaegi 0.15.1 — интерпретатор Go.

  • ZincSearch 0.4.3 — Альтернатива Elasticsearch на платформе Go.

  • q 0.11.1 — DNS-клиент командной строки с поддержкой UDP, TCP, DoT, DoH, DoQ и ODoH.

  • HoverFly 1.5.2 — Легкий инструмент моделирования API.

  • task 3.22.0 — это средство запуска/сборки задач

  • algnhsa 1.0.0 — серверный адаптер AWS Lambda Go net/http, позволяет запускать веб-приложения Go на AWS Lambda и API Gateway или ALB без изменения существующих обработчиков

  • pngr — стартовый комплект Dockerized (postgres + nginx + golang + react)

  • macaron 1.5.0 — модульный веб-фреймворк на Go.

  • chi 5.0.8 — маршрутизатор для создания сервисов Go HTTP

  • chromedp 0.9.0 — управление браузерами через протокол Chrome DevTools.

  • ko 0.13.0 — контейнер образов контейнеров для приложений Go.

  • v8go 0.9.0 — выполнение JavaScript из Go

  • gotraceui 0.1.0 — приложение с графическим интерфейсом для просмотра трассировок выполнения Go

  • pathfind — поиск пути на 2D-полигональных картах, находит кратчайший путь между двумя точками в наборе полигонов путем построения графа видимости и последующего использования для него алгоритма поиска A*.

  • betteralign 0.2.4 — это инструмент для обнаружения структур, которые использовали бы меньше памяти, если бы их поля были отсортированы, и, при необходимости, сортировки таких полей.

Видео

Источник: https://habr.com/ru/articles/728060/


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

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

Вместо предисловияВ этой статье представлено описание шагов по созданию простейшего диалогового приложения (смартаппа) для устройств Сбера, без программирования (в среде разработки Graph). ...
Часто при разговорах с клиентами мы спрашиваем, как они ведут учет различных данных и используют ли они CRM-систему? Популярный ответ — мы работаем с Excel-файлами, а пот...
Хочу поделиться опытом автоматизации экспорта заказов из Aliexpress в несколько CRM. Приведенные примеры написаны на PHP, но библиотеки для работы с Aliexpress есть и для...
В новом дайджесте история создания своего мессенджера, анимации и HTTP-запросы, новинки Android 11 и падающие кошки, управление одной рукой и психология игр. С наступившей весной! Чи...
Если честно, к Д7 у меня несколько неоднозначное отношение. В некоторых местах я попискиваю от восторга, а в некоторых хочется топать ногами и ругаться неприличными словами.