HYSPRO Diary
2002-05-05 (Sun)
_ IDEAレビュー公開です
IDEAのページを作りました。筐体だけ出来た感もありますが、この日記のように、これから1つ1つコツコツと書き込んでいくということで、公開です。GWでもう少しやりたかったのですが、映画をみたり(KT面白かったです)、旅行にいったり(温泉よかった)、いろいろ余暇がありますので、すいません。没頭してPCに向かっていると、休日の意味がないというかなんというか、以上言い訳です。まあ、ホームページは更新が命なので、IDEAを使う限り更新していきます。
_ 明日の はんばあぐ さんは、
本格的にDebianの設定です。インストーラに慣れなく、10回くらいインストールしました。インストーラには慣れたので、真剣に設定してみます。
Linux Worldの付属CDは、karnel 2.2.x仕様のなので、インストールしにくいです。記事はGoodなのですが。Unix Userの付属DVD-ROMが新しいインストーラを使っているので(日本語OK)、お勧めです。
2002-05-09 (Thu)
_ 宗教論争
ここ1ヶ月くらいの私の不安を象徴するような出来事が今日起こった。ソースのバージョン管理方法を巡って、CVSとVSSで対立したのだ。私がCVSで、4人がVSS、2人が傍観であった(弱小ベンチャーなので外出者を除き社内全員)。私の不安は2つあって、1つはアピール下手でリーダーシップを発揮するのがまだまだな自分(それは重々承知で私の中長期目標なので話は飛ばす)。もう一つは、自分の会社の技術力は将来大丈夫?という不安だ。
誤解がないように書いておくが、うちの会社の技術力は世間一般的には高い方だと思う。実際に目にした日本の組織で、うちを超えるようなところには会ったことがない。しかし、ネットの世界と比べるとまだまだという意味だ。
ここ半年以上CVSを自分で触って覚え(というわけで私も大口を叩ける身分ではないが)、社内のみんなにも使ってもらおうと思った。しかし、既存のVSSに慣れた人(といってもここ半年ほどの話)にはなかなか理解されなかった。
自動パッチシステムであるCVSと自動ロックシステムであるVSSとは、見た目が同じでも思想は全く異なるので、どちらが優れているということは原理的に論じられないと思う。結局は、開発手法を含めたメタ議論や思想信条の問題になりがちだ。だからこの問題に正面からぶつかることは嫌だった。
ロックが必要な場合も理解できるので(でもそんな場合は開発手法から考え直した方がうまくいくと信じる)、利点欠点の議論なら良かったのだが、そうではない意見が主流だった。曰く、「VSSで満足しているのに新しいのは覚えたくない」「本なんか読みたくない」(いくら売り言葉に買い言葉とはいえ、私が一生口にすることはない言葉だ)。
私の理想としては、CVS導入に議論の余地などない、そんなご時世だと思う。優れた技術者がこれだけ採用しているのだから、少なくとも、どんなものか試してみようというものだ。
まあ、ここまでは予想の範囲だから我慢がまん。一番嫌だったのは、技術オタクが変わったこと言ってらぁという雰囲気を感じてしまったことかな。この日記の冒頭でも書いてある通り、私はビジネスプログラマが信条だ。すべては競争力をつけるために努力している(好きなことなので苦労しているとは思わないが)。その日々の鍛錬をオープンソースの技術オタクで片付けられると、嫌だね。
とはいっても、うちよりもビジネスセンスがあり、技術力もある組織を見たことないのが不思議だ。
_ 読書 「リファクタリング」 マーチン・ファウラー著 Pearson Education Japan
感激しました。こんなに感銘を受けた本は、3年前学生時代最後の夏休みにGoFのデザインパターンを読んで以来です。最高級に属します。
ショックだったのはこの本が2000年5月に出版されていたこと(しかも翻訳)。私の技術力は周回遅れもいいとこです。
とっても恥ずかしいので書きたくないのですが、5ページの例をみて、私はどこが問題か分かりませんでした。綺麗なコードじゃないけれど、別に普通でしょと思いました。ハイ、私は大馬鹿者でした。
この本を読まないJava技術者がjavacした時は、コンパイラはwarningを出すべきです。絶対そうすべきです。
Ket Beckはほんとに凄い、偉い。気に入った言葉(うる覚え)「私は天才プログラマではない。天才的な習慣を身に付けたプログラマだ」
_ 今日の日記は濃いですね(笑)。まあ、あの本をゴールデンウィークに熟読したあとだけに、余計に今日の出来事が...。
_ Mozilla Party
がんばれ!!ゲイツ君を読んでいたら、Mozilla 1.0リリースを記念するMozilla dot Partryが、5月18日土曜日に御茶ノ水であるそうです。こういった技術者イベントは久しぶりなので、参加してみます。私はOpera使いなのですが(^^;。もし、私もいくという方はツッコミください。お会いしましょう。
_ broadcastのpingを拒否する設定
# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
解説:broadcast addressにpingを投げると、受け取ったマシンが返答し、ping送信元は大量のパケットを処理しなければならない。その際、ping送信元IPを偽造することで、そのマシンにsmurf攻撃することが出来る。それを避けるためには、broadcastのpingを拒否するようにすればよい。それを決めるのが上記ファイルで、0が受諾、1が拒否。デフォルトは0なディストリビューションが多い。
_ NICに複数のIP
# ifconfig eth0:0 xxx.xxx.xxx.xxx
2002-05-13 (Mon)
_ WoodyにTrue Typeフォント
友人の力を借りて、XFree86にTrue Typeフォント設定しました。多謝>友人。
まず、方針を理解する必要があります。フォントサーバー(xfs)を使うか否かです。フォントサーバーを使うとフォントのリソースを一元化できる利点があります。Linuxユーザーが大勢いるわけではないので、フォントサーバーはパス。
フォントサーバーを使用しないとすると、Xの2つのモジュールのどちらを使うかを決めます。freetypeとxttとがあるので、とりあえず、xttを使いました。
XF86Config-4に、xttのモジュールを読むようにします。そして、True Typeフォントをディレクトリに置いて、fonts.dirを作り(fttoolsパッケージのmkttfdirコマンドを使います)、XF86Config-4のFontPathにそのディレクトリを追加すればOK。FontPathは先に書いたのが優先されるので、順序も注意です。
/root/.bashrcに export http_proxy=http://proxy.xxx.ne.jp:8080/ export ftp_proxy=http://proxy.xxx.ne.jp:8080/
_ などとします。
2002-05-14 (Tue)
_ Woodyで日本語環境構築
TrueTypeで日本語がある程度美しく表示できるようになりました。次は、日本語入力です。X Windowで日本語入力するには、かな漢字変換エンジン(cannna, wnn, skkなど)の他に、Xクライアントとエンジンを仲介するXIM(kinput2など)が必要です。で、これらの環境を整えた後、Xクライアント(例えばemacs)にも設定が必要です。
どうすればよいかめげかけたのですが、$ set-language-envして、質問に答えればOKです。これするまえに、最新のものをapt-getした方が幸せかもしれません。
2002-05-15 (Wed)
_ Linuxを目指すわけ
なぜ私が開発環境としてLinuxを目指すのか、その動機は、楽をしたいからです。
1. シェルスクリプトを書くようになった。また、AntやらCVSやら、コンソール作業が多くなった。
2. Cygwinを使い出す。
3. が、どうもWindowsとの相性が悪い。居候している感じで面倒。また、日本語環境が悪い(この点はX on Windowsを使ってかなり満足)。
4. Emacsを使い倒したい(この点は、xyzzyを使ってかなり満足)。
5. じゃあ、Linuxでしょ。寄らば大樹の陰で、ドキュメントも多いし、Red Hatかな。
6. が、rpmで最新版を落とすのが非常に面倒。Kondaraには、mph-getがあるらしく、しかもRed Hat系列なので、これにしよう。
7. Javaをやっていて、最新ものを落とすのが面倒。自分が注目しているのは仕方ないが、Antやらなんやらというベースとなるのは自分でやることもないじゃないか。.jarの置き場所とかも、authorizedされていればいいな。
8. Debianには、様々なJavaを含め大量のパッケージが管理されているようだ。
こんな感じで、Debianに流れ着いたわけです。この過程を、マルクスの理論をパロディー化すると面白いかもしれませんね。歴史的必然ということで。
ていうか、ぶっちゃけ、とらねこさんがいたから、Debianを使ってます。まあ、私がKondara界のとらねこさんになればよかったのですが、そこまで根性ありませんでした。すみません。とらねこさんのページは必見です。しかも過去のドキュメントもマメにupdateされているのが素晴らしいです。この場を借りて大感謝申し上げます。
_ と、持ち上げといたところで(笑)
私はJavaマニアではないので(笑)、コンパイラとかには興味がなく、別にSun's JDKで満足なのですが、とらねこさんが「javac捨てますか?それとも、時間捨てますか?」と煽るので、使ってみたのですが、日本語がうまくいきません。
"HelloWorld"出力は、javac -> javaでも、jikes -> javaでも正常に表示されるので、パスが通ってないとかいう基礎的ミスではありません。
"こんにちは"出力は、javac -> javaではOKで、jikes -> javaでは、「?????」になってしまいます。javacでは日本語がきちんと出るので、Xのミスとかではなくて、jikesの使い方だと思うのですが、どうすればよいのでしょうか。ソースはEUCで書かれています。
なお、とらねこさんから落としたfont.properties.jaのパッチは、
patch unexpectedly ends in middle of line patch: **** Only garbage was found in the patch input.
_ と怒られてしまいます。既にcommitされたのでしょうか。
2002-05-17 (Fri)
_ やっと分かった
ちょっと大袈裟ですが、3層アーキテクチャの意味がやっと腑に落ちました。Delphiが初めて触った言語だっただけに、RADの経験・2層クラサバの経験がちょっと邪魔しました。
アプリケーション層は、それ自体独立に機能するアプリケーションをオブジェクト指向で作成するということです。極端な話、Databaseがなくてもアプリケーション(層)は動作するわけです。この場合、サーバーが落ちればデータも失われるわけで実用性はありませんが、論理的にはそういうことです。また、GUIがなくてもアプリケーション(層)は動作するわけです。この場合、人間が触れないので実用性はないですが、論理的にはそういうことです。
今まで工数を見積もるときに、画面数から演繹して計算していましたが、これは2層クラサバの発想かなと。オブジェクト指向でアプリケーション層が出来ていれば、GUIやストレージはその機能を付け加えるだけですからね。そう考えると、今までずいぶん無駄なコードを書いていた気がします。アプリケーション層にオブジェクト指向を駆使していれば、もっと早く・よく・安く開発できたでしょう。
これに関連して、JUnit(単体テスト)を使うと工数が倍になるという意見もちょっと違いますね。アプリケーション層が出来上がってGUIを作るときは、そのイベントハンドラに単体テストで書いたコードを書く(写す)だけだから、コードが倍になるということはないわけです。
SQLと密接に結びついた2層クラサバの破壊力は素晴らしいものなので、これはこれで通用すると思います。ただ、今の私は、そういう意味での3層の経験が少ないので、なるべく実戦経験を積んで経験したいわけです。世界中がこちらに動いている(というか、既に世界はそっちに行ってしまっ「た」と私は感じますけどね)のですから遅れないためにも。でも、なかなか社内の賛同が得られないんだなぁ。
_ SSHの鍵の作成
まず、手元のマシンで、鍵を作成します。
$ ssh-keygen -t dsa
.ssh/id_dsaが秘密鍵、.ssh/id_dsa.pubが公開鍵です。
公開鍵を、接続先にコピーします(scpや直接)。
接続先にて、id_dsa.pubをauthorized_keys2に入れます。
$ cd ~/.ssh
$ cat ../id_dsa.pub >> authorized_keys2
以上で暗号鍵の設定は終わりです。
_ ssh-agent
フレーズをメモリ上に保持し、接続ごとにフレーズを入力する必要がなくなります。
$ exec ssh-agent $SHELL
execはしなくてもOK。
$ ssh-add
で、フレーズを蓄えます。
$ ssh-agent -k
で、終了です。
2002-05-20 (Mon)
_ Mozilla dot Party
18日土曜日、Mozilla dot Partyに行って来ました。体育館くらいの会場に300人位がひしめき、盛況でした。
Mozillaを使ってみる気になりました。というのも、Mozillaはただのブラウザではなく、もっと遠くの視点を見ているからです。ブラウザというより、OSというかVMというか、少なくとも新しいUser Interfaceを提供しようとしています。GekkoがUIのエンジンとなり、その上でXUL(ズールと読む)というXMLでUIを設定します。そして、JavaScriptで個々の機能を呼び出し、機能は、XP COMと呼ばれるGekko上のCOMチックなモジュールで実装します。プラットフォームに依存する部分はVMのように作成されているので、モジュールはプラットフォーム互換性が高いそうです。
Mozilla 1.0はこのようなフレームワークそのものであり、今提供している機能はBrowser/Composer/Mail-News readerです。まだ単なるブラウザですが、そのうちOfficeアプリやら何やら登場してくるでしょう。技術は実ってきているので、アイデア次第といったところです。開発が熱く、コミュニティーも盛んなので、あと1年もすれば、化けるかもしれません。現時点のMozillaブラウザは可もなく不可もなくといったところで、Operaのような特段の魅力はないのですが(一般にブラウザとしては私はOperaを推薦します)、期待をこめて使ってみます。
Debianだと、mozillaとmozilla-locale-jaパッケージをインストールすればOK。
2002-05-21 (Tue)
$ export CLASSPATH=/usr/lib/j2sdk1.3/jre/lib/rt.jar $ jiles -encoding euc-jp Hello.java $ unset CLASSPATH $ java Hello
2002-05-28 (Tue)
_ Set Character Encoding
TomcatでWebアプリケーションを動かすと、request parameterの日本語が化けてしまうのですが、Tomcatレベルでこれを解決する手段がsampleにあります。examplesの中にあるfilters.SetCharacterEncodingFilter.javaがそうです。
使い方は簡単。web.xmlにこのフィルターを定義します。
<!-- Character Encoding -->
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>Windows-31J</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
_ こんな感じです。web.xmlのDOCTYPE宣言もTomcatのそれと同じか確認しておきましょう。
expampleにはこの他に、compressionFiltersなるものもあり侮れません。
Debian links:スレッドテンプレ, Debian Quality Assurance, Debian Package Tracking System
written by はんばあぐ

_ みずみず [う〜ん、やっぱれびゅぅの「目次」は「めにゅぅ」に変えたほうがいいと思うよぉ。どでしょうか?あと、「ほむぺ」の方から逝..]
_ ASIP [DreamWeaverMXが凄いです。JSP開発やXML作成の支援機能がかなり本格的に実装されています。JSPのコン..]
_ ASIP [mikiさんからお返事をいただきました。IDEAの掲示板やメーリングリストができたら是非参加したいとのことです。ht..]
_ はんばあぐ [DreamWeaverやAdobeのWebページ作成ツールはとても興味があります。最新のバージョンではJSPなど、コ..]
_ miki [mikiです。IDEAレビューの中の補完機能はプログラマを堕落させるという一文が好きです。私はすっかり堕落して自分で..]
_ はんばあぐ [昨夜、掲示板置くつもりが日記書きになってしまいました。週末には設置します。 importを書く気がしないのはかなり堕..]
_ miki [IDEAでうっかりしていると5個以上のimportがjava.util.*のようにまとめられてしまうので注意(私はバ..]
_ ASIP [おっ。IDEA掲示板設置されるんですね。楽しみにしてます。]