Skip to content

Руководство пользователя

Allexin edited this page Dec 6, 2017 · 22 revisions

#Руководство пользователя(en|ru) #TODO: Перевод на английский язык

#Установка ##Ссылки для скачивания https://github.com/Allexin/TrackYourTime/releases

##Windows Скачайте архив содержащий сборку для OS Windows.
Распакуйте архив в нужное место. Сборка не содержит установочных файлов и приложение будет работать оттуда, куда вы его распаковали. Поэтому помещайте распакованные файлы сразу в нужный каталог, а не во временные файлы.
Запустите файл TrackYourTime.exe
Корректность работы можно определить по появившейся приложения иконке в трее.
Приложение автоматически добавится в автозапуск. Отключить автозапуск можно в настройках приложения.
С этого момента приложение уже выполняет свои функции.
Более детальная настройка описана ниже в этом документе.

##Linux Скачайте архив содержащий сборку для OS Linux.
32 битная версия корректно будет работать в OS Linux 64, но рекомендуется использовать 64 битную версию, если ваша система это позволяет.
Распакуйте архив в нужное место. Сборка не содержит установочных файлов и приложение будет работать оттуда, куда вы его распаковали. Поэтому помещайте распакованные файлы сразу в нужный каталог, а не во временные файлы.
Запустите из консоли файл checksystem
Если вывод содержит строку:
X Window System - OK
значит ваша система полностью готова и можно запускать файл TrackYourTime. Приложение автоматически добавится в автозапуск. Отключить автозапуск можно в настройках приложения.
Автозапуск реализован только для части оконных менеджеров. В случае, если в вашей системе приложение не смогло добавиться в автозапуск - следуйте инструкциям к вашему оконному менеджеру по ручному добавлению приложения в автозапуск.
С этого момента приложение уже выполняет свои функции.
Более детальная настройка описана ниже в этом документе. ###Возможные сообщения checksystem Если checksystem сообщил об ошибке, значит система не готова к запуску TrackYourTime Возможны три типичных сообщения об ошибке.

  • Как правило в системе не установлены библиотеки qt5 необходимые для работы приложения. В этом случае вывод checksystem будет похож на следующий вариант: ./checksystem: error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file or directory В этом случае следует установить соответствующие библиотеки Qt. Как правило это пакеты и libqt5-qtbase,libqt5-script. Однако пакеты могут отличаться в зависимоти от дистрибутива.

  • X Window System - fail. Эта ошибка означает, что приложение не может получить доступа к оконной системе. Как правило это означает либо запуск из под su/sudo с не запущенными под root X Window, либо просто запуск в консольном режиме. Решение здесь возможно только одно - запускайте из под текущего пользователя при активном оконном менеджере. Также возможны ошибки вида:
    _NET_ACTIVE_WINDOW property not available
    WM_CLASS property not available
    Эти ошибки означают, что оконная система доступна, но в ней отсутствуют данные о ключевых параметрах. Возможности как-то починить это нет. Вероятно просто ваша оконная система не устанавливает эти важные значения. Можно попробовать запустить TrackYourTime, но с большой вероятностью приложение не будет работать правильно.

##Mac OS X Скачайте архив содержащий сборку для Mac OS X.
Сборка предназначена для Mac OS X 10.8 и выше.
Возможно запустить приложение на версии Mac OS X ниже, но для этого необходимо собрать приложение из исходного кода.
Откройте архив и переместите приложение в Applications, по аналогии с установой других приложений в Mac OS X.
Запустите TrackYourTime.app. Приложение автоматически добавится в автозагрузку, но в зависимости от версии и настроек безопасности автоматическая автозагрузка может не работать корректно. В этом случае необходимо добавить приложение в автозагрузку вручную.
###Добавление приложения в автозагрузку

  1. Откройте системные настройки
  2. Перейдите в Users & Groups
  3. Кликните на Login Items
  4. Кликните на замок в нижнем левом углу
  5. Введите пароль, чтобы разблокировать настройки
  6. Нажмите +, чтобы добавить приложение
  7. Укажите TrackYourTime.app

#Настройка внешних трэкеров ##Трэкинг активности в браузере Для того, чтобы корректно отслеживать вашу активность в браузере - разрабатываются специальные дополнения к браузерам.
Подробности по установке расширений для браузеров:
Chrome
Firefox

##Трэкинг активности на основе заголовка окна **Внимание, данный раздел устарел относится к версии ПО ниже 0.9.2.5
Начиная с версии 0.9.2.5 кастомный скрипт более не выполняется как замена трэкингу, а является дополнительным не обязательным шагом выполняющимся после основной обработк.
Таким образом скрипт дополняет,а не заменяет другие методы трэкинга.
Также изменился интерфейс, теперь это
parseData(appName,appTitle,trackingResult,currentOS)`
где trackingResult - результат работы трэкинга до вызова скрипта **Конец дополнения

В некоторых случая приложение выносит в заголовок полезную информацию, которая позволяет идентефицировать активность внутри приложения. Например, название редактируемого документа или имя пользователя в чате.
В таких случаях хорошей идее является анализ заголовка окна, для сбора этой информации.
Это возможно сделать с помощью встроенных скриптов.
В некоторых случаях сообщество уже разработало скрипт для приложения, тогда в список приложений рядом с ним отображается значок и никаких дополнительных действий совершать не нужно - всё уже включено и работает.
Если же скрипта нет, вы можете создать его самостоятельно.
Чтобы добавить скрипт к приложению - перейтие в окно "Приложения", выберите приложение и нажмите на нем правой кнопкой, после чего выберите меню "Настройки..."
###Разбор типичного скрипта Application settings window
В данном примере используется предустановленный скрипт для Skype в линукс.
В окне чата заголовок имеет следующий формат:
User Name - Skype™
или
[Число новых сообщений] User Name - Skype™
Разберем код построчно:
function parseTitle(appName,appTitle,currentOS)
parseTitle - метод скрипта, который вызывается приложением для парсинга заголовка. Вызывается он каждый тик(по умолчанию одна секунда), даже если ничего не изменилось, т.к. приложение не может предсказать поведение скрипта и, даже если, ничего не изменилось, скрипт по своим внутренним алгоритмам может решить, что нужно отдать новое значение.
В функцию передается три параметра:

  1. appName - идентефикатор приложения. В случае Windows - это имя файла, например Skype.exe. В случае Linux это имя класса, например skype. В случае Mac OS X это имя приложения(не бандла), например Skype.
    appName позволяет писать универсальные скрипты для разных приложений или же для одного и того же приложения в разных ОС, с учетом особенностей парсинга для каждой ОС. Как правило этот параметр можно игнорировать, поскольку чаще всего скрипт пишется только для одного конкретного приложения.
  2. appTitle - это текущий заголовок окна. Стоит учитывать, что не всегда эта строка на 100% соответствует тому, что выводится в заголовке. К примеру, в некоторых оконных менеджерах под линукс русские буквы в заголовке Skype или символ "™" отображаются нормально, но в переменной appTitle не содержатся.
  3. currentOS - строковая переменная содержащая название текущей ОС. Возможны четыре варианта:
  • LINUX
  • WINDOWS
  • MAC_OS_X
  • UNKNOWN - данный вариант не может передатся в официальных сборках, но может присутствовать в случае кастомной сборки, если исходный код собирался в каком-то особенном окружении. Основное предназначение данной переменной - менять функциональность скрипта для одноименных приложений в разных ОС. Как правило это Linux и Mac OS X, у которых можно совпадать appName, но при этом принцип формирования заголовка может быть разный.

var unreadPos=appTitle.indexOf("]");
В этой строке мы определяем позицию символа "]". Мы предпролагаем, что такой символ не присутствиует в имени пользователя, а значит определяет количество непрочитанных сообщений.
if (unreadPos>0)
unreadPos=unreadPos+1;
Если присутствуеи символ "]", то смещаем позицию на 1 вправо. Таким образом unreadPos сейчас содержит начало имени пользователя.
var pos = appTitle.indexOf("-");
Получаем позицию символа "-", чтобы определить где заканчивается имя пользователя и начинается часть "- Skype™"
if (pos>0)
return appTitle.substring(unreadPos,pos);
Если символ "-" присутствует в заголовке, то возвращаем имя пользователя. То есть всё, что находится между началом строки или символом "]" и символом "-". Обрезать пробелы по краям не нужно, об этом позаботится само приложение.
Если же символ "-" не найден, значит заголовок не соответствует шаблону. В этом случае возвращаем пустую строку: return "";
Пустая строка говорит приложению, что скрипт не смог обработать заголовок и нужно использовать значение по умолчанию.

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

  • Имя пользователя содержащее символы отличные от ASCII либо не сохранятся вообще(если имя не содержит ASCII символов), либо будет записано не корректно.
  • Имя пользователя содержащее символ "]" будет обрезано и сохранится только часть после символа "]". В случае наличия непрочитанных сообщений имя запишется правильно.
  • Имя пользователя содержащее символ "-" будет обрезано и сохранится только часть до символа "-"

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

###Тестирование скрипта После того, как вы написали скрипт - хорошая идея его потестировать не запуская в работу.
Поместите скрипт в текстовый блок User script
и нажмите Start debuging current script
Вы увидите сообщение, если в коде допущены ошибки. В случае, если код корректен - он запустится в режиме тестирования.
Переключайтесь между окнами и вы в режиме реального времени увидите как работает ваш скрипт. Какие данные приходят ему на вход и что он возвращает.
После того, как вы завершили тестирование, вы можете оставить его работать для указанного приложения выбрав тип тржкера Custom script и нажав Apple.
Также вы можете добавить скрипт с именем appName.script в каталог /data/app_predef/scripts в репозитории в бранче Develop и запросить Pull Request приложив подробное описание работы скрипта с примерами заголовка целевого приложения.

##Подключение виртуальных машин В некоторых случаях бывает нужно собирать активность не только на основной машине, но и внутри виртуальных или удаленных.
Далее по тексту основная машина будет называться Host, а виртуальные/удаленные - Client.
Все что нужно для корректной работы - на файерволе Host машины нужно открыть порт 25855 UDP и указать на клиенте IP адрес Host-машины.
###Пошаговая инструкция

  1. Устанавливаем TrackYourTime на основном(хост) ПК
  2. Открываем в файерволе порт 25855 UDP
  3. Устанавливаем TrackYourTime на виртуальном(клиент) ПК
  4. Открываем настройки TrackYourTime на виртуальном(клиен) ПК
  5. Устанавливаем галку "Send data to another server"/"Отправлять данные на другой сервер" и прописываем адрес основного(хост) ПК
  6. Имя файла БД удаляем и оставляем пустую строку.
  7. Применяем настройки
    С этого момента активность на виртуально(клиент) ПК будет отправлять на основной(хост) ПК. Приложение оценивает время прошедшее с момента пользовательской активности на хосте и клиенте и записыват в БД только ту активность, которая была последней.
    Бувально: подвигали мышкой в виртуалке - пишется активность из виртуалки. После этого подвигали мышкой на основной машине - теперь пишутся данные с основной машины. Тоже самое касается удаленных машин. Какая активность свежее, та и учитывается.
    Имя файла БД на клиентах убираем, чтобы не дублировать информацию. Можно указать там имя БД или не трогать стандартное. В большинству случаев на клиентском ПК не имеет смысла хранить БД.

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