2008年10月 存档

AirPlay家族产品Codename命名法则

2008年10月31日,星期五

我想很多人不知道Zion啊,Megatron是什么。其实,他们是AirPlay产品的Codename,就是开发用的内部代号。这样做的好处,一个是可以隐藏真实真品意图,二是可以简化表达,三是一个产品组的娱乐项目,四是把它直观化传达给用户。

Zion总是比“第二代AirPlay产品架构代码”这样的表述来的简单多了。所以,我喜欢codename,我希望有机会能让用户投票决定,或者纪念某一个事件或者人物,或者是为了感谢为AP开发有特殊贡献的人,请他来命名。

从公开的Megatron开始,AirPlay产品家族启动Codename来对外对内沟通。到目前为止,AP家族的产品都遵循这样一个命名原则:

  • 第一代概念验证代码,原型代码,以著名的动画片Transformers角色来命名。因为我们小的时候最喜欢的就是Transformers,很多人都这样。如同电影版上映引起的巨大轰动一样,我们也希望我们提出的概念原型能得到广泛的积极响应。所以桌面第一代命名为Megatron,就是威震天,移动第一代命名为Soundwave,就是声波,在线第一代命名为Bumblebee,就是大黄蜂。
  • 第二代为正式的产品代码,在第一代的基础上总结,强化概念,成为完整产品,以电影Matrix中的地点、人物等命名。目前只有Desktop的Zion架构,Zion城是Matrix中人类在真实世界最后的据点,本意是耶路撒冷的一个珈南要塞,被大卫攻克,在《圣经》中被称为“大卫城”,后来指锡安山(耶路撒冷的一座山,上建有王宫、宇宙;锡安山在历史上被犹太人视为犹太国民生活中心的象征) 。可见Zion的意思不一般哦。
  • 第三代还没有出现,甚至概念都没有。不过如果继续延续使用电影中的要素命名方法,可能会是电影the Lord of the Rings。不过也有朋友反对继续沿用电影要素的方式,也可能是美食的名字,比如Sushi,或者是以某些名猫命名,Scottish Fold。

AirPlay Mobile? 好吧,我坦白。它就是Soundwave~~

2008年10月31日,星期五
Technorati 标签: ,,,

近一段日子,不少朋友在群里或者在论坛和我说,做一个手机播放器吧。虽然我不太愿意透露,但还是让大家知道吧。

这个产品在AirPlay家族的产品路线图上是有自己位置的,它叫AirPlay Mobile,按照AirPlay家族的开发代码的命名规则,昵称为Soundwave。

在Transformers里面,Soundwave是Decepticon之中负责情报收集的,是Megatron忠实的左膀右臂,负责情报收集,可以变形为收音机。事实上,Soundwave的概念设计就是类似的。它是AirPlay Desktop的延伸,可以与Megatron(这是上一代代码开发代号,新一代是Zion,再下一代可能是Sushi或者Gandalf)协作,将音乐体验延伸到移动设备。由于客观条件限制,以及Zion尚未完工,Soundwave还只是概念,不过可以预见的是,Soundwave并不会是一个轻松的、简单的小玩意。

事实上,我们毫不担心Soundwave的解码能力,一样能继承Zion架构的强大解码能力,只要能够支持Standard C++,移植解码部分的难度不会很大。但是界面、读取压缩、无缝播放都是很痛苦的,这并不是技术上的原因造成,而是移动设备上的条件限制。

首先,屏幕和色彩,无论使用和用自适应基础,手机的屏幕大小和颜色总是千差万别的。想要精细控制的话,基本上就必须要为每一个来设计,那不是一个很小的工作量。要知道,Zion界面设计的时间要占据产品开发周期1/3左右的时间。

其次,CPU计算能力和电力供应。众所周知,手机都是有电池的,那意味着电力供应有限,不能因为一个播放就把用户电力消耗干净,应该尽可能介绍不必要的电力消耗。但是一个复杂的图形,不可避免的计算;解压缩所需要的计算,这些都需要重新考虑。而且,现在还不清楚手机CPU的计算能力可以达到如何的程度,是否可以采用目前的多线程机制,不知道对X86代码的移植是否存在障碍。毕竟Zion的底层使用了相当数量的汇编语言。

最后,多平台。手机上的平台众多,说起来起码有J2ME、Symbian家族、Windows Mobile家族、Linux、iPhone,还有Google家的Android。中间是否要全部支持,或者只需要开发特定的版本,是否有共性,是否有个性,是否可以统一键盘差异,这些都是问题。既不能非常消耗精力,又要达到极致,这是很难的。

既然还有这么多未知问题,不如先让Soundwave继续概念,当概念变成原型,通过用户验证了概念,那么Soundwave荣耀登场的时间就不远了。

