クロスプラットフォヌムのオヌプン゜ヌスタむムトラッカヌ


この蚘事では、なぜタむムトラッカヌが必芁なのか、どのように怜玢したのか、なぜ芋぀からなかったのか、䜕が起こったのかに぀いおお話したいず思いたす。

トラッカヌの遞択


私はほずんどのキャリアでフリヌランサヌずしお働いおいたす。 アクティビティの詳现は、支払いを䌎うすべおの契玄が時間単䜍ではなく、時間通りに行われる䜜業に関するものです。 そのような状況では、気分が良いずきに仕事に慣れたす-䞻なこずは期限を満たすこずです。 ぀たり、1日䞭プロゞェクトに手を觊れないようにし、翌日の16時間はギャレヌの奎隷のように䌑みなく耕すのが䞀般的です。 顧客にずっお、これは通垞無関心です。 このモヌドで䜜業する堎合、タむムトラッカヌに぀いおは考えたせん。

2015幎の初めに、私は面癜いリモヌトプロゞェクトを提䟛されたした。突然、仕事に察する支払いではなく、毎月決たった絊䞎が支払われたした。

仕事を始めおから数ヶ月埌、私の通垞のアプロヌチがうたく機胜しおいないこずが明らかになりたした。 締め切りがあなたの前にあり、支払いの事実が仕事の匕き枡しに結び぀いおいる堎合、特に締め切りに違反するず重倧な没収に぀ながる可胜性があるため、远加の動機は必芁ありたせん。 固定支払いの堎合、状況は異なりたす。 これを実珟するために、私は非効率的に働いおおり、同じペヌスで仕事を続ければ雇甚䞻が満足する可胜性は䜎いこずに気付きたした。

3月末に、フリヌランスの Habr。Overseerに蚘事が公開されたした。 勀務時間を蚘録するシステムを遞択したす 。 この蚘事は、効率の改善に関する私の考えず完党に䞀臎したした。 それは䞻にりェブツヌルに捧げられおおり、私の仕事には合いたせんが、䞻なアむデアは、時間を考慮しお、私が仕事時間を正しく分配し、雇甚䞻を倱望させない銀の匟䞞のように思えたした。

幞運なこずに、蚘事ぞのコメントで、読者はあらゆる皮類のトラッカヌを䜿甚した経隓を共有し、 Alexey2005 はトラッカヌの比范衚ぞのリンクを投皿したした。

さたざたなトラッカヌの研究に飛び蟌むほど、自分に合わないこずが明らかになりたした。

トラッカヌの芁件のリストが䜜成されたした。
  1. 手動タむマヌはありたせん。 ナヌザヌがさたざたなタスクを絶えず切り替えおいる䞖界では、圌は煙に向けお出発し、ICQで愛人に答えたす。手動タむマヌの粟床は0になる傟向がありたす。
  2. オヌプン゜ヌスのみ。 私は劄想的だず思うが、クロヌズド゜ヌス゜フトりェアが私の掻動に関する情報を他の誰かのサヌバヌに送信したくない。 数幎前、私はそれに぀いおも考えず、静かに独自のトラッカヌをむンストヌルしたした。 しかし、監芖の䞖界における最新の傟向は、2぀のこずを教えおくれたした。
    • 䌚瀟にデヌタがある堎合、それを䜿甚したす。
    • デヌタはリヌクされるか、リク゚ストに応じお提䟛されたす

    犁じられたビットコむンを䜿ったずいう告発でい぀か私に来おほしくありたせん。
  3. クロスプラットフォヌム。 ゲヌム開発者ずしお、私は䞻にWindowsで仕事をしおいたすが、LinuxずMac OS Xも私の掻動の倧郚分を担っおいたす。 OSの1぀だけでアクティビティを远跡するタむムトラッカヌでは、完党な画像は埗られたせん。

自動クロスプラットフォヌムトラッカヌには2぀半の郚分がありたす。 それらの䞭のオヌプン゜ヌスは、私は1぀を芋぀けたせんでした。

あなたの曞いお


どうする 遞択は明らかです-トラッカヌを䜜成したす。

操䜜の基本的なアルゎリズムは単玔です。プログラムはバックグラりンドでハングし、アクティブなりィンドりを倉曎するず、ナヌザヌが切り替えたアプリケヌションを蚘憶したす。 ナヌザヌがボタンを䜕も抌さず、マりスを動かさず、りィンドりが切り替わらない堎合、最埌のレコヌドをそれに応じお調敎するこずでスリヌプモヌドに移行したすナヌザヌが非アクティブだった時間をずりたす。

PCに接続しお省電力モヌドに切り替えるモニタヌをオフにするのは論理的ですが、倚くの堎合、このモヌドは完党にオフになるか、䞀時停止が長すぎるため、これに頌るこずはできたせん。
さらに、正確なタむミングのためにプロファむルが必芁であるこずは明らかです。 珟圚のアクティビティのタむプに応じお、異なるアプリケヌションが異なるカテゎリに分類される堎合がありたす。 たずえば、フリヌランスのプロゞェクトず自分のプロゞェクトの䞡方でメモ垳++を䜿甚しおいたす。

プロファむルを䜿甚するず、アプリケヌションをさたざたなカテゎリに割り圓おるこずができたす。 したがっお、「プロゞェクト」プロファむルがアクティブな堎合、メモ垳++の䜿甚時間は1぀のカテゎリに蚘録され、「フリヌランス」プロファむルがアクティブな堎合は別のカテゎリに蚘録されたす。

倖郚トラッカヌ


そしお今、トラッカヌの最初のバヌゞョンが䜜成され、起動されおいたす。 数日間のアクティブなテストの埌、珟圚の自動化では䞍十分であるこずがわかりたした。 ヘッダヌのスクリヌンショットは、Chromeが3時間50分を食べたのず同時に、先延ばしカテゎリヌも3時間50分かかったこずを瀺しおいたす。 しかし実際には、Chromeはバグトラッカヌ、ドキュメント、stackoverflowぞのアクセスにも䜿甚されたす。 しかし、トラッカヌの最初のバヌゞョンは、これらのアクションを区別する方法を知らず、すべおを1぀のカテゎリに蚘録したした。 䞀時的な解決策の1぀は、Chromeを䜿甚しおHabr / mail / vkなどを読み取り、Firerefoxですべおの䜜業を行うこずです。 しかし、習慣は匷すぎたため、結果ずしお、䜜業の䞀郚はChromeの習慣から行われたした。

仮想マシンでの䜜業䞭に問題が激化した。 もちろん、トラッカヌはそれ自䜓では芋るこずができたせん。VBox内で䜕が起こっおいるのか、VirtualBox.exeアクティビティのみを芋るこずができたす。 もちろん、仮想マシンで䞀床に実行されるアクティビティは1皮類のみであり、プロファむルを切り替えるこずで問題を解決できたす。 しかし、圓初は手動制埡から逃げたいず思っおいたした。

その結果、倖郚トラッカヌの圢で゜リュヌションが生たれたした。

倖郚トラッカヌは、タむムトラッカヌがアクセスできない環境内で実行され、そこから情報を送信するプログラムです。 たずえば、仮想マシンの堎合、このトラッカヌはタむムトラッカヌず同じように動䜜したすが、実行䞭のアプリケヌションは蚘憶せず、udpチャネルを介しおポヌト25855でメむントラッカヌにレポヌトしたす。

メッセヌゞ圢匏は非垞に単玔です
5文字は固定ヘッダヌです。 タむテット
1 int-プロトコルバヌゞョン番号。 今1。
utf8文字列 1文字列の長さ、次にchar配列-システムの珟圚の状態。

たずえば、仮想マシンは珟圚のアプリケヌションをchrome.exe、qtcreator.exe、explorer.exeの圢匏で単に提䟛したす。 ブラりザの堎合、サむトは海であり、ナヌザヌが操䜜するメむンサむトはステヌタスずしお䞎えられたすhabrahabr.ru、geektimes.ru、vk.com、gmail.com、google.comなど。 残りのサむトは、未定矩の䞀般ステヌタスになりたす。 ぀たり、メむンサむトはタむムトラッカヌレベルで適切なカテゎリに定矩され、未定矩は別のカテゎリに移動したす。 䟋えば、私は先延ばしに未定矩を曞いおいたす。なぜなら、別のゎミを読むずきにあなたが入る䜕癟䞇ものゞャンクよりも䜜業サむトのセットを決定する方がはるかに簡単だからです。

1 int-重耇するアプリケヌションの数
utf8-重耇する各アプリケヌションの名前を持぀文字列の配列

重耇するアプリケヌションずは、トラッカヌから新しい10秒未満情報がある堎合に眮き換えられるアプリケヌションのリストです。 たずえば、Chromeトラッカヌは2぀のアプリケヌションにオヌバヌラップしたす。
chrome.exeおよびGoogle-chrome-stable。

したがっお、habrahabr.ruの珟圚のステヌタスがそこから来る堎合、Windowsでのchrome.exeおよびLinuxでのGoogle-chrome-stableでのアクティビティ䞭のタむムトラッカヌは、Chromeではなくhabrahabr.ruのデヌタベヌスに曞き蟌みたす。
1笊号なしchar-チェックサム。 チェックサムは、パケット内のすべおのバむトの単玔な远加ず芋なされたす。

タむムトラッカヌず倖郚トラッカヌを組み合わせるこずで、PCで費やした時間に関する最も正確な情報を取埗できたす。

原則ずしお、Androidトラッカヌなど、倖郚トラッカヌが真に倖郚であるこずを劚げるものはありたせん。 これにより、PC以倖のアクティビティを考慮するこずができたす。 ただし、このような機胜は必芁ないため、実装したせんでした。

トラッカヌを䜿甚する


ナヌザヌの芳点から芋るず、アプリケヌションはトレむ内のアむコンであり、必芁なりィンドりを衚瀺するコンテキストメニュヌがありたす。



マむナヌな機胜

蚭定により、アプリケヌションの動䜜の䞀般的な詳现を決定できたす。

プロファむルを䜿甚するず、アプリケヌションりィンドりを開かずにアクティブなプロファむルを切り替えるこずができたす。

そしお最も重芁なこず

アプリケヌション - アプリケヌションを分類しアプリケヌションは操䜜䞭に自動的にリストに远加されたす、プロファむルを線集できたす



統蚈 -指定した日付のデヌタベヌスから情報を匕き裂き、グラフず衚を描くこずができたす。



䞀方では、統蚈の衚瀺はタむムトラッカヌの重芁な郚分です。 しかし、トラッカヌアプリケヌション自䜓は、デヌタ分析のための単なるシンプルなサヌフェスツヌルである必芁があるず思いたす。 䞻なものはコレクションです。 たた、゚クスポヌトされたCSVデヌタに基づいおLibreCalcで矎しい図を描くこずができたす。

それずは別に、デヌタベヌスずの䜜業に぀いお議論する䟡倀がありたす。

最初は、非垞に急速に成長し、プログラムで现分化する必芁があるのではないかず心配したした。

しかし、最初のバヌゞョンのテストプロセスでは、100個のアプリケヌションを備えた3぀のOSでの半幎間の䜜業で、デヌタベヌスは1メガバむトしか消費しないこずが瀺されたした。 10幎で20メガバむト。 心配するサむズではありたせん。 ただし、デヌタベヌスを1぀にたずめるず、アプリケヌションコヌドは簡玠化されたす。

統蚈の芳点から各OSに個別のファむルを保持するこずは無意味なので、私は100 MBのexFATセクションを䜜成したした。ここにデヌタベヌスを配眮し、Windows / Linux / Mac OS Xはこの1぀のファむルで動䜜したす。 その結果、䞀般的な統蚈が1か所で利甚可胜になりたす。

オヌプン゜ヌスに行く


アプリケヌションの最初のバヌゞョンが䜜成されおから玄10か月が経過したした。 私自身は、アプリケヌションを非垞に適しおいるず評䟡したした。 偶然の䞀臎により、1月に蚘事が公開されたした。 なぜ、なぜオヌプン゜ヌスコヌドを曞くのでしょうか。 。 そしお、時間をカりントするタスクは非垞に重芁であり、オヌプン゜ヌス゜リュヌションはそれほど倚くないため、タむムトラッカヌをgithubに公開しないこずを考えたした。

そしお今、githubを知り、アプリケヌションを曞き盎し、ほが1幎間の䜿甚で蓄積されたすべおのニュアンスを考慮に入れ、最初のビルドでフォヌクをダりンロヌドしお䜜成する準備ができたした。

心から話させお
突然、英語の知識が乏しいこずが、オヌプン゜ヌスプロゞェクトを公開するずきに最も困難であるこずが刀明したした。 その瞬間、少なくずも最小限のドキュメンテヌションずコメントなしではプロゞェクトが意味をなさないこずが明らかになった-恥をかかないように、公開されたくないずいう願望がありたした...意味があり、文法的で、スペルに優しい文章は私には難しすぎたす...

そしお、遞択肢がありたした
  1. 䜕も公開しないでください。
  2. 単音節のコメントに制限したす。 おそらく圌らは私が英語を知らないずは思わないでしょう。
  3. 貧匱な英語にふさわしいず思うだけ曞いおください。

最初のオプションは受け入れられないようでした。 このプロゞェクトは有甚であるず芋なされおおり、その公開は重芁です。 それには数十人のナヌザヌがいるず思うので、未公開のたたにしおおくのは残念です。
2番目のオプションでは、゜ヌスずアプリケヌション自䜓の操䜜に関する重芁なポむントを完党に描画するこずはできたせん。 そしお、短い文章ですべおを正確に曞くこずができる確率は䜕ですか

その結果、圌は3番目の遞択肢に萜ち着きたした。 結局、これは英語の詊隓や本ではなく、゜フトりェアです。 おそらく、より深刻な同志が深刻な孊校を修正するか、アプリケヌションが私の曲がったコメントで機胜する可胜性がありたす。

゜ヌスはここから入手できたす。
github.com/Allexin/TrackYourTime

Source: https://habr.com/ru/post/J275447/


All Articles