2006年01月30日

说难听点,Google放个P都是香的 :-)






2006年01月27日

自短信风行以来,手机就成了类似于电子邮件的广告媒体。每隔一段时间,中国移动就会用短信、彩信诚挚地告诉我它又想出了什么赚钱的主意。更多的是欲火焚身
的MM或是绝望的主妇想起了我,让我回复短信去看她们的艳照。还有好心人提醒我用子虚银行的乌有信用卡消费了一大笔钱,让我赶紧跟他们联系。凡此种种,与
网络上的垃圾邮件何其相似乃尔。不同的是,对付垃圾邮件我们可以设置过滤器,但我们无法指望坐收短信费的移动服务商会有采取过滤措施的自主动机,能够指望
的大概只有手机的生产商了,不知哪位独具慧眼的能够开发出一款内置过滤器的手机,想必会受到欢迎。


近发现中国移动已经在打手机铃声的主意,就是通过彩铃做广告。它宣称集团用户可以把所有人的彩铃设置成公司的广告,上班时间只要有人打手机,就要听广告,
跑都跑不掉。因此,假如某天你拨刘韧、keso的手机,听到的都是“我们是猫扑,我们是猫扑……”这样的歌声时,一定不要惊诧莫名。

前两天,我还发现了手机广告的另一个新动向。有两个电话打进来,我还来不及接听它们就收线了,来电显示的都是手机的号码。当我打回去的时候,听到了广告,广告播完自动断线。这种事情告诉我们,假如你不回复陌生的短信,今后也不要回复陌生的电话。

当手机广告手法不断翻新下去,某一天也许会出现这样一种情景,当你正在和老婆起腻:“哈尼,你说今晚去哪里吃饭好呀?”,话外音响起:“香格里拉西餐厅,环境高雅,浪漫温馨。订座热线1234567。”

2006年01月23日

小强历险记》本来是一场玩闹。



估计当初王小峰
撺掇一拨人开始这个游戏的时候,确实只是想自得其乐,但结果是搞大了。尽管他一再说明整个过程只是一个“玩”字,但是近乎零成本(只是现金投入,不算人力
成本)的制作,没有红包的发布会都让我们感到对现实的反讽,尽管这拨人主观上并没有刻意,但是搞着搞着就被人看成了一种文化现象,也有人说是行为艺术。众
所周知,一沾上文化、艺术这么些字,再简单的事情也变得复杂了。如果你在吃饭的时候宣称在做“行为艺术”,估计每动一下筷子都会让大家不由自主地琢磨个中
深意。



尽管在整个操作过程中,王小峰刻意地避开商业行为的介入,但最终还是逃脱不了商业的魔爪。假如说博客网提供发布会的场地,只是想顺便沾光,万众传媒发布“小强”的手法
可以说是一次对小强的强暴。一切的煞费苦心只是为了推广它的所谓阅读器,我们根本看不到如此作为对“小强”的传播有什么好处,根本看不到“小强”身上那种
娱乐精神的延续,能看到的反而只是赤裸裸的商业嘴脸和目中无人的自私自利。有人说“小强”诞生乃至发布的整个过程是一场炒作,但是依据从blog后面看到
的人,我更相信王小峰是所托非人。



从这件事我们也看到了王小峰是如何不辜负朋友,而给他下套的那个人则无愧“损友”的称号。

2006年01月20日

Donews推出采用wordpress程序的my.donews.com进行公测了,趁热闹注册了一个帐号。

我曾经推荐过用writely写blog,其中提到writely不支持直接在Donews用的.Text上发帖,另外还存在修改之后的同步问题。然而,这两点在WordPress上都不是问题。

先说在writely里面直接发帖。首先要设置blog选项(blog site settings),一旦设置之后就不需要每次发帖都再设了,除非你换了另一个blog系统。针对my.donews.com的设置如图所示:


其中URL要改成你自己的,比如你的blog地址是http://my.donews.com/abc/,那么上面的URL地址就改成 http://my.donews.com/abc/xmlrpc.php;User Name和Password是你登录blog进行后台管理的用户名和密码,Blog ID/Title可以不填,writely会自动找到。

