おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

jQuery Code Readingに参加

javascriptはまだいまいちわかっていないのですが、とりあえず参加してみました。
3/15(sat) - Roppongi.JS#1 jQuery Code Reading(1)のお知らせ - devlog.holy-grail.jp

最初の方はなんとかついていけたつもりなのですが、pushStackメソッドなどの各種メソッドのあたりからしんどくなってきて、
途中からサイ本を読んでました。基本的なことを全然覚えてないので、まあ当たり前の結果なのですが・・・

でも、Code Readingに参加したおかげで、自分一人でやったら理解するのに3日はかかりそうな部分がわかった!

わかったところまとめ

jquery-1.2.3 17〜27行め
var jQuery = window.jQuery = function( selector, context ) {
	// The jQuery object is actually just the init constructor 'enhanced'
	return new jQuery.prototype.init( selector, context );
};

// Map over the $ in case of overwrite
if ( window.$ )
	var _$ = window.$;
	
// Map the jQuery namespace to the '$' one
window.$ = jQuery;
  • $(hoge)とするとnew jQuery.prototype.init(hoge)が返ってくるように設定している。
  • $が既に設定されていたら、それを_$に退避させている。(prototype.jsなどとの共存のため)
jquery-1.2.3 36行目〜
jQuery.fn = jQuery.prototype = {
	init: function( selector, context ) { 
        // 省略
        }
        // 省略
        size: function() {
        // 省略
        }
        // 省略
        get: function( num ) {
        // 省略
        }
        // 省略・・・・
}

こんな感じで、jQuery.prototypeにいろんなメソッドがあるオブジェクトを定義している。
でも、ここまでだと、$はjQuery.prototype.initに定義されているメソッドしか使うことができない。(sizeやgetが使えない)

jquery-1.2.3 512〜513行目
// Give the init function the jQuery prototype for later instantiation
jQuery.prototype.init.prototype = jQuery.prototype;

ここで、jQuery.prototype.init.prototypeにjQuery.prototypeを代入している。これにより、initと同レベル(っていう書き方でいいのかな)のsizeやgetなどが
$.sizeや$.getで使えるようになる!

感想

javascriptって、親が子を継承するみたいなこともできるのね。面白い。これが今日一番勉強になったところでした。
次回のコードリーディングっていつなんだろう?次までには基礎を固めていろいろ発言したいと思います。
あとjQueryも一回きちんと使ってみないと。

JavaScript 第5版

JavaScript 第5版

はてなスターの仕様について

はてなスターのfavoriteページに、自分が星をつけた覚えがないページが載っていて、なんでだろう?と思っていました。
2008-03-13 - willnetの日記
んでちょっとググったら解決。

はてなスターのFavoriteページには、そのユーザーが☆を付けたことがあるユーザーの最近のエントリーが表示されます。

Favoriteページの表示内容を変更しました - はてなスター日記

☆をつけたページやコメントが載った方がいいと思うけどなー

ドコモの直感ゲーム対応状況

昨日のエントリ2008-03-14 - willnetの日記macbookの傾きセンサーについて書きました。
傾きセンサーについてちょっと気になってきて、僕の持っているF903iでも傾きセンサーついてたら試してみたいなと思い調べました。

ドコモ公式ページより引用。

というわけでF903iじゃだめみたいですね。使ってみたかったのに。

macbookの無駄機能?

Newton virusと呼ばれるmac用のウィルスが登場したらしいです。
下のはそのウィルスを作動させたときの動画。

この動画を見ると、macの傾きに合わせてファイルが動いているのがわかります。
ってことは、macbookには傾きセンサーがついているってことですね。何に使うのかな。
落下を検知してハードディスクを守ったりするため?


それとも、ケータイみたいな体感ゲームをするためだったりして。

追記

やっぱりゲームするためっぽい

rakeのオプション一覧を見る方法

railsでの開発に必須のコマンドrake。
db:migrateとか db:test:prepareとかはよく使いますが、他にはどんなオプションがあるのでしょうか?


下記のコマンドでrakeのオプション一覧と説明が見れます。

rake --tasks

でも説明文が長いコマンドは、こんな感じで省略されてしまいます。

rake db:abort_if_pending_migrations  # Raises an error if there are pending...
rake db:charset                      # Retrieves the charset for the curren...

そんなときは、--describe(または-D)を指定することで詳細が見れます。

rake --describe db:charset

rake db:charset
    Retrieves the charset for the current environment's database