タグ

ブックマーク / d.hatena.ne.jp/t_yano (20)

  • 互いに関連のないオブジェクトを1つのインターフェースにまとめて共通的にアクセス可能にするライブラリを作ってみた - 矢野勉のはてな日記

    Javaもともとやりたかったことは、 あるオブジェクト(インスタンス)がすでに手元にある そのオブジェクトのクラスは何らかの理由で継承不能 そのオブジェクトの一部メソッドをオーバーライドしたい そのオブジェクトにメソッドを1つ足したいという、JavaScriptならすぐにできちゃうことがしたかった。で、これって、オーバーライドしたいメソッドと、追加したいメソッドだけを持ったあるオブジェクトAを用意して、メソッド呼び出し時に該当メソッドの時だけAに委譲しちゃえばできるよね、と思った。他のメソッドはすべてもとのオブジェクトに委譲する。 で委譲コードを書いてみても、すんごいめんどくさい。たくさんのメソッドを定義して、ただ委譲するだけのコードをかかないといけない。でCGLibあたりにそういうのがあるだろうと思って見てみたのですが、どうもないみたい。なんかありがちな要望だと思ったんですが、もうちょっ

  • WicketのCPU負荷について調べてみた - 矢野勉のはてな日記

    Java, Wicketid:s-ishigamiさんがWicketのCPU負荷について調べていて、IMarkupSettingsのsetAutoLinkEnabled(true)をしていると負荷がとても上がって困るって話でした。いやいやそれはおかしいと思って調べてました。...と言ってる間に、id:s-ishigamiさんも継続調査していて似たような方向に調査が向かっているようですが、せっかく調べたので書いておきます。 もとねた:WicketのCPU負荷 - s-ishigamiの仕事日記(WicketでECを作る道のり)WicketのCPU負荷〜その2〜 - s-ishigamiの仕事日記(WicketでECを作る道のり)WicketのCPU負荷〜その3〜 - s-ishigamiの仕事日記(WicketでECを作る道のり)WicketのCPU負荷〜その4〜 - s-ishigamiの

  • Google App Engine上でWicketを動かす - 矢野勉のはてな日記

    Java, WicketGoogle App Engine for Javaのアカウントを取っておいたので、Wicketが動くかどうかチェックしました。 Wicketでは1.3の途中から、セッションストアがSecondLevelCacheSessionStoreという、ワークファイルに情報を書き出すタイプに変更になりました。ここがネックになるだろうと思っていたら、やっぱりファイル作成は規制されているとのこと。 で、HttpSession上にページ情報を格納する「HttpSessionStore」に切り替えてみたら、普通に動きました。 アプリケーション・クラスの設定はこのような感じです。 public class WicketApplication extends WebApplication { /** * Constructor */ public WicketApplication(

  • WicketとSeasar 2を統合する「wicket-seasar2」ライブラリを作りました - 矢野勉のはてな日記

    Java, Wicket主についったーでid:yuripopがWicketとSeasar2を統合しようとしてウンウン悩んでいるのをみて、いっちょやるかと思ってやった次第。 Seasar 2とWicketの統合にはS2Wicketというライブラリが既に存在していて有名なんですが、このS2WicketがWicket 1.2系統(org.apache.wicketにパッケージ名が変わる前)に向けて作られているっぽく、最新のWicket 1.4-rc1では動かないんですね。 Wicketのページクラス内のフィールドに値を持つ場合、それらのオブジェクトはすべてシリアライズ可能である必要があります。これは、ページはHttpSessionに格納されたり、2次キャッシュ・ファイルに保存されたりするためです。そのために、単純にDIで値を放り込んでもダメなんです。 Wicketでは、この問題を「フィールドには

  • Javaフレームワークの比較検討資料公開 - 矢野勉のはてな日記

    Java仕事で各種フレームワークを比較検討したので、比較用に作った参考資料を公開します。ちなみに現在私は、ドワンゴさんの社内システム開発をお手伝いしてまして、その一環で調べたものです。会社資料じゃなく、私の資料ということでブログで公開してよい、むしろしとけ、とのことなので公開しときます。 今回の案件向けにアプリケーションを画面層コンテナ層データアクセス層に分けて、それぞれフレームワークを選ぶのが目的です。コンテナ層はDIコンテナのうちいずれか、データアクセス層はO/Rマッパーを選ぶことになります。 太枠の範囲が選定対象です。よくに出てくる杓子定規な階層図とは変えてあります。 次のものを比較検討しました。画面層SAStrutsApache Wicket(ほかにもTeedaとかClick Frameworkとかももともとは候補にあったが、調査が追いつかないので二つに絞った)コンテナSeasa

  • Wicketで作られたCMSフレームワーク「BRIX」 - 矢野勉のはてな日記

    Wicket, JavaWicketメーリングリスト(英語)でWicketコミッタであるIgor Vaynberg氏が告知してました。brix-cms - Google CodeすべてWicketをベースに作られているためXMLレス、「Power versus Complexity(力vs複雑さ)」をテーマにWicketらしく「使いやすい」と同時に「デザイナがデザインを徹底的にいじくり回せる」を目標にしているようです。コンテンツ管理にはApache JackrabbitJava Content Repositoryを実装したもの)を使っているそうです。Using Apache Wicket as the technology to serve the content makes it very easy to embed custom, stateful Wicket component

  • 真夜中のハック遊び - ゆの in Javaを巡って - 矢野勉のはてな日記

    Java ゆの in Javaがまったくのゼロからあっという間にすごい量にふくれあがっていったのはJavaプログラマとして素直にうれしいです。Javaでハック遊びってあんまり流行らないみたいなんで。「ゆの in languageとは - はてなキーワード」をみると、ずいぶん増えましたねー。 ゆの in Javaが出るまでの経緯とかをid:Nagiseさんが時系列にまとめてくれてます。 ゆの in Javaにみるアイデアの連鎖 - プログラマーの脳みそ ゆの in languageが流行り始めたころからゆの in Javaは考え始めていたのだけど、解法がなかなか見つからないというか、思考のブレイクスルーになかなか達しなかった感じでした。ここに書かれている通り、そこに弾さんが刺激的な記事を書いたので、私も「こりゃあやるしかないな...」という勢いがついたところはあります。それで解法を探し出して

  • ゆの in Java - 矢野勉のはてな日記

    Java確かにJavaゴルファーとかゆの in Javaとかはあまり見かけないけど(後者は演算子オーバーロードできないのが痛いな)、404 Blog Not Found:make love || halt # 言葉遊びがない言語なんて... public class Yuno { static final int X = 1; static final int _ = 1; static { Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { public void uncaughtException(Thread t, Throwable e) { if(e instanceof AssertionError) System.out.println("ひだまりスケッチx365

  • Wicket 1.4でのGenerics化にて大論争 - 矢野勉のはてな日記

    Wicket, Java Wicketの書籍が世に出るのは少し伸びそうです。というのも、先日ここに書いた通りWicketは次に出るWicket 1.4をベースに書くことに決まっています。技術の寿命は対象バージョンの寿命分しかないので、1.4が見えている状態ならそりゃあ1.4向けに書くでしょう。その1.4で、いま技術的な大議論が起こっているんですね。 Wicket 1.4は、基的には1.3にgenerics対応を加えただけのものです。もともとGenerics対応は1.3の次に出る1.4(現在の1.5)で行われることになっていましたが、Generics化するだけでも十分に価値があるのではないかとの投票の結果、1.4は「1.3+Generics」、もともとの1.4は1.5にする、という結論が出ました。 当初1.4対応はそんなに難しくないだろうと予想されていて、数週間でベータリリースなどと言

    scorelessdraw
    scorelessdraw 2008/06/26
    ジレンマ
  • Javaの匿名クラスを使ってかっこよくオブジェクトを初期化するテクニック - 矢野勉のはてな日記

    JavaJavaの匿名クラスはすごくかわしいかわいい技術でいろいろキモイことができます。匿名クラスは基的に「サブクラス生成のための特殊記法」であって、クロージャではありません。匿名クラスとクロージャを対比して云々するのはそもそも誤りです。なんならクロージャでサブクラス作ってみなよってことです。匿名クラスによって、Javaではなにかのサブクラスを任意の場所で即座に作り出すことが出来るんです。なにかのクラスのメソッドを三つほど書き換えた新しいクラスをさっと作れるのは、なかなか面白い機能ですよ。 その匿名クラスを利用したカッコイイ(でも使うのは躊躇されている)記法として、次のようなのがあります。(追記:この用法はヨシオリさんところで見たのが最初です) List list = new ArrayList() {{add("a"); add("b"); add("c");}}; Javaには「初期

  • IPA討論会の現場が@ITの記事と全然違っている - 矢野勉のはてな日記

    雑談, メモ立て続けに自分用メモ兼情報共有用にブログに書いておきます。 ひがさんのブログ経由で知ったのですが、IPAX 2008を見に行ってきたというブログ記事を読むと、@ITでの「「10年は泥のように働け」「無理です」――今年も学生と経営者が討論 − @IT」と全然雰囲気が違って見えるんですよ。@ITの記事よりもちゃんと現場の雰囲気を伝えてくれているように思います。正直必読かと。 実際、同じ討論会の記事でも@ITの記事ではなくてITProのほうが記事としてはまともで、プログラマ→エンジニアPMという時代遅れなキャリアパスを提示した西垣さんにしでも、実際には「未踏でスーパークリエータに認定された技術者が3人Googleに就職したが,それはいいことだと思っている」「IT技術者はやりがいがある仕事か」---学生とIT産業のトップが公開対談:ITproとか天才プログラマのように技術を極めるので

    scorelessdraw
    scorelessdraw 2008/05/30
    デスマが雇用を創出しているんですね
  • JavaでRubyのfixtureみたいなことをしよう - Fixtureを作りました - 矢野勉のはてな日記

    Java Ruby on Railsのfixtureという機能は有名なので皆さんご存じかと思います。JavaでいうJUnitのTestCaseクラスに、 fixture :test と書くだけでtestというテーブルにtest.ymlという名前で用意されたテストデータが投入されるという機能です。 同じような機能はJavaでもかなり以前からDbUnitとして提供されてきましたが、使い勝手という点で圧倒的にfixtureが勝っている。というのは、DbUnitは汎用的なライブラリなので使うためにはDBへの接続定義をコードで書いたり、ロードするxmlファイルを探したり、といろんな手間があったのです。 DbUnitはデータベーステストのデファクト・スタンダードなのでJavaプログラマなら一度くらいは使ったことがあるかと思います。私も仕事柄いろんなところのアプリケーション開発環境を構築するのを手伝いま

    scorelessdraw
    scorelessdraw 2008/02/23
    YAMLを使えるテスト支援
  • Mavenのパワーをthe rest of usに解放する - mvnbeans 1.0 SNAPSHOT公開 - 矢野勉のはてな日記

    Java2割増くらいで大げさに書いたけど8割くらいは気です。 maven2はjava最高のビルドツールです。コマンド一発でビルド、テスト、jarのアップロード、サイトの更新を行ってくれる。最も強力な力は、あらゆる依存jarを連鎖的に解決してくれるところです。もし私のプログラムがある一つのjarに依存しているとして、その一つのjarが5つのjarに依存し、そのそれぞれが2つの依存jarを持っていたら。 maven2が現れるまで、私たちは一つずつそれらの依存jarをすべて手動でダウンロードしてきました。でもmaven2はたったひとつの依存jarを元にして、すべての依存jarを連鎖的に走査し、すべてを一括でダウンロードしてくれる。 そのmaven2も登場からもうかなり立っているのに、「スタンダード」にまではなっていないんですね。なんでだろう。 要するに、maven2は敷居が高いんです。 mav

  • Wicketでのページ遷移におけるリダイレクトとセッション依存ページ遷移の使い分け - 矢野勉のはてな日記

    Java, Wicket過去の日記のコメント欄でWicketにおけるリダイレクト制御について質問戴いて、次のチュートリアルで書こうと思ったけど、あまり引っ張ることでもないのでここで書きます。この日記はそのうち「Wicket 101」としてチュートリアルのサイトにコピーすることになると思います。 Wicketでは次に遷移するページはComponentクラスのsetResponsePage()にPageオブジェクトを渡すことで設定します。setResponsePage()は3種類にオーバーロードされてます。 public final void setResponsePage(Page page) public final void setResponsePage(java.lang.Class cls) public final void setResponsePage(java.lang.C

  • GuicyなWicket - Javaで一番ホットなフレームワークが統合できる! - 矢野勉のはてな日記

    Java, Wicket いつか誰かがやると思ってましたが、ついにWicketのGoogle Guiceサポートが開発されたようです。Click Frameworkと並んで一番ホットなJavaウェブフレームワークであるWicketと、GoogleのDependency InjectionフレームワークGuiceがついに統合できるわけです。 Wicketには早くにSpring拡張機能が追加されていましたし、国内ではよういちろうさんによるS2WicketでSeasar 2もサポートされています。そこにGuiceが加わる。 Google GuiceはDIコンテナとしては異色の存在です。そのポリシーには「型安全性重視」とか「anti-static」とか書いてますし、あるいはXMLではなくてJavaコードでインターフェースと実装クラスを結びつけるというやり方を見ても、とてもJava寄り。最初にその発

  • Wicketで作られた新しいブックマークサービス「Thoof」 - 矢野勉のはてな日記

    Wicket, Java テッククランチでも紹介されていますが、新しいブックマークサービス「Thoof」です。Wicket大好きの私としては、かのWicketコミッタJonathan Lockeがシニア・アーキテクトとして開発に参加している、Wicketで作られたサービス、と紹介したいところです。といいますか、それが理由で使ってみようと思ったのが正直なところ。 ちなみに私がThoofに気がついたのは、WicketコミッタのMartijn Dashorstさんがブログに書いたから。Wicket Diaryhttp://martijndashorst.com/blog/2007/06/16/wicket-based-thoof-launches-private-beta/Thoofは「ユーザーが好みそうな新着記事を人の過去の行動を手がかりに選んで見せるサービス」です。はてなブックマークにも、

  • Javaウェブフレームワーク「Wicket」の使い方 - 矢野勉のはてな日記

    Java, Wicket 長らく更新してなかった『Javaウェブフレームワーク「Wicket」の使い方』の「RSS Readerを作る」シリーズのその2を公開しました。「RSS Readerを作る」シリーズはこれで簡潔です。 チュートリアルのソースはここからダウンロードできます。Netbeansのプロジェクトを圧縮してあります。RSSReaderExample.zipというファイルをダウンロードしてください。 また、以前にいろいろ公開した時に使ったCVSにもコミットしました。こちらの日記を参考に、「RSSReaderExample」というプロジェクトをチェックアウトすれば全ソースを見ることが出来ます(上の圧縮ファイルと同じものですけど)。 もたもたしている間にWicketはApache Wicketになって、バージョンも1.2.3から1.3 incubating-bata1まで来ました。で

  • Apache Wicket 1.3.0-incubating-beta1 がリリース - 矢野勉のはてな日記

    Java, Wicket Wicket 1.3です。1.3はついにApacheブランドで出る最初のバージョンです。パッケージ名がすべてorg.apache.wicketに指し変わっていますので移行が必要となります。 ところで1.3は1.2にパッケージ名変更等を行ってApacheのリリース条件を満たしたもの....ではありません。結構重要な変更が入っているのでこれから作る人は1.3を使ったほうがいいかも。 一番大きいのは、Wicket体がServletではなくてFilterになったこと。これによって今までWicketでは出来なかった、「コンテキスト・ルート以下すべてをWicketに処理させる」つまりは「マッピングに /* を使う」ってことが出来るようになりました。これは結構よいですよ。 ServletがFilterに変わったからといって、ソースにあまり影響はありません。web.xmlでで定

  • Wicketはライトウェイトなフレームワークじゃない。でも気持ちがいい。 - 矢野勉のはてな日記

    Java, Wicket Wicketの紹介ページのタイトルを書く時、最初は「Java軽量フレームワーク『Wicket』の使い方」としようと思ってました。いろんなところで「Lightweight framework」と呼ばれていたから。でも実際に書いてみたらどうもしっくりこない。軽量....? なんか違う....。なのでお茶を濁して「Javaウェブフレームワーク」としたんですよ。 道具が手に合うようなしっくりさを持ったフレームワークなのに、「軽量」というとなんか違うという感覚が自分でもよく分からなかった。でも最近オライリーのOn JavaにてWicketのレビューが出てたのを読んで、やっぱりそうか、と思いました。 Wicket - (another) Java Web Framework: My First Impressions レビュー自体は比較的長めです。でも結構的を射たレビューです

    scorelessdraw
    scorelessdraw 2007/01/18
    「WicketはJavaの機能を使ってJavaプログラマにオブジェクト指向のウェブ開発環境を提供するのが目的のフレームワークであって、それが実現すれば必然的にエンタープライズでも使えるでしょ、という考え方なんじゃない」
  • そろそろRuby/PythonのようなLLを褒めるのにJavaを貶めるのは止めません? - 矢野勉のはてな日記

    Java, Ruby もうURLを失念するくらいいろんなところで言われていることですけど、LL(Lightweight Language。RubyPython,Perlのような軽量なスクリプト言語)との比較で出てくるJavaコードは、「普通こんなコードかかないでしょ」というくらい冗長な場合が多い。 Rubyでコードが簡潔に書ける!ということを表す時にJavaを引き合いに出すのはいいんですけど(引き合いに出す相手としては間違ってないと思います)、Javaのこんな長いコードがRubyではこんなに簡潔に!とか言う時のJavaコードを恐ろしく冗長にして比較するのはそろそろ止めましょうよ。そんなことしても逆に一部では反感を買っちゃうでしょ。そんなことしなくったって、LLはもちろんJavaよりも簡潔に書けるんですから、ひねり技はいりません。そんなことJavaプログラマだって普通に認めてることですから

    scorelessdraw
    scorelessdraw 2006/12/17
    サンプルコードって難しいな
  • 1