XCode的替代品JetBrains AppCode

嗯,这个是我最近在玩一个开发工具,本来没有打算写在博客上,是跑去CocoaChina论坛贴了一个帖子,写完以后,本着自己对论坛的不信任的原则,决定在自己的博客上备份一个帖子

JetBrains的AppCode是一个新的ObC的IDE,刚刚出了第一个版本,连Alpha测试版都不是,所以很多问题,不过依然值得一试。

官方网站:http://www.jetbrains.com/objc/

优点:

拥有JetBrains贯穿于多个产品线的强大的代码重构;如果你是JetBrains的老用户,比如Java的IntelliJ IDEA,Python的PyCharm,Ruby的RubyMine,你都可以发现以往的快捷键和大部分的代码重构都在。

对于不熟悉JetBrains的朋友,我举几个例子来说明,因为我对XCode不熟而且是Java程序员用词可能不符合ObjC的习惯,所以错漏之处请指教。另下文所述的快捷键是在AppCode中将KeyMap设置为“IntelliJ IDEA”而不是“Default”。

1,代码自动生成。
比如声明一个@property,一般我们需要在.m文件中添加@synthesize,让光标停在propterty行,按一下ctrl+n,唤出菜单,即可秒添加相应的Synthesize代码。其他的还有overwrite父类方法,实现父类接口,都是同一个热键唤出菜单,在按两下上下键和回车键就搞定了,不需要鼠标。
2,代码跳转功能。
使用cmd+f12可以列出当前类的树结构,直接输入变量名或函数名快速定位(直接通配符),回车即可快速跳转到对应位置。ctrl+上下键,是在函数间快速跳转。cmd+n可以直接搜索类(支持通配符)
3,代码重构。
选择代码块,按opt+cmd+m,可以将代码块直接extract成一个方法。同样的操作对变量也适用。按代码块添加异常捕捉,也只需要一个热键,甚至连异常处理代码中连NSLog也已经自动生成(选中状态,也就是如果你不喜欢的话可以直接无视这个NSLog直接输入自己的代码)。

对于键盘流的爱好者,我需要指出一点:AppCode是一个真正的键盘流的IDE,可以让你摆脱鼠标的束缚。
我是从这个公司出品的Java IDE:IntelliJ IDEA得出这个结论的,目前AppCode版本连Alpha版本都算不上,所以可能有些地方还是会不够键盘流,但这个公司的设计灵魂会保证它第一个正式版一定是键盘流的。
XIB的界面设计功能摆脱不了鼠标,但界面代码其实是可以不用InterfaceBuilder而全部手写的(Java里面所有的界面代码我都是手写而不是借助任何界面设计工具,这个问题上我可能是特例)。

缺点:
严重依赖于XCode:XIB和PList文件都需要打开XCode编辑;在代码直接查看快速帮助时如果点帮助中的链接,会跳转到XCode中的Organiser中。更糟糕的是,切换过程中会造成XCode频繁提示Crash,虽然多按几次Continue,但也够烦心的。

最后一点,AppCode是个Java程序。。。用Java写一个ObjC的IDE,这一点蛮搞笑的。

最后贴一张官方的截图,这个截图中演示的是个自动纠错功能,AppCode发现一个没有被定义的变量,提出了4种解决方案,用户用上下键选一下然后回车即可更正。我试了一下,虽然XCode号称有自动纠错的功能,但我没有找到类似的功能(请指教)。XCode需要编译代码才能发现这个变量未声明的错误,而AppCode无需编译就能发现这个错误,并给出自动修复的办法。

 

AppCode的代码重构,有点像MacOS上著名的TextMate(我没用过这玩意,但仔细看过他们的ScreenCast),吧唧按一个快捷键会帮 你生成一堆的代码,自动把光标移动需要输入的位置,当第一个输入完成以后,按一下Tab键,会跳转到第二个需要输入的位置,如此循环直到全部完成。

举例而言,按一下Cmd+j(或者菜单里面选一下),输入alloc(或者在上下文菜单中选一下),回车,生成代码

