Кроссплатформенный Open Source Time Tracker


    В этой статье я хочу рассказать о том, зачем мне понадобился тайм-трекер, как я его искал, почему не нашел и что из этого всего в итоге получилось.

    Выбор трекера


    Почти всю свою карьеру я работаю фрилансером. Специфика деятельности такова, что все контракты с оплатой не почасовой, а за сделанную в установленный срок работу. В таких условиях привыкаешь работать когда есть настроение — главное уложиться в срок. То есть весь день не прикасаться к проекту, а на следующий день 16 часов безотрывно пахать как раб на галерах — обычное дело. Заказчикам это, как правило, безразлично. Работая в таком режиме, о тайм-трекере не задумываешься.

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

    Спустя пару месяцев с момента начала работы, стало очевидно, что мой обычный подход работает плохо. Когда перед тобой висит некий дедлайн, а факт оплаты привязан к сдаче работы — дополнительная мотивация не нужна, тем более что нарушение сроков может вылиться в солидную неустойку. В случае фиксированной оплаты дело обстоит иначе. Осознав это, я понял, что работаю неэффективно и вряд ли мой работодатель будет доволен, если я продолжу работать в том же темпе.

    В конце марта на хабре была опубликована статья Надзиратель для фрилансера: выбираем систему учета рабочего времени. Эта статья идеально совпала с моими размышлениями о повышении эффективности. Она посвящена в основном веб-инструментам и не подходит под мои задачи, но основная идея с учетом времени показалась мне серебряной пулей, которая позволит правильно распределить рабочее время и не подвести работодателя.

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

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

    Был сформирован список требований к трекеру:
    1. Никаких ручных таймеров. В мире, где пользователь постоянно переключается между разными задачами, отходит «покурить», отвечает любовнице в ICQ, точность ручных таймеров стремится к 0.
    2. Только Open Source. Считайте меня параноиком, но я не хочу, чтобы закрытое ПО отдавало информацию о моей активности на чужой сервер. Еще пару лет назад я бы не стал об этом даже задумываться и спокойно установил себе проприетарный трекер. Но последние тенденции в мире слежки научили меня двум вещам:
      • Если у компании есть данные — она будет их использовать.
      • Данные обязательно утекут или будут предоставлены по судебному запросу

      Очень не хочется, чтобы в один прекрасный день ко мне «пришли» с обвинениями в использовании какого-нибудь запрещенного bitcoin.
    3. Кросс-платформа. Как разработчик игр, я в основном работаю в Windows, но Linux и Mac OS X также сопровождают значительную часть моей активности. Тайм-трекер, который будет отслеживать активность только в одной из ОС, не будет давать полной картины.

    Автоматических кроссплатформенных трекеров существует две с половиной штуки. Open Source среди них я не нашел ни одного.

    Пишем свой


    Что же делать? Выбор очевиден — будем писать свой трекер.

    Основной алгоритм работы прост — программа висит в фоне и, при смене активного окна, запоминает на какое приложение переключился пользователь. Если в течение некоторого времени пользователь не нажимал никаких кнопок, не двигал мышь и окна не переключались — переходим в режим сна, скорректировав соответствующим образом последнюю запись (отнимем время, которое пользователь был неактивен).

    Было бы логично привязаться к переходу ПК в режим энергосбережения (отключение мониторов), но у многих этот режим отключен совсем или пауза слишком большая, так что полагаться на него нельзя.
    Кроме этого, очевидно, что для точности подсчета времени нужны профили. В зависимости от типа текущей деятельности разные приложения могут относиться к разным категориям. Например, я использую notepad++ как во фриланс-проектах, так и в своих собственных.

    Профили позволяют назначить приложение в разные категории. Соответственно, если активен профиль «свои проекты», то время использования notepad++ будет записано в одну категорию, а если активен профиль «фриланс» — в другую.

    Внешние трекеры


    И вот первая версия трекера написана и запущена. После нескольких дней активного тестирования оказывается, что текущей автоматизации недостаточно. На скриншоте в заголовке видно, что Хром съел 3 часа 50 минут и, в тоже время, категория Прокрастинация тоже заняла 3 часа 50 минут. Но на самом-то деле Хром используется также для доступа к багтрекеру, документации, stackoverflow. Но первая версия трекера не умела отличать эти действия и записывала всё в одну категорию. Одно из временных решений — использовать Хром для чтения хабра / почты / vk и т.п., а всю рабочую деятельность вести в Frirefox. Но привычка была слишком сильна и всё равно в итоге часть работы делалась по привычке в Хроме.

    Проблема усилилась при работе в виртуальной машине. Трекер, естественно, сам по себе не способен увидеть: что там творится внутри VBox и видит лишь активность VirtualBox.exe. Конечно, под виртуальными машинами в один момент времени велась деятельность только одного типа и проблему можно было решить переключением профилей. Но изначально очень хотелось уйти от ручного управления.

    В итоге родилось решение в виде внешних трекеров.

    Внешний трекер — это программа, которая запускается внутри недоступного для тайм-трекера окружения и передает оттуда информацию. Например, в случае виртуальной машины этот трекер ведет себя идентично тайм-трекеру, но не запоминает, что за приложения запущены, а по udp-каналу сообщает о них основному трекеру на 25855 порт.

    Формат сообщений получился достаточно простым:
    5 char — фиксированный заголовок. TYTET
    1 int - номер версии протокола. Сейчас 1.
    utf8 строка(1 int длина строки и далее массив char) — текущее состояние системы.

    Например, виртуальная машина просто отдает текущее приложение в видe chrome.exe, qtcreator.exe, explorer.exe. С браузером — чуть сложнее, так как сайтов — море, а в качестве состояния отдаются основные сайты, с которыми взаимодействует пользователь: habrahabr.ru, geektimes.ru, vk.com, gmail.com, google.com и т.п. Остальные же сайты уходят под общим статусом: undefined. То есть основные сайты определяются в соответствующие категории на уровне тайм-трекера, а undefined идут в отдельную категорию. Например, undefined у меня пишутся в Прокрастинацию, так как гораздо проще определить набор рабочих сайтов, чем миллионы мусорных, на которые попадаешь, читая очередную фигню.

    1 int — количество перекрываемых приложений
    utf8 — массив строк с именем каждого перекрываемого приложения

    Перекрываемые приложения — это список приложений, которые будут подменяться при наличии свежей (менее 10 секунд) информации с трекера. Например, трекер Хрома перекрывает два приложения:
    chrome.exe и Google-chrome-stable.

    Соответственно, если от него приходит текущий статус habrahabr.ru, то тайм-трекер во время активности в chrome.exe под виндой и Google-chrome-stable в линуксе будет писать в БД не Хром, а habrahabr.ru.
    1 unsigned char — контрольная сумма. Контрольная сумма считается простым сложением всех байт в пакете.

    Тайм-трекер в комбинации с внешними трекерами позволяет получить максимально корректную информацию о времени, проведенном за ПК.

    В принципе, ничего не мешает внешнему трекеру быть действительно внешним, например, андроид-телефоном. Это позволит учитывать активность и за пределами ПК. Но мне такой функционал не нужен, поэтому я его не реализовывал.

    Работа с трекером


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



    Незначительные функции:

    Настройки позволяют определить общие детали функционирования приложения.

    Профили позволяют, не открывая окон приложения, переключаться между активными профилями.

    И самое важное:

    Приложения — позволяют распределять приложения по категориям (приложения автоматически добавляются в список во время работы) и редактировать профили:



    Статистика — позволяет выдрать из БД информацию за указанную дату и нарисовать график и таблицу.



    С одной стороны — отображение статистики является важной частью тайм-трекера. Но я считаю, что само приложение трекера должно быть лишь простым поверхностным инструментом для анализа данных. Основное — это сбор. А красивые диаграммы можно и LibreCalc нарисовать на основе экспортированных CSV данных.

    Отдельно стоит обсудить работу с БД.

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

    Но процесс тестирования первой версии показал, что за полгода работы в трёх ОС с сотней приложений БД займет всего 1 мегабайт. 20 мегабайт за 10 лет. Не тот размер, о котором стоит беспокоиться. Зато код приложения упрощается, если держать БД одним куском.

    Так как держать отдельный файл для каждой ОС бессмысленно с точки зрения статистики, то для себя я сделал exFAT-раздел на 100 мегабайт, куда положил БД и теперь Windows / Linux / Mac OS X работают одним этим файлом. В итоге — общая статистика, доступная в одном месте.

    Идём в Open Source


    Прошло около 10 месяцев с тех пор как была написана первая версия приложения. Для себя я оценил приложение как весьма пригодное. По счастливой случайности январе вышла статья Почему и зачем писать open-source код?. И подумалось — а не опубликовать ли тайм-трекер на github, ведь задача подсчета времени весьма актуальна, а Open Source решений не так уж много.

    И вот, знакомство с github, переписывание приложения с учетом всех нюансов, накопленных за почти год использования и первая сборка лежит, готовая к скачиванию и созданию fork'ов.

    Let me speak from my heart
    Внезапно самым сложным при публикации Open Source-проекта оказалось плохое знание английского. В тот момент, когда стало понятно, что проект не имеет смысла без хотя бы минимальной документации и комментариев — возникло желание не публиковаться, чтобы не позориться… Потому что мой английский позволяет смотреть фильмы с субтитрами, читать документацию, понимать простую разговорную речь… Но писать осмысленные, граматически и орфографически чистые предложения — это мне не по зубам…

    И встал выбор:
    1. Ничего не публиковать вообще.
    2. Ограничиться односложными комментариями. Авось не догадаются, что я не знаю английского.
    3. Писать столько, сколько считаю нужным на плохом английском.

    Первый вариант показался неприемлемым. Проект видится полезным и публикация его важна. Думаю, несколько десятков пользователей для него найдется, так что жалко оставлять неопубликованным.
    Второй вариант не позволяет полноценно расписать важные моменты по работе с исходниками и самим приложением. Да и какова вероятность, что я смогу в коротких предложениях расписать всё правильно?

    В итоге остановился на третьем варианте. В конце концов это не экзамен по английскому и не книга, а ПО. Возможно серьезные косяки поправят более образованные товарищи, а может быть приложение сможет функционировать и с моими кривыми комментариями.

    Исходники доступны здесь:
    github.com/Allexin/TrackYourTime
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 95

      0
      В ICL habrahabr.ru/company/icl_services есть трекер, как мне кажется мини-шедевр в свое роде. С выгрузкой отчетов в Microsoft Project Server, отличной статистикой.

      Так что вы не одиноки в своем начинании.
        0
        А где его посмотреть можно?
          0
          Вот с этим проблемка — надо устроиться к ним на работу в Казани или Воронеже. )) Или попробовать спросить, зря что ли заводили блог корпоративный. Будет что написать.
          Но тут интересна сама идея, что десктопное приложение это своеобразный клиент к Project Server. И там видно сколько часов работал каждый инженер, по какому проекту, по какому клиенту, сколько провел на митингах, учебе, и т.д.

          Правда со стороны сотрудника это уже не так весело. Если из Outlook можно автоматически импортировать календарь, то вот остальные задачи надо заводить вручную, и не забывать нажимать на кнопочки Play и Stop, когда работаешь надо задачами.
            +4
            Честно говоря, немного не понимаю минусный дождь. Мысль которую я хочу донести, что проблема учета рабочего времени — довольно популярная. При этом мне пока не встречались настоящие адапты коммерческих систем онлайн трекинга. Все пилят свой велосипедик.

            Только практика подсказывает, что маловато скриншотить процессы и полагаться на автоматику. Трекинг хабра — это работа или развлечение? По делу читаем, или резвимся в комментариях?

            И на выходе мы должны получить какую-то полезную информацию, объективную, измеримую, на основании которой мы можем принять какое-то решение. Мы потратили на разработку сайта 100 часов и получили 1000$, а на мобильную игру — 60 часов и 1500$, значит мы или за сайты слишком мало денег берем, или надо бы больше игровых заказов брать, или повышать свою сайтописательность, или часть на атусорс отдавать.

            Вторая мысль, что отчетность, аналитика, может и в некоторых случаях даже будет лучше, если она дальше извлекается из профильного инструмента, например системы управления проектами. Так делают многие крупные компании. Для себя может не надо, но просто знайте, что при учете ресурсов, рабочего времени стараются использовать проектный подход. Не нравится Microsoft Project — есть OpenProject, хотя последний уж очень аскетичен.

            Как мне видится, зачастую прокрастинация — это недостаток планирования. Например, вы делаете веб проект, но ни на этапы не поделили, ни подзадачи не выделили, ни сроки выполнения — и получился не проект, а супчик такой. И мы с этим боремся, документируем сроки прокрастинации. Но есть и другие варианты.
              +11
              Очевидно, что минусы за «в некоторой компании есть супер приложение для проблемы, которую вы решаете, оно офигенное, только я вам его не покажу.»
                  0
                  У них есть такие приборы, и кое-что про них мы расскажем.
                  –1
                  Вы бесспорно правы с одной стороны. Хотел бы, но не могу, мопед-то не мой. Но вдруг ведущие корпоративный блог сами расскажут, до чего доросла их система.

                  С другой стороны, мне кажется было бы интересным, если бы в комментариях вдруг появились сотрудники HP/MS/1cloud и написали бы — да, мы тоже имеем свой велосипед. Конечно, код мы не можем отдать. Но в нем основная идея то, то, и то. Возьмите на заметку. Кругозор-то расширить оно никогда лишним не бывает.

                  Хотите еще расскажу про трекинг рабочего времени? В одной очень большой и распределенной компании, когда еще у них не было хороших каналов от центра до каждой точки присутствия тоже написали свой тайм-трекер. Он был в форме плагина к Outlook, и проделанную за день работу отправлял по «внутренней» корпоративной почте.

                  В этом был мой посыл.
                    0
                    Если Вы официальный партнер MS/HP, то кое-что Вы узнаете, не о потрохах продуктов, но об их свойствах. Используют эти компании свой софт, идущий на продажу. у этой фирмы нет партнеров, так это не название, а ТМ, и даже зная ИНН: 16601462300 / ОГРН 1101690062638, то мало, что понятно, но если Вы там работаете, то знаете откуда ноги. Просто сравнение ICL КПО ВС имеет в клиентах «Газпром» ICL-Services кучу контор с латинскими буквами в названии, знающему политику «Гапрома» все понятно.
                    0
                    В тихушку скажу — навряд ли оно такое офиненное. Создавала небольшая закрытая группа. Это .Net. Обычно не на продажу делается кустарщина.
                      0
                      Не в бровь, а в глаз, я уже заметил что оно — отстой, это тоже правда, проверить все равно нельбзя.
                      0
                      Есть одно «но». В реальном бизнесе нужно отслеживать другую активность. Поэтому ПО для отслеживания CRM или телефонной активности — навалом и реальный бизнес его берет. Увы, с точки зрения «гениальности» телемаркетор или продавец активных продаж — робот, и чем больше, тем лучше. К роботу нужен датчик только и всего.
                        0
                        Минусы наверное были от сотрудников компании, которые используют этот ТТТ. На самом деле это не то что шедевр, хотя нет, это именно что «шедевр». Ужасная утилита с ужасным юзабилити, причем на всех концах, и со стороны сотрудника, который его заполняет и со стороны менеджера, который просматривает статистику.
                        Про интеграцию с Outlook тоже не совсем правда — были самописные скрипты, которые реализовывали импорт из Outlook, из коробки все это либо не работает вообще либо работает из рук вон плохо. В общем не все так солнечно, как идея, такой подход хорош, а вот его реализация даже не плоха — отвратительна (я не имею ввиду утилиту тс).
                          0
                          Смотрел на нее с обеих сторон, и остался вполне удовлетворен. С учетом числа проектов, инженеров, разнообразия задач результат мне показался вполне достойным.

                          И главное — можно довольно точно понять чем занимаются все эти бесчисленные инженеры, часть из которых, как оказывается и вовсе ничем не занята.
                            +1
                            Вот именно, что смотрели, а не использовали. Когда начинаешь использовать этот «шедевр» каждый день, начинаешь тихо закипать.
                            Интерфейс неудобный, функционал нулевой, время отнимает…
                            По большей части трекинг происходит следующим образом — когда приходит напоминание о необходимости заполнения, достается файл, в которым ты отмечал свою активность или делается выгрузка из тикитной системы (так как это удобнее и проще) и начинается заполнение «задним числом» c подгонкой времени. Заполнять это по факту — мука. У ТСа гораздо лучше реализован принцип трекинга по процессу, в силу специфики работы можно добавить возможность одним кликом создать таск из письма и стартовать его, автоматическое заведение тасков из пришедших инцидентов и завершение по закрытию инцидента.
                        0
                        Блог заведен для рекламы. Идея малофонкциональна по двум причинам. 1. Это очень дорогой продукт, MS Projectecr Server. 2. Основная идея никак не связана с топиком — это всего лишь электронный колпак.
                        Да и называть «шедевром» никому не видимый продукт, согласитесь, странно. Я говорю «это о полный отстой» и прав как и Вы. Проверить все равно нельзя.
                    0
                    А вы уверены, что почасовая ставка, предложенная работодателем, расчитана на столь скрупулёзный учёт времени? Вполне возможно, рабодатель не расчитывает на то, что вы будете сами вычитать время, потраченное на прокрастинацию.
                      +4
                      С работодателем никак не обговаривался учет времени. И в договоре не фигурирует почасовая оплата. Оплата каждый месяц с учетом 8 часового рабочего времени. Инструмент создавался чисто для себя.
                      ИМХО инструмент совершенно не пригоден для контроля со стороны работодателя, ка краз из-за излишней детализации. Это инструмент для разработчиков, которые хотят чуть получше контролировать своё время и понимать — куда оно делось.

                      P.S>
                      Я согласен с вами насчет «добровольного рабства». Собственно, если бы работодатель предложил мне как быто нибыло контролировать мое время и вести отчеты на эту тему — я бы не согласился.
                      +6
                      Это просто инструмент для поддержания внутренней дисциплины.
                      Также и всякие домашние бухгалтерии люди пишут не для последующего доклада в налоговые органы.
                        0
                        Свою веб бухгалтерию я на asp.net mvc вечерами писал где-то с год, с нуля без знаний web-программирования как таковых (скрипты на powershell/perl/bash не считаю). Запустил, работает.

                        А вот чтобы написать домашнюю бухгалтерию с реалиями сдачи налоговой отчётности — у меня пару месячных зарплат уйдут только на юристов/бухгалтеров/налоговиков, и это без учёта тех, кого придётся привлекать, потому как объёмы кода там будут несопоставимы.
                          0
                          у меня пару месячных зарплат уйдут

                          Не-а. Для УСН самообразования хватит. Только Вам не скучно будет читать кучу нормативов, они скучные до нельзя, как и тетки из налоговой.
                          0
                          Хорошая идея инструмента, и что самое важное для меня — опыт, полученный во время написания таких проектов
                        +3
                        Кажется https://github.com/gurgeh/selfspy вам мог помочь
                          +1
                          Первая идея, которая пришла мне в голову после прочтения: было бы круто добавить функцию учёта активных вкладок браузера, а также контактов в Skype. Так как и там и там есть набор личных и рабочих вкладок/контактов.
                            0
                            Есть поддержка внешних трэкеров.
                            Приложение открывает UDP-порт на 25855 и ждет информацию от внешних трэкеров.
                            Для виртуальной машины я уже сделал такое приложение, правда еще не допилил, поэтому не выложил исходники и бинарники.
                            Для браузеров и скайпа тоже можно сделать, но я в ближайшее время этого сделать не смогу, потому что не знаком с особенностями написания софта под них.
                              0
                              ИМХО, гораздо проще читать заголовок активного окна и просто пропускать его через задаваемые пользователем regexp'ы. Это покроет большинство потребностей пользователя.
                                0
                                Рассматривал этот вариант. Не понравился. Тем более что очень часто заголовок анализу не поддается или вообще никакой полезной инфы не содержит.
                                  0
                                  тут проще extension изготовить. Например, можно начать с этого: stackoverflow.com/questions/25625109/chrome-extension-get-the-current-domain-on-every-tab-change
                                    +1
                                    Именно так. У меня такое работает в тестовом режиме. Но публиковать пока не готов.
                                      +3
                                      Публикуйте в любом виде, пожалуйста!!! Браузер сегодня — это основной инструмент для многих (stackoverflow, например). А допилить поможем!
                                        0
                                        В новой версии эта функциональность реализована и опубликована.
                                  0
                                  Можно с помощью w2v обучить фразы относящиеся к развлечениям и работе.
                              0
                              А бинарников для Windows нет? Для тех, кто не пишет на сях, установка компилятора/среды, установка Qt, пляски с бубном во время сборки — однозначно прокрастинация. Как ее учитывать? Рекурсия-с!
                                +4
                                Есть конечно же. Только они не в репозитории, а в разделе Релиз.
                                Я уже осознал свою ошибку, люди не пользующиеся github не знаю про раздел «Релизы» и ищут бинарники в исходниках.
                                Добавил ссылку внутри репозитория на релизы.
                                Вот такую:
                                github.com/Allexin/TrackYourTime/releases
                                  0
                                  Ну вот, там под 32 бита нет. А было б — наверняка под XP не завелось бы… Грусть-тоска.
                                    +1
                                    Эти 32 на самом деле.
                                    А под XP действительно не завелось. Работаю над этим.
                                    +1
                                    У Вас на заглавной страничке(readme.md) можно указать «How to install» и в этом разделе поместить все необходимое
                                      +1
                                      Да, это единственно верное решение. В голову не пришло так сразу сделать. Хотя проекты на которые я смотрел как раз так и делают.
                                        +1
                                        Выкладывать готовые, собранные бинари в репозиторий очень глупая затея. То где сейчас в 'Releases' это верное. Это же общепринятая практика, когда на страничке проекта есть вкладка «Downloads»
                                  0
                                  del. Не посмотрел в корень.
                                    0
                                    Да. Qt. Проект настроен на сборку под MSVC 2013. Под MinGW не настраивал — там есть особенности и я пока не тратил время, чтобы с ними разобраться. В основном потому, что чуть больше размер дистрибутива получается из-за MinGW либ.
                                      0
                                      Очень полезный инструмент, мне пригодится — как раз работаю удаленно по часам, бывает полезно самого себя контроллировать. Спасибо.
                                    0
                                    А репозиторий Ваш работает. Да, выглядит все кустарно, но это пока. Просто со мной шутка злее два варианта SalesPlatform . Стесняюсь у разработчиков спросить, почему их репозиторий пустой. Напоминает dockerhub и оригинальный vTigerCRM — сборки сугубо типа «example», к эксплуатации не годные. Но ладно, это способ зарабатывания денег (внедрение), у кого надо — свои сборки в закрытых репозиториях. Но как авторы у себя на гитхабе хостят по принципу — «все там и мы тоже». Залили допотопную ветку и забыли.
                                    Вообще муть — на сайте вообще нет бесплатного варианта, но покопаться он оттуда же и скачивается.
                                      0
                                      Ничего удобнее RescueTime не встречал. Жаль, конечно, что не OpenSource.
                                        0
                                        Не смог найти как ей указать какие приложения у меня для работы, какие для отдыха. И список сайтов нужных в браузере тоже. Как она собралась без этого учитывать мое время не понятно.
                                          0
                                          Для начала открываем приложение. Потом заходим на сайт в раздел Reports -> Applications & Websites. Находим наше приложение и сопоставляем его с какой-то категорией, выставляем тип продуктивности. Profit.
                                            0
                                            Пример выше описывает сценарий, когда в конкретный день нужно изменить категорию/продуктивность для приложения. Чтобы изменения применялись всегда, нужно открыть Tools -> Categorize Activities. Тут отображаются все приложения, которые уже сопоставлены с каким-то видом активности. Вообще, новые приложения иногда самостоятельно каталогизируются (предложенную категорию и тип продуктивности можно поменять) на основании категорий выбранных другими пользователями RescueTime. Не забудьте так же заглянуть в раздел categorize your common activities — туда попадают новые приложения, которые не удалось каталогизировать автоматически.
                                              0
                                              Я туповат наверно, абсолютно все сложно, неудобно, непонятно.
                                                0
                                                Можно поинтересоваться, чем Вы пользуетесь?
                                                  0
                                                  Стыдно признаваться, но как бы вот http://motivateclock.org/.
                                            0
                                            Скука какая. Никогда ежесекундно не использовал аналитику с этого сайта. А что мешает собрать статистику за неделю или две и скорректировать принадлежность к той или иной категории? Думаю, это проще, чем искать как что-то занести в какой-то там список.
                                              0
                                              У меня приложений в которых я работаю, ну десяток, это если максимум, обычно два :). В разных проектах, это разные приложения. + определенные сайты, какие то для работы, какие то нет. Вспоминай потом через неделю, что было и зачем.
                                                0
                                                Раз в неделю приходит отчет с RT, он содержит круговую диаграмму и список самых посещаемых сайтов и используемого ПО. Так вот, в этом списке отражена доля записей, которые автоматически не удалось привязать к какому-либо типу, в таком случае, можно перейти по ссылке в письме и откорректировать. За неделю то вспомнить сможешь :) Если я с какой-то программой за неделю поработал пол часа или час, все равно легко вспоминается.

                                                Минусы у RT тоже есть, так что не призываю конкретно к этому варианту, просто решил поделиться своим решением подобной проблемы.
                                          0
                                          Под OS X 10.11.2 не запускается. Рискну предположить, что из-за SIP.
                                            0
                                            10.11.3, аналогично(
                                              0
                                              SIP не должен мешать. Приложение не делает ничего что попадало бы под его контроль.
                                              Скорее всего macdeploy не все зависимости добавил в бандл. А проверить я толком не могу, потому что у меня то окружение со всеми зависимостями уже.
                                              0
                                              Ветка превратилась в подобие трекера, поэтому предложение:
                                              Идете на gitter.im, регитесь с эккаунта github и создаете chatroom (кнопка Create посередине, там #channel), шарите, Вам предложат варианты обычный урл и бэйдж в README.md возьмите второй и суньте ссылку в свой README.md (сверху где-нибудь) и будет у вас прямо в README.md ссылка на Вашу конмнатку виде картинки image.
                                              Вообще про подобные украшения спросите google про github badges. Там чего только нет, хоть пожертвования собирай.
                                                0
                                                В догонку, если будет только урл, то вставка в README.md такого вида:

                                                [![Join the chat at gitter.im/your-name/your-room](https://badges.gitter.im/your-name/your-room.svg)](https://gitter.im/your-name/your-room?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

                                                your-name на github,gitter
                                                your-room — что Вы там выдумали.
                                                  0
                                                  Великолепная штука для оценки времени рутинной части работы.
                                                  К сожалению так не учтешь сколько времени потрачено на обдумывание способов решения проблемы во время велосипедной прогулки, просто расхоживая по квартире, а так же делая наброски на бумажках или доске
                                                    +1
                                                    А что за приложение ArchiFuck.exe (на первом скриншоте пятое снизу)?
                                                      +1
                                                      Несколько месяцев назад мне пробовали троянчика подкинуть. Никуда из песочницы он вылезти не смог, но след в трэкере оставил. :) Я как-то пропустил матерщину на скриншоте, вылетел из головы этот случай. Сейчас исправлю скриншот.
                                                      0
                                                      Конструктив:
                                                      — было бы полезно для некоторых приложений устанавливать таймаут индивидуально;
                                                      — Браузеры было бы полезно учитывать по контенту, т.е. какие-то сайты добавлять, которые являются работой, какие-то 100% прокрастинацией;
                                                      + удобную штуку (плагин) к браузеру, котрой можно быстро отметить домен в какую-то категорию.

                                                      Очень понравилась простота, никаких тебе настроек, просто запустил и работает почти сразу, что очень большой плюс.
                                                      Удачи в развитии!
                                                        0
                                                        Подброшу ещё проект по теме: arbtt.nomeata.de.

                                                        Очень гибкая штука, можно скриптовать свои правила. Работает под Windows + Linux.
                                                          0
                                                          Под Mac пользуюсь трекером Timing. Трекер простейший, однако позволяет разбить по категориям сайты, пути в консоли, контакты в скайпе, открытые файлы в WebStorm, открытые базы в менеджере БД. Таким образом я могу учитывать даже время общения с заказчиком, или посчитать время работы над каждым проектом отдельно.
                                                          Я это к тому, что раз у кого-то это получилось, значит, это как-то можно сделать, без всяких надстроек над браузерами и т.д. А учет времени только по названию программы точен быть не может.
                                                            0
                                                            Трекер простейший

                                                            Это вы на основе чего такой вывод сделали?
                                                              0
                                                              Я им пользуюсь уже давным-давно, и покупал, если мне не изменяет память, за 1 доллар. В то время из-за отсутствия синхронизации я записал этот трекер в разряд простейших. Конечно, трекер мощный и удобный, но для меня он остается родным и простым :).
                                                              Чтобы случайно не начался спор, предлагаю считать его простейшим в плане юзабилити :)
                                                                0
                                                                Понятно.
                                                                Просто с точки зрения сбора данных: там, видимо, огромная база приложений с алгоритмами расписанными как каждое из них анализировать.
                                                                Это не реально сделать для беслпатного продукта, потому что приложения появляются быстрее чем можно себе позволить добавлять их поддержку.
                                                                  0
                                                                  Не знал про базу, думал, что есть какие-то универсальные способы.
                                                                  Но все равно, если выделите определение приложения в какие-то отдельные файлы/модули, то уверен что кто-то поддержит и поможет добавить обработку самых нужных приложений.
                                                                    0
                                                                    Я тоже «не знаю» про базу, но не вижу универсального способа анализировать активность внутри приложений. Как минимум regexp для анализа заголовка каждого отдельного приложения.
                                                                      0
                                                                      Кстати да, вот сейчас посмотрел, как трекается программа Sequel Pro (для работы с Mysql): в трекинге как раз отображается то, что в заголовке окна программы. Причем не совсем корректно составляется дерево активности. Но тем не менее, это позволяет выделить работу с разными базами в разные проекты.
                                                                    0
                                                                    Думаю что база там не большая. Доступ к информации об открытых файлах или url-адресах программа получает с помощью AppleScript. В случае с файлами это стандартные методы. А вот для получения url скрипт прописан для каждого браузера. Для всех остальных берется заголовок активного окна.
                                                                    Вот чего не хватает в Timing так это возможности самостоятельно прописывать путь к файлам/урлам в AppleScript.
                                                              0
                                                              Но на самом-то деле Хром используется также для доступа к багтрекеру, документации, stackoverflow. Но первая версия трекера не умела отличать эти действия и записывала всё в одну категорию. Одно из временных решений — использовать Хром для чтения хабра / почты / vk и т.п., а всю рабочую деятельность вести в Frirefox. Но привычка была слишком сильна и всё равно в итоге часть работы делалась по привычке в Хроме.

                                                              Так как была решена эта проблема? Я установил, запустил, а в отчётах только сам браузер без возможности разделить что эти сайты смотрю по работе, а это я во вконтактике сижу.
                                                                +1
                                                                Решена. Тестирую сейчас и допиливаю до приемлемого уровня. В паблике этого функционала пока нет.
                                                                  0
                                                                  С нетерпением жду.
                                                                    0
                                                                    Данные функции есть в девелоп бранче. Можете попробовать собрать самостоятельно. Ну либо подождите недельку, я соберу следующую версию со всеми этими функциями.
                                                                    Функция сбора информации из браузера будет достаточно ограничена. Точнее — будет только сборк текущего домена и передача его в ПО. Никаких удобных кнопочек для назначения категорий в реальном времени прямо в браузере не будет, потому что я не веб программист. Может быть если появится веб программист желающий допилить расширение для браузера это и изменится. Но не в ближайший релиз точно.
                                                                      0
                                                                      Ну у меня QtCreator не стоит. Подожду недельку, посмотрю в гите. Спасибо. А по поводу домена — мне этого вполне достаточно.
                                                                        +1
                                                                        В новой версии эта функциональность реализована и опубликована.
                                                                          0
                                                                          Отлично, уже использую. Не расскажете подробнее, в чем проблема с выкладываением в store? Гугл не разрешает отдавать URL в сторониие приложения?
                                                                          У меня еще осталось пожелание с portability функйионалом — если приложение обнаруживает setting.conf в рабочей директории, есть смысл попытаться оттуда же притянуть db.bin, так как если приложение работает с флешки, то ее адрес периодически изменяется. Насколько я понял относительный путь в STORAGE_FILENAME поддерживается, поэтому я просто прописал там db.bin и это работает автоматически. Возможно просто стоит по умолчанию при первом запуске прописывать в STORAGE_FILENAME=db.bin ?
                                                                            0
                                                                            Со стором очень простая заморочка: в целях оптимизации, чтобы какое нибудь кривое расширение не убило производительность хрома — у него запрещены таймеры с точностью менее минуты.
                                                                            Это ограничение отсутствует в режиме разработчика.
                                                                            Сами понимаете, если расширение будет слать информацию о сайте с частотой раз в минуту — от него не будет смысла. :)
                                                                            Вероятно есть способы сделать это всё правильно. Но я не специалист по расширениям для хрома и вообще с веб программированием не дружу.
                                                                            По поводу прописывания относительного пути — считаю это лишнее. Если пользователь настраивает портабельную версию ему не будет проблемой прописать относительный путь до БД. Лишние условия в коде, какой путь и когда выбирать — усложнят код, но по факту никакого особого смысла не имеют, потому что пользователь все равно пойдет в настройки и проведет настройку как ему надо, в том числе указав путь до БД.
                                                                              0
                                                                              А… А почему я не нашел поддержку браузера?
                                                                                0
                                                                                Уже нашел. Я просто ожидал список страниц в вики на главной, а не сбоку. Спасибо.
                                                                  0
                                                                  Никаких ручных таймеров. В мире, где пользователь постоянно переключается между разными задачами, отходит «покурить», отвечает любовнице в ICQ, точность ручных таймеров стремится к 0.

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

                                                                  В общем и целом получилось: gitlab.com/hatreds-tools/task-timer

                                                                  собираешь (бинарники для винды могу дать, под Linux главное dev пакеты для Qt4 поставить), запускаешь, висит в трее, заводишь таски — начал заниматься кликнул по ней. Если долго отсутствовал — предложит скорректировать время задачи (время реакции оценивается по времени бездействия пользователя за компьютером и задаётся в настройках), на что можно согласиться или нет. Да и вообще, как показывает моя практика, для учёта достаточно точности до 30 минут и кто рапортует, что работал больше 30-35 (плюс-минус) часов в неделю и так круглый год, тот лукавит :)
                                                                    0
                                                                    Ну так то и таймер не нужен. :) с 9 до 18 рабочее время, что тут считать.
                                                                    задача то как раз в том, чтобы посчитать что внутри этих 9 часов.
                                                                      0
                                                                      Нужна раскладка по задачам. Что бы потом можно было оринетироваться, типа «на изучение спеков нового чипа, ориентировочно столько часов», «на устранение такого рода проблем — столько часов» ну и так далее. Т.е. у меня в трекере, допустим, десяток задач, нужно понимать, но что ушло время и в каких соотношениях. Собственно эти задачи в трекере и висят и между ними происходит переключение как в шахматных часах.
                                                                    0
                                                                    Пробовал ли автор Hamster Time Tracker?
                                                                    Подробнее о Hamster
                                                                    1. OpenSource, Python, QT;
                                                                    2. есть в стандартных Debian based дистрибутивах GNU/Linux в стандартном репе (sudo apt-get install hamster-applet);
                                                                    3. хоткеи для переключения активности;
                                                                    4. некое подобие отчётов;
                                                                    5. есть возможность переключения активности при переходе на альтернативный Workspace;
                                                                    6. есть hamster-cli свой консольный интерфейс для расширения функциональности или просто для доступа из консольного интерфейса;

                                                                      0
                                                                      Он разве кроссплатформенный?
                                                                      Я натыкался на него в процессе поисков, но не увидел нигде намека на кроссплатформу и поэтому не изучал глубоко.
                                                                        0
                                                                        <зануда>QT — Quick Time?</зануда> А если серьёзно, то где вы его увидели:
                                                                        Hamster is written in PyGTK, using SQLite for data storage.
                                                                        ?
                                                                        0
                                                                        Теоретически — да, т.к. Python, но практически — весьма сложно, т.к. зависит от множества библиотек которые прийдётся перетащить в чужеродную среду, среди которых D-BUS. Работать оно возможно даже будет, но вопрос — какой ценой и надо ли оно. И я ошибся. Он использует не QT, а GTK2.
                                                                          0
                                                                          AlexIn пожалуйста прямо на гитхабе, настройте чат, форум, вики, ну неудобно все тут отписывать — длинная простыня (да там почти везде англ интерфейс, ну делов то, а пиcать можно и по-русски или прямо на c++). Нужна помощь — обращайтесь.
                                                                            0
                                                                            Много лет работал на почасовой основе, за это время перепробовал различные варианты и сложилось такое мнение:
                                                                            • автоматические трекеры более точно считают время, но далеко не всегда поймешь к чему его отнести (скайп, например используется и в работе и для общения с родственниками… про браузер вообще молчу);
                                                                            • ручные трекеры дают более точную картину того над чем занимался, не только над каким проектом но и какой задачей, но бывает забываешь про него (что обидно, частенько забываешь запустить трекер именно в ходе самых продолжительной и продуктивной работы — в это время и про еду можно забыть, что уж говорить о кнопке «Старт» в трекере?);


                                                                            В целом, второй вариант выглядит все-таки предпочтительнее, если вы хотите получить более ясную картину о том, куда ушло время (а не только работал в это в время или в игрушки играл), плюс прививает рабочую дисциплину. НО! Автоматический трекер мог бы стать больши подспорьем в случаях, когда в пылу работы «про все забыли», или когда забыл поставить на паузу задачу когда отошел от компа или тебе позвонил родственник в скайп.

                                                                            В общем, мне видится полезным объединить два типа трекеров в один. Впрочем, можно использовать ваши данные, загружая из в свой «ручной» трекер… надо будет эту мысль обдумать. Спасибо за софт!
                                                                              0
                                                                              Плагинчики просто нужны внутри софта, чтобы было понятно что делало в том же скайпе.
                                                                              По поводу ручного режима — для этого есть профили.
                                                                              Пожалуй единственное что мешает их использовать как «задачи» — отсутствие возможности перенести профиль в архив не удаляя его. Это в планах, но не приоритет.
                                                                              0
                                                                              В своё время я использовал taskcoach.org. Он opensource.
                                                                                0
                                                                                Он не автоматический.
                                                                                  0
                                                                                  Ну так opensource же, вы могли бы заточить его под себя (не знаю конечно насколько это было бы легко).

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

                                                                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                              Самое читаемое