投稿

8月, 2014の投稿を表示しています

[windows] ハードディスクの内容を完全に消去する

Windows Vista 以降では、OS 標準のフォーマットツールで、クイックでない完全なフォーマットを行うと、 Windows Vista の format コマンドの動作の変更 の通り、ゼロフィルを行うように仕様が変更されたので、GUI/CUI で通常のフォーマットを行えばそれで良いです。 考慮すべきこととしては、通常の方法以外でデータが読み取られる可能性が考えられます。バッドセクタになってしまった場所の機密情報を HDD のコントローラーを操作して読み取ったり、 磁気力顕微鏡 を使ってプラッタの残留磁気を読み取られる可能性を考慮しないなら、消去方法は1回のゼロフィルで十分実用的と思います。 Windows XP 以降をお使いの場合は、diskpart の clean all コマンドを使うとディスク全域へのゼロフィルを行うことが出来ます。具体的な手順は以下のようにすれば OK です。 diskpart を管理権限で実行 list disk select disk 123 # 消去対象を選択する detail disk # 確認 clean all OS のディスクを消去したいなど、OS を使わずにディスクを抹消したい場合や、1回のゼロフィルではなく政府機関認定の消去シーケンスを実行したい場合は、 DBAN (Darik's Boot And Nuke) を使えば良いです。 DBAN の無人モードは全ディスクを消去する機能で、あるディスクのみ消去するときはインタラクティブモードを使います。消してはいけないディスクがある場合、念のため BIOS/UEFI で ATA ポートを Disable にしておくと良いです。 本当にディスクが消去されているのかを目視確認するには、ディスクをローレベルで見ると良いです。Windows の場合は HxD - Freeware Hex Editor and Disk Editor などで確認できます。 SSD を消去したい場合は、製造元の提供するツールを用いて消去を行うと早く完全な消去が行えると思います。具体的には、Intel SSD Toolbox, Samsung Magician Software, OCZ Toolbox などに存在する、Secure Erase 機能が該当しま...

Google Tag Manager を使って JavaScript エラーを収集する

Google Tag Manager は単にアクセス解析のタグを配信するだけでも、サイト自身にトラッキング ID などを直接埋め込まずに Tag Manager 管理画面から誰でも変更可能な状態に出来てとても便利です。 今回はさらにエラーリスナータグと、ユニバーサルアナリティクスのイベントトラッキングを組み合わせることで、サイトに変更を加えることなく、サイト上で発生したエラーを Google Analytics のイベントとして収集する方法を考えてみます。 設定方法 まず、エラーリスナータグを全ページに配信するように設定します。 次に、エラーリスナータグの発生させたイベントをユニバーサルアナリティクス (トラッキングタイプ=イベント) を使って報告したいのですが、エラー情報を受け渡す方法が一見したところ良く分かりません。色々触ってみたところ、受け渡し方法は、マクロを経由してデータレイヤ変数を引き渡せば良いみたいです。 こちらのヘルプ JavaScript エラー リスナー - イベント リスナー - Tag Manager ヘルプ に書かれている通り、データレイヤ変数が設定されるので、以下のようなマクロをまず設定します。 マクロ名 dataLayer gtm.errorLineNumber マクロのタイプ データ レイヤー変数 データ レイヤー変数名 gtm.errorLineNumber データ レイヤーのバージョン バージョン2 このようなマクロを使って、以下のようなイベントトラッカーを設定します。 配信条件 {{event}} が gtm.pageError に等しい タグの種類 ユニバーサルアナリティクス トラッキング タイプ イベント イベント トラッキングのパラメータ カテゴリ gtm 操作 {{event}} ラベル {{dataLayer gtm.errorUrl}}:{{dataLayer gtm.errorLineNumber}}: {{dataLayer gtm.errorMessage}} 値 (空欄) 非インタラクション ヒット True レポートの見方 エラー統計情報は、レポートで、行動 > イベント > 上位のイベント > イベントカテ...

[java] Lombok と AspectJ を組み合わせて使う

Lombok はリフレクションなどは使用せず、コンパイル時にゲッターやセッター、ロガー、toString、hashCode, equals など自動生成出来そうなものを生成してくれる大変便利なライブラリです。これと、 AspectJ を組み合わせようとすると、厄介な問題が発生したのでメモしておきます。 まず、よく使用されているらしい aspectj-maven-plugin を使おうとすると、ソースコードに対する weaving は Lombok が処理する前のコードをコンパイルして weaving しようとして、コンパイルに失敗しました。そこで処理対象を Java バイトコード (.class) に変更しようとして、 この方法 を見つけました。頑張れば出来そうな気はしますが spring-aspects を使うプロジェクトでまだ上手くビルド出来ていません。 次に見つけた、 jcabi-maven-plugin の ajc ゴール を使う方法は、特に何も追加の設定をすることなく、Lombok 経由で作られた .class に対して weaving を行ってくれました。この組み合わせが良いと思います。 <!-- project > build > plugins --> <plugin> <groupId>com.jcabi</groupId> <artifactId>jcabi-maven-plugin</artifactId> <version>0.9.3</version> <executions> <execution> <goals> <goal>ajc</goal> </goals> </execution> </executions> </plugin> Spring Framework + AspectJ 少し蛇足ですが、 @Transactional , @Scheduled , @Async , @Cacheable を使うには、m...

[android] 定期的に位置情報を取得するアプリ

Android 4.2 にて、GPS 有効の状態で、バックグランド時も定期的に詳細な位置情報を取得するという動きをするアプリが1つでも存在すると、電池がどんどん無くなるので、この現象が起こりうるアプリについてメモしておきます。 新しくインストールしたアプリが原因で、この不可解な電池消費が起こり得ることが心配な方は、高精度の位置情報が必要な時以外は GPS 無効にしておくのが良いと思います。 Google の現在地送信機能 Path の近所機能 Path Talk の Ambient Status の Location 自動更新機能 Facebook の近所通知機能 (過去存在したが最新バージョンでは削除されているようです) また、このアプリを使うと、どのアプリのせいでスリープ状態が解除されているか分かって大変便利です。 Wakelock Detector

Google Analytics でサイトの速度サンプルレートを設定する

Google Analytics にはサイトの速度を計測する仕組み (レポート > 行動 > サイトの速度 を参照) が存在するのですが、デフォルトのサンプリングレートが 1% になっているので、アクセスの少ないページの情報が少なくて寂しいです。そこで、全アクセスについて計測対象とするように、サンプリングレートを 100% とするには、以下のようにすれば良いです。 新しい方の Universal Analytics (analytics.js) を使用している場合以下のようにパラメータ siteSpeedSampleRate を与えます。 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); // こっちは削除 // ga('create', 'UA-XXXX-Y', 'auto'); ga('create', 'UA-XXXX-Y', 'auto', {'siteSpeedSampleRate': 100}); ga('send', 'pageview'); 古い方の ga.js を使用している場合は以下のように設定用メソッド _setSiteSpeedSampleRate を呼び出します。 var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-XXXXX-X']); // 次の行を追加...