设计与传承

顺应民意,南京地铁开始进行车站导向标识的改版,如图:

南京地铁新版导向标识

南京地铁新版导向标识

什么是一个好的设计?在我看来,一个好的设计必须首先满足功能上的需求。作为导向标识,它最重要的功能性就是要表现出车站所在的方位,新版的导向标识在标明方位的同时还提供了车站名、线路号和距离等实用的信息,提供了更多的功能,也就给乘客提供了更多的方便。

设计心理学》一书中提到,对于设计师来说,有一种致命的诱惑叫做“悄然滋长的功能主义”,或者用别的一种表述的方法,就叫做“设计师应该会做加法,但更要重视做减法”。新版标识上所增加的信息,是不是足够的必要?

必要或不必要,对于不同的目标用户,常常会得到不同的答案。假设以外地游客作为导向标识的主要受益者,他们的需求,就是通过搭乘地铁,到达下一个目的地,所以对于他们来说,导向标识能指向最近的地铁站是最为重要的。而车站名称、距离和线路号,都是次要的信息,只要在地铁站内部布置更详细的线路图和换乘指示,他们都可以在到达地铁站后再获取更多的信息并顺利到达目的地。新版导向标识所增加的信息,只是对于一部分人来说可能可以提高出行效率或节省少量出行费用。

所以从“做减法”的角度说,我觉得改版的标志牌算是画蛇添足。

可是在导向标识牌上增加距离信息是广大人民群众的呼声啊,有人会这么说。好吧,这是个很大的话题,而且已经有很多人讨论过,比如白鸦的那篇《听不听用户的?》。

好的设计,除了满足功能需求,应该要考虑到一致性。因为人在日常生活中,通过不断积累对世界的认识,就形成了一种概念模式。通过一致的设计可以有效帮助用户去借助他头脑中已有的知识,去认识和理解新的事物。

南京地铁线路号的标识是什么样子的?答:圆圈里一个数字。或者,你想不出这个答案,但你一看到这个答案时就能迅速的回想起地铁车站里无处不在这种表示方法。可是遗憾的是,在新版的标识牌上,线路标志变成了一个方框,这分明是北京地铁用的表示方式嘛。缺乏一致性,从而不能成功的利用用户心中已经有概念模式去有效的给用户提供信息,是新版标识设计的败笔之二。

要做到一致性,标准化是一个非常行之有效的方法,虽然标准化可能会束缚一些创新,但从成本和效率上来看,它都不失是一种值得考虑的途径。

好的设计,从实现的层面上,要具有可扩展性。尤其当你的设计会成为标准,在多个场合应用的情况下,设计就必需要为多种应用场景留出必要的扩展空间,不然这样的设计就会很难让人来复用,最终失去了设计和标准化的意义。

在这一点上,已经有人恶搞了一下新版标识在”高铁南京南“站应用的效果图,不解释。

新版导向标识在高铁南京南站的应用场景

新版导向标识在高铁南京南站的应用场景

好的设计,在满足了基本的应用需求和设计思想后,最终还是要能给人一种设计美感。一些细节的设计和艺术的加工,是可以帮助设计本身更好的去实现它所应该具备的功能性的。

新版导向标识,包括鼓楼站站内最近更新的各块标识牌,都把原本很有特色的宋体风的字体改成了普通黑体(Serif风变成了Sans-serif风),英文字体虽然一直是Sans-serif的,但是字体也变得更平庸了。虽然美观这件事是见仁见智的,但是我个人觉得把一种有点特色设计变成了一个平庸的设计,大部分情况下恐怕是欠考虑的。

做一个好的设计很难,但更多的时候,传承一个好的设计更难。后来的人常常因为没有经历最初创作的过程,从而无法发现和理解一个设计中所内涵的东西。尤其对于一个功能性很强的东西,在时间、资源等限制条件下,被遗忘或者妥协掉的,总是设计。这也是南京地铁标识系统中现在的问题所在。

有时候,我们会嚷嚷着说,时间来不急了,我们先把东西做出来,细节上的东西和实现上的优化我们以后慢慢再改。但实际上,这种口号从来都只是一种美好的愿望,在功能实现的时候,不管是出于资源有限还是人类天生的懒惰,所有的改进和设计的愿望都会被抛到脑后,并且随着时间的推移,这种愿望实现的成本会越来越高,从而最终无奈的放弃。