欢迎有移动开发经验的朋友多提意见,和我交流。

猫是怎么淹死的?

2008年10月13日,星期一

猫是怎么淹死的?

显然,掉进口水里面。

这是QQ群里一群无良用户提出的作文命题。之所以说他们无良,就是因为这群不断挑刺的用户完全不考虑开发者的辛苦,只是在提要求,提要求,提要求……

可能所有的产品都会遇到类似的问题,似乎永远满足不了用户的期望,用户永远都在抱怨。身为开发者的我们应该怎么办?

  • 倾听用户的声音,然后无视之

身为产品的设计者、开发者或者像我一样的打杂者,应该清楚地理解,至少是认识到产品设计的目的、目标、对象,甚至背后的商业逻辑。所有的工作必须围绕一条清晰的线索,那才是你最重要的东西,细节只是实现它的步骤与方法。可能每一个用户都会向你抱怨,告诉你他的不满和希望,你要满足每一个人吗?恭喜,你快挂了。

用户告诉你的内容是很重要的,可以验证你的思路,给你启发,但是用户不了解整体的思路,也不了解没一个细节,看到的往往是局部和片面的。这个时候,你应该牢牢把握自己的产品设计逻辑,注意我说的是逻辑,分析用户的要求,列个清单,排个优先级,然后排期。真正的工作绝对不是开发本身,是确定一个产品设计的逻辑,分析需要和竞争环境,对比竞争品,设计产品细节,这些问题解决了,才能考虑如何开发。一旦首先从开发入手陷入细节当中,那么不久以后你的对手打着望远镜也找不到你了。

  • 小心,别被用户带到沟里

人们总是喜欢把自己当作超人、蜘蛛侠或者钢铁侠一样的怪物,特别是程序员。比仆役还悲惨的开发者试图满足每一个上帝的愿望,生怕自己那块钟被某个上帝搬了去当作鼓风机。

如同超人不是一个模子刻,上帝也不会是一个妈生的。虽然都被尊称为用户(大人),但是用户和用户肯定是不一样的。简单举例来说,早期参与度最高的用户往往是一群,以玩产品为乐趣的人。他们会拆了你的产品,破解它,然后肆无忌惮的讲出他们的不满,直接而毫不留情,甚至会考虑各种毁灭你产品的可能。正如一句谚语所说,会哭的孩子有奶吃,往往这类用户的要求会得到最优先的满足。得承认,这类早期用户提出的意见往往是非常重要的,会对产品带来非常大的影响,而且他们也是最执著的,只有有兴趣,他们会一直折腾下去。如果你的产品连早期用户的心都不能俘获,那么可以肯定地说,您失败了,而且很彻底。另一方面,早期用户的想法不能代表全部用户,或者说主流用户的意见,因为这是两个不同的目标群体。因此有这样一种可能,您会被早期用户带到沟里,让您远远的离开主流市场,莫名其妙的失掉的江山。

可能有人会说,这些都是废话,还是没说具体怎么来处理。我只能讲一个方法,保持清醒的设计逻辑,抱着尝试的心态,去和每一个用户沟通。方法么,运用之妙,存乎一心,没什么固定的套路。你可能需要一个产品路线图的草稿,放在阴暗的角落,没想清楚前,没有认真地调查分析得到结论之前,千万别拿出来,否则做起来有压力,不做会被骂。而且,不要试图在一个版本中解决所有问题,设定每一个阶段目标,尽早发布,尽早测试,让用户引领你未来的路。

  • 你不可能满足所有人,所以你必须忘记你是谁

正如上一节所说,用户和用户不一样,因此市场必然细分。事实上,如果你能满足一个细分市场的需要,那么你也一样有机会。

如果你打算进入大众消费市场,虽然人数众多,你还是要抓住一个核心人群,若干核心卖点,过于平庸的产品,总是直接被人忽视的,毕竟这是一个追求体验的市场。没有一个产品能抓住所有人,除非你是市场唯一的提供者,别人没有任何替代品,否则您不得不面临用户细分的选择和竞争品的挑战。一个全面的产品,一定有很多优点,很好很强大,可以满足所有人的需要,但是您如果传递给用户呢?一本说明书吗?如果您不能在10秒内扰那个用户体会到产品的好处,您也是失败的;如果您不能在10秒内传递出产品独一无二的卖点,您也是失败的;如果您不能在10秒内引起用户的共鸣,您还是失败的。这些本不该开发和设计者思考,我想很多人持这样的观点,但您不觉得产品的终极目标不是为了把它制造出来,而是为了赢得市场吗?忘记你是美术设计吧,忘记你是程序员吧,忘记你是项目管理者吧,每一个人都是市场人员,都是客户服务人员,这样才对嘛。

