お仕事

MySQLの分岐

Oracleに買収されてどうしようかと思っていたMySQLだけど、分岐したプロジェクトが既にあるらしい ”the Open Database Alliance”なるところでMariaDBとして開発をするとな しばらくは互換性があるみたいなので、エンタープライズ向けの製品がでてくるといい…

アジャイルな言い訳

個人的に、「アジャイル」を言い訳にして仕様の詰めを後回しにするのを辞めようという計画 というか発注する立場になると、見積りしなくてはならないので無理と判明 で、IEEEの規格に則って仕様書を書こうとしているが ・・・何書けばいいのかさっぱりだ と…

Objectからintへの変換

ほんとに? JDK1.4 int iObj = new Integer(expectedITable.getValue(i, "HOGE").toString()).intValue();

戻り値のあるストアドの実行

何度使っても忘れるのでメモしておこう。 パッケージをこのように宣言する。 CREATE OR REPLACE PACKAGE HOGE IS PROCEDURE HOGEHOGE( IN_YM IN VARCHAR2, OUT_RET OUT NUMBER ); END HOGE; まずOUTパラメータのバインド変数を宣言する。 SQL> var ret numbe…

ハッシュロジック

第1回 すべてはここから始まった〜SHA-1の脆弱化*1 いやぁ、うちのシステムなんかまだMD5使ってますよ。 というか一度ハッシュ化しちゃったらそのあと困るんだよね・・・。 *1:http://www.atmarkit.co.jp/fsecurity/rensai/crypt01/crypt01.html

ユニットテスト:テスト内容不明

担当外だったのでチェックしていなかったのだが、外注して戻ってきたクラスのユニットテストに不思議なコメントが。 //仕様不明のためテスト保留・ ・・ ・・・なんだってorz じゃぁ君が作ったクラスはどうやって動いているんだyp!!!!

UML2ハンドブック

復習のために読んでる UML2ハンドブック作者: テクノロジックアート,長瀬嘉秀出版社/メーカー: 翔泳社発売日: 2004/04/21メディア: 単行本この商品を含むブログ (4件) を見る

制約の解除

あまり使わないだろうシリーズ。 まぁ動いちゃってる環境で定義変更が起きた時ぐらいか。 制約を確認する SELECT * FROM user_constraints; ※↑制約名を検索するための条件がLONGなので面倒なことこの上ない select * from USER_CONS_COLUMNS; 制約を削除する…

JSTL解決

2時間ぐらいして判明。 JSTL1.1のtaglib定義をservel2.3で使用していたダケダッタ。 1.0のtaglib定義に書き換えてみたら動いたのだ というかあまりに微妙に変わっていてキガツカンカッタ。 それぞれ以下のように修正*1。 taglib <%@ taglib prefix="c" uri="…

Java 開発の実用問答集

最近のJ2SEの流行を解説している本。 J2SEの経験が1年ぐらいたってから読むと分かりやすいかもしれない。 新人あたりがいきなり読んでも次の日には.netに行きたくなるかもしれない。 別段一問一答になっているわけではないか。 ・・・まぁ誰かが持っていた…

JSTLうごかーん

・・・セッションオブジェクトを取得しようとすると、 <c:out value="${hoge.hogeValue}"/> ↓表示されるもの ${hoge.hogeValue} あれー? Strutsではうまくいくんだけどな。 <logic:match name="hoge" property="hogeValue" value="true"></logic:match></c:out>

キャッシュの設定〜警告ログの削除

前回*1の続き。 以下のログを消したい。 WARN (Configurator.java:125) - No configuration found. Configuring ehcache from ehcache-failsafe.xml found in the classpath: file:/hoge/ehcache-failsafe.xml このログを出しているのは、ehcache.jarにあるn…

hibernateキャッシュ戦略・・・の書き方

キャッシュ戦略"read-only"*1を設定してみた。 <hibernate-mapping> <class name="hoge.Hoge" table="HOGE"> <cache usage="read-only"/> (略) </hibernate-mapping> 起動すると以下の警告がでる。 WARN (CacheFactory.java:36) - read-only cache configured for mutable: hoge.Hoge 理由が良く分からなかったのでソースを調べる。 public final class CacheFactor…

show_sqlの出力制御

