2004-10-28

征服香山和成功的条件

10月23日上周六,我和火炬参加了第二书店组织的书友会活动香山论剑



我在山顶手拿第二书店旗帜的照片
tinyfool登上香山留念

大家在山顶的合影
第二书店香山论剑山顶留念


下山之后,我们在香山脚下一个饭店里面进行了一个小小的座谈会。最后的时候,韩磊让每个人说一个自己认为对成功最重要的词。有人说理想,有人说智慧,有人说努力,到我的时候,我说“从今天爬香山的经验看,我认为是坚持”。

其 实刚刚开始爬香山的时候,还没有到达整个路程的十分之一,我就感到了筋疲力尽,我就觉得自己完全无法爬上去(一开始走得有点急)。当时,我坐在一个山间小 店的门前,就想在那里等待他们归来。但是,韩磊和两位霍大侠(火炬和霍泰稳)一直鼓励我,还说好了大家一起慢慢走,一直等着我。我才继续踏上了漫漫的攀登 之路。我的体力状况确实很不好,每走一段路就必须休息一次,韩磊和两位霍大侠一直都耐心地等我,鼓励我。就这样慢慢地走到了西山晴雪碑,整个路程已经过了 大半,我又一次有放弃的想法,因为这也是不小的一段路程。大家总不能说我没有爬吧。而且虽然知道马上就快到了山顶了,但是体力消耗很大了,而且感觉上面的 越来越难走了。这时候,我们走上了一条比较小的路,开始越来越险,前进也越来越慢。这个时候火炬说,tiny这下子没有办法了,这条路往下走比往上走难多 了。是啊!这条路,比我们一直走的大路险得多也近得多,而且确实下比上还难。如果往下走,我甚至担心我会滚下去。于是,我开始坚定的往上走。这条路虽小, 但是人一点也不少,我们在人潮之中,移动速度很慢,但是这样我也能更多的休息,反而感觉不到累。最后因为一路上等我,我们四个人,基本上是最后到达山顶 的,比第一名晚了40多分钟。但是我们确实到达了,我也确实爬上去了。

从一开始,我不敢爬,被香山吓倒,到最后爬上了香山,让我感触良 多。爬一座香山,就像做一个项目,就像我们的人生道路,看起来困难重重,离成功遥遥无期。甚至因为我们的能力问题,我们会感到项目是无法完成的,成功是可 望不可及的。但是如果能一直坚持下去,成功了以后,你再去看那些困难,你就会觉得他们是多么的简单啊!

所以,成功在很多时候最重要的是坚持。朋友的鼓励和帮助也很重要,因为这些往往是我们能够坚持下来的动力。在接近成功的紧要关头,让自己走上一条不能回头的路,也是很重要,因为越接近成功,人们越容易满足,越容易放弃。这些就是这次登山给我最大的收获。

最后是广告时间:
发现每次书友会美女都很多,所以以后有机会我会多参加第二书店的书友会的。欢迎大家浏览第二书店书友会官方网站,关注书友会活动。
第二书店书友会 http://www.dearbook.com.cn/Fellowship/

香山论剑官方报道


第二书店,第一服务




有了第二书店,我也能攀登上知识的高峰


(这个,那个,,,,广告费什么时候结了吧!)。



2004-10-22

我这10来年(Tinyfool的程序人生)

看了火炬的这17年,很汗颜啊!说起来火炬比我还小,但是编程的时间比我长多了。我已经记不清到底是多少年了,基本上超过10年,所以,题目就是我这10来年,学习火炬,哈哈。

说不清楚什么时候对电脑开始感兴趣的,我小时候开始喜欢数学,后来喜欢物理和化学。小学的时候,最得意的就是学了物理,自己用漆包线和喇叭上的磁铁,做了 一个电动机模型。在大点,一天到晚把铁钉子烧红了淬火,或者电解水,电解食盐水什么的。真正有电脑的概念,可能是在看动画片《星球大战》的时候,那里有一 个大型电脑雨果,无所不知无所不能,让我很向往。

初中的时候(初一还是初二已经记不清楚了,91,91年的样子),软磨硬泡地让父母给我买了一个学习机,才算真的见了什么是电脑。所谓学习机就是一个任天 堂游戏机加上键盘,加上一些功能而已。我买的还不是当时最流行的小霸王学习机,是一个杂牌机器,居然连存储功能都没有,当时它已经是我的宝贝了。我写的第 一个程序,就是模仿学习机里面内置的打字练习游戏,用basic写的,有400多句吧!

后来,看到别人的学习机有logo语言,我又自己写了一个logo语言解释器,那是在课堂上写的,先写在一些小纸片上,然后放学回家输到学习机里面,测 试,然后修改了在继续在纸片上面。最后也没有完全的完成,但是logo语言的很多功能都做出来了。这是我这辈子写的最艰难的程序,因为每次调试他都要先把 它输入一遍。

那时候,我还很热衷于用学习机编游戏程序,那时候遍过类似马利奥的程序,编过类似于街霸的程序,当然都是很小的,而且很粗糙的。

1994年,到了高中,我们有了计算机课。一上来,我就做课代表,因为有同学反映一天到晚看我捧着计算机课本。那时候我们的计算机课教的是GW- Basic。学校大部分的电脑是8086,有两三台286已经是高档货了。那时候同学里面学过电脑的就很少。少数几个家里有电脑的最多也就是打字还算熟 练,班里面甚至年级里面编程最强的就是我了。每次快要教计算机作业的时候,到我那里问问题的同学都是门庭若市,相当有面子。

高二的暑假,学校找了人来课外培训windows。我都不知道windows是什么,但是我知道是学习电脑,于是我就去了。那是我第一次看到 windows3.1,第一次看到中文之星,第一次看到cced等等,第一次知道什么是ucdos。羞愧啊!高二的时候,我也参加过奥赛的选拔,但是只有 一个鼓励性的证书,那考题算法部分都是Pascal,但是我那时候都不知道是Pascal。

象着了魔一样,自从我上了高中以后,对物理化学兴趣越来越小,自己的小实验室,慢慢的只有电视机和学习机了。高一的时候买了本c语言的书,现在看起来是多 么浅显易懂啊!但是当时那就是天书,我的另一个同学买了一本borland c++ 3.0的中文手册,那更是一本天书。但是那是我们两个人的宝贝,每天都在抢。那时候,每天不管上什么课,我都在看那本厚厚的c++,但是我的学习记没有 c,没有c++,我也没有电脑。一切都是在脑子里面,我在脑子里面去想象c++是一个什么东西,c是什么东西。原因很简单,因为据说c/c++是最好的编 程语言。

高三临近高考之前的一个月,我父母居然给我买了一台电脑(说到这里,我觉得一直愧对父母。他们对我一直都是那么的呵护,但是我一直也没有给过他们什 么。),一台P133。我兴奋的连上电源线,按下power键,轰的一声,一股清烟,机器并没有点亮。吓坏了我,后来仔细检查了一下电源线,电源线,居然 烧穿了,但是机器有没有问题还不知道。我当时用一截电线接在一个插头上,另一边接了两个万用表的表笔,插到了电脑后面的插口上面,再一按power,机器 亮了。知道机器没有问题,找了两个铜柱,自己做了临时的插头,插在电脑上面,就这么用了一个晚上。第二天才去换了一个好的电源线。

高考后,我天天玩电脑,编程序,机器上还是没有c和c++(当时没有网络啊,盗版盘我们那里也不好买)。买来的盘里面有VB3,有Delphi2,于是,我开始学VB和Delphi。一个假期过后,我又胖了30斤。

