24 декабря | 2024г. | 02:33:32


АвторТема: 2. Первые шаги  (Прочитано 17361 раз)

0 Пользователей и 1 Гость смотрят эту тему.

Оффлайн DobrodelАвтор темы

  • Друзья Джедаев
  • *****
  • Сообщений: 159
  • Поблагодарили: 259
  • Уважение: -1
2. Первые шаги
« Первое сообщение: 27 января | 2014г. | 16:46:28 »
0
Уважаемые здравствуйте,
Появилась идея написания плугина для ресивера. Нашёл много информации для написания, но вот о том какими инструментами люди пользуются при разработке в наших реалиях почти ничего нет, либо есть но очень скупо и то не на русском. Потому прошу Вас, пожалуйста поделитесь опытом, кто и что использует при написании плагинов? Другими словами:
1) Какую среду разработки используете (PyCharm, Eclipse и пр.), Какие плюсы и минусы?
2) Как (по шагам) прописать в неё (среду разработки) исходники emigma2, чтобы эта самая среда видела библиотеки и помогала с написанием синтаксиса?
3) Где именно хранятся исходники разрабатываемого плагина? На компе или непосредственно на ресивере? И как осуществляется архивация проекта?
4) Каким образом удалено запускаются скрипты для отладки (конкретные скрипты или указания)?
5) Как удалено  отслеживается результат выполнения скрипта проекта?
  • Vu Duo+ (GI S9895 HD), LiveX (ruDream), 13E, 36E
С Уважением, Добродел

Оффлайн 2boom

  • Рыцарь Джедай
  • *****
  • Сообщений: 15162
  • Поблагодарили: 23781
  • Уважение: +168
Написание Pluginа
« Ответ #1: 27 января | 2014г. | 16:50:27 »
0
Kross, ой . как моного вопросов, все делается в редаторе notepad++, по старинке на коленке, плагин находится в ресивере, где ему положено находится, сборка пакета ipk описана Как самому собрать установочный пакет ipk .....
  • VU+ Duo 2 | Vu + Ultimo | DM800se (A8P) | MK-Digital xp1000
на подкуп резидента webmoney: R152988468288  yandex: 410011849574352  Приват24 (в личку)
Авторские работы (скины, пиконы, плагины) выкладывать на сторонних ресурсах запрещено, без согласования с автором
ПИКОНЫ (PICONS) мини FAQ 
ПАКЕТЫ ПИКОНОВ - РЕФЕРЕНС, ПРОВАЙДЕРЫ, СПУТНИКИ

Оффлайн DobrodelАвтор темы

  • Друзья Джедаев
  • *****
  • Сообщений: 159
  • Поблагодарили: 259
  • Уважение: -1
Написание Pluginа
« Ответ #2: 27 января | 2014г. | 17:10:26 »
0
Kross, ой . как моного вопросов, все делается в редаторе notepad++, по старинке на коленке, плагин
Уважаемый, 2boom
Благодарю Вас за ответ скорый.
Если я Вас правильно понял, то всё эти новомодные «приборы» Вам чужды))

Будет ли у Вас желание поделиться более подробным образом по тем вопросам, которые Вы ещё не осветили?
Информации очень мало. Буду Вам очень признателен за это.
  • Vu Duo+ (GI S9895 HD), LiveX (ruDream), 13E, 36E
С Уважением, Добродел

Оффлайн 2boom

  • Рыцарь Джедай
  • *****
  • Сообщений: 15162
  • Поблагодарили: 23781
  • Уважение: +168
Написание Pluginа
« Ответ #3: 27 января | 2014г. | 17:22:02 »
0
Kross, информации не то, что мало ее практически нет, благо практическивсе все исходники можно посмотреть, в природе существует малекий учебник на десяток уроков по написанию плагинов, и собствено все. остально НИР, если напомнишь вчером поищу выложу, плагины живут /usr/lib/enigma2/python/Plugins, больше не знаю что сказать...
  • VU+ Duo 2 | Vu + Ultimo | DM800se (A8P) | MK-Digital xp1000
на подкуп резидента webmoney: R152988468288  yandex: 410011849574352  Приват24 (в личку)
Авторские работы (скины, пиконы, плагины) выкладывать на сторонних ресурсах запрещено, без согласования с автором
ПИКОНЫ (PICONS) мини FAQ 
ПАКЕТЫ ПИКОНОВ - РЕФЕРЕНС, ПРОВАЙДЕРЫ, СПУТНИКИ

