37.1K subscribers
1.46K photos
33 videos
5 files
1.62K links
加入频道
This media is not supported in your browser
VIEW IN TELEGRAM
👣 ​​DNSMORPH

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

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

Github

#golang #infosec #pentesting #redteam

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
👣 sj (Swagger Jacker)

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

Инструмент полезе для пентестеров для поиска слабых аутентификаций.

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

$ go install github.com/BishopFox/sj@latest

Github

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

Это часть серии документов, в которых описывается стиль написания кода Go в Google.

Этот документ является нормативным, но не каноническим, и основывается на руководстве по стилю.

https://google.github.io/styleguide/go/decisions#variable-names

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🦫 Как тестировать приложения Gofr?

Протестируем приложения, созданные в GoFr  — специфическом веб-фреймворке, написанном на Golang.

Модульное тестирование  — это написание для конкретных блоков кода отдельных тестовых функций, которые записываются в файлы с именами, оканчивающимися на _test.go, и распознаются в IDE. Соответствие фактического вывода ожидаемому результату этих функций проверяется утверждениями.

Почему именно модульное тестирование?

Читать
Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Жиза

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 swiss.Map - это порт на Go хэш-таблиц Swiss Tables от Google.

Swiss Tables является реализацией HashMap в стандартной библиотеке Rust.

Основным преимуществом swiss.Map является производительность. swiss.Map имеет такую же или немного лучшую производительность, чем встроенная мапа Go при меньших размерах, и значительно лучшую производительность при больших размерах.

Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Инструменты для создания GUI на GO

app - Пакет для создания приложений с помощью GO, HTML и CSS. Поддерживает: MacOS, Windows в процессе разработки.
energy - Кроссплатформенная библиотека на основе LCL (Native System UI Control Library) и CEF (Chromium Embedded Framework) (Windows/ macOS / Linux).
fyne - Кроссплатформенный нативный графический интерфейс, разработанный для Go на основе Material Design. Поддерживает: Linux, macOS, Windows, BSD, iOS и Android.
gio - Gio - библиотека для написания кроссплатформенных графических интерфейсов на языке Go. Gio поддерживает все основные платформы: Linux, macOS, Windows, Android, iOS, FreeBSD, OpenBSD и WebAssembly.
go-astilectron - Создание кроссплатформенных GUI-приложений с помощью GO и HTML/JS/CSS (на базе Electron).
go-gtk - Связка Go для GTK.
go-sciter - Связки Go для Sciter: встраиваемый HTML/CSS/скрипт движок для разработки современных настольных пользовательских интерфейсов. Кроссплатформенный.
Goey - Кроссплатформенный агрегатор UI-инструментов для Windows / Linux / Mac. GTK, Cocoa, Windows API
goradd/html5tag - Библиотека для вывода HTML5-кода.
gotk3 - Связка Go для GTK3.
gowd - инсремент для быстрой и простой разработкт пользовательского интерфейса с помощью GO, HTML, CSS и NW.js. Кросс-платформа.
qt - Связка Qt для Go (поддержка Windows / macOS / Linux / Android / iOS / Sailfish OS / Raspberry Pi).
ui - Платформенно-нативная библиотека GUI для Go. Кроссплатформенная.
unison - унифицированная либа графического пользовательского интерфейса для настольных приложений Go. Поддерживаются macOS, Windows и Linux.
Wails - Настольные приложения для Mac, Windows, Linux с HTML UI, использующие встроенный в ОС HTML-рендерер.
walk - Набор библиотек Windows-приложений для Go.
webview - webview с простой двусторонней привязкой JavaScript (Windows / macOS / Linux).
AppIndicator Go - Связка Go для библиотеки libappindicator3 C.
gosx-notifier - Библиотека уведомлений OSX для Go.
mac-activity-tracker - Библиотека OSX для уведомления о любой (подключаемой) активности на вашей машине.
mac-sleep-notifier - OSX-уведомления о сне/пробуждении в golang.
robotgo - кроссплатформенная система автоматизации графического интерфейса на базе Go Native. Управление мышью, клавиатурой и прочим.
systray - Кроссплатформенная библиотека Go для размещения иконки и меню в области уведомлений.
trayhost - Кроссплатформенная Go-библиотека для размещения иконки на панели задач хост-операционной системы.
zenity - Кроссплатформенная Go-библиотека и CLI для визуализации простых диалоговых окон.
go-gui-projects - Список готовых проектов, с графическим интерфейсом/графикой/ на Go

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔊 Полезные инструменты для работы с аудио.

GoAudio - нативная библиотека обработки аудио в Go.
gosamplerate - привязка libsamplerate для go.
gaad - Go парсер битовых потоков AAC.
id3v2 - Библиотека декодирования и кодирования ID3 для Go.
flac - кодер/декодер на Go с поддержкой потоков FLAC.
malgo - Легкая библиотека для работы с аудио.
minimp3 - библиотека для работы с MP3.
Oto - Низкоуровневая библиотека для воспроизведения звука на различных платформах.
PortAudio - Связка Go для библиотеки ввода/вывода аудио PortAudio.

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

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

В настоящее время Jet поддерживает PostgreSQL, MySQL, CockroachDB, MariaDB и SQLite.

go install github.com/go-jet/jet/v2/cmd/jet@latest

Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Как распределенная файловая система в Go сократила потребление памяти на 90 %

JuiceFS, написанная на Go и может управлять десятками миллиардов файлов в одном пространстве имен.

Ее движок метаданных использует подход "все в памяти" и достигает великолепной оптимизации памяти, обрабатывая 300 миллионов файлов с 30 ГБ памяти и временем отклика 100 микросекунд.

Такие технологии, как пулы памяти, ручное управление памятью, сжатие каталогов и компактные форматы файлов, позволили сократить использование памяти метаданных на 90 %.

Почитать как это работает

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

