2013年1月26日星期六

github与共产主义

其实共产党员应该去了解一下github。这才是共产主义实验田, 与共产主义社会有诸多相似。如开源、免费空间、为兴趣编程…甚至从某种角度而言, 它的存在与流行表明共产主义还是有可能存在和实现的。

以我残存的高中政治课印象。共产主义有几个基本假设在github是部分满足的。比如劳动是出于个人需要而不是谋生手段。通常的生产是不满足此条件的。所以貌似共产主义接近浪漫主义。在github上程序员贡献代码并不会收到直接、明确的劳动报酬, 就是出于兴趣。

共产主义的另一个基本假设是生产力足够发达、生产资料按需分配。对于程序员最重要的生产资料其实是电脑。这个大家都有可以忽略。协作编程时需要服务器存储版本。这也是生产资料。由于存储空间足够便宜了。github免费发放给开源项目存储空间。甚至不够好像还可以索取。

在这两个假设之上, 下一个假设是社会化大生产。github恰恰就是为了在协作编程时作版本管理而产生的。马克思在此假设上推出要公有制。在软件业、私有就是由版权来限定。github上的开源设定其实就是公有制。

从github隐约可以暗示, 如果生产过程是自下而上的。产品与原料的不同仅仅是组合方式的不同, 也就是信息的不同。生产就是产生信息, 那么共产主义也许还是有可能的。那是3D打印、纳米自组装、转基因…

关于开源与共产主义还有很多讨论,其他的观点请参考:

Posted via email from goldengrape's posterous

2012年11月7日星期三

用单词进行的头脑风暴

斯坦福的创意课过半,我自认为有些心得。其中之一就是头脑风暴的方法。

通常而言,头脑风暴需要几个人在一起,面谈。有主持人,大家畅所欲言。互相激发灵感。
通常而言,这是不可能实现的。

就创意课而言,同一个团队中的成员,不一定在一个城市,甚至往往不在同一个时区,面对面的交流甚至实时交流就不可能。

即便是有在一起面谈的机会,也需要非常高技术的主持人才能调动现场气氛,活动各个参与者的心思。主持人要控制气氛,不能让一个人太过激动,也不能让其他人冷场,还要在早期抑制负面评价,在中后期抑制节外生枝。

如果头脑风暴中的人再有利益纠葛,如同小王子所说,『语言是误会的根源』。头脑风暴根本不可能进行。

但是这几次的创意课之中,我却发现如果仅仅使用单词进行讨论,却可能是个不错的方法。
在第一课的作业中。任务是总结出全队的共同点。当时我们队用的方案是每个人用16个单词列出自己的特点,然后看了其他人的之后减到8个,再到4->2->1。
在第三课的作业中。任务是重新看待面包。于是我们队用单词首先定义面包的各个属性,并且扩展这些属性。
这两次讨论均是使用的单词,没有用一句完整的话。

单词就像离散的点,稀疏,留有想象的余地,但却有能够指明方向。在一个单词的表达中,很难表达出完整的含义,于是也不会有利益的归属。在企业内的非利益讨论是有可能的。单词,足够简单,不需要经过深思熟虑,能够快速反应,不需要完整表达,即便害羞的人也可以完成,也不需要占用太长的时间,于是离线的讨论也很方便,甚至用短信就可以进行。

头脑风暴中经常会使用脑图mind map作为记录工具。其实mind map的初衷里,也是要用单词来记录,来联想。

不过这几次课中,我还没有找到好用的在线协作的脑图工具。有一次用了google
docs中的绘图工具,真难用啊。而且,头脑风暴的讨论中,并不是一定从一个节点开始发散的,很可能是一个杂乱无章的网络。

于是我找到了另一种标记做图工具,叫DOT语言。http://zh.wikipedia.org/zh/DOT%E8%AF%AD%E8%A8%80
利用一个开源工具GraphViz http://www.graphviz.org/ 可以将DOT语言写的图转换成图片。

DOT语言的写法很简单,比如无向图:a连到b,就是a -- b; 具体的写法网上有很多教程。

在头脑风暴中,这样的写法就足够了。大家用单词作为每一个节点,然后可以用边来联系它们,或者作为孤立的点也没什么。于是方案可以是一群人一起编辑一个DOT语言的文本,然后用GraphViz将它转换成直观的图,以此互相启发。

不过这样需要安装软件,而且仍然不够协作。我仍然需要的是在线、协作、直观。因此又google了一番。发现Google Chart
API里面居然就有DOT语言的API
https://developers.google.com/chart/image/docs/gallery/graphviz

考虑到我的编程水平太差,要重现一个协作编辑器再从中调用API对我太困难了。于是我用Google Docs的电子表格设计了一个。
https://docs.google.com/spreadsheet/ccc?key=0AvhQHv1EqY4YdHhMX2xyejB2dDdtd3dx...
在data_input这个工作表中,参与者可以协同添加词汇,独立的一个或者是一对以表示关系。在image这个工作表中,你可以看到显示出来的图片。

Enjoy

Posted via email from goldengrape's posterous

用单词进行的头脑风暴

斯坦福的创意课过半,我自认为有些心得。其中之一就是头脑风暴的方法。

通常而言,头脑风暴需要几个人在一起,面谈。有主持人,大家畅所欲言。互相激发灵感。
通常而言,这是不可能实现的。

就创意课而言,同一个团队中的成员,不一定在一个城市,甚至往往不在同一个时区,面对面的交流甚至实时交流就不可能。

即便是有在一起面谈的机会,也需要非常高技术的主持人才能调动现场气氛,活动各个参与者的心思。主持人要控制气氛,不能让一个人太过激动,也不能让其他人冷场,还要在早期抑制负面评价,在中后期抑制节外生枝。

如果头脑风暴中的人再有利益纠葛,如同小王子所说,『语言是误会的根源』。头脑风暴根本不可能进行。

但是这几次的创意课之中,我却发现如果仅仅使用单词进行讨论,却可能是个不错的方法。
在第一课的作业中。任务是总结出全队的共同点。当时我们队用的方案是每个人用16个单词列出自己的特点,然后看了其他人的之后减到8个,再到4->2->1。
在第三课的作业中。任务是重新看待面包。于是我们队用单词首先定义面包的各个属性,并且扩展这些属性。
这两次讨论均是使用的单词,没有用一句完整的话。

单词就像离散的点,稀疏,留有想象的余地,但却有能够指明方向。在一个单词的表达中,很难表达出完整的含义,于是也不会有利益的归属。在企业内的非利益讨论是有可能的。单词,足够简单,不需要经过深思熟虑,能够快速反应,不需要完整表达,即便害羞的人也可以完成,也不需要占用太长的时间,于是离线的讨论也很方便,甚至用短信就可以进行。

头脑风暴中经常会使用脑图mind map作为记录工具。其实mind map的初衷里,也是要用单词来记录,来联想。

不过这几次课中,我还没有找到好用的在线协作的脑图工具。有一次用了google
docs中的绘图工具,真难用啊。而且,头脑风暴的讨论中,并不是一定从一个节点开始发散的,很可能是一个杂乱无章的网络。

于是我找到了另一种标记做图工具,叫DOT语言。http://zh.wikipedia.org/zh/DOT%E8%AF%AD%E8%A8%80
利用一个开源工具GraphViz http://www.graphviz.org/ 可以将DOT语言写的图转换成图片。

DOT语言的写法很简单,比如无向图:a连到b,就是a -- b; 具体的写法网上有很多教程。

在头脑风暴中,这样的写法就足够了。大家用单词作为每一个节点,然后可以用边来联系它们,或者作为孤立的点也没什么。于是方案可以是一群人一起编辑一个DOT语言的文本,然后用GraphViz将它转换成直观的图,以此互相启发。

不过这样需要安装软件,而且仍然不够协作。我仍然需要的是在线、协作、直观。因此又google了一番。发现Google Chart
API里面居然就有DOT语言的API
https://developers.google.com/chart/image/docs/gallery/graphviz

考虑到我的编程水平太差,要重现一个协作编辑器再从中调用API对我太困难了。于是我用Google Docs的电子表格设计了一个。
https://docs.google.com/spreadsheet/ccc?key=0AvhQHv1EqY4YdHhMX2xyejB2dDdtd3dx...
在data_input这个工作表中,参与者可以协同添加词汇,独立的一个或者是一对以表示关系。在image这个工作表中,你可以看到显示出来的图片。

Enjoy

Posted via email from goldengrape's posterous

2012年10月28日星期日

合并多个excel

我早说过excel是反人类的东西,是个人以及企业的灾难。

问题:要合并数百个excel文件。格式相同,字段相同。
方案:

clear all
% 文件名按照001.xls, 002.xls....这样排布,1000个以内吧,多了自己改程序
maxindex=286;
% 最大文件编号。
index=0;
for i=1:maxindex
num=num2str(i+1000);
num=num(2:4);
% 耍赖犯懒了,001就是1+1000=1001,取第2-4位。
xlsfilename=[num '.xls'];
[ndata, text, alldata]=xlsread(xlsfilename);
[m n]=size(alldata);

for j=2:m
    index=index+1;
    for k=1:n
       mergedata{index,k}=alldata{j,k};
    end
end

end
xlswrite('mergexls.xls',mergedata);

代码放在这,迟早有人会碰上类似的问题。
MatLab跑起来够慢的,不过无所谓,反正就跑一遍。把文件合并就够了。另外,讨厌matlab里面的cell数据结构,一锅杂烩,真难看。

Posted via email from goldengrape's posterous

2012年10月25日星期四

#CrashCreativity# 上课笔记(1)

斯坦福大学的公开课:A Crash Course on Creativity
老师:Professor Tina Seelig
教材:inGenius: A Crash Course on Creativity (我花了10个大刀买了kindle版)

第一课 INTRODUCTION
Chapter 1: Ideas Aren't Cheap, They're Free
想法并非廉价,它们是免费的!

1。创造力是可以训练的,也是可以被教导的。
2。一切挑战皆为机会。
3。创意引擎有6部分,三为内生:知识(燃料),想象(催化剂)和心态(点火)。三为外源:resources(资产), habitat(人力资源,规则,奖惩和物理空间), 和culture(团体的信念,价值与行为)


关于创意引擎的详细介绍在:TEDxStanford talk: Introducing the Innovation Engine

组队:
课程作业中有些是个人完成的,有些是需要组队完成的。
首次课程作业是组队完成的,队伍自动生成。所以虽然我诚邀了@简里里  但这周并没能在一个队里。

任务:
了解队友ALL in common,然后以最具创意的形式自曝。

所有的视频都是在youtube上面。不会科学上网的话,连学业都不能自理。

===update 10.23===
happy Mol day
第一词课程作业并不是什么竞争性的作业。所以把我们队的方案开源之:

每个人先用16个单词描述自己,然后email给所有人。
看到别人的描述后,再以8个单词描述自己,再email给所有人。
。。。
直到形成一个共同的单词。
然后用http://timc.idv.tw/wordcloud/zh/# 形成一个个的单词云,最后做成一颗单词树。

晚上10pm,终于团队进行了第一次skype全体会议。

3am
完成作业:
http://zh.scribd.com/doc/110912765/Word-Tree

第一课学到的东西:
每个人从同一个课程可以学到不同的东西。第一堂课就是热身,互相了解一下同伴。知道老师打算讲什么,有一个概貌。第一堂课对我有一个很新鲜的刺激,就是与一群不认识的人进行远程的网络协作。

于是我发现了『团队拖延症』。
其实,我们团队不算拖延厉害的,我们在摩尔日的晚上进行了一次全体会议,在交作业dead line前10多个小时就提交了作业。我觉得第一次作业能够有1/4的团队交了就不错了。老师那里可能有更详细的数据,也许可以分析,比如若团队跨时区,基本上就没戏了。

团队中的个体,每个人还有各自的生活和工作。上公开课不是优先级最高的事件,至少在离dead line很远的时候不是。那么,每个人能够留给团队活动的时间就是分散的零碎的时间,要找到一个统一的时间段非常非常困难。

传统上认为启动一个任务至少要有一次全体的碰头会吧,也可以叫头脑风暴。但对于素不相识的团队貌似不够现实。我们队也是在Deadline前1天才有机会全体(几乎)进行了一次语音讨论。

1. 因此,引入『异步交流』的概念。

异步交流,是说我们团队并不需要一定要同时在线交流,而是每个人可以利用自己的空闲时间将意见发布,然后再讨论。非同步的交流方式都是异步交流,比如email, 微博,google docs协作文档。

这时候要考虑异步交流方式的使用频率,比如个人的email,可能大约每6小时查看一次,微博/twitter留言可能每两小时一次也可能12小时一次,google docs碰上十八大可能要半个月才能访问一次。

异步交流的效率是个问题。异步交流的效率取决于交流的内容。如果是以对话讨论的方法,例如email的一问一答,要把yes/no, what, why, how对话完成一遍,估计要48小时。异步交流不应该是一问一答的,而是直接面向最终结果。协作文档就要像wiki那样不断完善,而不要像bbs那样盖楼。email应该是总结、广播的,而不是在问答讨论。微博在这次任务中,更多的目的是为了回溯,因为是要了解组员,其实如果是重度微博/twitter使用者,看看time line就可以大概形成一个印象了。

顺便抱怨一下,异步交流最牛逼的工具是Google Wave。只可惜广大人类的办公水平还是面向A4纸的。

说道异步交流,还有个严重的问题就是响应时间不确定。即使是在公司办公中,也不能保证所有人在所有时间都是守在电脑旁边,你一个email发过去,对方立刻就能够收到,并且立刻就能够处理。

2. 因此,需要引入『信息push机制』

信息获取的方式两种,一种是pull,我需要的时候才把信息拉过来看看,比如收email的『收』就是一个pull的动作。pull的好处是我有时间的时候才做这件事,没时间的时候就先放在一边不理。另一种是push,信息是推送过去的,你看也得看,不看也得看。

从20世纪开始,虽然信息传播的手段越来越丰富,越来越快,从电报到电话到传真到互联网上的视频。但是办公室一直没有废除,就是因为办公室是一个信息强行push的场所。看过《up in the air》的同学应该记得,女主角开发了一种远程fire人的系统,其中有个最大的问题就是——对方可以离开电脑。但在办公室里面是不一样的,老板就站在你背后,他给你的信息直接送达到你脑中,他要求你做的事情,优先级立刻升级到最高。权限更高的push是:“你到我办公室里来一下!”

网络合作课程并不需要这么agressive的信息push。但是也要有一定的弱push机制,比如面谈,这是要求对方即时响应,并且还要传达出身体语言信息的;电话,这是要求对方即时响应的;短信,这是确保对方在第一时间内收到信息的;QQ/MSN/Gtalk/SKYPE...这些强度更弱一些,因为对方可以隐身,不一定上线等等。

在要求对方即时响应的时候,不能够给出太大太复杂的任务。俩人面对面坐下,来我们谈谈“我是谁,我从哪里来,要到哪里去”,这样至少一天的时间就没了。即时响应就要求提出的任务要求是可以在几秒或者几分钟之内就可以完成的。

3. 因此,需要引入『微任务』

做手术的时候,师傅教育我们说一个复杂的手术其实不过是由很多基本的操作组合完成的。类比的,复杂的任务也可能可以拆分成许多简单的小任务,降低复杂度。

这次作业的任务是找到all in common,这其实是个很大任务。我想到两个基本策略,一个策略是大家列出所有的子集,然后找交集;另一个策略是预先设定好一个all in common的目标,然后看看大家是否命中,一旦命中就开始进行第二项,有创意的自曝展示的任务。

从获得关注度或者被“赞”次数多的角度考虑,应该是预设目标,然后投入更多的精力进行有创意的自曝展示,确实在课后其他同学的作业中也可以看出这样的被评价更高。

但我的出发点并不一样。我更希望能够借此开发出一个真正能够互相了解的SOP,写作业不过是副产品而已。于是我提出的策略是大家列出自己的特点,然后找交集。我们的自曝展示就是把这个过程展现出来。于是我向各个队员提出了这个提议,获得了大家的赞同。

列出自己的特点,这事也是个大任务。也就是我们先各自自曝,然后再统计找交集。这就需要『表达』,表达的方式有很多很多种,比如视频,每个人录制一段自我介绍;或者写作,写一篇自传。

