37.1K subscribers
1.46K photos
34 videos
5 files
1.62K links
加入频道
💻 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»

📌 Продолжение
🛠Утилиты на Go для запуска старых Unix-программы, на современных компьютерах.

rsc.io/unix - содержит программы для запуска старых Unix-программ на современных компьютерах.

pdp11 - симулятор PDP-11.

v6unix - симулятор Research Unix Sixth Edition (V6). Он представляет собой перенос логики ядра V6 на Go, используя симулятор PDP11 для запуска пользовательских программ. По большей части ядро является точной имитацией ядра V6, но оно написано с использованием структур данных в памяти и других упрощающих допущений, и в нем нет необходимости заботиться о специфических деталях дисков, терминалов и другого оборудования PDP11. Это позволяет пользователям сосредоточиться на том, как работают программы Unix и каково это - пользоваться системой, а не изучать конфигурацию симулированных дисковых пакетов RK05.

v6run - это интерфейс командной строки к v6unix. go run rsc.io/unix/v6run@latest запустит симулятор. Нажатие Control-Backslash приведет к выходу из симулятора.

v6web - это интерфейс на основе веб-браузера.

Github

@Golang_google