2007年6月11日星期一

创建C++ XPCOM组件


本文翻译自 Creating a C++ XPCOM component,结合自己学习过程添加部分注意事项,希望对初学XPCOM的朋友有所帮助,并多多交流。

关于

这是一个step-by-step的入门教程,讲述在LinuxWindows下创建,构建和注册一个XPCOM 组件的过程。

下载

本文涉及的源代码可以从这里下载。

创建组件

1. 下载 gecko-sdk-i586-pc-msvc-1.7.zip,解压到本地。、


2.
为主接口创建GUID:

a. Windows下用guidgen (Visual Studio 2003/2005 工具->创建GUID)

b. Linux 下用uuidgen

3. 创建接口定义 - IMyComponent.idl

a. 使用以下模板,添加方法和属性给接口。
b.
填入刚生成的GUID

#include "nsISupports.idl"
[scriptable, uuid(
你刚生成的GUID)]
interface IMyComponent : nsISupports
{
long Add(in long a, in long b);
};

4. 用接口定义文件生成接口头文件和类型库(typelib)文件

a. 使用Gecko SDK中的xpidl 工具. xpidlGecko SDK主目录的bin/

b. 将下列命令中的_DIR_替换为Gecko SDK主目录下的idl目录路径

c. xpidl -m header -I_DIR_ IMyComponent.idl 将会创建 IMyComponent.h

d. xpidl -m typelib -I_DIR_ IMyComponent.idl 将会创建 IMyComponent.xpt

e. 注意运行xpidl需要glib-1.2.dlllibIDL-0.6.dll,这些库包含在wintools.zip 中,解压后在gecko_wintools\buildtools\windows\bin\x86下。

f. 生成的IMyComponent.h,IMyComponent.xpt在当前目录下。

5. 接口头文件IMyComponent.h中包含了模板,用于构建你自己组件头和实现文件。你可以拷贝粘帖这些模板,只要修改组件名就可以了。

6. 创建你的组件的头文件 -MyComponent.h

a. 首先加入

#ifndef _MY_COMPONENT_H_
#define _MY_COMPONENT_H_
...
#endif

b. 加入 #include "IMyComponent.h" 以包含接口的定义。
c.
为组件创建一个GUID. 注意是这种格式:{ 0x9d8eb88b, 0x30ce, 0x46e0, { 0x81, 0xb2, 0xca, 0xb1, 0x5a, 0xc6, 0xba, 0xc7 } }

d. 加入下列代码,它们主要用于定义你的组件名,contract IDGUID

#define MY_COMPONENT_CONTRACTID "@mydomain.com/XPCOMSample/MyComponent;1"
#define MY_COMPONENT_CLASSNAME "A Simple XPCOM Sample"
#define MY_COMPONENT_CID
你组件的GUID

e. IMyComponet.h上拷贝头文件的模板(以/* Header file */开始,到 /* Implementation file */结束)
f.
用你的组件名替换所有的_MYCLASS_

7. 创建你的组件的实现文件 - MyComponent.cpp

a. 加入#include "MyComponent.h"以包含你自己的组件定义
b.
IMyComponent.h中拷贝实现模板(以 /* Implementation file */开头到#endif
c.
用你的组件名替换所有的_MY_CLASS_
d.
加入实现代码。

8. 创建你的模块定义文件 -MyComponentModule.cpp

a. 添加#include "nsIGenericFactory.h" 用以包含Mozilla GenericFactory的定义
b.
添加#include "MyComponent.h" 以包含你的组件定义
c.
添加 NS_GENERIC_FACTORY_CONSTRUCTOR(MyComponent),以定义你组件的构造函数。注意:MyComponent是你的组件名。
d.
添加

static nsModuleComponentInfo components[] =

{

{

MY_COMPONENT_CLASSNAME,
MY_COMPONENT_CID,
MY_COMPONENT_CONTRACTID,
MyComponentConstructor, //
注意将MyComponent替换为你的组件名。

}

};

以定义类名,contract ID和你组件的GUID.
e.
添加 NS_IMPL_NSGETMODULE("MyComponentsModule", components)以输出上述所有信息到Mozilla.

9. 创建makefiles或者工程

a. 你可以根据例子 里提供的模板去定制你的makefile.

b. 或者,你可以创建一个Visual C++工程,进行一些简单的设置就可以了。

从例子程序构建

1. 这里 下载示例代码,解压到本地。

2. 编辑makefile

a. makefile位于示例代码的src目录下。

b. Makefile用于Linux, MyComponent.mak用于Windows.

c. 编辑makefile, 改变 GECKO_SDK_PATH 变量指向你的Gecko SDK 目录。

3. 构建示例程序

a. 打开命令行或shell(Windowscmd, Linuxtcsh, bash)

b. 切换到示例代码的目录。

c. Linux下键入make, MyComponent.so将被创建。

d. Windows下键入 nmake /f MyComponent.mak. Debug\MyComponent.dll将创建, 注意,如果提示缺少nspr4.lib, plc4.lib, plds4.lib, 下载gecko-sdk-i586-pc-msvc-1.8b1.zip解压后在lib文件夹下。Mozilla的文件太乱了,1.71.8SDK文件都不全,所以只能1.71.8都下载~

e. 或者用 nmake /f "MyComponent.mak" CFG="MyComponent - Win32 Release" 创建release版的,Release\MyComponent.dll 将被创建

4. 注册新组件到Mozilla

a. 拷贝 MyComponent.so/MyComponent.dllIMyComponent.xpt Mozillacomponents目录。在Windows下这个目录一般在 C:\Program Files\Mozilla Firefox\components. Linux~/firefox/components (或~/mozilla/components

b. 运行Gecko SDK 提供的regxpcom注册新组件,你可以用 regxpcom -x components路径 来注册,或者在Mozilla安装路径下创建.autoreg,让它自动注册。

c. 删除Mozilla配置目录下的 xpti.dat compreg.dat. Windows配置目录在C:\Documents and Settings\USERNAME\Application Data\Mozilla\Firefox\Profiles\default.??? Linux下的在~/.mozilla/firefox/default.??? 下。

5. 测试新组件

a. 重启Mozilla Firefox

b. 打开 示例代码里的MyComponentsTest.html, "GO"按钮

c. 如果一切正常,你可以看到 “3+4=7”.

链接和资源:

1. IBM developerWorks - XPCOM Overview[第1部分][第2部分][第3部分][第4部分][第5部分]

2. Doug Turner创建XPCOM组件

3. 为Mozilla创建应用程序 【第八章-XPCOM



2007年6月7日星期四

flickr 被封了

表现为照片不能浏览,据说可能与厦门PX事件和8*8事件有关,详见月光博客,很多人以为互联网特别是web2.0可以给大家言论的自由,但事实证明,自由在中国是一件宝贵的东西,因为它的不易得到而显得尤其宝贵,而宝贵的东西总是有人去追求。中国的互联网正在被改造成一张用于监管人民言论的网,但我想真理和正义是任何时候都可以拿出来讨论的,防民之口甚于防川,为什么总有一些人不遗余力地做着这些伤害人民的事呢?相信历史会把这些人扫进垃圾堆的。

2007年5月7日星期一

潘多拉因版权问题在中国停止服务。

潘多拉是我最喜欢的音乐服务,但五一长假回来,我已经无法再使用它的服务了。虽然上段时间潘多拉发出求救信时已经感到情况不妙,但还是没想到事情来得这么快。有人说,人所有的智慧都集中在两件事上:希望和等待,这也是我们这些普通网民现在所能做的。
唯一让我好奇的是,潘多拉这次到底在哪些国家停止服务了?请知道的朋友告诉我吧~

这是中国用户登录潘多拉时看到的声明:

Dear Pandora Visitor,

We are deeply, deeply sorry to say that due to licensing constraints, we can no longer allow access to Pandora for most listeners located outside of the U.S. We will continue to work diligently to realize the vision of a truly global Pandora, but for the time being we are required to restrict its use. We are very sad to have to do this, but there is no other alternative.

We believe that you are in China (your IP address appears to be 219.143.146.104). If you believe we have made a mistake, we apologize and ask that you please contact us at pandora-support@pandora.com

If you are a paid subscriber, please contact us at pandora-support@pandora.com and we will issue a pro-rated refund to the credit card you used to sign up. If you have been using Pandora, we will keep a record of your existing stations and bookmarked artists and songs, so that when we are able to launch in your country, they will be waiting for you.

We will be notifying listeners as licensing agreements are established in individual countries. If you would like to be notified by email when Pandora is available in your country, please enter your email address below. The pace of global licensing is hard to predict, but we have the ultimate goal of being able to offer our service everywhere.

We share your disappointment and greatly appreciate your understanding.

Sincerely,

Tim Westergren
Founder

2007年4月8日星期日

千橡困境

前段时间看到麦田提到人人网歇菜的消息,后来看到千橡正式关闭人人网.

今天又在ChinaWeb2.0Review上看到关于千橡的这篇文章,
文中引用了张亮博客上的长话短说两则, 指出千橡贿赂三大门户,隐去环球企业家杂志上关于千橡的一篇名为千橡幻象的负面报道.

千橡幻想这篇文章深度揭示了千橡巨额融资背后隐藏的危机, 文章认为,由于将过多的经历放在资本市场, 急功近利(急于上市)而不能专注于产品质量的提升导致了千橡今天的困境. 而陈一舟个人的心态变化也是导致千橡今日局面的一个微妙因素.

这些文字显然沉重打击了千橡的上市梦,所以我们才看到标称中国web2.0旗舰的千橡贿赂传统门户隐去自身负面报道的奇怪一幕.

Google拼音输入法, 一石激起千层浪

Google这些年一直以其厚重的产品和技术创新树立其良好的品牌. Google拼音输入法一出, 新浪的调查显示80%的人愿意试用, 可见大家对Google品牌的厚爱.

但马上传出Google原来盗用了Sogo的词库,并证据凿凿, Sogo发表声明对此怯生生地表示强烈愤慨,Google也出来回应, 称试验阶段确含有非自有数据 并称已将其输入法更新到使用自有词库的1.0.17版本. 虽然诚意不足, 但到底是承认了错误. 此事也许会告一段落吧?

不管怎样, 双方都借全国人民的眼球好好地将此事炒作了一把. 谷歌牺牲了Google的品牌,换来了自己的流量. Sogo让大家知道了自己工作的价值, 以前不敢做推广的东西这次终于风光了一把.

Sogo和Google的输入法之争就这样一片热闹纷乱中开始了.

Update:谷歌再发声明:明确向搜狐公司道歉

相关链接:
搜狗拼音输入法词库是怎样炼成的
新浪关于输入法抄袭事件的专题
How Google Can Build Chinese Input Method Better

2007年4月1日星期日

没事去网吧转转

那天去亿代天兵打台球,台球室与网吧隔壁,排号的时候我顺便去网吧考察了一下。

这个网吧在地下一层,共有300个左右的座位,电脑用的是19液晶,上网平均3元/小时,基本上座无虚席。我在里面转了两圈,令我震惊的是,网吧里打开网页的只有2个人,一个上新浪看股票,另一个开的是百度,其他人都在玩网络游戏或看电影,90%的人在玩网络游戏,剩下的在看电影,上网的大多数是年轻人,看电影的基本上是女生。

诺大一个网吧,打开网页的只有2个人,可见中国的web2.0缺少群众基础,光是圈子里面热闹而已。娱乐方式还是游戏和电影来的直接痛快。web2.0,谁在用?

大家都离校了

快毕业了,大家为了早点入职,纷纷办理了离校手续,到外面租房了。今天为室友陈洋搬家,他住到了外经贸大学对面。现在宿舍就剩我一个人了,为了节省房租,我决定住到7月初。届时将宣告我学生生涯的结束。我从初中开始宿舍群居生活,到现在已有13年,很怀念这13年的群居生活啊。除了本科比较孤僻以外,其他的每一个阶段都有玩的很要好的同学,这些友谊使我终生难忘。

2007年3月30日星期五

Twitter? 什么玩意儿?

Twitter最近火得很,经历了去年web2.0的大起大落之后,大家很久没有看到什么新鲜的玩意儿了,突然出来个Twitter, 把大家的眼球都吸引住了。
什么是Twitter?其实就是一个mini blog,一个SNS, 一个打发无聊时间的玩具而已。下面是关于Twitter的链接:
你要用Twitter吗?
Twitter触及流行引爆点|All about Twitter
我也说几句twitter

2007年3月29日星期四

Zola,博客与公民记者

Zola去重庆采访史上最牛钉子户,没人真正谈论他到底采访到了什么,大家关心的是博客作为公民记者采访报道新闻事件的意义。这是相关的链接:

我在重庆九龙坡查访最牛钉子户事件
新媒体与伪民主
独立Blogger不等于公民记者
Zola不是一个人在奋斗

2007年3月26日星期一

公司搬新家了

周六把东西搬过来,今天大家一起打扫卫生,布置电脑和网络,中午一起吃饭,新家不大。但很温馨,希望大家以后一起努力,为它添砖加瓦,让它成为我们可以寄托自己的地方。

2007年3月20日星期二

google blogspot无法访问。

今天早上发现我的这个博客无法访问,后看到月光的文章Google BlogSpot再次无法访问才恍然大悟.

解决方法如月光所授,编辑WINDOWS\system32\drivers\etc\hosts 文件,然后加入72.14.219.190 xxx.blogspot.com ,其中xxx是你的用户名,即可访问到你自己的BlogSpot了。

但这样毕竟收效甚微,就像blogspot的博客各被上了一把不同的锁,大家要访问,还得先用不同的钥匙打开这把锁,除了自己,谁会有这份心情?!有没有办法只要一行就能上所有blogspot的博客呢?

Update: Google Reader和抓虾不能访问该博客,但Feedburner可以访问blogspot并生成了本文的RSS。奇怪的是Google Reader为什么不能访问blogspot呢? 不过终于发现用Feedburner的好处了:-)

Update: 写完上一个update不久,发现google reader可以访问该博客了。

Update: 根据Too的评论,有一种一劳永逸访问blogspot的方法:详见http://my.opera.com/fermi/blog/2007-03-22-how-to-visit-the-banned-blogspot?cid=2681255
首先打开Notepad(或者其他的编辑器),写入如下内容:

function FindProxyForURL(url,host){
if(dnsDomainIs(host, ".blogspot.com")){
return "PROXY 72.14.219.190:80";
}
}

另存为proxy.pac到C盘的根目录下,以Firefox为例,打开Firefox,依次点击Tools->Options-> Advanced->Network->Settings...->选中Automatic proxy configuration URL,在下面填写:
file:///C:/proxy.pac
,再点Reload,再点Ok,一路Ok下去,就可以了。

Web 3.0: 当web网站成为web服务

http://www.yeeyan.com/articles/view/1605/565

2007年3月15日星期四

月光族如何理财?

如何理财? 听起来很时髦, 可惜这里不打算讨论怎么去购买银行的理财产品, 也决不会告诉你怎么选基金. 这些都是有积蓄的人的事. 刚毕业的学生,哪有钱做这些.对这些人来说, 理财说白了就是怎么省着花? 如果追求小资生活, 而缺乏理财意识, 就可能沦为月光族, 甚至举债度日。

要懂得理财, 得有点破财的经验, 我去年忙活了一年,年底盘算开支让我大吃一惊, 一年下来收入不少, 最后却落了个背债的结局, 令我震惊的是,居然还有10K对不上账。我才发现自己该理财了。

一个前辈告诉我,理财无非就是看哪些是日常开销,哪些是可有可无的,然后减少可有可无的开支。听起来像废话,但没几个人做得到。我决定按前辈的话做。

我开始用google docs记账,把每天的开销记下来,主要记非日常开销,并重新审查我以前的开销。

首先是通信费,查看我的动感地带话费详单,主要有四个问题,第一个是在认识我女朋友期间电话费每月在250左右,这个是日常开销,没办法,两地分居嘛。第二个是我表弟有时用我的手机打长途没加拨17951,导致每分钟话费为70+25=0.95/分钟,第三个是我回家接长途和打长途都是60+70=1.3元/分钟,第四个是很多10秒左右的电话,后三个以后是需要节省的,尽量发短信,因为每月20元包月的300条短信总是用不完。

第二个是信用卡,这一块的数据不能在此公布,但我的经验告诉我,能不用信用卡尽量不用,用的话不要取现,不要逾期还款,否则都会给银行交很多银子。

第三个是交通费,以后办公交卡,这一块可以省一半了。但我经常起晚了怕迟到打车上班,破费了不少,决定周末买个自行车,骑车上班。

第四个是生活费,这一块没想过太省,但以后搬出学校了还是自己做饭,中午带饭到公司。不想带饭主要是中午和同事一起吃饭热闹。

第五个是娱乐费,每周必打一次台球,其他就是数码产品的消费。买数码产品,我追求的是实用,专机专用,手机从Nokia2100到Nokia3100再到三星C158,从不买超过1000的,不买带各种花哨功能的,那些都是摆设, 况且买贵的丢了多不值. 数码相机我用的是爱国者, 700万像素才1200元.我还准备买个二手笔记本, 据说满庭芳园有个二手笔记本店,2000-3000能淘个不错的, 我的要求很简单,有无线,上网看电影流畅就行.

总之,心中要有理财意识, 不要想着明天还有钱吃饭,或者后天就发工资了,就去乱花, 更不要相信超前消费, 那是某些人的阴谋, 在中国不适用, 人家社会保障做得好,就算你身无分文,也不用担心吃穿住行生老病死, 你在中国行吗? 你超前消费饿死你谁负责?

为什么这么省? 很简单, 对富人来说,维持一个人生存和生活不需要那么多东西,花得多生产的垃圾也多,造成资源浪费和环境污染, 对穷人来说, 每天花得越少,你维持得越久,而且很多事情需要钱去推动, 钱能生钱. 所以,该省的就得省.

兄弟,去长沙谨防受骗.

我是湖南人,但我对湖南的省会长沙却没有一点好印象,原因很简单,长沙的骗子多且明目张胆,无奇不有,让你无可奈何。

第一次去长沙是高二时去看在湘雅住院的老爸,那时只带了50元钱去,去的时候班长借了我10元,但没找着老爸,回来时在火车站有个好心叔叔又给了我10元坐车。最后到家刚好分文不剩。这次比较早,而且身上本来就没钱,没有受骗。

第二次就是去年了,途经长沙去常德,在火车站有人拉我坐去常德的大巴,说好50元,上车后非收65不可,不给的就威逼利诱,当时觉得这些人太可恶了,但又无可奈何,给了。

第三次是从常德回京途径长沙,在长途话吧打电话,三分钟被收了10元左右,说摘机费8元,还指着墙角给我看,我无语,给了吧,让他拿这钱帮他儿子把屁眼割开吧。

第四次是陪朋友去长沙亚韩医院,回北京时在火车站买苹果和葡萄,进站时才发现葡萄很多坏的,我才感觉到分量不对,原来她们在称的时候把很多坏的放到里面了。我愤怒,但还是无可奈何。

第五次是春节回家,先坐T1到长沙,然后到汽车南站坐大巴,结果发现所有回家的票都被票贩子买了,几十个票贩子在排队的人群中来来往往的吆喝,“去衡阳吗,票都没了,走吗?”,多少钱一张呢?告诉你加10块,等你从队伍里出来以后就说30。进站后才发现,票贩子很多其实就是售票员或者就是汽车站工作人员的亲戚。我震惊,但我能改变什么呢?

这一次是我女朋友,她说今天在长沙取了200元假钞,取100假钞容易,200却让我难以置信。我让她去银行问问,银行的工作人员问她是否买东西了,她说是的,工作人员拿报纸给她看,原来是买东西的时候被人换成假的了,后来她去找那卖东西的,还报了110,骗子把真钱给她了,110来了以后说她不该拿,证据没了。

在北京,空气虽然没有南方清新,但天子脚下,骗子还是很少的,就算骗的,也最多是说他们回不了家,没饭吃,是在骗取一点同情而已,没有长沙的骗子那样可恶,那样光天化日之下的明目张胆,面对被骗,大家往往也是保持沉默,就像我一样,但心中总烧着一股无名火,终有一天会爆发。

这里有几个关于最近假钞掉包骗局的文章,希望去长沙的朋友小心:
当心列车上的"假钞窝点"
以“找不开”为由调换顾客真钞 半年骗得近百万(图)

2007年3月13日星期二

从Google Reader到ZhuaXia再到Google Reader

我从去年十月份Google Reader改版时开始使用它做我的RSS阅读器, 后来发现它的社会化功能太弱,而且阅读文章时图片显示不出来. 就改用抓虾, 这两天在整这个blog,想把自己在抓虾上收藏的文章分享到博客上, 却发现抓虾没有对收藏文章提供RSS输出功能, 而Google Reader可以将共享的文章Clip到网站上, 所以今天把抓虾的订阅列表OPML导到Google Reader中, 从今天重新开始使用Google Reader. 我共享的文章在博客右侧"阅读共享"一栏.

抓虾的社会化功能和交互性做得很好, 这可能得益于它的创始人徐易容的技术背景,你可以在"频道大全"里看到博客排名和订阅人数, 可以在"热文排行"中看到最热门的文章, 可以在浏览文章时收藏,推荐或Email给朋友, 收藏,推荐和Email给朋友时我最常用的.

抓虾的交互性也是很好的, 特别是"我的频道"左侧列表的右键菜单使管理订阅方便了很多. Email给朋友时会提示你以前输入过的Email地址, "添加频道"功能有一个很方便的小创意,你只要提交URL, 抓虾就可以从这个URL对应的页面中自动搜寻RSS链接, 省去了自己找RSS链接的麻烦. 关于Keso说的抓虾不能订阅国外被GFWed站点的问题, 我这边似乎没有, 比如我的博客WebLeOn的博客我都可以订阅, 不知道是不是抓虾改进了这方面的功能,还是因为我订阅的这两个博客没有被封, 或者GFW改变了对blogspot的策略?

刚才说到以前弃用Google Reader的其中一个原因是图片显示不了, 这个问题现在已经解决了,Google Reader还改进了管理订阅列表的用户体验, 当然让我重新改用Google Reader的直接原因是它的
"Add a clip to your site"功能, 可以把你公开的文章mushup到你的站点上.

以后我会这样使用Google Reader和抓虾,Google Reader用来阅读和与朋友分享文章, 抓虾则用来发现好的博客和浏览热门文章.如果以后抓虾改进了"我的收藏",我想我还是会回到抓虾的,不能过度依赖Google,我们有义务促进互联网的"多极化".

Update:刚才给抓虾写信说希望"我的收藏"有RSS输出,7分钟后收到抓虾的回复:

David,你好

感谢你的来信和对抓虾的关注!~

您的建议收到了,很不错的建议,我们正在想出合理的方案希望可以把“我的收藏”做的更好,为大家提供更贴心的服务。

谢谢你,请多关注!


抓虾对用户的建议反馈还是挺快的,期待...

2007年3月12日星期一

“科技超女”吴莹莹

吴莹莹被炒作了一段时间了,我一直没有关注。昨天看鲁豫有约,才知道了一些关于她的故事。

吴莹莹,21岁,北师大心理学专业大四学生,她民族舞九级,芭蕾舞四级,有过三项实用新型专利,得过ACM竞赛银牌,数学建模竞赛全国二等奖,因ACM竞赛去斯坦福做过访问学生,做过ACM主席助理,回国前被Topcoder聘为亚洲副总裁。这些经历曾在网上炒得沸沸扬扬.

看了节目,感觉莹莹其实并不像网上炒得那么厉害,她所获得的奖项并没有什么特别之处,ACM竞赛在中国毕竟参与人数较少,取得成绩有时也要靠机遇,数学建模竞赛我就得过全国一等奖,并不像外人想得那么神奇,使用新型专利其实也是很容易申请的,甚至Topcoder的亚洲区副总裁,也仅仅是个头衔,只是负责中国的校园推广而已。

与别人不同的是,莹莹的综合素质很好,沟通能力很强,而且保持着一个21岁女孩的纯真幻想,她有只卡通猫和兔子,猫讲中英文,兔子只会英文,她会和她们讲话,鲁豫问她猫和兔子只会听不会说,她说它们会说,只是你们听不懂,她活在她的童话世界。她用泥土烤过土豆,用酒精提取过叶绿素,发明过速查字典。

我觉得,莹莹之所以成功,得益于她良好的综合素质和沟通能力,当然最重要的还是机遇,所以大家叫她“科技超女”,她的出名更多的得益于网络媒体下的全民炒作。

2008奥运会官方票务网站接受注册

第29届奥林匹克运动会官方票务网站 接受注册, 4月份开始售票.

凡地球人皆可凭个人有效证件(身份证,军人证,护照等)买票, 每人一张,多买的采用抽签机制. 开幕式价格200-5000元人民币,闭幕式150-3000, 赛事价格介于30-800之间, 比如热门的足球200-800, 乒乓球50-800, 非热门的山地自行车30-30元.

这些价格还是比较符合中国老百姓的消费能力的. 我就准备叫我父母来北京看奥运. 让他们感受一下奥运的气氛. 希望那时候北京的交通和气候能好些.

博客之中美差异

中文博客写什么说:"中国引入BLOG概念之后,其中的媒体性迅速被文学性代替,文学性又被娱乐性代替。有人可能会想着去讨论文化差异一类的东西,但在我看来,里面只有一条保险系数越来越高的安全曲线。写文学作品比自媒体报道安全,写八卦文章又比文学作品安全。"

2007年3月9日星期五

让我们携起手来,建设和谐社会....

公司统一提供的,不管年薪有没有12万都可以收到.

Keso与五季咨询

著名IT评论Keso不堪千橡的业绩压力离开donews, 创办五季咨询, 希望以个人在互联网的影响力和资源养活自己. China Web2.0 Review为此专访了Keso.

五季咨询的口号是"我们信仰互联网",现已有王微的土豆网,王怀南的宝宝树,红鼎创投,木耳网四个客户, 咨询费为1000RMB/小时, 包月5000+RMB/月,共10小时, 土豆网买的就是常年包月的业务. 这是五季咨询的服务项目.大家是否有兴趣一试呢?

Keso已年过40, 虽然说是为了解决自己的生活困难, 但Keso对此次创业信心满怀, 因为他相信中国的互联网, 相信Web2.0, 也相信自己多年来在行业中积累的眼光和资源.

Keso能否帮助中国的Web2.0企业成功, 从而成功打造五季咨询的品牌? 让我们拭目以待.

2007年3月8日星期四

BabyTree测试版上线

BabyTree由前Google中国CMO王怀南和易趣创始人邵一波创办, Keso在他的五季咨询的成功案例里这样介绍babytree:

"BabyTree.com第一个功能就是提问。“今天小孩没吃饭要不要紧?两天没吃蔬菜要不要紧?三天没大便了要不要紧?”据介绍,有很多这种问题需要人来解答。
BabyTree.com第二个功能就是要找到一些有同样兴趣的父母,包括住在同样一个地方,包括这个小孩我们都觉得有点数学天才,是不是要培养一下等等,有很多需要沟通的需求。
BabyTree.com第三个功能就是许多人有小孩,他们都希望跟别人分享自己的乐趣。"

BabyTree的最让我耳目一新是可以记录孩子的成长经历,他说过的好玩的话, 他的很多第一次, 他的成长照片, 如果坚持记录下来,等孩子长大时再送给他, 这将是一份最厚重的礼物。

能不能做一个平台, 让大家把自己的爱情经历也记录下来呢? 等结婚的时候送给亲爱的人, 也是对自己爱情最珍贵的纪念.

现代人经常匆匆赶路,却忘了自己旅途的目的,路上的足迹和心情也许比终点更有意义吧。BabyTree的意义也许就在于替孩子们把他们美好的童年记录下来了吧. 如果每对父母都有时间和心情记录孩子的成长历程, 让每个小孩都感觉爱, 世界是否会美好一些呢?

太阳底下本无新鲜事

太阳底下本无新鲜事, 嗯, 对上帝是这样的, 但对我们来说, 每天都是新鲜的. 尤其是有了互联网.今天翻开我的Yahoo收藏+, 觉得有必要回顾这一周互联网上发生的一些新鲜事.

分众以2.25-3亿美元收购好耶

好耶CEO朱海龙说这犹如天黑前开灯, 未雨绸缪. 什么雨, 当然是分众的发展瓶颈, 分众显然是看好互联网广告的发展前景, 2006年中国网络广告(不含搜索引擎)的收入达49.8亿元,未来三年仍将保持每年50%多的增长率,预计2008年市场规模将达117.63亿元。

江南春说,好耶的生意模式非常好懂,“比如从众多中小网站那里以5元/CPM(千人印象成本,一种网络广告定价方式)购买,然后再以10元/CPM的价格卖给广告主,好耶的增值就在于通过技术平台和数据库资源,帮广告主将广告精准投放到消费者面前。”

单纯按广告收入计算的话,分众已经成为继央视、上海文广之后国内第三大媒体集团。

2007,电子杂志年?

“2005年是名人博客元年,2006年是名人博客息年,2007年将成为名人电子杂志元年!电子杂志就是博客的终结者!”

电子杂志几年前就出现了, 杨澜的半月刊电子杂志澜Lan已经出到第26期, 鲁豫的豫约也出到了第三期, 徐静磊马上就要出开啦,邀请王朔,韩寒出专栏, 自己还要作专访.

为什么出电子杂志的都是女人,而且都是美女, 她们的读者真像文中说的是白领女性吗? 不过对我来说, 看她们的杂志确实获得的信息量不大, 太感性,太小资了, 没有关注社会热点问题. 什么时候Keso出电子杂志了, 我就得好好看看了, 但话说回来, Keso拿什么去装点电子杂志呢, 人家杨澜每期封面都有自己的玉照, 他只有文字, 所以他还只能写博客,不能出电子杂志.可见电子杂志这东西, 适合感性的人出, 理性的人, 写博客就够了, 没必要搞得这么花哨.

今天写到这了,赶紧去东恒打台球去了:-) 对了, 在这约球友了!线下练球啊!

