ワークフローを単純化した物語。 または、C#でスパイを書く

この記事では、私が自分で設定した実験についてお話したいと思います。



私は長い間リモートで作業しています(アウトソーシング)ので、タスクの名前、費やされた時間、その他の情報を含む表形式で行われた作業に関する月次レポートを提出する必要があります。 チケットシステムの可用性が非常に高い場合でも、それらを毎日使用して、完了した作業を記録します。 私が働いている会社では、ロギングやその他の日次レポートに関する厳密な要件はありません。これはおそらく、日次データの不足という問題を独特のものにするか、少なくともそれほど人気が​​ない(またはそうではないかもしれません)。 すべてが信頼に基づいて構築されているため、官僚主義に没頭するのではなく、気付かれずに完全に仕事に没頭して月が飛びます。 そして最近まで、私は少なくとも毎日スカイプの同僚に挨拶し、作業プロセス、チケットの更新、手紙の受け取りなど、これについておしゃべりしていたため、毎月のレポートを編集するタスクに対処しました。 しかし、問題は、少なくとも殺すことができず、自分が何をしたかを思い出せない、適切な日に常に利用可能なデータが存在しないことです。 そして、そのような瞬間に、そのようなレポートを編集しているときに、プログラマーとして、私が将来この問題を自分で解決する方法を突然思いつきました。



結局のところ、プログラマーは、他の専門家と同様に、その分野で豊富な知識を有しており、仕事だけでなくそれを使用すべきです。 たとえば、医師は自宅に丸薬、注射器、その他のデバイスをたくさん持っています。 メカニックは常にスペアパーツとツールをたくさん持っており、ネジを外したり、釘を打ったり、ドリルしたりします。しかし、私は明らかに「ブーツのない靴屋」という言い回しに陥りました。 私のPCはテーブルとボードとワイヤーから構成されており、オペレーティングシステムは何百万年も再配置されていませんが、まあまあです。 私は靴を履かない靴屋かもしれませんが、それでも問題を解決する必要があり、靴を修繕することにしました。



問題を解決するために頭の中でアイデアを形成したので、私は最初に友人とそれについて考えることについて友人と議論することに決めました。 結局のところ、彼らは私に既製のソリューションへのリンクをいくつか投げました。 最初は、自分のアイデアが既に実装されていることに腹を立てましたが、一方で、提案されたソリューションを試してさえいませんでした。実装の容易さと決定の安全性に確信があったからです。 実際、アイデア自体は何ですか?



ロギングの問題に対する私の解決策は、私のためにこのすべての作業を行い、常にトレイにハングアップするスパイプログラムを書くことでした。 数分で、私はそのようなプログラムのためのいくつかの機能を思いつきました。 発明された機能の一部を次に示します。





私たちは、N秒/分/時間(プログラムでカスタマイズ可能)の頻度での周期性について話しています。 Nが1分に等しい場合、8時間の作業で8 * 60 = 480ショットが得られます。 1つのスナップショットには約700 KBが必要で、1 MBに切り上げられるため、1営業日で480 MBの画像が蓄積されます。 1か月で14ギガバイトになります。 私は同意します、数字は怖いです。 しかし、私は今のところ個人的には場所を持っているので、プラスまたはマイナスの1か月以上の節約は必要ありません。 あるいは、無制限のスペースでクラウドを使用することもできます(いくつかあるようです)。 しかし、理論的には真空状態でこの方法を使用すると、どこからでも自分のデータにアクセスしながら、必要な月/年だけ作業データを蓄積できます。 別の最適化オプションは、保存する前に画像のサイズを小さくするか、期間Nを長くすることです。



したがって、これは私に発生したスパイ活動の最小セットです。 すべてを美しいインターフェイスでラップすると、ログを読み取るプロセスがさらに快適になります。 私はC#を手元に置いていましたが、その少し前に仕事のために小さな仕事をしていました。 したがって、選択はC#に当てはまりました。



