サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
daisuke-m.hatenablog.com
「第一回チキチキjava-ja ymsr送別会」に行ってきた。 ちょっと湿っぽくなった瞬間もあったけど、笑いの絶えない良い会だった。 あいつは絶対準備して待ってる。 というわけで、その時が来たら、「第一回チキチキjava-ja ymsrによる歓迎会」に参加しようと思う。 しばらく待ってろ。
ごぶさたです。都元です。 日経ソフトウエア2012年8月号が昨日発売となりました。都元が特別付録の文庫サイズ別冊「Eclipse逆引きポケット事典」に寄稿しました。この原稿は、息子誕生の混乱のさなかに脱稿したものですw その節は編集者さまにはご迷惑をお掛けしましたごめんなさい。 まぁ、日々Eclipseを使っているような皆様におかれましては全部知ってる内容な気はします。が、まぁ私が日頃Eclipseを使うにあたってのノウハウを書いて行ったものなので、まだそこまでEclipseに慣れていない、という方にはオススメな内容です。 日経ソフトウエア 2012年 08月号 [雑誌] 作者: 日経ソフトウエア出版社/メーカー: 日経BP社発売日: 2012/06/23メディア: 雑誌 クリック: 36回この商品を含むブログ (3件) を見る ちなみに、ブログで報告しませんでしたがこの2号前、6月号でも
なんか、気づいたら半年近くブログ放置してましたw この半年色々ありましたけど、それはまた、別のお話。 ってことで、えーー、先ほど 5/22 22:04 に息子が産まれました! ワーーイ。産まれた瞬間、ベタですが、涙出ました。嬉しい! 良い人生を送って欲しいな、と心から思いました。 っていうかね。悪いけど、マジかわいいぜ、ウチの息子!! うはwww これは、毎日風呂に入れたくなるってもんですわーーww ベビーバスまだないけどなwwww っつーか、まだ名前も付けてないけどなwwwwwww 早く考えてやんないと。名前呼びてーーーけど、ないwww だめだ、テンションがアレだww まぁそれはともかく、とりあえずwishlist 貼っておきますね :) http://www.amazon.co.jp/registry/wishlist/3U2NT3SPZNGP 追記 というわけで本当にたくさんの方から
本日のエントリーはJava Advent Calendarの25日目です。昨日は @mike_neck さんのmike、mikeなるままに…: hamcrestを拡張してmoreThanとか作ってみたでした。本日はクリスマスですが、Advent Calendarはまだまだ続きます。明日はt.ogisawaさんのhttp://webinter.sakura.ne.jp/pbd/210です。 さて、今年はJava7がリリースされましたね。try-with-resources、diamond operator、invoke dynamic、Folk/Join framework…魅力的な新機能の数々が、多くの人によって紹介されています。が、Java7の変更はそれだけじゃないはず。小粒だが、キラリと光る変更がきっとあるはず。ということで、Java6とJava7のsrc.zipを比較してみました。小
JIRA Advent Calendarってのに巻き込まれました。巻き込まれサイコーw 昨日は@oota_ken氏のJIRAのスキーマーをastahのクラス図で書いてみる ユーザー編 – テスト自動化他何かのメモでした。確かに、JIRAのデータ構造って、ぶっちゃけ理解するの大変ですよね…。なんちゃらスキーム苦手ですw で。@yusukeyサンからの「オマエのJIRAへの愛を語れ」っていう振りは完全スルーして、普通に活用Tips書きますw 自分はJiemamyプロジェクトにOSSライセンスを頂いて以来、随分長いことJIRAユーザをしています。なので、もうちっとディープな話もできなくもないかなぁとは思ったのですが、周囲を見ていると、玄人向けの難しい機能を紹介するよりも「願わくば全てのJIRAユーザが活用して欲しい、けどもなかなかこれを活用している人はいないんですよね」的な機能の紹介をしたほうが
しばらくコード付きのエントリ書いてないなぁ、と思ったので。Springの新機能についてひとつ。 Spring3.1は、まだリリース版は出ていないのだけど、RC1が出ている。(参考 Spring 3.1 RC1リリース) その新機能にCache Abstraction(キャッシュの抽象化)ってのがあって、色々調べてみた。例えばWebAPIなんかを叩いて情報を取ってくるようなメソッドは、情報があまり変化しないものであればキャッシュしちゃえばいいよね。例えば Amazon API で、ASINから商品名やら何やかんやを取ってくるメソッドとか。 下準備 package jp.xet.sample; public interface EntityRepository { String get(int id); void put(int id, String value); } 例えばこんな(↑)イン
っていう話を書こうと思ってたら、以前書いてた(cf. 前提条件を破った場合、どのような挙動をするのか? - 都元ダイスケ IT-PRESS) 上のエントリにも書いたのだが、自分はこういう時IllegalArgumentExceptionを使うようにしている。そして、commons-lang v2.6 をよく使っていたので、その中の Validate#notNull を利用してnullチェックをするのが自分のスタイルだ。 しかし、いい加減commons-lang v3系に移行しようかな、と考えて色々触っていたのだが、v3から Validate#notNull の仕様が変わり、NullPointerExceptionを投げるようになったのだ。 といった辺りの俺周辺タイムライン → Javaでnullを受け付けないメソッドにnullを渡したらどうなるべきか - Togetter で、いくつかのラ
懐かしいですね。受験の時勉強したなぁ。water, music, love等の名詞については、基本的に複数形を使わないよ、というアレですね。形がないものや抽象概念を表すので個数として数えにくいものや、集合全体の概念をとらえた単語なんかがそれに当たります。(参考:http://www.linkage-club.co.jp/ExamInfo&Data/uncountables.html) で、昨日プログラミングの話で「 getStudies():List 」なんていう話をした時に「勉強という意味でのstudyは不加算名詞。論文とかにする研究については加算だけど…」なんていう話を聞いて懐かしくなった。その場は「おお、そうなのか。昔習ったような忘れたような…w」という感じで getStudy() にしてみたのだが。 確かに「自然言語としての英語の世界」ではそうなのかもしれない。しかし自分は今、「勉
転職活動をはじめて2ヶ月弱。ようやく次の落ち着き先を決めました。ちなみに「転職したのに上司が変わらなかった」っていうネタも考えていたのですが、id:j5ik2o と行き先は別々になりました。まぁ、かとうさんは「永久名誉上司」として、永遠にエロ上司扱いしてやろうと思っています。あ、某D社の皆様も、早速エロ呼ばわりしてみると良いと思いますよ。喜ぶと思いますw …さて。 正直、先日のエントリを上げる直前は、もうこの業界に自分の居場所はないかもしれない等と考え、薬屋への撤退戦略などを考えたりしていました*1。しかし、エントリを上げた途端当人らがびっくりするほどの反響を頂き、最初の1ヶ月は一つ一つお話を聞かせて頂くべく東奔西走していました。この真夏の陽気で外回りは結構体力的にも大変*2でしたが、この年になって社会科見学をしているようで、様々な勉強をさせて頂きました。本当に皆さん、色んな考えを持ってソ
さて突然なんですが、私と上司(id:j5ik2o)は7月末を以て現職を退職することと相成りました。 まぁ、社内不仲とかクーデターとかそういうんじゃなくて、研究開発プロジェクトをクローズすることになったのであります。私が進めていた研究開発業務としては、みんなで結構頑張って企画を練っていて、その成果として、パイロット版を次週あたりにも社内向けにローンチできる!? とかいうタイミングだっただけに、非常に無念…。 で、このまま会社に残留してSI事業のメンバーとして居残る道もあったのですが、各所で囁かれているように、SIだけを続けていても近々食えなくなる日が見えてきていると思う。そして、都元自身としても、あらためて自分の想いを整理すると、そもそもSIをやりたいがためにこの業界に転進した訳ではないなと思いました。一言で言えば「なんかサービス作りてえよ」*1と思っているので、その道で頑張ってみたい。そん
ダラダラ書かない予定だよ。ざっくり行くよ。あと、分かってる人には当たり前な事だと思うよ。 あるクラスについて知りたかったら、まずその基底クラスを知れ 例えば、Integerクラスについて知りたいと思ったら、Integer.java だけを読んでいてはダメだ。確かに「Integerに特化した責務・構造・操作」は読み取れるかもしれないが、数値としての基本的な責務・構造・操作はNumberに書かれている。それを読まずして、Integerが保つ数値という一面を知ることはできない。Integer.javaには「Integer - Number」*1の情報しか書いてないのだよ。差分プログラミング。 さらに、忘れちゃいけない。Object.javaを読め。全ての道は暗黙的にObjectにつながっている。Objectを知らずしてJavaのクラスを知る事は絶対にできない。Objectなんて、みんな「知った気
前回は 5ユーザ, 7アイテム, 21評価 という非常に小さいデータでした。さて、今回は大きめのデータを使ってみましょう。6040ユーザ, 3900アイテム, 100万評価です。 データの準備 GroupLensというラボが、評価データを公開してくれています。研究開発目的に限り無償で利用できるので、今回はこちらを利用させてもらいましょう。 MovieLens | GroupLens このデータはMovieLensと言い、映画の評価情報の塊です。データ規模別に3つに分かれています。 943ユーザ, 1682アイテム, 10万評価 6040ユーザ, 3900アイテム, 100万評価 71567ユーザ, 10681アイテム, 1000万評価(+10万タグ) ここでは、(何の根拠もないですが)100万評価を選びました。「1M Ratings Data Set (.tar.gz)」ってのをDLしまし
んじゃ、早速Hadoopの疑似分散環境を作ってMahoutを回してみましょう。 HadoopのセットアップとMahoutの入手 まずは利用するHadoopのセットアップ。ここは本題じゃないので要点のみ。 Hadoopのバージョンは最新ではなく v0.20.2 を使いましょう。 Apache Download Mirrorsから hadoop-0.20.2.tar.gz をダウンロードします。 各種設定は基本的にHadoop擬似分散環境メモ(Hishidama's Hadoop pseudo-distributed Memo)参照 設定後、起動する前に、hadoop namenode -format を忘れずに。最初、これ忘れてハマりました。 start-all.sh でHadoop起動。hadoop fs -ls でHDFSに接続できる事を確認。 ちなみに、Hadoopを落とす時は sto
さて、ちょっと間があきましたが。 前回まで、いったんレコメンドを抜けてクラスタリングの世界をご紹介してみた訳ですが。あまりウケがよさそうじゃないのでレコメンドに戻ってみます。 そんな中でMahoutが一押しであるのは、スケーラビリティの確保に重点が置かれていることです。 機械学習というのは、当然、計算に基づいて結果を出すわけですが、その基礎となるデータが多ければ多いほど、確からしい結果を出してくれます。が、しかし、データが多ければ多いほど、指数的に計算量が増加する傾向があります。 Apache Mahoutで機械学習してみるべ - 都元ダイスケ IT-PRESS という導入から紹介に入ったレコメンドですが、実はあのアルゴリズムは分散処理できません。できませんったらできません。だってMapReduceパラダイムで書いてないんだもん。 ということで、先日紹介した処理をそのままMapReduce
以前、Javaのシリアライズ仕様がよくわからなくてエントリを書いた。 難解なSerializableという仕様について俺が知っていること、というか俺の理解 - 都元ダイスケ IT-PRESS まぁ、わからないまま書いたので論点もあっちゃこっちゃ飛びながらのエントリだったわけだけど、一年経ってコメントを頂いた。 serialVersionUIDに関しては、定義をしない場合にはクラスの構造を解釈して勝手にコンパイラが生成してくれます。 つまり、クラスのフィールドを変更したら勝手に変更してくれます。 問題点としては、コンパイラが勝手に計算してくれるので、複数のコンパイラをまたぐ場合に同じ定義のはずだけれども失敗することがある(らしい)ということです。 つまり、記事に書いてあることとは逆ですね。 JavaDocに記載されているのでご参照ください。 http://java.sun.com/j2se/
Domain-Driven Design: Tackling Complexity in the Heart of Software 作者: Eric Evans出版社/メーカー: Addison-Wesley Professional発売日: 2003/08/22メディア: ハードカバー購入: 4人 クリック: 113回この商品を含むブログ (89件) を見る Domain-Driven Design: Tackling Complexity in the Heart of Software というソフトウェア設計に関する本がある。 この設計の考え方は、略してDDDと呼ばれたが、同時に「DDD難民」という言葉さえも生み出したらしい。ハードカバーによる560ページ、6000円を超える、洋書である。今思えば怖い物知らずだった。知らなかったとは言え、よくもまぁこの本を手にとったものだ…。 この
Mahoutシリーズを最初から読む場合はこちらApache Mahoutで機械学習してみるべ - 都元ダイスケ IT-PRESS。前回はこちら今度はMahoutでクラスタリング - 都元ダイスケ IT-PRESS。 準備 まずmvnの依存設定を。以前と同じようにmahout-coreは要ります。それに加えて*1slf4jとlogback*2、そしてcommons-io*3を入れておきます。 pom.xml <dependency> <groupId>org.apache.mahout</groupId> <artifactId>mahout-core</artifactId> <version>0.4</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifa
Mahoutシリーズを最初から読む場合はこちらApache Mahoutで機械学習してみるべ - 都元ダイスケ IT-PRESS。 さて、前回までで、実際にMahoutのレコメンデーションエンジンを動かしてみつつ、その計算原理を軽く追いかけました。今回は、機械学習全般における大事な前提について。 仮定がいっぱい 通常プログラムを書く場合は、事実や仕様に基づいて、正確にプログラミングすることを求められます。可能性の大小や、大ざっぱな計算などに依存したプログラミングはあまり書く機会がありません。例えばあるソフトで扱う業務で、土日祝日料金と平日料金というものがあったとします。これを「1週間のうち、だいたい5日が平日で2日が休日だよね、祝日とかたまにしかないから、考慮すると大変だし、いいよね、べつに」ってことにはなりません。多分。 しかし、機械学習は違います。気づいていないだけで、実はかなり大きな
Mahoutシリーズを最初から読む場合はこちらApache Mahoutで機械学習してみるべ - 都元ダイスケ IT-PRESS。 昨日分析したデータは、1番の人にお勧めなアイテムは104で、4.25点をつけるだろう、という予想でした。なぜこのような計算結果になったのか、なんとなく感覚をつかんでみよう。 入力に使ったCSVデータを、簡単にグラフ化してみたのがこれだ。 レコメンド対象となる1番の人は、青のグラフだ。この青のグラフのパターンに一番似ているのはどれだろう? 101〜103をぱっと見た感じ、紫(5)の人と似た傾斜だと感じると思う。また、赤(4)の人も分かりづらいけど結構似ている。102の評価は抜けているものの、101*1と103の評価は近い。 逆に、緑(2)の人とは正反対の好みを持っているようだ。グラフが逆行している。黄色(3)の人は…、あんまり関連性はなさそうだな。 というような
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
Effective Java 第2版 (The Java Series) 作者: Joshua Bloch,柴田芳樹出版社/メーカー: ピアソンエデュケーション発売日: 2008/11/27メディア: 単行本(ソフトカバー)購入: 77人 クリック: 936回この商品を含むブログ (264件) を見る Java: The Good Partsが(賛否両論の)話題を呼んでいるが、それ以前にEffective Javaは皆さん、読んだだろうか? この本の項目11に、「cloneを注意してオーバーライドする」というセクションがある。そのほかにも、Javaのcloneメソッドは各所で嫌われているようだ。 そのような論調において、clone代替案としては、コピーコンストラクタと、staticなファクトリメソッドがしばしば挙げられる*1。 うん、確かにJavaのcloneメソッドはイケてない。俺もそう
う ご く w w w http://bit.ly/gy1lJ8 都元ダイスケ🍅 on Twitter: "う ご く w w w http://bit.ly/gy1lJ8" えーと。id:kompiroさんとネタかぶりですがw 一足先にScalaを試したのでご報告。 普通に動きました。特に難しいことしてません。id:kompiroさんの手順の変法です、で済まそうとしたらちょっと違ったので手順を箇条書きしときます。 Eclipse for RCPにScala IDEをインストールしとく。 普通のScalaプロジェクトをつくる。 EclipseプラグインプロジェクトでHello worldのスケルトンを作る。 Scalaプロジェクトの .project と .classpath をプラグインプロジェクトに適当にマージする。 Scala-2.7のjarを*1libにコピーしてMANIFES
Java: The Good Parts 作者: Jim Waldo,矢野勉,笹井崇司出版社/メーカー: オライリージャパン発売日: 2011/02/24メディア: 大型本購入: 3人 クリック: 148回この商品を含むブログ (37件) を見る 来る2/23、オライリーよりJava: The Good Partsという訳本が発売されます。この本は、監訳のid:t_yanoさんからお話を頂き、査読に参加させて頂いた関係で、献本を頂きました。どうもありがとうございました。 オライリーからは「The Good Parts」シリーズの書籍が何冊か、既に出版済みです。例えばJavaScript: The Good Partsは、(ざっと眺めただけですが)jsにおけるコーディング指針を紹介しているような印象でした。こう書くと良いよ、こう書くと分かりづらくてよくないよ、という感じ。PHP: The G
昨日一昨日と、デブサミ2011だったわけですが、Jiemamyはそのキックオフセッションを担当させていただき、Jiemamyの新バージョン v0.3.0 を発表しました。壇上の回線をつかって、リリースさせて頂きましたw 昨日一昨日はぐだぐだに疲れていたのでご報告が遅れましたが。以下セッション資料。 DevelopersSummit2011 【17-E-1】 DBも変化せよ - JiemamyView more presentations from Daisuke Miyamoto. Jiemamyも、もうすぐ4歳なんすね。この間、なかなか思うように作れず、作っては壊しで3回目です。各バージョンを一言で表せば、v0.1系は未熟な構成、v0.2はやり過ぎ黒魔術、v0.3は鉄壁の正統派、というイメージですね。 ソフトウェア再利用の神話―ソフトウェア再利用の制度化に向けて (Professiona
Introduction 〜 問題提起 Java魂―プログラミングを極める匠の技 作者: Robert Simmons Jr.,福龍興業,佐藤直生,木下哲也,石井史子出版社/メーカー: オライリージャパン発売日: 2004/10メディア: 単行本購入: 10人 クリック: 157回この商品を含むブログ (82件) を見る 以前、この本を読んだ。ザックリと要約してしまえば「finalは良いぞ。ミスを浮き彫りにしてくれる。ひたすらfinalじゃ。」という内容の本だった気がする。この影響で、自分はfinal厨*1になっていた。本の内容を鵜呑みに(しかも、意図を完全に納得せずw)して、とにかくfinalばっかりのコードを書いて来た。 しかしー。その辺のコードを色々読んでみるも、ここまでfinalを積極利用しているコードって、出会ったことがないのであります。そもそもJavaの「final」ってのは、
昨日ご紹介したbaseunitsですが、そのコードを社内コードレビューに掛けた際、id:cobonasからこんな指摘がありました。 package jp.tricreo.baseunits.util; import java.util.Iterator; /** * 明示的に、対象のコレクションに対する操作ができないことを表す反復子。 * * @param <T> 要素の型 */ public abstract class ImmutableIterator<T> implements Iterator<T> { @Override public void remove() { throw new UnsupportedOperationException("sorry, no can do :-("); } } https://github.com/tricreo/baseunits/b
さて、Java Advent Calendar -ja 2010 : ATND 10日目。昨日は、id:yuroyoro でした。二日連続で真っ黒な魔術が紹介されたので、ここは真っ白で実用的な奴をひとつ。 最近Domain Driven Design(DDD)っていう設計手法が、自分の周辺一部で話題になっている。当然、賛否両論なんだけども*1、個人的には好きな考え方でして。ま、詳細は色々な方がブログに書いているので割愛します。興味あれば本読んでみましょう。洋書*2だけどw Domain-Driven Design: Tackling Complexity in the Heart of Software 作者: Eric Evans出版社/メーカー: Addison-Wesley Professional発売日: 2003/08/22メディア: ハードカバー購入: 4人 クリック: 113
註:本エントリは等幅フォントで見ないと訳の分からない部分があります。Firefoxではきちんと見えるのですが、Google Chromeではなぜかmonospaceが等幅になりません…。というわけで、本エントリはFirefox推奨。SafariでもOKでした。IEは知らん。 さて、昨日の続きです。昨日は区間とは何かということを主に書いてきたのだが、今日はこれをどのようにソートしたらいいのか。あれこれ考えた結果、むしろ多分数学的に優位(有意?)なソートロジックってのは多分存在しないので、主観的にどれが一番理に適っていると感じるのかなぁ、というところをつついてみたい。 そんなわけで、解答はないので、ブクマとか※で、どれが一番イケてると感じたか*1、教えてほしいなぁ。今日は技術とか理屈の紹介じゃなくて、読者をアンケートに付き合わせて俺が考えを整理したいだけです、すみませんがお付き合いをば…。 区
数学用語に「区間」ってのがある。wikipediaによる解説はこちら。 ちなみに、wikipediaって数学系の事しらべると、もう意味わかんないよね、正直w 自分も数学の下地がある人種ではないので、正直数学系の話第だけはwikipediaをアテにできない。まぁ、誰でも分かるように書いてみよう。 わかりやすい「区間」 まぁ、簡単に言えば「5〜8まで」とか、そういう範囲をあらわす概念。で、6はこの区間に含まれるよね。7.5とかもこの区間に含まれる。10は含まれないし、-2も含まれない。じゃあ、5は? 8は? となった時に出てくるのが「開区間」とか「閉区間」ってやつ。境界値を含むのが閉区間で、含まないのが開区間。半開区間ってのもあって、片側だけ開いてて、もう片側は閉じてる奴。 さて、そろそろ言葉で表しづらくなってきたら記号の出番だ。記号は(自分を含め)数学アレルギーには苦手なものだけど、今回ばか
次のページ
このページを最初にブックマークしてみませんか?
『都元ダイスケ IT-PRESS』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く