<?xml version="1.0" encoding="GB2312"?>
<rss version="2.0">
<channel>
<title>Friends Life and Oracle</title>
<link>http://www.eygle.com/blog/</link>
<description>eygle的Oracle Blog，提供Oracle技术研究及深入探讨，同时记录个人爱好及生活历程。</description>
<copyright>Copyright 2006</copyright>
<lastBuildDate>Fri, 08 Dec 2006 21:30:58 +0800</lastBuildDate>
<generator>http://www.movabletype.org/?v=3.33</generator>
<docs>http://blogs.law.harvard.edu/tech/rss</docs> 

<item>
<title>求求你别搜索我</title>
<description><![CDATA[<p>前几天,我的网站由于被腾讯的<a href="http://www.eygle.com/archives/2006/12/soso_is_crazy.html">SoSo拖曳</a>网页而导致失去响应,通过iptables我封锁了那个ip地址。</p>

<p>结果今天类似问题再次出现，搞得我的服务器load一下子又升高到200多:</p>

<p><strong>[root@eygle logs]# uptime<br />
 20:01:37 up 23 min,  1 user,  load average: 246.82, 243.49, 144.99</strong></p>

<p>瞬间的并发进程有300多:<br />
<blockquote>[root@eygle logs]# grep mt-search.cgi eygle_access_log.20061208 |awk '{print $1}'|wc -l<br />
321</blockquote></p>

<p>主要的ip地址为:58.61.164.138</p>

<p>再封锁了这个ip，不过如果对方不断更换地址，这样的封锁不是办法。<br />
咨询了一下<a href="http://www.anysql.net">DCBA</a>，他说可以通过robots.txt来限制一下相关目录的访问。<br />
我告诉他，那个早就设置了，这些垃圾搜索引擎根本不看robots.txt文件的。</p>

<p>随后DCBA建议我修改一下Apache的规则，这是一个好办法，修改了一下，类似之前设置过的图片<a href="http://www.eygle.com/archives/2006/05/apache_banned_image_link.html">防盗链</a>一样，针对mt-search.cgi的访问只允许来自站内，在httpd.conf中增加如下一段即可:<br />
<blockquote>&lt;FilesMatch "mt-search.cgi"&gt;<BR>Order Allow,Deny<BR>Allow from env=local_ref<BR>&lt;/FilesMatch&gt;</blockquote></p>

<p>现在应该可以有效防止这些流氓搜索引擎了吧?</p>

<p>-The End-<br />
</p>]]></description>
<link>http://www.eygle.com/archives/2006/12/httpd_conf_limit_mtsearch.html</link>
<guid>http://www.eygle.com/archives/2006/12/httpd_conf_limit_mtsearch.html</guid>
<category>Web</category>
<pubDate>Fri, 08 Dec 2006 21:30:58 +0800</pubDate>
</item>
<item>
<title>体验百度博客搜索-百度更了解中文</title>
<description><![CDATA[<p>昨天百度的博客搜索( <a href="http://blogsearch.baidu.com/">blogsearch.baidu.com</a> )正式发布，试用了一下，发现效果还不错。</p>

<p>用来做 <a href="http://www.eygle.com/search/sreygle.html">egoSurf</a> 时<a href="http://www.eygle.com/search/bdeygle.html">百度的结果</a>比Google的要好一些，百度能够给出更多在Google中无法找到的内容，看来的确是百度更了解中文；更重要的是Google的博客搜索( <a href="http://blogsearch.google.com/">blogsearch.google.com</a> )经常间歇性的无法访问，百度的产品看来是一个很好的替代。</p>

<p>其实我们可以很容易的发现，只要百度不断地把Google的成功服务搬过来，在GFW的帮助下，百度就能取得不错的成绩，最近微软的MSN Space几乎无法访问，百度的空间应该又获得了快速扩张...</p>

<p>目前百度主要收录的都是MSN Space和百度空间的Blog，在百度上提交了一下我的博客 RSS。<br />
博客提交地址：<a href="http://utility.baidu.com/blogsearch/submit.php">http://utility.baidu.com/blogsearch/submit.php</a> </p>

<p><br />
-The End-</p>]]></description>
<link>http://www.eygle.com/archives/2006/12/baidu_blogsearch.html</link>
<guid>http://www.eygle.com/archives/2006/12/baidu_blogsearch.html</guid>
<category>Web</category>
<pubDate>Fri, 08 Dec 2006 11:04:55 +0800</pubDate>
</item>
<item>
<title>遭遇Bug Apache异常终止 </title>
<description><![CDATA[<p>今早发现，网站居然死掉了，检查一下，还好不是<a href="http://www.eygle.com/archives/2006/08/eygle_com_backing.html">黑客</a>攻击。</p>

<p>检查一下Apache日志，发现如下一条信息:<br />
<strong>[notice] caught SIGTERM, shutting down</strong></p>

<p>然后Apache就死掉了，网站Down了12个小时。</p>

<p>Apache的日志中再没有其他信息，检索网上的内容，很多帖子提到是和Bug有关，但是情况各不相同。<br />
检查系统日志，又发现了一些有价值的信息:<br />
<blockquote>Dec  7 21:45:47 eygle kernel: Free swap:            0kB<br />
Dec  7 21:45:47 eygle kernel: 524282 pages of RAM<br />
Dec  7 21:45:47 eygle kernel: 294906 pages of HIGHMEM<br />
Dec  7 21:45:47 eygle kernel: 5537 reserved pages<br />
Dec  7 21:45:47 eygle kernel: 10083 pages shared<br />
Dec  7 21:45:47 eygle kernel: 0 pages swap cached<br />
Dec  7 21:45:47 eygle kernel: Out of Memory: Killed process 29858 (httpd).<br />
Dec  7 21:45:47 eygle kernel: oom-killer: gfp_mask=0x1d2<br />
Dec  7 21:45:47 eygle kernel: Mem-info:<br />
Dec  7 21:45:47 eygle kernel: DMA per-cpu:<br />
Dec  7 21:45:47 eygle kernel: cpu 0 hot: low 2, high 6, batch 1<br />
Dec  7 21:45:47 eygle kernel: cpu 0 cold: low 0, high 2, batch 1<br />
Dec  7 21:45:47 eygle kernel: cpu 1 hot: low 2, high 6, batch 1<br />
Dec  7 21:45:47 eygle kernel: cpu 1 cold: low 0, high 2, batch 1<br />
Dec  7 21:45:47 eygle kernel: Normal per-cpu:<br />
Dec  7 21:45:47 eygle kernel: cpu 0 hot: low 32, high 96, batch 16<br />
Dec  7 21:45:47 eygle kernel: cpu 0 cold: low 0, high 32, batch 16<br />
Dec  7 21:45:47 eygle kernel: cpu 1 hot: low 32, high 96, batch 16<br />
Dec  7 21:45:47 eygle kernel: cpu 1 cold: low 0, high 32, batch 16</blockquote></p>

<p>居然是资源耗尽,这几乎是不可能的，SoSo的疯狂拉网页已经被<a href="http://www.eygle.com/archives/2006/12/soso_is_crazy.html">成功封锁</a>...<br />
不过当时的系统具体信息已经不知道了，从Apache的日志中也没有看到太过频繁的访问。</p>

<p>哪位朋友遇到过类似的情况么?<br />
</p>]]></description>
<link>http://www.eygle.com/archives/2006/12/bug_apache_down.html</link>
<guid>http://www.eygle.com/archives/2006/12/bug_apache_down.html</guid>
<category>Web</category>
<pubDate>Fri, 08 Dec 2006 09:21:45 +0800</pubDate>
</item>
<item>
<title>关于版权的一点声明</title>
<description><![CDATA[<p>关于网络版权，其实一直很难有好的方法来控制，很多Blogger们也一直为此而烦恼着。</p>

<p>我的Blog也遭遇了<a href="http://www.eygle.com/archives/2006/01/from_csdn_2_chinaitlab.html">一系列</a>的大规模<a href="http://www.eygle.com/archives/2006/12/about_blog_copyright.html">复制侵权</a>。在气愤的同时，大家也纷纷通过不同的手段来维护自己的版权，也唯有靠大家的不断努力和呼吁，中国的版权意识才能不断提高吧。</p>

<p>最近看<a href="http://www.chedong.com">Che Dong</a>发布了一个<a href="http://www.chedong.com/blog/archives/001249.html">CC声明</a>，为每一篇文章增加了一个易于复制的版权声明。</p>

<p>其实我的每篇Blog之前都有一段链接及作者声明，类似:<br />
<blockquote>作者:eygle<BR>出处:<A href="http://www.eygle.com/blog">http://www.eygle.com/blog</A> [<A href="http://www.eygle.com/archives/my_life/life/">Life</A>]<BR>日期:December 1, 2006<BR>本文链接:<A href="http://www.eygle.com/archives/2006/12/softcn_meeting.html">http://www.eygle.com/archives/2006/12/softcn_meeting.html</A><BR></blockquote></p>

<p>可是转载者通常熟视无睹，去掉了事。</p>

<p>据Che Dong说他的版权声明极为有效，效仿一下，修改了我的版权声明，方便转载者进行复制，希望这是我最后一次谈论关于版权的事情。</p>

<p>-The End-<br />
</p>]]></description>
<link>http://www.eygle.com/archives/2006/12/eygle_copyright.html</link>
<guid>http://www.eygle.com/archives/2006/12/eygle_copyright.html</guid>
<category>Web</category>
<pubDate>Tue, 05 Dec 2006 10:10:17 +0800</pubDate>
</item>
<item>
<title>也谈关于 Blog 的版权</title>
<description><![CDATA[<p>这几天看到<a href="http://www.chedong.com/blog/archives/001249.html">Che Dong</a>和<a href="http://www.dbanotes.net/review/blog_copyright_and_plagiarism.html">Fenng</a>都在谈版权的问题，正好最近正为一些网站的疯狂"盗版"所困扰，顺便也谈几句。</p>

<p>这个疯狂"盗版"的网站就是以前我<a href="http://www.eygle.com/archives/2006/01/from_csdn_2_chinaitlab.html">一直极为痛恨</a>的ChinaITlab，上一次的编辑很虚心，接受了我的抗议，删除了部分转载的我的文章，后来我就没再追究。</p>

<p>可是最近我发现ChinaITlab换了编辑，他们网站的Oracle频道的"最近更新"再次成为了我的网站的最近更新:<br />
<a href="http://www.flickr.com/photos/65577044@N00/313523699/" title="Photo Sharing"><img src="http://static.flickr.com/116/313523699_809fff18a7.jpg" width="500" height="286" alt="ChinaITLb.Steal.Content" /></a></p>

<p>粗略数了一下，首页上转载我的文章就超过了10篇,而且一律更改了署名，去除了我的所有作者及出处信息；看来怎样在Blog上声明也是没有用的，Fenng和Che Dong费力设计的版权声明我估计也没用了。</p>

<p>这一次我试图通过MSN和他们的编辑沟通一下:<br />
<blockquote>eygle说:<br />
你们从我的网站转了大量文章，而且都没有署名，甚至更改了署名<br />
ChinaITlab 说:<br />
可能是有收录你们网站的文章,但是数量好像不是非常多<br />
我刚刚询问了一下其他编辑,可能是他们从别的网站上找的<br />
那些网站又是转自你们网站,比如那些更改了署名的文章就是</blockquote><br />
通常都是这样，首先是推卸责任；数量不多，这是什么逻辑？数量不多就可以侵权么? 而且，是真的不多么?</p>

<p>而且，居然要我出示证明来证明文章是我的:<br />
ChinaITlab 说:<br />
<blockquote>可以，如果确定这些文章是你的，我们可以按照你的要求删除，不过要请你出示相关证明，因为其他网站也出现了这样的文章，我们在不能确切确认来源的情况下擅自删除。</blockquote></p>

<p>我给出了原作链接之后，看看他们怎么说:<br />
<blockquote>ChinaITlab 说:<br />
这样的证明力度好像有点欠缺</blockquote></p>

<p>真是肺都要气炸了，照这么说，我还没法证明我写过的东西是我写的了，这是什么强盗逻辑?</p>

<p>比较起来，CSDN的态度算是很好的了。</p>

<p>-The End-</p>]]></description>
<link>http://www.eygle.com/archives/2006/12/about_blog_copyright.html</link>
<guid>http://www.eygle.com/archives/2006/12/about_blog_copyright.html</guid>
<category>Web</category>
<pubDate>Mon, 04 Dec 2006 10:04:25 +0800</pubDate>
</item>
<item>
<title>落后的技术就是灾难</title>
<description><![CDATA[<p>这几天我的网站连续遭遇了几次搜索攻击，导致服务器失去相应，这非常类似以前<a href="http://www.eygle.com/archives/2006/03/ban_hl_ftien_spider.html">海量</a>的蜘蛛来爬的情况。</p>

<p>这次的情况是这样的，当我发现服务器的http请求失去响应时登陆服务器，发现大量的Tag搜索请求：<br />
<blockquote>[gqgai@eygle logs]$ top</p>

<p>top - 17:13:49 up 120 days,  1:43,  1 user,  load average: 87.96, 175.87, 123.25<br />
Tasks: 229 total,  55 running, 173 sleeping,   0 stopped,   1 zombie<br />
Cpu(s): 84.4% us, 15.6% sy,  0.0% ni,  0.0% id,  0.0% wa,  0.0% hi,  0.0% si<br />
Mem:   2074980k total,  1837916k used,   237064k free,      840k buffers<br />
Swap:  4192956k total,   154724k used,  4038232k free,    21004k cached</p>

<p>  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND<br />
   46 root      16   0     0    0    0 D  7.9  0.0  42:56.37 kswapd0<br />
20279 nobody    25   0 54536  38m 3552 R  6.6  1.9   0:04.00 mt-search.cgi<br />
20289 nobody    24   0 50976  34m 3508 R  6.6  1.7   0:03.41 mt-search.cgi<br />
20288 nobody    25   0 49768  34m 3620 R  5.9  1.7   0:03.52 mt-search.cgi<br />
20242 nobody    25   0 40148  33m 3544 R  4.9  1.7   0:03.29 mt-search.cgi<br />
20253 nobody    25   0 52776  37m 3520 R  4.9  1.8   0:03.58 mt-search.cgi<br />
20275 nobody    25   0 52552  36m 3540 R  4.6  1.8   0:03.59 mt-search.cgi<br />
20236 nobody    25   0 51804  34m 3540 R  3.6  1.7   0:04.00 mt-search.cgi<br />
20277 nobody    24   0 52960  36m 3620 R  3.6  1.8   0:03.83 mt-search.cgi<br />
20223 nobody    25   0 51800  37m 3644 R  3.3  1.8   0:03.89 mt-search.cgi<br />
20225 nobody    25   0 48364  30m 3532 R  3.3  1.5   0:03.44 mt-search.cgi<br />
20228 nobody    20   0 45948  31m 3528 R  3.3  1.5   0:03.31 mt-search.cgi</blockquote></p>

<p>CPU load已经达到150左右。</p>

<p>检查日志，发现这些请求都是来自一个ip: 60.28.235.177<br />
经过查询，这个ip地址来自天津一个叫做Tengxun的公司:<br />
<blockquote>inetnum:      60.28.235.0 - 60.28.235.255<br />
netname:      TengXun-LTD-TJ<br />
country:      CN<br />
descr:        TengXun Technology Ltd Company<br />
admin-c:      HZ19-AP<br />
tech-c:       HZ19-AP<br />
status:       ASSIGNED NON-PORTABLE<br />
changed:      ipaddr@ywb.online.tj.cn 20051229<br />
mnt-by:       MAINT-CNCGROUP-TJ<br />
source:       APNIC</p>

<p>route:        60.28.0.0/15<br />
descr:        CNC Group CHINA169 Tianjin Province Network<br />
country:      CN<br />
origin:       AS4837<br />
mnt-by:       MAINT-CNCGROUP-RR<br />
changed:      abuse@cnc-noc.net 20060118<br />
source:       APNIC</blockquote></p>

<p>开始我一直怀疑TengXun是不是就是QQ的"腾迅"，经过继续查询，发现同一网段的另外一个ip地址:60.28.235.173 来自腾迅的Soso，访问该地址的80端口得到如下错误：<br />
<blockquote><strong>Forbidden</strong><br />
You don't have permission to access / on this server.<br />
-------------------------------------------------------<br />
Apache/1.3.33 Server at pic2.soso.com Port 80</blockquote></p>

<p>看来这个地址和腾迅的SOSO有关，应该就是SoSO放出来的一只蜘蛛。</p>

<p>目前不清楚Soso为什么会以如此高的并发狂拖网页，而其他搜索引擎就不会如此，没有办法，只好暂时封掉SoSo的IP。</p>

<p>由于iptables封锁的规则存在顺序问题，所以使用iptables增加规则应该使用如下命令:<br />
<strong>iptables -I INPUT 1 -s 60.28.235.177 -j REJECT</strong></p>

<p>这样封锁的结果是:<br />
<blockquote>[root@eygle ]# iptables --list -n<br />
Chain INPUT (policy ACCEPT)<br />
target     prot opt source               destination         <br />
REJECT     all  --  60.28.235.177        0.0.0.0/0           reject-with icmp-port-unreachable <br />
RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0  </blockquote>         </p>

<p>该网址被成功封锁，感谢网友 huc 的帮忙 ：）。</p>

<p>-The End-<br />
</p>]]></description>
<link>http://www.eygle.com/archives/2006/12/soso_is_crazy.html</link>
<guid>http://www.eygle.com/archives/2006/12/soso_is_crazy.html</guid>
<category>Web</category>
<pubDate>Sat, 02 Dec 2006 21:05:33 +0800</pubDate>
</item>
<item>
<title>变化还是不变 这是一个问题</title>
<description><![CDATA[<p>如同前几天<a href="http://www.eygle.com/archives/2006/11/wiki_unfreezed.html">预料</a>的，<A href="http://zh.wikipedia.org/w/index.php?title=%E9%A6%96%E9%A1%B5&amp;variant=zh-cn">中文Wiki</A>再次被封锁。</p>

<p>看起来，技术问题已经解决。</p>

<p>如果大家还记得，以前曾经有一个<a href="http://www.eygle.com/archives/2006/02/internet_and_freedom.html">新闻</a>，说美国举行听证会，对Google、Yahoo!、微软和思科四家公司在中国因为商业利益所做出的妥协进行谴责。</p>

<p>可是现在的结果呢？<br />
现在的结果是Google.cn已经取代了Google.com</p>

<p>Wikipedia不肯改变，那就让他白发苍苍去吧。</p>

<p>btw:最近决定恢复英文Blog的更新，关于这一篇，英文版参考<A href="http://www.eygle.com/en/it/wikipedia_is_blocked_again.html"><FONT color=#0000cc>Wikipedia is Blocked again in China</FONT></A> 。</p>

<p>-The End-</p>]]></description>
<link>http://www.eygle.com/archives/2006/11/zhwiki_is_blocked_again.html</link>
<guid>http://www.eygle.com/archives/2006/11/zhwiki_is_blocked_again.html</guid>
<category>Web</category>
<pubDate>Mon, 20 Nov 2006 20:42:36 +0800</pubDate>
</item>
<item>
<title>言论：内容封锁还是技术难题?</title>
<description><![CDATA[<p>最近<a href="http://zh.wikipedia.org/w/index.php?title=%E9%A6%96%E9%A1%B5&variant=zh-cn">中文Wiki</a>的解禁又引发了一系列的讨论，同时也引发了Wiki的访问热潮，以下是网上的一些统计数字:<br />
<blockquote>几天来，在中文网站上注册的、准备为网站贡献内容的新用户数量每天超过了1,200人，远远高于网站被解禁前每天平均300-400人的水平。据维基百科基金会的数据，中文网站上每天贴出的新文章数量较一周前增加了75%，现在中文文章总数已经超过了10万。</blockquote></p>

<p>其实关于Wiki，<a href="http://www.eygle.com/archives/2006/08/google_blogspot_open.html">blogspot等</a>站点的开开封封，很多网民已经开始麻木，最近Google.com基本上也已经被强制用Google.cn取代....世界和人们就这样在学着适应规则。</p>

<p>关于Wiki看到一段<a href="http://www.donews.com/Content/200611/8e935d8f82224d9b8921a29b7052397f.shtm">有趣的言论</a>，维基百科的系统管理员蒂姆斯塔林(Tim Starling)说：<br />
<blockquote>“我觉得现在还不是庆贺的时候，我们已经被封锁、解禁很多次了。<br />
我觉得，大家把这次解禁看作某种形式的自由化还为时过早。<strong>或许监管机构只是遇到了一些技术难题</strong>。”</blockquote></p>

<p>我也倾向于同意Tim Starling的看法，也许,无他，仅仅是由于技术问题...</p>

<p>-The End-<br />
</p>]]></description>
<link>http://www.eygle.com/archives/2006/11/wiki_unfreezed.html</link>
<guid>http://www.eygle.com/archives/2006/11/wiki_unfreezed.html</guid>
<category>Web</category>
<pubDate>Thu, 16 Nov 2006 16:34:39 +0800</pubDate>
</item>
<item>
<title>MT归档分页插件(Paged Archives)几个问题的解决</title>
<description><![CDATA[<p>九月的时候，dcba曾经向我<a href="http://www.anysql.net/weblog/blog_page_archives.html">推荐</a>过一个MT的归档分页插件Paged Archives，当我们某个分类的文档越来越多，单一页面显示显然不再适合，我之前将分类通过只<a href="http://www.eygle.com/archives/database/backuprecovery/">显示标题</a>进行处理，而利用这个插件则可以实现分页，效果很不错，我现在的<a href="http://www.eygle.com/archives/2006/10/">按月归档</a>使用了这一插件。</p>

<p>不过昨天这一插件出现了一个问题，在<a href="http://abates.tetrap.com/plugins/pagedarchives.html">作者</a>的网站上发现有<a href="http://abates.tetrap.com/archives/2006/10/04/paged_archives_v12.html">很多人</a>遇到，主要症状就是链接显示错误，错误链接类似如下格式显示：<br />
<blockquote>http://localhost/mt//opt/apache/mt/2.html </blockquote></p>

<p>我猜测是程序中路径处理部分存在Bug，检查了半天也没有发现，问了DCBA他也没有发现问题，而他使用是正常的；最后考虑可能是版本的问题，将这个插件降低到版本1.1，问题解决。</p>

<p>这个插件的另外一个问题是，在apache日志中经常可以发现如下错误:<br />
<strong>"my" variable $filepath masks earlier declaration in same scope at ..../pagedarchives.pl line 222</strong></p>

<p>这是一个<a href="http://www.eygle.com/archives/2006/01/mt_scode_error_correct.html">常见</a>的错误，暂时的解决方案是将222行的：<br />
<strong>my $filepath="$path/$pagebasename$ii$ext";</strong><br />
修改为：<br />
<strong>$filepath="$path/$pagebasename$ii$ext";</strong></p>

<p>即可。</p>

<p>这是一个不错的插件，希望作者能够尽快修正这一Bug。</p>

<p>-The End-</p>]]></description>
<link>http://www.eygle.com/archives/2006/11/mt_paged_archives_plugins.html</link>
<guid>http://www.eygle.com/archives/2006/11/mt_paged_archives_plugins.html</guid>
<category>Web</category>
<pubDate>Wed, 15 Nov 2006 16:18:16 +0800</pubDate>
</item>
<item>
<title>重新安装Lilina Rss聚合器</title>
<description><![CDATA[<p>关于在线Rss聚合器，最先尝试的就是<a href="http://www.eygle.com/archives/2005/08/lilina_news_agg.html">Lilina</a>，后来又尝试安装了<a href="http://www.eygle.com/archives/2005/11/gregarius_and_lilina.html">Gregarius</a>，不同的聚合器都有不同的问题，最初的Lilina主要问题是刷新效率问题，不能对Feed进行分类也是一个问题，而Lilina最让我满意的是UI，界面清爽整齐，<a href="http://www.chedong.com">Che Dong</a>的站点首页就是通过Lilina修改而搭建而成的。</p>

<p>最近<a href="http://www.anysql.net">dcba</a>对Lilina进行了<a href="http://www.anysql.net/rss">增强</a>，修改了Cache机制，同时修改了页面内容获取及展现，我采用了他的加强版本，重新搭建了<a href="http://www.eygle.com/lilina">我的Lilina</a>聚合页面。</p>

<p>在搭建过程中遇到的一个主要问题是字符集问题，我的Apache设置的缺省字符集gb2312，而Lilina缺省的字符集是UTF8，为了解决这两者的兼容性问题，颇费了一些周折。</p>

<p>最终通过使用.htaccess文件设置解决，主要参考了Apache的官方文档：<br />
<a href="http://httpd.apache.org/docs/2.0/howto/htaccess.html">http://httpd.apache.org/docs/2.0/howto/htaccess.html</a></p>

<p>现在<a href="http://www.eygle.com/lilina">我的Lilina</a>又可以访问了。</p>

<p>-The End-</p>]]></description>
<link>http://www.eygle.com/archives/2006/10/rebuild_lilina_rss.html</link>
<guid>http://www.eygle.com/archives/2006/10/rebuild_lilina_rss.html</guid>
<category>Web</category>
<pubDate>Sat, 21 Oct 2006 21:10:50 +0800</pubDate>
</item>
<item>
<title>使用外部表分析eygle.com的网站访问日志</title>
<description><![CDATA[<p>经过使用Oracle的外部表对Oracle的<a href="http://www.eygle.com/archives/2006/10/use_oracle_external_table.html">警告日志</a>文件、<a href="http://www.eygle.com/archives/2006/10/external_table_and_trace_file.html">跟踪文件</a>进行获取和分析之后，我发现外部表实在是非常易用，甚至到了随心所欲的境地（当然外部表尚不能修改外部文件）。</p>

<p>使用外部表可以很容易的实现网站的访问日志分析。<br />
虽然使用<a href="http://www.eygle.com/archives/2004/12/aeoeaawstatsapa.html">Awstats</a>等工具也可以实现，可是使用Oracle来分析我们更应该得心应手。<br />
而且这一切还是有那么一点点Cool的。</p>

<p>好了，闲言少叙，让我们来看一下我分析的过程。<br />
首先创建路径指向日志存放目录:<br />
<blockquote>[oracle@jumper elog]$ pwd<br />
/opt/oracle/elog<br />
[oracle@jumper elog]$ ls<br />
eygle_access_log.20061016<br />
[oracle@jumper elog]$ sqlplus "/ as sysdba"</p>

<p>SQL*Plus: Release 9.2.0.4.0 - Production on Wed Oct 18 08:59:35 2006</p>

<p>Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.</p>

<p><br />
Connected to:<br />
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production<br />
With the Partitioning option<br />
JServer Release 9.2.0.4.0 - Production</p>

<p>SQL> create or replace directory elog <br />
  2  as '/opt/oracle/elog';</p>

<p>Directory created.</blockquote></p>

<p>然后我将这个路径的访问权限授予eygle用户来进行具体操作:</p>

<blockquote>SQL> grant read,write on directory elog to eygle;

<p>Grant succeeded.</blockquote></p>

<p>选择合适的分隔符创建外部表:<br />
<blockquote>SQL> connect eygle/eygle<br />
Connected.</p>

<p>SQL> create table eygle_access_log_20061016 <br />
  2  ( ip_address_date  				varchar2(100),<br />
  3     acc_file                varchar2(400),<br />
  4     acc_cdsz                varchar2(20),<br />
  5     acc_url                 varchar2(400),<br />
  6     left_blank      				varchar2(10),<br />
  7     acc_agent               varchar2(400))<br />
  8     organization external (<br />
  9    type oracle_loader<br />
 10    default directory ELOG<br />
 11    access parameters (<br />
 12      records delimited by newline<br />
 13      nobadfile<br />
 14      nodiscardfile<br />
 15      nologfile<br />
 16      fields terminated by '"'<br />
 17      missing field values are null<br />
 18    )<br />
 19    location('eygle_access_log.20061016')<br />
 20  )  reject limit unlimited<br />
 21  /</p>

<p>Table created.</blockquote></p>

<p>此时我们就可以对<a href="http://www.eygle.com">eygle.com</a>的2006年10月16日的访问日志进行分析了。</p>

<p>我们可以先看一下各个字段的分界结果，示例如下:<br />
<blockquote>SQL> select ip_address_date from eygle_access_log_20061016<br />
  2  where rownum <11;</p>

<p>IP_ADDRESS_DATE<br />
-------------------------------------------------------------<br />
38.102.128.140 - - [16/Oct/2006:00:00:17 +0800]<br />
66.249.65.113 - - [16/Oct/2006:00:00:19 +0800]<br />
202.160.178.221 - - [16/Oct/2006:00:00:35 +0800]<br />
59.36.78.100 - - [16/Oct/2006:00:00:37 +0800]<br />
59.36.78.100 - - [16/Oct/2006:00:00:38 +0800]<br />
72.30.61.8 - - [16/Oct/2006:00:00:38 +0800]<br />
221.217.84.230 - - [16/Oct/2006:00:00:42 +0800]<br />
221.217.84.230 - - [16/Oct/2006:00:00:42 +0800]<br />
74.6.65.236 - - [16/Oct/2006:00:01:07 +0800]<br />
74.6.73.36 - - [16/Oct/2006:00:01:09 +0800]</p>

<p>10 rows selected.</blockquote></p>

<p>通过SQL析取出访问的ip地址:<br />
<blockquote>SQL> select substr(ip_address_date,1,instr(ip_address_date,' ')) ip_address <br />
  2  from eygle_access_log_20061016 where rownum <11;</p>

<p>IP_ADDRESS<br />
---------------------------------------------------------------------------<br />
38.102.128.140<br />
66.249.65.113<br />
202.160.178.221<br />
59.36.78.100<br />
59.36.78.100<br />
72.30.61.8<br />
221.217.84.230<br />
221.217.84.230<br />
74.6.65.236<br />
74.6.73.36</p>

<p>10 rows selected.</blockquote></p>

<p>接下来我们就可以很容易的获得当日访问我站点的独立IP数量了:<br />
<blockquote>SQL> set timing on<br />
SQL> select count(distinct(substr(ip_address_date,1,instr(ip_address_date,' ')))) uip<br />
  2  from eygle_access_log_20061016;</p>

<p>       UIP<br />
----------<br />
      7534</p>

<p>Elapsed: 00:00:06.86</blockquote><br />
因为外部表的处理性能上要差一些，我们记录了一下时间，以上查询大约用了7秒的时间。</p>

<p>我们可以对比一下数据库表的性能。<br />
首先将日志加载到数据库表中:<br />
<blockquote>SQL> create table ealog as<br />
  2  select * from eygle_access_log_20061016;</p>

<p>Table created.</p>

<p>SQL> desc ealog;<br />
 Name                                                              Null?    Type<br />
 ----------------------------------------------------------------- -------- --------------------------------------------<br />
 IP_ADDRESS_DATE                                                            VARCHAR2(100)<br />
 ACC_FILE                                                                   VARCHAR2(400)<br />
 ACC_CDSZ                                                                   VARCHAR2(20)<br />
 ACC_URL                                                                    VARCHAR2(400)<br />
 LEFT_BLANK                                                                 VARCHAR2(10)<br />
 ACC_AGENT                                                                  VARCHAR2(400)</p>

<p>SQL> select count(*) from ealog;</p>

<p>  COUNT(*)<br />
----------<br />
    165443</blockquote></p>

<p>然后我们<a href="http://www.eygle.com/archives/2005/12/oracle_howto_flush_buffer_cache.html">强制刷新Buffer Cache</a>，消除Cache的影响，再次执行查询：<br />
<blockquote>SQL> alter session set events = 'immediate trace name flush_cache';</p>

<p>Session altered.</p>

<p>Elapsed: 00:00:00.03<br />
SQL> select count(distinct(substr(ip_address_date,1,instr(ip_address_date,' ')))) uip<br />
  2  from ealog;</p>

<p>       UIP<br />
----------<br />
      7528</p>

<p>Elapsed: 00:00:02.15</blockquote></p>

<p>此时用了大约2秒的时间，也就是说，外部表的性能较数据库表大约慢了3倍左右。</p>

<p>继续，我们可以查询当日网站中，哪些网页是被最频繁访问的:<br />
<blockquote>SQL> select replace((replace(acc_file,'GET ','http://www.eygle.com')),'HTTP/1.1') accfile,ct from (<br />
  2  select ACC_FILE,count(*) ct from eygle_access_log_20061016<br />
  3  where acc_file like '%htm%'<br />
  4  group by acc_file order by ct desc)<br />
  5  where rownum <21;</p>

<p>ACCFILE                                                                                  CT<br />
-------------------------------------------------------------------------------- ----------<br />
http://www.eygle.com/index-tech.htm                                                     110<br />
http://www.eygle.com/archives/2006/10/wish_home.html                                    103<br />
http://www.eygle.com/index-ha.htm                                                        79<br />
http://www.eygle.com/me/fairy_tale_leaf.htm                                              77<br />
http://www.eygle.com/archives/2006/11/use_oracle_external_table.html                     73<br />
http://www.eygle.com/index-sql.htm                                                       69<br />
http://www.eygle.com/archives/2006/10/tom_oracle_9i10g.html                              68<br />
http://www.eygle.com/archives/2008/08/my_book_services.html                              63<br />
http://www.eygle.com/archives/2006/11/welcome_friend.html                                62<br />
http://www.eygle.com/archives/2006/10/veritas_vcs_simulator.html                         61<br />
http://www.eygle.com/index-case.htm                                                      60<br />
http://www.eygle.com/archives/2004/08/aoaouiiciona.html                                  59<br />
http://www.eygle.com/archives/2006/08/oracle_fundbook_recommand.html                     52<br />
http://www.eygle.com/archives/2006/08/5460_8174.html                                     49<br />
http://www.eygle.com/archives/2004/12/gmailaeaeoa.html                                   48<br />
http://www.eygle.com/archives/2005/06/howlsmovingcast.html                               48<br />
http://www.eygle.com/gbook/index.html                                                    48<br />
http://www.eygle.com/index-hist.htm                                                      44<br />
http://www.eygle.com/index-special.htm                                                   41<br />
http://www.eygle.com/index-f&l.htm                                                       37<br />
20 rows selected.</p>

<p>Elapsed: 00:00:06.31<br />
SQL></blockquote></p>

<p>通过外部表及SQL查询，只要日志文件中存在的信息，都可以很容易的被获取和分析.</p>

<p>-The End-<br />
</p>]]></description>
<link>http://www.eygle.com/archives/2006/10/use_external_talbe_analyze_eyglecom_log.html</link>
<guid>http://www.eygle.com/archives/2006/10/use_external_talbe_analyze_eyglecom_log.html</guid>
<category>SQL.PLSQL</category>
<pubDate>Wed, 18 Oct 2006 11:56:39 +0800</pubDate>
</item>
<item>
<title>AWStats统计中的sitehao123等关键词清理</title>
<description><![CDATA[<p>很早就发现在AWStats的后台统计中存在一些很奇怪的搜索引擎关键字,例如gb2312和sitehao123等;</p>

<p>而且还有一些数字形式的关键字，如503316480，201326592等；<br />
这些关键字的搜索比例很高，在我的9月份不完全统计中，包含:</p>

<blockquote><pre>
17655 个不同的关键字句 搜索 百分比
gb2312 5011 11.6 % 
sitehao123 728 1.6 % 
503316480 671 1.5 % 
201326592 658 1.5 % </pre></blockquote>

<p><br />
Che Dong对这个问题给出了<a href="http://www.chedong.com/blog/archives/001174.html">解决方案</a>，通过修改AWStats的search_engines.pm中的参数列表定义，可以过滤掉可能产生歧义的参数。</p>

<p>那么类似503316480，201326592的数字是什么呢？<br />
通过<a href="http://www.baidu.com/s?wd=503316480&cl=3">Baidu搜索</a>一下就可以找到答案，原来是图片搜索带来的参数，同样我们修改一下search_engines.pm的参数列表就可以过滤掉这些歧义参数。<br />
我修改后再加入"ct="就可以过滤掉这些图片搜索带来的数字了:</p>

<blockquote>@WordsToCleanSearchUrl= ('ct=','tn=','ie=','act=','annuaire=','btng=','cat=','categoria=','cfg=' ...</blockquote>

<p>在抵达我的网站的关键字中，5460和中国同学录居然都排在了前列:<br />
<blockquote>5460 91 1.2 % <br />
中国同学录 89 1.1 % </blockquote></p>

<p>看来同学的力量不可低估。</p>

<p>-The End-</p>

<p></p>

<p><br />
</p>]]></description>
<link>http://www.eygle.com/archives/2006/10/awstat_wordstoclean.html</link>
<guid>http://www.eygle.com/archives/2006/10/awstat_wordstoclean.html</guid>
<category>Web</category>
<pubDate>Mon, 09 Oct 2006 10:00:08 +0800</pubDate>
</item>
<item>
<title>说说Yahoo!糟糕的密码找回功能</title>
<description><![CDATA[<p>昨天收到了几封MSN的邮件通知，大致内容是: <a href="http://www.chedong.com">chedong</a> 在雅虎通上填加您为好友，并邀请您一起使用雅虎通 .</p>

<p>这应该是chedong通过雅虎通<a href="http://www.chedong.com/blog/archives/001213.html">批量导入MSN联系人</a>后自动发送的邮件通知。</p>

<p>虽然雅虎通可以和MSN直接通讯，但是我还是愿意尝试一下雅虎通。毕竟在我最初接触互联网的年代（大约在1998年左右），雅虎曾经是我们的第一选择。</p>

<p>可是当我试图通过以前的Yahoo! ID登录Yahoo!通的时候，一个问题出现了，我早已经不记得N年前创建的Yahoo!帐号的密码了，而且我确实此前就做过很多尝试，并且把我常用的名字都注册完了，现在，我面临的难题是，怎样找回这些密码?</p>

<p>于是再次遭遇了雅虎糟糕的密码<a href="http://edit.bjs.yahoo.com/config/eval_forgot_pw?new=1&.done=http://mail.yahoo.com&.src=ym&partner=&.intl=cn&pkg=&stepid=&.last=">找回功能</a>（也许应该怪我的记性太差）:<br />
<a href="http://www.flickr.com/photos/eygle/256003653/" title="Photo Sharing"><img src="http://static.flickr.com/104/256003653_cecebfb3df.jpg" width="500" height="354" alt="Yahoo!PasswordFinder" /></a></p>

<p>第一步的信息那里我就已经无法通关了，一个邮政编码足以难倒我，从大学到现在，自己已经在不下10个的邮政区域里流动过，该是哪一个呢？而且，我当初填写的真的是一个邮政编码么?</p>

<p>另外一个有意思的发现是，在生日的月份栏，"五月"是与众不同的显示，这个月份对于Yahoo！有着什么样的特殊含义呢？有谁知道么?</p>

<p>btw: 还有一个问题是，国家地区选择栏里，你要很仔细才能找到中国。</p>

<p>好了，经过对这个页面的仔细研究后我发现：我的密码找回永无希望了。</p>

<p><br />
-The End-</p>]]></description>
<link>http://www.eygle.com/archives/2006/09/yahoo_find_password.html</link>
<guid>http://www.eygle.com/archives/2006/09/yahoo_find_password.html</guid>
<category>Web</category>
<pubDate>Sat, 30 Sep 2006 09:49:10 +0800</pubDate>
</item>
<item>
<title>spam留言知几何之二</title>
<description><![CDATA[<p>今天晚上，教Julia学习数据库玩。<br />
去后台查了一下本站的<a href="http://www.eygle.com/gbook/index.html">留言板</a>数据库，发现spam留言<a href="http://www.eygle.com/archives/2005/12/i_hate_spam.html">依然</a>肆虐。</p>

<p>整个网站，除了被<a href="http://www.eygle.com/archives/2006/08/eygle_com_backing.html">攻击</a>时损失了部分数据，现在有效的回复只有不到2000条:<br />
<blockquote>mysql> select count(*) from guestbook;<br />
+----------+<br />
| count(*) |<br />
+----------+<br />
| 1944     |<br />
+----------+<br />
1 row in set (0.00 sec)</blockquote></p>

<p>而垃圾留言呢?有近2000条:<br />
<blockquote>mysql> select count(*) from spambook;<br />
+----------+<br />
| count(*) |<br />
+----------+<br />
| 17787    |<br />
+----------+<br />
1 row in set (0.00 sec)</blockquote></p>

<p>如果我没有采取过滤措施，那么可以想象，留言板一定早已经面目全非了。<br />
真是佩服这些无聊人士每天废寝忘食的四处散布垃圾信息:</p>

<blockquote><pre>mysql> select FROM_UNIXTIME(dateline,'%Y-%m-%d') 'date' ,count(*)    
    -> from spambook group by 1 order by 1 desc limit 20;
+------------+----------+
| date       | count(*) |
+------------+----------+
| 2006-09-23 | 2        |
| 2006-09-22 | 75       |
| 2006-09-21 | 98       |
| 2006-09-20 | 106      |
| 2006-09-19 | 90       |
| 2006-09-18 | 125      |
| 2006-09-17 | 106      |
| 2006-09-16 | 142      |
| 2006-09-15 | 111      |
| 2006-09-14 | 125      |
| 2006-09-13 | 110      |
| 2006-09-12 | 115      |
| 2006-09-11 | 123      |
| 2006-09-10 | 112      |
| 2006-09-09 | 127      |
| 2006-09-08 | 100      |
| 2006-09-07 | 116      |
| 2006-09-06 | 96       |
| 2006-09-05 | 112      |
| 2006-09-04 | 122      |
+------------+----------+
20 rows in set (0.14 sec)</pre></blockquote>

<p>让我们见识一下Top100的无聊人士都有哪些:<br />
</p>]]></description>
<link>http://www.eygle.com/archives/2006/09/so_many_spam.html</link>
<guid>http://www.eygle.com/archives/2006/09/so_many_spam.html</guid>
<category>Web</category>
<pubDate>Sat, 23 Sep 2006 00:08:27 +0800</pubDate>
</item>
<item>
<title>我的Blog Rss订阅用户分布</title>
<description><![CDATA[<p>看到<a href="http://www.dbanotes.net/sitelog/rss_1k_analysis.html">Fenng</a>的Blog用户订阅数已经超过了1000，Fenng的站点作的不错。</p>

<p>再看看俺的，恩，也不错（汗ing），超过了200，截个图纪念一下：<br />
<a href="http://www.flickr.com/photos/eygle/243546414/" title="Photo Sharing"><img src="http://static.flickr.com/96/243546414_29f916acb0_o.jpg" width="500" height="342" alt="BlogRssAny" boder="1" /></a></p>

<p>在阅读工具里面<a href="http://www.bloglines.com/">Bloglines</a>的用户是最多的，CreatNews客户端工具的用户也不少，占到了11%。<br />
看来Firefox的用户也为数不少，FireFox Live Bookmarks占到了13%，等到IE7正式版推出时，应该也会有不少IE的用户使用IE7作为Rss阅读工具吧。</p>

<p>之前我的css存在问题，使得在FireFox中显示存在字体过小的问题，感谢<a href="http://www.anysql.net">dcba</a>帮我找出了问题，一举解决了Blog在FireFox中显示异常的问题。</p>

<p>-The End-</p>]]></description>
<link>http://www.eygle.com/archives/2006/09/blog_rss_user.html</link>
<guid>http://www.eygle.com/archives/2006/09/blog_rss_user.html</guid>
<category>Web</category>
<pubDate>Fri, 15 Sep 2006 10:08:56 +0800</pubDate>
</item>


</channel>
</rss>