GoogleのMapReduceはとても便利な技術

GoogleのMapReduceはとても便利な技術である(使えないけど)。特に、ある単語(例えばGoogle)が出現した全てのテキスト・ファイル名を抜き出す際に便利だ。このタスクは、ファイル数が1万ならば簡単に解ける。ワン・ライナーで十分である。例えば、Rubyな…

Rubyでモナドの練習メモ

Haskellに登場するらしいモナドを少し勉強してみる。よくわからないが、試しにMaybeモナドをRubyで書いてみた。どこか間違えていると思うが、コードは下記。 class Maybe def Maybe.wrap( value ) Maybe.new(value) end attr_accessor :value def initialize…

JavaScriptで簡易スタック・トレース&プロファイラ

しばらく前にJavaScriptでのスタック・トレースの保存が話題となっていた。最速インターフェース研究会 :: JavaScriptでDebugScreen、その2 http://d.hatena.ne.jp/brazil/20060117/1137427933これらの記事を読んだとき、以前作ったプロファイラの仕組みを利…

MochiKitと日本語は相性が悪い?

brazilさんのMochiKit解説記事(http://d.hatena.ne.jp/brazil/20060122/1137926216)を読んでいて、関数型言語風のプログラムは読みにくいなと思った。読みにくい原因をつらつらと考えてみると、日本語の言語構造と前置型が相性が悪いのが原因の一つではない…

Googleの技術が凄い理由を考えてみる

Googleの技術が凄いという話は良く聞く。しかし、何故Googleの技術力が高いのかについての論考はあまりないように思える。ドクターが多いからという理由がよく挙げられる。では、Google以外の会社は何故そうしなかったのだろう?Googleの技術力の源泉は、技…

ローカルWebサーバとGreasemonkey

先日のエントリRuby on Railsによるソーシャル・ブックマーク管理デスクトップ・アプリケーション - llameradaの日記は、なかなか好評だったようで、多数のブックマークを頂きました。ありがとうございます。また、投げ銭を下さった方、ありがとうございます…

Ruby on Railsによるソーシャル・ブックマーク管理デスクトップ・アプリケーション

Ruby on Railsで作成したweb アプリケーションは、exe形式の実行ファイルにすることが出来る。詳しくは、Distributing Rails Applications - A Tutorialを参照のこと。この仕組みを知って、何か面白いことが出来ないかなと考えていた。そこで、前から欲しか…

Makeを利用したJavaScriptファイルの結合・圧縮

ある程度の規模のJavaScriptプログラミングでは、モジュール毎に、複数のファイルに分割してプログラミングするのが普通である。これは、ファイルの大きさが適度な方が編集作業が容易なのと、モジュールの別プロジェクトへの再利用性を高めるためである。し…

rchasen: ChaSenの新たなRubyバインディング

SWIGの練習も兼ねて、ChaSenのRubyバインディングを書いてみた。 ChaSenのRubyバインディングは既に公開済みのものがある。しかし、メンテナンスされておらず、コンパイルに修正作業が必要だった。また、ChaSenが提供するAPIの内、一部しか利用できなかった…

欲しいです。

アップルのiMac G5欲しい!

「既存ネットサービスは全てコモディティ化するかもしれない」の感想

先日、google baseはWebアプリケーションをコモディティ化する - llameradaの日記という記事を書いた。その後、Ningを対象としてネットサービスのコモディティ化を論じた既存ネットサービスは全てコモディティ化するかもしれない - FIFTH EDITIONという記事…

google baseはWebアプリケーションをコモディティ化する

google baseが普及した未来について想像してみる。なお、ここでは、google baseが、利用者がデータをサーバに送ると、ブラウザで操作できるデータベースが自動的に生成されるサービスと仮定している。(参考:Google Base の公式な説明 - モジログ) その時…

del.icio.usのエントリを「はてなブックマーク」に登録するブックマークレット

AtomAPIの練習も兼ねて、del.icio.usのエントリを「はてなブックマーク」に登録するブックマークレットを書いてみた。もちろん無保証です。毎日せっせと登録したブックマークやコメントが消滅したとしても笑って許せて、ブックマークレットに「はてな」のパ…

JavaScriptの動的な性質を利用したDOM要素ファクトリ

JavaScriptは動的な言語である。例えば、与えられた文字列から、その文字列に対応するメソッドを簡単に呼び出せる。そこで、この性質を利用したDOM要素のファクトリを作ってみた。 var Factory = function(){}; Factory.prototype = { create: function(name…

JavaScriptの学習効率

Ajaxの登場と共に、JavaScriptに注目が集まっている。それに伴い、JavaScriptを学ぶ人が増えていると思う。私自身もその一人である。JavaScriptを学ぶ中で感じたのは、JavaScriptを効率良く習得するには、他のプログラミング言語での経験が重要だということ…

サーバの負荷低減と可読性を考慮したAjaxコーディング

はてなブックマークの「おすすめ」を求めるブックマークレットでは、「はてなブックマーク」から複数回RSSファイルなどを取得します。この時、サーバへ大きな負荷を与えないよう、1つのファイルのダウンロードが終了してから、次のファイルをダウンロードす…

はてなブックマークの「おすすめ」エントリーを求めるブックマークレット(修正版)

はてなブックマークの「おすすめ」エントリーを求めるブックマークレット - llameradaの日記で公開したブックマークレットの修正版を作成しました。これは、はてなのデザイン変更に伴い、ブックマークレットが動作しなくなった問題点を修正したものです。修…

はてなブックマークのエントリーとタグを2次元平面上に配置するブックマークレット

はてなブックマークのエントリーとタグを2次元平面上に配置するブックマークレットを作ってみました。エントリーとタグの関係を鳥瞰的に眺めることが出来ます。実用性はあまりないですが、人によっては面白いかもしれません。はてなブックマーク上のRSSのア…

はてなブックマークの「おすすめ」エントリーを求めるブックマークレット

はてなブックマークのおすすめブックマーカー・おすすめエントリを求めるブックマークレットを作ってみました。要は、Amazonのおすすめを、はてなブックマークにあてはめて、思いっきり簡単にしたものです。ブックマークレットでも、かなり色々出来ることが…

何故、prototype.jsを使うのか?

http://d.hatena.ne.jp/brazil/20050909/1126254775が列挙しているように、様々なJavaScriptライブラリが公開されている。その中のいくつかを実際に触ってみたが、prototype.jsが一番しっくりきた。何故だろう?1つの理由は、prototype.jsは安心して利用でき…

JavaScriptの簡易プロファイラ

JavaScriptで少し大きなアプリケーションを作っていると、処理速度がどんどん遅くなってしまうことがある。処理速度を向上させるには、ボトルネックとなっている処理を見つけて、その部分のパフォーマンスを改善するのが一般的である。そこで、ボトルネック…

JavaScript でマルチスレッド・デザインパターン

JavaScriptでデザインパターンを書いてみる。とはいえ、いまさらFactoryパターンなど書いても面白くないので、マルチスレッド・デザインパターンにする。もちろん、JavaScriptの言語仕様にスレッドなどない。しかし、ブラウザ環境では実質的にスレッドが存在…

LayeredClass の実装の詳細

JavaScript で private/public の実現 - llameradaの日記で紹介した、LayeredClass の実装方法の詳細について説明する。HogeクラスがLayeredClassだとする。すると、Hogeクラスのインスタンスは、__privateInstanceというメンバ変数を必ず持つ。このとき、__…

Ajaxで用いるデータフォーマットの比較 (JavaScriptコード)

特定のデータフォーマットは用いず、直接JavaScriptのコードを返す手法である。このときブラウザは、サーバが返したコードをevalで直接実行する。例えば次のようなコードをサーバは返す。 insert_cities(["青ケ島青ケ島村", "あ"], ["足立区", "あ"])サーバ…

Ajaxの誤り

原文:Backpack: Ajax Mistakesとても参考になったので、いくつか訳してみる。 「戻る」ボタンを無効にする 「戻る」ボタンは、標準的なWebサイトのユーザーインターフェイスの重要な機能の1つである。不幸なことに、「戻る」ボタンはJavaScriptとの相性が…

JavaScript で private/public の実現

JavaScript は意外に強力な言語である。http://d.hatena.ne.jp/brazil/20050829/1125321936 Private Members in JavaScriptこれらの記事に触発されて、prototype.js風にprivate/public機能をJavaScriptで実現してみた。こんな風にかける。 var Hoge = Layere…

Ajaxで用いるデータフォーマットの比較 (JSON)

JSON (JavaScript Object Notation)は、Ajaxの普及と共に注目を集めつつあるデータフォーマットである。JSONはJavaScriptの文法を用いて、XMLと同様のデータフォーマットを実現している。JSONの詳細についてはhttp://www.crockford.com/JSON/index.htmlを参…

Ajaxで用いるデータフォーマットの比較 (XML)

Ajax(Asynchronous JavaScript + XML)の名の通り、広く用いられているフォーマットの1つである。例えば、次のようなデータをサーバより返す。 <cities> <city initial="あ" >青ケ島青ケ島村</city> <city initlal="あ" >足立区</city> ... </cities>取得したXMLデータよりHTMLを生成するには、大きく分けると2つの方法がある。1つ…

Ajaxで用いるデータフォーマットの比較 (HTML)

Ajax では、XMLHttpRequestを用いてブラウザからサーバからデータを取得する。このときのデータフォーマットとしては、XML, JSON などが様々なフォーマットが用いられている。そこで、それらのフォーマットの優劣を比較する。 HTML 内容を変更するHTML要素の…