37.1K subscribers
1.46K photos
33 videos
5 files
1.62K links
加入频道
Dockertest - это замечательная библиотека, позволяющая управлять контейнерами docker для тестов. Вместо использования docker compose или других настроек (вне тестов) мы можем создавать чистую среду docker при каждом запуске.

Простой пример работы с Dockertest

Github
Example

@Golang_google
👣 Интересная статья - Как улучшить консистентность и производительность краулера на Go с помощью retry logics и настройки сети.

📌 Cтатья

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

Обновление библиотеки Lingua Go, которая позволяет определить, на каком языке написан тот или иной текст. Это очень полезно в качестве этапа предварительной обработки лингвистических данных в приложениях обработки естественного языка, таких как классификация текстов и проверка орфографии.

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

В настоящее время поддерживаются 75 языков.

go get github.com/pemistahl/lingua-go

Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔍 ScyllaDB в K8S: как справляться с интенсивными рабочими нагрузками на спотовых экземплярах без простоев

Почему не MongoDB?
Чем плоха Mongo?

У нее открытый исходный код, поддерживается разделение данных, но совершенно иная архитектура — с единой точкой отказа. При «падении» главного узла, то есть координатора, в БД начинается отработка отказа, во время которого БД недоступна.

Кроме того, для достижения высокой доступности каждый сегмент Mongo должен запускаться как набор реплик —  больше узлов. Кольцевая архитектура Cassandra в этом смысле превосходнее. Драйвер Scylla «знает» о сегментах и добирается до конкретного узла/процессора, ответственного за запрашиваемую строку, делая распределение действительным.

Но почему так важны отработка отказов без простоев и высокая доступность? На спотовых экземплярах — а это 1/4 стоимости вычислений — часто ежедневно случаются отработки отказов: узлы в k8s постоянно уничтожаются и воссоздаются, что чревато завершением всех запущенных в них подов/процессов, в том числе БД.

Установка Scylla
Сначала запустим локально, используя драйверы и что-нибудь на Cassandra Query Language:
docker run -p 9042:9042 -p 7002:7000 -p 7001:7001 -p 9160:9160 -p 9180:9180 --name scylla --hostname scylla -d scylladb/scylla --smp 1 --developer-mode 1

Этой командой запустится одноузловой кластер Scylla. Так в режиме разработчика Scylla требуется минимум ресурсов в отличие от Cassandra, с которой у Docker Engine много работы.

Применение драйвера Scylla
Вот простой пример на Golang с использованием официального драйвера Scylla:
import "github.com/gocql/gocql"

func Connect(config Config) (*gocql.Session, error) {
cluster := gocql.NewCluster(config.Hosts...)
cluster.Keyspace = config.KeySpace
cluster.CQLVersion = "3.11"
cluster.RetryPolicy = &gocql.ExponentialBackoffRetryPolicy{
NumRetries: 5, Min: time.Millisecond * 5, Max: time.Second * 5}
cluster.ProtoVersion = 3
cluster.PoolConfig.HostSelectionPolicy = gocql.TokenAwareHostPolicy(
gocql.RoundRobinHostPolicy())
cluster.ConnectTimeout = time.Second * 10
cluster.Consistency = gocql.One
if config.Timeout != nil {
cluster.Timeout = *config.Timeout

}

cluster.Authenticator = gocql.PasswordAuthenticator{
Username: config.Username, //'cassandra' по умолчанию
Password: config.Password, //'cassandra' по умолчанию
}
session, err := cluster.CreateSession()
if err != nil {
return nil, err
}

return session, nil
}


Здесь стоит обратить внимание вот на что:
cluster.PoolConfig.HostSelectionPolicy = gocql.TokenAwareHostPolicy(
gocql.RoundRobinHostPolicy())


Драйвером-клиентом TokenAware с помощью ключа раздела пробуется первый сегмент, затем методом циклического перебора — следующий, если первый недоступен. Для этого необходимо подключиться не к порту Cassandra по умолчанию 9042, а к порту Scylla с поддержкой сегментов 19042.

Попробуем простой запрос:
func Ping(session *gocql.Session) error {
var str = new(string)
if err := session.Query("SELECT uuid() FROM system.local;").Scan(str); err != nil {
return err
}
if str == nil || len(*str) == 0 {
return errors.New("failed sanity check")
}
return nil
}
// альтернатива «select 1;» в SQL


