显示标签为“Ruby”的博文。显示所有博文
显示标签为“Ruby”的博文。显示所有博文

2009年10月15日星期四

脚本语言之于开发及部署相关

脚本语言之于开发及部署相关

----------------------------
LinFeiYu 2009,10,05

脚本语言的简便和高效致使它们得到广泛的应用。在 Linux 发行版系统中使用脚本语言开发管理工具、应用程序现在已经非常流行。比如很多发行版的包管理程序都是用 Python 开发的。相信大家在 Linux 上使用 Python, Ruby 等脚本语言进行开发或者产品部署的时候,特别是 Python ,经常有一些比较烦心的版本冲突问题。一个比较好的解决方法我想就是自己重新编译一个需要的版本,比如在 /opt/py25 编译一个 Python 2.5 的版本,然后使用这个版本来进行开发和部署。这样做其实是有很多好处的。

1. 首先是这个版本是从源码编译的,虽然不能说比发行版提供的二进制包或者定制的包性能上好,但是我认为它可以更加的简洁和稳定,而且你可以自定义一些选项,做一些有用的优化!

2. 其次是与操作系统本身的版本分离,完全不受干扰。虽然像 zc.buildout, virtualenv 等优秀的虚拟环境构造程序可以非常好的完成这个工作,但是他们还是在跟系统紧密相连的那些版本关联,偶尔还是会发生一些意想不到的故障。

3. 升级和卸载方便。由于和操作系统中的版本完全分离,所以啥时候升级,升级成什么样子都随你折腾。卸载的话就更加方便了,几乎把目录一删除就可以了。操作系统中的版本升级也很少会影响我们自己编译的版本。最多是自己重新编译一次。

2009年8月31日星期一

Ruby

Ruby

----------------------
LinFeiYu 2009,08,30

相信很多人开始接触 Ruby 都是从 Ruby on Rails 开始的。我就是这样子来的。
维基百科上介绍 Ruby on Rails 的历史上是这样说的:“于2004年7月,Rails 的创始人David Heinemeier Hanson从 37signals 公司的项目管理工具 Basecamp 里面分离出 Ruby on Rails,并且以开源方式发布。”于是对这个框架更加的有亲切感。为什么呢?因为公司的项目管理 SaaS 应用正是从 Basecamp 那里模仿汉化而来的。刚才偶尔翻阅旧文章时候发现了一篇介绍项目管理的文章:项目管理工具推荐:Redmine和DotProject ( http://www.kuangfeng.cn/blog/?p=1846 ) 。其中的 Redmine ( http://www.redmine.org/ ) 莫非就是由此而来?呵呵 :-)

学习 Ruby on Rails 当然要熟悉 Ruby 这个基本语言了。然而跟 Python 一样,中文资料还是比较缺乏的。刚又看了一个面向 Java 程序员的 Ruby 语言介绍: 脱离 Rails 看 Ruby ( http://www.ibm.com/developerworks/cn/java/j-ruby/ ) 。这篇文章中提到的 Ruby 的三个特色给我留下的印象比较深刻。

首先是迭代。 IBM developerWorks 的这篇文章中提到:“ Ruby 中支持 each 方法的任何类(比如 File)都允许以这种方式进行迭代。” Ruby 的 each 方法比较酷!而且非常常见,比如你在 Ruby on Rails 第一个教程中就可以看到它的身影。跟 Python 的链表推导式(List Comprehensions)相比复杂了一点点,还是比较好用好理解的。
Python 的链表推导式支持条件判断,那是相当的有用的。而 Ruby 也有,不过 Ruby 不仅用了 if 语句,还用到一个叫 unless 语句,估计比 Python 强一点点。可能就是在迭代出现符合条件的时候 break 跳出循环。
另外一个就是多态性了。在 Python 中我好像没找到多态性这个面向对象特性,因为默认情况下 Python 没有接口功能。尽管 zope 的组件思想中以接口为中心设计,而且把 zope 组件当成是 Python 组件,但是纯 Python 中并没有这个东西。而这篇文章中说 Ruby 中也不存在接口,但是却存在接口的功能,而且 Ruby 中的多态性只是对方法名进行匹配的问题。这是非常有趣的事情。

目前尚未真正接触 Ruby ,所以几乎一无所知。然而正如 IBM developerWorks 的这篇面向 Java 程序员的 Ruby 介绍文章中所提示的,掌握多种语言有非常多的好处。

关于 Python 和 Ruby 的细节比较,这里有一篇非常详细的介绍文章:Python vs Ruby ( http://regebro.wordpress.com/2009/07/12/python-vs-ruby/ )
确实地, Python 是一种非常优雅的语言。

关于 Ruby 的一个 web 服务器 Mongrel 作者的访谈录的中文翻译: 对SCGI/Mongrel的作者的访谈(关于Rails企业级应用、放弃SCGI等的言论) ( http://www.javaeye.com/topic/49543 )
其中提到的 “企业级应用” 这样的问题,在 Python 中也是非常的有争论的。比如在某些人的眼中,zope 就被定义为类似于 J2EE 等的 “企业级应用” ,而像 Django 等快速开发框架却被认为属于小型应用框架。然而, Django 之类的快速开发框架在 Python 社区的火爆,相对于 zope 的冷落没落,我们似乎应该改变些看法。也许只有当我们认真地去了解 Django 等快速开发框架之后我们才能作最后的结论!