Category: Opensource

  • Zimbra终于出问题了

    keys: ubuntu zimbra 451 4.0.0 周末在加班中度过…… 2个月之前,由于ubuntu6不支持intel965(当时fedoracore6也不行),我不得不装了ubuntu7beta,并在其上安装zimbra。一直平安无事,但是上周六ubuntu的文件系统突然报错了,还好,重启之后我用fsck修复了文件系统,并庆幸这不是个硬伤,不过zimbra似乎受到了影响。 80封邮件挤在deferred队列当中,进不去信箱(只是几个人的信箱有此问题),log中全是451 4.0.0。我先备份了zimbra,然后小小升级(4.5.4->4.5.5),症状依旧。然后按照搜索结果的指点,我运行zmfixperms修正文件夹归属问题,也没解决问题。 最后,恰好有个系统账号也在问题之列,我重建了这个账号,结果故障就排除了。于是把所有有问题的账号都重建一次…… 问题就这样解决了,真是失望啊。

  • 小试rails当中对多重选择表单的处理

    keys: ruby rails multiple checkbox 今天上班给老板写个项目销售管理的小东西,其中涉及到多重选择的处理。目前感觉rails在这方面相对弱,也许因为rails在其它方面太强了吧。总之,对于用rails处理multiple checkbox,还真需要些基础知识。 例子中的任务是为一个项目project指定人员user_file,这显然是一个N对N(HABTM)的关联,按照David的建议,我把关联表project_user_map也作为实体处理了。 介绍一下模型 model: class Project … has_many :project_user_maps end class ProjectUserMap belongs_to :project belongs_to :user_file end class UserFile has_many :project_user_maps end 先说view: <% form_tag :action => ‘edit_member_2’, :id => @project do %> <% for user_file in @all%> <%= check_box_tag( ‘selected_file_ids[]’, user_file.id, @members.include?(user_file))%><%= user_file.name%> <% end %> <br/> <%=…

  • 免费的正版之路 II

    我的免费软件之路还在继续。这次针对的是编辑文本、看图、做PDF和压缩归档几方面的应用。以下几个软件都是在WindowsXP系统使用的。 编辑文本,windows下面有notepad和wordpad,但是都不怎么好用对吧。我原来喜欢ultraedit,可是这个毕竟是共享软件,过了试用期就要选择卸载、购买或者破解。现在我改用notepad++了,基本符合要求。如果有一天ultraedit成了免费软件,我还会考虑它的:) 看图,同样,windows自带的东东基本没啥用。acdsee不错,不过出乎我意料的是faststone这个免费软件却更加方便好用! 看PDF可以用免费的Adobe acrobat reader,做PDF一样可以免费:primoPDF。这个安装之后系统会多一个叫做primoPDF的打印机,理论上任何文档“打印”到这个打印机上,就成了PDF了。目前有个缺点就是生成PDF的文件名不是根据源的名字来写的,需要手工改。其它方面应该没问题。 压缩归档。WinRAR我一直用,惭愧,一直也没买:) 现在改用ZipGenius了。对于喜欢简约风格的朋友,7-zip更好用些。 以上链接都是软件娘家的网址,不一定是中文的。相信仔细一搜,你就能发现很多中文网址。不过国内网站江湖险恶,要小心。

  • Zimbra之黑名单白名单

    不得不说,Zimbra是个卓越的Email解决方案,但是Zimbra肯定也有不足的地方,不能在admin界面设定白名单黑名单(trusted domain/blocked domain)就是缺点之一。于是我陷入了困境:其他分公司和总部发给我们分公司的邮件,甚至是总部老板的邮件,被列入废件……汗啊……于是赶紧行动吧。 Zimbra的社区是晴朗的社区,Zimbra社区的人是热心的人。不到5分钟,对,不到5分钟就有人回复了我解决方案,大家分享一下: 编辑/opt/zimbra/conf/amavisd.conf.in 寻找 { # a hash-type lookup table (associative array) ‘nobody@cert.org’ => -3.0, ‘cert-advisory@us-cert.gov’ => -3.0, ‘owner-alert@iss.net’ => -3.0, ‘slashdot@slashdot.org’ => -3.0, ‘bugtraq@securityfocus.com’ => -3.0, ‘ntbugtraq@listserv.ntbugtraq.com’ => -3.0, ‘security-alerts@linuxsecurity.com’ => -3.0, 段落,然后加上你要信任的域: { # a hash-type lookup table (associative array) ‘zimbra.com’ => -10.0, ‘nobody@cert.org’ => -3.0, ‘cert-advisory@us-cert.gov’ => -3.0, ‘owner-alert@iss.net’ =>…

  • WordPress改版手记

    今天很有成就感,我把内森忽悠的也来玩Wordpress了。比起blogger、sina、sohu等现成的blog套餐,Wordpress就是个性DIY了。这里不谈Wordpress的安装等问题,只说说如何改版。 首先,虽然是DIY,但是我们没必要重新发明轮子,去WordPress官方布景站去搜一个合个性的布景吧。 下载以后,把这个.zip文件解压缩到你的Wordpress布景文件夹,wp-content/themes下面,例如wp-content/themes/mytheme。Linux主机的话要记得chmod一下,使mytheme文件夹可写,这样以后你只需要wp-admin就可以修改布景了。 然后进入wp-admin,点开presentation->themes,如果文件夹没放错地方,那么这里应该出现你刚才上传的新布景了,一般还有预览图片呢。点击新布景,再看看你的WP站,已经旧貌换新颜了。接下来是一些DIY了。 布景DIY其实就是编辑HTML、CSS,有一定PHP基础的你可以做更进一步的定制,显示一些原来模版上没有的东西。具体如何修改HTML、CSS,这个就不是几句话说得清楚了,我这简单说说WP布景各部分的功能: Stylesheet就是CSS了,现在绝大多数风格,例如背景色、前景色、字号、间距等等都在CSS 里做了 sidebar是右侧栏模版,一般显示blog分类、日历、归档等等 main index就是首页的模版 archives:归档页面模版 comments:评论模版 footer:页脚模版,一般是版权信息等等,powered by wordpress! functions.php:这个是布景调用的php函数,轻易不要动 single post:点击一篇文章进入的单页的模版,类似main index,只是少了一层循环 404:页面未找到错误的页面模版 search results:搜索结果页面模版 page template:自定义页面,例如about,的模版,也类似single post header:页首模版,一般是标题、导航所在 好了,最后记得在开始修改之前把原来模版内容先复制到本地,例如notepad里面,以防不测哦。

  • 牛刀小试RegEx

    RegEx中文叫做正则表达式,虽然不是很新的东西了,我很纳闷我居然是才开始了解它。在数据库中查询keyword一般是写成 select * from tablename where columnname LIKE ‘%keyword%’ 而java我记得不是很清楚了,大概是 if(myString.indexOf(keyword) != -1){ //do things… } 这个只是简单匹配,如果有复杂要求就要写多得多的代码了。例如判断keyword是否是一个数字开头,紧跟1个小写字母,跟随若干数字,最后以”pattern”结尾等等,就不是一行代码能写出来的了。对于上例,RegEx+Ruby的写法就是 if keyword =~ /^\d[a-z]\d+pattern$/ #do things end 上式中,//是RegEx的边界,类似””是字符串的边界一样。接下来^代表匹配的开始;\d代表数字,就是0 – 9;[a-z]就是一个从a到z的小写字母了;+是后缀,表示1个或多个,因此\d+就是1个或多个数字的意思了;最后作为关键字的pattern直接写上即可;$代表匹配的结束。 更灵活的应用就是|符号和()括号了。例如判断文本是否包含x或X,RegEx就可以写 /x|X/ 如果要判断文本是否包含多个连续的x或者X,例如xXX、XxX,RegEx就可以写 /(x|X)+/ 如果要判断文本是否包含XXX、XXXX、XXXXX,RegEx可以写 /X{3,5} / 目前的了解就是这么多了,不过以上这些组合起来应该已经可以应付很多种情况了。继续学习。 UPDATE: Regex tutorial from guru99.com

  • 免费的正版之路

    首先,从道德上来讲,破解正版软件是偷,而购买使用盗版软件就是替贼销赃了。是的,正版软件价格不低,不是每个人都能承受的。但是这世界上诱惑你的好东西多的是,难道买不起了就可以偷么?好在我们还有很多免费的选择。 首先,操作系统有很多免费选择:Ubuntu、FedoraCore、Mandriva、OpenSuse。这些都是Linux,老眼光可能认为Linux是高手用的,但是现在的Linux桌面版确实是面向普通用户的,简单的安装,甚至光盘即可运行。中文支持也不再是问题,不需要自己再安装输入法之类的东西了。看资讯、聊天、收发邮件、看视频等等都是小菜一碟了。Mandriva更是有了Vista才有的3D桌面(这个我还没试过,只是看了截图)! 其次,OpenOffice!虽然开源软件往往不如商业软件(MS Office 2007)花哨体面,功能也要差些,但是看在免费的份上,一俊遮百丑吧。OpenOffice支持MS Office word/excel/powerpoint/access的文件格式,可以双向互通。 Mozilla FireFox & ThunderBird!这对兄弟非常了不起,不仅开源免费,而且胜过商业软件(IE & Outlook) 。有人说,IE也是免费啊,嗯,IE7需要正版Windows才能使用。FF的快捷和安全,用过的人都知道。而TB的内置垃圾邮件过滤每天都帮我挡住上百封垃圾邮件。 杀毒软件:Anti-Vir。只有2个缺点:没有中文版、更新时打广告。记住,只有2个缺点。谢谢Mr徐补充, avast确实不错, 也是个人使用免费的, 用email注册一下就可以了, 而且有中文版, 功能也更全面. 绘图软件:Paint.NET,只有3MB的身材,功能却相当全面。 免费的好东西还有很多,我这抛砖引玉了~

  • Zimbra与中文!人人为我,我为人人

    我这实战Zimbra Collaboration Suite(ZCS)差不多已经一个月了,结果很理想,不愧是包揽众多奖项的大作!当然,大作并非就完美,界面的翻译仍旧需要改进。好在我不惧英文,于是自然的开始参与到界面的翻译工作中了。 之前nxzwt已经翻译得很好了,我基于他的工作成果,继续前进了。修改了几个地方: snooze,原来翻译为打盹,字面上不错,但是作为事件提醒对话框上的按钮,我觉得还是翻译为“延后提醒” 比较直观。 free,原来翻译为免费,字面上也是不错,但是在日程表语境中,翻译为“空闲”更好。 dismiss,原来翻译为解雇,我也没找到理想的翻译。毕竟在事件提醒对话框中,我改为“去除”,因为去除提醒比解雇提醒稍好了。抛砖引玉吧。 另外再说具体一下如何将翻译结果应用到ZCS的web client。 首先,ZCSWC是以java为平台的。java可以说是国际化(I18n)的先锋了,但是java支持I18n的方式并不简单。下面是步骤: 下载我做的翻译文件 确认你有JDK,没有的话去java.sun.com弄一个 利用JDK工具native2ascii native2ascii –encoding=gbk ZmMsg_zh_CN.properties.txt ZmMsg_zh_CN.properties 把生成的.properties复制到 /opt/zimbra/tomcat/webapps/zimbra/WEB-INF/classes/msgs 重新启动tomcat服务 这样应该就可以看到中文界面了。 既然已经做了这么多,我希望更多的人能分享我的工作成果,也希望更多的人参与到此项目中来。人人为我,我为人人。