Latest Posts

Bitcoind демон в докере

Bitcoind демон в докере

С появлением докера необходимость в различных установочных скриптов и инструкций сошла на нет. Теперь для того, чтобы поднять свою биткойн ноду достаточно написать пару команд ну и конечно запустить докер хост.

Для запуска нам нужно сделать два действия:

  1. Создать volume, где будем хранить наши данные (блокчейн цепочки):
    docker volume create --name=bitcoind-data
  2. Запустить сам docker image:
    docker run -v bitcoind-data:/bitcoin --name=bitcoind-node -d \
         -p 8333:8333 \
         -p 127.0.0.1:8332:8332 \
         kylemanna/bitcoind

    Смените порты 8333 и 8332 на свои значения.
    Пример работы JSON-RPC для bitcoind.

    Read more

Скрипт бекапа для Grafana dasboards

Скрипт бекапа для Grafana dasboards

Написал простой скрипт для автоматизации бекапов дашбоардов из графаны:

#!/bin/bash

WARN_COLOR='\x1b[33;01m'
NO_COLOR='\x1b[0m'
OK_COLOR='\x1b[32;01m'

set -e

echo -e ${WARN_COLOR}
echo "===> Initializing wizzy ..."
echo -e ${NO_COLOR}

wizzy init

echo -e ${WARN_COLOR}
echo "===> Setting environment variables ..."
echo -e ${NO_COLOR}

wizzy set grafana url ${GRAFANA_URL}
wizzy set grafana username ${GRAFANA_USERNAME}
wizzy set grafana password ${GRAFANA_PASSWORD}

echo -e ${WARN_COLOR}
echo "===> Importing dashboards ..."
echo -e ${NO_COLOR}

wizzy import dashboards

echo -e ${WARN_COLOR}
echo "===> Uploading to S3 ..."
echo -e ${NO_COLOR}

now=$(date +"%m_%d_%Y")

wizzy set s3 bucket_name ${S3_BUCKET}
wizzy set s3 path ${now}_
wizzy upload to-s3 dashboards

echo -e ${OK_COLOR}
echo "===> Done ..."
echo -e ${NO_COLOR}

Предварительно сделать:

Read more

Установка grafana+statsd+graphite при помощи Docker

Установка grafana+statsd+graphite при помощи Docker

Нашел довольно интересный образ для легкой установки графаны-графайта при помощи одной докер команды.
Может отлично подойти на первом этапе, когда метрик прилетает не так много и не нужно создавать отдельный graphite кластер.

Достаточно запустить следующую команду у себя на сервере (предварительно установив Docker):

docker run -d -p 80:80 -p 8125:8125/udp -p 8126:8126 -p 81:81 -p 2003:2003 --name grafana kamon/grafana_graphite

80 порт — веб морда графаны
8125 — stastd порт
8126 — административный порт для statsd
81 — graphite веб морда
2003 — graphite data порт

Read more

Управление криптокошельками через единый интерфейс

Управление криптокошельками через единый интерфейс

Успешно разработано и внедрено новое решение по управлению различными криптовалютами для обменных пунктов.
В поставку решения входит удобная панель управления на основе моей открытой разработки yii2-altcoind, а также скрипты для развертывания различных нод и демонов для криптовалют.

После внедрения вы можете легко делать различные операции с вашими криптовалютами:

Read more

Удалить все контейнеры и образы в Docker

Удалить все контейнеры и образы в Docker

Четыре команды для быстрого удаления всех образов и контейнеров на докер машине:

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker rmi $(docker images -q)
docker system prune -a

 

 

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Read more

Assert raise Exception в python юнит тестах

Assert raise Exception в python юнит тестах

Продолжаем про юниты тесты в питоне.
Удобная конструкция для проверки на вызов исключения в тесте:

def test_something_with_exception(self):
    self.assertRaises(ValueError, self.client.send_something_method, param='one_param')

Тем самым мы тестируем метод send_something_method инциализрованного ранее объекта сlient с аргументами метода param и ожидаем что он выбросит исключение.

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Read more

Mock для Context manager в Python

Mock для Context manager в Python

Встретился участок кода с контекстным менеджером. Потербовалось написать для этого юнит тест.
Для справки, контекстным менеджером в питоне называется конструкция вида:

with self.statsd_client.timer('metric'):
    pass

Для того чтобы сделать мок метода и не ловить ошибки

AtributeError __exit__

мы должны правильно описать мок:

timer = Mock()
timer.__enter__ = Mock(return_value=(Mock(), None))
timer.__exit__ = Mock(return_value=None)

self.statsd_client = Mock()
self.statsd_client.timer.return_value = timer

1 Comment

  1. Artem

    Дружище, спасибо большое. Долго не мог сделать мок на функцию с контекстным менеджером, а тут все понятно описано.

    Read more

Litecoind сервер — установка и запуск демона лайтов

Litecoind сервер — установка и запуск демона лайтов

Аналогично серверу bitcoind можно легко установить и запустить на Ubuntu (пример будет на ubuntu) litecoin сервер:

  1. Скачиваем последний дистрибутив litecoind для linux: https://litecoin.org
  2. Создаем папку: mkdir .litecoin , пересносим в /usr/bin: mv litecoin-cli /usr/bin/litecoin-cli
  3. Создаем файл конфигурации: cd ~/.litecoind && nano .litecoind.conf
    rpcuser=user
    rpcpassword=password
    rpcport=8332
    rpcallowip=1.2.3.4.5
    server=1
    prune=5500
    keypool=100
  4. Запускаем демон: litecoind -conf=litecoind.conf &

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Read more

Bitbucket pipelines + php unit tests

Bitbucket pipelines + php unit tests

Для сборки билда теперь можно использовать встроенный CI от Bitbucket. Для этого достаточно подключить Pipelines в настройках репозитория и создать примерно такой yml файл:

image: [ваш docker image]

pipelines:
  default:
    - step:
        script:
          - composer global require "fxp/composer-asset-plugin:^1.2.0"
          - composer install
          - php yii migrate --interactive=0
          - mysql -h 127.0.0.1 -u user --password=password db < config/dev.sql
          - php -S 127.0.0.1:5000 -t web >/dev/null 2>&1 &
          - cd tests && ../vendor/bin/codecept run
        services:
          - mysql
definitions:
  services:
    mysql:
      image: mysql
      environment:
        MYSQL_DATABASE: 'db'
        MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
        MYSQL_USER: 'user'
        MYSQL_PASSWORD: 'password'

При помощи данного pipeline вы можете прогонять как просто unit так и интеграционные тесты с использованием базы данных. Для популяции базы данных сначала накатываются миграции проекта, а затем и дамп sql.

Read more

Bitcoin REST API сервис

Bitcoin REST API сервис

Разработан специальный rest API сервис на Silex для работы с bitcoind сервером.
При помощи данного модуля вы сможете быстро проводить операции по генерации биткойн адреса для заданного пользователя, проведении новой операции, проверки входящих транзакций по адресам пользователя. Модуль предоставляет из себя готовый облачный bitcoin кошелек, имеет функции регистрации и авторизации новых пользователей, вывод баланса пользователя.

Read more