hibernateの「3.5. オプションの設定プロパティ」*1のうち、「hibernate.show_sql」をlog4jで制御できるかと思ったのだが。 net.sf.hibernate.impl.BatcherImpl*2 private void log(String sql) { sqlLog.debug(sql); if ( factory.isShowSqlEnabled() ) Sys…

とりあえず読む本

今読んでる本Java 開発の実用問答集 (プログラマーズ叢書)作者: 古川正寿出版社/メーカー: 翔泳社発売日: 2005/12/07メディア: 単行本購入: 1人 クリック: 3回この商品を含むブログ (7件) を見る 衝動買いした本マスタリング Maven Java開発の容易性を実現す…

性別:その他

いや、本来はないはずなんだけど、外部のシステムからデータを受け取るときにはもしかしたら必要かな、と。 ※ところで「性別」というのは、「自分が認識している姓別」なんだろうか。それとも「戸籍上の性別」なんだろうか。

アスペクト指向

うーん 確かにコードを分離したりできるのはいいのだけど、結局設定ファイルの記述量が倍になってしまったら意味がないんだよな。 やはりJavaも多重継承ができるようにしてくれんかなぁ。 そうするとやたらめったら多重継承する人もでてくるかもしれんが、「…

AOP導入

前々から興味はあったけれども、なかなか手を付けてこなかった分野かな。 Actionクラスの中で、画面制御をするのにTokenを使うのはよくある手段だと思う。 これまではAbstractActionにメソッドを用意しておいて、実装クラスのexecute()の先頭で毎回読んでい…

DTOのソート

んな場合かというのは色々だろうけど、実際に使用したのでメモしておこう。 配列のソートというだけならば話は簡単なのだが、DTOのListをソートしたい場合の話。 これはjava.util.Collections*1を使うことで、DTOの任意の値でもってソートできる。 DTOの定義…

privateメソッドをテストする

はてな巡りをしていたら見かけたので*1、JavaWorldの2005年10月号を読み直してみたら確かに書いてあった。 まずはJUnit-addonsをダウンロードする*2。 PrivateAccessor*3を使ってテスト作成。 糸冬 こんな便利なものを知らなかったとはorz。 「privateメソッ…

改行コード

改行コード*1 多くの開発言語では改行をあらわす記号 '\r' や '\n' などがある。しかし、SQL や PL/SQL にはない。 代わりに CHR 関数を使用する。 CHR(13) ... キャリッジリターン( CR ) CHR(10) ... ラインフィード( LF ) 改行が CR+LF か LF のみかは OS …

SEQの手動カウントアップ

DBAを持っている人がいないのに、SEQの値がずれているのをなおさねばという時(誰かが手動でデータを作った?w)。 仕方がないので無理矢理カウントアップする力技。 SQL> SELECT SEQ_HOGE.CURRVAL FROM DUAL; CURRVAL ---------- 65637 SQL> SELECT MAX(HO…

UUID

java2 SE5.0からはjava.util.UUID*1が追加された。 理論上世界で唯一のものとなるらしいので*2、永続化するときのIDとするには適切なのかもしれない。 現状うちのアプリでは主キーを持たないテーブルではSEQをまわしてIDとして、レコードはそのうち廃棄する…

端数処理

「丸め」と「四捨五入」はよく混同される。 というか混同していた。 厳密には、「丸め」は丸め単位(10進であるとは限らないわけだ)の中間点の場合は偶数にすること*1。 四捨五入 1.5=>2 2.5=>3 丸め 1.5=>2 2.5=>2 ROUNDは直訳すれば「丸め」なのだが、関…

HiveMind

JavaWorldの補足記事 先進DIコンテナ「Apache Geronimo」、「HiveMind」を試す*1 公式*2 ・・・このロゴのセンスはw *1:http://www.javaworld.jp/technology_and_programming/-/21241-1.html *2:http://jakarta.apache.org/hivemind/

LookupDispatchAction + エンター

izuさんのところのむかーしの記事のタイトルをぱくってみました。 LookupDispatchActionはクリックされたボタンにより処理を振り分けるもの。例えばこんな風にしておけば、 <html:form action="/hoge"> <html:submit property="action"><bean:message key="button.moge"/></html:submit> <html:submit property="action"><bean:message key="button.hage"/></html:submit> </html:form>クリックされたボタン…

Strutsにおけるクロスサイトスクリプティング脆弱性

げげげげげ Strutsにおけるクロスサイトスクリプティング脆弱性*1 Security Advisory: Struts Error Message Cross Site Scripting*2 【調査方法】(保証なし) 1.存在しないパスを叩く 2. a.404がでる=>とりあえずセーフ b.400がでる=>アウト てこ…

メールアドレスに使用してもよい文字

メールアドレスで使用できる文字はRFCなんちゃら*1に書かれているらしいのだが、さっぱり分からないわけで。 んで、結論としては 英数字と!#$%&'*+-/=?^_`{|}~.ということらしい。 らしいというのは、このネタをどこから持ってきたのか分からないからだな。 …

validateWhen

ユーザガイド*1によると、validationで"requiredif"ではなく"validwhen"が推奨されるようだ。 使い方は簡単で、このように"=="で条件を書くことができる。 <field property="emailAddress" depends="validwhen"> <arg0 key="userinfo.emailAddress.label"/> <var> <var-name>test</var-name> <var-value>((sendNewsletter == null) or (*this* != null))</var-value> </var> </arg0></field>

二つの項目を比較する

ガイド*1を参考にしたのだが、コンパイルが通らない。 public static boolean validateTwoFields( Object bean, ValidatorAction va, Field field, ActionErrors errors, HttpServletRequest request, ServletContext application) { String value = Validat…