2007年03月10日17:30 カテゴリLightweight Languages javascript - encodeURIUnicode()と%uXXXX問題 これを見て、(de|en)codeURIUnicodeがあればいいと思ったので作ってみた sawatの日記 - Unicodeエスケープ なので、前述のような単に非ASCII文字をエスケープしたいだけのようなケースではUnicodeエスケープを使った方がよいです。Javaのpropertiesとかnative2asciiとかのやつです。 Decoded: Dan 弾 𪚲 Encoded: Dan%20%u5F3E%20%uD869%uDEB2 要は、U+00ffまではencodeURIComponent互換、それ以上はescape()互換というもの。こうしてencodeされたものは、CGI.pmとかでもほぼそのまま使える。
付箋紙Greasemonkeyで、GM_setValueに登録した日本語の文字化け対策にencodeURIをつかったけど、encodeURIはURIをエンコードするための関数なのであんまり褒められた使い方ではないですね。しかも、encodeURIのようなURLエンコーディングは文字列をUTF-8にしてから、エンコード対象の各バイトを%xx形式*1で表現するので、日本語1文字をあらわすのにたいていの場合ASCII9文字が必要になって効率が悪いです。*2 なので、前述のような単に非ASCII文字をエスケープしたいだけのようなケースではUnicodeエスケープを使った方がよいです。Javaのpropertiesとかnative2asciiとかのやつです。 Unicodeエスケープは\uxxxx*3の形式であらわすので、たいていの日本語1文字はASCII6文字になって、URLエンコーディングに比べ
2007年03月09日19:30 カテゴリLightweight Languages perl - Dispatch::Table これが気になったので。 YappoLogs: Apacheで携帯キャリアのIPアドレス制限をするには Allow from 210.153.84.0/24 Allow from 210.136.161.0/24 ... なぜかというと、この場合条件をリニアサーチしているので、条件判定がO(n)だからだ。私は最近Apacheのsourceを読んでいないので断定は出来ないが、1.xのころの記憶ではそうだ。 こういう場合、Dispatch Tableを使った判定にしたい。それならO(C)だ。 Dispatch Tableというのは、例えば if ($a == 0){ #.... }elsif ($a == 1){ #.... } とか書く代わりに、 my $disp
Apacheで携帯キャリアのIPアドレス制限をするには 塩とDishuberを使えば良い。 用意するもの config.yaml cidr.tt contents.tt frame.tt 以上のファイルと最新のDishuberだけである。 それぞれのファイルの中身はとても単純。 frame.tt [% content %] contents.tt[% FOREACH cidr = meta.cidr %] [% cidr -%] [% END %] cidr.tt# [% meta.source.meta.carrier %] [% FOREACH cidr = source %] Allow from [% cidr -%] [% END %] そして config.yaml plugins: - module: Source::MobileCIDR cid: docomo config
配列の積集合・和集合 ちょっと用があって、複数の配列の共通要素を取り出す関数を作ってみました。Mochikit を使っています。 function intersection() { var len = arguments.length; var tmp = {}; return filter( function(x) { tmp[x] || (tmp[x] = 0); return (++tmp[x] == len); }, chain.apply(null, arguments) ); }配列のイテレーションと同時に要素の出現回数を数えていき、全ての配列で出現しているものを抜き出します (各配列内での要素の重複は考慮に入れていません)。 このように、3 つ以上の配列でも簡単に AND を取ることが出来ます: intersection( [1,3,6,8,9], [2,4,6,8], [6
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く