🎆 Выпущены версии Go 1.21.3 и 1.20.10!
🔐 Безопасность: Включено исправление безопасности для net/http (CVE-2023-39325).
📡 Анонс: https://groups.google.com/g/golang-announce/c/iNNxDTCjZvo
📦 Скачать: https://go.dev/dl/#go1.21.3
#golang
@Golang_google
🔐 Безопасность: Включено исправление безопасности для net/http (CVE-2023-39325).
📡 Анонс: https://groups.google.com/g/golang-announce/c/iNNxDTCjZvo
📦 Скачать: https://go.dev/dl/#go1.21.3
#golang
@Golang_google
• Go (Fundamentals) 101, посвященная синтаксису/семантике языка Go.
• Go Generics 101, в которой подробно описывается работа с дженериками в Go.
• Go Optimizations 101, в книге приводятся приемы, советы и рекомендации по улучшению производительности кода.
• Go Details & Tips 101 - здесь собрано множество деталей по устройству языка и даны советы по программированию на языке Go.
• Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Курс по Go для начинающих. С помощью этих практических уроков и задач вы научитесь писать на языке Go эффективные и идиоматические программы.
• Видео
• Код
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Это bash-скрипт для управления версиями Go и настройками
GOPATH
.Скрипт полезен для разработчиков, которые программируют на разных версиях Go, которым нужно быстро переключаться между ними или настраивать GOPATH для различных проектов.
curl https://raw.githubusercontent.com/glv-go/glv/master/glv | bash
• Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира Golang за неделю
Почитать:
— Как PaaS решил проблемы стандартизации разработки сервиса одной утилитой
— Writing tests for a Kubernetes Operator
— Книга «100 ошибок Go и как их избежать»
— Everything You Always Wanted to Know About Type Inference - And a Little Bit More
— Как я столкнулся с Tarantool-ом: разбор подводных камней на примере микросервисного pet-проекта
— Операторы в Kubernetes
— Алгебраические Типы Данных
— Самый быстрый поиск пути на Go без аллокаций и СМС
— Ускоряем разработку новых фич: как я написал плагин кодогенерации для Protobuf
— Profile-guided optimization в Go 1.21
— Масштабирование приёмочных тестов
— Работа без имитаторов
— Build a Type-Safe Web App with Encore + Next.js
— Entendendo as métricas do K6 - Parte 1
— Dockerizing Golang CLI Tool - A Step-by-Step Guide
— Golang 1.21 is here (Part 3)
— Achieving High-Level Atomic Operations in Go
— Building a Golang Project from Scratch — Zero to Hero — Part 2
— Grogue: A Roguelike Tutorial in Go (Part 1)
— Quando menos é mais - Escalando uma API em Golang
— Integration Test SQL Server Store with testcontainers-go
— Secure Upload URLs Buckets with Nitric in Go
Посмотреть:
🌐 Chatgpt, Bard , Claude, Theb - используй API лучших нейросетей бесплатно и без ВПН на Python. (⏱ 05:23)
🌐 Golang And Svelte - Table Filters - Levenue 2.0 Marketplace (⏱ 02:00:16)
🌐 Решаем задачу с leetcode на #Golang
🌐 Что должен знать Junior Go разработчик
🌐 Todo App using: Go Postgres HTMx TailwindCSS | This is the way
🌐 Handling errors LIKE a 10x ENGINEER in Golang - Golang Service Pattern
Хорошего дня!
@Golang_google
Почитать:
— Как PaaS решил проблемы стандартизации разработки сервиса одной утилитой
— Writing tests for a Kubernetes Operator
— Книга «100 ошибок Go и как их избежать»
— Everything You Always Wanted to Know About Type Inference - And a Little Bit More
— Как я столкнулся с Tarantool-ом: разбор подводных камней на примере микросервисного pet-проекта
— Операторы в Kubernetes
— Алгебраические Типы Данных
— Самый быстрый поиск пути на Go без аллокаций и СМС
— Ускоряем разработку новых фич: как я написал плагин кодогенерации для Protobuf
— Profile-guided optimization в Go 1.21
— Масштабирование приёмочных тестов
— Работа без имитаторов
— Build a Type-Safe Web App with Encore + Next.js
— Entendendo as métricas do K6 - Parte 1
— Dockerizing Golang CLI Tool - A Step-by-Step Guide
— Golang 1.21 is here (Part 3)
— Achieving High-Level Atomic Operations in Go
— Building a Golang Project from Scratch — Zero to Hero — Part 2
— Grogue: A Roguelike Tutorial in Go (Part 1)
— Quando menos é mais - Escalando uma API em Golang
— Integration Test SQL Server Store with testcontainers-go
— Secure Upload URLs Buckets with Nitric in Go
Посмотреть:
🌐 Chatgpt, Bard , Claude, Theb - используй API лучших нейросетей бесплатно и без ВПН на Python. (⏱ 05:23)
🌐 Golang And Svelte - Table Filters - Levenue 2.0 Marketplace (⏱ 02:00:16)
🌐 Решаем задачу с leetcode на #Golang
🌐 Что должен знать Junior Go разработчик
🌐 Todo App using: Go Postgres HTMx TailwindCSS | This is the way
🌐 Handling errors LIKE a 10x ENGINEER in Golang - Golang Service Pattern
Хорошего дня!
@Golang_google
Простая и гибкая библиотека, которая идеально подходит для проектов, в которых требуется быстрая локализация.
go get github.com/eduardolat/goeasyi18n
▪ Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Бенчмарк для обработки данных с использованием
Go,
Rust, Swift, Zig, Julia и др.
• Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
go install github.com/yonahd/kor@latest
• Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Не многие команды разработчиков знают о существовании пакета Go, который можно использовать для выполнения SQL-миграций.
В файле migration.go имеется следующий код: рис 1.
Пакет, о котором идет речь, называется embed (более подробная информация в документации).
Пакет embed появился в Go 1.16. Он предоставляет возможность встраивать файлы и каталоги в бинарные файлы Go. В данном случае пакет embed используется для встраивания файлов миграции SQL в бинарный файл.
Директива //go:embed *.sql — это специальный комментарий, который указывает компилятору Go включить все файлы с расширением .sql во встроенную файловую систему. Доступ к встроенным файлам можно получить с помощью типа embed.FS.
Переменная FS — это глобальная переменная типа embed.FS, в которой хранится встроенная файловая система. Переменная FS может использоваться для доступа к встроенным файлам во время выполнения программы.
Обычно sql-файл создается вместе с пакетом миграций (migrations) в той же папке.
Использование пакета embed может упростить дистрибуцию и развертывание программы на языке Go, поскольку избавляет от необходимости распространять отдельные файлы вместе с бинарным файлом. Вместо этого все необходимые файлы могут быть включены в сам бинарный файл.
📌 Читать дальше
📌 Embed
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
g-systemctl - это графический пользовательский интерфейс для ваших сервисов в
*nix-системах
. Вы можете видеть все свои сервисные демоны, искать и фильтровать их, а также управлять ими.go build src/server.go
• Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Инструмент командной строки для анализа и вывода результатов тестирования для Go.
По умолчанию
tparse
всегда будет возвращать информацию о пройденных тестах и ошибках, если таковые имеются, после чего будет выдана сводная таблица на уровне пакета.Для получения дополнительной информации о пройденных тестах запустите tparse с флагом -pass. Тесты сгруппированы по пакетам и отсортированы по времени выполнения в порядке убывания (от самого длинного к самому короткому).
go install github.com/mfridman/tparse@latest
• Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
В этой статье описано создание простого движка регулярных выражений, который сможет использовать шаблон
[a-zA-Z][a-zA-Z0-9_.]+@[a-zA-Z0-9]+.[a-zA-Z]
{2,} (.
, в качестве литерала вместо любого символа )
для проверки валидности адресов электронной почты. Статья состоит из трех разделов:
• Parsing
• Использование конечных автоматов
• Matching
📌 Читать
📌 Код
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Afero - это фреймворк, предоставляющий простой и универсальный API, взаимодействующий с любой файловой системой, работающий, как слой абстракции. Afero обладает функциональным интерфейсом без ненужных конструкторов и методов инициализации.
• Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Сетевые компоненты составляют основу облачной инфраструктуры, обеспечивая связь, масштабируемость и функциональность облачных сервисов.
К ним относятся маршрутизаторы, балансировщики нагрузки, обеспечивающие эффективную и безопасную передачу данных между серверами и клиентами.
Кроме того, сети доставки контента (
CDN
) оптимизируют доставку контента за счет кэширования данных на периферии, снижая задержки и улучшая качество работы пользователей.По сути, все эти сетевые элементы вместе создают надежную и быстродействующую облачную экосистему, которая лежит в основе современных цифровых сервисов и приложений.
В данной шпаргалке приводится краткое, но исчерпывающее сравнение ключевых сетевых элементов четырех основных облачных провайдеров.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира Golang за неделю
Почитать:
— Улучшенная маршрутизация HTTP-серверов в Go 1.22
— Антипаттерны в TDD
— Зачем нужны модульные тесты и как заставить их работать на вас
— Малоизвестный пакет Go, который пригодится при выполнении SQL-миграций
— 7 концепций SQL, которые необходимо знать для работы с данными
— Build and test a Golang app with Gitness
— REST Servers in Go: Part 1 - standard library
— REST Servers in Go: Part 2 - using a router
— Browser Performance Testing using k6
— What to expect from a Backend Development Platform
— Build an Event-Driven Uptime Monitor in Go 🚀
— Locating failing test cases in table-driven tests in Go
— Golang Web API Course: Project configuration management using Viper
— Solve code complexity (in Go)
— Diving into CORS with Nitric in GO
— I'm going back to school, Live
— Resilient Systems using Go: Semaphores
Посмотреть:
🌐 NATS.io: Beyond hello world / David Gee
🌐 An Intro to Pocketbase / Haseeb Majid
🌐 How to Rewrite a Service / Michal Bock
🌐 OpenTelemetry with AWS / Luke Stoward
🌐 A Purist's Guide to Type-Driven Design in Go / Angus Morrison
🌐 Go and Rust: Together at Last / Barnaby Keene
🌐 Go + CUE - A Match Made In Heaven! / Paul Jolly
🌐 Bundling Tasks with Taskfile / Talha Altinel
🌐 Featherweight Go / Raymond Hu, Julien Lange, Bernardo Toninho
🌐 Пишем телеграм бота для скачивания #yotube видео (⏱ 20:41)
🌐 Golang And Svelte LIVE Development (⏱ 01:21:37)
🌐 Golang And Svelte - Swapping To Server Side Rendering (⏱ 01:27:49)
🌐 Не делай этого, когда изучаешь программирование (⏱ 03:43)
🌐 Совет начинающим программистам #айти #программирование #программист (⏱ 00:39)
🌐 Linked Lists in Go | Data Structures and Algorithms (⏱ 20:31)
🌐 Backgrounds Jobs with Go Routines! - Golang Concurrency Example (⏱ 05:58)
Хорошего дня!
@Golang_google
Почитать:
— Улучшенная маршрутизация HTTP-серверов в Go 1.22
— Антипаттерны в TDD
— Зачем нужны модульные тесты и как заставить их работать на вас
— Малоизвестный пакет Go, который пригодится при выполнении SQL-миграций
— 7 концепций SQL, которые необходимо знать для работы с данными
— Build and test a Golang app with Gitness
— REST Servers in Go: Part 1 - standard library
— REST Servers in Go: Part 2 - using a router
— Browser Performance Testing using k6
— What to expect from a Backend Development Platform
— Build an Event-Driven Uptime Monitor in Go 🚀
— Locating failing test cases in table-driven tests in Go
— Golang Web API Course: Project configuration management using Viper
— Solve code complexity (in Go)
— Diving into CORS with Nitric in GO
— I'm going back to school, Live
— Resilient Systems using Go: Semaphores
Посмотреть:
🌐 NATS.io: Beyond hello world / David Gee
🌐 An Intro to Pocketbase / Haseeb Majid
🌐 How to Rewrite a Service / Michal Bock
🌐 OpenTelemetry with AWS / Luke Stoward
🌐 A Purist's Guide to Type-Driven Design in Go / Angus Morrison
🌐 Go and Rust: Together at Last / Barnaby Keene
🌐 Go + CUE - A Match Made In Heaven! / Paul Jolly
🌐 Bundling Tasks with Taskfile / Talha Altinel
🌐 Featherweight Go / Raymond Hu, Julien Lange, Bernardo Toninho
🌐 Golang And Svelte LIVE Development (⏱ 01:21:37)
🌐 Golang And Svelte - Swapping To Server Side Rendering (⏱ 01:27:49)
🌐 Не делай этого, когда изучаешь программирование (⏱ 03:43)
🌐 Совет начинающим программистам #айти #программирование #программист (⏱ 00:39)
🌐 Linked Lists in Go | Data Structures and Algorithms (⏱ 20:31)
🌐 Backgrounds Jobs with Go Routines! - Golang Concurrency Example (⏱ 05:58)
Хорошего дня!
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🦅 FalconHound - это новый многофункциональный инструмент информационной безопасности.
FalconHound - проект с открытым исходным кодом, написанный на Go для Blue Team. Blue team — это команда защиты информационной безопасности. Чаще всего это аналитики и инженеры внутреннего SOC компании или сторонней организации, которая предоставляет свои услуги на аутсорсе.
Одними из самых сложных данных для безопасников являются данные о членстве в локальных группах и информация о сессиях. FalconHound может использоваться для сбора этой информации и добавления ее в графы. Это лишь пример использования FalconHound. С его помощью можно собирать любую информацию, содержащуюся в логах.
Если пользователь добавлен в определенную группу, FalconHound может быть использован для запроса базы данных на предмет кратчайшего пути к чувствительной или высокопривилегированной группе.
FalconHound обеспечивает:
▪ Создание, добавление, удаление и сеансов на графе на основе событий входа и выхода из системы.
▪ Пометка пользователей и компьютеров как скомпрометированных
▪ Добавление в граф информации о CVE и наличии общедоступного эксплойта.
▪ Сбор активности с Azure.
▪ Перерасчет кратчайшего пути к чувствительным группам при добавлении пользователя в группу или получении новой роли.
▪Добавление в граф новых пользователей, групп и компьютеров.
▪Формирование отчетов для Sentinel и Splunk, например отчетов, пользователей, имеющих доступ к Kerberoast, или пользователей, владеющих определенными сущностями.
📌 Github
@Golang_google
FalconHound - проект с открытым исходным кодом, написанный на Go для Blue Team. Blue team — это команда защиты информационной безопасности. Чаще всего это аналитики и инженеры внутреннего SOC компании или сторонней организации, которая предоставляет свои услуги на аутсорсе.
Одними из самых сложных данных для безопасников являются данные о членстве в локальных группах и информация о сессиях. FalconHound может использоваться для сбора этой информации и добавления ее в графы. Это лишь пример использования FalconHound. С его помощью можно собирать любую информацию, содержащуюся в логах.
Если пользователь добавлен в определенную группу, FalconHound может быть использован для запроса базы данных на предмет кратчайшего пути к чувствительной или высокопривилегированной группе.
FalconHound обеспечивает:
▪ Создание, добавление, удаление и сеансов на графе на основе событий входа и выхода из системы.
▪ Пометка пользователей и компьютеров как скомпрометированных
▪ Добавление в граф информации о CVE и наличии общедоступного эксплойта.
▪ Сбор активности с Azure.
▪ Перерасчет кратчайшего пути к чувствительным группам при добавлении пользователя в группу или получении новой роли.
▪Добавление в граф новых пользователей, групп и компьютеров.
▪Формирование отчетов для Sentinel и Splunk, например отчетов, пользователей, имеющих доступ к Kerberoast, или пользователей, владеющих определенными сущностями.
📌 Github
@Golang_google
Обновлен пакет compress. Это проект, который предоставляет различные алгоритмы сжатия:
▪S2 высокопроизводительная замена Snappy.
▪Оптимизированный пакет deflate, который можно использовать в качестве замены
gzip, zip и zlib
.▪snappy - это замена github.com/golang/snappy, обеспечивающая лучшее сжатие и одновременные потоки.
▪zstandard компрессия и декомпрессия в Go.
▪huff0 и FSE реализации.
▪gzhttp - предоставляет клиентские и серверные оболочки для обработки gzipped-запросов.
▪pgzip - пакет, обеспечивающий очень быструю параллельную реализацию gzip.
📌 Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Небольшой, но мощный пакет для логов протоколирования HTTP-запросов, построенный на основе пакета Go 1.21+ stdlib slog.
go get -u github.com/go-chi/httplog/v2
▪Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
GoCrack предоставляет API для широкого спектра задач взлома паролей с помощью различных алгоритмов, который написан на Go.
▪Github
▪Документация
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Микросервисная архитектура Airbnb прошла 3 основных этапа.
Монолит (2008 - 2017 гг.)
Airbnb начиналась как простая площадка для хозяев и гостей. Он был построен в виде приложения монолита.
В чем проблема?
- Запутанная система управления + громоздкий, плохо структурированный код
- Медленное развертывание
Микросервисы (2017 - 2020 гг.)
Микросервисы были призваны решить эти проблемы. В новое архитектуре ключевыми сервисами являются:
- Cервис получения данных
- Сервис данных бизнес-логики
- Сервис рабочих процессов записи
- Сервис агрегации пользовательского интерфейса
- Каждый сервис имеет одну команду-владельца.
В чем заключалась проблема?
Сотни сервисов и зависимостей были сложны для управления и пожжержки.
Микро и макросервисы (2020 - настоящее время)
Это то, над чем сейчас работает Airbnb. Гибридная модель микро и макросервисов сосредоточена на унификации API.
Почитать подробнее об архитектуру можно здесь.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Elem-go
elem - это легковесная библиотека на языке Go для программного создания HTML-элементов.
Используя возможности сильной типизации языка Go,
Она упрощает создание HTML-кода, предоставляя простой и интуитивно понятный способ создания элементов и задания их атрибутов, свойств и содержимого.
📌 Github
@Golang_google
elem - это легковесная библиотека на языке Go для программного создания HTML-элементов.
Используя возможности сильной типизации языка Go,
elem
обеспечивает безопасность типов при определении и манипулировании HTML-элементами, сводя к минимуму возможные ошибки во время выполнения программы.Она упрощает создание HTML-кода, предоставляя простой и интуитивно понятный способ создания элементов и задания их атрибутов, свойств и содержимого.
go get github.com/chasefleming/elem-go
content := elem.Div(elem.Attrs{
attrs.ID: "container",
attrs.Class: "my-class",
},
elem.H1(nil, elem.Text("Hello, Elem!")),
elem.H2(nil, elem.Text("Subheading")),
elem.P(nil, elem.Text("This is a paragraph.")),
)
📌 Github
@Golang_google