2009年12月25日金曜日

【C++/CLI】 フォームの形状を変形させる

ウィンドウズのウィンドウ(フォーム)の形状は、四角がお決まりのように思っている人もいると思いますが、そんなことはありません。Windows2000ぐらいから非四角形のフォームを作成することは可能になっていて、.NET言語ではより簡単にできるようになっています。ポイントは、
  • 任意の形状を GraphicsPathに指定
  •  GraphicsPathをFormのRegionに指定
 の2点です。任意の形状を指定するには、
  • パスの形状を表す任意の座標集合を配列に格納
  • GraphicsPath::AddClosedCurveメソッドにより座標集合を指定
となります。ただし、自由な曲線を書くというのは難しいので、GraphicsPathが持っているデフォルトの形状を利用するのが無難です。

以下の例は、AddEllipseメソッドを利用して、楕円形のパスを入手し、フォームを表示した例です。

//ボーダーをなくす(そのほうがベスト)
 this->FormBorderStyle=System::Windows::Forms::FormBorderStyle::None;

//FormのGraphicsオブジェクトの作成
 Graphics^ g = this->CreateGraphics();

//Graphicパス変数の宣言
System::Drawing::Drawing2D::GraphicsPath^ path   = gcnew System::Drawing::Drawing2D::GraphicsPath();
     
//GraphicPathに楕円の領域を指定追加
 path->AddEllipse(g->VisibleClipBounds);

//フォームのRegionにpathを設定
this->Region = gcnew System::Drawing::Region(path); 

上記の例では、FormのボーダースタイルをNONEにしています。ただ、この方法を採用すると、マウス操作によるフォームの操作ができませんから、そこは別途実装してもらうことになります。

2009年12月18日金曜日

MySQLのアップグレード

研究室のLinuxマシンにインストールされているMySQLのバージョンが古かったので(ver4)、ver5にアップグレードしてみた。もともとrpmで入っていて、新しいrpmパッケージをダウンロードしてきてインストールしようとすると失敗する。。。。ふーむ。。。。というわけで、yumコマンドでやってみる。


【準備】
  • mysqldumpでバックアップはとっておく (例:$ mysqldump -u root -p -x --all-databases > mysqlbackup0912.dump)
  • 設定ファイルのバックアップもとっておく (例:cp /etc/my.cnf my.cnf.0912.bak)
【yumでアップデート】
 # yum --enablerepo=centosplus update mysql


これ一発でOKでした。依存ファイルも自動的にとってきてくれるし、yum様サイコー。

2009年12月11日金曜日

もろもろバージョンアップ祭り

GWT2.0
GWT2.0が出たようです。まだインストールしてませんが、個人的に気になっているのは
  • UIBinder
  • Layoutパネルの改良
というところだろうか、、、、特に、UIBinderはインタフェース周りの開発効率が高まる可能性を感じます。ただ、こういうのって、それを理解するのに時間がかかるのがネック。学生に調べさせるのはトータルで見ると効率が悪いので、研究室では今年度はGWTは従来通りのままでいくか、、、、


Netbeans6.8
研究室のデフォルトIDEと化しているNetbeansですが、6.8になったようです。
  • J2EE6対応
  • JSF2.0対応
がメインなトピックのようだ。J2EEについては、、、、正直、勉強不足でわかりません。へー、そうって感じ。いや、軽視してるのではなくて勉強不足なだけです。JSFについては、、、GWTに出会ってしまったからもういまさらって、、、貴方にあうのが遅すぎたによ!って感じです。

Thunderbird3.0
Gmailのおかげで、すっかり出番が少なくなったThunderbirdですが、UIが変わりすぎですね。まあシンプルになったと考えればいいわけですが。なんかブラウザに限りなく近くなったな。

2009年11月8日日曜日

[C++/CLI] mt.exe : general error c101008d: Failed to write the updated manifest to the resource of file

自宅のPCでコンパイルしようとすると、標題にあるようなエラーが出てくる、、、なんかウィルスソフトが関係してるとか、マルチCPUの対応していないとかいろいろ話題になっているようだけど、どうやら、「解決策として、マニフェストファイルの埋め込みをやめる」のがいいらしい。。。

