2006年4月18日星期二

Windows IIS下论坛静态化分析

  这两天研究Discuz 4.1,并成功地将原来一个Discuz 2.5的论坛升级到了最新版本,个人感觉这个论坛实在不错。

  我的Discuz 4.1是在Apache+Php+Mysql下运行的,并开启了Url Rewrite,之后我发现整个论坛的大部分页面都可以使用html的静态地址方式来访问,感觉真不错,Apache实在太强大了,难怪现在用Apache的站点那么多。

  IIS下能否也实现这种静态化功能呢,我知道Helicon开发了一个叫ISAPI_Rewrite的ISAPI程序,可以在IIS下实现Url Rewrite功能,不过我自己还没有尝试过,过两天按照下面的操作测试一下看看效果如何。另外,下文Discuz提供的ZIP文件里的Rewrite.dll实际上就是Helicon的ISAPI_Rewrite程序,我对Discuz做为软件开发商居然也盗版同行的软件感到遗憾。

  参考文章:Discuz!4.1.0 IIS Rewrite配置方法(转自DISCUZ会员区)

  Discuz! URL静态化功能受到论坛所在服务器环境的制约,在开启此功能之前,请根据你的Web服务器环境,选择相应的环境配置方法,以下提供的iis6下的服务器配置..其它服务器(如apache,zeus)你可以根据原理自行配置。

  1、下载IIS Rewrite模块:http://download.discuz.net/4.1.0/discuz_iis_rewrite.zip

  2、将压缩包解压到任意目录,(如:C:Rewrite)。然后打开“控制面板”-“管理工具”-“IIS信息服务管理器”-“网站”-“您的站点”-“属性”。在“ISAPI筛选器”项点击“添加”,筛选器名称填入Rewrite,可执行文件为C:RewriteRewrite.dll;

  3、重新启动IIS就可以生效了。

  通过上述配置后,您就可以在Discuz!4.1.0后台中根据需要开启影响的静态功能了。

  无:不启用URL静态化功能。

  Discuz!Archiver静态化:当论坛启用Archiver功能时,Archiver内的所有链接均采用*.html形式。

  普通页面静态化:对论坛常用页面(如forumdisplay.php、viewthread.php、viewpro.php等)进行URL静态化转换。

  Archiver和普通页面均静态化:对Archiver以及论坛常用页面(如forumdisplay.php、viewthread.php、viewpro.php等)进行URL静态化转换。

  使用注意事项:

  您可以通过系统设置中Discuz!选项来控制URL静态化的打开或关闭及其工作状态,本功能对服务器环境有特殊要求,独立主机用户需要对Web服务器增加相应的Rewrite规则,因此需要服务器权限才可使用;对于虚拟主机用户,您需要向您的空间服务商进行咨询:空间是否支持Rewrite以及是否支持对站点目录中.htaccess的文件解析,只有满足这两条件,URL静态化功能才会生效。打开URL静态化后,论坛一些常用链接会变成类似discuz/forum-1-1.html形式,如果您的服务器环境不支持或者尚未配置好,访问这些链接会出现“网页无法显示”的错误信息,论坛将无法正常访问。发生无法访问的现象时,请您进入管理后台,关闭URL静态化功能,论坛即可恢复正常状态。

  本文提供的压缩包中还有一个httpd.ini文件,该文件是rewrite规则的配置文件。内容如下(无需修改):

[ISAPI_Rewrite]
# 3600 = 1 hour

CacheClockRate 3600

RepeatLimit 32
# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
RewriteRule ^(.*)/archiver/([a-z0-9-]+.html)$ $1/archiver/index.php?$2
RewriteRule ^(.*)/forum-([0-9]+)-([0-9]+).html$ $1/forumdisplay.php?fid=$2&page=$3
RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+).html$$1/viewthread.php?tid=$2&extra=page\%3D$4&page=$3
RewriteRule ^(.*)/profile-(username|uid)-(.+).html$ $1/viewpro.php?$2=$3

2006年4月17日星期一

