2006年3月アーカイブ

入社1年につき

2005/04/01 入社ということで、1年がすぎた。

1年を見事失敗で締めくくった訳だけど、もう言う事なし。なんも成長してない…。

なにが身に付いたんだろう?

  • CVS と SVN を使うようになった
  • Emacs を使うようになった
  • デザインパターンを勉強した
  • やたらと本を買った
  • やたらとあたらし物好きさを発揮した
  • RSS を触り続けた
  • BLOG を書き続けた
  • Wiki を使うようになった
  • Firefox を使うようになった
  • グループ開発を経験した
  • アジャイル開発を経験した
  • タスク管理をするようになった
  • rsync を使うようになった
  • 開発環境を仮想マシンにした
  • とか、とか、とか

…、経験しただけ?はぁ、足りない物ばかりでどうしようもないわ。で、反省点はいっぱいあるけど、とにかくどうにかしなきゃいけないのは、『注意力散漫』なところ。

何かをする前に、1回止まって紙に書くってのはだいぶ習慣づいた。ただ、それは1人での作業とか、自分がメインになる場合だけっぽい。自分きっかけな作業の場合、事前にやる事を整理して事を進められるんだけど、誰かきっかけの作業をサポートする場合が駄目。どうも、『サポート』ってなるとぼーっとしてしまう。『サポート=監視員』って考えて慎重に行動するようにしないと。ぼーっとしてたら溺れた人を助けられない。そんな感じで。

ペア作業であっても、主導権を奪うくらいの勢いで『やる事』を確認すべきかもしれない。ペアを組む人には申し訳ないけど、最初にやる事を説明してもらって、自分の中で消化できてから事を進めるようにしないと、結局似た失敗を繰り返す気がする。メインじゃなくなった途端に人頼り(人任せ)なスタンスをとってしまう悪い癖をちゃんと直したい。

本当は、『〜なアプリを作る!』とか『〜なサービスを始める!』とか『1億円稼ぐ!』とか言えたらいいんだけど、まだまだ精神修養の域を抜け出せないようです。自分では否定したいんだけど、やっぱ『いまどきの若者は…』って言われる人なのかなぁ。

さて、命からがら生き残った形だけど、来年にはもうちょっとゆったり構えられる位になりたいもんです。

my hatena bookmark on 2006-03-30

テンプレートを利用してページを表示する際に、Smarty 修正子の escape をデフォルトの modifier として登録したりする。

何も考えずに escape:html とかすると問題が起きる場合がある。実体参照を含む文字列を assign して、それを escape すると2回エスケープ処理を行う事になるので、実体参照の先頭にある & がエスケープされて実体参照がそのまま表示されてしまう。

注意力の問題かもしれないけど、なんだか納得できない。HTML 文字列は2つ(?)の状態を持つってのがややこしいのかな?つまり、レンダリングされた時の文字列と、ソースとしての文字列。HTML を扱う際は、必ず HTML 型を利用して、場面に合わせてデータを取得するっていうアプローチを貫けば面倒も無いかな、と。

よく触る PHP だと、htmlspecialchars っていうエスケープ関数がある。これを使いましょうっていうのがそもそもいけないんだ。いや、正しいんだけど、実際にこれを適用する部分は隠蔽しておいて、何かの処理を書く時には HTML 型からインターフェース経由でデータを取ってきたらいい。

インジェクションがどうこうって話はよく聞くんだけど、それを考慮した型(クラス)が用意されていてそれを使いましょうって話は聞かない。こういう関数があるから、それ使いましょうって話はよく聞くけど。

別に DOM がどうこうって部分は考えてなくて、純粋に文字列として表現される(修飾されない)部分を扱う際に、『考える』労力を減らすべきかなぁ、と。コーディングルールとかプロジェクトルールとかで決めておけば済む話かもしれないけど、ちょっと気になったもんでメモ。

…、間違ってる?んー、わからん。いい事ありそうな気がするんだけど。どうも、こういう初歩的っぽい事ほどよく分かってない気がする。 new が増えるのは良くないのかな?

my hatena bookmark on 2006-03-29

リポジトリ内のモジュールをログ付きのまま移動できないかと奮闘。

記憶に新しいのが、SVK。SVK 使って、特定のモジュールだけを mirror して sync。で、.svk/local を別名コピー。SVN リポジトリ群ディレクトリに置いて、svn co して svn log。どうやら、mirror で1つリビジョンがずれるけど、無事ログを保ってリポジトリを分割(抽出)できたっぽい。

ローカル環境で svn ci 後に改めて svn co して svn log で確かに新しいリポジトリが更新される事も確認。

単純な構成のモジュールでの確認なので、本当に問題が無いのかは微妙。リビジョン番号が連番になるけど、元の番号から変わる事での影響も思いつかなかったり。

ファイルシステムは多分 BerkeleyDB。FSFS に変換できるんだっけ?

もうちょっと粘って探してみたら、正しいリポジトリ分割が見つかるかな?

自宅でのおもちゃ作りにも SVN を利用しているんだけど、リポジトリって『おもちゃごと』にも分けるべき?

まず、Trac を別個に立てるのが面倒ってことがある。で、分けない場合、リビジョンがごっちゃになる。やっぱ連番の方が感覚的に健全な気がする。だけど、あくまで『おもちゃ』な訳で、ちょこちょこ作るのに小回りが利かないってのは大問題。誰かにリポジトリを公開する訳じゃないし、自分だけが使うのにリポジトリをわざわざ分ける必要は無いかも。とりあえず、本腰据えてじっくり取り組むようなケースに直面するまではごっちゃでいいかな。

あと、これは自宅 SVN には関係ないんだけど、会社とかのグループ開発の場合でコミットメールを利用するケースがある。仕組みがよく分かってないんだけど、リポジトリディレクトリにある hooks に引き金になる(?)ような物置いておいたらメールが飛ぶって感じなのかな?そうだとすると、コミットメールはリポジトリ単位で制御する事になる。他にも、コミットとかのアクションと紐づけてごにょごにょ出来るんだと思う。その辺を調べたら、『リポジトリを立てる』基準がはっきりするかな?

そういえば、同一ホストで複数リポジトリを試してる経過で、"svn ci"がやたら遅かったんだけど、"svnadmin --fs-type fsfs create"でリポジトリを作ったら早くなってた。気のせいか?やたらメモリ食うのが BerkeleyDB を使っている事(メモリ上に展開される?)に関係あるかと思ったから試してみたんだけど、メモリ使用量自体は大して(全く?)変わらない。まあ、リポジトリサイズ自体ちょっとだし。単純にファイルシステムが変わってコミット時の処理パフォーマンスが変わって事なのかな?

そういえば、1人用 SVN の場合 svn:// よりも svn+ssh:// の方がいいのかな?マシンは別だけど、ローカルサーバだし、特にセキュリティを気にする必要は無かったりする。なので、どっちにしろ svnserve を動かすなら svn:// でいい気がしてるんだけど、どうなんだろう。svn+ssh:// だとアクセスごとに svnserve が立ち上がって終わるのか?まあ、ローカルの場合は考えなくていいか。

んー、社内LAN限定 SVN だとどっちがいいんだろう?svnserve 用のパスワードファイルを作るのは面倒かも。自分のアカウント使って勝手にごにょごにょしてって方が楽かな?あー、開発チーム以外も触るんだ。Windows マシンでも SSH は出来るけど、開発チーム外の作業 PC がどうなってるか分からん。というか、TortoiseSVN から使えれば問題ないんだけど、どうなんだろう?無難に svn:// かなぁ。そもそも、svn+ssh:// の場合の URL 組み立てがよくわかってなかったり。ルートディレクトリがルートになるのかな?Trac 連携考えると、リポジトリの所有者をApache ユーザにしたかったりするし、svnserve 動かしておいた方が better?

と、分からない事多め(多すぎ)なまま、xinetd 使って svnserve 動かすようにしてから帰ってきた訳です。実は、一部のモジュール(プロジェクト)をリポジトリ移動する予定で、その手順をまとめてたりする。まだ確認段階だから、何に影響する訳じゃないけど、明日ちゃんと話を聞こう。なんだか、周りで慌ただしげな気配がありありだったけど、明日は大丈夫かなぁ?

こういう『分からない事』をあやふやなままにするのが悪いところなんだよなぁ。ちゃんとマニュアル(ソースコード)読んである程度は自己解決する癖を付けないと。せっかくの『オープンな風潮』を有効活用できてない所は反省点だ。

my hatena bookmark on 2006-03-28

ちょっと前まで Bloglines の未読が嬉しかったりしたんだけど、最近邪魔臭くなってきた。

これもカフェインズ・ハイの影響で、Bloglines を見なくなってきた。Notifier も常駐させなくなって久しい。

今までが見過ぎだったってのがよくわかる。なので、無駄に増やした del.icio.us の RSS は消しとこう。

新しいおもちゃを手に入れた子供みたいだったんだろうなぁ。

カフェインズ・ハイ

ここ最近、職場近くのスタバでコーヒーを買って飲むのが習慣。

で、どうもコーヒーを飲み始めてからタスク消化が早い。いや、多分見積もり間違ったり、余裕があるスケジュールだったんだと思う。思うんだけど、どうもカフェインの野郎がどうこうしてやがるんじゃないか、と。

きっと、カフェインの中には小人がいるんだ。で、自分では気づけないけど、えせマルチスレッド脳になって(脳は元々マルチだっけ?)、素敵に仕事をしてくれてる…といいなぁ。順調すぎて頭の中でバグ警報が鳴り続けてたりする。

さて、暇な人がリリース担当な弊社。3週連続のリリース担当はなんとかしないとなぁ。嫌って程じゃないんだけど、やっぱ嫌か?んー、あの緊張感がどうも慣れない。でも、ろくに仕事できないうちは周りの負担減らす事が重要か…。

さあしあたってのタスクは、前に担当したシステムの全面見直しかな。なんとか落ち着いて動いてくれてるけど、機能追加がない今のうちにリファクタリングしとかないと怖くて触れないっぽい気配。小さなシステムだし、穴埋めタスクにはちょうどいい。

最近、『あたらし物好き』がなりを潜めてる気がするけど、これはいい兆候なのかな?

my hatena bookmark on 2006-03-27

これは普通なのか?

なんだか、svn co が反応してくれないので、PBG4 でも free で確認。512MB 中 500MB 使ってる。これはいいのかな。シェルは普通に反応するし、CPU 使用量も 1% 以下だし。

時間はかかったけど、なんとかコミットできた。んー、名前解決とか?/etc/hosts でいいと思うんだけど。svnserve 動かし続けると問題なのかな?

trac は問題なく http でアクセスできる。svnserve だけかな?とりあえずスルーかな…。

my hatena bookmark on 2006-03-24

PEAR::HTML_QuickForm 勉強

今更ながらようやく本格参戦してみようとお勉強。
koshigoewiki:php:pear:html_quickform:基本メモ [KoshigoeWiki]

目標は、Smarty と YAML と連携してのフォームビルダー。プチフレームっぽい事やってみよう、と。ついでなので、HTML_QuickForm_Controller 対応させて複数ページ(ウィザード)可にしたい。

さて、まずは何が出来るか、というかどんな風に要素つくってどれだけの Validation ルールがあるかって所から。んー、file にも対応してるのか。MIME-TYPE も見てくれる。関数(コールバック)でフィルタかけられたり。

大体の感じは掴めた。次はどうするか。Controller は置いておいて、1ページ分のから始めるかな。YAML(configure)のパーサは Syck の方が早いらしいので、Spyc やめて Syck を使おう。箱庭サーバなら PHP 拡張でも問題ないし。configure の書式整理して、その Validation とかやるかな。configure のエラーチェックってすべきなのかな?まあ、しといた方がいいかな。フォームが使えればいいか?configure 整ったら builder か。

あー、HTML_QuickForm_Renderer_ArraySmarty もだ。これは最後かな。テストはどうしよう。UnitTest と Selenium で確認?Selenium は最後かな。というかいらないか。手でできるかなぁ。

適当な MVC フレームワーク見てから取りかかるべきかも。作法とかいまいち分からないし、このアプローチが正しいのかも分からん。いや、try & die こそ信条だ!?

根こそぎ削除。

とりあえず、認証ユーザだけコメント許可に。まあ、ほぼコメント無しだし、平気でしょう。なくしてもいいけど、コメントしてくれるいい人もいるので。

昔に書いた井筒監督エントリーに外人さんから英語コメントいただいたみたい。世界の井筒かぁ。

ろくに検証もせずご迷惑おかけします。

PHP で MT ポストできた段階で満足してしまい、その中身(エントリー HTML)についてはスルーしてました。ごめんなさい。多分、明日(今日のBM)のポストは大丈夫だと思います。RSS 経由でブックマークポストに結構クリックあるなと思ったら、そういう事でしたか。

ご報告ありがとうございました。

CentOS の coLinux は快調なのに、後から入れた Debian の方が遅い。

top でプロセス周りを確認してみると、なぜか メモリが 300MB 以上使われている。CentOS と大して違わない構成なのに、なんで?free でもうちょい見てみると、なんと Swap が 0。イメージファイルは 1024MB 用意してるし、設定ファイルでのパスしていも間違ってない(起動できてるし)。dd コマンド間違えたか?じゃあ、CentOS で使ってるのをコピーして使い回そう。…、駄目。

どうやら初期化して認識させないとだめらしい。
coLinuxのメモ - coLinuxのインストール (その6)
/etc/fstab に Swap ドライブの記述を追加して、mkswap でドライブを初期化。"/etc/init.d/mountall.sh start"して有効に。free で確認すると、無事確保された。

実際、これが原因かの調査はしてない。ただ、しばらく使ってみても重くならないので解決かな、と。

この問題の前に gonzui 入れてみたんだけど、どうも遅い。Swap ドライブが有効になっても多少早くなった気はするけど、やっぱり遅い。Web で触れるサンプルとかは早いのに、なんでだろう。gonzui-server だから?パッケージ数は2つだし、インデックスが多すぎるってことも無いと思う。トップページ開くだけでも遅いし。coLinux だからかな?Windows 版とか入れた方がいいのかも。

my hatena bookmark on 2006-03-23

自宅 PBG4 に DebianPPC を入れて、プチ自宅サーバなこのごろ。で、svnserve でごにょごにょしてたら、急に動かなくなったり。

んー、zsh とか入れたり、dist-upgrade してみたりして、ロケール情報が壊れ(?)てたっぽい。なんだか急に英語メッセージになったりして変だとは思ってたんだけど、無視してみたり。で、svn co 実行しても接続きられたとか言うし、サーバに SSH してそこで svn すると LC_ALL が設定できないとか言うし。

結局、language-env 入れ直して解決。ユーザ権限で set-language-env してごにょごにょ。bash と csh の設定しかしてくれないけど、chsh で zsh をログインシェルに変更。PMG4 で使ってる設定ファイルをほぼそのまま引き継いでるし、svn も動くからよし。

svnserve 使わないで、svn+ssh://URL した方がいいのかな?Trac 使ってるし、リポジトリは Apache ユーザから扱えないと都合悪い気がするんだけど…。まあ、不都合が無い限りは svnserve で過ごしてみよう。

サーバ関係の勉強しようと色々いじってるんだけど、結局『開発環境』をいじってるだけな気がする。負荷分散とか実験するべきなのかな?でもそれなら VMWare とかで仮想マシン作った方がいいだろうし。Mac で使える仮想マシンはやたら遅いし。そもそも G4 1GHz だし。Intel Mac かな…。XP 動くらしいし。でも、それはそれで余計な知識が必要になるだろうし、ちょっと敷居が高い。

とりあえず、グループ開発で使われるツール類をいじくれる程度からせめてこう。

相も変わらず coLinux 調整

今日も coLinux をごにょごにょと。

仕事してんの?って気にもなるけど、わりかし余裕ありめのイテレーションなので。その分次のイテレーションはかなり怖めだったりもするけど。

今日は、イメージサイズの拡張。標準の 1GB イメージを使っていたんだけど、早くもいっぱいいっぱいに。なので、10GB にしてみた。
coLinux Debian Linux image のサイズを変更する方法

で、本来の目的はソースコード検索だったりする。Trac の検索を Hyperestrair 使って拡張できるらしいので挑戦。
Trac からリポジトリ内全文検索やってみた
結果から言うと、駄目。箱庭サーバでは以前やった、SVK でのリポジトリ分離が上手くいかない。depotmap での --reelocate は通ってるんだけど、どうも format がないって怒られる。で、しょうがないからリポジトリ丸ごとチェックアウトして、そのインデックスを作ろうとするも失敗。なんだか、文字コードがどうとか。バイナリメインなモジュールがまぎれてるせいかな?チェックアウトを個別にして、それぞれのインデックスを作る部分はどうにか成功。Trac 使う必要はないかもなぁ。

とりあえず、Trac での全文検索はここでストップ。とりあえず検索を単体で使えればいいやって方向に。

Koshigoe ChangeLog

とりあえず、Web プログラミングとかできる程度には整備。先週末に、Windows のサービスとして2つの coLinux を動かすところまで完了。Poderosa から ssh のパスワード認証が上手くいかなかったのは、sshd_config の PasswordAuthentication が no だったかららしい。ローカルサーバだし、セキュリティより使い勝手優先という事で、yes にして無事 Poderosa からこんにちわ。

付属 Debian は英語版なので、base-config とか使って分かるところは日本語化。

箱庭サーバとして時間を作って遊ぶ(勉強?)予定なので、個人用 SVN リポジトリも用意。Trac(+ WebAdmin)も稼働。この辺はだいぶ慣れた(もう何回も繰り返してるし)。まあ、mod_python がどうとかはいまいち分かってないけど。OSX のパッチも適用できてないし。

PHP 環境も整備。PHP5.1.2 を選択(というか、testing 入れてったらこうなった)。Smarty と phpMyAdmin も PEAR から入れる。PHP アプリも PEAR で入れられるらしく、Pearified をチャンネルに追加して、Role_Web をインストール。web なパッケージをどうこうしてくれるらしい。config-set のタイミングが微妙で、自宅でやった時は普通に指定位置にインストールされたけど、今回はなぜか PEAR ライブラリが入るところに入ってしまったり。uninstall してから "config-set web_dir"し直して、もう一度インストール。
phpMyAdmin は memory_limit が小さいとインストールできないっぽい。Role_Web 入れずにやったからかな?で、Debian は Apache と CLI とで php.ini を使い分けるらしい。それに気づかず、メモリサイズの変更でつまづく。ini_get とか "php -c" オプション使ったりして色々やってく中でなんとか気づけたけど、一苦労。

で、入れ忘れてた mysql もインストール。バージョンは 5。とりあえず、新しいもん突っ込んどけってことで。さて、とりあえず必要な物はそろったので、phpMyAdmin にアクセスしてみれば、許可してない拡張子がどうとか言われる。拡張子は PHP しか使ってないでしょ、phpMyAdmin ってさ。どうやら、php-mysql を入れ忘れてたらしい。root パスワードを空のままにしてるので、下に赤い警告が出るも、とりあえず無事動いている模様。PEAR::DB が使えるか微妙だけど、使えないなら別のライブラリ試すいい機会。いっそ基本に立ち返って、組み込み関数でもいいし。

で、これらサーバ設定に混じって日記には JavaScript のメモがまぎれてる。これは、js に外からパラメータ渡すのはどうしたらいいんだろうという所のメモ。PHP の $_GET とか $_POST ばっか使ってたせいで、こんな単純な方法に気づけなかった。もうちょっと出回ってるライブラリに興味持つべきだ。prorotype.js で定義されてる関数についてろくに調べずに人に聞いたらやんわりとたしなめられたり。確かに、ソース見た方が確実。

そんなこんなで、だいぶ環境は整った。


反応が鈍いのは、割り当ててるメモリとかスワップの要領が小さいからかな?メモリがそれぞれ 256MB なんだけど、512MB 位に増やそうかな?必要な時に割り当てられるってことでいいんだっけ?常に占有されるとすると、かなりきつい。タスクマネージャで確認、か。メモリとかより CPU の問題なんだっけ?

燃え尽きた。

どっかのサーバ技術講習会とかに通わないとだ。もうどうしようもない。プログラムのデバッグは何とかなっても、サーバ側でプロセスがどうとか、トラフィックがどうとか、パフォーマンスがどうとか、もう分からん!

問題箇所を推測できる様になりたい…。


PBG4 をサーバにしたのは正解だったかな。これベースに色々いじってみよう。

TracPlugins - The Trac Project - Trac

Debian の trac/testing を日本語化して、VirtualHost(Apache2+mod_pyhotn)で稼働。(VirtualHost での)複数プロジェクトの場合に認証が上手く出来なかったので、単独プロジェクトとして運用。

WebAdmin を入れるのに、どこかのブログを参考にしてたんだけどどうも上手くいかない。WebAdmin の .zip ファイルを拡張子 .egg にして、site-packages に入れたらいいって書いてあったけど、どうもちょっと(自分の環境とは)違うらしい。結果的にはそうなるんだけど、ez_setup.py を使っていれないと駄目っぽい(名前は書いてあったけど省略されてた)。以下、setuptools を使えるようになるところから WebAdmin インストールまで。egg というか python がよくわからなかったせいで一苦労。

% sudo apt-get install python2.3-dev
% sudo python ez_setup.py
% sudo easy_install TracWebAdmin-0.1.1dev_r2765-py2.3.egg

まず、python2.3-dev(バージョンは環境に合わせて) が無いと ez_setup.py が入らないらしいので、これをインストール。で、setuptools を入れるために、ez_setup.py を実行。そしたら、落としてきた WebAdmin を .zip を消して .egg にしたファイルがあるところで easy_install 実行。

trac-admin を使って permission add はしてあったので、ログイン後に Admin メニューが追加されている事を確認。

認証の設定は Trac に書いてある通り。TracEnv 以下に htpasswd 使ってパスワードファイルを作って、そのユーザに対して trac-admin で TRAC_ADMIN の権限を与えておく。TracEnv/conf/trac.ini に WebAdmin を有効にする記述を追加したら OK。多分、Apache 再起動。

hatpsswd2 -c /path/to/trac/env/.htpasswd hoge
trac-admin /path/to/trac/env permission add hoge TRAC_ADMIN
[components]
webadmin.* = enabled

複数の TracEnv での認証は、どうも httpd の設定を理解していないせいな気がする。とりあえず、自宅サーバーだから単独プロジェクトとしてごった煮状態で問題なし。最後に、/etc/apache2/sites-available/trac の内容(サイトごとに分けて書くのがマナー?; a2ensite)。

<VirtualHost *>
    DocumentRoot /usr/share/trac/htdocs/
    ServerName trac.pbg4.local
    ErrorLog /var/log/apache2/trac-error_log
    CustomLog /var/log/apache2/trac-access_log common
    <Directory />
        SetHandler mod_python
        PythonHandler trac.web.modpython_frontend
        PythonOption TracUriRoot /
        PythonOPtion TracEnv /var/trac
    </Directory>
    <Location /login>
        AuthType Basic
        AuthName "Trac"
        AuthUserFile /var/trac/.htpasswd
        Require valid-user
    </Location>
</VirtualHost>

my hatena bookmark on 2006-03-19

my hatena bookmark on 2006-03-18

PBG4 がやたら静か

Debian を入れた PBG4 のふたを閉じて稼働中。

音無し、熱無し。快適だ。

部屋戻ったら 12

今日は本屋でお買い物。

まとめ買い癖があるので、今日も 2 万円分ほど。主に MySQL 本。後はちょこちょこ。イヤホンもなんとなくへたってきたので買い替え。インナーイヤーだけどフック付き。

…、あれ、なんだか 12 のやつが鞄の中に。しょうがない、やってみるか。

あれ、スターウォーズ?

懲りずにまた PBG4 に Debian PPC を入れた。

で、Trac の 0.9 は testing にあるらしく、sources.list をいじって testing から入れられるようにしたい。…、どうも PPC 用のパッケージを置いてないサーバがあったり、一部おかしかったりするっぽい。

国内サーバだからなのかな?外国のサーバとか本家(Debian)のサーバを試したらいけるのか?でもミラーって事は同じじゃないの?

ソースから入れなきゃかな。


エラーメッセージが"E: Dynamic MMap ran out of room"で、/etc/apt/apt.conf に `APT::Cache-Limit "10000000000";`としてキャッシュ制限大きめにとったら解決。

my hatena bookmark on 2006-03-17

今日半日くらいかけて、coLinux のバージョンアップと仮想マシンを増設(?)した。とりあえず、今まで使ってきた開発環境と、coLinux インストーラから選択できる Debian を動かす。

開発環境として、実際のアプリケーションが動いているサーバとほぼ同じ構成で利用してきた。この環境は検証も出来ないといけないから、あまり無茶が出来ない。色々と勉強するためにももう1つ位 Linux 環境が欲しかったので増設を決意。

まず、coLinux 自体(exe)を複数用意する訳じゃないらしい。Web で調べてると「複数のcoLinux」っていう表現がちらほらと見かけられるんだけど、それは「= 仮想マシン(img)」って事らしい。じゃあ、そのcoLinux 用の OS イメージを用意しなきゃって事なんだけど、それは面倒っぽかったし Debian を触りたかったので付属品で済ませる事に。実行中の coLinux サービスを停止して、インストール済みの coLinux をアンインストール。v0.6.3 を落としてきて、インストール。ここで、Debian イメージのアーカイブが手に入るから、それを展開してフォルダ内にあるイメージを coLinux インストールディレクトリ(C:\coLinux)直下に root.img とかにリネームしてから置く。

vmlinux(?) とか initrd.gz(?)は複数の仮想マシンで使い回して問題なさそう(とりあえず動く)。コピーつくってそれぞれで別ファイルを読んだ方が安全かな?古いやつをリネームして読ませてたんだけど、どうも gcc だかなんだかが古いみたいで動かなかった。vmlinux はカーネル?

一番苦労したのが TAP-Win32 を複数用意するところ。「ハードウェア追加」の手順がいまいち分かってなくて、下の方にある「新しい…」ってのを見逃してた。しかも、なぜか2つに増えてたから 「coLinux 側で MAC アドレスを認識したら増えるのか?」みたいな勘違いして暴走。ハードウェア追加からちゃんと増やして、名前を変えて IP とサブネット設定してブリッジ接続。2つの仮想マシン間で ping が通る事を確認。

DOS 窓とか coLinux 窓(?)が残るのは邪魔なので、サービスとしてインストール。"--install-service"つけたらサービスとしてインストールされるんだけど、サービス名がデフォルトのままで別サービスとして認識されない。なので、"--run-service"オプション使ってサービス名を指定。無事それぞれの仮想マシンがサービスとして登録された。それぞれの起動も確認。

Poderosa の SSH インターフェースからつなげなかったり、Debian で sshd 入れてなかったりと問題は残ったままだけど、とりあえず coLinux のセットアップは出来たと思う。Cygwin から ssh コマンドで接続できるのに、Poderosa で用意したインターフェースからは接続できないってのはなんなんだろう?sshd を設定した事が無いからよくわからない。

来週からはそれほど時間が取れなそうだけど、ちょこちょこと調整していこう。

複数動かす場合、VMWare の方がいいのかな?とりあえず、coLinux は軽いみたいで満足してるんだけど。

my hatena bookmark on 2006-03-16

ちょっとした手違いが元で、あるリビジョンとあるリビジョンをマージする事になった。

バージョン管理システムが使いこなせず、差分は diff ツールで確認しながらもほぼ手作業でマージしてしまった。片方はタブインデントで、一方はスペースインデント。なので、SVN で保持するリビジョンでマージすると完全な上書きか衝突になるはず、という前提で作業を進めた。

"svn merge"が使えるかどうかはともかく、手作業でやる必要はなかったかもしれない。結局、一番の問題は『インデントの違い』で同じ行が違う行として扱われる危険性。これは、Emacs の"CM-\"でいけた気がする。作業コピーディレクトリとは別の場所にそれぞれのリビジョンから取り出したファイルを置いて、それぞれを同じルールで(機械任せで)インデントし直しておく。それから両者の diff を見て、機械マージの是非を問うべきだった。

マージツールはよく知らないんだけど、最悪 diff で差分ファイル作ってから patch とかでやっても問題ないんじゃないか?衝突に出会う事があまりないので、その辺のノウハウが無い。

とりあえず、自動エンコーディング対応の diff ツールと、マージの仕組み、便利なマージツールの調査かな。

今更ながらに YAML 勉強

今更だけど、設定(定義)ファイルを YAML で書く事についてお勉強。

とりあえず比較してみようかって事で、ある処理で利用しているパターン定義 XML を YAML で書き直してみた。分かりやすい。「各項目が何を意味しているか」っていう部分では XML でも分かりやすい(?)んだけど、「PHP(プログラム内)でどんな風に扱うか」って部分では圧倒的に YAML が分かりやすい。この定義ファイルを利用する際には、XML をパースして、配列データを作って、な感じ。「ファイル->配列」のマッピングを自分で定義しないといけないってところが厄介。

本質がどうかは知らないけど、「配列を定義するためにある」感じが素敵。(これまでに扱ってきた)設定ファイルとか定義ファイルってのは、ほとんどプログラム内でどう使うかが決まっている(固定的)。配列(ハッシュな Object)データに入れて、必要な時にそこから取り出す。XML の表現力(DOM がどうとか)が必要になる場面は皆無。結局は配列に変換しちゃってたり。

YAML を知らなかったり、ライブラリがなかったり、開発チーム外からも触れるようにしたかったり、と。色々と XML を選んだ言い訳はあるんだけど、あまり理由になってないのかも。強引かもしれないけど、直接 PHP の配列で定義しても問題ない気がする。UTF-8->EUC-JP も必要なくなるし、パース時のエラーもなくなる。YAML が使えるなら、より分かりやすく手間なく書ける分 YAML を使うべきだけど。

と、言う訳で「HTML_QuickForm + YAML でフォームビルダー」を題材にしてもうちょっと勉強してみようかな。

my hatena bookmark on 2006-03-15

デュアルコンソール?

勤め先のチームリーダーの元にニューマシンが届いた。

机の上には2台のモニタとキーボード。…、デュアル?デュアルコンソールだ!流石、ひと味違う。2つのキーボードを往年のコムロばりに操る様はまさに脅威。

…、「違う」と一蹴。残念。単に移行中なだけだった。そういえば、Selenum マシン(テスト専用マシン)に回す事になってたっけ。

norah'# : Search Engine Wizard

インストールして再起動したら、プラグインを作りたい検索ページのキーワド入力ボックス上で右クリックして検索プラグインを作るだけ。PEAR/PHP/MySQL/はてなブックマークでそのまま作る事に成功。PHP は POST だって怒られるけど無視して問題なし。

便利。

残念ながら小人同梱モデルじゃなかったらしい。

my hatena bookmark on 2006-03-14

自宅 Mac にも SVK

勢いに乗って自宅 Mac にも SVK を入れてみた。

DarwinPorts に入っていたので"sudo port install svk"でOK(ysh があるぞって怒られたけどリネームで回避)。なんだかやたらと依存してて、パッケージ管理外だったら正直やってられない。

無料で便利なツールだから我慢しなきゃいけないんだろうけど、この依存具合はどうにかできないもんか。ちょっと試したいだけって時にガリガリと CPAN インストールなんかやってられない。CPAN って依存関係解決できたっけ?なんだか RPM 化できるみたいな話題を見かけたけど、そっちの方向で解決するのかな?PEAR はどうだっけ?

ライブラリが豊富なのは嬉しいんだけど、この辺は結構困りどころかも。まあ、port インストールできたからいいんだけど。

…、あれ、使いどころがないかも。

SVK と Trac

はてなブックマーク - クリップボード / svk
会社で使ってる Subversion のリポジトリブラウザに Trac を使う事になって、今日は1日セットアップ作業に追われた。

サーバが古くなっていたので、これを機会に OS からインストール。Trac を簡単にインストールしたかったので、ディストリビューションは Debian。apt-get で Trac, SVK, apache2 をインストール。

Track はスタンドアロンながらもインストール経験があったので特に戸惑う事はなかったけど、SVK は初めてだったので結構苦戦。Trac に読ませるリポジトリはローカルにある必要があって、ディレクトリパスで指定しないといけない。で、SVK でミラーしたリポジトリはどのディレクトリなのかが分からなくて困った。とりあえず、デフォルトでは"~/.svk/local"が"//"に該当するらしい。

ディレクトリパスは分かったんだけど、プロジェクトごとに Trac を立てたい場合どうしたらいいかでまた迷う。今は移行したばかりで1つのリポジトリに複数のプロジェクトが入っている状態。で、Trac はリポジトリディレクトリ1つにつき1つだから、これをどうにかして別ディレクトリに持っていく必要がある。"svk depot --relocate // /path/to/repository/mirror/directory"でリポジトリのミラー(?)先が切り替えられるらしい。なので、まず切り替えてから、"svk mirror svn://URL/path //project && svk sync //project"でミラーリング。

プロジェクト別に立てたはいいけど、実際 BTS とかマイルストーンだとかの機能を使うか分からないし、もし使うなら同じサーバで運用すべきなきがする。各プロジェクトの管理も面倒だし、リポジトリブラウズ目的なら分けなくてもよかった気がしたり。

とりあえず、明日はドキュメントまとめて必要なら permission だとかシンタックスハイライトの対応しないと。GNU Enscript が行方不明(?)だったり、SilverCity の build に失敗したりで正直よほど求められない限りはもうストップでいい気はしてるんだけど。

SVK って本来は複数のリポジトリを疑似的に一元管理するのが目的だったりするのかな?今回のケースは逆に1つのリポジトリを複数に分割する目的で使ってる。デフォルトのままで、"//mirror" 以下にミラーすると別々のリポジトリであっても1つのリポジトリとして管理されて、同期とかチェックイン関係の場合は自動的にそれぞれのリポジトリに反映してくれるらしい。

いまいち使いこなせてないけど、とりあえず別サーバにあるリポジトリのブラウズを Trac で実現するっていう目的はこなせたからよしとしよう。

my hatena bookmark on 2006-03-13

SVN on Finder (OSX)

scplugin.tigris.org
TortoiseSVN にインスパイアされたSVN クライアントらしい。

会社で TortoiseSVN 使ってて、Shell 拡張な VC がかなりいい感じなので、自宅 Mac に入れてみた。

まずはチェックアウト。バイナリも配布されてるけど、古いしなんだか上手く動いてくれなかったので、ソースからビルド。

svn checkout --username=guest --password=guest http://scplugin.tigris.org/svn/scplugin/trunk/ ./scplugin

で、必要なライブラリだとかがあるらしいので、svn-mac-build に移動して make 。

cd scplugin/svn-mac-build
make

…、checksum が違うとかで止まった。んー、よくわからないけど必要なパッケージ群は落とせてるみたいなので、Makefile を見て手動ビルド。"build: fetch verify"のブロックを逐次実行。

