イスラエルのヤコブ・ジフ(Jacob Ziv)とアブラハム・レンペル(Abraham Lempel)は 1977年に辞書ベースの圧縮法を発表した。2人の頭文字をとってLZ77圧縮法として知られる。
(この方式から派生したものとして、LZW方式がある。 LZW方式はインターネットのGIF画像圧縮のベースになっている。)
ジェームス・ストーラー (James A. Storer)とトーマス・シマンスキー(Thomas G. Syzmanski)は、LZ77圧縮法を発展させ、1982年にスライド辞書法と呼ばれる方式を発表し、LZSS方式が作られた。
1988年、当時高校の先生をしていた奥村晴彦氏が、LZSS方式をさらに算術符号化するLZARIという圧縮アルゴリズムをPC-VAN上に発表した。
北海道の内科医の吉崎栄泰氏は、この奥村氏の圧縮方式を見て、算術符号化の部分をハフマン符号化に置き換えることでもっと効率的なアルゴリズムになるのではと考えた。
ハフマン符号化とは、デービッド・ハフマン(David A. Huffman)によって1952年に発表された「最小冗長符号の構成方法」という論文が基礎になっているデータ圧縮の手法で、現在ではほとんどすべての圧縮手法が何らかのかたちでハフマン符号化を取り入れている。
吉崎栄泰氏は、その考えをもとにLZHUF方式を考案し、その方式にもとづいたDos版の圧縮ソフト LHarcを作り、1988年末にニフティとアスキーネットにリリースした。 LHarcは大反響をよび、その後も、 LHarcのアルゴリズムの改良が行われた。
Dos版だった吉崎氏のLHarcはLHAとなり、その後多くのボランティアの協力を得てUnixやMac、 Windowsなどほとんどのプラットフォームに移植された。またマニュアルは英訳され海外のユーザーにも広く認知されるようになった。
Windowsの世界ではZIP形式とLZH形式(LHAのファイル形式)が事実上の標準となった。特にLHAがフリーソフトとしてソースコードも公開されていた点は、他の圧縮ソフトとは違って歓迎された。
ZIP形式は、フィル・キャッツ(Fhil Katz)によって開発された圧縮形式で、アメリカのほとんどのダウンロード・サイトはZIP形式の圧縮ファイルを用意している。 ZIP 形式圧縮はデフレーションというLZ77の変形アルゴリズムを使っており、このアルゴリズムは GZIP や PNG などの圧縮形式にも用いられている。
すいさんのマクロ:Grep の結果形式のテキストでマクロを実行すると、マクロ実行時の行のファイルが
・拡張子が TXT,C,CPP,H ならタグジャンプする
・拡張子が DOC,XLS なら関連付け実行する
・拡張子が他なら関連付け実行する
・行頭からの文字列がファイル名らしくなければ、実行時の位置で単語選択するだけ。
1.PPA.DLL を入手
http://homepage1.nifty.com/ht_deko/
で、PPA.DLL (ppa_***.lzh の一部) を入手して、sakura.exe と同じフォルダに入れます。
2.すいさんのマクロをダウンロード
http://www.egroups.co.jp/files/sakura-editor/User/MACRO/
で、grepo_xxxxxxxx.cab( ← xxxxxxxx 部は公開日時)「マクロ(PPA):Grep結果から、見つけたファイルを関連付け実行」をダウンロードします。
3.目的のマクロファイルを解凍して、取り出したファイル(GrepOpen.ppa)を、マクロフォルダに入れます。
(例えば C:\Program Files\sakura\MACRO )
マクロフォルダとは、サクラエディタで、[設定(O)]→[共通設定(C)]→[マクロ] タブにて [参照(R)] ボタンで設定してある場所です。(場所はユーザーが任意に変更できます。)
4.設定 → 共通設定 → [マクロ] タブで以下の通りに操作します。
(1). 「マクロ一覧」から何もない空の行を選択する
(2). 「File」から目的のマクロファイル(GrepOpen.ppa)を選択する。
(3). 「名前(N)」に自分にとって分かりやすい名前、
例えば「Grepから関連付け実行」を付ける。
(4). そのマクロの内容が、後で変更(バージョンアップ)される可能性があるので、
「マクロを実行するたびにファイルを読み込みなおす(L)」
にチェックを付ける。
(5). [設定(A)] ボタンを押す。
(6). [OK] で「共通設定」を閉じる。
※ ↑ここまでで一旦 [共通設定] を閉じる事
これだけで、メニュー操作 [ツール(T)] → [登録済みマクロ(B)]の中から選択して実行できるようになります。
5.設定 → 共通設定 → [キー割り当て] タブで、以下の通りに操作します。
(1). 「種別(K)」から「外部マクロ」を選択する。
(2). 「機能(F)」から目的のマクロを選択する。
(3). キーから割り当てたいキーを選択し、必要に応じて「Shift」「Ctrl」など
にチェックを付ける。
[割付(B)] ボタンを押す。
(4). [OK] で「共通設定」を閉じる。
以上で、指定したキーで、「Grepから関連付け実行」されるようになります。
Grep結果の対象行をダブルクリックして、「Grepから関連付け実行」させたい場合は、上記のキーに「ダブルクリック」を割り付けた後、SAKURAのデフォルト設定を下記の方法で停止させます。
6.共通設定の [Grep]タブを開く。
「Grep結果からのタグジャンプ」の「ダブルクリックでタグジャンプ(W)」のチェックoff にする。
注:このマクロで、マウス ダブルクリックで他のユーティリティを関連付け実行した後、エディタ側が文字選択状態になってしまう事があります。これは、私がこの文書を書いている時点の「SAKURAの仕様」で、エディタ上でマウス右クリック→左クリックすれば、選択状態は解除されます。
ついでですが、下記の方法で、右クリックメニューに追加することもできます。(私の推奨)
上記の方法で、マクロを登録しておきます。
設定 →共通設定 →[カスタムメニュー] タブで、以下の通りに操作します。
(1). 「選択(C)」から「右クリックメニュー」を選択する。
(2). 「種別(K)」から「外部マクロ」を選択する。
(3). 「機能(F)」から目的のマクロを選択する。
(4). 「メニュー(M)」の中の登録したい場所をマウスで選択後、[→(A)] で登録し、さらに [---(S)] でセパレータの追加や [↑(U)] [↓(O)] で上下に移動などして自分の好みの通りにする。
(5). [OK] で「共通設定」を閉じる。
以上です。お好きな方法を選択して下さい。
(上記のマクロの登録方法は、すいさんがSAKURA掲示板に書かれた内容を、転載させていただきました。
m(__)m )
(例えば、島崎藤村の「夜明け前」は、
青空文庫では、次の4つの圧縮ファイルになっています。
1504_ruby_6153.zip (216KB)*
1505_ruby_1916.zip (201KB)
1506_ruby_1919.zip (192KB)*
1507_ruby_1882.zip (229KB)
この中で、「御幣餅」という言葉が、何回使われているか、瞬時に検索してくれます。
→答え:9行(10カ所)
grepは、行単位で一致を表示します。一行(改行までのテキスト)内で検索キーワードが2カ所で一致しても、grepの出力結果は "1行" です。
ちなみに、青空文庫を画面で読む時は、
WZ階層付きテキスト形式にして、VerticalEditor で見ると良いでしょう。)
C:\Documents and Settings\ユーザID\Local Settings\Application Data\Google\Google Desktop Search\rpm.cf1
ここで使われるのが、「ハッシュ関数(hash function)」と言われるもので、ドキュメントや数字などのデータの羅列から、一定長のデータに要約するための関数・手順のことです。
入力データを関数にかけて出力する値を、「ハッシュ値」、または単に「ハッシュ」と呼びます。
ハッシュ関数では、“MD5”と“SHA-1”が代表的で、いずれも1方向関数で、生成データから原文を推定することはできません。
ハッシュ関数(Wikipedia)
http://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E9%96%A2%E6%95%B0
MD5(Message Digest Algorithm 5) は、入力データがどんなサイズの文字列やデータやファイルであっても、常に128(4*32)ビットの固定長のハッシュ値を出力します。ハッシュ値は、普通16進数(4ビット)の文字列(
英数32文字)で表現します。
ただし、異なった文字列から同じハッシュ値が発生しないこと(衝突耐性・非衝突性)を保証するものでは有りません。
2つのファイルが異なる事をチェックする目的なら、これで十分です。
SHA-256(Secure Hash Algorithm 256-bit) は、256bit長のメッセージダイジェストを得るものです。
16進数文字列で表記すると、64文字になります。
MD5メッセージダイジェストと比べると、倍の長さの値を生成することができます。
ハッシュ衝突の回避率はbitが1増えただけで2倍になるので、256bit長の SHA-256 ハッシュ値は、MD5 の 128bit長のハッシュ値より 2を128回掛けた分だけ、ハッシュ衝突の回避率が上がることなります。
crc32 は、16進表記の長さ: 8文字のものです。
crc32 は、32bitのハッシュが取れるのでInteger型と相性が良く、文字列を均等に数値へ振り分けたいときに便利で、計算も早いものです。しかし、セキュリティを期待する目的では使えません。
ちなみに、この「
ハッシュ」は、ハッシュド・ビーフ(hashed beef)のハッシュと、同じ単語です。
ハッシュド・ビーフは、玉葱(たまねぎ)・牛肉などを
細かく切って炒め、塩・胡椒で味をつけ、ブラウン・ソース(ホワイト・ソースではなく、小麦粉を炒った茶色のルウを使ったもの。デミグラスソースとも言う。)を入れて煮込み、ご飯の上にかけた洋風料理のことです。(なまってハヤシ・ライスともいいます)
データを送受信するときに、経路の両端でデータのハッシュ値を求めて比較すれば、データが途中で改ざんされていないかどうかを調べることができます。1方向関数で生成しているので、ハッシュ値を変更しないで、元データを改ざんすることは困難なのです。
ファイル交換ソフトなどを使って、素性のよく分からないところからファイルを受け取るときは、公開されている信頼できるハッシュ値を使って、確認することを推奨します。