深圳治安的现实和思考

  每一个深圳人都有被偷的经历,对于深圳的治安,深圳人却大多有苦难言,甚至感到绝望。

  我自己做为一个深圳人最近就有切身体会,昨天下午我的太太带着儿子去南山岁宝百货购物,晚上和另外一个女伴在南山岁宝下面的肯德基吃饭,却不料在肯德基中被盗窃团伙偷的身无分文。

  当时我太太和那个女伴将提包放在座位上,吃饭的时候也一直注意着提包,这时一个男人带着一个小孩过来,说我们的孩子把他小孩的手弄伤了,然后和我太太纠缠,以转移她们的注意力,只几秒钟功夫,我太太和那个女伴的提包就趁她们不注意的时候被偷走了。

  由于岁宝的那个肯德基没有监控录像,门口也没有保安,因此她们发现被偷后一点办法都没有,她们的损失非常惨重,两人的手机、数码相机、身份证、IC卡、银行卡、信用卡、钥匙等等全部丢失,两人一共损失了数千元,当时我太太打电话给我时候,我真吃了一惊,赶快打电话将信用卡和银行卡挂失了,否则信用卡不用密码就可以刷一万多,那损失更大了。

  可悲啊,在一个连吃饭都不安全的城市里生活是一种什么样的悲哀啊。而肯德基做为一家外资企业,怎么可以连顾客安全就餐都不能保证吗?只知道赚钱吗?

  以前大街上新疆小偷多,这没办法,我们深圳人在大街上走都是眼观六路,耳听八方的,见了新疆人模样的都远远地躲避,香港的游客也是一到深圳,就立刻把背包全部背在前面,在深圳,后面背个背包满街走是个非常危险的举动。但是,如果连在肯德基吃饭也变成危险的举动的话,那么这个社会的治安就已经濒于崩溃了。

  深圳的治安为什么会这么差,我想主要原因是这个社会贫富差距悬殊、两级分化严重所造成的。

  任何一种人生道路的选择都是一种经过反复计算后的理性选择。选择打工与选择偷盗都有它的理由与成本核算。打工的收益与风险与偷盗的收益与风险经过比较后,如让人觉得更合算,那么,选择偷盗而不选择打工就是一种更好的选择。

  一个没有什么文化的人在深圳几乎没有半点立足之地,如果他们去“血汗工厂”做劳工,一个月只有600-800元,而如果他们去偷窃,一天至少也有几百元,有时可以有上千元,钱来的太快,如果偷盗被抓的几率不是很高,被抓住后所受的惩罚不是很重的话,那么,选择偷盗而不是打工就是一种理性的选择了!就建设和谐社会而言,我们当然鼓励大家都去打工,愉快的去接受资本家的剥削与栽培,而不去上街偷盗抢劫去。

  我们可以痛恨这些犯罪分子,但我们不得不承认,我们的社会实际上已经让偷盗和抢劫的风险变得很低而收益很高,实际上是在逼迫一些破产的无产者走上犯罪道路,这就是社会的冰冷而残酷的理性。

  为什么那些偷窃者得不到应有的惩罚,是我们的警察太少太无能了吗?我看不是,警察在一两天时间就可以抓住乱发文章的网民,那为什么小偷却抓不住呢?原因是什么呢?是因为小偷太多了抓不过来,还是因为抓小偷得不到物质上的收益,不如抓嫖客妓女罚款来钱快?我希望不会是这个答案。如果说我对深圳警察有什么建议的话,目前的警察队伍由于一些既得利益者的干扰,从内部改革已经是非常困难了,我建议深圳政府能从香港引入一批警察的管理人员,改造我们现有的警察队伍,将其管理制度好好地改革一下,只要深圳的治安能达到香港的一半水平,那么广大的深圳市民就应该很满意了。

2006年4月15日星期六

屏蔽百度快照的方法

  有时候,因为内容的更改或者隐私问题,我们往往不希望别人通过“百度快照”的方法查看自己网站的某一些网页,这里提供了一段让百度快照失效的代码。

  原理很简单,百度快照里面只有抓取了当前页面的文字信息,而图片和JAVASCRIPT代码还是调用远端服务器上的代码,如果你的网页里有通过.js文件的方式嵌入javascript代码,那么修改这个.js文件,在文件中加入以下代码,即可阻止别人通过百度快照查看你当前页面:

var page_url = window.location.href;
if ( page_url.indexOf("cache.baidu.com") != -1) {
top.location="http://www.williamlong.info/";  //此处地址修改为你希望转向的地址
}

  更新:由于百度改变的快照算法,不从远端服务器获取JavaScript文件,因此这个屏蔽方法目前已经失效。

Google推出在线日历

  Google即将推出在线日历服务Google Calendar,试图与雅虎广受欢迎的Web日历和微软普遍使用的Outlook程序展开竞争。

  Google Calendar(测试版)目前提供英语版。Gmail用户将在下周就能够享受这项服务。在随后的几个月内,Google将推出多种语言版本的该日历。

  Google日历采用了AJAX技术,从界面上看,Google日历的确很像微软Office中的Outlook,但是区别是,微软开发的Outlook软件已得到桌面电脑用户的广泛使用,并且微软的Office已经垄断了桌面办公软件平台。

  但微软提供的网上服务并没有Google的体验好,Hotmail功能和速度都不如Gmail,MSN搜索也不如Google搜索,Google的其他产品如Blogger、Talk、Desktop等都是直接和微软的相关产品相竞争。

  Google较早曾经收购了网络字处理软件厂商Writely公司,这是一家提供在线文本编辑服务的网站,可以让人们能够在互联网上处理办公任务,因此人们一直推测Google将创建一个与微软的Office相抗衡的基于网络的办公软件服务。

  目前Google是唯一可以挑战微软的软件公司,Google提供的各种网络服务令人爱不释手,并且Google的口碑要好于微软,Google Fans也众多,如果Google哪天真的推出一个Google Office的话,微软的噩梦就到来了。

  Google日历的网址是:http://www.google.com/calendar

2006年4月13日星期四

Google的中文名字—谷歌

  全球知名的网络搜索引擎Google昨天在北京发布其全球中文名称“谷歌”。

  据了解,这是Google第一个在非英语国家起的名字。主持发布会的Google亚太市场总监王怀南解释说,之所以给Google起一个中文名字,是因为考虑到普通老百姓的需求。“Google的名字已经很好了,对于IT工作人员来说,这是非常方便的称呼,但是我们有大量普通的老百姓在使用Google,我们必须考虑他们的感受”。

  根据Google介绍,这一名字意味着“丰收之歌”,说是用“诗意的方式”寓意了“丰富多彩的搜索体验”,因为“用户搜索的过程就是收获的过程”。

  不过我个人认为这个名字起的不怎么样,发音不好读,也没有韵律,很生硬,名称的含义解释的也很生涩,相信大多数人还是喜欢使用Google这个词。

  另外还有一段小插曲,Google的中文名本来锁定的是“谷果”与“古歌”,两位中国掌门李开复、周韶宁就坚定支持“谷果”,但被下属抨击为“更像农产品公司的招牌”,而“古歌”则被认为暮气沉沉。结果Google亚太区市场总监王怀南起的“谷歌”成为“黑马”。

  IT圈内的人士也没闲着,无聊布棉昨天就迅速地给“谷歌”编了一个段子:

  说到傍大款,雅虎中国笑了,俺们后台有杨致远、马云,还有以前的周鸿一....

  说到2.0,iask笑了,俺们获得入选web2.0百强呐;

  说到农民,中搜笑了,俺们是养猪专业户,都快3.0了;

  说到吹牛,搜狗笑了,俺们张朝阳能说会道;

  说到知识,百度笑了,俺们知道你不知道我知道;

  说到文化,Google笑了,俺们中文名叫谷歌,注意,不是伟歌。

  连岳也编写了一个段子:“谷歌”写给中国政府的保证书

  1、我们保证找不到任何色情资讯,但是结果会指向新浪社会新闻。

  2、我们保证找不到任何垃圾资讯,但是结果会指向新浪名人blog。

  3、我们保证修改搜索技术,将中国提供的官员名单等同于以下关键词——

  4、清廉、幽默、朴素、十年一衣、爱民如子、拍案而起、爱、做爱!

  5、我们保证“做爱”是百度恶意攻击的结果。

  6、我们认为,1988年之后就是1990年。

  7、我们还认为,6月3日之后当然是6月5日。

  8、我们保证找不到任何国际新闻,我们保证找不到任何敏感的国内新闻。

  9、Google商标在中国将改成“000000”。

  10、“000000”读为“谷歌”,但我们建议读为“胡哥”。

