Author Archives

优化fLEX程序性能的各种方法

写了很多时间的Flex程序,感觉Flex/AS在内存和性能方面的设计有一定的局限。我把对这两方面的一些经验记录在此,希望能抛砖引玉。

及时移除无效的事件监听器(event listeners),以避免造成内存泄漏。
及时卸载Loaders
当你使用Loader加载对象时,当该对象无用之后,及时调用unloadAndStop()卸载该对象,然后使用垃圾回收器(gc)回收Loader。AS3中的GC可能需要重复调用两次才能生效。特别针对静态图像文件使用这个技术可以有效地避免内存膨胀。
在你自建的类中,设立dispose()方法  –> 参见 DOJO toolkit 的 widget 组建的模板方法。
调用集合对象的disableAutoUpdate()/enableAutoUpdate() 方法,以避免在批量修改集合中对象时,造成大量无用的冗余事件。
在自建组件时,通过重载createChildren()方法来延迟子对象创建,而不要把所有的子对象的创建全部放在自建组件的构造方法中。
对象的创建是一个高资源消耗操作,因此尽量使用 ObjectPool 来复用对象。
在 invalidate/destroy/re-validate 你的组件之前,做一个lazy checking,以避免无谓的运算开销
善用常数,常数的访问速度快。常数都设成静态属性。
将工具方法以及其他各种无状态的方法写成静态方法。静态方法附属于类,因此无需对象初始化就可以使用,减少内存占用。
对于应用程序级别的事件,可以采用GlobalObject 或者 静态EventDispatcher 来做事件中转。这样设计的代价是增加了程序和这个程序级对象之间的紧偶尔,但是好处是大大降低了事件处理所需要的计算机资源。
使用green-threads来减缓大运算量逻辑对播放头的帧计算的压力。

参考阅读

10 Tips for Flex Application Performance
http://www.insideria.com/2009/09/10-tips-for-flex-application-p.html
Good Memory Management When Using PureMVC
http://jessewarden.com/2009/11/good-memory-management-when-using-puremvc.html
Unloading Flex Modules
Resource Management in AS3 Session Notes Available
AS3 Resource Management: Part 1
Garbage Collector Interactive Simulator
Garbage Collection and Memory Leaks
Memory Performance in the Land of References
Flash Player Memory [...]

The Longest Way

The Longest Way 1.0 - one year walk/beard grow time lapse from Christoph Rehage on Vimeo.

自动翻译Rails的locales YAML 文件 | Automatically translate your Rails locale YAML into other languages

刚做了个小工具,自动把Rails 的locals YAML文件翻译成各种语言。
>> 点击使用 Click here to use

Ubuntu, 好用!

之前用了一段时间MacOS,感觉还成。虽然键盘布局让人感觉胳地慌,虽然在笔记本上按鼠标右键必须得用两个手,虽然。。。但开发效率的确被Windows下高许多。何况Mac长地那么酷。
可能因为太酷了,所以没过半年Mba就被偷了。于是觉得不折腾,回到Windows。之后一直看到Lifehacker中报道Ubuntu的消息,心中痒痒。最近有暇,在Windows下用Wubi装了一个Ubuntu,一用便爱不释手!第二天便将boot.ini中的默认启动改为Ubuntu。
几番折腾之后,我的Ubuntu变的让人见了心情就愉悦。在这里厚这脸皮拿出来晒晒。

其中

我用了HP Mini的Theme替换了Ubuntu自带那个屎黄屎黄的。

Ubuntu 自带的中文输入法绝让人打字打到麻木。全部撤掉,换成我之前在Mac下用的fcitx。
还有一样不能少的好东西是 GNome DO,一个非常简单好用的快速启动程序。

Google Linux Software Repositories

http://www.google.cn/linuxrepositories/index.html
Google 的 Linux 软件库极大得方便用户下载和更新 Google 开发的 Linux 平台软件,省去 Linux 初级用户望而却步的软件编译过程。Google Linux 软件库支持的 Linux 发行版包括Ubuntu, Debian, Red Hat, Fedora, openSUSE, SUSE, Mandriva等常见的 Linux 发行版……

Rails 2.1 中文书!

刚从 Rails 中文博客看到已经有 Rails 2.1 的中文书了!
Libin Pan 已经完成了这本书的中文翻译。中文书的PDF文件地址是:
http://blog.libinpan.com/download/libin-rubyonrails21-cn.pdf

Support foreign domain (CNAME forwarding) in your Rails application

Let’s say you have a blog application, which is built on Ruby on Rails. In the application, each registered user will have his personal blog page at the URL: yourblogapp.com/blogs/blogid
Perhaps, the user has his own website, say, someone.com. It will be nicer to let the user have a custom domain in your blog application (in [...]