どうも、OSCAです。
最近、勢いでテレビやラジオの感想をリアルタイムに共有するサービス「Pechait!」を作成しました♪ インターネットでラジオが聴けるradikoも開始されましたし、是非テレビやラジオを楽しみながら、Pechait!で他の方の感想もお楽しみください♪
http://www.pechait.com
このブログ「MemoIt」は技術のこと書くブログなので技術的なことを書くと、Pechait!は Google の AppEngine を利用しています♪ 言語は Java で、ひがやすをさんが作成しているSlim3を利用しています。
クラウドを利用したサービスを作成するのは初めてだったので、いろいろなTipsが必要だということを実感しております。 Key-Value Store もクセがありますので最初は苦戦の連続ですね。
AppEngine での作成Tipsなどは、また別の機会にでも書ければと思います。
とりあえず、今回は、Twitterでテレビやラジオの感想をリアルタイムに共有するサービス「Pechait!」を宜しくお願いします。
Pechait!
http://www.pechait.com
2010年7月5日月曜日
2010年2月15日月曜日
Integer.parseInt()
先程、Java の Integer.parseInt メソッドについて思わぬ挙動をされて驚いたのでメモ。
どうやら、Integer の parseInt メソッドの引数に全角数字の文字を代入しても、true が返却されるのが仕様みたいだ。 ハマったー(汗)
そして、Apache Commons の StringUtils クラスの isNumeric メソッドについても同様だった。
僕にとっては思わぬ落とし穴だった(汗) う~ん、文字チェックの場合は正規表現で [0-9] のようにしっかり指定した方がよさげだ。
どうやら、Integer の parseInt メソッドの引数に全角数字の文字を代入しても、true が返却されるのが仕様みたいだ。 ハマったー(汗)
そして、Apache Commons の StringUtils クラスの isNumeric メソッドについても同様だった。
僕にとっては思わぬ落とし穴だった(汗) う~ん、文字チェックの場合は正規表現で [0-9] のようにしっかり指定した方がよさげだ。
2009年11月17日火曜日
Java : ConcurrentModificationException
Javaでコレクション処理中に ConcurrentModificationException が発生したのでMEMO。
<要件>
要件は以下のようだった。
<失敗なソース>
この際、iteratorのnextメソッドで、ConcurrentModificationExceptionが発生した。
理由は、mapの持つ要素のコレクションをiteratorで回しているにも関わらず、ループの中でmap自体の要素を削除していっているため、ループのためのコレクションが保てなくなったため。
<修正後のソース>
あー、考えれば当たり前のことなのに、考えが一転倒になってしまって、ハマってしまった・・・(涙)
<要件>
要件は以下のようだった。
- マップに含まれる要素を全て検査して、条件hogeに一致した要素をマップから削除する
<失敗なソース>
for( Iterator iterator = map.keySet.iterator(); iterator.hasNext(); ) {
Object key = iterator.next();
if( isHoge(key) ) map.remove(key);
}
この際、iteratorのnextメソッドで、ConcurrentModificationExceptionが発生した。
理由は、mapの持つ要素のコレクションをiteratorで回しているにも関わらず、ループの中でmap自体の要素を削除していっているため、ループのためのコレクションが保てなくなったため。
<修正後のソース>
Object[] keys = super.keySet().toArray();
for( Object key : keys ) {
if( this.exceededLimitTime(key) ) {
this.remove(key);
}
}
あー、考えれば当たり前のことなのに、考えが一転倒になってしまって、ハマってしまった・・・(涙)
2009年11月6日金曜日
画像認証ライブラリー Kaptcha を使ってみる vol.1 (導入~画像表示)
Java用の画像認証ライブラリー "kaptcha" を使ってみようと思う。
このエントリーを読んでいる人に、ここで言うところの「画像認証」が何だかを説明する必要はないと思うので、「画像認証」についての説明は省略。 面倒くさいから説明しないんじゃないだk(ry
kaptchaを利用すると、

数ある画像認証ライブラリーの中でも、なぜ kaptcha にしたのかというと・・・・・・「実装が簡単だから」。 実装してみて改めて思ったが、驚くほど簡単だった! kaptchaは、Google code で Apache License 2.0 で公開されているプロジェクトなのだが、そのプロジェクトページに、「他の画像認証ライブラリーよりも優れているよ」という記述があるので、気になる方は是非チェックして欲しい。
1. kaptchaをダウンロード
前置きはこのくらいで、さっそくダウンロード! ダウンロードページから最新版をダウンロードしよう。 これを書いた 2009年11月06日現在の最新版は、kaptcha v2.3 だったので、kaptcha-2.3.zip をダウンロードした。
言うまでもないと思うけど、ダウンロードしたzipファイルは解凍してくださいね。
2. jarを配置
わざわざ説明するまでもないかもしれないけど、ダウンロードした kaptcha の jar を、J2EEプロジェクトの /WEB-INF/lib/ に、配置してくださいね。
3. 認証画像を表示してみよう
では早速、認証画像を表示してみよう!web.xml に記述しましょ。 ↓こんな感じです。
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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" version="2.4">
<servlet>
<servlet-name>Kaptcha</servlet-name>
<servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Kaptcha</servlet-name>
<url-pattern>/Kaptcha.jpg</url-pattern>
</servlet-mapping>
</web-app>
ここでは、コンテキスト(context)直下の /Kaptcha.jpg にアクセスすると、認証画像が表示されるようにしました。 (というか、上記でダウンロードしたzipファイルに含まれているサンプルプログラムそのままです。)
tomcat とかのアプリケーションサーバーにデプロイして、早速アクセスしてみましょう。 ローカルのtomcatで試しているのであれば、 http://localhost:8080/context/Kaptcha.jpg にアクセスしましょう。 (URLは個人個人の環境にあわせてくださいね。 URLの context もちゃんと書き換えてくださいね。)
どうですか? 表示されましたか?
次回へ続く。
このエントリーを読んでいる人に、ここで言うところの「画像認証」が何だかを説明する必要はないと思うので、「画像認証」についての説明は省略。 面倒くさいから説明しないんじゃないだk(ry
kaptchaを利用すると、
- ↓このような認証画像を作成してくれて
- それと同時に、作成した認証画像に書かれた文字列をセッション変数に代入してくれます

数ある画像認証ライブラリーの中でも、なぜ kaptcha にしたのかというと・・・・・・「実装が簡単だから」。 実装してみて改めて思ったが、驚くほど簡単だった! kaptchaは、Google code で Apache License 2.0 で公開されているプロジェクトなのだが、そのプロジェクトページに、「他の画像認証ライブラリーよりも優れているよ」という記述があるので、気になる方は是非チェックして欲しい。
1. kaptchaをダウンロード
前置きはこのくらいで、さっそくダウンロード! ダウンロードページから最新版をダウンロードしよう。 これを書いた 2009年11月06日現在の最新版は、kaptcha v2.3 だったので、kaptcha-2.3.zip をダウンロードした。
言うまでもないと思うけど、ダウンロードしたzipファイルは解凍してくださいね。
2. jarを配置
わざわざ説明するまでもないかもしれないけど、ダウンロードした kaptcha の jar を、J2EEプロジェクトの /WEB-INF/lib/ に、配置してくださいね。
3. 認証画像を表示してみよう
では早速、認証画像を表示してみよう!web.xml に記述しましょ。 ↓こんな感じです。
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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" version="2.4">
<servlet>
<servlet-name>Kaptcha</servlet-name>
<servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Kaptcha</servlet-name>
<url-pattern>/Kaptcha.jpg</url-pattern>
</servlet-mapping>
</web-app>
ここでは、コンテキスト(context)直下の /Kaptcha.jpg にアクセスすると、認証画像が表示されるようにしました。 (というか、上記でダウンロードしたzipファイルに含まれているサンプルプログラムそのままです。)
tomcat とかのアプリケーションサーバーにデプロイして、早速アクセスしてみましょう。 ローカルのtomcatで試しているのであれば、 http://localhost:8080/context/Kaptcha.jpg にアクセスしましょう。 (URLは個人個人の環境にあわせてくださいね。 URLの context もちゃんと書き換えてくださいね。)
どうですか? 表示されましたか?
次回へ続く。
2009年2月24日火曜日
iBATISメモ
iBATIS for Java を利用するときに参考になる情報。
参考サイト
iBatisオフィシャルホームページ
http://ibatis.apache.org/
日本語マニュアルはココ
http://svn.apache.org/repos/asf/ibatis/java/ibatis-2/trunk/ibatis-2-docs/ja/
iBATISを使ったO/RマッピングによるDBアクセスの実例 - CodeZine
http://codezine.jp/article/corner/60
第2回:SQLを直接記述できるiBATIS(前編) - ThinkIT
http://www.thinkit.co.jp/free/article/0606/13/2/第3回:SQLを直接記述できるiBATIS(後編) - ThinkIT
http://www.thinkit.co.jp/free/article/0606/13/3/
Taosoftware: iBatis アーカイブ
http://www.taosoftware.co.jp/blog/java/ibatis/
iBATISのキャッシュでディスクを使うなら、OSCache、EHCacheどっち
http://www.inter-office.co.jp/contents/109/
助言メモ
iBATISで参照(SELECT)した大量のデータをCSVファイルのようなファイルに出力するプログラムを書く場合は、 RowHandler の知識を勉強した上で iBATIS を利用した方が良いでしょう。 このことは、上記のリンクでは「iBATISを使ったO/RマッピングによるDBアクセスの実例 3:CodeZine」で扱っています。
更新履歴
2009.12.15 - リンク先のURL変更を修正。
参考サイト
iBatisオフィシャルホームページ
http://ibatis.apache.org/
日本語マニュアルはココ
http://svn.apache.org/repos/asf/ibatis/java/ibatis-2/trunk/ibatis-2-docs/ja/
iBATISを使ったO/RマッピングによるDBアクセスの実例 - CodeZine
http://codezine.jp/article/corner/60
第2回:SQLを直接記述できるiBATIS(前編) - ThinkIT
http://www.thinkit.co.jp/free/article/0606/13/2/第3回:SQLを直接記述できるiBATIS(後編) - ThinkIT
http://www.thinkit.co.jp/free/article/0606/13/3/
Taosoftware: iBatis アーカイブ
http://www.taosoftware.co.jp/blog/java/ibatis/
iBATISのキャッシュでディスクを使うなら、OSCache、EHCacheどっち
http://www.inter-office.co.jp/contents/109/
助言メモ
iBATISで参照(SELECT)した大量のデータをCSVファイルのようなファイルに出力するプログラムを書く場合は、 RowHandler の知識を勉強した上で iBATIS を利用した方が良いでしょう。 このことは、上記のリンクでは「iBATISを使ったO/RマッピングによるDBアクセスの実例 3:CodeZine」で扱っています。
更新履歴
2009.12.15 - リンク先のURL変更を修正。
登録:
投稿 (Atom)