Tomcat中文乱码问题的原理和解决方法

  自从接触Java和JSP以来,就不断与Java的中文乱码问题打交道,现在终于得到了彻底的解决,现将我们的解决心得与大家共享。

  一、Java中文问题的由来

  Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦。原因主要有两方面,Java和JSP文件本身编译时产生的乱码问题和Java程序于其他媒介交互产生的乱码问题。

  首先Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基于字节流的,如果Java和JSP编译成class文件过程中,使用的编码方式与源文件的编码不一致,就会出现乱码。基于这种乱码,建议在Java文件中尽量不要写中文(注释部分不参与编译,写中文没关系),如果必须写的话,尽量手动带参数-ecoding GBK或-ecoding gb2312编译;对于JSP,在文件头加上<%@ page contentType="text/html;charset=GBK"%>或<%@ page contentType="text/html;charset=gb2312"%>基本上就能解决这类乱码问题。

  本文要重点讨论的是第二类乱码,即Java程序与其他存储媒介交互时产生的乱码。很多存储媒介,如数据库,文件,流等的存储方式都是基于字节流的,Java程序与这些媒介交互时就会发生字符(char)与字节(byte)之间的转换,例如从页面提交表单中提交的数据在Java程序里显示乱码等情况。

  如果在以上转换过程中使用的编码方式与字节原有的编码不一致,很可能就会出现乱码。

  二、解决方法

  对于流行的Tomcat来说,有以下两种解决方法:

  1) 更改 D:Tomcatconfserver.xml,指定浏览器的编码格式为“简体中文”:

  方法是找到 server.xml 中的

    <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" redirectPort="8443" acceptCount="100"
    connectionTimeout="20000" disableUploadTimeout="true" URIEncoding='GBK' />

  标记,粗体字是我添加的。

  可以这样验证你的更改是否成功:在更改前,在你出现乱码的页面的IE浏览器,点击菜单“查看|编码”,会发现“西欧(ISO)”处于选中状态。而更改后,点击菜单“查看|编码”,会发现“简体中文(GB2312)”处于选中状态。

  b)更该 Java 程序,我的程序是这样的:

public class ThreeParams extends HttpServlet {
  public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
      response.setContentType("text/html; charset=GBK");
      ...
  } 
}

  粗体字是必需要有的,它的作用是让浏览器把Unicode字符转换为GBK字符。这样页面的内容和浏览器的显示模式都设成了GBK,就不会乱码了。

2006年4月11日星期二

伤心藏南

  在中国版图上,有一块9万平方公里面积、相当于浙江省的美丽而又富饶的地域,被印度实际控制,这便是根据非法的“麦克马洪线”而被印度窃据的藏南地区。1962年,印军向中国边防军挑衅,中国被激怒,打了一场漂亮的反击战,追击部队的挺进速度比印军逃亡的速度还快,一个被印度军方夸耀中国军队要打半年的山口结果只用一个下午就被攻克了。

  中国用战争手段表达了维护中国版图统一的坚强决心,然后将军队撤回原防区驻防,印度终毛泽东之世虽然不敢再宣扬对藏南的主权,然而却继续窃据藏南。1987年印度宣布在藏南地区成立“阿鲁纳恰尔邦”(Arunachal Pradesh),同时向该地区大量移民,企图造成一个既成事实,目前人口几乎和整个西藏的人口一样多,让中国投鼠忌器。

  藏南地区因此成为中印之间邦交正常化的最大障碍。由于1962年边界战争的阴影,印度始终将中国作为假想敌。为保持印度在藏南地区的绝对优势,印度不遗余力地购置先进武器,不停地向藏南移民。目前定居在那里的印度人比中国原住民门巴族、珞巴族、爱缔族(僜人)还多。最令人扼腕的是,由于藏南地区已经被印度窃据长达四十多年,许多不明真相的国家都已经误认是印度领土,在第三方出版的地图中,只有联合国将藏南标注为争议地区,而其它多数国家都将藏南涂上印度的颜色。

  维基百科全书关于“藏南”的条目是这样写的:

  藏南属于西藏的一部分,并且被中华人民共和国要求为西藏自治区的下属地区。中印边境战争之后,主体为印度控制,并且现在为阿鲁纳恰尔邦。

  1914年的中英藏西姆拉会谈,在会上英国全权特使威廉·亨利·麦克马洪提出麦克马洪线为西藏和英属印度之间的边界,该线将藏南地区割与英国。后来英藏代表皆签字批准该线,中方代表则因中央政府反对而没有签字。中方至今的观点是:西藏是中国的一部分,不是一个主权独立的国家,因此西姆拉会谈条约只有单方签字(即英国),应视为无效。中国所坚持的是中印传统线。

  1962年的中印边境战争,中国曾经夺回藏南,但由于种种原因而退回实际控制线。印度在1982年建立阿鲁纳恰尔邦,遭到中国的强烈抗议。但中国并没有采取军事行动以夺回该土地。

  解放军作家金辉对藏南那片土地这样换算:

  ——相当于一个江苏省、一个浙江省;

  ——相当于三个台湾、六个北京;

  ——相当于一个匈牙利、两个丹麦、三个比利时;

  ——相当于六个科威特;

  ——相当于十个英阿争议的马尔维纳斯群岛;

  ——相当于二十个日俄吵得不可开交的北方四岛;

  ——是二次世界大战以来世界上一国被另一国强行侵占的最大一片土地;

  ——是中国版图的一百零一分之一。

  那一片被中国收复又放弃的土地是比西藏任何其他地方都更富饶的地方。那里地处喜马拉雅山南麓,海拔下降到一二千米甚至几百米,有印度洋暖风的滋润,属亚热带生态环境。土地极其肥沃。植物茂盛,能够生长菠萝香蕉。自然景观奇异。矿产丰富雅鲁藏布江著名的“大拐弯”,可利用的落差2230米,如果横切大拐弯建一条40公里长的引水隧道,可建成世界最大的水电站,我们失去的这片土地,是西藏人民历代居住的土地,是西藏气候最好、物产最丰富的一片宝地,然而这片领土却在我们手中,被随随便便地丢掉了。

  据说,国际上有以下规定:一国占据某地50年以上,国际上就承认该国对这一地区的合法拥有权。藏南,这片肥沃而富饶的土地,看来已经永远失去了。

  参考文章:伤心藏南

  在东经92度至97度之间的约9万多平方公里的喜马拉雅山脉南坡,可是一块风水宝地,不要以为这里属喜马拉雅山脉就尽是些冰雪满野的荒漠。在夏季,由于迎着从印度洋上吹送来带着大量水分和热量的西南季风,这里温暖而多雨,年平均降水在9000毫米以上!是世界上降水量最大的地区之一,可种植许多亚热带作物,肥沃得有西藏的“江南”之称,想不到吧?

  这块面积巨大得相当于浙江省而又富饶的地域,却是世界上人口最多的两个发展中国家存在主权争议的地区。

  在1913年10月在印度北部西姆拉有的一个会议。参加会议的有中国政府的代表、英国政府代表及英印政府人员和中国“西藏地方”的代表,主要讨论中国和(英属)印度的边界问题。由于(袁世凯)北京政府忙于征讨南方的革命力量(孙中山的“二次革命”)和各方意见分歧,根本谈不成什么协议。其实,协议只不过是英国将攫取到手的权益合法化的形式而已,何况英国侵略我国西藏地方的野心根本就不受什么协议的束缚。在1914年的3月24日,(英)印度殖民政府外务大臣享利·麦克马洪(英国政府代表)竟背着当时与会的中国政府代表,私自同西藏地方代表在印度新德里以秘密换文的方式炮制了所谓的“中印边界线”,即“麦克马洪线”(就是上图中青色的线),这条分界线与此前国际上习惯认定并在各种官方(包括英国)出版物和地图上一直沿用的分界线(上图红线,传统习惯线)不同,它大大向西藏纵深推进,把原本在西藏境内资源最丰富的九万多平方公里划进了大英帝国的印度殖民地,将中国西藏地方历来有效行使统治权的地方向北压缩了一百多公里。

  正是这种将国家领土的私相授受,历届中国政府都不承认这条线的合法性。而英国人在西姆拉会议之后二十年时间,出于担心合法性不足,一直没敢公开宣布这个“条约”,也没有在英国出版的地图上改变中印边界的传统划法。

  然而,一失足成千古恨!在1962年10月的中印战争中,中国在失地尽复的情况下,将军队悉数撤回至实际控制线(青色线附近)后20公里,不啻于在事实上承认麦线存在或有效。而印度人又回到了那里,耕作建设,繁衍生息,已成了六、七百万新一代印度人除此地之外已无别的地方是他的“家”的一块土地,再收回,我看:难矣!一时的失策,竟做成了连麦克马洪也无法做到的事!

  在当时的苏、中、美大三角大战略中,中印之矛盾是虽是次要矛盾,不值得与之扩大战端,但在当时失地尽复的情况下,军威显赫,各族同仇(大量物资,如炮弹等是在牦牛也无法爬行的情况下,由我藏胞一发一发山那边背过来的),并且更重要的是,当时印度东北一带风声鹤唳,已无可战之兵!是完全可以守住的。守住了,在谈判桌上就占主动:既有历史依据又有实力控制。而现在,既不战又不守,又不能把印度拉上谈判桌,这究竟算什么回事?!就算上了谈判桌,能希望印度会原原本本地把这块领土交还中国?代价是什么?有多大?

  失策!徒唤奈何!