Наблюдатель (англ. Observer) — поведенческий шаблон проектирования. Также известен как «подчинённые» (англ. Dependents). Реализует у класса механизм, который позволяет объекту этого класса получать оповещения об изменении состояния других объектов и тем самым наблюдать за ними.
Паттерн Наблюдатель определяет зависимость "один-ко-многим" между объектами так, что при изменении состояния одного объекта все зависящие от него объекты уведомляются об этом и обновляются автоматически.
Пример 1: Простое уведомление о событии
Пример 2: Тикер фондового рынка
Пример 3: Погодная станция
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28❤8👎4🔥3
▪Создание собственного локального прокси с помощью Tor.
Пример в изображении 1.
▪Использование коммерческого сервиса прокси-пулов SmartProxy.
Пример в изображении 2.
▪Создание собственного HTTP-клиента с прокси-функцией.
Пример в изображении 3.
▪ После настройки Tor-клиента мы можем проверить IP-адрес запроса. Затем мы вызываем NewIP, чтобы изменить IP-адрес нашего клиента.
Изображение 4.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26❤5🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
🧑💻 PLOW
Plow инструмент, который предназначен для нагрузочного тестирования HTTP-серверов.
Он основан на Go-библиотеке fasthttp, которая до десяти раз быстрее стандартной реализации, что делает его каким‑то аномально быстрым.
Plow может отдавать статистику в реальном времени не только в окне терминала, но и в браузере (по стандарту встроенный сервер доступен на 18888-м порте).
Запуск возможен из Docker или установкой из исходников:
Альтернатива:
Аргументы в целом ничего необычного собой не представляют: тут у нас стандартная для таких программ настройка количества потоков (-c), желаемого количества запросов (-n), времени теста (-d 30s или -d 5m, например) и HTTP-метода (--method="GET"). Про другие параметры можно подробно прочитать в справке программы (--help). Цель передается без специальных параметров.
▪ Github
@Golang_google
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
👍23🔥7❤3🤩1
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