论坛首页 编程语言技术论坛

ruby里面嵌入C代码

浏览 19550 次
精华帖 (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的语法怪怪的,学习成本对我来说比较高,我持观望态度吧,等你们弄成熟后,如果真的有前途,我再加入。作为探路着毕竟很辛苦(向你们致敬先!),而我更喜欢踩在巨人的肩膀上,对自己的学习能力也很自信--没办法,我们还得给老板干活,不成熟的技术、没有足够的自信我们是不敢上的,因为代价很高,老板总不能拿他的钱来给你做实验吧?
0 请登录后投票
   发表时间:2006-07-30  
没人逼你学Ruby阿,而且你Java用的好好的,就该干嘛干嘛咯,何必这么眼热我们这些学习ruby的人呢?
0 请登录后投票
   发表时间:2006-07-31  
flyingbug 写道
问个问题,哪位对ruby的源代码保护有好的办法的?

不久前有人发表过一个商用混淆器:ZenObfuscate 要钱的,所以内部原理只能参考它的简单说明了:基于ruby inline。

另外有个ruby2c工具,可以翻译一部分ruby代码,当然你也可以自己用c写
0 请登录后投票
   发表时间: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,否则就要谨慎考虑一下数据模型的设计了。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics