<   2007年 04月 ( 15 )   > この月の画像一覧
javascript で関数プログラミング
カエルチュウイホウ - elispで高階関数
とか思ったのでperlでも書いてみた。
my $inc = sub {$_[0] + 1};
my $cube = sub {$_[0] ** 3};

sub sum {
my ($term,$a,$next,$b) = @_;
return 0 if $a > $b;
$term->($a) + sum($term,$next->($a),$next,$b);
}

print sum($cube,1,$inc,80);

 ということで、javascript でも書いてみた。
var inc = function(n){ return n + 1 };
var cube = function(n){ return n * n * n };

function sum (term, a, next, b) {
if (a > b) {
return 0;
}
else{
return term(a) + sum(term, next(a), next, b);
}
}

console.log(sum(cube, 1, inc, 10)); //=> 3025

 うーん、、、なんかそのまんまでひねりが無い(特に何も考えなくても出来てしまう javascript が面白いという話もあるけど)。

 ということで、高階関数に渡す関数をクロージャにしてみる。TermMaker と IncMaker がクロージャを作る関数。
var TermMaker = function (time) {
return function (n) {
return Math.pow(n, time);
}
}

var IncMaker = function (plus) {
return function (n) { return n + plus };
}

function sum (term, a, next, b) {
if (a > b) {
return 0;
}
else{
return term(a) + sum(term, next(a), next, b);
}
}

var inc = IncMaker(1);
var cube = TermMaker(3);
console.log(sum(cube, 1, inc, 10)); //=> 3025;

var inc2 = IncMaker(2);
var sq = TermMaker(2);
console.log(sum(sq, 1, inc2, 50)); //=> 20825

 ま、そんな感じで。


4/28 追記
TermMaker を
var TermMaker = function (time) {
return function (n) {
var ret = n;
for (var i = 0; i < time - 1; i++) {
ret *= n;
}
return ret;
}
}
から
var TermMaker = function (time) {
return function (n) {
return Math.pow(n, time);
}
}
に書き換えた。
[PR]
by fkmn | 2007-04-27 23:28 | IT
常識を越えるサービスは、常識にとらわれない設計から
TAKESAKO @ Yet another Cybozu Labs: ニコニコ動画勉強会に行ってきました
複数テーブルにまたがるJOINは避ける
非正規化ロジックで対応
コメントはCSVデータで保存
1000行以上のCSVデータはインデックス化

 サービスを利用していて、これを作っている人はただ者じゃないと感じていた直感は間違いじゃなかった。なんかもう、フツーに開発してたんじゃ出てこない話ばっか。

 この勉強会は楽しそうだ。できれば、僕も参加して直接話を聞ければなぁ、と思ったり。

 あと、
あと、勉強会プレゼン中に参加者がケータイでリアルタイムにツッコミができるニコニコプレゼンのアイデアは面白かったです。
というのがスゴい気になる。このシステムって、メチャクチャ画期的なんじゃなかろうか?
[PR]
by fkmn | 2007-04-26 23:55 | 日記
SICP再開に向けて emacs + gauche の環境を整えた
 情報処理試験とか、Java の講師とかが終わって一段落したので、中断していた SICP を再開する事にした。

 いままでは DrScheme (Mac版) を使っていたんだけど、日本語を On にしたままで「実行」したりすると、ソフトが暴走して、ソフトを強制終了しなきゃいけないのがとても面倒くさかった。

 で、せっかくなので、emacs から Scheme を使えるように環境を整え直した。といっても、手順的には以下のような感じで、大した事ない。


1、Scheme 処理系のインストール
 Gauche をインストールした。ダウンロードページからソースを落としてきて、手順通りにコンパイルしてインストール。


2、Emacs の Scheme-mode で gauche を使うように設定
 以下の設定を .emacs に追加
(setq scheme-program-name "gosh")
(require 'cmuscheme)

(defun scheme-other-window ()
"Run scheme on other window"
(interactive)
(switch-to-buffer-other-window
(get-buffer-create "*scheme*"))
(run-scheme scheme-program-name))

(define-key global-map
"\C-cS" 'scheme-other-window)


3、Shceme-mode を使う
C-c S     別ウィンドウで gauche インタプリタが起動する。
C-c C-l     Scheme file のロード
C-x C-e     直前のS式を評価
M-C Space     カーソルの次のS式をマーク
M-C-a     カーソルを含むトップレベルのS式の先頭へ移動
M-C-e     カーソルを含むトップレベルのS式の末尾へ移動
M-C-f     次のS式へ移動
M-C-b     前のS式へ移動
M-C-t     カーソルの前後のS式を交換

 特に、上の3つはよく使う。S式の単位で評価できるので便利。やっぱ Emacs いいわ。

参考サイト:Kahua HEAD|eg|emacs
[PR]
by fkmn | 2007-04-25 23:46 | IT
【感想】My Job Went To India

Amazon.co.jp: My Job Went To India オフショア時代のソフトウェア開発者サバイバルガイド: 本: Chad Fowler,でびあんぐる

 「プログラマーかくあるべし」、・・・いや、そんなのんびりした感じじゃないな。「プログラマーとしての生き残り術」、そんな感じだろうか。

 本書は、筆者のインドでのオフショア開発現場での体験を元に、フラット化の進むソフトウェア開発業界で、ソフトウェア開発者が生き残るための方法を説明したもの。全部で52の小さな話題からなっていて、それらは、以下の4+2の章に分かれている。
  1. 市場を選ぶ
  2. 製品に投資する
  3. 実行に移す
  4. マーケティング
  5. 研鑽を怠らない
  6. 勝てないならば

 各話題の最後には、「今すぐ始めよう!」という部分があって、どう行動すべきかについても、具体的なアドバイスがある。この本に書いてある事をすべて実践するのは、正直大変そうだけど、いくつかは取り組んでみたいと思う。

 個人的に印象に残ったのは「8 一番の下手くそでいよう」という話題。やっぱり、成長のためには、自分をそういう環境におくのが重要だと思う。どっかで見つけないとな、そんな環境。
[PR]
by fkmn | 2007-04-24 23:22 | 読書記録
Java の新人教育講師をやってみての雑感
a0057891_22531697.jpgAmazon.co.jp: やさしいJava 第3版: 本: 高橋 麻奈

 先週は丸々一週間(4/16-20)、Java の新人教育の講師をやっていた。プログラミング初心者もいたので、「Java入門」というよりは「プログラミング入門」といった感じの内容で色々話してきた。テキストは「やさしいJava」。
 というわけで、以下雑感。

Java は初心者にやさしい

 教えていて感じたのは、Javaのコアの(プリミティブな)部分は、シンプルかつハマりどころが無いように出来ているということ。使っていると、ごく自然にオブジェクト指向的な考えが出来るようになっている。プログラミング初心者が、導入として勉強するには良い言語だと思う。(これが、J2EE な技術になると、なんであんなに複雑で面倒くさくなるんだか・・・)

シンタックスハイライトできるエディタはあった方が良い

 ダブルクォーテーションの括りかた、大文字小文字の区別、全角文字の混入あたりは、初心者のハマりどころ。その辺の、あまり本質的でない部分に時間を取られないように、シンタックスハイライトできるエディタは用意しておいた方が良いと思う。Eclipse みたいな IDE まで用意するのはやり過ぎか。

コンパイル -> 実行 は素早くできるように


> javac Foo.java && java Foo
 上のようなコマンドを教えておいて、「コンパイル -> 実行」を一発で済ませられるようにした。結構便利。


 講習の最後の方になると、「コンパイルエラーのメッセージが訳分からんです」と言っていた人たちが、エラーメッセージを確認して、ソースをきちんと修正できるようになっていたのが印象的だった。みんなすごいなぁ。


追記:
 最近、Java ではなく Ruby の案件の話が増えてきた、という話をちらほら耳にする。どっちかと言うと Rubyサイドにいる僕としては、Java案件の多さが目につくけど、最近のSI業界はどうやらそうでもないらしい。
[PR]
by fkmn | 2007-04-22 22:51 | IT
東京タワーに登ってきた
ひょんなことから、東京タワーに登ってみる事になった。関東に住み始めて4年目になるけど、東京タワーに登るのは初めて。

a0057891_23411678.jpg

東京タワーの下の方から写真を撮ってみた。


a0057891_234130100.jpg

階段を歩いて展望台まで登ったら、認定証を貰った。


a0057891_23464074.jpg

展望台からレインボーブリッジ方面の景色。


a0057891_23455576.jpg

展望台には、こんな感じで、下の方が透けて見えるガラスの部分がある。結構怖い(笑)。

そんなこんなで、関東移住4年目にして、東京を満喫してきたw。
[PR]
by fkmn | 2007-04-21 23:34 | 日記
【感想】 「生きている」を見つめる医療——ゲノムでよみとく生命誌講座
a0057891_0261024.jpg
Amazon.co.jp: 「生きている」を見つめる医療——ゲノムでよみとく生命誌講座: 本: 中村 桂子,山岸 敦

 なんだか、読んだ本の感想を書くのも久しぶり。別に本を読んでいなかったわけではなくて、なんとなく書きそびれていただけなのですが。というわけで、最近読んだ本書の感想をば。

 本書は、現代に暮らす私たちにとって、「生きる(暮らすとか生活すると言った方が良いかもしれない)」とはどういう事かを、生命科学を軸に、あらためて考えさせてくれる。

 決して、科学礼賛とか、または逆に科学を糾弾するような内容ではない。今までに明らかになっている科学的知見が、どのように私たちの生活(医療)に関わってくるか、また医療にとって、科学の進歩以上に大切なものはなにか、ということを冷静な視点で語ってくれる。

 そして、文章も非常に読みやすい。多少専門的な話が出てくる場面でも、それを専門的だと感じさせない文章の妙がある。

 本書は、元々医学部の新入生向けに書かれたとのことだけど、それがこういう形で一般の人たちにも広く読めるようになっているのは、とても喜ばしい。「生きている」以上、医療というのは私たちに必ず関わってくる問題なわけで、医学部の学生だけではなく、「生きている」すべての人にお勧めしたい一冊。
[PR]
by fkmn | 2007-04-18 23:10 | 読書記録
RubyKaigi2007 のチケットを予約した
日本 Ruby 会議 2007

チケットの予約開始が今日の10:00からだったので、ポチっと予約しておいた。今、確認したところ、 まだチケットは残ってるっぽい。

8月のLLイベントはどうしよう。行ってみようかな?
[PR]
by fkmn | 2007-04-14 23:51 | 日記
twitter 始めました
a0057891_0513661.jpg


流行ってるらしいので、つられてアカウントを作ってみた。
http://twitter.com/fkmn

なんと言うか、まだいまいち掴みきれていない・・・。エキサイトブログには Badge を貼付ける事も出来ないし・・・。

よろしければ、Add してやってください。


追記:
エラー画面カワユス。これは・・・、使える(笑)。
秋元@サイボウズラボ・プログラマー・ブログ」さん、「tsupoのついったーめも」さん経由

404エラー
a0057891_1254831.jpg



500エラー
a0057891_1255718.jpg

[PR]
by fkmn | 2007-04-11 23:50 | 日記
マイクロソフトは死んだのか?
a0057891_040675.jpg

Microsoft is Dead 日本語訳
原文:Microsoft is Dead

 僕もプライベートではMS製品なんて全く使ってないなぁ。コンピュータは Mac だし、MS Office なんか使わなくても、OpenOffice(NeoOffice)で十分だし(そもそも Officeスイート自体、プライベートで使う場面がほとんどない)。

 とか考えてたら、マウスがMS製だった。アウチ。

 でも、実際のところ、実際に体に触れるヒューマンインターフェース的なところって、Apple はクソだよね。Mac に付属のあの丸くてテカテカしたマウスは使いにくくてしょうがない。キーボードもなんか打ちにくいし。その点、MS製(ブランド?)キーボードとかマウスは使いやすいと思う。そこは間違いない。

 ただ、最近のマイクロソフトに魅力が全くないのも確か。やる事全部何かのマネにしか見えない。「Windows Vista の新機能」なんて、全部どっかで見たようなのばっかだし。更には、Flash に対抗して「WPF/E」だとか。いや、企業規模とかマネーパワーとかを駆使して、他人がついてこねた餅を食べにいくのは、企業戦略的には正しいのかもしれないけどさ・・・。でも、そんな事ばっかりやる会社に、魅力はないよね。
[PR]
by fkmn | 2007-04-09 23:39 | IT


とあるWebアプリケーションエンジニアの日記
カテゴリ
以前の記事
ブログパーツ
リンク
検索
タグ
最新のトラックバック
プログラミングが「出来る..
from とりあえず9JP?
Genographic ..
from ナンジャモンジャ
ジュセリーノ
from ありの出来事
くちこみブログ集(ライフ..
from くちこみブログ集(ライフ)(..
以降、丁寧語で行こう!
from エッセイ的な何か
その他のジャンル
ファン
記事ランキング
ブログジャンル
画像一覧

fkmnの最近読んだ本 フィードメーター - フッ君の日常 あわせて読みたい AX