2006年4月アーカイブ

Maven管理

| コメント(0) | トラックバック(0)

Maven - Welcome to Maven

便利ですねぇ。
思わずこれまでのプロジェクトをいくつか(といってもいくつかしかないけど)Maven管理に変更してしまいました。

コンパイルやパッケージングはもちろん、プロジェクトサイトの自動生成やチェックスタイルもできる。
いろいろ設定もあるだろうから、これからこちらの方も調べていきましょ。

コマネチ大学数学科

| コメント(0) | トラックバック(0)

昨日の夜にやっていたビートたけしの番組より。

10分間のモデルショーに、カメラ小僧君は1分だけ撮影の機会が与えられました。でもお目当てのモデルも1分しか登場しません。カメラ小僧がお目当てのモデルを撮影できる確率は?

昨日のテーマであるモンテカルロ法による解答シミュレータが404 Blog Not Found:コマネチ大学数学科第2講 javascript hackにて紹介されています。
FireFox以外のブラウザではエラーになるようです。IE、Operaではだめでした。 こちら、修正されておりました。ありがとうございます! 2006/04/27追記)

僕も昨日たまたま目にして見ていたんですが、わかんなかったです。
頭の中でイメージは浮かんでいたんですが、グラフや数式までにはできなかったので、理系の僕としてはくやしいです。

それにしてもたけしは頭良いですね。
今回は女子大生チームの勝利となりましたが、1回目はたけしの勝利だったとか。
解答を考えている間にメモとかが放映されていましたが、論理的に考えていて、ほとんど正解にたどり着いていました。

これからできるだけ欠かさずに見て、くもの巣が生えた頭を活性化しようと思います。

てぃーだ試用

| コメント(0) | トラックバック(0)

Teeda

試してみました。

●MyFacesと違って、日本語が&xxxx;形式にならなくて良い!
MyFacesだと日本語部分が &xxxx;(文字コードによる実体参照)に自動変換される(のは僕だけ?)のが嫌だな~と思っていたけど、Teedaだと普通に日本語として扱ってくれます。
MyFacesはcommons-lang.StringEscapeUtilsを使ってるから?
Velocityのescツールも、内部的にStringEscapeUtilsを呼び出しちゃうので、日本語が&xxxx;になってしまうのがびみょー。
文字化けを防ぐ意味では確実なんだけど、構築時の動作確認などがしにくく、日本語として扱ってくれるTeedaの方がうれしいです。
(この辺、JSFのリファレンス実装はどうなんだろ?)

●エスケープ処理が不十分
テキストエリアで、入力エラーなどがあって再表示する際に、エスケープ処理がなされていません。
ので、</textarea> とか書くと、その時点でテキストエリアではなくなるので、XSSなどのセキュリティホールにつながります。

●カスタムバリデータが使えない?
MyFacesより、tomahawkのバリデータを利用しようと思ったんだけど、うまく動かないようです。
一回目の画面表示の際の初期化処理は走りますが、いざ入力チェックを、という時にはnullになってしまいます。
これは、どこかのdiconファイルに設定を書いておくべきところなのかもしれませんが、設定を書かなければ動かないということであれば、有用性が下がることになりそうです。
(これに関しては回避できるのかもしれませんが、まだやり方がわかんないです。)

他にも、MyFacesと挙動が違う部分があるので、困惑することがあります。

とりいそぎ、こんな感じです。
個人的にはJSFを使っていきたいと思っているので、是非ともいいプロダクトに仕上がって欲しいです。
陰ながら応援させていただきます!

落ち着いてきた

| コメント(0) | トラックバック(0)

今週月曜日から恵比寿のオフィスに引っ越しまして、そろそろ落ち着いてきました。

前のオフィスと比べて格段に広く、同じフロアに他の会社も居ないので気兼ねなく生活できる感じ。
4年後くらいにはこのビルをうちの会社で占めたいなと社長メールは申しておりました。

デスクは窓際で、外を向いて座ることになっているので、目が疲れたら景色を眺めて休めています。
しばらくは近所の食事処の開拓でお昼時を過ごすことになりそう。
今日行った沖縄料理屋さんとか行きつけにしていきたいです。

そんな感じで新しいオフィスが馴染んできました。

お引越し

