日記: 2009年8月アーカイブ
・べにじょさんがいた。声いいなあ
・今年はjs分少ない
・「技術者とはなにか」って質問があったけど、「人を相手にするか否か」ってのもあるんじゃないか。
・一般に通じない言葉として「デフォルト」ってあげてたけど、そのくらいは普通に通じるんじゃないだろうか。
・帰宅時のカバン率の高さは異常。みなメッセンジャーバッグかリュックしょってた。もちろん私も。
・GWTの本売ってた。ちょっと興味があったのでiPhoneで調べてみたけど、若干微妙かなー
一緒に飛んだ人の二人のうち一人が現役SEで「JSの単体テストがネックで。。。」とか話した。
もう一人は元SEで今一人で会社作って仕事してるとのこと。
一日panzer front(PS1で出てたタンクシュミュレータ)とTObang(タクティクスオウガのroguelike)やってた。
どちらも終わらない系。
第10回勉強会 (若手IT勉強会)に行ってきました。
(実際読んだコードは若手IT勉強会(jQueryコードリーディング#1回目) をやってきました。をどうぞ)
jQuery読むのは第一回だったのでSizzleの上のほうと、Manipilation周りを軽く読みました。
ちなみに文殊堂さんはこられませんでした(ざんねん)
次回はEvent周りを読むとのことなので予習してきます。
//以下jQueryのコードを読んだ印象
・attrはhref|src|styleを特殊扱いしてるけど、判断してる正規表現にiがないので大文字は変になるかも。
(そもそも大文字だと動かないのかな。コードでいうと984行目)
// These attributes require special treatment
var special = /href|src|style/.test( name );
・Sizzleはコメントなくて読みにくい。特に最初の正規表現は長くてヤバイ。
・jQueryはセレクターのショートカットが少ない。$('#hoge')以外は全部パーサ通るので注意。
(なので、$('#hoge .huga')より、$('#hoge').find('.huga')の方が早そう)
・.attrはIEの相対パスを絶対パスに勝手に書き換えるバグ(or 仕様)に対応済み。
(1030行目)
// Some attributes require a special call on IE
? elem.getAttribute( name, 2 )
: elem.getAttribute( name );
ただし、対応は.attrだけで、selectorの中(Sizzle部分)は対応してないので注意。
($([href="#hoge"])はIEには絶対ヒットしない)
・.attrのtabIndex(1007行目)、opacity(1040行目)のあたりはヤバイ。
クロスブラウザは大変。
・.cssとかで第2引数にfunction渡してそれの帰り値がString型の数字だと自動的にpxがつかない気がする。ただ、今まで詰まったことないので気のせいかも。
(705行目)
// Handle passing in a number to a CSS property
return typeof value === "number" && type == "curCSS" && !exclude.test( name ) ?
value + "px" :
value;
・$('body').empty().append('<div>').find('div').wrapAll('<h1><h2></h2></h1>')は以下のような結果になる。
=> <h1><div/></h1><h2><div/></h2>
予想は<h1><h2><div/></h2></h1>こう(ってか、なんでdivが増えるんだ?)
h1とh2が入れ子にできないのが原因らしい。
ほかのタグなら正常に入れ子になる。
・.addClassとか、removeClassはスペース区切りで複数のclassを渡されることを想定されてた。
(ちゃんと\sでsplitして一つずつ確認しながら追加したり、削除したりしてる)
・readonlyとかselectedとかcheckedを切り替える.toggleAttrとかあると便利かも。
・1.3系ではイベントが.dataに保存されている。
(もしかしたら1.2系でもそうかも)
jQuery.data($('div').get(0),'events')で、先に設定済みのイベントを後から取り出せる。
何か面白いことできるかもと思ったけど、イベントネームスペースあるからそんなに使い道ないかも。
・IEでjQuery\d+=".+"って書かれてるelementを.cloneするとその部分が消えるので注意。
もともとjQueryのIDが.cloneされないようにってことだと思うけど、要素の中にあるかどうかを判断してないので、どこに書いてあっても消える。
まあ、実際こんな文字列書かないと思うので困ることないと思うけど。
・Sizzleは思ったよりショートカットとか、最新のブラウザAPI使ってない印象。
(getElementsByClassNameとかは使ってるけど)
前にざっくりuupaa.js読んだせいか速度的にちょっと気になりそうなところがちらほら。
(全部正規表現でやってるとことか。よくある処理だけ先にindexOfとかで切り出せないのかな)
ただ、ちゃんとはかったこと無いから実際どの程度速度差があるかわからないし、
そもそもuupaa.jsがやり過ぎな気もするのでそんなに気にしなくていいのかな。
まあ、jQueryで速度気にするときはその部分だけjQuery使わず書けばいいのでいいか。
//以下勉強会自体の印象
・自分まだ若手w
これだけ不安だった。よかった。
(ちなみに、若手の基準は「自分が若手と思うかどうか」とのこと)
・10人くらいなので全体的に静かな印象。
・余所でコードリーディングは初めてだったんですが思ったより疲れた。。。
(自分だけだと面倒なところは流し読みするけど、多人数でやってると突っ込みが入るので飛ばせないので)
・合間で休憩がてら普段やってることの紹介とかあっても良かったかも。
・事前準備重要。勉強会自体の時間がかなり長かったので結構すすんだ気もしますが、先にざっくりでも読んどけばもっとすすんだかも。
(イベント周りは先に読んどきます)