做一个好的设计、传承一个好的设计,有时候只需要我们在刚开始的时候多走一步,比如采用文档、标准化等方法把一些基本的东西规定下来,事情就可以得以顺利的推进,并且也许不会增加太多的成本。但是一旦涉及到更改,成本总是会变得很高。可惜人们常常都是短视的。

以上图片资源和部分观点转载自地铁族论坛:链接一链接二

以上所有观点都适用于软件系统的设计和开发。

魔术小游戏 – 猜车厢

整理硬盘时发现了这个2002年时写的已经被我自己都忘记到犄角旮旯里的小程序,虽然它从2002年8月起就一直在Internet上以一个几乎固定的URL存在,也曾经在CSDN软件中心发布过,但似乎所有的搜索引擎都没有发现它的存在。

这是一个魔术大师大卫·科波菲尔的观众互动魔术的翻版,某年春晚上李咏用过一个演化的版本表演过。最近看了一本不错的数学科普书:从惊讶到思考-数学的印迹,其中有一节介绍了一些电视互动魔术中如何通过概率学原理给人造成错觉。不过我这个魔术不是错觉,而是有简单而确定的数学原理在里面,想不明的TX可以到我的那篇有关二进制的文章里去寻求启发。

下载地址是:http://www.freemindworld.com/g34/csdn/Magic.zip

程序截图

程序截图

UI比较丑。用VC6写的,Windows用户应该没有鸭梨,Linux用户可以用wine,但预先要把Visual C++的运行库装上。从现在的眼光看,用原生应用程序来做这么简单的应用实在是自找麻烦,完全可以很简单的用JavaScript在网页上来实现。我在考虑是不是可以做一个在Bambook上运行的Widget呢?

劳动节到了,祝大家节日快乐!

在Linux下玩转MIDI

曾经我非常热衷于MIDI音乐,原因是一直没有机会正儿八经的学习一种我喜欢的乐器,于是在电脑上用HappyEO和Cakewalk制作一些音乐(或者说噪音?)便成为了生活中的一个重要部分。但是最近相当长的一段时间中,我都没有再玩过MIDI音乐,原因只不过是因为我从台式机换成了用笔记本电脑和开始使用Linux……

先科普一下有关MIDI音乐的简单知识:MIDI音乐文件中存放的是音乐的乐谱信息,而不是实际的声音。乐谱信息以一系列的消息组成,比如:用最大力度的50%按下钢琴上小字一组的C键、持续1秒、松开小字一组的C键。电脑在播放MIDI文件时,需要由音源设备把MIDI消息转换成真正声音,再播放出来,音源设备的好坏就直接决定了MIDI音乐的回放质量。

在Linux中玩MIDI,本身也不该是件什么难事,但问题是在于Linux的声音系统一直以来处于非常混乱的状态,各家争鸣百花齐放,使得配置起来很是复杂。另外,现在很多电脑的的声卡上都不带音源设备,这样就没有办法直接用声卡合成声音。

要在Linux下玩转MIDI,就得从这以下方面入手:

驱动层:早期Linux用OSS来驱动声卡,而现在这一块基本上已经由ALSA来一统天下,当然ALSA也提供了OSS的兼容层来保证一些古老的应用。这年头,电脑装好Linux后能正常发声的话,ALSA应该就已经是在正常工作了。

中间层:一些新的发行版都用PulseAudio做为一个应用中间层,通过它去统一应用软件与ALSA的接口。不过这个东西对于玩MIDI这种“专业”的事情来说,不是很有用。我们需要的是Jack。Jack是大部分音频处理软件所使用的输入输出组件,它具有高性能低延迟等优秀的特质。

音源:如果声卡没有硬件的音源,或者硬件音源烂到只能发出电子味很重的声音。我们就需要一个软件音源,通过加载音色库(SoundFont)文件,把MIDI信号合成为声音。Linux下常用的软音源有fluidsynth或Timidity++。另外还需要准备合适的音色库文件。

音序器:简单的说就是用来作曲的软件啦,由于把各种MIDI信号组合到一起形成一个音乐作品。上面说的Cakewalk就是一款Windows下的古董级的音序器了。在Linux下,最有名的当属Rosegarden了。

最终的工作流程就是用Rosegarden谱曲,在fluidsynth或Timidity++中加载好音色库文件,用Jack把Rosegarden的General MIDI Device输出端口连接到fluidsynth或Timidity++生成的Synth输入端口。