夕方の自由時間を使って、最初の機能の実装を開始しました。これは私のタスクで最も簡単で、率直に言って、唯一有用な可能性があるからです。 他の誰かが本質を完全に理解していない場合、それはここにあります:スクリーンショットから、あなたは日中に何をしたかを理解できます。 ビデオを撮影することは初歩的なアイデアである可能性が高く、多くの利点をもたらさないため削除されます。 しかし、私はクリップボードについて考えます。 現時点では、この関数は実装されていませんが、クリップボード(テキスト)をハードディスク上のデータベースに定期的に保存することになっています。 これはビューレコードにすぎません。



id | 日時| 緩衝



実際、N周波数が短いほど、スパイが収集するデータが多くなります。 クリップボードの内容により、特定の日時にプログラムしてコピーペーストした内容を理解することができます。



もちろん、最初の実装を可能な限りシンプルかつ迅速にすることにしました。 プログラムのタイトルがForm1ではないように、 Work Spyに最初に発生したことを紹介し、それが私の頭脳と呼ばれるようになりました。 ちなみに、元の外観は、リッチテキスト(RichTextBox)を含む1つのボックスのみを含んでおり、保存された場所、時間、および保存されたログウィンドウにすぎませんでした。







書き込みには約10分かかりましたが、Googleでのリクエストが2、3あり、「c#でスクリーンショットを撮る方法」のコードの例がすでにあります。 私のスパイはフォルダーを作成し、今日の日付を呼び出します。したがって、プログラム中にTimerクラスを使用して、2つのモニター(画像サイズ3840x1080)の写真を内部に配置します。テンプレート12_03_2012__12_30_36.gif )。 画像形式-gif、スペースを節約するため。 画像の粒状性にもかかわらず、すべてがはっきりと見えます。



最初のバージョンは、最小限のジェスチャーで作成されます。これまでのすべての設定は、プログラムをセットアップするためのフォーム上の便利な要素ではなく、コードに縫い付けられています。 テストのデバッグに合格しました。F5キーを押すのではなく、プログラムを自律的に実行しようとします。 最初のリリースであるavast!は、私を祝福し、私のプログラムに注目を集めました。 アンチウイルスからのお祝いは次のようになりました。







これらの〜100行のコードで潜在的な害を特定したため、これは私には謎のままですが、一方で、最も単純な自己スタイルのスパイでさえ何かが間違っていると疑うことができたのは素晴らしいことです。 被害の十分な証拠が見つかりません、avast! 謝った







尊敬されているアバストに丁寧に尋ねました! 私はプログラムを100%信頼しているので、サンドボックスではなく、いつものようにプログラムを開きます。



現時点では、すべてが手動テストモードで動作しています。 保存した画像を毎日開始/終了して表示します。 これまでのところ、プログラムは1週間機能しています。 結果はすでに印象的です。 ローンチ初日から写真を開くと、ブラウザー、つまり作業中のプロジェクトのタブとコードが表示されるテキストエディターが明確に表示されます。 私が映画を見ているところに面白い写真が出てきたり(仕事中にブレーカーが見えたり、気が狂ったように見えたり)、ソーシャルネットワークにメッセージを書いたりすることがあります。 画面にキャプチャされるものに対する心配や不安を取り除くのはプログラムの自己記述性であり、それでも最も予想外で予測不可能なものをキャプチャできるのは冗談です:)。



おそらく私がナレーションしたかったすべてのこと。 実験は進行中であり、今月末までには満足できると確信しています。 意志力に同意し、胴体への腕と脚を仕上げて、すべてが希望どおりに機能するようにします。 物語の教訓は、10分と知識が大きな問題を解決できるということです。



記事の有用性を提供するために、私のような問題を解決するよう勧められたソリューションへのリンクを残します。 見るためにそれらをダウンロードすらしなかったので、私はプログラムの妥当性については答えません。



www.debugmode.com/wink

taskwarrior.org/projects/show/taskwarrior



All Articles