“Mac OS X Lion 包含 MacRuby 意味着什么?”

这是昨天知乎上的一个问题。 昨天上午,看到 Merbist 上一个呼吁,说 Lion 中已经将 MacRuby 放到了 PrivateFrameworks 里,号召大家去劝说苹果将其 public 。其实哪怕只是在 private frameworks 里,就已是一个非常好的信号了,我随手发了一个推,很快,知乎上就有人发了上面那个问题。 我在知乎上的回答是: Ruby 是在设计和理念上都很出类拔萃的脚本语言之一,苹果对 Ruby 也很看好,RoR 带动 Ruby 大火之后, Mac OS X 就开始自带 Ruby 。 Ruby 和 Objective-C 有很多相近的地方。作为脚本语言,MacRuby 的开发效率也可以比 Objective-C 高很多,MacRuby 的目标之一是可以用来写 Mac OS X 上的应用程序,而且我们已经看到这是完全可行的。 但我觉得用 MacRuby 完全代替 Objective-C 不太可能也没必要,目前用 MacRuby 开发 Mac OS X 应用至少也必须熟悉 Cocoa Frameworks ,在应用程序开发层面更有可能的是类似 Read more about “Mac OS X Lion 包含 MacRuby 意味着什么?”[…]

我的Mac付费软件推荐

周围开始用正版软件的人越来越多了,尤其是Mac用户。我买过的Mac付费软件也有四五十个了,说说我觉得不错的几个,使用率都是天天级的,如果能帮大家把钱花在刀刃上最好。 按字母排序。 1Password 密码生成和管理软件,支持各种浏览器,比 Safari 的 keychain 自动填写要好用。还可以记录软件序列号、银行帐号等等,不方便放在通用记录本里的内容都能放在这里。 Divvy 窗口定位软件,可用自定义快捷键方便的将当前窗口移动到预设位置和大小,大屏幕必备。 iStat Menu 将一系列系统监控信息放在 menu bar 上,下载速度,cpu 占有率,内存使用情况,一目了然。 LittleSnapper 我买过这个公司好几个软件,LittleSnapper用的时间最长。主要是一个截图软件,提供一些简单实用的编辑功能,对图片的组织管理做的也不错,我把它当iPhoto的一个补充软件,管理各种非photo类图片。 Speed Download 下载管理软件,嫌 Safari 的下载管理功能简陋的可以试试这个。 TextExpander 文字自动补齐软件。神作。节能减排之典范。键盘重度使用者必备。找个机会分享我的 TextExander 之 cocoa snippets 。 TextMate 不多说了,只臭显一下我的 textmate 号:#16654 。让人扼腕的是 TextMate 2 要让我们等到永远了。 Things 任务管理软件,很得 GTD 精髓。有 iPhone/iPad 版本。 我还买过 The Hit List ,不过最后在用的是 Things 。 TotalFinder 我也买过 PathFinder Read more about 我的Mac付费软件推荐[…]

荐书:Cocoa Programming Developer’s Handbook

最近有机会读到Addison Wesley即将出版的新书Cocoa Programming Developer’s Handbook,感觉非常好。 目前市面上Cocoa编程的书,比较有名的象O’Reilly的Learning Cocoa with Objective-C,Addison Wesley的Cocoa Programming for Mac OS X,可以将一个完全不懂Cocoa编程的人带入门。而入门之后,似乎就只有苹果官方文档可看了。对于一些有一定编程经验,又希望学习一个新编程框架的人来说,那些从ABC讲起的编程入门书往往会让他们觉得花了时间却学不到什么东西,他们更需要一本直接告诉他们这个框架能做什么和怎样去充分利用这个框架。从入门到成为一个有经验的Cocoa programmer,有一个很大的落差,其中的经验和相关知识散落在官方文档、官方实例、开源项目和各种各样诸如Cocoadev的知识库和Cocoa With Love这样的blog之中。缺乏一本书,能够把入门者从浩如烟海的官方文档和口口相传的经验中解救出来,给他们一个更全面和深入了解Cocoa的机会。 Cocoa Programming Developer’s Handbook就刚好填补了这个空白,达到了这个目的。这本书首先是内容很全,八大部分二十五个章节九百多页,是目前市面上涵盖Cocoa内容最广的一本书。另外,它的内容非常新,包含了Mac OS X 10.6的许多新特性,实际上它的预计出版日期是明年一月。更重要的是,作者David Chisnall是Cocoa的GNU实现GNUStep的贡献者,有丰富的Cocoa和Objective-C的开发经验,不仅把很多技术的来龙去脉讲的很清楚,又有很多Cocoa编程的最佳实践,这些都是从API文档中很难获得的知识。读这本书就象和一个Cocoa高手交流的过程,读起来可以说是饶有兴味。 但需要说明的是,这本书可能并不适合用来入门,不会去手把手教你如何从无到有实现一个Cocoa应用。同样,它也无法代替官方API文档,不会去介绍每个method的使用细节。它讨论的更多的是”big picture”和”best practice”,是paradigm和pattern,让一个有一定经验的程序员可以更快的进入Cocoa的语境。另外,它不是一本讲iPhone编程的书,但它对iPhone程序员一定会有很大的帮助。 可以说,这就是我一直想要的那本Cocoa编程书,翻看了电子版后,已经在amazon预订了印刷版。如果有国内出版社可以将此书引进,功德无量。

浅谈Blocks

在上次的Snow Leopard tech review摘要中提到,Snow Leopard(实际上是Xcode 3.2附带的编译器)开始支持Blocks。这是一个非常有意思的功能,以前通常只有一些动态语言支持,而现在,C/C++/Objective-C也可以用上这个功能了。 Block, 简单的说,就是一个函数对象,和其它类型的对象一样,你可以创建它,可以赋给一个变量,也可以作为函数的参数来传递。计算机科学中,更常用的名字是”closure”或者”lambda”。先通过一个例子看看什么是Block: void (^hello)(char*); hello = ^(char* str) { NSLog(@”hello %s”, str); }; hello(“robin”); 这段代码申明了一个block变量hello,然后用一个block对象为它赋值,最后调用了这个函数。这是打印出的结果: 2009-09-06 16:36:12.693 blocks[6379:903] hello robin 再看一个例子。玩ruby的都知道each方法,可以很方便的遍历一些数据组合。比如: [1,2,3].each {|x| puts x } 就可以打印出 1 2 3 现在,我们也可以为NSArray加上这样的方法。我为NSArray写了一个Category,加入下面函数的实现: – (void)each:(void (^)(id))block { for (id obj in self) { block(obj); } } 很简单,我们就有了一个属于NSArray的each。看一个调用的例子: 
NSArray * array = Read more about 浅谈Blocks[…]

Snow Leopard Ars Technica Review 摘要

每次Mac OS X升级, Ars Technica都会有一个长篇的评论, 这次也不例外, 有23页之长. 原文在此. 边看边将我比较感兴趣的部分摘要了一下. Snow Leopard是一次主要针对开发者的升级, 预告时就打出了0 feature的噱头, 最终用户能体验到的变化也许不多. 安装 安装大小有比较显著的变化, 比Leopard小很多. 排除Finder采用十进制方式展示空间大小的原因, 真正节约了空间的地方包括: 可运行码中不再有PPC部分. 很多文件采用了压缩模式, 利用extended attributes, 以ResourceFork的形式保存. 从之前版本的Mac OS X会是一个0大小的文件, 但在文件拷贝的层面做到了向前兼容. 对于更小的文件, 会直接保存在extended attributes中, 而不再单独分配一个块(通常是4K). 压缩存放文件, 一方面是节约了硬盘, 另一方面以CPU换I/O. 将内容存放在extended attributes中, 可以减少硬盘磁头的移动. 一切都是为了更快的读写速度. 安装过程中过检查不兼容的程序.另外, 安装增加了掉电保护功能. 64位 一图顶万言 64位内核 K64(64位内核)并没有在所有的系统上被激活, 目前缺省激活的只有08以后的XServers. 要想在其他K64-capable的机器上启动64位内核, 需要在启动时同时按下6和4两个键. 或者用nvram直接修改启动配置. 64位内核最直接的好处是可以使用更大的内存. 更多的寄存器, 新的寻址方式和浮点运算能力对性能提升有帮助, 但只有少数程序(通常是server-based的程序)用到了这些特性, 对更多的日常应用而言, K64没有你想象中那么有用. Read more about Snow Leopard Ars Technica Review 摘要[…]