Оффлайн DobrodelАвтор темы

  • Друзья Джедаев
  • *****
  • Сообщений: 159
  • Поблагодарили: 259
  • Уважение: -1
Написание Pluginа
« Ответ #4: 28 января | 2014г. | 19:47:14 »
0
Благодарю Вас за ответы. Вот тут немного поискал сам. Глядишь, кому и сгодится)) Так же прошу посильного участия в данной теме «акул» разработки, с дополнениями, советами и реальными скриптами и ссылками.
Сразу оговорюсь, у меня Мак, потому, я буду описывать свой опыт относительно платформы Mac OS X 10.9 (хотя касается это лишь небольшой части настоящего описания)

Итак, для начала обозначим наши цели:

1. Редактировать проект по написанию плагинов для ресивера vu Duo+, удалённо, на нашем ноутбуке.

    1.1. Обеспечить подсветку синтаксиса редактируемого кода
    1.2. Обеспечить автоматическую подстановку модулей, классов, методов и переменных используемых в коде Enigma2
2. Проводить удалённую отладку проекта.
    2.1. Обеспечить получение отладочной информации, по нашему проекту, при загрузке Enigma2
    2.2. Обеспечить обновление изменённого кода нашего проекта, без перезагрузки ресивера и/или Enigma2.
    2.3. Обеспечить вывод отладочной информации на экран OSD, в случае сбоев, в коде нашего проекта
3. Обеспечить архивацию нашего проекта на жёстком диске ресивера по датам и времени.


Для осуществления нашей первой цели сделаем выбор среды разработки и произведём её начальную настройку:

Цитировать
Среда, разработки:
Я нашёл их две наиболее популярные
       1.PyCharm - сайт здесь. Проф среда разработки конкретно под Python. Плюсов очень много смотрите на сайте. Минус главный - платная основа , хотя есть и обрезанный вариант бесплатной версии
       2. Eclipse – сайт расположен здесь. Рекомендуют скачивать именно версию Eclipse IDE for Java Developers. Это бесплатный инструмент разработки на базе Java.
На Маке, обязательно должна быть установлена Java Development Kit версии 7 (помимо самой Java). Это нужно для корректной работы необходимого плагина PyDev под Eclipse (для успешной работы на Python).
В принципе по начальной настройке и использованию связки Eclipse+PyDev+eGit+enigma2 можно почитать здесь, правда только на английском, но всё в принципе понятно и на «пальцах». Так же первоначальнаую настройку, с подробностями на русском, нашёл здесь (до абзаца "Наш первый скрипт") и здесь.
Как прикрутить к нашему проекту библиотеки enigma2 очень подробно изложено на английском здесь.

В связи с бесплатностью и богатыми возможностями Eclipse остановим свой выбор на нем.

Создание проекта в Eclipse:

1. Для начала, на нашем ресивере, необходимо установить пакет для монтирования удаленного диска ресивера к нашему ноутбуку. Я установил в ресивере пакет самба (samba). Хотя можно воспользоваться и любым другим протоколом: FTP или AFP.  Затем добавил в свой конфиг самбы следующий фрагмент:

Файл /etc/samba/smb.config
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
В итоге, после монтирования в Finder (Cmd+K),



на моем ноуте появился раздел Enigma2



2. Создаём проект в Eclipse. Назовём его, например RatedRecord.
File->New->PyDev Project (если этого пункта в меню нет, значит что то с Java DK- см. выше)



3. Выбираем PyDev Project



Тут остановимся по подробнее:
Изначально в Mac OS X уже установлен Python версии 2.7., однако в последних версиях Vu Duo+ используется Python версии 3.2, поэтому, если есть такая необходимость (если Вы пишите плагин под Vu Duo+), то устанавливаем предварительно (до установки Eclipse) необходимую Вам версию Python с официального сайта.


Всё эти манипуляции, с установкой интерпретатора, нам необходимы с целью проверки синтаксиса нашего проекта (не более), так как сам проект будет запускаться на ресивере.

4. Теперь необходимо добавить файлы проекта (см ниже). Выбираем имя нашего проекта (в нашем случае RatedRecords) в левом окне и жмем на правую клавишу мыши. В появившемся меню выбираем пункт New->Link to Existing Source и в появившемся окне выбираем вторую сверху клавишу Browse и затем выбираем наш примонтированный диск и выбираем папку нашего проекта, которая должна находится по этому пути (предварительно её надо создать на ресивере) /usr/lib/enigma2/python/Plugins/Extension/ИМЯ_ВАШЕГО_ПРОЕКТА. После чего если файлы в ней уже были, то они добавятся в Ваш проект и Вы их сможете их редактировать с подсветкой синтаксиса.



