Java

終了条件をつけた Stream を作成する

たとえば正規表現で文字列をスキャンし、マッチした部分文字列からなる Stream を作成したいとする。この Stream は、マッチしなくなったら終了する必要があるが、どうするか?Stream を簡単に作成できる Stream#generate() だと無限のストリームしか作れず…

Javaでパスワードのハッシュ化: PBKDF2

エフセキュアブログ : 再録:パスワードは本当にSHA-1+saltで十分だと思いますか? に望ましいパスワードのハッシュ化方法について具体的に載っていたので、Javaでどんな感じになるのか確認してみる。使うのは現在一応安全だと認められているっぽいもので、O…

JUnit4のRunner概説

Runner が何かについては省略。テストの実行のしかたを決めるものと考えればよい。 Runner の指定方法 テストを実行するための Runner を指定するには、基本的にテストクラスに @RunWithアノテーションを設定し、そのパラメータに使いたい Runner のクラスを…

JAXBニッチ技特集: XMLを属性に基づいて特定のサブクラスに非整列化(unmarshal)する

元ネタはStackOverflowのこちらの質問。inheritance - Java/JAXB: Unmarshall Xml to specific subclass based on an attribute - Stack Overflow上記の例ではクラス名そのものを属性値として設定しているが、そうではなく「コード値」的な属性でサブクラス…

JDK7 では、Windowsでもファイルのアトミックな上書きリネームができる

JDK7になって、以前はできなかった Windows上でのファイルのアトミックな上書きリネームができるようになっていてうれしい。ソース package example.jdk7; import java.nio.file.FileSystem; import java.nio.file.FileSystems; import java.nio.file.Files;…

Pleiades All In One 版の Eclipse 3.7.0 Indigo (JREあり) で何故かプロキシ認証に失敗する件

インターネット接続するのに認証つきプロキシが必要な環境で Pleiades All In One 版の Eclipse 3.7.0 Indigo (JREあり)を入れてみたら、きちんとプロキシ設定をしているのに HTTP プロキシー認証が必要ですとか言われて「新規ソフトウェアの追加」とか「Ec…

感想: 体系的に学ぶ 安全なWebアプリケーションの作り方

読んでます。体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践作者: 徳丸浩出版社/メーカー: SBクリエイティブ発売日: 2011/03/01メディア: 単行本購入: 119人 クリック: 4,283回この商品を含むブログ (146件) を見るまだ…

Enum と データベースの「コード値」の相互変換

データベースで「コード値」的なものを使うことはよくある。たとえば、以下のような顧客データベースがあって、「ランク」は 1 が通常、2 がVIPを意味する、だとか。 ID名前ランク 101山田 奈緒子1 102上田 次郎2 Javaにはこういうのを表現するのにぴったり…

メソッドチェインと継承

Javaでメソッドチェインと継承を組み合わせて使ったとき、↓こういうのが困る。 public class Foo { public Foo foo() { return this; } } public class Bar extends Foo { public Bar bar() { return this; } } // 文法エラー // foo() は Foo を返すので、b…

サーバサイドでProcessingを動かす

こちら Processing+POIをエクセルグラフウィザードの代替として使う - Object Design に触発されて、Webアプリケーションでも(サーバサイドで) Processing を使って情報視覚化ができないか試してみた。まずは、Processing をJava Servlet上で動かして画像…

Windows上のJavaでファイルを上書きリネームする

Javaでファイルの移動を行う File#renameTo メソッドは移動先にファイルが存在する場合にどういった動作をするかについて規定されておらず、プラットフォーム依存になっている。そのため、UNIX系OSでは概ね他の言語のrename と同じように「ファイルが存在し…

Java から ActiveRecord を利用する(不完全)

Javaプログラムから、JRubyを利用してRails 3.0のActiveRecordを使う実験をしていたが、どうも上手くいかなかった。 環境構築 OSは Windows 7 の64bit版。 Javaのインストール 最新版のJDK(x64)をインストール。省略。 Maven2のインストール 最新版のMaven…

SQLite (SQLite3) で JPA

JPA (Java Persistence API) でも SQLite を使いたい!ということで試してみる。いちいちデータベースサーバとか用意したり起動したり面倒くさいし。環境としてはMacでこんな感じ。要Maven2。 $ java -version Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF…

システム日付を安易に使ったプログラムのテスト

