
2008年09月30日
2008年09月27日
2008年09月26日
2008年09月25日
2008年09月24日
2008年09月23日
遅い夏休み
を取って、広島の尾道に行ってきました。
大林監督の作品の世界にふれることができて、満足しました。
渡船に自転車で乗って、対岸に行くのを一度やってみたかったのですが、実現しました。\(^ ^)/
大林監督の作品の世界にふれることができて、満足しました。
渡船に自転車で乗って、対岸に行くのを一度やってみたかったのですが、実現しました。\(^ ^)/
2008年09月21日
メイクミラクルの再現?
あまり期待すると、裏切られた時のダメージが大きいことは、この前のオリンピックの野球で学んだので、半歩引き気味ぐらいで見ていたのですが、ついに並びました!
O(≧∇≦)O イエイ!!
7月に13ゲーム差だったのを跳ね返してしまいました。
かつてのメイクミラクルを超える奇跡を見せてくれるのでしょうか?
でも、あまり期待するのはやめとこう。。。
O(≧∇≦)O イエイ!!
7月に13ゲーム差だったのを跳ね返してしまいました。
かつてのメイクミラクルを超える奇跡を見せてくれるのでしょうか?
でも、あまり期待するのはやめとこう。。。
2008年09月20日
今日は久しぶりに
上京しました。東京から離れて数年経ちましたが、年月が過ぎるほどに人ごみが苦手になっていきます。なんか以前は、どのように人ごみの中を歩いていたか分からなくなるものですね

2008年09月19日
ことの葉ひらひら その27
「今日舞台に立てなかったんじゃない。立たなかったの。確かにここは舞台裏、華やかなライトもあたってないし。暗い。だけどここからは世界の全て見えるわ。その喜びも悲しみも。人の心の全てが。だから、ここが私の舞台。」
〜北尾美加〜
人生劇場は舞台裏も含めて、それも舞台なのです。どこを居場所にするかは、その人次第
。
〜北尾美加〜
人生劇場は舞台裏も含めて、それも舞台なのです。どこを居場所にするかは、その人次第

2008年09月18日
ウロボロス
風呂から出てバスタオルを手に取ったら、その影から「北海道には住めない黒い妖精」が現われました。
早く退治しなければ、見失いたくない、と思うのですが、
いかんせん、今の私は無防備な状態です。こんな状態で戦いを挑んで、もし逆に向かってこられたら返り討ちに合いそうです。
とりあえず、体を拭いてしまおうと思うのですが、「北海道には住めない黒い妖精」が潜んでいたバスタオルで拭くのは、なんか抵抗があります。しかし、早く拭かなければ無防備なままです。
という精神的にウロボロス状態に誘導されてしまいました。
そんな夕べでした。
早く退治しなければ、見失いたくない、と思うのですが、
いかんせん、今の私は無防備な状態です。こんな状態で戦いを挑んで、もし逆に向かってこられたら返り討ちに合いそうです。
とりあえず、体を拭いてしまおうと思うのですが、「北海道には住めない黒い妖精」が潜んでいたバスタオルで拭くのは、なんか抵抗があります。しかし、早く拭かなければ無防備なままです。
という精神的にウロボロス状態に誘導されてしまいました。
そんな夕べでした。
2008年09月17日
SAStrutsによるWebアプリケーションスーパーサンプル
Struts開発時にとても参考になる「StrutsによるWebアプリケーションスーパーサンプル第2版」(ソフトバンククリエイティブ)のサンプルをSAStrutsで開発したらどうなるか、やってみようと思います。
ということで、コードなにがしに投稿し始めましたが、これは相当パワーが必要であることがすぐにわかりました。。。
ということで、コードなにがしに投稿し始めましたが、これは相当パワーが必要であることがすぐにわかりました。。。
2008年09月16日
正規表現で、渡された文字列に非ASCII文字があるか?のチェック(Java編)
/**
* 文字列にASCII文字でない文字が存在するか?
* 参考:
* http://www.unicode.org/charts/PDF/U0000.pdf
*/
private static final String P_NOT_ASCII = ".*[^\\u0020-\\u007E].*";
/**
* 半角ASCIIでない文字があるか
* @param str チェック対象文字列
* @return 半角ASCIIでない文字がある:true ない:false
*/
public static boolean existNotAscii(String str) {
return str.matches(P_NOT_ASCII);
}
2008年09月14日
複数Employee一括登録フォームのバリデーション(SAStruts+S2JDBC)
コードなにがしに、「複数Employee一括登録フォームのバリデーション」を追加しました。
概要はこんな感じなのですが、

具体的には、以下のような複数レコードの一括登録機能で、入力値エラーが複数のレコードにある場合に、

