1st December 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 November 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 November 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 August 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 February 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 February 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 JAVA魅力, 兴趣爱好 | 52 Comments »
12th October 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 »
25th June 2006
对动态语言的Web开发很有好感,众多的动态语言比较之后,发现Python的社区是最成熟的,同时Python社区拥有一大批优秀的程序员,而且大多都具有开源的思想和精神。在基于Python的Web框架中经过一番取舍比较之后,选择了Django作为今后的开发框架,主要原因是看中Django巨大的发展潜力。
积极推进开源项目的IBM也在Developworks中提供了Django的教程,并且还有Limodou撰写的Django Step by Step可以快速入门,同时啄木鸟社区也提供了大量的官方文档翻译,简化了学习成本。Django开发先驱JeffCroft也在其站点上提供了按照标准Web2.0模式发布的Lost Theory站点源码。还有Holovaty在Blog上招募开发者来扩大ChicagoCrime站点的影响,使其与传统的新闻传媒相结合。可见Django已经开始受到越来越多的关注。
如果对Python还比较陌生,Django的上手或许并不轻松,并且很有可能被配置文件的编写和复杂的Django自带类库搞得手忙脚乱。但如果静下心一步步的学习,会渐渐体会到Django赋予开发者的敏捷与自由。在使用Django完成第一个站点Demo之后,把感受到的一些Django优点列举如下:首先,Django自动生成的admin管理界面,可以根据在Models里定义的显示方式,根据字段类型生成后台管理代码。其次,使用syncdb命令同步数据库之后,Django会根据模型的定义自动完成ORM的数据库映射工作,屏蔽了底层数据库细节和SQL查询的编写,感觉真的是非常神奇。还有,Django的模板里面嵌入变量和简单的控制语句非常方便,并且模板可以支持多层嵌套,每一层都可以使用DIV+CSS方式完成布局。
当然,关于蟒蛇与红宝石的争论一直没有停止,甚至在Django的官方站点上有专门的栏目来比较Django与ROR两种敏捷开发框架的优劣。不过争论毕竟是为了促使相互的学习与共同发展,在此感谢一下Yang.King、魏忠、Limodou提供的Django指导和文档,让我的第一个应用有了参考的基础。感兴趣的朋友,可以下载我帮实验室写的周志应用录像,体会一下Django带来的新鲜体验。
Posted in 诸子百家, 兴趣爱好 | No Comments »