2009-01-01から1年間の記事一覧

デーモン作るなら

自分の作ったプログラムの起動シェル、停止シェルを用意して Linux で デーモンサービスを作るサンプル /etc/init.d/ に、root ユーザではなく、 uranus というユーザアカウントで実行する sampled を作るとする。 sampled は、こんな風に、 ---------------…

MySQLでROWNUM

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>…

MySQL の BIG INT 型には注意を

iBATIS で、MySQL 、BIG INT 型にマッピングする場合、 JavaBean 側は、java.lang.Object で対象カラムを用意する。 格納された Object要素に対して、java.math.BigInteger でキャストして値を求める。 格納する時は、BigInteger → java.lang.Object でセッ…

INET_NTOA と INET_ATON

DBテーブルのカラムに、IPアドレスをUNSIGNED INT などの型で設計しているプロジェクトに 遭遇している。→迷惑!CHARCTERで、xxx.xxx.xxx.xxx 表現で良いではないか! 検索Keyにしたければ、インデックス付ければ良いわけだし、INSERT等のパフォーマンスが…

Google collections Library がRC5

Google collections Library が、2009-12-09 にRC5 になっていた。 リリースノートには、 Bug fixes and doc fixes only! しか書いてしかない。 何のバグだったんだろう。ドキュメントもよく判らなかった部分がきちんと書けたのだろうか・・ 使うつもりなの…

RMI で、Connection refused

RMI通信のシステムを構築していて、開発マシン環境が変わって、 Connection refused to host: 127.0.0.1; が発生 RMIレジストリを起動する時、自アドレス 127.0.0.1 と hostnameを 正確に一致する事が出来ない時に起こるらしい。 インフラ担当でないので…

try~catch文の数を減らしたい

try-catch 文で、Exception を最後にcatch文を書く前に捕捉したい例外のcatch文を たくさん記述することがある。。。 for文の中にあったり、if のTHEN と ELSE にこれがあったりなどと記述して しまった場合に、後から嫌になるが、急いでコードを書く時など…

Wicketのweb.xml 記述例

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 で Google guice を連携する時の要は、Wicketで配布している wicket-guice-1.4.x.jar の中の org.apache.wicket.guice.GuiceComponentInjector を org.apache.wicket.protocol.http.WebApplication 継承クラスで init()メソッドをオーバーライドした…

ClassToInstanceMap

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>…

TreeMultimap

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で

Exception詳細を取得してログやメールに流すために、あえて、String で取得するコードは、一定であるべきと考える。 static String getCRcode(){ return java.io.File.pathSeparatorChar==';' ? "\r\n" : "\n"; } static String CRCD = getCRcode(); /** * E…

Ant で、tarに作成時、

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>

不要のSVNフォルダ削除

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…

DoubleLinkedHashMap

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>…

DoubleTreeMap

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>…

DoubleHashMap

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

今時、直に RMI 通信を使うアーキテクチャなんて組むのだろうか? サーバ側は、こんなふうに、、、 import java.rmi.Remote; import java.rmi.RemoteException; public interface RmiService extends Remote{ public String testMonitor(int num,String msg)…

FileでLock

単純だけど限定的に使えそうなロック import java.io.File; /** * ファイル有無ロック. */ public final class FilebaseLock{ private File lockFile; public FilebaseLock(String filepath){ this.lockFile = new File(filepath); } /** * ロック開始. * @r…

DoubleWideMap

9月7日に、2重のMap を書いた。 http://blog.zaq.ne.jp/oboe2uran/article/262/ この時、2つのKeyの型は同じである約束になっている。 ならば、異なる型のKeyを指定できるものも存在した方がより便利であろう。 以下、型 P という第2Key を表現す…

Nullable 比較

9月3日に、NULL可能性考慮のequals を書いたが、compareTo があまりにも不完全なので書き直した。 /** * nullable compareTo. * NULLの可能性のあるプリミティブclass及び Comparable の compareTo. * 以下、null は各々に置き換えられて compareTo が実行…

Ant実行環境に注意

Eclipse3.5 Galileo を使い始めてちょっと焦ったのは、 3.4 で書いて動作していた、Ant の build.xml echo タスクのメッセージ(2byte文字を含む)が表示せずに、 処理が停まってしまう。何も表示されず何が起きたのかわからなかった。 Eclipse 「外部ツー…

ダブルスタンダードで!

iBATIS 3.0 が出たらどうしようと困惑したが、2と3のダブルスタンダードで行こう!と言うと、 頭の硬い人は、反対すると思う。 ダブルスタンダード、 つまり、SqlMapClient と SqlSession の両方を使う。 SQLMap.xml を書いて patameterMap 等の細かいこと…

iBATIS3.0 betaを触る(2)

iBATIS3.0 は、SqlMapClient が見当たらず、SqlSession を使うことになる。 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build( Resources.getResourceAsReader("Configuration.xml")); SqlSession sqlsession = sqlSessionFacto…

iBATIS3.0 betaを触る(1)

iBATIS 3.0 beta3 が 2009年 8月に出てから、ようやく触ってみた。 2の時の SqlMapClient は見当たらず、だいぶ変わるようだ。 iBATIS3-beta によるとコンフィギュレーションは、Configuration.xml http://ibatis.apache.org/dtd/ibatis-3-config.dtd">

publicでないアクセス

最近、Wicket を学び始め少し感動したのは、Wicketコンポーネント、モデルである。 PropertyModel のおかげで private フィールドをもつオブジェクトを コンポーネントが取得して利用できること。 例えば、Foo クラスを ListView コンポーネントの populateI…

Wicket+Google guice+iBATIS

Wicket で Google guice によるロジックをDI(インジェクト)で実行、 そして、iBATIS の SQLMap の処理も、Wicket 上で動作する Google guice のインジェクト される結果により実行するパターンである。 このパターン処理の流れを定義するのに、XML等…