Network

2005年11月24日 木曜日

続・なんでもかんでもExcel症候群

Unixな機械からテキストファイルを直接持ってくると、改行がWindowsと異なるので、Excelで扱うのがちょっとめんどくさい。FTPできるときは、ASCIIで持ってくればDOS/Windowsなテキストファイルになるのだけど、世の中FTPできなくて専用のクライアントを共用されることもあって涙が出てくることがもうしょっちゅうあって困る。で、そんな_だめだめクライアント_に泣く泣くつきあわなければならないのだが、この際_なんでもかんでもExcelにお任せ_なのだ。
これからはASCIIモード転送のことは忘れて、すべてBINARYモード転送にしてしまいましょう。DOS/Windowsの世界ではUnixで作成したテキストは何行あっても、_たった1行のテキストファイル_と見なせるから、これを全部1つの文字列に取り込んで、ばらす方向で考える。ソースを示す。

2005年11月22日 火曜日

なんでもかんでもExcel症候群

何でもかんでもPowerPoint症候群の弊害を日記で書いたのだが、それよりも世の中に広く広まっている病的な物と言えば、_なんでもかんでもExcel症候群_であろう。とにかく通常の表だけに飽きたらず、提出書類から報告書まで_何でもかんでもExcel_なのである。つまり「何でもかんでもExcel症候群」とはExcelだけですべての仕事が完結してしまう恐ろしい病気なのだ。
その病巣の由来を簡単に予想するとすれば、子供の頃に升目の入ったノートで漢字の書き取りをやらされ(つまりカーニングとかに無頓着になる)、読書感想文などの類は原稿用紙で書かされ、漢字は少ない文字数で情報量を詰め込めることからすっきりとした表が書きやすく、何でもかんでも_表にしないと気が済まない_という日本人の悲しい習性に由来する物であろうと思うのだ。
まぁUnixでEmacsしか使わないというのと似たような話ではあるのだが、典型的なEmacsユーザーが扱うのは汎用的なテキストファイルであり、Emacs LISPでがんがんプログラムを書く(設定ですらLISPを書かねばならないので、多少は誰でも書く物だ)人が多い用に思われる。Excelの場合は、XLS形式という特殊なフォーマット(最近のはXMLなのか?)を用い、適当なワークシート関数などを表層的に使いこなしている人が多く、Excelの基本技とも言えるピボットテーブルとかソルバーを使いこなしている人がどの程度いるかと問えば、結構怪しい物だ。
まぁ会社で働いているとこういう病的な世界と常に隣り合わせであり、いつも精神汚染を受けているのであるが、これを前向きに楽しむにはどうすればいいか? ということに焦点を絞り込んで生活しないとやってられないと言うことになるであろうか。
そんなわけでExcelをちゃんと使いこなすにはVBAで遊びまくればいいのであるが、テキストファイルとのつきあいもやめられない。Unixな環境に一度でも触れてしまうと、VBAのお気軽さを楽しんでいても感じる最大の問題点は_正規表現が使えない_と言うところがなやましい。これまで正規表現(とハッシュ)を使うためにVBAからだと駄目だと思い、Active PerlとかActive Rubyとか非VBAでCOMオブジェクトをさわれる言語を選択していたのであるが、書いたプログラムを使ってもらうのに_わざわざPerlだのRubyだのをインストールしてもらわねばならない_という痛い問題があった。Windowsで全然閉じていないのである。Mac OSXみたいにPerlとかRubyがインストールされていればこんなことは考えなくて良いのだが、PerlやRubyを使うのは_Windows的なやり方ではないのである_と言う結論に落ち着いた。
Windows的にどうすればいいのかと言う話なのだが、結局のところ現在のほぼすべてのオフィスにあるWindows環境で前提として良さそうな物は、Internet Explorer 6 SP2とExcelであろうと言うことになる。いろいろ調べているとIE5以降だと、WIndows Scripting Hostが使える。_まてよWSHにはたしか正規表現オブジェクトがあったぞ_と思い出して、さらにCOMで呼び出せるじゃんと言うことを思い出したので、一気にこの方面の悩みが解消した。要はWSHの正規表現オブジェクトをVBAのオブジェクトにしてしまえばいいのである。なんてこったい。こんなので数年悩んでたよ。とりあえず、あるディレクトリにある複数のファイルを選択して、そのすべてのファイルに、入力したパターンマッチをして置換を行うVBAプログラムを書いてみよう。

2005年10月11日 火曜日

ようやく追いついた・・・

ただただ写真編集をさぼっていただけという情けない状態で日記の更新が止まっていたが、駆け足で書けるぶんだけ書いた。(メモしてある分だけね。だからほぼ買い物記録と撮影記録だけ。)
何個か日記に書かねばと言うネタはあるので、ようやく追いついたことだし、ぼちぼち書いていこう。あと些細な更新事項としては、CSSをいじって配色だけ変更。適当にリロードしてください。(同じ名前にシンボリックリンクを貼っているので、気づいたときにしか変わらないのだ。)

2005年08月27日 土曜日

Lightweight Language Day (and Night)

今年もLightweight Languageの年に一度のお祭りであるLightweight Language Day (and Night)に参加してきました。チケットの発売に気がつかなかったので、何とか買えた昼間の部のみ参加。
今年の僕が感じた目玉のひとつ目は、GNU awk(gawk)のXML拡張であるxmlgawkであろうか。僕がgawkやnawkを使っていたのは学部の4年目のころで、あのころは日本語化パッチを当てたjgawkをメインに使っていた。(今にして思うとperlのプログラムも結構書いたけどawkほど使ってないな。) 気がつけば国際化されて、キーワードが増えてXML文書をSAXっぽく扱えるようだ。この拡張はgawkの先端開発版という位置づけで、コンパイルオプションで無効にできるそうだ。awkは行指向ツールとしてはperlやrubyより使いやすいところはあるので、まだ開発が行われていて進化が続いているのかと言う驚きとともに、昔師匠のawkの技でうんざりしてしまいやめてしまったawkであるが、再び遊んでみたいなあと思ったのである。(僕の師匠(指導教官ともいう)はawkとかPostScriptのプログラムをサクサクと・・・)
二つ目は全然追いかけてもいなかったけどPerl6周辺の話。昨年のLLでは北京オリンピック頃と言っていたPerl6であるが、この1年でPerl6のHaskellによる実装(Pugs)を行ったという天才が登場して、突如として開発が加速しているようだ。それにしても1ヶ月でHaskellを覚えて、Perl6の仕様を具現化してしまうとは。若い天才的な人物の登場というのはなかなかエキサイティングなことだったのだと思う。小飼さんのPerl6のデモを見ていたのだけれど、Perl5との互換性を捨てているせいか、言語自身がリファインされて、どことなくrubyに近づいているような・・・ 似たような機能を影響しながら追加していくと、結局PerlとRubyとPythonを足して3で割ったような言語ができるのだろうか? もうちょっとPerlの良いところであり悪いところでもある毒々しさを残して置いて欲しいのだけれど。
他の言語に関しては特に進展があったわけではないのでここで述べる必要もないと思う。ざっと10個の言語プレゼンを聞いたのであるが、聞いた結論としてLightweight Languageとは何だろうかと思ってしまう。個人的なLightweightであることの定義付けであるが、まず最初に軽い記述で高度な処理ができること、次にたいていの人にとって理解しやすい概念のみでプログラム可能であることかなと思う。そういう点でエヴァンジェリストの方々には大変申し訳ないが、monadsとか、Curry化とか、継続とかが一般に理解されるようになるとはとうてい思えない。(一応分かりやすいと思う解説へのリンクは貼った。) むろん関数型プログラミングの威力は理解できるのだが、果たしてLightweightなのか? 誰しも知っていて当たり前なのか? と言うあたりが僕は知りたい。(Scheme的にはSICPを読めと言う話だと思うのだが、みんなしなければならないもんでも無かろう。) ちなみに僕自身はLightweightに関係なく関数型な言語の1つはプログラマを志す人は教養レベルでも良いからやっておくべきだと思ってはいる。第一、面白いし。
フレームワーク対決については、Kahuaは昨年のLLで面白いツールだと思っていろいろ調べていたので、面白くデモを拝見したのだが、もう少しうまく説明できればなという場面が多かったかも。Ruby on Railsについては、一度デモを見ておきたいと思っていたので、今回のプレゼンは参考になった。みんなが凄いというだけあるな。うちのサーバにインストールというのはバックエンドDBをインストールしたくないので保留としても、試験動作環境のDebianマシンには入れてみてもいいかも。ちょっと検討してみよう。Sledgeについては今更Perl Baseなシステムを持ちたくない(我が家の環境でPerl依存なものはもうほとんどない)ので、意見は保留。
「君ならどう書く」というセッションは、漢数字を扱う電卓ということで、面白く眺めさせてもらった。今回の漢数字の定義自身が、一般的ではない(世間的には無量大数まで万進のはず。今回はどの桁か忘れたけど万万進に切り替わる)こともあり、パースをどうするかというところが面白かった。(万万進の場合は人間が聞いてもよくわからなくなるので、少なくとも国内では廃れている。) 桁数が多くなれば誰しもがやるように、下の桁から勘定すればいいのよね。今回は個人的にはプログラム可能な電卓を作りこんでいたPythonのチームが秀逸であったと思う。
あと自由演技のsfの小林さんなのだが、科学技術計算という論点では特に行列計算ができる計算機という位置づけだったかと思う。この手の計算は特に実験系の人は常に悩ましいと思うのだが、測定器が吐き出すテキストデータをなんとかパースして、どう配列に取り込むかという点でいつも悩むところがあるが、このプログラムの場合データを表のようなものに落としこんでテキストファイルとして、テキストファイル自身が行列やベクトルをあらわして、ファイル名を記号として使えるような計算に特化したシェルのようなものという風に読めたのであるが、あの場で量子力学の固有値計算をするのはどうかと思う。説明によっては面白いと思うのだけど。ちなみに僕はあの規模の計算は普通にCで書くべきだと思う。いろいろ悩ましいけど。

2005年07月25日 月曜日

FFXI廃人人生66日目

今日はナイトのアーティファクト装備のクエスト その2をいつもお世話になっている団長さん(すでにRLKの団長さんではないし、僕らもみんなRLKつながりだけど、いまはRLKな人じゃない)に手伝ってもらうことになった。多謝なのである。
ナイトのアーティファクト装備クエストを参考に進める。2番目のクエストは話を聴いて釣りの餌まで準備していたので、その続きから。オズトロヤ城の最深部の池でのんびり釣りを楽しみ、モンスターを吊り上げて倒すって言う内容だけど。確かに今のレベルだと一人ではできないなあ。ということで、団長さんのお手伝いがあって無事終了。今週はこつこつAFとレベル上げを進めておきたいものだ。明日はエルディーム古墳に闇の炎を取りにいけるかもしれない。

2005年05月18日 水曜日

僕はコードを書けないだめだめな人ですが…

思うところを書いてみて、気が付いたら反応リンク集に。ひょえ〜。そんなわけで、コードをかけない人ですが、思うところを書いてみる。僕はコードを書く能力はないですが、そんな僕にもできることはあるだろうと思って、ここ数年Linuxの地域ユーザー会の運営に携わっています。三浦さんとはそのときからのおつきあいですが、いつも大変お世話になっています。僕はごく一面しか見えていませんが、現状のOSSの世界であのバランスで精力的に活動して、どこに出かけても見かける人はそう何人もいません。いつもながらお世話になりっぱなしです。
で、僕が三浦さんのCodeFest 2005 JAPANと言う記事を読んで思ったのは、先の日記に書いたように、いろいろなコミュニティへの積極的な参加・運営、啓蒙・教育、政治的な方面とのやりとりなどを続けてきて、いろいろ板挟みやギャップを感じることががあるのかなと思ったことは確かだけど、あともう一つ。僕は_「CodeFestを日本で開く応援をしたい、推進派になった。人材育成とか、日本発のOSSとか、コードも書かない人に言われたくはない。」_と言う文章を読んで、こういう楽しいイベントがあるんだから、_何より先に自分自身が主体的に参加していこう_とか_こういう場で成長する人もいるに違いないから応援していこう_と言った_凄く前向きな意見_としてとらえたのでした。
いろいろ読んだ中で、狩野さん

ところで、「人材を育成する」という言葉の裏には、「人材として育成される」人が当然存在するわけだ。あなたは人材として育成されたいですか?

はっきり言って私は、嫌である。自分が楽しい事を最優先にしたい。伐り倒されて製材されるより枝葉を盛んに茂らす大木として立っているほうがよい。
という言葉に同感。OSSの世界では特に、三浦さんがおっしゃるところの「利用者」と「開発者」の両輪があって初めて回っている世界だと思う。「利用者」はこれまでの普及活動なり啓蒙活動なりがうまく回って、(内容は別として)それなりの母数に成長したと思うが、「開発者」はどうかと考えると利用者に比して増えているわけではないように思う。(僕はどちらかというと利用者側に目立たないところで種まきをしていた人ですが…) IPAの未踏やコンテストで成長する人は確かにいるのだけど、僕はこの方向ができる人は少数だと思うので、もっと敷居が低い世界があっても良いと思う。(敷居が低いと言っても、こんなにいろんな凄い人が集まることはないと思う。) 実際に一線で活躍している人に実際に会って、その姿を目の当たりにする_と言うことがどれだけ衝撃的なことか、「人材として育成される」のではなく、「主体的に成長する人」_に変わることができるきっかけがそこにあるのだ。ネットだけ見ていると忘れがちだけど、実際人に直接会うことで得るものは非常に多い。そういう人をいろいろ見ることで、何かしらの刺激があるはずなのだ。僕にはコードを書く能力ははないけれど、そういうイベントの開催を応援することは出来るので(実際には能力がないと見切っているだけで、磨けば何かあるかもしれないが話は別。) 今回は参加しようかなと思ったときには既に遅かったが、次回以降何かしらの形で参加できればとおこがましく思っている。
まあ少なくとも、三浦さんに会っていろいろ話をするようになってもうすぐ5年目になるけど、こんなにいろいろ刺激をくれる人はなかなかいない得難い友人です。すべてを答えられない自分の非力さを悔やむことはないわけではないけど、こんな僕でも凄く刺激になるのだから、こういうイベントの場に参加できれば、びりびりいろんな刺激を得られると思う。そんなわけでCodeFest 2005 JAPANを影ながら応援します。
確かに、発端になったであろう佐渡さんの記事での引用「コードも書かない人に言われたくはない」は確かに訴えるものがある刺激のある言葉ではあるけど… Tシャツ作ったら買います。(笑)

2005年05月15日 日曜日

Donald E. Knuth / 「コンピュータの数学

そんなわけで昨日からの続き。解析学が好きな自分としては、連続関数を対象とした関数論や微分方程式も面白い(あくまで現実の物理現象とつながりが必要)のだけど、数列や漸化式(懐かしい響きだ)、級数といった離散数学もなかなか面白い。(しかもこっちの方がコンピュータのアルゴリズムに通じている。) この手の話題は、行き着く本があって、Knuth先生のThe Art of Computer Programming vol.1に始まる百科事典というか歴史書のような本に行き当たるので、2年ほど前の新訳登場時から、_買わねばならない本だ_と思っていたので、昨日大宮ジュンク堂に出かけていったわけだ。
お値段もお値段なので、買おうか買わないか悩んでいたのだけど、The Art of Computer Programmingのとなりにこの本は置いてあった。題名は「コンピュータの数学」。原書のタイトルは「Concrete Mathematics」だから抽象数学ならぬ「具象数学」という変わった題名の本。ざっくり見てThe Art of Computer Programming vol.1の最初の半分を詳しく書いた本のようだ。お値段は同じくらいなので、こっちを買うことにする。
The Art of Computer Programmingの場合はいつも本棚に置いておいて参照すべき本のような気がする(それゆえ、必要なときにいつも立ち読みして読みふけっておしまいなのだけど)。やっぱりやはり教科書ではないと思うので、教育に適しているとは言えないと思う。ちょうど間を埋めるような本が欲しかったと言うわけだ。
スタンフォード大学では、Concrete Mathematicsという科目(1970年から, 86年までの半分の年はKnuth自身による講義)があるらしく、The Art of Computer Programming vol. 1のFundamental Algorithmsを使って講義していたらしいのだけど間を埋めるような本として、Knuth先生はこの本(だいたい600ページ)を約1年で書いたという。後ろに付いている参考文献の量を見てもただならぬ分量なだけに、やはり超人なのである。
1年以上は遊べる本だろうと思って購入してみた。いやぁ1ページ目から凄く面白く読んでいる。昨日の話題の和分・差分については、「2.6 離散系と連続系の微積分学」という所にまとまっている。あと手続きとかパズルの解法としての漸化式というのも問題としては面白い。語り口もなかなか良いので、お金と時間がある人にはお勧めするし、特にコンピュータサイエンスを志す(物理でも数学でもOKだけど)大学生は読んでかなり得るところは多いと思うし、変わった本で面白いので読んでおけと言いたい。また高校生から大学の初年度付近の世話をする人にはネタ本としておすすめかもしれない。僕としては、久しぶりに数学の面白い本を買ったので楽しみたいと思うのである。

2005年04月23日 土曜日

無線LANを使えるようにする

今日の攻略目標は我が家のノートPCの無線LANアダプタ。以前は、NdisWrapperを使っていた。これはWindowsのネットワークドライバをLinuxで使えるようにするという何とも凄いドライバなのだが、でかいファイルの転送(apt-getなど)を行うとドライバごとお亡くなりになる痛い問題があった。(メール読むくらいだったら全然OKだけど。) 最近ネイティブのドライバの安定しているという話を、先週のMozilla Party 6.0で三浦さんに聞いたので、早速インストール。手順は以下の通り。ちなみに我が家はDebianです。

  1. Intel PRO/Wireless 2000BG Driver for Linuxからドライバをダウンロード(正確には、apt-get install ipw2200-source)
  2. module-assistantを実行。手順に従ってipw2200を選択、ビルドまで行う。
  3. http://ipw2200.sourceforge.net/firmware.phpからファームウェアの最新版をダウンロード。
  4. ダウンロードしたファームウェア ipw-2.2-*.fwを/use/lib/hotplug/firmware/ にインストール。
  5. 先ほどビルドしたdebパッケージをdpkg -iでインストール
  6. /etc/init.d/hotplug startするとipw2200がeth3として見えるようになる。
  7. あとは/etc/network/interfacesを適当に設定
  8. 必要に応じて/etc/hibernate/hibernate.confなども修正
  9. これで、ifup eth3 するとネットにつながるはず。
    /etc/network/interfacesの書き方はこんな感じ
auto eth1
iface eth1 inet dhcp
wireless-essid ESS_ID
wireless-mode Managed
wireless-key s:Key

ESS_IDとKeyはそれぞれ各自の無線LANアクセスポイントで設定しているものを入れる。Keyの前にs:を付けるのを忘れないこと。

2005年04月22日 金曜日

国際化 R(GNU R-2.1.0)

4月18日にリリースされたR-2.1.0では正式にI18N対応になってますね。これまで日本語を使うだけで、それなりの苦労があったけど、今後はそんな苦労も無くなるのね。ああっ、すばらしい… 国際化をされた皆様ありがとうございます。これからがんがん使わせて貰います。ということで、ダウンロードしてみた。

Excel、有効桁が足りないみたい…

昨日の問題を乗り切ったかと思ったら、新たな問題を与えられてしまった。今日の課題は2個の独立変数(x, y)に対する測定値 z を、xとyの3次項までの多項式で当てはめを行いたいとのこと。xとyは10^8程度の大きさなので、3次項まで計算すると3次項の係数を計算するための必要な桁数は結構な桁数が必要だ。Excelで多重回帰してみたけど、欲しい値から若干ずれている。他の系での計算結果と比較すると言うことで、Mathematicaの非線形回帰(NonlinearRegress関数)とRの非線形回帰(nls関数)で計算した結果はほぼ欲しい値と一致しており、Excelでの計算で有効桁がまるで足りてないようだ。この手の計算にはExcelはやっぱ使うべきではないのかもしれない。
まぁ今回の場合は、xとyの値適当にスケールすればいいだけの話だけど…

2005年04月14日 木曜日

今日は1日中XML/HTML周りの調査

サイト全体の見直しを考えていて、これまで積んできた日記を中心とするデータの再利用を行うため、XMLやXHTML周りの調査など。うちの日記は、僕が書く際になるべくHTML4 Strictになるように書いているので、扱いやすいデータだと思うのですが、任意に何個かのファイルに対してHTML Tidyをかけてみた。割とすんなりとXHTML1.0 Strictに変換できることが分かったので、これで処理してみることにする。ざっくりと使えそうなTidyの設定ファイルは以下のようなもの。