帖子写完后,只要点击页面顶部的Blog标签,选择Publish post to my blog,writely就会自动提交帖子。相比之下,writely+.text的组合总是要copy & paste,一点技术含量都没有。

目前发现的问题是帖子没有分类,要提交之后再到blog的后台去自己分。假如帖子要修改,可以在writely中改完之后,选择blog的 Republish post功能,实现writely和WordPress内容的同步。

当我体会到writely和WordPress结合所具备的便利时,搬家的诱惑是强烈的。之所以还没有下决心,主要是还没摸清楚WordPress的主题对于一般用户是否有目前这种非常灵活的可定制性。如果可定制的项目太少就不太好玩了。再者,赖在直通车上不下来的感觉还是挺好的,不知道有没有什么转车的机制。

刘韧已经撂下话说:

现有的Blog.donews.com还会继续升级。Blog.donews.com中的用户,如果特别喜欢 wordpress,DoNews下一步,会提供Blog.donews.com域名下的系统转移工具。一下就能转到wordpress系统,而你的读者、评论和链接都不用换。

我盼着这一天快点到来。

2006年01月19日

上网太多,已经形成了一种思维定式,以为事情只要能在网上做就是快捷方便的。然而,最近有两件事教育了我。

第一件是买飞机票。姑
妈从大连过来,临回去时要买机票,想查一下航班时刻表。当时,我的第一反应就是上网去查,然后在网上订票。但是,在我父亲家里,没有电脑,我就说:我回家
上网查一查再告诉您吧。父亲说,打个电话给114查一下南航售票处不就能问到航班了吗?于是打114,告诉接线员查南航售票处。她一听就问我:是要买机票
吗?我们也卖机票的。也许是孤陋寡闻,这倒让我觉得意外。问了问航班、票价,能打3折、免费送票上门,于是马上下了订单。结果机票当天晚上就送到了。

还有一件事是办理赴港澳的签注。之前我自己曾经用过广州市公安局网上申请服务
知道手续很简便。网上申请之后,EMS快递就会上门收钱、收通行证,然后把办好的证再送回来,根本不用自己去排队。于是这一次也照办,不同的是多了我太太
的申请。在网上分别填了两个人的申请,但快递地址留的都是我的单位地址。今天,快递收件员上门来收证了,一问才知道这次只收我一个人的证,太太那个还没通
知他们收(结果,稍后也来收了)。然后他告诉我,其实根本不用在网上申请,只要打EMS的电话11185就好了,可以同时接受5个证的申请,只收一个包裹
的快递费,接线员会帮手核对全部资料。而像我这样上网申请要收两个包裹的快递费,还不同步,更别说一旦填错资料所造成的麻烦了。


这两件事提醒我,电话网除了通话,还可以做很多其他的事情呢。

2006年01月18日

革命,就是请客吃饭。虽然很多人夜夜笙歌,但在广州总的来说每年还是有两个请吃的旺季,中秋前和春节前。中秋前小旺,春节前大旺。

人在江湖,逢年过节的,总是有上下前后左右的关系要打点。且不说外面和公司业务有关的机构,光是母子公司之间的迎来送往也让人应接不暇,尤其在公司大、单位多的情况下。请外面的人吃饭有讲究,请自己公司圈子里的人吃饭更是有学问。



作为子公司,上级领导当然是要请的,母公司管钱的、下指标的、管考核的、控制资源的要害部门自然也要请。问题是不那么要害的部门请不请?请吧,毕竟席位、预算有限;不请吧,风水轮流转,谁知道什么时候本来不要害的也变成了要害,或者人从不要害转到了要害?



吃请的也不容易,天天做着推杯换盏、强颜欢笑、你出钱我出命的事,早就不胜其烦,然而也不能由着自己的性子决定。吃请还是不吃请,要看领导吃不吃,要看是谁请,同样要考虑风水轮流转,偶尔可以看看自己有没有心情。



总结一下,请与不请关乎态度问题,吃与不吃关乎面子问题,好不好吃关乎水平问题。当然,若是太不好吃就不光是水平问题了。

2006年01月17日

很多人都听说过KISS准则——Keep It Simple,
Stupid,意思是说凡事要保持简单明了。我所钟爱的Linux发行版Slackware的设计思想,一直以来都体现着KISS准则



写blog时,我有自己的KISS——Keep It Short,
Stupid,不要写得太长,尽量做到在一个页面里面能够显示整个帖子。不写长文章,倒不是说我有什么炼字、炼句的功夫,也不敢和大牛们比什么言简意赅、惜字如金。
写得短的原因,一方面肚子里存货有限,少写一点可以细水常流。再一方面,古人云“言多必失”,少写可以藏拙,免得前言不搭后语,惹各位看官笑话。还有一个
原因,是降低“网络不阅读综合症”的发病率。我自己上网,遇到太长的文字时,就会把鼠标滚轮滚得飞快,比走马看花还快。推己及人,既然太长的东西大家都不感冒,我还不如少写两句,既节省带宽,也节省Donews的存储空间,还能节省大家的时间。



写这个帖子的灵感,来源于英国《金融时报》Sathnam Sanghera的文章:《爽快点,简短点
。我昨天在bloglines的订阅里看到苗炜推介这篇文章,今天再找上门去,却找不到,大概是被删除了。

2006年01月15日

年末抽奖,中了一只30G的iPod,新款可以看视频的那种。



正如苹果所标榜的,iPod+iTunes是绝配,因为到目前为止,我还没有找到不用iTunes就把内容直接弄到iPod里面去的办法。iPod和iTunes的使用确实足够傻瓜,简单设置好两者同步就行了,让我感到不满的是同步所需的时间似乎长了一点。



有人评论说iPod那个小小的屏幕看视频节目能爽吗?我初步的感觉是,只要你不是用它来看大片,小屏幕也有小屏幕的乐趣。我下载了几个视频podcast的动画短片,在iPod上看起来还是饶有兴味的。我还订阅了Discovery
Channel的podcast,把它们也灌到iPod里面,打算有空的时候练练英语听力。



iPod附送的附件只有耳机和USB连接线,同步和充电时都需要用USB线连到电脑上。如果不买其它附件,旅行时就不能只带iPod了,还得带上手提电
脑,否则没法充电。从这一点看,似乎有点弱智。但是,经过家用电器厂商“主件平价、附件天价”的多年教育之后,我非常明白这正是苹果的赚钱之道。在苹果网
站上iPod的定价是299美元,而给iPod直接充电的电源定价29美元。假如不幸弄丢了那条附送的USB连接线,想再买一条就得乖乖地掏出19美元。
如果真的像苹果希望的那样,买了iPod之后再买上林林总总的方便使用的附件,恐怕附件的价钱加起来将超过iPod本身,用句通俗的广州话说就是“豉油
(酱油)贵过鸡”。



不过,既然鸡都有人送了,咱多少买点豉油也不算过分吧。



Update:换张更有趣的图

2006年01月05日

曾经在MBA案例中读过宜家,知道它是一家瑞典家居用品公司,倡导由顾客DIY,以低廉的价格取胜。昨晚我第一次实地进入宜家广州店,用两个钟头时间走马观花地看了看,发觉相对于国内的许多家具卖场,宜家在商场布局、产品陈设等方面确实有很鲜明的特点。


先是导购线路非常清晰,商品的布局合理。商场占据了3个楼层。进门之后,扶梯把顾客引导到二层的家居展示区,顾客接受了产品的摆放、搭配等“教育”之后,
顺着导购线路来到负一层的家居用品区,采购完小件的家居用品之后,再顺路来到首层自选家具区挑选大件的家具,最后在同一层结算,整个流程非常顺畅、合理。


家展示区是引诱顾客产生购物欲望的重点,那里设置了很多样板房,按客厅、卧室、厨房等主题形象地展示了产品的布置和搭配,很有家庭生活的氛围。看完宜家的
样板间,顾客可以很直观地了解到自己想要的风格,然后带着满脑子梦想去购物。相比之下,国内的很多卖场是按产品分类来布置,顾客要看着一望无际的沙发、茶
几、地柜来构想它们三者近乎无限的组合,想象能力差一点的都要晕菜。