./build_01_db_mac
./build_03_expat_mac
./build_04_svn_mac
chmod u+w inst/bin/*
-strip inst/bin/*

最後のやつがよくわからなかったけど、とりあえずごまかして次。チェックアウトしたディレクトリ直下にある"SCPlugin.xcode"を開いて、左上の選択メニューで"All"を選んでビルドを実行。警告がこんもり出たけど、とりあえず成功したとの事なので放置。チェックアウトしたディレクトリ直下の"build/SCFinderPlugin.plugin"を"~/Library/Contextual Menu Items/"にコピーして、Finder を再起動(Cmd+Opt+Esc でパネルが出るのでそこから Finder を選んで"再度開く"したら再起動)。さて、「これでいけたか?」と思ったんだけど、上手くいけてないかも(気づけなかっただけかも)。で、"build/SCPluginUIDaemon.app" を Applications に置いて実行してみた。いつ現れたのか分からないけど、無事コンテキストメニューに"Subversion"が出現。checkout 出来る事を確認して満足。

TortoiseSVN みたいにフォルダアイコンが変化したりするところまでは未確認。多分、ビルド不足かコピー忘れとかそんな感じ(だといいな)。スクリーンショットを見る限りでは対応してるみたいなので、いずれ挑戦。


元ネタ:| SVN on MacOS X
アイコンの件は"Current Feature"って事でまだ実装されてないっぽい。


アイコン変化は実装されてたらしい。タイムラグがあるみたいで気づいたら変わってた。
"Current Feature"って最新版での特徴じゃん…。恥ずかし…。

SCP と SFTP

違いを理解しないままぼんやり過ごしてきたけど、ちょっと調べてみた。 WinSCP Japanese site : protocols

cp をリモートでセキュアに使えるのが SCP で、FTP を SSH で置き換え(?)てセキュアに使えるのが SFTP 。んー、SSH とか FTP の中身がどうとかって部分が分かってないから、細かいとこまでは結局理解できない。

とりあえず、「SCP はパケット確認をしない」、「SCP はレジューム機能がなくて転送取り消しも出来ない」、「SCP はディレクトリの再帰処理が単独コマンドで可能」あたりを押さえておけば使い分けの基準にはなるのかな?パーミッションだとかタイムスタンプだとかは今のところあまり意識する部分じゃない気がするし。

rsync とか scp とかを使うようになって出来る限り CUI 環境を利用するようになってきたけど、使い慣れるとかなり便利。GUI だとディレクトリのブラウジングが簡単で便利なんだけど、開発環境みたいに分かりきった環境に対してそれは必要ないし。差分アップロードとかセットアップする場合は、rsync でワンステップがっつり。

次はプロセス関連とか検索関連を使いこなせるようにならないと。Linux 環境は開発環境として利用はしてるんだけど、メインじゃないから実際にそれほど使ってる訳じゃない。なので、結局 Windows Explorer とか GUI アプリで完結する。んー、grep あたりは上手く使ったら改善される部分があると思うんだけど、プロセスがどうとかログがどうとかってのはあまり思いつかない。

というわけで、grep テクニックをまずは調べよう。

my hatena bookmark on 2006-03-11

my hatena bookmark on 2006-03-10

現在進行中のプロジェクトでテストファーストを本格的(?)に実践中。

これが楽しい。最初に通すべき条件を定義するためにテストデータを用意しなきゃいけないのが面倒だけど、そこを乗り越えると「今自分が何を作らなきゃいけないのか」がはっきりする。自分でやってる事なんだけど、感覚的に「上から指示されてる」気分。結局自分で出してる指示だから不安ではあるんだけど、「明確な指針」があるからそれなりに安心して進められる。

「今何が動く」かがはっきりして、それが形になって残る。ただ、「仕様書」としての体裁にはなってないのが問題だったりする。「読みやすい(理解しやすい)コード」を書く技術は早いとこ身につけないと(かなり緊急な課題)。

反省点は、コミュニケーション不足。テストファーストとは関係ないんだけど、概略ベースのレクチャーは受けてたんだけど、実際のクラスインターフェースをどうするかとか、各自の成果物をどう連携させるかの部分でミス。勝手に進めてったのが間違いなんだけど、短いイテレーションにプレッシャーを受けてたのかな?

アジャイルはインクリメンタルでイテレーティブって事で、「変更を前提」にしたスタイルだけど、開発者が実装部分で「作り直し」ありきでいちゃいけない。あくまで、「要求」が見直されて「本当に必要で欲しい機能」の追加を要望されるってことだ。変更を受け付けやすい体制が整えられる事をいい事に、まず必要になるだろうロジックを実装してみて、結合部分は戻りを期待して暴走してた。

今回は単純な機能で、幸い致命的な修正量にはならなかった。でも、やっぱりある程度メンバーに迷惑(負担)をかけてしまったと思う。反省。

そういえば、デイリービルドってやってるっけ?ユニットテストの一括実行とは別だよね?んー、Web アプリケーションの場合、ビルドして出来上がるものはブラウザから見るやつだと思うんだけど、違う?まだ見てないな。とある検索アプリなんだけど、担当した検索フォームの JS 部分で(かなり)満足しちゃって、それが動いてるだけでにんまりしてみたり(Selenium が走ってるのも楽しいんだ)。

日曜プログラムの方ではテストファーストじゃないんだけど、SVN みたいに慣れるためにもやんないとなぁ。WebAPI とか無駄にたたいちゃってるし。戻りデータを用意しておいて、それ読むようにしないと。やる時はやるんだけど、やっつけツールを作る場合割と無視しちゃってる。そろそろはてなポリスが動くかも?

またまた関係ないけど、Subversion のマージってちゃんとしてるかな?最近やたら衝突するのが気になる。よく分からないところで衝突するのが納得できない。Meadow の設定不足だかなんだかで、文字コードが急に JIS になってたりするのが原因かな。URF-8 もあまり上手に扱えなかったりするし。Subversion よりも Meadow 側に問題があるのかな?

さて、月曜から(本当は金曜から)セカンドレグ(第2イテレーション)に突入だ。

わがままを言って有料な自社サービスを社員割引(ロハだけど)で使わせてもらってる(「使わなきゃ分からないんです」とごねてみた)。

要望は、フィード加工機能について。このブログでは実験的に(MT テンプレート使って)カテゴリ別のフィードを発行してるんだけど、これを OPML 経由で一括処理したい。複数フィードを1本にまとめる機能があるんだけど、これの素になるフィードを複数用意するのがちょっと面倒。OPML じゃなくてもいいけど、何かしらの URL リストを受け取って一括処理できたら楽。

今はちょっと立て込んでて機能追加が出来ない状況なんだけど、時期が来たらやってみたい。企業の CMS 導入が進んできたら「フィード生成」は価値が下がる。けど、逆に「付加価値をつける」機能は価値が上がる(かも)。

個人利用なサービスじゃないからニーズがないかもだけど、一応こんなところから要望出してみた。我が社の誇る小人さんに期待。きっと月曜日には出来てるはずだ。

naoyaのはてなダイアリー - ETech 2006 レポート

Feed Reader で一番必要だと思ってる機能(?)は、購読リストと未読状況の同期。違う PC で利用しても一度読んだアイテムが未読として扱われる事は鬱陶しい事この上ない。で、ドキュメントとかメモとかも、社外秘みたいな物を除いてどこでも見れると嬉しい。

TrimPath Junction っていう JavaScript のフレームワークを使うと、オフラインでもアプリケーションが動作して、その時に編集したデータがオンラインになった時に Web(サーバ) 上のデータと同期してくれるらしい。

個人的にはインターフェース機能を求めるなら OS ネイティブ(?)な物を使うべきだと思う。Ajax で Web アプリケーションがリッチになるのはすごい事で、面白いんだけどブラウザを通さなきゃいけない時点でどうなんだろう、と。Ajax での UI 構築案を否定する訳じゃないし、Web 開発現場に身を置く訳だから興味深い技術なのは確か。ただ、あくまで個人的な欲求としては、WebAPI 通してデータ通信する OS 提供の UI アプリがいいなぁ、と。使う側としては広告がどうとか知った事じゃないし。

セキュリティ脆弱性(?)が問題になってきてた JavaScript を惜しげもなく使う事に対策はとれてるのかな?アプリケーションを使う時だけ JS を有効にするなんてのは論外。逆に、ブラウザを使わない場合に、セキュリティ的な問題ってどんなんだ?まあ、気にしないで Ajax アプリを楽しんでるんだけどね。

「インストールの手間がない」ってのは確かに売りなんだけど、「持ち運べるデスクトップ」っていうアプローチもあるし、どうなんだろう?持ち運ぶ場合に紛失の危険性があるから、前者がいいのかな?誰かに拾われた場合に危険になる情報は記憶させないとかで解決?

なんとなく、WebAPI が中心になっていってる気がする。トラフィックを上手く捌くサーバ周りの技術と、安全で快適で使いやすいインターフェースを実装するプログラミング技術。これまで、操作感としての Ajax にばっかり目がいってたけど、そろそろ「向こう側」を扱えるようにならないと。

会社の上の人が結構「アフィリエイト」系のサービス案をやりたがってるんだけど、上手い事回していく技術力がないからいつも「自分には無理です」って流してしまう。広告を貼って収入にするアフィリエイトじゃなくて、アフィリエイトの流れをサービスに組み込んで自然に購買経路を作る感じのアイデア(上手く言えないけどそんな感じ)だから面白いんだけど。ユーザが使いたい機能を使ってくれたら、それがサービス提供側の利益につながる。コンテンツにあった広告を出せば似た感じの興味につながるってのもいいアイデアなんだけど、個人的に「広告はクリックしない人」だから違和感がある。まあ、よっぽど上手い具合に融合できる場面じゃないと駄目なんだけどね。

トラフィックを捌くサーバ技術、認証を安全で快適に行うための技術、合理的なインターフェースを持った API、ケーススタディっぽく勉強するために英語。基本的なプログラミングのお勉強すらままならないってのに、こんなに課題ができやがった。Cocoa もやってみたいし、XUL もまだ手が付けられてなかったり。あー、データベースもやんなきゃ。今日も"GROUP BY"忘れてて突っ込まれたし。チューニングがどうとか言われたらお手上げ。

あれだ、共有サーバ使ってるうちは駄目駄目なんだ。早いとこ専用サーバ借りないとな。自宅サーバは無理(というか嫌)。

WYSISYG に不慣れな最近

ホスティング系のサービスで当たり前のようにくっついてる WYSIWYG インターフェースだけど、個人的に使い慣れない。

このブログも Emacs で書いてるし、Wiki の方も Emacs で原稿を書いている。とにかくテキストベース(キーボード操作)で済ませたくてしょうがない。で、落ち着いて考えてみると普通の人が使う場合は、直感的なインターフェースがあった方が使いやすい。

ちょっとは技術者っぽくなろうと Emacs を使うようになったんだけど、求める機能(やりたい事)がどんどん一般的じゃなってきた。技術系のアイデアを考えたり調べるのと一緒に、一般的な世間の情勢と言うか流行とか求められるものも調べていかないと駄目だ。

まあ、まずは技術的な面を鍛えないとどうしようもなかったりする。でも、実践を考えると面白い(と思ってもらえる)アイデアを考えるためにも色々な情報(興味)を持つ事も大事。

米Google,“Ajaxワープロ”のWritelyを買収:ITpro

Page Creator を発表したばっかりなのに…。個人的には、Web ページを強く意識した(?) Page Creator より文書を意識した Writely の方が好き。そういえば、最近 Writely 使ってないな。

Writely の中の人が Google の中の人なって、Writely 自体も Google のサービスになるらしいんだけど、Page Creator と Writely は両立させるつもりなのかな?とりあえずラボで試していいとこどりしたサービスを正式版として提供する、とか?

Word(Microsoft Office) を意識してるってことかな?

略し方色々

I18N と L10N。

国際化(internationalization)が I18N で、地域化(localization)が L10N。最初と最後の文字と、その間にある文字数を組み合わせて略記。なるほど。文字コード変換とかで結構 i18n がどうこうってのは目にしてたけど、それが何かはよくわかってなかった。こういう略し方もあるんだなぁ。

koshigoebushou = k12u か。

エスケープ(escape):回避
HTML 出力する場合に、そのまま出力したらまずい文字を「エスケープ」
エンティティ(entithi):実体
「エスケープ」する際に使う、その文字の「エンティティ」
クォート(quote):引用府
文字の呼び方?(emacs の sgml-quote はどういう意味?)

合ってるかな?セキュリティ関係で資料を見てると、同じっぽい意味で別の言葉が使われてたりするんだけど、いまいちどう区別してるのか分からない。何も考えずに、HTML 出力時に行う変換処理を「エスケープ」って言ってきたけど、どうなんだ?

勤め先で、社内情報を共有する目的で Wiki やら SBS やら Blog やらが利用されている(勿論 LAN 内限定)。

情報が増えるのは嬉しいんだけど、どこに何があるのか分からなくなってきた。SBS でおすすめ情報をクリップしてったら面白いかなと思ったけど、それはそれで面倒な感じ。言い出しっぺは自分なんだけど、「調べたい」場合には適当じゃない。

という訳で、暇ができ次第作業 PC にでも全文検索エンジンを入れてみようかな、と。Namazu でいい気がしてるんだけど、Hyper Estraier とか Rast も楽しそう。Rast ってのは Offic 系とか 各種アーカイブ、PDF とかもサポートしてくれるみたいで魅力的。

情報共有ツールの利用が活発になってくると、当然情報量が増えて同時に分散する。つまり、今こそ検索が熱いんだ!…、という訳で近いうちに 〜%ルール使わせてもらおう。

N-gram だとか分かち書きだとか形態素解析だとかはさっぱりなので、『作る側』じゃなくて『使う側』で盛り上がってみる。

今週からようやく"Code Complete"を読み始めた。

インクリメンタル(増分型)でイテレーティブ(反復型)なスタイルだからアジャイル(機敏)に進められるんだ、と。

アジャイル本じゃないんだけど、『インクリメンタルな設計/構築/テストは最も強力な開発概念の1つ』っていう記述がある。言葉にだまされるたちなもんで、「アジャイル、アジャイル」言ってたらその辺見落としてた。

キーワードはインクリメンタル。

反省メモ。

FreshReader とか Plagger とか

Bloglines 派としてちょっと気になる。

FreshReader は専用サーバを持たない身なので使えない。フィード購読リストと未読状況は一元管理できないと意味がない。それに、ライセンスがどうこうってのもあるし、個人利用としてはちょっと微妙。なんだか「クリックしてね」アナウンスが出てたけど、どうなんだろう?トラックバックして「援助待ち」とか出来るのかな?

Plagger は未だによく分からなかったりするんだけど、設定ファイルベースで事を進めるっぽい。Bloglines の未読アイテムを Gmail に送るプラグインとかがあるみたいで、自分好みの UI を持つクライアントでフィードを購読できるってのが売り?後は、アグリゲートして好みの形にパブリッシュできる、とか。基本的に購読フィードのメインは SBS のフィードだし、mixi 使ってないし、現状にさほど不満もない。多分 Plagger の現状は開発者向けっぽい感じがするし、まだ考えなくていいのかも。

社内情報のアグリゲーションと定期チェック、情報共有を考えると、社内に置けるアプリケーションが必要だったりする。FreshReader が使える状態みたいなんだけど、社内情報のフィードは Thunderbird で読んでたりする。『「誰かが読んでるフィード」を知りたい』っていうケースが今のところないので、これで十分ではある。ただ、Hiki Farm が活性化しつつある(なんとなく盛り上がってる人がいたりする)ので、その辺考えると Thunderbird から乗り換えるのもいいかもしれない。でも「確認する場所」を増やしたくないんだよなぁ。メールは必ずみるし、その時に確認すれば何とかなる程度の更新頻度だし。

そういえば、社内情報の検索システムってあるんだっけ?情報共有のために色々とアプリケーションが用意されてるのはいいんだけど、アプリケーション別で検索するのが面倒かもしれない。社内 Google とか設定できるっけ?検索周りの調査はおろそかになってるし、ちょっと調べてみようかな。

OSX Security Update と PHP

Security Update には PHP のアップデートが含まれる事がある。

DarwinPorts で入れた物に /usr/bin からソフトリンクでつないでいたので、PHP5 から PHP4 に書き換えられていた。なんでソフトリンクでつないでたんだ?shell の環境変数(PATH)の優先度調整すれば済む話なのに。という訳で、DarwinPorts パッケージ用のディレクトリを最優先にしておいた。

記事単位の切り取りと SBS から取得するフィードに頼りっきりで、RSS の収集がおろそか。

気になる記事があったサイトなんだから、他にも興味深い事を書いているかもしれない。と言う訳で、SBS でクリップした記事から Feed AutoDiscovery で Feed の URL を取得してみる。取得したデータはメールで送信。これを自分の SBS の最新フィードか、日付で抽出したフィードを対象に定期的に行う。

記事 URL から他にブックマークされてる記事を芋づる式で(実際ははてなの entrylist とか bookmarklist で)取り出してもいいんだけど、とりあえず『自分の興味』を優先。絶対 URL にしてなかったり、AutoDiscovery への対応が適当だったりするけどとりあえずソースはっておしまい。朝日を拝んでから再挑戦。

この辺のおもちゃは PHP より Perl の方がライブラリとか充実してそう。勢いで PHP 使う癖はどうにかしないと…。AutoDiscovery の仕様とか Feed の MIME TYPE とか意識しないですみそう。でも、Feed AutoDiscovery は後でちゃんと調べとこう。どうも曖昧だ。


2006/03/07 追記
クラス化してサンプル置いてみた

JIS 規格って高い?妥当?

仕事の都合で地域コードを調べる事になった。

はじめは Wikipedia とか Google 経由で調べていたんだけど、気になったので JIS のサイトに行ってみた。以前にユーザビリティかなんかのガイドラインだかを購入した事があるんだけど、安いのか高いのかよく分からない。

都道府県コード(JIS X 401)の和文 PDF が 367 円。市区町村コード(JIS X 0402)の和文 PDF が 4,515 円。

元データが有料ってなると、WebService に期待する事もできなそう。まあ、住所入力の value に無理して JIS 規格使う事もないんだけど、標準ってことを意識すると JIS 規格使った方がいいかもしれなかったり。よそで使ってるデータをインポートする場合を考えると、標準規格は強み。

さて、合併がどうこうって近況を考えると、Web で(なぜか)公開してくれてるデータを使って大丈夫なのかな?合計 4,882 円。買ってもらった方がいいのかな?信頼できる公開データを探したら済むかな?

my hatena bookmark on 2006-03-04

とりあえず、カテゴリー別のフィードを mix して1つのフィードにしてみる。

結局、アイテムの並びは時系列にしてない。Last-Modified も適当。Perl の文法も適当。チェックしてボタン押したら別ウィンドウにフィードを表示。

多分、近いうちにゴミ箱行き。

my hatena bookmark on 2006-03-03

[Perl] XML::FeedPP - RSS・RDF・Atomフィードの解析・生成・変換・結合
複数フォーマットを1つのフォーマットにマージできるってことに惹かれて触ってみた。

Perl を触るのはかなり久しぶりだったので、なかなか苦労した。で、とりあえずこのブログが出してるカテゴリーフィードを mix して1本のフィードにしてみたんだけど、マージは単純に各フィードを後づけしていくだけらしい。

Bloglines の場合、アイテムのタイムスタンプを見て並び替えてくれるんだけど、こういうクライアント頼りのリストは許されてもいいのかな?XML::FeedPP に対する疑問じゃなくて、Publisher を実装する際の注意点として気になる。

Safari2.0 にしろ、IE7 にしろ、フィードをネイティブ(?)でサポートする様になってソート機能がくっついてきてる(おかげで XSLT は無視されるんだけど)。そういう状況を考えると、データパース時に明示的に並びを制御する実装だと仮定しても問題ない気はする。ただ、「更新を知らせる」っていう由来(?)を考えると、フィードファイル内での並びは時系列降順にすべきな気もするし。

こういう場合は、仕様をよく読んだらいいのかな?とりあえず無難に時系列降順で並べとこう。XML::FeedPP で機能提供されてるかな?

さりげないプレッシャー

会社の陰の実力者(?)の SBS エントリーを見ていると、たまにプログラミングネタが流れてくる事がある。

裏ボス(だと思う)の人は技術ネタも分かってくれるのでかなりやりやすいんだけど、その分要求もちゃんとしてくるので怖い面もある。ブックマークはさりげなくプレッシャーをかけてたりするんだろうか。タイトルがそれっぽいだけで、実はマーケティングとかマネージメント、戦略的なネタなのかもしれない。

実際は、純粋にお気に入りな(興味深い)記事だったり、「こんなのあったぞ」って教えてくれてるんだと思う(だといいな)けどね。

社員の SBS をアグリゲートして、情報/知識/技術の均一化というか向上に役立てるのは有効な手段だと思う。でも、ちょっと深読みしすぎてみると軽いプレッシャーに使えたりするかも。営業(フロント)の人のブックマークにコアめの記事とかがあったりするとちょっとびっくり。客先での評判とか業界の風潮を先取りして情報収集した結果なんだけど、技術の人には催促に感じられたり。逆に、技術の人が「私はこれで〜億稼ぎました」みたいな記事をブックマークしてると、それ見習えみたいなプレッシャーになったり。

単純に、新鮮な情報を得る手段として利用すればいいんだけど、その辺の駆け引きとか実際あったりするのかな?うちではないよね?ない。きっとない。


督促 SBS

今見ているバッファ以外を一括で閉じたい。*scratch* 以外でもいいんだけど、どうやるんだろう?

はてな emacsで開いているすべてのバッファを・revert-bufferする・kill-bufferする方法を教えてください。.emacsに貼るelispまたは、コマンドを教えてくださ・・
kill-buffer の時に確認されるのはどこかで nil とか渡すとなくなるのかな?

kill-buffer は「変更があるバッファを閉じる際に確認する」らしい。無条件で強制的に閉じる事は無理なのかな?

半角数字の影響って何?

ペリカン便の再配達をネット経由で申し込んだ。

備考欄を書くところがあるんだけど、これが「全て全角」じゃないと駄目らしい。『(1行あたり全角30文字、4行以内でご記入ください)』っていう注意書きがあるのはいいんだけど、半角数字(時間に関する記述;数字とコロン)が駄目なのは内部データの問題?事務処理上の手間とか?スクリプトは半角だから、とか?

半角カナだと文字化けするみたいな話はよく聞くんだけど、その辺って「入力拒否」じゃなくて内部変換じゃ駄目なの?全部が全部対応できるか分からないけど、こういうの結構ストレス。使う側になるとよくわかる。

どれだけストレス感じさせずにフォーム(ユーザプロセス)を設計するかってのは大事だ。


そういえば、はてなブックマークの基本設定フォーム内のテキストエリアで Enter 押すと詳細設定が開くのはなんで?使いやすいのかな?

my hatena bookmark on 2006-03-01

一概には言い切れないんだろうけど、決定的な違いって何?とりあえず、VMWare って「ファイルを開く」事なしに起動可能?出来るなら(出来るだろうけど)違いは何だろう?GUI 故の Windows 資源の有効活用、とか?

勤め先でそろそろ「coLinux 狩り令」が出そうな雰囲気。VMWare が嫌って事じゃないんだけど、あまり乗り換える事の利点が理解できてないので…。『「(少なくとも初期状態では)完全に同じ環境」をチームそれぞれの開発環境に出来る』って事なのかな?手間が1度で済むとか。

とりあえず、VMWare サービス化手順調べとこう。
きまぐれ日記: colinux から VMware Player に乗り換え
sexe経由でサービスっぽくなる?シェル(ターミナル)操作とブラウザからのアクセスだけしか使わないし、多分これでいけるでしょう。


隠れ"こりなくしゃん(coLinutian?)"で踏み絵待ち?

KoshigoeLab::Greasemonkey

とりあえず、テキストフィールドから関連タグで検索する方法が分からなかったので、適当な Greasemonkey で解決。絞り込んだ後のページではフォームがなくなってるようなので、そこでは表示されない。後、一応ユーザページでの利用が前提だけど、他のページで試してたりはしない。タグの区切り文字も半角スペースだけ。とりあえずのやっつけ仕事なので、こんなもの。

エレメント作ったり、エレメントのイベントハンドラ追加するのに、"element.onclick"とか出来ないとかいい勉強になった。Greasemonkey のいいデバッグ(検証)環境ってないかな?alert とコメントアウトで無理矢理デバッグっぽい事してるけど面倒。

キーワード検索用のテキストフィールドに半角スペースで区切った関連タグを入力したら、RTag てボタン押すと関連タグでの絞り込みページに飛ぶはず(…、飛ぶといいなぁ)。

my hatena bookmark on 2006-02-28

プロフィール

このアーカイブについて

このページには、2006年3月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2006年2月です。

次のアーカイブは2006年4月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。