Golang бросает панику при закрытии уже закрытого канала. Есть несколько способов, чтобы избежать такого рода паники.
Каждый вариант кода инкапсулирует struct и используется как интерфейс (картинка 1).
1) Panic
В примемер реализован интерфейс
(картинка 2)
Второй вызов
2) Простой
(картинка 3)
3) Панику можно перехватить с помощью функции
(картинка 4).
4)
5)В Golang 1.21 появилась функция
Можно также использовать
6)
Напишите свой вариант кода в комментариях👇
@Golang_google
Каждый вариант кода инкапсулирует 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
🔥19👍7❤2🥰2😁2🤔2👎1
AcraServer работает как прокси-сервер шифрования/дешифрования с базами данных SQL.
▪ Github
▪Документация
▪Примеры
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤3🔥3🤔1
🎉 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
🔐 Безопасность: 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
👍14🔥3❤2
Этот проект поможет вам преодолеть границу Python-Go: расширить возможности Python с помощью Go и наоборот.
▪Github
▪Как использовать
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👎9👍8😁5🔥4❤2🤯2
🔥 bleve
Удобный инструмент анализа текста для векторизации и поиска слов на основе векторов.
▪ Github
@Golang_google
Удобный инструмент анализа текста для векторизации и поиска слов на основе векторов.
$ go install github.com/blevesearch/bleve/v2/cmd/bleve@latest
▪ Github
@Golang_google
👍10🔥5❤1
Модульное тестирование — неотъемлемая часть процесса разработки ПО, которой обеспечивается корректное функционирование отдельных компонентов или модулей кода.
Пирамида тестирования
Тестирование ПО осмысливается в виде метафоры — пирамиды тестирования.
• Вот основные ее компоненты:
1. Модульные тесты.
2. Интеграционные тесты.
3. Сквозные тесты.
Читать
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍3🔥1
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
👍13👎9🔥3❤2
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 часа
и многое другое.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍10❤2😁2
🔥 Сбер выложил в открытый доступ нейросетевую модель генерации текста для русского языка ruGPT-3.5 13B.
▪ Также банк выложил новую версию модели mGPT 13B — самую большую из семейства многоязычных моделей банка, способную генерировать тексты на 61 языке, включая языки стран СНГ и малых народов России.
▪ ruGPT-3.5 содержит 13 миллиардов параметров и умеет писать и продолжать тексты на русском и английском языках, а также на языках программирования.
Руководитель блока «Технологии» Сбербанка Андрей Белевцев подчеркнул:
«Сбер как ведущая технологическая компания выступает за открытость технологий и обмен опытом с профессиональным сообществом, ведь любые разработки и исследования имеют ограниченный потенциал в замкнутой среде. Поэтому, мы уверены, что публикация обученных моделей подстегнёт работу российских исследователей и разработчиков, нуждающихся в сверхмощных языковых моделях, создавать на их базе собственные технологические продукты и решения».
@Golang_google
▪ Также банк выложил новую версию модели mGPT 13B — самую большую из семейства многоязычных моделей банка, способную генерировать тексты на 61 языке, включая языки стран СНГ и малых народов России.
▪ ruGPT-3.5 содержит 13 миллиардов параметров и умеет писать и продолжать тексты на русском и английском языках, а также на языках программирования.
Руководитель блока «Технологии» Сбербанка Андрей Белевцев подчеркнул:
«Сбер как ведущая технологическая компания выступает за открытость технологий и обмен опытом с профессиональным сообществом, ведь любые разработки и исследования имеют ограниченный потенциал в замкнутой среде. Поэтому, мы уверены, что публикация обученных моделей подстегнёт работу российских исследователей и разработчиков, нуждающихся в сверхмощных языковых моделях, создавать на их базе собственные технологические продукты и решения».
@Golang_google
👍22❤10😁8👎4🔥4
Интересная статья о повышении скорости использования модулей Go с помощью прокси.
▪ Читать
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🔥2
🔐 Безопасность цепочки поставок: серия статей от Google для Go-разработчика
По мере усложнения проектов корпоративным разработчикам приходится справляться с огромной волной уязвимостей, распространяющихся по деревьям зависимостей.
Разработчикам открытого ПО необходимы эффективные способы проверки кода, зависимостей и защиты своих проектов. Рост числа атак в сочетании с усложняющимися цепочками поставок означает, что проблемы безопасности цепочек поставок требуют решения на уровне экосистем.
С помощью Golang разработчики меняют ландшафт безопасности цепочки поставок, исправляя основу — сам язык. От внедрения OSV до обширной информации о пакетах, курируемой информации об уязвимостях.
Это серия статей о том, как разработчики и предприятия могут защитить свои цепочки поставок программного обеспечения к с помощью Go.
▪ Vulnerability management
▪ Compromised dependencies
▪ Shifting left
@Golang_google
По мере усложнения проектов корпоративным разработчикам приходится справляться с огромной волной уязвимостей, распространяющихся по деревьям зависимостей.
Разработчикам открытого ПО необходимы эффективные способы проверки кода, зависимостей и защиты своих проектов. Рост числа атак в сочетании с усложняющимися цепочками поставок означает, что проблемы безопасности цепочек поставок требуют решения на уровне экосистем.
С помощью Golang разработчики меняют ландшафт безопасности цепочки поставок, исправляя основу — сам язык. От внедрения OSV до обширной информации о пакетах, курируемой информации об уязвимостях.
Это серия статей о том, как разработчики и предприятия могут защитить свои цепочки поставок программного обеспечения к с помощью Go.
▪ Vulnerability management
▪ Compromised dependencies
▪ Shifting left
@Golang_google
👍11🔥2❤1🥰1
Chisel - это быстрый TCP/UDP-туннель на Go, для пеередачи HTTP запросов, защищенный с помощью SSH. Chisel в основном полезен для прохождения через брандмауэры, но может быть использован и для обеспечения безопасной конечной точки входа в сеть.
$ go install github.com/jpillora/chisel@latestGithub
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥4🥰1
Распространенные "подводные камни" при проведении тестов на производительность в GO
Программистам Go повезло: в стандартную библиотеку - в пакет testing - встроены отличные средства тестирования и бенчмаркинга. Однако бенчмаркинг - это сложно. Это одна из тех вещей, которым опытные разработчики учатся со временем.
В этой заметке перечислены некоторые распространенные "подводные камни" бенчмаркинга, с которыми сталкиваются программисты на Go. Несмотря на то, что эти проблемы рассматриваются на примере Go, они встречаются в любом языке программирования или среде, поэтому извлеченные из них уроки могут быть полезны всем.
▪Читать статью
@Golang_google
Программистам Go повезло: в стандартную библиотеку - в пакет testing - встроены отличные средства тестирования и бенчмаркинга. Однако бенчмаркинг - это сложно. Это одна из тех вещей, которым опытные разработчики учатся со временем.
В этой заметке перечислены некоторые распространенные "подводные камни" бенчмаркинга, с которыми сталкиваются программисты на Go. Несмотря на то, что эти проблемы рассматриваются на примере Go, они встречаются в любом языке программирования или среде, поэтому извлеченные из них уроки могут быть полезны всем.
▪Читать статью
@Golang_google
🔥12😁5❤2👍2