37.1K subscribers
1.46K photos
34 videos
5 files
1.62K links
加入频道
👣 Go Easy i18n

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

go get github.com/eduardolat/goeasyi18n

Github

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

Бенчмарк для обработки данных с использованием Go, Rust, Swift, Zig, Julia и др.

Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
💻 Kor - инструмент для обнаружения неиспользуемых ресурсов Kubernetes

go install github.com/yonahd/kor@latest

Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Малоизвестный пакет Go, который пригодится при выполнении SQL-миграций

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

В файле migration.go имеется следующий код: рис 1.

Пакет, о котором идет речь, называется embed (более подробная информация в документации).

Пакет embed появился в Go 1.16. Он предоставляет возможность встраивать файлы и каталоги в бинарные файлы Go. В данном случае пакет embed используется для встраивания файлов миграции SQL в бинарный файл.

Директива //go:embed *.sql  — это специальный комментарий, который указывает компилятору Go включить все файлы с расширением .sql во встроенную файловую систему. Доступ к встроенным файлам можно получить с помощью типа embed.FS.

Переменная FS  — это глобальная переменная типа embed.FS, в которой хранится встроенная файловая система. Переменная FS может использоваться для доступа к встроенным файлам во время выполнения программы.

Обычно sql-файл создается вместе с пакетом миграций (migrations) в той же папке.

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

📌 Читать дальше
📌 Embed

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 G-Systemctl

g-systemctl - это графический пользовательский интерфейс для ваших сервисов в *nix-системах. Вы можете видеть все свои сервисные демоны, искать и фильтровать их, а также управлять ими.

go build src/server.go

Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
👣 tparse

Инструмент командной строки для анализа и вывода результатов тестирования для Go.

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

Для получения дополнительной информации о пройденных тестах запустите tparse с флагом -pass. Тесты сгруппированы по пакетам и отсортированы по времени выполнения в порядке убывания (от самого длинного к самому короткому).

go install github.com/mfridman/tparse@latest

Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Гайд по cозданию regex-движока с нуля на Golang


В этой статье описано создание простого движка регулярных выражений, который сможет использовать шаблон [a-zA-Z][a-zA-Z0-9_.]+@[a-zA-Z0-9]+.[a-zA-Z]{2,} (., в качестве литерала вместо любого символа ) для проверки валидности адресов электронной почты.

Статья состоит из трех разделов:
• Parsing
• Использование конечных автоматов
• Matching


📌 Читать
📌 Код

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

Afero - это фреймворк, предоставляющий простой и универсальный API, взаимодействующий с любой файловой системой, работающий, как слой абстракции. Afero обладает функциональным интерфейсом без ненужных конструкторов и методов инициализации.

Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Шпаргалка по компонентам облачной сети.

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

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

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

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

В данной шпаргалке приводится краткое, но исчерпывающее сравнение ключевых сетевых элементов четырех основных облачных провайдеров.

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

Почитать:
Улучшенная маршрутизация HTTP-серверов в Go 1.22
Антипаттерны в TDD
Зачем нужны модульные тесты и как заставить их работать на вас
Малоизвестный пакет Go, который пригодится при выполнении SQL-миграций
7 концепций SQL, которые необходимо знать для работы с данными
Build and test a Golang app with Gitness
REST Servers in Go: Part 1 - standard library
REST Servers in Go: Part 2 - using a router
Browser Performance Testing using k6
What to expect from a Backend Development Platform
Build an Event-Driven Uptime Monitor in Go 🚀
Locating failing test cases in table-driven tests in Go
Golang Web API Course: Project configuration management using Viper
Solve code complexity (in Go)
Diving into CORS with Nitric in GO
I'm going back to school, Live
Resilient Systems using Go: Semaphores

Посмотреть:

🌐 NATS.io: Beyond hello world / David Gee
🌐 An Intro to Pocketbase / Haseeb Majid
🌐 How to Rewrite a Service / Michal Bock
🌐 OpenTelemetry with AWS / Luke Stoward
🌐 A Purist's Guide to Type-Driven Design in Go / Angus Morrison
🌐 Go and Rust: Together at Last / Barnaby Keene
🌐 Go + CUE - A Match Made In Heaven! / Paul Jolly
🌐 Bundling Tasks with Taskfile / Talha Altinel
🌐 Featherweight Go / Raymond Hu, Julien Lange, Bernardo Toninho
🌐 Пишем телеграм бота для скачивания #yotube видео ( 20:41)
🌐 Golang And Svelte LIVE Development ( 01:21:37)
🌐 Golang And Svelte - Swapping To Server Side Rendering ( 01:27:49)
🌐 Не делай этого, когда изучаешь программирование ( 03:43)
🌐 Совет начинающим программистам #айти #программирование #программист ( 00:39)
🌐 Linked Lists in Go | Data Structures and Algorithms ( 20:31)
🌐 Backgrounds Jobs with Go Routines! - Golang Concurrency Example ( 05:58)

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

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🦅 FalconHound - это новый многофункциональный инструмент информационной безопасности.