Почитать:
Go 1.22: Rangefunc Experiment
Где изучать Linux в 2024. Бесплатные курсы, книги и ресурсы
Как распределенная файловая система в Go сократила потребление памяти на 90
Adding A Settings Page (Cosplore3D Pt:21)
Go + Hypermedia - A Learning Journey (Part 1)
Delving Deeper: Enriching Microservices with Golang with CloudWeGo
JWT Refresh Token flow from Client point of view
Большая шпаргалка по алгоритмам с собеседований.
Password-less Login in Go from Scratch
Go + hot reload
How a Distributed File System in Go Cut Memory Usage by 90%
Golang Anonymous Functions: A Guide [#Go101]
Funciones Anónimas en Golang [#Go101]
Windows中Golang docker + go.mod
Learning Linux - splice
Robust generic functions on slices

Библиотеки

Паттерн и пакет для Rust-подобной реализации Enum на Go
SQLC + динамические запросы
Gofakeit библиотека для генерации случайных данных
Бенчмарки для драйверов Golang SQLite
Betteralign - это инструмент для обнаружения структур, которые использовали бы меньше памяти, если бы их поля были правильно отсортированы.
Полезные инструменты для работы с аудио.
Инструменты для создания GUI на GO

Посмотреть:

🌐 Golang: Шпаргалка для алгособеса. Алгоритмы сортировки ( 19:18)
🌐 HOT Reloading The Browser With Templ, Tailwind, And Golang ( 07:09)
🌐 How To Build a Complete API In Golang
🌐 Rob Pike: What Golang Got Right & Wrong

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

@Golang_google
👣 Фреймворк NuxUI

NuxUI — это фреймворк Go для создания графических приложений.
Уже сейчас можно использовать для создания простых инструментов — например, вот такого конвертера изображений в любой формат: bmp, jpg, png, ico, webp

Быстрый старт
git clone https://github.com/nuxui/samples.git
cd github.com/nuxui/samples/widgets
go mod tidy
go build . && ./widgets

🖥 GitHub

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔝 Где искать работу Golang разработчику в различных направлениях

Подборка с каналами, где можно найти вакансии или подработку:
Golang jobs
Golang jobs chat
Data Jobs
Data Engeneer/SQL
Папка с вакансиями по различным направлениям

@Golang_google
👣 EchoVault

Распределенное хранилище и кэш данных в памяти, написанное на Go.

EchoVault предоставляет богатый набор структур данных и функций для манипулирования данными в памяти.

Репликация является основной функцией EchoVault и реализована с использованием алгоритма RAFT, что позволяет создать отказоустойчивый кластер узлов EchoVault для повышения надежности системы.

Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
📚Библиотеки и инструменты для создания и отправки электронной почты на GO.

chasquid - SMTP-сервер, написанный на Go.

douceur - CSS-инлайнер для ваших HTML-писем.

email - Надежная и гибкая библиотека работы с электронной почтой на Go.

email-verifier - Библиотека Go для проверки электронной почты без отправки писем.

go-dkim - Библиотека DKIM для подписи и проверки электронной почты.

go-email-normalizer - Библиотека Golang для нормализации электронной почты.

go-email-validator - Модульный валидатор электронной почты для проверки синтаксиса, содержания, smtp и т. д..

go-imap - Библиотека IMAP для клиентов и серверов.

go-mail - Простая библиотека Go для отправки писем на Go.

go-message - Потоковая библиотека для Internet Message Format и почтовых сообщений.

go-premailer - Встраиваемая стилизация для HTML-почты в Go.

go-simple-mail - Очень простой пакет для отправки электронной почты с SMTP Keep Alive и двумя таймаутами: Connect и Send.

Hectane - Легкий SMTP-клиент, предоставляющий API.

hermes - Пакет Golang, генерирующий HTML-письма.

Maddy - Почтовый сервер "все в одном" (SMTP, IMAP, DKIM, DMARC, MTA-STS, DANE).

mailchain - Отправка зашифрованных писем на адреса блокчейна, написанная на Go.

mailgun-go - Библиотека Go для отправки почты с помощью Mailgun API.

MailHog - тестирование электронной почты и SMTP с веб-интерфейсом и API.

Mailpit - Инструмент тестирования электронной почты и SMTP для разработчиков.

mailx - Mailx - это библиотека, которая упрощает отправку электронной почты по SMTP. Она является расширением стандартной библиотеки golang net/smtp.

SendGrid - Go-библиотека SendGrid для отправки электронной почты.

smtp - Машина состояний протокола SMTP-сервера.

smtpmock - Легкий настраиваемый многопоточный тестовый SMTP-сервер. Имитирует любое поведение SMTP в вашей тестовой среде.

truemail-go - Настраиваемый валидатор/верификатор электронной почты на языке Golang. Проверяет почту через Regex, DNS, SMTP и многое другое.

@Golang_google
👣 Введение в модульное тестирование в Go

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

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

Такой подход повышает общее качество кода за счет продуманного дизайна API.

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

В этом посте вы узнаете, как реализовать модульные тесты в Go с помощью встроенного в него модуля для тестирования.

К концу этой статьи вы узнаете:
Возможности тестирования стандартной библиотеки Go.
Как запускать и интерпретировать результаты тестирования.
Как решать проблемы неудачных тестов.
Как создавать и анализировать отчеты о работе кода.

📌 Статья

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Хитрый способ в PostgreSQL перебрать всю таблицу медленно и аккуратно, но эффективно, используя указатель ссылающийся на конкретный tuple — ctid.

var endBlock int
row := db.QueryRow(ctx, `select relpages from pg_class where oid = 'table1'::regclass::oid`)
err = row.Scan(&endBlock)
if err != nil {
return
}

startBlock := 0
blocksPerIteration := 50
maxTuplesPerBlock := 150

for {
var rows pgx.Rows
rows, err = db.Query(ctx, `
select id
from table1
where ctid = any (
array(
select format('(%s, %s)', a, b)::tid
from generate_series($1::int, $2::int) a(a)
cross join generate_series(0, $3) b(b)
))
and value = '100000'`,
startBlock,
startBlock+blocksPerIteration,
maxTuplesPerBlock,
)
if err != nil {
return
}
var id int
for rows.Next() {
err = rows.Scan(&id)
if err != nil {
return
}

slog.Info("found row", "id", id)
}
rows.Close()

startBlock += blocksPerIteration
if startBlock > endBlock {
break
}
time.Sleep(100 * time.Millisecond)
}


Некоторые нюансы:
— из-за того что тип tid не оптимизирует операции больше/меньше, приходится использовать ctid = any (...)

— для определения maxTuplesPerBlock можно использовать запрос
select 8096 / min(x)
from (
select pg_column_size(table1) x
from table1 tablesample system(1)
) d


— можно делать не только select , но и update и delete, но помнить что строки могут и перемещаются как внутри блока, так и между ними

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 it: просто лучшие итераторы для Go

В Go отсутствует эргономичная идиоматическая библиотека утилит для итераторов. Пакет построен на основе (rangefunc experiment)[https://go.dev/wiki/RangefuncExperiment] для go 1.22.

Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Wire: генерация Go кода с автоматическим управлением зависимостями

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

Преимуществом Wire является то, что контейнер конфигурируется не с помощью каких-то специальных файлов, а непосредственно с помощью кода Go.
Wire основан на 2 понятиях — провайдерах и инжекторах. Программист описывает функцию-инжектор на Go-совместимом языке Wire, декларируя функции-провайдеры, а Wire на основе описания генерирует реальный код инжектора, эти провайдеры использующий.

Установка Wire очень проста:
go install github.com/google/wire/cmd/wire@latest

(убедитесь, что $GOPATH/bin добавлена в переменную среды $PATH)

🖥 GitHub

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