3.05.2008

md5sumをチェックするに当たって。

最近、
<ハッシュ値>__<パッケージ名>(_は半角スペース)
というMD5SUMと
<ハッシュ値>_*<パッケージ名>(_は半角スペース)
という二種類のハッシュを取り扱うことが多くなってきた。

特にcoLinuxのアップデートに関しては、前者のハッシュ値を後者のスタイルに直さなくちゃいけなかったりするわけで、この差は一体なんだろう?と感じていたのだ。
で、こういった二種類のハッシュ値が存在するのはcoLinuxだけかななんて思っていたら、Rubyとか、他の有名どころでも前者のハッシュ値が使われてた。

で、最初バージョン間の差異だと思っていたら、(ハッシュ値を生成する時に)テキストとして認識させるか、バイナリとして認識させるかの差なのね;

→GnuWin32のmd5sumはバイナリがデフォルトオプション、PC-UNIX上で動くものはテキストがデフォルトオプションであるがために起こるものということ。

まったく、helpやmanぐらい読むべきだな。反省。

でも、困ったことにこれ、--checkオプションを指定した時には、どっちのモードで比較するか選べないんだよね(笑)
つまり、coLinuxのdevelビルドに関して、ハッシュ値をテキストで生成している以上、比較するこちらサイドはcoLinux上にインストールされたDebian Etchからハッシュ比較を行うか、ハッシュ値を手直ししないといけないってことなんだよね;

stable版のハッシュ値はちゃんとバイナリモードで生成されているから、develを使うが故の手間と考えれば仕方ないのかなぁ。

ハッシュ値を手直しするスクリプトでも書こうかしらん。
md5sumをリネーム→ハッシュ値を手直しするスクリプトと、リネームしたmd5sumを呼び出すバッチファイルを書く
って方法で乗り切るぐらいしか思いつかないのだけれど、なにか良いアイディアってないだろうか?

それとも、やっぱり私の調べが足りないために、こんな問題にブチ当たってるだけなの?

Changelog日記

こちらのブログは基本的に技術的なことに関するメモとか、そんな「私じゃない人にも必要かもしれない」情報を書くようにしているんだけれども、これとは別に、個人的な行動のログ(勝手に今日ログなどと読んでいる)を付けている。要するに日記だ。

んで、これを付ける時に便利なのがChangelogのフォーマット。
あの、日付と、何に関するアップデートかっていうのと、ちょっとしたメモが書ける、テキストベースのログ形式だ。

私はEmacsを愛用しているので、自分の.emacsに
;; memo
(setq user-full-name "my name")
(setq user-mail-address "my@e-mailaddress.com")
(defun memo ()
(interactive)
(add-change-log-entry
nil
(expand-file-name "~/.memo/memo.txt")))
(define-key ctl-x-map "M" 'memo)
なんてのを書いておいて、Ctrl-x Mキーでメモを呼び出せるようにしている。
このログは、昨年の11月中ごろから付けているんだけれども、このほどそのファイルサイズが38KBに達した。
ファイルサイズが徐々に増加していくのをみると、なんだか自分の人生を記録したファイルみたいでうれしいなって。そんな風に感じたわけでした。

# Chanlog形式の簡単な日記を付けられるソフトをWindowsで作ったら、受けるだろうか?
# またアイディアだけ出てきました病が (笑)

3.04.2008

GnuWin32の導入。

先日のcoLinuxのアップデートを行ったときの記事で、UnxUtilsというUnixのコマンドをWindows上で手軽に使うためのツール群を紹介しました。

きっとダウンロードページに行かれた人はがっかりしたと思います。

何せファイルのバージョンは古いし、もう数年間も更新されておらず、バグすら放置されているのですから。



ですが、それでもちょっとした作業をこなすにはとても手軽で、強力なツール群であることは間違いないでしょう。

シェルスクリプトも走らせられますから、Unix上で動かしていたあのスクリプトを、ちょっとWindows上で走らせたいんだよなという時も、すぐに使えて便利です。



さて、こうしてヨイショしたUnxUtilsを私は使っているのかというと、答えはNoです。
先日の記事で書いたのは、あくまで幸せになれると思うだけで、私自身がそれを使ったことによって幸せだったのは、もはや数年も前の話だからです。



そんな後ろめたさを感じたので、今回は私が日常的に使っているツールのご紹介です。

その名はGnuWin32。みたまんま、Gnu謹製ツールをWindows上で動かそうっていうプロジェクトです。UnxUtilsと違い、こちらは活発に開発が続けられています。



導入はUnxUtilsのzipを解凍のみ(お好みで環境変数をどうぞ)という手順に比べればやや複雑ですので、ここにその手順を載せておきます。

ざっと書くと

1.GnuWin32からフルパッケージをインストールするためのアーカイブを入手(GetGnuWin32-x.y.z.exe)

2.GPLv2に同意できるなら、それにAcceptして適当な場所にファイルをダウンロード

3.コマンドプロンプトを立ち上げて、ファイルをダウンロードした場所にcdする

4.Readme内のInstallセクションに従ってインストール



といったところです。以下にReadmeに含まれるInstallセクションのうち、はじめてのインストールで必要となるだろう、第6番までの手順の超訳版を置いておきますので、参考にでもしてください。

(当方英語力皆無ですので、誤訳等、ご指摘くださるとうれしいです。)



第6番で解説されているように、Startmenuを適当な名前でスタートメニューにコピーすると、でろっとインストールしたコマンドの一覧がスタートメニューから参照できるほか、gnuwin32というアイコンからGnuWin32に関連した環境変数の通ったコマンドプロンプトを起動することが出来ます。



== 以下、超訳


Installation
------------

In order to get installed the GnuWin32 environment, you may have to
edit the file DOWNLOAD.BAT: Here you can choose the mirror nearest to
you. When you don't have a running wget environment (the command
'set WGETRC' on the command prompt says 'WGETRC is not defined'), then
you may edit the local bin\wget.ini sample file. This is especially
important if your connection to the world wide web depends on some
proxy servers.
GnuWin32環境をインストールするために、DOWNLOAD.BATファイルを編集しなければいけないかもしれません。
つまり、ここにあなたの近隣のミラーサーバを記述するのです。
あなたがwgetを実行できる環境をもっていない
(set WGETRCというコマンドを打ち込んだときに、'WGETRC'は内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていませんといわれる)
ならば、ローカルにあるサンプルファイル、bin\wget.iniを編集する必要があります。
特にプロキシサーバを介してウェブに接続する場合、この作業が必要です。


Then do the following:
つぎの手順に従ってください。

1) In the start menu click "run", type "cmd" and cd in the directory
where DOWNLOAD.BAT, INSTALL.BAT etc. are located.
1) [スタート]メニューから[ファイル名を指定して実行]を選び、cmdとタイプします。その後、DOWNLOAD.BATやINSTALL.BATなどのファイルがあるディレクトリにcdしてください。

2) To specify a server, enter "SET GNUWIN32_MIRROR=<mirror-list>",
where <mirror-list> is a space separated list of <mirror>s and a
<mirror> can be one of the following names:

aleron (US)
belnet (BE)
easynews (US)
heanet (IE)
internap (US)
jaist (JP)
keihanna (JP)
kent (UK)
mesh (DE)
optusnet (AU)
ovh (FR)
puzzle (CH)
switch (CH)
umn (US)
unc (US)
voxel (US)

Example: SET GNUWIN32_MIRROR="umn unc voxel". If you don't set
anything, then umn is used.
2) GNUWIN32_MIRROR環境変数に、SET GNUWIN32_MIRROR=<mirror-list>のようにしてミラーサーバをセットしてください。ミラーサーバ名は下記のリストから選択できます。

  aleron (US)
belnet (BE)
easynews (US)
heanet (IE)
internap (US)
jaist (JP)
keihanna (JP)
kent (UK)
mesh (DE)
optusnet (AU)
ovh (FR)
puzzle (CH)
switch (CH)
umn (US)
unc (US)
voxel (US)

  例:SET GNUWIN32_MIRROR="umn unc voxel"
  もしあなたがこの変数をセットしなければ、umnサーバが使用されます。


3) To download the newest packages, run DOWNLOAD.BAT. You may first
edit the file EXCLUDE.TXT to prevent downloading some obsolet
packages or those packages that are excluded by other packages.
3) DOWNLOAD.BATを実行して、パッケージ群をダウンロードしてください。
  ダウンロードするパッケージをカスタマイズするには、EXCLUDE.TXTファイルを編集してください。


4) To extract the newest archives, run INSTALL.BAT
4) ダウンロードできたら、INSTALL.BATを走らせ、ダウンロードしたパッケージを展開します。

5) As administrator, you may copy the subdirectory GNUWIN32 that is
created or updated by INSTALL.BAT at any desired place, e.g. at

C:\Program Files

Note that when you copy the files within an NTFS file system, the
access rights are inherited from the destination directory, what
in general is what you want. However, when you move the directory
instead of copying it, then the access rights, ownerships etc. are
not changed.

After copying the gnuwin32 subdirectory, you probably will have to
run the BATCH script GNUWIN32\update-links.bat. It adjusts all
Windows shortcuts and creates a start menu folder. The first time
it is run, it creates a protocol file GNUWIN32\update-links.txt
that is reused for performance reasons whenever the GNUWIN32
folder is moved or copied again and update-links.bat is restarted.
5) この作業はAdministrator権限を要求されるかもしれません。
  すなわち、INSTALl.BATによって展開されたGNUWIN32のサブディレクトリをコピーするのです。(例えば、C:\Program Files下など)

  ノート:(略)

  gnuwin32のサブディレクトリをコピーし終わったら、あなたはバッチスクリプト(GNUWIN32\update-links.bat)を実行しなければならないでしょう。
  これは、すべてのWindowsショートカットとスタートメニューフォルダーを作成し、整備するものです。
  最初にこのスクリプトを走らせる時、このスクリプトはGNUWIN32\update-links.txtというファイルを生成します。
  これはGNUWIN32を実行するフォルダが移動またはコピーされ、update-links.batが実行される度に使われます

