ログ日記

作業ログと日記とメモ

Java

S2JDBCのiterate()で OutOfMemoryError

S2JDBCを使って DBのデータ数十万件をまとめてDLしようとしたらエラーになった。 getResultList()じゃなくてiterate()使ったら結果をまとめて保持しなくなるからメモリを使わなくなるんじゃないの?と思ったけどダメ。 WicketのResourceStream系がキャッシュ…

S2JDBCでhstore用のwhereクラスを作る

S2JDBCでPostgreSQLのhstoreを使う - より良い環境を求めて の続き。 S2JDBCのwhereメソッドに指定するクラスは、Whereクラスを継承して作れる。 abstract class PgsqlOperator<PARAM_TYPE> implements Where { protected final CharSequence propertyName; protected fi</param_type>…

S2JDBCでPostgreSQLのhstoreを使う

PostgreSQLにはKVSのような型 hstore ( http://www.postgresql.jp/document/8.4/html/hstore.html ) がある。 横に巨大なExcelをデータベースに突っ込む場合、いちいちカラム作らなくていいんじゃね?ということでhstoreにごっそり入れてみる試み。 そういう…

S2JDBCでデータベーススキーマ中心の開発

S2JDBCはJavaを修正→DB修正っていう方針だけれど、使い始めてからずっと逆向きでやっている。 やり方をメモ。 制作中のワークフローは EclipseのERMasterでERD作成 DDL生成 DBリビルドスクリプト実行 ※1 Java更新スクリプト実行 ※2 S2JDBCのタスク実行 とい…

Tomcat で S2Wicket、S2Chronos を使った時にログに clearReferencesThreads が出る

アンデプロイ時にエラーが出る。 S2Wicketの場合。 2011/12/13 16:57:37 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads 致命的: The web application [/app] appears to have started a thread named [ModificationWatcher Task] bu…

S2JDBCからApache Cayenneに移行した

Wicket+Seasar(S2Container、S2Wicket、S2JDBC)で一通り開発したけれど、なんだか合わないなと感じた。不満だったのは以下の点。 S2JDBC-Genで生成したサービスクラスが使いにくい。 S2ContainerとWicketの両方にオブジェクト生成機能がある HOT Deployが…

ポート80番でGlassFishを動かす

GlassFishに限らずポート1024未満でサーバーを動かす場合に authbind が使えるようだ。http://jars.de/english/how-to-set-up-glassfish-2-on-debian-or-ubuntu http://linuxchef.blogspot.com/2008/11/tomcat-glassfish-auf-port-80.html apt-get install a…

Slim3のModelRefをGWTで使えるかどうかのユニットテスト

GWT上でModelRefが利用出来ることが分かったが、サーバー側で一度もgetModel()を実行せずにGWTで初めてgetModel()するともnullが返る。 気を付けていても忘れることがあって思わぬところでエラーが出る。 そんなときはテスト。 ModelRefは内部にModelインス…

Slim3 + GWT のユニットテストで mockito を使ってみる

Slim3 + GWT でクライアント側のテストをするために、Gin はちょっとオーバースペックな気がしたので mockito を使ってみてる。 private ItemServiceImpl itemService = spy(new ItemServiceImpl()); @Test public void myTest() throws Exception { ClientF…

GAE/J で 一対多の get、query の速度

直感的にはModelにKeyのリストを保持しておいて、Datastore.get(Child.class, keys)をやった方が速いと思っていたがInverseModelListRefを使ったqueryの方が速かった。 と言っても大した量でテストしてないんだけど、一応メモを残しておく。 ツリー構造のデ…

Slim3 + GWT の ModelRef など

昨日書いた *1 ときにはModelRefはGWTで使えないと思っていたんだけど、modelRef.getKey().getName() は実行出来る。 ModelRefはタイプセーフを実現するためのクラスで、実際にはKeyを持っている。 そして普通にGWT側で modelRef.getModel() を実行してもも…

GAE/J の キーについて

ちょっと混乱したのでメモ。昨日書いた *1 ことは若干勘違いが入っていた。 keyToString、stringToKey と 文字列のキーかどうかは関係ないんだね。 文字列のキーをkeyToStringしたところで、Keyインスタンス自体のエンコード済み文字列(?)が返ってくる。…

S2Wicket利用時のテストケース

WicketとSeasar2でのテストの書き方メモ。 S2WicketのS2WicketFilterを使っている。 HTMLファイルをWEB-INFなどに入れている場合はMarkupNotFoundExceptionが発生するのでEclipseのJUnitのプロパティで作業ディレクトリをsrc/main/webappなどにしておく。 pu…

Slim3の本の途中まで読んだ感想と代わりのチュートリアル

一昨日書いたこの本。オープンソース徹底活用Slim3によるWebアプリケーション開発作者: 山田健一出版社/メーカー: 秀和システム発売日: 2011/01/28メディア: 単行本 クリック: 20回この商品を含むブログ (10件) を見る1/3までじっくり読んであとは流しでしか…

Slim3本を読んだ

オープンソース徹底活用Slim3onGoogleAppEngineforJava作者: ひがやすを,小川信一出版社/メーカー: 秀和システム発売日: 2010/07/30メディア: 単行本購入: 12人 クリック: 462回この商品を含むブログ (36件) を見る後半はWebの資料で十分だが、7章あるうちの…

修飾子の順位

よく忘れて毎回見に行っているので自分のところにもメモ。 homma 2007/10/14 05:38 Java言語仕様によると、sunのお勧めは public protected private abstract static final transient volatile synchronized native strictfp interface の順番のようなので、…

GWTとS2JDBCの連携

GWT + Seasar2 で困ったことが一つ。 S2JDBCのentityをGWTのクライアントに受け渡せない。 で、今まではDTOを作って詰め替えをしていたのだけれど…。 Slim3を少し触ってみたら、こっちはGWTに完全対応なのでDatastoreからのModel(S2JDBCでいうEntityのよう…

S2JDBCのwhereでor検索

or検索を調べる → ComplexWhereを見つける → ソースを書き直す → SimpleWhereだけで出来るというコメントを見つける → ソースを書き直す → タイプセーフAPIを使うならSimpleWhereはよくないという記述を見つける orz 最初にここを読んだ。 http://d.hatena.n…

Nexusが動かない

Tomcatで動かないからbundleバージョンを使ってみたんだけど、こっちも動きが怪しい。 jvm 1 | 2011-03-12 21:01:30 WARN [@qtp-9518166-11] - org.apache.shiro.mgt.DefaultSecurityManager - Delegate RememberMeManager instance of type [org .apache.sh…

やっとm2eclipseでmavenからjettyが起動できた

runjettyrunを使おうと思って少し試してみると、終了がうまくいかない。jetty6だとXAConnectionImpl でLinkageErrorが出るし、jetty7だと終了がエラーになる。終了はできているみたいなんだけども…WindowsのEclipseだと特にエラーも出なかったがDebianだと動…

logback.xmlでログが二重になる

大ざっぱに http://www26.atwiki.jp/memotech/pages/90.html ここの通りに設定してるんだけど、ログが二重に出る。 http://www7a.biglobe.ne.jp/~junmix/diary/diary0906_01.html 検索したらこれぐらいしかヒットしなかった。 Notice the duplicated output.…

OpenWnnを改造している

非常に読みにくい。 Javaをやり始めたところなので、自分のJavaの力がないのかソースの書き方がおかしいのかの判断がつかない。 しかし、ざっと眺めつつ読んでるんだけど、継承の使い方があまりよろしくないような。 例えば 50 /** 51 * The abstract class …

WicketのValueMapで警告が出る。

SignInPanelで使われていたので、それを見ながら同じコードを書いたら警告が出た。 WARNING: Couldn't resolve model type of Model:classname= [org.apache.wicket.model.PropertyModel]:nestedModel= ... , please set the type yourself.ValueMapのAPIを…

SeasarでWicketを使う

GWTを使いつつ、たまに静的ページも出したい。 ということでWicketを使ってみることにした。 まずWicketの設定。 wicket-*.jar をビルドパス、WEB-INF/lib に追加。http://wicket.apache.org/learn/examples/helloworld.htmlここの通りにサンプルを作成。 次…

GWTのRequestFactoryを使う

サーバーサイドのEntityをクライアントで使えるように出来るらしいのでやってみる。 S2JDBCのEntityを利用した。 http://code.google.com/intl/ja/webtoolkit/doc/latest/DevGuideRequestFactory.html ここの通りにファイルを作っていく。 テーブルはidとtex…

S2JDBCで再帰とかツリー構造とか

理想通り動きすぎて凄い! s2jdbc-genを使って生成したEntityは特に変更する必要もなく、サービスに再帰SQLのコードを書くだけだった。 public class Category implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(…

一時的なデータ置き場

Javaで一時的なデータをどこに保存しようかと調べていた。 File.createTempFile はサーバーでは使えなさそうだし…ということで、EHCacheを試す。 http://journal.mycom.co.jp/articles/2010/05/19/ehcache/index.html 簡単な使い方はここ。 ダウンロードは h…

JavaMailは遅くなかった

http://d.hatena.ne.jp/n314/20101118/1290101208 Postfixが遅かった。 原因は不明。 下に追記 開発マシン time /usr/sbin/sendmail -t < /tmp/body.txt real 0m0.032s user 0m0.004s sys 0m0.008s サーバー time /usr/sbin/sendmail -t < /tmp/body.txt rea…

JavaMailが遅い

SMTPを喋ってるから遅いのかな?と思ってsendmail実行に切り替えてみた。 class MailService { ... private final boolean useSendMail; public MailService(){ if (new File(SENDMAIL_PATH).exists()) useSendMail = true; else useSendMail = false; } ...…

GWTでRPCの共通処理

http://d.hatena.ne.jp/n314/20101026/1288070773 ここでRPC処理も含めてjarを作れば簡単に共通化できるよねと書いたんだけど、うまくいかない。 これを書いたときはうまくいってたのかな…ちょっと覚えてない。 jarの中のServiceAsyncを呼び出すと、Incompat…