5. Теперь “прикрученный” ранее нами git  enigma2 (см. здесь) необходимо скопировать в папку проекта. Для этого на названии enigma2 жмем правую клавишу мыши и выбираем пункт Move…



Далее выбираем папку нашего проекта и новое имя (я набрал Enigma)  и Ок.



6. Теперь необходимо добавить папку проекта нашей Enigma в переменную PYTHONPATH:. Для этого жмём на названии нашего проекта правой клавишей мыши и выбираем пункт Properties и в появившемся окне выбираем пункт с левой стороны PyDev – PYTHONPATH и во вкладке Source Folders нажимаем кнопку Add source folder. Далее выбираем нашу папку Enigma и жмем Ок.



Пункты 5 и 6 необходимы для того, чтобы у Вас начала работать автоматическая подстановка модулей, классов, функций и переменных из библиотеки enigma2 в нашем новом проекте.

Таким образом теперь у нас есть возможность удобно работать с нашим новым проектом: добавлять новые файлы, редактировать старые и они будут тут же меняться на нашем ресивере, так же комфортно работать с уже написанными ранее модулями и библиотеками enigma2.
О примерной стурктуре и начальном содержании файлов Вашего проекта см. ниже.


Теперь для осуществления нашей второй цели рассмотрим варианты отладки и отладочного кода:
 
Цитировать
Отладка:

Для успешной отладки Ваших модулей использую следующие скрипты и шаги.

1. Для отладки нам необходимо подключиться к ресиверу либо по telnet, либо по ssh  протоколам. Остановимся на проверенном ssh.
Чтобы не вводить каждый раз пароль при входе в ssh, смотрим сюда.

2. Для удалённого управления ресивером я использую программу iDreamX для Mac OS X. Очень удобно: На вкладке Управление->Управление Вы можете управлять пультом и тут же видеть результат на экране.



Либо второй вариант это использование web интерфейса самого ресивера (менее удобно).



В обоих этих вариантах есть один недостаток: не всегда возможно разобрать отладочные сообщения на «скриншотах». Для этой цели служит третий вариант с использованием программы снятия «cкриншота» с OSD  (выполняем в терминале удалённо на ресивере):

Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Из примера видно, что снимки экрана OSD сохраняются в формате jpg с 80% качеством, в папку (которую надо создать заранее) /usr/lib/enigma2/python/Plugins/Extensions/ИМЯ_ПАПКИ_ВАШЕГО_ПРОЕКТА/screenshots. Поэтому, мы сможем их быстро взять из указанной папки и просмотреть на своём ноутбуке на ранее примонтированном разделе Enigma2.

3. Для удалённой перезагрузки enigma2 есть несколько вариантов команд (выполняем на удалённой машине ресивера):
Вариант №1 - безобидный вариант))
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Вариант №2 – используя API web интерфейса (надёжный вариант)
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Вариант №3 - самый безопасный вариант
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Вариант №4 – снятие лога инигмы (иногда вводит ресивер в "подвисание»)
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
ВНИМАНИЕ: Для полной перезагрузки enigma2 требуется как минимум 40 сек. Поэтому прежде чем что либо делать на ресивере и смотреть логи дайте ему время для перезапуска примерно около минуты

ВНИМАНИЕ: Всё варианты рабочие, при вводе и копировании внимательно следите за всеми знаками которые приводятся здесь!

Я использую Вариант №4. Он отлично подходит для снятия лога Инигмы в файл и последующего анализа ошибок, например вот таким образом:

Для мониторинга лога загрузки инигмы в реальном времени:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Для просмотра сообщений которые касаются конкретно Вашего проекта:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Как пример: у меня файл проекта назван - RatedRecords. В ssh сесcии пишу следующее

Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Файл лога ./enigma2.log сохраняется в текущую папку.

4. Так же в целях отладки проекта желательно использовать следующую структуру проекта (как пример ):

1. RatedRecords – папка проекта
      1.1. __init__.py – пустой как правило файл (см. доку по Python)
      1.2. plugin.py – файл необходимый для отладки и правильной работы Вашего плугина. Имя не меняем (см доку по написанию скриптов для enigma2 ).
      1.3. MainScreen2.py (как пример) – код Вашего проекта.
      1.4. Screen2.py (как пример) – код Вашего проекта.
      ………
      1.N. ScreenN.py (как пример) – код Вашего проекта.

Ниже приведу коды обоих файлов:

Файл plugin.py:

Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.

Пример MainScreen.py:

Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.

Данный код полностью рабочий. Проверен на моем ресивере Vu Duo+ (GI S9895 HD)!

Код в файле plugin.py предназначен для того, чтобы:

1. В случае ошибки, Вы смогли получить вывод отладочной информации на экран телевизора на зеленом фоне (так называемая “зеленка”)

2. Чтобы каджый раз не перегружать инигму при очередном редактировании файлов Вашего проекта (в нашем случае MainScreen.py). Т.е. если Вы поправили свои файлы проектов, которые Вы указали при импорте в plugin.py (MainScreen.py, Screen2.py и пр.), то Вы дальше можете смело нажимать виртуальные клавиши пульта и смотреть что получилось, через iDreamX.
Правда это не касается самого файла plugin.py. В случае его редактирования Вам придется воспользоваться одним из описанных выше вариантов перезагрузки enigma2.

Вроде почти всё описал, кроме пожалуй настройки пробросов портов роутеров для отладки вне дома. Однако думаю, что с этим простым заданием Вы справитесь и сами))
Всю вышеописанную информацию собирал по кусочкам.
Так как опыта в этом ещё мало, то возможны ошибки.)))

