読者です 読者をやめる 読者になる 読者になる

GitHubアカウント作りました。
https://github.com/ckoshien
gitの使い方がイマイチわかってないのでもう少しsvnを続ける予定。

Java

Java7のソートにバグがあるの初めて知った。
Listのソートをする際にComparator使うやり方で、

Collections.sort(rbiTop10, new RbiComparator());
Collections.reverse(rbiTop10);

Collections.sortを使うと
Comparison method violates its general contract!
というエラーが返される。
調べてみたら既知のバグらしいが...。
http://blog.satotaichi.info/timsort-was-broken/
回避方法はいくつか試したけどJDKを6に落とせばバージョンが古いと怒られ...。
Collections.sortでも必ずエラーとなるわけではなく、
上記コードの前に要素数が同じソートをやっているが何も起こらずじまい。
とりあえず怖いので使わないことに越したことはないかと。
最悪自前でインデックスソートとかなら書けるはず...ずいぶん使ってないけど。
SQLでorder byすることもできなくはないけど1ページで同じ結果を複数用意するのに
何本もSQLを流していいものか...。

Java

とりあえず試合結果・打撃成績・投手成績テーブルへの入出力はほぼ完成。
最初はupdateメソッドを使う方針だったが、列が1つ増減した場合に
・減っていた場合、実装上の仕様からレコードが削除できない(欠陥w
・増えていた場合、updateではなくinsertにしなければならない
ということで面倒になったのでdelete/insertに方針転換。
formから渡ってくる値が全てなのでたぶんこれでいいw
もう少し時間に余裕があれば違う実装もできたと思うけどここは力押しで。

データは揃ったので後は記録の解析周りの実装。
外部SQLの実装で自動生成しようとしたら、
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table '' doesn't exist
.....うん。その名前のテーブルないのはわかってる。
前回使ったときは普通に動いてた気がするけどどこが違うのかわからない....。
仕方ないので色々調べてDto作ることにした。
http://bw2hr.cocolog-nifty.com/blog/2009/01/s2jdbcsql-8af1.html
seasar2は開発止まってるから最近の記事ないな。トレンドじゃないらしいし。
javaのFWこれしか使えないんだよね。

スコア管理システムを細々と製作中。
単一選択のプルダウンを複数使ってActionFormにList型を持たせていたのだが、
create(insert)はそれでよかったものの、update時にJSP側に値をうまく渡せなくなって
小一時間悩んだ。
しかも調べていたら異なる実装方法が推奨されていて「終わった(詰んだ)…orz」
と思っていたら、

	<td>
		<html:select property="rbi[${i-1}]">
		<c:forEach var="j" begin="0" end="8">
			<html:option value="${j}">${j}</html:option>
		</c:forEach>
		</html:select>
	</td>

こんな感じでpropertyに添え字をつけるだけで何とか成功。
後はListで受け取ったものをfor文で回しながらupdateするロジック書くだけ。

↑途中経過画面(肉付けされてないw)
今のところ1画面で2テーブルしか扱えていないが本来はこれに投手成績を加える予定だった。
実装が追いついてない。もう今週しか時間に余裕がないのに。。。。

コーディングのリハビリ始めました。
seasar2とかしばらく使ってなかったのであちこちでエラー出して行き詰まるw
バリデータ関係もようやく少しずつ思い出してきたけど、
こういうやり方できるんだね。input="***.jsp"しか教わらなかったから新鮮。
#バリデートに引っかかったらメソッドを再度実行
@Execute(validator = true,input="(メソッド名)?redirect=true")
(参考)http://yakinikunotare.boo.jp/orebase2/sastruts/input_check
DBにアクセスするメソッドだとjspだけ呼ぶと入力値が空だったりするので。

SourceForgeへのコミットができなくなってた件。
秘密鍵はOpenSSH方式に変換しないと使えないのね。
コミット誤操作+未コミットのソース消えたw

いったんロケーション廃棄して再接続するとよい。

JCBLスコア管理システムの作成を始めました。
11/23 提案を受ける
12/7~9 DB設計(完了)
→ 画面遷移設計
無償なので納期は未定w