マキノ式@Blogger

マキノ式@ブログ! Java関連をベースとしてWEBとかプログラミングとか

5.29.2005

そろそろJSF?

Developerworksのメールで下記のような連載が翻訳されていた。
まだ読んでないけど、とりあえずメモ。

「JSFを信じない人のために: JSFに関するFUDをクリアーする」
http://www-6.ibm.com/jp/developerworks/java/050527/j_j-jsf1.html

特に
FUDを信じないで下さい!
という一文は胸に刺さる。風評を信じず自分で検証することが大事だな。
ここ一年なるべく肝に銘じているのは
「自分がわからないことと、理解する価値がないことを混同してはいけない。」
ということ。わかっちゃいても人間ですから・・・・

FUD:Fear Uncertainty Doubtの頭文字で恐怖、不安、疑いの3つ、またはそれを煽るマーケティング手法を指す。最近ではLinuxに対するMicrosoftのFUDなマーケティングが話題になった。

Eclipse3.1RC1

Eclipse3.1RC1がリリースされたので早速落として色々と遊んでみた。
触ってみて気づいたことは
  • 起動速度や動作が軽くなった感じがする
  • 見栄えがよりソフトで見やすくなった
  • JDTのJDK1.5への対応がかなり進んでいる
  • デフォルトのワークスペースはユーザーホームに作成される
などである。

もちろん自分的な目玉はやはりJDTが1.5に対応していることである。
早速プロジェクトを作って友人のHとともにGenericsでウハウハしてみた。
コレなんかはgenericsでautoboxingでforeachなコード

List<Integer> intList = new ArrayList<Integer>();

intList.add(100);
intList.add(200);
intList.add(300);

for (int i : intList) {
System.out.println(i);
}

もしこれを現行の1.4で記述すると、こうなる

List intList = new ArrayList();

intList.add(new Integer(100));
intList.add(new Integer(100));
intList.add(new Integer(100));

for (Iterator it = intList.iterator();
it.hasNext();) {
Integer integer = (Integer)it.next();
int num = integer.intValue();
System.out.println(num);
}

素晴らしくシンプルでわかりやすいコードになった。ちなみにSystem.outはstatic importして利用するとさらに簡潔に!
genericsやforeachもちゃんとコードアシストでサポートされる。
たまんねー

5.19.2005

価格.comの改ざん原因

世間を騒がせているサイト改ざん。
いつものようにWindowsサーバのクラックなのかと思っていた。

ぜんぜん公表しないので不安に思って調べてみたら、どうもphpの掲示板フレームワークというかコンポーネントであるphpBB 2.0.11のセキュリティホールが衝かれたらしい。
クラックと言うよりワームなのかな?CodeRedとかNimdaを髣髴とさせる事件だ。

詳しくないので確かな情報かもわからないが、Googleの検索からも確かにブロックされている。
http://www.st.ryukoku.ac.jp/~kjm/security/memo/2005/05.html

phpBBのセキュリティ・ホールを突く「Santy」出現,Googleで標的を探しWebページを改ざん
http://itpro.nikkeibp.co.jp/free/ITPro/NEWS/20041222/154199/

やはりセキュリティパッチが出たらちゃんとあてなくてはならないな。
アプリケーションレベルのセキュリティホールだったと言うことなのかな?

と言うよりも、価格.comの原因をしっかりと公表しない姿勢には呆れるな。
(仮に上記の話が本当だとして、)そりゃあパッチの当て忘れは非難されるかもしれないけど、せっかくなんだからその情報を公開して欲しいな~。

--------------------
5/29 追記
phpBBとは関係ないらしい。
サーバはWindowsで運用しているようだが、そっち系のセキュリティホールでもなくSQLインジェクションをされたとかされないとか・・・・・
SQLインジェクションだとしたら随分お粗末な話だ。
さすがに発表は出来ないだろうな。

http://www.asahi.com/science/news/TKY200505230341.html

5.11.2005

ProjectHarmony

ApacheがオープンソースでJ2SE5.0互換のインプリメンテーションを開発するそうだ。
以前からIBMなんかはSunに対してJavaをオープンソースにしろと圧力をかけていたが、Javaはオープンソースにして欲しくないなー。
いや、オープンソースでも良いんだけどSunにリーダーシップをとって欲しいなー。
確かにオープンソースにはお世話になってるし素晴らしいと思うけど、Javaに限っては様々なインプリメンテーションによる群雄割拠状態になっては困るという心情から賛成できない。

まあ、Harmonyに関してはSunの互換性テストを受けるらしい(っていうか現時点では受けないとJavaと言えない)から問題はないとは思うけど。

ただ、なんでHarmonyを作るんだろう?
あまり意味がないのではないかと思う根拠
  • SunのJDKは無償である(当面有償になるとは思えない)
  • J2SE6.0(いわゆるMustang)はオープンソースで開発してる
  • JCPによりオープンな仕様策定が行われている(やや閉鎖的ではあるが・・・)
ApacheはオープンソースのJ2EEコンテナGeronimoも作っているが、あれもそんなに普及しているとは思えない。JBossがあるしね。

やはり備えなのかな?プロプライエタリなソフトは、いつ手のひらを返すか判らないし。

TheServerSide(Harmonyのコンポーネント構成のイメージ図がある)
Apache Software Foundation : J2SE Project Proposed

CNET Japan
アパッチのメンバーら、「Project Harmony」でオープンソース版J2SE開発へ

5.06.2005

FAT32にやられた。上限あるのかよ!

いやいや、やられた。
連休中にデスクトップマシンにVine3.1をインストールしてた時の事である。
今までWindows2000を使っていたので当然ながら過去のデータはNTFSに保存されていた。
Linux上ではNTFSじゃあなにかと不便に違いないのでFAT32へ変更してデータを書き戻そうとしたが、なんと80GBのHDDがWindowsからフォーマットできないのである。

何度やってもフォーマットできない・・・。
そして突き放すような冷たいエラーメッセージ。
「論理ディスク マネージャ: ボリューム サイズは大きすぎます。」

もしやと思いネットで調べてみると、
こんな文章があるじゃないですか
Windows 2000 の FAT32 ファイル システムの制限

なんと!FAT32は8TBまで扱えるフォーマットではなかったんですか???
もしや、嫌がらせですか?

ってことで、結局はVineをインストールした後にNTFSのままマウントして退避した後に、ext3で再フォーマットし、データを書き戻したのである。

意外なところで色々と制限があるので皆さんも御注意を・・・

#Linuxにした理由?そりゃあなた、Looking Glassをインストールしたいからに決まってるじゃないですか。

5.02.2005

Ajax関連:JMSの監視

もう既に実装されていると思われるAJAXの使い方の思いつき

JMSによって依頼した非同期タスクの返信をAJAXポーリングにより監視する。
JMSで非同期の依頼をかけておきながら、リプライを待つ同期実装が行われている。
WebでJMSの同期を利用する場合は、レスポンスをクローズしないで待たせておく感じ。

参考サイト:
BluePrints Solutions CatalogよりProgress Bar with AJAX

Plexusコンテナ

以前にMaven Continuumの記事でMaven2とContinuumはコアコンポーネントでPlexus=叢(読み:クサムラ)というのを使ってるらしいと書い たが、PlexusというのはcodehausのDIコンテナの一種らしい。

Plexusサイトのチュートリアルを見てみると、えらく簡単そうだ。
http://plexus.codehaus.org/One+Minute+Tutorial

XStreamもそうだけど、1minとか2minとかの簡単チュートリアルって良いな。
一目見てわかる説明を用意するのは超重要だ。
どう使って欲しいかがすぐわかるし。

Ajax関連:JavaScriptでConstructor

JavaScriptって意外に面白いな~。
コンストラクタを書いて、外部の関数オブジェクトを渡せるんだ~。
熱いね!!

これはほんの一例:

function PageManager(tableDrawerFunction){

//フィールドに格納
this.page = 0;
this.countPerPage = 10;

//drawフィールドに引数の関数オブジェクトを格納
this.draw = tableDrawerFunction;

//無名関数オブジェクトをフィールドに格納
this.startCount = function(){
return this.page * this.countPerPage;
}

this.endCount = function(){
return (this.page + 1) * this.countPerPage;
}

this.nextPage = function(){
this.page++;
this.draw();
}

this.prevPage = function(){
this.page--;
if( this.page < 0 )this.page = 0;
this.draw();
}
}


参考サイト:JavaScript 講座

5.01.2005

AJAXでXStream利用するべ

AJAXのテーブル情報を返す部分にXStreamを利用してみよう。
そんでもって最終的にはDIコンテナも利用して一覧情報を手軽に作れるフレームワークを作ってみたいな~。
↑現時点では、かなり妄想入ってる

XStream 1.1.2がリリース

POJOをXMLに、XMLをPOJOに変換するAPIであるXStreamの1.1.2がcodehausからリリースされた。(最初の情報ソースはJavalobby
このAPIは、POJOの内容を利用して手軽にXML表現を・・・みたいな状況で利用する。
下記がチェンジログ:
  • J2SE 5.0のEnum型をサポートした
  • 直列化のためのJavaBeanConverterにgetter/setterを利用
  • フィールドのエイリアス化(意味不明、なんのこっちゃ判りません)
  • StAX版でネームスペースのサポートを追加
  • JDK1.3とIBM JDKのサポートを改良
XStream Website

使い方はこっち
XStream Two Minute Tutorial

JAX-RPCで利用されるJAXBのようなヘビーウェイトな代物ではない。
↑JAXBマーシャラーとか作るためのプリプロセス必要だし、面倒で手軽じゃないと僕は感じる。

手軽なんで是非!!