Теперь об архивации проекта, Сам Eclipse позволяет воспользоваться встроенными средствами архивации типа eGit. Однако в связи с тем, что я почти не знаю об этой системе ничего, а так же, в связи с тем, что для неё нужен выделенный GIT сервер, оставим этот метод на потом.
А вот о том, как осуществить третью цель нашего проекта для сохранения нашего проекта, на жёсткий диск ресивера, я напишу здесь чуть позже в следующих постах:


Удачи всем в начинаниях Ваших!
  • Vu Duo+ (GI S9895 HD), LiveX (ruDream), 13E, 36E
С Уважением, Добродел

Оффлайн DobrodelАвтор темы

  • Друзья Джедаев
  • *****
  • Сообщений: 159
  • Поблагодарили: 259
  • Уважение: -1
Написание Pluginа
« Ответ #5: 01 февраля | 2014г. | 16:37:42 »
0
Уважаемые друзья, здравствуйте
Позвольте сегодня остановиться на таком тонком моменте как:

Удалённое подключение к ресиверу по протоколу AFP (Netatalk)

Говоря, в своем предыдущем сообщении, о том, что самое простое это было установить samba сервер, я оказался не прав. Так как по каким то неведомым причинам (скорее всего из-за блокировки портов samba сервера моим провайдером) подключиться удаленно у меня к моему samba серверу не удалось. Потому сейчас я постараюсь описать не менее “простой” )) способ описания подключения по протоколу AFP (Netatalk).

1. Открываем Терминал и входим удалённо в наш ресивер по ssh протоколу, следующей командой:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.Например так:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.или так
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Цитировать
ВНИМАНИЕ! Если Вы входите удалённо используя логин отличный от root, то ко всем последующим командам в начале строки добавляете команду sudo. Например так:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.

2. Теперь Вам необходимо найти в репозиториях своего имиджа пакет с названием netatalk и установить его.
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.или
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра. Зависит от установщика пакетов.
Так как у меня имидж от ruDream, то использую первый вариант.

3. По умолчанию специально для этого протокола команда ruDream создала нового пользователя admin с пустым паролем. Так как скорее всего имидж у Вас другой, то начнём с создания пользователя для него. Для этого открываем ssh сессию и пишем следующее:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
4. После чего смотрим какая версия netatalk у Вас стоит, для этого набираем :
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.Скорее всего будет стоять версия2.X. В случае если стоит версия 3.Х, то по настройке можно глянуть например здесь
Мы сейчас поговорим о настройки старой доброй версии 2.

5. Далее, необходимо создать папку нашего проекта. Делаем это, в нашем удалённом терминале,  командой 
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.Например так:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
6. Потом необходимо задать правильно на её права и разрешения.
Цитировать
Важно! Нам необходимо поставить права и разрешения на весь путь следования до нашей папки MyProject. В противном случае мы так и не увидим присоединённой папку нашего проекта((
Это значит необходимо сделать следующее:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Знаю, что данный вариант не совсем безопасен, однако пока другого не нашёл.))