大学课程里面才有了c。我才真正的见到了Turbo C。后来在机房里面偶然发现了一个机器有Borland C++ 3.0,到那时候和我一眼看到Borland c++ 3.0的中文手册已经三年多了,恍如隔世,那是我就热泪盈眶。第一年我没有把电脑带到学校。那时候学校机房的主流机型是486,而且安装都是dos。很多 学校的同学都没有见过win95。学校里面有些人每天琢磨怎么把win95弄得更小,可以用更少的软件带到机房去。最早的时候是7张盘,最后是三张盘,不 能说是一种奇迹。那时候我更关心的是C,我开始了艰难的C/C++的学习。算起我91,92年接触basic,后来的GW-Basic,后来的VB,我已 经是一个Basic的绝对高手了。但是这些经历一开始对我学C都是阻碍,我一次又一次的发现我不能习惯每月后面加一个分号,我不习惯C里面变量要付初值等 等。那个时候,大家一天到晚编的程序都是一些仿Win95的三维界面等等,人人都觉得Win95是个好东西,但是人人都觉得能自己做出来。大一那一年,我 天天泡在学校机房里面,那时候学校高手不多,对我的水平提高不大,但是认识了很多朋友,这对我的一生都有影响。

大二的时候,我把电脑带到了学校,那时候宿舍不能放电脑。所有的学生的电脑都放在宿舍楼的一楼的一个大房间里面。我们把那里叫做7号楼机房,那里面出来的 人,有一个去了腾迅,其实他是学化工的,有一个去了用友,其实他是学机械的。我也是学机械的,但是从来没有从事过机械行业。我们都是在中国的大学,自学出 来的人。有时候真的有点讽刺,我们学校里面我熟知的高手多不是计科系的。

在7号楼机房,学化工的那个兄弟,因为给化工系做主页,得到了一个上网账号。所以7号楼的一帮子兄弟们第一次上网了。那个晚上,我们10来挤在一个小屋子 里面(大屋没有电话),一起看化工的那个兄弟上网告诉我们什么是电子邮件,什么是QQ。我的第一个邮箱,QQ号,ICQ号都是那个晚上得来的。我们一起用 ICQ和外国人聊天,一起商量怎么回复,怎么问问题。那一夜,我才知道了互联网到底是什么,虽然之前看过多少介绍的文章。

大二我参加了一个学校搞的网页设计大赛,得了技术类的一等奖。学校信息中心的主任刘老师很赏识我,所以邀请我到信息中心去玩。我们就聊互联网,聊技术。后 来我问刘老师能不能给学校的同学们一个地方可以做自己的网站,刘老师说很好,就让我来负责。于是,就有了飞扬。我找了几个玩得好的朋友,凯子,14, netfire,joan,搞起了学校的第一个学生网站,我心飞扬。那时候,我们在实验楼的2楼有一间20平米左右的办公室。我们每个成员都有自己的电 脑,大家的电脑都放到办公室里面,就成了我们的我心飞扬工作室。为了让学校更多的学生可以做自己的网站,我们第一个业务就是免费空间。我们设计了一个自动 申请自动开通的软件。后来我做了一个mp3下载系统,在后来我们做了一个免费图书,放了一个论坛。那时候在飞扬是我在学校最快乐的一段时间。虽然一开始没 有什么收入,也没有什么奖励。但是我觉得几个人在一起能做一些事情,本身就很有意思。后来我们还承接了学校的几个网站来做,挣了一些钱,现在看起来不多, 当时还是不少的。

那时候,在学校我的名气很大。还有一些专业搞培训把我叫去,让我给同学们做讲座。所以虽然成绩不好,但是从来没有被人看轻过。

那时候,主要都在用asp编网站方面的东西,很少做一般的应用程序。唯一就是学习tcp/ip,用vb写了一个pop3邮件服务器端。

再后来,我毕业了,两年以后,我心飞扬因为后继无人,无疾而终,让我很惋惜,但是也不能做些什么了。也许都怪我太理想主义了,理想主义不那么容易生存的。

毕业之后,我找了一个网管兼程序员的工作,什么样的程序都编,什么样的网络问题都管,非常郁闷,也经常感到疲倦。

两年之后,我换了工作到现在的公司,主要是做软件。

这10年来,几乎所有的流行技术,我都摸过,但是都不够精通。数据库,网站,网络,嵌入几乎所有的领域,我也都玩过,都算不上精通。现在仍就茫然不知道方 向,但是总是觉得自己还是喜欢这个职业的,所以即使有挫折,也不悔。即使以后仍旧找不到方向,我还是想去探寻一切我自己感兴趣的领域,无怨无悔。



2004-10-14

UrlRewrite(地址变换)技术在IIS 5.0/ASP平台上面的应用

在聊这个技术问题前,我不由得想起一个可笑的故事。NetCraft曾经做了一个测评,这个测评根据比较大量网站页面的扩展名是ASP.NET的还是JSP/Servlet的,得到了一个结论,现在ASP.NET的应用超过了JSP/Servlet。

这个测评引发了大量的讨论,很多用JSP的技术人员嘲笑这个测评。因为这个测评的结论忽略了一个很大的问题。那就是,JSP开发的网站的页面,一定是.jsp么?

答案当然是否定的。特别是mvc结构的网站常常都是没有.jsp扩展名的,这是一个惯例了。如果不是为了避免混淆,我们甚至可以让JSP的引擎来解析扩展名为aspx的jsp程序,或者让ASP.NET的引擎来解析扩展名为jsp的ASP.NET程序。唯一需要做的就是在服务器的管理工具上面做一些选择,或者修改配置文件等等。

另外,我们还可以用更强大的技术UrlRewrite,来把动态页面的地址变成象一个静态页面一样,或者把动态页面的参数,变成静态页面地址中的路径名或者文件等等。所以,有时候,请不要太相信你的眼睛,只要服务器管理员想做,那么也许某个.htm地址其实是一个ASP.NET程序,某个.doc其实是一个JSP程序。眼见并不一定为实。








UrlRewrite是怎么样发生作用的?

简单的说,一个web server的工作就是根据用户请求的地址发送一个文件,或者运行一个cgi/脚本,并把运行结果发送给用户。加入了UrlRewrite功能的web server的工作流程略有变化,首先是看用户请求的地址是否包括在我们的替换规则里面。如果在,先把用户请求的地址进行改变,然后服务器按照新的地址进行文件传送或者cgi/脚本执行。参看下图:




加入了UrlRewrite功能的web server的工作流程



UrlRewrite有什么用处?

1、满足搜索引擎的要求
某些搜索引擎不能支持动态页面的抓取,大量的信息就不能被潜在用户搜索到。用UrlRewrite技术你可以把 http://server/news.asp?id=111 变成 http://server/news/111.htm 这样他们就会被搜索引擎收录了。google虽然可以抓取动态页面,但是google对动态页面的评分一般低于静态页面。所以,对大量信息发布的网站,把网站地址改变成静态的绝对是值得的。

2、隐藏技术实现,提高网站的移植性
每个页面都挂着鲜明的.asp/.jsp这种开发语言的标记,可以一眼让人看出你的网站使用什么语言做的。而且在改变网站的语言的时候,你需要改动大量的链接。而且,一个页面修改了扩展名,他的pagerank也会随之消失,从头开始。我们可以用UrlRewrite技术隐藏我们的实现细节,这样修改移植都很方便,而且完全不损失pagerank。

3、满足美感的要求
对于追求完美主义的网站设计师,即使是网页的地址也要看起来简洁明快。形如 http://server/news.asp?channel=3&id=111 的网页地址,肯定是上不了完美主义者的法眼的,用UrlRewrite技术,你可以把他变成 http://server/news/3/111.htm 。

IIS 5.0支持UrlRewrite么?

答案很简单,不支持。但是我们可以通过安装服务器扩展让IIS支持。

目前有两种产品支持IIS 5.0的UrlRewrite,isapi_rewriteIIS Rewrite

我们采用isapi_rewrite Lite Version(免费版本)。


如何进行UrlRewrite的设置?

isapi_rewrite利用正则表达式进行替换规则的表示。

下面是一个简单的例子,我想让我们的用户输入 http://server/test-12314.html 实际上访问的是 http://server/test.asp?id=12314 。那么我们的匹配表达式应该是 /test-([0-9]*).html 对应的格式化表达式应该为 /test.asp\?id=$1 。

进行正则表达式的编写的时候,可以利用isapi_rewrite提供的正则表达式测试工具(默认安装提供),进行调试。如下图:


正则表达式测试工具



做好了匹配表达式和格式化表达式,我们可以按照下面的格式,把它们放到安装目录下的httpd.ini里面。

格式:RewriteRule 匹配表达式 格式化表达式
刚才的例子:RewriteRule /test-([0-9]*).html /test.asp\?id=$1

文件保存后,不需重新启动iis即可生效。

参考资料:

面向Google(Search Engine Friendly)的URL设计
http://www.chedong.com/tech/google_url.html

ISAPI REWRITE文档
http://www.isapirewrite.com/docs/



2004-10-10

GMail Drive shell extension,在Windows下面利用Gmail做网络硬盘的工具

之前,我在这里介绍了GMailFS这个可以在linux下面利用Gmail账号当网络硬盘使用的工具。前些天,我又听说了GMail Drive shell extension。作者bjarke承认这是收到了Linux下的GMailFS工具的启发,而且,目前看来,这两个工具的文件系统都采用的是GmailFS文件系统。因为我一直没有成功在linux安装GmailFS,所以我只实际地测试了一下GMail Drive shell extension。

GMail Drive

坦率的说,这个工具很好用,但是还是有一些问题的。

发现的问题:
1、如果用户输入的账号密码错误,很难修改(我找不到修改的地方,那个相关菜单出现的规律很奇怪)。
2、文件系统有错误,因为GMail Drive和GMailFS工具采用的是一个GmailFS文件系统,所以目前不知道是GMail Drive的实现有误还是GmailFS文件系统本身有误。

GMailFS文件系统的简要分析:
1、文件和目录都是通过邮件来表现的(这是想当然的,因为GMail就是邮件系统)。
2、组成文件系统的邮件名形如 “GMAILFS 文件名(全路径) 类型标志(文件还是目录)”。
3、表现目录的邮件的附件内容为FLODE,表示文件的邮件的附件内容即为文件本身的内容。
4、文件的移动是复制+删除实现的。

GMail Drive shell extension如同它的名字所示,并不是一个磁盘驱动程序,而是一个Shell扩展,或者说就是资源管理器的一个扩展。这点和Linux下面的GmailFS工具不同,Linux下的GmailFS工具实现的是一个磁盘驱动程序。

GMail Drive shell extension下载:
官方网站
下载


相关主题
GmailFS-Linux下面利用Gmail做网络硬盘的工具



2004-10-02

Google的内容相关性广告简要分析

正如MS掌握住操作系统的市场以后,做什么就是什么一样,Google也在搜索引擎红旗不倒的情况下,彩旗飘飘了。这6年多来,Google一直给所有人一个非常专业的印象,Google只要涉足的领域一定就是这个领域最强的。

据说Google的内容相关性广告也有很多年的历史了,但是它进入我的视线并不久。去年还是前年开始有媒体报道Google在搜索结果上面放广告,特色就是文本广告,和搜索关键字紧密相关。

一个传统网站广告的模式可能是这样的:
某个卖“数码相机”网上商店在某个流量非常大的网站放广告。比如每天广告会被显示1万次,但是这1万次显示里面,有多少人注意到这个广告呢?可能是1/10,注意到了而且也有购买意向的人又有多少呢?可能有是1/10。所以,最后有效的可能只有10次显示。