说到写作,我又想起了以前学语文的各个过程:组词、造句、写作文。这三者的难度是逐渐增加的,恰好互联网正是逆向发展的,写作文=写blog,现在能写blog的人已经很少了,而且还在坚持写的人就更少;造句=微博/twitter,用微博/twitter的人很多,为何,因为造句远远比写作文容易得多;网络下一步会发展成什么?我觉得大概就是组词吧,仅仅用一个或多个单词来表达自己。

于是,每个人自我介绍最简单的方式,其实就是组词,用一连串的单词来表述自己。单词的好处是方便处理。如果有必要,很容易在后台写一串程序来处理整合这些单词,甚至可以计算出单词与单词之间的距离之类,或者借助wolframalpha做语义分析可能都算是相对容易的。

而且,如前所述,组词是个最简单的任务。有必要的话,甚至在几分钟之内就可以列出几十个与自己有关的词汇。这样的任务就可以算是个『微任务』了,打电话拿着听筒就可以做完。不过,我们这次的任务中并没有引入足够的快速响应方案和push信息的过程。交流效率不够高,如果是这4个人面谈,用单词的方法,我觉得5分钟就够了。

4. 『冗余进程』

这是本次作业过程中设计失误的一个部分。我们的任务模式决定了我们无法进行分工,下一步操作都必须等待上一步所有人都做完了以后才能进行。这样的进程完全没有弹性。更理想的情形是,项目中的各个任务是可以同时进行,互相之间有一定的重叠和冗余,各个进程在一定程度上是可以替换的,即使其中的少数进程不能进行甚至需要kill掉重启,对整体项目的进展也不会有太大的影响。这个只有在以后的任务设计中注意了。

Posted via email from goldengrape's posterous

2012年7月20日星期五

Prezi详解

# 肩并肩演讲的工具

Prezi是非常炫的一个幻灯演示程序。不仅仅是足够的炫酷,Prezi的意义在于可以非线性的进行演讲,能够根据听众的反应,随时进行幻灯的平滑跳转。这是很适合iPad演讲的。

在ppt / keynote时代,演讲程序是针对投影仪的。演讲者与听众的地位是悬殊的,是“面对面”演讲。一个演讲者面对一群听众。演讲者控制整个演讲流程,即使是听众提问,也只是暂停流程,然后可以继续进行。

而在ipad上,则更适合“肩并肩”演讲,讲者与听者可以肩并肩的坐着,共同面对一块屏幕来讲解。这时候听者的地位大大提高,甚至有直接操作的可能。听者的注意力不再完全受到讲者的控制。于是讲者应该能够根据听者的兴趣随境转移,即时作出反应与变化。作为商业演讲,肩并肩的演讲要比面对面的演讲更有影响力。

在prezi出现之前,我一直没有找到理想的“肩并肩”演讲软件。这是因为power
point和keynote都是在时间维度上展开的,幻灯是按照时间顺序线性排列。虽然在电脑上能够通过超链接进行一些微调,使线性结构变成树状结构,但是在keynote
for ipad上,居然无法引入基于图片的超链接。这种微调的能力大打折扣。

prezi的观念不一样,它是在空间上展开的幻灯片,幻灯一次性呈现在面前,但是可以根据兴趣点的不同进行缩放。它的“播放”过程,只是提供了一条兴趣路径。如果需要,随时可以走其他路径,就好象草坪上有一条路,但是既然草坪已经铺开了,怎么走都是可以的。

# Prezi的简体中文

Prezi对简体中文的支持一直不好。从prezi自己的论坛上看http://community.prezi.com/prezi/topics/there_are_some_problems_about_chinese_input
@maozi 三年前就已经提出了问题,并且还提供了文泉驿这样开源的字体方案,但对方一直不肯接受。不知道是不是因为开发组内有铁杆的简体中文黑。

