Документація Побудова тайм-графу

Встановлення

Встановити Побудову тайм-графу можна двома способами: клонувати, або завантажити.

Клонування

  1. Перейдіть в домашній каталог.

  2. Виконайте git clone https://github.com/ownmir/BuildTimeGraph.git

Завантаження

  1. Перейдіть на https://github.com/ownmir/BuildTimeGraph

  2. Нажміть «Code», потім «Download ZIP» (див. картинку)

Завантаження

Завантаження з github

В теці downloads у вас з’явиться файл BuildTimeGraph-master.zip. Структура архіва:

  • BuildTimeGraph-master
    • BTIMEG

    • cgi-bin

    • DOC

    • файли .py та інші

В домашній теці створить будь-яку теку, наприклад /home/fominvv/BuildTimeGraph та скопіюйте туди всі теки та файли з BuildTimeGraph-master. Остаточна структура:

  • home
    • fominvv
      • BuildTimeGraph
        • BTIMEG

        • cgi-bin

        • DOC

        • файли .py та інші

Версія Python

Щоб визначити, чи встановлений у Вас Python і яка в нього версія, наберіть в терміналі:

python getver.py

Результат:

Hello! Your version of python:

3.8.6 (tags/v3.8.6:db45529, Sep 23 2020, 15:52:53) [MSC v.1927 64 bit (AMD64)]

Bye!

Якщо видає помилку, чи версія 2, спробуйте так:

python3 getver.py

Нема python третьої версии? Встановить, за допомогою Вашого пакетного менеджера. Якщо у Вас Windows, то загрузіть з сайту https://www.python.org/downloads/

Використання

Будь-яка програма на мові Python запускається так:

/шлях/python program.py параметри

У моєму випадку:

/home/fominvv/BuildTimeGraph/python main.py параметри

Результат роботи програми - масив JSON. При помилці масив має вигляд: [«Error», «Text of error»]. Наприклад, якщо запустити програму без параметрів:

["Error", "No argument 1"]

Таблиця помилок на даний момент:

Таблиця помилок

Текст помилки

Номер

No argument 1

12

Wrong argument 1

11

No argument 2

22

Wrong argument 2

21

No argument 3

32

Wrong argument 3

31

Only one of 4, 5, 6 parameters can be defined

71

Вхідні дані:

Існують два типа відрізка:

  1. Робочий - позначається «Work».

  2. Неробочий - позначається «Pause»

У кожного відрізка є початок і кінець - timestamps у міллісекундах (Години і далі поки не берем). Для простоти 1,2,3 - 11,12 тощо.

Отже time-graph - масив відрізків, де чергуються періоди Work, Pause

Таким чином 4-й параметр:

Один, або декілька неробочих періодів (downtimes)

Рядок запуску програми:

/home/fominvv/BuildTimeGraph/python main.py "1" "false" "11" "[[\"Pause\", 3, 5], [\"Pause\", 8, 9]]" "null" "null"

Де перший параметр 1 - Timestamp початку, 2 - false - не в годинах, третій - 11 - timestamp закінчення, 4-й параметр неробочі періоди, 5 та 6-й - null

Результат:

"[[\"Work\", 1, 3], [\"Pause\", 3, 5], [\"Work\", 5, 8], [\"Pause\", 8, 9], [\"Work\", 9, 11]]"

Одним проходом по цьому масиву легко побудувати time-graph на frontend HTML-сторінці, знайти початок першого робочого періоду (start), кінець останнього (deadline).

Далі, 5-й параметр:

Timestamp паузи

Перед запуском треба в іншому терміналі набрати наступне:

python -m http.server --cgi 8080

Увага

Тут програмісту незрозуміло, куди вставляти цю паузу? Він вставляв в попередній результат. Мабудь, треба передавати ще одним параметром.

Якщо пауза припадає на робочий період, то останній робочій період в кінцевому результаті (timegraph) має закінчуватися на цьому timestamp.

Тобто, 5-й параметр або 7, або 10

Рядок запуску програми:

/home/fominvv/BuildTimeGraph/python main.py "1" "false" "11" "null" "7" "null"

Результат:

[["Work", 1, 3], ["Pause", 3, 5], ["Work", 5, 7]]

Рядок запуску програми:

/home/fominvv/BuildTimeGraph/python main.py "1" "false" "11" "null" "10" "null"

Результат:

[["Work", 1, 3], ["Pause", 3, 5], ["Work", 5, 8], ["Pause", 8, 9], ["Work", 9, 10]]

Якщо пауза припадає на неробочий період, то останній робочій період в timegraph має бути той, який передував цьому неробочому періоду.

Рядок запуску програми:

/home/fominvv/BuildTimeGraph/python main.py "1" "false" "11" "null" "4" "null"

Результат:

[["Work", 1, 3], ["Pause", 3, 4]]

Далі, 6-й параметр:

Timestamp відновлення

Рядок запуску програми:

/home/fominvv/BuildTimeGraph/python main.py "1" "false" "11" "null" "null" "4"

Результат:

[["Work", 1, 3], ["Pause", 3, 4]]

Рядок запуску програми:

/home/fominvv/BuildTimeGraph/python main.py "1" "false" "11" "null" "null" "8"

Результат:

[["Work", 1, 3], ["Pause", 3, 5], ["Work", 5, 8], ["Pause", 8, 8]]

Увага

Перші три параметри обов’язкові. Що робить, коли нема 4, 5, та 6-го параметра?

Модулі

Модуль common

Модуль config

Модуль main