なとりうむのメモ帳

アナログな趣味が多め。好きなことをメインにごく稀にTipsとかも書きます。

”robocopy”使ったら一瞬で自動バックアップができる

昔バックアップをSyncToyを使ってやっていたんですよ。

Download SyncToy 2.1 from Official Microsoft Download Center

でも最近”robocopy”コマンドを使えば一瞬でできるということを知ってしまいました…
ソフトなんか入れずに、バッチでできたんですね…。

robocopy <コピー元> <コピー先> /mir /log:<ログファイル> /NP

ってバッチに書くだけでミラーしてくれる…すごいです…。
ログファイルも吐いてくれるんです…。ちなみに上記で使っているオプションはこんな意味です。

  • /mir
    指定したディレクトリ以下をミラーしてくれます。
  • /log:
    ログファイルを吐くようにしてくれます。パスで指定すれば別のところにきちんと出力してくれます。
  • /NP
    コピーの進捗(何%まですすんだか)というログを出さないようにします。
    大量にログが吐かれてしまうのでこれは付けておいたほうがいいですね。

他にもオプションはたくさんありますが、よく使いそうなものをチョイスして載せておきます。

  • /R:<再試行試行回数>
    失敗したときに再試行してくれます。
    既定値が 1,000,000ですのでかなり多いです…。
  • /W:<再試行の待機時間>
    再試行をするまでの待機時間です。

他にも便利なオプションがたくさんあるので全量知りたい場合は別途調べてくださいね。

本コマンドがデフォルトで利用できるのはVista以降です。
もちろんWindows Serverでも2008以降で使えます。
バッチ1行書いてタスクスケジューラで仕掛けるだけなので最高です。
複数行書けばそれぞれ別の場所にもバックアップ取れるしいいですね。

Visual Studioのコード メトリックス値の説明

Visual Studioのコード メトリックス値、みなさん使ってますか?*1
これらの値をどのタイミングで目にするかと言えば、Visual Studioで出来上がったコードの規模測定するときですかね。
で、この数値一体なになのか?っていう話ですが、ちゃーんと公式が出してます。

コード メトリックス値

説明部分だけ引用しておきますね。

  • 保守容易性指数 - コードの相対的な保守容易性を表す、0 ~ 100 のインデックス値を算出します。 値が大きいほど、保守容易性が優れていることを示します。 色分けしたコード評価を使用して、コード内の問題部分をすばやく識別することができます。 緑色の評価は 20 ~ 100 の範囲にあることを示し、コードの保守容易性が良好であることを示します。 黄色の評価は 10 ~ 19 の範囲にあることを示し、コードの保守容易性が中程度であることを示します。 赤の評価は 0 ~ 9 の範囲にあることを示し、保守容易性が低いことを示します。

  • サイクロマティック複雑度 - コードの構造上の複雑さを測定します。 これは、プログラムのフローにある、異なるコード パスの数を計算することで作成されます。 複雑な制御フローが含まれるプログラムでは、十分なコード カバレッジを実現するためにより多くのテストが必要となり、保守性が低下します。

    System_CAPS_ICON_note.jpg メモ

    場合によっては、Visual Studio 2010 のメソッドのサイクロマティック複雑度の計算が旧バージョンと異なります。 詳細については、「コード メトリックに関する問題のトラブルシューティング」で Visual Studio 2010 のコードの複雑度の計算における変更点についての説明を参照してください。

  • 継承の深さ - クラス階層構造のルートまでのクラス定義の数を示します。 階層構造が深くなるにつれて、特定のメソッドおよびフィールドが定義または再定義されている場所を把握することがより困難になる場合があります。

  • クラス結合度 - パラメーター、ローカル変数、戻り値の型、メソッド呼び出し、ジェネリックまたはテンプレートのインスタンス化、基本クラス、インターフェイス実装、外部の型で定義されたフィールド、および属性による装飾を使用して、一意のクラスへの結合度を測定します。 適切なソフトウェア デザインでは、型およびメソッドの連携は高まり、結合性は低くなります。 結合性が高いということは、他の型への依存関係が多いために再利用や保守が困難なデザインであることを示します。

  • コード行 - コード内の行の概数を示します。 この数は IL コードに基づいているため、ソース コード ファイル内の正確な行数ではありません。 数が非常に大きい場合、型またはメソッドでの処理が多すぎるため、分割が必要であることを示すことがあります。 また、型やメソッドの保守が困難なことを示す場合もあります。

 「この数値だとよい」的なものはないですが、
ソース全体を測定した際に突飛に悪い数字がないかを見るのはいいかもしれませんね。
全体で最も数値が悪い部分をリファクタリング対象とするのもいいでしょう。
まあ、基本的にUnit Testが書きやすいようにコード分割していけばそんなにひどく読みづらいとか、理解できないほど長いコードにはならないとは思いますが…。
レガシーコードで酷い部分のテコ入れの基準にする使い方がよさそうです。

*1:2017にもあるんですかね?

コマンドラインからIP Messengerを使う(リマインダなどに使えるよ)

最近は使っている人が少ないかもしれないですが、今でもまめに更新されている老舗チャットツールのIP Messenger
シンプルなUIが嫌いではなくて、地味に他チャットツールと併用していたりします。
データがサーバーに残らずすべてローカルで完結するので、今でも利用している方が結構いるみたいですね。

IP Messengerって何?って方は下記の公式ページをどうぞ。

ipmsg.org

しばらく前にIP Messengerを使ってサーバから定期お知らせをするなんて方法を取っていた時期がありますので、使い方を残しておきます。
超簡単なバッチとタスクスケジューラの組み合わせなのでWindowsデフォルト機能+IPMsgのみで使えるので環境に制限があるところではいいかもしれません。

IPMsgは、コマンドでメッセージ送信可能です。

"[IPMsgインストールフォルダ]\ipmsg.exe" [ポート] /MSG [IPアドレス/localhost] [送信したいメッセージ]

これだけです!とっても簡単ですね!
ポートは省略可能です。(デフォルトポート使っているなら不要です)
何行も書けるので、一度にたくさんの人に送れます。

利用例は下記の通りです。
大体他のものでもっといい方法があるので、こんなこともできるんだーレベルで結構です。

  • タスクスケジューラで設定して、定期ミーティング時間をお知らせする
  • 自動ビルド後のイベントに設定して、ビルド完了をお知らせする
  • タスクスケジューラに複数個数設定して、時間管理の目安に(ローカルにも投げれるので)

ソースは公式サイトで公開されているので、そっちが気になる方もぜひ見てみてください。