Author: 芳草苑主

  • qTranslate Update

    我很喜欢qTranslate这个插件,尽管我没在这个blog上使用。

    qTranslate更新很快,最近几次我注意到每次WordPress一有更新,qTranslate随后就有更新。

    但我就不明白了——每次WordPress更新后,老版本的qTranslate就工作不正常了。编辑时,qTranslate is disabled(当然这也不是什么大不了的缺陷,反正我更习惯于直接写代码)。非得qTranslate出一个更新,这个毛病才能解决。

    是不是秦谦老兄写的qTransalte不太符合WordPress Plugin规范?

  • Create Effective Backlinks

    要有好排名得有好的backlinks,这个道理我很早就知道了,但一直未及深入研究。最近读到一篇文章很有可操作性,我准备依样画瓢。

    1. Use wordpress.com for creating your blogs. – WordPress has grate on-site SEO and blogs on WordPress.com get indexed pretty quickly. Once you create an account there, you can create unlimited number of blogs without having to register any new accounts.

      不指是直接使用wordpress.com的blog好,还是自己安装一个wordpress blog好?

    2. Write more then one post per blog. – Google loves backlinks that look natural and active blog that has your link in blogrol seems pretty natural. You can also include some backlinks inside blog posts linking to relevant parts of the website you are building backlinks for.

      到底写几篇post才算好呢?要知道写post很累的啊!

    3. Use Scribefire – Scribefire is grate firefox plugin that will allow you to write into your wordpress blogs from your browser. It helps a lot to have all your blogs listed in it and be able to drag-and-drop pictures from the web directly into your blog posts.

      Scribefire倒不必了,我觉得在线编辑已经很方便了。

    4. Your blog posts don’t have to be masterpieces – Remember you are not writing content for readers, you are writing it for spiders so it only has to seem relevant to the topic.

      这我知道,但我总会尽力写好post的。随便写点东西,或者排版很糟糕,搜索引擎可以糊弄过去,观众糊弄不过去啊。

    5. Promote your blogs – You won’t have much use of these backlinks if you don’t build backlinks for the blog. Luckily, building these backlinks is not so hard as you can use all the benefits provided by RSS feed. Submit your blogs RSS feed to as many services as you can that will create some backlinks out of it. It is also easier to do this when you have more blogs to submit at once.

      我觉得submit rss feed是最值得操作的。

  • 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.

  • Magento Cache

    关于Magento的Cache机制还有待进一步了解。目前我知道的是:

    在local.xml更改Magento backend admin url以后,要Refresh Cache才会生效。

    刚才我试了很久才想到要清除缓存,否则我还以为我没找对地方。

  • 老板不了解下属的工作量是种悲哀

    金融危机袭来,公司的业务摇摇欲坠。老板收缩战线,解雇了几个人,暂时认为我比较重要,留下了。我倒没多想,先干着呗。

    但是事情总要有人做啊,老板亲自上阵,做我同事原来做的事情。今天盘点库存,盘点完毕入账的时候,他花了6个小时还没完成老同事2个小时就能完成的收入工作。最后老板感慨,这输入原来要花那么多时间啊。我说,除非你投资一套条码设备,否则这时间能省下来吗?

    老板无语,然后他又开始怀疑老同事是否真能这么快完成输入。我无语,其实我也干过这活,也就2个小时的工作量吧,但这是建立在我熟记产品代码和产品名称的实践经验基础上的。

    我并不是建议老板们都来做做下属的工作(专业分工嘛),但老板如果以为下属的工作都那么好做的话,那是种悲哀——下属的悲哀,更是老板的悲哀。

  • 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 Bug

    我在Magento 1.1.8里发现一个可能的Bug: Category Design的值只有All store views的值起作用,针对各个store view分别做的不同的值均被忽略。

    不过这暂时对我没什么影响,因为我的一个Root Category只对应一个store view。

  • 思维定势

    Tesco经常给我寄各种各样的Coupon,我很喜欢。

    Cow & Gate婴儿奶粉罐里有时也会开出一张Coupon,通常是买下一罐奶粉Save £1。我中到一张,Valid to 30/11/08,今天最后一天。

    今天礼拜天,Hove Tesco 下午4点就关门,而我有事,4点之前不想专门为用掉一张Coupon跑一趟Hove Tesco。眼看着让这张Coupon作废,我突然想到:Cow & Gate给的Coupon,指明各大零售店均可使用,Cow & Gate负责兑现,我偏偏只想着去Tesco买。Tesco Coupon用惯了,以致见了Coupon就想着去Tesco买。

    这种思维定势真的很可怕。幸好我及时跳出定势,就近在Waitrose花掉了这张即将作废的Coupon。

  • httpd.conf Can Override php.ini

    httpd.conf and php.ini, which has priority? I have done some experiments, and the conclusions are –

    • php settings in php.ini can be overrided by httpd.conf (or some other Apache configuration files) with php_admin_value, php_admin_flag, php_value, and php_flag.
    • However, I find on Linux, if php_admin_value, php_admin_flag, php_value, or php_flag can not be put inside of VirtualHost block. They can be put inside of Directory block, but if Directory is inside of VirtualHost, they won’t work. I assume it is a php bug because on Windows php_admin_value, php_admin_flag, php_value, or php_flag can be inside of VirtualHost or Directory blocks.
    • Some of php directives can only be set by php_admin_value or php_admin_flag, for example, safe_mode. Others can be set by php_admin or php_(non_admin), for example, display_errors. But if display_errors is set by php_admin, it is not overridable by .htaccess; if display_errors is set by php_(non_admin), .htaccess can override it.
  • 关于Magento一次安装,多处使用的构想

    WordPress可以一次安装,多处使用,Magento当然更有理由这么做了。

    Magento强大的功能之一就是run multi websites,Magento内置了多站点运行的功能。我援引从WordPress安装管理探索出的经验,觉得即使Magento内置multi websites功能,各站点还是不要使用同一个document root为好,还是以一主多副软连接的方式为宜。

    只是,我还是没有找到在后台隔离各站点的办法(假设它们由不同的web manager来经营)。我也无法控制上传目录,所有上传得文件都是存放在主域名的document root/{magento installatin path}/media下。

    好在magento子目录安装,根目录显示还是做得到的。如将magento放置在document root/magento下,但前台url不出现magento,具体的做法是

    1. 把index.php和.htaccess移到document root,其他文件都放置在document root/magento子目录

    2. 把index.php修改成

    <?php
    /**
    * Magento
    *
    * NOTICE OF LICENSE
    *
    * This source file is subject to the Open Software License (OSL 3.0)
    * that is bundled with this package in the file LICENSE.txt.
    * It is also available through the world-wide-web at this URL:
    * http://opensource.org/licenses/osl-3.0.php
    * If you did not receive a copy of the license and are unable to
    * obtain it through the world-wide-web, please send an email
    * to license@magentocommerce.com so we can send you a copy immediately.
    *
    * DISCLAIMER
    *
    * Do not edit or add to this file if you wish to upgrade Magento to newer
    * versions in the future. If you wish to customize Magento for your
    * needs please refer to http://www.magentocommerce.com for more information.
    *
    * @category   Mage
    * @package    Mage
    * @copyright  Copyright (c) 2008 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
    * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
    */

    if (version_compare(phpversion(), ‘5.2.0’, ‘<‘)===true) {
    echo  ‘<div style=”font:12px/1.35em arial, helvetica, sans-serif;”><div style=”margin:0 0 25px 0; border-bottom:1px solid #ccc;”><h3 style=”margin:0; font-size:1.7em; font-weight:normal; text-transform:none; text-align:left; color:#2f2f2f;”>Whoops, it looks like you have an invalid PHP version.</h3></div><p>Magento supports PHP 5.2.0 or newer. <a href=”http://www.magentocommerce.com/install” target=””>Find out</a> how to install</a> Magento using PHP-CGI as a work-around.</p></div>’;
    exit;
    }

    $mageFilename = ‘magento/app/Mage.php’;

    if (!file_exists($mageFilename)) {
    if (is_dir(‘downloader’)) {
    header(“Location: downloader”);
    } else {
    echo $mageFilename.” was not found”;
    }
    exit;
    }

    require_once $mageFilename;

    #Varien_Profiler::enable();

    #Mage::setIsDeveloperMode(true);

    #ini_set(‘display_errors’, 1);

    umask(0);
    Mage::run(‘default’);

    3. 把.htaccess修改成:


    ############################################
    ## uncomment these lines for CGI mode
    ## make sure to specify the correct cgi php binary file name
    ## it might be /cgi-bin/php-cgi

    #    Action php5-cgi /cgi-bin/php5-cgi
    #    AddHandler php5-cgi .php

    ############################################
    ## GoDaddy specific options

    #   Options -MultiViews

    ## you might also need to add this line to php.ini
    ##     cgi.fix_pathinfo = 1
    ## if it still doesn’t work, rename php.ini to php5.ini

    ############################################
    ## this line is specific for 1and1 hosting

    #AddType x-mapp-php5 .php
    #AddHandler x-mapp-php5 .php

    ############################################
    ## default index file

    DirectoryIndex index.php

    <IfModule mod_php5.c>

    ############################################
    ## adjust memory limit

    #    php_value memory_limit 64M
    php_value memory_limit 128M
    php_value max_execution_time 18000

    ############################################
    ## disable magic quotes for php request vars

    php_flag magic_quotes_gpc off

    ############################################
    ## disable automatic session start
    ## before autoload was initialized

    php_flag session.auto_start off

    ############################################
    ## enable resulting html compression

    #php_flag zlib.output_compression on

    ###########################################
    # disable user agent verification to not break multiple image upload

    php_flag suhosin.session.cryptua off

    ###########################################
    # turn off compatibility with PHP4 when dealing with objects

    php_flag zend.ze1_compatibility_mode Off

    </IfModule>

    <IfModule mod_security.c>
    ###########################################
    # disable POST processing to not break multiple image upload

    SecFilterEngine Off
    SecFilterScanPOST Off
    </IfModule>

    <IfModule mod_deflate.c>

    ############################################
    ## enable apache served files compression
    ## http://developer.yahoo.com/performance/rules.html#gzip

    # Insert filter
    #SetOutputFilter DEFLATE

    # Netscape 4.x has some problems…
    #BrowserMatch ^Mozilla/4 gzip-only-text/html

    # Netscape 4.06-4.08 have some more problems
    #BrowserMatch ^Mozilla/4\.0[678] no-gzip

    # MSIE masquerades as Netscape, but it is fine
    #BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
    # Don’t compress images
    #SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary

    # Make sure proxies don’t deliver the wrong content
    #Header append Vary User-Agent env=!dont-vary

    </IfModule>

    <IfModule mod_ssl.c>

    ############################################
    ## make HTTPS env vars available for CGI mode

    SSLOptions StdEnvVars

    </IfModule>

    <IfModule mod_rewrite.c>

    ############################################
    ## enable rewrites

    Options +FollowSymLinks
    RewriteEngine on

    ############################################
    ## you can put here your magento root folder
    ## path relative to web root

    #RewriteBase /magento/

    ############################################
    ## workaround for HTTP authorization
    ## in CGI environment

    RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    ############################################

    #This is my creation for installing magento under a subfolder.

    ############################################

    RewriteCond %{REQUEST_URI} ^/(media|skin|js)/

    RewriteRule (.*) magento/$1 [l]

    ############################################
    ## always send 404 on missing files in these folders

    RewriteCond %{REQUEST_URI} !^/(media|skin|js)/

    ############################################
    ## never rewrite for existing files, directories and links

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l

    ############################################
    ## rewrite everything else to index.php

    RewriteRule .* index.php [L]

    </IfModule>

    ############################################
    ## Prevent character encoding issues from server overrides
    ## If you still have problems, use the second line instead

    AddDefaultCharset Off
    #AddDefaultCharset UTF-8

    <IfModule mod_expires.c>

    ############################################
    ## Add default Expires header
    ## http://developer.yahoo.com/performance/rules.html#expires

    ExpiresDefault “access plus 1 year”

    </IfModule>

    ############################################
    ## By default allow all access

    Order allow,deny
    Allow from all

    ############################################
    ## If running in cluster environment, uncomment this
    ## http://developer.yahoo.com/performance/rules.html#etags

    #FileETag none