2006年04月02日 [長年日記]
_ [W-ZERO3] ExecMulti Ver.0.20 リリース。
早速、ExecMultiを活用していただいたみたいで。 ezLockとAppCloseの組み合わせはなかなかよさそうですね。
ということで、pause機能をつけましたですよ。 使用しているAPIに合わせて、sleepという名前で指定できるようにしました。
[default] exec=\(インストールパス)\LANMAN.exe sleep=3000 exec=\Program Files\ezLock\ezLock.exe exec=\(インストールパス)\Appclose.exe|-p
という感じで使ってみてくださいませ。
で、単機能exeがあると確かによさそうですねー。 ちょっと考えておいてみます。
あ。一応変更履歴を以下に。
- sleep機能を追加。
- 実装していない機能をReadMeに記述してしまっていたので削除。
2006年04月04日 [長年日記]
_ [W-ZERO3] SendNow Ver.1.10 リリース。
SandRの仕様に合わせて、送受信前後に別アプリを起動できるようにしました。 ちゃんと解説する時間がないので、とりあえず変更履歴だけ。
- 二重起動したら、二回目の起動はムシするようにした。
- CABによるインストーラを作成した。
- 送受信前に起動されるアプリを指定可能にした。(beforeオプション)
- 送受信後に起動されるアプリを指定可能にした。(afterオプション)
- 送受信後に未送信メールがなかったときのみ起動されるアプリを指定可能にした。(sendオプション)
2006年04月05日 [長年日記]
_ [W-ZERO3] Pocket Irc Client -pic-。
使ってみたわけじゃないけど、見つけたので覚書として。
W-ZERO3 用の IRC Client です。必要最小限の機能しか実装されていません、豪華な機能は実装しません。設定方法が初心者の方には分かりにくいので分かる方のみどうぞ。
だそうです。
2006年04月06日 [長年日記]
_ [W-ZERO3] SendNow Ver.1.11 リリース。
メールで「iniファイルがないからどーやって設定してよいかわからないぞこのやろう」*1とご指摘を受けたので、 iniファイルがない場合は雛型となるファイルを作成するようにしてみた。 これで多少は設定しやすくなったのではないだろーか。
というわけで、変更点は以下の通り。
- 設定ファイルがなかった場合、雛型となるファイルを作成するようにした。
- exeファイルのバージョンが間違っていたのを修正。
*1 いや、丁寧な口調でしたよ。ホントは。
_ [W-ZERO3] SandR Ver.1.11 リリース。
で、SendNowに合わせて、SandRの方もsandr.ini.sampleを削除し、自動で作成するように変更した。
ついでに、二重起動チェックロジックのためのGUIDがWMFとかぶってるとゆーアホらしいバグもいっしょに修正。 あ、このバグで何か問題が起こるってことはほぼないのでご安心を。
というわけで、こちらも変更点を。
- 二重起動チェックのためのMutexキーがWMFと重複していた問題を修正。
- 設定ファイルがなかった場合、雛型となるファイルを作成するようにした。 それに伴い、sandr.ini.sampleを削除した。
_ [ももそふと] svnリポジトリを公開。
WebSVNというものがあったので、 Subversionで管理しているソース丸々を公開してみた。
ログが化けちゃっているんだけど、回避方法がわからなかったのでとりあえずそのまま。 それでも一応、最新の開発状況が追っかけられるハズだ。
いぬそふと更新用スクリプトとか、前に作りかけてたみぃぽんのソースとかが混じっているのはご愛嬌。
_ ふっかつのじゅもん for JavaScript。
「ふっかつのじゅもん for HDD」にインスパイアされて作ってみました。
上のテキストエリアにふっかつのじゅもんで残しておきたいデータを入れ、 「ふっかつのじゅもんを聞く」を押すと、 下のテキストエリアにふっかつのじゅもんが出ます。 これを紙に書いて保存しておいてください。 後でデータをもとにもどしたいときは、同じように上のテキストエリアにふっかつのじゅもんを入れ、 祈りながら「ぼうけんのつづき」を押してください。 正しく入力できた場合は、下のテキストエリアにデータが復元されます。
誰かドラクエ風にアレンジしてくれないかなぁ…。
_ [Java][Seasar] S2Daoでテストするときに自動でトランザクションをロールバックする。
S2DaoUnitTestを使ってDaoのテストを書くときに、 各テストケースごとにトランザクションの開始&ロールバックをする方法。
ずーっとS2Daoをキーにして探してたんだけど、S2Unitのドキュメントにしっかり方法が書いてあった。以下に引用する。
include("j2ee.dicon")をしておいて、テストメソッド名の最後にTxをつける(testXxxTx)と、テストメソッドの直前にトランザクションを開始し、テストメソッドの直後にトランザクションをロールバックするので、データベースに関するテストを行った場合のクリーンアップの処理が不要になります。
絶対また忘れる気がするので覚書として書いておこう。
というわけで、検索系処理のテストを書くときは以下のようにするとよさそうだ。
public void testGetHogeTx() { readXlsAllReplaceDb("testGetHogeBefore.xls"); Hoge result = hogeDao.getHoge(); DataSet expect = readXls("testGetHogeAfter.xls"); assertEquals(expect, result); }
これをベースに、resultの型をListに変えたり、検索系メソッドの引数を適宜与えてやったりすればOKかな。 Excelファイルがテストケース×2つ必要になりそうだけど、BeforeなExcelをうまくまとめておけばまぁなんとかなるか。
今まで、Excelでデータを作って、DBにロードして、テストコード実行して、DBから結果をダンプして、ダンプ結果をExcelに貼り付けて保存して、目視で結果が合っているか確認して、それらのExcelをエビデンスとして保存して、それを繰り返すためにDBの中身を適宜きれいにして…、 ってやっていたのが、入力データと期待する結果データを作成してちょろっとテストコード書いてテストケース実行ってだけですむのはすばらしいなぁ。
2006年04月07日 [長年日記]
_ [Java][Seasar] S2Daoで検索処理を書く。
S2Daoで検索処理を書くときは、QUERYアノテーションかSQLアノテーションを指定しよう。
public interface HogeDao { public Class BEAN = Hoge.class; public static final String getHoge_ARGS = "id"; public Hoge getHoge(String id); }
として、
Hoge hoge = hogeDao.getHoge("1");
としても、「select * from hoge where id = '1'」相当のSQLを発行してくれるようだが、
Hoge hoge = hogeDao.getHoge(null);
とすると、「select * fro hoge」相当のSQLが発行されてしまう。 これだと、全件取得になった上で最初の一件を返すため、引数にnullが指定されてしまったことに気付き辛く、バグの発生する原因となってしまう。
これを回避するには、きちんとQUERYアノテーションやSQLアノテーションを指定することだ。
public interface HogeDao { public Class BEAN = Hoge.class; public static final String getHoge_QUERY = "id = ?"; public static final String getHoge_ARGS = "id"; //引数1つだから、これなくてもいいね。 public Hoge getHoge(String id); }
これで、
Hoge hoge = hogeDao.getHoge(null);
としても、「select * from Hoge where id = null」なSQLを発行するようになる。 これなら検索結果がゼロ件になるのでhogeがnullとなってくれる。
2006年04月09日 [長年日記]
_ [tDiary] makerss_cancel.rbプラグイン。
makerss.rbプラグインを使ってRSSを生成しているんだけど、 後で気づいたちょっとした誤字の修正とか、過去のにっきにカテゴリを追記したりとか、 RSSの更新をしたくないような修正をすることがあるのに気づいた。
というわけで、makerssを動作させないようにできるプラグインを書いてみた。 ちゃんと動くかどうかのテストもかねて、プラグインをここに載せておこう。
# makerss_cancel.rb alias makerss_update_cancel makerss_update if defined? makerss_update # これは/jaの下にいるべきかな、ホントは。 def makerss_cancel_iscancel_label "rssを更新する" end add_edit_proc do id = "plugin_makerss_cancel_iscancel" %Q[<input type="checkbox" checked id="#{id}" name="#{id}" value="1">] + %Q[<label for="#{id}">#{makerss_cancel_iscancel_label}</label>] end def makerss_update if /^append|replace$/ =~ @mode then iscancel = @cgi.params['plugin_makerss_cancel_iscancel'][0] if iscancel == '1' then makerss_update_cancel end else makerss_update_cancel end end
2006年04月12日 [長年日記]
_ [MySQL] mysqlコマンドで文字コードを指定する。
mysqlコマンドで日本語データをinsertしようとすると、以下のようにエラーになってしまう。
C:\>mysql -h localhost -u user -p mysql> use test; Database changed mysql> create table test(name varchar(30)); Query OK, 0 rows affected (0.13 sec) mysql> insert into test values('ほげ'); ERROR 1406 (22001): Data too long for column 'name' at row 1
これは、文字コードがutf8になってしまっているから起こるようだ。
C:\>mysql --help (...略...) Variables (--variable-name=value) and boolean options {FALSE|TRUE} Value (after reading options) --------------------------------- ----------------------------- (...略...) default-character-set utf8
解決するには、--default-character-set=sjisとするか、set names sjisとすればよい。
C:\>mysql -h localhost -u user -p --default-character-set=sjis mysql> use test; Database changed mysql> create table test(name varchar(30)); Query OK, 0 rows affected (0.13 sec) mysql> insert into test values('ほげ'); Query OK, 1 row affected (0.03 sec) mysql> select * from test; +------+ | name | +------+ | ほげ | +------+ 1 row in set (0.00 sec)
もしくは
C:\>mysql -h localhost -u user -p mysql> use test; Database changed mysql> set names sjis; Query OK, 0 rows affected (0.00 sec) mysql> create table test(name varchar(30)); Query OK, 0 rows affected (0.13 sec) mysql> insert into test values('ほげ'); Query OK, 1 row affected (0.03 sec) mysql> select * from test; +------+ | name | +------+ | ほげ | +------+ 1 row in set (0.00 sec)
_ ヽ(´ー`)ノ [助かった。 情報ありがとう!]
2006年04月13日 [長年日記]
_ [W-ZERO3][WM5] ExecIf Ver.0.10 リリース。
W-ZERO3向けソフト第6弾です。
ExecMultiをベースに、起動している画面によって異なるアプリを実行できるツールを作成しました。
以下のような用途に使えると良いなーと思っています。
- ハードキーに割り当て、実行するたびにアプリケーションの起動と終了を切り替える。
- 多重起動を許しているソフトの多重起動をできないようにする。
- W-ZERO3 Utility Plusにあるプリセット機能の代わりに使えるかも。
最近、W-ZERO3で音楽を聞くようになったので、こんなことがしたくて作りました。
- TCPMPが起動していなければ起動し、m3uファイルを読み込む。
- TCPMPが起動していれば、TCPMPを終了する。
上記機能なら、こんな設定を書けばOKです。
[TCPMP起動中] class=TCPMP_Win title=TCPMP mode=exec exec=close [default] exec=\My Documents\hoge.m3u
_ [Tips] FTPでファイルを再帰的に取得する。
まさに私と同じことをしたい人がいたので、メモ。
wgetを使うと良いらしい。
>wget -mck ftp://ftp.example.com/path/to/
ユーザとパスワードが必要な場合は以下のように。
>wget -mck ftp://user:passwd@ftp.example.com/path/to/
_ [JavaScript] ページ内リンクでスムーススクロール。
とりあえずメモ。
ページの内容をDOMで操作して後からイベントを追加する手法は いろいろと応用が利きそうなので覚えておこう。
…でもこれを「ajax」と言うのは抵抗があるなぁ…。
_ [W-ZERO3] キラーアプリ。
世の流れに乗って、私の思うキラーアプリも書いてみます。
メモ取りは基本的にこいつでやってます。 会社で会議の議事録をとったりとか、 作業メモとか、 買い忘れた本の名前とか、 結構無頓着にいろいろ書いてますね。
暗号化できるので、パスワード&ID管理にも使ってます。 今まではそういう管理をしていなくて毎回メールを漁ってIDを探していたので…。
これさえあれば、いくらでも暇がつぶせますね。 今ではPCの前にいても、2ch見るときはW-ZERO3を使う始末です。(未読の管理の問題がある為でもあるんですが)
この、十字キーだけでできる操作感は、W-ZERO3にうまくマッチしていて すばらしいと思います。
あ、暇をつぶせると言えば、最近は毎日「PDASudoku」をやってます。 Hardモードだとなかなか遊び応えありますよ。 升目にメモとして複数の数字を書きたいので「メモ」に書き写して遊んだりしてます(^^;;
- メール
キーボードで携帯メールを打ちたくてW-ZERO3を買ったわけなので、 これがないとお話にならないですね。 まぁ、使い勝手は悪いので「キラーアプリ」か?って言われると微妙なんですが、 その辺はまぁ、拙作のツール群で補うってことで。
- ActiveSync
まだ誰もあげてないよーなするのが不思議なくらいなんですけど。
これで、PIMな情報をPCと手元とで共有できるってのはいいですよね。 今までのPHSでは気軽にPIMデータをPCと連携できなかったですから。 それが、ケーブルをさすだけで自動的に同期されているのはすばらしいの一言です。 上記TomboのデータもPCとW-ZERO3で共有させてます。
- Windows Mobile 5.0 & Visual Studio 2005
まぁ、これは集計に入れなくてよいような気がしますけど(^-^;;
hiroさんとちょっとかぶるかな。もともとVisual Studio 2005が使える環境を持っていたので、その辺の思いは違うかもですけど。
とにかく、自分で好きなようにソフトを開発してPHSをカスタマイズできるってのが嬉しいですね。 今までPHSを使い続けてて、ちょっとした操作感の悪さにいつもいらいらしていましたので。 そのちょっとしたイライラを、自分でツールを作ってどうにかできる余地が残っているってのは今までの電話機にはなかったと思います。
そのほか。
後は、使いやすいPIMソフトが欲しいですかねー。 いくつか試してみたんですが、なんとなく手に馴染まなくて…。
アドレス管理には「w03Phonebook」を使っているんですが、起動の遅さと電話をかけたりメールしたりするまでのアクションの多さがネックです。 なので、電話なら着信/発信履歴から、メールなら届いているメールに返信してタイトルを消す、って方法で済ますことが多いです。特定の人に連絡することが多いからなんとかなっているんでしょうね。 データを参照したいときは、仕事柄PCの前に居ることが多いので、ActiveSyncで連携させてOutlookでデータを見ることが多いですかね。
予定&Todo管理には、「KMSchedule」と「UKTodayEx」と「TaskPlus」を併用しています。 ただ、どうしても入力の手順が煩雑なのと、予定&仕事の見せ方が自分にマッチしていないのがあって、自作するしかないかなーとか考えています。 今はOutlookで予定を入力することが多いですかね。
とまぁこんなところです。
2006年04月17日 [長年日記]
_ [W-ZERO3] Kzou’s Diary (^^ゞ - SendNowをW-ZERO3 UtilityPlusに設定してみた。
モバイルなブログのえらい人、KzouさんにSendNowの使い方を解説していただいちゃいました。
私の説明だと、
キー割り当てソフト(W-ZERO3 Utility Plus, PQz等)を使って、ソフトキー1に割り当てを行って使用することを想定しています。 W-ZERO3 Utility Plusを使っている場合は、プリセット機能と組み合わせるとよいかと思います。その場合、「アプリの割り当て」では「\Windows\tmail.exe」を選択してください。
としか説明していない部分を、ハードコピーとかを駆使して詳細に解説してもらっています。 SendNowを使用している方は一度参考にしていただくとよいかもしれません。
_ [Java][Eclipse][Seasar][Maven] Eclipse + Maven2 + WTPでSeasar2を使ったWebアプリを開発するまで。
Seasar2で開発を始めるまでの道のりを以下にメモしておく。
インストール
まずはインストール。今回は以下の組み合わせで環境を構築している。
- JDK1.5.0_06
- Eclipse 3.1.1
- Maven 2.0.2
- WTP 1.0.1.v200602130105
- Tomcat 5.5.16
インストールが無事完了したら、実際のプロジェクトを作成する前にいくつか準備が必要だ。
EclipseでMaven2を使用するには、「M2_REPO」というクラスパス変数の指定が必要となる。 その為、
>mvn eclipse:add-maven-repo -Declipse.workspace="ワークスペースへのフルパス"
としてクラスパス変数の追加をしてあげよう。
次にEclipseのプロジェクトに「Servers」を追加する。
Eclipseを起動し、「ファイル」メニュー→「新規...」→「その他...」と選択し、 「Server - Server」のウィザードを選択しよう。 すると、サーバを選択するダイアログが出るので、「Tomcat v5.5 Server」を選択する。 次の画面ではまだプロジェクトを選択していないのでそのまま「終了」でかまわない。
これで、プロジェクトを作る準備ができた。
プロジェクトの作成。
まずはmavenで新しいプロジェクトを作る。 今回の例では、パッケージ名を「pkg.test」、プロジェクト名を「test」とでもしておこう。
C:\>mvn archetype:create -DgroupId=pkg.test -DartifactId=test -DarchetypeArtifactId=maven-archetype-webapp
プロンプト上では一行で書く必要があるので注意しよう。 これで、C:\testフォルダが作成された。
次にMaven2の管理ファイルであるpom.xmlを変更し、Seasar2を使えるようにしよう。 詳細はSeasarのWikiを 見るとよいが、こんな風に修正すればまずはOKだ。
C:\>cd test C:\test>diff -u pom.xml.orig pom.xml --- pom.xml.orig Mon Apr 17 14:28:48 2006 +++ pom.xml Mon Apr 17 14:59:14 2006 @@ -7,7 +7,19 @@ <version>1.0-SNAPSHOT</version> <name>Maven Webapp Archetype</name> <url>http://maven.apache.org</url> + <repositories> + <repository> + <id>maven.seasar.org</id> + <name>The Seasar Foundation Maven2 Repository</name> + <url>http://maven.seasar.org/maven2</url> + </repository> + </repositories> <dependencies> + <dependency> + <groupId>org.seasar.container</groupId> + <artifactId>s2-extension</artifactId> + <version>2.3.7</version> + </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId>
次に、Eclipseが使う.classpath等を生成する。
C:\test>mvn eclipse:eclipse -Dwtpversion=1.0
「-Dwtpversion=1.0」はWTPなプロジェクトとしてのファイルを生成するために必要だ。 一度このオプションをつけて実行しておけばよいみたい。 以後、pom.xmlを修正した後は
C:\test>mvn eclipse:eclipse
とするだけでとりあえず問題がなかった。
(追記 2006/04/18) 問題大ありだった。 「-Dwtpversion=1.0」をつけないと、WTPを使ってTomcatを起動したときに作成されるクラスパスにjarが追加されなくなってしまっていた。 ちゃんといつも「-Dwtpversion=1.0」をつけよう。
設定は以上だ。 作成したプロジェクトをEclipseにインポートし、「Run on Server」を実行してみよう。 無事「Hello World!」が表示されれば成功だ。
後はこのプロジェクトを修正していけばよい。
_ [W-ZERO3] えきから時刻表の直接入力フォーム。
カテゴリがおかしい気がするけど、とりあえずW-ZERO3用として作ったので。
こうして使ってみると例えば路線検索や、乗り換え案内、地図検索などの機能が欲しいですね。
それも、オンラインに接続してからあれこれするのではなくて、オフラインで入力まで済ませてしまってから検索、と出来るような機能が欲しいです。
とのことだったので、私が普段使っているトップページのHTMLを晒してみています。 このファイルをW-ZERO3に保存して、ローカルファイルとして開いています。
これに追加して使う「えきから時刻表」の直接入力フォームができたのでこっちで公開してみます。 *1
こいつを使うと、JavaScriptが有効ならいきなり検索結果画面へ行き、JavaScriptが無効なら一度入力フォームが表示されます。 候補の駅が複数ある場合も、一度入力フォームが表示されます。
以下、HTMLのソースの断片です。 適当な名前で保存して使用してください。
<form action="http://ekikara.jp/cgi-bin/route/route.cgi" onsubmit=" function addZero(i) { if (i < 10) { return '0' + i; } else { return '' + i; } } function getYear(date) { var year = date.getYear(); if (year < 1900) year += 1900; return '' + year; } var date = new Date(); this.month.value = getYear(date) + addZero(date.getMonth() + 1); this.day.value = addZero(date.getDate()); this.hour.value = addZero(date.getHours()); var minute = addZero(date.getMinutes()); this.min1.value = minute.substr(1, 1); this.min2.value = minute.substr(0, 1); this.check.value = 'off'; "> <a href="http://ekikara.jp/">えきから時刻表</a><br> <input type="radio" name="way" value="" id="jorudan_way_now"><label for="jorudan_way_now">今</label> <input type="radio" name="way" value="first" id="jorudan_way_first"><label for="jorudan_way_first">始発</label> <input type="radio" name="way" value="last" checked id="jorudan_way_last"><label for="jorudan_way_last">終電</label><br> <input type="text" size="24" name="intext">〜<input type="text" size="24" name="outtext"> <input type="submit" value=" 検索 "> <input type="hidden" name="check" value=""> <input type="hidden" name="month" value=""> <input type="hidden" name="day" value=""> <input type="hidden" name="hour" value=""> <input type="hidden" name="min1" value=""> <input type="hidden" name="min2" value=""> <input type="hidden" name="arrive" value=""> <input type="hidden" name="airplane" value="1"> <input type="hidden" name="sprexprs" value="1"> <input type="hidden" name="utrexprs" value="1"> <input type="hidden" name="sort" value="time"> <input type="hidden" name="max" value="5"> <input type="hidden" name="half" value="1"> <input type="hidden" name="cut" value="1"> <input type="hidden" name="direct" value="1"> </form>
*1 ここでHTMLとして公開しているのはトップページへのリンクしか許可してくれていないから。
_ [WM5][W-ZERO3] SandR Ver.1.20 リリース。
受信トレイを一発送受信するアプリを作ってよ
との一言があったので、PDXメール以外も送受信できるようにしてみました。 ただし、WM5で追加されたAPIを使っているので、WM5以上限定です。
しかも、今までのSandRと比べて以下の点が違っちゃってます。
- メールソフトが起動し表示されちゃいます。
- afterオプションとnoreadオプションは無視されます。
- 接続を行った後に自動切断を行いません。
接続が終了するまで待機する方法がわかれば何とかなるんですがね。 もーちょっと試行錯誤はしてみます…。 ですので、同様の実装をSendNowにもいれようと思ったんですが、 もうちょっと作りが落ち着くまではSandRのみを更新させてもらいますm(_ _)m
一応修正履歴を以下に。
- accountオプションを追加。 他のアカウントのメールも一応送受信可能になった。
_ [W-ZERO3] 非公式モバイルmixiに直接接続する。
えきから時刻表に続く第二弾は、非公式モバイルmixiへの接続です。
<form method="post" action="http://mixi.10u.org/mobilemixi.cgi" onsubmit=" var urlList = [ 'http://umm.pv.to/', 'http://mmixi.puchii.org/', 'http://mm.8px.org/' ]; var date = new Date(); var i = date.getTime() % urlList.length; this.action = urlList[i] + 'mobilemixi.cgi'; "> <a href="http://mixi.10u.org/">非公式モバイルmixi</a> <input type="hidden" name="debug" value="on"> <input type="hidden" name="email" value="メールアドレス"> <input type="hidden" name="password" value="パスワード"> <input type="submit" value=" Login "> </form>
今、本家は停止中なので、3つあるリダイレクト先へ、ランダム(ってわけじゃないけど)で接続しに行きます。 urlListを変えれば、他の非公式モバイルmixiなサイトへも接続するようになるはずです。
「メールアドレス」のところにmixiにログインする際のメールアドレスを、 「パスワード」のところにmixiにログインする際のパスワードを入力して使用してください。
あ、このHTMLはJavaScriptをオフにしていると直接接続しません。 JavaScriptをオフにして使用する方は、actionを適当に書き換えてくださいませ。
2006年04月18日 [長年日記]
_ [W-ZERO3] つまっちの用法用量は正しくお使いください。-ぜろさんのウィルコムメールをもっと便利にする。
つまっちさんのところで、今度はSandRを紹介していただきました。 Ver.1.11を紹介して頂いていますが、タッチの差でVer.1.20を公開してしまったのはご愛嬌です(^^;;
SandRとSendNowのアイコンがかわいいですねー。 本体にとりこんでも良いですか?(笑)
あ、後。 [Fn] + [R]で、「|」が入力できるのは初めて知りましたよ。 いつも手書き入力にして頑張って縦線書いてました。私。
ちなみに。 runnerとtaskmanはSmart-PDA.netでダウンロードできますよ。
2006年04月19日 [長年日記]
_ [Seasar] Seasar Conference 2006 Spring。
このサイトでは初めてこーゆー告知めいたことをやるんですが。
最近興味を持っているSeasarのイベントが開催されます。 私もスタッフの末席を汚していますので、お時間の許す方は是非とも足を運んでくださいませ。 詳細は、期間限定のバナーを設置していますのでそちらからどうぞ。
以下、概要を引用しておきます。
「Seasar Conference 2006 Spring」
日時:2006年5月14日(日) 13:00〜
場所:法政大学ボアソナードタワー26Fスカイホール
主催:特定非営利活動法人Seasarファウンデーション
後援:法政大学 情報科学部
同時開催
DATABASE KNOWLEDGE EXCHANGE 2006 Presented by The Seasar Foundation
2006年04月24日 [長年日記]
_ [Seasar] 読み方。
「シーサー」と読むようです。 今の今まで、「シーザー」って読んじゃってました。
土曜日に行ってきたPosgreSQL勉強会に、 SeasarカンファレンスのPDFを印刷して持っていって宣伝してきたというのに、 そのときにも「シーザー」って連呼してしまっていました。
今度から気をつけよう…。
_ [PostgreSQL] PostgreSQL勉強会に行ってきた。
一昨日の土曜日に、PostgreSQLの勉強会に行ってきました。 ふと思い立って前日に申し込みをする、というムチャをやらかしたんですが 無事参加できてよかったですよ。
商用DBはそれなりに触っているんですが、オープンソースなDBには今まであまり縁がなかったので、これを機にいろいろおべんきょしとこうかな、と。
以下、思ったことをつらつらと書いてみます。
マニュアルすげー。
Windows版のPostgreSQL8.1をインストールして持っていったんですが。 Windowsヘルプな日本語マニュアルがしっかり完備されているんですよね。 これにはびっくりです。てっきりマニュアルなんて英語ばっかりで、 調べ物するならGoogleさんに聞くほうがはやいだろーなーとか思っていたんですが。
これなら、最初にマニュアルを読むべきでしょうね。
残念だったのは、Windowsヘルプのキーワードがちょっと貧弱だったところでしょうか。 日本語のキーワードがなかったのと、あるキーワードの候補が複数あったときの選択肢が全て同じだったところが気になりましたね。 ここがよくなるともっと使いやすいマニュアルになりそうです。
PL/pgSQL
プログラム自身のお話は、OracleとかSQL Serverとかでストアドプロシージャを 作ってきているので、つまずくところはなし。 各DBMS間の構文の差を理解すればOKですしね。
というかそれよりもなによりも、PL/なんちゃらってのがたくさんあるっていうのが楽しそうですね。 PL/rubyとかあるのかなー。…あるようです。
ETL?
勉強会後の質問コーナーで、データベース屋さんぽい人が「ETL」について いろいろ言っていました。 「〜〜ETLでは〜〜」「〜〜データのクレンジングが〜〜」なんて単語を連発 していたんですが、全然意味を理解できず(T-T) かろうじて「DWH(データウェアハウス)」って単語はわかったので、 話っぷりから「DWHにデータを作るときにいろいろ大変なんでうんちゃらかんちゃら」 みたいなことを言っているのかなーと想像しながら聞いていました。
同じ卓に座っていた人も頭に?が浮かんでいたようで、「何言っているかわかります?」 なんて聞かれたんですが、まともに答えられませんでした。
で。
今日「ETL」について調べたところ、「Extract(抽出)/Transform(加工)/Load(読込)」の略で、基幹データから「抽出」して、適宜「加工」して、DWHに「読込」ませること、もしくはそれをやってくれるソフトのこと、ってことを知りました。
これを踏まえて、あの時言っていたことをもう一度反芻すると、なんとなくわかったきがします。 自分の言葉に適当に置き換えて以下に引用(?)してみます。
ETL使ってDWHにデータを入れようとすると、各システムのデータの変換の負荷(開発コスト)が全部ETLに集中しちゃうんだよねー。ETLはそういうことができるツールだって謳ってはいるけど、実際はいろいろと面倒で。だから、ETLに渡す前にデータ変換しておくのがよいと思うよ。今までETLにやらせすぎて失敗してきたし。
うーん。調べたときに見た世のETLツールたちが言っていることは幻想なのでしょうか(T-T)
あのときの方。もし大嘘書いていたら指摘してくださいませm(_ _)m
Seasar ConferenceのPDFが無事なくなりました。
Seasar ConferenceのPDFを5部ほど印刷して持っていって、宣伝してきました。 20人強の参加者だったので、全部無くなることはないだろーなーと思っていたんですが。
興味を持っていただけた方がいらっしゃいまして、無事印刷した全てが参加者さんの手に渡りました。
後は事前申し込みしてもらって、当日着ていただける事を願うのみです。
_ [Seasar] S2JSFで画面の初期化。
html要素にm:actionを指定すると、そのHTMLの初期化処理が記述できる、ということで以下のように試してみた。
<html xmlns:m="http://www.seasar.org/maya" m:action="#{hogeAction.initialize}"> <head> <title>テスト</title> </head> <body> <form> item:<input type="text" m:value="#{hogeDto.item}" /> <input type="submit" m:action="#{hogeAction.execute}" /> </form> </body> </html>
とHTMLを書いておき、
public class HogeActionImpl implements HogeAction { private HogeDto hogeDto; public void setHogeDto(HogeDto hogeDto) { this.hogeDto = hogeDto; } public String initialize() { //項目「item」を「test」で初期化 hogeDto.setItem("test"); return null; } public String execute() { //項目「item」の後ろに「xxx」を付加する hogeDto.setItem(hogeDto.getItem() + "xxx"); return null; } }
なんてアクションを書いた。(HogeActionとHogeDtoとdiconは省略ね。なんとなくわかるでしょ)
で実行するんだけど、思ったように動かない。
私が期待した動作は以下の通りだ。
- このHTMLを開くと、initializeの処理が実行されてitem項目が初期化され「test」と表示される。
- で、適当に文字を書き換えてsubmitすると、executeの処理が実行されてitem項目の後ろに「xxx」がついた結果が表示される。
しかし、何度submitしても「test」としか表示されない。 なんでかなー、と数時間悩みつづけていたわけなんだけど。
submitすると、input要素に指定したm:actionのhogeAction.executeが実行されるけど、その後に、html要素に指定したm:actionのhogeAction.initalizeも実行されちゃって、値が結局初期化されてしまうのが理由だった。
なので、今回のような場合は、このHTMLを表示するアクション(今回の例では作ってないけど)の中でhogeDto.itemの内容を初期化して表示するようにし、html要素のm:actionは使わないようにするべきだったようだ。
Seasar本に「5-3-14 画面の初期化処理」として説明されている手法だったので、今回間違えちゃったような書き方ができると勘違いしてしまったようだ。
ということで、html要素にm:actionを指定するときには私のようなポカをやらかさないように注意しよう。
html要素にm:actionを指定する手法が有用なのは、そのHTML(画面)で不変の内容を処理するようなときだろうか。 セレクトボックスに表示する内容をマスタから取ってくる処理とか。
2006年04月25日 [長年日記]
_ [JavaScript] MochiKit
というものがある。先日メモしたprototype.jsと同じく、JavaScriptのライブラリのようだ。
まだ中身をあんまり見ていないんだけど、テストケースをしっかり書いているのがよい感じ。 JavaScriptテスト手法としても参考になりそうだしね。
これまた次のプロジェクトで使うかもしれないので覚えておこう。
というか、JavaScript用のライブラリ群はいろいろと乱立しているみたい。 どれが良いかはまだなんともいえないけど、動向には注目しておかないとだな。
…と思っていたら、Seasarな人たちもライブラリを作ろうとしているらしい。 右上にバナーを貼っている身としては、ここに注目するべきなのかな。
_ あなたはLinus?それともBill?--草の根無線LAN「FON」が日本でも始動 - CNET Japan
このネーミングセンス、いいなぁ。。。
2006年04月26日 [長年日記]
_ [tDiary] Rastに移行してみたい。
Rastという全文検索システムがあるらしい。
うちのにっきはNamazuで検索できるようにしているんだけど、なんだか検索性能がよくない。 最近自分とこのにっきを検索して過去のTipsを参照することが多いので、 この検索効率の悪さにうんざりしている。 多分、にっき内で使用している単語とNamazuの辞書がマッチしていないせいだとは思うんだけど…。
で、Rastを使うとN-gramという方式で検索するようで、検索漏れがないのが特徴だそうだ。 まぁ、その代わり余計なマッチもしてしまうんだろうけど、母体が少ないのであまりそのことによる影響はないだろう。
今日はもう時間がないので、近いうちに試してみること>近い将来の自分
2006年04月27日 [長年日記]
_ [tDiary] 試してみました。>ちょっと前の自分
うまくいかなかった(T-T)
動作環境のところに書いてある「必要なソフトウェア」にしたがって、Apache Portable RuntimeとBerkeley DBを --prefix=$HOME としてインストールすることはできたのだが、 Rastのconfigureで失敗してしまう。 インストール手順にあるように、--with-apr-config等の設定はしてもうまくいかないようだ。
原因は違うと思われるが、この方もインストールに失敗しているみたい。 でもやっていることは参考になりそうなので、覚えておこう。
あまり時間が取れなかったので詳細に調査できなかった。 時間があるときに改めて試してみること。>もっと未来の自分。
もうしばらくNamazuを使いつづけることにします…。
_ ももたろ [うん。うまく動いているみたいだ。]