<?xml version="1.0" encoding="GBK" ?>
<rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dcterms="http://purl.org/dc/terms/">
 <channel>
  	  <title><![CDATA[那些心情在岁月中，已经难辩真假]]></title>
	  <link>http://ase2001.blog.163.com</link>
	  <description><![CDATA[他们已经被风吹走，散落在天涯..... 用色眼去看待世界,你会发现到处春光明媚。]]></description>
	  <language>zh-CN</language>
	  <pubDate>Wed, 30 Jul 2008 17:20:35 +0800</pubDate>
	  <lastBuildDate>Wed, 30 Jul 2008 17:20:35 +0800</lastBuildDate>
	  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
	  <generator><![CDATA[NetEase Space]]></generator>
	  <managingEditor><![CDATA[ase2001]]></managingEditor>
	  <webMaster><![CDATA[阿兹猫]]></webMaster>
		  <ttl>120</ttl>
	  <image>
	  	<title><![CDATA[那些心情在岁月中，已经难辩真假]]></title>
	  	<url>http://ava.blog.163.com/photo/xqDxBA84bQ6SHKSSq8H_YQ==/2848245289335128070.jpg</url>
	  	<link>http://ase2001.blog.163.com</link>
	  </image>
  <item>
  	<title><![CDATA[开心网奴隶买卖随机事件表]]></title>	
    <link>http://ase2001.blog.163.com/blog/static/42055200863045146373</link>
    <description><![CDATA[<div>酷暑将至，政府发给你防暑降温费￥500<BR>居委会大妈向你发放低收入人群生活补助金￥300<BR>你进奥运村瞎溜达，狗屎运超好，捡到现金￥400<BR>你穷得像要饭的，来看奥运的老外施舍给你￥500<BR>你突发慈悲，怜悯扮演成乞丐的老太太们，现金减少10%<BR>海关总署严查人口走私，对你罚款，你的现金减少15%<BR>人口黑市老大眼红你的生意，强收保护费，你的现金减少20%<BR>一妙龄少女在地铁里碰了你一下，说：“别挤了!”，你的现金少了25%<BR>转运奴隶的火车发生重大相撞事故，你损失了30%的现金<BR>近期发生肠道病毒感染疫情，你的奴隶身价大跌30%<BR>传闻政府将大幅提高印花税，你的奴隶身价大跌20%<BR>你的奴隶众多，于是成立新世纪奴隶股份有限公司，股票上市获得资金￥19800<BR>农奴制被推翻，你的所有奴隶全部解放<BR>你的奴隶省吃俭用，为你省下￥400<BR>你的奴隶刘月被查患有“脑子进水症”，你损失了医药费￥199<BR>你的奴隶刘月偷偷地买了张福利彩票，中了一等奖，奖金￥888元归你所有<BR>你的奴隶刘月出任妇炎洁广告代言人，你获得收益￥1888<BR>你的奴隶刘月在黄金搭档杯模特比赛获亚军，身价提高了￥666<BR>当地政府向你收取了人口交易牌照税，你的现金减少了5%<BR>刘月的开心网好友们一起把你爆打一顿，并把Ta给解救了出来<BR>你的奴隶被新盛大公司聘为总裁兼CEO，你获得意外收入￥10000<BR>你的奴隶到山西黑煤窑打工，给你赚回￥600<BR>政府打击拐卖妇女儿童专项行动中，你的女奴被警方全部解救释放<BR>你的奴隶xx被谣传与黑帮老大有暧昧关系，身价大跌20%<BR>近期股市楼市大跌，大量热钱拥入人口黑市，你手里的奴隶不同程度地升值了<BR>物价飞涨，你作为低保户，获得政府临时物价补贴￥250<BR>国际粮荒爆发，你的奴隶逃跑出去倒卖泰国大米！</div>]]></description>
	    <author><![CDATA[阿兹猫]]></author>
	    <comments>http://ase2001.blog.163.com/blog/static/42055200863045146373</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://ase2001.blog.163.com/blog/static/42055200863045146373</guid>
    <pubDate>Wed, 30 Jul 2008 16:51:46 +0800</pubDate>
    <dcterms:modified>2008-07-30T16:51:46+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[APACHE GZIP （全当留个备份吧）]]></title>	
    <link>http://ase2001.blog.163.com/blog/static/4205520086110549497</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">原文出处: <A href="http://www.javatang.com/archives/2007/03/10/3018122.html">http://www.javatang.com/archives/2007/03/10/3018122.html</A></P>
<P style="TEXT-INDENT: 2em">作者: Jet Mah from <A href="http://www.javatang.com/">Java堂</A></P>
<P style="TEXT-INDENT: 2em">声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明！ </P>
<P style="TEXT-INDENT: 2em">众所周知，在HTTP1.1中支持gzip压缩，这样可以缩小页面的容量从而加快页面的显示速度。可以使用这个在线的<A href="http://www.port80software.com/products/httpzip/compresscheck">HTTP压缩测试工具</A>&nbsp;<A href="http://www.port80software.com/products/httpzip/compresscheck">http://www.port80software.com/products/httpzip/compresscheck</A>&nbsp;来检测一下你的站点是否开始了gzip压缩。</P>
<P style="TEXT-INDENT: 2em">Apache默认的http.conf配置文件中没有开启gzip压缩，apache1.3.x可以用mod_gzip进行优化网页浏览的速度，在apache2中也尝试用mod_gzip，但是配置后确发现网页不能正确显示（空白页），所以改换为mod_deflate。</P>
<P style="TEXT-INDENT: 2em">下面说一下怎样在Apache2下开启gzip压缩：</P>
<P style="TEXT-INDENT: 2em">
</P><OL title="Double click to hide line number." ln-show?>
<LI># 加载deflate模块 
</LI><LI>LoadModule deflate_module modules/mod_deflate.so 
</LI><LI># 设置压缩频率，取值范围在 1(最低压缩率) 到 9(最高压缩率)之间 
</LI><LI># 不建议设置太高，虽然有很高的压缩率，但是占用更多的CPU资源 
</LI><LI>DeflateCompressionLevel 3 
</LI><LI># Compress everything except images 
</LI><LI>&lt;Location /&gt; 
</LI><LI># 插入过滤器 
</LI><LI>SetOutputFilter DEFLATE 
</LI><LI>&nbsp; 
</LI><LI># Netscape 4.x 有一些问题... 
</LI><LI>BrowserMatch ^Mozilla/4 gzip-only-text/html 
</LI><LI># Netscape 4.06-4.08 有更多的问题 
</LI><LI>BrowserMatch ^Mozilla/4\.0[678] no-gzip 
</LI><LI># MSIE 会伪装成 Netscape ，但是事实上它没有问题 
</LI><LI>BrowserMatch \bMSIE !no-gzip !gzip-only-text/html 
</LI><LI># 不压缩图片 
</LI><LI>SetEnvIfNoCase Request_URI \\.(?:gif|jpe?g|png)$ no-gzip dont-vary 
</LI><LI>&lt;/Location&gt;</LI></OL>
<P></P>
<P style="TEXT-INDENT: 2em">通过上述的设置之后就在Apache中开启的HTTP压缩，试一下页面显示速度是不是提升了很多？</P>
<P style="TEXT-INDENT: 2em"><A href="http://httpd.apache.org/docs/2.0/mod/mod_deflate.html"></A>&nbsp;</P></div>]]></description>
	    <author><![CDATA[阿兹猫]]></author>
	    <comments>http://ase2001.blog.163.com/blog/static/4205520086110549497</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://ase2001.blog.163.com/blog/static/4205520086110549497</guid>
    <pubDate>Tue, 1 Jul 2008 10:54:09 +0800</pubDate>
    <dcterms:modified>2008-07-01T10:54:09+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[google shell 版本]]></title>	
    <link>http://ase2001.blog.163.com/blog/static/42055200851494144842</link>
    <description><![CDATA[<div><P>地址 <A href="http://goosh.org/">http://goosh.org/</A>&nbsp;</P>
<P>做的很酷,呵呵</P>
<P>&nbsp;</P></div>]]></description>
	    <author><![CDATA[阿兹猫]]></author>
	    <comments>http://ase2001.blog.163.com/blog/static/42055200851494144842</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://ase2001.blog.163.com/blog/static/42055200851494144842</guid>
    <pubDate>Sat, 14 Jun 2008 09:41:44 +0800</pubDate>
    <dcterms:modified>2008-06-14T09:41:44+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[Iphone重启动]]></title>	
    <link>http://ase2001.blog.163.com/blog/static/4205520085632119739</link>
    <description><![CDATA[<div><P>手动安装完程序或者删除程序后,都要重启 让 SpringBoard 生效.</P>
<P>以前一直在控制台 reboot 硬启动,费功夫了,其实直接kill掉 SpringBoard就可以</P>
<P>killall -HUP SpringBoard&nbsp;&nbsp; </P>
<P>这下重启快多了,呵呵<IMG src="http://st.blog.163.com/style/common/htmlEditor/portrait/face/preview/face9.gif"></P></div>]]></description>
	    <author><![CDATA[阿兹猫]]></author>
	    <comments>http://ase2001.blog.163.com/blog/static/4205520085632119739</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://ase2001.blog.163.com/blog/static/4205520085632119739</guid>
    <pubDate>Fri, 6 Jun 2008 15:21:19 +0800</pubDate>
    <dcterms:modified>2008-06-06T15:21:19+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[IPHONE常用的目录]]></title>	
    <link>http://ase2001.blog.163.com/blog/static/4205520085532139365</link>
    <description><![CDATA[<div><P>root/library/ringtones 铃声 <BR>root/private/var/root/Media/PDF PDF <BR>/System/Library/CoreServices/SpringBoard.app/ 运营商图标 <BR>/var/root/Media/EBooks 电子书 <BR>/var/root/Library/Customize Customize定制工具 <BR>/MEDIA/LYRCIS/ 歌词库的地址 <BR>var/root/library/SummerBoard/Themes/ 主题包1.12 <BR>Private/var/Media/library/SummerBoard/Themes/ 主题包 SummerBoard v3.2 适用1.13 <BR>/private/var/root/Media/ROMs/NES NES <BR>/Library/Wallpaper 系统墙纸的存放目录 <BR>/System/Library/Audio/UISounds 系统声音文件的存放目录 <BR>/private/var/root/Media/DCIM 拍摄相机的照片文件存放目录 <BR>/private/var/root/Media/iTunes_Control/Music 上传的多媒体文件（例如MP3、MP4等） <BR>/private/var/root/Library/AddressBook 系统电话本的存放目录 <BR>/private/var/root/Library/RingtonesiBrickr 上传的来电铃声存放目录 <BR>/private/var/root/Library/SMS 系统短信的存放目录 <BR>/private/var/run 系统进程运行的临时目录（查看这里可以看到系统启动的所有进程） <BR>/var/root/Library/Recordings VNOTES录音文件存放目录</P></div>]]></description>
	    <author><![CDATA[阿兹猫]]></author>
	    <comments>http://ase2001.blog.163.com/blog/static/4205520085532139365</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://ase2001.blog.163.com/blog/static/4205520085532139365</guid>
    <pubDate>Thu, 5 Jun 2008 15:21:39 +0800</pubDate>
    <dcterms:modified>2008-06-05T15:21:39+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[今天在马路上看到京Y的车了]]></title>	
    <link>http://ase2001.blog.163.com/blog/static/42055200842953224515</link>
    <description><![CDATA[<div><P>以为自己看错了,手忙脚乱的找手机拍照,结果到单位一查,原来 4.11就开始用了,我太土了,不过还是发上来,肯定有人跟我一样不知道,hoho</P>
<P><IMG style="WIDTH: 676px; HEIGHT: 657px" height=912 src="http://img.photo.163.com/_oGgM8J4fQhzf7ObsvXSSA==/2129921148769556601.jpg" width=950></P></div>]]></description>
	    <author><![CDATA[阿兹猫]]></author>
	    <comments>http://ase2001.blog.163.com/blog/static/42055200842953224515</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://ase2001.blog.163.com/blog/static/42055200842953224515</guid>
    <pubDate>Thu, 29 May 2008 17:32:24 +0800</pubDate>
    <dcterms:modified>2008-05-29T17:32:24+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[现在的新玩意都太强大]]></title>	
    <link>http://ase2001.blog.163.com/blog/static/420552008429105750344</link>
    <description><![CDATA[<div><DIV><STRONG>主管偷走Xbox 导致网站下线 (2008-05-27 18:14:58) <BR></STRONG>标签：游戏&nbsp;&nbsp;&nbsp; </DIV>
<DIV>&nbsp;&nbsp;&nbsp; 公立大学常因有限的预算而不得不去发明“非常之道”。几年前，一台Xbox游戏机安装了Linux发行版，安放在服务器房间内，充当“计算机文盲”的哲学系学生学习网页设计的Web服务器。</DIV>
<DIV>&nbsp;&nbsp;&nbsp; 该大学的一位教师是Linux狂热信徒，他认为使用Xbox而非标准的PC，提供了一个强大而廉价的服务器解决方案，省钱的方法当然很快就被学校批准。几年后，IT部门有才华的人都离开寻找更好的发展空间，新的主管和教员根本不知道那个Xbox游戏机到底是干什么的，该部门只有一位Unix管理员了解其用途。</DIV>
<DIV>&nbsp;&nbsp;&nbsp; 一天，计算机文盲哲学系的大学生报告登录不了他们的网页，这位网管测试后发现无法远程访问Xbox。他跑到服务器房间一瞧，发现Xbox已经消失无影无踪。他只好向上通知IT主管，这位新任主管听完后满脸窘迫的承认是他拿走了Xbox，他认为它是IT部门娱乐用的游戏机，于是拿走送给即将放假的儿子去玩游戏。主管之后驱车回家找回了Xbox，网管将其放回原处，并贴上标签“这是服务器”。</DIV>
<DIV>&nbsp;&nbsp;&nbsp; 编者按：XBOX做服务器。。。汗。。。难道是游戏服务器么- -#</DIV>
<DIV><BR><STRONG>猫大博主再按：</STRONG></DIV>
<DIV><STRONG>刚看到这个文章，写的太土了，XBOX做服务器有什么奇怪的，如果需要完全可以用一台IPHONE做WEB服务器，更节省地方，在机房里切换机架还不用停服务，关键是服务不通了，立刻可以打电话来寻找服务器被谁拿走了，哈哈</STRONG></DIV></div>]]></description>
	    <author><![CDATA[阿兹猫]]></author>
	    <comments>http://ase2001.blog.163.com/blog/static/420552008429105750344</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://ase2001.blog.163.com/blog/static/420552008429105750344</guid>
    <pubDate>Thu, 29 May 2008 10:57:50 +0800</pubDate>
    <dcterms:modified>2008-05-29T10:58:36+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[丑陋”的种族.“劣根”的民族 (ZT)]]></title>	
    <link>http://ase2001.blog.163.com/blog/static/42055200842155245174</link>
    <description><![CDATA[<div><P>自我降生于这片土地，在懂得“反思”之日起，心中一直存在一个巨大疑问：为何我们这样<WBR>一个“丑陋”的种族，能够屹立千年而不倒？为何我们这样一个“劣根”的民族，能够五千<WBR>年长存。 <BR>　　　　　　我们，各人自扫门前雪，不管他人瓦上霜。 <BR>　　　　　　我们，唾沫横飞的指责他人，却不知痰留了一地。 <BR>　　　　　　我们，在强权面前低下头颅，在弱者前面挥起屠刀。 <BR>　　　　　　我们，相信“人不为己，天诛地灭”。 <BR>　　　　　　我们，金钱至上，急功近利。 <BR>　　　　　　我们，忍看朋友被驱逐，再等着自己被奴役。 <BR>　　　　　　我们，人前高呼“两胁插刀”，背后果然捅刀子。 <BR>　　　　　　我们，崇拜那些扭捏作态的明星，却冷眼抚养的双亲。 <BR>　　　　　　我们，一个人是一条龙，而三个人是一条虫。 <BR>　　　　　　我们，心里都藏着一个“皇帝”梦。 <BR>　　　　　　我们，很得意地“明哲保身”。 <BR>　　　　　　我们，把家里打扫干净，把垃圾丢了一地。 <BR>　　　　　　我们，把一切优秀的传统都抛弃，而学会了滥交与“开放的”性。 <BR>　　　　　　我们，哈美哈日哈裴永庆，却忘记了榜样雷锋。 <BR>　　　　　　我们，自私，冷漠，奴性、懒惰、撒谎、麻木、贪婪、嫉妒、懦弱、窝里斗、腐败！ <BR>　　　　　　我们，教育孩子要像我们。 <BR>　　　　　　&nbsp;<BR>　　　　　　我们能感觉到自己就是修正版的“阿Q”，就是柏老所说的“丑陋的一代”。 <BR>　　　　　　我们，一直在痛心疾首，却一直不能改正。 <BR>　　　　　　我们，一直在反思，却似乎永远只在反思。 <BR>　　　　　　&nbsp;<BR>　　　　　　彭宇案——中华民族的感恩心哪去了？ <BR>　　　　　　周老虎——中国人的“诚信”力哪去了？ <BR>　　　　　　许霆案——中国的法制精神哪去了？ <BR>　　　　　　童工门——中华民族的人性哪里去了？ <BR>　　　　　　“黑砖窑”折射出中国还有多么的“中世纪”。 <BR>　　　　　　“汉芯事件”展示了中国的学术已烂到了极点。 <BR>　　　　　　“梨花体”说明了中国的文化已经走到尽头。 <BR>　　　　　　“后舍男生”表露了中国的审美力极其庸俗低下。 <BR>　　　　　　“芙蓉的走红”说明了我们是多么的无聊。 <BR>　　　　　　“超级女生”映照出全民娱乐。 <BR>　　　　　　…………………………………… <BR>　　　　　　&nbsp;<BR>　　　　　　所以，一直不明白——这个中央的巨人依靠什么矗立于东方。而古埃及已经只能从辉煌的“<WBR>金字塔”里寻找昔日的荣光，古巴比伦还能从伊拉克的废墟里寻找“通天塔”的传说，古印<WBR>度的彪炳文明却永远消失于恒河两岸。 <BR>　　　　　　为什么？为什么？为什么？ <BR>　　　　　　&nbsp;<BR>　　　　　　2008年5月12日这一天，让这个问题有了终极答案。 <BR>　　　　　　只有在这样特大的灾害面前，真相才得以揭露。 <BR>　　　　　　&nbsp;<BR>　　　　　　原来，我们的血液里流传着“坚强不屈”的因子。 <BR>　　　　　　原来，我们在面对困难时如此团结。 <BR>　　　　　　原来，我们可以在遇难前用双臂护住4个学生。 <BR>　　　　　　原来，我们可以先去救助别人，再去寻找亲人。 <BR>　　　　　　原来，我们可以跪下来大哭：让我再去救一个！ <BR>　　　　　　原来，我们可以从5000米的高空危险降落。 <BR>　　　　　　原来，我们可以步行90公里到达地震中心。 <BR>　　　　　　原来，我们可以仅靠双手从钢筋混凝土里挖出女儿。 <BR>　　　　　　原来，我们被压在废墟下还能安慰哭泣的父亲。 <BR>　　　　　　原来，我们可以怀孕四月前往灾区当志愿志。 <BR>　　　　　　原来，我们为了人民可以写下4500份遗书。 <BR>　　　　　　原来，我们因为无能为力而放声大哭。 <BR>　　　　　　原来，我们可以在失去女儿再连续奋战48个小时。 <BR>　　　　　　原来，我们在面对灾难前抛却两岸60年的成见。 <BR>　　　　　　原来，我们可以在8岁时就知道敬礼感思。 <BR>　　　　　　原来，我们抱着一个救出的孩子而热泪盈眶。 <BR>　　　　　　原来，原来，我们可以一边乞讨，一边为地震灾区捐款105元。 <BR>　　　　　　原来，我们可以浑身淌着血说：先救别人吧！ <BR>　　　　　　原来，我们可以在临终的一刻保护住儿子，并写下“亲爱的宝贝，如果你能活着，一定要记<WBR>住我爱你”。 <BR>　　　　　　原来，我们可以在两个小时内从首都奔赴灾区。 <BR>　　　　　　原来，我们因争相献血、自愿抢救伤员而造成交通堵塞。 <BR>　　　　　　原来，我们一个企业和私人捐款能达到上亿。 <BR>　　　　　　原来，我们的骨子里一直有着太多的爱。 <BR>　　　　　　原来，我们一直就是一个伟大的民族。 <BR>　　　　　　原来，我们只是在艰难的时候才表现。 <BR>　　　　　　原来，我们的同胞人永远相爱。 <BR>　　　　　　原来，我们无私、团结、友爱、勇敢、善良、勤奋、孝顺、坚强、仁义，感思…… <BR>　　　　　　&nbsp;<BR>　　　　　　原来，这片土地上的人民，一直懂得在坚难的时候相互守护与关爱。 <BR>　　　　　　现在彻底明白：中华文明能屹立于历史五千年而不倒，这就是它的生存之道，这就是它无可<WBR>言说的伟大! &nbsp;<BR>　　&nbsp;<BR>　　中国加油，中国万岁！ <BR></P>
<P>谁写的已经不重要了,起码我看到了,我要留下这篇文章,给更多的人看到. 我爱我的祖国,比任何时候更爱,以前我以为中国只有愤青了,只有愤青能说出这样的话来,现在我要大声的说,中国加油,中国万岁!</P></div>]]></description>
	    <author><![CDATA[阿兹猫]]></author>
	    <comments>http://ase2001.blog.163.com/blog/static/42055200842155245174</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://ase2001.blog.163.com/blog/static/42055200842155245174</guid>
    <pubDate>Wed, 21 May 2008 17:52:45 +0800</pubDate>
    <dcterms:modified>2008-05-21T17:52:45+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[IPHONE GPRS上网]]></title>	
    <link>http://ase2001.blog.163.com/blog/static/42055200841410544430</link>
    <description><![CDATA[<div><DIV >IPHONE设置GPRS/EDGE上网<BR><BR>打开Settings-设置&gt;General-常规&gt;Network-网络&gt;EDGE，设置参数：<BR><BR>APN CMNET <BR>Username gprs <BR>Password gprs <BR><BR><BR>注：<BR>1、对GPRS网络，用户名和密码应该是没有用的(一些VPN专网除外)，<BR>但在有些地方的网络使用空用户名和密码是有问题的，所以建议把用户名和密码随便设置一下。<BR>2、如果用CMWAP需要把上面的APN设置为CMWAP，然后修改一下代理设置。具体方法见下面<BR><BR><BR><BR><BR><BR>CMWAP代理的设置<BR>　　如果用CMNET上网，按上面的方式设置就可以了。如果是用CMWAP上网，设置好APN为CMWAP后，有些地区还需要设置代理参数。<BR><BR>　1:&nbsp; 现在需要把附件中的proxy.pac上传到/var/root目录下，然后修改系统设置文件，使CMWAP上网的时候使用此代理设置。<BR><BR>　　proxy.pac的内容如下：<BR>引用:<BR><BR>function FindProxyForURL(url, host)<BR>{<BR>&nbsp; if (isInNet(myIpAddress(), "10.0.0.0", "255.0.0.0")<BR>&nbsp; &nbsp; return "PROXY 10.0.0.172:80";<BR>&nbsp; else<BR>&nbsp; &nbsp; return "DIRECT";<BR>}<BR><BR><BR><BR><BR>2:&nbsp; 　　需要修改的系统文件是：/var/root/Library/Preferences/SystemConfiguration/preferences.plist<BR>　　首先用iBrickr等工具下载preferences.plist，然后用写字板打开(如果用记事本，其中有些换行符号不能正确识别)，然后查找&lt;string&gt;ip1&lt;/string&gt;，这里定义的就是EDGE的一些参数。往下看应该可以看到在IPHONE的EDGE参数中设置好的APN和用户名、密码参数。如下图所示：<BR><BR><BR>　　现在把下面一段话粘贴到这个文件中：<BR>引用:<BR>&nbsp; &nbsp; &nbsp; Proxies<BR>&nbsp; &nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ProxyAutoConfigEnable<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ProxyAutoConfigURLString<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; file:///private/var/root/proxy.pac<BR>&nbsp; &nbsp; &nbsp; &nbsp; <BR>　　具体位置参考下面这个修改后的文件的内容图示：<BR><BR><BR>　　现在保存好修改过的preferences.plist文件，然后用iBrickr传回手机覆盖原来的文件。重起一下手机后就可以使用CMWAP上网了。<BR><BR>　　注：<BR>　　1、最好不要使用别人编辑好的preferences.plist，因为每个人的系统参数都是不一样的，把别人的拿过来很可能不能用，最好自己动手操作。<BR>　　2、用CMWAP上网，访问网页应该没问题，但有些应用程序像邮件等可能无法使用。</DIV>
<DIV >&nbsp;</DIV>
<DIV >转发个技术贴 miaoshou 2008-2-7 发表在 bbs.myiphones.com.cn</DIV>
<DIV >我未测试过，因为wifi很普及并且cmnet太贵，不过对改代理这里很是欣赏，应该可以应用到其他地方，嘿嘿</DIV></div>]]></description>
	    <author><![CDATA[阿兹猫]]></author>
	    <comments>http://ase2001.blog.163.com/blog/static/42055200841410544430</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://ase2001.blog.163.com/blog/static/42055200841410544430</guid>
    <pubDate>Wed, 14 May 2008 10:54:04 +0800</pubDate>
    <dcterms:modified>2008-05-14T10:54:04+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[让你的Iphone使用笔记本无线网络]]></title>	
    <link>http://ase2001.blog.163.com/blog/static/4205520084911954551</link>
    <description><![CDATA[<div><P>公司是有无线网络的,设置了无比复杂的密码,破解难度太高. 实在没办法跑去IT问密码,结果其实早就知道,就是不成.个人笔记本都不能使用公司无线网络,何况是个人终端:~(&nbsp;&nbsp; 这个咱们是要理解的,公司大了管理起来不方便,必须要制度控制.</P>
<P>破解和求人都走不通了,只能用终极解决办法,呵呵,本来嫌麻烦懒的搞,其实也不是很麻烦.嘿嘿</P>
<P>简单点说就是,笔记本是有无线网络的,笔记本又插着网线可以上网的,于是.......&nbsp; 在笔记本上架设AP,通过笔记本的有线网卡代理上网,就这么简单.</P>
<P>步骤分两步 笔记本设置 和 iphone设置</P>
<P>先说iphone设置,跟连接普通的无线网络一样,没什么设置,直接搞定</P>
<P>再说笔记本设置,首先要感谢windows给我们带来的便利,现在代理网关啊,DHCP服务啊都默认有了,不用装一堆乱78糟的软件了,社会进步的好啊,...&nbsp; 我好象废话多了点,书归正传</P>
<P>1.&nbsp;&nbsp; 选网络,在有线网卡的属性--&gt;高级里,要选允许其他连接通过他上网, 这个其他连接就选无线网络(你要先打开笔记本的无线网络哦)</P>
<P>2. 在网络的无线网络里,无线网络配置里,找到下面的高级,选计算机到计算机,然后添加一个网络 (这里很关键哦)</P>
<P>设置完毕,让iphone搜网络吧,上网无极限,这个解决的很多问题,难怪iphone没有弄个usb的有线网卡出来,原来确实不需要的.</P></div>]]></description>
	    <author><![CDATA[阿兹猫]]></author>
	    <comments>http://ase2001.blog.163.com/blog/static/4205520084911954551</comments>
    <slash:comments>1</slash:comments>
    <guid isPermaLink="true">http://ase2001.blog.163.com/blog/static/4205520084911954551</guid>
    <pubDate>Fri, 9 May 2008 11:09:54 +0800</pubDate>
    <dcterms:modified>2008-05-09T11:09:54+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[php5内置数据库SQLite使用   ]]></title>	
    <link>http://ase2001.blog.163.com/blog/static/420552008466812459</link>
    <description><![CDATA[<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从php5.2.0开始，SQLite宣告在php安家成功。php5内置的sqlite_function库只能操作SQLite2版本。而SQLite2已经开始要慢慢退出，SQLite3功能更加强大。所以建议使用SQLite3。在php里只有PDO能操作SQLite3。PDO_SQLITE 驱动被php5.2默认安装，所以用PDO Functions操作SQLite3将非常方便。而PDO_MYSQL都需要选择编译才能使用。由此可见，php对SQLite的推荐程度，犹如当年MySQL客户端被php4内置一样。现在的SQLite3访问速度非常快，几万条的数据，分页查询只用了几个ms.，甚至不到1ms.<BR><BR>&nbsp; &nbsp; &nbsp;SQLite国内资源网站：<BR>http://sqlitecn.org/<BR>http://www.sqlite.com.cn/<BR><BR>&nbsp; &nbsp; &nbsp;SQLite客户端管理软件：推荐SQLite Maestro，公司开发，比较专业。试用版能用。<BR>http://www.sqlmaestro.com/products/sqlite/maestro/<BR><BR>&nbsp; &nbsp; 还要推荐SQLiteManager, PHP开发的SQLite管理软件，可以装在服务器上，类似phpMyAdmin，<BR>&nbsp; &nbsp; http://sourceforge.net/projects/sqlitemanager/<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>转帖&nbsp; <A href="http://www.kakapo.cn/blog/index.php?go=category_6">http://www.kakapo.cn/blog/index.php?go=category_6</A>&nbsp;&nbsp; 留个记录,别回头找不到了</div>]]></description>
	    <author><![CDATA[阿兹猫]]></author>
	    <comments>http://ase2001.blog.163.com/blog/static/420552008466812459</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://ase2001.blog.163.com/blog/static/420552008466812459</guid>
    <pubDate>Tue, 6 May 2008 18:08:12 +0800</pubDate>
    <dcterms:modified>2008-05-06T18:08:12+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[Iphone系统研究备忘]]></title>	
    <link>http://ase2001.blog.163.com/blog/static/4205520084644153747</link>
    <description><![CDATA[<div><P>年纪大了,好多东西记不住,写下来吧</P>
<P>研究了一下Iphone , 挺好玩的,使用的darwin操作系统. 要清楚系统里的结构才好扩展</P>
<DIV>铃声放在 /private/var/Ringtones</DIV>
<DIV>pxl文件貌似就是zip包 换成zip就能打开</DIV>
<DIV>软件安装在/Applications里 这里还没研究透彻,不知道是不是直接把编译过的APP文件删了就算卸载了,应该还有个lib目录的,初步锁定在/var/root/Library里</DIV>
<DIV>系统的root初始密码是alpine , 这里很矛盾,改了吧,怕忘了,不改吧,连到网络里,TMD是个人就能进我系统</DIV>
<DIV>/Applications目录在系统分区里,很讨厌,要挪到工作区,在系统区里加link (奇怪当时怎么设计的,以后尽量CP文件到IPHONE里,少用自动安装,装哪里都不知道)</DIV>
<DIV>&nbsp;</DIV>
<DIV>终于找到地址簿放那里了 /var/root/Library/AddressBook/AddressBook.sqlitedb</DIV>
<DIV><A href="http://www.sqlite.org">http://www.sqlite.org</A>&nbsp;用的sqlite数据库</DIV></div>]]></description>
	    <author><![CDATA[阿兹猫]]></author>
	    <comments>http://ase2001.blog.163.com/blog/static/4205520084644153747</comments>
    <slash:comments>3</slash:comments>
    <guid isPermaLink="true">http://ase2001.blog.163.com/blog/static/4205520084644153747</guid>
    <pubDate>Tue, 6 May 2008 16:41:53 +0800</pubDate>
    <dcterms:modified>2008-05-06T17:48:09+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[进入IPHONE-一刀破解时代]]></title>	
    <link>http://ase2001.blog.163.com/blog/static/42055200846104929231</link>
    <description><![CDATA[<div><P>昨天托人从美国买的IPHONE到了,很是兴奋啊,之前有做功课如何破解. 所以拿到机器立刻进行. 我对自己还是很有自信的.</P>
<P>技术支持来自 <A href="http://iphone.tgbus.com/">http://iphone.tgbus.com/</A>&nbsp; 很专业的网站</P>
<P>Ziphone和iplus两个破解程序,最后还是选了iplus</P>
<P>反正都是要降Bootloader,还不如选个能升回去的,虽然这个东西也没什么用.</P>
<P>破解是很顺利的, 也没有变砖</P>
<P>只是发现了个严重的问题,是个哑巴手机,没声音.............</P>
<P>很郁闷,什么声音都没有,打电话也没声音,听不见也说不出去</P>
<P>破解失败................&nbsp;&nbsp; 无聊啊</P>
<P>晚饭都吃的不香,准备吃完再次破解,我就不信了....</P>
<P>晚上破解前,给露露打了个电话,请高人指点一下,结果这一指点,我立刻无言</P>
<P>原来破解光靠高科技是不成的,还需要傻力气,打打杀杀是免不了了,来啊, 备马抬刀</P>
<P>什么一键破解,不如叫一刀破解,一刀下去,打电话立刻出声了.</P>
<P>原来,从美国带回来的原装机器帖了个膜,质量好好哦~ 听筒被封了个严严实实</P>
<P>小刀划开,立刻全好,这也太..........</P>
<P>打电话好了,那不出声的问题估计也不是大问题,上网搜了一下,还是有哥们跟我一样遭遇的,按照提示</P>
<P>Setting&nbsp; -general&nbsp; -Reset-Reset all setting..&nbsp; </P>
<P>立刻正常~&nbsp; 看来不要上来就想重装,还是多用reset,哈哈</P>
<P>------------------------------------------------------------------------------------------------</P>
<P>iphone 无声 没声 无声音 没声音 解决办法 震动有没声音 打电话没声音 听筒没声音 一键破解 一刀破解 iphone设置 iphone 无声 iphone没声 iphone无声音 iphone没声音 iphone无声解决办法 iphone震动有没声音 iphone打电话没声音 iphone听筒没声音 iphone一键破解 iphone一刀破解 iphone设置 估计关键词够多了,呵呵</P></div>]]></description>
	    <author><![CDATA[阿兹猫]]></author>
	    <comments>http://ase2001.blog.163.com/blog/static/42055200846104929231</comments>
    <slash:comments>3</slash:comments>
    <guid isPermaLink="true">http://ase2001.blog.163.com/blog/static/42055200846104929231</guid>
    <pubDate>Tue, 6 May 2008 10:49:29 +0800</pubDate>
    <dcterms:modified>2008-05-07T17:50:41+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[今天碰上了个极品猎头]]></title>	
    <link>http://ase2001.blog.163.com/blog/static/420552008330111627238</link>
    <description><![CDATA[<div><P>今天是放假前的最后一个工作日,心情大好,首先热烈庆祝奥运倒计时100天.</P>
<P>刚才很无辜的接到一个电话,&nbsp; 67080248 , 没见过的电话号码, 难道又是保险公司? 房地产公司? 算了,今天心情好,接了吧, 礼节性的和对方打个招呼,在知道对方的猎头身份和来意后,我很礼节性的拒绝了,结果在我想绅士的再见挂电话前,对方无情的挂了我的电话,TNND,我太贱了,碰上这样的混蛋就不能给他好脸,借用郭德刚的一句经典,跟我抖机灵,我多坏啊.&nbsp; 打回去骂街,占线,再打再占,满世界的搜他们公司,发现了这个帖子,看来 67080248这个电话早就远近闻名了.</P>
<P><BR>由 zhigang 于 周三, 2008-02-13 14:10 提交。:: 其他 <BR>今天接到一个电话，说是当当网的业务人员，要免费送Linux方面的书，要了几个同事的名字。</P>
<P>在网上搜了一下电话号码，发现是个猎头，一种被欺骗的愤怒一下被激起。</P>
<P>其实，很多人还是愿意跟猎头搞好关系的。但是这样完全的欺骗却是无法忍受的。</P>
<P>现在公布这个电话号码：010-67080248，应该是联合拓扑（<A href="http://www.unitopexec.com/">http://www.unitopexec.com/</A>）的业务人员，参考：<BR><A href="http://bbs.yesky.com/soft/bbs.php?url=http://bbs.yesky.com/soft/archiver">http://bbs.yesky.com/soft/bbs.php?url=http://bbs.yesky.com/soft/archiver</A>...</P>
<P>如果大家都把自己的真实受骗经历都记录下来，那么骗子就无处藏身了。</P>
<P>&nbsp;</P>
<P>按照这个地址<A href="http://www.unitopexec.com/">http://www.unitopexec.com/</A>进去看,我靠,都是洋代码啊,外国骗子啊</P>
<P>凭借我对28个洋字母的高超悟性,迅速锁定了联系方式</P>
<P>UNITOP EXECUTIVE SEARCH CO., LTD.</P>
<P>Tel: 86-10-67091825<BR>Fax: 86-10-67091826<BR>Email: <A href="mailto:service@unitopexec.com">service@unitopexec.com</A></P>
<P>电过去骂街,把从电视里学到的外国骂人的话都过了一遍, 67091825 通了,居然是个中国妹子接的,还是他们那里的"骂你鸡",就是领导的意思,外国领导就是牛,骂你鸡都不介意,哎~</P>
<P>在多说一句,好好的中国公司不用中文, 网页下面的 京ICP备05022378号&nbsp; 和一堆洋代码看着这个不协调.</P>
<P>官方的寒暄了几句,说明我的来意,让她去修理一下那个娃,那个娃据说叫"弱逼" ,&nbsp; 都是什么名字啊,我听的都寒.....</P>
<P>我雷老虎以德服人,我不生气, 刚刚又得到一个噩耗,说好了OO请我吃饭的,结果我怕有套,多问了几句,结果改我请她了.&nbsp; 祸不单行<BR></P>
<P>&nbsp;</P></div>]]></description>
	    <author><![CDATA[阿兹猫]]></author>
	    <comments>http://ase2001.blog.163.com/blog/static/420552008330111627238</comments>
    <slash:comments>3</slash:comments>
    <guid isPermaLink="true">http://ase2001.blog.163.com/blog/static/420552008330111627238</guid>
    <pubDate>Wed, 30 Apr 2008 11:16:27 +0800</pubDate>
    <dcterms:modified>2008-05-01T10:24:45+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[几篇文章就可以很男人]]></title>	
    <link>http://ase2001.blog.163.com/blog/static/42055200831152854792</link>
    <description><![CDATA[<div><DIV align=center><EMBED allowScriptAccess="never" allowNetworking="internal" pluginspage=http://www.macromedia.com/go/getflashplayer src=http://www.yodao.com/blogender/flash/Gadget_1.swf width=220 height=220 type=application/x-shockwave-flash FlashVars="myUrl=ase2001.blog.163.com" wmode="transparent" quality="high"  ></DIV>
<DIV align=center>&nbsp;</DIV>
<DIV align=left>最近写了几篇或者转了几篇技术性文章,曾经迷恋生活,感悟生活的我为了让自己不要忘记技术人员身份,发了一些乱七八糟的东西,结果导致博客男女终于还给了我100%男性的身份了,原来记得是80%多.难道发技术性文章的就肯定是男的吗?没有女技术人员吗? 为此,我心中有了不少问号,后来又想想,也是的,没有那个MM,即使是技术人员会在自己BLOG的小巢里放些希奇古怪的代码,呵呵</EMBED></DIV></div>]]></description>
	    <author><![CDATA[阿兹猫]]></author>
	    <comments>http://ase2001.blog.163.com/blog/static/42055200831152854792</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://ase2001.blog.163.com/blog/static/42055200831152854792</guid>
    <pubDate>Fri, 11 Apr 2008 17:28:54 +0800</pubDate>
    <dcterms:modified>2008-04-11T17:29:55+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[（转贴）flickr对javascript干的好事]]></title>	
    <link>http://ase2001.blog.163.com/blog/static/4205520083115943297</link>
    <description><![CDATA[<div><P>关键字: 转贴 js <BR>在一个讨论web技术的网站vitamin上发现这篇《Serving JavaScript Fast》，读过之后大有收获，茅塞顿开。于是就有了翻译过来的念头——我这人有个毛病，看到有意思的英文文章，就想自己翻过来（虽然英文水平很烂）。先在网上查了查，已经有blog谈到这篇文章（我算是后知后觉了），有总结要点的《Flickr 的开发者的 Web 应用优化技巧》，也有延伸开来的《接着讲Flickr的八卦》，但似乎没有全文翻译的（这下就好，不会忙了半天发现是无用功）。之后，就写信问作者可不可以，作者一口答应：“sure - i’d love you to translate it”，只是要求我翻好之后给他一个链接地址。得到准许，心里就有底了。</P>
<P>先介绍一下作者。Cal Henderson，伦敦人，现居加利福尼亚的旧金山。PHP，MySQL和Perl专家，现任flickr架构师（flickr被收购后就在yahoo了），同时也是vitamin的特聘顾问（写些技术性文章）。</P>
<P>既然他是架构师，flickr用的应该就是文中谈到的这些技术，于是参照文章，再对比网站，种种迹象表明确实如此。虽然在中国访问flickr速度 不敢恭维，加速效果不得而知，但其用了n多css和javascript资源却似乎从没出过什么问题，也从侧面印证了这些技术的有效性。</P>
<P>仔细的看完文章，还有个强烈的感觉：这老兄也太能卖关子了，一句话非分成三句说，摆事实讲道理是够透彻，就是有点太@#$%了…… 算了，他怎么说我怎么翻吧，忠实于原著嘛，要不就成篡改了。经过几天努力，加上同事thincat兄倾力援手（小弟不胜感激啊），终于完工（@_@ 真是苦力活啊，我再也不想干了～）。</P>
<P>全文翻译如下：</P>
<P>让javascript跑得更快<BR>作者：Cal Henderson</P>
<P>下一代web应用让javascript和css得堪大用。我们会告诉你怎样使这些应用又快又灵。</P>
<P>建立了号称“Web 2.0”的应用，也实现了富内容（rich content）和交互，我们期待着css和javascript扮演更加重要的角色。为使应用干净利落，我们需要完善那些渲染页面的文件，优化其大小和 形态，以确保提供最好的用户体验——在实践中，这就意味着一种结合：使内容尽可能小、下载尽可能快，同时避免对未改动资源不必要的重新获取。</P>
<P>由于css和js文件的形态，情况有点复杂。跟图片相比，其源代码很有可能频繁改动。而一旦改动，就需要客户端重新下载，使本地缓存无效（保存在其 他缓存里的版本也是如此）。在这篇文章里，我们将着重探讨怎样使用户体验最快：包括初始页面的下载，随后页面的下载，以及随着应用渐进、内容变化而进行的 资源下载。</P>
<P>我始终坚信这一点：对开发者来说，应该尽可能让事情变得简单。所以我们青睐于那些能让系统自动处理优化难题的方法。只需少许工作量，我们就能建立一举多得的环境：它使开发变得简单，有极佳的终端性能，也不会改变现有的工作方式。</P>
<P>好大一沱<BR>老的思路是，为优化性能，可以把多个css和js文件合并成极少数大文件。跟十个5k的js文件相比，合并成一个50k的文件更好。虽然代码总字节 数没变，却避免了多个HTTP请求造成的开销。每个请求都会在客户端和服务器两边有个建立和消除的过程，导致请求和响应header带来开销，还有服务器 端更多的进程和线程资源消耗（可能还有为压缩内容耗费的cpu时间）。</P>
<P>（除了HTTP请求，）并发问题也很重要。默认情况下，在使用持久连接（persistent connections）时，ie和firefox在同一域名内只会同时下载两个资源（在HTTP 1.1规格书中第8.1.4节的建议）（htmlor注：可以通过修改注册表等方法改变这一默认配置）。这就意味着，在我们等待下载2个js文件的同时，将无法下载图片资源。也就是说，这段时间内用户在页面上看不到图片。</P>
<P>（虽然合并文件能解决以上两个问题，）可是，这个方法有两个缺点。第一，把所有资源一起打包，将强制用户一次下载完所有资源。如果（不这么做，而 是）把大块内容变成多个文件，下载开销就分散到了多个页面，同时缓解了会话中的速度压力（或完全避免了某些开销，这取决于用户选择的路径）。如果为了随后 页面下载得更快而让初始页面下载得很慢，我们将发现更多用户根本不会傻等着再去打开下一个页面。</P>
<P>第二（这个影响更大，一直以来却没怎么被考虑过），在一个文件改动很频繁的环境里，如果采用单文件系统，那么每次改动文件都需要客户端把所有css和js重新下载一遍。假如我们的应用有个100k的合成的js大文件，任何微小的改动都将强制客户端把这100k再消化一遍。</P>
<P>分解之道<BR>（看来合并成大文件不太合适。）替代方案是个折中的办法：把css和js资源分散成多个子文件，按功能划分、保持文件个数尽可能少。这个方案也是有 代价的，虽说开发时代码分散成逻辑块（logical chunks）能提高效率，可在下载时为提高性能还得合并文件。不过，只要给build系统（把开发代码变成产品代码的工具集，是为部署准备的）加点东 西，就没什么问题了。</P>
<P>对于有着不同开发和产品环境的应用来说，用些简单的技术可以让代码更好管理。在开发环境下，为使条理清晰，代码可以分散为多个逻辑部分（logical components）。可以在Smarty（一种php模板语言）里建立一个简单的函数来管理javascript的下载：</P>
<P>SMARTY:{insert_js files="foo.js,bar.js,baz.js"}PHP:function smarty_insert_js($args){&nbsp; foreach (explode(',', $args['files']) as $file){&nbsp;&nbsp;&nbsp; echo "\n";&nbsp; }}OUTPUT:<BR>（htmlor注：wordpress中会把“src”替换成不知所谓的字符，因此这里只有写成“SOURCE”，使用代码时请注意替换，下同）</P>
<P>就这么简单。然后我们就命令build过程（build process）去把确定的文件合并起来。这个例子里，合并的是foo.js和bar.js，因为它们几乎总是一起下载。我们能让应用配置记住这一点，并修改模板函数去使用它。（代码如下：）</P>
<P>SMARTY:{insert_js files="foo.js,bar.js,baz.js"}PHP:# 源文件映射图。在build过程合并文件之后用这个图找到js的源文件。$GLOBALS['config']['js_source_map'] = array(&nbsp; 'foo.js'&nbsp;=&gt; 'foobar.js',&nbsp; 'bar.js'&nbsp;=&gt; 'foobar.js',&nbsp; 'baz.js'&nbsp;=&gt; 'baz.js',);function smarty_insert_js($args){&nbsp; if ($GLOBALS['config']['is_dev_site']){&nbsp;&nbsp;&nbsp; $files = explode(',', $args['files']);&nbsp; }else{&nbsp;&nbsp;&nbsp; $files = array();&nbsp;&nbsp;&nbsp; foreach (explode(',', $args['files']) as $file){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $files[$GLOBALS['config']['js_source_map'][$file]]++;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; $files = array_keys($files);&nbsp; }&nbsp; foreach ($files as $file){&nbsp;&nbsp;&nbsp; echo "\n";&nbsp; }}OUTPUT:<BR>模板里的源代码没必要为了分别适应开发和产品阶段而改动，它帮助我们在开发时保持文件分散，发布成产品时把文件合并。想更进一步的话，可以把合并过 程（merge process）写在php里，然后使用同一个（合并文件的）配置去执行。这样就只有一个配置文件，避免了同步问题。为了做的更加完美，我们还可以分析 css和js文件在页面中同时出现的几率，以此决定合并哪些文件最合理（几乎总是同时出现的文件是合并的首选）。</P>
<P>对css来说，可以先建立一个主从关系的模型，它很有用。一个主样式表控制应用的所有样式表，多个子样式表控制不同的应用区域。采用这个方法，大多数页面只需下载两个css文件，而其中一个（指主样式表）在页面第一次请求时就会缓存。</P>
<P>对没有太多css和js资源的应用来说，这个方法在第一次请求时可能比单个大文件慢，但如果保持文件数量很少的话，你会发现其实它更快，因为每个页 面的数据量更小。让人头疼的下载花销被分散到不同的应用区域，因此并发下载数保持在一个最小值，同时也使得页面的平均下载数据量很小。</P>
<P>压缩<BR>谈到资源压缩，大多数人马上会想到mod_gzip（但要当心，mod_gzip实际上是个魔鬼，至少能让人做恶梦）。它的原理很简单：浏览器请求资源时，会发送一个header表明自己能接受的内容编码。就像这样：</P>
<P>Accept-Encoding: gzip,deflate<BR>服务器遇到这样的header请求时，就用gzip或deflate压缩内容发往客户端，然后客户端解压缩。这过程减少了数据传输量，同时消耗了客 户端和服务器的cpu时间。也算差强人意。但是，mod_gzip的工作方式是这样的：先在磁盘上创建一个临时文件，然后发送（给客户端），最后删除这个 文件。在高容量的系统中，由于磁盘io问题，很快就会达到极限。要避免这种情况，可以改用mod_deflate（apache 2才支持）。它采用更合理的方式：在内存里做压缩。对于apache 1的用户来说，可以建立一块ram磁盘，让mod_gzip在它上面写临时文件。虽然没有纯内存方式快，但也不会比往磁盘上写文件慢。</P>
<P>话虽如此，其实还是有办法完全避免压缩开销的，那就是预压缩相关静态资源，下载时由mod_gzip提供合适的压缩版本。如果把压缩添加在 build过程，它就很透明了。需要压缩的文件通常很少（用不着压缩图片，因为并不能减小更多体积），只有css和js文件（和其他未压缩的静态内容）。</P>
<P>配置选项会告诉mod_gzip去哪里找到预压缩过的文件。</P>
<P>mod_gzip_can_negotiate&nbsp;Yesmod_gzip_static_suffix&nbsp;.gzAddEncoding&nbsp;gzip&nbsp;.gz<BR>新一点的mod_gzip版本（从1.3.26.1a开始）添加一个额外的配置选项后，就能自动预压缩文件。不过在此之前，必须确认apache有正确的权限去创建和覆盖压缩文件。</P>
<P>mod_gzip_update_static&nbsp;Yes<BR>可惜，事情没那么简单。某些Netscape 4的版本（尤其是4.06-4.08）认为自己能够解释压缩内容（它们发送一个header这么说来着），但其实它们不能正确的解压缩。大多数其他版本的 Netscape 4在下载压缩内容时也有各种各样的问题。所以要在服务器端探测代理类型，（如果是Netscape 4，就要）让它们得到未压缩的版本。这还算简单的。ie（版本4-6）有些更有意思的问题：当下载压缩的javascript时，有时候ie会不正确的解压缩文件， 或者解压缩到一半中断，然后把这半个文件显示在客户端。如果你的应用对javascript的依赖比较大（htmlor注：比如ajax应用），那么就得 避免发送压缩文件给ie。在某些情况下，一些更老的5.x版本的ie倒是能正确的收到压缩的javascript，可它们会忽略这个文件的etag header，不缓存它。（thincat友情提示：尽管压缩存在一些浏览器不兼容的现象，由于这些不能很好的支持压缩的浏览器数量现在已经非常少了，我 认为这种由于浏览器导致的压缩不正常的情况可以忽略不计。这些过时的浏览器还能不能在现在流行的windows或unix环境下面安装都存在不小的问题）</P>
<P>既然gzip压缩有这么多问题，我们不妨把注意力转到另一边：不改变文件格式的压缩。现在有很多这样的javascript压缩脚本可用，大多数都 用一个正则表达式驱动的语句集来减小源代码的体积。它们做的不外乎几件事：去掉注释，压缩空格，缩短私有变量名和去掉可省略的语法。</P>
<P>不幸的是，大多数脚本效果并不理想，要么压缩率相当低，要么某种情形下会把代码搞得一团糟（或者两者兼而有之）。由于对解析树的理解不完整，压缩器 很难区分一句注释和一句看似注释的引用字符串。因为闭合结构的混合使用，要用正则表达式发现哪些变量是私有的并不容易，因此一些缩短变量名的技术会打乱某 些闭合代码。</P>
<P>还好有个压缩器能避免这些问题：dojo压缩器（现成的版本在这里）。 它使用rhino（mozilla的javascript引擎，是用java实现的）建立一个解析树，然后将其提交给文件。它能很好的减小代码体积，仅用 很小的成本：因为只在build时压缩一次。由于压缩是在build过程中实现的，所以一清二楚。（既然压缩没有问题了，）我们可以在源代码里随心所欲的 添加空格和注释，而不必担心影响到产品代码。</P>
<P>与javascript相比，css文件的压缩相对简单一些。由于css语法里不会有太多引用字符串（通常是url路径跟字体名），我们可以用正则 表达式大刀阔斧的干掉空格（htmlor注：这句翻的最爽，哈哈）。如果确实有引用字符串的话，我们总可以把一串空格合成一个（因为不需要在url路径和 字体名里查找多个空格和tab）。这样的话，一个简单的perl脚本就够了：</P>
<P>#!/usr/bin/perlmy $data = '';open F, $ARGV[0] or die "Can't open source file: $!";$data .= $_ while ;close F;$data =~ s!/*(.*?)*/!!g;&nbsp; # 去掉注释$data =~ s!s+! !g;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 压缩空格$data =~ s!} !}\n!g;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 在结束大括号后添加换行$data =~ s!\n$!!;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 删除最后一个换行$data =~ s! { ! {!g;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 去除开始大括号后的空格$data =~ s!; }!}!g;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 去除结束大括号前的空格print $data;<BR>然后，就可以把单个的css文件传给脚本去压缩了。命令如下：</P>
<P>perl compress.pl site.source.css &gt; site.compress.css<BR>做完这些简单的纯文本优化工作后，我们就能减少数据传输量多达50%了（这个量取决于你的代码格式，可能更多）。这带来了更快的用户体验。不过我们真正想做的是，尽可能避免用户请求的发生——除非确实有必要。这下HTTP缓存知识派上用场了。</P>
<P>缓存是好东西<BR>当用户代理（如浏览器）向服务器请求一个资源时，第一次请求过后它就会缓存服务器的响应，以避免重复之后的相同请求。缓存时间的长短取决于两个因 素：代理的配置和服务器的缓存控制header。所有浏览器都有不同的配置选项和处理方式，但大多数都会把一个资源至少缓存到会话结束（除非被明确告 知）。</P>
<P>为了不让浏览器缓存改动频繁的页面，你很可能已经发送过header不缓存动态内容。在php中，以下两行命令可以做到：</P>
<P>header("Cache-Control: private");header("Cache-Control: no-cache", false);?&gt;<BR>听起来太简单了？确实如此——因为有些代理（浏览器）在某些环境下将忽略这些header。要确保浏览器不缓存文档，应该更强硬一些：</P>
<P># 让它在过去就“失效”header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");# 永远是改动过的header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");# HTTP/1.1header("Cache-Control: no-store, no-cache, must-revalidate");header("Cache-Control: post-check=0, pre-check=0", false);# HTTP/1.0header("Pragma: no-cache");?&gt;<BR>这样，对于我们不想缓存的内容来说已经行了。但对于那些不会每次请求时都有改动的内容，应该鼓励浏览器更霸道的缓存它。“If-Modified- Since”请求header能够做到这点。如果客户端在请求中发送一个“If-Modified-Since”header，apache（或其他服务 器）会以状态代码304（没改过）响应，告诉浏览器缓存已经是最新的。使用这个机制，能够避免重复发送文件给浏览器，不过仍然导致了一个HTTP请求的消 耗。嗯，再想想。</P>
<P>与If-Modified-Since机制类似的是实体标记（entity tags）。在apache环境下，每个对静态文件的响应都会发出一个“ETag”header，它包含了一个由文件修改时间、文件大小和inode号生 成的校验和（checksum）。在下载文件之前，浏览器会发送一个HEAD请求去检查文件的etag。可ETag跟If-Modified-Since 有同样的问题：客户端仍旧需要执行HTTP请求来验证本地缓存是否有效。</P>
<P>此外，如果你使用多台服务器提供内容，得小心使用if-modified-since和etags。在两台负载平衡的服务器环境下，对一个代理（浏 览器）来说，一个资源可以这次从A服务器得到，下次从B服务器得到（htmlor注：lvs负载平衡系统就是个典型的例子）。这很好，也是采用平衡负载的 原因。可是，如果两台服务器给同一个文件生成了不同的etag或者文件修改日期，浏览器就无所适从了（每次都会重新下载）。默认情况下，etag是由文件 的inode号生成的，而多台服务器之间文件的inode号是不同的。可以使用apache的配置选项关掉它：</P>
<P>FileETag MTime Size<BR>使用这个选项，apache将只用文件修改日期和文件大小来决定etag。很不幸，这导致了另一个问题（一样能影响if-modified- since）。既然etag依赖于修改时间，就得让时间同步。可往多台服务器上传文件时，上传时间差个一到两秒是常有的事。这样一来，两台服务器生成的 etag还是不一样。当然，我们还可以改变配置，让etag的生成只取决于文件大小，但这就意味着如果文件内容变了而大小没变，etag也不会变。这可不 行。</P>
<P>缓存真是个好东西<BR>看来我们正从错误的方向入手解决问题。（现在的问题是，）这些可能的缓存策略导致了一件事情反复发生，那就是：客户端向服务器查询本地缓存是否最 新。假如服务器在改动文件的时候通知客户端，客户端不就知道它的缓存是最新的了（直到接到下一次通知）？可惜天公不做美——（事实）是客户端向服务器发出 请求。</P>
<P>其实，也不尽然。在获取js或css文件之前，客户端会用 或标记向服务器发送一个请求，说明 哪个页面要加载这些文件。这时候就可以用服务器的响应来通知客户端这些文件有了改动。有点含糊，说得再详细点就是：如果改变css和js文件内容的同时， 也改变它们的文件名，就可以告诉客户端对url全都永久缓存——因为每个url都是唯一的。</P>
<P>假如能确定一个资源永不更改，我们就可以发出一些霸气十足的缓存header（htmlor注：这句也很有气势吧）。在php里，两行就好：</P>
<P>header("Expires: ".gmdate("D, d M Y H:i:s", time()+315360000)." GMT");header("Cache-Control: max-age=315360000");?&gt;<BR>我们告诉浏览器这个内容在10年后（10年大概会有315,360,000秒，或多或少）过期，浏览器将会保留它10年。当然，很有可能不用php输出css和js文件（因此就不能发出header），这种情况将在稍后说明。</P>
<P>人力有时而穷<BR>当文件内容更改时，手动去改文件名是很危险的。假如你改了文件名，模板却没有指向它？假如你改了一些模板另一些却没改？假如你改了模板却没改文件 名？还有最糟的，假如你改动了文件却忘了改名或者忘了改变对它的引用？最好的结果，是用户看到老的而看不到新的内容。最坏的结果，是找不到文件，网站没法 运转了。听起来这（指改动文件内容时修改url）似乎是个馊主意。</P>
<P>幸运的是，计算机做这类事情——当某种变化发生，需要相当准确地完成的、重复重复再重复的（htmlor注：番茄鸡蛋伺候～）、枯燥乏味的工作——总是十分在行。</P>
<P>这个过程（改变文件的url）没那么痛苦，因为我们根本不需要改文件名。资源的url和磁盘上文件的位置也没必要保持一致。使用apache的mod_rewrite模块，可以建立简单的规则，让确定的url重定向到确定的文件。</P>
<P>RewriteEngine onRewriteRule ^/(.*.)v[0-9.]+.(css|js|gif|png|jpg)$&nbsp;/$1$2&nbsp;[L]<BR>这条规则匹配任何带有指定扩展名同时含有“版本”信息（version nugget）的url，它会把这些url重定向到一个不含版本信息的路径。如下所示：</P>
<P>URL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Path/images/foo.v2.gif&nbsp;-&gt; /images/foo.gif/css/main.v1.27.css&nbsp;-&gt; /css/main.css/javascript/md5.v6.js&nbsp;-&gt; /javascript/md5.js<BR>使用这条规则，就可以做到不改变文件路径而更改url（因为版本号变了）。由于url变了，浏览器就认为它是另一个资源（会重新下载）。想更进一步的话，可以把我们之前说的脚本编组函数结合起来，根据需要生成一个带有版本号的 标记列表。</P>
<P>说到这里，你可能会问我，为什么不在url结尾加一个查询字符串（query string）呢（如/css/main.css?v=4）？根据HTTP缓存规格书所说，用户代理对含有查询字符串的url永不缓存。虽然ie跟 firefox忽略了这点，opera和safari却没有——为了确保所有浏览器都缓存你的资源，还是不要在url里用查询字符串的好。</P>
<P>现在不移动文件就能更改url了，如果能让url自动更新就更好了。在小型的产品环境下（如果有大型的产品环境，就是开发环境了），使用模板功能可以很轻易的实现这点。这里用的是smarty，用其他模板引擎也行。</P>
<P>SMARTY:PHP:function smarty_version($args){&nbsp; $stat = stat($GLOBALS['config']['site_root'].$args['src']);&nbsp; $version = $stat['mtime'];&nbsp; echo preg_replace('!.([a-z]+?)$!', ".v$version.$1", $args['src']);}OUTPUT:<BR>对每个链接到的资源文件，我们得到它在磁盘上的路径，检查它的mtime（文件最后修改的日期和时间），然后把这个时间当作版本号插入到url中。 对于低流量的站点（它们的stat操作开销不大）或者开发环境来说，这个方案不错，但对于高容量的环境就不适用了——因为每次stat操作都要磁盘读取 （导致服务器负载升高）。</P>
<P>解决方案相当简单。在大型系统中每个资源都已经有了一个版本号，就是版本控制的修订号（你们应该使用了版本控制，对吧？）。当我们建立站点准备部署的时候，可以轻易的查到每个文件的修订号，写在一个静态配置文件里。</P>
<P>$GLOBALS['config']['resource_versions'] = array(&nbsp; '/images/foo.gif'&nbsp;&nbsp;&nbsp; =&gt; '2.1',&nbsp; '/css/main.css'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; '1.27',&nbsp; '/javascript/md5.js' =&gt; '6.1.4',);?&gt;<BR>当我们发布产品时，可以修改模板函数来使用版本号。</P>
<P>function smarty_version($args){&nbsp; if ($GLOBALS['config']['is_dev_site']){&nbsp;&nbsp;&nbsp; $stat = stat($GLOBALS['config']['site_root'].$args['src']);&nbsp;&nbsp;&nbsp; $version = $stat['mtime'];&nbsp; }else{&nbsp;&nbsp;&nbsp; $version = $GLOBALS['config']['resource_versions'][$args['src']];&nbsp; }&nbsp; echo preg_replace('!.([a-z]+?)$!', ".v$version.$1", $args['src']);}?&gt;<BR>就这样，不需要改文件名，也不需要记住改了哪些文件——当文件有新版本发布时它的url就会自动更新——有意思吧？我们就快搞定了。</P>
<P>只欠东风<BR>之前谈到为静态文件发送超长周期（very-long-period）的缓存header时曾说过，如果不用php输出，就不能轻易的发送缓存header。很显然，有两个办法可以解决：用php输出，或者让apache来做。</P>
<P>php出马，手到擒来。我们要做的仅仅是改变rewrite规则，把静态文件指向php脚本，用php在输出文件内容之前发送header。</P>
<P>Apache:RewriteRule ^/(.*.)v[0-9.]+.(css|js|gif|png|jpg)$&nbsp; /redir.php?path=$1$2&nbsp; [L]PHP:header("Expires: ".gmdate("D, d M Y H:i:s", time()+315360000)." GMT");header("Cache-Control: max-age=315360000");# 忽略带有“..”的路径if (preg_match('!..!', $_GET[path])){ go_404(); }# 保证路径开头是确定的目录if (!preg_match('!^(javascript|css|images)!', $_GET[path])){ go_404(); }# 文件不存在？if (!file_exists($_GET[path])){ go_404(); }# 发出一个文件类型header$ext = array_pop(explode('.', $_GET[path]));switch ($ext){&nbsp; case 'css':&nbsp;&nbsp;&nbsp; header("Content-type: text/css");&nbsp;&nbsp;&nbsp; break;&nbsp; case 'js' :&nbsp;&nbsp;&nbsp; header("Content-type: text/javascript");&nbsp;&nbsp;&nbsp; break;&nbsp; case 'gif':&nbsp;&nbsp;&nbsp; header("Content-type: image/gif");&nbsp;&nbsp;&nbsp; break;&nbsp; case 'jpg':&nbsp;&nbsp;&nbsp; header("Content-type: image/jpeg");&nbsp;&nbsp;&nbsp; break;&nbsp; case 'png':&nbsp;&nbsp;&nbsp; header("Content-type: image/png");&nbsp;&nbsp;&nbsp; break;&nbsp; default:&nbsp;&nbsp;&nbsp; header("Content-type: text/plain");}# 输出文件内容echo implode('', file($_GET[path]));function go_404(){&nbsp; header("HTTP/1.0 404 File not found");&nbsp; exit;}<BR>这个方案有效，但并不出色。（因为）跟apache相比，php需要更多内存和执行时间。另外，我们还得小心防止可能由path参数传递伪造值引起 的exploits。为避免这些问题，应该用apache直接发送header。rewrite规则语句允许当规则匹配时设置环境变量 （environment variable），当给定的环境变量设置后，Header命令就可以添加header。结合以下两条语句，我们就把rewrite规则和header设 置绑定在了一起：</P>
<P>RewriteEngine onRewriteRule ^/(.*.)v[0-9.]+.(css|js|gif|png|jpg)$ /$1$2 [L,E=VERSIONED_FILE:1]Header add "Expires" "Mon, 28 Jul 2014 23:30:00 GMT" env=VERSIONED_FILEHeader add "Cache-Control" "max-age=315360000" env=VERSIONED_FILE<BR>考虑到apache的执行顺序，应该把rewrite规则加在主配置文件（httpd.conf）而不是目录配置文件（.htaccess）中。否 则在环境变量设置之前，header行会先执行（就那没意义了）。至于header行，则可以放在两文件任何一个当中，没什么区别。</P>
<P>眼观六路<BR>（htmlor注：多谢tchaikov告知“skinning rabbits”的含义，但我不想翻的太正式，眼下的这个应该不算太离谱吧。）</P>
<P>通过结合使用以上技术，我们可以建立一个灵活的开发环境和一个快速又高性能的产品环境。当然，这离终极目标“速度”还有一段距离。有许多更深层的技 术（比如分离伺服静态内容，用多域名提升并发量等）值得我们关注，包括与我们谈到的方法（建立apache过滤器，修改资源url，加上版本信息）殊途同 归的其他路子。你可以留下评论，告诉我们那些你正在使用的卓有成效的技术和方法。</P>
<P>（完）</P>
<P>原文地址：<A href="http://blog.htmlor.com/2006/08/03/serving_javascript_fast_chinese/">http://blog.htmlor.com/2006/08/03/serving_javascript_fast_chinese/</A></P>
<P>--------------------------------</P>
<P>留个BACKUP,以后用<BR></P></div>]]></description>
	    <author><![CDATA[阿兹猫]]></author>
	    <comments>http://ase2001.blog.163.com/blog/static/4205520083115943297</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://ase2001.blog.163.com/blog/static/4205520083115943297</guid>
    <pubDate>Fri, 11 Apr 2008 17:09:43 +0800</pubDate>
    <dcterms:modified>2008-04-11T17:09:43+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[谢文的社区观 zt]]></title>	
    <link>http://ase2001.blog.163.com/blog/static/4205520083131144187</link>
    <description><![CDATA[<div><P>谢文的社区观 标签： 谢文&nbsp; 社区&nbsp; web2.0&nbsp; 种子&nbsp; <BR>我前段时间写了篇关于社区的文章，校内网的一个哥们看了后就急了，跟我说，你看到的谢文和我们知道的谢文是完全不同的人。谢文老师是校内网的顾问，他的社区观给校内网带来了很多的帮助。刚好，今天麦田发了一篇他，谢文和KESO的一篇对话，里面谢文也提了很多关于社区的观点，我也整理一下，共享给各位。在整理前，我首先承认，对于谢文我确实不是特别深入的了解，而麦天的这篇东西给了我很多关于谢文的资料。需要注意的这个材料的顺序是按麦田他们几个聊天的顺序整理的。</P>
<P>1、种子论</P>
<P>我个人的观点是，种子是一个社区的核心所在，是其粘性，品质和自增长的源动力。来搜狐后，我给搜狐大话IT下的第一个药方就是埋种子，现在也已经初见成效。没想到的是，谢文也有种子这个提法，呵呵。&nbsp; </P>
<P>谢文：黏性很重要，“种子”很重要。你说校内网最后之所以能比较喜剧地收场，它很大程度上就是先有一个真实人群，黏的非常紧，平均30几个PV，然后这批人呼朋唤友，然后就一下起来了。</P>
<P>谢文：这些核心人口“种子”也是你网站将来的品位啊，方向啊，格调啊的基本型</P>
<P>&nbsp;2、社区的自成长</P>
<P>什么样的社区是一个活社区，在这一点上，我比较同意谢文。但不知道谢文如何做到社区的自成长性。</P>
<P>谢文：关键是成长率！要稳定成长，网站大小不论，关键是要保持一个势头。 如果你感觉一个月左右停滞了，一定得变，一定在什么地方要变；另外不要搞虚的，一看不行了，拿推广来弄，弄半天他留不住，还是要想办法保持一个成长势头，差不多到最高在线人数在1万人左右，基本上就挡不住了，你不弄它都会自动成长。但是应该尽快缩短这个启动期的时间，6-9个月启动。</P>
<P>&nbsp;3、 社区人群</P>
<P>我的经验是年轻用户尤其是女性用户的粘性是最强的，也是最具扩张性的。谢文指出的几个站的停滞发展其实不只是因为其用户人群还有其产品的问题。在这块，我和他的分歧点比较多。中国最好的web2.0站不是粉丝网，甚至都不是豆瓣，而是i-part爱情公寓和51，上层是百度 QQ和网易（大家一定会很奇怪网易的，但实质上如此）。</P>
<P>谢文 所以这个我认为，现在web2.0其实是更适合低端的用户，而不是远离低端人群。你如果说中国的web2.0有什么特色，中国的web2.0应该做的更好。比如qq，qq就是小孩子撑着的。</P>
<P>谢文：嗯，我当时在和讯的时候，我们调查了一下，中国网民年龄的中间值是19岁－21岁；现在可能增加了一点。我们网民年龄分布的大方向，是在往真实人口分布的方向上走――现在网民增长速度，是年龄大的增长率高于年龄低的；因为大学生95％上网了，中学生50％是有的，而成年人，5％－10%，所以增长率高的是成年人。你和web1.0相比，也就是我们现在网民年龄分布，越来越接近中国主流社会。</P>
<P>比如豆瓣，他的用户绝对高端，他的用户群和现有人口绝对不相称，我最近发现一个现象，不知道你们注意没有，现在这拨web2.0公司，不管有钱没钱都算上，给我一年的时间，我闭上眼睛都能把他们带到alexa的1000名，比如在校内网我就稍微实践了一下。你看我们现在的这些web2.0公司，排除作弊和炒作的，现在alexa的排名都在1200－1500之间，上不了，差不多一年了，上不去，比如大众点评网、豆瓣网，圈网你我他，粉丝网，都是这样，一年走了直线。</P>
<P>4、web2.0和社区</P>
<P>条条大路通web2.0，同样，条条大路通社区，这是我个人的看法，其实周博通也是在这么做，但中间却遇到了很多的困难，使看起来很容易的道路变得很艰难。周博通是web2.0么？周博通是社区么？问这个问题似乎很好笑，但它确实是，它曾经想是，未来也是，但现在却不是。</P>
<P><BR>谢文要完成web2.0，需要两个基本条件。第一，你要有自己的社区。因为如果不是自己的社区，用户log的行为你得不到。第二，你自己的search能力，描述能力――描述一个用户，越真实越好，甚至于除了名字是假的，其他都是真的，连他不愿意承认的那部分都被你描述出来了。人是真实的。但这里面的确有一个点，就是谁更重要，这是客观存在的。比如都是圈子，我不认识麦田，你洪波认识麦田，所以你就是中间人，你就更重要，这些都是客观存在的。是会形成垄断、精英阶层等等。但真实社会就是这样的。这也是民主的一部分。民主就是有精英有大众。所以我一直坚持，做web2.0就是做社区，就是类似现实生活中做个城市，做个市场。比如你看北京，市里面有很多媒体。所以web2.0的社区也是这样，它上面有各种服务，包括媒体服务，它把web1.0全包括进去了――以人为中心。所以我说web2.0是革命，管10年，我说不着急，我说07年开始做web2.0都没问题，因为大家还都没认识到这点。</P>
<P>现在中国web2.0的主流做法，大家都是从一个角度切入、一个人群切入、一个需求切入、一个功能切入，曾几何时，周伯通还小红了一段，什么rss，它其实就是从信息角度切入，其实你无论bbs，博客、视频，im等等，从人的角度来看，它无非是表达的一种方式。比如博客，是的，人是有写作的需求，但还有更多需求，比如眼神对视的需求。所以关键是“真人”，如何在网上越来越逼近“真人”，你给他描述清楚。然后是“真人”之间互相交往，互动，怎么放大，该成圈子的成圈子，然后由此百业丛生。这和一个城市的发展历史是完全一样的。</P>
<P>&nbsp;</P>
<P>&nbsp; 5、谢文的实践</P>
<P>王兴的说法比我更有说服力，估计这也是校内网的朋友反驳我的核心点。</P>
<P>谢文：嗯，我们以校内网举例。开始的时候，王兴他们只定义在在校生，又搞实名，还要求哪个宿舍的等等。我就和他们说，你们大学生活是这样的吗？你们上大学就不出校门了？你们没有老师家长？你们不出去玩？所以你这个校内是不够的，你如果非要校内搞实名，那我们再做个校外网。所以我不排除你心很大，但是你开始的时候没资源，你选择一点突破；但是你的――结构！myspace在一开始就不是一个音乐网站的结构，它也没做很多音乐方面特殊的结构，而是一个很大的交友网站的结构。它的突破点是音乐，但音乐是概念上，不是结构上。我们现在的问题是在概念上你就做死了，一个方向，越做越深，越来越精雕细琢，这种网站，你一点突破后，也没多大前途</P>
<P>6、社区的下一步</P>
<P>&nbsp; 还是那句话，条条大路通罗马，既然目的的是罗马，那么走不到的一定是走反了方向。</P>
<P>谢文：这个就是web2.0的另一层意思。你看有钱人是不是在几个地方买房子，有的，但是对于普通人来说，绝大多数普通人的生活是在一个地方展开。比如我现在离不开北京，为什么？被我的生活圈，被我的朋友，被我生活依赖，甚至不是主观依赖，而是客观就离不开了。所以这个就是web2.0，去拉人，如果一个人已经习惯了某个网站，圈子，那他拉不走。所以myspace有人说会不会就他一个网站了？其实不是，网站大了以后，交流的效率会变低，人进去了感觉不到他的大，而沟通效率变低的话，你就有机会再建一个myspace，他不过就1亿人而已，全世界有60亿人呢。腾讯也一样，腾讯是青少年文化圈子，反正要是我这个岁数的人去了，我是待不了的，它的色彩，它的服务，它的语言，都深深地提醒我：“你丫头老了”。你再说上海，他们看话剧都穿西服领带，他们说那是巴黎的范儿；但你看北京，去小剧场看话剧，穿拖鞋去的都有。你说郭德刚也就在北京能火，要是到上海，他们会说“咦，江北的。”所以我不爱去上海，就和纽约一样。纽约我待过很久，我也不爱待，我烦那套。所以腾讯没问题，腾讯真要是全面转型，别的网站也有机会。比如和讯。我当时在和讯缺资源，我要做2.0，但是有些人要做1.0，所以你看和讯现在很奇怪。所以还是媒体的思路啊。而Myspace架构就摆在那里了，他的每一个功能，每一个pv都能黏住人！你看1.0的站，比如长安街上的广告，就那边点位置；但是myspace不排除每个页面的广告。所以回到洪波你刚才提出的问题，中国网民现在是不到2个亿，我估计我们都可以看到能成长到5个亿；当中国网民有5个亿的时候，能养活10个腾讯那样的公司，都很健康――就和现在有北京上海，但不妨碍天津杭州也都活的很简单。所以我们看google为什么买youtube，orkut，blogger，其实相当于买了三个城市，然后和google一起建成一个大都会。我觉得07年，最迟08年，我说的google这个战略都会实施，包括一次注册多个网站通用等等，google建立起了“大都会”；你再看yahoo，yahoo其实也买了好多，象地球村等等，它实际上也是“大都会”，yahoo就是社区，但现在没整合好，估计得到09年了，而到了那个时候，黄瓜菜都凉了；而myspace，myspace和我一样，遇人不淑，落到了默多克手里，搞得myspace现在停滞增长了，就是乱搭乱建的贫民窟。我去印度看过，好几百万人无边无际的贫民窟。这就是myspace！没有阶层，这就是美国社区的大问题。而我们中国网站现在是有机会的，我们这个社会强调的是集体主义，所以中国的myspace类型的网站很有机会。</P>
<P>&nbsp;----------------------------------------------------------------------------------</P>
<P>这篇文章我不是很赞同,但却很值得读</P>
<P>同样是转的 ,原帖地址是 <A href="http://huangzhiguang.blog.sohu.com/28848755.html">http://huangzhiguang.blog.sohu.com/28848755.html</A><BR></P></div>]]></description>
	    <author><![CDATA[阿兹猫]]></author>
	    <comments>http://ase2001.blog.163.com/blog/static/4205520083131144187</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://ase2001.blog.163.com/blog/static/4205520083131144187</guid>
    <pubDate>Tue, 1 Apr 2008 15:11:44 +0800</pubDate>
    <dcterms:modified>2008-04-01T15:11:44+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[从征途中学习社区运营 zt]]></title>	
    <link>http://ase2001.blog.163.com/blog/static/420552008312512672</link>
    <description><![CDATA[<div><P>从征途中学习社区运营<BR>桌子上放着两篇“征途”的长文，是我此前打印出来的。<BR>一篇是《玩“征途”的感受——这么多年游戏白玩了》，另一篇是前段时间吵得沸沸扬扬的《南方周末》的《系统》。<BR>写上面这些文字的时候，我刚读完第一篇，也就是玩“征途”的感受。看完这篇，我非常震撼，所以爬到电脑前写一下自己的感受。我主要是根据文章中的观点整理一下社区运营中值得吸取的地方，等我想明白后会补上一篇关于“征途”化社区运营的一个思考。<BR>征途中的很多东西是值得社区运营来学习的。<BR>1、网络游戏就是一个网络社区。<BR>网络游戏中的一个玩家可以看做是空间的用户。<BR>网络游戏中的公会可以看到是群组\圈子。<BR>……<BR>2、游戏有游戏的理念，社区也有社区的理念。<BR>“征途”的游戏理念是：给与玩家最大的满足感，让你爽，并且向往花钱换来的更爽。<BR>而社区的理念呢？社区的理念和游戏的理想差不多：这个社区的意义在哪？社区做成什么样子？用户能获得什么？社区的核心价值？……<BR>前天翻出了黄志光的一篇旧文，里面提到了种子论。社区的理念最核心的一部分就是种子。<BR>3、让用户尽快的找到感觉。<BR>征途让用户在20分钟内升到10级，让用户的迅速的进入到角色中。<BR>而社区呢？如果用户进入一个社区找不到方向是很危险的，除非这个社区里有他的朋友。<BR>当用户进入一个社区时，根据用户填写的个人资料，向用户推送相关的人、群，进而让用户在社区了动起来是值得做的一件事情。<BR>4、让用户进入社区就能得到惊喜。<BR>用户在10级时能获得一把属性远比15级装备还优秀的武器。这让用户进入游戏后就获得了惊喜，进而能激励用户继续玩下去。<BR>用户进入一个社区后呢？他能获得的惊喜有哪些呢？<BR>空间马上有人来踩？博客有人回复？帖子有人回复？……<BR>让用户在一个新社区获得它在别的社区得不到的惊喜是非常重要的。<BR>5、最快捷的帮助<BR>文章中“问题五”提到了征途中快捷的帮助系统。<BR>快捷的帮助系统对于任何产品来说都是非常重要的。尤其是让人参与的社区，当用户为了一个功能的使用绞尽脑汁的时候，也是他要离开的时候了。<BR>6、降低用户的沟通成本<BR>征途将用户操作做到了最简单的程度，只需要按照Ctrl+Z就OK了。这时用户有时间来聊天，进而成了朋友。这个问题在文章“问题六”中提的很清楚。<BR>其余游戏PK时操作的要求都是很复杂的，而征途将这个功能最简单化，让用户去认识朋友。因为征途明白，用户不会离开有朋友在玩的游戏的。<BR>社区的核心价值之一就是降低用户的沟通成本。社区该如何来做呢？<BR>社区也应该将最post之类的功能做的最简单，让用户有其余的时间来干别的事情，比如互访，互访是产生交友行为的基础。<BR>同时，如果一个用户有多个朋友在使用一个社区，他会离开这个社区吗？<BR>7、让用户体验到乐趣<BR>征途通过花费点数答题的形式来让用户获取乐趣。（详见文章“问题七”）。<BR>社区是一个汇聚人的地方，是不是也应该提供一些好玩的东西呢？<BR>Facebook F8平台上有很多好玩的Applications。其中，前端时间我和我老大一直在玩Car IQ和WereWolves，的确很好玩啊。<BR>搜狐社区中有个“押宝”游戏，搜狐社区的用户几乎没有没玩过的。要玩这个游戏？需要消耗积分的。获取积分？去发帖、回帖吧。<BR>8、让用户觉得能获得利益<BR>文章中“问题八、九、十”都在讨论一件事情，那就是付钱的问题。<BR>通过投资回报的理论，征途在用户达到30级的时候诱导用户消费。用户不消费的话也没关系，他让用户觉得征途给用户带来了利益，利益就是用户免费获得的道具。<BR>社区能给用户带来什么利益呢？<BR>关系？虚荣心？认知度？……<BR>9、让用户获得最大的虚荣心满足<BR>在征途中，当你杀了一个玩家，游戏的通知系统会通过屏幕显示的方式告诉全服的人，你的虚荣心获得了最大的满足。激励你会继续在征途里玩下去。<BR>社区呢？如果让用户获得虚荣心是非常关键的。<BR>在空间中，用户的虚荣心莫过于点击量。<BR>新浪博客在运营中不断的推出谁的博客又过千万了，这样做的目的就是刺激用户的虚荣心，还有及时刺激其他用户，让他们也尽快的加入千万博客俱乐部的行列。<BR>搜狐社区推出等级制度后，对第一个升级到最高级“狐之王者”的用户进行了长达一周的推送。<BR>10、结合产品特性的推广<BR>对征途的两个产品推广活动非常钦佩。尤其是“练到60级，如果说《征途》不好玩就能获得赔款”活动！<BR>11、让用户之间产生关系<BR>征途似乎是我听过的第一个把“人与人交互”作为重点来运营的游戏。<BR>社区要为用户提供的核心价值之一就是降低用户之间的沟通成本。这点，真的要深入思考一下了。<BR>12、高级用户和新用户的互补<BR>征途通过国战系统将人民币用户和新用户之间的感情拉近了。让两类用户都能获得自己想得到的东西。<BR>在社区中，怎么样通过活跃用户来影响新用户是一个问题。</P>
<P>这篇文章今天下午读了4篇，体会到了很多东西，先把上面这12条感悟提炼出来。以后再慢慢来分析。<BR>《系统》此前大体扫过，但是没仔细看，一会去看看。</P>
<P>(douban claim doubanclaimd265b93e0a9ca10e)</P>
<P>Tags: , Community, Game, Social Netwok, Zhengtu</P>
<P>-------------------------------------------------------------------</P>
<P>好文章,转了,原贴地址是 <A href="http://www.wanghuadong.com/?p=12">http://www.wanghuadong.com/?p=12</A>&nbsp; </P></div>]]></description>
	    <author><![CDATA[阿兹猫]]></author>
	    <comments>http://ase2001.blog.163.com/blog/static/420552008312512672</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://ase2001.blog.163.com/blog/static/420552008312512672</guid>
    <pubDate>Tue, 1 Apr 2008 14:51:26 +0800</pubDate>
    <dcterms:modified>2008-04-01T14:51:26+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[IP欺骗原来可以很简单]]></title>	
    <link>http://ase2001.blog.163.com/blog/static/42055200822802953244</link>
    <description><![CDATA[<div><P>前几天看到朋友在说投票程序的限制，通过IP怎么也限制不住，很奇怪，当时理解为通过ADSL的频繁拨号来改变IP地址。当时真是，很傻很天真。</P>
<P>直到昨天，研究真实IP的读取，才有了新的认识。</P>
<P>问题还是从通过代理读取真实IP引发的，由于一些CDN的问题，经常读不到IP，才让我对这个问题关注起来。</P>
<P>年轻的时候读IP直接用request.getRemoteAddr();&nbsp; 长大了才知道，这样只能读到代理的IP（当然是你设置代理后）</P>
<P>于是用了新的方法request.getHeader("X-Forwarded-For"); 相当完美的读取真实IP。</P>
<P>岁数再大点才知道，这样很傻很天真。X-Forwarded-For太容易被欺骗了。</P>
<P>#!/usr/bin/perl -w&nbsp; <BR>use LWP::UserAgent;<BR>$ua = LWP::UserAgent-&gt;new;<BR>$ua-&gt;agent("MSIE");</P>
<P>for ($i=1;$i&lt;255;$i++) {<BR>my $ip = '123.456.789.'.$i;<BR>print "-----\n$ip\n-----\n\n";</P>
<P>my $res = $ua-&gt;post(<BR>&nbsp;'http://host/getip.jsp',<BR>{id =&gt; $i},<BR>&nbsp; 'X-Forwarded-For'=&gt; $ip,<BR>&nbsp; );</P>
<P># Check the outcome of the response<BR>if ($res-&gt;is_success) {<BR>&nbsp; print $res-&gt;content;<BR>}<BR>else {<BR>&nbsp; print $res-&gt;status_line, "\n";<BR>}<BR>}</P>
<P>居然可以使用 123.456.789.1-255这样的IP，再以后，对任何IP都不在信任。</P></div>]]></description>
	    <author><![CDATA[阿兹猫]]></author>
	    <comments>http://ase2001.blog.163.com/blog/static/42055200822802953244</comments>
    <slash:comments>1</slash:comments>
    <guid isPermaLink="true">http://ase2001.blog.163.com/blog/static/42055200822802953244</guid>
    <pubDate>Fri, 28 Mar 2008 12:29:53 +0800</pubDate>
    <dcterms:modified>2008-03-28T12:29:53+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[拒绝和陌生人通联]]></title>	
    <link>http://ase2001.blog.163.com/blog/static/42055200822451858726</link>
    <description><![CDATA[<div><P>最近这些日子,我的手机频繁被骚扰,有推销保险的,有忽悠你买房卖房的,简直让我接近崩溃.</P>
<P>买车买房本是好事情,可是,我们的电话,就这样无情的被泄露了. 你说保险公司没泄露?你说地产商没泄露?连物业都是混蛋里的极品. 前两天还有个房地产公司的女的发春,逼的我打了110! 结果警察居然告诉我别理他们,他们很闲很无聊. KAO</P>
<P>没办法,只能找个手机防火墙来应付一下.&nbsp; </P>
<P>下面介绍一下 NOKIA 的手机防火墙软件</P>
<P>上网一搜,这样的软件数不剩数,多了去了,安装起来却也没有想象中的容易,哎,为什么现在做什么都要深入研究呢,这样对社会化分工好象很不利啊,扯远了,还是说防火墙.</P>
<P>选了一款 貌似 很强很变态的 名字叫 《互动电话大师》</P>
<P>如果您是NOKIA N73 这样的主流产品，恭喜您，V2。0版本就能满足您了，可惜我的是非主流产品，测试了很长时间后发现语音功能有问题，只好扔了重新开始，再经过查找，下载后安装V2。10版本。（破解的很烂）</P>
<P>软件是要花钱滴，而我们是不喜欢花钱滴，破解就成了一大问题。</P>
<P>网上提供的破解程序是需要证书的。</P>
<P>顺便说一句，才知道NOKIA弄了个什么狗屁的个人证书，没有这个证书很多第三方软件都无法使用。</P>
<P>这个该死的证书啊，让我痛苦死了，以下省略N多字，反正最后还是弄到了。</P>
<P>如果您实在觉得麻烦，再或者您觉得会浪费大量的时间，就去taobao上买一个吧，10块钱，TNND</P>
<P>证书有了，软件有了，还要授权，当然这个步骤很简单了，就是把证书打包到软件里，这样NOKIA才能装这个软件。</P>
<P>目前我还没解决V2。10版本的破解问题，破解补丁装上应用程序就死掉，再想办法吧，我人品已经很好了。</P>
<P>经过一系列的测试，防火墙搭上了，也可以拦截讨厌的广告号码了。又一个更让人讨厌的问题出现了:(</P>
<P>我需要这些讨厌的广告号码来建立我的黑名单。上网搜了搜，还不错，弄到了一个100多个电话的名单，可是。。。我怎么才能把这些电话导入到我的电话本里啊，5555。。。如果一个一个的录入，还没被骚扰死已经被累死了。</P>
<P>于是。。。。思考，思考，再思考</P>
<P>发现NOKIA的个人名单是通过一个一个的VCF格式的文件构造的。</P>
<P>而文件的内容大概是这样的</P>
<P>BEGIN:VCARD<BR>VERSION:2.1<BR>REV:20071231T170343Z<BR>N:blacklist_0;;;;<BR>TEL;CELL:51192540 <BR>X-CLASS:private<BR>END:VCARD<BR>好吧，写个小程序，生成这些VCF格式的文件再拷贝到手机的联系人里去，极度崩溃</P>
<P>import java.io.*;</P>
<P><BR>public class CreateVcf{<BR>&nbsp; private static File root = new File("d:\\test");<BR>&nbsp; </P>
<P>&nbsp; public CreateVcf(){<BR>&nbsp; }</P>
<P>&nbsp; public static void main(String[] argvs){</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File objfile;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BufferedWriter bw;</P>
<P><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String[] aline=new String[]{"51192540 ","51236407 ","51236422 ","51236541 ","51276331 ","51310490 ","51385997 ","51562964 ","51600393 ","51603539 ","51603607 ","51736271 ","51740303 ","51909199 ","51924833 ","52037850 ","52605170 ","58162031 ","58209911 ","58320888 ","58351188 ","58624332 ","58655268 ","58788888 ","60270549 ","62351746 ","62969510 ","63730309 ","63730402 ","63730431 ","64122745 ","64401269 ","64462577 ","64615354 ","64708192 ","64713115 ","64736839 ","64755565 ","64758859 ","64772738 ","64795809","64795841","64795927","64937767","64988237","65051370","65109000","65258629","65611388","65661338","65680668","65882648","65970768","65970770","66569842","68152393","68539788","69213911","69216526","69216719","80971081","81602209","81603325","81611857","81620931","81622247","81671521","81671843","81679306","81680194","81685478","81688694","81689558","81693920","81693940","81695563","81697997","81901751","81914732","81920243","81925547","81927624","81928436","81937422","81937428","81953958","81954233","81955129","81955549","81957693","81959641","81966449","81967890","81968712","81971049","81976494","81980448","81982642","81983016","81983735","81986400","81992449","81993842","81998657","82211177","82381860","84410764","84728865","84802697","84804359","84804377","84976972","84977930","85117775","85189008","86182004","86183924","86210819","86216049","86242180","86324067","86399703","86434808","86519953","86526796","86532521","86608841","86671951","86717011","86717055","87101656","87329424","87716854","87720473","87730143","81990539",,"51346175","87664968","81977211","81695556","81970214","51614918","82211199","64225978","81991576","51630660"};</P>
<P>&nbsp;</P>
<P><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;aline.length;i++){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; objfile = new File(root+"<A href='file://blacklist_"+i+".vcf/'>\\blacklist_"+i+".vcf</A>");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(objfile.getAbsolutePath());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bw = new BufferedWriter(new FileWriter(objfile));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.write("BEGIN:VCARD\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.write("VERSION:2.1\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.write("REV:20071231T170343Z\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.write("N:blacklist_"+i+";;;;\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.write("TEL;CELL:"+aline[i]+"\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.write("X-CLASS:private\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bw.write("END:VCARD\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bw.close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }catch(IOException e){}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P><BR>&nbsp; }<BR>}</P>
<P>也别那么多废话了，越简单越好，能完成功能就得。</P>
<P>再后面要做的事情就是把这些联系人对应到防火墙的黑名单里去，这个没办法了，只能手动关联了，还好只是打勾。勾完了也想明白了，也许防火墙的黑名单也是个文本列表呢，我何必这么麻烦呢？不管了，反正也选完了，懒的研究了，全当半自动吧，下次重装再研究全自动的，嘿嘿~~~</P>
<P>我的世界从此安静了，正写着呢，又一个骚扰电话进来了，居然没在这个黑名单列表里，哎，任重道远啊，我的同志</P></div>]]></description>
	    <author><![CDATA[阿兹猫]]></author>
	    <comments>http://ase2001.blog.163.com/blog/static/42055200822451858726</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://ase2001.blog.163.com/blog/static/42055200822451858726</guid>
    <pubDate>Mon, 24 Mar 2008 17:18:58 +0800</pubDate>
    <dcterms:modified>2008-04-07T10:27:27+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[我的密友]]></title>	
    <link></link>
    <description><![CDATA[<div>
			<a href="http://sophiechu.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/oYMhy8LZ6W8Y4Il5bet8DA==/1431300256573724315.jpg" border="0" />芷墨流香</a>
			<a href="http://jian.zh.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/yvw0aire87I19zKJa6w1AA==/646548021504380732.jpg" border="0" />fengzi</a>
			<a href="http://liran54no.1.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/jM7RoFeHNdPEfBdhx-KphQ==/169166461004445297.jpg" border="0" />⊙_⊙</a>
			<a href="http://blog.163.com/sunrui_77/" target="_blank"><img src="http://ava.blog.163.com/photo/v7-uBtcQ5b3Tz9tbxxgM7g==/3148579089485915007.jpg" border="0" />朵朵</a>
			<a href="http://net.eagle.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/ZQBtvuYIEUEAff-IVn3vEg==/3941212623902614978.jpg" border="0" />samshen</a>
			<a href="http://duck3cuttlefish.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/LvN3HkuBT0AYKdXSF_8BIA==/170573835888726387.jpg" border="0" />Yuki</a>
			<a href="http://pipi-163.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/rFwUhWQBfRTwNBqBP6mQWA==/1175439502744023092.jpg" border="0" />皮皮</a>
			<a href="http://culou.blog.163.com/" target="_blank"><img src="http://ava.blog.163.com/photo/GXYE1qR_XDalAukcw8JbkQ==/4015522017754537097.jpg" border="0" />jido</a>
</div>]]></description>
    <guid isPermaLink="false">http://ase2001.blog.163.com/friends</guid>
    <pubDate>Tue, 1 Jan 2008 00:00:00 +0800</pubDate>
    <dcterms:modified>2008-01-01T00:00:00+08:00</dcterms:modified>
  </item>    
 </channel>
</rss>