拍案叫絕!山寨三星硬碟

每次逛中國的電腦商場,想會有一些驚奇的發現。在中國發售的一款充滿謎團的三星USB硬碟SAMSUNG NM-0810,不但官方從來都沒有表示生產過此產品,內部的設計更令人拍案叫絕。

產品背面寫上是香港製造,但大概「廠方」忘記了HONG KONG其實是兩個字,中間是有空格的。依照三星(和其他大廠的習慣),應該寫成MADE IN HONG KONG或者Made in Hong Kong,決不可能是Made In HONGKONG,負責人下次要留意了。

拆開外殼後便會發現真身是USB隨身碟,金屬條是令使用者產生「重量感」的對策,而且明顯地考慮過整體的重量分佈,值得一讚。只是用膠水來固定實在有點兒戲。

微软揭底WP7短命原因:仅为过渡 WP8研发更早

搭载微软Windows Phone 7.8系统的诺基亚Lumia手机
搭载微软Windows Phone 7.8系统的诺基亚Lumia手机

新浪科技讯 北京时间7月5日晚间消息,微软Windows Phone高级产品经理格雷格·苏利文(Greg Sullivan)在接受采访时称,Windows Phone 7之所以如此之短命,主要是因为它是一款临时应对Android和iOS的过渡产品。微软急于推出Windows Phone 7,是想尽早打造出生态系统,为Windows Phone 8做准备。

Windows Phone 7.8是微软给予当前Windows Phone用户的一款安慰品,它是Windows Phone 7的升级产品,开始屏幕有所变化,上图就是安装了Windows Phone 7.8的诺基亚Lumia 900。

Windows Phone 7.8就相当于一款甜品,用来缓解在过去20个月内购买了Windows Phone手机用户即将遭遇的痛苦:即无法升级到Windows Phone 8。之所以说是痛苦,是因为微软知道,此次Windows Phone 8与Windows Phone 7的决裂让许多用户处于黑暗之中。

Windows Phone 8与2010年秋推出的Windows Phone 7彻底决裂,它并未沿袭Windows Phone 7,而是采用了完全不同的内核,即下一代桌面操作系统Windows 8内核。如果说有相同之处,也仅仅是外观上的略微相似。

如果是Lumia Windows Phone用户,诺基亚已经承诺,将对当前系统进行视觉上的提升,并对部分应用进行更新。但对于那些针对Windows Phone 8而开发的应用,是不支持Windows Phone 7.8的。

因此,对于当前已经购买了Windows Phone手机的用户,他们将无法像Windows Phone 8手机用户一样享受将来的各项应用。

毫无疑问,微软此举疏远了在过去20个月中所赢得的Windows Phone用户。当然,没有任何一项技术可以永久持续,但Windows Phone是后来者,还属于新鲜事物,在如此短的时间内进行如此激进的改革,这是有风险的。

开发早于Windows Phone 7

据Windows Phone高级产品经理格雷格·苏利文(Greg Sullivan)称,微软也知道此举将孤立Windows Phone 7用户。当被问及微软是何时开始开发Windows Phone 8的,苏利文称是与Windows Phone 7几乎同时进行的,甚至还要略早些。

苏利文说:“就在Windows Phone 7之后,开发Windows Phone 7.5的团队与开发Windows Phone 8内核的团队几乎同时工作。事实上,部分Windows Phone 8的准备工作早在Windows Phone 7之前就已经启动。”

苏利文将Windows Phone 8与Windows Phone 7的决裂视为产品的“世代交替”。他说:“当一个平台发生世代交替,有时一些企业不得不放弃当前用户。我们是从开发人员的角度、以有利于平台发展的目的而进行的,并继续为当前用户提供新价值。”

苏利文还称:“此次确实是世代交替,这种情况很少出现。我们认为,在可预见的未来,这种情况不可能再出现,因为新架构已经决定了这一切。”

苏利文还指出,当前Windows Phone用户仍可享受到一些服务更新,如SkyDrive云存储、Xbox Live、必应搜索和地图服务等,尽管他们不能像Windows Phone 8用户一样与Windows 8进行整合。

与Windows 8进行整合

到目前为止,微软并未给出Windows Phone 8与Windows 8进行协同的案例,除了一些基于NFC的功能,如通过一台设备启动另一台设备上的游戏。但苏利文暗示,将来会有许多超酷功能。

他说:“还会有一系列新功能和特征是我们从未讨论过的,将来会进一步演示。”

无论这些新功能是什么,当前Windows Phone用户是享受不到的,除非他们将来购买一部新手机。