| コメント(0) | トラックバック(0)

といっても、僕の家ではありません。

実は会社の社屋移転がこの週末にあります。
渋谷から恵比寿へ場所を変えて心機一転です。

ちょっとだけ朝が早くなって、乗り換え1回になっちゃうけど、新社屋は楽しみ。
月曜日は前のオフィスに行かないように気をつけねば。。。

Teeda

Seasarファウンデーションのプロダクトだし~。
ちょっと試しに使ってみようかな。
でもまだベータ版だしドキュメントも少ないようですね。

見た感じ普通にJSFっぽく作るみたいですが、これとS2JSFの組み合わせはいけるのでしょうか。
S2JSFのテンプレート機能はわかりやすいので採用したいです。
組み合わせられるのであれば是非。

3年目

| コメント(0) | トラックバック(0)

思えば4月12日で今の会社の3年目になりました。
今日はマネージャとの考課面談もあって、この半年の反省とこれから半年の目標設定、さらに先の目論見などを話し合いました。

これからの僕の役割としては、いろいろな技術情報を社内に取り込むための仲介役といったところでしょうか。
また逆に社内技術の取りまとめと、場合によっては社外への公開などの動きをしていく予定です。

これからもよろしくお願いします。

「あとで読む」

| コメント(0) | トラックバック(0)

My RSS 管理人 ブログ: 「あとで読む」タグなんてつけてもあとで読みませんから、問題を解決するサービス

シンプルで有用で面白いサービスですね~。
早速登録しましたので、利用してみようと思います。

動作確認されているブラウザは IE6, Firefox, Safari とのことですが、Operaでも一応メールの送信はできました。
ただ、メール送信後にブランクページが表示されることになるようです。
(表示されているエリアがブランクに見えるだけっぽい?)

Velocityの不具合?

| コメント(0) | トラックバック(0)

VelocityViewServletにはキャッシュ機能がついてますが、こちらがうまく動作しないようです。

●WebappLoader.templatePaths に保存されているキャッシュを取り出せない(?)。
VelocityTools1.2より、WebappLoader内にテンプレートのパス情報をキャッシュしますが、こちらへの登録時と取り出し時のパスの指定が違うため、保存されているキャッシュを取り出せないようです。

取り出しの際には、request.getServletPath()+request.getPathInfo()の形式をキーとして取り出す(取り出したパスは、"/"で始まる)ため、キャッシュへの登録キーも "/" で始まる必要があります。

これを回避するには、WebappLader.java : 151行目

-    templatePaths.put(name, paths[i]);
+    templatePaths.put("/" + name, paths[i]);

と変更します(動作未確認)。

●テンプレートに更新があり、キャッシュの再読み込みをする際に、マルチスレッド対応ができていない(?)。
テンプレートの更新を検知した際に、Template#process() ~ Template#merge(Context context, Writer writer)の処理が多重起動した場合、最後のスレッド以外のmerge()が例外を投げます。

VelocityEngineは1つのインスタンスとなるので、process()の始め、

    data = null;

の部分が、他のスレッドにも影響を与え、Template.java : 242行目のif分にてテンプレートが正常に処理されていないものとみなされ、

Template.merge() failure. The document is null, most likely due to parsing error.

との例外が投げられます。
きわどいタイミングですが、JMeterなどで同時アクセスのテストをすると、結構な頻度で例外を投げます。
大量のアクセスのあるサイトなどでは例外が頻発する可能性があります。
(上記のキャッシュ問題が回避されれば、例外出現の可能性はテンプレート更新時の直後の瞬間に限られるはずですが。)

これを回避するには、Template.java : 87行目

-    data = null;

とすればいいと思われます(が、影響範囲の特定はできていません)。

また、
velocity.propertiesにおいて、

webapp.resource.loader.cache = false

キャッシュをオフにする。
ただし、テンプレートを毎回読み込むので、負荷がかかる。

もしくは、

webapp.resource.loader.modificationCheckInterval = 0

テンプレートキャッシュの更新を行わない。
ただし、テンプレートの更新を行うには、VelocityViewServletの再起動をする必要がある。

の指定をすることで回避することができます。

