CRのみの改行コードだとChromeの開発者ツールデバッグのデバッガが止まらなかった

CRのみ(Macintosh)のJSファイルでChromeのデバッガを使おうとしたら、ブレイクポイントで止まらない現象が起きた。
CR+LF(Windows)またはLFのみ(UNIX)に変更したらデバッガでブレイクポイントの箇所で止めることができるようになった。
なんだこの動作は?Windowsだからだめだったのかな?

copy属性付のNSMutableArray型プロパティではセッターをオーバーライドしないといけないらしい

iOS用アプリの勉強中にこのチュートリアルを読んでいたんですけど

こんな感じでNSMutableArray型のプロパティを定義した場合、

@property (nonatomic, copy) NSMutableArray *masterBirdSightingList;

セッターメソッドであるsetMasterBirdSightingListをオーバーライドして

- (void)setMasterBirdSightingList:(NSMutableArray *)newList {
  if (_masterBirdSightingList != newList) {
   _masterBirdSightingList = [newList mutableCopy];
  }
}

mutableCopyを使うようにしなさい、と書いてあった。なんでかいな?と思ったんだけど、NSMutableArrayのcopyメソッドはNSMutableArrayではなくNSArrayを返すようです。それってコピーじゃないじゃん?という気もしますが、仕様なのでしょうがないですね。でミュータブルな配列であるNSMutableArrayでコピーを生成したい場合はmutableCopyを使えってことなんですね。
一つ勉強になりました。

Closure Linterの80文字制限ルールを無効化する

Closure Linterのチェックを通るようなコードを維持しているとJavaScriptコードの品質を上げることができます。JSDocの記述について厳しくチェックしてくれるのでClosure Compilerとの相性もばっちりです。
しかし、Closure Linterはなぜかコードの一行が最大80文字になるルールを解除することができません。ネームスペース+クラス名+prototype+メソッド名で80文字超えちゃうこともよくあるため途方に暮れることがよくあります。何で80文字という制限をClosure Linterの中にハードコーディングしちゃったんですかね…。
下記の記事によると80文字ルールを無視するようなClosure Linterのラッパーを作れば良いらしいです。

というわけでWindows環境上でのClosure Linterの80文字制限ルールを無視するラッパーをつくてみます。

続きを読む

Closure Libararyの最新コードがSVNにはアップされなくなったようです。

活発にコードのアップデートがされていたClosure Libraryでしたが、2013年2月8日以降さっぱりコミットがなくなってしまい「あれぇ?」とか思っていました。しかし、単純にSVNのほうにコミットされていないだけでgithubのほうにはすごい勢いでアップデートされているようです。

  • git clone git://github.com/jarib/google-closure-library.git closure-library-read-only

今もちゃんとメンテナンスされていることが確認できて一安心です。

ブラウザの拡大縮小機能がうまく動作しないサイト用のブックマークレット

ChromeとかでCtrl+マウスホイールで文字の大きさを変えられますが、一部サイトではこの機能がうまく機能しません。原因は、cssで-webkit-text-size-adjustが設定されていることらしいです。

で、私の場合は、こんなブックマークレットを使って回避していました。

javascript:styles='* { -webkit-text-size-adjust: auto; } body {-webkit-text-size-adjust: auto; }'; newSS = document.createElement('link'); newSS.rel = 'stylesheet'; newSS.href = 'data:text/css,' + escape(styles); document.documentElement.getElementsByTagName('head')[0].appendChild(newSS); void 0

ApacheのHTTPレスポンスをgzipで圧縮する設定方法

サービス→クライアントへの応答をgzipで圧縮するのためには、Apacheはmod_deflateを使えばよいようです。

POSTで取得したJSONなどもgzip圧縮してくれるため、サーバのCPUに余裕がある場合積極的に使いたいですね。