2009-01-01から1年間の記事一覧
自分の作ったプログラムの起動シェル、停止シェルを用意して Linux で デーモンサービスを作るサンプル /etc/init.d/ に、root ユーザではなく、 uranus というユーザアカウントで実行する sampled を作るとする。 sampled は、こんな風に、 ---------------…
MySQL ORACLE ROWNUM の代わり set @rownum = 0; select @rownum := @rownum+1 as rownum,id,name from tbldata; または、 select @i:=@i+1 as rownum,id,name from (select @i:=0) as dummy,tbldata; と書くが、iBATIS で<select>タグに書くとなるとこれが書けない</select>…
iBATIS で、MySQL 、BIG INT 型にマッピングする場合、 JavaBean 側は、java.lang.Object で対象カラムを用意する。 格納された Object要素に対して、java.math.BigInteger でキャストして値を求める。 格納する時は、BigInteger → java.lang.Object でセッ…
DBテーブルのカラムに、IPアドレスをUNSIGNED INT などの型で設計しているプロジェクトに 遭遇している。→迷惑!CHARCTERで、xxx.xxx.xxx.xxx 表現で良いではないか! 検索Keyにしたければ、インデックス付ければ良いわけだし、INSERT等のパフォーマンスが…
Google collections Library が、2009-12-09 にRC5 になっていた。 リリースノートには、 Bug fixes and doc fixes only! しか書いてしかない。 何のバグだったんだろう。ドキュメントもよく判らなかった部分がきちんと書けたのだろうか・・ 使うつもりなの…
RMI通信のシステムを構築していて、開発マシン環境が変わって、 Connection refused to host: 127.0.0.1; が発生 RMIレジストリを起動する時、自アドレス 127.0.0.1 と hostnameを 正確に一致する事が出来ない時に起こるらしい。 インフラ担当でないので…
try-catch 文で、Exception を最後にcatch文を書く前に捕捉したい例外のcatch文を たくさん記述することがある。。。 for文の中にあったり、if のTHEN と ELSE にこれがあったりなどと記述して しまった場合に、後から嫌になるが、急いでコードを書く時など…
Wicketを使う場合の最低限のweb.xml記述例 <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="">http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"…</web-app>
Wicket で Google guice を連携する時の要は、Wicketで配布している wicket-guice-1.4.x.jar の中の org.apache.wicket.guice.GuiceComponentInjector を org.apache.wicket.protocol.http.WebApplication 継承クラスで init()メソッドをオーバーライドした…
com.google.common.collect.ClassToInstanceMap public interface ClassToInstanceMap<B>extends Map<Class<? extends B>,B> これはいいかも。実装は、 ImmutableClassToInstanceMap MutableClassToInstanceMap メソッド <T extends B> T getInstance(Class<T> type) <T extends B> T putInstance(Class<T> type, @N</t></t></t></t></class<?></b>…
Google collecions ライブラリの TreeMultimap は、使うことが多そう。 com.google.common.collect.TreeMultimap<K,V> public static <K,V> TreeMultimap<K,V> create(Comparator keyComparator ,Comparator valueComparator) サンプルは、こんな風、、、 TreeMultimap<String,Foo> m = </string,foo></k,v></k,v></k,v>…
Exception詳細を取得してログやメールに流すために、あえて、String で取得するコードは、一定であるべきと考える。 static String getCRcode(){ return java.io.File.pathSeparatorChar==';' ? "\r\n" : "\n"; } static String CRCD = getCRcode(); /** * E…
Ant で、tar を作成時に、*.sh ファイルに実行権限をつけるには、、 <tar destfile="${basedir}/release/sample.tar" longfile="gnu" > <tarfileset dir="${basedir}/build/work" mode="0755"> <include name="foo/bin/*.sh"/> </tarfileset> <tarfileset dir="${basedir}/build/work"> <include name="sample/conf/*.*"/> </include></tarfileset></tar>
Eclipse3.5 を使っているが、3.4 以降、SVN プラグインで作成される SVNのフォルダ、フォルダ名 _svn ではなく、 .svn になっている。 よって、今年1月17日に書いたものを修正すると for /R /D %I in (.svn) do RMDIR "%I" /S /Q http://blog.zaq.ne.jp/oboe…
クラスの検索、前回の投稿、なぜか文字が読みにくいので再投稿 import java.io.File; import java.net.URL; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import java.util.jar.JarEntry; import java.util.jar.JarFi…
import java.util.Collection; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; import java.util.Map.Entry; public class DoubleLinkedHashMap<K,P,V> implements DoubleMap<K,P,V></k,p,v></k,p,v>…
import java.util.Collection; import java.util.Comparator; import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; import java.util.Map.Entry; public class DoubleTreeMap<K,P,V> imp</k,p,v>…
import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.Map.Entry; public class DoubleHashMap<K,P,V> implements DoubleMap<K,P,V>{ private Map<K,Map<P,V></k,map<p,v></k,p,v></k,p,v>…
前に考えたクラス名を変更することにした。 DoubleMap → DualKeyMap DoubleWideMap → DoubleMap import java.util.Collection; import java.util.Map; import java.util.Set; import java.util.Map.Entry; /** * キーWide2重Map インターフェース. * <pre> * 2重</pre>…
理由はさておき、package 名から配下の classNameを取得したくなった。 ネットワーク越しのJARに対応するものまでは書く余裕がかった。import java.io.File; import java.io.IOException; import java.net.URISyntaxException; import java.net.URL; import …
今時、直に RMI 通信を使うアーキテクチャなんて組むのだろうか? サーバ側は、こんなふうに、、、 import java.rmi.Remote; import java.rmi.RemoteException; public interface RmiService extends Remote{ public String testMonitor(int num,String msg)…
単純だけど限定的に使えそうなロック import java.io.File; /** * ファイル有無ロック. */ public final class FilebaseLock{ private File lockFile; public FilebaseLock(String filepath){ this.lockFile = new File(filepath); } /** * ロック開始. * @r…
9月7日に、2重のMap を書いた。 http://blog.zaq.ne.jp/oboe2uran/article/262/ この時、2つのKeyの型は同じである約束になっている。 ならば、異なる型のKeyを指定できるものも存在した方がより便利であろう。 以下、型 P という第2Key を表現す…
9月3日に、NULL可能性考慮のequals を書いたが、compareTo があまりにも不完全なので書き直した。 /** * nullable compareTo. * NULLの可能性のあるプリミティブclass及び Comparable の compareTo. * 以下、null は各々に置き換えられて compareTo が実行…
Eclipse3.5 Galileo を使い始めてちょっと焦ったのは、 3.4 で書いて動作していた、Ant の build.xml echo タスクのメッセージ(2byte文字を含む)が表示せずに、 処理が停まってしまう。何も表示されず何が起きたのかわからなかった。 Eclipse 「外部ツー…
iBATIS 3.0 が出たらどうしようと困惑したが、2と3のダブルスタンダードで行こう!と言うと、 頭の硬い人は、反対すると思う。 ダブルスタンダード、 つまり、SqlMapClient と SqlSession の両方を使う。 SQLMap.xml を書いて patameterMap 等の細かいこと…
iBATIS3.0 は、SqlMapClient が見当たらず、SqlSession を使うことになる。 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build( Resources.getResourceAsReader("Configuration.xml")); SqlSession sqlsession = sqlSessionFacto…
iBATIS 3.0 beta3 が 2009年 8月に出てから、ようやく触ってみた。 2の時の SqlMapClient は見当たらず、だいぶ変わるようだ。 iBATIS3-beta によるとコンフィギュレーションは、Configuration.xml http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
最近、Wicket を学び始め少し感動したのは、Wicketコンポーネント、モデルである。 PropertyModel のおかげで private フィールドをもつオブジェクトを コンポーネントが取得して利用できること。 例えば、Foo クラスを ListView コンポーネントの populateI…
Wicket で Google guice によるロジックをDI(インジェクト)で実行、 そして、iBATIS の SQLMap の処理も、Wicket 上で動作する Google guice のインジェクト される結果により実行するパターンである。 このパターン処理の流れを定義するのに、XML等…