DynamoMQ - это библиотека очередей сообщений, использующая
DynamoDB
в качестве хранилища, написанная на Go. $ go install github.com/vvatanabe/dynamomq/cmd/dynamomq@latest
▪Github@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Откройте для себя распространенные антишаблоны архитектуры, узнайте, как их избегать и преодолевать "подводные камни" проектирования!
Антипаттерн (англ. anti-pattern) — это распространённый подход к решению класса часто встречающихся проблем, являющийся неэффективным, рискованным или непродуктивным. В отличие от шаблона проектирования, рассмотрение антипаттерна включает в себя как неправильное решение проблемы с его признаками и последствиями, так и выход из ситуации.
В этом проекте собраны ценные сведения, практические советы и примеры из реальных проектов для обучения и помощи в создании лучших программных архитектур и улучшать существующие.
▪Проект
▪Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира Golang за неделю
Почитать:
— Миграции в YDB с помощью «goose»
— Логирование в Golang
— 100 вопросов для подготовки к собесу Data Science
— Дженерики в go
— Проектирование fault-tolerant систем на Go
— WebSocket в Go и причем тут горилла
— Building golang project from scratch - part 3 - setting up the database using docker
— Build a Golang Todo App Backend: A Step-by-Step Guide
— Go versus Rust: Choosing the Best Language for You to Learn in 2024
— Automate the task of creating requirements.txt with pyreqs!
— OnLogs – open-source simplified web logs viewer for Docker containers
— Evitando SQL Injection com Golang
— 5 Golang Features I Wished Were Different!
— Десять самых ярких ИИ-работ от NVIDIA Research за 2023 год
Посмотреть:
🌐 100 вопросов с собеседований Data Science — часть 1 (⏱ 36:48)
🌐FULL STACK Golang + HTMX Building an Engineer Recruitment Platform Golang ~ LIVE!
🌐 Building FFAAS In Go. Fast Function As A Service. (⏱ 01:48:16)
🌐 Coding Instant WASM Rollbacks In Go (⏱ 01:32:12)
🌐 Не мог найти первую работу программистом #айти #программирование #программист (⏱ 00:55)
🌐 Дубай для программиста | Сколько стоит жить в Дубае в 2023 (⏱ 05:38)
Хорошего дня!
@Golang_google
Почитать:
— Миграции в YDB с помощью «goose»
— Логирование в Golang
— 100 вопросов для подготовки к собесу Data Science
— Дженерики в go
— Проектирование fault-tolerant систем на Go
— WebSocket в Go и причем тут горилла
— Building golang project from scratch - part 3 - setting up the database using docker
— Build a Golang Todo App Backend: A Step-by-Step Guide
— Go versus Rust: Choosing the Best Language for You to Learn in 2024
— Automate the task of creating requirements.txt with pyreqs!
— OnLogs – open-source simplified web logs viewer for Docker containers
— Evitando SQL Injection com Golang
— 5 Golang Features I Wished Were Different!
— Десять самых ярких ИИ-работ от NVIDIA Research за 2023 год
Посмотреть:
🌐 100 вопросов с собеседований Data Science — часть 1 (⏱ 36:48)
🌐FULL STACK Golang + HTMX Building an Engineer Recruitment Platform Golang ~ LIVE!
🌐 Building FFAAS In Go. Fast Function As A Service. (⏱ 01:48:16)
🌐 Coding Instant WASM Rollbacks In Go (⏱ 01:32:12)
🌐 Не мог найти первую работу программистом #айти #программирование #программист (⏱ 00:55)
🌐 Дубай для программиста | Сколько стоит жить в Дубае в 2023 (⏱ 05:38)
Хорошего дня!
@Golang_google
Если бы у MongoDB и MySQL родился ребенок, то это был бы CursusDB. Шутки в сторону CursusDB - это распределенная документо-ориентированная in-memory база данных с открытым исходным кодом и SQL-подобным языком запросов, написанным на чистом GO.
▪Github
▪Документация
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Линтер для проверки проверки OpenTelemetry (End, SetStatus, RecordError)
go install github.com/jjti/go-spancheck/cmd/spancheck@latest
spancheck ./...
▪Github
▪Docs
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
💡 Hamlet
Шаблонный движок Haml для Go.
▪Github
▪Документация Haml
@Golang_google
Шаблонный движок Haml для Go.
Haml
(язык абстрактной разметки HTML) основан на одном главном принципе: разметка должна быть красивой. Это не просто красота ради красоты: Haml ускоряет и упрощает создание шаблонов.go install github.com/stackus/hamlet/cmd/hamlet@latest
▪Github
▪Документация Haml
@Golang_google
Gtkcord4 - клиент Discord на Go и GTK4.
go install -v github.com/diamondburned/gtkcord4@latest
▪Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Проведите стресс-тестирование своей базе данных с помощью заранее заданных запросов.
Библиотека поможет найти медленные и неэффективные запросы, которые мешают работе.
go install github.com/adaptive-scale/[email protected]
▪Github@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Он поддерживает различные функции, такие как автоматическая обработка запросов, ограничение скорости запросов и другие, что делает его идеальным как для простых, так и для сложных HTTP-запросов.
go get -u github.com/davesavic/clink
▪Github▪Примеры
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Бенчмарк семи популярных драйверов Go SQLite.
▪ Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Пакетом dot решается проблема добавления данных во вложенных структурах, ассоциативных массивах, срезах и каналах любой сложности и различных типов данных. Если точный путь к требуемому полю известен, но на этом пути имеется карта, нужно сначала корректно ее инициализировать, проверить наличие такого ключа, а затем вставить значение.
Для простой структуры этот пакет не нужен, а вот для иерархии посложнее проект dot Golang с открытым исходным кодом придется кстати.
Расставьте точки над «i», контролируйте данные
Приведу простой пример проблемы, с которой столкнулся, хотя иерархия структур у меня посложнее и пути к полям в будущем могут поменяться:
type Second struct {
Items []string
}
type First struct {
Store map[string]Second
}
📌 Продолжение
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Инструмент CLI, выполняющий SQL-запросы к различным файлам, включая файлы xlsx, и выводящий результаты в различные файлы.
▪Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🥳 Выпущены версии Go 1.21.6 и 1.20.13!
📢 Анонс: https://groups.google.com/g/golang-announce/c/F12eMaUITDs
⬇️ Скачать: https://go.dev/dl/#go1.21.6
#golang
@Golang_google
📢 Анонс: https://groups.google.com/g/golang-announce/c/F12eMaUITDs
⬇️ Скачать: https://go.dev/dl/#go1.21.6
#golang
@Golang_google
This media is not supported in your browser
VIEW IN TELEGRAM
OSINT инструмент, написанный на Go, который не поддерживает сбор и анализ информации по опреленном никнейму в сети.
Благодаря данному методу сбора можно построить цепочку всех упоминаний в интернете, в соц сетях, на сайтах и формумах.
go install github.com/theyahya/enola/cmd/enola@latest
▪Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
В статье описан довольно элегантный паттерн обработки ошибок, при написании
REST,gRPC
и других сервисов на Go. 📌Читать
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Начальный набор для создания веб-сервисов на Go с использованием возможностей Kubernetes.
Проект регулярно обновляется и использует минимальные зависимости, реализует чистый код и следует лучшим практикам программирования на Go.
▪Github
▪Docs
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Go - отличный язык для создания высокопроизводительных веб-приложений, а высокопроизводительные веб-приложения часто требуют централизованного кэширования.
Стандартом де-факто для централизованного кэширования является Redis, но, популярные сегодня библиотеки Go не поддерживают потоковую передачу данных, эффективных с точки зрения памяти.
Вместо этого они предлагают
[]byte API,
с которыми вы взаимодействуете следующим образом:// В этом коде используется https://github.com/redis/go-redis, но те же
// ограничения действуют для Rueidis и Redigo.
func redisHandler(w http.ResponseWriter, r *http.Request) {
ctx := context.Background()
// Extract key from RequestURI
key := strings.TrimLeft(r.RequestURI, "/")
// Get the value from Redis as a byte slice
val, err := rdb.Get(ctx, key).Bytes()
if err == redis.Nil {
http.Error(w, "Key not found in Redis", http.StatusNotFound)
return
} else if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
_, err = w.Write(val)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
Этот паттерн работает хорошо, если вы кэшируете небольшие объекты, но если вы кэшируете объекты размером более 1 кб, []byte-ориентированные API работют не так хорошо.
В протоколе Redis нет ничего такого, что мешало бы создать потоковый API. Поэтому пердставляем redjet, библиотеку Redis, ориентированную на производительность.
С помощью redjet вы можете написать приведенный выше код следующим образом:
func redisHandler(w http.ResponseWriter, r *http.Request) {
ctx := context.Background()
// Извлечение ключа из RequestURI
key := strings.TrimLeft(r.RequestURI, "/")
// Передаем значение непосредственно из Redis в ответ.
_, err := rdb.Command("GET", key).WriteTo(w)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
Код стал проще и эффективнее.
go get github.com/coder/redjet@latest
▪Github
▪Читать дальше
▪Бенчмарки
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Быстрая и простая в использовании CDN, на основе Go.
CDN (Content Delivery Network) — это географически распределённая сетевая инфраструктура, обеспечивающая быструю доставку контента пользователям веб-сервисов и сайтов. Входящие в состав CDN cерверы географически располагаются таким образом, чтобы сделать время ответа для пользователей сайта/сервиса минимальным.
В проекте использованы базы данных SQLite с GORM и веб-фреймворком Gin. UI построен с помощью Vite + React и wouter.
▪ Github
▪Docs
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
go install -v github.com/alpkeskin/mosint/v3/cmd/mosint@latest
▪GitHub@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM