Unicode の文字列をエスケープする JavaScriptとJavaScript で MIME ヘッダをデコードをひとつのページにまとめました。
MIME ヘッダのデコーダを JavaScript で書いてみました。BとQエンコーディング、およびUTF-8, Shift_JIS, ISO-2022-JP の文字エンコーディングに対応しています。
Unicode の文字列を \uXXXX (UTF-16) と \xXX (UTF-8)、DDDD (数値文字参照)、Base64, Quoted-printable、 URL などの形式でエスケープする JavaScript です。
Unicode の文字列をソースコードに埋め込む場合、直接 UTF-8 などで文字列を書く方法と、\uXXXX などのようにエスケープして表記する方法があります。後者の方法についてまとめてみました。
JavaScript でソートアルゴリズムを可視化するプログラムを書いてみました。元ネタは Jon Bentley による
ソートアルゴリズムを可視化する Java アプレットです。
ひさびさに JavaScript をいじろうと思い、以前に購入して長らく放置していた『JavaScript 第3版』を読みました。これまで見よう見真似でしか触ってこなかった JavaScript をちょっとまじめに勉強しよう、というのが狙いです。
最近のサイトの多くは、ページの左上にあるリンク画像から、どのページからもトップページに戻れるようになっています。一方、私のブログ以外のページではそうなっていなかったので、 JavaScript を使ってトップページへのリンクを追加してみました。
先日公開した バイナリアン度チェックは JavaScript で実装されています。たいしたものではありませんが、ここではその仕組みを説明したいと思います。
続きを読む...Ruby, Python, JavaScript, Perl, C++ の文字列操作の比較表を作りました。配列操作の比較表の続編です。間違いなどがあったらご指摘いただけると助かります。
続きを読む...はてなブックマークのブックマーク数は人気の指標として参考になります。このブログでは各エントリの末尾に、ブックマーク数を画像で取得する API を使って、ブックマーク数を表示するように設定しています。
ブログシステムのようにテンプレートを使える場合は、ブックマーク数を表示する HTML をたくさんのページに貼り付けるのは簡単ですが、そうでない場合はなかなか面倒です。そこで、ここでは JavaScript を使ってはてなブックマーク数を表示する方法を紹介します。
続きを読む...思いつきで、モザイクブックマークレット for IE なるものを作ってみました。画像がたくさん表示されているページで実行するとおもしろいと思います。いかにも既にありそうなネタですが…。
続きを読む...JavaScript のコードをインタラクティブに動かせるツール (Ruby における irb のようなもの) が欲しいと以前から思っていたのですが、今日になってようやく SpiderMonkey のインタラクティブシェルをインストールしました。
続きを読む...プログラムを書いていると、他のプログラミング言語の記憶とごっちゃになって、「配列の後ろに要素を追加するのは push だっけ、 append だっけ」などと混乱することがあります。特に Ruby, Python, JavaScript はコードの書き方が似ているので、この問題が起きがちです。
そこで、備忘録として、 Ruby, Python, JavaScript, Perl, C++ の配列操作の比較表を作りました。一番慣れている Ruby を基準にしています。間違いなどがあったらご指摘いただけると助かります。他の言語のもあるといいなあ。
続きを読む...Unicode の表を JavaScript で動的に生成して、検索もできたりするツールがあると便利ではないかと思い立ちました。そこで、自分で作り始める前に試しに javascript unicode で検索してみたところ、ちょうど欲しいと思っていたようなものが見つかりました。JavaScript Unicode Charts というページです。
JavaScript プログラミングはなかなかおもしろいよ、と知人に言ってみたところ、 全然信用されずに怪訝な顔をされる、という目に遭いました。
クロージャが使えて DOM ツリーにイベントハンドラを簡単に追加できるよ、と続けると多少は興味を持ってもらえるようなので、クロージャを使ったサンプルプログラムを書いてみました。
続きを読む...JavaScript でインクリメンタル 検索 と、そのgrepではない版で使っていた for (i in foo) という構文が Safari だと動かないという指摘をもらったので、 length = foo.length; for (i = 0; i < length; i++) のように修正しておきました。
同様に gonzui の JavaScript も修正しておきました。
追記
Safari ではすべての変数に var をつけないといけないといけないようなので、つけ足しておきました。
JavaScript でインクリメンタル grep 検索 のコードでは、検索に正規表現をそのまま使っています。正規表現を使うと pr.*f のような検索ができるのですが、一方で、 . や * や ( などを検索するにはそれぞれ \ でエスケープする必要が生じます。そのことを知らないと「(*.*) がなぜか検索できねー」と混乱することになります。
正規表現を使えてもうれしいことはそんなになさそうなので、gonzui では次のような関数を作って、メタ文字をエスケープしてから検索をかけるようにしました。
続きを読む...
function grep (pattern) {
try {
var regex = new RegExp(pattern, "i");
var spans = document.getElementsByTagName('span');
var length = spans.length;
for (var i = 0; i < length; i++) {
var e = spans[i];
if (e.className == "line") {
if (e.innerHTML.match(regex)) {
e.style.display = "inline";
} else {
e.style.display = "none";
}
}
}
} catch (e) {
// 正規表現の文法エラーを無視する
}
}
続きを読む...