IT Блог

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

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

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 на момент написания статьи не поддерживает флаг --install-option, поэтому нужно установить pythonX-dev, где...


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 установил виртуальное окружение рядом с проектом. Также команда попытается добавить Pipfile,...


Установка и обновление 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. В вашем случае может быть плагин с другим названием. Чтобы решить проблему с установкой драйвера HP на Linux, нужно...


Отладка в 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.dll. mql_requests находится на гитхабе:

Установка mql_requests

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


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(4, 10), 4);
        assert_equal(min(8,...

Классы mql взаимодействие

Приведу простой пример взаимодействия классов в mql4, их атрибутов, конструкторов и копи-конструкторов copy constructor. Особенно пример будет полезен тем, кто никогда не сталкивался с C-подобными языками программирования (C++, C#, java).

Сразу сообщу, что в этой статье не будут расписаны все моменты работы с классами. Только простой пример для того, чтобы быстро начать использовать классы для более гибкого написания кода. Полный текст программы в конце статьи.
Также я не придерживался принятого стиля написания кода mql, так как я привык оформлять код как в python и считаю принятое оформление кода менее читабельным. Да простят меня mql-разработчики!

Допустим, в некоторые переменные нужно...

Представляю вашему вниманию книгу, написанную моим близким другом Максимом Макуриным: Секреты эффективного управления ассортиментом.

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

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

Попробуйте

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