FalconHound - проект с открытым исходным кодом, написанный на Go для Blue Team. Blue team — это команда защиты информационной безопасности. Чаще всего это аналитики и инженеры внутреннего SOC компании или сторонней организации, которая предоставляет свои услуги на аутсорсе.

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

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

FalconHound обеспечивает:

Создание, добавление, удаление и сеансов на графе на основе событий входа и выхода из системы.
Пометка пользователей и компьютеров как скомпрометированных
Добавление в граф информации о CVE и наличии общедоступного эксплойта.
Сбор активности с Azure.
Перерасчет кратчайшего пути к чувствительным группам при добавлении пользователя в группу или получении новой роли.
Добавление в граф новых пользователей, групп и компьютеров.
Формирование отчетов для Sentinel и Splunk, например отчетов, пользователей, имеющих доступ к Kerberoast, или пользователей, владеющих определенными сущностями.

📌 Github

@Golang_google
👣 Сompress

Обновлен пакет compress. Это проект, который предоставляет различные алгоритмы сжатия:

S2 высокопроизводительная замена Snappy.
Оптимизированный пакет deflate, который можно использовать в качестве замены gzip, zip и zlib.
snappy - это замена github.com/golang/snappy, обеспечивающая лучшее сжатие и одновременные потоки.
zstandard компрессия и декомпрессия в Go.
huff0 и FSE реализации.
gzhttp - предоставляет клиентские и серверные оболочки для обработки gzipped-запросов.
pgzip - пакет, обеспечивающий очень быструю параллельную реализацию gzip.

📌 Github

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

Небольшой, но мощный пакет для логов протоколирования HTTP-запросов, построенный на основе пакета Go 1.21+ stdlib slog.

go get -u github.com/go-chi/httplog/v2

Github

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

GoCrack предоставляет API для широкого спектра задач взлома паролей с помощью различных алгоритмов, который написан на Go.

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

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ Эволюция микросервисной архитектуры Airbnb за последние 15 лет.

Микросервисная архитектура Airbnb прошла 3 основных этапа.

Монолит (2008 - 2017 гг.)
Airbnb начиналась как простая площадка для хозяев и гостей. Он был построен в виде приложения монолита.

В чем проблема?
- Запутанная система управления + громоздкий, плохо структурированный код
- Медленное развертывание

Микросервисы (2017 - 2020 гг.)
Микросервисы были призваны решить эти проблемы. В новое архитектуре ключевыми сервисами являются:
- Cервис получения данных
- Сервис данных бизнес-логики
- Сервис рабочих процессов записи
- Сервис агрегации пользовательского интерфейса
- Каждый сервис имеет одну команду-владельца.

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

Микро и макросервисы (2020 - настоящее время)
Это то, над чем сейчас работает Airbnb. Гибридная модель микро и макросервисов сосредоточена на унификации API.

Почитать подробнее об архитектуру можно здесь.

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

elem - это легковесная библиотека на языке Go для программного создания HTML-элементов.

Используя возможности сильной типизации языка Go, elem обеспечивает безопасность типов при определении и манипулировании HTML-элементами, сводя к минимуму возможные ошибки во время выполнения программы.

Она упрощает создание HTML-кода, предоставляя простой и интуитивно понятный способ создания элементов и задания их атрибутов, свойств и содержимого.

go get github.com/chasefleming/elem-go

content := elem.Div(elem.Attrs{
attrs.ID: "container",
attrs.Class: "my-class",
},
elem.H1(nil, elem.Text("Hello, Elem!")),
elem.H2(nil, elem.Text("Subheading")),
elem.P(nil, elem.Text("This is a paragraph.")),
)


📌 Github

@Golang_google
⚡️ System design 101

На прошлой неделе был создан репозиторий GitHub "System Design 101", который только что достиг 36к + звезд.

Объяснение сложных систем с помощью наглядных примеров и простых терминов.

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

