2009年11月28日土曜日

久しぶりに Chromium をアップデート

久しぶりに Chromium (mac) をアップデートしてみたら、以前(8月頃)見れなかった、iPhone OS Reference Library が見れるようになっていた。さすがに正式リリースが近い(rumorだけど)だけある。


個人的には、Chrom(e|ium) のアドレスと検索が一体化したインプットが非常に便利だと思っているので、またしばらく使ってみようかな・・・


追記:アドレスバーに日本語を連続して入力する時に、1回でも変換のエンターを押した以降に入力した内容がどこかに消えてしまう現象が未だに直ってなかった。結構実用上不便だと思う。

2009年11月26日木曜日

Syntaxhighlighter 導入。

Syntaxhighlighter という javascript ライブラリをブログに導入してみた。



<pre name="code" class="言語">
ソースコード
</pre>

と書くだけで、簡単に、ソースコードをカラーリングしてくれて、行数表示をしてくれる上に、コピー用ボタンやら、プリント用ボタンまで付けてくれて、非常に便利。(ただし、Objective-C など、対応してない言語も結構ある。)


blogger の場合は、さらに、Widget 化されていて、Widget ページから、Add to Blogger ボタンを押すだけで、Blog に導入できて、簡単。

2009年11月25日水曜日

Objective-C で class メソッドを書く時に自分のクラスを参照する方法。

+で始まるクラスメソッドを書く時に、
自分のクラスを参照するにはどうしたら良いのかと思って調べていたら、
self で良いらしい・・・


+ (id)objWithSomething {
id obj = [[self alloc] init];
[obj doSomething];
return obj;
}


参考:Objective-C プログラミング言語:メッセージングの仕組み
インスタンスメソッド内では self はインスタンスを参照しますが、クラスメソッド内では self はクラスオブジェクトを参照します。

cocoa の sqlite3 wrapper library

FMDB というライブラリが、良さそう。ドキュメントが無いけど、かなり分かりやすい使用感で、単に SQL を書いたら、欲しい結果が Cocoa らしいインターフェースで返ってくるという感じで、非常に簡単/便利。


追記:FMDatabase クラスの -executeQuery: メソッドでプレースホルダーに数値を入れたい時は、NSInteger 型ではなくて、NSNumber 型で置く必要がある。あと、プレースホルダーを指定する場合は、NSArray のコンストラクタのように、最後に nil を置いてあげる必要がある。


例えば、i が NSInteger で来ているとして、



FMResultSet rs;
rs = [db executeQuery:"select * from secrets where id = ?", [NSNumber numberWithInt:i], nil];

と、呼ぶ必要がある。

2009年11月19日木曜日

iPhone プロジェクト内で普通の関数を定義する。

XCode から、MyFuncs.h と MyFuncs.m という空のファイルを追加して、以下を記述する。


// MyFuncs.h

#import ...

普通の関数宣言 (Objective-C を混ぜても OK)

// MyFuncs.m

#import "MyFuncs.h"

普通の関数定義 (Objective-C を混ぜても OK)


で、普通の関数をぽこぽこ追加した後、
App_Prefix.pch に #import "MyFuncs.h" を追加。


#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "MyFuncs.h"
#endif


これで、プロジェクト内でどこからでも定義した関数を呼べる様になる。

nkf で excel が吐いた csv を utf-8 に変換したら、,(カンマ) が消えた。


nkf -Lu data.csv > data-u.csv


をやったら、なぜか特定の ,(カンマ) が消えてハマった。残念。

mi で開いて、文字コードと改行を変換したらうまく行った。

2009年11月16日月曜日

PHP が性に合わないなと思う PHP の挙動


kt3k-macbook:php-test $ cat this.php
<?php
pRiNt_R(aRrAy(true,TRUE,True,tRuE,tRUe));
kt3k-macbook:php-test $ php this.php
Array
(
[0] => 1
[1] => 1
[2] => 1
[3] => 1
[4] => 1
)

2009年11月13日金曜日

PHP の関数名が case insensitive という事を知った。


kt3k-macbook:php-test $ cat this.php
<?php
function a () {echo "2\n";}
A();
kt3k-macbook:php-test $ php this.php
2
kt3k-macbook:php-test $ masaka!

2009年11月6日金曜日

マイ・アニメーションブロック

iPhone アプリ開発で、起動時にスプラッシュスクリーンを入れたいときとか、細かいアニメーションをたくさん入れたい時に、自分用のアニメーションブロックみたいなのを作ると、コードが読みやすくなるし、タイプ量も減って、コードがメンテナンスしやすくなる。


- (void)animDur:(float)dur next:(SEL)sel {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:dur];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:sel];
}

- (void)anim {
[UIView commitAnimations];
}

- (void)sleepDur:(float)dur next:(SEL)next {
[NSTimer
scheduledTimerWithTimeInterval:dur
target:self selector:next userInfo:nil repeats:NO];
}

- (void)splash0 {
[self animDur:0.4 next:@selector(splash1)];
splash.alpha = 1;
[self anim];
}
- (void)splash1 {
[self sleepDur:1.5 next:@selector(splash2)];
}

- (void)splash2 {
[self animDur:1.0 next:@selector(splash3)];
splash.alpha = 0;
[self anim];
}

- (void)splash3 {
[self animDur:1.0 next:nil];
mainView.alpha = 1;
[self anim];
}

2009年11月4日水曜日

ホスト名に "_"(アンダーバー)が入ってると、IE は cookie を受け付けない。

http://social.msdn.microsoft.com/Forums/en-US/iewebdevelopment/thread/3711fedc-546a-4123-a0b5-33a45a762cc1
http://d.hatena.ne.jp/pirikara/20070920/1190292214

テスト環境で、アンダーバー入りのホストを立てててハマった。
RFC 952 によれば、ホスト名にアンダーバーは駄目らしい・・・
だから、IE は アンダーバーの入ったホストからのクッキーは受け付けない
らしい。