Використання¶
Будь-яка програма на мові 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 |
Вхідні дані:¶
Існують два типа відрізка:
Робочий - позначається «Work».
Неробочий - позначається «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-го параметра?