Author: qingbo

  • 从blogbus搬家到WordPress

    最近刚刚帮国内互联网某知名女博客搬了家,稍微写点东西。

    据她说,许多人对她说“使用wordpress是成名的第一步”。又据说还有Blogbus的人跑去留言“Blogbus竟然还有这样的人”。要是一直用WordPr
    ess,早就火了。

    Blogbus也算国内数一数二的BSP了(新浪、搜狐那些不能叫做blog,也就不算在BSP之列——顺便鄙视一把),导入功能做得炉火纯青,然而导出就只是作为备
    份用了。这也不能怪blogbus,因为各种blog平台之间并没有统一的交换格式。普通的RSS输出显然不能胜任,因为完整的转换至少还要包括评论以及评论与日志之
    间的对应关系。

    然而一旦有了备份,一般情况下也就解决了问题。比如WordPress就提供了导入Movable Type导出文件的功能,Movable
    Type同样也有导入WordPress eXtended RSS(WXR)的功能。

    不过东方文明还不为西方世界所熟知,譬如Automattic就不知道东方有一个Blogbus,所以WordPress没有直接提供导入Blogbus文件的功能,
    我们只好绕一些弯路。

    事实上这条路已经有很多人走过。冰古算是一位先驱,先后几次更新他的转换程序

    这里又有一位blogger在冰古的启发下写了一个从blogbus备份转换为MT导出文件的脚本,使得评论也可以导入WordPress,但是该文章中的
    下载似乎已成为死链接。另外许多用户反映在服务器上运行时,浏览器中不能显示程序的输出,从而无法复制。这是由于脚本的第一行中指定了Content-type:
    text/xml,浏览器就将它的输出作为xml格式解析。解决办法就是改为Content-type: text/plain.

    下载脚本文件

    我转换的过程中,分类没有导过来,其它的还算正常。

  • Ajax.Autocompleter不支持中文

    最近在使用scriptaculous/完成项目中的一处自动提示功能时,发现Ajax.Autocompleter对中文支持很不好。

    我用的是Google拼音输入法,在输入汉字的拼音时,输入完第一个字母后即触发输入框的事件,js就向服务器查询相应的匹配。实际上此时汉字尚未上屏,出来的匹配是该汉字首字母匹配(英文的)。这样,自动提示功能不仅毫无用处,而且会让用户莫名其妙。

    一番探索之后,发现scriptaculous是在捕捉到keypress事件时向后台发起查询请求的,我仅简单地把keypress改为keyup,即解决了支持中文输入的问题。显然,这是由于输入法在浏览器的更上层处理了键盘事件的缘故。不过本方法没有经过广泛的测试,我只是在Firefox+Google拼音这个组合中试验通过。

    似乎现在jQuery的发展正如日中天,各种插件数不胜数。尽管Prototype以及基于它而来的一些js library仍旧占据着很大的市场,但相对于jQuery来说已经是在走下坡路。

  • 美景在于心情

    世界的存在,是因为我活着;眼前的美景,是因为我心情好。

    去了惠东,我感觉太好了。有一天,我对某人开玩笑说,这次来这里,是我一生中做过的最正确的选择。

    初去的那几天一直是阴天,经常飘着牛毛细雨,很凉爽。家里客人比较多,每天早上睡懒觉起来,都跑到旁边的饭店“饮茶”——广东人的习惯。白天就自由自在地玩,有时候跑到旁边的湖里划船,有时候跟着大家到祖坟扫墓、回老家祭祖、到风景秀丽的山寺拜佛,还跑到惠州的“西湖”去玩。晚上吃了晚饭,就到湖边吹风,或者去广场上看音乐喷泉。

    这样的生活确实很美好,不过前提是无忧无虑。等到快回北京的时候,我就开始计划起回来以后要处理的一些琐事,心情也不是那么舒畅了——我这个人一直是比较悲观的。

    今天早上,刚下过雨,空气像被过滤了一样,很新鲜。走在路上的时候,我就想,假如我在这里没有那么多的琐事缠身,我是来这里度假,这个城市里也有许多让人留恋的美景,生活也可以很美好。回来之后发现门口的一树桃花挤得都放不下了,可是已经过了最鲜艳的时候。玉渊潭的樱花,估计也错过不少了吧。在没有好心情的时候,这些美景会马上被忽略。

    忙过这一阵,如果有时间,我想去欢乐谷,找点刺激,放松一下。

  • 迟来的燃气缴费单

    我们楼的煤气缴费通知单都放在一楼门口的一个纸袋里,可是这次单子发下来的时候,我却找不到我们房间的。说是“这次”,似乎已经过去一个月了。我去问值班的大爷,他先给我来了一段广告,让我租他的房子……blabla……然后才告诉我两个电话——62344438/62344439——我后来才发现以前的缴费单上就写着这个电话。

    于是我不辞劳苦地打啊打啊,可是这两个号码就好像民生银行的客服一样——打不通!过了几天,终于打通了,对方说帮我查一下,然后回电话。过了两天,果然给回了电话,真让我意外加激动,说星期一给我补一张,我连忙道谢。可是到了星期一,我却没有发现补来的煤气单子。

    正好此时去了广东。快回来的那几天,我就开始想回来之后的几件麻烦事,其中之一就是这煤气费。我想,虽然收不到缴费单不是我的责任,但是燃气公司肯定也不会认为是他们的责任,滞纳金不知道有多少,对租给我房子的房东也不知道有没有影响。

    前天,我终于鼓起勇气开始了第二轮轰炸,没想到第三次就打通了,真是幸运。这次直接找来了管我小区的人来接听,我说明情况后,对方就说,你这是欠费了啊。没办法,你不给我单子,我不欠费怎么办?这么神秘的组织,电话打不通,地址也不知道,就管收钱。后来说给我补一张,我说已经补过一回了,对方说第二天下午给我送过来。

    昨天下班回家,终于看到了亲爱的通知单,最迟交费日期一栏写的是4月18日,不错,看来没把责任算在我头上。

    你想想,追着人家给钱!这是什么道理呢?绑匪一般都是通知人“你把钱放在某某地方,钱到手了我就放人”。燃气公司可厉害多了。“您要多少钱?”“我把金额放到某某地方,你看到了就去交钱!”于是我就屁颠屁颠去看该交多少钱,空手而归,还得求人家,“拜托赶紧告诉我多少钱吧!”

  • Windows挂载Linux硬盘(解决乱码)

    前阵子,一台Linux服务器因为根分区满了,挂掉了。紧接着在光盘恢复的过程中发现机器的硬件也有问题,不定时地重启,非常不稳定。尝试了几次,根分区没办法似乎恢复。而因为频繁重启,其它分区的数据也不容易复制出来。

    于是试图在另一台Linux机器上挂载这一块硬盘,结果启动的时候说有重复的/boot label,导致什么错误,启动不了。查了一下,似乎要先改卷标,又要装到服务器上弄。当时嫌麻烦,用一个小U盘复制出来一部分关键数据,就搁那不管它了。

    今天正好有点时间,试着把硬盘拿来装在了我用的Windows机器上。启动一切顺利,进入系统后右下角有一个图标指示发现了新的驱动器,很快就安装好了。打开磁盘管理,发现两个硬盘,其中一个正是刚安装的Linux硬盘,分区状态都是良好,Good.

    然后下载了一个Explore2fs,结果打开一看中文都是乱码。然后又尝试TotalCommander的Ext2fs+Reiser 1.3插件,发现它读取ext3分区实际上就是用的Explore2fs,同样乱码。最后终于找到了救星——ext2fsd. 这东西用起来有点麻烦,打开后,选中想读取的分区,要给它分配一个Windows盘符,然后启动服务,在Windows Explorer里就可以像普通的Windows分区一样打开它了!对了,解决乱码——因为Linux系统一般用的是UTF-8编码,所以右键点击这个分区,选择“配置Ext2卷属性”(没关系,Ext3分区它也给这样的菜单项),在语种编码下拉列表中选择utf8,结果如图:

    ext2fsd

    打开F盘,我想要的东西都在里面了,什么时候愿意就把它们复制出来(据说ext2fsd复制的速度也比较快,相对其它的同类软件)……早知道这么容易,何必当初在频繁重启的间隙中寻找机会。。。

    好了,跟我一起喊:我们的目标是——没有乱码!

  • 行路难

    我们那里的春运秩序太混乱了。

    回家那一天,上了一辆车,说是直达,结果到了保定就说车坏了,然后给了车上每人一张事先买好的到县城的票。这样倒是便宜一点,不过许多乘客因为被欺骗了,很生气,骂了他们祖宗好几辈,还差点动手。感谢这些兄弟拖住了他们。我急匆匆走出几百米后,突然想起箱子拉在车里了,回去一看,还在骂。关键问题在于,大家不知道去哪里投诉,说不定车站方跟他们是一伙呢。

    今天在县城车站,我要上直达车,售票员说满了。我走了,她又喊我回去,让我在站外等。于是车出站后,我上去了。没有座位,售票员变出两个小马扎。直达车省得在保定倒车,就这样凑和着吧……这时超员2个,包括我。后来一路上见客就拉,真是比公交车方便多了,就像某些小城市的公交,“招手停车,随处下车”。我真庆幸自己有个“座”。后来拉的大多是到保定的,到了保定某个公交站,售票员说要上高速,去保定站的赶紧下车,给你们一人一块钱坐8路公交车,啧啧,服务真是周到。有的人不想下,售票员说,不能超员啊!乘客说,一路上挤死了,还不超员啊。售票员说,保定就是咱家,超员怕什么啊,去北京就不行了!

    其实,上了京石高速,还是像最初那样超员2个,不过售票员不知道什么时候消失了。高速上走了不到半小时,嘭的一声巨响,车身剧烈颤抖了一下,然后砰砰的不停响,我周围的乘客吓得惊慌失措。司机把车靠在边上下车看了一下,后轮爆了一个,又上车慢慢开到紧急停车带,修车去了,许多乘客下车去放风。我看了一眼那个轮胎,一排钢丝都断了。真是倒霉。。。

    花了半个小时,换了一个轮胎,终于继续前进了。

    别看我家离北京直线距离大概只有250公里,可是走一趟可真不容易。比如回去的时候,早上四点半起床,坐车到木樨园,七点左右从北京走,九点半左右到保定排队换车,十一点的时候才绕保定转了一圈出了城,下午一点半到了我们县城,进那个小破车站时,楞堵了20多分钟……然后又换一个到我家的车,大概四点半回去了,基本上是12个小时。从北京到上海也用不了这么久啊,奶奶的。

  • gDocsBar – 在Firefox侧栏管理Google Docs

    如果你日常生活、工作中大量使用Google Docs,一定要试一试这个刚刚发布的Firefox扩展——gDocsBar

    gDocsBar is a sidebar extension for firefox, a perfect companion for Google® Docs.

    With gDocsBar, you can drag and drop multiple files into the sidebar to upload documents.

    You can search, filter documents right from the sidebar.

    个人觉得打开Google docs的首页是非常慢的,除了网速的限制,大量的JavaScript也是一个问题。这个扩展真的很方便,也可以提高使用Google docs的效率。

  • 08年春节火车票纪事

    中国人回家的过程充分说明:有苦才有甜。就是这苦也太大了点!
    —- 2008-01-20 21:05 写在饭否

    东方红,太阳升

    女朋友在快要走的时候突然感冒了,于是我便去火车站退票并买张新的——不改签是因为本来是硬座,想换个卧铺。

    到了西站,人流拥挤。进入售票厅,广播说西侧停车场新开120个售票窗口,退票在地下二层。不时地有广播说某窗口还有一张到某地的卧铺,一坨人就围上去抢。平日的售票厅里人还是特别多的,于是我直奔地下去退票。

    恍若人才市场

    到了退票窗口那里,我的兲哪,这简直就是到了人才市场(实际上,我没实际见过人才市场,这里说的是我想象中的样子,或者说菜市场?)啊。许多人手里拿着一张纸放在胸前,像是简历一样,行人路过的时候还专门摆正方向,好让人看清楚。也有许多人像老板一样徜徉在其中,见个“简历”就瞅一眼,找不到满意的就摇头叹息。他们不想退票,一张500块的票,一退就损失100. 而对于想买票的人来说,在这里碰运气也是不错的选择,座位早就没了,而票一旦被退了,能在窗口买到的几率也小之又小。这个市场的形成是自然而然的,解决两类人的需求。

    在我退票的时候,就有许多人过来看,可惜没有一个人要,不然也可以省几十块钱了。

    穷人怎么回家?

    退了票,我去旁边的黑店买了根火腿,借机问了西侧停车场怎么走。那里真是地广人稀,只不过天气冷一点,或者人们不愿意买根火腿来问路,基本上每个窗口前就一两个人。

    我前面站着个小伙子,售票员给他查出一张票,说57. 他问,有慢车吗?售票员很奇怪地说,这是快车!我也很奇怪。他坚持说,我就要慢车啊,我没那么多钱。这时我注意到他手里捏着皱巴巴的50块钱。当时心里就一阵感慨……回来之后别人说,你怎么不帮他一把呢?是啊。

    轮到我了,问了一下,别说卧铺了,座位都没有。已经是晚上8点钟,过了一个小时了,很正常。去公交站等车,通过短信在饭否发了本文开头的感慨……

    信息化时代,抛弃传统人才市场

    记得有位伟人说过,二十一世纪是信息化的世纪。第二天,我就开始在酷讯上想办法,这基本上是我第一次用酷讯的火车票搜索。不出意外,酷讯贴心地提供了邮件订阅的功能,可以指定起点、终点以及日期范围。我将广州和深圳两条线路订阅到Gmail,加上Gtalk的邮件提示功能,一般情况下有人在网上发布了火车票转让信息,10分钟左右就可以通知到我,一天大约有50条左右的信息。有了这么先进的工具,买张票真是太简单了,肯定会有很多人临时改变行程的嘛!关键在于很少人会利用这么高效的工具,我的成功率就大大提高了。

    当然这是高兴得有点早了。

    信息化时代,挑战信用

    在网上买票,我有意避开那些黄牛。一打电话对方就说,“我先跟你说清楚啊,我这票是怎么怎么弄来的,你得给我加多少多少”,我兴趣就不大了。这要么就是老黄牛,要么就是从黄牛那弄来的,要么就是想临时当一次黄牛。那么多的票,我干嘛要买贵的呢?我主动上门去帮你无损失退票,你还要我的钱?太黑了吧 🙂 可是,让人不安的不只票贩子。

    当天晚上的时候,联系到一位广东人(听口音)。跟他说好,第二天早上我过去拿,不要卖给别人了。对方满口答应,还说原价转让,不加钱了。我挺高兴,定好闹钟第二天早上七点起床(我保证是2008年起得最早的一次,平时都是九点半),怕打扰对方睡觉,我在坐车到了地铁站的时候,才给他打电话。和我担心的一样,他把票给卖了……据他说,是他父亲把票给卖了。平日里很愤青的我倒不是特别生气(大概是没睡醒),不过你知道票已经卖了,告诉我一声多好啊?还好我还没完全醒来,回来继续睡到正常起床时间,就当做了一个梦。hefa说双方都感受到信用危机,是的。不过他确实应该通知一下,不是吗?

    正式起床后到了公司,打开电脑,一堆转让信息已经在邮箱里了。找了一个不太像票贩子的打过去,对方说买重了,别人还没给她送过去呢,让我第二天过去拿。女朋友不是太急着走,所以我就答应了(看,我还是比较容易相信别人的,刚被放了一次鸽子)。过了一会,又接到对方的电话,竟然怕我有变,让我下午就去拿,还说因为我是第一个打电话的,后面的都直接拒了。这下我就放心了,遇上个有谱的人。于是,我也上酷讯取消了订阅。

    下午4点钟接到对方电话,让我过去拿。我坐了一溜地铁,包括在西直门走了一遍迷宫,终于见到了亲爱的——火车票。票价加5块手续费,我给了个整还找我两块钱,太厚道了。办公室一同事通过酷讯找了个票贩子,150的票都加了80——他急着要票,没办法。相比之下,我命太好了 🙂

    正所谓:

    千金易得,一票难求。

    同志们,回趟家不容易啊。看那些连快车票都买不起的,看那些有票挤不上的,看那些在回家的铁轨上惨死的……能回到家的,珍惜和家人的时间吧!

  • 去除Firefox中点击链接时的虚线边框

    在Firefox里,鼠标点击一个链接时,它的周围即出现虚线画出的边框。这种例子遍地都是,在WordPress后台写这个文章的时候,随手点一下右边那些widget,就看到了这个问题(图片的右上角):

    WP-admin link

    在某些特殊的情况下,比如做一个导航菜单的时候,出现这个情况时效果就很糟糕了,因为Firefox会错误地扩大链接的边框:

    Digg Menu Link

    🙂 这是我用Firebug修改了Digg的CSS截到的效果。Digg的设计是比较完美的。

    在Firefox的地址栏输入about:config,回车。有一个配置项叫做“browser.display.focus_ring_width”,把它修改成0,点击链接时就不会出现那个边框。但这样的话,在焦点落在按钮上时也没有了边框指示。而且作为一个开发者,在浏览器里设置这个属性,无异于掩耳盗铃。

    这实际上是Firefox在<a>这个标签处于focus状态时(pseudo selector – a:focus)给它加的outline属性。

    正确的解决办法是在CSS里加一个规则:

    a {
    outline: none;
    }

    或者缩小范围:

    a:focus {
    outline: none;
    }

    后者使得鼠标左键在链接上按下,松开之前的这段时间里,仍会显示虚线的outline.

    在我看到的大部分网站中,都把这条规则写在CSS里。或许Firefox该考虑去掉这个的默认outline.

  • JavaScript

    “用”了这么久的JavaScript,却始终对这个语言有一种很陌生的感觉。Prototypescript.aculo.us一直在用,可是它们的源代码,说实在的,我看不大懂。JavaScript非常灵活,也使得它比较难以掌握。另外由于各种浏览器实现之间的差异,使得它显得更加混乱,所以在最开始接触JavaScript的时候,我就困惑,在哪里找到一个比较权威的reference呢?

    如今JavaScript的代码写了应该有上万行了,不过大部分都是借助于Prototype和script.aculo.us以及其它的一些library,而且我自己感觉,事情是做成了,代码还有很大的提升空间。以后准备抽出一定时间来,把JavaScript的基础补一下,争取在面对任何JavaScript代码的时候,都像C++、Java一样,知其然,且知其所以然。比如:this到底指的是什么?

    从哪里开始?当然是MDC.