IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

2006-10-01から1ヶ月間の記事一覧

JavaScript の字句の解析エンジンを作りました

これを使ってこんなことが出来ます。 サンプル http://sample.ecmascript.jp/tokenizer/ ソース http://sample.ecmascript.jp/tokenizer/character.js http://sample.ecmascript.jp/tokenizer/tokenizer.js サンプルの使いかた 例えば textarea に var hoge …

JavaScript で予約語を変数名にする方法

普通にグローバル変数ならできるのだが。 window['for'] = 'a'; これだと、ローカル変数ではできないので、こうする。 昨日のエントリに書いたように、ユニコードエスケープを使う。 function func() { var \u0074\u0068\u0069\u0073 /* this */ = 'a'; aler…

Firefoxを瞬殺するたった3文字のブラクラ

(追記)皆様のコメントやブクマでの指摘によると FireBug + FIrefox2.0 で発生するようです。 ここに落ちなくする設定方法が書いてあります。 http://d.hatena.ne.jp/mhrs/20061030/p1 自己責任でお願いします。 JavaScriptに以下のコードを書く #1#信じられ…

JavaScript は変数名に直接 Unicode Escape が書ける

知ってました? var \u5929\u91CE = 'amachang'; alert(天野); // amachang var \u0068\u006f\u0067\u0065 = 'ほげ'; alert(hoge); // ほげ ついでに今回作ったエスケープ関数置いておきます。(Firefox Only) var unicodeEscape = function (s) { var d = ''…

Firefox2.0 で既存サイトが動かなくなった件について

とりあえず style.hasOwnProperty がまずいらしい こんな感じで書いてたコードがうまくいかなくなりました。 if (this.widget.style.hasOwnProperty('opacity')) { Element.setStyle(this.widget, { opacity: 0 }); } else if (this.widget.style.hasOwnProp…

足跡ブックマークレット改改

javascript:(function(){var n="/show_friend.pl?id=1",r=window.XMLHttpRequest?new XMLHttpRequest:(function(){try{return new ActiveXObject('Msxml2.XMLHTTP');}catch(e){return new ActiveXObject('Microsoft.XMLHTTP');}})();setInterval(function(){…

足跡ブックマークレット改

javascript:(function(){var n="/show_friend.pl?id=1";setInterval(function(){document.body.innerHTML=n;var r=new XMLHttpRequest;r.open('GET',n);r.send(null);(function(l){n=l[Math.ceil(Math.random()*l.length)]})(r.responseText.match(/show_fri…

足跡ブックマークレット

javascript:(function(){var i=1,r=new XMLHttpRequest;setInterval(function(){document.body.innerHTML=i;r.open('GET','/show_friend.pl?id='+i++);r.send(null)},Math.random()*10000)})()

はじめての雑誌><

初めて書いた雑誌が発売されました! 「イベント駆動な DOM」と「エフェクト」と「パフォーマンス」について書きました!興味がある方は読んでみてください。この一冊は思い出として、実家にでも送ろうっと。 なんかうれしー><

関数一発でプロトタイプチェーンに繋げて、オブジェクトをクローンする。

最近、プロトタイプ的継承の話しが盛り上がっています。 http://blog.livedoor.jp/dankogai/archives/50662064.html http://labs.cybozu.co.jp/blog/kazuho/archives/2006/10/javascript_string.php http://blog.livedoor.jp/dankogai/archives/50662606.htm…

JavaScript で undefined って予約語じゃなかったんだ!!

変数が undefined かを確認するとき、以下のようなコードを使うのをよく見かけます if(typeof obj == 'undefined') 個人的にはこれでいいじゃんとか思ってたんです if(obj == undefined) でも、偶然発見してしまった。。 undefined って変数だったんすね。。…

JavaScript の数値はある一瞬だけオブジェクトになる。

いちおう、先に Firefox でしか試してないと白状しておきます。 JavaScript は数値もオブジェクトのように扱える (1).toString() // 文字列 "1" が復帰される しかし、以下のコードを試すと var a = 1; n.a = 1; alert(n.a); // undefined と表示される ここ…

mixiの[C言語とC++言語コミュニティ]が酷すぎる件に付いて

mixiにはこんなコミュニティがあります。 C言語とC++言語コミュニティ コミュニティの説明 C言語やC++言語について情報を交換し合う場です。ソースをもとに議論したりします。 そんなコミュニティのはずだった。。。 しかし、このコミュニティのトピックは …

それすぐ実行!JavaScript!

思った JavaScript はすぐに実行してみましょう! ブラウザの URL 入力欄に javascript:(function() { /*実行したいコードを書く*/ })()FireBug を使ってる人は、コンソール開いて実行したいコードを書く。 たとえばこんなことができます。 これらの例は僕が…

Shibuya.pm Technical Talk #7

上司の id:ZIGOROu はんが出るみたいなので、初めて聞きに行ってみます ^^ それにしても、今回も 30 分程度で埋まってしまったようですね。取れてよかった。あと、 JavaScripter としては樋口さんの話が楽しみです。ワクテカ Shibuya.pm Technical Talk #7 http:…

Perl で再帰呼出し時のスタック間データ共有

ダイナミックスコープがない言語では 再帰呼び出しのスタック間でデータを共有する場合は、以下のように仮引数を使わなければならない。*1 JavaScript で木構造の探索をして、依存関係を直列に並べる例 function search(node, results, seen) { if(!results)…

Class::Data::Accessor と Class::Data::Inheritable は個人的には継承しなくてもいいと思う(継承せずに使う)

Class::C3 を使うと継承順がかなりセンシティブになる。 たとえば、普段から Class::Accessor::Fast と Class::Data::Inheritable を同時に継承する場合にどちらが先かというのは、そんなに意識しないと思います。(僕はしません) でも、Class::C3 を使う場合…

DBIx::Class::Schema::Loader で 34 秒くらいで Schema クラス生成

既存 DB から以下のワンライナー一発で DBIx::Class の Schema が生成できる $ perl -MDBIx::Class::Schema::Loader=make_schema_at,dump_to_dir:./lib -e 'make_schema_at "Hoge::Schema", {relationships => 1, debug => 1}, ["dbi:mysql:hoge","user","pa…

Class::C3, Algorithm::C3 を勉強したよ!

DBIx::Class を少し使ったことがあったので Class::C3 をなんとなくで理解していたんです。(ふーん幅優先版の NEXT モジュールでしょ?みたいな感じで。) でも、これは絶対にちゃんと細かい挙動まで勉強しといたほうがいいと思いました。 多重継承とか mix…

Class::Data::Accessor と Class::Data::Inheritable の違い

Catalyst のソースを読んでいると Class::Data::Accessor と Class:Data::Inheritable が出てくる。つかわれかたは、ほとんど同じに見えるので、ちょっとソースを読んでみた。 読んでみると Class::Data::Accessor のほうは、オブジェクトメソッドとして呼ば…

反省文

一社会人として不適切な内容でした。 見て不快に思われた方には、大変申し訳なく思います。 今後、こういうエントリを投稿しないようにいたします。 ほんとうに申し訳ございませんでした。

Perl で JavaScript の apply っぽいやつ

JavaScript では apply や call を使って this を実行時に与えることが出来る var func = function() { return 1 + this }; alert(func.apply(1)); // 2 Perl では こうすると、this っぽい感じで与えられる my $code = sub { 1 + shift }; print 1->$code; …

冗長なeval

btoa って何かに使えないかなーん。 って考えたけど何も思いつきません。 こんな、ちょう無駄なことができます。 (無駄な癖に Firefox only) eval = function(code) { var script=document.createElement('script'); script.src="data:text/javascript;base6…

MochiKit-1.3.1 と dojo-0.3.1 との連携

今日 d:id:Voluntas:20061004 さんからトラックバックをいただいたので試してみました。 たとえば それぞれ、こんな感じで解凍したまんま配置します。 sample.html の内容は こんな感じにしてみました。 <html> <head> </head></html>

tinyurl.com で mailto

よく メールアドレスをクローラに拾われないように hogehoge at hoge.hoge とかってやること多いですよね。 でも tiniyurl で mailto:hogehoge@hoge.hoge を変換すればいい気がしてきました。 こんな感じ amachang にメールする これでスパムもこないし 便利…

ただの企画者でもここまでできるのか

朝 今日、ひさしぶりに吉野家の牛丼を食べて出社すると id:dropdb からメールが来てた。 開いてみると HTML のソースが書いてあったので、ファイル化して上げてみた。http://sample.ecmascript.jp/nori.py 感想 うーん。なかなかどうして、企画者でもここま…