Latest Posts

Разработка HomeKit аксессуара на Golang

https://github.com/brutella/hc — прекрасная библиотека для написания обработчиков своих аксессуаров по протоколу HomeKit. Что предоставляет библиотека? Удобный интерфейс для объявления своего аксессуара и обработка сигналов с пульта управления Home App в ios. Давайте попробуем написать новый обработчик аксессуара и добавить его внутри…
Read more

2D игры на Golang c Ebiten. Введение

Решил попробовать пописать простые 2D игры на Golang. Основная цель — развлечение и более углубленное понимание того как можно писать простые любительские 2D игры на Go. В начале пути Скорее всего это будет цикл небольших, но полезных статей для всех…
Read more

Скрипт проверки GitHub rate limit

GitHub API имеет лимиты на запросы в час — 12 500 максимум и 5000 на одного пользователя. В некоторых случаях количество лимитов недостаточно и вам необходимо знать текущий баланс кредитов. Для проверки таких «кредитов» на API запросы напишем небольшой bash…
Read more

Подсветка текста в Bash скриптах

Удобный сниппет для подсвечивания текста разными цветами в bash скриптах, рассмотрим пример: Создадим файл t.sh: #!/usr/bin/env bash red=$’\e[1;31m’ grn=$’\e[1;32m’ yellow=$’\e[1;33m’ white=$’\e[0m’ echo «$yellow [WARN] Hello world! $white»; echo «$red [ERR] Hello world! $white»; echo «$grn [INFO] Hello world! $white»; Итого…
Read more

Мониторинг Nginx при помощи stub_status и Prometheus Exporter. Часть 2

Для получения данных с Nginx status монитора в Prometheus необходим запуск Prometheus exporter в Kubernetes кластере. Напишем deployment манифест для запуска экспортера в Prometheus. Создадим файл exporter.yaml: apiVersion: apps/v1beta1 kind: Deployment metadata: name: nginx-prometheus-exporter spec: replicas: 1 template: metadata: labels:…
Read more

Мониторинг Nginx при помощи stub_status и Prometheus Exporter

Не так давно возникла задача мониторинга проекта, который не бежит внутри Kubernetes и простые настройки Prometheus не совсем подходят. Знать нагрузки на сервис интересно, но не хочется много накручивать и писать дополнительный код (к тому же проекты работают весьма успешно…
Read more

Golang — использование rate limiter в коде

Rate limiting — ограничение скорости запросов в определенной системе. К примеру вы можете поставить ограничения на ваш веб сервер — не более 10 запросов в секунду. Возможно создание ограничения только для определенного клиента или типа машины. В Golang добавление rate limit…
Read more

Golang — функция вывода user IP

В случае использования вашего приложения через load balancer или через различные прокси вида Cloudflare задача вывода клиентского IP адреса заключается в правильной выборке header. От X-Real-Ip до CF_CONNECTING_IP или же X-Original-Forwarded-For. Для этого я написал простую функцию по выборке IP адреса: func readUserIP(r…
Read more