Что включено в репозиторий GitHub:
- 100 + концепций систем с наглядными примерами.
- Примеры с кодом из реальной практики.
- Советы по подготовке к собеседованиям по проектированию систем.
- SOAP vs. REST vs. GraphQL vs. RPC
- HTTP 1.0 -> HTTP 1.1 -> HTTP 2.0 -> HTTP 3.0 (QUIC)
- CI/CD Pipeline
- Структуры данных, обеспечивающих работу баз данных
- Лучшие практики кэширования
- Примеры микросервисных архитектур

Github

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

Почитать:
Playground. Как сэкономить время на настройке локальной среды
Schemaless для Uber.
Yet Another Easyjson. Как я не устаю делать велосипеды, а главное зачем
Kafka, go и параллельные очереди
Мониторинг и трассировка в Go: от Prometheus до Jaeger
Визуализация результатов Telegram-опросов в Grafana
Go 1.21: пакет slices
A Comprehensive Introduction to Golang
Grogue: A Roguelike Tutorial in Go (Part 3)
Experimenting on the Edge with Turso and Go 🧪
Have multiple config file types in a project? Here’s a single tool to validate them all!
Building a Fargate API Server with Go, Gin, Docker, and AWS Copilot
Distribuindo uma aplicação Go sem o Docker
ltag: A little CLI tool for tagged text searching
Use Gozz to Manage Your Golang Struct Field Tags Formats Automatically
Storing Secrets Securely for Go Cloud Applications 🔑
Building a global deployment platform is hard, here is why

Посмотреть:


🌐 Идеальный мир программиста ( 04:03)
🌐 Качества хорошего программиста #айти #программирование #программист ( 00:45)
🌐 Plunge into Zig by Solving a Coding Challenge ( 14:13)
🌐 Прогнозирование цены биткоина при помощи VAR, XGBoost, FB Prophet ( 20:29)
🌐Learn Golang: Build High-Performance Applications with Go | The basics | Part 1

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

Шахматный движок, написанный на Go

Если передать аргумент командной строки "-c", то будет запущен консольный интерфейс для игры в шахматные партии из командной строки.

Шахматная доска с графическим интерфейсом HTML взята с сайта https://chessboardjs.com/.

Github

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

GoFr - это веб-фреймворк, написанный на языке Go, ориентирован на развертывание в kubernetes, который помогает создавать надежные и масштабируемые приложения.

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

Ключевые особенности
Middleware для реализации общей функциональности, такой как протоколирование, кэширование и аутентификация.

Поддержка различных типов ответов, таких как JSON, XML, TEXT, HTML и FILE.
Встроенная обработка ошибок для типичных ситуаций, включая ошибки базы данных и ошибки проверки параметров.
Заголовки и параметы запроса и обрабатываются динамически.
Проверка работоспособности и мониторинг для контроля непрерывной доступности сервиса.
Встроенный планировщик cron для планирования повторяющихся задач.
Метрики для мониторинга и анализа с помощью Prometheus, мониторинг производительности с помощью Grafana.
Возможность трассировки для отслеживания хода выполнения запросов пользователей.
Поддержка логирования на основе уровней для эффективной отладки и мониторинга.
Фильтры для манипулирования и преобразования данных.
Поддержка внутренних URL-адресов для безопасного взаимодействия внутри кластера.

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

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🦫10 проектов для изучения Golang в 2023 году

Оптимальный способ освоить Golang — создавать проекты. Исследованиями показано, что учиться лучше на практике, это подтверждается и моим опытом. Вопрос в том, какие именно проекты создавать?

10 идей проектов на Golang для начинающих (с курсами):

1. Создание веб-сервера

Это отличный проект для начала веб-разработки на Golang. Настраивая сервер для обработки HTTP-запросов и отправки ответов обратно клиентам, вы узнаете о маршрутизации, обработке HTTP-методов, парсинге параметров запроса, работе со статическими файлами.

Начните со встроенного пакета net/http, этого надежного каркаса для создания HTTP-серверов. Настроив сервер, добавьте конечные точки для обработки GET-, POST-, PUT- и DELETE-запросов.

2. Создание системы управления книгами YSQL


Это проект для эффективного управления книжными фондами.

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

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

3. Создание «Slackbot» для загрузки файлов

Это проект для загрузки файлов на канал Slack, доступ к каналу получается через его API. Создается приложение Slackbot с настройкой его разрешений, а также сервер для обработки загрузки файлов, который интегрируется со Slackbot.

Ваша команда часто обменивается файлами в Slack? Тогда проект для вас: здесь это делается быстро и легко, не выходя из интерфейса Slack.

4. Создание «AWS Lambda»

📌 Продолжение