タグ

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

  • AnnotationProcessorを利用して楽してintrefaceを徹底活用したプログラミングをしようぜ - 矢野勉のはてな日記

    Java, Advent Calendarこの記事は Java Advent Calendar 2011 の一環で書いてます。詳細はこちらを参照してください。昨日の id:ttmmrr さんの記事はこちら (2012年の公休日とか)JTableのフィルタリング - ttmmrr(@o_tmr)の日記たまたま、いま作ってるプログラムで、Javaプログラマに役立ちそうな部分があったので、その部分を抜き出して公開することにしました。今回はその紹介をしようと思います。 「インタフェースこそが型である」世界Java: The Good Parts というがありまして、その3章において、(私の理解としては)Javaにおいて、型とはインタフェースのことあり、クラスは型に実装を提供するものであり、すべてのクラスはインタフェースを備えるべきだ、とかいう意味の論が展開されてます。インタフェースはクラスから型

  • コンピュータの性能とか実用とか - 矢野勉のはてな日記

    雑談ほんとうはAppleと私みたいなことを書こうかと思ったけど、なんか陳腐なことしか書けないのでやめた。どうせ陳腐ならってことで、雑談を書く。今この文章は、Macintosh SE/30という、ものすごく古いマシンで書いているのだけど、このマシンを中古で入手して修理してから、今まで数ケ月使い続けていると、コンピュータの進化した部分とそうでない部分とを感じる。まず、「インターネット」。こいつがすべてを変えたんだな、という実感。SE/30でもブラウザでウェブページを見たりできるけど、びっくりするくらい遅い。事実上使い物にならない。でも、このマシンが出たちょっとあと、私は同じくらいのスペックのMacで、ウェブを見ていたんだ。でも今はもう無理だ。GPUとかマルチコアとかマルチスレッドとか、そういう細かいけど重要な改善が、いまものすごい快適なブラウジングに貢献していることを思い知らされる。もうひとつ

    monjudoh
    monjudoh 2011/10/20
    『今この文章は、Macintosh SE/30という、ものすごく古いマシンで書いているのだけど、』
  • Glassfish v3.1が予想よりもすごかった - 矢野勉のはてな日記

    Java, glassfishこないだ、「Java FX & GlassFish合同勉強会」に参加してきました。個人用にVPSを契約していて、まあ普通にApache HTTP Serverとか入ってたんですが、結局私の使う機能ってほとんどJavaアプリケーションなので、ほとんどのリクエストはAJPでTomcatに転送してたんですよ。httpdはTomcatに転送するためだけにいるような状態。でいろいろ要件があってJMSとか使ったら楽なのに、というケースがあったりで、VPS移設に伴い、httpdを停止して、Glassfish v3に80番ポートを監視させることにしました。Glassfish v3はNIOフレームワークであるGrizzly Kernelベースってことで、スレッド爆発はしなさそうなのと、これはまだ計ってないけど、以前TomcatのNIO Connectorでテストしたときと同じく

    monjudoh
    monjudoh 2011/01/04
    アプリケーションバージョニングと自己増殖クラスタリングが凄い
  • Javaのラムダ式導入に関する最新提案の雑なまとめ - 矢野勉のはてな日記

    java7月頭に,Brian GoetzがJavaにおけるラムダ式導入に関する最新提案のドラフトを出しました。State of the Lambda 私はこの提案書と,提案書を元にした英語記事を読んだだけですが,Twitterで話していると,23日くらいにこの提案を元にしたソースがJavaのソースリポジトリにコミットされたらしい。ただし,中ではまだ議論続発してるらしい。ちなみに英語記事はラムダについての連続記事の4回目で,5回目ではWicketでラムダ式を使うとどうなるか,という考察が載っています。提案書のラムダ式とWicketの非整合部分についての考察で,Wicket好きの人は読んでみてもいいと思う。あと,空コンストラクタがないクラスについて提案書は明確なところ書いてないよね,みたいな指摘も。せっかくなんで,最新提案におけるラムダ式実装をまとめておきます。いままでのあらすじ最新提案書では

  • Wicketのページ用HTMLファイルの場所をアノテーションで指定できるライブラリを作った - 矢野勉のはてな日記

    java, wicketタイトル通り。WicketではHTMLファイルの場所はclassファイルの場所と同じ、ということになっています。クラスパスから読みたくない場合は、Applicationクラス内で ((WebApplicationPath)getResourceSettings().getResourceFinder()).add("任意のパス"); とかすることで、所定のフォルダから読むようにもできるのですが、それでも、ファイルの完全パスがクラスの完全名と同じになる、という点は変わらないので、当に任意の場所から読めるわけでもありません。 しかしデザイナに依頼してHTMLファイルを作ってもらって、それをそのまま使いたい場合に、仮に各ページにHTMLファイルの場所を書かなければいけなくなったとしても、任意の場所にあるHTMLファイルを使いたい!ページごとに細かく指定したい!ということ

  • AirMac ExpressでRemoteが繋がらないとかAirDisplayがつながらないとき - 矢野勉のはてな日記

    最近、室内の無線を11nに移行するためにAirMac Expressを買った。それまではUFO型のやつを使ってました。ところがこのExpressが、無線だとまったく設定できない。「AirMacユーティリティ」でAirMacが認識されないから。結局LAN直接さして設定することで無理やり使ってましたが、なんか遅い…他にも せっかくAirTunesのためにExpressにしたのに、よくスピーカーから切断される。iPhoneからiTunesを制御する「Remote」がMacとつながらない 高い金出して買った、iPadを外部ディスプレイ化する「AirDisplay」がつながらない(なぜかMacを優先接続するとつながったりする)といった事象で悩んでました。 ディスカッションボードとか英語情報とかググりまくって、ついに解決しました。AirMac Expressの使用するチャンネルを「自動」ではなく、なに

  • jMockを使ったテストの実行,あるいは実クラスのモックを作成してテストする方法 - 矢野勉のはてな日記

    Java, Cayenne, jMockjMockの使い方を,いまさらながら調べたのでメモ的に記録しておきます。 ORマッピング・フレームワークであるApache Cayenneでは,多くのORマッパと異なり,データオブジェクト(エンティティ)がインタフェースを使っていません。Cayenneはバイトコード・エンハンスとかを使用しない作りなので,継承関係を用いてデータオブジェクトの機能が提供されてます。で,このデータオブジェクトのテストを実行する際にモックを使いたいのだけど,インタフェースがないからどうしよう,という話がありました。 答えは簡単な話で,ほとんどのモック・ライブラリは実クラスのモック化をサポートしています。今回はjMockを使いました。easyMockでも同じようなことは可能でしょう。pom.xmlへのライブラリの追加次のライブラリをMavenのpom.xmlに追加します。 o

  • 国際化 - 矢野勉のはてな日記

    雑文コンビニに行って、日人の愛想もサービスもなってない店員と、ちゃんと仕事してて手際も良い中国人の店員がいた場合、後者の方がずっといいとおもうのだけど、日人じゃないというだけでなんかいやといって、悪いサービスを提供する側のほうが良いっていっちゃう人の感覚、なんか不思議。 例えば私の仕事はプログラミングが主体だけど、ちゃんと意思疎通ができるなら、仕事をちゃんとやってコードもきっちりかけて、議論もできて一緒に成長していける外国人のほうが、仕事しない日人より、同僚としてずっといいんですけどね。仕事してても面白いし。 コンビニだとサービス業だし、きっちり丁寧にできてる人の方が、商品の扱いもぞんざいな店員よりもずっといいと思うんだけど。 でも、商品の扱いがぞんざいな店員のほうがいい、という人がいるんですね。聞く限り、前者が外国人だったという以外の理由が見つからなかった。不思議だ。

    monjudoh
    monjudoh 2010/07/23
    セルフレジがいいです『日本人の愛想もサービスもなってない店員と、ちゃんと仕事してて手際も良い中国人の店員がいた場合、後者の方がずっといい』
  • 第弐回チキチキ絶対に笑ってはいけないjava-ja温泉の宿代を支援します - 矢野勉のはてな日記

    java-ja java-ja温泉をまたやります。 http://java-ja.yoshiori.org/index.php?%E7%AC%AC%E6%8D%A8Q%E5%9B%9E%E7%AC%AC%E5%BC%90%E5%9B%9Ejava-ja%E6%B8%A9%E6%B3%89 2泊で18,000円です。コード書いて疲れたら風呂にはいるってのを繰り返すだけです。ちなみにjava-ja温泉といいながら、半分くらいはjava書いてないので、そのへんは気にしないでください。 というわけで、今回も勝手企画java-ja育英会だ。私から最大二名分、宿代18,000円を出します。参加はしたいけどもお金の問題で参加出来ない、というのもつまらないと思って前回から勝手に企画してます。こういうのは参加したもの勝ちですから、自重せずに応募してください。応募資格参加したいけど金額的に諦めざるを得ない、と

  • Mac OS XのJava 6とNetBeansのmercurialサポートを組み合わせる方法 - 矢野勉のはてな日記

    Java, netbeans gitが大流行の昨今、私はなんとなくコマンドの使い方とかでmercurialのほうが好きだったりします。 で、NetBeansにはCVS, Subversionに並んで、初期状態からmercurialのサポートが組み込まれています。Sunが提供している公開リポジトリ「Kenai」を標準サポートしているので、それとの兼ね合いもあってデフォルトで組み込まれてるんでしょう。 ところが、Mac OS XのJava 6とNetBeans+mercurialを組み合わせると、ちょっと困った問題にぶち当たります。ログで日語が使えないんですね... 「X-MAC-JAPANESEなんてエンコーディング知りません」というような意味の英語メッセージが表示されて、コミットが失敗します。というのは、Mac OS XのJava 6は、なぜか標準エンコーディングがShift_JISにな

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

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

    monjudoh
    monjudoh 2009/06/18
    jQuery.extendみたいのをJavaで。使い勝手よさげ。
  • BPStudy #20でWicketの話をしてきました - 矢野勉のはてな日記

    Java, Wicketビープラウド社さん主催の勉強会「BPStudy」の第20回にてWicketの話をさせていただきました。 今回は「初心者むけ」ということでモデルとコンポーネントについて話そうかと思ってたんですが、やっぱりAjaxについても触れないとオイシイところのがしちゃうし、「全部Javaで」というところがどういう風にパワーを発揮するかも見せたい...なんて考えて資料作ってたら、ちょっと複雑になったかもしれません。再帰的なコンポーネントの適用とかそういうあたりで。 でも勉強会にくるような人は「再帰」という言葉だけでひいたりしないだろうと思いつつ、入れ込みました。再帰の部分は、「何階層あるか分からないXMLの階層定義を読み込んでタグで表示するとき、どうするか?」という問題で、Wicketでは再帰的にコンポーネントを適用する(コンポーネントのコンストラクタで自分に自分自身をaddする)

  • Wicket勉強会第2回終了 - 矢野勉のはてな日記

    Java, Wicket3/6にWicket勉強会第2回を行いました。広くて設備の整った会場を貸してくださったグリーさんありがとうございました。グリーパネェ80人部屋がいっぱいになることなんてないだろう、と高をくくっていましたが、結局使い切りました。設備も2面スクリーンがあったりと、驚きの充実ぶりでした。 ustream配信&録画はいろいろトラブルが重なってうまくいかなかったです。すみません。 内容ヨシオリさん WicketでレスポンスにJavaScriptを埋め込む方法、それらをひとつのコンポーネントに束ねて使う方法などを紹介。前回私もコード見せながら説明などしたのですが、それと同じように、実際のソースコードを見ながらの説明でした。 コードを見ながらの勉強会って30分だとちょっときつかったですかね。説明することたくさんあるので... コード・リーディングは専用に時間をとってやりたいですね

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

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

  • 第1回Wicket勉強会を開催しました - 矢野勉のはてな日記

    Java, Wicket追記: ustream放送の録画です http://www.ustream.tv/recorded/601826 8月1日にWicket勉強会を開催しました。15名くらいはあつまるかなあと思っていましたら50名の応募がありました。ありがとうございます。 結局会場スペースの都合で30名+発表者ということにしたのですが正直入りきるのかどうかちょっと不安でした。がしかし思ったよりも余裕ありましたね。バランスボールなどを駆使して一応全員何かに座れたようでした。会場はXarts株式会社様東京オフィスをお借りしました。ありがとうございました。 あと、当日のustreamはmesoさんのノートパソコンで行いました。結局最初から最後までustreamに使ってしまいましてすみません。ありがとうございました。 やの私の発表は例のみんな大好きなショートメッセージサービスを150行で動かそ

  • 第1回Wicket勉強会は8月1日(金)に変更になりました。 - 矢野勉のはてな日記

    Java, Wicketすみません告知早々ですが、会場を貸してくださるXarts株式会社様より連絡があり、1日(金)に変更します。どたばたしてすみません。Java用WebアプリケーションフレームワークApache Wicket勉強会(東京)の場所を確保できたので告知および参加登録ページを作りました(ちなみにWicket製)。8月2日(土)、東京都文京区の後楽園駅近くです。なお2日でほぼ確定ですが、可能性として前の日の1日(金)の夜に変更になる可能性があります。わかった場合なるべく早く告知しますし、2日で確定した場合も告知します。←8月1日(金曜日)18:30からになりました。 今回は多少のプレゼンも入るものの、プレゼンを見るようなタイプのものではなくてあくまで勉強会なので、みんなで考えてやっていければよいなと思っています。参加してくださる方は、下記リンク先の登録フォームから登録をお願いしま

    monjudoh
    monjudoh 2008/07/22
    参加予定「8月1日(金曜日)18:30からになりました。」
  • Javaの匿名クラスを使ってかっこよくオブジェクトを初期化するテクニック - 矢野勉のはてな日記

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

    monjudoh
    monjudoh 2008/06/23
    LLでoptionsとして連想配列を渡すような感覚で使える感じ。
  • java-ja 第7回Buri祭レポート - 矢野勉のはてな日記

    Java, java-jaまず先に反省。wicket-jaの宣伝にLTをしたのですが、なんだか慌ててたのか、私が誰なのか自己紹介もせずに話し始めてしまった。みんなちゃんと一ページ目には名前とかいれているのにね。私は唐突に宣伝に来ましたとか言って話し始めてしまった反省。あと誰か私がしゃべってるときのustreamのログを怖がらずにskypeid:tsutomu.yanoに送ってごらん? はぶさんを他所から巻き込んで無理矢理セッティングしてしまった「java-ja自重!」な感じで発生した第7回ですが、期待通りはぶさんの熱いトークが聞けました。私、はぶさんのビジネスの熱いトークが結構好きなので期待どおり。 ネタはBuriなのですけど、はぶさんはまず「ビジネスというのはなにか?」というところから入る。これがいい。「スーツ=金とかいってんけどさ、金の意味わかってる?」というところからガンガン攻めてき

    monjudoh
    monjudoh 2008/03/27
    これは良いまとめと感想
  • プログラマなら人月なんかさっさと超えろ - 矢野勉のはてな日記

    Java, プログラミングノリノリで書いてみる。 人月というのは「人月の神話」以来、現場の技術者にとっては「お金の計算にしか使えない単位」なのですが、発注者側に分かりやすいということでいまでも大はやりしています。というか受注者側もまじめにこの単位で計算しています。 そしてJavaの世界というのは、私のようにJavaが大好きだからやってる、という人間はすごく少数派で、「そろそろJavaでもやっとくか」「Strutsの使い方覚えたからもういいか」「できればJavaなんかいじりたくないなー。俺も早くプログラマに『これやっといて』って言えるようになりたい」という人のほうが多いのが実情なんですね。その点Rubyの世界は、今は「好きだからやってる」人が圧倒的でしょう。プログラム能力の高いJavaプログラマを探すのは、プログラム能力の高いRubyプログラマを探すよりずっと大変だろうと思う。 Javaの世

  • 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プログラマなら一度くらいは使ったことがあるかと思います。私も仕事柄いろんなところのアプリケーション開発環境を構築するのを手伝いま

    monjudoh
    monjudoh 2007/09/03
    DbUnitをRubyのfixtureっぽく