Google的广告模式是这样的:
某 个卖“数码相机”网上商店在Google登记了一个广告。但是不是每个人访问Google广告都会显示。仅当有人在Google搜索“数码相机”的时 候,这个卖“数码相机”网上商店的广告才会出现。比如一天有100次都搜索了,那么这100次显示都是有效的(前提是没有人瞎搜着玩)。如下图:

在Google搜索数码相机


在没有准确的统计数字的情况下,我们去空谈好坏,可能还是不客观的。但是从用户角度讲,我喜欢Google的广告模式,因为我们经常面对的是,我们需要某个信息的时候找不到,不需要的时候它反而冒出来骚扰我们。

在Gmail的浪潮里面我们也发现了Google的内容相关性广告。当你阅读英文信件(可能是出于技术和市场的双重考虑,目前中文信件没有相关广告)的时候,你会发现邮箱右方有和你信件内容相关的广告。

Google AdWords和Google AdSense
Google 把给广告客户提供的服务叫做Google AdWords,把给广告发布商提供的服务叫做Google AdSense,实际上Google是一个广告中介。Google做的工作就是在适当的时候,在适当的广告发布商(我们可以认为Google的搜索引擎页 面也是一个广告发布商)的页面上,显示出来广告客户的适当的广告。

首先,我们看比如我是一家卖“数码相机”网上商店,我怎么得到Google的服务。首先我应该去Google AdWords登 记,然后输入我要显示的广告文字,如“微尘数码相机网上专卖”,和我希望能够引发我的广告的关键字,如“数码相机,DC”。然后,我需要确定一次点击我打 算付的费用(最低5美分,最高100美元)以及我每天打算付出的最大费用(最低5美分,最高无限)。然后在那里展示这个广告和怎么去展示这个广告,就是 Google面对的问题了。

然后比如我是一家数码产品评测网站,我想挣取广告费,我怎么得到Google的服务。首先我应该去Google AdSense登记,然后选择我喜欢的广告条样式,然后生成广告代码,放置在我的网站即可。这时候,有人可能会奇怪,这时候为什么不让我选择关键字呢?这样Google怎么把和我网站内容相关的广告找出来呢?

关 于这个问题,我们来看一下Google AdSense显示一个广告的流程。当我们在浏览器打开某数码产品评测的评测数码相机的文章的时候,浏览器执行里面的一段java script代码,这段java script代码来自Google。也就是说调用了Google的一段程序,Google的这段程序,首先得到了用户打开的网站的地址,然后在 Google保存的网站内容缓存(所以广告发布商,至少是已经被Google收录的网站,不然几乎没有收益。但是这也不是绝对的,没有被Google搜索 引擎收录的网页也会被提取关键字,这说明Google AdSense有一个独立的网页数据库保存不被Google搜索引擎收录的,但包含广告的页面。但是,显而易见,被Google搜索引擎数据库是更主要的 参考。)里面查找这个地址,没 找到这个地址,可能会做一个标记,要求蜘蛛以后收录这个地址,然后,直接返回一个随机的公益广告(Google不会支付任何费用)。找到了,进行分析,得到这个网址包含的关键字。然后在广告客户的数据库里面寻找和这些关键字相关的广告,这里还要做一些判断,用户的每次点击金额高的优先级高,用户的每日付费额度如果已经达到的不会再出现。这样呢,得到了应该要显示的广告,把它显示出来。

这个过程是我自己的分析可能有些地方不太准确,但是基本原理就是如此的。

Google AdSense是不是万能的?
答案很简单,绝对不是。最简单的一个例子,在我写的纪念918的文章下 面出现的广告居然是一个日本化妆品的广告(我倒不是抵制日货的强硬派,但是这样的广告多少有点尴尬。),原因很简单,我的文章里面出现了日本,还出现了 “砸了王府井的SK2专柜”的玩笑话。这样呢,Google就想当然的把化妆品的广告放了出来(当然每次放出来的广告可能不同)。但是这也不能说明什么, 因为目前科技而言,你让Google理解什么是918还确实有点困难。

相关主题
六翼的天使Google adsense 广告功略及〖google 广告三定理〗