タグ

ブックマーク / daisuke-m.hatenablog.com (23)

  • レコメンデーションの簡単な原理を視覚的に把握してから実際に計算してみる - 都元ダイスケ IT-PRESS

    Mahoutシリーズを最初から読む場合はこちらApache Mahoutで機械学習してみるべ - 都元ダイスケ IT-PRESS。 昨日分析したデータは、1番の人にお勧めなアイテムは104で、4.25点をつけるだろう、という予想でした。なぜこのような計算結果になったのか、なんとなく感覚をつかんでみよう。 入力に使ったCSVデータを、簡単にグラフ化してみたのがこれだ。 レコメンド対象となる1番の人は、青のグラフだ。この青のグラフのパターンに一番似ているのはどれだろう? 101〜103をぱっと見た感じ、紫(5)の人と似た傾斜だと感じると思う。また、赤(4)の人も分かりづらいけど結構似ている。102の評価は抜けているものの、101*1と103の評価は近い。 逆に、緑(2)の人とは正反対の好みを持っているようだ。グラフが逆行している。黄色(3)の人は…、あんまり関連性はなさそうだな。 というような

    レコメンデーションの簡単な原理を視覚的に把握してから実際に計算してみる - 都元ダイスケ IT-PRESS
  • Apache Mahoutで機械学習してみるべ - 都元ダイスケ IT-PRESS

    Mahoutシリーズ目次(随時更新) 非分散レコメンデーション Apache Mahoutで機械学習してみるべ - 都元ダイスケ IT-PRESS (これ) レコメンデーションの簡単な原理を視覚的に把握してから実際に計算してみる - 都元ダイスケ IT-PRESS 機械学習における重大な"仮定"と、アルゴリズムの評価 - 都元ダイスケ IT-PRESS 分散レコメンデーション Mahoutで分散レコメンド(1) - 都元ダイスケ IT-PRESS Mahoutで分散レコメンド(2) - 都元ダイスケ IT-PRESS Mahoutで分散レコメンド(3) - 都元ダイスケ IT-PRESS クラスタリング 今度はMahoutでクラスタリング - 都元ダイスケ IT-PRESS 今度はMahoutでクラスタリング(ソース編) - 都元ダイスケ IT-PRESS では、文いきます。 Apach

    Apache Mahoutで機械学習してみるべ - 都元ダイスケ IT-PRESS
  • 独身終了のお知らせ - 都元ダイスケ IT-PRESS

    突然ですが9/20に結婚することになりましたー。相方は、薬屋時代の同僚です。 目立つイベントが苦手な相方なので披露宴やパーティなど、ましてやid:yoshioriのようにkecconしたりはしないと思いますが、暖かく見守っていただければ幸いです。 そうそう、お約束で欲しいものリスト貼っておきますね:P http://www.amazon.co.jp/wishlist/OAMAL3Q2OTQ2 http://www.amazon.co.jp/wishlist/3U2NT3SPZNGP http://www.amazon.co.jp/wishlist/1MDG3X9BA0X93 今後とも、よろしくお願いします。 追記:ありがとうございます。 @yamashiroさんより 「デコンパイリングJava」を贈って頂きました。大事に読ませていただきます。ありがとう! デコンパイリングJava ―逆解析

    独身終了のお知らせ - 都元ダイスケ IT-PRESS
    t_43z
    t_43z 2010/09/07
    おめでとう!
  • 日経ソフトウエアで連載始めた!! - 都元ダイスケ IT-PRESS

    日経ソフトウエア 2010年 05月号 [雑誌] 作者: 日経ソフトウエア出版社/メーカー: 日経BP出版センター発売日: 2010/03/24メディア: 雑誌 クリック: 14回この商品を含むブログ (5件) を見る 前回の特集記事から7ヶ月。今度は日経ソフトウエア2010年5月号より、連載を持たせて頂くことになりました。「Javaで始めるプログラミング」第一回の掲載誌は日発売です。 世の中には「Cぐらいは経験がある人に向けたJava入門」というのは結構見つかると思うのですが、「全くプログラムしたことありません」という人に向けたものはなかなか見つかりません*1。一定ラインに前提知識を置いておくと、記事書くの楽ですもんねー*2。でも「よくある入門」ではない、一段掘り下げた記事にしたいという思いから、前提知識をなるべく排除した入門記事にチャレンジすることになりました。 そんな訳で、プログラ

    日経ソフトウエアで連載始めた!! - 都元ダイスケ IT-PRESS
    t_43z
    t_43z 2010/03/24
    おー!
  • hamcrestのMatcherメモ - 都元ダイスケ IT-PRESS

    技術ネタじゃないところで盛り上げてしまった。技術ネタいこう、技術ネタ。 さて、JUnitを使う際、hamcrestライブラリを使って、英語として読めるようなassertionを書く、なんてのは流行ってたり流行っていなかったり? JUnit4限定だけれど、assertionの際、assertEqualsとか色々assertionのメソッドはあるけど、全てassertThatで書くことができるはず。assertThatメソッドの第一引数にテスト対象、第二引数にhamcrestのMatcherインターフェイスの実装を与えます。なんのこっちゃですが。 Jiemamyでは、なるべくassertThat以外のassertionメソッドを使わないようにテストを書いています。(もしかしたらもう一つも残ってないかも。) まぁ、以下のように書くと、英語っぽいのが書けますよ、と。 assertThat(aaaa

    hamcrestのMatcherメモ - 都元ダイスケ IT-PRESS
  • エンジニアとしての歩き方 - 都元ダイスケ IT-PRESS

    これから書くことは決して「これをしなければいけない」とか「他に手段はない」なんてコトを主張したいのではない。色んな道があるはずだぁ。その中の一つの事例として、自分がやってきたことをフレームワーク化し、色々挙げてみようと思う。 当然、俺の主観が入りまくっているので、突っ込みどころは満載だろうなw そもそも「エンジニア」って何?w その辺り、はてブ界隈のミナサマにおかれましてはお手柔らかに願いたいww さて、いきなりどこかの技術系カンファレンスで1時間喋っちゃえ、とか突然は無理なのは分かる。何を話せばいいのやら、どこに喋るチャンスがあるのやらだ。しかし、そういう所で喋るような自分を将来のビジョンとして持っている人は、以下に挙げることを小さなことからコツコツと実践してみるといいかもしれない。という意図で書いていく。 何事にも興味を持とう 興味は勉強の原動力。興味のない勉強は苦痛でしかない。ここが

    エンジニアとしての歩き方 - 都元ダイスケ IT-PRESS
  • 例えば、if〜instanceofを避ける(2) - 都元ダイスケ IT-PRESS

    例えば、if〜instanceofを避ける(1) - 都元ダイスケ IT-PRESSの続き。 解決策は幾つかある。とりあえず今回は1つ紹介。 public enum Processor { LIST(List.class) { @Override public void process() { // List用処理 } }, MAP(Map.class) { @Override public void process() { // Map用処理 } }; private final Class<?> clazz; private Processor(Class<?> clazz) { this.clazz = clazz; } public abstract void process(); public static Processor get(Object obj) { for (Pro

    例えば、if〜instanceofを避ける(2) - 都元ダイスケ IT-PRESS
  • DOMとSAXとStAXと。 - 都元ダイスケ IT-PRESS

    こんな名前のAPIがありますね。主にXMLの読み込みを行う為のAPI群であります。SAX以外は、書き出しもできますね。そう、SAXは書き出しできないのですね、基的に。 <foo> <bar>baz</bar> </foo> っていうもの凄い単純なXMLを、これらのAPIでどのように扱うのか。比較なエントリ。 まずはDOM DOMは、パース時にXMLの内容を全てメモリ上に保持し、パース後にどの要素にもいつでもアクセスできるような環境を作り出す。 import java.io.ByteArrayInputStream; import java.io.StringWriter; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.t

    DOMとSAXとStAXと。 - 都元ダイスケ IT-PRESS
  • 動的なインターフェイスの追加(擬似的な方法) - 都元ダイスケ IT-PRESS

    public interface Foo { void foo(); } public class FooImpl implements Foo { public void foo() { // ... } } ある、Foo という仕様と同時に、Fooに対する実装を提供したとします。普通ですね。 ここで「Fooはプラガブル*1にしたい。実装によって「動的に*2」新しい機能を追加することができるようにしたい。」と考えたとします。 public interface Foo extends ExtenderA, ExtenderB ... { void foo(); } こんなイメージ。Fooのインターフェイスを「動的に」追加したい。しかし、これはJavaの言語仕様上不可能*3なことです。 拡張したければ、Fooを継承して新たなインターフェイスを作るしかありません。 public interfa

    動的なインターフェイスの追加(擬似的な方法) - 都元ダイスケ IT-PRESS
  • Throwableについて本気出して考えてみた - 都元ダイスケ IT-PRESS

    Throwable、Exception、RuntimeException(RTE)、Errorあたりを整理しながら、色々考えてみた。私見に基づくので、間違っているかもしれないけれど、自分としては頭が整理できたかな、と感じたので晒してみる。異論があったらコメントください。 まず、一番基礎的なところで、継承関係の整理から。こんなツリーになっています。 Throwable Error Exception RuntimeException そして、稿での用語の定義。caller=呼出す側のコード callee=呼出される側(throwする側)のコードとします。 Throwable Throwableは「throw文に指定できる何か」という意味ですね。 Instances of two subclasses, Error and Exception, are conventionally used

    Throwableについて本気出して考えてみた - 都元ダイスケ IT-PRESS
    t_43z
    t_43z 2008/12/03
    責任者が誰であるかで分ける考え方かー。なるほど。
  • Apache commonsが便利な件(commons-collections編-2) - 都元ダイスケ IT-PRESS

    http://d.hatena.ne.jp/daisuke-m/20080702/1214982943 前回に引き続きcommons-collections。 Java Collection Framework(JCF)では、大きく分けてCollectionとMapの2系統の概念が定義されています。そして、前回はこれらに加えて Bag, Buffer などの追加された概念を説明しました。それぞれの代表的なタイプを整理したものが以下*1。 Collection List ArrayList ArrayStack (*) 実装はArrayStack。特筆事項なし。 LinkedList Stack Set EnumSet HashSet TreeSet Queue PriorityQueue Bag (*) 実装はHashBag, TreeBag。特筆事項なし。 Buffer (*) 実装はA

    Apache commonsが便利な件(commons-collections編-2) - 都元ダイスケ IT-PRESS
  • Apache commonsが便利な件(commons-collections編-1) - 都元ダイスケ IT-PRESS

    http://d.hatena.ne.jp/daisuke-m/20080702/1214982943 再びユーティリティ系。ということで今回はcommons-collections。 commons-collections は、Javaコレクションフレームワーク(っていうと大仰だけど、要はListとかSetとかMap。以下JCF)まわりのユーティリティ。 ところで、JCFまわりは Java1.4から5.0へのバージョンアップにあたり、ジェネリクスが導入されて、非常に使いやすくなりました。今やジェネリクスのないコレクションなんて、怖くて触りたくない病に罹っている今日この頃です。 しかし、このcommons-collectionsは下位互換を理由にジェネリクス化されていません。ジェネリクス世代としては、敬遠せざるを得ません><。 が、どうやら家Apacheからフォークしてcommons-c

    Apache commonsが便利な件(commons-collections編-1) - 都元ダイスケ IT-PRESS
  • Apache commonsが便利な件(commons-io編) - 都元ダイスケ IT-PRESS

    http://d.hatena.ne.jp/daisuke-m/20080702/1214982943 今回はcommons-io。 commons-io は、入出力まわりの便利クラスを提供してます。commons-langはjava.langの補強でしたが、こちらはjava.ioパッケージの補強、というスタンスです。 IOUtils closeQuietly こんなコード良く書きますよね。 InputStream is = null; try { is = ...; // ... } catch (IOException e) { // ... } finally { if(is != null) { try { is.close(); } catch (IOException e) { // ignore } } } だーーー、サンプルコード書いててウザかったw そのくらいウザいじゃな

    Apache commonsが便利な件(commons-io編) - 都元ダイスケ IT-PRESS
  • Apache commonsが便利な件(commons-lang編) - 都元ダイスケ IT-PRESS

    http://d.hatena.ne.jp/daisuke-m/20080702/1214982943 やー、前書いたエントリいつだったかな、と思って見たら7月ですよ。コツコツ書いていきますね。まず初回はcommons-lang。 commons-lang は、java.langパケにあるような基的なクラスを追加で提供している感じです。また、既存の基クラス(String,Object,配列等)のメソッドに対してnullチェックを搭載したものが多く提供されています。null対策を内部で行っているので、ぬるぽを恐れる必要があまりありません。こういうのを使いこなせると便利ですね。 StringUtils これはよく使いますかね。もしかしたらcommonsで一番知名度の高いクラスかもしれない。しかしその中でマイナーかもしれないのはまず定数系。下記の例では、後者の方が記述量は多くなりますが、「コ

    Apache commonsが便利な件(commons-lang編) - 都元ダイスケ IT-PRESS
  • Seasar Conferenceでしゃべりまーす。 - 都元ダイスケ IT-PRESS

    遅くなりましたが、今度のSeasar Conferenceで話をすることになりました。Jiemamyの話をさせていただきます。前回は1000speakersでお話をしましたが、その後色々動きがあって、色んなことになっていますw 色々喋りたいことはあるけど、どこまで喋れるかな〜。45分枠というのは初めての尺なので、wiktしつつもdkdkしているところです。乞うご期待! というわけで、今日、スピーカーミーティングがありました。予演会という訳でもないけど、色々事務的な事をした後に、持ち寄った作りかけのスライドのレビューを相互に行った感じですが。 …すげぇ。。。聞きたいセッションいっぱいです。 ソフトウェア開発の魔法環境「Yukara」 まずはコレ。いきなりマニアックかもしれませんが、Ashikunep枠です。なんかもう、テーマからして壮大かつ、プレゼン資料が綺麗。発表資料マニアとしてはビンビン

    Seasar Conferenceでしゃべりまーす。 - 都元ダイスケ IT-PRESS
    t_43z
    t_43z 2008/08/15
    行きたいなぁ。その日東京いないんだよなぁ。
  • 萌え萌えIrenka - 都元ダイスケ IT-PRESS

    運命だったのか魔が差したのか、Irenkaのドキュメントを読んでしまって。惚れた。やばい、これは使わなければ。と、すぐに地豆に適用してしまったw Irenkaとは何か。 誤解を恐れずに言えば、高機能Checkstyleみたいなものです。ただ、出来ることは何かを見つけて指摘するだけじゃない。コンパイルのタイミングで、コードを書き換えちゃうことだってできるのだ。 とあるコーディング規約(Irenkaでは「掟」と呼ぶのか?w)があって、それに違反した箇所を見つけて指摘するのがCheckstyle。Checkstyleは、独自のルールを組む事が出来ない訳ではないのだが、俺はよく知らない。 Irenkaは、掟に背いた部分を「指摘する」のはもちろん、「勝手に直す」こともできる無茶苦茶な奴なんだ。しかも掟は自分で書ける。(というか、標準では提供されていないっぽいので自分で書くしかないw) コンパイルのタ

    萌え萌えIrenka - 都元ダイスケ IT-PRESS
  • Apache Commonsを総ざらってみる。 - 都元ダイスケ IT-PRESS

    ということで、現状のコンポーネントをリストアップして、概要を日語(一部英語のままw)でまとめてみました。今後、個人的に興味のあるものを順にピックアップして、もう少し深く知っておく、という作業をしてみようかな、と思ってます。 まずは、commons-langを掘ってみている。すげええええええの連続です。近々ご紹介しますとも。 Properシリーズ(正式プロジェクト) コンポーネント mvn 説明 参考 attributes ○ メタデータ属性(docletタグ等)ランタイムAPIjavadoc内アノテーションを処理する。Java4以前で有用かも。 参考 beanutils ○ Reflection/Introspection APIのラッパー 123 betwixt ○ JavaBeans・XML間の相互マッピングAPI 参考 chain ○ "Chain of Responsibili

    Apache Commonsを総ざらってみる。 - 都元ダイスケ IT-PRESS
  • 第二回 Jiemamyインサイド日程 - 都元ダイスケ IT-PRESS

    ×が一人もいなくて、週末に近い2008/7/3(木)としまーす。 参加表明をは、このエントリーに対するコメントとして受付まーす( ̄ー+ ̄)ノ 第一回に参加していない方は、第一回のustをご覧になってからの参加をお勧めします。 そもそもJiemamyって何? → 1000speakers:4 Jiemamyインサイドって何? → http://www.ustream.tv/channel/jiemamy コード見ておきたい → 地豆コミッタはじめてガイド

    第二回 Jiemamyインサイド日程 - 都元ダイスケ IT-PRESS
    t_43z
    t_43z 2008/06/19
    いけるかなぁ・・・?
  • 第一回 Jiemamyインサイド for contributors (事後報告編) - 都元ダイスケ IT-PRESS

    さて、開催しました。参加の皆様、お疲れ様でした&どうもありがとうございました。 残念ながら参加できなかった方、及び復習したい方等、勉強会の模様は、以下からどうぞ。 http://www.ustream.tv/recorded/429208 さて、Jiemamyの内部に興味を持つ人達だからいいだろー、と高をくくって、for users 部分の話をまったくせずに、インサイド部分に入ってしまったのはちょっと失敗だったかな、と反省中w その辺りの復習は、こちらの動画をご覧ください。 http://d.hatena.ne.jp/daisuke-m/20080427/1209289484 今後のコミュニケーション手段 以下の手段を用意しますが、オープン性を確保する為にも、基的にMLを中心にコミュニケーションをお願いしたいと思います。 メーリングリスト えっと、これを機会にメーリングリストを立ち上げま

    第一回 Jiemamyインサイド for contributors (事後報告編) - 都元ダイスケ IT-PRESS
  • ちょっとtwitterで話題になったこと。 - 都元ダイスケ IT-PRESS

    Javaのfinalというのは、その変数の参照先が変わらない(参照先が別のオブジェクトに切り替わらない)というだけで、参照先に存在するオブジェクト自体のステート不変は保証されていない。 final FooBean bar = new FooBean(); bar.setBuz("hoge"); // エラーは起こらない /* bar = new FooBean(); */ // エラー しかし、ステートが不変である事も明示的に保証したい場合がある。 参照するオブジェクトの中身も不変であることを保証するsuper-finalも欲しいと思った時期もあったが、仕様がむずかしそーw と思って主張を諦めた。 都元ダイスケ🍅 on Twitter: "ついでに、参照するオブジェクトの中身も不変であることを保証するsuper-finalも欲しいと思った時期もあったが、仕様がむずかしそーw と思って主張

    ちょっとtwitterで話題になったこと。 - 都元ダイスケ IT-PRESS
    t_43z
    t_43z 2008/03/28