37.1K subscribers
1.46K photos
34 videos
5 files
1.62K links
加入频道
📖 Логирование в Go: 8 лучших библиотек

С вероятностью 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
👣 EvalGPT - это фреймворк, интерпретатора кода, написанный на Go, использующий возможности таких крупных языковых моделей, как 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: Deliver Go binaries as fast and easily as possible.

Обновлен GoReleaser, проект, который позволяет легко и быстро создавать deb пакеты.

Github
Документация

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 LolDriverScan

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
👣 reX

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
⭐️ Cerbos

Выпущена новая версия v0.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.

go get -u go.uber.org/automaxprocs

Github

@Golang_google
👣 Что возвращать в Go: структуры или интерфейсы?

Возвращение структур
Рассмотрим преимущества возвращения структур из функций 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
👣 Crafting a Language Server in Golang: A VSCode LSP for Lama2

Lama2 - это менеджер API, ориентированный на работу с текстом и оптимизированный для совместной работы через Git.

В этой статье подробно с рассказывается о разработке функционала для VSCode с Lama2 на Go. От проблем, с которыми разработчики столкнулись во время разработки до инсайтов, которые были реализованы за год работы.


Статья
Lama2

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Failsafe-go

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
👣 WASI support in Go

В 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

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
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🏗 Bubble Tea

Фреймворк на Go, который позволяет легко создавать красивые и функциональные терминальные приложения.

package main

import (
"fmt"
"os"

tea "github.com/charmbracelet/bubbletea"
)

Github
Примеры с кодом
Docs

@Golang_google
👣 Go-hcaptcha

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 Exploit Framework

go-exploit - это фреймворк для разработки эксплойтов на языке Go.

Эксплойт - программа, фрагмент программного, использующие уязвимости в программном обеспечении и применяемые для проведения атаки на вычислительную систему.

Фреймворк помогает разработчикам создавать небольшие, автономные эксплойты для тестирования приложений.

Github
Docs

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ 7 репозиториев GitHub для DevOps специалистов.

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

Redis-operator - инструмент , написанный на Go, позволяющий создавать/мониторить работу Redis в автономном и кластерном режиме на базе Kubernetes.

Github
Документация

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM