Java

Cプログラマに贈るJavaの学び方(第2章)必要なのは資料

次にJavaDocの完備。Cプログラマだと、紙ベースが基本で、必要ならwordファイルかpdfという感じじゃないかと。JavaDocはソースコードから自動生成されるドキュメントで、まともなプロダクトならばまず間違いなく付いてくる。その文化は見習うべきものだ。メ…

Cプログラマに贈るJavaの学び方(第1章)何から手をつけるか

まずは取っ掛かりが問題になるが、いろんな意味でEclipseを入れることが最初である。言語とは関係ないと思う無かれ、私はこれがあったからJavaが書けるようになったと言っても過言じゃない。親の遺言で使うなと言われていない限り使うべきだ。 Eclipseを薦め…

Cプログラマに贈るJavaの学び方(序章)

Cなら何でも書けるという人向けにJavaの学び方、落とし穴を書いていこうと思う。 でも面倒なので、オブジェクト指向とはなんぞやという点はすっ飛ばしたい。オブジェクト指向に関する最低限の知識は持っていると仮定して書いてみたい。 自分はJavaのスキルは…

java.util.List vs List

ソースに書く時どっちで書くか。前にそんな事で友人ともめたことがある。私はList派で彼はjava.util.Listだった。これには背景がある。彼はAWTとかでバリバリGUIなJavaを書く。私はサーバーサイドオンリー。java.awt.Listとの区別のために書くというのだ。 …

なぜダメなコードなのか

仕事中どうしても気になって直してしまうコードがある。普通コードを修正すると、テストをする必要があるし、cvsにコミットしたり、付帯的な作業がたくさん発生する。それでもなお修正したくなるコードがあるわけで。 何でかと考えてみると、単にインデント…

マルチパート

tomcatでファイルのアップロードってみんなどうやってるんだろう。やり方がわからないのではなくてどの選択肢を取っているのかって事なんだけど。 どこのライブラリなのかなとか、解釈させている位置とか。現プロジェクトだと、ちょっと古いOreillyの単体モ…

文字列のハンドリング

なんとかJavaに慣れてきたが文字列に関しては、何というか、まだこなれていない感じ。長い文字列を固定で宣言したいとき、複数行に分けて記述する方法が見つからない。(どうせ信者からは、そんな長い文字列は外部ファイルを使ってやれと言われるとは思うが) …

先を急ぐ前に

どうも、今度はAspectJを使ってみたいらしい。確かに流行りだしかっこいいかもしれない。けど、ソースが今以上にどうしようもなくとっ散らかる事になるのは構わないのだろうか。ただでさえstrutsとかtaglibとか中途半端に使って悲惨な状況なのになぁ。 とり…

答えあわせ

クラスが無いのにどうやってプログラミングするのですか? 関数を使うとの解説があるが、まぁ70点。まぁ重箱の隅をつつくのは止めておこう。 VMがないのになぜ動くのですか OSが直接実行できるネイティブコードにコンパイルされるからですとあるが、10点。OS…

JavaプログラマのためのC言語入門

実はgoogleで「CプログラマのためのJava入門」を検索してみたのだが、そのまったく逆が一番にヒットした。 内容を読んであらびっくり。言語とは何か、マシン語とは何か、CPUの動く仕組みは、コンパイラの仕組みはどうなっている、という本当のプログラマがま…

先週のおバカコード

なんかパフォーマンス試験したら、めちゃ遅。つうことで発掘。 java.util.List list = new java.util.ArrayList(); for (int i = 0; i hoge) + ":" + result[i].get(hage); if (list.contains(id)) { continue; } hasRights[i] = true; list.add(id); } え〜…

かなり手強い

かなり最適化の余地があったので手を入れるいれる。メモリ消費量をかなり減らせると期待して。 が、なぜか増えた。???どうしてだろう??? 暫し戦闘状態を続行。

そんなに悪者?

同僚は、極端にHashtableとVectorを嫌う。確かに廃止方向にあるものをわざわざ使うべきではないがなんか目の敵状態。過去になんかあったのかと思うほど(笑)。でもさ、なんつうか、そんなことを理由に文句を言うのもどうかなぁ。そっちの方が格好悪い<自分的…

PostgreSQL-JDBC

担当が自分なわけではないのだが、気になるので調査。話によるとPostgreSQLのbyteaにsetBytesで値を突っ込むと大きなデータではOutOfMemoryになってしまうというもの。内容からみてローカル側の問題とばっかり思っていたが、どうもDBサーバ側でスタックを食…

jk2 と戯れる

が、しかしだ。そんなもん注釈なしに置いておくなっての。しかもバイナリだぜ。はっきり言って怠惰だ。俺の時間をかえせ。 結局1.3.27をインストールしてお茶を濁したのでした。チャンチャン。さて明日はLinuxだ。

jk2 と戯れる

見事にはまりました。Windows用Apache1.3.29、Tomcat4.1.30をインストールして、それ用jk2もインストール。workers2.propertiesなんかも鼻歌まじりに設定して、いざサービス起動。……。うごかん。Apacheが設定でエラーだしてる。再起動したり、jk2同梱のDLL無…

Apache+Tomcatリベンジ

悔しいから出社直後に色々チェック。結局、workers2.propertiesのtomcatIdってのをセットしたら、server.xmlのengineエレメントのjvmRouteってパラメータを同じ文字列に設定しなきゃダメみたい。 やれやれ。

Tomcat にはまる

Apache+Tomcatの設定ではまる。前に言及したかと思うが、このスカスカなドキュメントにはほんと参った。server.xmlなんかについてはまったく説明されていないに等しい。オンラインの情報を元になんとか組み立てたが、何故かApacheからTomcatにデータが届いて…

Lucene調査中

ワーカホリックかもしれない自分は、プロジェクトターゲットで使用しているNamazuのドキュメントハンドリングの面倒を解決するために、他の全文検索エンジンを探してみた。 ちょっと古いらしいが、日本語全文検索エンジンソフトウェアのリストなんてものを見…

リファクタリング

定義はやっぱり、「クラスとしての動作を変えず中身をより良くする」っていう意味だと思うんだけど、今やってるリファクタリングは、ガシガシインターフェースが変化してます。いいのかなぁ。 それとは平行に前から言ってるブラウジング用のクラスのリファク…

JUnit実践準備

XPに基づくUnit TestのJava版としてJUnitが知られているが、僕はまだその効能を実感できていない。特に改修においては色々なケースが考えられる。 もともとJUnitを使っていなかったケース。きちんとした設計書があり、動作が明確であること、クラスの規模に…

JUnit実践準備

実際、形だけのJUnitコードが記述され、XPお構いなしの難解複雑な、1メソッド数百行のコードがうねる。改修はコードの追加が最善とされ、削除はタブーとされる。また問題があっても改修範囲外は一切手を加えない。クラスを作るのもたぶーだから、コードはま…

JUnit実践準備

そして、すでにJUnitのUnit Testが構築されている場合。ちょっとした改修には非常に役に立つが、それはちゃんと作られていた場合。複雑な環境で、依存する先のテストがきちんと為されていなかったり、環境構築に関してドキュメントが抜けおちていたら、それ…

今日の2等賞

お〜い。君。君なんだよ。 private java.util.Map _hoge = new java.util.IdentityHashMap(); これはセッション管理クラスのメンバ変数。ここに格納されるのは動的に生成される文字列をキーとしたとある値。 入れた値と全く同じ文字列で取り出そうとして何度…

今日の一等賞

あ〜。エラーで「Error! 4」って出るんですけど〜。 僕がSQLのWHEREを忘れたおかげでそのExceptionに引きずられて出現したバグ。 public Vector hoge(Nazo nazo) throws AppException { (snip) for(int i = 0; i hoge.length; i++) { info = new String[4]; …

今日の失敗

enumの代わりに使われているobjectというのがある訳で、例えばmachine.WINDOWSみたいな。で、それに対応している文字列を取得するstaticなメソッドがある訳だが。それを呼び出すのに、 nagainagaiclass.nagainagaiclassToString(nagainagaiclass.WINDOWS) と…

今日の罠

singletonのインスタンス取得を効率化しようとしてstaticメソッド使ったら、インスタンスが沢山できてしまった。つまりそのクラスは何故か継承されてて、器にはサブクラスが入っていたわけ。ちゃんとコメントとかあれば間違えなかったのにと原作者を恨みつつ…

今日の一等賞

if (getHogeUser(userList, user)) { containHoge = true; } else { containHoge = false; }

な〜んか、余計なお世話?

どうもTomcatの便利な機能って余計なお世話な気がする。気づかなければハマる機能は、ちゃんとドキュメントに「気をつけてね」って書いておいて欲しいのは僕だけ?

おめでたう

同僚が、困難を乗り越え(大袈裟?)、Java-Houseなんかでも明確な回答の出ていなかったJavaのオリジナルクラスローダの開発に成功。君はえらいぞ。これでクラスのリロードができる。すばらしい。 で、本題はその後。じゃ、乾杯しようと、社内のカップ式自販機…