37.1K subscribers
1.46K photos
34 videos
5 files
1.62K links
加入频道
🟡 Дайджест полезных материалов из мира Golang за неделю

Почитать:
Хакните HL и заработайте 125.000 рублей
- Шбалон стратегия в Go
Используем Hashicorp Vault для хранения секретов
От C до Go. Как Golang объединил лучшие черты своих предшественников
Отранжированные и смешные: создаем систему выстраивания пользовательской ленты
В Go 1.21 существенно расширяется стандартная библиотека
Как протестировать код на Go с базой данных?
Golang — архитектурный линтер
Сравниваем скорость и оверхеды библиотек Deep Copy для Go
Добавляем Starlark в приложение на Go
Как построить систему, способную выдерживать нагрузку в 5 млн rps
Understanding the Singleton Pattern in Go
Bringing Go Templates everywhere
Minimum Cost for Tickets LeetCode
Using Golang for your AWS Lambda Functions
Unlocking AI Potential: Integrating OpenAI API into GoLang Microservices
Designing Microservices RESTful API using Go with CRUD Operations: A Practical Guide
Actors and Workflows: Building a Customer Loyalty Program with Temporal
S1E3: Mastering Concurrency with Worker Pool in GoLang: A Scalable Solution for Efficient Task Processing
Inspection, on the go
Resolving type parameter ambiguities

Посмотреть:
🌐 Уроки Golang с нуля /#20 - Методы ( 6:54)

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

@Golang_google
This media is not supported in your browser
VIEW IN TELEGRAM
👣 gophernotes - это инстремнт Go для блокнотов Jupyter и nteract.

gophernotes позволяет использовать Go в интерактивном режиме в браузере, ноутбуке или десктопном приложении.

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

go install github.com/gopherdata/[email protected]
mkdir -p ~/.local/share/jupyter/kernels/gophernotes
cd ~/.local/share/jupyter/kernels/gophernotes
cp "$(go env GOPATH)"/pkg/mod/github.com/gopherdata/[email protected]/kernel/* "."
chmod +w ./kernel.json # in case copied kernel.json has no write permission
sed "s|gophernotes|$(go env GOPATH)/bin/gophernotes|" < kernel.json.in > kernel.json


Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🦫Создание оркестратора для событийно-ориентированного приложения с Golang и RabbitMQ

Определение требований
Номера в гостинице бронируются по мере доступности.

Создадим конвейер передачи запроса на бронирование номера по различным сервисам: резервирования, проверки, зачисления средств, бронирования.

Сервисам не нужно ждать ответа друг от друга — они даже не «знают», откуда запрос: у каждого сервиса только одна задача, и он хорошо с ней справляется. Это называется снижением связанности. Не нужно задумываться о причине запроса и ждать ответа других сервисов — используем все преимущества архитектуры микросервисов.

Сначала создадим блок-схему:
показано в картинке.

Как видите, всего четыре этапа:
1. Проверка: в некоторых сценариях гостиницами обслуживаются не все желающие, например кому-то закрыт доступ или определенный номер резервируется только для конкретной группы. Это сложные правила, отделим их от веб-API.
2. Резервирование: одновременное бронирование номера несколькими людьми предотвращается глобальной блокировкой, подобной Redis.
3. Списание: зарезервировав номер, списываем средства.
4. Бронирование: завершив процесс списания, удаляем резервирование и бронируем номер.

Но в любом сервисе случаются ошибки.

Оркестрация — отличное подспорье для создания стабильного потока запросов, обработки ошибок и соответственных действий.

Действия требуются при очевидных ошибках:
Недостаточно средств: удаляем резервирование.
Ошибка при бронировании: возвращаем средства и удаляем резервирование.

Настройка RabbitMQ
Не знакомы с RabbitMQ? Посмотрите руководство для начинающих, хотя основы мы разберем.

RabbitMQ, как и Apache Kafka, — это приложение с отправителями и получателями сообщений. В приложении-чате отправителями сообщение отправляется, получателями — получается.

Как сообщению попасть к моему другу, а не случайному человеку в другой группе? Это сложная часть.

📌 Читать

@Golang_google
🖼️ Выпущен Go 1.21.0!

👍Лайк, если ждал

📌GitHub
Скачать

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🗺 Google maps scraper

Это Golang парсер, на основе фреймворка scrapemate который позволяет удобно парсить данные из Google Maps.

Он автоматизирует просмотр веб-страниц и позволяет извлекать: имя, адрес, номер телефона, URL-адрес веб-сайта, рейтинг и количество отзывов для каждого выбранного вами места.

Все данные сохраняются в файл CSV для удобства анализа и обработки.

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

Github

@Golang_google
🐾 Goblin

Goblin позволяет использовать команду curl для установки бинарников Go без самого Go.

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

Это особенно полезно, если вы хотите быстро установить библиотеку без установки всего Go SDK.

curl -sf http://goblin.run/<package>[@version] | [...options] sh

Ставь 👍, если пользовался, только старым Go Binaries.

Проект
Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🎨 Awesome Software Architecture

Полезный список статей и ресурсов для изучения и применения на практике архитектуры, паттернов и принципов программного обеспечения.

https://awesome-architecture.com/

@Golang_google
😂 Отправляй той самой.

@Golang_google
👣 Go-Pattern

Pattern Matching библиотека для Go.

Pattern Matching - метод анализа и обработки структур данных, основанный на выполнении определённых инструкций в зависимости от совпадения исследуемого значения с тем или иным образцом, в качестве которого может использоваться константа, предикат, тип данных или иная поддерживаемая языком конструкция.

Github

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

Shiori - это простой менеджер закладок, написанный на языке Go. Представляет собой простой клон Pocket. Его можно использовать как приложение командной строки или как веб-приложение.

Приложение распространяется в виде одного бинарного файла, что позволяет легко установить и использовать его.

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

gat — полноценная альтернатива cat, написанная на Go и с дополнительными функциями: подсветки синтаксиса на разных языках, поддержки разных тем и форматирования.

$ go install github.com/koki-develop/gat@latest

Github

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

Глубокое техническое погружение во все тонкости Redis.

В статье рассматриваются различные топологии Redis, персистентность данных и форкинг процессов.

Отличная иллюстрированная статья для глубокого понимания Redis.

Читать

@Golang_google
👣 REM

Новая ORM библиотека для Go, поддерживающая PostgreSQL, MySQL. Вскоре авторы обещают добавить SQLite.

go get github.com/evantbyrne/rem

Github

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

Универсальный набор инструментов для сбора и управления OSINT-данными с удобным веб-интерфейсом.

Seekr позволяет объединить все ваши любимые OSINT-инструменты в одном. Бэкэнд написан на языке Go с использованием BadgerDB в качестве базы данных и предлагает широкий спектр возможностей для сбора, управления и анализа данных.

git clone https://github.com/seekr-osint/seekr
cd seekr
go generate ./...
tsc --project web
go run main.go


Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Relational Databases Explained

Принцип работы реляционных баз данных. В этой статье рассказывается о том, как работают индексы и транзакции внутри реляционных баз данных.

Отличная иллюстрированная статья для глубокого понимания реляционных баз данных.

Читать

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

In-memory SQL библиотека на Go sql/driver, которая хорошо подходит для тестирования.

go get github.com/proullon/ramsql

Github

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