37.1K subscribers
1.46K photos
34 videos
5 files
1.62K links
加入频道
This media is not supported in your browser
VIEW IN TELEGRAM
🧑‍💻 PLOW

Plow инструмент, который пред­назна­чен для наг­рузоч­ного тес­тирова­ния HTTP-сер­веров.

Он осно­ван на Go-биб­лиоте­ке fasthttp, которая до десяти раз быс­трее стан­дар­тной реали­зации, что дела­ет его каким‑то ано­маль­но быс­трым.

Plow может отда­вать ста­тис­тику в реаль­ном вре­мени не толь­ко в окне тер­минала, но и в бра­узе­ре (по стан­дарту встро­енный сер­вер дос­тупен на 18888-м пор­те).

За­пуск воз­можен из Docker или уста­нов­кой из исходни­ков:

go install github.com/six-ddc/plow@latest
plow <args>

Аль­тер­натива:

docker run --rm --net=host ghcr.io/six-ddc/plow <args>

Ар­гумен­ты в целом ничего необыч­ного собой не пред­став­ляют: тут у нас стан­дар­тная для таких прог­рамм нас­трой­ка количес­тва потоков (-c), жела­емо­го количес­тва зап­росов (-n), вре­мени тес­та (-d 30s или -d 5m, нап­ример) и HTTP-метода (--method="GET"). Про дру­гие парамет­ры мож­но под­робно про­читать в справ­ке прог­раммы (--help). Цель переда­ется без спе­циаль­ных парамет­ров.

Github

@Golang_google
Golang бросает панику при закрытии уже закрытого канала. Есть несколько способов, чтобы избежать такого рода паники.

Каждый вариант кода инкапсулирует struct и используется как интерфейс (картинка 1).

1) Panic
В примемер реализован интерфейс Signal:
(картинка 2)

Второй вызов Close() вызывает панику.

2) Простой select является потокобезопасным вариантом.
(картинка 3)

3) Панику можно перехватить с помощью функции recover() в defer
(картинка 4).

4) sync.Once - еще один способ перехвата. Он вызывает close() только один раз и это элегантный способ обработки закрытия нескольких каналов (картинка 5).

5)В Golang 1.21 появилась функция sync.OnceFunc, которая лучше подходит для этого случая использования (картинка 6).

Можно также использовать sync.Mutex, но он не является оптимальным, как sync.Once, поскольку всегда использует блокировку и разблокировку.

6) context.WithCancel - это еще один вариант, чтобы избежать панику (картинка 7).

Напишите свой вариант кода в комментариях👇

@Golang_google
👣 Acra - пакет безопасности баз данных на Go для защиты конфиденциальных и персональных данных.

AcraServer работает как прокси-сервер шифрования/дешифрования с базами данных SQL.

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

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉 Go 1.20.6 and 1.19.11 are released!

🔐 Безопасность: Includes security fixes for CVE-2023-29406 and Go issue https://go.dev/issue/60374

📢 Анонс: https://groups.google.com/g/golang-announce/c/2q13H6LEEx0

📦 Загрузить: https://go.dev/dl/#go1.20.6

@Golang_google
👣 ↔️ 🖥 Pygolo - embed or extend the Python interpreter with Go

Этот проект поможет вам преодолеть границу Python-Go: расширить возможности Python с помощью Go и наоборот.

Github
Как использовать

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

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

$ go install github.com/blevesearch/bleve/v2/cmd/bleve@latest

Github

@Golang_google
📌 Рефакторинг кода Go для тестопригодности: возможности интерфейсов

Модульное тестирование — неотъемлемая часть процесса разработки ПО, которой обеспечивается корректное функционирование отдельных компонентов или модулей кода.

Пирамида тестирования

Тестирование ПО осмысливается в виде метафоры — пирамиды тестирования.

Вот основные ее компоненты:

1. Модульные тесты.
2. Интеграционные тесты.
3. Сквозные тесты.

Читать

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Iris Web Framework

Iris веб-фреймворке на Go, который предоставялет набор инструментов для быстрой и легкой разработки веб-приложений. Репозиторий содержит множество полезных примеров с кодом.

package main

import "github.com/kataras/iris/v12"

func main() {
app := iris.New()
app.Use(iris.Compression)

app.Get("/", func(ctx iris.Context) {
ctx.HTML("Hello <strong>%s</strong>!", "World")
})

app.Listen(":8080")
}


На картинке привден пример использования апи hCAPTCHA с Iris.

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

Github
hCAPTCHA пример

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Gluetun VPN client

VPN-клиент в контейнере Docker для нескольких провайдеров VPN, написанный на Golang и использующий OpenVPN или Wireguard, DNS через TLS, с несколькими встроенными прокси-серверами.

Поддерживает: AirVPN, Cyberghost, ExpressVPN, FastestVPN, HideMyAss, IPVanish, IVPN, Mullvad, NordVPN, Perfect Privacy, Privado, Private Internet Access, PrivateVPN, ProtonVPN, PureVPN, SlickVPN, Surfshark, TorGuard, VPNSecure, VPNUnlimited, Vyprvpn, WeVPN, Windscribe
Поддерживает OpenVPN для всех перечисленных провайдеров
Поддерживает Wireguard
Позволяет блокировать DNS вредоносных/рекламных/ имен хостов и IP-адресов с оперативным обновлением каждые 24 часа
и многое другое.

🖥 Github
🖥 Docker

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Сбер выложил в открытый доступ нейросетевую модель генерации текста для русского языка ruGPT-3.5 13B.

Также банк выложил новую версию модели mGPT 13B — самую большую из семейства многоязычных моделей банка, способную генерировать тексты на 61 языке, включая языки стран СНГ и малых народов России.

ruGPT-3.5 содержит 13 миллиардов параметров и умеет писать и продолжать тексты на русском и английском языках, а также на языках программирования.

Руководитель блока «Технологии» Сбербанка Андрей Белевцев подчеркнул:

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

@Golang_google
👣 Go module proxy at Grab

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

Читать

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔐 Безопасность цепочки поставок: серия статей от Google для Go-разработчика

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

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

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

Это серия статей о том, как разработчики и предприятия могут защитить свои цепочки поставок программного обеспечения к с помощью Go.


Vulnerability management
Compromised dependencies
Shifting left

@Golang_google
👣 Chisel

Chisel - это быстрый TCP/UDP-туннель на Go, для пеередачи HTTP запросов, защищенный с помощью SSH. Chisel в основном полезен для прохождения через брандмауэры, но может быть использован и для обеспечения безопасной конечной точки входа в сеть.

$ go install github.com/jpillora/chisel@latest

Github

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