关于iPhone SDK Unit Test
by Anto on Apr.17, 2009, under iPhone Dev
由于这两天在写一个iPhone Midi的播放库,所以需要运行一些Unit Test,经过一番调研,发现现在有三个解决方案。他们是
1. SDK2.2以后系统自带的OCUnit库,在XCode可以直接添加Unit Test Target和Cocoa Touch Test case,但对于在XCode里无缝的运行,我始终没找到任何答案,在现有2.2SDK和3.0SDK的文挡里,仍旧强调iPhone Unit Test仍未支持。不知道Apple到底为什么把没有完成的测试模块放到XCode里,还是没有时间更新文挡。总之最简便的路行不通。
2. 我用的方法实际于现有自带的OCUnit库,手工添加Unit Test的Target, 从而为我的项目添加Unit Tests. 在本文的最后我会具体描述一下配制方法。此种方法的优点是编译后马上能看到结果,但是缺点是无法做UI测试。
3. 另一个方法是用google-toolbox-for-mac中带的iPhone Unit Test 框架,其实此框架也是基于OCUnit库,但是区别是google-toolbox-for-mac添加了一部分自己的代码从而实现有限的UI测试。但是经过测试,我发现google-toolbox-for-mac的Unit Test 工具在>2.1编译的程序上无法正常工作。所以最终放弃了它。
配制步骤
1. 添加一个新的Target,例如UnitTests
从Project -> New Target, 选择添加一个Cocoa Touch->Unit Test Bundle.
2. 配制UnitTests Target
双击新添加的UnitTests Targets 打开Target 信息。在general页面里添加两个linked Library,一个是Fundation,一个是SenTestingKit(/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2.sdk/Developer/Library/Frameworks/SenTestingKit.framework).
3.添加Target dependency
如果你希望你的项目每次编译的时候都自动运行Unit Test,你可以双击你的项目Target,在general页面上添加direct dependency为UnitTests。
4. 最后你可以添加的Test Case到UnitTests Target里,此代码编译后会提示test case 出错信息。
#import
@interface MyTests : SenTestCase {
}
@end
#include "TargetConditionals.h"
#if !TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
#import “MyTests.h”
@implementation MyTests
- (void)testMyAddition {
STAssertEquals (1 + 1, 2, @”");
STAssertEquals (1 + 2, 2, @”");
}
@end
#endif
自由在泰国 北京-广州-Bangkok-Krabi-AoNang-Lanta
by Anto on Apr.10, 2009, under Odd Jobs
学习写游记不是一件容易的事,又要写的有趣又要详细,还有贴照片,总之是复杂。
先从起因开始,早就想去泰国了,身边的几个朋友都相继去了泰国,回来都说好的不得了,所以一直想去,最近刚好有时间,所以临时火速安排了泰国自由行。我的自由行是全部自己安排的,就我和夫人两人,从订机票到酒店以及行程一切亲历亲为,很是有趣。
手续
手续其实很简单,你要办的就是签证,需要三个工作日,如果你自己办就准备材料递材料就行,我找的佰程旅行网办的,70RMB包括上门取送证件。如果时间近可以找一个叫visajeep的公司,他们可以一天办好签证。
行
一切都从行开始,由于airaisa总是有去曼谷的便宜机票所以选择了亚航,由于我还需要去广州看朋友,所以就买了广州-曼谷往返的机票,1500RMB,其实最便宜的时候199RMB往返。因为要从曼谷去甲米(Krabi),所以又买了airasia去甲米的往返机票,之前对比了泰国其他航空公司的票价,airaisa是最便宜的,另外亚行是廉价航空,所以订票的时候要自己订吃喝,服务很好。
其他的出行基本上都是选择大巴:
- 机场大巴AE2线 曼谷机场到高山路 150Bhat每人,走高速不到1小时就到了。
- 机场大巴AE2线 高山路到曼谷机场 150Bhat每人,不知为什么没走高速,用了快1小时40分钟才到机场,害的我们差点误了飞机
- 机场大巴 Krabi机场到AoNang酒店 300Bhat每人,TAXI要700Bhat,如果人多可以选择打车,或者走到机场南面的town坐公交bus。坐大巴司机会问你去那个hotel,然后送你到酒店门口,当然送每个乘客的确很花时间。大概1个半小时我们到达酒店。
- mini bus AoNang到Lanta岛 350 Bhat每人,包括两次轮渡,先从酒店接客人然后开车送大家到lanta岛上的酒店。时间很长主要是接送人及轮渡很慢,总共用了3个多小时。
- mini bus Lanta岛到Karbi机场,300 Bhat每人,先从酒店接客人然后开车送大家到机场。接人花了1个小时,从Lanta到Krabi机场用了2个小时。
个人感觉除了高山路到曼谷机场的Bus很不可靠,其他的都非常好。
住
我们订的所有住宿都是网上事先订好的,一般是先提交订单,第二天回收到是否有房的确认,然后付款。一般你付的款是不退的,如果你没去住,网站会给你把钱存着等你下回订酒店用。订普通酒店可以选择http://www.sawadee.com/,据说此网站是最便宜的。
在曼谷我们住的是lamphu house, 一家很干净的guest house,老板是瑞士人,位置在高山路边上的另外一条街上相对安静很多。我们住的是空调房没有电视每晚要650Bhat,据说能订上此酒店是很幸运的事情。这家酒店有自己的网站支持网上付款,我用的是招商银行,页面会自动跳转到招商银行的网页上完成付款。http://www.lamphuhouse.com/。从lamphu house 向北有一个在院子里的massage,做的很好。
在AoNang我们住的是Krabi Resort酒店,是一家老四星酒店是AoNang海滩上唯一有自己海滩的resort,酒店设施很好也很大,早餐很好吃,建议去AoNang海滩周边的饭馆从海滩上过去。服务很一般。如果大家想订酒店可以考虑Phra Nang Inn一带的酒店,那一带很安静没有商店,但有很多massage店,很好,早上10点到下午两点半价,125Bhat做一小时泰式按摩。
在Lanta岛上我们住的是Moonlight Bay Resort,此酒店在一个半山怀抱的海湾里,有一座木桥,环境很自然,很好很舒服,这里的服务很好,所有人都跟亲人一样,很快乐。我记的在沙滩上吃饭的时候地上有很多寄居蟹,跑来跑去的,很可爱。这家酒店唯一的缺点是海滩不能游泳,有很多暗礁。另外酒店地理位置相对孤立,到最近得7/11超市要走路20分钟,所以这里安静,但由于Lanta岛很大,所以多数地方都很安静。如果大家喜欢住在海滩边上,建议住在Sri Lanta或Klong Nin海滩附近的酒店里。另外在Lanta岛最南端有好几处很好的隐蔽海滩和guest house,但到那里路很不好走。
吃
基本上吃在曼谷是最便宜的,一杯水果shake只要20~30Bhat, 有时一杯装不下,人家还让你先喝上几口再把剩下的倒完。一盘炒面只要40~60Bhat。在高山路邻近的13码头旁边,有一家饭馆做的超好在Navalai River Resort下面,大家可以去试试。
在AoNang一杯shake要60~70Bhat,一盘炒面要60Bhat~100Bhat.在Lanta一杯shake一般是50Bhat,一盘炒面要60Bhat~70Bhat。在AoNang海滩靠近Karbi Resort 的尽头有很多不错的海鲜饭馆,我们吃过最好的是Ya Ya Seafood, 大家有机会可以去试试。
在lanta不同的地方差距很大,基本上Saladen Town附近是最便宜的,但是从我住的酒店到Saladen Town要骑摩托30分钟,所以有点麻烦。虽然麻烦但是有时候还是很值得的,在Saladen Town横街的西侧,有个叫Rim Nim Seafood的饭馆,一家姐妹自己开的,超好吃,是我本次去泰国吃过的最好吃的一家饭馆。
通讯
中国移动打本地3.39,接一个价,发短信回国1.39,GPRS 5分/KB。另一种选择是直接买一个当地的电话卡Happy Card,打电话1Bhat/min, 一条短信Bhat,上网1Bhat/min, 打回国4Bhat/min。另外泰国的GPRS比国内的快很多,所以用iPhone会很方便。100Bhat买一张卡有30Bhat预存的话费。如果要买充值卡可以去7/11超市买,泰国基本上500米一个。
钱
基本上你有很多种选择:
- 国内在中国银行换泰株,但要事先预约。
- 国内换好美金到了泰国再换泰株,据说这样最便宜。
- 在国外的ATM机里直接用银联的借寄卡取泰株,我觉得这种方法是最省事的,我看了只有暹罗银行有银联的标志,它的取款机是红色的。在我去的所有地方都有。
行程介绍
我们的行程是从北京到广州的飞机开始的,其实这并不是最省的行程,大家可以考虑从天津起飞的亚行航班,有些很便宜。我们去广州主要是看看朋友还有扫货,广州是全世界服装和小商品的批发基地,别看一个个小小的摊位,没准人家卖的就是世界大牌。
我们是早上八点飞曼谷的航班,为了避免误了航班,早上五点半就坐上了机场大巴。结果六点十分就坐到登机口了,生生在候机大厅等了两个小时。从北京到曼谷总共飞了两个多小时。到了曼谷是当地十一点左右,下了飞机就感到一阵热浪,顿感兴奋。在机场我顺便买了一个Happy Card。我们到达高山路是十二点左右,找lamphu house费了点劲,主要他不在街面上,而且天很热我们都很着急,最后给他们打了个电话才找到。到了房间后很满意,房间虽小但是很干净,床上的东西都很干燥。
Room
洗了澡凉快了会儿我们就迫不及待的出门了。先在路边摊吃了炒面和炒米,味道还行而且很便宜,发现自己简直就是在老外的海洋里,开始还有点犹豫是否在路边吃,后来看到老外都在那里狂吃后索性也坐下了。最喜欢Fruit Shack,其实就是我们的冰沙,不过人家是用鲜水果及冰打在一起。在曼谷我基本上一天喝5杯,30Bhat,很便宜,一大杯,如果做好了一杯装不下,人家还让你先喝上几口再把余下的倒完。吃完饭我们就赶往第一站Golden Mountain,那里是曼谷市里的一座小山,山上有个寺院。我们去那里一是为了登高望远,二是为了坐水上BUS去商业区。去之前我们遇上了曼谷声名狼藉的TUK司机,我跟他们逗了一会儿然后没坐他们的车然后打了个车走。金山寺没什么特殊的我们转了一圈就下来了,门票20Bhat。
Golden Mountain
离开金山寺我们上了去市中心的River Bus,船开的很快,最有意思的是售票员,基本上是个杂技演员。
On River Bus
我们坐River Bus还做过了站,还好有个老外提醒我们,使我们不至于走太远回头路。曼谷的大商场东西不贵,Levis裤子比中国便宜200多,内衣是中国的三分之一,化妆品也便宜很多,有意思的是很多化妆品导购是人妖。很多商场支持银联,所以你可以要求他们刷RMB。我们在Boots里买了防晒油,发现Boots基本上就是中共的屈辰士。泰国的轻轨和新加坡的差不多,但是我个人感觉有点贵不如打车。晚上回到高山路发现这条路整个都疯了,全是人,全是酒吧,及其热闹,但我没什么体力再玩了,所以草草回去睡了。
第二天一大早我们就去了大皇宫,Guest house老板劝我们花20分钟走过去,但是由于我们时间很紧所以还是打车了。到了大皇宫还没开门,所以等了一小会儿。其实大皇宫和玉佛寺是一个地方。门票200Bhat。
Palace
大皇宫的军官特别友善,当他看见我给他们的士兵照相,他就主动那我们的照相机让所有士兵列队站在我们身后为我们照相。
Soldier
离开大皇宫我们又坐更大的River Bus从大皇宫回倒高山路附近的N13码头,并且在码头边上Navalai River Resort下面的著名的泰餐饭馆吃了一顿奢侈的午饭。
Restaurant
发现一个现象,老外很喜欢太阳,他们宁可坐在太阳下暴晒也不坐到阳伞下,而我们已经这时已经躲到带空调的屋子里了。吃完饭我们还在我们住的guest house做了一个泰式按摩,很舒服,一小时才200Bhat。
Massage
坐完按摩我们就背着包赶机场Bus了,我们是5点的飞机,本来留了两个小时,结果不知为什么大巴没走高速,还在半路停了一会儿,结果用了一个半小时才到机场,一路在机场里狂奔总算赶上了飞机,但是没法托运扔了一些东西,心疼死了。到了我也没明白到底为什么,但是总结了两个经验:打车去机场不贵而且快,可以把东西交给航空公司以后回来取。
飞机到达甲米(Krabi)后,我的心情才好起来,出了机场知看见大巴,出租车好像都是私人包车那种很贵,所以还是坐了大巴。最后晚上七点左右我们终于到了酒店Krabi Resort,一个1982年的老酒店,房间都很大,而且冲着游泳池,还挺满意的。当晚我们买了去Phi Phi岛的day trip票,一人1100Bhat,对比了几家价钱都差不多,选了一个船的照片看这新点的,据说船上人少点的。
第二天我们在沙滩上吃完早饭,然后就在AoNang海滩上瞎转,还把衣服送去洗了一公斤30Bhat。下午我们就坐长尾船去了Raliy,80Bhat每人单程,Raliy有三处海滩从下船的海滩步行15分钟可以到第二处海滩,那个海滩基本上都是泥巴,但在那里看到很多登山的岩壁。从那里再走10分钟就到了最美的第三处海滩,沙滩很白,水很清。从这里要回到第一处海滩坐船回AoNang只能原路返回,或坐长尾船,但船老板可能扼你,所以要小心。回到第一处海滩,你可以买票回AoNang,注意票的颜色和船老板的衣服颜色,一个公司的人穿的衣服颜色都一样,你可以买票的时候问问。
Raily
另外Raily上有一些不错的酒店,所以可以考虑住这里。
在往后的一天我们参加了day trip去了Phi Phi,这里就不多说了,唯一可以说的是的,Maya beach后面有一处很隐蔽的小海滩从那里爬梯子出去有一处很好的浮浅地点。大家可以去找找。
Phi Phi
再往后的一天我们去了Klong Thom附近的天然温泉瀑布,很有意思,还去了Tiger Cave,很失败,基本上直上直下的爬山,很热很辛苦。后来发现基本上每个地方都有Tiger Cave。当天下午我们坐mini bus离开了AoNang去了Lanta。
Lanta是个很大的岛基本上骑摩托车从北到南要1个小时左右,岛上有很多隐藏的海滩很美,人也很少,Lanta岛上的居民多是回教的,每天很早就睡了,岛上的游客由于散落在不同的海滩,加之出行必须骑摩托所以也都只在自己酒店附近活动,再加上人少,所以总是非常安静。岛上还有一个很有意思的自然现象,就是早上六点的时候所有的岛上的虫子会集体轰鸣半个小时,说震耳欲聋一点都不夸张,反正自从我到了Lanta,我就每天六点起床了。
世界上有很多潜水爱好者都从lanta去泰国最著名的潜水地点。
到了酒店我干的第一件事就是租摩托车,酒店租300Bhat不用压护照,外面租要走很远很远,200Bhat要压护照。基本上摩托车里都有半箱油,租到摩托车后你不用急着加油,一天大概60/70Bhat油就够了,所以出去转的时候再加也来得急,另外油是上一个客人加的,所以如果有良心,还车的时候最好加点油。如果要去买day trip,最好去Saladen town附近的旅行社买,我买了一个去Kho Rok岛的Day Trip 1100 Bhat。个人认为Kho Rok比Phi Phi 好,海滩和Maya Beach 一样好,但水更干净人更少。岛上还有野生的巨蜥,我们在岛上吃饭的时候看到一只。
Kho Rok
Kho Rok附近的很多水域是浮浅的天堂,水下20/30米可以看的很清楚。
Kho Rok
人很少。
Long Tail Boat
船就静静的挺在那里,当地人及导游都很爱护这里,没有任何垃圾留在岛上。
Under Water
水下随便拍的,最好是带个防水的数码相机。
Nemo
我在水下拍的nemo。
后面几天我们基本上是骑着摩托车在岛上探索,在岛的南端发现了很多很好很隐蔽的海滩,但是去那里路很不好走。如果摩托车车技好可以去去试试。
beach
beach
离开Lanta要事先订好去机场的Mini Bus,到时候mini bus会到酒店接你送你去机场,基本上两个小时以内肯定能到Karbi机场。
好了,到此我的行程也就结束了,想说的是泰国真是个美丽的天堂,做为中国人,我觉的最遗憾的是偌大一个中国没有一处地方能和泰国的海岛相比。我们大海已经被彻底摧毁了,所以我们更应该体会泰国的宝贵,泰国有很多地方已经被游人破坏的很厉害,如果你有机会去泰国,请一定记住呵护你所看到的美丽景色。
另附赠一张自制高山路地图。
View My Kao Shan in a larger map
iPhone 3.0
by Anto on Mar.18, 2009, under iPhone Dev
看了iPhone 3.0 的介绍,有如下感想:
1.更多牛差的API我们可以用。 好处:我们可以做更多的事情。
2.更多的付费模式使更多的商业公司有可能尝试build基于iPhone的产品。好处:可以有机会和一些传统行业合作,做付费产品,或者直接做外包。
3.跟多的外接设备支持,这一点太牛了,这样就吧硬件外设厂商放到长尾里了。好处:可以和硬件厂商合作推出一些特殊的产品,此种产品可以保证相对的唯一性。
4.P2P,最直接的好处是可以开发很多对战或协作的功能,从而加大软件的销售。
5.Push notification, 好像还是离咱们很远,需要service的软件还是有一定运营成本的。
再见的一天
by Anto on Mar.11, 2009, under Odd Jobs
今天过的很慢也很快,我在纷乱的离职手续中始终不停的来来去去, 一切其实都很简单,但我始终没有停下来, 也许是仍旧在一种惯性里,漫无目地的. 手续办完了,我也准备离开,没有告别,因为晚上才是结束.
七点,我们准时来到了告别聚会的场地,每个人都很兴奋,大家一起吃饭,喝酒.还有公司里的麦霸们一首一首的唱歌.我主动请公司的歌后唱了一首我很喜欢的歌,看着她,我忽然感到这样好的声音真是会很留恋的.所有人听着歌喝着酒,很多同事在不断的照相,为我们留下这最后的瞬间.由于头疼,我缩在角落里,看着大家,时而为照相的同事摆个姿势.慢慢的我感觉好多了,头疼好像被带走了,我拿起酒杯和每一个经过的同事干杯.
天晚了,有同事起身离开了,大家一个接一个的,我站在那里和每个人握手拥抱, 不知道从今天往后是不是还有机会和大家见面.慢慢的空气中满是离别的气氛,很多人在道别的一瞬间流下了眼泪,过往的一切都变如此清晰,就像刻在那里一样,如此让人留恋,无比的亲切.离别的在此时凝聚在我们每个人的心头.
为了不让自己过于难过,我唱了一首歌,为大家也为我自己.最后轮到我告别了,我和每个人拥抱道别,最后在和我们组唯一的小女孩道别的时候,我真的热泪盈眶了,我安慰她,但是我不敢看她的眼睛,她满眼的泪水让我内心伤感到了极点,我想我会永远记住我的同事,和我们共同奋斗的每一天. 希望大家都有美好的明天,真心的祝福我的兄弟姐妹和我自己.
过去六个月我都干什么了
by Anto on Mar.11, 2009, under iPhone Dev
从去年8月到今天我一直忙死忙活的写一个iPhone App,现在终于接近发布了,人也轻松了很多, 看着iPhone上运行的程序,感觉有点审美疲劳。不知道大家是不是有同感。
开锣第一天
by Anto on Mar.10, 2009, under Odd Jobs
今天算是正式开张了,很久以前就希望自己真正好好的写写BLOG, 总是没做到, 原因有很多,但终究是懒的. 现在终于有时间了,再没有什么理由了.
开篇实在是懒的写,能写的就是写写自己的目标.经常更新算是一个基本目标,然后是写写感动自己的故事,另外就是写写我的开发历程供大家参考.如果有时间会花点时间写些英文的,算是练手,也是方便国外的朋友. 今天到此为止,以后争取多写点.