IT Блог

Документации и переводы

Статьи на технические темы

Установка python 3

Установка из репозиториев

apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
apt update
sudo apt install python3.9

Теперь можно проверить, что python установился:

$ python3.9 -V
Python 3.9.4

Если во время apt update после добавления репозитория возникает ошибка:

E: Репозиторий «http://ppa.launchpad.net/deadsnakes/ppa/ubuntu hirsute Release» не содержит файла Release

Можно попытаться исправить ошибку, вписав вместо hirsute доступный репозиторий, который можно найти на странице . Например, вписать bionic. Но при apt update может возникнуть ошибка:

Ошб:5 http://ppa.launchpad.net/deadsnakes/ppa/ubuntu bionic InRelease
  Следующие подписи не могут быть проверены...

Couldn't install package: rcssmin

С установкой django-compressor или другим пакетом может возникнуть ошибка установки пакета rcssmin:

[pipenv.exceptions.InstallError]:     In file included from rcssmin.c:18:
_setup/include/cext.h:34:10: fatal error: Python.h: Нет такого файла или каталога
   34 | #include "Python.h"
      |          ^~~~~~~~~~
    compilation terminated.
    error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1
    ----------------------------------------
ERROR: Command errored out with exit status 1

ERROR: Couldn't install package: rcssmin

pip

Используя pip, вы можете установить rcssmin через флаг --install-option="--without-c-extensions":

pip install rjsmin --install-option="--without-c-extensions"

И тогда django-compressor и другие пакеты, требующие rcssmin установятся успешно.

pipenv

pipenv на момент написания статьи не...


Json в mql: JAson

В MQL нет возможности хранить данные различных типов через стандартные типы данных, как это можно сделать в python через словари или в javascript через объекты. Так как MQL типизированный язык, то реализация данных в виде словаря, где хранятся данные в виде пар "ключ - значение", весьма трудоёмко. К счастью, есть замечательная библиотека JAson, которая позволяет хранить данные различных типов в виде словаря, а если быть точнее, то в виде JSON. Также библиотека преобразовывать JSON объект в виде строки и обратно.

Код библиотеки можно найти на странице . Так как библиотека не находится в каком-либо репозитории, то во-первых, сложно следить за обновлениями, а...


Установка pgadmin4 на Linux

Прежде всего удалите pgadmin3 или pgadmin4, если вы пытались установить его через исходный код или apt:

sudo apt purge pgadmin3 pgadmin4
sudo apt autoremove

Теперь выполните следующие шаги:

1. Откройте терминал и склонируйте репозиторий куда-нибудь в свою домашнюю папку.

git clone https://github.com/vivazzi/py_pg_admin.git
cd py_pg_admin

2. (Опционально) Скопируйте local_settings_sample.py в local_settings.py и установите желаемые параметры. Установщик содержит несколько сохранённых конфигураций Pipfile-ов. Чтобы посмотреть доступные, введите:

python3 pre_install.py --help

3. Запустите pre_install.py и следуйте инструкциям:

python3 pre_install.py

Эта команда создаёт папку .venv в папке проекта для того, чтобы pipenv установил виртуальное окружение...


Установка и обновление pip и pipenv

Сначала проверьте, установлен ли пакет pip устанавливается вместе с python (в версиях python 2 >= 2.7.9 и python 3 >= 3.4) ставится по умолчанию. Если pip не установлена, то установите:

sudo apt install python3-pip

Теперь нужно решить, куда вы хотите установить pipenv: можно в домашнюю папку, а можно в системную.

В большинстве случаев разницы нет, куда её установить, но иногда, если pipenv установлена в домашнюю папку, то могут возникнуть проблемы с использованием команд subprocess.Popen() или subprocess.check_output(): например, pipenv не сможет найти virtualenv. Конечно, можно просто и virtualenv установить в домашнюю папку и не забыть добавить...


hplip plugin.run file does not match its checksum. File may have been corrupted or altered

Для установки драйвера для принтера HP в Linux достаточно ввести в терминале команды (принтер должен быть включён):

sudo apt-get install hplip-gui
sudo hp-setup -i

Ответив на несколько вопросов, вы установите драйвер. Но при установке может быть ошибка автоматического скачивания плагина, например, в моём случае на Linux Mint 20.1:

/home/vivazzi/.hplip/hplip-3.20.11-plugin.run file does not match its checksum. File may have been corrupted or altered

У меня принтер hp laserJet P1006, и в моём случае, как видим, не удаётся скачать файл hplip-3.20.11-plugin.run. В вашем случае может быть плагин с другим названием. Чтобы решить...


Отладка в mql. Улучшить дебаг с помощью mql_debug

Зачастую при написании кода mql в среде разработки MetaEditor не хватает отладчика (дебаггера), который мог бы не только следить за переменными, но и вычислять выражения. К сожалению, в MetaEditor такого нет. Например, в коде:

int OnInit(){
    double a = MathPow(2, 1) + MathAbs(-10)/2;

    for (int i=0, len=OrdersTotal(); i < len; i++)
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderType() == OP_BUY)
           OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 70);
}

поставив точку останова, например, на 2-ой, мы не можем посмотреть в дебаггере отдельно, чему равно MathPow(2, 1) или MathAbs(-10)/2. Только если мы пошагово перейдём на следующую строчку, мы...


Послать get post запрос в mql: mql_requests

В mql4 и mql5 для отправки простого get или post запроса можно использовать стандартную функцию WebRequest() или функции библиотеки wininet.dll.

Каждый способ имеет свои некоторые неудобства:

  • При использовании WebRequest приходится дополнительно в настройках терминала (Меню\Сервис\Настройки во вкладке Советники) разрешать использование WebRequest и вписывать url, с которым WebRequest будет работать.
  • Если использовать wininet.dll, то требуется написать приличное количество строк кода даже для обычного get запроса.

Для простой отправки get и post запросов я написал библиотеку mql_requests, использующую функции библиотеки wininet.dllmql_requests находится на гитхабе:

Установка mql_requests

Скачайте библиотеку и скопируйте папку mql_requests/Include/requests в <TERMINAL...


Unit тестирование mql: mql_unit_test

В mql4 и mql5 есть Тестер стратегий, но нет стандартной библиотеки для тестирования простых своих написанных функций. Такое тестирование ещё имеет название Модульное тестирование или unit-тестирование.

Для тестирования своих функций я написал библиотеку mql_unit_test, который доступен на гитхабе:

Установка mql_unit_test

Скачайте библиотеку и скопируйте папку mql_unit_test/Include/unit_test в <TERMINAL DIR>/MQL(4/5)/Include.

Использование

С помощью mql_unit_test вы можете простым способом тестировать ваши функции, а результаты тестов получать в текстовом файле, например:

#include <unit_test/unit_test.mqh>


double min(double v_1, double v_2) {
    if (v_1 > v_2) return v_2;

    return v_1;
}


class MyTest: public TestCase {

    void test_my_function_min() {
        assert_equal(min...

На данный момент нет специального поиска, поэтому я предлагаю воспользоваться обычной поисковой системой, например, Google, добавив "vivazzi" после своего запроса.

Попробуйте

Выберите валюту для отображения денежных единиц