以Debian Squeeze为例,在ALSA工作正常的前提下,安装以下软件包及其依赖包:jackd, qjackctl(Jack的图形前端), qsynth(fluidsynth的图形前端), rosegarden, fluid-soundfont-gm (一个音色库文件)。

sudo aptitude install jackd qjackctl qsynth rosegarden fluid-soundfont-gm

安装完后就可以启动JACK Control和Qsynth,首先点Qsynth界面上的Setup按钮,在Soundfonts页中指定要用的音色库文件,如:/usr/share/sounds/sf2/FluidR3_GM.sf2,重启音源引擎。然后可以打开Rosegarden,这时在JACK Control的Connect按钮对应的窗口的ALSA页中会可以看到Rosegarden的输出端口和Qsynth的输出端口,选中它们点“Connect”把它们连起来。同时确认一下在"Audio“页中,Qsynth的输出端口也已经与”system“的playback端口连接正常。

Qsynth设置

Qsynth设置

JACK Control ALSA设置

JACK Control ALSA设置

JACK Control Audio设置

JACK Control Audio设置

大功告成,在Rosegarden中打开一个MIDI文件,或者自己涂鸦几个音符吧,点播放以后就应该可以听到MIDI音乐声响起了。

Rosegarden界面

Rosegarden界面

除了Rosegarden,Linux中也有其它一些音序器软件,比如tuxguitar,就是专门为吉他爱好者准备的。

HappyEO是一款在Windows下用电脑键盘模拟电子琴的软件,也能当成音序器的MIDI信号输入输出设备。这个软件在2000年到2006年间占用了我无数的时间,我乐在其中的用它制造了无数的“噪音”,直到我换了笔记本电脑(没有了标准键盘)和开始用Linux。在把Linux下的MIDI环境配置好后我就迫不急待的用wine尝试运行这个软件,软件运行成功了!看到久违的界面,听着自己已经不再熟练的弹奏,还真是颇有一点激动呢。

在Debian下用wine运行的HappyEO

在Debian下用wine运行的HappyEO

进位制与数学游戏

现有1000个苹果,10个盒子,问各个盒子内应该分别放入多少个苹果,才能使得用户要买任意1至1000之间的一个苹果数,都可以给他(卖的时候是整个盒子卖,不能拆盒子的包装)。

曾经在我的那些数学玩具们——二进制篇中提到过这个问题,看过那篇文章后,答案应该是不言而喻的,1, 2, 4, 8, 16, 32……

如果把题目换成:现有一架天平,若干个砝码,每个砝码应该分别多重才能称出1至1000克整数克的物品?

答案如果是不假思索的1, 2, 4, 8, 16, 32……自然是可以的,那我也不用废话写这篇文章了。实际上1000个苹果需要装在10个箱子里,用天平称1至1000克的物品却不需要10个砝码,只用7个就够了。

差别在于:装苹果的盒子只以能是选择拿或者不拿,而天平则可以不放砝码,或者把砝码放在左边,或者放在右边。所以,我只用两个砝码:1克和3克,就可以称出1至4克的任意整数克。

因此,解装苹果的问题需要用到二进制,解天平砝码的问题则需要用到三进制。二进制有0或1,真或假,开或关的两种状态。三进制则就有三种状态,0、1、2或-1、0、1(平衡三进制)。

在生活中,也有不少东西具有三种状态。对于天平称东西的问题(尤其是那些在XX个小球中找出X个不同的智力题)或者一些带有约束条件的过河问题,都可以用三进制来建模和解决。

进位制是一个很有意思的话题,以学习十进制和二进制的思维方式,我们就很容易的类推出各种进制的表现型式和性质,甚至于还可以捣鼓出“负2进制”之类的东东。感兴趣的TX可以考虑拜读Donald E. Knuth的神书TAOCP的第二卷。

好吧,其实这篇文章算是看了《进位制与数学游戏》一书的一小点收获了,在这本书中,作者不厌其烦的为一个相同的数学模型创造出了无数的问题和实例,所以在看完整本书后,能发现的收获也就只有那么一小点。

最后联想到了一个以前学编译原理时老师讲过的题,当时在课堂上我还真是没能自己做出来:

构造一个DFA,用于识别字母表∑={0,1}上可以被3整除的二进制数。

2011新年好

好多人都在盘点2010,那我也跟风盘一下。

