2008年 12月 の投稿一覧

Cisco developer content

以前、アルバイトで来てくれていた方*1が紹介してくれた。

シスコは、「プラットフォームとしてのネットワーク」のコンセプトを軸としたイノベーションの推進を目指して、既成概念にとらわれない考え方(think outside the box)のできるアプリケーション開発者の方々に向けて、コンテストを開催します。総額 10 万米ドルの賞金を目指して、Cisco Application Extension Platform(AXP)上で動作するエキサイティングな Linux アプリケーションを開発してみませんか?

というか、こういうプラットフォームがあること自体知らなかった。
ルーターの上で直にアプリケーションが動かせてしまうという訳ですね。C,Java,Perl,Pythonが使えるみたい。
普段の業務とかで太いネットワークを扱っていてCiscoの製品使っていたりすると、こういったプラットフォームがあるのは既知だったりするのだろうか。
少し私には知識が足りない様だ。残念。*2

もっとも、こういう話題を見たときに、私のことを思い出してメールしてくれることだけでも嬉しい。

*1:友達だ。戦友だ。

*2:提案書が英語である必要もあるところもハードルだ(笑)

Talking FM

今日のTalking FMで16時30分頃に流れた曲。

君のすべてに

いい曲だな。と思って、amazon.co.jpで調べて、はてなブックマークでブックマークしたら、既にブックマーク済みだった。
感性が数ヶ月では変わっていなかったということか。
iTunesで検索をすると販売されていたので、ダウンロード購入。

ブラウザに突っ込む。

テレビを見ながら、番組にツッコミを入れることもあるが、最近自分はブラウザにツッコミを入れることがある。

「漢字多いっ!」
f:id:hideack:20081204130213p:image

「お前が落ちるな!」
f:id:hideack:20081204130214p:image

「何故、亀田?」
f:id:hideack:20081204181050p:image

まぁ、どうでもいいんだけど。

発電所と地下世界

曲でも買うか。とiTunesで曲を探すも見つからない。
なんでだろうとしばらく考えた後、KraftwerkUnderworldを勘違いしたまま検索していた件。
自分の頭の出来事とはいえ、結構ショックだ。

きっと脳内回路を合成する時の配置配線にエラーが生じたに違いない。

Mapreduce1

最近、全く新しい知識が入らないので自発的に勉強中。
Mapreduceは、googleで利用されている分散処理アルゴリズム。
名の通り、"Map処理"と"Reduce処理"の2段階に分けて処理が行われる。
詳しくは末尾の参照ページをば。
内容をざっくり書くと...

  • Map処理
    • 入力情報に何らかの処理を加えて連想配列(Key-Valueの組み合わせの配列)*1を構築する処理
    • 入力情報が膨大であっても、分割可能な問題であればMap処理を行う処理系の数に入力情報を分割して分散して処理ができる
  • Reduce処理
    • Map処理で作られた連想配列をまとめる処理をして出力情報を作る*2

といった具合。
やってることはシンプルなのだけど、googleもこのアルゴリズムを使ったアプリケーションはかなり多く書かれているそうだ。

で、何かプログラムを書いてみないとわからないということで書いてみる。
ほとんど、下の参照ページ "www.joelonsoftware.com"のままですが...。JavaScriptで書いてみました。
あと、ここではMap処理の出力のKeyと入力のKeyが一致していますが、一致している必要は本来はないはずだし、もう少し別の書き方もある気がする。Umm....

var Mapreduce = Class.create();
Mapreduce.prototype = {
initialize : function(){
},
map : function(fn, ary){
for(i=0; i<ary.length; i++){
ary[i] = fn(ary[i]);
}
},
reduce : function(fn, ary, init){
var s = init;
for(i=0; i<ary.length; i++){
s = fn(s, ary[i]);
}
return s;
}
};
    • 配列の各要素を2倍してその合計を求めるというもの
mapreduce = new Mapreduce();
sample_ary = [1,2,3];
mapreduce.map(function(a){return a*2}, sample_ary);
s = mapreduce.reduce(function(x,y){return x+y;}, sample_ary, 0);
alert(s);

もしかしたら、まだ続くかもしれない。

*1:PHP的な言い方?

*2:大ざっぱすぎる理解かもしれない...