Latest Posts

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. Вообщем большой комбайн с различными интересными фичами. Я покажу лишь примеры, которые использовал сам за последнее время.

Read more

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:

Read more

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 * — токен пользователя

Пример запроса:

Read more

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 будет полезен для сервисов, работающих на обменах криптовалют и мониторингов курсов.

Read more

Установка и настройка supervisord в raspbian

Установка и настройка supervisord в raspbian

Supervisord — система контроля процессов для Linux. По-простому, это штука которая следит чтобы ваш процесс был всегда запущен с установленной конфигурацией. Система следит что процесс работает и перезапускает если процесс падает.

Установка supervisor:

sudo apt-get install supervisor
service supervisor start

Добавление конфигурации в supervisord.conf (либо создайте отдельно /etc/supervisor/conf.d/server.conf):

Read more

Локальная отладка 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 для локального запуска.

Read more

Golang &#8212; Упаковка ресурсов и статических файлов в бинарник с go rice

Golang — Упаковка ресурсов и статических файлов в бинарник с go rice

Задача упаковки статических ресурсов в один жирный бинарник стоит не так часто, но в одном из проектов все-таки это понадобилось. Посмотрев на разные библиотеки из awesome go, остановился на наверное самом простом и более для меня понятном go rice.

В чем фишка? Мы меняем вызовы os.Open на box.Open, далее запускаем утилиту rice embed-go, которая создает для нас rice-box.go с нужным массивом байтов внутри. Утилита сканирует наш код и вызовы box.Open и добавляет файлы в файл rice-box.go

Read more

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

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

https://github.com/brutella/hc — прекрасная библиотека для написания обработчиков своих аксессуаров по протоколу HomeKit.

Что предоставляет библиотека? Удобный интерфейс для объявления своего аксессуара и обработка сигналов с пульта управления Home App в ios. Давайте попробуем написать новый обработчик аксессуара и добавить его внутри домашней сети.

Простейшая реализация будет выглядеть как-то так:

Read more

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

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

Решил попробовать пописать простые 2D игры на Golang. Основная цель — развлечение и более углубленное понимание того как можно писать простые любительские 2D игры на Go.

В начале пути

Скорее всего это будет цикл небольших, но полезных статей для всех интересующихся 2D играми и Golang. Первое, что нам необходимо решить — каким инструментом мы будем пользоваться для разработки игры. Я остановился на довольно простом игровом фреймворке — Ebiten. Основная идея библиотеки — все что есть это просто изображение. Порядок, позиция, угол наклона и масштаб зависит от вашей игровой логики.

Read more

Скрипт проверки 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

Получаем такой вывод:

Read more