6) The subdirectory "GNUWIN32\Start Menu" contains links to the
documetation files of the various projects. There is also a link
called "gnuwin32.lnk" which points to %windir%\system32\cmd.exe
and opens a command window with all essential environment variable
set or adopted.

You can move this links into your "Start Menu" directories.

6) サブディレクトリ"GNUWIN32\Start Menu"に含まれるものは、各種のプロジェクトが有するドキュメントファイルへのリンクです。
  "gnuwin32.lnk"というリンクもあります。これは %windir%\system32\cmd.exe を指していて、環境変数などがセットされたコマンドウィンドウを開きます。

  あなたは、これらのリンクをあなたのスタートメニューディレクトリに移動して使うことが出来ます。


# 2008/09/17 太字にしたりタグ付けしたりした。

ソフトの構想

久しぶりにDelphiを立ち上げて、Indyをいじいじしてたら、なんとなくだけどメールを使ったお小遣いソフトのアイディアを思いついた。

・買い物をしたとき、メールでその品物と価格を送信。
・タイトルを特定のものにして、ソフトウェアではその特定タイトルのもののみをダウンロード
・ダウンロードしたメールを解析→データベースに登録
・お手軽お小遣いソフト(゚д゚)ウマ-

つまり、ソフト自体はスタートアップから起動してタスクトレイに常駐し、勝手にお小遣い帖を付けてくれるっていう算段。
ウィンドウを出すのは、せいぜい設定する時とレポートを見るときぐらいになったら良いななんて思ってる。

まだ思いついたのはこの程度だけど、メールを使って家計簿を付ける一般的なソフトはどんなものなんだろうな?ちょっと興味が出てきた。

時間を見つけて、少し調べてみようかな?
・・・でも、検索さんの新しいものを開発したいんだよなぁ。
並列ではじめると、ロクなことが無いってのは、自分が一番よく知っているからね(笑)

3.03.2008

かゆいところに手が届かないなぁ。.NET Frameworkは・・・。

Firefoxのダウンロードダイアログのように、タスクバーの近傍にふわっと出てくるウィンドウを、検索さんに実装したいと思ったら、どうもタスクバーの位置を取得するには古典的なShell_TrayWndをFindWindowする方法しか見当たらない。

うーん。せっかく.NET Framworkがあるんだから、Screen.PrimaryScreen.Taskbarとかあってもよさそうなんだけどな。System.Windows.Taskbarとかさ。

こういう面倒な作業が出てくると、実装するかどうか迷うんだよね。
んで、忙しくなって、そのうち放置という(笑)
まぁ、今回は時間があるから、少しじっくり取り組んでみるかな。

WindowsXPでジャンクション機能を手軽に使う。

@ITでは、リソースキットを使ってジャンクション云々って、読むのもアレな記事をTipsとして紹介しているけど、きっとここに書いてある内容と同じようなことなら、リンク作成シェル拡張ってソフトを使うことで、簡単に実現できると思う。

エクスプローラに統合されて、右クリックメニューから簡単に呼び出せるのもポイント高いしね。
私の場合、C:\ドライブ直下に適当なディレクトリ(workとか、そんな名前の)を作って、それをマイドキュメントとかにリンクしている。

んで、欧米のいわゆる「日本語を扱えない」アプリケーションを利用する時に、このディレクトリを指定して、擬似的に日本語のフォルダ名を扱えるようにしてる。(マイドキュメント→workのようになる)

これが結構便利で、例えばcoLinuxのcofsを使うときにも、パスが短くなるし、普段Windowsで良く使うフォルダにリンクさせておけば、Linux⇔Windows間の連携も驚くほどスムーズにいく。

ちなみに、手元で試した限りでは、GnuWin32に含まれるlnコマンドでも同様にリンクを貼れる。
このとき、-sオプションを指定してリンクさせるとショートカットの作成になるから、コマンドラインで作業したい人には便利かもしれない。

忘れがちだけど、こういうところでNTFSはPOSIXを取り入れていることを思い知らされるんだろうなぁ。

coLinux - Cooperative Linux 0.7.3 stable released

devel版の成果がマージされた、stable版 0.7.3 がリリースされた模様。
devel版に関しては、3月1日の修正で、coLinuxのインストールディレクトリを環境変数COLINUXでやりとりできるように改良されたみたいだから、今後アップデートが楽になると思われる。

それから同じく3月1日の修正で、2.6.12-17のカーネルパッチが削除されたり、カーネルシンボルcpu_gdt_table削除されたりといった細かな修正が加わっている。

また、少し古い修正になるけれど、ArchLinuxのイメージが新しいものに更新されていて、より選択の幅が広がっている。まぁ、ArchLinuxのイメージなんて、相当Linuxに凝ってる人じゃないと使わないだろうけど。

そんなわけで、私も手元のcoLinuxをアップデート。
うーん。どんどん便利になるなぁ。

あ、coLinuxの入手はこちらの公式ホームページからどうぞ。

# 相変わらずdevel版のMD5 sumの表記が変だけど、これはmd5sumコマンドのバージョンによる差異なんだろうか?