锁定老帖子 主题:ruby里面嵌入C代码
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-07-30
我还是坚守JAVA阵营,坚持使用JAVA,可能我比较落后吧,现在想想,其实我还是很落后的:
编写数据库存储过程的年代我没有赶上。当时我估计我还没有读大学,所以进入IT行业时,就直接进入中间件开发的时代了,直到现在我还不知道如何编写存储过程,很多问题都是拿程序来解决。 仿佛听说,2000年网络泡沫还没有破灭之前,很多计算机系大学生都赶着去学ASP,当时的我啊,刚好入学,也没有赶上。 VC和Delphi我也没有赶上。在大学的时候,也听说VC和流行了,Delphi开发也不错,开发速度快,而我不为之所动,看着周围的同学书包里装了几步厚厚的VC或者Delphi开发的书,我就觉得有点好笑:他们放着好好的操作系统和编译原理的课程不学,偏要把自己大开发水平升级到所谓的COM;而且更为可怕的是,晚上到外面兼职做Delphi数据库程序,白天回来上课趴桌子睡觉,到外面兼待遇很低--估计月薪有几百块钱吧,大学生基本上都很穷,几百块在大学可不是小数目,所以他们得意洋洋的吹。 04年毕业大时候,outlook也不会使用呢,发邮件l也是工作大学找工作时候刚学会使用的,至于BBS,也是出来工作后接触互联网多了才知道有这么回事。 不过,这又能怎么样呢,我现在还不是工作得好好的,而且很多底层JAVA关键大问题基本上都是我解决。 我现在之所以还使用JAVA,因为这是我的工作需要,而且发现JAVA非常好使用(主要还是Eclipse比较好使),JAVA技术是比较成熟,JAVA大而全,基本上没有什么不可以解决大问题,比如我现在所做的是两个服务器之间的RSA加密通讯,虽然使用HTTP协议,但是和传统的Socket编程差别不大,直接解析系列化流,使用ruby不知道是否能完成? ruby的语法怪怪的,学习成本对我来说比较高,我持观望态度吧,等你们弄成熟后,如果真的有前途,我再加入。作为探路着毕竟很辛苦(向你们致敬先!),而我更喜欢踩在巨人的肩膀上,对自己的学习能力也很自信--没办法,我们还得给老板干活,不成熟的技术、没有足够的自信我们是不敢上的,因为代价很高,老板总不能拿他的钱来给你做实验吧? |
|
返回顶楼 | |
发表时间:2006-07-30
没人逼你学Ruby阿,而且你Java用的好好的,就该干嘛干嘛咯,何必这么眼热我们这些学习ruby的人呢?
|
|
返回顶楼 | |
发表时间:2006-07-31
flyingbug 写道 问个问题,哪位对ruby的源代码保护有好的办法的?
不久前有人发表过一个商用混淆器:ZenObfuscate 要钱的,所以内部原理只能参考它的简单说明了:基于ruby inline。 另外有个ruby2c工具,可以翻译一部分ruby代码,当然你也可以自己用c写 |
|
返回顶楼 | |
发表时间:2006-07-31
buaawhl 写道 thanks. 原来叫做 acts as, plugin。 plugin 就类似于 aop interceptor 的作用。 不过这些 interceptor 的作用不是截获现有的方法,而是mixin 加入更多的方法。 比如,tag support, http://dev.rubyonrails.com/svn/rails/plugins/acts_as_taggable/lib/acts_as_taggable.rb 这里的SingletonMethod就对应Java的 Static Method。但是,ruby的Singleton method是可以被继承和覆盖(override)的。 这段代码就是给某个 Domain Class 加入 find_tagged_with 这个 singleton method. 并给这 Domain Class 的所有 instance 加入 tag_with 这个instance method。 至少对于sington method部分来说,叫做declarative interceptor可能更准确,因为这些mixin 只为每个class执行一次。 这就是T1提到的可能的declare 顺序问题出现的地方吧。 如果有可能,截获现有的method name 来增加更丰富的行为,比用mixin增加更多的 method,更加干净清楚。 这样能够保证更加统一的interface, 更加一致的interface, 能够得到更好的流程控制、算法重用的AOP能力。 把更多的行为,以更多的method的方式,mixin到class method and instance method。 虽然,调用起来更加OO。比如 product.tag_with, Product.find_tagged_with。 但是从程序流程的控制入口来考虑,这些行为也太分散了。随着act as plugin的个数越来越多,class & instance 的接口宽度越来越宽,method越来越多。 这并不是一个好的AOP实践。当然,也许plugin 并不采用 AOP的概念。 同学,这不是什么截获器啦,也没有AOP,你想太复杂了。虽然Ruby里可以用alias实现方法截获,所以不需要外部AOP。 acts_as_xxx从字面上就知道它给model添加一个角色。model扮演新的角色,拥有新的属性和行为,这怎么能通过截获旧有方法实现呢?至于T1说的那种可能,理论上确实存在,比如同时acts_as好几个,之间可能互有干扰。但实际上一个model一般只有一个acts_as_xxx,否则就要谨慎考虑一下数据模型的设计了。 |
|
返回顶楼 | |