第二方面的印象是“宜家文化”无处不在。宜家所有商品都是IKEA品
牌,每种产品都有各自的名字,还用有设计师形象的海报、以设计师的口吻介绍产品的设计理念、用途,让你体会到设计师在产品中灌注的细密心思。宜家在卖场营
造出来一种气氛,用现在时髦的话说,卖的不是商品而是一种生活方式。国内的许多卖场是用贴身的导购员进行hard
sale,宜家靠的不是现场导购员,而是让人感受到产品后面强大的设计、支持团队。因此,很多宜家产品用料不一定高档,很多储物盒干脆就是硬纸皮做的,但
是它用设计来弥补了材质的不足。

第三个印象是对顾客的细致体贴。在展示区,随处可见纸尺、铅笔头、纸张,还提供了很多工作台,方便顾客记
录产品、自行筹划。为方便购物,展示区提供了一种黄色的手提购物袋;家居用品区则增加了可以把购物袋挂上去的小推车,自选家具区的推车换成了更大的平板
车,每个环节都和顾客的购买行为相匹配。尽管宜家强调的是自助服务,但是这些在服务细节上的考虑,使得顾客即使没有导购员的帮忙也不会觉得无助。

题外话:

  1. 逛宜家的过程中,我要坚定不移地、持续不断地打消老婆买一些搁架往家里墙上钉的念头。
  2. 对话
    女孩甲:哎,你说,他们把书摆这里也不怕别人拿走。
    女孩乙:(翻书)我知道为什么了。这些书都是瑞典文,谁看得懂呀?
2006年01月04日

有人问起我的blog右栏的“添加到阅读器”的功能是怎么实现的,在这里简单说一说。

实现这个功能靠的是一个javascript脚本,基于Chris Cherryrssopt.js,我对Chris的脚本按照实际需要进行了修改,添加了国内的一些在线 RSS阅读器的订阅链接。修改后的脚本如下:

<script language="javascript">
/*
Rss Usability Options
by Chris Cherry (http://chrischerry.name)

To activate the functionality of this script place rss="rss" in link tags that point to the XML of RSS feeds.

*/

var RSSOpt = {};

function RSSOptClass() {
    if (!document.getElementsByTagName) return false;
    this.e = {};
   
    setupDiv();
    setupLinks();
   
    if (typeof(_ajax_prototype_called) == ‘undefined’) {
        _ajax_prototype_called = true;
        RSSOptClass.prototype.setupDiv = setupDiv;
        RSSOptClass.prototype.setupLinks = setupLinks;
        RSSOptClass.prototype.addAbstractEvent = addAbstractEvent;
        RSSOptClass.prototype.evshowRssOptions = evshowRssOptions;
        RSSOptClass.prototype.showRssOptions = showRssOptions;
        RSSOptClass.prototype.evhideRssOptions = evhideRssOptions;
        RSSOptClass.prototype.hideRssOptions = hideRssOptions;
    }
   
    function evshowRssOptions(event) {
        if (!event) var e = window.event;
        var elm = event.target ? event.target : event.srcElement;
        if (elm.nodeName != ‘A’) elm = elm.parentNode;
        RSSOpt.showRssOptions(elm);
        event.cancelBubble = true;
        if (event.stopPropagation) event.stopPropagation();
        if (event.preventDefault) {
            event.preventDefault();
        } else {
            event.returnValue = false;
        };
    }
   
    function evhideRssOptions() {
        RSSOpt.hideRssOptions();
    }
   
    function hideRssOptions() {
        e.style.display = ‘none’;
        e.style.visibility = ‘hidden’;
    }
   
    function showRssOptions(obj) {
        url = obj.getAttribute(‘href’);
       
        feeds = new Array();
       
        feeds[0] = ‘<a href="http://www.bloglines.com/sub/’+url+’">Bloglines</a>’;
        feeds[1] = ‘<a href="http://www.gougou.com/sub_rss.jsp?url=’+url+’">Gougou</a>’;
        feeds[2] = ‘<a href="http://add.my.yahoo.com/rss?url=’+url+’">My Yahoo</a>’;
        feeds[3] = ‘<a href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=’+url+’">NewsGator</a>’;
        feeds[4] = ‘<a href="http://www.google.com/reader/preview/*/feed/’+url+’">Google Reader</a>’;
        feeds[5] = ‘<a href="http://www.rojo.com/add-subscription?resource=’+url+’">Rojo</a>’;
        feeds[6]= ‘<a href="http://rss.hexun.com/sub/’+url+’">和讯博揽</a>’;
        feeds[7]= ‘<a href="http://www.boyue.com/login_other0.asp?info_addr=’+url+’">博阅</a>’;
        feeds[8]= ‘<a href="http://rsshow.net/?q=rss/sub&url=’+url+’">RSSHOW</a>’;

        newx = getRealPos(obj, "x") + ‘px’;
        newy = getRealPos(obj, "y") + parseInt(obj.offsetHeight) + ‘px’;
        currx = e.style.left;
        curry = e.style.top;
       
        if ((curry == newy) && (currx == newx) && e.style.display != ‘none’) {
            hideRssOptions();
        } else {
            e.innerHTML = feeds.join("<br/>");
            e.style.top = newy;
            e.style.left = newx;
            e.style.display = ‘block’;
            e.style.visibility = ‘visible’;
        }

    }
   
    function getRealPos() {
        this.pos = (arguments[1] == ‘x’) ? arguments[0].offsetLeft : arguments[0].offsetTop;
        this.tmp = arguments[0].offsetParent;
        while(this.tmp != null)
        {
            this.pos += (arguments[1] == ‘x’) ? parseInt(this.tmp.offsetLeft) : parseInt(this.tmp.offsetTop);
            this.tmp = this.tmp.offsetParent;
        }
       
        return this.pos;
    }
   
    function setupLinks() {
        atags = document.getElementsByTagName("A");
        addAbstractEvent(document, "click", evhideRssOptions);
        for (i=0; i < atags.length; i++) {
            if (atags[i].getAttribute("rss")) {
                addAbstractEvent(atags[i], "click", evshowRssOptions);
            }
        }
    }
   
    function setupDiv() {
        e = document.createElement(‘div’);
        document.getElementsByTagName(‘body’)[0].appendChild(e);
        e.id = "rssoptdiv";
        e.style.position = ‘absolute’;
        e.style.visibility = ‘hidden’;
        e.style.display = ‘none’;
        e.style.font = ‘normal .8em sans-serif’;
        e.style.backgroundColor = ‘#fff’;
        e.style.border    = "1px solid #999";
        e.style.padding     = ‘5px’;
        e.style.zIndex        = 10000;
        e.innerHTML = this.preloadHTML;
    }
   
    function addAbstractEvent(obj, evType, fn) {
        if (obj.addEventListener){
            obj.addEventListener(evType, fn, false);
            return true;
        } else if (obj.attachEvent){
            var r = obj.attachEvent("on"+evType, fn);
            return r;
        } else {
            return false;
        }
    }
}

function setupRssOpt() {
    var oldonload = window.onload;
    if (typeof window.onload != ‘function’) {
        window.onload = function() {RSSOpt = new RSSOptClass();};
    } else {
        window.onload = function() {
            oldonload();
            RSSOpt = new RSSOptClass();
        }
    }
}

setupRssOpt();

</script>

把整个脚本的内容全部放到Donews的公告栏里。然后在需要调用脚本的地方加入这样的代码:

<a rss="rss" href="http://feeds.feedburner.com/WindroseBlog"><img src="http://bolgimg.b0.upaiyun.com/images/blog_donews_com/windrose/71468/t_rssopt.gif"  alt="" style="border:0" /></a>

其中:
http://feeds.feedburner.com/WindroseBlog 是我的RSS地址;
http: //blog.donews.com/images/blog_donews_com/windrose/71468/t_rssopt.gif 是 的地址。

把它们按你自己的需要更改。如果想修改或者添加其他的在线RSS阅读器,请自己修改上面脚本中的feeds数组的内容,即feeds[0], feeds[1],……