徐哲@www.xuzhe.com

Latest

Dose LG on Macbook Pro with Retina Display really that bad?

I and my company had bought & exchanged about 11 rMBPs, 9 of them have LG displays, 2 of them have Samsung displays.

So, dose the LG display really have IR problem? (This is also referred to as “image persistence,” “image retention”, “burn-in”, or “ghosting.”)

The answer is YES.

The 9 rMBPs with LG display all have IR problem. Some of them will show in only 3~5 minuets, the others happen in 10+ minuets, and the best LG I have which happen after an image stay still for about 20+ minuets. So for me, I can say 100% rMBP with LG display have IR problem.

But, dose the LG really so bad?

My opinion would be: NO. In some cases, LG AH-IPS is better than Samsung Super PLS.

Here are two MBPRs, The Left one is a Samsung Display, and the right one is a LG display. Both of them are set to max brightness.

 

As you can see, the Samsung one is a little bit warmer(yellow) than the LG one. Also, the LG has better contrast. But the Samsung has better brightness.

And about the response time, I think the AH-IPS is better than the Super PLS, too.

Here is the test result for LG:

 

Here is the Samsung’s result:

I am not making any calculation, but it looks like LG’s response time is little bit faster.

Additionally, here is an user comparing his/her Samsung and LG display viewing angle on Facebook:

However, I can’t help but notice that its no where near as good as the LG when it comes to the viewing angle. I noticed that immediately when I first saw my new Samsung display as I walked across the room. I’m not sure about color shift, but the perceived screen brightness seems to noticeably change outside of about 20 degrees (10 degrees left + 10 degrees right). That may be the reason why Apple prefers the LG (IPS) over the Samsung (PLS), because although they didn’t advertise the “feature” of image retention, they did claim the wide viewing angle.

So, What do you think? Do you still want to exchange your LG display?

既然给空指针发送消息不会崩溃,那么我们是否还有必要在发消息前判断一下指针是否为空?

在知乎上有人问到说,斯坦福课程里推荐不用判断 nil。但是有时候不判断 nil 又会导致程序崩溃,例如往 NSArray 里插入一个 nil 的情况。

以下是我的回答:

不管斯坦福怎么说,我的建议是如果这个指针可能为空,那么用之前都做一下判断。

为什么这么建议呢?

首先,最实际的理由是,给空指针发消息是非常慢的,而做一下 if 判断是否为空是非常快的操作。
这个速度上的差别是百倍这个单位的。

为什么呢?因为给 nil 发消息这件事情是在运行时判断的,而系统也并非简单的丢掉这个消息,系统还需要判断这个消息是否需要返回值,如果需要,还要判断返回值的类型:如果返回指针、数字、真伪等,则返回 0,如果返回的是 OS 定义过的数据结构,那么会返回一个被填充上 0 的结构回来,如果返回的是其它类型,则系统会返回一个未定义的类型回来。而一个 if,则能够直接跳过这些运行时的处理。

我做过一个实验:

分别是两个100万次的循环,其中一个给 nil 对象发送了 100万次消息,另外一个循环在发消息前,会判断一下该对象是否为空。

实验的结果是两个循环的执行时间相差了200多倍。这还是消息中没有传任何参数的情况。

这就好像我们不建议用 try cache 来做本可以用 if else 判断掉的错误处理一样,因为开销太大。

另外,“给空指针发消息不会崩溃”是语言特性,是为了防止人为失误导致程序崩溃的“保险”机制。我们写代码时应该尽量避免依赖语言特性的写法,因为这不利于代码(逻辑)移植,语言特性本身也是会变化的(哪怕变化的可能性为零)。

最后,这能养成一个好习惯,培养出一个好的思维方式。上述的这种遇到“错误”也让程序继续跑下去的语言特性本身就是有争议的,虽然给 nil 发消息不会崩溃,但也正是由于程序不会崩溃,当你的代码写错时你也无法察觉到,你的程序有可能会进入一个你完全没有预期到的状态,看似一切正常,但返回的结果却是完全错误的。而写代码时花1秒钟加一个简单的 if 判断,就能够清楚地看出哪个指针是可能为空的,这些信息在分析代码问题的时候是非常宝贵的。

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,通常是开发人员才比较有机会“体验”到(作为普通用户,通常是分辨不出架设在云平台上的网站和架设在传统意义上的服务器中的网站的区别的)。

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