2006-01-01から1年間の記事一覧

アップデート: Ajax 版はてなフォトライフデスクトップ

id:reinyannyan:20060407:p1 のアップデートです。利用方法についてはそちらを参照してください。 主に画像の表示方法に関して、以下の見直しを行いました。RSS に反映されなさそうなので新たなエントリーでお知らせします (RSS の件数って変更できるんです…

デスクトップに Flickr RSS

id:reinyannyan:20060407:p1 の Ajax 版はてなフォトライフデスクトップをアップデートし、Flickr の RSS も読めるようにしてみました。ただし、対応している RSS のバージョンは 2.0 のみです。サンプル URL: http://www.flickr.com/groups/cutecat/pool/fe…

デスクトップにホームページを表示

Windows の Active Desktop という、デスクトップをウェブ・ドキュメントとして自在にプログラミングできる機能を度々ご紹介してきました。この機能の利点は、何も自分でプログラミングできることだけではありません。ブラウザを開かずにウェブ・ページを表…

はじめての Ruby

はてなフォトライフデスクトップ (id:reinyannyan:20060407:p1) からの発想の拡がりで、ローカルに眠っている画像を掘り起こして RSS 化 -> 自分用のサーバーに置いて利用、ということを思い付きました。で、すぐに Ruby で書き始めました。実はちゃんと Rub…

クラス版 DOM Iterator の利用例と解説

id:reinyannyan:20060411:p1 の後半で、DOM 要素コレクションを prototype.js 的にイテレーション可能にするクラス "Domi" (仮称) を実装しました。実装の動機については id:reinyannyan:20060404:p2 に述べたんですが、ここで改めてまとめておきましょう:Pr…

DOM 要素の集合のイテレーション (OO 版)

id:reinyannyan:20060404:p2 からの発展です。Update [20060412]:少しコードの見直しを行い、select の連結による多重絞込みを可能にしました (古い each の上に新しい each を次々と被せていくことで可能になりました。クロージャ万歳!)。 応用イテレータ…

AJAX で『はてなフォトライフデスクトップ』

Windows の、デスクトップの壁紙に HTML ファイルを指定できる機能 (Active Desktop) を利用して、はてなフォトライフデスクトップみたいなものを作ってみました。これまで XML を扱ったことがあまり無かったので難しいかなと思ったんですが、次々とインスピ…

DOM 要素の集合のイテレーション

Update: id:reinyannyan:20060411:p1 に続きます getElementsByTagName の様なメソッドで得られた、配列ではない要素集合を配列のように扱いたい時に、prototype.js では "$A" という関数によってまず配列化する、という方法を用います。これは非常に素晴ら…

prototype.js の Class 拡張試案: Class.extend

Prototype の拡張試案の一つとして、これまでにクラスの継承のための仕組み (Class.extend メソッド) を提唱してきました。これは、実際にはクラスのコンストラクタに割り当てられ、 MyClass = Class.create(); ... AnotherClass = MyClass.extend(...);とい…

コレクション、イテレータ、そして inject のパワー

注: これは Ruby のコードではありません (笑): var ibm = [ 'H', 'A', 'L' ].inject('', function (str, item) { return str + item.succ(); }); print(ibm); // -> 'IBM'いきなり結果からお見せしましたが、今回は難しいと言われている inject メソッドの…

prototype.js のクラス拡張: 仕様変更

prototype.js の Enumerable を自分のクラスで利用しようと思ったところ、幾つか問題にぶつかったため、以下の点を修正します。 include メソッドの名前変更 Mixin のための include メソッドが Enumerable のメソッドとカブることには元々気付いていました…

"Integrates Bloglines with Hatena Bookmark"

Bloglines の記事をはてなブックマークに登録する Greasemonkey スクリプトが、Firefox 1.5 + Greasemonkey 0.6.4 で動作しない旨のお話を頂きましたので、僭越ながらパッチを書いてみました。 --- bloglines.hatenabookmark.user.js~ 2006-03-27 13:50:40.0…

prototype.js と「プロトタイプ」

これまで私が prototype.js の拡張を行ってきた中で、JavaScript という言語に対する姿勢について明確に述べたことは無かったかも知れません (英語版では少し触れたんですが)。なので、いささか唐突ですが、ここで改めて (かつ少々乱暴に) 表してみようと思…

Bloglines のクリップをはてなブックマークで管理

Update [20060317]: Mozilla および Opera で動作する (はずの) バージョンを書きました。IE 版も、ちょっとした不具合がありましたので修正しました。 Bloglines ユーザーの方は "Clippings" という機能を便利に使ってらっしゃるでしょうか?正直、使いにく…

メソッドをプライベート化する実験

私が prototype.js に基づいた OO プログラミングをしていて度々思うのが、メソッドをプライベートにする方法が無いものだろうか、ということです。オーソドックスな、function 文を使用するクラス定義方法であれば、以下の様に関数を "this" と関連付けない…

Mozilla 系で arguments.caller が非推奨となっていた件

JavaScript 1.3 で arguments の caller プロパティーが非推奨とされていたことを知りました: http://docs.sun.com/source/816-6408-10/function.htm http://www.interq.or.jp/student/exeal/dss/ref/jscript/object/arguments.html現在の 1.5 では利用も出…

Singleton Pattern

昨日ご紹介した新たなクラス定義の手法を適用して、id:reinyannyan:20051015:1129356763 の Singleton Pattern の実装をアップデートしてみましょう。今回も prototype.js を利用した形です。シングルトン・クラス作成メソッド: Class.singleton = function …

prototype.js の Class 拡張試案について (仕様変更案)

Class.abstract と Class.concrete を統一すべきか id:reinyannyan:20051028:p1 等で Class.abstract() と Class.concrete() というクラス作成メソッドを提案しました。prototype.js で、抽象クラスを定義するのに空関数を使っているのがちょっと格好悪いな…

関数の実行を遅らせる (OO 的に)

関数を遅れて実行させたいなと思うことがたまにありますので、prototype.js にある bind メソッド*1に習って、再利用可能な形にしてみました: Function.prototype.delay = function (delay) { window.setTimeout(this, (delay * 1000)); };(最初に bind の実…

Ruby の kind_of? の実装

前の記事でさりげなく登場していたこの行 if (!comd.kind_of(Command.Abstract))について解説いたしましょう。Ruby には kind_of? というメソッドがあり、オブジェクトが、任意のクラスまたはそのサブクラスのインスタンスかどうかを調べます。"?" こそ付け…

Strategy Pattern ~ mixin を利用した

Command Pattern の話の続きです。最初にこのコマンド処理の仕組みを作った時、私はジョブ処理の方式として「キュー」を用いました。人の行列のイメージですね。最も長く待ったものが最初に処理されるという方式です。これでしばらくは満足だったんですが、…

prototype.js の Class 拡張試案について (コード修正)

リンクだけ張らせて頂きます。記事 コード古い記事は rss に反映されないんですね…?

Microsoft XMLHTTP の不可思議な挙動

システム・モニターで「アロケート済みメモリ」の項目を見ていて妙なことに気付いたのでメモしておきます。私は JavaScript での HTTP 通信には MSXML 3.0 (Servie Pack 7) を使っているんですが、Content-Length を返すリソースに対して HEAD リクエストを…

Command Pattern 改定

前回のコマンド・パターンの記事のちょっとしたアップデートです。The Pragmatic Programmers が提唱する "Tell Don't Ask" の原則というものがあります。Java World にも同趣旨のコラムがあり、「オブジェクトに情報を尋ねるのではなく、情報を持っているオ…

Bloglines の今後のクライアント・サイド開発について

多分つい最近のことだと思うんですが、Bloglines が dojo toolkit をクライアント・サイドの開発フレームワークとして採用しました。Bloglines 固有の機能についても "dojo.provide('bl.blah');" という具合に dojo を利用したライブラリを作り、HTML 内のス…

Command Pattern

([20060226]: RSS リーダーの方にはご迷惑かもしれませんが、読み返してみて自分でもちょっと理解し辛かったので、ほんの少しだけ加筆・修正しました)先日の HTTP 通信の話 (id:reinyannyan:20060131:p1) の続きです。パターンの解説ではありません。パター…

Bloglines から ?D にコメント (外部スクリプト使用・IE 限定)

いろいろとブックマークレットを作るなかで、Bloglines からはてなダイアリーにコメントができたら便利だな、と思ったことがありました。流れとしては、これまでの ?B 関連のブックマークレットと同様であることは明らかでした。つまり、ダイアリーの各記事…

ブックマークレットの動作状況について (おねがい)

さきほど、はてなの中の方からメールを頂きまして、Bloglines + ?B 関連の二作 (id:reinyannyan:20060208:p1 id:reinyannyan:20060124:p2) に関して、エラーが出て動作しないとのことでした。IE6 でも動作が確認できなかったそうです。また、エラーの原因も…

コメント欄について (おわび)

!

いつ頃からか、コメント欄が「凍結」状態になっていましたので、どなたでも書き込みいただけるように修正しました (全く心当たりは無いんですが…。おかしぃな)。以前ふと思い付いて放っておいた、Bloglines からはてなダイアリーにコメントするためのスクリ…

Bloglines から ?B エントリーを表示

Bloglines の各記事に、はてなブックマークのエントリー・ページへのリンクを追加するブックマークレットを作ってみました。要は、記事をブックマークした人のコメント一覧が見たい時用です。タグやキーワード等、?B の提供する RSS を Bloglines で読んでい…