航海日誌

トップ «前の日記(2008-10-15) 最新 次の日記(2008-10-17)» 編集
過去の日記
注意:

2008-10-16 [長年日記]

O [Java] ActiveObjectsはどうなんや?

今回はリンク貼っちゃう。

うわすげー、使い方がだいぶ載ってるので使ってみようかな。

O [Java] Webアプリケーション技術者の見極め方(Java)

使い慣れたAPサーバは何ですか(→デプロイ方法を簡単に説明してください)
Apache Tomcatです。デプロイはホットデプロイを使って、webappsにWARファイルを置くだけです。
MavenとAntはどちらを使っていますか
Antを使ってます。Mavenは大っ嫌いです。あんなものIDEの力を借りても使うものではありません。最近AntをScalaでラップした新しいビルドツールを作ろうかと考えています。
『Effective Java』を読みましたか(→そこから何を学びましたか)
読んでません。その書籍からは何も学んでいません。もちろん今後出会ったら買って読んでみるつもりです。
自由にフレームワークを選んでいいと言ったら何を使いますか
Scalaでもよければ自分で作ったWeb Flavorを使います。純粋にJavaならApache Wicketを使いたいです。

まじめに返答しました。

その他、コメントからいくつか抜粋。

Singletonパターンをどうやって実装しますか?
とりあえずFactoryを作って、そこから生成させるように見せかけます。実際はインスタンスは1つにします。面倒だったらそもそもSingletonパターンを無視してstatic fieldにすることもあるかもしれません。
どんなときに synchronized を使いますか?
そのクラスがThread safeになってないときに、他のThreadから排他制御する時に使います。synchronizedブロックで囲むとその処理から抜けるまでターゲットのオブジェクトを他のThreadからブロックしつづけます。
「フリーソフトはダメです」って言われたらどうしますか?
たぶんOSS(オープンソース)と勘違いしていると思うので、OSSの理念などを説明して説得します。
ArrayListとLinkedListの違いを説明してください、→どう使い分けますか?
ArrayListは可変長の配列(のように実装されている)でLinkedListは連結構造のリストです。通常は何も考えずにArrayListを使い、LinkedListを使うことはありませんし、LinkedListの方が挿入が速いというのはその該当インデックスまでの検索コストを考えていない誤解だと思います。もちろんIteratorやStreamみたいなものならLinkedListは有効なこともあるので、場面場面で使い分ければいいでしょう。そのあたり何もわからないのであればArrayListを選択しましょう。
サロゲート・ペアにどう対応しますか?
サロゲート・ペアってなんですか?という冗談はやめておいて、そもそもUnicodeですべての文字が16bit内でおさまるという楽観から生じたどうしようもない仕様上のバグだと思います。しかしここまでUnicodeが普及してしまった現在ではどうしようもないかもしれません。またこの問題はJavaの文字の扱いを複雑にしています。ちゃんと対策したコードは意外に少ないかもしれません。
GENERICS のワイルドカードについて語ってください
実はちゃんと人に説明できません。通常のプログラマはGenericsのワイルドカードをちゃんと理解できない懸念を感じています。しかしライブラリを作る側でGenericsを使う場面ではGenericsのパラメータ型の扱いで使わざるを得ないケースが多く、なかなか頭が痛い概念ではないでしょうか。

アノテーションって何か知っていますか?ジェネリクスって何か知っていますか?
アノテーションは言語によって何を示しているのか変ってくると思いますが、Javaの場合はそのクラスやメソッドなどに付随するメタデータであり、通常は@Overrideなどのコンパイル警告に関わる基本的なものから、ORMなどのデータベースの型データなどに使われ、Javaの型を補うことによく使われているようです。Genericsは、JavaではErasure扱いなため、C#のGenericsよりも劣るところがありますが、これによってある程度Type safeなコレクションを実現できるようになりました。今ではGenericsなしではJavaでコードが書けない位日常的に使うものです。

なんか間違った解答がありそうな気がするな(^^;。

追記: 指摘があった部分を今一度書いてみます。しかし実はいまだにちゃんと実装してないので回答としては信頼してはいけません。どちらかというと自分用のメモかも。

サロゲート・ペアにどう対応しますか?
Stringクラスで使われている通常のメソッドはほとんどサロゲート・ペアに対応しているはずなのでそのままでも構わないと思いますが、例えばインデックスで文字を抽出するとき、codePointAtメソッドを使ってUnicodeのコードポイントで抽出しないとコードポイントの境界を正しく処理できないので注意が必要です。Unicodeのコードポイントを使うメソッドとして、codePointAt/codePointBefore/codePointCount/offsetByCodePointなどがあります。もちろんStringBuffer/StringBuilderなど他の文字列に関するクラスにも同様なメソッドがあるので確認した方がいいでしょう(StringBuilder#appendCodePointなどもあります)。しかし世の中に出回っているJavaで実装された大半のコードは正しく実装されていないでしょう。

追記2: AntとMavenについても。

MavenとAntはどちらを使っていますか
使っているのはAntのみですがもう少し補足すると、Mavenはビルドツールとしての側面のほかに、パッケージ管理の機能も有しています。またプロジェクトの雛型を作成するなど、単なるビルドツールであるAntとは違う性格があります。またその必要性は感じています。問題は、複雑なpom.xmlであり、IDEのplug-inなどを使っても解りにくいあるいは間違いを起こしやすく、もう少し人間に即したシンプルな仕様にすべきだったと感じます。

O [OSS] オープンセミナー2008@岡山

日時: 2008年10月25日 10:00 - 17:30
場所: 岡山県立大学
参加費: 無料(懇親会費用は別途必要です)

是非ご参加ください。

私は仕事の関係上行けるかどうか微妙になってきました(^^;。

O [Scala][Java] Web Flavor 0.2.9リリース!

Change Logs:

  • ドキュメントの修正を行った
  • Admin. menuに、動的ライブラリの操作と、Flavorのリセット項目を設けた

ドキュメントの修正と、Administrator menuの動的ライブラリ対応を行いました。

修正としては小さいのですが、必要なものなのであえてリビジョンを挙げています。

これがたぶん最後の0.2台のリリースで、次は0.3.0a1になると思います。

O [Java] Mavenの可否

結局ここで思った印象は、「なんだみんなすべてを受け入れてはいない。そしてpom.xmlを始めとする複雑な設定を恨んでいる」ということなんだなと。

もちろんMavenはプロジェクトを支援する様々な機能を持っていて、それらを賞賛する声はあるんだけど、やはり欲しいものはこれではないと感じる。

Antは比較的単純なコマンドタスク群の列挙であり、XMLで記述することによって、非常に読みにくく書きにくいが、しかし必要最低限の機能は持っていると思う。

私としてはAntをラップしてMavenを作った方がいいのではないかと前から思っていて、なかなか手を出せずにいるところで、この記事を読んでいっそう作りたくなった。

でもぐっと堪えることにしている。まずWeb Flavorを始めとするプログラムを書くことが優先されるからだ。今は特にAntで困っているわけではないから。

本日のツッコミ(全2件) [ツッコミを入れる]
O Seacolor (2008-10-16 11:55)

「サロゲート・ペアにどう対応するか?」って答えてなくありません?

O keisuken (2008-10-16 13:33)

Seacolorさん:<br>あ、ほんとだ。<br>> 文字ごとの操作でString#codeHogeなどを使う<br>とかかな。実はちゃんとやってないですね。引数なしのcodePointCountメソッドとかないのにはじめて気がついた。

[]

やること、い〜っぱい(´д`)。

トップ «前の日記(2008-10-15) 最新 次の日記(2008-10-17)» 編集