タグ

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

  • 分散コンピューティングの八つの誤信 - 矢野勉のはてな日記

    プログラミングいまや、インターネットはあまねく広がり、いままで何度も喧伝されて来てはバズワードとして去っていた「分散コンピューティング」が、現実のものとして普通に取りざたされる世の中です。でも今よりももっと前、10年以上も前に、「分散コンピューティングの八つの誤信」と呼ばれる、簡潔かつ重要な提言がされていました。一部の人はこの話を今でも覚えていると思いますが、忘れ去られるのも惜しいので、ここに記録しておきます。この提言が生まれた企業はもう既にありません。その会社のマントラは「ネットワークこそがコンピュータだ」でした。 分散コンピューティングの八つの誤信ネットワークは安定している 帯域は無制限だネットワークはセキュア(安全)だトポロジーは変化しない 管理者は一人である 転送コストはゼロだネットワークは均質だ レイテンシはゼロだこれらのひとつであっても、前提にしている分散システムは、欠陥を抱え

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

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

    terazzo
    terazzo 2011/12/08
    インタフェースの実装を自動化するだけならProxyでも良いかと思ったけど、それだとGeneration Gapパターンが使えないか。/F#の Type Providerみたいなのできないかなあ。/.classファイルを直に生成したい
  • インターネットはストリーム - 矢野勉のはてな日記

    アイデアマラソンというわけで、結論とかなんとか関係なく、思いついたことを書く記事として「アイデアマラソン」というタグを使うことにした。つっこまれてもあまり反応しないかと(その時はそう思ったってことを書いてるだけなんで)。ちょっと古いメモからなんで、今だと、そりゃそうだ、という話かもしれないけども書いとく。インターネットを「膨大な情報に万人がアクセスできるようにしたもの」と捕えるとあまり質を捕えてないような。インターネットの質?は、データの蓄積じゃなくて、常に新しいデータが流れているその「流れ」そのものなんじゃないかと。データの蓄積というとらえ方はディスク世代の認識。インターネットというのはストリームなんだろう。だから、インターネットにおけるアプリケーションとかビジネスとかにおいて、データを蓄積するということはあくまで副次的なものであって、ストリームを作り出すことこそが重要なんじゃないか

    terazzo
    terazzo 2011/09/06
    フローばかりを重視しストックを軽視するのは「みんなが愚か者になる恐れがある」と思う。
  • Wicket 1.5の新イベントシステムを拡張する - 矢野勉のはてな日記

    Java, WicketWicket 1.5 がRC5とか「RCの意味わかってるんすか?」みたいな状態になってますが、1.5で導入されるイベントシステムについて。以前、Wicket勉強会にてイベントシステムの解説を行ったのですが(その時の資料参照)、そのときのサンプルコードでは、次のように、にっくき「instanceof」を使ってイベントペイロードを識別して、処理を分岐していました。 if (event.getPayload() instanceof ImageRefresh) { if (selected) { source = null; selected = false; ImageRefresh imageRefreshPayload = (ImageRefresh) event.getPayload(); imageRefreshPayload.addComponent(this

    terazzo
    terazzo 2011/06/21
  • Javaの型パラメータ境界指定を使って型を合成する話 - 矢野勉のはてな日記

    Javaはい。開発者のあいだでAdvent CalendarがはやってるみたいなのでJavaでもやろうという話があり、早速はじめることにしました。Java Advent Calendar -ja 2010 : ATNDほんとは1日からはじめるものらしいんですが、いいじゃないですかそんなこと。5分で考えて5分でかけるものでOK、ということで、最近遊んでた、Javaで型を合成する話を書いてみようと思います。ネタがぱっと思いつかなかった…あらかじめ書いておくと「できるかなと思ったけどやっぱりできなかったね」という話に過ぎませんのでよろしく。戯れ言です。真剣に読むと損します。あと5分で書けませんでした。型合成Javaでインターフェイスをきるとき、メソッドの引数はおおむねすべてインターフェイスになるように設計するのがよいとされているようです。そうしてると「このメソッドの引数はMapだけど、このMap

    terazzo
    terazzo 2010/12/13
    インタフェース&インタフェースがどこにでも書けて、包含関係があれば代入できればいいのになあ
  • Javaのラムダ式導入に関する最新提案の雑なまとめ - 矢野勉のはてな日記

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

    terazzo
    terazzo 2010/07/30
    悪くないかも。assignableであることがオブジェクトの意味を支えているので制限は必要だと思う。API側がサボれるように、受け側のメソッドの特定の引数に対して、暗黙のSAM typeが定義されるようにすれば良いような気も。
  • 互いに関連のないオブジェクトを1つのインターフェースにまとめて共通的にアクセス可能にするライブラリを作ってみた - 矢野勉のはてな日記

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

    terazzo
    terazzo 2009/06/15
    以前同じようなこと考えて調べた時に見つけたのは「ProxyでMixin」→http://d.hatena.ne.jp/winebarrel/20051001/p6/キャストする方は「java duck typing proxy」でぐぐったら一杯ありました。
  • Genericsではまった - 矢野勉のはてな日記

    Java, メモ複合的な総称型にキャストするにはどうしたらいいんだろう? というのでちょっとはまったのでメモ。 こんなインターフェースがあります。インターフェースの内容自体は今回はどうでもいいのですが。 public interface Loggableextends MyClass> { Class getLogClass(); void setLatestLog(T log); } で、このLoggableインターフェースを実装していてなおかつMyClassのサブクラスであるインスタンスだけを処理するstaticメソッドがあります。 public static extends MyClass, T extends MyClass & Loggable> L create(T obj) { Class logClass = obj.getLogClass(); Object newObj

    terazzo
    terazzo 2009/06/09
    明示的に「public abstract class LoggableMyClass <L extends MyClass> extends MyClass implements Loggable<L> {...}」みたいなクラスを作って、「public class MyClassB extends LoggableMyClass<MyClassA> {...}」みたいに実装してやるしかないかも。
  • 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では、この問題を「フィールドには

    terazzo
    terazzo 2009/01/19
    なるほどと思いつつ、そもそもSerializableを要求している意図からするとどうなのか気になる>Serializable proxy
  • bridgesupportファイルの仕様がよくわからない - 矢野勉のはてな日記

    Macわけあって、Mac OS Xから多言語サポート用に導入されたAPIメタ情報「bridgesupport」ファイルについて調べているのですけど、これの仕様がよくわからない。 XMLファイルにどのようなエレメントがあって各エレメントがどういう属性をもっているかについては、manpageの「BridgeSupport」みればだいたい分かるのですけど、「type」と「type64」属性の読み方がよくわからない。 Booleanは「B」、longは「L」とかなんとなく分かるのですけど、Qというのもあるし、{_CFRange=ii}なんてのもあるし、^{__CFString=}なんてのもある。 どうも規則がありそうなことは分かるし推測のつくところもあるのですけど、このtype属性の記述方法の全仕様が知りたい。類推してもなんとかなるのだけど、きっと漏れが発生する。type属性の記述方法についてまと

    terazzo
    terazzo 2009/01/09
    BridgeSupportはよく知らないけど、字面から察するにObj-CのType Encodingsかな?cf: http://developer.apple.com/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/chapter_7_section_1.html
  • エンジニア的発想は危険な気がしている - 矢野勉のはてな日記

    雑談「エンジニア主導で作ると、動いたところで満足してしまう。『ちゃんと動いているから、あとは使う人が分かってくれるだろう』と、考えをストップするところがあった。当は、動いたものを説明して分かってもらい、使ってもらうところまで来てやっと完成なのに」近藤社長「未熟だったと思う」 はてなが目指す“脱IT系” (1/2) - ITmedia News なんかね、私がコンピュータにはまったときに理想とされていたことから比べると、それでもまだ足りないと思っちゃったんです。 自分ができているかどうかは棚に上げて、理想とするところを考えてみる。目標がどこにあるかっていうのはすごく大事なことだと思うし、上記の発言は目標を吐露したものだと思うので。  私はMac OS Xが生まれる前の、漢字Talk 7とか作ってた頃のAppleの、Macintoshを買ってコンピュータの世界に没入しました。そのころのコンピ

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

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

    terazzo
    terazzo 2008/11/18
    この際Wicketのコンポーネントで直接CayenneのExpression組み立てたらどうだろう
  • JBoss SeamがWicketをサポートするそうな - 矢野勉のはてな日記

    Java, WicketChapterツ?12.ツ?Writing your presentation layer using Apache Wicket "Wicket sucks!"ってHibernateとSeamとJSR 299:WebBeanの偉い人にいわれたんだけどなー(笑)というのは冗談で、WicketもSeamも「Webアプリケーションをステートフルにする」という点で同じ方向を向いています。Seamはロジック層メインの技術で、Wicketはビューとコントローラがメインの技術なので、この組み合わせはものすごいパワーを発揮する可能性があります。 すでにこの組み合わせでいろいろ試している人もいるようなので、使用感などをブログで見られることを期待してます。

    terazzo
    terazzo 2008/09/08
    SeamもWicketもあまり知らないんだけど、なるほどメニューみたいなの以外はConversationスコープとやらで保持するのが自然な気がする。
  • 第1回Wicket勉強会を開催しました - 矢野勉のはてな日記

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

    terazzo
    terazzo 2008/08/05
    ustのアーカイブ無いのかな……
  • ゆの 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

    terazzo
    terazzo 2008/07/11
    変態だー!!!!
  • Javaが不憫すぎる - 矢野勉のはてな日記

    JavaJavaの匿名クラスを使ってかっこよくオブジェクトを初期化するテクニック - 矢野勉のはてな日記を書いて反応などをみて... Java...かわいそうに...小公女のようだ... StrutsみたいなJavaでなくてもいいような、オブジェクト指向ですらないような存在にイメージを固定化されて、フルスペックを知られることもないのか... 初期化ブロックというものがあまり知られていないということにちょっと驚きつつ、昨今の匿名クラスとかを使うのも気持ち悪いという風潮とか、初期化ブロックも知らないで「Javaは退屈」みたいなことを言われてもいい迷惑だと思ったりしました。すみませんJava厨なもので。だって、Java 1.1のころからあるのに... だってJavaの原典とも言えるプログラミング言語Java 第4版 (The Java Series)にはもちろん載っているし、Javaの認定試験S

    terazzo
    terazzo 2008/06/24
    やばい勉強不足だ。内部クラスからエンクロージングインスタンスを「クラス名.this」で参照できるとか最近知ったし……
  • 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対応はそんなに難しくないだろうと予想されていて、数週間でベータリリースなどと言

    terazzo
    terazzo 2008/06/23
    頑張れてもComponentに「<T> Component<T> newInstance(String id, IModel<T> model)」なファクトリーメソッドを作るぐらいか。
  • Pure Javaのデータベース・エンジンH2がクエリ言語を搭載 - 矢野勉のはてな日記

    H2, database, JavaすべてJavaで書かれたデータベース・エンジンとしてはHSQLDBが有名ですが、もともとHSQLDBの前身となったHyperSonicを作った人が始めたH2 Database Engineというプロジェクトがあります。 HSQLDBは実はレコード検索するのにも行がListに入っているのを線形検索してたりとか結構すごいところもあるのですが、H2は作者が別の商用データベースの仕事で得た経験を元にしてHypersonicを一から作り直したもので、当然そのような問題も改善されています。 一方でHSQLDBと同じく、ロックはテーブルロックしかサポートされてないとか、DBサーバとして使うにはどうなんだろ、というところも残っています。それでもPure Javaであることを生かして関数をJavaで作ってクラスファイルをDB Engineに追加して拡張する機能とか、ファン

    terazzo
    terazzo 2008/06/22
  • 増田総務相は別に悪くなくて悪いのはIT業界のほうだよね - 矢野勉のはてな日記

    開発自戒を込めてエントリにしておきます。 なんかこのブクマで「総務相プギャー」というブクマコメが爆発しているようなので書いておくと、増田総務相は別にわるくないでしょ。だって彼は単に事実を言っただけだもの。今回は顧客側でもあるし。発注したら実際にそんだけ請求されちゃうんだから。 国のシステムとなるとたぶん大手のSI事業者に頼むのだろうけど、このシステムを大手SI事業者に頼んだら、たぶん要件定義だけで半年は余裕で使うし、下請けへの支払いと自分のマージンとその他もろもろ考えると、数億かかるのもほんとでしょう。 私もこの記事読んだときはプッという感じではあったのですが、すぐあとに結局この発言にプギャーとかいうのは技術者としては「そんなに必要ないのにそれが必要なこの業界への自嘲」なのであって、増田総務相が変なことをいってるわけではないということに気がついた。自爆してるだけだな私、と思った。そんなに金

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

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

    terazzo
    terazzo 2008/05/30