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
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
🔐 Безопасность: 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
Этот проект поможет вам преодолеть границу Python-Go: расширить возможности Python с помощью Go и наоборот.
▪Github
▪Как использовать
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 bleve
Удобный инструмент анализа текста для векторизации и поиска слов на основе векторов.
▪ Github
@Golang_google
Удобный инструмент анализа текста для векторизации и поиска слов на основе векторов.
$ go install github.com/blevesearch/bleve/v2/cmd/bleve@latest
▪ Github
@Golang_google
Модульное тестирование — неотъемлемая часть процесса разработки ПО, которой обеспечивается корректное функционирование отдельных компонентов или модулей кода.
Пирамида тестирования
Тестирование ПО осмысливается в виде метафоры — пирамиды тестирования.
• Вот основные ее компоненты:
1. Модульные тесты.
2. Интеграционные тесты.
3. Сквозные тесты.
Читать
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
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
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
🔥 Сбер выложил в открытый доступ нейросетевую модель генерации текста для русского языка ruGPT-3.5 13B.
▪ Также банк выложил новую версию модели mGPT 13B — самую большую из семейства многоязычных моделей банка, способную генерировать тексты на 61 языке, включая языки стран СНГ и малых народов России.
▪ ruGPT-3.5 содержит 13 миллиардов параметров и умеет писать и продолжать тексты на русском и английском языках, а также на языках программирования.
Руководитель блока «Технологии» Сбербанка Андрей Белевцев подчеркнул:
«Сбер как ведущая технологическая компания выступает за открытость технологий и обмен опытом с профессиональным сообществом, ведь любые разработки и исследования имеют ограниченный потенциал в замкнутой среде. Поэтому, мы уверены, что публикация обученных моделей подстегнёт работу российских исследователей и разработчиков, нуждающихся в сверхмощных языковых моделях, создавать на их базе собственные технологические продукты и решения».
@Golang_google
▪ Также банк выложил новую версию модели mGPT 13B — самую большую из семейства многоязычных моделей банка, способную генерировать тексты на 61 языке, включая языки стран СНГ и малых народов России.
▪ ruGPT-3.5 содержит 13 миллиардов параметров и умеет писать и продолжать тексты на русском и английском языках, а также на языках программирования.
Руководитель блока «Технологии» Сбербанка Андрей Белевцев подчеркнул:
«Сбер как ведущая технологическая компания выступает за открытость технологий и обмен опытом с профессиональным сообществом, ведь любые разработки и исследования имеют ограниченный потенциал в замкнутой среде. Поэтому, мы уверены, что публикация обученных моделей подстегнёт работу российских исследователей и разработчиков, нуждающихся в сверхмощных языковых моделях, создавать на их базе собственные технологические продукты и решения».
@Golang_google
Интересная статья о повышении скорости использования модулей 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
По мере усложнения проектов корпоративным разработчикам приходится справляться с огромной волной уязвимостей, распространяющихся по деревьям зависимостей.
Разработчикам открытого ПО необходимы эффективные способы проверки кода, зависимостей и защиты своих проектов. Рост числа атак в сочетании с усложняющимися цепочками поставок означает, что проблемы безопасности цепочек поставок требуют решения на уровне экосистем.
С помощью Golang разработчики меняют ландшафт безопасности цепочки поставок, исправляя основу — сам язык. От внедрения OSV до обширной информации о пакетах, курируемой информации об уязвимостях.
Это серия статей о том, как разработчики и предприятия могут защитить свои цепочки поставок программного обеспечения к с помощью Go.
▪ Vulnerability management
▪ Compromised dependencies
▪ Shifting left
@Golang_google
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
Распространенные "подводные камни" при проведении тестов на производительность в GO
Программистам Go повезло: в стандартную библиотеку - в пакет testing - встроены отличные средства тестирования и бенчмаркинга. Однако бенчмаркинг - это сложно. Это одна из тех вещей, которым опытные разработчики учатся со временем.
В этой заметке перечислены некоторые распространенные "подводные камни" бенчмаркинга, с которыми сталкиваются программисты на Go. Несмотря на то, что эти проблемы рассматриваются на примере Go, они встречаются в любом языке программирования или среде, поэтому извлеченные из них уроки могут быть полезны всем.
▪Читать статью
@Golang_google
Программистам Go повезло: в стандартную библиотеку - в пакет testing - встроены отличные средства тестирования и бенчмаркинга. Однако бенчмаркинг - это сложно. Это одна из тех вещей, которым опытные разработчики учатся со временем.
В этой заметке перечислены некоторые распространенные "подводные камни" бенчмаркинга, с которыми сталкиваются программисты на Go. Несмотря на то, что эти проблемы рассматриваются на примере Go, они встречаются в любом языке программирования или среде, поэтому извлеченные из них уроки могут быть полезны всем.
▪Читать статью
@Golang_google
Golang
Распространенные "подводные камни" при проведении тестов на производительность в GO Программистам Go повезло: в стандартную библиотеку - в пакет testing - встроены отличные средства тестирования и бенчмаркинга. Однако бенчмаркинг - это сложно. Это одна из…
Self hosted mtproto messenger.
Mtproto cервер с открытым исходным кодом, написанный на Go, который совместим с клиентом Telegram.
▪Github
▪Teamgram
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Автономный FTP-сервер на Go с коннекторами SFTP, S3, Dropbox и Google Drive.
go install github.com/fclairamb/ftpserver@main
ftpserver &
▪ Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Лучший способ получать свежие обновлении и следить за трендами в разработке.
Python: t.me/pythonl
C#: t.me/csharp_ci
C/C++/ t.me/cpluspluc
Машинное обучение: t.me/ai_machinelearning_big_data
Data Science: t.me/data_analysis_ml
Devops: t.me/devOPSitsec
Go: t.me/golang_interview
Базы данных: t.me/sqlhub
Rust: t.me/rust_code
Javascript: t.me/javascriptv
React: t.me/react_tg
PHP: t.me/phpshka
Android: t.me/android_its
Мобильная разработка: t.me/mobdevelop
Linux: t.me/+A8jY79rcyKJlYWY6
Big Data: t.me/bigdatai
Хакинг: t.me/linuxkalii
Java: t.me/javatg
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
🇬🇧Английский: t.me/english_forprogrammers
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Полный курс Golang разработчика 2023 года. Часть1.
1. О курсе - https://www.youtube.com/watch?v=Nv0vmR5OqRg&t=34s
2. Установка GO - https://www.youtube.com/watch?v=gi6gAhzUhUg
3. Пакеты в Golang https://www.youtube.com/watch?v=RNVhf-zBpdQ
4. Типы данных в Go - https://www.youtube.com/watch?v=_ilP500FEP8&t=16s
5. Строки и руны - https://www.youtube.com/watch?v=wUQB74nNxos&t=27s
6. Инструменты командной строки - https://www.youtube.com/watch?v=LzqVFx6yOAs&t=8s
7. Введение в переменные - https://www.youtube.com/watch?v=zQa85CrYQJ4&t=190s
8. Переменные на практике - https://www.youtube.com/watch?v=P9Lk0EiO2pU&t=1s
9. Упражнения с переменными -
https://www.youtube.com/watch?v=huj6RHQC34I&t=1s
10. Работа с функциями - https://www.youtube.com/watch?v=euudha7zAiU&t=7s
11. Функции на практике - https://www.youtube.com/watch?v=YdoMOD6H_nk
12. Управление потоками с операторами if else - https://www.youtube.com/watch?v=Mq6WQy_eq_k&t=1s
13. Оператор Switch - https://www.youtube.com/watch?v=4REsob985vc
14. Циклы - https://www.youtube.com/watch?v=gpt8IGahbXo
15. Структуры - https://www.youtube.com/watch?v=VrOflBI4f_E&t=311s
16. Массивы - https://www.youtube.com/watch?v=QrVHFGtCAnE
17. Срезы - https://www.youtube.com/watch?v=XA1WFY1kv2o&t=671s
18. Карты - https://www.youtube.com/watch?v=XA1WFY1kv2o&list=PLysMDSbb9HcxpAb8lhnMaRpX890wSLz66&index=18
19.Указатели - https://www.youtube.com/watch?v=LYFOJhP28Ro
20. Методы - https://www.youtube.com/watch?v=hmWwp04_XC0
21. IOTA - https://www.youtube.com/watch?v=La67BqQdoys
22.FMT - https://www.youtube.com/watch?v=-Ie4-R23VTk
23.INIT - https://www.youtube.com/watch?v=riIi-FpSOuc
24 Тесты- https://www.youtube.com/watch?v=AprUuq_rm0I
25 Интерфейсы - https://www.youtube.com/watch?v=Amun1J6KE3Q&t=70s
26. Обработка ошибок - https://www.youtube.com/watch?v=VTmHbN0Y4aU
Полный плейлист - https://www.youtube.com/playlist?list=PLysMDSbb9HcxpAb8lhnMaRpX890wSLz66
📌Курс на stepik
@Golang_google
1. О курсе - https://www.youtube.com/watch?v=Nv0vmR5OqRg&t=34s
2. Установка GO - https://www.youtube.com/watch?v=gi6gAhzUhUg
3. Пакеты в Golang https://www.youtube.com/watch?v=RNVhf-zBpdQ
4. Типы данных в Go - https://www.youtube.com/watch?v=_ilP500FEP8&t=16s
5. Строки и руны - https://www.youtube.com/watch?v=wUQB74nNxos&t=27s
6. Инструменты командной строки - https://www.youtube.com/watch?v=LzqVFx6yOAs&t=8s
7. Введение в переменные - https://www.youtube.com/watch?v=zQa85CrYQJ4&t=190s
8. Переменные на практике - https://www.youtube.com/watch?v=P9Lk0EiO2pU&t=1s
9. Упражнения с переменными -
https://www.youtube.com/watch?v=huj6RHQC34I&t=1s
10. Работа с функциями - https://www.youtube.com/watch?v=euudha7zAiU&t=7s
11. Функции на практике - https://www.youtube.com/watch?v=YdoMOD6H_nk
12. Управление потоками с операторами if else - https://www.youtube.com/watch?v=Mq6WQy_eq_k&t=1s
13. Оператор Switch - https://www.youtube.com/watch?v=4REsob985vc
14. Циклы - https://www.youtube.com/watch?v=gpt8IGahbXo
15. Структуры - https://www.youtube.com/watch?v=VrOflBI4f_E&t=311s
16. Массивы - https://www.youtube.com/watch?v=QrVHFGtCAnE
17. Срезы - https://www.youtube.com/watch?v=XA1WFY1kv2o&t=671s
18. Карты - https://www.youtube.com/watch?v=XA1WFY1kv2o&list=PLysMDSbb9HcxpAb8lhnMaRpX890wSLz66&index=18
19.Указатели - https://www.youtube.com/watch?v=LYFOJhP28Ro
20. Методы - https://www.youtube.com/watch?v=hmWwp04_XC0
21. IOTA - https://www.youtube.com/watch?v=La67BqQdoys
22.FMT - https://www.youtube.com/watch?v=-Ie4-R23VTk
23.INIT - https://www.youtube.com/watch?v=riIi-FpSOuc
24 Тесты- https://www.youtube.com/watch?v=AprUuq_rm0I
25 Интерфейсы - https://www.youtube.com/watch?v=Amun1J6KE3Q&t=70s
26. Обработка ошибок - https://www.youtube.com/watch?v=VTmHbN0Y4aU
Полный плейлист - https://www.youtube.com/playlist?list=PLysMDSbb9HcxpAb8lhnMaRpX890wSLz66
📌Курс на stepik
@Golang_google