2010年,我做了这些事:

– 写了20篇博客

博客空间总访问量16842 PageView(Google Analytics数据),比去年上涨23%。首页、折腾My BookSSH隧道折腾O2 Joggler加速Linux编译这几个页面的PV占总PV的50%。博客的RSS订阅数刚刚超过了100(以Google Webmaster Tool数据)。

开通了Google AdSense,两个多月以来收入是$0.01,也就是只有一次点击——我自己点的。

– 完成2010年的计划

开车学完了,4月份开始,9月份结束,所有项目一次顺利通过。2010的财务收入支出相当清晰,不翼而飞的开销占总开销的0.2%。时间管理,不敢说自己做得很好,但有很多时候感觉比以前更充实,开始使用Remember The Milk来避免忘事。

– 参与了4个自由软件项目

1. 电子书开源固件OpenInkpot的中文化,提交了一个Patch。但这个项目在6月份以后几乎处于休眠状态,前景不明。

2. 电子书管理软件calibre的开发,完成了豆瓣元信息插件、豆瓣封面下载插件、盛大Bambook设备接口、Bambook SNB文件格式支持等功能。同时参与它的中文化工作。

3. GNU中文翻译小组。在加入这个沉寂的小组6年后,终于提交并发布了包括GNU首页在内若干页面的翻译。但由于这个项目活跃度仍然很低,还有不少页面翻译由于没有得到审核而没有发布。

4. 继续开发PockeTwit。由于饭否刚刚回归,PockeTwit的只针对饭否回归发布了一个新版本,还没有更多的新功能加进去。也还没有能把饭否的支持并回PockeTwit的主干。

– 我自己的自由软件项目

1. LGuo的电子运行图。发布了一个新版本2.60,主要改进了多平台和多语言的支持。

2. 豆饭。饭否回归后发布了一个新版本,没有新的功能增加。曾经把它分支成“豆推”用于支持Twitter,现在已经并回主线,成为一个隐藏功能。

3. Windows Mobile上的火车时刻表和余票查询。这个软件数据来源是12306.cn的实时数据,所以会比离线时刻表更有价值,但在POC完成后一直放在那里没动了。当时停滞的原因是我画不出一个自己满意的界面……后来没有动力再做的原因是我觉得做客户端软件不如做个可以良好支持手机浏览器的Web版更有价值。

– 几个重要的IT产品

1. 汉王N510电子书。没花钱,因为它关注了OpenInkpot和calibre。

2. LEGO Mindstorm NXT 2.0。去美国的时候犹豫再三还是决定买下了。不过迄今为止还没有用它原创出一个我自己满意的作品,倒是为leJOS贡献了一点文档中文化。

3. 盛大Bambook电子书。我承认我这个买得头脑发热,不过还是因为它更多的参与了calibre项目。我写的calibre的Bambook插件正在参加盛大的Bambook程序达人赛,从目前来看,有望把投资回本,欢迎大家去为它投票。

4. O2 Joggler。去年的My Book因为硬件升级阵亡,所以入了O2 Joggler。于是博客的很大一部分流量也从My Book的那篇文章转移到了O2 Joggler的文章。

5. Linode VPS。秒杀到了免费赠送$100的Linode VPS,打算长期使用。

– 旅游

美国5日游(Blog文章(1)(2)(3)(4)(5)),新疆8日游送别京沪线最后一趟绿皮1462次+滁州琅琊山4小时游,创103万人次记录的上海世博一日游

2011年,希望能做这些事:

2011年应该会是忙碌的一年,要做的事很多,为了不在这里给自己太多的压力,就写个“没有鸭梨”的吧:2009年底中国发射了第一颗业余通信卫星希望一号(HO-68),2010年一直想着要试验一次卫星通联却没有实现,就把这个愿望放到2011年吧。小卫星的寿命非常有限,希望能抓住这次机会。CQ satellite, this is BG4XTR, calling CQ and standing by.

几分钟前好友给我带来了新年的第一个好消息:2012年维也纳新年音乐会将由曾经执棒2006年维也纳新年音乐会的马里斯·杨松斯(Mariss Jansons)指挥,2006年的音乐会给我留下了深刻的印象,所以一直很期待他可以再次登台。期待10多个小时后即将开始的2011年维也纳新年音乐会,也期待365天后的2012年维也纳新年音乐会。新年音乐会总是在新年的第一天为我带来新一年全新的气息。