' UNICODEでも全角半角の文字数を判断するメソッド
Function LenByte(ByVal s)
Dim c, i, k
c = 0
For i = 0 To Len(s) - 1
k = Mid(s, i + 1, 1)
If (Asc(k) And &HFF00) = 0 Then
c = c + 1
Else
c = c + 2
End If
Next
LenByte = c
End Function
2008/06/04
VBSでUNICDEの全角文字数を判断する関数
2008/05/27
cayenne+pgpoolではまりどころ
以前、pgpoolをcayenneで利用する為について記載した。
しかし、pgpoolやjndiで再接続機能を利用する為には更に工夫が必要だ。
以下のようにTransactionクラスを継承したクラスを作成する。
そしてSQLを実行する部分をトランザクションしないよう以下のようにする。
しかし、pgpoolやjndiで再接続機能を利用する為には更に工夫が必要だ。
以下のようにTransactionクラスを継承したクラスを作成する。
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Iterator;
import org.apache.cayenne.CayenneException;
import org.apache.cayenne.access.Transaction;
public class NoTransaction extends Transaction {
@Override
public void begin() {
}
@Override
public void commit() throws IllegalStateException, SQLException, CayenneException {
close();
}
@Override
public void rollback() throws IllegalStateException, SQLException, CayenneException {
close();
}
protected void close() {
if (connections == null || connections.isEmpty()) {
return;
}
Iterator it = connections.values().iterator();
while (it.hasNext()) {
try {
((Connection) it.next()).close();
}
catch (Throwable th) {
}
}
}
}
そしてSQLを実行する部分をトランザクションしないよう以下のようにする。
Transaction tx = new NoTransaction();
try {
Transaction.bindThreadTransaction(tx);
Expression expression = ExpressionFactory.matchExp(~);
SelectQuery query = new SelectQuery(Ent.class, expression);
ListentList = getDataContext().performQuery(query);
if (CollectionUtils.isEmpty(entList))
return null;
return entList;
}
finally {
try {
tx.commit();
} catch (Exception e) {
}
}
2008/03/31
Tomcat5.5のログ設定
Tomcat5.5ではデフォルトのログ出力機能はlog4jからJDKのjava.util.loggingを利用するように変更された。
log4jのほうが出力フォーマットの設定等柔軟に変更できるのでlog4jにログ出力を統一しようと思ったら以下のことをやらなければならない。
①${tomcat.home}/common/libにcommons-logginとlog4jのライブラリをおく。
②${tomcat.home}/common/classesにlog4j.xmlをおく
log4jのほうが出力フォーマットの設定等柔軟に変更できるのでlog4jにログ出力を統一しようと思ったら以下のことをやらなければならない。
①${tomcat.home}/common/libにcommons-logginとlog4jのライブラリをおく。
②${tomcat.home}/common/classesにlog4j.xmlをおく
2008/03/19
JavaのMessageFormat.formatメソッドについて
変換対象の文字列に「{」や「'」が含まれている場合は
以下のように「'{'」や「''」とする。
String s = "function aaa() '{' alert(''{0}''); '}' ";
結構はまりどころ。
以下のように「'{'」や「''」とする。
String s = "function aaa() '{' alert(''{0}''); '}' ";
結構はまりどころ。
Prototypeでのブラウザ判別
if (Prototype.Browser.IE6)
alert('You are using IE6');
else if (Prototype.Browser.IE)
alert('You are using IE7');
else
alert('Not IE');
2008/03/13
cayenneでPKを指定してデータを取得する時のはまりどころ
cayenneではDataObjectUtils.objectForPKによってPKを指定してデータを取得できるが
このメソッドはデフォルトでキャッシュしてしまう。なので以下のメソッドを利用しましょう。
ObjectIdQuery query = new ObjectIdQuery(new ObjectId(AAAA.class.getSimpleName(), AAAA.ID_PK_COLUMN, id), false, ObjectIdQuery.CACHE_REFRESH);
(AAAA)DataObjectUtils.objectForQuery(dataContext, query);
ここでポイントはCACHE_REFRESH を指定して常に新しい情報を取得していること。
これを指定しないとだめ
このメソッドはデフォルトでキャッシュしてしまう。なので以下のメソッドを利用しましょう。
ObjectIdQuery query = new ObjectIdQuery(new ObjectId(AAAA.class.getSimpleName(), AAAA.ID_PK_COLUMN, id), false, ObjectIdQuery.CACHE_REFRESH);
(AAAA)DataObjectUtils.objectForQuery(dataContext, query);
ここでポイントはCACHE_REFRESH を指定して常に新しい情報を取得していること。
これを指定しないとだめ
登録:
投稿 (Atom)