こちらのいずれかは、上記であげたキャッシュの問題も同時に回避できるので、開発時には例外に目をつぶり、結合テスト~本番稼動時にこちらのいずれかの処置をとる、でも良いかもしれません。
どちらの処置をとるかは、運用による(テンプレートを更新するならキャッシュを無効に、しないなら更新を無効に)ので、案件によってそれぞれ検討することになります。

テストケースを書き始めまして、本格的にリファクタリングを開始しました。

パッケージングにむけての準備も開始。
とりいそぎSeasarプロダクトの作法に合わせて、Tigerアノテーションを分離して、定数アノテーションの実装。
もいっこのBackport175アノテーションがよくわかんないので、後回しにすることに。

あとはがしがしテストケース書いてテストしつつ、リファクタリングを進めていきます。
まだまだ微妙な実装や既知の不具合が多いので、少しずつつぶしていきましょう。

西口プロレス

| コメント(0) | トラックバック(0)

今日はお休みの日にしては早起きをして、よみうりランドで西口プロレス公演を見てきました!
よみうりランドは小力フィーバーむんむんでいっぱい人が集まってました。

12時開場、13時開演で5試合の対戦が見れました。
面白おかしい試合から、本格的なアクロバティックな技の数々を繰り出す試合もあって、見ごたえ満点。
お楽しみの小力もジャイアント小馬場とのタッグマッチで無事に勝利!
小力パラパラも楽しかった。

その後そのまま遊園地で遊んで帰りました。
西口プロレスの人たちもしばらく遊んでいたみたい。
途中大衆を引き連れた小力にも遭遇。
さすがにすごいっすね~。

ページスタイル

| コメント(2) | トラックバック(0)

ご紹介が遅れましたが、今使っているページスタイルは、[MovableType3.2用無料テンプレート for StyleCatcher:MovableType幼稚園]より拝借しております。

ステキなスタイルをありがとうございます。

成分解析

| コメント(0) | トラックバック(0)

妖牙のてきとうなぶろぐ:成分解析 - livedoor Blog(ブログ)より。

ueshinの解析結果

ueshinの92%はカルシウムで出来ています
ueshinの6%は歌で出来ています
ueshinの1%はマイナスイオンで出来ています
ueshinの1%は心の壁で出来ています

ふむ。

本名(名前と苗字の間に空白文字入り)

98%は毒物で出来ています
2%は着色料で出来ています

はい、98%毒物です。
それが何か!?

先日より取り組んでいた、Servletベースのフレームワークの β版 が完成しました。
DIコンテナに思いっきり依存しているので、現状ではSeasar2を使う必要があります。
ただし、SpringFramework上で動作させるのもそんなに難しくなさそう。

作成するServletはPOJOで作成できて、かつ、充分な記述力のなかった url-pattern を、正規表現で指定できるようになりました。
このあたりは S2Struts や S2JSF の実装を参考にしているので、S2プロダクト群に慣れている人にはとっつきやすいと思います。

ビューへのフォワードなどの設定は Tigerアノテーションを使うようにしたので、ソース書きながらサクサク設定も組み込んでいけます。
このアノテーション作法はS2Strutsのほぼパクりになってますが。。。w

HogeServlet.java

@Servlet( urlPattern = "/hoge\\.html", parameter = "Command" )
public interface HogeServlet {
    
    @ServletForward( path = "/WEB-INF/jsp/hoge.jsp" )
    public String HOGE = "hoge";
    
    @ServletForward( path = "hoge.html", redirect = true )
    public String POSTED = "posted";
    
    public String doGet();
    
    public String doPostMessage();
    
}

HogeServletImpl.java

public class HogeServletImpl implements HogeServlet {
    
    private HogeService hogeService;
    
    public int getHogeService() {
        return hogeService;
    }
    
    public void setHogeService(HogeService hogeService) {
        this.hogeService = hogeService;
    }
    
    private HogeDto hogeDto;
    
    public int getHogeDto() {
        return hogeDto;
    }
    
    public void setHogeDto(HogeDto hogeDto) {
        this.hogeDto = hogeDto;
    }
    
    private List<Message> messages;
    
    public String getMessages() {
        return messages;
    }
    
    public String doGet() {
        messages = hogeService.getMessages();
        return HogeServlet.HOGE;
    }
    
    public String doPostMessage() {
        hogeService.doSomething();
        return HogeServlet.POSTED;
    }
    
}

