2007-09-30

被rails排擠的DB adapter

受害者有Oracle、SQLServer、Sybase,以後要記得用gem安裝,不要出錯傻傻查半天。
gem install activerecord-oracle-adapter
gem install activerecord-sqlserver-adapter
gem install activerecord-sybase-adapter
其它可以安裝的adapter:
gem install activerecord-firebird-adapter
gem install activerecord-frontbase-adapter
gem install activerecord-openbase-adapter

2007-09-27

Key-Value Coding

NSObject提供兩個method:
- (id)valueForKey:(NSString *)attrName
- (void)setValue:(id)newValue forKey:(NSString *)attrName
我們可以透過這兩個method存取物件中的變數,它們會優先使用變數的accessor method,當accessor method不存在時,才直接存取變數。假設有隻貓:
@interface Cat : NSObject {
  NSString* name;
}
- (NSString*)name;
- (void)setName:(NSString*)aName;
@end
我們可以這麼用:
[cat setValue:@"Cocoa" forKey:@"name"];
NSString* catName = [cat valudForKey:@"name"];
傳給setValue的值如果是nil,會呼叫NSObject的
- (void)setNilValueForKey:(NSString *)s
setNilValueForKey預設會產生exception,我們可以在子類別修改其行為。

Mac編程小筆記

  • Objective-C識別字皆前置@字符
  • id是指標,可以指向任何物件
  • BOOL其實是char,用YES代表1,NO代表0
  • IBOutlet是給Interface Builder看的,沒別的意思
  • IBAction是給Interface Builder看的,與void是同樣的東西
  • nil和NULL是同樣的東西,一般將nil用於物件指標
  • 送給nil的任何通知都會被忽略
  • 不能把nil放進NSArray,要用[NSNull null]代替
  • 儲存在nib檔的物件被重新賦予生命之後,每個物件都會收到awakeFromNib通知
  • #import類似#include,#import會確保檔案只被引入一次
  • 把數字當物件傳遞時可以用[[NSNumber alloc] initWithInt:(1234)]
  • 用alloc建立物件時,retain count為1,呼叫retain會將retain count加1,呼叫release會將retain count減1,retain count為0時,物件會被釋放
  • 物件的dealloc會在retain count為0時被呼叫
  • 呼叫autorelease會將物件放進autorelease pool,在event loop結束時被釋放
  • 從alloc、new、copy或mutableCopy取得的物件,retain count為1,且不在autorelease pool中
  • 從其它函式取得的物件,retain count為1,且在autorelease pool中,要呼叫retain才能保留物件下次再用,否則會在event loop結束時被釋放
  • init中要記得先[super init],dealloc中要記得在最後[super dealloc]
  • NSLog(@"%@")顯示的物件資訊是由(NSString*)description提供
  • 用NSWindow的initialFirstResponder指定預設輸入焦點
  • 編譯取取得selector:SEL selector = @selector(message:)
  • 程式執行時從字串取得selector:SEL selector = NSSelectorFromString(@"message:")
  • [object message:arg]會被編譯器換成objc_msgSend(object, @selector(message:), arg)
  • 可以用(BOOL)respondsToSelector:(SEL)aSelector檢查物件的method是否存在

2007-09-24

第二次東京出差

9月14日下午12:50國泰航空,17:30在成田機場降落後,乘利木津巴士到池袋太陽城王子飯店,然後步行到CXX公司,開始爆肝之夜。 忙到9月15日早上6點左右才去Sunroute Hotel check in,洗個澡,休息一下,7:40就check out,搭地鐵去東京車站附近的NXX Dxxx Center。中午在旁邊的地下街吃了鮪魚生魚片飯。下午完成升級工作,再接再勵搭電車去濱松町的NXX Dxxx Sxxxxxxx,繼續開會到晚上6點多。大約19點時,終於到爆肝之日的第二家旅館Chisun Hotel check in,休息到20點多,慢慢晃到濱松町站附近的吉野家吃個牛肉飯。填飽肚子,回到旅館,分析log到23點左右,洗個澡,接著就努力的還睡眠債。 9月16日,一直昏睡到12點多才覺醒,午餐就吞個麵包解決,繼續分析log、讀blog、掛IRC到晚上。晚餐一樣晃到濱松町站附近,吃蕎麥麵。然後回旅館繼續分析log、讀blog、掛IRC。 9月17日,上午閒閒沒有事,10點多搭電車到有樂町站,步行至銀座Apple Store,在裡頭待了2個小時,再走到Sony Building看看新玩具。下午二點多回到旅館,吞了在便利商店買的吞飯團,然後分析log、讀blog、掛IRC到晚上。晚餐,很沒有創意的,又跑去 濱松町站,吃了蛋包飯。回到旅館,繼續很沒有創意的分析log、讀blog、掛IRC。 9月18日,早上8:50到達NXX Dxxx Center,開始分析log,兩臺伺服器,共100個5MB的檔案。11點多,到東京站搭電車到有樂町站,轉乘地鐵到豐州的NXX Dxxx辦公室,檢查另外2臺伺服器。一直忙到3點多才去吃午餐,點了漢堡飯套餐。接著,再去NXX Dxxx Sxxxxxxx開會到晚上。晚餐再次用便利商店的飯團解決,然後悲苦的改程式、分析log、讀blog、掛IRC。 9月19日,早上到NXX Dxxx Sxxxxxxx,依然是開會,到12點半,趕快逃命去搭13點10分的利木津巴士。大約14時30分到成田機場,搭乘15點50分的航班,16點20分回到臺灣。 這樣的人生,除去工作好像只剩blog和IRC,這樣實在太悲慘了。好心的姑娘快來救救我啊,不然都沒有動力出去玩。最後,毫無意義照了幾張,放在flickr

2007-09-01

珠海閒逛

不會寫遊記,僅簡單記錄時程,供下次參考。費用:澳航來回機票6500元,高鐵新竹、桃園單程130元,統聯客運至機場20元。 8 月30日,下午竹北搭17:28時的高鐵, 17:38時到達桃園站,花20元坐統聯客運至桃園機場,過海關後到遠航貴賓室吃吃喝喝、上網鬼混。19:40時登機,搭乘澳門航空20:05時起飛的航 班,21:55時底達澳門。因為過了橫琴口岸開放時間,走人比較多的拱北口岸離開澳門。進入珠海後,乘黃總的車,約於23:30時到達2000年大酒店。 8月31日,早上去雲山詩意簽約,下午在百貨公司逛了一下。晚餐在新海利海鮮餐飲城,再到珠海國際會議中心大酒店的卡拉ok。 9 月1日,早上9點搭黃總的車,走情侶路去石景山吃早點。因為是週六,所以一定要走人少的橫琴口岸進澳門,假日走拱北口岸大概要罰站排隊至少一、兩個小時, 鐵定連飛機的背影都看不到。過了橫琴口岸還要乘車到機場,大約11:30才過機場海關,時間抓得有些緊,飛機12:10時起飛,13:50時降落在桃園機 場。