[[ alloc] init]

光标会自动移到” alloc”前面,

然后输入类名(这里还有自动完成,输入头几个字符以后会把以这几个字符开头的类全部列出来给你选),输完按回车,就会跳转到”init]”后面,等待用户进一步输入。

如果你是TextMate用户,你应该很容易理解我在说什么。

弄了件西装

要参加西式婚礼,没办法,弄了一件。嗯,我很土,所以商标都还没有剪掉。

Myer买的,销售的老头很和善,说给我们打折,先告诉我们打折100,结账的时候给打折了两百。觉得赚到了。打折以后是350澳币,带两条裤子。

这价格还可以,国内随便一件牌子的西装也要两千多人民币呢。

牌子是啥VanHeusen,没听过,回来查了一下,貌似是美国的厂商,不过网站却是澳洲的。

这牌子的官网做得蛮好看的,可惜里面“广告视频”的链接是个已经被删除的Youtube视频,说明这网站早就没人维护了。

贴个这牌子的广告,Youtube的,国内看不到。

无毒不丈夫

一个月前坐火车上班,下火车的时候,看到一个女的,从火车门口直直地摔下去,当时就摔晕了,马上就有个人在帮她,让她平躺,脚伸直,还挥手向列车员示意,暂时别开动火车。已经多次遇到火车上出现病人导致火车误点的情况,这次显然也不例外。下面就是叫救护车之类的情况,悉尼火车系统又是著名的低效率,一个病人可能会让几十辆货车误点上半个多小时。庆幸自己刚好是这一站下车。既然有人已经在伸出援手,所以也就没有停留,也没多想。

直到网上看到有人提到彭宇案,南京小伙,扶了一个摔倒的老太,结果因祸上身;被老大一口咬定是被彭宇推倒的。

这事情已经过去很久了,网上看了太多说法,说道德沦丧,说法官傻B,什么都有。现在最近又出来两个事:深圳一个老干部在小区散布摔倒,无人伸出援手,直到窒息死亡;另一个是江苏的,如出一辙,也是小姑娘扶了一老太,引火烧身。其他示范效应包括,老大摔倒以后自己喊是我自己摔的救救我;还有就是救人的时候先拉上一个人以便互相作证。

联想起月前那个车站上摔倒的人,为啥那么多人伸出援手,资本主义社会人情味还比天朝还浓。

我想无非两个原因,一个是社会保障制度,摔倒的人不用担心自己的治疗费;一个是司法的公正性,陪审团制度(虽然这制度常常让坏人逃脱惩罚),想拉上一个人为你买单,没那么容易。有了这两点,人就没了后顾之忧,是个人都会伸出援手。

天朝人民总想着良心和道德,就良心和道德而言,我觉得天朝人民是全世界第一的,每每被人卖了还帮人数钱。

没啥道德沦丧的,现实太残酷,大家活不下去,自然要学会摒弃妇人之仁。

药家鑫撞人以后连刺八刀,事情败露以后,说了一句大实话:“怕撞到农村人,特别难缠”。奇怪的是,我并不觉得这句话特别冷血,我是农村来的,我的父辈们也是农村生活,小时候就从他们聊天中学到一个常识:撞伤人不如撞死;而且这是共识,为了佐证这一点,他们可以举出无数例子。为啥,撞死,一次性赔个几万就了结了,撞伤,陪到倾家荡产也不够,农村本来就生活不易,所以面对现实反而坦然而直接,生活的压力没那么多空间让你搞什么道德上的飞机。

无毒不丈夫。

最近事情的演变再一次让人觉得天朝真的凡事皆有可能,为了给药家鑫开脱,甚至专门发明了一个词:激情杀人。激情杀人免死,钦此。那以后强奸杀人都可以免死了,多激情啊。

其实我也同情法官大人,既要看上头的脸色,又要保证屁民不造反;处理不好,引起公愤,再被人肉搜索出来个把腐败的线索,这日子不见得比药家鑫好过啊。但谁来同情被捅了八刀的屁民呢。

真相这还有啥呢,就是药家有人呗,既然CCAV都出动了,这人的面子还不小。

还是吴思写得好,血酬,每条命都有个价码,只要你出得起价,可以买命。以前跟着皇帝卖命还可以拿免死金牌呢,药家鑫家里说不定也有一个。

其实中国一直不公,现在因为只是网络通了消息,消息走得太快,官老爷控制不了,辟谣实在难度太多,因为以前的谣言只是一句,数字时代的消息常常不光是文字,还有图片,视频,简直铁证如山。安抚民心不再是发发文件那般容易。

李承鹏写到:“这天,长安的法庭格外开恩,允许五百名群众入场围观。。。这时的民意前所未有的统一,药渣子药引子药罐子都答:该名同窗一贯温良,品学兼优,给他一个机会,给未来一片蓝天。。。我觉得这个围观的场景很可怕,比那晚上药连捅八刀还可怕。药只杀一人,这时却杀四百人。这样的教育公然训练学生对人性说假话,这样的围观让人瞬间就变成了狼。经此一战,孩子们会陡然明白:只有下手坚决,才能前途远大。这时你就知道,药,为什么会在并无威胁的情况下用弹钢琴的手连捅八刀。”

但其实那四百人心死只是迟早而已,心死了人才好活下去;心若不死,活得太过痛苦。

只是海明威说:“没有人是自成一体、与世隔绝的孤岛,每一个人都是广袤大陆的一部份。如果海浪冲掉了一块岩石,欧洲大陆就减少了一点,如同一个海岬失掉了一角,如同你的朋友或者自己的领地失掉了一块。每个人的死都是我的损伤,因为我们都是人类的一员。所以,不要问丧钟为谁而鸣,它就为我们自己而鸣”。如果我还住在天朝,这句话颇能让我兔死狐悲物伤其类。

不光是制度的问题,还有生活压力的问题。

所以天朝这个现状,我持悲观态度,只要大家的生存压力保持现状,社会保障和司法保持现状,这种道德沦丧就一定不会改观。

有时候我觉得人能够幸福终老,所依赖的完全不是啥实力,只是运气。或者说,运气是最大的软实力。

对于现状,我不说啥。如果最后法院说,受害人是自己倒地的时候,不小心倒在自带刀具上,再顺势一滚,造成八处刀伤,我也不会奇怪。

天朝之所以被称作天朝,就因为神仙太多,个个会变戏法;就算来个猴子闹一闹,没多久猴子也做神仙了。

其实转头看看资本主义呢,也未必好到哪里,也是会闹的孩子有奶吃。上次圣乔治医院把消毒药水当成麻醉剂造成重大医疗事故,又有啥说法了,可怜的受害者一家还是华人,人都废了,最后估计也就是赔款了事。还是吴思那句话,血酬啊。血酬血酬,酬就是钱,就是资本,这又扯回资本主义了。

数字时代的马车

前几天看到有人痛斥乔布斯坑了整个音乐产业链。

造汽车的福特说,如果我去问客户,他们肯定是需要一匹更快的马。

数字时代,出版社和唱片公司会死掉,但作者和歌手不会死,未必会活得更好,但我相信死不了。

有人说歌手已经被逼得只有开演唱会才能赚钱了;开演唱会赚钱难道不好么,以前靠写一首歌唱一首歌就可以数钱数到手软就合理了么。

为啥观众不愿意花10元钱买CD,却愿意花数百元买演唱会的门票,你明白么。

iTunes上每首歌售价一元。

月光博客:“韩寒曾经算出一个作家卖出一本书就赚2块钱,我相信“在线商店”这样的销售渠道可以让作家赚更多的钱,并且激励更多的人去创作。很多中国人使用盗版的原因是因为正版的价格太高,实际上在线商店的出现已经改变了这种局面,正版未必意味价格高,iPhone上的正版游戏大部分只有1美元,只要平台好,付费方便,一首歌或一本书的价格可以降低到1元人民币以下,甚至几毛钱,通过大量的销售而使得作者获得更多的收入,从而实现双赢。如果下载一首歌只要1元钱,并且盗版歌曲大部分被屏蔽,用户寻找盗版歌曲所花费的时间和精力已经远远超过这首歌的成本,那么用户自然会选择花费1元钱来购买正版歌曲。”