Переходим в облако

📌ПРОДОЛЖЕНИЕ

@Golang_google
🔥 Backend Master Class [Golang + Postgres + Kubernetes + gRPC]

В этом курсе вы шаг за шагом узнаете, как спроектировать, разработать и развернуть веб-сервис с нуля.

Лучший способ изучения программирования - это создание реального приложения. Поэтому на протяжении всего курса вы будете учиться создавать веб-сервис для банка. В проекте предоставлены API-интерфейсы для фронтенда, позволяющие выполнять следующие действия:

Создавать и управлять банковскими счетами.
Записывать все изменения баланса на каждом из счетов.
Выполнять денежные переводы между двумя счетами.

67 лекций и много практики.

Github
Курс

@Golang_google
👣 Fake GitHub Contributions Generator

Забавный проект, написанный на Go, который генерирует фальшивые коммиты каждый день, чтобы ваш профиль GH выглядел так, будто вы обновляете свой проект каждый день.

Github

$ go install github.com/navicstein/fake-contributions

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира : Golang за неделю

Почитать:
Практика Go — Обработка ошибок
Практика Go — Concurrency
9 лучших консольных файловых менеджеров Linux
Чему вы научитесь на бесплатном курсе VK Education по Go?
Практика Go — Основы
Шпаргалка для собеса по GoLang
Testing calls to Daily's REST API in Go
Golang Web: URL Parsing
Rust, Go, Rinha e I/O
Error handling in Golang
Integration Test Postgres Store (Go)
Nuances in Go: Exploring the Tiny Details. Part-1.
15. World Chat System Implementation
Hunting Broken Social Media Links with Go
How to create and read custom tags in Golang
Fibonacci Sequence Computation in Go Programming Language
Wtf is Grpc? Part 1: Authentication and Authorization in Flutter and Golang.

Посмотреть:

🌐 Уроки Golang с нуля /#26 - Обработка ошибок ( 08:14)
библиотеке Numpy. Полезные функции ( 11:05)
🌐 Beginners Should Think Differently When Writing Golang ( 11:35)
🌐 The Power Of Struct Embedding And Interfaces In Golang ( 15:05)
🌐 Adding Cluster Support To Hollywood Actor Framework
🌐 Полный курс по библиотеке Numpy. Применение Numpy ( 11:52)
🌐 Полный курс по библиотеке Numpy. Создание матриц из файла ( 15:55)
🌐 Полный курс по библиотеке Numpy. Продвинутые методы работы с матрицами ( 07:28)

Хорошего дня!

@Golang_google
Легкий способ получать свежие обновлении и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь:

Data Science: t.me/data_analysis_ml
Go: t.me/GolangJobsit
Java: t.me/javatg
Базы данных: t.me/sqlhub
Машинное обучение: t.me/ai_machinelearning_big_data
C/C++/ t.me/cpluspluc
C#: t.me/csharp_ci
Хакинг: t.me/linuxkalii
Мобильная разработка: t.me/mobdevelop
Docker: t.me/+0WdB4uvOwCY0Mjdi
Python: t.me/pythonl
Rust: t.me/rust_code
Javascript: t.me/javascriptv
React: t.me/react_tg
PHP: t.me/phpshka
Android: t.me/android_its
Linux: t.me/+A8jY79rcyKJlYWY6
Big Data: t.me/bigdatai
Devops: t.me/devOPSitsec
Тестирование:https://yangx.top/+F9jPLmMFqq1kNTMy
Собеседования: https://yangx.top/machinelearning_interview

💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://yangx.top/addlist/2Ls-snqEeytkMDgy

😆ИТ-Мемы: t.me/memes_prog

🇬🇧Английский: t.me/english_forprogrammers

ИИ: t.me/machinelearning_ru

📕Ит-книги бесплатно: https://yangx.top/addlist/BkskQciUW_FhNjEy
👣 Wumpus

Это ванильная реализация на Go классической текстовой компьютерной игры 1973 года, впервые разработанной Грегори Йоб Хантом (Gregory Yob Hunt The Wumpus).

Она включает в себя все уровни из Wumpus II, механизмы из Wumpus III и Super Wumpus, а также расширенный режим.

Github

#golang #gamedev

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
📖 Логирование в 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