タグ

ブックマーク / naoya-2.hatenadiary.org (74)

  • 第11回 Kansai.pm / スペルミス修正プログラムを作ろう - naoyaのはてなダイアリー

    昨日は第11回 Kansai.pm でした。 今回は無理を言って自分がホストを担当させていただきましたが、面白い発表が多く開催した自分も非常に満足でした。 PFI の吉田さんによる Cell Challenge での計算機に合わせたアルゴリズムのチューニング手法の発表 (発表資料) は圧巻でした。伊奈さんの文抽出の話 (発表資料)、はこべさんのコルーチンの話 (発表資料)、いずれも難解になりがちなところを凄く分かりやすく解説されていて、さすがだなと思いました。各々ショートトークも、いずれも良かったです。 スペルミス修正プログラムを作ろう 自分も 20 分ほど時間をいただいて、スペルミス修正プログラムの作り方について発表しました。 スペルミス修正プログラムを作ろうView more presentations from Naoya Ito. スペルミス修正プログラムについてはずばり スペル

    第11回 Kansai.pm / スペルミス修正プログラムを作ろう - naoyaのはてなダイアリー
  • ソフトウェアアーキテクトが知るべき97のこと / 池袋ジュンク堂で鈴木雄介さん、小野和俊さんとイベント - naoyaのはてなダイアリー

    "97 Things Every Software Architect Should Know" という洋書の邦訳が、"ソフトウェアアーキテクトが知るべき97のこと" (www.oreilly.co.jp, www.amazon.co.jp)というタイトルで 10月5日、オライリーから発売です。 ソフトウェアアーキテクトが知るべき97のこと 作者: 鈴木雄介,Richard Monson-Haefel,長尾高弘出版社/メーカー: オライリージャパン発売日: 2009/10/05メディア: 単行(ソフトカバー)購入: 17人 クリック: 362回この商品を含むブログ (82件) を見る 第一線で活躍するソフトウェア・アーキテクト達が、独自の視点でアーキテクトという職業やソフトウェア開発にまつわる事柄についてのエッセイをそれぞれ執筆、それが 97 あるというコラム集です。 邦訳版では、日

    ソフトウェアアーキテクトが知るべき97のこと / 池袋ジュンク堂で鈴木雄介さん、小野和俊さんとイベント - naoyaのはてなダイアリー
  • naoyaのはてなダイアリー - Hatena ID Auto-Discovery の仕様

    前回のエントリーではたくさんのコメント、トラックバックをいただき、ページの中にはてなアカウント名を埋め込む仕様が徐々に固まりつつあります。FOAF を使う、microformats 的解決手段を使う、PI を使うなどいろんな方法があるんだなあと勉強になりました。それから rel="payment" なんて話が海外ではあがっているという事も知りました。 それでどれを採用しようか、というところですが、投げ銭以外の目的でもそのページを書いている人の ID が取得できると将来的に拡がりがありそうだと思い、汎用的な Dublin Core を使った表現方法を試してみています。 <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" /> <link rel="DC.creator" title="id:naoya" href="ht

    naoyaのはてなダイアリー - Hatena ID Auto-Discovery の仕様
    satojkovic
    satojkovic 2009/07/27
    はてなIDのAuto Discoveryの仕様
  • B木 - naoyaのはてなダイアリー

    昨年から続いているアルゴリズムイントロダクション輪講も、早いもので次は18章です。18章のテーマはB木(B Tree, Bツリー) です。B木はマルチウェイ平衡木(多分木による平衡木)で、データベースやファイルシステムなどでも良く使われる重要なデータ構造です。B木は一つの木の頂点にぶら下がる枝の数の下限と上限を設けた上、常に平衡木であることを制約としたデータ構造になります。 輪講の予習がてら、B木を Python で実装してみました。ソースコードを最後に掲載します。以下は B木に関する考察です。 B木がなぜ重要なのか B木が重要なのは、B木(の変種であるB+木*1など)が二次記憶装置上で効率良く操作できるように設計されたデータ構造だからです。データベースを利用するウェブアプリケーションなど、二次記憶(ハードディスク)上の大量のデータを扱うソフトウェアを運用した経験がある方なら、いかにディ

    B木 - naoyaのはてなダイアリー
  • PDL で PageRank - naoyaのはてなダイアリー

    id:smly さんが PageRank や HITS を Python で実装 されているのに触発されて、自分も PageRank を Perl で実装してみました。 PageRank の計算の中心になるのは Power Method (べき乗法) です。べき乗法では行列とベクトルの積を計算しますので、手軽に使える行列演算ライブラリがあると楽でしょう。 色々調べてみたところ、PDL (The Perl Data Language) が良く使われているようでしたので、これを選択しました。PDL では各種行列演算が簡単に行える他、文字列評価をオーバーライドして行列の文字列出力を良い具合で定義してくれていたりと、なかなかに便利です。PDL は行列計算以外にも色々な科学技術計算やグラフ描写などの操作をサポートしているようです。 さて、PDL を使った PageRank 計算のコードは以下のように

    PDL で PageRank - naoyaのはてなダイアリー
  • Latent Semantic Indexing - naoyaのはてなダイアリー

    情報検索におけるベクトル空間モデルでは、文書をベクトルとみなして線形空間でそれを扱います。この文書ベクトルは、文書に含まれる単語の出現頻度などを成分に取ります。結果、以下のような単語文書行列 (term document matrix) が得られます。 d1 d2 d3 d4 Apple 3 0 0 0 Linux 0 1 0 1 MacOSX 2 0 0 0 Perl 0 1 0 0 Ruby 0 1 0 3 この単語文書行列に対して内積による類似度などの計算を行って、情報要求に適合する文書を探すのがベクトル空間モデルによる検索モデルです。 見ての通り、単語文書行列の次元数は索引語の総数です。文書が増えれば増えるほど次元は増加する傾向にあります。例えば索引語が100万語あって検索対象の文書が 1,000万件あると、100万次元 * 1,000万という大きさの行列を扱うことになりますが、単

    Latent Semantic Indexing - naoyaのはてなダイアリー
  • アルゴリズムイントロダクション輪講@京都 - naoyaのはてなダイアリー

    社内エンジニアの間に、計算機科学をマジメにやろうという機運が高まっています。それを受けはてな社内で計算機科学に関する教科書の輪講をやろうという話になりました。という訳でまずはアルゴリズムの教科書「アルゴリズムイントロダクション 第1巻 改訂2版 (1)」を輪講してみることにします。はてなスタッフだけでなく社外からの参加も募集しているので、京都オフィスに近い方はぜひご参加下さい。 id:motemen がコンピュータサイエンス関連書籍の輪講を開催するとのこと。もちろん自分も参加します。教科書は何が良いか色々考えたようですが、まずはアルゴリズムイントロダクションに決まったようです。アルゴリズムイントロダクション、ちょうど今日届いたのでざっと見てみた所、数学的な観点からアルゴリズム/データ構造についての基礎を論じている良い書籍だと思いました。 アルゴリズムとデータ構造は最も重要な基礎ですが、これ

    アルゴリズムイントロダクション輪講@京都 - naoyaのはてなダイアリー
  • Introduction to Information Retrieval #6 の復習資料 - naoyaのはてなダイアリー

    Introduction to Information Retrieval の6章の復習資料を以下にアップロードしました。 http://bloghackers.net/~naoya/iir/ppt/iir_06.ppt 6章はスコアリング(重み付け)がテーマです。スコアリングの基として、文章の属性毎に重みを与えてスコアを計算する Weighted zone scoring が最初に紹介されています。次に、文書に含まれる単語に重みを与える方法として tf-idf が話題に挙がります。tf-idf などで各単語に数値を与えられたドキュメントは、各単語の重みを成分とする M 次元 (M は辞書の単語数) のベクトルとみなすことができます。このドキュメントベクトルをM次元空間に展開しベクトル計算でドキュメント間の相関(類似性)を算出する手法として Vector space model の解説が

  • Kansai.pm での発表資料 (Hadoop Streaming で MapReduce) - naoyaのはてなダイアリー

    Kansai.pm に参加しました。とても楽しかったです。自分も "Hadoop Streaming で MapReduce" という題目で発表しました。取り急ぎ、資料を以下に公開します。 http://bloghackers.net/~naoya/ppt/080530kansaipm.ppt MapReduce は Google のバックエンドで動いている分散並列バッチ処理システムです。GFS は Google の分散ファイルシステムです。Google ウェアのクローンとしてオープンソースで開発されているのが Hadoop。Hadoop は Yahoo! Inc や Facebook, Amazon.com などでも利用されているとのこと。Hadoop は Java ですが、Hadoop Streaming を使うと Java 以外でも MapReduce できます。 以下のエントリも合

    Kansai.pm での発表資料 (Hadoop Streaming で MapReduce) - naoyaのはてなダイアリー
  • 勉強、学ぶ - naoyaのはてなダイアリー

    先週、サポートのアルバイトスタッフと、プログラミングの話題になった。プログラミングを勉強している、とのことだった。もちろん、自分は「それを続けると良いと思う」ということを言った。 少し前の自分だったら「プログラミングの勉強を続けると良いと思う」という言葉は、嫉妬や羨望、あるいは自己肯定からの言葉だったのではないかと思う。今もそういう部分がないとは言い切れないが、以前とは少し違っているように思う。 このスタッフがプログラムを書けるようになったとして、それが直接仕事に役に立つかどうかは人次第だと思う。"直接的に役に立つ"という保証はない。 そういうことではない。 何かシステム的なトラブルが起こったとき、自分ではない誰かが何かの操作で困っているとき。プログラムの世界についての知識、慣れ、経験があると、第六感が働くようになる。プログラムのおかしな挙動の、その振る舞いだけを見て、原因がどのあたりに

    勉強、学ぶ - naoyaのはてなダイアリー
  • Emacs の vc-annotate - naoyaのはてなダイアリー

    もしかしたら常識なのかもしれませんが、Emacs の vc-annotate がとても良いです。vc-annotate は vc (version control, バージョン管理システムのフロントエンドEmacs から直接 svn {diff, commit, revert} することができる) に含まれる機能の一部です。vc-annotate を使うと、バージョン管理システム、例えば Subversion に保存された過去の履歴を気になったときにとても容易に調べることができます。 ソースを開いて M-x vc-annotate (C-x v g) すると (そのファイルがバージョン管理化に置かれて居れば) vc-annotate-mode になります。例えば Subversion で管理されている plagger の Plagger::Plugin::CustomFeed::Debu

    Emacs の vc-annotate - naoyaのはてなダイアリー
  • ソフトウェア技術者としての残り時間 - naoyaのはてなダイアリー

    年始の NHK でのイチロー特集番組を見ていて一番印象に残ったのは、他の人の道具を絶対に触らないというイチローのこだわりでした。曰く、人の道具を触るとその道具の感覚が体に残ってしまい、自分の道具を利用するときの感覚の妨げになるから、ということでした。全体を通して、イチローは他のプレイヤーとの相対的な競争の中に身を置いているのではなく、絶えず自分を改良し続けるという過程の中にいるのだというのがよくわかる内容でした。良い番組だったと思います。 気づけば自分も 30 歳になりました。まだ若いとは思っていますが、さすがに 20 代の頃に比べると、病気や怪我の治りが少し遅くなったと感じることもあり、少しずつ自分の人生、「死」ということを考えるようにもなりました。時間は有限ということが少しずつ実感できるようになってきました。あるいは実感できるようになってしまった、と言った方が良いかもしれません。 ここ

    ソフトウェア技術者としての残り時間 - naoyaのはてなダイアリー
    satojkovic
    satojkovic 2008/03/07
    共感。自分もこれまでと違って物事を後ろから数えるようになった。「仕事ができるのはあと何年」とか。
  • Introduction to Information Retrieval #2 (前半) の復習資料 - naoyaのはてなダイアリー

    id:naoya:20080205:1202208135 から引き続き、Introduction to Information Retrieval 2章の復習資料を以下にアップロードしました。 http://bloghackers.net/~naoya/iir/ppt/iir_02_1.ppt 今回は 2 章の前半、インデックス作成前のドキュメントの前処理に関する話題が中心です。2章は長かったので、区切りの良いところまでとなっています。次回の輪読会は 3/8 予定です。また次回の開催日後に、先週末の復習分である 2章残りと 3章前半についての資料を公開したいと思います。 過去の章のアーカイブは同 URL のディレクトリ (http://bloghackers.net/~naoya/iir/ppt/) から一覧できます。

    Introduction to Information Retrieval #2 (前半) の復習資料 - naoyaのはてなダイアリー
  • Introduction to Information Retrieval #1 の復習資料 - naoyaのはてなダイアリー

    Introduction to Information Retrieval の 輪講 に参加しています。自分はこの輪講で復習係を担当させてもらっています。毎回輪講の頭に、前回分の内容をサマリしてプレゼンテーションする係です。 これから輪講の度、作成した資料を公開していきたいと思います。第一回目の資料を以下に置いておきます。 http://bloghackers.net/~naoya/iir/ppt/iir_01.ppt (ppt, 274K) 第一回目は、書籍の第一章 "Boolean Retrieval" の復習です。大規模データを検索する検索システムにおいて、転置インデックスはどのように作成されるか、またブーリアン検索 (「渋谷 and ラーメン」という検索クエリの類) はどう処理されるかといったことの導入部です。 先週末の第二回目は、転置インデックス作成時の前処理部分(トークナイズ、

    Introduction to Information Retrieval #1 の復習資料 - naoyaのはてなダイアリー
  • naoyaのはてなダイアリー - Jemplate で JavaScript でもロジックとビューを分離する

    JSON を Template-Toolkit で展開する Jemplate という記事を書いたんですが、Jemplate を使うと何がいいかってのをもう少し詳しく書いてみます。 Jemplate は TT で JavaScript 上の JSON を展開できるんですが、それだけ聞いてもしかすると「これで普段サーバーサイドでやってるテンプレートの展開をクライアントサイドに持って行けて負荷がクライアントに移ってウマー」っていうのが使いどころのようにも思えちゃいますけど、そうじゃない。検索エンジンに引っかからなくなったりとか、アプリケーションの使い勝手が悪くなったりとか色々弊害があります。 そうじゃなくて、Jemplate は JavaScript のためのテンプレートとして使います。 試しに Catalyst で簡単なアプリケーションを作ってみました。ちょっと動かしておく環境がないのでソース

  • naoyaのはてなダイアリー - JSON を Template-Toolkit で展開する Jemplate

    Jemplate is a templating framework for Javascript that is built over Perl's Template Toolkit (TT2). Jemplate parses TT2 templates using the TT2 Perl framework, but with a twist. Instead of compiling the templates into Perl code, it compiles them into Javascript. かぜぶろさんや宮川さんがブックマークしてたので気になってちょっと見てみた新着モジュールの Jemplate。なかなか面白いです。Template-Toolkit で記述したテンプレートのテンプレート変数に JavaScript 上の JSON を展開させることができるという

    naoyaのはてなダイアリー - JSON を Template-Toolkit で展開する Jemplate
  • Web::Scraper - naoyaのはてなダイアリー

    Today I've been thinking about what to talk in YAPC::EU (and OSCON if they're short of Perl talks, I'm not sure), and came up with a few hours of hacking with web-content scraping module using Domain Specific Languages. 使ってみたよ! #!/usr/local/bin/perl use strict; use warnings; use FindBin::libs; use URI; use Web::Scraper; use Encode; use List::MoreUtils qw/uniq/; my $links = scraper { process 'a.key

    Web::Scraper - naoyaのはてなダイアリー
  • naoyaのはてなダイアリー - ライブドアのテクノロジーセミナーでしゃべってきました。

    昨晩はライブドアで開催されたテクノロジーセミナーで軽くはてなのシステムや開発体制についてしゃべってきました。資料を以下に置いておきます。 http://bloghackers.net/~naoya/ppt/061214livedoor_hatena.ppt (ppt, 286k) 昨晩の感想、資料を読んでの感想など、トラックバックでお待ちしております。

    naoyaのはてなダイアリー - ライブドアのテクノロジーセミナーでしゃべってきました。
  • Professional MacOSX - naoyaのはてなダイアリー

    オープンソースマガジンのムックで Professional Mac OS X (SOFTBANK MOOK) なんてが発売されているらしく、なぜか気がついたら手元にありました。 Professional Mac OS X (SOFTBANK MOOK) 出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/03メディア: ムック クリック: 28回この商品を含むブログ (22件) を見る どれどれと思って中を見たんですが、これはマニアック。UNIX ハカー向けに OSX のあれやこれをかなり突っ込んで解説している記事が満載です。で、ムックということもあって、オープンソースマガジンで連載されてる "Undocumented Mac OS X" が第一回から第五回まで載ってるキタコレ! Undocumented Mac OS X は男気溢れる UNIX 的 MacOSX 解体新書

    Professional MacOSX - naoyaのはてなダイアリー
  • naoyaのはてなダイアリー - HTML::TagCloud

    del.icio.us / miyagawa 経由で見つけた CPAN モジュール HTML::TagCloud。Tag Cloud (はてなブックマークの右側に出てくるタグ一覧みたいなやつ) を生成する CPAN モジュールです。 出力はどんな感じかなと思って使ってみました。 #!/usr/local/bin/perl use strict; use HTML::TagCloud; my $tags = [ { tag => 'blog', count => 20}, { tag => 'ajax', count => 10}, { tag => 'mysql', count => 5}, { tag => 'hatena', count => 12}, { tag => 'bookmark', count => 30}, { tag => 'rss', count => 1}, { t

    satojkovic
    satojkovic 2006/05/23
     PerlのTagクラウド作成モジュール