另外,对于当前用户而言,一些新功能通过软件更新还是无法实现的,必须要硬件支持。如Windows Phone 8的多核芯片组支持、更高的屏幕分辨率、NFC和扩展存储等。

苏利文说:“Windows Phone 8的许多工作需要最新硬件的支持,如多核支持功能,在当前的单核设备上是体现不出来的。另外,Windows Phone 7/7.5/7.8的800×480的屏幕分辨率,几年前还算是高端,而如今就是低端屏幕了。”

苏利文说:“Windows Phone 8是一项着眼于未来的投资,从架构方面而言,极具拓展空间。一些大型数据中心和服务器也使用同样的架构,极具伸缩性。这是一项极大的提升,赋予我们将来巨 大的发展空间。因此,在未来很长一段时间,相信不会再出现这种世代交替。”

苏利文还补充道:“与当前市场上的一些双核设备相比,我们的单核手机也极具竞争力。例如Lumia 900,至少在未来一段时间将继续表现出色,相信拥有这部手机的用户也会很高兴。”

Windows Phone 8系统界面
Windows Phone 8系统界面

设计决定Windows Phone 7短命

Windows Phone 7如此之短命,不仅让人们想到:微软为什么还要推出Windows Phone 7,而不是直接发布Windows Phone 8呢?

答案很简单:微软等不起这么长时间,微软要确保自己有机会与Android和iOS一较高下。

换言之,微软需要用户开始购买Windows Phone手机,从而确保开发人员愿意花费时间和精力为Windows Phone开发应用。而应用可以确保将来有更多用户购买Windows Phone手机。

苏利文称:“对于我们而言,在用户体验方面建立一种新模式,并打造开发人员生态系统至关重要。对于打造一个新平台,这是必要的,我们不希望等到Windows Phone 8上市后才做这些。”

苏利文表示:“Windows Phone 7是我们移动战略的重要一部分,其Metro风格界面、设计语言、新的应用平台等等,都是一个十分重要的里程碑。”

“我们当前的情况是:已经拥有了运营商关系,我们开始打造不同的用户体验方式,我们拥有了大量的应用。Windows Phone 8并非重新开始,而是基于此前的延伸。”

如果微软知道将改用新内核,是否至少应该提前告知Windows Phone粉丝呢?毕竟,诺基亚Lumia 900仅上市几个月时间,如果事先知道该决定,一些用户可能宁愿等待Windows Phone 8。

苏利文说:“我们为什么要提前发布Windows Phone 8的消息呢,事实是:只有我们业内人士才明确知道新版系统或升级版本与老版本的区别,我们对这些很在意。可以看看Android用户群,一般用户是不要知道其系统版本的。”

“对于一般用户而言,重新编译内核并不是一件有趣的事情,但我们例外。这种升级对于那些有影响力、有激情的用户十分重要。大部分Android用户不升级,主要是因为他们没有被赋予该能力,即使有,他们通常也不升级。”

“因此,当我们的平台出现世代交替时,我们认为这是事情的进展,应该告知用户。”

界面设计中庸之道

为什么要对开始屏幕进行重新设计呢?苏利文称:“我们听到用户反馈,他们希望对开始屏幕进行更多定制,调整方块尺寸,他们需要同时看到更多内容,需要更多的主题色彩。”

结果,新的开始屏幕看起来有些像排列整齐的Android开始屏幕,大小方块错落有致,最小的方块几乎变成了普通的图标,仅显示一些基本的信息,如收件箱中的未阅读的邮件数量等。主题颜色方面,用户现可选10种颜色。

苏利文称:“给予用户更多定制空间也要有一定的限制,完全放开也不是最佳方式,微软在这方面的尺寸把握一向很得当。”

当然,控制过于严格也不合适。苏利文还挖苦iPhone称:“任何两位iPhone用户的开始屏幕都很相似,相似程度甚至胜于双胞胎兄弟。”

苏利文说:“Windows Phone开始屏幕上的方块能够准确反映用户所关注的内容,即使是双胞胎兄弟,他们的Windows Phone开始屏幕都不会一样,因为他们的生活是不同的。”

苏利文称,Windows Phone采取的是中庸之道,在严格控制和彻底放开之间进行平衡。

苏利文表示:“对于苹果iPhone,用户只能有一种硬件选择。对于Android,用户又有太多选择,有些并不优秀。而Windows Phone则不同,在用户体验方面有连贯的垂直模式可选,在硬件方面又有水平模式可选,这正是微软所要实现的。”