こんな感じですね。

ServiceはDIコンテナからのインジェクション、Dtoはフォームデータをセット、messagesはこのサーブレットでの処理が終わったら自動的にrequestの属性として抽出される(JSFちっく)という仕様です。
また、@Servletアノテーションで指定してある parameter値 の名前を持つフォームを見て、実行するメソッドが変わります。
上記の例では、doPostMessageを実行するには、Command=messageをPOSTする、といった感じです。
指定がなければ、doGet()かdoPost()が実行されることになります。

また、ご覧の通り完全なPOJOなので、テストも容易に実行できることになります。

まだβ版なのでこれからリファクタリングして、もう少し盛り込みたい機能があるのでそちらも実装、納得がいくレベルになったらリリースしようと思います。

スタイル変更

| コメント(0) | トラックバック(0)

ブログのスタイルを変更してみました。

素直にいかなかくていろいろいじくってみたので、不具合が出るかも。。。

というわけで

| コメント(0) | トラックバック(0)

Servletベースのフレームワーク構築開始。
といっても単純なコントローラ部のみで、ビューには関与しない予定。

Servletベースなので、組み合わせ自由。
VelocityとかMayaaとかを使ってください。

とりあえずServlet自体をDIコンテナに格納して、インジェクトしながらフォーム情報をDTOから取れるように。
この辺、最近のフレームワークの流行ですな。

Actionの代わりにServlet使ってるので、処理をビューに渡すには今のところRequestDispatcherを使うしかなくて、ということはrequestもresponseも引き継ぐ必要あり、か。
代わりといっては何ですが、指定のパラメータ値から呼び出すメソッドを変えるとか?
GETとPOSTの処理の違いを残したいので、

    doGetCommand(request, response)
    doPostCommand(request, response)

みたいな感じにするか。

そんな感じで続報をお待ちください。

初心に返って

| コメント(0) | トラックバック(0)

一旦ServletでのS2ベース・フレームワーク構築に着手してみることに。
どれもこれも便利なフレームワークなんだけど、痒いところに手が届かない感じがしたから。

そんなに凝ってなくていいんです。
ちょっとした機能が欲しいんです。

桜とLifehacksとWeb2.0

| コメント(3) | トラックバック(0)

桜の写真撮ってきましたー。wiki ページよりご覧ください。
夜になってから、夜桜の写真も撮ってきたので、こちらもご覧ください。

Life Hacks PRESSで紹介されていた、「腰リール」をそろえてみました。

Web2.0本も買ってみました。

今日はこの他に、ウニクロで服を購入し、今日だけで2万円くらいお金使っちゃった。

時は流れ

| コメント(0) | トラックバック(0)

なんだか、世の中時は流れてるんだなぁ。

福岡時代の友人からは9月に結婚のご報告をいただき、元同僚は同棲しているそうな。
みんな、そんな時期なのかねぇ。

JSF?

| コメント(0) | トラックバック(0)

JSF関連本を買ってみました。

S2JSFなら、いろんなコンポーネントをお手軽に組み込めるかも?と思ったので。
デザインは普通のHTMLを維持できそうだし。
とりあえずJSFの基本をお勉強してみて、よさげだったら採用するかも。

Strutsとちがって、入力チェックがビュー側にお手軽に記述できるし、アクションの記述もStrutsより楽チン。
デフォルトのValidatorが少ないのが難点だけど、カスタム作るのはそんなに難しくなさそう。
カスタムコンポーネントはもちろん、Validatorだけのライブラリ作って公開してみるのも良いかもね。

それにしても、情報量が少なく感じるのは使えないから?それともほんとにまだ情報がないだけ?

2010年7月

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

CLOCK

早起き生活

早起き生活
Powered by 早起き生活

読書メーター

あわせて読みたい

あわせて読みたい

ブログ通信簿

MyMiniCity

Yahoo!天気情報

AdSense

サイトストック

フィードメーター

RSS feed meter for http://ueshin.happy-camper.st/

トラックフィード

Webスカウター

スカウター : ueshin@happy-camper.st

TrackWord

Creative Commons License
このブログはクリエイティブ・コモンズでライセンスされています。
Powered by Movable Type 4.2-ja