@xiaolai 在《为Prezi Desktop设置中文字体》
http://www.lixiaolai.com/archives/11264.html
一文中进行了详细的解释,如何设置prezi桌面端的简体中文。prezi的桌面版可以自定义导入字体,但字体必须是swf的。这种怪异的东西貌似可以用sIFR生成来SWF字体,而且还有一个在线的工具
http://www.sifrgenerator.com/wizard.html
可以自动转换出SWF字体。但是,任何一个简单的中文字体都大于这个在线工具所能承受的范围,于是自己动手暂时失败。不过好在有一位不知名的好人已经做好了多个swf字体。原本的下载是这里
http://www.gbcgbc.tk/wiki/%E6%96%87%E4%BB%B6%3APez_GBC_Fonts.7z
但是作者的网站整个失效了,主页也跳转到了网易邮箱。直到最近几天,我才又找到了这个字体包的文件下载,在http://vdisk.weibo.com/s/8L12d
为了以防万一,我还是放了一份到box.net里面,https://www.box.com/s/d35a270947deb0245d0b

转自@xiaolai 的教程:

将解压缩后的文件中所有swf文件拷贝到:

Mac OS X:

~/Library/Preferences/com.prezi.PreziDesktop/Local Store/fonts

Windows 7:

C:\Users\[username]\AppData\Roaming\com.prezi.PreziDesktop\Local Store\fonts

Linux:

~/.appdata/com.prezi.PreziDesktop/Local Store/fonts

注意,要覆盖原有的文件!

创建一个新的Prezi文档。

选择合适的模板。

按下Ctrl+Shift+C打开CSS模板编辑器。

修改@font-face中的src: url(‘xxx.swf’)为GBC Fonts中提供的中文字体,例如:

@font-face
{
src: url(‘STXINWEI.swf’);
fontFamily: body;
}

@font-face
{
src: url(‘STCAIYUN.swf’);
fontFamily: strong;
}

@font-face
{
src: url(‘STXINGKA.swf’);
fontFamily: head;
}

而后点击“Apply”按钮。

不过这个方法只能在prezi desktop上进行简体中文的输入和播放。一旦文件上传的prezi的网站,简体中文还是无法显示的。更麻烦的是,如果通过网站导入或者直接导入到iPad上的prezi
viewer上,文件一开始下载就会引起闪退。因为中文swf文件都是本地文件,prezi的网站上没有,通过网站或者直接导入时,字体也不在文件包之内,于是要从网站索取,无法取得就发生了闪退。

因此对上述简体中文的方案,我做了一点点改进:

选择您喜欢的三个中文swf字体,比如STXINWEI.swf,STCAIYUN.swf,‘STXINGKA.swf,将它们改名成OpenSans-I.swf,OpenSans-B.swf和OpenSans.swf,然后将这三个字体文件copy进
Mac OS X:

~/Library/Preferences/com.prezi.PreziDesktop/Local Store/fonts

Windows 7:

C:\Users\[username]\AppData\Roaming\com.prezi.PreziDesktop\Local Store\fonts

Linux:

~/.appdata/com.prezi.PreziDesktop/Local Store/fonts
覆盖原来的字体。

这样在prezi desktop端,可以顺利的编辑和显示简体中文。之所以选择这三个字体名,是因为OpenSans这是空白模板默认的字体。

然后到本机系统的字体库中,找三个简体中文的TTF字体。copy出来备用,也分别改名为OpenSans-I.ttf,OpenSans-B.ttf和OpenSans.ttf

不失一般性,以windows系统为例:

下载安装itools,http://www.itools.hk/index.html

连接iPad,打开itools,找到应用程序prezi viewer,点击文档管理,找到
/Library/Caches/路径,导入改名后的OpenSan.ttf的三个字体,注意后缀是必须是小写的.ttf。然后就可以通过网站或者itunes应用程序或者itools将桌面版制作好的文件导入到prezi
viewer里面了,简体中文是可以正常显示的,如果发现异常,再重新用itools导入伪装成OpenSans的中文字体即可。

对于prezi网站上要显示简体中文,现在实在是没想出办法。

# Prezi的制作技巧

Prezi可以很华丽的来介绍产品,比如您公司的产品,照张照片,然后就可以在每一个部件中,用prezi来进行讲解。prezi并不太需要指示箭头,因为可以“钻”进细节的部分进行讲解。

思维导图软件是prezi最好的伴侣。利用思维导图软件,可以快速的生成一个演讲的二维思路分布图。如果使用常规的ppt,您还需要将这个二维的思路网线性的串接起来。但在prezi中,则可以直接复制这个二维脑图。prezi可以理解成一个华丽的思维导图展示软件。

如果要在prezi中插入视频,文件不要太大。prezi的多媒体文件都是经过转换以后存放在amazon
s3服务器上,即使用本地的桌面端,视频也要经过上传、转码再下载的过程,文件大了很慢很麻烦。视频则转换成m4v文件。从content.xml中获取的媒体文件地址,复制到浏览器地址栏中是可以直接播放的。因此私人的prezi文件其实也不那么安全。


# Prezi的进一步研究

Prezi的普通用户是无法下载prezi
desktop桌面程序的,但是可以在http://mac.softpedia.com/progDownload/Prezi-Desktop-Download-85131.html
找到。有30天的使用时间限制,这里有延期使用教程:http://blog.sina.com.cn/s/blog_6f4609ed0100z97p.html
所需要的cracklock软件在http://william.famille-blum.org/software/cracklock/index.html,prezi的免费版用户只能生成公开文件,不能制作私有的幻灯,但edu用户可以,如果您还有大学的邮箱,就可以注册一个edu账户,中国的.edu.cn的邮箱也是可以的。如果离开大学太久,淘宝上花10块钱不到就可以找到中国大学邮箱注册。

prezi桌面程序制作好的文件是一个.pez文件,用万能的7z可以直接解包,如果没有7z,把后缀改成.zip然后解压缩也是一样的。

解开文件以后,可以看到一个content.xml文件,里面记录了整个prezi的文件内容。研究一下很有意思。

这里插入一个prezi类似物impress.js的介绍。impress.js是一个利用css的特性,直接在浏览器上实现prezi效果的js框架,是github上的开源项目。它制作出来的效果如:http://bartaz.github.com/impress.js/
被炫过之后一定要看看源代码,里面的注释很清楚,您也可以动手自制。

但是impress.js的麻烦在于,所有的元素定位都要手动,缺乏一个所见即所得的编辑器。这就好像,虽然理论上我通过像素点的坐标也可以使用photoshop,但是缺乏鼠标仍然会让人感觉很不方便。

对比prezi的content.xml与impress.js的源代码,会发现这两个其实是说的一种语言,理论上可以互相转换的。

比如我贴出了一个随手测试用的prezi的content.xml代码:http://pastebin.com/M8aEEYG9

prezi xml里面的是指的播放顺序,这个应该可以用impress.js的`api.goto( idx | id |
element, [duration] )`来实现

prezi xml中的x="-53.95" y="623.25" r="0"
s="11.3",与impress.js中的data-x,data-y,data-rotate和data-scale等价,用来标记元素的位置、旋转和缩放

prezi xml中标签之内还有一组坐标的标签-111.15-18.3,也许是说在上一级object标签内的坐标系之下,再平移的坐标。与processing里的pushMatrix()相似

prezi xml中,object是把每一个项目,比如连续的文字都做成了类似div的东西,于是就不太需要html里面


之类的排版标签了吧。但path中提到的ID序号不是连续的,而是间隔的,比如0,3,5,说明0到3之间是在一屏内显示 也就是说prezi xml中path所提到的object ID,对应到impress.js中要赋予class="step"的属性,而path中没有提到的则不需要。object内的textfield中再提到的坐标则是相对与该object的位置 prezi xml中其他的部分貌似不太需要解释。所以应该是可以制作出一个转换器,将prezi xml转换到impress.js的格式,这样prezi desktop就可以成为一个impress.js的WYSIWYG编辑器了 同理,从impress.js,应该也可以解释成prezi,本地化的文件可以存储在repo目录下,然后打包成zip以后改名成.pez文件,这样的好处是能够利用ipad上的prezi viewer做离线播放impress.js。 EOF()

Posted via email from goldengrape's posterous

2012年7月15日星期日

常见头戴实景增强显示器的显示方式

最基本的方法就是使用半反射半透射的镜片。显示器在眼镜的侧面,通过一枚半反射半透射的镜片将计算机生成内容显示在眼前,并与真实场景相叠。
优点:光路简单。
缺点:
整个装置的体积较大,半反半射的镜片如果是45度放置,则显示的宽度与装置的厚度一致。如果限制眼前装置的厚度,则显示面积就比较小。

