Curl — набор на все случаи жизни
Curl — набор на все случаи жизни
В данной статье собраны некоторые полезные сниппеты для работы с curl. Curl — это кросс-платформенная служебная программа командной строки, позволяющая взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Для справки: curl поддерживает не только протокол HTTP, но и десяток других — DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET и TFTP. Вообщем большой комбайн с различными интересными фичами. Я покажу лишь примеры, которые использовал сам за последнее время.
Golang: Получение stock price с Yahoo Finance
Golang: Получение stock price с Yahoo Finance
При помощи https://github.com/antchfx/htmlquery мы можем легко получать и парсить данные с веб страницы Yahoo Finance. Нас интересует именно stock price. Для этого в начале находим на странице нужный нам блок:
<div class="D(ib) Mend(20px)" data-reactid="31"> <span class="Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)" data-reactid="32">63.50</span> <span class="Trsdu(0.3s) Fw(500) Pstart(10px) Fz(24px) C($positiveColor)" data-reactid="33">+2.15 (+3.50%)</span> <div id="quote-market-notice" class="C($tertiaryColor) D(b) Fz(12px) Fw(n) Mstart(0)--mobpsm Mt(6px)--mobpsm" data-reactid="34"> <span data-reactid="35">As of 1:25PM CET. Market open.</span> </div> </div>
Окей, нужный блок найден. Из этого блока нас больше всего интересует ticker price — 63.50:
Sassoft API: Notifications API
Sassoft API: Notifications API
Описание API
Данный API сервис предназначен для отправки уведомлений через различные каналы:
- Telegram
- Email через Sendgrid API
- SMTP Email
Спецификация
- POST /notify
- message * — сообщение для отправки (html форматирование поддерживается)
- message_plain — сообщение для отправки без html форматирования
- from — имя от, необходим если type=email
- from_address — адрес от, необходим если type=email
- title — заголовок, необходим если type=email
- receiver * — получатель сообщения
- type * — поддерживаемые типы: Email, Telegram, SMTP
- token * — токен пользователя
Пример запроса:
Sassoft API: Rates API для криптовалют
Sassoft API: Rates API для криптовалют
Описание API
Данный API сервис предназначен для выдачи курсов криптовалют и фиатных валют в режиме реального времени без задержек.
При помощи одного GET запроса можно получить текущие курсы криптовалют в USD, EUR, RUB. Для примера:
{
"BTC_USD":22999.408322398973,
"BTC_EUR":18745.989744887796,
"BTC_RUB":1677209.0364978933
...
}
Rates API будет полезен для сервисов, работающих на обменах криптовалют и мониторингов курсов.
Установка и настройка supervisord в raspbian
Установка и настройка supervisord в raspbian
Supervisord — система контроля процессов для Linux. По-простому, это штука которая следит чтобы ваш процесс был всегда запущен с установленной конфигурацией. Система следит что процесс работает и перезапускает если процесс падает.
Установка supervisor:
sudo apt-get install supervisor service supervisor start
Добавление конфигурации в supervisord.conf (либо создайте отдельно /etc/supervisor/conf.d/server.conf):
Локальная отладка GitHub Actions с act
Локальная отладка GitHub Actions с act
Не так давно потребовалось понять причину почему один из введенных actions для GitHub Actions перестал работать. Для того, чтобы проверить работу action их нужно для начала запустить локально. Это можно сделать при помощи утилиты act. Важно выбрать правильный runner для работы.
Пример использования act:
brew install nektos/tap/act act -P ubuntu-latest=nektos/act-environments-ubuntu:18.04 -j test
Где -j это название action для локального запуска.
Golang — Упаковка ресурсов и статических файлов в бинарник с go rice
Golang — Упаковка ресурсов и статических файлов в бинарник с go rice
Задача упаковки статических ресурсов в один жирный бинарник стоит не так часто, но в одном из проектов все-таки это понадобилось. Посмотрев на разные библиотеки из awesome go, остановился на наверное самом простом и более для меня понятном go rice.
В чем фишка? Мы меняем вызовы os.Open на box.Open, далее запускаем утилиту rice embed-go, которая создает для нас rice-box.go с нужным массивом байтов внутри. Утилита сканирует наш код и вызовы box.Open и добавляет файлы в файл rice-box.go
Разработка HomeKit аксессуара на Golang
Разработка HomeKit аксессуара на Golang
https://github.com/brutella/hc — прекрасная библиотека для написания обработчиков своих аксессуаров по протоколу HomeKit.
Что предоставляет библиотека? Удобный интерфейс для объявления своего аксессуара и обработка сигналов с пульта управления Home App в ios. Давайте попробуем написать новый обработчик аксессуара и добавить его внутри домашней сети.
Простейшая реализация будет выглядеть как-то так:
2D игры на Golang c Ebiten. Введение
2D игры на Golang c Ebiten. Введение
Решил попробовать пописать простые 2D игры на Golang. Основная цель — развлечение и более углубленное понимание того как можно писать простые любительские 2D игры на Go.
В начале пути
Скорее всего это будет цикл небольших, но полезных статей для всех интересующихся 2D играми и Golang. Первое, что нам необходимо решить — каким инструментом мы будем пользоваться для разработки игры. Я остановился на довольно простом игровом фреймворке — Ebiten. Основная идея библиотеки — все что есть это просто изображение. Порядок, позиция, угол наклона и масштаб зависит от вашей игровой логики.
Скрипт проверки GitHub rate limit
Скрипт проверки GitHub rate limit
GitHub API имеет лимиты на запросы в час — 12 500 максимум и 5000 на одного пользователя. В некоторых случаях количество лимитов недостаточно и вам необходимо знать текущий баланс кредитов.
Для проверки таких «кредитов» на API запросы напишем небольшой bash скрипт:
#!/usr/bin/env bash while true do remain=$(curl -s -H "Authorization: token $GITHUB_TOKEN" -X GET https://api.github.com/rate_limit | jq -r '.rate.remaining') date=$(date -u +"%Y-%m-%dT%H:%M:%S%Z") echo "$date $remain" sleep 3 done
Получаем такой вывод: