Open source for a purpose

我花了一年多时间写了一个 branded made to order 的程序。整个结构多次变化,经历了多次从繁到简,再到繁,再到简。直到今天,结构变得非常简单、却能应付不预知的复杂行业。

刚开始写时,我也没想要写一个行业无关的程序,只想有一个能用在我所在的行业就可以了;我也没想结构可以重构得如此简单,如果跳过过程看结果的话,10 分钟(不夸张)就可以读懂结构,只有我自己知道这样的结构是凭无数次的灵感堆积起来的。

言归正传,这个程序设计成 magento module,最初我也想开源发布的。但时至今日,我想敝帚自珍了。我本身非常崇尚开源,这是我第一个不想开源的程序,为什么我有这样的想法?我演绎了一下:

  • 开源项目都有使用门槛,人人会用的项目就不开源了;
  • 就如,谁都预测不了彩票,所以才有这么多的彩票预测公司。

Tough Parallels Plesk

Parallels Plesk 对我来说是鸡肋。1&1 送了这玩意一年的许用证,一年以后我还用 1&1 吗?我如果用了 Parallels Plesk 就怕象吃鸦片上瘾,以后如果离开 1&1,别人家如果不送 Parallels Plesk 就要花钱买,那时我会觉得很懊恼。

1&1 既然送了 Parallels Plesk,我也在 Parallels Plesk Panel 里转了一圈,觉得它算是一款好的商业软件,只不过不对我的胃口罢了。正因为如此,我没删 Parallels Plesk,只是将 psa service 停止了。

如此相安无事过了几个星期,今天突然发现 opentaps 不能启动了。一查,8443 端口被占用了,我马上想到是 Parallels Plesk 又复活了,难道 psa 还有一个守护进程?Parallels Plesk 这么设计大概为了保证 Panel 的 up time,但有点病毒作风,再加我也搞不清它的机理,看来要把它删了一了百了。

Obama and firefox

我很难理解某位编辑的逻辑。他的一篇文章,介绍 Firefox 的新功能,却从奥巴马任命 Vivek Kundra 为 CTO of US goverment 开始说起,然后又用奥巴马结尾。

奥巴马成为美国历史上首位黑人总统,这次惊动了整个世界的美国总统竞选,已经在长达一年多的时间里给人们的观念带来了冲击和改变!而给你的电脑换装,使用开源浏览器Firefox(火狐),这一点点改变不仅意味着你已经采取了支持开源软件的行动,更意味着你开始接受开源的观念!

奥巴马和 Firefox 有联系吗?太牵强了。

Magento speed optimisation

诚然,我接触Magento时间不短了,但直到最近才开始研究Magento的速度,因为我的一个Magento项目已经上马了。

通常Magento要比Zencart, osCommerce, VirtueMart for Joomla跑得慢,但这个没有吓退我。我坚信Magento是我的方向,是因为Magento的ecommerce功能是其它软件望尘莫及的,况且我拥有让Magento加速的硬件资源。(这世界上没有什么是最好的,适合自己的就是最好的)。

我认为选择Magento,首先得有一台独立服务器。虽然我曾成功地在shared hosting环境里运行了Magento,但一个没有速度优化潜力的Magento,就算能跑,又有什么用?Magento内置了很多SEO特性,但如果页面loading time过长,Google也不会喜欢。VPS理论上也能为Magento做速度优化,但一台入门级的独立服务器与一台高性能的VPS价格相当,我会选择前者,以确保所有的优化可能。

其次得有1G以上内存,CPU差一点没关系,因为Magento的速度瓶颈在硬盘,优化手法中很多就用内存代替硬盘。

有了以上两个硬件资源,剩下的就是进行一些软件环境设置。

首先,得是Linux环境。我不是说Magento在Windows下跑不起来,我是说网上大部分建议都是针对Linux提的,除非你有一个Microsoft专家在你旁边,每当你给他一个Linux配置文件,他能为你写一个Windows下的对应文件。

其次,给MySQL Server分配更多的内存。

再次,启用Cache。Cache分三种,一是Magento data cache,Magento系统菜单的Cache Management指的就是这个,默认已经启用。据我观察,data cache单独使用时,对速度提升没多大帮助。二是Linux in-memory file cache,把magento/var/cache指到或软连接到tmpfs。三是php byte cache,开源世界里主要有三种选择,php APC, eAccelerator, xCache。孰优孰劣尚无定论,我看了一些测试结果,我的结论是:小访问量时选php APC,访问量达到负载容量50%以上的选xCache,Magento的开发小组说eAccelerator在处理magento异常时会出错,我就把它剔除了。

如果以上优化都做过了,速度应该很理想了。经济条件许可的话,买多点内存,搞个SCSI, RAID硬盘,换个四核CPU,我就不信Magento会比谁慢。

Find more software, use good software

最近在找一些开源的面向业务的解决方案,一时还没找到,倒是又发现不少以前不知道的软件,有的开发得很精致,让人叹为观止。

同时又看到一些很垃圾的、但名气又很响的、让不懂行的人趋之若鹜的商业软件,想想很不服气——凭什么让这么多人上当?

找着找着,脑袋里突然冒出冰心老人说过的话:多读书、读好书(全句是读书好、多读书、读好书)。我想套用一下:多找软件、用好软件!

PhpList Can Work With SSL POP

想要phpList process bounce messages,邮箱却只支持SSL POP (port 995, 如gmail)?没问题。

config.php 作以下设置:

$bounce_protocol = 'pop';
$message_envelope = 'username@gmail.com';
$bounce_mailbox_host = 'pop.gmail.com';
$bounce_mailbox_user = 'username@gmail.com';
$bounce_mailbox_password = 'password';
$bounce_mailbox_port = "995/pop3/ssl/novalidate-cert";

我本还担心phpList 不能从gmail上pop出bounce messages,正想着去专门建一个未经SSL处理的POP邮箱,没想到phpList轻易就达到了我的要求。

另外我还发现,按照phpList自己的说法,php必须运行在safe_mode off的环境下才能让phpList 处理bounce messages,但我亲身实验结果显示safe_mode can be on.

Use Analytics to Track Newsletter Open Rate

I realise it is NOT possible to use Analytics to track newsletter open rate. Because:

  • To track if an email is opened, you put an invisible image into the email with img src calling a tracking program.
  • If you put a web page url as img src, the javascript of the web page won’t run.

So, in order to track newsletter open rate, you must point img src to a server-side tracking program. Analytics won’t fit for this job because it is client-side script.

Actually, tracking newsletter open rate is very easy with phpList, which I have been using for long. Simply to [USERTRACK] into the body of the email.

Magento修改了ZF源码

Magento出了1.1,看上去好多了(之所以这么说,是因为我还没怎么用)。但有一点不值得赞赏:Magento更正了Zend Framework Currency的一个bug,是直接改了Currency.php。但是我的ZF外挂在Magento外面跟其他应用共享,Magento自带的ZF被我删掉了。我看了看ZF最新版,并未涉及Currency.php的改动,可能这个fix不重要吧。

Open Source with Commercial Quality Assurance

我在VMWare Server下装linux,屡装不成,令人气馁。

很早就想装个Fedora,因为Godaddy给我的服务器用的就是Fedora, 一直很稳定,所以我想桌面上也装Fedora,可以多了解Fedora习性,从而多了解我的Fedora Server。从Fedora 6开始,我就尝试着在VMWare里安装。结果Fedora 6没能装上VMWare Tools,我没怎么用。Fedora 7根本就安装不成,症状是找不到VMWare默认的SCSI硬盘;我按别人的推荐换上了IDE硬盘,但更糟,安装一开始加载驱动就死在那里;又有别人建议在虚拟机里安装linux要安装到物理硬盘,那要虚拟机来干嘛?我怕麻烦,不想试下去了。现在Fedora 8也有了,Fedora 9 Alpha也有了,我正在下载。如果最新版的Fedora再装不成,那我彻底对Fedora失望了。

回想Windows在VMWare下安装很顺利,Redhat Linux安装也没碰到问题,SCSI或IDE硬盘种类选什么都可以,同是Redhat公司推出的开源版本Fedora就这么折腾人?我不怀疑满足特定硬件要求的Fedora可以跑得很稳定,就如你正看着的blog用的server,但Fedora的兼容性实在不能恭维。其实Fedora不是一个特例,我在VMWare试装好几个基于linux的LiveCD,一个没成。如果哪一天真要启用这些开源产品,那我还得花钱买Commercial Support,这样,开源的优势就抵消了很多。

综上,既是开源,又有达到商业级的质量保障(这里我主要指兼容性好,让用户省心),才是我希望见到的软件。

7zip支持rar啦

很久没有关心7zip了,以前下了432版本不支持rar格式的压缩文件,而rar又是这么流行,我当时只能放弃7zip。为什么7zip不能支持rar呢?7zip的解释是rar不公布它的压缩算法,所以7zip没法支持rar。

最近偶然想起,去下了7zip最新版457,发现它开始支持rar格式的压缩文件了,看来7zip买到了rar的算法,或是rar公开了算法。不管怎样,7zip终于能满足我对解压的要求,所以7zip以后就是我的装机必备软件了,winrar退出了历史舞台。

话说回来,对比winrar,7zip还有一个很主要的缺陷:用7zip打开一个压缩包,想要直接双击运行压缩包里某个文件,而如果这个文件需要运行时需要压缩包的其他文件(比如,.exe附带.dll),7zip就会提示说某个文件没找到。原因可能是7zip处理不好解压后临时目录下的文件, 这时一定要完整解压压缩包里的所有文件到某个非临时目录,然后才能使用其中的文件。winrar就没有这种hassle。但是为了支持开源,我忍了。