📖 Логирование в Go: 8 лучших библиотек
С вероятностью 99% можно сказать, что если вы ведете логи в Go, то используете сторонний фреймворк, поскольку встроенный пакет не обладает даже самыми базовыми возможностями, необходимыми для ведения журнала на производстве.
Ситуация изменилась с выходом Go 1.21, в котором одним из главных достоинств стал новый пакет
Поскольку экосистема Go уже породила множество комплексных решений для ведения логов, вы можете задаться вопросом, является ли пакет
В данной статье рассматриваются восемь библиотек для логирования, обсуждаются их достоинства и недостатки с учетом следующих факторов: производительность, гибкость, функциональность, простота использования и поддержка сообщества.
1. Zerolog
2. Zap
3. Slog
4. Logrus
5. Log15
6. Logf
7. Apex/log
8. Logr
📌 Статья
@Golang_google
С вероятностью 99% можно сказать, что если вы ведете логи в Go, то используете сторонний фреймворк, поскольку встроенный пакет не обладает даже самыми базовыми возможностями, необходимыми для ведения журнала на производстве.
Ситуация изменилась с выходом Go 1.21, в котором одним из главных достоинств стал новый пакет
log/slog
для структурированного, уровневого и контекстно-зависимого логирования.Поскольку экосистема Go уже породила множество комплексных решений для ведения логов, вы можете задаться вопросом, является ли пакет
Slog
предвестником устаревания его предшественников или просто еще одним инструментом в вашем арсенале для работы.В данной статье рассматриваются восемь библиотек для логирования, обсуждаются их достоинства и недостатки с учетом следующих факторов: производительность, гибкость, функциональность, простота использования и поддержка сообщества.
1. Zerolog
2. Zap
3. Slog
4. Logrus
5. Log15
6. Logf
7. Apex/log
8. Logr
📌 Статья
@Golang_google
This media is not supported in your browser
VIEW IN TELEGRAM
GPT-4, CodeLlama и Claude 2
.Этот мощный инструмент позволяет писать промпты, а EvalGPT помогает сгенерировать код, выполнить его и выдать результаты.
go install github.com/index-labs/evalgpt@latest
▪Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Обновлен GoReleaser, проект, который позволяет легко и быстро создавать deb пакеты.
• Github
• Документация
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
LolDriverScan - это golang-инструмент, позволяющий пользователям обнаруживать уязвимые драйверы в вашей системе. Этот инструмент получает список
loldrivers.io
из их API и сканирует систему на наличие уязвимостей.Этот проект реализован на языке Go и не требует повышенных привилегий для запуска.
• Сканирует систему на наличие уязвимых драйверов
• Обеспечивает вывод подробной информации в режиме verbose
• Поддерживает вывод в формате JSON для упрощения интеграции с другими инструментами
• Не требует специальных привилегий
git clone https://github.com/FourCoreLabs/LolDriverScan.git
cd LolDriverScan
go build
▪Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Amovane/reX: Реверс-инжиниринг API Twitter: После того, как twitter dev удалила API для доступа к подписчткам пользователей, разработчикам стало сложно получать эти данные.
• Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира : Golang за неделю
Почитать:
— Книга «Golang для профи: Создаем профессиональные утилиты, параллельные серверы и сервисы, 3-е изд.»
— Обработка миллиона запросов с помощью Golang: Стратегии и лучшие практики
— Дебажим Golang с помощью Delve
— Разворачиваем приложение в кластере Kubernetes под управлением Deckhouse c помощью werf
— Стоит ли идти на курсы IT преподавателем?
— Практика Go — Обработка ошибок (2 часть)
— Практика Go — Обработка ошибок (1 часть)
— Manual instrumentation of Go applications with OpenTelemetry
— Iterium - Generic Channel-based Iterators for Golang
— Go: Insert a value into nested structures with a dot
— Boost Your Golang Skills: Writing Large Data Files for Performance
— Use Go Lambda and API Gateway to Generate DynamoDB Tables on Demand
— How we made our Go microservice 24x faster
— Integration Test Postgres Store with testcontainers-go
— Golang Road map in 2023. From beginner to Expert
— Criando um JSON Unmarshal personalizado em Go
— Dependency Injection like a Pro in Golang
Посмотреть:
🌐 Уроки Golang с нуля /#28 - Встраивание типов (⏱ 06:16)
🌐 Уроки Golang с нуля /#27 - Bufio. Чтение и запись (⏱ 10:35)
🌐 This Will Make Everyone Understand Golang Interfaces (⏱ 21:03)
🌐 Are Goroutines USELESS For Backend Development?? (⏱ 09:10)
🌐 The Ultimate Programming Q&A With The One And Only (⏱ 01:59:02)
Хорошего дня!
@Golang_google
Почитать:
— Книга «Golang для профи: Создаем профессиональные утилиты, параллельные серверы и сервисы, 3-е изд.»
— Обработка миллиона запросов с помощью Golang: Стратегии и лучшие практики
— Дебажим Golang с помощью Delve
— Разворачиваем приложение в кластере Kubernetes под управлением Deckhouse c помощью werf
— Стоит ли идти на курсы IT преподавателем?
— Практика Go — Обработка ошибок (2 часть)
— Практика Go — Обработка ошибок (1 часть)
— Manual instrumentation of Go applications with OpenTelemetry
— Iterium - Generic Channel-based Iterators for Golang
— Go: Insert a value into nested structures with a dot
— Boost Your Golang Skills: Writing Large Data Files for Performance
— Use Go Lambda and API Gateway to Generate DynamoDB Tables on Demand
— How we made our Go microservice 24x faster
— Integration Test Postgres Store with testcontainers-go
— Golang Road map in 2023. From beginner to Expert
— Criando um JSON Unmarshal personalizado em Go
— Dependency Injection like a Pro in Golang
Посмотреть:
🌐 Уроки Golang с нуля /#28 - Встраивание типов (⏱ 06:16)
🌐 Уроки Golang с нуля /#27 - Bufio. Чтение и запись (⏱ 10:35)
🌐 This Will Make Everyone Understand Golang Interfaces (⏱ 21:03)
🌐 Are Goroutines USELESS For Backend Development?? (⏱ 09:10)
🌐 The Ultimate Programming Q&A With The One And Only (⏱ 01:59:02)
Хорошего дня!
@Golang_google
Выпущена новая версия v
0.30 Cerbos,
масштабируемого #opensource проекта для реализации ролей и разрешений.Cerbos - открытый проект, написанный на Go, масштабируемое решение для авторизации, которое упрощает внедрение и управление правами пользователей и авторизацией путем написания контекстно-зависимых политик управления доступом к ресурсам приложения.
• Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Automaxprocs
Automatically set GOMAXPROCS to match Linux container CPU quota.
Automaxprocs позволяет выставить максимальное количество ядер для контейнеров.Хороший варинат, чтобы уменьшить тротлинг cpu.
▪ Github
@Golang_google
Automatically set GOMAXPROCS to match Linux container CPU quota.
Automaxprocs позволяет выставить максимальное количество ядер для контейнеров.Хороший варинат, чтобы уменьшить тротлинг cpu.
go get -u go.uber.org/automaxprocs
▪ Github
@Golang_google
Возвращение структур
Рассмотрим преимущества возвращения структур из функций Go: эксплицитность, гибкость, прямой контроль над полями и методами объекта.
Изучим потенциальный недостаток — сильную связанность — и выработаем стратегии эффективного ограничения его влияния.
Преимущества и особенности возвращения структур Go с учетом потенциальных проблем сильной связанности пригодятся для создания хорошо структурированного, сопровождаемого кода.
Эксплицитность
Для возвращаемой структуры характерны четкая видимость, доступ к ее полям и методам. Это как подробная схема, на которой раскрываются все нюансы объекта.
Получая прямой доступ к свойствам структуры, мы имеем четкое представление о том, что внутри нее, поэтому работа с данными, манипулирование ими упрощаются.
Рассмотрим пример:
type Person struct {
Name string
Age int
Email string
}
func NewPerson(name string, age int, email string) Person {
return Person{
Name: name,
Age: age,
Email: email,
}
}
func main() {
person := NewPerson("John Doe", 30, "[email protected]")
fmt.Println("Name:", person.Name)
fmt.Println("Age:", person.Age)
fmt.Println("Email:", person.Email)
}
В функции NewPerson возвращается структура Person с информацией о человеке. Возвращая структуру напрямую, мы получаем явный доступ к ее полям Name, Age, Email в вызывном коде.
Благодаря такой эксплицитности необходимые данные легко извлечь и использовать.
Гибкость
Возвращаемыми структурами обеспечиваются непревзойденные контроль и гибкость при определении конкретных поведений и методов. Структура проектируется с именно таким функционалом, который требуется.
Благодаря возможности адаптировать ее к конкретным требованиям, код получается чище, целенаправленнее и с точным соответствием задачам приложения.
Продемонстрируем эту гибкость, обновив пример выше:
type Person struct {
Name string
Age int
Email string
}
func (p Person) Greet() {
fmt.Println("Hello, my name is", p.Name)
}
func main() {
person := Person{
Name: "John Doe",
Age: 30,
Email: "[email protected]",
}
person.Greet()
}
В структуру Person добавили метод Greet. Возвращая структуру, мы определяем конкретное поведение прямо в ее типе. В методе Greet приветствие персонализируется полем Name структуры Person.
Благодаря такой гибкости поведения инкапсулируются в самой структуре, а код чище и проще в сопровождении.
📌Читать далее
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Lama2 - это менеджер API, ориентированный на работу с текстом и оптимизированный для совместной работы через Git.
В этой статье подробно с рассказывается о разработке функционала для VSCode с Lama2 на Go. От проблем, с которыми разработчики столкнулись во время разработки до инсайтов, которые были реализованы за год работы.
▪Статья
▪Lama2
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Failsafe-go - новая библиотека для создания отказоустойчивых приложений на Go. Она работает путем обертывания исполняемой логики одной или несколькими функциями отказоустойчивости, которые можно комбинировать и компоновать по мере необходимости. Функции включают в себя
Retry, Circuit Breaker, Rate Limiter, Timeout, Bulkhead и Fallback
.Failsafe-go поможет построить гибкую, простую в использовании реализацию
retry и circuit breaker,
а также возможность комбинировать их с другими стратегиями отказоустойчивости, что предлагают библиотеки на других языках. ▪Project
▪Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡ Бесплатные курсы: DevOps и Cloud:
❯ Бесплатный онлайн-курс DevOps
https://academiait.ru/course/devops/
❯ Golang бесплатный курс с нуля
https://stepik.org/course/179158/promo
❯ Youtube
https://www.youtube.com/playlist?list=PLysMDSbb9HcxpAb8lhnMaRpX890wSLz66
❯ Linux
http://mygreatlearning.com/academy/learn-for-free/courses/linux-tutorial
❯ Основы программирования для Linux
https://stepik.org/course/548/promo
❯ Основы Linux
https://stepik.org/course/762/promo
❯ Основы Linux
https://stepik.org/course/762/promo
❯ GIT
http://simplilearn.com/learn-git-basics-skillup
❯ DevOps
http://openclassrooms.com/courses/7853556-discover-the-devops-methodology
❯ CI/CD
http://simplilearn.com/free-ci-cd-online-training-course-skillup
❯ Docker
http://cognitiveclass.ai/courses/docker-essentials
❯ Kubernetes
http://simplilearn.com/learn-kubernetes-basics-free-course-skillup
❯ GitHub
http://mygreatlearning.com/academy/learn-for-free/courses/github-tutorial-for-beginners
❯ Cloud Computing
http://cognitiveclass.ai/courses/introduction-to-cloud
❯ AWS
http://openclassrooms.com/courses/7864796-discover-cloud-with-amazon-web-services
❯ Azure
http://mygreatlearning.com/academy/learn-for-free/courses/microsoft-azure-essentials
❯ GCP
http://simplilearn.com/learn-google-cloud-platform-fundamentals-free-course-skillup
❯ Serverless
http://mygreatlearning.com/academy/learn-for-free/courses/serverless-computing
❯ Jenkins
http://mygreatlearning.com/academy/learn-for-free/courses/jenkins-tutorial
❯ Puppet
http://simplilearn.com/free-course-to-learn-puppet-basics-skillup
❯ Chef
http://simplilearn.com/chef-in-devops-basics-free-course-skillup
❯ Ansible
http://simplilearn.com/learn-ansible-basics-free-course-skillup
❯ Selenium
http://mygreatlearning.com/academy/learn-for-free/courses/selenium-basics
❯ VirtualBox & vSphere
http://openclassrooms.com/courses/7163136-set-up-virtual-machines-using-virtualbox-and-vsphere
❯ Специализация Python Scripting for DevOps
https://www.coursera.org/specializations/python-scripting-devops
@Golang_google
❯ Бесплатный онлайн-курс DevOps
https://academiait.ru/course/devops/
❯ Golang бесплатный курс с нуля
https://stepik.org/course/179158/promo
❯ Youtube
https://www.youtube.com/playlist?list=PLysMDSbb9HcxpAb8lhnMaRpX890wSLz66
❯ Linux
http://mygreatlearning.com/academy/learn-for-free/courses/linux-tutorial
❯ Основы программирования для Linux
https://stepik.org/course/548/promo
❯ Основы Linux
https://stepik.org/course/762/promo
❯ Основы Linux
https://stepik.org/course/762/promo
❯ GIT
http://simplilearn.com/learn-git-basics-skillup
❯ DevOps
http://openclassrooms.com/courses/7853556-discover-the-devops-methodology
❯ CI/CD
http://simplilearn.com/free-ci-cd-online-training-course-skillup
❯ Docker
http://cognitiveclass.ai/courses/docker-essentials
❯ Kubernetes
http://simplilearn.com/learn-kubernetes-basics-free-course-skillup
❯ GitHub
http://mygreatlearning.com/academy/learn-for-free/courses/github-tutorial-for-beginners
❯ Cloud Computing
http://cognitiveclass.ai/courses/introduction-to-cloud
❯ AWS
http://openclassrooms.com/courses/7864796-discover-cloud-with-amazon-web-services
❯ Azure
http://mygreatlearning.com/academy/learn-for-free/courses/microsoft-azure-essentials
❯ GCP
http://simplilearn.com/learn-google-cloud-platform-fundamentals-free-course-skillup
❯ Serverless
http://mygreatlearning.com/academy/learn-for-free/courses/serverless-computing
❯ Jenkins
http://mygreatlearning.com/academy/learn-for-free/courses/jenkins-tutorial
❯ Puppet
http://simplilearn.com/free-course-to-learn-puppet-basics-skillup
❯ Chef
http://simplilearn.com/chef-in-devops-basics-free-course-skillup
❯ Ansible
http://simplilearn.com/learn-ansible-basics-free-course-skillup
❯ Selenium
http://mygreatlearning.com/academy/learn-for-free/courses/selenium-basics
❯ VirtualBox & vSphere
http://openclassrooms.com/courses/7163136-set-up-virtual-machines-using-virtualbox-and-vsphere
❯ Специализация Python Scripting for DevOps
https://www.coursera.org/specializations/python-scripting-devops
@Golang_google
В Go 1.21 добавлен новый порт, ориентированный на API системных вызовов WASI preview. Этот порт основан на существующем порте WebAssembly, представленном в Go 1.1.
WebAssembly (или Wasm) — это бинарный формат, запускаемый в браузере, виртуальная машина, и результат компиляции с языка высокого уровня.
Wasm это не язык программирования, подобно тому как байт-код Java это не язык программирования, а результат компиляции и запускаемый блок кода.
Кто-то очень умный сказал, что название web assembly (то есть «ассемблер для веба») полностью неправильное, потому что это не ассемблер (не язык программирования) и он никак не связан с вебом (потому что это просто виртуальная машина).
https://go.dev/blog/wasi
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Hoverfly - это легкий инструмент с открытым исходным кодом для моделирования API, написанный на Go.
С помощью Hoverfly можно создавать реалистичные симуляции работы с API.
git clone https://github.com/SpectoLabs/hoverfly.git
▪ Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира Golang за неделю
📕 Почитать:
— В Go меняется фундаментальная вещь — цикл
— Microsoft предлагает БЕСПЛАТНЫЕ онлайн курсы с сертификацией
— Конкурентность — это не параллелизм
— Книги для Golang-разработчиков: подборка для программистов с опытом
— Планирование в Go: Часть III — Конкурентность
— How to build a Slack Bot in Go
— Mastering Golang Statements: Unknown to Expert
— Crafting a Language Server in Golang: A VSCode LSP for Lama2
— Mastering writing Packages with Go when working with the Azure SDK.
— 16. Online Location Information Synchronization
— Integration Test MySQL Store (Go)
— Infrastructure as Code best practices
— Understanding CPU Cache and Prefetching in Go
— Making Dynamic Website Thumbnail
— Stop LLM/GenAI hallucination fast: Serverless Kendra RAG with GO
📌 Посмотреть:
🌐 Уроки Golang с нуля /#29 - Дженерики/обобщения (⏱ 10:52)
🌐 Уроки Golang с нуля /#30 - Горутины (⏱ 08:09)
🌐 What Is THE BEST Web Framework In Golang? Why? (⏱ 14:39)
🌐 Domain Driven Design (DDD) in Golang!? (⏱ 11:29)
Хорошего дня!
@Golang_google
📕 Почитать:
— В Go меняется фундаментальная вещь — цикл
— Microsoft предлагает БЕСПЛАТНЫЕ онлайн курсы с сертификацией
— Конкурентность — это не параллелизм
— Книги для Golang-разработчиков: подборка для программистов с опытом
— Планирование в Go: Часть III — Конкурентность
— How to build a Slack Bot in Go
— Mastering Golang Statements: Unknown to Expert
— Crafting a Language Server in Golang: A VSCode LSP for Lama2
— Mastering writing Packages with Go when working with the Azure SDK.
— 16. Online Location Information Synchronization
— Integration Test MySQL Store (Go)
— Infrastructure as Code best practices
— Understanding CPU Cache and Prefetching in Go
— Making Dynamic Website Thumbnail
— Stop LLM/GenAI hallucination fast: Serverless Kendra RAG with GO
📌 Посмотреть:
🌐 Уроки Golang с нуля /#29 - Дженерики/обобщения (⏱ 10:52)
🌐 Уроки Golang с нуля /#30 - Горутины (⏱ 08:09)
🌐 What Is THE BEST Web Framework In Golang? Why? (⏱ 14:39)
🌐 Domain Driven Design (DDD) in Golang!? (⏱ 11:29)
Хорошего дня!
@Golang_google
This media is not supported in your browser
VIEW IN TELEGRAM
🏗 Bubble Tea
Фреймворк на Go, который позволяет легко создавать красивые и функциональные терминальные приложения.
• Github
• Примеры с кодом
• Docs
@Golang_google
Фреймворк на Go, который позволяет легко создавать красивые и функциональные терминальные приложения.
package main
import (
"fmt"
"os"
tea "github.com/charmbracelet/bubbletea"
)
• Github
• Примеры с кодом
• Docs
@Golang_google
Go-hcaptcha — библиотека, написанная на GO для решения
капчи
.Для решения необходим URL сайта (не домена!), а также ключ сайта, который можно найти в HTML-файле сайта с вызовом
hCaptcha
.c, err := NewChallenge(siteUrl, siteKey)
if err != nil {
panic(err)
}
err = c.Solve(&GuessSolver{})
if err != nil {
panic(err)
}
fmt.Println(c.Token()) // P0_eyJ0eXAiOiJKV1QiLC...
• GitHub
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
go-exploit - это фреймворк для разработки эксплойтов на языке Go.
Эксплойт - программа, фрагмент программного, использующие уязвимости в программном обеспечении и применяемые для проведения атаки на вычислительную систему.
Фреймворк помогает разработчикам создавать небольшие, автономные эксплойты для тестирования приложений.
▪Github
▪Docs
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
1. 𝗞𝘂𝗯𝗲𝗿𝗻𝗲𝘁𝗲𝘀 𝗧𝗵𝗲 𝗛𝗮𝗿𝗱 𝗪𝗮𝘆
Пошаговое руководство по настройке кластеров Kubernetes с нуля, позволяющее получить глубокое представление о внутреннем устройстве Kubernetes.
🔗 https://github.com/kelseyhightower/kubernetes-the-hard-way
2. 𝗗𝗶𝘃𝗲
Dive - это инструмент для изучения образов Docker, помогающий DevOps специалистам анализировать содержимое образов для их дальнейшей оптимизации.
🔗 https://github.com/wagoodman/dive
3. 𝗮𝘄𝗲𝘀𝗼𝗺𝗲-𝗽𝗿𝗼𝗺𝗲𝘁𝗵𝗲𝘂𝘀
Список ресурсов, инструментов и интеграций с Prometheus, популярного инструмента мониторинга , используемого в DevOps.
🔗 https://github.com/roaldnefs/awesome-prometheus
4. 𝗚𝗼𝗥𝗲𝗹𝗲𝗮𝘀𝗲𝗿
Проект, который позволяет легко и быстро создавать deb пакеты.
🔗 https://github.com/goreleaser/goreleaser
5. 𝗗𝗲𝘃𝗢𝗽𝘀 𝗘𝘅𝗲𝗿𝗰𝗶𝘀𝗲𝘀
Предоставляет коллекцию упражнений и задач, связанных с различными DevOps топиками, для практики.
🔗 https://github.com/bregman-arie/devops-exercises
6. 𝗠𝗼𝗹𝗲𝗰𝘂𝗹𝗲
Фреймворк для тестирования кода инфраструктуры с помощью
Ansible
, помогающий в разработке и проверке ролей и плейбуков.🔗 https://github.com/ansible/molecule
7. 𝗦𝗢𝗣𝗦
SOPS (Secrets Operator for Kubernetes) упрощает управление безопасностью для Kubernetes.
🔗 https://github.com/mozilla/sops
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Redis-operator - инструмент , написанный на Go, позволяющий создавать/мониторить работу
Redis
в автономном и кластерном режиме на базе Kubernetes
. • Github
• Документация
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM