Обсуждение статьи "Советы профессионального программиста (Часть I): Хранение, отладка и компиляция кодов. Работа с проектами и логами"

 

Опубликована статья Советы профессионального программиста (Часть I): Хранение, отладка и компиляция кодов. Работа с проектами и логами:

Советы профессионального программиста о методах, приемах и вспомогательных инструментах, облегчающих программирование.

Программные файлы терминала находятся в каталоге MQL5. Данный каталог является так называемой «песочницей». Доступ наружу закрыт. И это правильно. Хотя если подключить свой DLL, то, наверное, можно залезть куда угодно.

Для примера, структура проекта Cayman:

  • /Experts/Cayman/ - эксперт
  • /Files/Cayman/ - файлы данных (настройки, параметры)
  • /Include/Cayman/ - библиотека классов (функций)
  • /Scripts/Cayman/ - основные (боевые) скрипты
  • /Scripts/CaymanDev/ - скрипты разработчика (для отладки)

Основные преимущества такого размещения:

  • Контекстный поиск только в файлах проекта с помощью TotalCommander
  • Контроль версий с помощью Git (следить только за файлами проекта, остальное игнорировать)
  • Упрощается копирование в другой терминал (демо -> реал – выпуск релиза)

Автор: Malik Arykov

 

Спасибо. Хорошая, полезная статья.

 
Интересно ) Я ссылкой библиотеку свою присоединил. У меня разных терминалов штук шесть и очень неудобно, когда для каждого своя копия библиотеки. А тут она для всех терминалов всегда одинаковая. А Вы используете файл .gitattributes ? А если да, то в каком виде?
 
Правильная статья. Раньше всегда мои документы на не системный диск так перетаскивал, на всякий случай)
 

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

Ссылки это на любителя, проще работать через репозиторий, тогда вопрос о количестве копий просто не возникает

Интересно мнение про внешние редакторы, особенно с учетом любви автора к скриптам

 
Andrei Novichkov:
А Вы используете файл .gitattributes ? А если да, то в каком виде?

Не использую, поскольку, нет необходимости. Мне не важны бинарные файлы (в т.ч. image, docx) и их дельты. Мне важны только тексты моих программ и их история.

 
Andrei Trukhanovich:

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

Ссылки это на любителя, проще работать через репозиторий, тогда вопрос о количестве копий просто не возникает

Интересно мнение про внешние редакторы, особенно с учетом любви автора к скриптам

1) Канбан доска это не багтрекер. На одной доске я могу рулить задачами нескольких репозиторев (MQL4, MQL5, WebSite) проекта Cayman

2) Я правильно понял, что если у меня два терминала с одинаковым содержимым MQL5, то в каждом MQL5 есть локальный репозиторий и один общий облачный. Если так, то представим ситуацию. Вы делаете изменения в одном MQL5 и хотите применить их для второго MQL5. Ваши действия:

  • запушить (push) первый MQL5 - зафиксировать версию в облаке
  • запулить (pull) второй MQL5 - обновить версию

Зачем так много телодвижений?

3) Я люблю комфорт - одним кликом по скрипту выполнять кучу работы. NPP предоставляет мне комфорт подсветки логов. Для примера, вот специально подсветил мой лог в NPP для примера. Причем подсветка строк с лексемами //, Error, todo - автоматическая, поскольку прописана в синтаксисе файлов с расширениями *.txt, *.log

  подсветка логов

 

Бесплатные плагины с канбаном в битбукете тоже есть.

Malik Arykov:

    Зачем так много телодвижений?

    Затем что так правильно. 

    Разные терминалы - разные инстансы, не говоря уже о том что в одном терминале может идти работа во втором отладка и что терминалы могут кардинально отличаться настройками инструментов и торговыми условиями.

    Плюс есть нюансы с подхватыванием терминалом новых скомпилированных версий (tldr лучше вообще не компилировать код если он бежит сейчас на терминале)

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

     
    Andrei Trukhanovich:

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

    Дык, ссылки смотрят на один и тот же локальный репозиторий (один MQL5 (*.mq?, *.ex?) для всех терминалов)

    При этом у каждого терминала есть свои особенности. У меня например это AppSettings.txt, параметры анализаторов, настройки терминала и т.п. (указаны в .gitignore)

    Из каждого(любого) терминала вы можете вызвать "Изменить" и быть уверенным, что правите один и тот же код.

     
    Malik Arykov:

    Из каждого(любого) терминала вы можете вызвать "Изменить" и быть уверенным, что правите один и тот же код.

    именно это и пугает )

    но хозяин - барин

     

    В гит сейчас есть приватные репозитарии.

    Родной Git Desktop распознает mq4/mqh файлы как бинарные. Даже если прописать в атрибутах diff, не понятно как посмотреть изменения в приложение. Какие есть решения чтоб удобно сравнивать версии файлов? 

    ----

    Если сохранять файлы в MTEditor в кодировке UTF-8, то через Git Desktop можно посмотреть сравнения

    Причина обращения: