MacBook Pro 应当电池用完后充电,还是用到 20% 时充电?

该用就用,想充就充。不要总是在同一个位置开始充电,甚至不需要每次都等到电池被充满了才拔掉电源。

因为锂电池更喜欢没有规律的充放电,总是让电池保持在充满或者完全空掉的状态,是让号称没有记忆现象的锂电池出现记忆现象的最好办法。

如果你把笔记本当台式机用,那么至少每个月做一次充放电(也不需要每次都完全放完)。

另外为何不去看看苹果的网站,人家有权威的官方建议,甚至还能给你的 iCal 加上一个充放电提醒的 event。

http://www.apple.com/batteries/notebooks.html

作为一个普通的网民如何能体验到“云计算”的相关应用?

个人认为,作为普通网民,你完全没必要刻意去体验所谓的“云计算”。因为早在“云计算”这个概念被提出来之前,你所使用的大量网络服务其实就已经完全符合了“云计算”的定义了。

例如 Email 邮箱的 Web 界面,就相当符合现在的“云计算”的定义。以 Gmail 为例,你的所有邮件都存储在“云端”——Google 的服务器上,你在任何一台电脑上都能直接通过浏览器打开邮箱中的邮件。

再比如当年,在互联网尚且不发达的时候流行过一阵子的所谓“终端机”系统。通常由一堆只有极低 CPU 和 极少内存的“终端”,加上一台或若干台强劲的服务器组成。终端机主要负责接受鼠标键盘输入和显示内容,实际处理操作都是在服务器上完成的。后来随着 PC 成本的下降,这类终端机系统几乎消失了。但是,这种“终端机”系统却是相当符合今天的“云计算”定义的——至少也是块“本地云”。

还有很多例子,就不一一列举。现如今之所以到处都充斥着“云计算”的字样,其实绝大多数情况只不过是各家公司“与时俱进”的商业宣传手段而已。

所以,就像当初的 “Web2.0” 一样,“云计算”其实并不是什么新鲜的事物,这只不过是技术人员对计算机产业发展趋势进行总结和归纳后创造出来的一个名词而已——这里摘录一段 Wiki 百科上关于“云计算”发展历史的文字,大家可以看看“云计算”这个名词出现得是多么的晚。

1983年,升阳电脑(Sun Microsystems)提出「网络是电脑」(「The Network is the computer」)。

2006年3月,亞馬遜(Amazon)推出彈性運算雲端(Elastic Compute Cloud;EC2)服務。

2006年8月9日,Google行政總裁埃里克·施密特(Eric Schmidt)在搜索引擎大会(SES San Jose 2006)首次提出「雲端計算」(Cloud Computing)的概念。Google“云端计算”源于Google工程师克里斯托弗·比希利亚所做的“Google 101”项目。
另外,由技术人员总结出的“云计算”这个概念,涵盖了相当广泛的范围。目前普遍认为“云计算”产业分为三个层次,即 云端软件 Saas(软件即服务),云端平台 Paas(平台即服务),云端设备 Iaas(基础设施即服务)。看名字可以大概猜出这三个层次各是怎么回事儿,具体解释请自行 Google + Wiki,我就不细说了。

上面说到的 Gmail,就非常接近 Saas 的定义,而“终端机”则非常接近 Iaas。这都是普通用户有机会体验到的。至于 Paas,通常是开发人员才比较有机会“体验”到(作为普通用户,通常是分辨不出架设在云平台上的网站和架设在传统意义上的服务器中的网站的区别的)。

作为普通网民,如果你发现无论你在何时何地,无论用哪一台电脑(甚至手机),在使用同一个应用(软件或者网站)时,就像压根儿没有换过电脑,没有挪过地方一样,那么恭喜你,你“云计算”了。

关于 iOS 界面交互设计,有哪些比较好的书籍?

我认为,不要看书。

要入门,看苹果的官方 Guideline 足以。
要提高?看书不如看实际的 App。

多订阅国外知名 blog,遇到他们介绍的新 App 就下载下来用,把买书的钱拿去买 App,向牛人的作品学习,琢磨伟大的 App 的设计思路,才是正路。

看书?除非写书的那位作者真的有实际的、在 App Store 上被用户认可的作品,这本书也许还值得花时间一看。但你也必须知道设计潮流这件事情是不断在变化的,就算是大师写的书,也许等他的书写完,印刷出版,再被你拿到手里的时候,App Store 上的最新设计风格已经变了。

我甚至可以不客气地说,这年头跑来写所谓 iOS UI 界面交互设计的书的人,99% 都是把苹果的 Guideline 换个说法讲一遍,加几句是个人就知道的所谓“真理”,然后再把他自己玩别人 App 获得的一些感想说出来的投机分子。

如果有人觉得光是拿着一个很多人都说赞的 App 还是无法理解其中的奥妙,非看书不可,那么我觉得这样的同志还是赶紧放弃设计 iOS UI 和用户体验这件事儿,找个自己擅长的方面去发展吧。

为什么很多 iOS app 存在秒退现象?有什么好的方法避免?

问题里的“秒退”如果我没理解错,应该是指程序显示完默认启动图片后,在初始化阶段就崩溃了,通常也称之为“闪退”。

这种情况应和所谓的内存不足关系不大,很少有程序会在初始化时载入大量内容导致崩溃,并且这类问题也很容易在开发阶段被发现,所以内存不足造成秒退的可能性低(内存不足退,通常是程序用了一段时间,切换了几个画面以后发生的)。

而且秒退是发生在程序刚刚启动的时候,在开发、苹果审核阶段都没有被发现的最大可能性就是,这个问题只会发生在老版系统、老版机型上。

对于很多开发者(尤其是个人开发者),进行所有 iOS 版本,所有 iOS 机型覆盖测试是有难度的,苹果审核时也只是重点审核该应用在新机器、新版本下的运行情况,并不关注老系统。所以这也就是为什么会秒退的程序竟然也能通过苹果的审核。

在新 iOS 上正常的应用,到了老版本 iOS 上秒退最常见原因是系统动态链接库或Framework无法找到。这种情况通常是由于 App 引用了一个新版操作系统里的动态库(或者某动态库的新版本)或只有新 iOS 支持的 Framework,而又没有对老系统进行测试,于是当 App 运行在老系统上时便由于找不到而秒退。解决办法是等开发人员发现这个问题后升级程序,或由用户自行升级其操作系统。

还有一种常见的秒退是程序在升级时,修改了本地存储的数据结构,但是对用户既存的旧数据没有做好升级,结果导致初始化时因为无法正确读取用户数据而秒退。这类问题通常只需删除程序后重新安装一遍就能解决。但缺点是用户的既存数据会丢失——就算有备份可能也无济于事,因为备份下来的旧数据还是无法被正确升级。如果旧数据非常重要,那么就需要联系开发人员要求其进行程序修正了。

另一种已经变得不那么常见的秒退原因是 App 的设置不正确。例如在编译时没有编译 ARMv6 的版本,但是设置里却允许该 App 运行在 ARMv6 处理器的机器上(如:iPhone 1代,iPhone 3G,iPod touch 1、2代和3代8G版)。这个问题除了等开发人员升级外用户自己没什么办法解决。当然愿意换台新机器是最好的 ;) 这个问题目前已经能够在提交应用至 App Store 的时候被检查出来了,因此今后应该不太常见了。

还有一类秒退或是用到 App 里某个功能后必退的原因,是开发时用到了只有新版操作系统才支持的某个方法,而又没有对该方法是否存在于老系统中做出判断。例如程序启动时用到了 Game Center,而没有判断用户的机器是否支持 Game Center,于是就秒退了。

主要的秒退情况就是这么几个,这些都是以该 App 新版系统上能正常跑为前提的。

诸如内存不足、BAD_ACCESS  这类问题通常不管在新旧 iOS 上都会存在,如果是由于这类问题造成的秒退通常都能在测试和审核阶段被发现,因此并不常见。