プロジェクトのプロパティで、[マニフェストツール]→[入力と出力]→[埋め込みマニフェスト]を“いいえ”にすればOKな感じ。。。

#実はそれ以外にエラーがでて実行ができないんだけど、それはまた後日、、、

2009年11月5日木曜日

C++/CLIでTwitterクライアントプログラミング~とりあえずつなげてみる~

<注意;現在、OAuth認証が必須となったようですので、下記はあまり参考にならないでしょう。>
Twitterを研究テーマにしようと検討中なので、とりあえずでC++/CLIでのTwitterクライアントを実装しています。C#はけっこうサンプルも載ってますが、C++/CLIはあんまりないので、参考になれば、、、、ま、どっちもだいたい同じなんですけどね。 下記は、WebClientクラスを使ってますが、HttpWebRequestクラスを使う方法もあります。


  String^ result;
    String^ url = "http://twitter.com/statuses/friends_timeline.xml";
    NetworkCredential^ nc = gcnew NetworkCredential(id,password);  
   // WebClientを使うなら、こんな感じ
    try{
        WebClient^ client = gcnew WebClient();
        client->Credentials = nc;

        client->Encoding = Encoding::UTF8;

        array^ data =client->DownloadData(url);
        String^ result =Encoding::UTF8->GetString(data);
        return result;

    }catch(System::Net::WebException^ e){
        //ここでなんらかのエラー処理をする
        System::Diagnostics::Debug::WriteLine("エラー:"+ e->Response->ToString());
        return "";
    } 


2009年10月22日木曜日

ポリコム接続実験

実は、研究室にはポリコムが一台あります。本日、徳島大とポリコム(VSX-5000) の接続実験をしました。カメラは標準のカメラの画質が悪いので、パナソニックのネットワークカメラを接続。これは、三年前に遠隔講義で利用した経験があり ます。今後の利用を想定して、パソコンラックに各種機器をまとめて配置。パソコンの画面を直接送信できるように、ダウンスキャンコンバーターも用意。
で、早速接続。なんかあっさり繋がって、いろいろこれも問題なく見えた模様。あとは、向こうの様子とかをどうするかだな~。まあ、こうあっさりできたのも、以前の経験があるからだろう。こういう実践というのは経験が大切だとあらためておもう。
また、いろいろ研究アイデアもでてきた。やはりこの手の遠隔講義は、実際やってみるとソフトウェアで支援できるところがいろいろあることがわかる。 特にうちが数年前からやってるカメラ制御関係は、奥が深い。ただ、実践する場がないといろいろ話をすすめるのが難しい。机上の空論的な研究はあんまりやりたいくないしね。

2009年10月21日水曜日

GWTでダイアログボックスを表示する

Windowクラス(com.google.gwt.user.client.Window)のメソッドを用います。
  • alert() ・・・  メッセージの表示
  • confirm()  ・・・ 操作の確認(OKボタンのときはtrueを、それ以外はfalseを返す)
  • prompt()  ・・・ 文字列の入力(OKボタンのときは文字列を、それ以外は”null”を返す)

サンプルプログラム
boolean ok = Window.confirm("Windowクラスのメッセージ機能を紹介します");
 if (ok) {
 Window.alert("これが「alert」です。先ほどのものが「confirm」です");
 String string = Window.prompt("「prompt」の紹介です", "ここへ文字を入力します");
 Window.alert("入力した文字は「" + string + "」です");
}
参考URL(APIのページ)

http://google-web-toolkit.googlecode.com/svn/javadoc/1.5/com/google/gwt/user/client/Window.html

2009年10月17日土曜日

Rを本格導入

マイニング系の研究をする上で、Rを本格的に導入する事に決定。今更感が漂ってる気もするが、こういうのは自前で作るよりは、システムに組み込んだ方がはやいし。システムへの組み込み方の目処がついたので、あとは、その適用の仕方という本質のところを議論できる。

また、これらを研究室で使えるように、うまい具合にウェブサービス化することも重要だ。それが結果として研究の持続性を高める。ここのところの実装方法にちょっと悩んでいるところだが、REST系に落ち着くかなー。

2009年10月16日金曜日

Googleが創造したクラウド・コンピューティング ~Google App Engineによる開発のススメ~

京都リサーチパークの「KRPまちびらき20年行事展示会専門セミナー」にて開催された技術セミナー“Googleが創造したクラウド・コンピューティング ~Google App Engineによる開発のススメ~”というのに参加してきました。個人的には、今、ウェブ系システムの実装をGWTに移行中なわけで、GWTはGAE(Google App Engine)での利用を想定しているらしいので、これは参加するしかない!っというわけで。。。。


クラウドコンピューティングの利点は?
雰囲気的にはつかんでいたのですが、今日の話でわかってきた気がします。というかまあ、いわゆる“高いスケーラビリティ”を実現することができるんですね(いまさらな話ですが)。クラウドサーバーってのは。単なるレンタルサーバーとはちょっと違う。これがよくわかる事例として、
“ニューヨークタイムズが画像のPDF変換をするのに、Amazon EC2上に100インスタンスを生成して、24時間で1100万枚の画像から1.5TB分のPDFを作ることに成功した”(Self-service, Prorated Super Computing Fun!
っていう話。つまり、24時間だけ100台のマシンを借りたってことなわけで、こういうことはレンタルサーバーの考え方ではちょっとできないだろうね。これは極端だけど、利用負荷のピークがある一時期だけに限定されるようなケース、、、例えば大学でいえば、履修登録システムなどは、履修登録の期間だけにピークがおとづれる。この一時期だけのために、サーバにお金をかけることが妥当であるのか、、、クラウドなら柔軟に対応できるってこと。

それとスピード。レンタルサーバを借りるのは、おそらく、手続きなので数日はかかると思われる。それが、AmazonとかGoogleであれば数分で利用できる。これもクラウドならではの話だろう。

GAEについて
細かな技術的な話は聞けなかったのは残念だったけど、個人的に見聞している情報を再確認できた。あと、GAEがいいのは、JDOとかJavaMailとかできるだけJava標準とかオープンソースのライブラリの利用を前提にしている点。こういうスタンスは大切だと思う。導入への敷居も低いし。


クラウドで教育システム研究は変わるか?

ウェブベースのシステムに限定した話になるけど、運用面については、もう全部、GoogleとかAmazonにサーバを任せたらいいんじゃない?って思う。セキュリティの面でも、欧米ではすでに銀行が個人情報を含んだデータであっても外部サーバに置くような時代らしいし。あるいは、GoogleとかAmazonに匹敵する教育システム用のクラウドサーバーを国内向けにつくるとか、、、まあ、UPKIイニシアティブがやってるプロジェクトみたいに、分散しているユーザ情報などを連携させるなどして、統合的に管理するような研究や運用が最近は流行っているようだけど。クラウドの場合は、その下のプラットフォームやハードウェアのレベルでの共有になるのかな。学術(大学)用のクラウドサーバができたら、もう各大学にサーバを置く必要がなくなるんだよね。どこかにクラウドセンターがあって、そこに各大学がサーバー類を配置していく、、、そうすれば、結果としてセンター系のスタッフの負担も減るし、コストもダウンする。こういうの誰か考えてないのかなぁ。偉い人にやってほしいんだけど。
 ちなみにうちの大学でもクラウド的なサービスを試験的に始めるらしい。ホントにGoogleとかAmazonとかみたいなクラウドサーバなのかはわからないけど、とりあえず僕はそこにサーバ類を移行する予定。まずは、研究室からサーバの排除だな。学科のウェブサーバもそこに移行しようかと思ったりしてる。

まあ、そんな感じで、クラウドコンピューティングってのは、思った以上に世の中のサーバ運用を変える可能性がある。ちょっと今までクラウドの関心がなかったけど、しっかりおさえておこうかと思う。

2009年10月10日土曜日

Moodleアップデート断念

かなり古いMoodleサーバーを動かし続けていたのだが、いっきに最新版にすることにした。実はバージョンアップがうまくい かなくてそれでためらっていたのだが、もう新規一転、ゼロからサーバーを立て直して、コンテンツはコピペ作戦で、、、という、もう面倒だけどそれしか方法 がない。
原因はわかっていて、データベースの文字コードがUTF-8になった頃に、どうもバージョンアップのコツを理解しておらず、なんか無理矢理データベースをUTF-8にした?かなにかの影響だろう。とにかくそのへんの移行時期に、変なことをしてごまかしていたのが、今、ツケになって返ってき たというわけだ。
個人的には、研究室でこの手のサーバーを自前で用意するのは極力やめようかと思っている。自前でやると確かにノウハウは溜まる。それが意外なところで役に立つこともあるだろう。でも、今のぼくの立場ではそれはレア。というか、メンテナンスに時間をかけるほど余裕がないし。
予定としては、講義内容のアップはMoodleに残しつつ、他の情報はgoogle siteに移行しようかと思っている。実は今も一部のコンテンツを移行している。容量が心もとないので、お金もはらって増やすつもり。研究室内部の情報もGoogle Groupに移行することを検討。もう、うちの研究室は、Googleの兄貴!ついていきますって、まさにGoogleと心中ってかんじ。

2009年10月9日金曜日

Netbeans6.7でのDerby操作につまづいた



#################################################
改訂記事を
Netbeans6.9.1でのDerbyの作成について
に書いてますので、そちらを御覧ください。
#################################################

NetbeansはDBアクセス環境を持っているから便利なんだけど、今日は初歩的なところで躓いたので悔しいから書いとく。

【症状】
Derby上に新規でDBを作成した場合、こことか見ると、"「表」、「ビュー」、「プロシージャ」の 3 つのサブフォルダがあります" とか書いてるんだけど、なんかいろんなスキーマが書いてるんだよね。これは、6.7から変わったのかな?
で、どのスキーマを使うのか、、、ということを考える必要がある。もともと埋め込まれているサンプルのデータベースをみると、データベース名と共通したスキーマが存在している。でも、Netbens上でデータベースを作成した場合それがない。だから、Hibernateのエンティティを自動生成しようとしても、うんともすんともしないという状況になったわけだ。

【解決策】
どうやら、データベース作成時のパスワードがスキーマに関係しているらしい。Netbeans上でDerbyのデータベースを作成する場合、パスワードを設定するとそれがデフォルトスキーマになってしまうようだ。たぶんNetbeansのバグだろう。だから、データベース作成時に
  • ユーザ名、パスワードをともに設定しない
  • ユーザ名だけいれて、パスワードは空白にする
という設定をすれば、APPというのがデフォルトスキーマになる。つまり、APPの中にある「表」のサブフォルダにテーブルを作成していけばいいわけだ。

なんか、この問題のおかげで、えらい時間がかかってしまった。


2009年10月7日水曜日

第20回教育システム若手の会 setoseto2009 開催のお知らせ

今日はイベント情報です。ボクはたぶん、初日に顔だけ出します。

  1990年から始まった教育システム若手の会(当初はITS若手の会)も,
 今年で第20回目をむかえました.
 そこで今回は,若手の会の発足当初を知る平嶋先生の講演と,
 将来の研究へのつながりを考えたディスカッションを企画しました

 今回は,参加者のみなさん自身の研究活動・教育実践について
 じっくり考えながら,過去からの流れの中にどのように位置付けられる
 かなどをみんなで話し合うことを糸口にして,これからの
 教育システム研究で注目されるであろう話題やテーマ,
 将来どんな転換や発展が起こり得るか,あるいは今後の研究や
 実践のヒントなどについて考えていきます.
----------------------------------------------------------------
テーマ:若手の交流と議論が生む教育システム研究の未来

日時:11月13日(金)~15日(日)

場所:広島大学(研究室見学)
    グリーンピアせとうち(研究発表・議論・宿泊)
    〒737-2502 広島県呉市安浦町三津口326-48
    (Webページ: http://www.gp-setouchi.com/

対象者:教育システム関連の若手研究者(自称も含む)および学生

Webページ:http://www.isl.hiroshima-u.ac.jp/setoseto/

----------------------------------------------------------------
スケジュール概要(予定:詳細は後日変更される可能性があります)

11/13(金)
15:00-16:30 研究室見学
 夕食
19:00-      オープニングセッション
           開会のあいさつ
           第20回記念講演(広島大学大学院 平嶋 宗 教授)
           参加者自己紹介・研究紹介
11/14(土)
 朝食
 9:00-10:50 研究発表(ライトニングトーク)
11:00-12:00 議論セッション1「自分の研究の意義の整理」
 昼食
13:00-16:30 議論セッション2「次世代のテーマの創発」
 休憩
17:00-18:00 議論セッション3「結果の発表と全体議論」
 夕食
20:00-      ナイトセッション
           エンドレスセッション
11/15(日)
 朝食
 9:30-10:00 クロージングセッション
 解散
----------------------------------------------------------------

幹事:
 北里大学 高橋 勇
 尚美学園大学 山本 樹
 電気通信大学 太田 光一
 広島大学 倉山 めぐみ
 京都外国語大学 村上 正行

問い合わせ用メール
 setoseto@isl.hiroshima-u.ac.jp


2009年10月6日火曜日

OpenCV2.0をWindowsで利用する

OpenCV2.0を4年生に試行してもらおうとしたら、どうやらライブラリがないとかいう。。。何のことかと思ったら、関連するDLLファイルがデフォルトではWindows用が用意されていないらしい。マジですか?前のバージョンもそうだったかなぁ。そういえば、何かDLLをとってきたような気もする(いや、これは違う話だったかな)。とにかくこういうのはノウハウの記録が大切。
で、解決策ですが、cmakeというツールを用いれば、各種DLLが自動的に作られるらしい。その手順を大雑把に書くと
  • cmakeをインストール
  • OpenCVのビルドディレクトリを指定してConfigureを押す
  • 赤いエラーがでたらもう1回Configureを押す 
  • Generatorボタンが有効になったらGeneratorボタンを押す
 以上の手順で、DLLを作成するためのVSプロジェクトがビルドディレクトリに作成されます。つづいて、
  • ビルドディレクトリに移動し、VSプロジェクトファイルを開く
  • debugモードで実行ボタンを押す
  • 10~20分くらいひたすらコンパイルが行われ(気長に待ちましょう)、無事デバッグ用DLLが作成
  • releaseモードで実行ボタンを押す
  • 10~20分くらいひたすらコンパイルが行われ(気長に待ちましょう)、無事release用DLLが作成
本記事をアップした直後に気付いてあわてて追記してますが、コンパイルは、debugモードとreleaseモードの両方をやって、それぞれのDLLを作成しておかないとまずいようです

以上の手順で作成されたDLLやLIBファイルをOpenCVのディレクトリに適時移動させてください。DLLやLIBはビルドディレクトリ内のbinとlibディレクトリにあります。

実はコンパイルの際に、omp.hがFile Not Foundであるというエラーが出る場合があります。 これは、OpenMPに関わるファイルらしく、"Windows SDK for Windows Server 2008 and .NET Framework 3.5"に入っているらしいです。

このエラーに関する解決策は

  • 該当のSDKをインストールして解決
  • Generatorボタンを押す前に、OpenMPに相当する記述のチェックを外す
 の、どちらかです。ボクは思わず後者を選んじゃいましたが、よかったのだろうか。。。前者がたぶん正攻法だと思います。

参考サイト


2009年10月5日月曜日

致命的: java.lang.OutOfMemoryError: PermGen space が出た場合の対処

glassfishでHibernateを使ってると、java.lang.OutOfMemoryError: PermGen spaceというエラーが出てしまったのだが、glassfishの設定ファイルを以下のようにすればいいらしい。

\domains\domain1\config\domain.xmlファイルにおいて
-XX:MaxPermSize=256m
と追記する。

ちなみに、Tomcatの場合も同様の処方箋でいいらしいです。ただし、設定ファイルは違いますけどね。

2009年9月26日土曜日

GWT-RPCでのAsyncCallbackの書き方考察

GWT-RPCでのクライアント側の処理プログラムの書き方は、正直気持ち悪い。

AsyncCallback callback = new AsyncCallback(){
 @Override
public void onFailure(Throwable caught) {
 results.setText("Server Response Error");
serverResponseLabel.setHTML(caught.getMessage());
}
@Override
public void onSuccess(String result) {
  results.setText(result);
}
};

RS.Method("hello", callback);

サンプルで挙がっているような書き方は、上の書いたように、関数に対応したcallback 変数を定義しているわけだが、これだと関数が増えた時にめんどうだ。どれがどの関数に対応しているのかがわからなくなってしまう。そこで、以下のような書き方にしたほうがいい。

RS.Method(nameField.getText(), new AsyncCallback() {
 public void onFailure(Throwable caught) {
 results.setText("Server Response Error");
 serverResponseLabel.setHTML(caught.getMessage());
}
@Override
public void onSuccess(String result) {
 results.setText(result);
}
});


ま、これは好みの問題かもしれないけどね。

2009年9月25日金曜日

GWTでのデータクラス設計の際の注意事項

GWT-RPCでは、データの授受を行うデータクラスを定義し、それをサービスメソッドの引数ならびに戻り値に設定することで、複数のデータをまとめて授受することができます。

その際、若干不確定情報がありますが、以下の注意が必要です。
  1. かならずPOJOにしてください
  2. com.google.gwt.user.client.rpc.IsSerializable インターフェースを実装する
  3. アノテーション等の記述はできません
  4. 定義したクラスは、かならずclientパッケージに入れてください。
2と4は重要です。2について補足しますが、例えば以下のようにします。

import com.google.gwt.user.client.rpc.IsSerializable;

public class user implements IsSerializable {

private Integer id;
private String name;

public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}


2009年9月19日土曜日

GWTとHibernateとの統合でちょっと不都合なこと

サーバー側でデータベースアクセスをするときはHibernateを使っているのだが、Hibernate用のBeanをGWTでのRPC関数の引数に利用することができない点でちょっと不満。HibernateのBeanは基本POJOなのだが、ボクはHibernateアノテーションを記述しているので、その記述のところで引っかかっている感じ。アノテーションを書いちゃうと、GWTのクライアント(つまりJavaScript)で扱える形式じゃなくなってしまうわけです。アノテーションを使わずに、マッピングをがりがりXMLで書いていけばいい気もするが、それだと面倒だし。。。

今回の話は、クライアントからの送信時のデータ形式が、テーブル構造とたまたま一致したからの話かも知れない。こういうケースはレアかな。今作っているシステムはまさにそれなので、なるべく楽したいわけだが。これだと、クラス構造が全く同じ2つのものを書いて、データをいちいち渡さないといけない。。。なんか面倒だなぁ。なるべく手間がかからないように工夫が必要な感じだ。

GWTでプログラムやっているとプログラムがたくさん増えてきた。サービスを1つ作るだけでファイルが3つできることになるからかもしれないけど、、、研究室では、ファイルのパッケージ構造のルールを決めておかないといけないねー。

2009年9月17日木曜日

GWT導入決定

先日の日誌では、Faceletを使うとか書いてましたが、急きょ逆転してGWTの導入を決定しました。GWTの存在は開発が好きな人は知っていると思いますが、これは想像以上にワクワクするフレームワークです。GWTじたいは3年くらい前から出ていましたから、今さら感もありますが、ほんと、もっと早くこれに手を出していれば、、、という後悔をすごくしています。

GWTの特徴とは、、、という話になると、「JavaでJavaScriptを生成する」という話を良く耳にしますが、そんなレベルのものではありません。これは、Webアプリケーションの考え方を根本的に覆す画期的なフレームワークと言えます。なんかべた褒めしてますが、人によって好き嫌いがある、、というか違和感を感じるかもしれません。このフレームワークの良さを理解するためには、従来の「Webアプリケーション」というものの固定観念をあっさり捨て去る必要があります。僕もこの固定観念があって、最初、GWTを触った時は、いまいちわかりにくて、メリットがわからなかったんですけどね。JavaScriptを直接描いたほうがいいんじゃない?って思ってましたし、、、今の僕には、このGWTの良さがわかってしまったので、もう、JSFとかFaceletとか、ICEFaceとかStrutsとか、、、もうどうでもよくなりました。そんなのいらないですもん。GoogleがなぜGWTなんか考えたのか、、、わかっちゃいました。

とりあえず、うちの研究室では、ウェブアプリのプロジェクトはすべてGWTに移植します。映像系のC++を触るプロジェクト以外は、すべてGWTでいきます。今、楽しくてこのGWTプログラムばかりやってます。Google万歳!

P.S
JSF、とくにFaceletについては、ひょっとするとGWTと組み合わせる余地があるかもしれないとは、ちょっと感じてますが、、まあいまのところはないですね。

2009年9月3日木曜日

Faceletsの導入を検討中

うちでは、ウェブアプリの開発には昔からJavaを利用してまして、近年はJSFフレームワークを導入しています。が、JSFっていまいち盛り上がっていない。それに、昨今のAJaxに代表されるように、ウェブアプリはクライアントサイドでのJavaScriptでの処理がメインになりつつあります。こういった動向についていくには、JSFはちと不向きなわけです。
ただ、JSF2.0になると、AJaxを意識したモデルになるとかなんとかかんとか噂されてるようですが、そういったJSFの今後の方向性に、Faceletsというのがあるようです。

で、遅ればせながら、Facelets入門にあるプログラムを試してみました。こういうのは、やっぱり実際に手を動かしてみないとわからないものですね。印象としては、
  • JSF独特のタグを利用しなくてもよい
  • テンプレート(HTML形式)を作っておいて、それに対して、動的処理を拡張できる
というのがあるようです。思想はTapestryから来ているようです。HTMLでテンプレートを作れるから、ページデザイナーには優しいのでしょう。また、Beanも特別なクラス継承を必要とするわけではないようです(これは近年の流れですね)。たぶん、この作り方だとJavaScriptとの相性もいいはず。変なタグがないですからね。そんなわけで、研究室のJSFプログラムを、Faceletに移行しようかと検討中です。ただ、動的なページの部分をどのように書くのかといったことがまだ勉強中なわけですが、おそらくJSTLを使うんだろうと思います。

2009年8月31日月曜日

研究BLOGはじめました

えー、どうもこんにちは。ブログはいろいろやってるんですが、今回こういったサイトを開設したのは、「そろそろマジメに研究してみない?」という自分へはっぱをかけるためです。ブログを書くってのは個人的には好きなほうで、いろいろ書いているわけですが、本職である「研究」についてのブログがない。「アウトプットは大切だー」とか、余所では書いておきながら、本職について書いてないじゃんってこと。もちろん、研究者にとって重要なアウトプットは論文なわけですが、日々の研究のアウトプットも大切なんじゃないかなーという気がしてます。一番の効果は、研究に対する日々の意識づけです。私は私学にいますので、どちらかといえば、日々は「教育」で手いっぱい。だけれども、「教育」だけでは認められない世界です。教育や学内の雑務の中でいかに研究時間を確保するか?というのが、永遠の課題なわけです。で、今までは「時間がない、時間がない」と逃げてきたわけですが、研究時間は「作るもの」。じゃあどうすればいいか、どうすれば「教育」に寄りがちの自分の気持ちを「研究」に戻すか、、、その1つの方略として、「研究ブログを書く」という結論に達しました。ブログを書くにはネタがいります。ネタを探すには研究時間をもうけるしかない。という戦略です。という、ブログ好きの自分の嗜好を利用して研究できるか、、、ちょっとがんばってやってみます。気長にお付き合いください。