技术、门派或仅仅是恐惧?

几个关键字:
ROR = Ruby on Rails
OOP = Object Oriented Programming
DRY = Don’t Repeat Yourself
COC = Convention Over Configuration
ORM = Object Relational Mapping

人们(一部分人们)对于新事物总是抱有否定的缺省态度,这并不新鲜:当初,当有人说地球是圆的,当有人说地球绕太阳公转,都会有另外很多人站出来否定之。

而现在,ROR成了众矢之的。几种典型的否定是这样的:
1,Ruby是script,是脚本,那么性能肯定不行。

其实这种“如果x是脚本,那么x的性能肯定不行”的判断大概源于BASIC或者VisualBasic的经验吧。持这种判断的人你可否知道,ROR有Development/Testing/Production三种运行模式,在development模式下,每次当页面被访问时脚本会重载以反映最新的修改结果;而在production模式下,则不会这样做。

而这些人往往忽略另一个性能,就是快速开发的性能。如果时间紧迫,ruby绝对是上佳之选。

2,COC需要程序员来学习但没实质变化的新玩意儿

对于持这种意见的人,我只能说,你身上坏习惯太多了。ROR有很多默认的惯例,例如模型对象Article,那么对应数据库中的表articles;如果模型对象是Person,那么对应表people;如果Article和Person关联,那么articles表中要有person_id等等。难道还有更合理的“惯例”么?

如果你喜欢让Article对应table1,Person对应table2,就运行性能而言当然无二,但是如果有第二个人要看你的代码,不就麻烦了么?或者你就不想让第二个人看懂你的代码?另外别说你有创意,有创意的人是用脚来打字的。

3,ROR框架层次结构复杂

去用CGI吧,谢谢你。

4,ActiveRecord很方便,但是不知道该如何优化它

持这种观点的人多半是前几年自己写过或者配置过connecion pooling。但是你认为能写出ActiveRecord这么强的ORM的人,会不知道那么几行connection pooling代码么?

5,DRY

不多说了,有人不喜欢DRY,那就让他RY吧。

看得出来,很多对ROR的否定源于固有经验和对ROR的无知。“无知产生恐惧,恐惧产生憎恨”,送给那些孜孜不倦到ROR坛子上踢馆的同僚们,布鲁诺就是你们这些人烧死的:(

ruby笔记之一

1,随意,更象人类的语言
java:
if(a == b) {
System.out. ….//already forgotton? 🙁
}

ruby:
puts “it’s right!” if a == b

2,纯粹的OOP
java:
MyClass my = new MyClass(“param”); //’;’ required
int i = Math.abs(-5);

ruby:
my = MyClass.new(“param”) #no ‘;’ required
i = -5.abs #see, even -5 is an object

3,灵活
java:
public String hello(String sir){
return “hello, ” + sir + “!”;
}

ruby:
def hello(sir)
“hello, #{sir}!” #the last line’s value will be the returned value.
end

4,人性、人性!
任务:打印n个*出来
java:
for(int i=0;i

ruby:
n.times { print “*”}

5,容错
java:
int[] i = {1,2,3};
i[5] = 99; //boom!!! ArrayIndexOutxxxException!!!

ruby:
i = [1,2,3]
i[5] = 99 # i is now [1,2,3,nil,nil,99]

待续……

开始ruby,开始rails

终于放下包袱了,我要重新开始,从ruby on rails开始了。

我的包袱是什么呢?是Java。从2000年年底开始,Java、JSP(好多人问是JavaScript么?晕……)、JavaServlets到后来的Struts、Tapestry、Hibernate,真是没少花时间呢。好在我不必遗忘Java才能学习Ruby:-)

自从去年开始做bjqnc.com(小区的网站,纯兴趣),我对Java的感觉就发生了变化。我最终选择了xoops,实在无奈的是xoops是基于php和smarty的,完全陌生的东西。而我熟悉的Java呢?开源项目颇多,唯独没有能用得上的。于是我开始了磕磕绊绊的php+smarty的应用。于是我又回到了编辑模版的原始阶段了,不甘心……

为了做自己的xoops module,我找到了网友alex的笔记,跃跃欲试,后来好歹算是成功了。于是就像遇到了救星,赶忙把alex的msn加了进来:-) 后来alex说到ror(ruby on rails),我顿感无知,于是去ror网站上恶补一气,看了15分钟做blog那个视频,嗯,It’s the one.

当然了,Java还是很了不起的,我现在用的radrails就是来自Eclipse,哈哈。

本周要做个日志管理软件,算是练练手。待续了……

搞定ADSL路由故障一例

关键字:MTU
Maximum Transmission Unit. The greatest amount of data or “packet” size that can be transferred in one physical frame on a network. This packet also contains the header and trailer information, which are like addresses for each packet that are required by the routers on the network.

UPnP
Universal Plug and Play is making home networking simple for users. UPnP offers network connectivity of PCs, intelligent appliances, and wireless devices. UPnP leverages TCP/IP and the Web to enable control and data transfer among networked devices in the home and around the home. UPnP technology can be supported on essentially any operating system and works with almost any type of physical networking media – wired or wireless.

最近,不知道网通那边做了什么修改,我家的ADSL出了问题,症状如下:

1,直接拨号模式,一切正常;
2,路由模式下无法登录msn,无法post,无法用sftp上传等等
3,wow居然照样玩
4,emule也没事,呵呵

由于主要应用(wow+ emule)没受影响,我解决问题的动力自然打折扣了。不过老婆喜欢上msn,所以还是要解决的。

首先,拨号模式一切正常,排除硬件、线路故障。另外,我的笔记本在公司一切正常,回家才出症状,因此排除电脑故障。

然后我关闭了路由器上的防火墙,症状依旧,排除防火墙因素。这样,基本上可以断定,是传输协议上出了问题。我看了一下路由器上的MTU值,1492,而且不建议修改^O^ 我上网搜了一下,发现很多相关信息(在此感谢Google,感谢Baidu,感谢Yahoo!):

http://ask.so1ba.com/A/7942/9988.html

http://zhangfl.blogchina.com/zhangfl/606141.html

于是我把路由器的MTU从1492改为1454,抱着试试看的心态重启路由器。然后呢,当然就Mission accomplished。