这是最近出现的一种方案,需要由眼镜上的显示器和人眼佩戴的隐形眼镜之间相互配合。
隐形眼镜上有线性偏振片,中央有一个高度数的凸透镜,其上没有偏振片或者有与周边垂直的偏振片。
在眼镜显示器上,近景显示器前面有一层偏振片,其方向与隐形眼镜周边的偏振片方向垂直。近景显示器之外是没有偏振片,或者有偏振片但方向与隐形眼镜中央的垂直。
于是远处实际景物发出的光线可以顺利通过隐形眼镜的大部分区域,聚焦在眼内。(红色光线)
而近处的显示器上的光线,无法通过隐形眼镜周边的部分,只能通过隐形眼镜中央的高度数凸透镜,也可以顺利聚焦在眼内。近景和实际景物之间互不干扰

优点:人眼平时处于看远处的放松状态,近景的计算机生成图像的位置相当于无穷远点。日常视觉比较放松
缺点:
1. 需要再戴一枚隐形眼镜。由于其中有偏振层加入,对隐形眼镜的透氧性有什么影响还不得而知。有可能降低角膜的氧气供应。
2. 相当于眼前一直有一枚偏振镜,环境亮度减半。在早晨和傍晚时,自然光的偏振性明显增加时,可能会看到周围环境反光中有多种彩色条纹
3. 对液晶显示器的观察有影响
4. 计算机显示的近景会遮挡远处实景。无法实现两者的融合。

这是很热门的一项技术,有文献《A single-pixel wireless contact lens display》已经可以制作出单像素的原型机。但是这个装置作为增强实景的显示器,从理论上来说就是错的,不可能实现。
在文献中所述,隐形眼镜表面上是微小的LED作为显示像素,其下有菲涅尔波带片,利用菲涅尔波带片的衍射作用,等价于一个高度数的凸透镜,将LED所发出的光聚焦在视网膜上。在单像素的实验中,这个是可以实现的。
但是如果扩展到多像素,比如至少是320*240的像素,那么会有一大片范围被显示像素所覆盖。注意每一个菲涅尔波带片等价于一个高度数凸透镜,它既可以聚焦LED发出的光,也可以偏折来自远方实际景物的光,相当于在眼前佩戴了一枚高度数的远视眼镜。那么有显示像素的位置,就是看不清远景的,要让显示器可用,就必须阻挡显示器后面的来光。否则就是严重模糊的成像。
这种显示技术与上面“组合分选”的方式一样,都不可能实现计算机生成图像与实际景物的融合。算不上一种AR显示技术。


这是苹果最近申请专利中所披露的技术,估计google glass可能也是利用类似的技术。这个方法本质上与半反射半透射的原理是相同的,但是利用楔形玻璃内部的全内反射,使图像能够在眼镜片内部反射多次后再进入眼睛。最后一次反射然后透射进入眼内的过程我还没有太搞清楚,有可能楔形的边缘并不是平直的,而是在一定范围内有变化,打破全内反射的过程,使图像进入眼内。
优点:眼镜显示装置可以做得很薄,显示面积也可以比较大。
缺点:显示部分可能有一定的棱镜效应,远处实景进入楔形玻璃时可能有同一个方向的偏转,造成轻微的斜视,佩戴时间长了以后,眼肌容易疲劳。

以上四种显示方案,都有共同的缺陷。就是计算机生成图像的相对位置是固定的。显示器并不知道人眼在看什么位置,通常情况应该是将图像显示的位置通过透镜组透射到远处,使之与远景实景相匹配。但是人眼的调节状态是在不断变化的,因此,当人眼在看近处时,计算机生成图像并没有跟随着改变图像的聚散度,于是发生看近处时,计算机生成图像是模糊的情形,但其在眼镜上的位置有在真实物体之前。于是可能在看报纸时,直面上有一块计算机生成的图像,但需要人眼用看远的方式才能看清,而报纸上的文字又需要调节到近处才能看清,人眼在远近快速调节的过程中会产生疲劳与不适。

Posted via email from goldengrape's posterous