プログラミング

Content-Disposition によるダウンロードファイル名の指定について

Content-Disposition ヘッダーによるダウンロード時のファイル名の指定について、色々調べたことをまとめます。まずファイル名の指定方法には2種類あり、ブラウザによって対応状況が違います。 - attachment; filename="hogehoge.pdf" - attachment; filena…

Cassandra へ Java でアクセスする

どうも 6月2日に新しい安定バージョン 0.8.0 がリリースされていた模様。 それだとまた元のプログラムのままでは動かない!以下が修正後のサンプルです。 TBinaryProtocolのパッケージ org.apache.cassandra.thrift.Columnのコンストラクタの引数 が変わって…

Cassandra に Java でアクセス

Cassandra に Java でアクセスする方法について、試行錯誤した内容をまとめます。 アクセスには高レベルAPIと低レベルAPIの2種類方法があるのですが、ここでは低レベルAPIについて記載しています。Cassandra の最新版(2011年6月3日時点で0.7.6-2)の場合、公…

web.xml の の指定は、エラーページのファイルサイズに注意

web.xml で HTTP 404 エラーの場合に、同時のエラーページを指定することができます。 たとえば以下のようになります。

ExtJSのComboBoxで、HTML escape が必要な選択肢を表示する方法

ExtJSのExt.form.ComboBoxは、デフォルトでは選択肢のHTMLエスケープを実行してくれません。 たとえば yes no という選択肢を用意すると、右の図のようになります。 選択するときちんと表示されますが、選択肢の一覧のところではとが欠けているのが見て取れ…

H2 Database に向く Web アプリケーション

H2 Database のロック機構は、テーブルロックしかなく、かつ EXCLUSIVE と SHARED の2種類しかないという単純なものです。 EXCLUSIVE ロックは EXCLUSIVE ロックとも、SHARED ロックとも競合する。SHARED ロックどうしは競合しない。 insert, update, delete…

jQueryでカスタムのNamespaceを取り扱う方法

困っていたので、記録しておく。http://stackoverflow.com/questions/91518/jquery-attribute-selectors-how-to-query-for-an-attribute-with-a-custom-namespace

H2 Database の明示的ロック

H2 Database には、行レベルロックはない。テーブルレベルロックのみ。 並列性は低くなるものの、処理が高速になるので、テーブルレベルロックのみにしているようです。別途、MVCC (Multi-Version Concurrency Control) という仕組みが開発されているようで…

PostgreSQLの明示的ロック

SQL テーブルレベル 行レベル SELECT FOR UPDATE ROW SHARE 行レベルロック獲得 UPDATE, INSERT, DELETE ROW EXCLUSIVE 行レベルロック獲得 ROW SHAREとROW EXCLUSIVE は競合関係にないので、テーブルレベルでは上記SQL文は競合しない。行レベルではもちろん…

データベースの ISOLATION レベルサポート状況

必要があったので、少しデータベースの ISOLATION レベルのサポート状況を調べました。 PostgreSQL READ COMMITTED(default) SERIALIZABLE H2 READ UNCOMMITTED READ COMMITTED(default) SERIALIZABLE MySQL InnoDB READ UNCOMMITTED READ COMMITTED REPEATA…

Namespace を使用しているXML文書に対するXPath式

NameSpace を使用しているXML文書に対する XPath 式は注意が必要です。XPath を取り扱うライブラリに対して、どのネームスペースを使用するか、予め登録する必要もありますが、それが NG であるシチュエーションもあります。たとえば、以下のSpring のXML Sc…

ExtJS 3.1 で Ext.applyIf の動作が変わっています

ExtJS の Ext.applyIf の動作が、3.0 と 3.1 とで変わっています。ソースコードを見ると一目了然です。3.0 applyIf : function(o, c){ if(o){ for(var p in c){ if(Ext.isEmpty(o[p])){ <-- ここが変わっている o[p] = c[p]; } } } return o; }, 3.1 applyIf…

ExtJS 3.1 で Ext.applyIf の動作が変わっています

ExtJSの話。cookie から Ext.state.Manager が Component の state 情報を読み込むのは、Component のオブジェクトを生成するタイミング。Ext.Component のinitState()メソッドにおいて。このメソッドはprivate メソッド。オブジェクト生成後、state 情報を…

Windows Vistaにて、Apache TomcatをWindowsのサービスとして登録する方法

Windows Vistaにて、Apache Tomcat を Windows のサービスとして登録する方法についてです。 Windows のインストーラを使わなくても、Windows のサービスとして登録することができます。 もっとも簡単な方法は、bin フォルダの下にある、service.bat を使い…

JAXBでCDATAセクションの出力

JAXBのUnmarshalerを使用してXML出力を行うと、CDATAセクションは使用されません。https://jaxb.dev.java.net/faq/JaxbCDATASample.javaでは、org.apache.xml.serialize.XMLSerializer を使った方法が紹介されていますが、XMLSerializer は deprecated なの…

Struts2の@InputConfig

DefaultWorkflowInterceptor を見ていて解ったことですが、Validation に引っかかった場合のみに特定のメソッドを呼びだすことができるつくりになっています。 それを制御するのが @InputConfig アノテーション。たとえば public class SampleAction{ public…