↓のようにそれぞれのテキストボックスを色つきにします。
概要はこんな感じなのですが、

具体的には、以下のような複数レコードの一括登録機能で、入力値エラーが複数のレコードにある場合に、

↓のようにそれぞれのテキストボックスを色つきにします。

2008年09月13日
今日は健康診断に行ってきました。
が、8時40分の受付開始時刻に行って、終了したのは12時ぐらい。。。実際に検診していた時間は10分くらいでしょうか?
久しぶりに病院に行きましたが、ものすごい待ち時間なんですね。たまにならいいですが、通院するようなことになると相当大変なことになりますね。(^^;
久しぶりに病院に行きましたが、ものすごい待ち時間なんですね。たまにならいいですが、通院するようなことになると相当大変なことになりますね。(^^;
2008年09月12日
今更ですが、Google Chrom
GoogleのChromの評判をあちらこちらで見てみると、速いという感想もあり、特に体感できるような速度の変化は無いという感想もありですね(さすがに遅いというのはないようですが)。
私的には体感で(遅)IE6<IE7<FireFox3<Opera9.52<Chrom(速)なのですが、見るサイトにもよるのでしょうね。
Chromの起動や表示の軽妙な感じは結構気に入っています。仕事中に色々調べものをするのは、Chromが便利良いですね。検索ワード入力フォームが、アドレス入力フォーム(というのかな?)と一体化になっているのが使いやすいです。入力フォーム幅の広いことが、検索しやすい印象を与えているのかもしれません。
ただ、現在開発中のWebサイトのページがChromでだけ崩れてしまうことは、ちょっと勘弁して欲しいと思う今日このごろです。
(+o+)
まあβ版だからしょうがないかなと、自分を納得させています。
(^^;
私的には体感で(遅)IE6<IE7<FireFox3<Opera9.52<Chrom(速)なのですが、見るサイトにもよるのでしょうね。
Chromの起動や表示の軽妙な感じは結構気に入っています。仕事中に色々調べものをするのは、Chromが便利良いですね。検索ワード入力フォームが、アドレス入力フォーム(というのかな?)と一体化になっているのが使いやすいです。入力フォーム幅の広いことが、検索しやすい印象を与えているのかもしれません。
ただ、現在開発中のWebサイトのページがChromでだけ崩れてしまうことは、ちょっと勘弁して欲しいと思う今日このごろです。
(+o+)
まあβ版だからしょうがないかなと、自分を納得させています。
(^^;
2008年09月11日
ことの葉ひらひら その26
「本来難しいことを簡単に言っても、難しいものは難しいのです」
プログラミングも本来は簡単なものではありません。プログラミングを「簡単」というのは、難しいけれど重要なことを誤魔化しているだけ(分かった気にさせてるだけ)なんでしょうね。
プログラミングも本来は簡単なものではありません。プログラミングを「簡単」というのは、難しいけれど重要なことを誤魔化しているだけ(分かった気にさせてるだけ)なんでしょうね。
2008年09月10日
正規表現で、渡された文字列に非ASCII文字があるか?のチェック(Python編)
#渡された文字列に非ASCII文字があるか?
#Pythonの正規表現を使用して、渡された文字列に非ASCII文字があるかチェックします。(UTF-8向け)
#Python 正規表現 非ASCII文字 UTF8
regexp = re.compile(r'[^\x20-\x7E]')
result = regexp.search(" abcdefghijklmnopqrstuvwxyz!#$&'()[]@")
if result != None :
print(u"文字列に非ASCII文字が存在する".encode('shift_jis'))
else :
print(u"文字列に非ASCII文字が存在しない".encode('shift_jis'))
#↓
#"文字列にASCII文字でない文字が存在しない"
2008年09月09日
MySQLからS2JDBC-Genで各種クラスを自動生成しましょう(Eclipse編)
コードなにがしにもアップしていますが、こちらにもアップしちゃいます。Eclipse+Dolteng+S2JDBC-Genは、SAStrutsでの開発を強力にサポートします。
●序
●造
1.DoltengプラグインでEclipseプロジェクト"s2jdbc-gen-examples"を作成します。
2.MySQL Connector/J (JDBCドライバ)を配置
3.S2JDBC用のDICONファイルを作成
s2jdbc.dicon
jdbc.dicon
4.S2JDBC-Gen実行
●考
●おまけ的
今回はDolteng+S2JDBC-Genで、各種クラス(Entity, Service, Condition, Test)ソースの自動生成を試してみます。
ここでは、EclipseのAnt機能を使用します。
データベースはMySQLのインストール後の設定で構築したMySQL環境を使用します。
エンティティクラスの生成も併せて参考にして下さい。
前提:Doltengプラグインは、バージョン0.32.0以上であること。当バージョン未満では、S2JDBC-Gen関係のファイルが生成されません。
設定項目を以下のようにして作成しましょう。

この時点で、S2JDBC-GenおよびS2JDBC-Genが使用するJarファイルが"s2jdbc-gen-examples\lib"フォルダにコピーされ、また、S2JDBC-Gen用のAntビルドファイルが"s2jdbc-gen-examples\s2jdbc-gen-build.xml"としてコピーされます。
S2JDBC-GenがEntityクラスを自動生成する際には、MySQLデータベースに接続してカタログ情報を取得します。なので、実行時にはJDBCドライバが必要になります。
環境・必要なモジュール準備でダウンロードした"mysql-connector-java-5.1.6-bin.jar"を
"s2jdbc-gen-examples\src\main\webapp\WEB-INF\lib"フォルダにコピーします。
チェック!1.、2.を行うと以下のようなフォルダ/ファイル配置になります。

"s2jdbc-gen-examples\src\main\resources\s2jdbc.dicon"を以下の内容に変更します。
"s2jdbc-gen-examples\src\main\resources\jdbc.dicon"を以下の内容に変更します。
S2JDBC-Genマニュアル:Antタスクの実行を参考にして以下のように作業を進めます。
"s2jdbc-gen-examples\s2jdbc-gen-build.xml"ファイルをEclipseのAntエディタで開き、Eclipseメニューから「Run」-「外部ツール」-「外部ツールダイアログを開く」を選択します。外部ツールダイアログが開きます。

左側のメニューにある「Antビルド」という項目をダブルクリックすると、s2jdbc-gen-build.xmlに対する起動設定が新規作成されます。その後、引数に"gen-entity"を指定します。
※できない場合は、手動で新規作成しましょう。

実行ボタンをクリックしましょう。ずらずらとコンソールに生成処理のログを出力されます。最終的に、
と表示されればOKです。
生成したファイルは、Eclipseのパッケージエクスプローラービューにすぐに表示されませんので、パッケージエクスプローラービュー中のプロジェクトフォルダを左クリックしてF5キー(更新)を押し、ファイルシステムと同期させましょう。そうすると、パッケージエクスプローラービューに生成したファイルが表示されます。
以下のように各種クラス(Entity, Service, Condition, Test)のソースが生成されます。

う〜ん。これはハイパー簡単ですね。さらにDoltengでここでの手順を自動的に出来てしまうと、なお良いというのは贅沢でしょうか?
今回、初めてAntツールを使っているわけなのですが、こんな便利なコマンドがあるのですね。ビルドファイル内に記述すると、環境変数のリストがコンソールに表示されます。
目次
●序
●造
1.DoltengプラグインでEclipseプロジェクト"s2jdbc-gen-examples"を作成します。
2.MySQL Connector/J (JDBCドライバ)を配置
3.S2JDBC用のDICONファイルを作成
s2jdbc.dicon
jdbc.dicon
4.S2JDBC-Gen実行
●考
●おまけ的
序
今回はDolteng+S2JDBC-Genで、各種クラス(Entity, Service, Condition, Test)ソースの自動生成を試してみます。
ここでは、EclipseのAnt機能を使用します。
データベースはMySQLのインストール後の設定で構築したMySQL環境を使用します。
エンティティクラスの生成も併せて参考にして下さい。
前提:Doltengプラグインは、バージョン0.32.0以上であること。当バージョン未満では、S2JDBC-Gen関係のファイルが生成されません。
造
1.DoltengプラグインでEclipseプロジェクト"s2jdbc-gen-examples"を作成します。
設定項目を以下のようにして作成しましょう。

この時点で、S2JDBC-GenおよびS2JDBC-Genが使用するJarファイルが"s2jdbc-gen-examples\lib"フォルダにコピーされ、また、S2JDBC-Gen用のAntビルドファイルが"s2jdbc-gen-examples\s2jdbc-gen-build.xml"としてコピーされます。
2.MySQL Connector/J (JDBCドライバ)を配置
S2JDBC-GenがEntityクラスを自動生成する際には、MySQLデータベースに接続してカタログ情報を取得します。なので、実行時にはJDBCドライバが必要になります。
環境・必要なモジュール準備でダウンロードした"mysql-connector-java-5.1.6-bin.jar"を
"s2jdbc-gen-examples\src\main\webapp\WEB-INF\lib"フォルダにコピーします。
チェック!1.、2.を行うと以下のようなフォルダ/ファイル配置になります。

3.S2JDBC用のDICONファイルを作成
"s2jdbc-gen-examples\src\main\resources\s2jdbc.dicon"を以下の内容に変更します。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components>
<include path="jdbc.dicon"/>
<include path="s2jdbc-internal.dicon"/>
<component name="jdbcManager" class="org.seasar.extension.jdbc.manager.JdbcManagerImpl">
<property name="maxRows">0</property>
<property name="fetchSize">0</property>
<property name="queryTimeout">0</property>
<property name="dialect">mysqlDialect</property>
</component>
</components>
"s2jdbc-gen-examples\src\main\resources\jdbc.dicon"を以下の内容に変更します。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components namespace="jdbc">
<include path="jta.dicon"/>
<component name="xaDataSource"
class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
<property name="driverClassName">
"com.mysql.jdbc.Driver"
</property>
<property name="URL">
"jdbc:mysql://localhost:3306/sastruts"
</property>
<property name="user">"sastruts"</property>
<property name="password">"sastruts"</property>
</component>
<component name="connectionPool"
class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
<property name="timeout">600</property>
<property name="maxPoolSize">10</property>
<property name="allowLocalTx">true</property>
<destroyMethod name="close"/>
</component>
<component name="DataSource"
class="org.seasar.extension.dbcp.impl.DataSourceImpl"
/>
</components>
4.S2JDBC-Gen実行
S2JDBC-Genマニュアル:Antタスクの実行を参考にして以下のように作業を進めます。
"s2jdbc-gen-examples\s2jdbc-gen-build.xml"ファイルをEclipseのAntエディタで開き、Eclipseメニューから「Run」-「外部ツール」-「外部ツールダイアログを開く」を選択します。外部ツールダイアログが開きます。

左側のメニューにある「Antビルド」という項目をダブルクリックすると、s2jdbc-gen-build.xmlに対する起動設定が新規作成されます。その後、引数に"gen-entity"を指定します。
※できない場合は、手動で新規作成しましょう。

実行ボタンをクリックしましょう。ずらずらとコンソールに生成処理のログを出力されます。最終的に、
〜〜〜〜
[gen-service] DEBUG 2008-09-09 18:48:06,875 [main] S2Containerを作成しました。path=jdbc.dicon
[gen-service] DEBUG 2008-09-09 18:48:06,875 [main] S2Containerを作成します。path=s2jdbc-internal.dicon
[gen-service] DEBUG 2008-09-09 18:48:06,875 [main] S2Containerを作成します。path=convention.dicon
[gen-service] DEBUG 2008-09-09 18:48:06,890 [main] S2Containerを作成しました。path=convention.dicon
[gen-service] DEBUG 2008-09-09 18:48:06,890 [main] S2Containerを作成しました。path=s2jdbc-internal.dicon
[gen-service] DEBUG 2008-09-09 18:48:06,921 [main] S2Containerを作成しました。path=s2jdbc.dicon
[gen-service] INFO 2008-09-09 18:48:07,031 [main] Running on [ENV]ut, [DEPLOY MODE]Warm Deploy
[gen-service] DEBUG 2008-09-09 18:48:07,125 [main] コマンド(org.seasar.extension.jdbc.gen.internal.command.GenerateServiceCommand)を実行しました。
BUILD SUCCESSFUL
Total time: 7 seconds
と表示されればOKです。
生成したファイルは、Eclipseのパッケージエクスプローラービューにすぐに表示されませんので、パッケージエクスプローラービュー中のプロジェクトフォルダを左クリックしてF5キー(更新)を押し、ファイルシステムと同期させましょう。そうすると、パッケージエクスプローラービューに生成したファイルが表示されます。
以下のように各種クラス(Entity, Service, Condition, Test)のソースが生成されます。

考
う〜ん。これはハイパー簡単ですね。さらにDoltengでここでの手順を自動的に出来てしまうと、なお良いというのは贅沢でしょうか?
おまけ的
今回、初めてAntツールを使っているわけなのですが、こんな便利なコマンドがあるのですね。ビルドファイル内に記述すると、環境変数のリストがコンソールに表示されます。
<echoproperties/>
2008年09月08日
渡された文字列に非ASCII文字があるか?(Perl編)
#渡された文字列に非ASCII文字があるか?
#Perlの正規表現を使用して、渡された文字列に非ASCII文字があるかチェックします。(UTF-8向け)
#Perl 正規表現 非ASCII文字 UTF8
$str = " abcdefghijklmnopqrstuvwxyz!#$&'()[]@";
if ( $str =~ /[^\x20-\x7E]/ ) {
print encode('shift-jis', decode('utf-8', "文字列にASCII文字でない文字が存在する\n"));
} else {
print encode('shift-jis', decode('utf-8', "文字列にASCII文字でない文字が存在しない\n"));
}
#↓
#"文字列にASCII文字でない文字が存在しない"