9th 十二月 2007
Rails 2.0于12月7日正式发布,从年初的Rails 1.2发布到Rails 2.0释出,接近一年的时间里,Rails本身一直处在不停歇的发展完善之中。在Rails创始人的博客Loud Thinking上,DHH对于新版发布的兴奋和激动之情溢于言表。
新版Rails 2.0在发布之前一直在37Signals内部进行测试,相比于最初的版本,Rails 2.0几乎重写了绝大多数的框架代码,并增加众多新的特性。在发布声明中,David列举了Rails在Action Pack、Active Record等方面做出的改进,使编码更接近于开发者,同时也更符合RESTful的实现方式,并且增加了Rails调试器以及在上一个版本之上进行了上百处的代码修补。
Rails 2.0还没有来得及去体验,但按照官方说明,如果应用在Rails 1.2.6之上顺利运行且没有警告提示,则可以顺利迁移到Rails 2.0之上。当Rails 2.0与即将发布的Ruby 1.9配合使用,应该又会在Rails与Ruby的开发者中掀起新一轮的热浪。
在表现层方面,准备学习如何使用Haml来写页面,而非Rails生成的rhtml模式,Haml的页面代码更加干净、简单且可维护性更好,开发者不必延续使用传统的HTML风格的页面模板。尽管Haml可能会带来效率问题,但对于实验性项目来说,开发效率可能比运行效率更重要。
Rails发展至今,经历了四年半的时间,并且一直处在不停歇的高速发展之中。如果感兴趣Ruby和Rails方面的最新消息,可以在RSS阅读器Trawlr中,读到不少Ruby和Rails相关的内容。
Posted in 兴趣爱好, 诸子百家 | No Comments »
1st 十二月 2007
OSGeo中文站服务器原先使用6.04版本的Ubuntu系统,由于更新软件包时发生问题,而导致系统在引导时出错。于是干脆把系统升级为Ubuntu 7.10版本,这个新版本发布已有一段时间,但是一直还没有尝试,正好在此安装试用,感觉其中还是有不少的惊喜。
更为全面的硬件支持和方便的集成桌面搜索都在新版Ubuntu中得到体现,并且SCIM输入法的安装以及字体美化设置也不像上次时常会遇到问题。当然,最让人感觉兴奋的莫过于在Ubuntu 7.10中默认启用的Compiz动态桌面,开启之后表现很是抢眼。尽管Ubuntu自带的Compiz配置器功能较弱,但在下载Compiz专用的管理工具之后,感受到Compiz 3D效果的强悍,具有倒影的Cube效果和平滑的窗口伸缩切换都与视频宣传中见到的景象如出一辙。
顺便提一下,中科大的Ubuntu源在我这里像是接近光速,一百多个update很短时间内就下载完成,感觉比清华或交大的源要快很多。版本升级之后的系统恢复也很顺利,OSGeo中文站的Wiki已大致恢复到原先的模样,只是可怜的Ricepig同学没有院士网英文站的数据备份,在此劫难中小有损失。
顺带又在Ubuntu上安装好全套的Rails开发环境,由于不清楚Rails for Linux有没有更新到当前版本,并且Linux下面好像也没有类似于BitNami或InstantRails这样的一站式解决方案,于是就参照说明安装好Ruby、Rails与Mongrel,或许有空可以把RubyWorks拿来一试,应该也是不错的东西。
之前看老外在Mac上演示Rails应用开发时,不禁赞叹Mac赋予Rails开发与调试的速度与效率,感觉Rails在Linux下脚本执行的响应速度还是很不错,除了没有TextMate这样天作之合的利器,使用Netbeans RubyIDE进行Rails的开发体验应该也不逊于Mac太多,希望以后可以多在Ubuntu下做些工作。
Posted in 兴趣爱好, 诸子百家 | 1 Comment »
21st 十一月 2007
第三季度在InfoQ中文站投稿了三篇本地新闻,汇总一下放在这里。在”时刻关注企业软件开发领域的变化与创新”理念驱动的同时,更重要的是,有了一个可以很好的交流思想和技术的平台,继续努力。
开源项目在中国:从关注到参与
以”让你梦想成真(Make your dream come true)”为主题的软件自由日在清华大学信息楼举行,来自北京Linux用户组、中国开源软件推进联盟、Ubuntu-cn的技术专家齐聚在软件自由日,演讲嘉宾包括SCIM输入法的作者苏哲、Discuz!创建者戴志康,红旗中文贰仟CEO胡才勇等人,为开发者分享各自在参与自由软件过程中的经验与获益。
关注:InfoWorld年度最佳开源软件尘埃落定
InfoWorld日前公布了2007年的Bossie Awards奖项,评选出各个领域中最佳开源软件。这些面向企业应用的最佳开源软件,是通过InfoWorld测评中心编辑与评论家悉心评选得出,涵盖了从CRM和ERP应用,到开源中间件、存储及安全方面的各类开源软件。奖项共分为6个大类,共36个获奖的项目。
观点:Rails还是PHP?适合才是最好
随着大举进军Rails号角的吹响,Rails成为Web 2.0中小型站点开发的框架新宠。一夜间rails与敏捷开发的思想逐步深入人心,在这个技术浪潮中涌现出的成功站点也不在少数。然而,Derek Sivers最近在O’Reilly站点上发表的一篇名为两年RoR开发付之东流,重返PHP的七大理由的文章,激起了rails开发者们强烈的反响。
Posted in 兴趣爱好, 诸子百家 | No Comments »
1st 十一月 2007
看到了Mac OS X新版操作系统Leopard的发布说明,不由得越来越迷恋Mac了。在Leopard的发布公告中写道:拥有300 多种新功能的Leopard是迄今为止最出色的Mac OS X版本。尽管之前看到有用户抱怨Mac系统对中文支持仍存在的不足,但无疑,面向64位处理器的作业环境的Leopard,其魅力实在是无法抗拒的。
更吸引人的是,在Mac OS X Leopard之上进行应用开发,可以获得如同使用Mac系统般的轻松体验。在Leopard之中,提供了针对于程序开发的编译器、调试工具及性能最优化工具。对于Xcode桌面应用程序开发和Dashboard Widget应用开发,Leopard都提供了完善的支持。特别是对于动态语言编程,Leopard为其提供了真正易用的开发环境。
Leopard操作系统集成了Ruby的1.8.6版本,同时包含了Ruby程序包管理器RubyGems,Ruby on Rails框架,轻量级服务器Mongrel,Rails项目构建部署工具Capistrano,全文检索工具ferret/acts_as_ferret,并且还集成了提供Ruby与标准C语言之间接口的RubyCocoa项目,使得Ruby语言通过ScriptingBridge来开发Mac桌面应用成为可能。
在InfoQ上的Mac发布新闻中,更深入的总结了Leopard对于DTrace动态跟踪,XCode编程以及Interface Builder提供的新特性,不仅如此,在Leopard下使用NetBeans的Ruby IDE进行开发,应该也会有非常流畅的体验。
Ubuntu 7.10也在不久前发布,桌面版改进了用户界面,并完善硬件支持和集成的桌面搜索。以前还在OSGeo的那台服务器上尝试安装过Compiz Fusion的3D旋转桌面,在Demo上要比Vista的效果靓丽很多,只是估计由于显卡驱动的问题,一跑起来就会当机。新版的Mac OS和Ubuntu究竟哪个会获得更高的用户满意度,还需要实践来检验。如果有了下一代,一定要让孩子从Mac或Linux之中选一个来开始学习电脑的启蒙,呵呵。
Posted in 兴趣爱好, 诸子百家 | 5 Comments »
28th 八月 2007
项目实践中,具体的业务应用常常以数据为中心展开,数据本身代表着应用系统价值的核心。然而仅仅是大量庞杂的数据,还无法直接体现自身的价值,数据通常需要经过多层分析过滤和处理,才会去粗取精,挖掘出数据所蕴含的信息。
GNU麾下的开源项目R语言是专门解决数据统计与分析相关问题的一把利剑。R语言使得基于数理统计思想的数据分析过程得到了极大的简化。通过简洁的语法和强大的命令让我们专注于数据本身,而非羁绊于具体处理过程的实现,减轻了数据统计分析的编程与操作负担。
R语言提供基于命令行的使用方式,内建一系列数据统计分析和图形显示工具,可以实现统计检验、矩阵计算、线性和非线性模型、分类聚类等各项数据统计处理功能。在Windows平台下,还可以通过RGui这样的图形化交互界面,完成数据统计、分析甚至数据挖掘工作,并且提供如MetaPost般强大的作图能力。
R语言的编程环境拥有非常好的一致性和拓展性,简单的数据统计计算可以直接在命令控制台中执行,如果需要编写R的程序段,WinEdt、Emacs和Vi等常用的编辑器都提供了对R语言的语法加亮支持。RGui环境已经集成了基本函数、数据集、标准统计和图形工具等26个针对不同应用的基本程序包,更多的程序包可以在CRAN项目中得到并载入使用。
R语言的语法在形式上类似C语言,语义上倾向于Lisp和APL(Array Processing Language)语言并与其有较强的兼容性。R语言允许把表达式作为函数的输入参数,这样极大方便了使用R语言进行统计模拟和绘图的工作。在R语言中,内置有众多数据处理相关的函数,并且用户可以创建自己的函数对象。函数一般以对象的形式在R工作空间中加载和使用,同时R的部分内部函数还可以用在表达式中,使得R程序的功能性和便利性得到极大扩展。
数学是任何科学的基础,在开放源码领域中,面向科学计算方面的项目十分广泛,为各种特定数学领域的问题提供了辅助工具。数据统计分析主要研究不确定性数据中所蕴含的规律性,在众多学科专业领域里都得到越来越广泛的应用。通过R语言来完成数据统计和处理将会极大提高效率,并对数据统计分析得出的定量决策,避免主观判断的随机性。(本文全文参见《程序员》07年9月刊。)
Posted in 兴趣爱好, 诸子百家 | 4 Comments »
10th 二月 2007
地图服务器的比较与选择,似乎是个永不过时的主题,OSGeo的讨论组里也常涉及到相关的话题。一般说来,构建基于FOSS的地图数据中心,除去服务器之外都有较固定的解决方案,浏览器的地图客户端可以选用Ka-Map或Openlayers,而数据库方面Postgresql+PostGIS的使用常常是不二之选。
先看历史悠久产品成熟的MapServer。Mapserver在国内用户广泛,其内核使用C++编写,基于CGI脚本实现,页面调用支持PHP、JSP等多种语言,并且对OGC的WMS和WFS规范提供支持。Map文件是Mapserver工程中关键的结构配置文件,定义了地图范围、数据源、地图图层、投影方式以及符号标记等内容。如果在Linux平台下快速配置MapServer地图服务器,使用Maptools发布的 FGS(FOSS GIS Suite)套件无疑是最佳方案,套件集成了整套的MapServer、Apache、PHPMapScript以及GDAL库等众多内容,并且提供安装后就可直接浏览的地图DEMO。
另一款开源服务器GeoServer也是非常好的选择,基于Java和Geotools库开发的Geoserver功能全面且遵循OGC开放标准,并由同时拥有PostGIS与uDig的Refractions公司提供支持。GeoServer对发布WFS-T和WMS服务提供便捷的支持,并以XML文件描述所有地图服务。GeoServer的开发组很活跃,邮件咨询的问题很快会得到 Jody Garnett和组内其他成员的回复,GeoServer对OGC规范提供了全面的支持,除WMS和WFS之外,即将加入的FROGS(Framework for Open Geospatial Services)项目将着重提供对WPS规范的支持。
比较来说,Mapserver对WMS的支持更为高效,而Geoserver则更擅长于结合WFS规范的属性查询。当然,对于使用者来说,最主要的区别还是传统CGI脚本与J2EE在技术上的分歧。但就发展趋势来看,J2EE的架构明显要占据优势,并且Geoserver拥有基于Eclipse RCP平台的开源客户端uDig。随着Geoserver的版本更新,相信其有实力成为今后开源WebGIS解方案的主流选择。
Posted in 兴趣爱好, 聚焦GIS | 3 Comments »
2nd 二月 2007
印象里SUN的软件产品接触都比较少,主要是感觉针对企业级的产品定位往往对于一般用户实用性并不强,然而SUN的Java集成开发环境Netbeans却改变了自己一贯的看法。
同样,在Sun开源政策的支持下,Netbeans遵循 CDDL 开源协议,NetBeans可以在Solaris、Windows、Linux和 Macintosh OS X等各种平台下进行开发,作为全功能的Java IDE,编写、编译、调试和部署Java桌面和移动应用都十分顺手,并且Web可视化开发以及C和C++语言的开发包都包括在新一代的Netbeans中,用来在Windows平台上构建本地代码。值得一提的是,Netbeans国际化十分出色,不仅IDE环境可以切换为中文界面,附带的所有帮助文档也是中文撰写。
针对Web Service的企业应用在Netbeans环境下开发十分便捷,Web容器可使用已集成的Tomcat,同时Netbeans企业包(Enterprise Pack)中提供的Application Server也是不错的选择。目前已经测试Netbeans平台下生成并发布WebService的流程,感觉比用Eclipse、Axis和WST结合实现的解决方案要方便不少。让我感到惊喜的是,Netbeans下不仅可以将Java代码生成Service发布,还可将已有的WSDL描述文件逆向生成Java接口,发布为Service进行接口调用。在目前火热的SOA领域,Netbeans对基于BPEL的Web Services商业过程语言也提供支持,开发者可以轻松定义组件之间协作的工作流,集成在应用当中。
Netbeans确实带来了不少惊喜,记得06年软件技术大会时,和Sun的白剑波老师说起Netbeans的发展及其与Eclispe的比较,大致认为,Netbeans如果要超过Eclipse的势头,仅靠Sun提供插件开发包是远不够的,还需要众多第三方插件提供商的支持,在迁移Eclispe平台上优秀插件的同时,开发更多独具特色的Netbeans插件,来丰富用户的选择。 希望Netbeans带来的好感可以持续下去,并且在后续的版本中体验到更多的令人着迷的功能。
Posted in 兴趣爱好, 编程语言 | 52 Comments »
12th 十月 2006
用过Google Maps的朋友都会认为它很Cool。其实创建一个类似的地图服务站点,在技术上难度并不大,已经有较为成熟的开源解决方案。但是能像Google那样有原始影像数据和庞大的集群支持,不是一般站点可以做到的。
这次把Google Maps搬出来,是想分享一下比较有意思的Google坐标换算方式。Google Maps使用Keyhole公司提供的卫星影像,全世界众多大城市的卫星图片可以达到1m以下的精度。Google Maps的卫星影像使用等角正切圆柱的墨卡托(Mercator)投影,被预先处理成按照不同精度划分的影象金字塔,提供了0-17共18级的缩放等级并进行四叉树编码,每张卫星图都由切片成256*256像素大小的影像组成,根据用户请求的位置拼接组成大的影像图。
Google Maps的坐标使用QRTS这四个字母进行编码,如右图所示,一张图片被分成不同字母标识的4块,根据请求的位置逐级细化,最后达到所需精度的卫星图片。如果知道特定位置的经纬度,换算成Google Maps坐标并不复杂。首先将经纬度转换为弧度,规格化后使得变化区间在0-1之内,然后根据需要的图像精度级数确定迭代次数,进而计算出经纬度对应的Google坐标字符串。
按照计算公式,北京的经纬度以天安门作为地理标准坐标,位于北纬39度54分27秒,东经116度23分17秒。换算后得到北京的Google坐标字符串是trstrqqrqssttttrrrstq,具体对应的卫星影像地址为:http://kh.google.com/kh?v=3&t=trstrqqrqssttt 网上提供了C和Python写的换算程序,感兴趣的朋友可以一窥究竟,方便的把经纬度换算成Google卫星影像坐标。
Posted in 兴趣爱好, 聚焦GIS | 2 Comments »