HouseTect, JavaScript Blog
TextMateのGetBundleがうまくいかないときの対処方法
- 2010-02-05 (金)
- Mac
TextMateを使っていると基本的にはデフォルトのBundleでことが足りるんですが、jQueryBundle入れたり、MootoolsBundle入れたりと何かしらBundleを自分でインストールする機会があります。
このときにBundleを簡単にインストールできるGetBundleを使えば、簡単にインストールできるんですが、不調なのかアップデートが必要なのかうまくいかない場合があり、
こんなときはBundleのsvnリポジトリから自分でインストールしちゃうと早いです。
Bundlesから選んでインストールする方法
以下のリンクから欲しいバンドルリンクをクリックします。
http://svn.textmate.org/trunk/Bundles/
そのときのURLをコピーして、以下のように直接TextMateのBundlesディレクトリにチェックアウトする。
僕は自分のUserの下にTextMateのBundlesを入れているのでこんな感じ。
システム全体で共通に使っている人は/Libraryから始めるみたい。
Bundlesは死ぬほど便利なので、入れまくって使いまくりましょう!!
Apple iPadが欲しくなる映像
- 2010-02-04 (木)
- Mac
始め、いろんな方のエントリーを読んで僕は買わないかな〜と思っていましたが、どうにもこうにも徐々に買いたい欲が湧いてきてしまった。
そもそも家でもMac、職場でもMacを使って作業をしていて、ケイタイはiPhoneだしともうMac漬けなので、iPadも欲しくなってしまう。
まずは以下のApple iPadのビデオからどうぞ。
毎回思いますが、この作り手たちの声は卑怯!w
Apple iPad
こちらは実際にiPadに触った人たちのビデオ。
ますます欲しくなります。。
Apple iPad: iLounge.com's Complete Interface Walkthrough (720p HD)
Apple iPad: Hands On
iPad first impressions
いやはや後すこし待ちますかっ!
JavaScript変態複雑化文法最速マスター
- 2010-02-03 (水)
- 技術
Java変態文法最速マスター - プログラマーの脳みそをリスペクト。
JavaScript変態文法最速マスター - 葉っぱ日記をリスペクト。
特に技法的なことではないんですが、functionをいろんなところで絡めてわかりにくくするポイントをいくつか紹介。
if文にfunctionを絡めてみる
単純なifなはずなのに、条件式に即時実行のfunctionを絡めることによってよりわかりにくくできます。
さらにクロージャをreturnして()で実行し、より複雑にする技法もとりいれてます。
for文にfunctionを絡めてみる
そもそもfor文の回りにfunctionを絡めてわかりにくくし、for文の条件式にもfunctionを絡めます。
さらにクロージャをreturnして()で実行し、より複雑にする技法もとりいれてます。
「ちなみにここでやっていることは引数の[1, 2, 3]という配列を受け取って、新しい配列にコピーしてreturnしているだけです。」
出力結果
[1, 2, 3]
Objectに上記やり方を絡めてみる
aというプロパティはただaを返せば終わりなはずなのに、わざわざfunctionでネストしてわかりにくくしています。
bというプロパティは上記if文複雑化とfor文複雑化を応用して、解読が困難な状態を実現しています。
出力結果
[1, 2, 3]
複雑化で気を付ける点
iをインクリメントする部分の複雑化で
という部分がありますが、ここで
このように引数で渡してはいけません。
外側のスコープにいるiではなく、このfunctionの関数スコープ内のiをインクリメントすることになるので無限ループになります。
これ以外にもcurry化をうまく使いまくって、複雑にすることができますが、だいたい上記のことが応用できれば特に問題はありません。
※注意 function絡めは節度と必要度合いを見て実装しましょうね!
エラトステネスの篩 - JavaScript版
- 2010-01-29 (金)
- 技術
こんな感じなのかな。。
サンプルコード
出力結果
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
勉強になりました!
JavaScriptライブラリを使っていてIEで余計なリクエストが発生してしまうケース
- 2010-01-27 (水)
- 技術
ここ最近フロントエンドのパフォーマンスチェックでHttpWatchを使っているんですが、これはかなり調子がいい!
特にインストールするとIEとFirefoxに追加され、Firebugのように画面の下のほうに表示されるので違和感なく使えます。
んで、このソフトを使ってサイトのパフォーマンスチェックをしていたら、IEの場合だけ
「ERROR_INTERNET_INVALID_URL」
というRequestの結果が返ってきて、これってなんだろうと調べてみたら、jQuery・prototype.js・YUIを使っている場合に
IEでDomContentLoaded(DCL)判定するときに発生しているようです。
これでだいたい3〜6ミリ秒のオーバヘッドがあるよう。
ほんのちょびっとですがねw
jQueryの場合(ver1.2.1)
bindReady関数の中にIEだったらという分岐があり、その中でsrc=//:なscriptタグをdocument.writeしているのが原因。
このscriptがdocument.writeされたタイミングでsrc属性のURLをGETする際に、よくわからんURLじゃ〜と言っているんでしょうね。
jQueryがこの判定方法を使っているのはおそらく1.2.1以前だと思うので、1.2.6や1.3.X、または1.4を使っている場合は問題ありません。
ちなみに1.4のDCLの判定は以下のようになっています。
onreadystatechangeとonload、あとは今までにもあったdoScrollで判定しているようです。
prototype.jsの場合(1.6)
このprototype.jsを使っている場合が、今回のERROR_INTERNET_INVALID_URLなRequestを送信してしまうパターンになります。
実際のコードは以下のとおり。
