<< 2007/04/ 1 1. とりあえずしばらく起業はたぶんしないと思うけど
2 3 1. S5 を使うなら Camino より Firefox がよい
4 1. Pager が microformat に対応するとちょっとかっこいいかも
5 6 1. 最近 awk をよく使う
7 8 1. 夜桜行ってきた
9 10 11 1. screen + emacs c/s 生活始まる
12 13 14 1. 珍しい Dav クライアント
15 1. メントレGゴールデン
16 1. 言語の互換性と難民発生率
17 18 19 1. APOP 解読成功らしい
2. どうでしょうClassic ヨーロッパリベンジ
20 21 1. ちょっと疲れて手が進まない
22 1. Diigo って API ないのか?
23 24 25 26 1. __PHP_Incomplete_Class を防ぐ富豪アプローチ
27 1. 唐突にまとめ
28 29 1. 身体に染み付いたテンポ
2. 時間ができたのであれこれアップグレードとか
30 1. Web 上のリソースの賞味期限
>>
トップ «前月 最新 翌月» 追記

2007-04-01 [長年日記]

_ とりあえずしばらく起業はたぶんしないと思うけど

普段はどちらのサイトの記事もスルー力を発揮しまくってるんだけど、今回はどちらもそれなりに真実を含んでいてふんふん、と思った。

そんでもって両者の違いはプロダクトをゼロから作れるかどうか、なのかなぁという気がした。これは Dan の中の人がプロダクトという言葉を使っているからそのまま拝借させてもらっているんだけど、Dan の中の人はプロダクト、GIGAZINE の中の人はサービスを作ろうとしているのかなという感じ。

GIGAZINE というサイトを見れば分かるようにこれは継続して自分のリソースを割き続けなければ成り立たない構造をしている。対して恐らく Dan の中の人の作るプロダクトはそれ自身が価値を生む構造になるのだろうなという気がしている。まぁたぶんにプログラマ的な発想というなんと言うか。最近はソフトウェア産業もオープンソースでサービスとしてサポート業務を付加、というパターンが多くなってるんでしょうけど、プログラムを作るという行程は一つのプログラムに同量のエネルギーを注ぎ続けなければいけないものではない。ガッとやる時期と抜く時期が交互にくるような感じだ*1。対してサービス、特に人間相手のサービスというのはそこまでメリハリはつけられない。手の掛かるケース掛からないケースはあるだろうし、ある程度はサービス提供者のスキルによって負荷は増減するが、例えば「しばらく何にもしなくていい時期」なんてものはまず生まれない。

こうした背景があるから GIGAZINE の中の人は続業的な発想に、Dan の中の人は非続業的な発想になるのではなかろうか。

しまった。エイプリルフールなんだから「起業しますた。」にしておけば少しは注目してもらえたかもしれないのに。

Tags: 生き方 Biz

*1 というかそもそも Dan の中の人は日本有数のハッカー。同じことを頑張り続けるなんて発想で業を起こすとは思えない。


2007-04-03 [長年日記]

_ S5 を使うなら Camino より Firefox がよい

S5 を使う機会があったんだけど、これがことのほか重たい。

使い終わってから気づいたけど、Firefox の方が断然キビキビ動くんだなぁ。JavaScript のメモリ管理周り?いずれにせよ、

普段使いは Camino でも S5 を使うときは Firefox にしろ

ということか。いや今度使うときなんかあるんだかないんだかまったく分からんけど。

ということで Firefox + S5 Tips

  • JavaScript を切ると長い1ページのまま表示できるので、全体を考えている間は JavaScript を切っておく。
  • それに加えて Document Map をインストールしておくと全体像の把握がめちゃくちゃ楽に行える。絶対入れろ。
  • incremental はできるだけ内側の要素に
    • CSS の効果が分かってないとちょっと見た目が変になっちゃう。ま、口でフォローすりゃいいんだけど。
  • 多少のミスはネタにしろ(あ、S5 Tips じゃねーなこれ。)

2007-04-04 [長年日記]

_ Pager が microformat に対応するとちょっとかっこいいかも

channel の仕組み以外にこれはいい!と思うものがあまりない Pear ライブラリ(ひどい)だけども、Pager は単純に楽なので重宝している。が、HTML の生成を全部委ねちゃう形になるので、search-results-example - Microformats 対応させようと思っても中をゴリゴリいじるか、できあがった HTML をもう一回分解して処理しないといけない。それだとなんかださいし面倒くさい。

Tags: PHP PEAR

2007-04-06 [長年日記]

_ 最近 awk をよく使う

NeoOffice が重いので、DOS 時代のように awk を使う。フォーマットとしては視認性のよいタブ区切りテキストが多く*1、sed, sort, たまに Perl も併せて使う。結果を less で確認し、ちょっと違うなぁ、とワンライナーを修正する。とにかく速い。待たされることがないのでストレスフリー。Excel でくれと言われたときだけ NeoOffice から Excel 形式で保存して渡す。

いやー。っていうかね、あのフィルタとかソートとか使い勝手がよく分からなくって。コマンド叩いた方が早いんだもん。

脈絡がないが最近 SAX ライブラリを使ってみていた。なんだか awk のパターン・アクションの構造に似ているような気がした。Sax ライブラリを wrap してやって、グローバル変数の代わりにクラスのメンバ変数を利用すればそっくり。パターンに該当する部分が

  • 要素の開始タグ
  • 要素の終了タグ
  • テキストノード

に限定されていると思えばよい。

cf. Simple API for XML - Wikipedia

Tags: Awk

*1 ここ笑うとこね。BEGIN {FS="\t"; OFS="\t"} しとくこと。

本日のツッコミ(全2件) [ツッコミを入れる]

_ Rocco [xgawk (xmlgawk) というのもありますよ。 XML (HTML) のタグ単位で awk が扱えます。]

_ wtnabe [いやぁ存在は知ってるんですよ。でも素朴な疑問なんですが、awk で XML いじれて面白いんでしょうか?(^^; ..]


2007-04-08 [長年日記]

_ 夜桜行ってきた

そういや兼六園が無料解放だったなぁと思って夜に行ってみた。

駐車場がめちゃ混みだった。日曜の夜ならそれなりにイケるかと思ったけど甘かった。もっと離れたところに停めるか、やっぱバスかのぉ。

肝心の桜は兼六園の中より実は広坂から兼六園下へ向かって行く途中がいちばんきれい。あと今まで気づかなかったけど瓢池のライトアップはすげーキレイだった。それなりの装備で写真を撮っている人もいたけど、やっぱデジカメだよね。

どうも今年は開花が早いと言われ過ぎたせいか、いつまで経ってもあんまり咲いて来ないなーという印象が強くなってしまった。あったかくなったり寒くなったりしている割に強い雨や風もないので、長く楽しめていいっちゃいいんだけど。

ちなみにまったく油断していたのでカメラを持って行くのを忘れてしまい、とりあえず携帯で撮ってみたけど何が何やら分からないものしか撮れなかったので写真はないです。何年か前の花見のときには先代のデジカメが本格的に壊れていることが発覚したり、どうも相性がよくないな。

しかしみんな携帯で写真撮ってるんだけど、アレって自分がやってみて思ったけど、結局みんなそれほど写真を撮りたいわけじゃないんだよね、たぶん。写真を撮る機能をついたモノをたまたま持ってるから撮ってるんだよね。だって全然まともに撮れないもの。

ついでに城内にも入ってみた。だだっ広くて寒々としていた。少ないけれど桜の咲きそろい方は兼六園よりきれいだった。沈床園の宴会は、音はそれなりに聞こえたけど人数的にはそんなでもなかった。

帰りしな、石川門の前で三脚立てたじーちゃんとすれちがった。やたらきれいなライカだった。

Tags: 日々

2007-04-11 [長年日記]

_ screen + emacs c/s 生活始まる

以前 mule-ucs を使いたくなくてしょうがないという話を書いたけれども、どうしても mule-ucs を使わなくてはいけないシーンが出てきた。泣ける。

このクソ重たい起動を待つことはできない。終了しないで使えばいいと言ったって、こちとらすべての作業を Emacs の中で行えるほどの強者ではない。しかしそこでピンときた。

「Emacs ってサーバにならなかったか?」

そうです。なるんです。

M-x server-start

するだけで Emacs はサーバとして待機するようになります*1。クライアント側は

emacsclient FILENAME

するだけ。サーバ動作している Emacs で

C-x #

すると emacsclient に編集終了を教えることができるので、例えば w3m + emacsclient なんて使い方も可能。(ただしこれではファイルを閉じないので、閉じるのであれば普通に C-x k の方がよい。閉じる際にクライアントが居るけどいいか?と聞かれるので、そのまま閉じてしまえばよい。)

しかし再び問題が。

Emacs のセッションを emacsclient を叩いた画面で拝めるわけではない。

Emacs の client/server のイメージ

のであった。要するにサーバとして動いている Emacs の画面は出しっぱなしにしておかなきゃいけないってこと。emacsclient を起動した画面は 「Waiting for Emacs...」と言ったきり黙りこくってしまうのだ。これは嬉しくない。まぁ幸いなことにこの mule-ucs を使わなきゃいけない Emacs は手元の localhost で動かすわけじゃないので、Emacs 用の screen window も一緒に動かし続ければいいんだな。

ただ、単純に screen を起こすだけでは screen -ls したときにどれが Emacs の動いている screen か分からない。そこで今度は screen 上で

:sessionname emacs-server

って打ってやる。そうすると

There is a screen on:
       24693.emacs-server      (Attached)

みたいに人間が識別できるようになる。この session を dettach/attach してやればよい。現在の screen の session name を確認したい場合は引数を与えずに

:sessionname

と打つ。

面倒でも、mule-ucs の起動を待つよりマシなのだ!

[追記] ついでに、エディタとしてしか使っていなかったことを反省してちょこちょこ試してみた。期待通り M-x calc と M-x calendar は存在していた。なるほどな。便利便利。というか bc があるんだからわざわざ OSX の電卓起こすことなかったんだよな。よしよし。トシを取ってもたまには環境を見直さないとね :-)

あ。ちなみに、vc-svn は使えている。vc-svn のために 22 にしたいと思っている人はよく調べてみた方がいい。

Tags: Screen Emacs

*1 UNIX ソケットを使える場合の話。Windows で Meadow な場合は UNIX ソケットは使えないので gnuserv が必要です。XEmacs とか GNU Emacs じゃないやつもそうなのかも。そこまでは試していないので分かりません。


2007-04-14 [長年日記]

_ 珍しい Dav クライアント

dddav - GUIのWebDAVクライアント for Windows

Windows なのに neon とかを利用しているのはなんか珍しい気がする。ということは基本的な挙動が Linux 系のものと合うってことかな? 「できること」を見ると文字コード周りは独自に作り込んでる?

Dav クライアントって個人的には Dreamweaver がいちばん進んでると思ってる*1んだけど、ああいうのが出てこないかなぁと期待を込めてご紹介。

Tags: Web MS

*1 なんでみんなロックとかまともに対応しないんだろう? SMB と同じ機能しかないなら SMB でいいじゃん? 文字コード周りもなんかグダグダなままだしさぁ。


2007-04-15 [長年日記]

_ メントレGゴールデン

レストランのライティングは深夜の方がよかった。あの変なピカピカフィルタはアレだったけど、ライティングは絶対深夜の方がよかったよー。ライトが増えて画がフラットになってるじゃないか。こういうのもったいないと思うんだなぁ。少なめのライトでドラマティックに… NHK とかね、ああいうのがいいんだね。やっぱね。レンブラントライティングが大好きだから。

Tags: TV 日々

2007-04-16 [長年日記]

_ 言語の互換性と難民発生率

www.textfile.org - Perl4難民

こういう方向に話が展開するとはちょっと思っていなかった添削ネタ。そうか。自分を難民と自覚している人がいるんだな。ちょっと新鮮。

かく言う自分もほんの数年前までは Perl 4 時代の知識しか持ってなかった。ネイティブの(最も得意な)言語は Perl だと言っていたにも関わらず、である。あぁ恥ずかしい。その後どうして Perl 5 の知識に追いつけたか(と言ってもさわり程度なんだけど)と言うと、これは PHP の class 構文の動きに納得いかなくて、Perl で書き直してみようと思い立ったからだったりする。*1

つまり、外的な要因なのだな。

例えばリンク先の人みたいに補助的に使っていて Perl 4 時代の機能だけで困っていないのであれば、Perl 5 の新しい機能を利用したり新しいスタイルに変更したり、と言った行程はそりゃ避けたくなるもの。何しろ Perl 5 では Perl 4 時代の記法がほとんどそのまま通用するから。

そう。難民は、Perl の歴史の長さと Perl 5 の互換性の高さが生んでいるとも言える*2。例えばこれが Ruby や Python であれば、まだ Perl 4/5 時代ほどの熟成が進んでいないので、互換性を捨てても前へ進むと言った決断を迫られるシーンが出てくる。「そこ」で立ち止まることはできないのだ。*3もちろんそれが一概にいいとは言えないというか、むしろ仕事で使っている人は互換性が最重要ポイントだったりもする。いつ書いたかも覚えていない Perl 4 スタイルの管理用のスクリプトが黙って動き続けてくれるとしたら、そりゃやっぱ嬉しいよね。

Tags: Perl

*1 Perl の OOP は非常にトリッキーで理解するのに難儀したが、おかげで改めて Perl の自由度の高さに感心もしたし、その後 Ruby や JavaScript の学習を通じて PHP 3/4 の OOP がカタクて使い勝手がよくないくせにアクセス権限はスッカスカという状態に驚くこともできた。

*2 日本ではレンタルサーバの超がつく保守的な姿勢もあるかな。未だに Perl 5.004 とか 5.005 とか言ってたりするんだもの。Perl 5.6 以降とか 5.8 以降のおいしい機能が全然使えないんじゃ魅力ないですよ。

*3 この先 Perl 4/5 時代のような時期もいつかくると思うけど。


2007-04-19 [長年日記]

_ APOP 解読成功らしい

APOP が破られたっていうニュースを小倉さんが話している。最初おーずいぶん勉強してるんだなぁと思ってたんだけど、単にニュース読んでただけなのね。

でーもー。

APOP はパスワード以外はだだ漏れ*1だし、SSL なんかの公開鍵暗号とは安全性のレベルが全然違うんだから、APOP のニュースだけでパスワードが破られた!って大騒ぎするのもどうだーと思ったりする*2けど、本当にパスワードがバレると何がまずいかっていうと芋づるでいろんなサービスの内容が全部ぶっこ抜ける可能性が結構高いっていうところだったりするよね。ぱふ。(でんかちゃん風)

つか APOP って単なる MD5 でしたっけか。MD5 クラックが大騒ぎになってからもうそれなりに経ちましたなぁ。(遠い目)

有料で over SSL オプションを提供したらそれなりに喜ぶ(人|会社)いるかも。

[追記] APOP って POP サーバに「やぁ」って言った瞬間のタイムスタンプと共有鍵でダイジェストを作るのね。純粋にダイジェストしか情報がない状態からさかのぼれるものなのか? なんかもっと制約が厳しくなってるだろうと思うんだけどなぁ。

出てきた出てきた。

なるほどね。やっぱサーバ詐称しなきゃできんわな。

Tags: Security

_ どうでしょうClassic ヨーロッパリベンジ

最新作のすぐ後からヨーロッパリベンジが始まるわけです。放映スケジュールの問題なわけですけど。

いやぁこの頃のミスターは喋ってるなぁ。まだガンガン仕切ってるなぁ。

Tags: TV 日々

*1 そういやいっとき FTP の認証だけ ssh portforward 経由にするのが流行ったな

*2 Web 上のサービスを利用する際のパスワードの話とごっちゃになってしまっている。


2007-04-21 [長年日記]

_ ちょっと疲れて手が進まない

というわけでインプットの比率を上げてみる。公開することの意味 - まちゅダイアリー (2007-04-16) にも書かれているが、自分の場合はアウトプットしないとインプットしきらな(消化できな)かったり、インプット*1が足りないとアウトプットも減ってくるという傾向があるので。出力が落ちてきた場合はとりあえず燃料を足せ、と言い聞かせている。

ゴッタ

早く新しい本屋できないかなーなどと思いながら TSUTAYA をブラブラする。ゴッタ を発見。おぉ。これは以前聞いていたはずなのに CD もリップしたデータも手元になくて、いったいどうやって聞いていたのかも分からないシロモノである。ということで、入手し直し。

いいねぇ、このちょっとダークに熱い感じが。アナム&マキを喜んで聞いていた時期はちょうど転換期だったっつーのもあるんだろうけど。

SQLの絵本―データベースがみるみるわかる9つの扉(アンク) シャーロック・ホームズの冒険 完全版 Vol.1

で、これを聞きながら読むのはお気楽に SQLの絵本―データベースがみるみるわかる9つの扉(アンク) で。スバらしい。このギャップ。ついでに映像を シャーロック・ホームズの冒険 完全版 Vol.1 など。いやーいいな。充実充実。つか完全版てなんだ。うわー調べたらいっぱいあるなぁ。DVD-BOX が6万とか言ってるな。。。うーん。欲しいなぁ。

*1 情報量という意味だけでなく、刺激という意味でも


2007-04-22 [長年日記]

_ Diigo って API ないのか?

いい加減 del.icio.us と diigo の手動同期をなんとかしたいと思ってはいるんだけど、具体的に作業に取り掛かれるメドは立っていない。

んだけども、一応見るだけ見てみた。

あれ?

diigo って API なくね?

ええぇぇええぇぇ。じゃあ自動で同期しようと思ったらブラウザの操作を自動化するという方向に行かざるを得ないの? 例えば普通の post 画面の操作を自動化するとか、diigolet の操作を自動化するとか? えー。やだー。サーバ上で自動化できないじゃん。Firefox と mozrepl 入れろってか。やだなぁ。

いっそキャッシュ検索を持ってる Yahoo! ブックマークとか Google ノートブックに移行すべきなのかとか思ったけれども、Yahoo の ID はなんとなく取りたくないし、Google ノートブックは Firefox extension に依存しているので Camino では使えない。待てこら。もうちょっと他のサービスも真面目に調べた方がいいかなぁ。

とりあえず条件は

  • 通常の post はブックマークレットでできること
    • Camino で使いたいので Firefox extension はあったら便利っていう程度に抑えておいてもらわないとダメ
  • API があってブラウザ使わなくてもデータの出し入れが自由に行えること
  • キャッシュ検索できること

くらいなのかな?

あれ? なんか Diigo でタグの編集ができなくなった。user css で消しちゃった要素の中に入ったのかな?

Tags: Web Diigo

2007-04-26 [長年日記]

_ __PHP_Incomplete_Class を防ぐ富豪アプローチ

調べると session start が auto になってて必要なファイルが読み込めてませんとかいう間抜けな事例が多いこの問題は、別に session とは無関係にオブジェクトのシリアライズを使う場面でよく出くわす。

原因はいたってシンプルで、unserialize() しようとしているオブジェクトの必要としているファイルがすべて揃っていないとこういう現象が起きる。

そもそも unserialize() してできあがったオブジェクトというのはクラス名そのものは保持しているけれどもクラス定義も、もちろんメソッドも保持していないオブジェクトで、自身が保持しているクラス名の定義を、現在読み込んである PHP スクリプトから探し出して当てはめようとする。

当然この段階で include されていないクラス定義を利用することはできず、結果、__PHP_Incomplete_Class という特殊なクラスの宙ぶらりんなオブジェクトができあがる。くり返す。これは変数しか持っていない。メソッドと変数をパッケージにしたものがオブジェクトなのだから、メソッドがないオブジェクトなんて何の役にも立たない。

解決方法も簡単である。unserialize() の時点で必要なファイルがすべて読み込まれていればよい。

でもさ。読み込んだ先のクラスを定義しているファイルで読み込んでいるファイルも、ぜーんぶ準備してから unserialize() なきゃいけないってことになったらそのクラスは生のファイルの情報については何も隠蔽してくれないへっぽこクラスだと思わないかい?

そこでこういうのはどうだろう。

  1. すべての基本になるクラスを用意する
  2. そいつに以下のコードを用意する
function __sleep() {
  $this->_included = get_included_files();
  return array_keys( get_object_vars( $this ) );
}

function __wakeup() {
  if ( is_array( $this->_included ) ) {
    foreach ( $this->_included as $file ) {
      require_once( $file );
    }
  }
}

これでとりあえずクラスを定義しているファイルを読み込み忘れて incomplete なんちゃらになっちゃうミスは防げる。何段階にも読み込んでいて何が何やら訳が分からなくなっててもクラス定義を再現できる。

あーめんどくせ。

注意1 不必要なファイルの読み込みとクラスの再定義

問答無用で利用していたファイルを読み込み直すと、オブジェクトの呼び出し方によっては不必要なファイルを読み込むことがある。単に不要なだけなら問題ないが、このとき、クラス名がかぶっていると問題が起きる。PHP は同名のクラスを再定義することができないが、これは warning などではなく Fatal Error なのでそこでスクリプトがストップしてしまう。

PHP には名前空間がないし、これを避ける方法を考えるのは、とりあえず今は面倒くさい。ちゅーことで名前がかぶってるクラスを作るときには

if ( !class_exists( 'KLASS' ) ) {
  class KLASS {
  }
}

と定義する。work around バンザイ。どちくしょう。

注意2 ファイル名のリストによる serialized object の容量増大

オブジェクトの配列など、大量のオブジェクトを上の方法で serialize すると容量のふくれ方が半端でない。その場合はそれぞれのメソッドを上書きして

function __sleep() {
  return array_keys( get_object_vars( $this ) );
}

function __wakeup() {
  // 絶対に必要なファイルを自力 include
}

にしておくとよい。あるいはファイル名のリストを serialize して zlib で圧縮するという方法があるかもしれないが、serialize したオブジェクトの容量のふくれ方や必要なファイルの特定しやすさなどを加味して決めればよい。

Tags: PHP

2007-04-27 [長年日記]

_ 唐突にまとめ

一段落ついたので最近自分とその周辺を振り返って感じたていたことをまとめてみる。

  • Subversion 便利
  • CLI 便利
  • rsync 便利
  • Emacs 便利

Subversion 便利

単純な話、CVS より Subversion の方がクライアント環境が充実している。CLI の人ばかりなら CVS でも Subversion でも使える機能に違いがあるだけで大きな問題はないが、そうでない人が居るなら CVS より Subversion の方がよい。Subversion より高機能なものもあるだろうが、クライアントの対応はやはり今のところ Subversion がイチバンだろう。また Subvserion は使えるプロトコルに http があり、ネットワークに乗せやすい。

ただし cvs2svn で何も考えずに既存のリポジトリを変換してしまうと svn:eol-style が native になっちゃって Windows の人の環境では CRLF になっちゃって、それがあとで影響する可能性があるので注意が必要。

やっぱ CLI 便利

扱うべきオブジェクト(ファイルだったりそうじゃなかったり)が大量にある場合は GUI より CLI の方が効率的に作業できることが多いなぁと思った。

  1. 履歴によって同じ、あるいは似たような作業のくり返しがやりやすい
  2. ファイルの書き換えに関しては、同じアクションで実際にファイルを書き換えるのか、結果の表示だけを行うのかなどのスイッチが行いやすく、テスト -> 本番という段取りを踏みやすい
    • sed 発祥の -i オプションが便利すぎ
  3. パイプによって必要なデータだけを相手にしやすい
  4. 必要なデータ、情報をテキストとして抜き出しやすい
  5. 重くなって作業不能とかいう事態にまず陥らない

特に最後の二つは重要である。

重くなって作業できなくなっちゃうという現象は、立ち上げっぱなしにして使うアプリ*1なら基本的に必ず起きると見ていい。最近だとタブで大量にページを開きやすくなったブラウザなんかもそういうケースが多いような気がする。ま、とにかくそういうことがちょくちょく起きるというのはこれを読んでいるような人はよくお分かりのことと思う。特に大量のオブジェクトを扱うケースなんかでね。

しかし必要なときに立ち上げてフィルタ動作して慎ましく終了するような CLI のツールの場合、そういうことはない。いや実際には自分でやろうとしている処理が悪ければ全然結果が返ってこないとかいうことはもちろん発生するのだけれど、今まで普通に動いていたのに、別な作業をやろうとしたときにモタモタされて作業が進まないってことはほぼないと言っていいと思う。簡単な話、shell が重くなって全然作業できないなんてことは普通起きない。

「テキストとして抜き出しやすい」のも本当に大切なことで、作業のリストアップと作業ボリュームの検討をする人と実際に作業する人が違う、あるいは検証する人が違う、なんてケースではとても重宝する。作業リストを起こしやすく、「見える化」させやすいのだ。

GUI のエディタや IDE で何が不満て、検索した結果見つかったファイル群のリストをテキストとして落とせないことがほとんどである点だ。何もかも自分で作業するとかそのまま作業に移って結果さえあればいいって言うんならそれでもいいんだけど、中間の段階でチェックを掛けにくいのは「兵隊」の道具としては扱いにくいんだよなぁ。

※ 「戦士」の武器としてはいいかもしんないけど、自分で使っていないからそこら辺はよく分からない。

ついでに、ファイルのリストも内部でオブジェクトとして抱えちゃうタイプの(例えば eclipse などの)IDE は履歴管理していないファイルでもファイルが大量にあるだけで動作が重くなっちゃうのでとても不便だなと思った。(プロジェクトの管理方法をうまく設定すれば遅くならないのかな?)

便利だなと思う CLI の使い方サンプル

xargs をやっとつかめた。今まで知らずに済ませていたのが本当に恥ずかしくなった。数年前のときもこれ知ってればもっと速かったんだなぁ。

find . EXPRESSION | xargs grep -Hn PATTERN

で、修正の必要なファイル名と行番号と修正箇所を抜き出しておいて

find . EXPRESSION | xargs perl -i.bak -p -e 's/PATTERN//'

で、実行、なんて感じ。*2あるいはその前に

find . EXPRESSION | xargs perl -p -e 's/PATTERN//' | less

で確認してもいいかな。動作が複雑になりそうならスクリプトを起こして使う、という具合に簡単に切り替えられる点も便利。(というか複雑なパターンはエディタや IDE の置換機能で乗り切れないよなぁ。もちろん不必要な変換が起きていないかどうか diff で確認しておくのもお忘れなく)

修正の状況も

svn status -v | awk '$1 =="M" {print $NF}'

とか

svn diff | awk '/^Index:/ {print $NF}'

とかでリストをすぐに作れる。便利便利。

diff も GUI のツールはファイル全体を対象にして開いちゃうことが多いと思う(もちろんそうなっている方が便利なケースも多々ある)んだけど、あれも複数のファイルの変更の全体像を確認するのには不便なんだよな。というか

svn diff | less 

のように使えないと commit log 書くときや不必要な修正をし過ぎていないかどうかの確認のときに不便だと思うんだけど、そういうのは IDE 派な人はどうしてるんだろう? 単純に疑問。変更したファイルが10個あったら一つずつ diff の作成を10回くり返すの? マジでそうなら IDE 使うなんて信じられない。

CLI はキーボードから手を離さなくても使える

IDE 使いの人の作業を見ていると何かするたびにマウスに手が離れて、しかも目的のオブジェクトをポイントするのに時間が掛かるといったことがちょいちょい起きている。本人は疑問に感じていないのだろうが、どうもハタで見ているとイライラする。どうしてそんなに作業のテンポを悪くする要素ばかりなのだと。

もちろん習熟度によっても違うだろうし、マウスカーソルを合わせただけで情報を取得できるツールチップなど CLI や curses では逆立ちしても実現できない機能などはかなり便利だと思う。GUI 全般やマウスそのものを否定するようなアホな話がしたいのではない。

しかしやはりインターフェイスには向き不向きがある。すべての作業において Terminal さえあれば十分と言うつもりはない。ただ Terminal に否定的な人や嫌悪感を抱いている人にも、「あなたの作業スタイルはあなたが思っているほど便利でも速くもないのだよ」ということは知っておいたもらいたいのだ。決してオイラが old type だからとか新しい IDE が理解できないからこういうことを言ってるわけじゃないのよ。

※ どこかのブクマコメントかなんかでこの手の話題を見かけたような気がするんだけど、なんだったか忘れてしまった。ちなみに自分でもデータベースの中身をチェックしたり簡単な UML を書く際に eclipse は使っている。ただし Emacs ほど長い時間は使っていないし達人の技などは知らないので、勘違いはあるかもしれない。

rsync 便利

いろいろクセがあって個人的には意外とハマる rsync だけど、やはり使えると便利。まぁ単純に .svn などの特殊なディレクトリやファイルを除外してネットワーク越しにミラーリングできればなんでもいいんだけど、こういうツールを何か一つ押さえておくのは大事だなと思った。Explorer や Finder の機能だけしか使えないってんじゃ話にならない。

Emacs 便利

これは余談。今まで

  • ediff-buffers
  • vc-mode

など開発者なら使ってて当たり前だろと思われるようなものを使わずに全部コマンドだけで済ませていた。いやこれはかなり恥ずかしい。いや Emacs のような巨大なツールなんか使いこなせなくて当然だから恥ずかしくないと言えばちっとも恥ずかしくはないんだけど、使い始めたらどっちも手放せないな。(vc で log とか化けまくっちゃうのはなんか設定が足りないのか、そもそも UTF-8 で動作させていないとダメなのかな?)

Emacs 22 のカラーカスタマイズは以前 FreeBSD の Emacs で確認済みなので、近いうちに Emacs も入れ直して手元の環境をすべて UTF-8 に統一しちゃった方がいいかなーと思い始めている今日この頃。

なんて言ってたら Dan の中の人が CotEditor をベタ誉めしている*3。おぉ、確かにこれはいい。今度薦めておこう。自分でも mi の代わりに入れておくつもり*4。まだちょっと負荷テストが足りてなさげで、大量のファイルを開いたりすると途端に重たくなっちゃうのはご愛嬌かな。

これ、桁折り位置をウィンドウ幅以外でその場で指定できるといいなぁ。

cf. AYNiMac : 自作ソフト : CotEditor 0.9.2

mi はもっさりしていて、Smultron は日本語判別がタコなのと MDI なのがイヤだったんだけど、これはどちらもクリアしているので GUI なエディタはこれに落ち着きそうだ。

*1 多くの GUI アプリや Terminal 上で動くものでもエディタなら同じ

*2 正規表現ライブラリが食い違っているのが気になる場合は全部 Perl とか。高級な sed として使うときは Perl 便利だなぁ。

*3 このエントリは書き始めたのがこの日付なだけで実際には29日に書いている。

*4 フォントは Osaka-mono ではなく Monaco 12 で。

本日のツッコミ(全2件) [ツッコミを入れる]

_  ["perl -np" と p と n オプションを両方同時につかっても、pしか有効にならない気がするのは私だけでしょ..]

_ wtnabe [おぉ? 無意識に両方付けてました。perldoc perlrun に思いっきり "A -p overrides a..]


2007-04-29 [長年日記]

_ 身体に染み付いたテンポ

※ いやぁビックリした。13時間近く寝てしまった。相当にキテいた模様。

シャーロックホームズの DVD をのんびり見始めているんだけど、オープニングの音楽が妙に早いなぁと感じていた。自分が鼻歌で歌う曲と結構テンポが違う。

なんでかなぁ、おかしいなぁと思っていたら、自分の身体の中にあったものは NHK が放送していた日本語翻訳版のオープニングで、これは本家のものよりテンポが遅いのだ。細かく言うとディレクターや原作者のクレジットがカットされていて、全体的にオープニングの映像は短くなっており、これに合わせて曲をカットしてある。で、帳尻合わせのためにテンポをいじってあるというわけだ。(てゆうか日本語版は弦の数が減ってないかい。改めて聞くとえらい軽いぞ。)

あと日本語版は意外に本編もカットされている。これも尺が違うんだな。ホームズが壁にぶっ放した跡とか意外に(ファンにとっては)重要な描写が落ちている。セリフ回しも露口さんの吹き替えはとても合っていると思っていたけど、やはり本人の声の方がホームズの気性の荒さがよく出ているような気がする。露口さんの方が more gentle だ。

ま、なんてなことをのんびり考えることができて何よりな日曜だ。

Tags: TV 日々 Movie

_ 時間ができたのであれこれアップグレードとか

  • Firefox 2
  • Thunderbird 2

テーマは Bible にした。なかなかかっこいいぞ。

あと Windows の方で

  • Adobe Reader 8
  • OOo 2.1
  • Gimp 2.2.14
  • iTunes

とか大物を次々と。

CotEditor 0.9.2 をあれこれテスト

  • MacOSX 10.3 対応で
  • Cocoa でサクサク動いて
  • 日本語の自動判別がタコでなくて
  • プレインテキストに特化している

エディタって意外となくて、なんべんもなんべんも探して全然見つからなかったのに、見つかるときは結局有名人の blog からってのがなんだか情けないというか非常に負けた感があるんだけど、それはともかく。

いいところは上に挙げた以外にも

  • 通常の文書用のエディタとしても文字数のカウント表示が便利
  • OgreKit ってすごいなぁ
  • スクリプトでの補助が簡単にできそう。あーこれはよい。elisp 書けないエセ Emacs 使い、クライアント管理もサーバ管理もやらされる田舎の何でも屋としてはこれは助かる。Perl とか Ruby で強化できるならこんなに嬉しいことはない。
    • 選択文字列がなかったら文書全体を渡すって書き方がないようなんだけど、もしかしてそういうのは AppleScript 経由で書けってことかしら。ブログでそのように返事をいただいたので頑張ってみるか。

惜しいのは

  • 桁折り位置を数字で指定できないのは不便なのと、プレインテキストを相手にするエディタなのにデフォルトフォントが monospace じゃないのはどういうことだろうか。
    • あ、Monaco で補完されるフォントが Osaka っぽいな。うーん、M+IPA でうまく表示できればそれにするか。
  • ルーラとかアンダーラインとか表示できると嬉しいな
  • キャレットじゃなくてカーソルを表示してくれると嬉しいな

そんな感じ。コード書かない人たち向けの OSX 用のエディタでオススメってはっきり言ってなかったんだけど、これなら薦められると思った。(次点は mi。)スクリプトで編集支援を追加しやすいのもいい感じ。これは標準で様々なスクリプト言語が組み込まれている OSX ならではですな。Windows のエディタでこういうことやられてもたぶん喜ぶ人はあんまりいないだろう*1

もう一つ残念な点。OgreKit って複数ファイルの検索に対応していない。最近エディタで複数のファイルにまたがって検索する、なぜか grep検索と呼ばれる機能は割とポピュラーなので残念。また、CotEditor 自身がフォルダをドロップして開くことができない。しかもフォルダをドロップして開こうとすると authopen というプロセスがプロセッサを食いつぶしてしまう。うーん、食いつぶしちゃうのは困るな。

Tags: OSX 日々 Text

*1 だから独自マクロが発達するわけだけど、マクロ言語はほとんどの場合使い回しできなくてつらい。lisp にしろとか Ruby にしろとは言わないので、Lua ぐらいに落ち着いてくれないだろうか。とか使ったこともないのに書いてみるテスト。


2007-04-30 [長年日記]

_ Web 上のリソースの賞味期限

ときどきの雑記帖 リターンズ 2007年04月29日

自分は二つのことを意識しています。

  1. 古くならない情報を載せる
    • 古くなっても構わない情報を載せるってことです
    • PC説教講座ではこれを基本にしています。が、そうでないコンテンツもあります
  2. 古くなっていることがはっきり分かるようにする
    • 年月日がはっきり分かるようにする
      • tDiary は日記作成日が自動でセットされるのでだいたい問題ない
      • Wiki を使ったものは last modified そのものが自動的にセットされるのでたぶん問題ない
      • 説教講座もこれを目指しましたがよく分からなくなっちゃってるものも結構あります
    • バージョン番号がはっきり分かるようにする
      • まぁだいたいは OS やアプリについて書いているので、これらのバージョン番号を明記するようにしています。全部書けているかどうか分かりせんが
Tags: Web