HYSPRO Diary
2002-12-03 (Tue)
_ @IT 事例に学ぶWebシステム開発のワンポイント(6)
JavaのGarbage Collectionの説明です。大変素晴らしい。New[Eden,Survivor], Oldなんて用語、恥ずかしながらはじめて知りました。-Xmxで多くとればよいものでもなかったのですね。
Newを全体の1/3程度にし(-XX:NewSize,-XX:MaxNewSize)、通常差がありすぎるEden:Survivorを2:1くらいですか(-XX:SurvivorRatio)。[through なんでやねん]
2002-12-04 (Wed)
_ ssh port forwarding
-Lオプションで指定します。-Rだと受け入れる方向になります。ただ、これだけだとbackgroundで動かないので、
$ ssh foo.hoge.com -f -N -L 8025:foo.hoge.com:25
などとすればOK。
sshで事がすむのだから、ただただしさんのトンネル削除機に比べれば天国です。
_ 同じ売ると言っても
同じ売るといっても、「作ったものを売る」のと「作ってあるものを売る」とでは、随分雰囲気が違う。
_ HttpServletを継承せよ
WebApplicationの開発で楽をするためには、HttpServletを自前で継承しなければならないと思う今日この頃です(StrutsなどのFrameworkを利用するなら、そのBase Servlet class)。HttpServletをRefactoringの外に置いては、コードが綺麗になりません。
プロジェクト開始と同時に、HttpServlet,HttpServletRequest,HttpServletResponseをwrapしたクラスを作りましょう。
_ J-Phone Emulatorのインストール
J-Phone Emulatorのインストールがなぜかうまくいきません。XPだからでしょうか。インストーラはエラーもなく終了するのですが、スタートアップに追加された起動ショートカットに何も文字がありません。そのため、起動するすべが分かりません。次のように自分でコマンドを叩きましょう。
$ java -jar jbmidp.jar &
2002-12-09 (Mon)
_ サーバー入れ替え完了
サーバー入れ替え完了しました。無事Debianサーバーにすることが出来ました。これで、あんなことやこんなことが自由に出来ます。素晴らしい。
_ KDEでログインするとdcopserverが起動していないと怒られる
KDE のインタープロセスコミニュケーションセットアップに エラーが起こりました。システムのメッセージは以下の通りです。 Could not read network connection list /home/takachan/DCOPserver_nora.running-dog.net_:0 "dcopserver" プログラムが実行中か確認してください。こういう場合は、~/.ICE*と~/.DCOP*を削除しましょう。
_ 思考パターン やると決まったなら最大限やる
意にそぐわなくてもやると決まったからには最大限やるべし。例えば、宴会部長に任命されたら、頑張って皆を楽しませしょう。来年も任命されたらやだななどと考えては損です。(架空の話です。ほんとに宴会部長に私がなったわけではありません)
_ 思考パターン 相手の身になって考える
相手が何を望んでいるのか、何を好むのか、相手の身を演じて考え、それを提供する。例えば、上司がお客様のところに出かえるとして、どういう展開になるか思考実験し、資料を作る。
2002-12-10 (Tue)
_ Test-Driven Developmentが届きました
Test-Driven Development: By Example (The Addison-Wesley Signature Series) Kent Beck (著)が届きました(また在庫切れになったようですが)。ざっと眺めましたが、簡単めです。私としてはもっと突っ込んで欲しかったのですが。Pythonの記述もあり、全編Javaという訳ではありません。
過大な期待をしてしまったのでちょっと残念です。2cm程度の厚さ(Efective Java程度)なので、読み易いです。とりあえず読んでみますが、精読・通読はしなさそうです。
2002-12-11 (Wed)
_ JaJakartaのML読んでますよ
JaJakartaのML、9月から読んでますよ。話題の流れが面白いですし、JavaOneでお会いした方々が個性的なので、読んでいます。ただ残念ながら私は翻訳には興味がないので、翻訳という形ではcontribute出来ません。という訳でMLを眺めてはいるものの、距離を置いています。サンプルプログラム作成など、別の形があればと思っています。といっても、JBossとDebian・IDEAが私としては優先事項なのでかなり手一杯ですが(それすらも満足にできない(^^;)。
_ クラスを第三正規形にする?
クラスを第三正規形に目指してみるのはいかがでしょうか。クラスの構造をテーブルに例えるなら、クラス名がprimary keyでメンバ変数やmethodsがその他のカラムになります。メンバ変数やmethodsをクラス名に一次従属させる(第三正規形)のがうまいクラス設計になるのではないかしら。
2002-12-12 (Thu)
_ Test-Driven Development格付け上昇
読み進めていると結構よくて、実ははまってたりします。ちょっと英語が難しいので読みづらいですが、面白いので気にせずガンガン読んでます。データベースを含めたテストだとかWebのテストといった私が悩んでいる部分が載ってなくて、その点は確かに不満なのですが、もっと基礎的な部分、Test Firstの真髄を垣間見ることが出来るので、よい本です。
再認識したことは、Test Firstによって、APIの実装と処理の実装を分離しようということです。
(1)本体のクラスを作る前に、まずtestを書きます。ここで、どういうAPIがよいかその点に集中します。
(2)fake実装して、とりあえずcompileを通します。ここでAPIが出来上がります。
(3)testが通るように処理を実装します。ここでは、処理のコードに集中します。
(4)Refactoring.
というわけで、極めて(extreamly)実装寄りのTest Firstは、逆説的に、極めて設計重視な訳です。
動作テストのためのTestという目的も、もちろん同時にあります。
2002-12-13 (Fri)
_ Zopeの初期ユーザー
Debianでは、Zopeの初期ユーザーは/var/lib/zope/accessに設定されます。/usr/lib/zope/inituserではないので注意しましょう。
# cd /var/lib/zope; zope-zpasswd access
で、管理者IDとパスワードを設定します。
ポートの設定などは、/usr/sbin/zope-z2にあります。
2002-12-17 (Tue)
_ ファイル同期ツール unison
rsyncを双方向にしたファイル同期ツールunison(apt-get install unison)なる優れものがあるらしいです。
_ J-Phone Emulatorの癖
J-Phone Emulatorの癖ではまっています。HTTPのヘッダが、必ず、「GET http://xxx.xxx.xxx.xxx/index.html HTTP/1.0」というように、Proxy仕様のヘッダになります。HttpConnectionを使う場合はもちろん、SocketからHTTPを自力でコーディングしてもこうなります。
Apacheは融通が利いてこれを受け付けることが出来るのですが、私が業務で試しているAppServerはこれを認識してくれず、エラーになります。
Apacheを逆Proxyとして使えば(ProxyPass/ProxyPassReverse)うまくいきそうですが、Redirectとかで生のサーバーIPが出てしまい、Proxyを必ず通るようには設定出来ません。困りました。
HttpConnectionはMIDPの一般的な部分なので、J-Phone Emulatorのバグとは思えません。仕様だとするならば、J-PhoneのインターネットアーキテクチャがProxyを使うものだ考えると納得できます。すなわち、J-PhoneからWebを見るときは、J-Phone会社のProxy Serverを必ず経由するようになっているのかもしれません。憶測ですが、どうなのでしょう。
いずれにせよ、EmulatorではLANでテストしやすいようにして欲しいです。
2002-12-18 (Wed)
_ Debian GNU/Linux 3.0 updated (r1)
Debian GNU/Linux 3.0 updated (r1)がリリースされました。r0がセキュリティアップデートされた安定版(Stable)です。
_ Dannさんの日記捕獲
Dannさんの日記を発見しました。プログラミングの趣味があまりにも私と一緒なのでびっくりしました。ぜひお近づきになりましょう。
IDEAユーザーになったそうで、嬉しい限りです。IDEA掲示板でお見かけしたと思ったのですが、やはりそうでした。
Wikiもやられているようです。私も今裏でZopeを立ち上げて、IDEAページを移植中です。Wikiも立ち上げてみようと思っています。
_ J-Phone Emulatorの癖はmod_proxyでOK
J-Phone Emulatorの癖ではまっていましたが、Apacheのmod_proxyでProxyPassReverseをきちんと設定すれば、とりあえずOKです。
ProxyPassReverseは、SeverからProxyへ返されてきたLocationヘッダを書き換えてClientへ返す機能です。これを設定すれば、Locationヘッダによるジャンプには対応することが出来ます。なので、コンテンツに直にServerアドレスが書かれていたら、この方法だけではだめです。
ProxyPassReverseの置換は文字列比較なので、文字列を正しく設定する必要があります。すなわち、返される文字列がホスト名なのかIPなのかまず調べて、それを設定しましょう。
_ Javaの3 edtionsを経験した
Javaのthree edtionsであるJ2SE/J2EE/J2MEをひととおり理解し、経験することが出来ました。携帯も結構面白いです。GUIの自由度が低いため、逆に簡単で、ちょっと覚えるだけで入力フォームなどを作れます。
ところで、J2MEに関するテストパターンやデザインパターンについて書かれたものはあるのでしょうか。
2002-12-19 (Thu)
_ 祝! 日記1周年
この日記を書いて一年がたちました。この日記を通じて沢山の人と出会え、JavaやLinuxに詳しくなれました。充実した楽しい一年でした。
次の一年の課題は発信です。皆さんとコラボレーションしながら、ちょっとずつでも発信していきたいです。また、何か個性的なアイデアも思いつければよいですね。
2002-12-20 (Fri)
_ Postfixの.forwardの書き方
自分のmailboxに残しつつ、別のアドレスを転送するやり方です。.forwardに、\アカウント名,転送先アドレスの一行を書きましょう。これはmailbox用です。 Maildirでは、.forwardに
~/Maildir/ 転送アドレスの2行です。こちらの書き方は知っていたのですが、mailboxの書き方が分からず苦労しました。
_ EJB XDocletの入門
EJB XDocletに関するdocumentsは沢山あるでしょうが、こんなのを見つけました。「EJB Cookbook」という書籍のpreview版で、第2章 Code Generationです。入手するには、TheServerSide.comの会員(無料)になる必要があります。この章は、Problem/Background/Recipe形式なっていて分かりやすいです。
ファイルはMS Wordで、綺麗な体裁になっています。Wordが得意でない私にとって、書式とスタイルの設定が特に参考になります。また、全てのページのヘッダとフッタに「このメールにコメントをくれ」と書いてあって、Marketing上手です。
_ Zopeの初期ユーザー (2)
Debian Woodyでは、Zopeの初期ユーザーがちょっと変わっているようです。管理者を設定するinituserファイルはDebianのZopeにはないようです。あるのは、emergency userを設定する/var/lib/zope/accessファイルだけです。インストール時に入力したユーザー情報はこれです。/var/lib/zope/inituserを別途設定しても認識されません。
つまり、DebianのZopeの方針は次のようだと想像できます。emergency user(emvergency userとは、Zope Objectは作れないが他のユーザーは作れる特殊なユーザー)だけ作り、そこから他のユーザーをZope内で作成してね、ということのようです。
2002-12-21 (Sat)
_ Zopeいろいろインストール
実はいばらの道です。英語だけ使うなら何も心配しなくてよいのですが、日本語を考え出すと、大変です。国際化対応へのZopeチームの頑張りに期待します。そう思うと、Javaはかなりましになりましたね。
_ zope本体
apt-get install zopeで、2.5.1を入れます。
これだけだと、日本語入力に難があるので、管理画面の日本語化パックZope2.5.1-JapanesePatch0.3.tar.gzを入れましょう。
これで日本語入力OK。その心はというと、管理画面の文字をEUC固定にする必要があるのです。それだけなら、これだけでもOKな気もしますが。
_ ドキュメント
apt-get install zope-book
_ External Editor
Zopeでは、ブラウザ画面を通じてZope Objectの編集を行います。しかし、Localのエディタを使いたいこともあり、それを自動化するのがExternal Editor(EE)です。サーバー側のEE ProductとLocalのEE Clientが協調して実現します。
仕組みは、MIME Typeです。EE Productを入れると、かわいらしい鉛筆のアイコンがObjetの隣に出ます。それをクリックすると、Zope専用のMIMEが付いてダウンロードされます。それを認識したブラウザが、EE Clietを実行します。EE Clientは、指定されたエディタを起動し、エディタはダウンロードされたローカルファイルを編集します。エディタが閉じられると、EE Clientはサーバーへファイルを送り返します。
_ External Editor Zope Product
apt-get install zope-externaleditor
_ External Editor Client
on Linx, apt-get install zope-zopeedit。ブラウザにMIMEを設定します。
on Windows, ここをご覧ください。インストーラがありますので、例えば、C:\Program Files\ZopeExternalEditorへインストールします。このディレクトリにあるZopeEdit.iniを開き、好きなedtiorを指定します。例えば、editor = C:\Program Files\xyzzy\xyzzy.exeとすればOKです。MIME Typeの設定はインストーラがやってくれています。
_ ZWiki
さあ、いばらに近づいてきました。文字を扱う部分はかなりナイーブです。Javaでもそうですが、現状のcomputingでは日本語はportabilityが低くて、残念です。
apt-get insatll zope-zwiki/testingは、日本語がだめなです。日本語化パックがあるので、それをインストールしましょう。日本語化モジュールのドキュメントが散在していますので、ちょっと苦労します。ZJUGの活動に期待です。WikiJapaneseを入れましょう。
現在作業中。
_ 構造化テキストの日本語パッチ
2002-12-22 (Sun)
_ アンテナを設置したいが、どれがいいの?
アンテナを設置したいのですが、どれがお薦めでしょうか。朝日奈、なつみかん、たまてばこ、WDBが有名どころのようですが、どれがよいのでしょうか。どれでも同じようだと、逆に悩んでしまいます。
たまてばこがRubyで書かれているので興味があるのですが、ちょっとプログラムの更新が遅いのが気になります。まあ、現在のバージョンできちんと動いているので構わないのですが。
_ 自分で設置しなくても他人のアンテナを見に行けばいいのか
なるほど、他人のを見に行けばよいのですね。お手軽です。
アンテナってWWWCのサーバー版だと最初思っていたのですが、それだけでなく、アンテナ間でキャッシュをやりとりするんですね。DNSみたいに。回線が速くなった今は、キャッシュのやり取りに力を入れるのはどうかなと。それとも、ルートDNSのようなアンテナ総元締めがいるのでしょうか。
更新時刻順に単純に並べるだけでなく、自分が頻繁に見に行くページが分かるような、賢いブックマークサーバーが欲しいです。うーん、アンテナに入れるようなページはもともと一日に何回も見に行くような所だから、更新時刻順でよいのかな。それから、ページの追加はブラウザでしたいです。
もうちょっと際立つアイデアがあれば自作するのですが。
2002-12-23 (Mon)
_ tDiary deb化
1.5.1のdeb化に取り組んで、とりあえず出来て、テスト中です。ちょっと上達しました。debuild便利すぎです。/usr/bin/にconvert2.rbスクリプトを置こうとしたら、man pageを作れと怒られたので、とりあえず挫折です。Warningはありますが、Errorは消えました。
あとは、テストです。動かそうとしたら、disp_referrer.rbプラグインがエラーを出して動きません。プラグインを外すか、CVS HEADに移行するか。tdiaryのMLを読むと、25日に1.5.2のリリース予定だそうです。debもクリスマスプレゼント出来るかな。来週も忘年会があるので、来週末には1.5.2を出せるでしょう。
index.rbなどを/usr/lib/cgi-bin/に置くかどうか悩み、置いていません。CGIはここに置くべきなのですが、tDiaryは、http://hoge.com/cgi-bin/で動かすタイプのCGIではなく、ユーザーごとのCGIなので、どこに置くべきでしょうか。debian-jpのMLに聞かねば。
インストールスクリプトもまだです。自分の腕に合わせて、まずは単純にdebします。/usr/bin/に置くことがまだ出来ないですし。
_ Insecure Operationが出て動きません。secureモードfalseだと、require 'pstore'で出て、secureモードtrueだとdefaultio.rbで出ます。うーん、自分の設定が悪いのか否か。themeは、/var/www/tdiary/themeに置くことにしました。/etc/tdiary.conf化は、とりあえず保留。また、Copyrightの関係から、debは2本立てです。coreとpluginをtdiary-*.debにして、themeは、tdiary-theme-*.debにします。
2002-12-24 (Tue)
_ Debianサーバ構築運用ガイド
Debianサーバ構築運用ガイドを見つけました。大変よくまとまっていて分かりやすいです。特に、sudoやsshの設定・使い方が簡潔かつ丁寧に書かれています。
/var/logのログを一般ユーザーから見られるようにするには、admグループに追加。passwd -l でロック。なるほど。
記事が今後も増えていくようなので、頑張ってください。
2002-12-26 (Thu)
_ WikiClone探し
ZWikiがなんとも痒いです。日本語の認識がもう一つで、日本人がやるにはちょっと厳しいです。構造化テキストは認識するのですが、WikiNameを判断する実装があまく、普通に日本語を書いただけでいたるところに「?」が出て、WikiNameだと誤認識されてしまいます。というのも、WikiNameの判別に正規表現を使っているのですが、この部分を担うRegexp.pyが、Doouble Byte文字を考慮していません。Single Byte欧文字にやっと対応し始めたところで、Double Byteまでは先が長そうです。
という訳で、WikiCloneを探してみました。このページはまとまっています。
Javaの実装としては、PnutsWiki[license]とMobWiki[Apache License]があるようです。PnutsWikiは、スクリプト言語Pnutsを作り、JDOをストレージに使っていて面白げです。EJBでやってみたいな。
Zopeから離れたくはないのですが。
2002-12-30 (Mon)
_ tDiary 1.5.2へ
それに伴い、テーマも変更してみました。
_ tdiary_1.5.2-1_i336.debリリース
tdiary_1.5.2-1_i336.debをmy debに置きましたので、お使いください。もちろん私のこの日記はこのdebを使用しています。
apt lineに
deb http://www.sgtpepper.net/hyspro/deb ./
_ を書き加えればOKです。tdiaryとtdiary-themeが見つかると思います。
なお、腕が未熟だったため、前回作成した1.4.4-1のdebを直接は継承せずに、一から作り直してしまいました。1.4.4-1のdebをお使いの方は、お手数ですが、一旦削除(apt-get remove tdiary)してから、新たにインストールした方がよいでしょう。しかし、もう慣れましたので、今後のアップデートは他のdebパッケージと同様にアップデートいただけます。
インストール後のセットアップは、/usr/share/doc/tdiary/README.Debianをご覧ください。次のようなことが書かれています:
**Set up your own tDiary**
1. Make links of CGI files. For example,
$ cd ~/public_html/diary
$ ln -s /usr/share/tdiary/index.rb index.rb
$ ln -s /usr/share/tdiary/update.rb update.rb
2. Make password. For example,
$ cd ~/public_html/diary
$ cp /usr/share/tdiary/dot.htaccess .htaccess
Modify .htaccess to fit your environment.
Make .htpasswd file using htpasswd command.
3. Configure tDiary. For exmaple,
$ cd ~/public_html/diary
$ cp /usr/share/tdiary/tdiary.conf.sample tdiary.conf
Modify tdiary.conf to fit your environment.
That's all.
Your own theme directories are not necessary because tDiary
tries to find theme at /var/www/tdiary/theme, which is set
in theme_url.rb.
_ また、tDiary 1.5からは日記の保存形式が変わり、そのままでは1.4で保存された日記データを読めませんので、ご注意ください。/usr/share/tdiary/mics/convert2.rbで1.4のデータを1.5に変換するか、tdiary.confで1.4互換オプションを設定するかしてください。詳しくはtDiaryのページをご覧ください。
_ apt-lineの作り方
$ dpkg-scanpackages . . | gzip -c > Packages.gz $ dpkg-scansources . . | gzip -c > Sources.gz
_ おのたくや [今日tDiaryを初めて知って、自分のDebian(Woody)に ユーザ間で共有できるように、手動で一生懸命インス..]
_ はんばあぐ [Namazuとの連携などにも取り組んでいきますので、ご期待ください。]
_ やまだあきら [私もdebがあることを知らなかったクチなのですが、tdiary.debをDebian本体にuploadなさる予定はな..]
_ きんとき [deb があって非常に嬉しいです。 しかし、どうも自分の環境(thttpd使用)ではうまく動きません。どうもライブラ..]
_ 通りすがり [cgi の symlink は suexec などで問題が発生すると思われます。]
_ yoshi [$ cp /usr/share/tdiary/{index,update}-debian.rb ~/public_h..]
_ はんばあぐ [ご返事おくれてすみません。最新のtdiary-1.5.3.debにはセットアップスクリプト(tdiary-setup..]
_ jtiewlyu hlqctxr [jaixc kybljx mhwtxdy xomnfw xrap ohvjrz kncsgle]
Debian links:スレッドテンプレ, Debian Quality Assurance, Debian Package Tracking System
written by はんばあぐ

_ miki [というのを理解した上でコードを見直すと良いということですね(Item5)。]
_ はんばあぐ [GCを意識してコーディングするのは難しいです。parameterのscopeを大きくとると、refactoringも..]
_ miki [チューニングが劇的に効くのは非常に限られたケースだと思います。 私の言っているのは非常に単純なことで、ローカル変数で..]