2017年8月31日木曜日

MinGW の make だけを手動でインストールする

必要なアーカイブ


インストール手順

  1. make-3.82.90-2-mingw32-cvs-20120902-bin.tar.lzma から
    「mingw32-make.exe」を取り出して、パスの通ったディレクトリに格納する。
    ※お好みで、「mingw32-make.exe」を「make.exe」にリネームする。
  2. libintl-0.18.3.2-2-mingw32-dll-8.tar.xz から
    「libintl-8.dll」を取り出して、前手順と同じディレクトリに格納する。
    ※このDLLがないと、make に
    「コンピューターに libintl-8.dll がないため、プログラムを開始できません。この問題を解決するには、プログラムを再インストールしてみてください。 」
    と怒られる。
  3. libgcc-6.3.0-1-mingw32-dll-1.tar.xz から
    「libgcc_s_dw2-1.dll」を取り出して、前手順と同じディレクトリに格納する。
    ※このDLLがないと、make に
    「コンピューターに libgcc_s_dw2-1.dll がないため、…」と怒られる。
  4. libiconv-1.14-3-mingw32-dll.tar.lzma から
    「libiconv-2.dll」を取り出して、前手順と同じディレクトリに格納する。
    ※このDLLがないと、make に
    「コンピューターに libiconv-2.dll がないため、…」と怒られる。
  5. おわり。

補足

各アーカイブからのファイル取出しは、7-Zip があれば 事足りる。

2017年8月27日日曜日

Googleの検索結果リンクを、直接リンクに書き換えるブックマークレット

概要

Googleの検索結果リンクを、「検索結果への直接リンク」に置き換えるブックマークレットを書いた。

いわゆる一般的なブックマークレットの用法と同様だが、
Googleの検索結果ページを表示している状態で実行することで、表示中ページの全検索結果リンクを更新する。

具体的には、検索結果の各リンクのURLが下記のようにGoogleサーバ経由となっている場合に、

  • https://www.google.co.jp/url?q=http://example.com/&sa=
  • https://www.google.co.jp/url?url=http://example.com/&rct=

これを下記のような直接リンク (= Googleサーバを経由しない) に置き換える。

  • https://example.com/

ブックマークレットのソース (再掲)

整形すると、下記の通り。

javascript:(
  function() {
    var a = document.getElementsByTagName("a"),
        n = a.length,
        i = 0;

    while (i < n) {
      var u = a[i].href.match(/\/url\?(?:q|url)=(h[^&]+)/);

      if (u) {
        a[i].href = decodeURIComponent(u[1]);
      }
      ++i
    }
  }
)();

備考

  • Firefoxなどは、ブラウザ自体が上記ブックマークレットと同等(以上)の機能を内蔵している模様。

NTFS上の、空ディレクトリのサイズを知りたい。

まとめ

NTFS上で「空ディレクトリがどれだけのディスク容量を消費するのか」を実測した。

さまざまな因子があるため参考にもならない可能性が高いが、今回の検証による結果としては

空ディレクトリ1つあたり、1600バイト程度 のディスク容量

を消費していた。(空ディレクトリ10,000個の平均値、計測ミスの可能性もあり)

※この記事をこれ以降読んでも、とくにオチはありません。

2017年8月24日木曜日

ハードリンクの参照カウント数を考慮してくれる du コマンド が欲しい。 (Windows環境で)

結論

Sysinternals の Du (disk usage) は、
NTFS上での ハードリンクの参照カウント数 を考慮したうえで ディスクの使用量を算出してくれる。

経緯

  • dumpfs 系 のバックアップコマンド (たとえば、mdumpfs) を使うと、NTFSのハードリンク機能を駆使し、ディスク領域を極力消費せずに、各バックアップ断面のスナップショットを取ることができる。
  • たとえば、未変更のファイルに対して3回バックアップ (スナップショット) を取った場合、バックアップ結果のファイルは3つできるが、それらのディスク上の実体は共有されており、実際には ファイル1つ分のディスク領域しか消費しない。
    (参照カウントが 3 のファイルが、1つ存在する状態)
  • しかし、Windows上の一般的なツール (エクスプローラ他) は、NTFS上のハードリンクの参照カウントを考慮しない
    (上記の3回バックアップの例の場合ならば、同じサイズのファイルがディスク上に3つとも存在し、ファイル3つ分のディスク領域を消費しているかのように報告する)
  • なお、本家(unix、linux環境) の du コマンドは、ハードリンクの参照カウントを考慮しているようである。
    (参考: ハードリンクがある場合の du によるディスク消費量表示の注意 - 学習する機械、学習しない人間)
  • いわゆる Win32 port の du コマンド をいくつか試してみたが、ハードリンクの参照カウントを考慮してしているものは、ほとんどなかった。
    冒頭で掲示した Sysinternals版 の du コマンド は、数少ない例外である。

補足

上記の 「Sysinternals版 の du コマンド」は、「Size」と「Size on disk」(= ディスク上のサイズ) の両方をレポートしてくれるが、
「空のディレクトリ」の「Size on disk」については
1ディレクトリあたり「4,096 bytes」
とレポートしているように見える。
※「4,096 bytes」というのは、対象NTFSボリュームの クラスタサイズ (アロケーションユニットサイズ) だと思われる。

NTFSの内部構造については詳しくないのだが、空ディレクトリ1つ 4KB は大きすぎる気がする(*1) ので、別途調査予定。
*1 … MFT (Master File Table) の1レコード分である、1KB で収まるのではないか?


関連記事

2017年8月2日水曜日

CCleaner の v5.32.6129 には致命的なバグあり。Thunderbird のプロファイルデータが破損し、すべてのメールアカウント情報が白紙 (初期状態) に戻る。

本気で危険

  • メールクライアントのThunderbird を使用している人は、安易に CCleaner の「v5.32.6129」を使用しては駄目 (*1)。
  • 「v5.32.6129」を使用すると、(*1)
    Thunderbird のプロファイル(アカウント情報) を管理する「prefs.js」が 破損する。
    (日本語部分が文字化けし、Thunderbird が読み込みに失敗する)
  • Thunderbird は、起動時に「prefs.js」が読み込めないと「prefs.js」を初期化するため、
    すべてのメールアカウント情報が消える。(初回インストール直後の状態に戻る)
  • メールデータ自体は無事だが、Thunderbird がメールデータを認識できなくなるため、過去のメールも読めなくなる。

*1 … より厳密には、CCleaner v5.32.6129 上のアプリケーション別の設定で、
Thunderbird 配下の「保存場所」という項目にチェックが入っていると発生する模様。
この項目は、デフォルトではチェックされているらしい。

復旧方法

  • システム開発の備忘録: Thunderbirdのアカウントが破損したときの対処法
  • 「prefs.js」のバックアップがないと、もう取り返しがつかない。
  • 「prefs.js」のバックアップがあるならば、Thunderbird を終了させた状態で、
    「prefs.js」をバックアップから戻してやればよい。
  • 「prefs.js」は、プロファイルのディレクトリ
    (「Profiles\<8文字のランダムな文字列>.default」) の直下に存在する。

今後に向けて

  • CCleaner のバージョンを、一つ戻す。
    ひとつ前のバージョンである、CCleaner の「v.5.31.6105」ならば、今回の事象は発生していない。
  • 原理的には、バージョンを戻さずとも、
    CCleanerの設定で Thunderbird 配下の「保存場所」のチェックを外すだけで再発防止できそうだが、当方は不安だったためバージョンを戻した。
  • 日々の運用として、「prefs.js」のバックアップをこまめにとること。複数世代のバックアップが望ましい。

有用な情報

阿鼻叫喚の声