前段时间看了一个TED上面的演讲,演讲人叫Robert J. Lang,是一位NASA的工程师。他有一个很有趣的研究,是关于将数学应用于日本的一种叫做Origami的折纸艺术(中国是不是也有,不知道谁早?)。通过应用高超的数学技巧,能够使用纸张折叠出异常复杂、逼真的三维的物体。在他在TED上的演讲中,就有不少例子,其中还有一个三菱的汽车广告,广告中的所有场景和物体(当然,除了三菱的汽车)都是使用这种方式构造出来的。他还有一个关于Origami的网站(似乎国内被GFW掉了,需要代理),里面也有很多例子。

同样的一张纸,通过不同的数学计算能够折叠出不同的形状,这不就像变形金刚的变形吗?可以想象一下,变形金刚的最初的形状其实是一大个二维平面状物体,通过应用类似的数学技巧,只要每次通过计算机计算折叠的方式,就可以转化成为三维的一个物体。也许不能像汽车飞机一样行动,但是在形状上模仿肯定是没有什么太大问题的,而且一个变形金刚应该能够通过不同的计算,变形成为多种不同的形状。如果做一个权衡,只要求变成一种形状,但是在特定的地方加一些特定的设备(如汽车的轮子或者飞机的推进器),是很有可能实现真正的变形金刚的变形功能的~更可能实现的,是基于这个做一个简单的变形玩具,肯定会卖疯的:-)

发布Ruby Gem

五月 21, 2008

RubyGems是一个用于Ruby的包管理工具,虽然并未包含在Ruby的发行版中,但是可以认为是事实上Ruby世界中标准的发布Ruby程序和库的工具,可以很方便的管理gem之间的依赖性。

如果你是在进行Open Source的Ruby程序开发,可以直接通过Rubyforge来发布gem。不过如果是自己的私有项目,可能就需要自己搭建一个Web server来进行gem的发布了。如果系统中已经安装了RubyGems的话,通过gem server (gem help server看看用法)就可以启动一个简单的gem发布的server。不过很可能的,你已经有一个Web Server在系统环境中了(如Apache Web Server),这个时候就通过以下的几个步骤可以完成把这个Web Server改造成为一个gem distribution server:

1) 建立一个发布目录,并设置Apache(或者其他的Web Server)使得这一目录能够通过Web访问。并在这一发布目录下建立一个名为gems的子目录。

比如我们在htdocs目录下建立一个目录dist,并建立一个gems子目录。

2) 拷贝打包好的gem到dist/gems目录中。

 如拷贝allmighty-1.0.gem到htdocs/dist/gems目录中。

3) 在命令行界面中,进入dist目录,运行“gem generate_index .”(请注意最后的一个点,表示当前目录)。这一命令会对gems子目录中的所有gem建立一个索引文件yaml,并存放在dist目录下,以便可以通过gem install命令安装时查找。

4) You’re done~

在这之后,你就可以通过”gem install allmighty –source http://yourhost.com/dist/”命令来安装你新发布的gem了。

5) 如果以后还有新的gem需要发布或者有新的版本的gem需要发布,请从步骤2)开始继续即可。

关于RubyGems,有一本很好的书,介绍了其使用、开发和发布等,有兴趣的话可以看看。

Practical Ruby Gems

Google AppEngine

四月 15, 2008

申请了Google AppEngine,前天刚得到批准,准备写点小东西看看。AppEngine是很有意思的一个东西,原来一直想写一些server side的应用,可惜一直没有环境来部署,也就一直没有实现。很多想做的东西也都因为没有Web环境来部署觉得用处不大就没有去做。不过现在有了AppEngine这些问题都迎刃而解了。

但是AppEngine只支持Python,开始想找个曲线救国的办法 - 找到一个Python实现的JVM或者Ruby VM,这样就可以在AppEngine上部署Java或者Ruby的应用(假设AppEngine的Python环境可以让这些虚拟机跑起来)。当然如果有Python-based JVM的话,还可以再这之上再跑Ruby的应用(JRuby)或者Groovy和Scala的应用了,想想就是一个很酷的事情。稍微花了些时间,可惜并没有找到这种的虚拟机实现,不知道是原来并没有这种需求还是技术上有什么难度,有PyPy为什么没有RuPy或者JaPy?

So *start learning Python* in this year~

Update:

这个(Compile Ruby to Python)已经很接近我想要找的东西了,可惜是用Ruby写的,如果是用Python写的话,那就应该可以在Google AppEngine的环境中动态的将Ruby编译成Python代码,于是就可以变成一个Ruby运行时了~

http://www.infoq.com/cn/news/2008/04/google-app-engine-simplifies-web

http://www.dougma.com/archives/81

http://ejohn.org/blog/running-java-in-javascript/

http://hotruby.accelart.jp/

expensr.com is dead

三月 18, 2008

expensr.com是一个在线的个人记账软件,我从2007年下半年开始用它,感觉很符合我的需要 - 简单易用,能够有基本的统计报表功能。我在2007年7月底的时候还给它们发了个邮件,提了点关于它的报表显示的建议。在我发邮件的第二天expensr就给了我答复,说它们正在做帐户之间转帐这一功能,这个如果做好的话报表这方面的显示就ok了。我当时对它的响应速度很满意。

