2006年11月29日星期三

龙芯电脑开始接受预购

基于龙芯的龙梦盒子27日开始接受预购了。这次准备了1000台,主要以测试为目的。只有主机,价格是RMB1599,消息中说这是低于成本的,而且还将对在机器测试和软件开发上做出贡献的,视情况部分或全部退款。

我觉得这么做是个好主意,在初始阶段需要一些赔本赚吆喝和经验的事情。如果是我,我会捐一些机器给国外的一些诸如gcc之类的著名开源计划,以换取人家的支持和合作。其实在国外颇有一些这种专门给geek们设计的产品,象Kuro BoxOpen Desktop Workstation, 因为有些人就是不愿意用Wintel的东西,而这些人很多都是大牛。不知道龙芯/龙梦会不会考虑这个方向。

本来我也想订一台,但是消息说两天就有超过1000人认购,就不想再凑热闹了,等下一拨吧。

如果想订可以发送邮件到 sales@lemote.com,并留下真实姓名、联系地址、基本背景(学生/员工,从事行业等),以及要求和建议。

2006年8月31日星期四

再看虚拟

今天在OSNews上看到一篇文章The Path to Linux Success,让我对Virtualization的用途有了一个新的认识。文中介绍了开源公司rPathrBuilder Online服务。这里涉及到一个概念Software Appliance,目前好像还没有标准的中文翻译,我把它翻译成“软件装置”。Wikipedia上有Software Appliance的解释。 大概意思是Software Appliance是集成打包了一个应用软件和与其相关的系统软件(包括操作系统、文件系统、应用服务器等等),可以很方面地安装到业界标准的硬件平台上 的软件包。当Software Appliance和相关硬件集成在一起推出时就叫作Hardware Appliance;当Software Appliance部署的目标是虚拟机时就叫作Virtual Appliance。

rPath提供自己的一个Linux发行版rPath Linux,主要用作Software Appliance中操作系统的那一部分。然后提供rBuilder将用户需要的应用程序比较方便的集成为Software Appliance。

最吸引我的不在于rBuilder如何工作,而是rPath提供的一些现成的Software/Virtual Appliance。例如LAMP Appliance就是将Linux、Apache、MySQL和PHP预先集成好,做成Virtual Appliance提供出来。用户只要把自己的LAMP Web应用放进去就可以直接在虚拟机上运行,不需要自己再去费时费力地安装配置相关软件了。类似的还用Browser Appliance、Wiki Appliance等等。

这里最主要的好处一个是方便,再一个是安全。 但是我还感到一个很实在的好处,就是迁移。我最近刚刚买了一个新硬盘。如何把现有的系统迁移到新硬盘上让我有些头疼。这里最大的障碍就是这个Blog系 统。Web Server、数据库系统都好说,重新装一次就是了。但是数据本身加上这些软件的配置就比较麻烦。其中有数据库文件,有上传到文件系统的用户文件,有后来 下载的主题和插件,还有散落在各处的配置文件,想毫无遗漏地理清迁移真得花不少功夫。如果是一个Virtual Appliance就没有这个问题了,所有内容都在文件系统里,而这个文件系统对外界来说就是一个磁盘映像文件。我只要重新装一个新的虚拟机软件,再把这 个映像文件复制过去就行了。

当然运行Virtual Appliance是有代价的,性能总会有或多或少的下降,对硬件的要求也要大一些,不过前景依然相当诱人。

2006年7月16日星期日

Scully on Rails,我的第一个Rails应用

这周完成了我的第一个Rails作品,我叫它Scully on Rails。

这个说起来还有点儿历史。我们的手机软件内部有个错误纪录系统。当出现重启之类问题的时候,会在文件系统中建立一个纪录文件。这个文件叫做X- File,是二进制文件,不能直接阅读内容。需要用工具将文件解码成文本信息,这个工具就是Scully。Scully是一个用Python写的脚本,各 种参数很多,使用比较麻烦。更麻烦的是,要解码一个X-File,还需要三、四个其他文件的支持以及另外一个分析工具,所以要把整个环境配制好,还是很费 功夫的。

所以我就考虑做一个Web应用,通过浏览器,将需要的文件上传到服务器,服务器在后台调用Scully,然后把得到的文本信息结果返回给用户,这样只要配制一套环境,大家就都可以用了。

Rails是以简单、快速著称的。但是真用起来,尤其是我这样的新手,还是有不小的门槛。特别是在几个问题上,我还是颇费了些功夫。

  • Form数据的传递。我比较喜欢使用比较低级的Form元素方法,诸如start_form_tag、text_field_tag之类。我觉得 它们能够提供比较灵活、快速的数据传递,不需要跟一个对象绑定,使用方便。但是上传的数据如何以何种形式存在params里,我却不甚了了,特别是 RadioBox。费了不少功夫试验。这里不得不抱怨一下Rails文挡,写的实在不怎么清楚;
  • 文件上传。对于不同大小的文件上传,Rails会产生不一样的结果。小于4k的文件,Rails直接生成一个StringIO的对象,大于的则生 成一个临时文件(Tempfile对象)。这种区别对于我的需要来说是很大的。我只要把上传的文件改个名字,然后拷贝到别的地方。这时候StringIO 就不很方便,还需要转换。关键是我起初并不知道有这样的区别,以为都是生成临时文件,走了弯路;
  • CSS的一个小trick也让我喝了一小壶。开始我把display: none;写到了CSS文件里面,然后用JavaScript写Element.show(’busy’),居然不起作用。试了半天才发现必须写成
  • 最后是一个目前没法解决的问题:Ajax不支持文件上传!这是JavaScript的限制,没商量。所以要做到漂亮的上传效果需要一些hack,不过我目前没时间弄。

总的来说,看多少资料也不如亲自动手做一个哪怕最简单的实例。

2006年7月13日星期四

RailsConf 2006

RailsConf 2006的Keynote视频已经陆续在这里贴 了出来,目前已经包括了Dave Thomas、Martin Fowler和David Heinemeier Hansson三个大牛的发言。我这两天都听了一下。有点意外的是,我听他们的发音都很轻松,只有Martin Fowler口音稍微重一点,但是也不难懂。还以为我的英语听力都殆尽了呢。

Martin Fowler一看就知道是一个老上台讲话的人,就准备一张小纸片,一边摸着胡子,一边讲,还不时灵活地翻着两个手腕。讲话中还以几天前在中国的见闻当作例子,可惜说的不具体。

没想到DHH的嗓音那么尖,嗓门也够大,还刚刚去了日本。前面Dave Thomas刚说Rails应该考虑企业用户的需求,加强对Legecy System的支持,例如Composite Primary Key。他就回应No Composite Primary Key,真不给面子!台下也跟着起哄。

这里列一些我听到的要点,备忘:

Dave Thomas:
  • Rails应该增加对企业用户的支持;
  • ActiveRecord应该直接从数据库表结构中的外键生成Model间的Relation;
  • Scaffolding应该能生成更有用的代码。
Martin Fowler:
  • Rails好就好在只专注做自己擅长做的事(database-backed web application);
  • 有时候在软件开发中,先射击后瞄准比先瞄准后设计要好,前提是子弹要够便宜。用户对一个已有(哪怕是非常粗糙)的实现的反馈比对凭空描述的反馈有 效的多。一个理想的软件开发可以是用户上午提出一个需求,下午就能给出实现让用户反馈,这样需要-实现-反馈的迭代快速进行,使用户真正全面地参与到软件 开发当中。这就是所谓Conversational Software Development。这里就需要软件工具提供快速开发的能力;
  • 软件工具应该是兼备开发快速和良好设计结构。
David Heinemeier Hansson:
  • CRUD应该成为Rails应用设计的一个度量指标。一个良好设计的Controller中的每一个Action应该是且仅是CRUD之一;
  • 未来的Rails将在URL做更多的文章,使其能跟CRUD一一对应起来;
  • 限制是一种解放;
  • ActiveResource将使用户能象ActiveRecord访问数据库一样访问其他Web应用的资源。

有很多内容,不能一一赘述,还是看视频吧。

2006年5月28日星期日

ez-ipupdate的补丁

因为这个Blog是在我自己的机器上运行的,所以为了动态域名的问题头疼了一阵。忽然发现国外的大多数免费DDNS在国内都基本上不可用,不愧是Great Firewall。而国内的免费DDNS我也只发现了3322和花生壳。

花生壳自己有一个Linux的客户端,二进制代码的,自己安装,不大合适我的Gentoo Linux。

只剩下3322了,他们倒是提供了一个修改过的ez-ipupdate,好处是提供源代码(当然,从License的角度看,这是必须的),所以为了适应Portage里的现有版本(Portage里的版本比3322提供的要新),我参考3322的源代码自己做了一个补丁:ez-ipupdate-3.0.11_beta8-qdns.diff.gz。修改主要是用ez-ipupdate 3.0.11里的相关数据结构改写3322增加的服务器信息和一点autoconf与automake的脚本。

当然最后我发现ez-ipupdate根本不适用我的情况。因为的机器是运行在一个路由器的后面,而ez-ipupdate会把我机器在局域网内的 IP地址注册的DDNS上,完全是驴唇不对马嘴。不过多亏3322提供一个简易的用lynx注册的方法,所以我只要没次开机的时候自动运行一条命令就可以 注册了。这就是现在看到Blog的域名,总算没白折腾。

2006年3月21日星期二

RoR + AJAX + Eclipse + 非Windows

从上学以来对Java兴趣已经快消失怠尽了,没变的是反M$的情绪。技术总是要赶时髦的,关键是时髦的东西太多,不可能都赶。所以一个可能比较好的办法就是选取一套完整互补的技术集合作为目标,这样可以兼顾技术宽度,又可以深入一两个方向。

我考虑的是:Ruby on Rails (RoR) + AJAX + Eclipse + 非Windows。

  1. 非Windows, 很容易理解,就是任何一个不是M$的操作系统,最可能的当然还是Linux。幸好现在大多书可以选择的非Windows系统,包括我的Mac OS X Tiger,从应用的角度看都是相通的。我指的主要是Shell。能够熟练的使用Bash,编写几个小规模的script,已经满足的需要了。
  2. Eclipse,很好的开发平台,尤其是一些为非Java应用开发准备的插件,更是Eclipse比竞争对手强的方面。RDT、RadRails、ATF正好满足RoR+AJAX的需要。
  3. RoR + AJAX,时髦中的时髦。符合敏捷开发的理念,还能做出很酷的效果,是通向Web 2.0的金钥匙。这里贴出一个链接: