-
RubyWorks 0.0.1 Released
RubyWorksproduction stack is a collection of open-source software required to host aRubyOnRailsapplication on a RedHat Enterprise Linux 4 or CentOS 4 server.
Once you point your package manager (up2date or yum) to RubyWorks repository and install thepackage, you have all the necessary pieces preconfigured and ready to go. Moreover, there is askeleton Rails application up and running on the server. It’s as close as we could get toone-click production deployment with Rails.
前一阵的冲锋有了成果。在即将开幕的RailsConf 2007上,所有人都将看到我们的RubyWorks。
正如我以前说过的,Ruby和Rails已经做好了准备走向企业。在众多怀疑的部署问题(性能、伸缩性、可靠性、可管理性……)上,一个经过实践检验的部署方案已经存在,事实证明它完全能够应付所谓“企业级”的要求——不论你如何定义“企业级”这个词,因为这个部署方案各方面的能力已经证明了它自己。
唯一的问题是,HAProxy、Monit、Mongrel的配置即令不是困难的,至少也不是易如反掌的。RubyWorks的出现正是为了解决这个问题。我们提供一个“高性能”“企业级”(如果你喜欢这些大词的话)Rails部署环境所需的所有软件,以及可以立刻投入使用的缺省配置,再加上一个示例应用。所有这些都以RPM的形式发布,用yum或者up2date就可以直接安装。如果你正在开发Rails应用并且你的部署环境是Redhat/Fedora/CentOS,那么恭喜你了,因为……
高性能的Rails部署应用服务器,现在只需一分钟就可以获得。
-
所谓“科学的根基”
(以下文字摘录自波普尔《科学发现的逻辑》。)
科学理论是全称陈述。
自然科学的理论,特别是所谓自然定律,具有严格全称陈述的逻辑形式;因此它们可以被表达成严格存在陈述的否定形式,或者可以称作非存在陈述(或“无”陈述)。例如,能量守恒定律可以表达为这样的形式“不存在永动机”,基本电荷的假说可以表达为这样的形式:“除了基本电荷的倍数以外,不存在任何电荷”。
自然定律可以和“排斥”或“禁止”相比拟。它们并不断言什么东西存在着或具有某种状态;而是否定它。它们坚持一定的事物或状态的不存在,可以说是排斥或禁止这些事物或状态:自然定律排除它们。正因如此,它们是可证伪的。
在一个理论系统或公理系统必须满足的各种要求中间,无矛盾性要求起着特殊的作用。它可被看作每一个理论系统,不论它是经验的还是非经验的,都要满足的第一个要求。在无矛盾性以外,经验系统必然满足进一步的条件:它必须是可证伪的,这两个条件在很大程度上是类似的。
如果我们要求用推理的论证在逻辑的意义上去证明[科学陈述],那么我们就得接受这样的看法:陈述只能为陈述所证明。因而,要求所有的陈述都要被合乎逻辑地证明(Fries称作“对证明的偏爱”)一定会导致无穷后退。
理论是或多或少可以严格地检验的;这就是说,或多或少可以容易地证伪的。它们的可检验性的程度对于理论的选择是有意义的。“它们禁止越多,它们说得越多”。
-
DSL不要太多
ActiveForm据说是用来生成HTML表单的DSL。董斌还颇赞赏。
然则,这个代码真的比HTML更容易弄吗?
HTML原本就被认为是描述web界面的DSL,现在又弄出一套DSL来生成HTML。
用好现在的工具,会不会比不断发明新工具要好?
-
甘肃行|边塞怀古
长久以来,我第一次发现,关中平原是一块苍翠肥沃的土地。
黄河远上白云间,一片孤城万仞山
一个小时前,深圳航空公司一位估计是刚从部队转业的机长把空客320当战斗机开上了天。克服心中的恐惧之后,透过舷窗我看到了王之涣眼中的边塞风景。黄河蜿蜒着直指天际,河谷两岸隐约点缀片片灰绿,兰州城倔强地对抗着四周的群山。
那山,与戈壁一般无二的澄黄,连绵起伏,沟壑纵横,无边无际。
尚未进入河套的黄河,温柔浑厚,如同慈母,在一片黄沙中滋润着兰州。而在身后,矗立着严父般的皋兰山,仿佛永远凝视着自己的子民,不怒而威。
那一日,整个大西北,万里无云。
羌笛何须怨杨柳
去往敦煌的火车,精确复现着丝绸之路的主道。进入河西走廊以后,身边就一直伴着积雪的祁连山。
失我祁连山,使我六畜不蕃息。失我焉支山,使我妇女无颜色。
祁连山下,牛马成群。列车一站站前进,毫无感情的报站声,提醒着两千年前那场残酷的战争。
武威。彰显骠骑将军霍去病神武威名。张掖。断匈奴之臂,张大汉之掖。酒泉。霍去病洒酒入泉,犒军庆功。敦煌。敦敦大汉,煌煌天朝。
草原民族则一步步退入万里黄沙,终于漠北无王庭。
相比之下,当权贵们贪恋汴梁繁华,英雄也只愿“踏破贺兰山缺”。一般的豪情壮志,气势却已然逊了几分。
春风不度玉门关
由敦煌向西北180公里,即是有“魔鬼城”之称的雅丹地貌公园,也是罗布泊的入口。怪石嶙峋,寸草不生。东侧30公里,便是玉门关。
犯我强汉者,虽远必征
汉武神鞭,跨越四千里,于此落下最后一击。关内有草,有水,有绿洲,有田地。一道关城,连春风也被锁住,只留下大漠。
匈人于是从历史上消失。直到三百年后,阿提拉朝着罗马帝国挥舞起上帝之鞭。
只不知,那时的他,可还依稀记得祖先如何在地狱般的黑石山上苟延残喘,望向祁连山下肥美水草地时的嫉恨眼神?
河仓城外,一片红柳环绕的沼泽;嘉峪关下,几处白杨护卫着村庄。戍边的兵士们,不畏如此的严寒酷暑狂风暴沙,是这关内美景在时刻鼓励着他们吧?
飞机渐渐近了咸阳。看这沃野千里,岂容他人染指。
-
坚持写作:从DAS到TDO
(上传了一组照片,但计划中的游记还是没有及时写出来。留到明天再写吧,不过把第5期《程序员》发表的一篇文章发布出来了。)
从DAS到TDO
据我所知,很多人像我一样,主动选择患上“测试驱动强迫症”(很酷的缩写叫TDO),就是为了逃避“调试器焦虑综合症”(也有一个很酷的缩写叫DAS)。我希望这是一个有趣的文章。感谢孟岩帮我起的标题。
-
Create RPM For Your Rails Application
Now you can createRPMpackage for yourRailsapplication fairly easily. Here are the instructions:
- Install and configrpmbuild.(You may wanna read anRPMTutorial.)
- Install rpmpackager plugin:
ruby script/plugin install \http://rubyworks.googlecode.com/svn/trunk/rpmpackager/
- Config rpmpackager plugin. Edit vendor/plugins/rpmpackager/config.yml as following:
configuration:# name of your applicationapp_name: rubyworks-dogfooddescription: This is dogfood of RubyWorks.license: Apacheversion: 1.2.1release: 1# RPM dependencies. separated with commasdependencies: openssl, mysql gt;= 5.0# gem dependencies and installation indecies# 0 for gems don’t need selectiongems:redcloth: 0rcov: 1
- CreateRPMpackage:
- rake rpm_package
- (By default the generatedRPMwill install your application to ”/usr/local/lib/rails-apps/#{app_name}”.)
That’s it. Package your application and throw it to deployment :
-
(不愿被代表的)我们在做开源
轻量级AJAX框架Buffalo2.0:性能提升30%
Buffalo在经历了两年之久的考验后,近日正式发布2.0版本。Buffalo是一个J2EE轻量级AJAX框架,也是国内著名的开源项目。它与DWR和JSON-RPC一样,着眼于Web远程调用(Web Remoting),其简洁而实用的特性一直以来深受开发者喜爱。在国内,对JavaScript技术深入研究的人可谓凤毛麟角,Buffalo的作者陈金洲(Michael Chen) 就是其中之一。
采访XRuby开发者
郑晔说:“XRuby本身起步时,考虑得更多的是乐趣,参与者都是因为乐趣加入其中的。所以,我想说,XRuby的一个很大的优点就是它还年轻,其中有很多可以做的有趣事情。短时间之内,我们不敢奢望有人可以把XRuby用于实际的项目。现阶段,我们只是希望赢得更多的关注,吸引更多的人加入到XRuby的开发中来,这样,可以尽快实现XRuby的目标。”
还有CruiseControl。
还有CruiseControl.rb。
还有Selenium。我们不是什么“开源人士”,也不愿被谁代表。我们还在做开源。因为我们相信,千里之行积于跬步。
-
知识库|只言片语|互联网式写作
ChinaonRails果然与众不同:别的地方发帖子攒积分,这里发帖和回帖要付出积分的。
认真想了一下这个事情。望勤说是要建立活的Rails知识库。既然是知识库,和论坛本就不同,更鼓励贡献知识而不是参与讨论。只要把有趣的东西给出来,看的人自然会有收获,不需要更多讨论——至少我猜望勤是这么想的。而且按照积分规则,字数越多需要付出积分越多,所以王大力发的都是只言片语,简单两句话加上链接。无疑这是被规则所鼓励的风格。
只管说,不管解释。
只言片语。不啻是麦克卢汉的风格。问问麦克卢汉的风格从哪里来,他说来自詹姆斯·乔伊斯。乔伊斯的文字素以信息量巨大、链接丰富、难以解读而著称。《尤利西斯》如此,更不用说《芬尼根的守灵》。最近时常在想,也许乔伊斯的文字原本就不是为印刷时代而写的。放在超文本的互联网上,《尤利西斯》是否能逃脱“晦涩难懂”的评语?在互联网的写作中,链接就是内容。拼凑链接的写作,反而比精心堆砌的文字更有意义。)
(所以顺便请求互联网上的剽窃者们,在照搬别人文字时至少真正做到“照搬”。链接不那么重要吗?也许,当文字被印在纸张上时。但在互联网的写作中,链接就是内容。)
-
中国上铁道
蔡望勤重开了中国上铁道。ChinaonRails是一个关于Rails的论坛,各种元素都相当的2.0。望勤有了自己的老窝,就不在其他地方回答Rails问题了。
还有一个讨论:聊聊Rails在国内的现状。有一些著名的网站(例如铁道播客)关闭了,有更多的网站冒出来。今年的铁道中文报告会是什么样呢?铁道之路,任重而道远。
-
HAProxy - Mongrel - Rails
这是一个高性能、高伸缩性的Rails部署方案。有一组性能数据可供参考。
首先接收到HTTP请求的是HAProxy。HAProxy会把请求反向代理给其后的多个Mongrel实例。每个Mongrel实例同一时间只处理一个请求。只要Rails应用本身贯彻无共享架构,就可以直接通过增加服务器和改变HAProxy配置得到线性的性能提升。另外可以用Monit来管理Mongrel实例的开启和关闭,并且在异常状况发生时及时采取措施。这样一来,企业级超复杂所暗含的性能、伸缩性、可管理性等等要求都满足了。
“HAProxy is a free,veryfast and reliable solution offeringhigh availability,load balancing, andproxying forTCPandHTTP-based applications.”
“Mongrel is a fastHTTPlibrary and server for Ruby that is intended for hostingRuby web applications of any kind using plainHTTPrather than FastCGI orSCGI.”
“monit is a utility for managing andmonitoring,processes, files, directories and devices on aUNIXsystem.”(今天下午和George讨论的主题:我们已经听厌了“企业级”这样的大帽子。我们需要做的是弄明白所谓“企业级”究竟代表什么,然后把解决方案拿出来。基本上——如果真的喜欢“企业级”的话——这就是所谓的“企业级Rails”了。)