Category: Opensource

  • FireFox、Zimbra和Java

    使用Zimbra后,我发现IE下很自然就是中文界面,而FF却屡次显示英文界面,即使我手工选择encoding也不行。难道FF出了问题? 经过比较,唯一的区别在于,我的FF是英文版的。想到Zimbra的webmail是使用java/j2ee技术开发的,因此Zimbra会根据用户客户端的缺省语种而显示相对应的界面语种,而且Zimbra没有内定的缺省语种,所以……我只能说FF和Zimbra都太客气了,谁也不愿意作出这个决定。 于是,我只好手工将FF的Prefered language设定为Chinese,问题迎刃而解;-)

  • 梦想成真:用idea开发ruby on rails

    用java做东东的朋友应该都知道JetBrains(下简称JB)和他们的杰作IntelliJ IDEA(下简称IDEA)。JB的口号是develop with pleasure,快乐的开发。而rails的口号是web development that doesn’t hurt,这个不大好直接翻译了,不痛苦的web开发?HOHO,现在是快乐+无痛苦了,因为IDEA的新插件支持rails开发了。我睡觉都要笑醒了。 此插件的链接在此 。主要功能如下: keyword completion,关键字辅助完成 syntax highlighting,句法高亮显示 on-the-fly code validation,即时代码检验 error highlighting,错误高亮显示 Rails templates and generator integration,模版、生成器集成 最后,IDEA开放了开源软件许可,就是说,如果你手头有个开源项目,有项目网站、活跃的项目论坛,那么你可以申请免费的IDEA许可!省了400多美刀哦~ 我也要建个项目:-)

  • 几张Zimbra测试截图

    把我刚工作时买的PIII 700用上了;-) Zimbra在此老爷机上运行果然缓慢,不过大致效果可以看清楚了。 简体中文哦,很不错吧;)

  • 我在WAMP里翻船了

    如果你知道LAMP,那么你肯定也知道WAMP:A=Apache httpd, M=Mysqld, P=PHP;那么L自然就是Linux,而W就是Windows了。 也许这是唯一一处在linux上易于windows上的应用。linux几乎都可以在装机时用几个勾选搞定AMP,即使没有(ubuntu?) ,几个apt-get install命令就搞定了。昨天我破例想在一台winxp上试试AMP,于是下载了A、M、P以后开始典型的windows软件安装:点击下一步,下一步……完成。按说也很简单么,只是点击而已,但是开始安装一份PHP应用:Joomla时,Joomla提示没有mysql支持! 这是我平生头一次看到PHP下不支持mysql! 别担心是我的错误,PHP5缺省安装的确不支持mysql,但我是非常讨厌缺省安装的,所以特意勾选的php-mysql的extension。没办法,挨个检查吧: php.ini 无错! httpd.conf 无错!! PATH 无错!!! 但是问题依然在。我只好求助google和baidu,相关内容很“丰富” 。看来问题还是出在PATH上了,尽管我的PATH是正确的。突然我明白了,这是windows,装完软件得restart才行^o^果然,重新启动之后一切正常了。 后来,发现有一款软件就叫WAMP,更加简化了AMP在windows下的安装,只是暂时没有必要去测试了,也不知道装这个WAMP还需要重启否。

  • 开始试用Zimbra,开源的Email/Groupware Server

    说来话长,自从2000年开始接触java、2002年开始接触linux,我就喜欢上了开源的东西。这次考虑要为公司部署功能更强的Email服务器了,我便开始了网上搜索。 关键字:opensource,email,server。结果自然一大堆。后来,当zimbra出现在我面前时,我感觉这个就是我要找的东西了。还等什么呢,动手开始安装吧:) 首先,下载zimbra 4.5 opensource edition。既然有ubuntu版本,就下载ubuntu版吧。一如既往,国内没有镜像,只好从国外镜像下载了:( 安装似乎应该很简单,但是实际上还是出了问题: 1,/etc/hosts文件要修改,修改完之后记得用hostname –fqdn命令测试,如果结果不是预期的,可以尝试删除多余的host定义。 2,/bin/sh。ubuntu6.10中,缺省/bin/sh -> /bin/dash,而不是从前的/bin/sh ->/bin/bash了,因此会引发一个貌似不相干的slapd启动错误,因为试用dash的话会在生成cert时出错。解决方法:zimbra论坛上自然已经有了:) 而且熟悉linux的朋友应该自己也想到了,那就是>rm /bin/sh; ln -s /bin/bash /bin/sh。 做好这2个修改之后,重新运行install.sh,大功告成!!!我先去试试,再写用后感:) 后记, 关于中文界面: zimbra的webmail是使用java编写的, 所以天生的具有multilingual资质了. 感谢nxzwt, 翻译了webmail部分和webadmin部分的语言包. 链接在此.

  • 地震、海底光缆及尴尬的中国开源者

    我使用开源软件的经验不算多,但是我相信中国的很多开源爱好者会有和我类似的感触。 2006年底,台湾海域的地震,让人们感觉到了互联网的脆弱。在这次地震中,中美海缆、亚太一号、亚太二号海缆、FLAG海缆、亚欧海缆、FNAL海缆等多条国际海底通信光缆发生了中断。一时间,台湾,韩国,日本,菲律宾,甚至连印度的呼叫中心都受到了麻烦;在中国,几乎所有的美国网站以及服务都无法服务,有些网站虽然可以勉强登入,但速度变得慢如蜗牛。--人民网 这其中,包括ubantu、rubyonrails、joomla等等。下载这些东西变得艰辛,我甚至不得不半夜爬起来试试运气,仿佛又回到了1998年 28.8k小猫的年代。国内有很多关于开源的站点,但是往往没有深度,蜻蜓点水般的放些内容,点到下一个链接却又是指向了国外。 如果我有服务器,有线路,我愿意做这个镜像,做dist,做svn。但是我没有,而且我也不能把有限的收入投入到这个貌似没有回报的计划中。也许,这也正是其它人没有去做这个镜像的原因吧。也许,发展经济就是这样一个硬道理。

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

    几个关键字: 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…