7. Дальше (надеюсь, что пакет mc Вы уже установили давно), если нет, то воспользуйтесь любым доступным редактором в Вашем ресивере, например nano)), либо установите пакет mc. На моем имидже это выглядит так
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.На большинстве других имиджей используется другой установщик пакетов, потому наверняка команда будет следующей
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
8. Редактируем файл конфигурации протокола AFP - afp.conf
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Цитировать
ВНИМАНИЕ! На разных имиджах настройки пакета могут находиться в разных директориях, но почти всегда в корневой папке /etc. Для того чтобы узнать где лежит тот или иной файл наберите простую команду
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.в нашем случае делаем
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
И добавляем, если там еще нет, следующие строки:
Файл /etc/netatalk/afp.conf
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.        a) Первая строка подключает иконку которая будет появляться у Вас на ноутбуке при монтировании тома по AFP протоколу. Здесь стоит иконка от AppleTV (возможные параметры RackMac, PowerBook, PowerMac, Macmini, iMac, MacBook, MacBookPro, MacBookAir, MacPro,AppleTV1,1, AirPort)
         b) Вторая подключает необходимые для работы библиотеки
         c) Третья включает журналирование работы протокола. Т.е. в файле /var/log/afpd.log мы увидим что происходит с нашими подключениями - это нужно в случае если что то пойдёт не так. Мы это можем легко отследить простой командой:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра. Которая будет в реальном времени показывать обновляемый лог на экране нашего терминального окна в сессии ресивера.

9. Теперь правим второй важный для нас файл AppleVolumes.default
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.И добавляем туда строки которые позволяют нам монтировать необходимые папки (в нашем случае):
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.           a) Первая строчка монтирует директорию нашего проекта с меткой «MyProject» и доступна она будет только созданному нами пользователю user1.
           b) Вторая строчка монтирует наш жёсткий диск, который примонтирован к ресиверу в точке /media/hdd.
           c) Третья строчка позволяет нам примонтировать том для TimeMachine (в моем случае с маком очень полезно).
Других изменений нам делать нет необходимости.

10. Далее перезапускаем/запускаем наш netatalk сервер командой Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
11. После чего на Вашем роутере открываем порт 548 (как это сделать поищите в Google.ru, так как для каждого роутера это отдельная процедура)

12. Далее на Вашем ноутбуке в Finder набираете команду Cmd+K и в появившемся окне набираете строчку afp://IP_ВАШЕГО_РЕСИВЕРА или IP Вашей домашней сети если e Вас есть настроенный статический или привязанный по DDNS IP.
например так:

Затем в окне авторизации вводим имя, указанное нами в шаге №3.
Поле пароля оставляем пустым, так как мы его НЕ устанавливали и жмём Ок.
И через секунд 15-20 видим окно с нашими прописанными ранее метками томов.



Вроде всё по данному пункту.))
Опыта у меня не так много на этом поприще и в тоже время, если есть вопросы пишите не стесняйтесь, чем смогу помогу)))
  • Vu Duo+ (GI S9895 HD), LiveX (ruDream), 13E, 36E
С Уважением, Добродел

Оффлайн DobrodelАвтор темы

  • Друзья Джедаев
  • *****
  • Сообщений: 159
  • Поблагодарили: 259
  • Уважение: -1
Написание Pluginа
« Ответ #6: 05 февраля | 2014г. | 09:22:44 »
0
Здравствуйте, уважаемые друзья))

Сегодня поговорим о третьем нашем вопросе:
Об обеспечении архивации нашего проекта на жёстком диске ресивера по датам и времени.

Описание:
Цитировать
Описанный ниже код предназначен для сохранения исходных файлов Вашего проекта из указанной директории (источник) - в указанную Вами директорию (архив).
Вы можете по своему усмотрению добавлять сохранение необходимых расширений файлов. По умолчанию (без указания фильтруемых расширений) сохраняются все файлы в указанной папке.
Древовидная структура сохранения исходных файлов следующая:

/ПАПКА_АРХИВА/НАЗВАНИЕ_ПРОЕКТА/
                                          |- /ИМЯ_ИСХОДНОГО_ФАЙЛА_1
                                                                          |- /ДАТА_1_МОДИФИКАЦИИ_ФАЙЛА_1/
                                                                          |- /ДАТА_2_МОДИФИКАЦИИ_ФАЙЛА_1/
                                                                          |- /..../
                                                                          |- /ДАТА_N_МОДИФИКАЦИИ_ФАЙЛА_N/
                                          |- /ИМЯ_ИСХОДНОГО_ФАЙЛА_2
                                                                          |- /ДАТА_1_МОДИФИКАЦИИ_ФАЙЛА_2/
                                                                          |- /ДАТА_2_МОДИФИКАЦИИ_ФАЙЛА_2/
                                                                          |- /..../
                                                                          |- /ДАТА_N_МОДИФИКАЦИИ_ФАЙЛА_N/
                                          |-....
                                          |- /ИМЯ_ИСХОДНОГО_ФАЙЛА_N
                                                                          |- /ДАТА_1_МОДИФИКАЦИИ_ФАЙЛА_N/
                                                                          |- /ДАТА_2_МОДИФИКАЦИИ_ФАЙЛА_N/
                                                                          |- /..../
                                                                          |- /ДАТА_N_МОДИФИКАЦИИ_ФАЙЛА_N/

Исходные файлы упаковываются архиватором tar и сохраняются под именами в следующем формате Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Архивирование при помощи библиотеки tar, а не просто копирование файлов источников, сделано намеренно, так как при восстановлении хотелось достичь простоты работы с архивом.
Простота, в данном случае, заключается в том, чтобы зайти в архивную папку в Midnight Commander и напрямую (так как  Midnight Commander поддерживает работу с tar архивами) заглянув в архив файла, без переименований, быстро скопировать в необходимое место.

В коде используется журналирование (логирование) процесса архивации и возможных ошибок при выполнении кода программы.
Логирование ведётся по двум одновременных потокам: Первый main (см. файл ./Services/ProjectLog.py) предназначен для вывода на консоль сообщений отладки (уровень DEBUG), а второй для вывода информации (уровня INFO) в файл который находится в папке /ПАПКА_АРХИВА/.backup.log. В нем записывается вся информация о произведённых действиях по сохранению файлов.
Оба потока работают одновременно, с иерархией main.backup, т.е. если мы будем выводить сообщения в поток backup (т.е. в файл  /ПАПКА_АРХИВА/.backup.log), то они автоматически будут появляться в потоке main (т.е. в консоле). Однако если мы станем выводить сообщения только в поток main, то дальше они не пойдут и отобразятся только в этом потоке, т.е. только на консоле.
Более подробно о построении журналирования (логирования) на Python можно найти здесь и здесь на русском и на английском здесь.

Пример запуска и использования кода (класса Backup) Вы можете увидеть в файле plugin.py.
Блок схема принципиальной работы кода, написанная на алгоритмическом языке Дракон и исполненная в редакторе ИС Дракон (автор Тышов Г.Н.), приведена ниже:



А теперь и сам код:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Я прилагаю исходные файлы к настоящему сообщению.
Вы можете использовать код изложенный в файле Backup.py независимо, в любом проекте.
Достаточно подключить модуль
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.и вызвать необходимые функции (как описано в коде файла plugin.py), либо разкомментировать строки внизу файла Backup.py, указав в процедуре main() необходимые параметры (см. ниже) и запустить файл Backup.py отдельно.

Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Данный код создаёт объект backUp и добавляет необходимую фильтрацию данных проекта по двум расширениям: 'py', ‘config’. Далее запускается процесс архивации.
Если мы вставим данный код в любой модуль программы, который запускается нами каждый раз при отладке, то все наши изменённые данные будут надёжно защищены.

Если будут вопросы - пишите))
  • Vu Duo+ (GI S9895 HD), LiveX (ruDream), 13E, 36E
С Уважением, Добродел

Оффлайн munche

  • Лорд Джедай
  • *****
  • Сообщений: 3559
  • Поблагодарили: 7060
  • Уважение: +143
Написание Pluginа
« Ответ #7: 09 февраля | 2014г. | 07:07:50 »
0
Я лично храню всё в гите. Там видно историю изменений. Работаю в Фёдоре 12. Эклипсом не пользуясь, он слишком тяжёлый, поэтому пишу в gEdit. Remote gebug слишком тормознутый, поэтому для отладки вывожу логи и снимаю их с ком порта.

Оффлайн DobrodelАвтор темы

  • Друзья Джедаев
  • *****
  • Сообщений: 159
  • Поблагодарили: 259
  • Уважение: -1
Написание Pluginа
« Ответ #8: 09 февраля | 2014г. | 08:07:26 »
0
Я лично храню всё в гите. Там видно историю изменений. Работаю в Фёдоре 12. Эклипсом не пользуясь, он слишком тяжёлый, поэтому пишу в gEdit. Remote gebug слишком тормознутый, поэтому для отладки вывожу логи и снимаю их с ком порта.
Уважаемый munche, благодарю Вас за ответ в теме данной.
Позвольте попросить Вас о возможности более подробно изложить свой опыт относительно использования Git. Какие шаги, какие «тонкие» моменты?
Так же, очень интересен опыт Ваш в снятии «логов» с com порта.
И, если не трудно, поясните пожалуйста в чем именно заключается «тяжесть» Eclipse и «тормознутость» Remote debug

Понимаю, что порой нет просто времени на ответ развёрнутый, потому прошу Вас, в этом случае,
по возможности, указать те источники, которыми Вы пользовались.
Я постараюсь их сам изучить и изложить здесь.

 

Добавлено  09 февраля | 2014г. | 17:29:19
Друзья, ещё раз здравствуйте
Сегодня я всё же нашёл время и более подробно взглянул на Eclipse, так как о нем выказались как о «тяжёлом» продукте. Возможно такое мнение бытует у людей профессиональных, которые хорошо знакомы с языком Python и самой enigma. Потому как действительно загрузка самого редактора занимает около 15 сек. (на моем «ноуте») и естественно по сравнению с простым редактором это много и в тоже время могу возразить, что пользуюсь «ноутом», я всего один раз в неделю перегружаю Eclipse. Так как запустив его один раз, нет смысла в его бесконечном перезапуске - всё очень стабильно (кроме пожалуй русификации проекта :)). 

Итак, что же я нашёл сегодня полезного в Eclipse:
1. Подсветка синтаксиса (справедливости ради, нужно заметить, что она есть почти во всех современных редакторах)
2. Подсказки по поводу грамматики языка Python (если установлен PyDev ) - для новичка, коим я себя считаю в мире Python, это МЕГА-полезно.)) Помимо самих подсказок, мы можем видеть подсказки по содержимому классов библиотеки enigma2, как показано на рисунке ниже:



например, ниже показано, что редактор даёт нам подсказку, в строчках, с красным крестиком есть проблемы:



3. Оказывается, копнув, чуть глубже, я нашёл встроенное решение (если установлен eGit) по архивированию проектов, которое совмещает всё преимущества использования git. Оказывается в Eclipse есть ведение версий Вашего проекта и даже визуальное их сравнение.



Для того чтобы получить доступ к Истории изменений Вашего проекта, необходимо просто нажать на правую клавишу мыши на папке проекта и выбрать пункт Restore From Local History....



и перед Вами откроется окно с сохраняемыми файлами системы...



4. Для того чтобы настроить число дней архивации, число экземпляров сохраняемых файлов и максимальный размер сохраняемых файлов, средствами Eclipse, необходимо открыть основные настройки редактора, как показано на рисунке ниже:



5. Для того чтобы поменять различные атрибуты отображения текста при редактировании неоходимо так же войти в основные настройки программы:



6. Для настройки шаблонов часто-используемых конструкций языка, которые должны появляться, при нажатии Ctrl+Space, можно зайти в основное меню модуля PyDev:



При написании шаблонной фразы, например def и нажатии вышеописанной комбинации клавиш (Ctrl+Space), Вы можете настроить вывод фактически любого текста, как показано на рисунке выше.

Честно говоря это почти всё что нужно для новичка при разработке проектов.)))
Потому вся «тяжесть» Eclipse перекрывается вышеописанными плюсами.
В любом случае, я очень благодарен, уважаемому munche, без него я бы так и не капнул Eclipse )))
Думаю, что сам Eclipse скрывает в себе очень многие возможности, которые по разным причинам не всем нам открываются.
Что ж, по мере накопления нашего опыта, надеюсь он откроет свои новые грани.
  • Vu Duo+ (GI S9895 HD), LiveX (ruDream), 13E, 36E
С Уважением, Добродел

Оффлайн munche

  • Лорд Джедай
  • *****
  • Сообщений: 3559
  • Поблагодарили: 7060
  • Уважение: +143
Написание Pluginа
« Ответ #9: 10 февраля | 2014г. | 08:35:40 »
0
Dobrodel,
У меня GIT поднят на сервере у друзей, это приватный сервер там разные проекты лежат. Публичными не пользуюсь. Как вариант использовать SVN (тоже использую) - он более простой, если не нужно ветвлений, то им проще пользоваться.

Ничего сложного в снятии логов с ком порта не вижу. Есть одно НО. Я пишу на С/С++ поэтому для меня вывести логи не проблема. Питона уже лет 5 не мучал....

Если вы запустите на виртуальной машине, то поймете в чем  тормознутость и тяжесть эклипса. Ну и субъективно, после кодежира в нем сидеть... ну только ели очень припрет
Насчет ремоут дебага лично мне куча заморочек которая нужна для использования GDB не нравится. Все равно без JTAG вы им не воспользуетесь нормально.

Оффлайн DobrodelАвтор темы

  • Друзья Джедаев
  • *****
  • Сообщений: 159
  • Поблагодарили: 259
  • Уважение: -1
Написание Pluginа
« Ответ #10: 10 февраля | 2014г. | 08:54:50 »
0
Уважаемый munche, благодарю Вас за ответ.

Ничего сложного в снятии логов с ком порта не вижу. Есть одно НО. Я пишу на С/С++ поэтому для меня вывести логи не проблема. Питона уже лет 5 не мучал....

Есть ли у Вас возможность указать источник которым Вы пользовались (по поводу снятия "лога» через com порт) либо, если это просто - описать сам процесс от А до Я.

Цитировать
Если вы запустите на виртуальной машине, то поймете в чем  тормознутость и тяжесть эклипса. Ну и субъективно, после кодежира в нем сидеть... ну только ели очень припрет

Что касается Eclipse, то я использую его без использования средств виртуализации. И, как я и описал выше, максимальные «тормоза», которые врстречались мне на нем, это долгая загрузка, в остальном я очень им доволен))

И еще, простите мне мою неграмотность и в тоже время подскажите пожалуйста, что такое «кодежир»?
  • Vu Duo+ (GI S9895 HD), LiveX (ruDream), 13E, 36E
С Уважением, Добродел

Оффлайн munche

  • Лорд Джедай
  • *****
  • Сообщений: 3559
  • Поблагодарили: 7060
  • Уважение: +143
Написание Pluginа
« Ответ #11: 10 февраля | 2014г. | 11:20:56 »
0
Dobrodel,
ну либо так:

Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Либо так:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
А кодежир это CodeGear

Оффлайн DobrodelАвтор темы

  • Друзья Джедаев
  • *****
  • Сообщений: 159
  • Поблагодарили: 259
  • Уважение: -1
Написание Pluginа
« Ответ #12: 10 февраля | 2014г. | 12:42:37 »
0
Уважаемый munche,
Простите, но что дальше с этим кодом делать, чтобы получить лог?
Может всё же источник укажите, если так не просто Вам пояснить для «чайника», коим я сейчас в этой области являюсь.
  • Vu Duo+ (GI S9895 HD), LiveX (ruDream), 13E, 36E
С Уважением, Добродел

Оффлайн munche

  • Лорд Джедай
  • *****
  • Сообщений: 3559
  • Поблагодарили: 7060
  • Уважение: +143
Написание Pluginа
« Ответ #13: 10 февраля | 2014г. | 20:11:33 »
0
Dobrodel, будет у вас лог в ком порт идти зависит от того как собрано ядро и от переменных окружения у-бута. Поэтому нужно смотреть по месту

Оффлайн DobrodelАвтор темы

  • Друзья Джедаев
  • *****
  • Сообщений: 159
  • Поблагодарили: 259
  • Уважение: -1
Написание Pluginа
« Ответ #14: 10 февраля | 2014г. | 21:09:35 »
0
Dobrodel, будет у вас лог в ком порт идти зависит от того как собрано ядро и от переменных
Вот теперь всё встало на свои места.
Благодарю Вас.
Думаю, что теперь любой из нас, новичков, справится с этим очень быстро. :yahoo:
  • Vu Duo+ (GI S9895 HD), LiveX (ruDream), 13E, 36E
С Уважением, Добродел

Теги:
 

Похожие темы

  Тема / Автор Ответов Последний ответ
1 Ответов
3192 Просмотров
Последний ответ 28 сентября | 2011г. | 23:27:27
от olegla



X

Добро пожаловать!

Мы заметили, что у Вас установлено расширение AdBlock или ему подобное. Пожалуйста добавьте наш Клуб в белый список, внесите этим посильную лепту в его развитие. Спасибо!