[スタート]→[プログラム]→[アクセサリ]→[コマンド プロンプト] cmd.exe。
スクリプトにプログレスバーが欲しいというので、Term::ProgressBar で実装しておく。 しかし Windows + ActivePerl + コマンド プロンプトでうまく表示されるのかどうかは知らぬ。
ActivePerl で Ming を使えるようにしておきたい。
Ming 0.3 beta1 のソースパッケージには Visual Studio 6.0 用のプロジェクトファイルが含まれている。 Cygwin の Bison と flex があればライブラリをビルドできるようだ。 横着して Linux 側で bison と flex で生成したファイルをコピーして(それから unistd.h をインクルードしている部分を消して)、ビルドしてみたところ一応 lib ファイルは作成成功。
しかし ActivePerl 用にPerl モジュールの make は失敗。
調べたところ ExtUtils::FakeConfig を使うと Visual Studio が無くても MinGW + nmake でモジュールをビルドできるらしい(全てではないと思うが)。
ということで Ming を MinGW でビルドした後、そのまま ActivePerl 用モジュールの作成まで持ち込むことにしてみる。
コンパイルに必要な環境を MinGW で、configure に必要な環境を MSYS で用意する。
Ming のビルドに必要な Bison は MinGW、MSYS のインストーラに含まれていない。 bison-1.875.0-2003.02.10-1.exe というのが別途あるがうまく動かない。
ソースパッケージ(bison-2.0.tar.gz、bison-1.875.tar.gz)からはビルドできず。 MinGW/MSYSのプロジェクトにある bison-1.875-2003.02.10-1-src.tar.gz はビルドできるものの make check が通らない。
とうことで GnuWin32 の bison-1.875-4.exe (インストーラ形式)をインストール。 c:/usr/local/GnuWin32 にインストールした後、MSYS の /etc/fstab で /GnuWin32 にマウントし、/GnuWin32/bin に PATH を通しておく。
flex-2.5.4a.tar.gz を展開して
./configure; make; make check; make install
インストール時ハードリンクが作れなくてエラーがでているようだが無視。
MSYS 上でビルドしてインストール。zlib-1.2.2.tar.gz を展開して
./configure; make; make check; make install
MSYS 上でビルドしてインストール。 libungif-4.1.0b1-src.zip を展開して
rm config.cache; config.h内の-DHAVE_VARARGS_Hをコメントアウト。 ./configure; make; make install
make check はエラーが出るが無視。
MSYS 上でビルドしてインストール。libpng-1.2.8-config.tar.gz を展開して
CFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib ./configure make; make check; make install
MSYS 上でビルド。ming-0.3beta1.tar.gz を展開して
CFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib make static
ExtUtils::FakeConfig と PPM::Make で Ming の SWF PPM パッケージを作成する。 (MSYSのシェルではなく)コマンド プロンプトを開いて、Mingソースパッケージの中の perl_ext に移動。 MSYS、MinGW、nmake にPATHを通しておく。
それから Makefile.PL の実行で -lz を発見できないので、libz.a を Makefile.PL と同じディレクトリにコピーしてしまう(-L/usr/local/lib を指定しても効かなかったので)。 libpng.a、libungif.a も同じくコピーしておく。
Makefile を作成。Makefile.PL では -lz しか指定していないが、libpng と libungif も必要なのでコマンドラインオプションで指定する。ExtUtils::FakeConfig の Config_m を使用して MinGW を使用するようにする。
perl -MConfig_m Makefile.PL LIBS="-lpng -lungif -lz"
ここで生成される Makefile の中で libperl58.a を指定している部分があるが、ActivePerl では perl58.lib になるので、エディタで書き換え。 後はいつも通り
nmake nmake test make_ppm
で PPM パッケージ作成完了。
Perl で書いた HTTP daemon 形式のシステムがあるのだが、Windows ユーザにとってはコマンド プロンプトからコマンドラインオプションを指定しての起動は繁雑でよろしくないらしい。
以前から管理用のGUIをつけようと思っていたのだが、現在の daemon プログラムにGUIをつけるとするとマルチスレッド化にしなければならないとか、そういう頭があって後まわしにしていた。
今回、まずはランチャと daemon のログモニタというレベルでGUIを作ってみることにした。 wxPerl でランチャを作ってそこから子プロセスとして daemon を起動するという形式。 ランチャ側のアイドルループで、daemon の標準出力・標準エラー出力を読み出して表示するというもの。Linux 上ではうまく動いた。
といった感じ。
最近何か所かで紹介されている Command Prompt Explorer Bar 1.1 を使ってみる。 エクスプローラ上で Ctrl+M を押すと、コマンド プロントがエクスプローラ内に貼りつくソフトウェア。
エクスプローラ上でフォルダを選択すると、cd コマンドが投入されてそのディレクトリに勝手に移動してくれたり*1便利。
窓の手の「任意のフォルダーからコマンド プロンプトを可能にする」オプションも便利だけれど、こちらはエクスプローラのフォルダ選択と連動するのでより便利そうだ。
*1連動を解除することも可
リャマ本を使用した社内 Perl 勉強会の5回目を開催。 今回は一人病欠で6人。 今回も先週の金曜日に都合がつかなかったので、月曜日の開催。
今日は「初めてのPerl 第3版」第6章「入出力の基本」が範囲。 この章で、ダイヤモンド演算子 <> を含む標準入出力の基本がほぼおさえられる。
@ 今回の反省点
標準入出力を使うようにしておけば、リダイレクトやパイプを駆使することで簡単なプログラムを組み合わせて超便利。 その辺りを伝えたいところであるが、Windows ユーザにはちょとうまく良さを伝えきれなかった感じで反省。
今回から one liner について触れていこうと思う。 Perl のコマンドラインオプション -ne や -pe などを使いこなせるようになるとこれまた便利なので、ぜひ馴染んでいただきたい。
しかしコマンド プロンプトだとコマンドライン引数のクォートの仕方が Bash 等と違うので、環境別にサンプルを用意しなければならにのがちょっとネックである。 今回は時間の関係で Bash 上での例しか示せなかった。 次回からはもう少しきちんとサンプルを用意したい。
今回はほぼ1時間丁度ぐらい。
Windows XP で Evernote に添付した FreeMind Map ファイルを直接開けるようにしたんだけれど、Windows 7 では若干手順が違ったのでメモ。
Windows 7 + Evernote 4.5.0.5229 + FreeMind 0.9.0。
Windows 7 だとコントロールパネルからファイルの種類別の処理を詳細に設定できないので ftype コマンドで設定する。FreeMind を .mm に関連付けするようにインストールした状態で cmd.exe を管理者権限で実行。そのコマンド プロンプト上で以下作業。
assoc
を実行して .mm=Freemind となっていることを確認。
そうしたら以下のコマンドを実行する。
ftype Freemind=javaw -Xmx256M -Xss8M -cp "c:\Program Files\FreeMind\lib\freemind.jar;c:\Program Files\FreeMind\lib\commons-lang-2.0.jar;c:\Program Files\FreeMind\lib\forms-1.0.5.jar;c:\Program Files\FreeMind\lib\jibx\jibx-run.jar;c:\Program Files\FreeMind\lib\jibx\xpp3.jar;c:\Program Files\FreeMind\lib\bindings.jar" freemind.main.FreeMindStarter "%1"
64 bit 版なら以下を実行する。
ftype Freemind=javaw -Xmx256M -Xss8M -cp "c:\Program Files (x86)\FreeMind\lib\freemind.jar;c:\Program Files (x86)\FreeMind\lib\commons-lang-2.0.jar;c:\Program Files (x86)\FreeMind\lib\forms-1.0.5.jar;c:\Program Files x86)\FreeMind\lib\jibx\jibx-run.jar;c:\Program Files (x86)\FreeMind\lib\jibx\xpp3.jar;c:\Program Files (x86)\FreeMind\lib\bindings.jar" freemind.main.FreeMindStarter "%1"
これで Evernote から直接開いて閲覧・編集できるようになる。
Happy mind mapping!
出社したら Dell のデスクトップ PC の電源ランプが黄色で点滅していて、診断ランプの 1 と 3 が点灯していた。電源回りの故障っぽい。直らなさそうなので、別の PC に乗り換え。結果的にスペックが上がってメモリも 4GB から 8GB になり OS も 32 bit から 64 bit になってツイてる。
幸い HDD は壊れていなかったので、ファイルはサルベージ可能だった。しかし USB 接続して中を眺めてみても大して要るものなかった。そういえば複数 PC での利用のためだったり故障時の備えのためだったりで、リモートの Linux 環境や Google ドライブやファイルサーバにファイルをほとんど移しておいたんだっけ。
ということで新 Windows 7 PC では最低限の環境だけにしておこう、もう。
今まで TrueCrypt を使ってきたけれど、今後は VHD + BitLocker で。
旧データは TrueCrypt を portable で一時的に展開し、旧ボリュームをマウントして VHD で作ったドライブにコピー。
こうしてみると
はしておいた方が良さそげだな。
あとは普段の作業は PuTTY の先の Linux 環境で(Emacs でドキュメント書いたり、プログラム書いたり)。メールは Gmail。ドキュメントは Emacs 上の howm (Markdown 形式) か Wiki か Google ドライブで書いて可能な限り Windows PC ローカルでは書かない。
[ キーバインディング ]
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。