Полезные команды по grep
Полезные команды по grep
Набор сниппетов для поиска, фильтрации через утилиту grep.
Рекурсивный поиск внутри директории (плюс замена пробелов)
grep -R 'project_id' . > file.txt grep -o '"name-[a-zA-Z-]*"' file.txt | tr \" "\b" > file-total.txt
Поиск строки в директории
grep -s 'export GITHUB_TOKEN' * .*
Поиск измененных yml, yaml файлов внутри ci/
if [[ $(git status -s | grep ci | grep -E "y(a)?ml") ]]; then echo "CI configurations have changed" fi
Статья будет дополняться…
GitHub Actions: отправка POST запросов с webrequest-action
GitHub Actions: отправка POST запросов с webrequest-action
name: POST example
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
send:
name: Send POST request from GitHub Actions
runs-on: ubuntu-latest
steps:
- name: Send post request
uses: satak/[email protected]
with:
url: https://some-url/handle-post
method: POST
payload: '{"foo": "bar", ""pipeline_name": "${{ github.event.repository.name }}"}'
При помощи webrequest-action можно делать множество различных запросов (как POST так и GET) самой разной сложности. Больше примеров можно найти в README автора.
Sassoft API: Wallets API — Bitcoind, Litecoind, Rippled
Sassoft API: Wallets API — Bitcoind, Litecoind, Rippled
Описание API
Для работы с данным API требуется загрузить платежные данные через личный кабинет cloud.sassoft.ru
Данный API сервис предназначен для управления криптовалютными кошельками:
- Bitcoin (Bitcoind)
- Litecoin (Litecoind)
- Ripple
Спецификация
- POST /bitcoind/address | /litecoind/address
- label * — label адреса
Пример запроса:
curl -X POST -H "Token: api-token" https://api.sassoft.ru/bitcoind/address -d '{"label":"my-label"}'
Пример ответа:
CLI interactive integration tests с expect и Go — часть 2
CLI interactive integration tests с expect и Go — часть 2
В прошлой части мы сделали exp файл, который бы запускал наше интерактивное консольное приложение и взаимодействовал с ним.
В этой части мы напишем Go test, который будет при помощи cmd.Exec запускать exp файл, ждать ответа и делать какие-либо assertions.
Пример простого теста, который бы запускал наш expect файл и делал проверки ниже:
CLI interactive integration tests с expect и Go — часть 1
CLI interactive integration tests с expect и Go — часть 1
Тестирование интерактивных консольных приложение получилось довольно интересной задачей.
Как пример напишем простейшие консольное приложение при помощи библиотеки survey:
package main
import (
"fmt"
"github.com/AlecAivazis/survey/v2"
)
// the questions to ask
var qs = []*survey.Question{
{
Name: "name",
Prompt: &survey.Input{Message: "What is your name?"},
Validate: survey.Required,
Transform: survey.Title,
},
{
Name: "color",
Prompt: &survey.Select{
Message: "Choose a color:",
Options: []string{"red", "blue", "green"},
Default: "red",
},
},
{
Name: "age",
Prompt: &survey.Input{Message: "How old are you?"},
},
}
func main() {
// the answers will be written to this struct
answers := struct {
Name string // survey will match the question and field names
FavoriteColor string `survey:"color"` // or you can tag fields to match a specific name
Age int // if the types don't match, survey will convert it
}{}
// perform the questions
err := survey.Ask(qs, &answers)
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Printf("%s chose %s.", answers.Name, answers.FavoriteColor)
}
Приложение взаимодействует с пользователе спрашивая различне вопросы и ожидает от пользовательского ввода.
Sassoft API: Coincallback API
Sassoft API: Coincallback API
Описание API
Данный API сервис предназначен для получения уведомлений прихода средств на различные криптоадреса:
- Bitcoin
- Litecoin
- Ethereum
- Ripple
- Dogecoin
- Zcash
Идея простая: вы генерируете новый адрес для приёма криптовалюты и посылаете запрос на Coincallback API для отслеживания приёма средств. Как только средства поступают на адрес, сервис делает POST запрос на ваш адрес, указанный в адресе.
Nginx — настройка load balancer
Nginx — настройка load balancer
Простейшая настройка nginx в качестве load balancer может выглядеть следующим образом. Открываем nginx.conf, добавляем секцию серверов upstream и даём ей имя (например loadbalancer). Серверы могут слушать на разных портах. Кроме того, можно одновременно использовать серверы, слушающие на TCP- и UNIX-сокетах.
В нашем случае:
...
upstream loadbalancer {
server 172.17.0.1:5000;
server 172.17.0.1:5001;
}
...
Далее в секции server указываем nginx что нам нужно проксировать запросы с определенных роутов на наш loadbalancer:
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 * — токен пользователя
Пример запроса: