あどけない話

インターネットに関する技術的な話など

JavaScript

クライミングジム・マップ

重い腰を上げて、クライミングジム・マップを更新しています。 クライマーの方へ ずいぶんさぼっていましたが、ジムをいくつか追加しました。手元の未登録リストには、まだ30弱ぐらいのジムあります。暇を見つけては追加していきます。 Googlemaps プログラ…

高階関数と無名関数

Ruby ではブロックが自慢らしい。制御構造を自由に作れる感じがするのだと言う。 obj.foo do |x,y| x を使う y を使う end これは、高階関数の最後の引数として無名関数を渡していることに他ならない。他の言語でどうなるか考えてみる。JavaScript ではこう…

動的型付言語とデザインパターン

「具体例で説明するデザインパターン」は、よく使われている JavaScript のデザインパターンについて分りやすく説明しています。そもそも、僕がこのブログを始めた理由は、JavaScript のデザインパターンを議論したいからでした。(今では、全然違う内容にな…

Firemacs 3.1

Firemacs 3.1が受理され、正式にリリースされました。Firefox 3 を使っている人は、ぜひ活用して下さい。

Firemacs 3.1 のバグ

あー、提出した途端にバグを発見。はぁ。wiki のアクセスキーが自動的に解除できなくなっていました。Google のお告げで、一瞬で直せました。Firefox 3 で XPath を使うには、適切な `document' を使わないといけないんですね。

Firemacs 3.1

Firemacs 3.1を提出しておきました。承認されれば、公開されます。

Firemacs 3.0

というわけで、beta リリースとして、以下に Firemacs 3.0 を置きました。http://www.mew.org/~kazu/firemacs-3.0.xpi安定したら、3.1 として正式に公開します。

Firemacs for Firefox 3 (3)

Firefox 3 では、URLバー以外のメニューでも移動できちゃう!

Firemacs for Firefox 3 (2)

ややや、メニューの移動もできちゃいました!

Firemacs for Firefox 3

耐え難きを耐え、忍び難きを忍び、Firemacs と Firefox 3で書いた問題の内、ようやく検索をサポートしました。リリースは、その内ね。。。

Firemacs と Firefox 3

Firefox 3 で Firemacs を試してみました。使えなくなっていた機能: URL 補完メニューでの移動 検索 本腰を入れて、対応しないといけませんねぇ。

あなたはどれが好き?

イベントリスナーの実装の違いを吸収するために、よく以下のようなコードを書きます。 var setHandler = (function() { if (addEventListener) { return function(el, type, func) { el.addEventListener(type, func, false); }; } if (attachEvent) { retur…

Firemacs 2.4

Firemacs 2.4 のリリースをお願いしたところ、ようやく公開されました。次は Flock でもサポートしてみようかなぁ。(内部が違い過ぎて無理だとは思うのだけれど。)

Emacs と Ajax

巷では、やれ Ajax だとか、RIAだとか騒がれていますが、Ajax の非同期性は基礎がなってない、というお話です。 Emacs Emacs では、コマンドを start-process で起動したり、TCP コネクションを open-network-stream で開くと、それは非同期プロセスに見えま…

JavaScript で Singleton

Singleton は、インスタンスが1つしか作成されないようにするデザインパターンです。 Java では? Java でインスタンスを作るには new するしかありません。Singleton では、1 回のみ new を許すように実装する必要があります。そこで、コンストラクタを pri…

JavaScript でデザインパターン

JavaScript でプログラミングをするときに、オブジェクト指向の手法を使うのであれば、折角なのでデザインパターンを利用したいと思います。しかし、デザインパターンの本は、Java を対象に書かれているものが多く、単純には JavaScript へ応用できません。…

無名コンストラクタ

web 2.0 EXPO の JavaScript Labs で、リクルートの川崎さんが講演されていました。口頭では触れていませんでしたが、講演資料の中で無名コンストラクタが紹介されていました。無名コンストラクタを使うと、無名関数と同様に、グローバルの名前空間を汚さず…

LogUpdater

僕はよくネットワークや電話を使ってミーティングをします。その際、記録係は適当な web サーバに議事録を随時書き込み、参加者はそのページを見ることで、議事録を共有します。僕が記録係の場合は、Emacs の tramp を使って、web サーバ上のファイルを書き…

JavaScript でデザインパターン

以下は株式会社ネットスプリングのニュースレター NSquest No. 4 に寄稿した記事です。JavaScript に対するデザインパターンの議論を始めるにあたり、同社の許可を得て、このブログに転載します。 オブジェクト指向と JavaScript もし、プログラマを3つに分…

Firemacs 2.4 のリリース

Firemacs 2.4 のリリースを申請しました。承認されるとアドオンの「更新を確認」でインストールできるようになります。今回、ユーザに見える機能は1つだけです。 C-n/C-p でフォームを渡り歩く機能(Walk Form)を無効にできるようにした 内部はデザイン・パタ…

prototype.js の Ajax

prototype.js 1.6 がリリースされましたね。今日は、Ajax クラスのお話です。 prototype.js を利用しない場合 prototype.js を利用しないで、XMLHttpRequest オブジェクトを非同期に利用する場合、典型的には以下のようなコードになります。この JavaScript …

Adobe Max Japan 2007

Mozilla Japan に招待状を頂きましたので、Adobe Max Japan 2007 に行ってきました。Tamarin の話が目的ですが、その他 3 つのセッションにも参加しました。 ActionScript 3.0 はじめの一歩 (野中文雄) ActionScript で動画を作っている人、特に絵は得意だが…

JavaScript で setter/getter

鶏肋(けいろく)。文字通りに取れば、鶏の肋骨という意味。三国志演義という「フィクション」の中で、曹操は悪役として登場します。多くの人は演義を多少なりとも知っているものですが、正史は読まないので、曹操に悪いイメージを持っていることでしょう。中…

JSONP

今日は、JSONP のお話です。昨日の JSON の話を読んでいない人は、まずそちらから読んで下さいね。JSONP は JSON with Padding の略称であり、 Bob Ippolito さんがRemote JSON - JSONPという記事の中で提唱しました。ここでいう Padding とは、JSON データ…

JSON

JSONP とは一体何か教えてと言う友達がいるので、まず JSON から説明したいと思います。(その友達は、JSON と JSONP の区別がついていませんでした。。。)JSON は、偉大なる Crockford先生が RFC 4627で定めた JavaScript 用のデータ形式です。Web サーバと…

JavaScript Lint

これまで、JavaScript の構文チェックには JSLint を使ってきました。かなり強力なんですが、JavaScript で書かれているためブラウザー越しに使わなければならない、そして速度が遅いという問題がありました。コマンドラインから使える構文チェッカとしては …

JavaScript とλ式

amachangさんの講演資料を観ていて、「ラムダ式も出来る」というページがありました。これに触発されて、少し書いてみます。amachang さんが挙げていらっしゃる例は「λx.x」で、JavaScript で書くとこうなります。 function(x) { return x; } とても面白い話…

クロージャ

JavaScript とλ式の関係について書こうと思ったのですが、その前にクロージャについてお話しする必要があることに気付きました。僕が最初にクロージャという言葉を知ったのは、大学の学部生のときです。Lisp の勉強をしていて出てきたのです。でも、まったく…

prototype.js 1.6 のクラス定義

prototype.js は 1.6 からサブクラスの定義が簡単になりました。使い方はチュートリアルを読んで下さい。ここでは、ソースを読んでみることにします。 Classオブジェクト Classというオブジェクトの定義は、以下のようになっています。 var Class = { create…

僕のJavaScriptスタイル

たくさん JavaScript のコードを書いてみて、ようやく自分なりのスタイルが確立されようとしているので、記しておきます。なお、クラスの定義には、prototype.js 1.6 系を使います。 Crockford先生のおしえ まず大前提として、Crockford先生のおしえをなるべ…