前一段时间,我在这里http://rubynroll.javaeye.com/blog/192547展示了一个空格带来的'陷阱', 今天又见到另一个'陷阱'(http://dablog.rubypal.com/2008/3/25/a-short-circuit-edge-case by David). 之所以为陷阱加引号, 是因为大部分情况下我们都没有机会掉进去 :) 大多数Ruby教科书在解释 "a ||= b" 这个复合操作时,都说她等效于: "a = a || b", 实际上真的如此么? 让我们在irb里面来看看: h = Hash.new(1) # 生成一个新的Hash,缺省 ...
2008-06-13

SVN+GIT=鱼与熊掌兼得

关键字: svn git
使用git已经有一段时间了,从使用git的第一天开始,就计划逐步放弃svn. svn有的功能,git都能做到,而且做得更出色,况且git还有很多特性svn望尘莫及,还有什么理由继续使用svn呢? well,理由很多. 比如,git在windows上的性能问题, TortoiseGIT还没有开发出来(或者根本没有这个计划?),团队中其它人员不习惯用git....等等. 那么,鱼与熊掌,能否兼得? === SVN 之痛与痒 === svn的最大问题是不支持分布式开发. 分布式并不一定就是指象Linux Kernel那样的大型协作开发场景. 例如,你想把没做完的工作带回家做,但是家里 ...
2008-06-12

动态模块加载和ELF Loader

关键字: embedded elf 动态模块加载
很早很早以前就想在嵌入式系统上实现动态模块加载的功能了,期间走了些弯路,直到最近,才完整地在嵌入式系统上实现动态模块加载。 === 动态模块加载的好处 === 动态模块加载的好处很多,例如,当你升级一个系统的时候,可以只升级一个模块,而不必升级整个系统。你可以把不同的模块放在不同的介质上,并实施不同等级的保护,例如BIOS部分进行写保护。 有些系统允许用户进行二次开发,这个时候几乎一定是需要动态加载功能的,因为你不希望用户需要链接整个系统才能够进行二次开发,而且你可能希望支持多个用户模块,彼此不相互依赖,彼此不干扰。 === Background === 一般来说,C的编译器编译出来 ...
rubynroll
搜索本博客
存档
最新评论