100年前,在欧洲马车业是一个很大的产业,现在马车业已经消失了,但交通发达了。谁还愿意回到那个只有马车的年代?包括那些因为马车消失而失业的人们的后裔。他们当年也许因为失业而诅咒汽车这样的怪物,但今天还有谁这么想?

汽车的出现摧毁了马车的时代,互联网和电话摧毁了电报,热兵器摧毁了冷兵器,要举例的话很容易,每次变革都是巨大的,新事物总是要受到抵制的,到头来老产业总要洒泪黯然退场,似乎无数嘘唏,但转头就没人再惦记。

历史的车轮并不会和你讲道理,你道理再大,武功盖世,碰到火枪照样一打就趴下。怎么才是硬道理,落后就要挨打就是硬道理,群众有脚投票就是硬道理,依经据典什么的短时间有效同时代有效,等到换了一代人,谁不是跟着利益走,这么舒服怎么来,忘本就忘本,谁也不再写甲骨文了不是。

无论世界怎么改变,人的创造力永远不会扼杀的,包括书和音乐,这种创造力一定会释放出来,不同的不过是形式而已。

书在历史上也变革过很多次了,从竹简到丝绸到造纸到印刷术,特点是受众越来越广;电子书是顺应潮流的,因为它也是在扩展受众。

作者不会饿死的。竹简的时代书的销量是个位数的时候,他们都没有饿死,当然他们不算专业作家,还得教教书或者做做权贵的门客。作家不能开演唱会但是可以搞百家讲坛的么,平民一点的,可以教书,可以当公务员,作家当公务员还是很有前途的么;话说现在写诗已经不能赚钱了,那些诗人也没有饿死,顾城那时候还去欧洲大学搞搞学术访问什么的,饿不死你们的。

作家可以向艺术家学习,你看那些艺术家都肥得流油,随便搞点啥都被人几百万买走,整天个到处骗吃骗喝,风光无限。

现在都全民写作的时代了,连我都在写,我写点东西当然卖不了钱,主要还是自己想说点啥。我觉得作家也是,可以试试别的行业,顺便写点东西么。你看韩寒都会开赛车,别让自己搞得那么可怜;虽然已经没人让你造马车了,但汽车厂也需要木匠开个木模具啥的。

我也不知道数字时代的产业会进化到什么样子,如果我知道我就发财了;我不是说着玩的,如果我知道数字时代会怎么进化的话,我可以取得和Google和苹果那样的成功,至少去这两家公司当个高管没有任何问题。

20年前,谁能想到互联网的今天如此这般的成功,无数算盘失了业;算盘抱怨了没有,一句埋怨也没有,有泪也在心里流。

乔布斯说过一句:这个世界在发生变化,我们如果可以把握到它的脉搏,掌握住它的方向,我们就能成功。而大多数人,不过想尽办法保护马车业,他们有权势,有财富,有话语权,有道德优势,却注定徒劳无功,注定失败。

Google做的,未必就是对的。百度做的,更是完全错误的。但数字化是对的。另外,Google做的,要比百度做的,对一点。

这个市场其实够大,为什么百度害怕分大家一碗羹呢,乔布斯那么狠,也知道和唱片公司分成,就因为我们的心里都有一种“够狠才能成大事”的无毒不丈夫的念头么。提到无毒不丈夫,我就想到药家鑫。我以前写过一点东西,居然是认同这种现象的;这片土地真TM可悲。

另外在搜索马车业的时候,发现了一个相当不错的段子(数字时代,虽然我们也可以通过立法来保护出版业唱片业,但极有可能是另一个红旗法。欧洲就是好,一家皇帝脑子进水不要紧,总有别家皇帝愿意试试。假设欧洲文明被黑死病灭了,而中国也遇到同样的情况皇帝下了一道圣旨:今起铁牛上路需有人步行持红旗引导,违者斩,钦此;那么今天我们还在坐马车或者坐在铁牛上欣赏红旗):

【“你知道最先研制汽车的是哪个国家吗?”

“啊?不是德国吗?”

“不是,虽然现在德国是汽车制造大国。但最早制造汽车的国家是英国。1765年研制出蒸汽汽车引擎的詹姆斯?瓦特,1839年开发电力汽车的安德森,都是英国人。英国作为产业革命的领头人,开发了很多尖端技术,而且把它们传播到了世界各地。汽车也不例外。1884年以后,德国人戴姆勒和奔驰开发了汽油车。十年后,德国工程师鲁道夫?狄塞尔又开发了柴油汽车。可是,英国的汽车产业为什么没能继续发展壮大呢?”

“就是,是因为技术机密外泄,还是被别国开发的新技术打倒了呢?”

“虽然原因很多,但最根本的是他们拿起石头砸了自己的脚。你听说过维多利亚女王颁布的‘红旗法(Red Flag Act)’吗?”

       “汽车的商业化,导致马车业受到了巨大的损失。于是英国就颁布了这个法规,它的内容很有意思,一辆汽车必须有三名司机,一个人在白天扛着红旗,一个人在晚上提着红灯,目的是在距离55米的地方,就要告诉人们汽车来了。而且最高时速,不能超过6公里。尤其是在市区,时速要在3公里以下。你对这个法规有什么看法?”

“怎么会有这种愚蠢之极的法规?居然把时速在30公里以上的汽车的时速限制在6公里以内。这样一来,怎么还会有人在英国那片土地上制造汽车呢?”

“是啊!所以英国在1896年废止了这条无聊的法规。但就是在英国打击汽车制造业的时候,法国和德国已经具备了所有的汽车生产要素和完整的生产体系。生产出来的汽车也广受欢迎。英国为了拯救夕阳产业——马车业,而颁布了这个法规。但最终却是赔了夫人又折兵,不仅没能挽救马车业,还让汽车行业一蹶不振。”】

红旗法

1865年英国议会针对蒸汽汽车订出世界上最早的机动车交通安全法规一项“机动车道路法案”——《红旗法》,其中第3条规定,“每一辆在道路上行驶的机动车辆必须遵守2个原则:其一是至少要由3个人来驾驶一辆车;其二是3个人中必须有1个人在车前50米以外步行作引导,并且要手持红旗不断摇动,为机动车开道。”在第4条中又规定,“机动车在道路上行驶的速度不得超过6.4公里/时(4英里/时),通过城镇和村庄时,则不得超过3.2公里/时(2英里/时)。”

1896年1月20日,一名叫沃尔塔·阿诺尔德的英国人因违反限速规定而被处以罚款,成为世界上第一个因超速而被罚的汽车司机。当时他的车速只有13公里/时。到1896年“红旗法”被废止之前,英国对汽车的研制几乎处于停滞状态,在英国汽车发展史上留下了可悲的一页。

1875年美国议会也作出决议,认为汽车是危险车辆,“含有一种与我们任何常识性的概念都不相符合的、极其危险的自然力。”对汽车的使用和制造进行了干预。而最早发明了蒸汽汽车的法国,则由于1789年爆发了资产阶级革命,以及后来的社会和政治上的动荡,使它们在汽车的研制方面中断了半个多世纪。

兴趣

我是典型的博爱型玩家,杂而不精是我对自己的评语,我对自己这个优点加缺点心知肚明,乐此不疲,无可奈何,死不改悔。

如果不是天资有限,很多东西力所不能及,我一定会对更多的兴趣感兴趣。但就算这样,我喜欢过钻研过的东西也是扳着手指加脚趾数不过来。

有时也觉得不是好事,感兴趣的时候,一天25个小时都在琢磨这玩意,觉得这玩意有意思,好玩,说不定还能靠它发财,就算不能发财也能拿来向人家炫耀。三分钟热度一过,弃之如敝屣,仓皇不敢回顾,再也不敢提当年的雄心壮志,提起来满脸尴尬加黑线。

心中把自己玩过的玩意盘点了一下,靠谱的,不靠谱的,有收获的,没收获的,觉得早期都浪费了,后期自己还知道搞点备份啥的,最不济也是记了点日记,偶尔自己看看,对着10年前的自己哈哈大笑或哼哼冷笑,乐在其中。

这么多年折腾过来,倒也有几点心得。

第一点是别看拿东西多难,只要有时间,慢慢就不难了,当时不明白,没关系,别急,丢下来别看,过个把月再看,还不懂,过个把年再看,终归是越来越懂。比如日语吧,从一开始有点兴趣,到后来背会五十音,到现在也不过仅限于不到五句日文的水平。但也算有所成。至少我那天我真的去日本旅游,拿着本五十音标注的书,我还能把发音猜出来。

第二点是别做发财梦。豆瓣网兴旺的时候,我想着克隆个豆瓣。后来又折腾CMS各种开源系统。想着搞网上商店啥的。到了最后,经营的最好的就是自己的博客,非盈利性的博客。赚钱或者创业,做做白日梦可以,自己别当真,而且创业这种事情,一般都痛苦得很,还容易把自己的家底绕进去,失败的下场不提,成功了也极有可能依然是头拉磨的驴。所以兴趣第一,只做自己感兴趣的事情,做最简单的最力所能及的事情。

第三点是,啥,别拉人入伙一起搞。首先自己就是三天打鱼两天晒网,有兴趣的时候自然热情没问题,兴趣一消退,不好办啦。而且自己也没忽悠人的本事,没那三寸不烂之舌说动人为自己卖命,而且我还有个缺点,一旦亏欠别人点啥我就不知道怎么说话做事了。拉人一起干,就算是纯兴趣不为钱也不行。不管是花钱的消费还是想挣钱的项目,都别拉人。一个人单干自娱自乐,挺好。

第四点是,不掏钱。什么开发会员啥,千万别掏钱,我看准了,掏钱一定是扔在水里。例子太多了,被我规避掉也很多。除非自己哪天真的折腾出啥成品了,别掏钱。尽量玩软件而不是硬件。能借不要买。能坚持三个月以上,才考虑掏钱。教训太多了。哎。还好一般都是几百人民币的小教训。

为自己开脱一下,其实兴趣广泛是好事,见多识广,找工作的时候能见招拆招,生活中则提升生活质量,再说了,没兴趣的人很危险,什么都不感兴趣的人是最可怕的,很容易有天发神经去搞气功传销轮子功。人都需要有个发泄精力的办法,老憋着一定有天会炸掉,你看阿甘在家呆着呆着突然就决定出去跑步,一跑就是两年多,就是精力过剩造成的恶果。

至少自己老是坚持不住各种兴趣的原因,其实也很多。

有些是太难:我想发财,想创业,想造原子弹,最后在家煮鸡蛋。

有些是发现不好玩了,比如说卡牌,说魔兽世界,玩到后来,套路出来了,每天和上班一样,只好暂停掉。

这方面,还是上班好,虽然上班也有套路,但半强制的,不管你是不是失去兴趣,你都得去,月底有钱拿,准点上班,到点下班。

有个办公室可以去,这是最爽的一点:想想看,如果每天醒过来还要想今天去哪里,该是多痛苦的事情啊,如果出门,选择太多,不出门的话又忍不住责骂自己又不出门;多难啊。别看我兴趣特别广泛,别说我不思进取,我还就是这么想的。

最重要的,IT工作属于我的兴趣,IT是一个不断成长的世界,新事物的诞生远比我的兴趣冷却周期要快,保证了我始终有新事物可以填补我空虚的心灵,就算坐在电脑前没啥可做,也有足够的东西可以玩。多棒!

早上看到一条Twitter:“不管你学什么专业,找工作一定要找个你喜欢的,这样你每天早晨六点到晚上八点都是高兴的。再找个喜欢的人在一起,这样晚上八点到早晨六点就是开心的,这就是生活!”

此言深得我心。