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