アーカイブ: 2007年12月

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[JavaScript]\uXXXX形式にunicodeエスケープする関数

さっきはPerlにはまるとか言っておきながら結局JavaScript…

JavaScriptの文字列を、\uXXXXの形式のUnicodeEscapeSequenceにエスケープする関数を書きました。

JavaScriptの文字列をJSONとかでよく見かける、

\u672c\u65e5\u306f\u6674\u5929\u306a\u308a

の形式の文字列に変換する関数です。ソースやサンプルは続きで。

続きを読む

スポンサーサイト

Perlをもう一度勉強しよう

Perlのスクリプトを書かなければいけない予感がしているので、Perlを勉強しなおしている。ゼミの研究室のサーバーは今のところPerlしか入っていなくて、PHPを入れるのも面倒そうなので、もう一度Perlを勉強しなおす決心をした。

実は僕がプログラミングを始めたのはPerlからで、Perlの後PHPに移って、JavaScriptにはまって今に至る。その間にC, Delphi, Javaなんかにも寄り道はしたが。

とはいっても、Perlを勉強したのは中学生のころで、今から思えば何もわかっていなかった。CGI.pmもなくて、おまじないのようにフォームデコードの関数をコピー&ペーストいたり、変数名の衝突でスクリプトが壊れて、以後グローバル変数恐怖症になったりしたことだけは覚えている。

今改めてPerlを勉強してみると、当時とは見違えるように理解が進む。特に無名配列、無名ハッシュ、無名サブルーチンあたりの便利さに目覚める。そしてリファレンスは便利ですね。

ということで、しばらくはPerlにはまりそうです。ものすごくJavaScriptの影響を受けたコードを書いていますが。

独自ドメインを取ってみた

独自ドメインを取ってみた。

http://liosk.net/

今のところ特に使い道があるわけではないんだけど、あればあったでいろいろとおもしろいかなと思って。

[JavaScript]単純なコールバック関数を簡単に記述できる関数

あらかじめ定義しておくと少し便利かもしれない。

function $FN(fn) {
    return (typeof fn == 'function') ? fn : Function('x', 'return ' + fn);
}

引数が関数であればそのまま返し、文字列であれば、function anonymous(x) { return 引数 }という無名関数に変換して返す関数。

続きを読む

[WScript][携帯]DoCoMo F902iSでバックアップしたスケジュール表をMS Outlookが読み込めるように変換

DoCoMo F902iSからminiSDにバックアップしたvCalendar形式のスケジュール表を、MS Outlook 2003でインポートしようとしたら失敗した。

なぜか、BEGIN:VCALENDARというキーワードとEND:VCALENDARというキーワードを余計にネストしたり、SUMMARYDESCRIPTIONを逆にしたりしているのが原因っぽい。

ということで、F902iSのvCalendarを変換してOutlookで読み込めるようにするWScriptを書いたので、メモがわりにエントリー化。詳しいことは時間と気力があるときにエントリー化したい。

おそらく、F902iS以外では使うことがないと思うが、もし他の機種でも動くようであれば、コメント欄などで教えてくれるとありがたい。

続きを読む

[JavaScript]hover関数を修正

以前、jQueryのhover関数を移植したことがあったのだが、実地で使ってみたらいろいろとバグが出たので修正。

jQueryのソースでは、

// Traverse up the tree
while ( p && p != this ) try { p = p.parentNode; } catch(e) { p = this; };

// If we actually just moused on to a sub-element, ignore it
if ( p == this ) return false;

となっているコードを、大幅に省略して

do if (p == elm) return false; while (p = p.parentNode);

としていたんだが、やはり横着するとよくないらしい。ところどころでバグる。

続きを読む

[JavaScript]addEventListenerを手軽に使おう

JavaScriptのイベント処理は面倒くさい。

ブラウザごとにaddEventListenerとattachEventを使い分けたり、eventオブジェクトを引数として受け取るかwindow.eventとして受け取るかを考えたり、thisの扱いについて考えたりしなくてはいけないからだ。

ということで、すごく苦手意識を持っていたのだが、↓の関数を書いておくだけでほとんどのケースには対応できるってことに気づいた。

function observe(target, type, listener) {
    if (target.addEventListener) target.addEventListener(type, listener, false);
    else target.attachEvent('on' + type, function() { listener.call(target, window.event); });
}

addEventListenerの有無で分岐するってとこまでは以前からやっていたんだけど、attachEventにfunction() { listener.call(target, window.event); }を渡すっていうのは今思いついた。

attachEventを使うのもwindow.eventを使うのもthisでtargetを参照できないのもIEだけなんだから狙い撃ちして対策してやればいいんじゃん。何で今まで気づかなかったんだろ。

続きを読む

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。