权威人士的两把兵器

CSDN
说权威人士都有两把兵器,一曰“中国国情”,一曰“国际惯例”,见“海龟”则晓之以中国国情,遇土包子则动之以国际惯例,如此左右逢源,无往而不胜也,实际都是歪理。

QQ携5亿注册用户奔Web2.0
文章谈到, QQ Lab发布了两款Web2.0服务,QQ视频QQ书签, QQ以IM著名, 还推出QQ.com, QQ Game, QQ zone, QQ show, Paipai.com, QQ币, QQ在Alex排名第9, 紧随orkut和windows live. IM是中国网民的第一互联网体验, 中国网民对于新的用于改善用户获取,发表和共享信息的互联网技术如RSS, Blog, widget,online bookmarking并不感冒. QQ有望为中国网民普及web2.0理念.

越来越多的网站支持OpenID

继Digg, Microsoft, AOL, Yahoo, LiveJournal, MediaWiki后, WordPress37Signals宣布支持OpenID. 但之前R/WW的调查显示, 52%的人不知道OpenID, 但从现在的趋势看, OpenID会慢慢被大家接受. OpenID到底是中心化还是去中心化? 似乎不好回答.

2007年2月8日星期四

使用Yahoo Search Web Service.

这几天用Yahoo的Search Web Service去搜索评论信息,非常易用。现将使用方法稍作总结:


Yahoo Search Web Service 的主页是:http://developer.yahoo.com/search/


要使用YSWS, 需要首先在这里申请Application ID。
你可以下载Yahoo Search Web Service 的SDK , 也可以参考各Service的说明文档自己编写代码调用Web Service.


目前为止, Yahoo提供了以下服务的Web Service
各种服务的使用方法大同小异, 我主要使用了Web Search Service, 所以重点介绍Web Search Service 的使用方法:

Web Search Service 的页面是:http://developer.yahoo.com/search/web/, 包括四个服务:


每个IP每天可使用每种服务5000次, 如果你的IP变动, 则可查询更多, 如果需要超过这个限制, 参考Usage Policy.
Web Search可以算是最常用的一个服务了, 通过它我们可以搜索含有某个关键词的网页. 使用的方式很简单, 就是根据关键词拼一个url, 然后用这个url去获取结果, 最后从结果中提取你感兴趣的信息如链接等.


请求的base url是 http://search.yahooapis.com/WebSearchService/V1/webSearch


请求参数是主要有: appid, query , start, results等, query是要搜索的关键字, start是从搜索结果的第几个开始, results是需要返回的结果条数. 如何拼接请求参数, 请参考http://developer.yahoo.com/search/rest.html, 这是一个请求的例子: http://search.yahooapis.com/WebSearchService/V1/webSearch?
appid=YahooDemo&query=madonna&results=2



返回结果是一个XML文件, 也可以指定返回结果为JSON和PHP串行化格式, 这是返回文件的Schema, 从这个返回的例子我们可以一目了然的看出返回的格式:



<ResultSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:yahoo:srch" xsi:schemaLocation="urn:yahoo:srch http://search.yahooapis.com/SiteExplorerService/V1/PageDataResponse.xsd" totalResultsAvailable="617888" firstResultPosition="1" totalResultsReturned="2">
<Result>
<Title>Common Dreams | News & Views</Title>
<Url>http://www.commondreams.org/</Url>
<ClickUrl>http://rds.yahoo.com/SIG=11m331clj/EXP=1128100988/**http%3A%2F%2Fwww.commondreams.org%2F</ClickUrl>
</Result>
<Result>
<Title>JunkScience.com -- Main Page</Title>
<Url>http://www.junkscience.com/</Url>
<ClickUrl>http://rds.yahoo.com/SIG=11l98be9a/EXP=1128100988/**http%3A%2F%2Fwww.junkscience.com%2F</ClickUrl>
</Result>
</ResultSet>


如果出错, 你将会收到Error信息,


Yahoo Web Search Service 为开发者提供了各种语言的SDK.使用非常方便. 这里就不再赘述了.








2007年1月31日星期三

在Python中使用正则表达式

Python 的HowTo 文档Regular Expression HOWTO是学习Python 正则表达式的最佳参考. 现在还没有中文版. 有时间我希望能把它翻译成中文版. 这篇文档在Python的自带文档中也有.
这里是几个我看文档的新得:

  • 1. match 和 search的区别. match从string的开始匹配, 而search从任何位置匹配. 虽然用match(r'.*word')可以代替search(r'word'), 但因为.*阻止了优化, 所以除非从开始匹配, 其他情况推荐用search.

  • 2.怎样匹配一个完整的word, 用 re.search(r'\bword\b', 'this is a word , this is not a words'), 注意要有r, 否则\b将当作ASCII值为8的字符, 当然也可以这样, re.search('\\bword\\b', ...).

  • 3.多行匹配问题, 一般情况下, ^和$代表字符串的唯一的开始和结束位置, 当设置re.MULTILINE标志时, ^和$代表每行的开始和结束.

  • 4.re.DOTALL标志指示'.'可以代表newline.

  • 5.Lookahead Assertsion是很有用的模式,比如: .*[.](?!bat$exe$).*$ 可以匹配所有不以.exe和.bat结尾的带扩展的文件名. (?!...)代表当前位置不出现...

  • 6.非贪婪匹配, .* 是贪婪匹配, .*?, 非贪婪,



  • 这是Regular Expression HOWTO所有的章节:
    Contents
    1 Introduction
    2 Simple Patterns
    2.1 Matching Characters
    2.2 Repeating Things
    3 Using Regular Expressions
    3.1 Compiling Regular Expressions
    3.2 The Backslash Plague
    3.3 Performing Matches
    3.4 Module-Level Functions
    3.5 Compilation Flags
    4 More Pattern Power
    4.1 More Metacharacters
    4.2 Grouping
    4.3 Non-capturing and Named Groups
    4.4 Lookahead Assertions
    5 Modifying Strings
    5.1 Splitting Strings
    5.2 Search and Replace
    6 Common Problems
    6.1 Use String Methods
    6.2 match() versus search()
    6.3 Greedy versus Non-Greedy
    6.4 Not Using re.VERBOSE
    7 Feedback
    About this document ...