定位在适当的细分市场,是决定产品成败的首要因素,个人以为它的重要性远远高于技术因素,事实上也这是最容易被忽略的。每一个人群,总可以以某些共同特征来确定。挖掘某一群人的需要,是团队所有成员共同的工作,而不仅仅是个别人的工作。

成功的方式很多,失败的原因只有一个就是没有在恰当的时机,提供恰当的产品来满足恰当的市场

AirPlay归来

2008年10月11日,星期六

经过多半年的沉寂,AirPlay新一代架构Zion已经发表。事实上,Zion已经经过几个月的小范围测试。不少用户给出非常重要的建议,我非常感谢他们。

Zion是一个全新的播放器架构,它有几个重要的升级改进。

首先是读取压缩。很多用过KMP和Foobar2000的朋友都知道,KMP如果加入unrar.dll插件,Foobar加入un_pack插件就可以支持ZIP/RAR的压缩文件读取。现在Zion架构的AirPlay已经做到这点,而且完全不需要第三方插件来支持。也就是说,您可以把压缩的专辑用Zion打开,Zion可以在后台自动解压缩,然后播放。顺便说一下,由于Zion采用的多线程异步IO,在一边解压缩的时候,还可以一边播放,只要解压好一首就可以播放。而且,AirPlay支持多级目录压缩,这样能否您可以把多个专辑压缩在一起,很方便。同时AirPlay也处理了在压缩包中的CUE文件,可以顺利定位压缩文件内歌曲,这对于压缩的无损文件来说是非常有帮助的。有了这个好用的功能,您完全可以去VeryCD下载喜欢的专辑,不必解压,用AirPlay播放,非常轻松。

第二个重要改进就是无缝播放。熟悉苹果的朋友一定了解,从iTunes7开始支持无缝播放。无缝播放是什么呢?很简单就是把前后两首歌曲完美的连在一起,听起来就像完整的一个文件。这个功能有什么用呢?在从CD抓取的演唱会版本的歌曲,通过播放器回放的时候,通常不能像CD一样连续听,因为每个文件被加载读取都需要一定的时间,起码在几百毫秒,这样在听感上这样类似的现场版就是不连续的。无缝播放就是要解决这个问题。听起来很简单,做起来还是蛮难的,起码打开解压播放必须支持多线程,必须控制好数据窗口等等。可能您没有想到,AirPlay的无缝播放由于是非常底层的支持,已经做到的即使是压缩文件中一样也可以无缝播放,即使是不同格式的文件也可以无缝播放,这恐怕是其他软件还没有做到的。

第三就是对Pure Music纯音还原算法的改进。我们发现,大部分用户还是习惯于听MP3这类有损格式的音乐。我们增强了对有损音乐的还原处理,听感有了相当大的改善。另外,Zion架构增加了对AAC Musepack WavPack TAK等格式的支持,也增加了对OGG FLAC标签的支持,对于喜欢日本动漫音乐的朋友来说,只要有AirPlay在手全部音乐都能搞定。恭喜有福了。

最后,AirPlay一如既往地追求精细的UI设计。全新的Zion架构完全重写UI代码,变成了全部半透明的效果,这应该是一个趋势吧。在Vista和XP下,Zion保持完全一致的显示效果,这得益于全新的Zion图形引擎,它摆脱了Windows GUI的限制,几乎全部使用自己开发的UI控件。了解开发的朋友可以想想这个工作量的规模和复杂度。根据用户的建议,Zion已经支持更多型号的多媒体键盘,以及全局快捷键,这大大方便了喜欢一边音乐,一边打游戏的键盘党。

Zion架构相对于上一代Megatron架构是几乎完全重写的。我得承认Megatron有着非常大的缺陷,很多问题是没有预计到的。Zion的进步得益于上百位热心用户连续不断的测试,以及多如牛毛的意见,使得设计的目标与思路日渐清晰。即使Zion也不完美,但是它肯定是目前国内最强大的播放核心之一。除了功能强大,还保持了小身材,最重要的,也是用户无法看到的,就是实现了播放核心与外壳引擎之间通过API相互调用,这意味着以后为AirPlay更换外壳更加容易,可能会是一个多变的AirPlay。

一直以来,我确实懒于写作,一是因为不习惯WP的web写作,二是长期开发用户看不到的底层,这是很难和用户说清楚的工作。很多用户抱怨为什么长期没有更新,我只能表示歉意,没办法。今天偶然找到Live Writer这个好用的工具,加上Zion作为AirPlay Beta2即将开始公开测试,所以我决定多费些脑子写个文章出来告诉大家。

AirPlay Zion架构的内部测试程序下载地址是:

http://zion.podez.com

终于写完了,一篇又臭又长的文章,最后我要吼一句:

老子带着AirPlay,回来啦!~~~