但是到了2008年春节期间,expensr进行了一些更新,但是引入了一个bug - 中文输入的所有的字符显示都不正常了,这直接导致了我没有办法继续使用这一系统,我的所有的帐户名称和大多数的开支名称都是使用中文填写的。这次,我再次给它们发了邮件报告了这一bug,但是过了很久都没有反馈。我在这之后的一段时间又发了两封邮件报告这一bug,但是都没有得到答复。现在,2008年3月18日,距离我发现这一bug已经45天了,系统没有任何的更新来修复这一严重的bug,对我的三封邮件也没有任何的响应。我看了expensr的官方blog,从2007年12月11日之后就没有任何更新了,虽然从网上搜索的结果看来,expensr.com很有前途,但是就目前我的使用和观察,expensr.com命不久矣
update:
果然一个月之后expensr.com宣布被收购,expensr.com的用户都会转到moneyStrands,希望转移之后的应用能够比较好。

Youtube Cooking

三月 15, 2008

原来经常在电视上面看到教授如何做菜的节目,不过总是感觉不太实际-看过就忘了,等到真的想做某个菜的时候已经不记得技巧步骤等等了。于是后来想做不会做的菜的时候都是在网上先搜个菜谱,看过菜谱之后开始做。今天突然发现了个更加直观的方法:用Youtube教你做菜。

方法很简单:到Youtube上搜一下你想做的菜名就ok了,真人视频教学:)

MIT OpenCourseWare

一月 5, 2008

MIT的OpenCourseWare可是个好东西,上面有不少的课程资源.以前曾经有段时间看过CLRS的视频就是在那个上面看的.上次看的时候是自己下载下来看的,avi格式的,非常大.目前最新的这个课程是2005的了,格式也已经变成rm格式的,需要在线观看.不过总是感觉在线看不爽,快进什么的都不太方便,于是就想下载下来看.直接使用下载工具下载在线播放的链接下不下来,去eMule上面找了下,只找到老的版本的视频.直接Google以后找到的办法来下载MIT OCW的rm视频:

Is it possible to save the RealPlayer video file to a disk or to my hard drive? 

顺便还找到了个地方 — MIT  iTunes U, MIT OCW上的很多课程都可以通过iTunes 商店找到,都是免费的,可是使用iTunes直接播放, Bingo~

Web service领域相关的名词术语实在太多,缩写记不清很麻烦,读起来也不知道如何读,今天特地花了些时间搜集了一下这些术语的读音,感觉还挺有意思的:

WSDL
Web Services Description Language, pronounced ‘wiz-dəl’ or spelled out, ‘W-S-D-L’
SOAP
这个最容易, ’səup’
UDDI
UDDI is NOT pronounced “Uddy”, but as spelt.
jUDDI
pronounced ‘judy’,和上面的不一样:p
WSE
Web Services Enhancements, pronounced ‘wizzy’
JAXWS
pronounced ‘jax-weis’
WSE-WSDL
‘wizzy-wiz-dəl’…

Editing Ruby File in Vim

十二月 27, 2007

在/usr/share/vim/vim70/filetype.vim(in MacOS X)中找到ruby类型的设置,为其增加不同的后缀,使得*.rb,*.rake等都识别为ruby代码进行语法高亮:

au BufNewFile,BufRead *.rb,*.rake,*.rbw,*.gemspec setf ruby

在.vimrc中设置以下内容,即可使得编辑*.rb和*.erb时tab缩进值为2,但是其他类型的文件仍然为4.

set expandtab ” To insert space characters whenever the tab key is pressed
set tabstop=4 ” To control the number of space characters that will be inserted when the tab key is pressed
set shiftwidth=4 ” To change the number of space characters inserted for indentation
set softtabstop=4 ” makes the spaces feel like real tabs
au BufRead,BufNewFile *.rb set expandtab
au BufRead,BufNewFile *.rb set tabstop=2
au BufRead,BufNewFile *.rb set shiftwidth=2
au BufRead,BufNewFile *.rb set softtabstop=2
au BufRead,BufNewFile *.erb set expandtab
au BufRead,BufNewFile *.erb set tabstop=2
au BufRead,BufNewFile *.erb set shiftwidth=2
au BufRead,BufNewFile *.erb set softtabstop=2

Google Search History

十二月 5, 2007

心血来潮看了下我的gmail的帐号的search history.

这是个注册没多久的帐号,2007年6月才开始用的,到现在大概半年不到的时间吧.1515次搜索,平均下来大概每天Google 10次,用的最多的自然是Web Search,其次是Map Search,除此之外的Image, News, Video搜索都很少用.还有些如Product, Blog和Books搜索都是从来没用过.

感觉垂直领域的搜索使用的机会相对少很多,尤其如果这个垂直领域和Web上的信息还有交叉的话.比如Blog这种垂直领域搜索,实在感觉不出和Web搜索上面找到的Blog内容有什么很大不同,真有人有这种需求吗?

很神奇的是我发现我居然还点过好几次sponsor links(这种一般都被我认为是厌恶的垃圾广告链接,拒而远之的).其中两次是想下载软件,分别点了Google Pisaca(名字起的太差,根本记不住, Pisaca, Picasa…只能靠搜)和Adobe Reader的sponsor link.还有4次都是我想购买商品的时候搜索商品信息时点的链接,iPod, Macbook, laptop cooling pad和眼镜.难怪Google广告生意这么好啊.

Ruby Guys are Mac Guys

十一月 13, 2007

See RubyConf 2007 picture. In the third picture, almost all machines are Macbook Pro. Show me the money~

下一页 »

About Me

Search

Pages

Links

Feed

我的照片:

Categories

Archives