Author: 芳草苑主

  • Expires affects Firefox

    我把 Magento 网店从 A 服务器迁移到 B 服务器后,发现一个问题:在 Firefox 下点 “Add to cart”,无论添加是否成功,系统没有提示(购物车有个选项是添加商品后留在当前页面),非得 F5 刷新后才能看到成功或错误信息。Safari 下正常,IE 下未实测。

    我原以为是 Magento cache 的问题,但禁用 Magento cache 后问题依旧。而且,只有 B 服务器才有这样的毛病。想来半天,觉得跟服务器参数有关。

    于是我查看了 Magento 在两台服务器的 http header,发现 B 服务器多了 cache 和 expiry 等 headers。这才特别关注了一下 nginx 的配置问题,发现 B 服务器的 server {} 里有一句 expires 1d; 不知这句是谁写到 nginx conf 文件里。这指名 Firefox 直接从本地读取,除非 F5。去掉 expires 这条目就好了。

  • Software navigation refactoring

    回国看到老爸在用的一台电脑被一些流氓软件侵袭,深受其害。IE被篡改,连正常的网站都访问不了,我很痛恨。我又看到很多上网导航有误导之嫌,有那么多优秀的开源网站不去导,根本不符合我的网络价值观。所以,我也想倡导一下我的导航概念,帮助新手选择常用的软件。

    安全杀毒

    使用Windows,杀毒软件是不可或缺的。我个人认为卡巴斯基是最强的,但其他杀毒软件也不错,选什么不重要。我喜欢卡巴斯基和F-secure,很大程度上是因为他们向我校师生终生免费授权。

    另外,在免费的世界里,还有AVG和Avira AntiVir两个选择。但如果你是完全意义上的新手(没有基本的防护意识,完全依赖杀毒软件来保护你),那不要贪图便宜,免费版功能不够全面,不适合你。尽管AVG和Avira AntiVir也有商业版,但我没用过,商业版还是去买卡巴斯基或F-secure吧。

    瑞星杀毒
    可免费使用六个月,国内占有率第一的杀毒软件。
    卡巴斯基
    来自俄罗斯的个人电脑安全软件,功能强劲。
    NOD 32
    国际知名的杀毒软件,占用内存资源较少。
    江民杀毒
    老牌杀毒软件,下载版可免费试用100天!
    金山毒霸
    金山毒霸具有三维一体的互联网防御体系。
    诺顿杀毒
    诺顿可以让你免受病毒、间谍、恶意软件的侵扰。

    木马插件查杀

    我认为有一款好的杀毒软件足矣,不需要专门的木马查杀软件。对一个软件要知根知底才能指望它来保护你,国内的流氓软件无处不在,多装一个软件就是多一分危险。

    瑞星卡卡
    具有反木马、广告拦截、插件免疫等功能的安全软件
    360安全卫士
    拥有查杀流行木马、清理恶评及系统插件等功能。
    金山清理专家
    查杀300多款恶意软件、插件的上网安全辅助软件。
    QQ医生
    针对盗取QQ密码的木马病毒的专杀工具!
    木马克星
    可查杀三万木马,让木马无处可逃的木马克星。
    超级巡警
    查杀并可辅助查杀各种木马、流氓软件和恶意代码等

    聊天工具

    聊天就是聊天,能打打字,最多传送一下语音和视频。Gtalk在这方面是最强的,安装程序短小精悍。如果你只需要文本聊天,甚至不需要安装软件,直接用Gtalk host模式在gmail,igoogle或自己网页里聊。如果你的朋友横跨gtalk, qq, msn, yahoo, icq, aol等,使用多合一的pidgin或Fring也不错。Pidgin和Fring没有眩目的广告,让你做到聊天就是聊天。

    如果你追求等级积分,还会花钱去买皮肤什么的,那就是被IM公司牵着鼻子走了。在我看来,买这些增值服务跟打声讯聊天热线去烧钱没啥区别。

    腾讯QQ
    用户最多的即时通信(IM)软件,绝对的装机必备!
    腾讯TM
    腾讯推出面向办公用户的IM软件,适合办公一族。
    微软MSN
    微软出品的IM软件,深受办公白领人士钟爱。
    移动飞信
    飞信可以免费发短信,是中国移动推出的一款IM。
    阿里旺旺
    将淘宝旺旺与阿里巴巴贸易通整合在一起的新IM品牌
    TOM-Skype
    Skype是全球最清晰的网络电话,并具备IM功能。

    Skype是voip解决方案中名气最大的,但绝不是最实惠的。如果你耐心google一下,相信会找到替代方案,不乏语音质量超好的voip provider。

    下载工具
    迅雷
    基于P2SP技术的下载软件,下载速度强劲!

    我从来不用迅雷,主要因为我听到的对迅雷的评价都是负面的,可能先入为主了。还有一个原因是迅雷不会走出国门,因而也无缘我的shortlist。
    网际快车
    全球最多人使用的老牌下载工具。

    以前拨号上网的年代用过网际快车,现在似乎没有它的用武之地。它的广告也很烦人。
    腾讯旋风
    QQ旋风是腾讯公司推出的下载工具,界面清爽简单。

    绝不会装的一个软件。
    VeryCD电驴
    基于eMule,由VeryCD团队开发的一个电驴下载软件。

    很不错的软件。我也很欣赏 verycd.com,高可用性,堪称中国 web 2.0 的典范。偶尔一句“打死也不出弹窗”的title 让我为之喝彩许久。
    BitComet
    基于BitTorrent协议的高效p2p文件分享免费软件。

    如果你还在找bt软件,那就用BitComet吧。我是说很多硬件都固件支持bt了,可以优先考虑。BitComet也支持ftp多协议,备着它也许是明智的选择。
    Vagaa哇嘎
    多点对多点共享软件,对下载等资源有很好的支持。

    我没听说过,更没用过。

  • Self-contained form

    Self-contained form
    Self-contained form

    视表单为一个对象

  • Knockout background using Photoshop action

    Knockout Background Using Photoshop Action
    Knockout Background Using Photoshop Action

    抠图是我最不想干的活。

  • 黄飞鸿92从何而来

    Internet 会以讹传讹。

    我最近关心了一下李连杰,发现很多处提到一部《黄飞鸿92之龙行天下》,但细究之下,发现这个名字有点莫名其妙:故事情节跟黄飞鸿无关,李连杰只在1989年拍过《龙行天下》。

    黄飞鸿92之龙行天下,不知是谁首先造出来的。

    另外,我觉得大家对电影黄飞鸿系列的排法也比较乱,众说纷纭,我理了半天才理出头绪。我猜想,刚开始拍黄飞鸿第一部时,制作方可能没想到要拍这么多部续集,所以落下冠名比较混乱的毛病。我认为应该以徐克导演为线索定出:

    • 黄飞鸿1:壮志凌云 (1991)
    • 黄飞鸿2:男儿当自强 (1992)
    • 黄飞鸿3:狮王争霸 (1993)
    • 黄飞鸿4:王者之风 (1993)
    • 黄飞鸿5:龙城歼霸 (1994)
    • 黄飞鸿6:西域雄狮 (1997)

    另有一部王晶导演的《黄飞鸿:铁鸡斗蜈蚣》不应归于以上系列之中 (有人称之为黄飞鸿7)。它虽是同为李连杰主演,但完成于1993年,排为黄飞鸿7肯定不合适。既然不同导演就不同风格,就没必要归到另一系列中了。

    《黄飞鸿4:王者之风》和《黄飞鸿5:龙城歼霸》不是李连杰出演黄飞鸿,但我还是坚持以导演为线索定系列。

  • My worry about Linksys wireless security

    前文提到 Linksys IP Camera 只能连入 Linksys wireless router,一开始就不喜欢厂家设置人为技术障碍的做法。细想之下,更觉得 Linksys wireless 安全机制堪忧。

    因为 Linksys WVC210 wireless IP camera 在设置无线联网时,只问一个 SSID,只要是 Linksys wireless router,不需密码就自动联入?如果是别人家的 Linksys wireless router 怎么办?虽然我凭着一个 Linksys WVC210 wireless IP camera 也控制不了别人家的网络设备,但如果我能对 Linksys WVC210 wireless IP camera 进行编程,是不是就相当于在别人家放置了颗隐形炸弹?Linksys wireless 或许有它独到之处,或许能隔离自动联网的设备,但我总觉得 wireless device isolation 不如直接用 password 来得更安全(至少心理上更舒服)。

  • Linksys WVC210 wireless IP camera review

    最近购入 Linksys WVC210 wireless IP camera,用了几个小时后,来抒发一下感想。

    Linksys WVC210 IP camera
    Linksys WVC210 IP camera

    首先来谈谈对家用 IP camera 这类产品的看法。人的欲望是层出不穷:没有电脑的时候想要台电脑,有了电脑想要网络,有了电脑和网络却想不坐在电脑前就能远程互动,于是就有了 IP camera 的市场。所以做产品不一定要做全能的(比如带摄像头的电脑能执行 IP camera 的功能),但一定要做在合适的时间和场合提供合适的功能的产品。

    IP camera 看似卖方市场,Linksys 产品主攻边缘需求,这大概是它成功之道吧。同等条件下,我没得选择,只能买个 Linksys WVC210 wireless IP camera。说实话我根本就不喜欢 Linksys 的产品,用过的 Linksys 的产品虽然不多,但它们都坏了,而且都不到我主动淘汰它们的时限它们就“自动”退出了。我对 IT 产品比较追新,通常淘汰下来的产品都尚能使用,唯独 Linksys,唉。我没接触过标 Cisco 牌的产品,在我印象中,Cisco 标在工业级产品,而 Linksys 标在民用级产品。在售 WVC210 wireless IP camera 的网上大多标称 Cisco WVC210 wireless IP camera,但我拿到一看,明明 Linksys 才是它的牌子,我对它没有太多的期待,只希望它能经用一些。

    几小时试用,发现 Linksys WVC210 wireless IP camera 几点让我喜欢的地方。

    1. 内置的麦克风对噪音的控制极好,不用近距离对着麦克风讲话,远程的听众也有亲临现场的感觉。
    2. 内置的 webserver 响应速度快,不像 WD Mybookworld 老半天出不来一个页面。
    3. 视频的质量也不错。
    4. 打开 IE 就能用,除了自动安装一个 ActiveX 控件,不需安装任何软件。

    然而也有几个不讨人喜欢的地方。

    1. Wireless 只能接入 Linksys 的路由器(或者我没想到方法破解?)。如果厂家削弱产品的功能是从生产成本考虑情有可原,但如想以限制用户不能使用第三方产品,或者拼命买本公司产品就大错特错。如果 Linksys WVC210 wireless IP camera 能零设置接入 Linksys 路由器,但需要一些人工设置才能接入其他路由器,那么我就没有受劫持的感觉,以后如果换路由还可以优先考虑 Linksys。这类的反面例子太多,比如,Hotmail 不允许 forward 至第三方邮箱,那我干脆不用 hotmail;iPod 的车载 FM 发射端不兼容 iPhone,那我只能退了 FM 发射端,iPod 和 iPhone 一个都不用。
    2. Firefox 下不支持语音,Linksys 也没发布 for linux 的能支持语音监控端软件。
    3. 有个 Windows 下的监控软件,安装后,竟然提示 missing or corrupted resource file,没法用。我估计跟 ActiveX 的权限有关。其实这个软件没什么用,用IE监控就可以了,但我一开始不知道。
    4. Linksys / Cisco 的支持网站超级难用,死命要我注册,注册了又找不到帮助,最后还是 Google 帮了我。
  • Elements of same name in Zend_Form

    It is a rigid rule that Zend_Form can not have elements of same names. If I add a second element with the same name, the first one will be overwritten.

    When I started to use Zend_Form, I thought this rule makes life difficult. For example, if the form have “Next” and “Previous” buttons, I must give them different names. How can I tell which button is clicked? I must go through all names. I thought if these buttons could have same name but different value, it was easier to tell which button was clicked.

    It was before long I started to enjoy this rigid rule. Take the above example for example, it is NOT a good practice to judge which button was clicked by its value. Because for an internationalised program, the value may change and that is out of the programmers’ control.

    What if I want to add 5 text fields for people to fill in information like team members’ name? Two solutions. The first one looks stupid but I did not come across the second one at first.

    Solution 1:

    class MyNamespace_MyText extends Zend_Form_Element_Text {
    	protected $_name = "text";
    
    	public function init() {
    		static $sequence = 0;
    		$this->id = $this->_name . '_' . $sequence;
    		$this->_label = "Label " . ($sequence + 1);
    		$this->_name = $this->_name . '[' . $sequence . ']';
    		$sequence ++;
    	}
    }
    

    Solution 2:

    for ($sequence = 0; $sequence < 5; ++$sequence) {
    	$element = Mage::getModel('moduleName/modelName', "$sequence")
    				->setBelongsTo('text'); //my form is inside Magento
    }
    
  • Limitation of Mage::getModel method

    Magento getModel can not initialise an instance whose class requires more than 1 argument.

    I assume Magento native classes can explode options from the first argument to satisfy getModel. However, if I want to use 3rd party class like Zend_Form_Element inside Magento, there is no ways to use getModel to achieve the same result as

    $element = new Zend_Form_Text('name', $options);
    

    because

    $element = Mage::getModel('moduleName/modelName', 'name');
    

    takes 1 argument which is ‘name’ only. No way to pass $options on.

  • Drupal on php 5.3.0

    今天想安装 drupal,装了N遍终于成功。一开始想装6.14版,安装过程开始时,我按提示把 sites/default 目录设置可写,把 default.settings.php 改名为 settings.php(提示不准确!),同时设置可写,结果在数据库安装页面反复过不去。

    我联想到 Magento,猜想可能是因为 drupal 6.14 与 php 5.3.0 不兼容。

    那再试试 drupal 5.20 吧。数据库安装页面倒过去了,安装能结束,但抛出一大屏错误。试着进入后台,每个页面都抛出错误,有些功能执行不了,比如修改口令。这样怎么行?继续研究。

    我又看到 drupal 6.14 release notes,说 drupal 从 6.14 起 compatible with php 5.3.0 out of box。啊?说得这么斩钉截铁,那我重新再试。

    终于发现有人提到 drupal 6.14,sites/default 目录下不可没有 default.settings.php,也不可没有 settings.php。压缩包里只有 default.settings.php,所以提示说把它改名 settings.php 是误导,正确的做法是,新建一个 settings.php(可以是空文件),或者拷贝 default.settings.php。这下安装通过了,但还是抛出一堆错误,并不比 drupal 5.20 少。

    想了一下,可能是因为我没有给 drupal 6.14 一个全新的数据库,它是覆盖在原 5.20 的数据库上的,看来 6.14 安装过程不能自动升级数据库。于是再来一遍,这样终于成了(少数页面仍有小量错误)。