当然,仅仅提供少数可选硬件,拥有可定制的开始屏幕还不足以让Windows Phone阻止竞争对手的产品销量。在苹果售出大量iPhone的同时,今年第一季度Windows Phone市场份额仅为1.9%,而Android高达56.1%。

Windows Phone 8以中高端为主

微软尚未发布Windows Phone 8设备的硬件规范,关于新产品,苏利文称,Windows Phone 8手机将包括高端和中端产品。

但苏利文同时指出,厂商可在屏幕分辨率、用户可扩展存储和和一些新功能方面进行限制,从而进军低端市场。

尽管如此,苏利文强调,微软对Windows Phone 8的策略是不能过于放开。苏利文称,微软不想像Android那样过于分散。

苏利文称,微软认为,从长远角度讲,太多的选择将伤害到平台,这是微软从此前的Windows Mobile系统中汲取的经验和教训。

他说:“从长期角度讲,过于分散对于维持平台的持续发展是个挑战。”

目前,HTC、华为、诺基亚和三星已经成为Windows Phone 8的硬件支持厂商。苏利文表示,微软希望有更多手机厂商加入到该阵营。

当被问及首发时是否会看到基于诺基亚808 PureView特殊的拍照技术的Windows Phone 8手机时,苏利文称:“希望如此。”

Facebook如何编程:扎克伯格亲自把关 News Feed 算法的代码更新


工作中的扎克伯格

导语:美国科技博客网站BusinessInsider今日撰文揭开了Facebook程序设计人员的神秘面纱。Facebook代码从开始编写到最终发布,都有着极为严格的程序,CEO马克·扎克伯格(Mark Zuckerberg)甚至对News Feed每个代码更新亲自把关,确保不出现任何差错。

以下为文章概要:

Facebook工程师是这家社交网站巨头最有价值的财产,他们拥有非常大的自主权,但同时也面临着尽快发布高质量代码的压力。

谷歌员工李易(Yee Lee)通过与大批Facebook工程师的交谈,在一篇博文中披露了Facebook代码发布流程。这个流程的确与外界之前想象的相差无几,虽然Facebook对代码发布的监督比人们预想的更为严格。尽管这篇博文发表于一年前,但整个流程自Facebook上市以来似乎并未发生太大变化。

Facebook员工主要由工程师构成,人数最多的两个团队分别是Engineering和Ops,总计占了Facebook员工总数的一半左右。此外,Facebook还有大量产品经理。他们要确保代码按时发布。每一个产品经理负责7到10名工程师。

Facebook所有工程师都要接受4到6周的培训,学习Facebook修复漏洞的方法,聆听资深雇员举办的讲座。在进入“训练营”(Boot Camp)的工程师当中,会有大约10%无法顺利通过测试,最终被劝退。

接受完培训以后,工程师开始接触Facebook数据库。他们可以随意核对代码,对数据库做出修改。员工们还会拿到一张“禁做之事”名单,如禁止分享用户数据。尽管如此,Facebook还出台了一系列措施,防止此类事情的发生。

同谷歌一样,Facebook的企业文化同样以工程师为主。一名工程师说:“产品经理基本上在这里毫无作为。”工程师可以修改尚未正式上市的产品规格,在任何时间提出新的功能创意。

工程师会在每月一次的不同团队例会上提交他们的成果。产品推广经理和产品经理会出席这些会议,但不被鼓励畅所欲言。“如果产品经理在例会上畅所欲言,工程师们就会向领导层反应说,‘上次会议上他们有关产品的意见太多了’。”

在Facebook,工程师想做什么,基本上都由他们自己决定。他们会找到主管,说:“这是我想做的五件事情。”产品经理会说服工程师当场试一试,让他们亲身体验这些项目的效果,但他们多数情况下不会对每位工程师的偏好横加干涉。

工程师们不会争论某项功能是否值得尝试,而是开发出原型机。接下来,工程师会用一周的时间开发某项功能并进行测试,以确定它是否值得推出成品。通常情况下,新功能都是由Facebook员工亲自测试。整个过程由一款名为“Gatekeeper”应用控制。这是Facebook“黑客”文化的主要组成部分——快速开发和推出产品,淘汰没有市场前景的产品。

在Facebook,每个人都想参与后端产品的开发。可伸缩性和基础架构是工程师最感兴趣的两个问题。所以,工程师很难对实时消息等前端产品感到兴奋,相反,每个人都希望从事像News Feed算法这样的后端产品。这种做法与其他消费类科技企业的惯例背道而驰,在这些企业,员工都希望参与前端产品的研发工作。

Facebook 创始人兼CEO马克扎克伯格(Mark Zuckerberg)会亲自对News Feed每个代码更新把关。在Facebook,所有重大升级的代码都进行强制评估,任何一个改动都至少由一人把关。但是,无论工程师对News Feed做出任何改动,都将由扎克伯格亲自把关。

Facebook工程师负责测试产品功能,修复产品漏洞,对发布以后的产品进行维护,但他们并不是官方的质保团队。不过,Facebook仍然有负责质量评估的工程师,并积极鼓励每位工程师报告产品漏洞。

正常情况下,代码升级会在每周二发布。Facebook有专门的评估工具,告诉工程师代码更新的风险有多大。

运营团队会逐步推出代码更新。Facebook共有大约6万台服务器,运营团队会逐步将更新后的代码发布到少数几台服务器上,确保它能起作用。最开始是6台服务器,接着慢慢增加。如果需要做出修改,那么这项工作会由提交代码更新的工程师在线下完成。修复工作完成后,代码会再次在那6台服务器上先试用,接着增加到更多的服务器上。

在代码更新发布期间,运营团队会通过IRC和其他实时聊天工具一对一通知工程师,他提交的代码是否需要修改。如果修复以后的结果仍然难以令运营团队满意,当事工程师会被“当众羞辱”,虽然李没有提供有关这方面的具体细节,但他说如果这种情况经常发生,工程师会被炒鱿鱼.

CyanogenMod 团队开始讨论 CM10

代号为 Jelly Bean 的 Android 4.1 已经发布了,因此我们也期待着 CyanogenMod 能尽管推出相应的版本。来自 CM 的团队发布的消息称下一个版本的 CyanogenMod 将是 CM 10 而不是 9.5 版本。

从下载开始,CyanogenMod的开发者们将致力于完成最后的 CM9,然后开始转向 CM10 的开发,目前 CM7 也仍在维护。

Source: CyanogenMod
Via: Android Police

写最少的代码,避免给自己找麻烦

软件开发的一个最基本的事实是:我们必须要写代码,但对于这样的一个事实的最大一个误解是:我们的工作就是写代码。作为软件程序员的最初几年,我一直被这样的思想所迷惑,写代码是一种很强的事,是一种超能力,我们喜欢这种创造东西、成就东西的感觉。然而,多年之后,我终于明白,事情不是这样的。事情的真相是:程序员要干的活是尽量让软件的代码最少。

不要误解,我指的不是像code golf那样压缩代码、节省字符——这样只会导致我们写出的代码无法阅读和维护。如果你能认识到这样的事实:我们大部分的时间都消耗在维护自己写的可怕的代码上,你就会发现,让代码最少、少给自己找麻烦,这无疑就会变成一个相当有创意的好思想。

为什么?

你可以查看一下,看看你用的工具,看看你用的框架。所有你做的,所有这些你使用的工具,都是用来减少代码量的。这些工具能减少犯错误的机会,把开发过程中能导致犯错的因素隔离开。

所以,为什么我们应该让代码尽量少?我承认,我之前说我们的工作是写最少的代码,这是撒了个小谎。我们真正的工作是思考,我们的工作是思考手头的问题,设计一个精彩的解决方案,最后把这个方案转变成软件。创造软件过程中的一个副产物就是我们需要写出这些代码。

代码是副产物

代码并不是你想象的那么重要。我们喜欢用各种理由说明代码很重要:因为开始写代码就意味着我们开始工作,把方案转化成软件,看起来就像是写代码是过 程同时也是目的。我们谈论开发工具,我们谈论语言选择,我们谈论开发环境。我是这样,你也是,大家都这样。享受这种敲击键盘的手艺似乎无可厚非。可问题在 于,我们需要多方面看问题。代码是精彩的,但它也是敌人,它需要你花时间去写,它很脆弱,它可能晦涩难懂,不是那么健壮。

这就是为什么我一直坚守“写最少的代码”的原因。不论何时当我感到有什么东西比它应该有的体积要大或应该有的情况更复杂,我就会说“写最少的代码”。每次当我写了太多的代码,使得很难维护时,我就重构,整理,所有的时候我都铭记着“写最少的代码”。

我不得不提到一点,有时候我们没有办法避免写出一大堆的代码,如果做不到精简,请保持清晰。写最少的代码就是写整洁的代码。写最少的代码是为了写出整洁的代码。当你对要写的代码精打细算时,你的代码就自然变的很清晰。

那么,我们的启示是什么?我想这最重要的启示是,代码只是副产物,我们在开发过程中不可避免的东西。所以,多思考,多重构,删除老旧的代码,用更新更少的代码替换,为你自己的好,今天就开始吧。

[本文英文原文链接:Write Less Code ]