全くテストを意識しないで Calendar.getInstance() とか new Date() とかを使いまくるプログラムがあったとする。例えば、以下のようなものだ。 public void oomisoka() { Date date = new Date(); if (date.getMonth() == 11 && date.getDate() == 31) { //…

Apache Pluto による簡易ポータル開発(準備編)

ポータルっぽいサイトを作りたいので色々調査したところ、オープンソースものとしては Liferay と Jetspeed2 あたりが有力らしいことがわかったものの、両方ともかなり重量級であり中身を理解するのが相当大変そうなので、とりあえず Java Portlet Specifica…

Apache Pluto による簡易ポータル開発(動的ページ構成編)

前回の続き。データベースからページ・ポートレットの構造を取得し、ログインユーザのロールごとに異なるページ構成を見せられるようにしてみる。 データベースの更新 前回作成したデータベースに、さらにページ・ポートレット関連の情報を追加する。 CREATE…

Apache Pluto による簡易ポータル開発(ユーザ認証編)

前回の続き。Plutoについてくるポータルアプリケーションのページ構成は、 src/main/webapp/WEB-INF/pluto-portal-driver.config.xml の静的な記述から構築されているけど、どんなユーザでログインしても全員同じページ構成ではポータルの名が泣くので、ユー…

CXF と Spring Security でWebServiceのBASIC認証

前回 の続き。WS-Securityはちょっと大げさだし重いという噂なので、もっと単純にHTTPのBASIC認証を試してみる。前回はWebサービス自身が認証を行う形式だったけど、今回はWebサービスの前に Spring Security のフィルタをかませて、認証は Spring Security …

JSF 2.0のPROJECT_STAGEをアプリケーションの外部から指定する

JSF 2.0ではProjectStageなるものを指定できて、開発時はDevelopmentにして詳細なエラーメッセージを表示し、正式運用時にはProductionとかに変更したりする。巷のサンプルでは、この値を以下のようにweb.xmlで指定しているものが多い。 <context-param> <param-name>javax.faces.PROJEC</param-name></context-param>…

CXF で WS-Security を試してみる

前回の続き。WS-Security(まだよくわかってない)でクライアントとサービスプロバイダの間で認証情報をやりとりしてみる。前回のTODOではログインしたユーザの情報を渡す予定だったけど、固定のユーザ名・パスワードを渡すところまでしかできなかった。 サ…

JSF 2.0 + CXF でWebサービス呼び出し

前回 の続き。クライアントをWebアプリケーションにしてみる。Webアプリケーションフレームワークは、最近気になるJSF2。環境はこんな感じ。 JDK 1.6 Eclipse 3.5 (Pleiades) + m2eclipse 0.9.8 (+ WTP Integration) Apache CXF 2.2.5 Mojarra 2.0.1 Tomcat …

CXFでWebサービスを試す

Webサービスを実装する必要に迫られたので CXF で試してみる。以下のような環境で、Webサービスインタフェースの定義、Webサービスのサーバ、Webサービスのクライアント、の3つのMavenアーティファクトをEclipseで開発できるところまでが目標。 JDK 1.6 Ecli…

プロキシがある場合のツール等の設定いろいろ

会社勤めで開発していて面倒なのが、セキュリティの関係でインターネット接続時にプロキシ(しかも認証つき)を通らなくちゃいけないこと。このせいで少々面倒な目にも遭ってきたので、ある開発ツールを認証つきプロキシ環境で使う場合にどうすればいいかを…

Tomcatの環境構築って皆どうやってるんだろう?(オレオレ設定を晒す)

Tomcat をそれなりに本気でセットアップしたいんだけど……WebLogic を多く使っていたので Tomcat はほとんど経験が無く、ネットでも実用的な情報がほとんど見つからないので一般的にはどうセットアップするのが正しいのかよくわからない。本も買ったけどカバ…

GuiceとCubbyとトランザクション管理

前から気になっていたWebアプリケーションフレームワークCubbyが2.0からGuiceやSpringに対応するという話なので、ちょうど最近Guice 2.0が出たことだしちょっと試してみる。 初期セットアップ Maven 2.0.9 と Eclipse 3.4 (Pleiades) で、公式ページのGuice…

Springを利用した アプリケーションで、設定ファイルを外出しする簡単な方法

Spring Framework を使っているアプリケーションで、設定ファイルを外部から読む簡単な方法を考えてみる(簡単なだけであって、ベストプラクティスかどうかは不明)。アプリケーションの設定を保持するクラスは以下のような感じとする*1。 package example; …

OGNLとs:pushの組み合わせでハッピーStruts2ライフ

Struts2でWebアプリを作る際に、JSPを部品化したいと思って以下のような「ユーザー表示」テンプレートを作ったとする。 <table> <tr><td>お名前</td><td><s:property value="user.name" /></td></tr> <tr><td>メールアドレス</td><td><s:property value="user.mail" /></td></tr> </table> これを表示するときに、うまくAction側で user というプロパティ名にできればいいんだけど、同じページにユー…

LogbackのJMX設定インタフェースを使って設定ファイルの切り替えを行う

LogbackにはJMXで設定を行える機能がついていて、設定ファイルで <configuration> <jmxConfigurator /> ... と jmxConfigurator 要素を追加するだけで有効にできる。あとは、jconsole等を使えば外部から設定のリロードや設定ファイルの切り替えを行うことができる。問題なのが、どこからjconsol</jmxconfigurator></configuration>…

Spring Securityで、セッションタイムアウト時のAjaxリクエストに対応する

例えば、jQueryで $("#div").load("content_fragment.jsp");のようにコンテンツをロードする処理を想定する。こういったAjaxによる画面更新では、ロード先のコンテンツがログインを必要とするもので、さらに「ログインしていない場合はログインページにリダ…

Ibatorで件数制限つきのselectByExampleを自動生成する

データベースを検索して複数件の結果を取得するような場合、iBATISではSqlMapClient#queryForList メソッドを使用する。queryForList には skip と max という引数があり、これを指定するとMySQLで言うところの SELECT ... LIMIT (skip), (max) のような結果…