Archive for 九月, 2009

给Ruby变量添加类型标识

星期三, 九月 30th, 2009

Ruby是弱类型语言,所以IDE工具很难理解其是什么类型,所以给代码提示带来了问题。典型的一个语句: user = User.find_by_nick(‘linux_china’),如果find_by_nick不表明其返回的类型为User类,那么给user变量做属性提示基本不可能。如果你使用第三方gem,那么你不可能给函数添加返回类型,所以这个时候要给变量添加类型标识,这个时候变量就会知道它和那个类型进行关联,从而进行代码提示。所以我们在写Ruby代码时,适当的添加annotation将对代码的质量和写代码的便捷有很大的提高。
#:return:=>User def self.find_by_nick(nick) end
#:return:=>User user = find_user_by_email(‘xxx@xxx.com’)

RubyMine的动态API

星期二, 九月 29th, 2009

Ruby的Meta Programming能力非常强,如果你使用define_method的话,同时想让IDE还能进行代码提示,那么可能有点为难IDE啦。在最新的RubyMine版本中,添加了动态定义函数的方法,两个功能:设定动态函数名称;设定函数返回值。有了这两个特性,我们就很容易搞定一些代码提示。如下面代码,给Date添加了一个plus_week的函数,先定义动态函数,然后定义其返回值:
require ‘code_insight/code_insight_helper’
describe “Date” do set_dynamic_methods :methods => “plus_week” set_return_type “plus_week” => “Date” end
在RubyMine中的效果如下,代码提示就可以轻松搞定啦。

RubyMine 2.0的重构特性

星期六, 九月 26th, 2009

RubyMine发布了2.0 Beta版,其中一个重大的特性就是重构,从refactor菜单我们可以看到很多特性,这些特对对编码非常有帮助,同时期待《Refactoring: Ruby Edition》。

IDEA给Groovy和Ruby添加动态API定义

星期五, 九月 25th, 2009

Groovy和Ruby都允许动态定义函数,如ruby的define method, class_eval等,Groovy的metaClass等,这些特性功能非常强大,但是对于IDE工具来说,它不并知道你动态定义了一个函数,那么对代码提示和代码审核就会有很大的问题。最新的IDEA和RubyMine提供了这个特性,动态类型定义,通过一段脚本,告知IDE,我给那些类额外定义了一些函数,这样IDE就可以读取这些信息,然后加入到代码提示和审核中,代码的质量会更高。Groovy请参考: http://jetbrains.net/confluence/display/GRVY/Scripting+IDE+for+DSL+awareness ,Ruby的这一特性会在新的RubyMine中实现:

Ruby API for defining dynamic types
Ruby API for defining native sources

Git Server搭建完毕

星期五, 九月 25th, 2009

在服务器上将Git Server搭建完毕啦,其实也没有什么搭建的,只要在服务器上安装一下Git,配置一下SSH,步骤还是非常简单的。以后的一些个人项目会逐渐切换到Git上,但是在公司开发项目,目前还是Subversion为主,Git和SVN并行吧,Git的优点还是很多的。

GAE/J 1.2.5更新到mvnsearch上

星期四, 九月 24th, 2009

昨天花了一些时间,将GAE/J 1.2.5开发包的jar更新到mvn repository上啦,主要是方便大家使用maven来管理GAE/J项目,下面会更新相应的archetype,有兴趣请访问: http://www.mvnsearch.org/maven2/com/google/appengine/,change list如下: 1 更新到1.2.5 2 添加了labs相关包 3 添加Java SDK zip

12 Steps to Better Code

星期三, 九月 23rd, 2009

The Joel Test

Do you use source control?
Can you make a build in one step?
Do you make daily builds?
Do you have a bug database?
Do you fix bugs before writing new code?
Do you have an up-to-date schedule?
Do you have a spec?
Do programmers have quiet working conditions?
Do you use the best tools money can buy?
Do you have testers?
Do [...]

PHP IDE:Web IDE PHP Edition

星期天, 九月 20th, 2009

个人已经N年没有写过php代码,也没有怎么看php的图书啦。最近JetBrains推出的Web IDE开始支持PHP,应该是一款PHP的IDE工具。就目前市场的PHP IDE来说,主要Zend Studio,PHPEclipse,NetBeans PHP版等,和这些工具对比,Web IDE还是有明显的优势。首先Web IDE的开发者是JetBrains,应该是IDE开发工具的行家,已经有IntelliJ、ReSharper、RubyMine等,而且已经属于行业领先,所以PHP版也不会让人失望。接下来是Web IDE的整体功能,如果说是php的IDE,那么JavaScript,HTML,CSS等也要非常出色,如果一个PHP IDE只支持php的代码提示,而对其他支持很弱,那么整体的效率就大打折扣,在这方面,Web IDE基于IntelliJ IDEA平台,插件机制,整体特性就不用说啦。接下来是框架的支持,php也有不少框架,如果能支持这些框架,开发效率会有很大的提高。最后是附加功能,如项目管理,内置版本控制,数据库插件,ftp/sftp同步等等,这些都是非常必要。总的来说,Web IDE将会是非常有竞争力的产品,php的程序可以考虑试用一下,一定不会失望。当JetBrains推出ruby插件后,现在RubyMine可以说是最好的Ruby IDE工具啦,相信Web IDE也会成为最好的PHP IDE工具,我个人也会重头再去学习一下php。