[Firefox] 検索プラグイン用アイコンをメモ
- 2009-01-10
- カテゴリ: Client Side
- タグ: Firefox 検索プラグイン
Firefoxの検索プラグインのアイコンを言語ごとに変えてみた。

今までは検索エンジンが同じなら言語が違っても同じアイコンにしていたんだけど、こうしておけば、Ctrl + ↑↓で検索エンジンを切り替えたときにも言語がわかるから便利。
…っていうのはどうでもいい話で、単に作ったアイコンをメモっておきたかったからエントリーをたち上げただけ。
[Firefox] 今使っている検索プラグイン
- 2009-01-08
- カテゴリ: Client Side
- タグ: Firefox 検索プラグイン
今使っているFirefoxの検索プラグインのソースをメモ。
ちょっと作り替えるつもりなので、バックアップ代わりに。
[JavaScript] サロゲートペアの扱い方をわかりやすくメモっておく
- 2008-11-13
- カテゴリ: Client Side
- タグ: Tips JavaScript Unicode
先日、JavaScriptでサロゲートペアに対応した文字列関数を書いたりしてみたが、これだけだとサロゲートペアの扱い方を思い出すにはわかりづらいので、わかりやすくまとめ直してメモっておこうと思う。
前提知識
- サロゲートペアを使って表現できるコードポイントの範囲はU+10000-U+10FFFFだけ (だから、UnicodeはU+10FFFFまでしかコードポイントを割り当てない仕様になってる!)
- サロゲートコードポイントはU+D800-U+DFFFの2048個 (11ビット)
- 2048個を上位サロゲート (U+D800-U+DBFF) と下位サロゲート (U+DC00-U+DFFF) に分けて、上位サロゲートと下位サロゲートの組み合わせ (1024*1024) でU+10000-U+10FFFFの範囲を表現する
[JavaScript] サロゲート・ペアに対応した文字列操作関数を書いてみた
- 2008-11-06
- カテゴリ: Client Side
- タグ: JavaScript 安易な発想 Unicode
JavaScriptの文字列型はUTF-16を採用しているから、サロゲートペアを使用した文字が混ざるといろいろと厄介だったりする。一例としては↓のような感じ。
var s = "𪚲"; // U+2A6B2
console.log(s.length); // 2
console.log(s.split("")); // ["", ""]
ということで、サロゲートペアの扱いを少し楽にする関数を書いてみたからとりあえず公開してみる。
Google Gears を「滑らかに」使うためのライブラリ、Grease for Gears を公開しました
- 2008-10-11
- カテゴリ: Client Side
- タグ: JavaScript Gears ライブラリ
表題の通り、Google Gears を「滑らかに」使うためのライブラリ、Grease for Gears を公開しました!
最近、Gears を使っていろいろといじっていたんだけど、Gears の API がどうにも使いづらい><JavaScript に慣れた身にはやたらと冗長に感じたり、フレームワークに慣れた身にはやたらと低機能に感じたり><
ということで、LL 脳でフレームワーク脳の僕でも、Gears を滑らかに使えるようになるためのライブラリを書いてみました!ソースは CodeRepos に置いてあります。
root/lang/javascript/Grease - CodeRepos
使い方とか API とか詳しいことは続きで!
[JavaScript] Gears オブジェクトをプロトタイプ継承すると Firefox が即死する件
- 2008-10-10
- カテゴリ: Client Side
- タグ: Tips JavaScript Gears
最近、Google Gears をいろいろといじっているんだけど、Gears のオブジェクトをプロトタイプ的に継承すると、Firefox がクラッシュしてしまって困っている。
どうすればいいんだろう。
再現方法
- 1. gears_init.js をロード
<script type="text/javascript" src="gears_init.js"></script>
- 2. Gears のオブジェクトをプロトタイプ的に継承
var mother = function() {}; mother.prototype = google.gears.factory.create('beta.database'); var child = new mother();- 3. Gears オブジェクトのメソッドを呼び出す
child.open('mydatabase'); // crash
Firefox は問答無用でクラッシュするし、Chrome は NPObject deleted とかいう謎のエラーを出して止まるし、当然 IE も止まるし。
なんなんだろう、これ><
UUID.js を CodeRepos に放流しました
- 2008-10-08
- カテゴリ: Client Side
- タグ: JavaScript UUID アルゴリズム
表題の通り、UUID.js を CodeRepos に放流しました!
root/lang/javascript/UUID.js - CodeRepos
まだまだ育て甲斐のある状態なので、どんどんいじっちゃってください!
UUID.js が UUID version 1 に対応しました
- 2008-10-04
- カテゴリ: Client Side
- タグ: JavaScript UUID アルゴリズム
[追記] UUID.js の最新版は CodeRepos に放流しました。
今までは UUID version 4 にしか対応していなかった UUID.js を、UUID version 1 にも対応させてみました。
使い方
使い方はやっぱり簡単。
- 1. UUID.js をロードする
<script type="text/javascript" src="uuid.js"></script>
- 2. 引数に
{ version: 1 }を渡して生成する var uuid = UUID.generate({ version: 1 }); // "3db93340-91f7-11dd-a2aa-69df78d74e01"
引数を渡さずに生成すれば、前回通り version 4 の UUID を生成するよ!
[UUID.js] バグがあったので修正しました><
- 2008-10-04
- カテゴリ: Client Side
- タグ: JavaScript UUID アルゴリズム
[さらに追記] UUID.js の最新版は CodeRepos に放流しました。
[追記] 新バージョンを公開しました!
前回のエントリーで公開したばかりの UUID.js ですが、いきなりバグが出てしまったので修正版を公開しました><
バグの内容は、Math.random() の精度が 32 ビットしかないブラウザで、生成される UUID の下四桁が全部ゼロになってしまうという問題でした><
しかも、その「Math.random() の精度が 32 ビットしかないブラウザ」っていうのが、Opera, Safari, Google Chrome の 3 つで、IE と Firefox 以外では再現してしまうバグでした><
ちょっと確認すればすぐわかるはずの初歩的なミス><
バグの原因は、32 ビットの精度しかない乱数を 48 ビットとして扱ったことによるものだったので、乱数生成関数を工夫して 32 ビット精度の乱数から 48 ビットの乱数を生成できるように修正しました><
[JavaScript] UUID.jsを作成しました
- 2008-10-04
- カテゴリ: Client Side
- タグ: JavaScript UUID アルゴリズム
[さらにさらに追記] UUID.js の最新版は CodeRepos に放流しました。
[さらに追記] 新バージョンを公開しました!
UUID (Universally Unique Identifier) を生成する JavaScript ライブラリを作ってみたので公開します。
UUID は、128 ビットの長さを持つ識別子です。普段使うときは↓のように 16 進法で表現されて、ところどころにハイフンが入ります。
e8783d5e-90dd-4af9-8aa6-371d43fcbcb4
UUIDは 128 ビットで 2128 = 3.4e+38 通りもあるので、偶然同じ ID が生成されることが (ほぼ) ないんです。だから、ID の一意性を維持するためにわざわざ統制する必要がなくて、面倒くさがりな人間にとっては便利すぎる ID なんですね!
で、そんな便利な UUID を JavaScript で使うためのライブラリを探してみたのだけれど、あまり良いものが見つからず。英語版 Wikipedia に書いてある JavaScript UUID Class というのも試してみたけれど、RFC 4122 に書いてある UUID の仕様とはちょっと違う感じの不思議な ID を生成するのでいまいち。ということで、自分で RFC を読みながら実装してみました。
使い方等は続きで。

