﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title>奇技淫巧 | WEN'S Horizon</title>
		<link>http://www.wensh.net/archive.php/category/20.html</link>
		<description>奇技淫巧 | WEN'S Horizon</description>
		<copyright><![CDATA[Copyright 2005-2010 WEN'S Horizon]]></copyright>
		<image>
			<title>奇技淫巧 | WEN'S Horizon</title> 
			<url>http://www.wensh.net/skin/img/nestlogo.gif</url> 
			<link>http://www.wensh.net/archive.php/category/20.html</link> 
			<description>奇技淫巧 | WEN'S Horizon</description> 
		</image>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/2009.html</link>
			<title><![CDATA[中文fortune cookie——唐诗宋词]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Thu, 20 Nov 2008 23:21:52 -0800</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/2009.html</guid>
			<description><![CDATA[<p>Ubuntu自带fortune cookie程序。在命令行下执行fortune，就得到一个<a href="http://en.wikipedia.org/wiki/Fortune_cookie" rel="external">fortune cookie</a>，不过是英文的。</p><p>执行“sudo apt-get install fortune-zh”安装fortune-zh软件包即得到中文的fortune cookie程序。执行fortune-zh即得到一个中文fortune cookie，内容是唐诗宋词。</p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/2009.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/1057.html</link>
			<title><![CDATA[[转载] FreeBSD发力 志在与桌面Linux一较高下]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Tue, 16 May 2006 21:16:47 -0700</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/1057.html</guid>
			<description><![CDATA[<p>CNET科技资讯网5月16日国际报道 桌面Linux （Desktop Linux）也许不久后将遭遇更强的开放源代码对手：FreeBSD。</p><p>FreeBSD开发人员Scott Long接受ZDNet UK访问时表示，FreeBSD的功能“即将追平”Linux。BSD脱胎自BSD操作系统，而BSD则从Unix衍生而来。</p><p>Long说：“现在，我们正投入许多工夫让FreeBSD的桌面应用更平易近人。一年内，我们认为可和Linux打成平手。”</p><p>目前这群开发人员的首要目标，是把FreeBSD和GNOME以及KDE的桌面环境整合起来，并加入随插即用的硬件功能。</p><p>Long说：“开发人员现在正努力让使用者以后插入USB随身碟就能使用，不必再费力输入一些复杂的指令。”</p><p>FreeBSD桌面开发小组队长Joe Clarke最近接受访问时曾表示，目前聚焦于整合FreeBSD 与GNOME，但将来也希望纳入KDE支持，以便为这些环境创造出一套共同的界面与工具。</p><p>Clarke接受BSDTalk访问时说，首要之务是让GNOME的硬件抽象层(hardware abstraction layer；HAL)--即处理硬件特定源代码的部分--与FreeBSD互通。</p><p>他说：“让硬件抽象层计划成功套用在FreeBSD上，会是一大胜利。这不是万灵丹，不会让一切完美无瑕，但可让FreeBSD的桌面功能跨进一大步。”</p><p>FreeBSD开发人员面临的一大问题，是GNOME开发者通常偏重Linux，而不是其他桌面型操作系统。</p><p>Clarke说：“他们开始考虑的模组不支持FreeBSD或Solaris，只限Linux使用。我的看法是，绝大多数的核心GNOME开发人员只用Linux作为GNOME方开发平台。”</p><p>除了FreeBSD团队之外，DesktopBSD计划与PC BSD计划也致力于开发桌面版的FreeBSD操作系统。</p><p>上周，FreeBSD团队发布6.1版操作系统，一大功能是改良文件系统的稳定度。</p><p>Long说：“这一版最花工夫的是文件系统的稳定度。我们测试后发现了一些错误，然后加以除错。对使用高负荷文件服务器的使用者来说，这或许是目前为止最好的版本。”</p><p>FreeBSD 6.1版的详细信息可上FreeBSD网站阅览。</p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/1057.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/1042.html</link>
			<title><![CDATA[FreeBSD安装手记]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Sun, 30 Apr 2006 12:44:15 -0700</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/1042.html</guid>
			<description><![CDATA[<p>本手记适用于FreeBSD 5.4版本，其它版本的FreeBSD系统与此会略有出入。</p><ol class="dec"><li><a href="http://www.wensh.net/archive.php/topic/906.html">基本系统安装</a></li><li><a href="http://www.wensh.net/archive.php/topic/950.html">图形界面安装</a></li><li><a href="http://www.wensh.net/archive.php/topic/951.html">Web服务安装配置</a></li><li><a href="http://www.wensh.net/archive.php/topic/974.html">安装红白机模拟器</a></li><li><a href="http://www.wensh.net/archive.php/topic/978.html">图形界面下充分利用键盘上的特殊键</a></li><li><a href="http://www.wensh.net/archive.php/topic/1027.html">怀旧经典，尽在DOSBox</a></li><li><a href="http://www.wensh.net/archive.php/topic/1041.html">安装配置TeX</a></li></ol>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/1042.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/1041.html</link>
			<title><![CDATA[[FreeBSD安装手记] 7. 安装配置TeX]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Sun, 30 Apr 2006 12:29:29 -0700</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/1041.html</guid>
			<description><![CDATA[<p>虽然在类Unix系统下也能找到OpenOffice等可跟MS Office媲美的软件，但TeX使用起来更方便、灵活，更符合完美主义精神。本文以teTeX 3.0和CJK 4.6.0，配置simsun.ttc和simhei.ttf为例进行说明。</p><p>...</p><p><a href="http://www.wensh.net/archive.php/topic/1041.html">Read the whole topic</a></p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/1041.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/1027.html</link>
			<title><![CDATA[[FreeBSD安装手记] 6. 怀旧经典，尽在DOSBox]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Wed, 12 Apr 2006 22:19:33 -0700</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/1027.html</guid>
			<description><![CDATA[<p>FreeBSD下有DOS模拟器，挺诧异的。不过确实是有的，就在/usr/ports/emulators/dosbox/。而且这个模拟器的FreeBSD版本比Windows版本要高效，相同设置情况下FreeBSD版本占用的CPU资源较少。</p><p>用一般ports软件安装方法安装即可，然后就可以用来怀旧了：仙剑奇侠传（DOS版、梦幻版）、大富翁2、三国志4……</p><p>用法：只需要进入相应游戏目录，执行：</p><div class="code"><code class="nospec">dosbox 游戏执行文件</code></div><p>例如对于仙剑，进入其所在目录后执行：</p><div class="code"><code class="nospec">dosbox PAL.EXE</code></div><p>下面截几个图怀旧一下：</p><p>仙剑：</p><p><a href="http://www.wensh.net/up/2/img/1027_1.gif"><img class="embed_img" src="http://www.wensh.net/up/2/img/1027_1p.jpg" alt="http://www.wensh.net/up/2/img/1027_1p.jpg" /></a></p><p><a href="http://www.wensh.net/up/2/img/1027_2.gif"><img class="embed_img" src="http://www.wensh.net/up/2/img/1027_2p.jpg" alt="http://www.wensh.net/up/2/img/1027_2p.jpg" /></a></p><p>上面的都是为了截图而截图，其实玩梦幻版的时候我要开三个辅助窗口：<br /><a href="http://www.wensh.net/up/2/img/1027_3.gif"><img class="embed_img" src="http://www.wensh.net/up/2/img/1027_3p.jpg" alt="http://www.wensh.net/up/2/img/1027_3p.jpg" /></a><br />左上查询物品（别告诉我你把这表背下来了），右上看攻略，右下看五行相克顺序（虽然简单，我就是记不住）。</p><p>...</p><p><a href="http://www.wensh.net/archive.php/topic/1027.html">Read the whole topic</a></p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/1027.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/1016.html</link>
			<title><![CDATA[三星P10笔记本电脑更换硬盘]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Sat, 08 Apr 2006 11:22:50 -0700</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/1016.html</guid>
			<description><![CDATA[<p>内置的30G已经快用满了，于是趁飞跃重洋团购机会买了一块80G的。由于机子已经过了保修期，所以心想自己拆机换硬盘就行啦。</p><p>警告：如果机子未过保修期，请拿到维修站请维修人员代为更换。</p><p>...</p><p><a href="http://www.wensh.net/archive.php/topic/1016.html">Read the whole topic</a></p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/1016.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/1010.html</link>
			<title><![CDATA[WPS2005试用]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Thu, 06 Apr 2006 22:12:03 -0700</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/1010.html</guid>
			<description><![CDATA[<p>在正版化道路上，免费的WPS2005无疑要重点考虑，而且还是国货。down了一个安装，果然非常小巧。</p><p>安装方面有点冗余内容：要用金山通行证验证后才能成为正式版，其实是形式主义，金山通行证是免费注册的。验证后安装的文件夹还是有个Trial后缀，看着不爽。因此我们安装时应该手动把默认的Trial后缀去掉。另外那个毒霸迷你版就是一废物。</p><p>打开“WPS文字”，果然是Word界面的克隆，不过还是有不到家的地方：工具栏不能自定义，其智能化也不够。有些小设计比较好，例如横竖标尺交接的那个制表栏位控制是菜单形式的，比Word的好用。</p><p>最大的问题在于数学公式。“WPS文字”里把带公式的文档转换为PDF文件时公式转换不正确。“WPS演示”里不能获取公式的原始尺寸，于是就很难调整所有的公式都是相同的比例。</p><p>总的来说WPS2005还是不错的，不过改进的余地还很大。对公式支持不好直接妨碍其在自然科学领域的应用。不知道专业版是否有内建公式编辑器，不过专业版要千多大元，我还不如去学LaTeX。</p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/1010.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/978.html</link>
			<title><![CDATA[[FreeBSD安装手记] 5. 图形界面下充分利用键盘上的特殊键]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Sat, 18 Mar 2006 16:13:32 -0800</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/978.html</guid>
			<description><![CDATA[<p>现在一般键盘上都有Win键（在Windows里按下会弹出开始菜单）和菜单键（在Windows里按下会弹出上下文菜单），有些特殊键盘还有多媒体按钮（不少笔记本都有）。在FreeBSD下这些按钮默认都没有激活，我们可以自己激活并使用它们。</p><p>...</p><p><a href="http://www.wensh.net/archive.php/topic/978.html">Read the whole topic</a></p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/978.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/974.html</link>
			<title><![CDATA[[FreeBSD安装手记] 4. 安装红白机模拟器]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Sat, 11 Mar 2006 21:39:06 -0800</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/974.html</guid>
			<description><![CDATA[<p>红白机，又称FC或任天堂游戏机，小时候玩的经典游戏机。模拟器在ports中有，安装不难，难点在于配置按键。这个软件把按键配置直接嵌在源代码中，所以要在编译前修改源代码。以root身份执行：</p><p>...</p><p><a href="http://www.wensh.net/archive.php/topic/974.html">Read the whole topic</a></p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/974.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/973.html</link>
			<title><![CDATA[搭建跨平台编程环境Code::Blocks+wxWidgets]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Sat, 11 Mar 2006 10:46:13 -0800</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/973.html</guid>
			<description><![CDATA[<p>这里以目前最新的Code::Blocks 1.0rc2和wxWidgets 2.6.2为例，分别介绍Windows平台和FreeBSD平台下如何搭建Code::Blocks+wxWidgets环境，其它平台方法可类推。</p><p>...</p><p><a href="http://www.wensh.net/archive.php/topic/973.html">Read the whole topic</a></p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/973.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/969.html</link>
			<title><![CDATA[删除垃圾流氓软件“中文上网”]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Thu, 09 Mar 2006 12:07:19 -0800</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/969.html</guid>
			<description><![CDATA[<p>现在的垃圾流氓软件真是无孔不入。用IE上网，IE中招了也就没什么好说。我不用IE上网，IE也能中招，这就真是神奇了。</p><p>某天打开尘封已久的IE，发现地址栏多了“中文上网”字样，知道中招了。上次用的时候还好好的，真是奇怪了。而且我也知道IE的脆弱，从来只用来看信得过的网站。</p><p>且不管怎么中招的了，既然中了，就要把它杀掉。打开IE 6的加载项管理，把所有可疑项目禁用。我晕，丝毫没有作用，那厮依旧生龙活虎。我忍，反正平时又不用IE，眼不见为干净，这总可以了吧。</p><p>昨天无意打开控制面板的添加/删除程序，意外发现那厮竟在这里留了尾巴：</p><p>...</p><p><a href="http://www.wensh.net/archive.php/topic/969.html">Read the whole topic</a></p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/969.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/966.html</link>
			<title><![CDATA[用VC6读写MATLAB的.mat文件]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Sun, 05 Mar 2006 16:30:17 -0800</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/966.html</guid>
			<description><![CDATA[<p>选VC的菜单Tools-&gt;Options，在弹出对话框中点选Directories标签，在右方的下拉菜单中选择Include files，然后在下方列表中添加($MATLAB$)\extern\include；再在右方的下拉菜单中选择Library files，然后在下方列表中添加($MATLAB$)\extern\lib\win32\microsoft\msvc60。</p><p>注：上面的($MATLAB$)以计算机中MATLAB的安装位置替换；如果使用的VC版本是5.0，则把列表中添加路径中的msvc60替换成msvc50即可。</p><p>对于需要操作.mat文件的工程，选择菜单Project-&gt;Settings，在弹出对话框中点选Link标签，在Object/library modules中加入 libmx.lib libmat.lib。下面是程序中的调用，以例子说明用法。</p><p>...</p><p><a href="http://www.wensh.net/archive.php/topic/966.html">Read the whole topic</a></p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/966.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/951.html</link>
			<title><![CDATA[[FreeBSD安装手记] 3. Web服务安装配置]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Mon, 27 Feb 2006 15:17:23 -0800</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/951.html</guid>
			<description><![CDATA[<p>本文仅以Apache 1.3 + PHP 4 + MySQL 4.1为例，其它搭配只需安装相应的port即可。</p><ol class="dec"><li>安装Apache</p><p>以root身份执行：</p><div class="code"><code class="nospec">cd /usr/ports/www/apache13/<br />make install clean</code></div><p></li><li>安装PHP</p><p>同样要用root身份执行：</p><div class="code"><code class="nospec">cd /usr/ports/www/mod_php4/<br />make install clean</code></div><p>下面安装PHP的常用扩展库，注意要把MySQL选上（如果搭配其它数据库则选择其它相应扩展库）：</p><div class="code"><code class="nospec">cd /usr/ports/lang/php4-extensions/<br />make install clean</code></div><p></li><li>安装MySQL</p><p>以root身份执行：</p><div class="code"><code class="nospec">cd /usr/ports/database/mysql41-server/<br />make install clean</code></div><p>注：在安装PHP的MySQL扩展库的时候会自动安装MySQL的客户端的port，目前是4.1版本的，即mysql41-client，所以这里相应装上4.1版本的服务器端。以后随着版本升级，PHP的MySQL扩展库可能会使用更高版本的客户端。总之在安装完PHP的MySQL扩展库后，最好安装上与之版本相应的MySQL服务器端。</li><li>配置</p><p>Apache的配置文件位于/usr/local/etc/apache/<br />主配置文件是httpd.conf<br />PHP的配置文件位于/usr/local/etc/php.ini<br />此外配置加载哪些扩展库的文件在/usr/local/etc/php/extension.ini<br />MySQL的数据库存放在/var/db/mysql/<br />安装完毕没有配置文件，可以自己写一个my.cnf放在/var/db/mysql/下</p><p>关于这些软件的具体配置这里就不谈了，可以参考各软件的手册。完成配置后即可在/etc/rc.conf文件里加上如下两句：</p><div class="code"><code class="nospec">mysql_enable="YES"<br />apache_enable="YES"</code></div><p>使得服务在开机的时候加载进内存。</li></ol>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/951.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/950.html</link>
			<title><![CDATA[[FreeBSD安装手记] 2. 图形界面安装]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Fri, 24 Feb 2006 20:18:11 -0800</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/950.html</guid>
			<description><![CDATA[<ol class="dec"><li>安装Xorg</p><p>以root身份执行</p><div class="code"><code class="nospec">cd /usr/ports/x11/xorg/<br />make install clean</code></div><p>这种安装方法需要硬盘有4G的剩余空间放编译过程的临时文件。</li><li>配置Xorg</p><p>以root身份执行</p><div class="code"><code class="nospec">cd ~<br />Xorg -configure</code></div><p>将会在/root/生成xorg.conf.new，然后copy至配置文件目录并编辑，执行</p><div class="code"><code class="nospec">cp xorg.conf.new /etc/X11/xorg.conf</code></div><p>为了使图形界面显示Windows的宋体，把Windows下Fonts目录下的simsun.ttc复制至/usr/X11R6/lib/X11/fonts/TrueType/。然后安装ttfm并添加宋体到系统，执行</p><div class="code"><code class="nospec">cd /usr/ports/chinese/ttfm<br />make install clean<br />ttfm.sh --add simsun.ttc<br />ee /etc/X11/xorg.conf</code></div><p>在Files的Section里加上</p><div class="code"><code class="nospec">FontPath&nbsp;&nbsp;&nbsp;&nbsp;"/usr/X11R6/lib/X11/fonts/TrueType"</code></div><p>顺便在鼠标的Section里加上</p><div class="code"><code class="nospec">Option&nbsp;&nbsp;&nbsp;&nbsp;"ZAxisMapping" "4 5"</code></div><p>以支持鼠标滚轮。</li><li>安装窗口管理软件，我装的是fvwm</p><p>以root身份执行</p><div class="code"><code class="nospec">cd /usr/ports/x11-wm/fvwm2/<br />make install clean</code></div><p>为了支持中文，还要安装fvwm2-i18n，执行</p><div class="code"><code class="nospec">cd /usr/ports/x11-wm/fvwm2-i18n/<br />make install clean</code></div><p>其实fvwm配置好了非常好用，推荐一个配置的教程：<a href="http://learn.tsinghua.edu.cn:8080/2001315450/fvwm_frame.html" rel="external">http://learn.tsinghua.edu.cn:8080/2001315450/fvwm_frame.html</a></li><li>安装中文输入法fcitx</p><p>以root身份执行</p><div class="code"><code class="nospec">cd /usr/ports/chinese/fcitx/<br />make install clean<br />echo "setenv LANG zh_CN.eucCN" &gt;&gt; /etc/csh.cshrc<br />echo "setenv LC_CTYPE zh_CN.eucCN &gt;&gt; /etc/csh.cshrc<br />echo "setenv XMODIFIERS @im=fcitx" &gt;&gt; /etc/csh.cshrc</code></div><p>为了使图形界面启动时自动启动fvwm，并且加载中文输入法，以日常账号执行</p><div class="code"><code class="nospec">echo "fcitx &amp;" &gt;&gt; ~/.xinitrc<br />echo "exec fvwm2" &gt;&gt; ~/.xinitrc</code></div><p></li><li>至此图形界面安装完毕，只需以正常用户身份登陆后执行</p><div class="code"><code class="nospec">startx</code></div><p>即可进入图形界面</li></ol>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/950.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/906.html</link>
			<title><![CDATA[[FreeBSD安装手记] 1. 基本系统安装]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Sun, 08 Jan 2006 16:05:08 -0800</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/906.html</guid>
			<description><![CDATA[<p>...</p><p><a href="http://www.wensh.net/archive.php/topic/906.html">Read the whole topic</a></p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/906.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/887.html</link>
			<title><![CDATA[[S5] S5播放过程的按键规则]]></title>
			<!-- BEGIN sPostAuthor --><author>cwj123@ustc.edu</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Thu, 29 Dec 2005 18:44:46 -0800</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/887.html</guid>
			<description><![CDATA[<ul><li>下翻一页：单击鼠标左键，回车键，向下键，向右键，空格键，PageDown键</li><li>上翻一页：向左键， 向上键，PageUp键</li><li>如果先用数字键输入数字N，再按上面的各个键，则跳转N页</li><li>Home键：回到第一页</li><li>End键：转到最后一页</li><li>c键：显示菜单（c键特别好用！）</li></ul>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/887.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/886.html</link>
			<title><![CDATA[Web标准专题]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Thu, 29 Dec 2005 15:25:20 -0800</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/886.html</guid>
			<description><![CDATA[<ul><li><a href="http://www.wensh.net/archive.php/topic/202.html">Web标准(Web Standards)学习笔记</a></li><li><a href="http://www.wensh.net/archive.php/topic/260.html">Web标准在中国只是一个虚名吗？</a></li><li><a href="http://www.wensh.net/archive.php/topic/277.html">学习Web标准有感</a></li><li><a href="http://www.wensh.net/archive.php/topic/882.html">符合Web标准的flash嵌入代码</a></li><li><a href="http://www.wensh.net/archive.php/topic/885.html">Web标准不只是div+css</a></li></ul><p>拓展：</p><ul><li><a href="http://www.wensh.net/archive.php/topic/880.html">MathML学习笔记</a></li><li><a href="http://www.wensh.net/archive.php/topic/884.html">S5幻灯片系统专题</a></li></ul>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/886.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/885.html</link>
			<title><![CDATA[Web标准不只是div+css]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Wed, 28 Dec 2005 22:58:56 -0800</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/885.html</guid>
			<description><![CDATA[<p>最近又看到有人在吵div与table布局哪个更好。下面挑两个比较有意思的观点吧。</p><p>观点一：过去所认为div优势之种种，在于总是div+<acronym title="Cascading Style Sheets">css</acronym>联合使用与纯table布局的对比；而css本不该被div独占，table布局也可以用css；所以以往的比较是不公平的。吵至激烈之处，</p><p>...</p><p><a href="http://www.wensh.net/archive.php/topic/885.html">Read the whole topic</a></p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/885.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/884.html</link>
			<title><![CDATA[S5幻灯片系统专题]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Tue, 27 Dec 2005 14:51:37 -0800</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/884.html</guid>
			<description><![CDATA[<p>S5是一种全新的幻灯片理念，也是Web标准发展的产物，它的全称是：Simple Standards-based Slide Show System。尽管它的作者谦虚地加上了单词Simple（也有可能是为了表达该系统的易用性），但这套系统在强大的<acronym title="eXtensible HyperText Markup Language">XHTML</acronym>基础上发挥出了非常丰富的内容。它具有挑战两大传统幻灯片系统——PowerPoint和pdf幻灯片——的潜力，将是一次幻灯片系统的革命。</p><ul><li><a href="http://www.wensh.net/archive.php/topic/261.html">幻灯片的革命——S5</a></li><li>█████ 这是什么？<img class="emotion" src="http://www.wensh.net/em/em33.gif" alt="/em33/" />刮开就知道</li><li><a href="http://www.wensh.net/archive.php/topic/877.html">S5的文件结构</a></li><li><a href="http://www.wensh.net/archive.php/topic/879.html">S5幻灯片制作 入门篇</a></li><li><a href="http://www.wensh.net/archive.php/topic/883.html">S5幻灯片制作 进阶篇</a></li><li><a href="http://www.wensh.net/archive.php/topic/887.html">S5播放过程的按键规则</a></li><li>接下来是什么呢？ 即将揭晓<img class="emotion" src="http://www.wensh.net/em/em13.gif" alt="/em13/" /></li></ul>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/884.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/883.html</link>
			<title><![CDATA[[S5] S5幻灯片制作 进阶篇]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Tue, 27 Dec 2005 14:22:22 -0800</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/883.html</guid>
			<description><![CDATA[<p>在<a href="http://www.wensh.net/archive.php/topic/879.html">上一篇文章</a>中介绍了构建一个S5幻灯片的基本方法，由此方法也可以对一个S5幻灯片的结构有一个基本了解。不过那里创建的幻灯片未免过于单调。本文就介绍几招，有效地丰富你的S5幻灯片。</p><p>...</p><p><a href="http://www.wensh.net/archive.php/topic/883.html">Read the whole topic</a></p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/883.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/882.html</link>
			<title><![CDATA[符合Web标准的flash嵌入代码]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Mon, 26 Dec 2005 22:44:08 -0800</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/882.html</guid>
			<description><![CDATA[<p>虽然这是个老问题，也已经解决了很久，但还是不时在论坛上看到有人问，所以就再贴一下，权当宣传。</p><p>使用javascript插入&lt;embed&gt;标签以逃过校验器的方法已经过时了。个人认为这种方法纯属自欺欺人，还不如就直接用&lt;embed&gt;标签。</p><p>这里说的是完全不需要javascript的方法，已经证实在IE 6、Firefox 1.0.4+、Opera 8.5上通过。只需要使用&lt;object&gt;标签。具体代码如下（中文注释请自行替换合适内容）：</p><p>...</p><p><a href="http://www.wensh.net/archive.php/topic/882.html">Read the whole topic</a></p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/882.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/880.html</link>
			<title><![CDATA[MathML学习笔记]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Sun, 25 Dec 2005 17:22:06 -0800</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/880.html</guid>
			<description><![CDATA[<p><strong>本笔记随幽灵多啦学习过程不断修正和更新中...</strong></p><p><acronym title="eXtensible Markup Language">XML</acronym>兴起后，<acronym title="HyperText Markup Language">HTML</acronym>派生出了<acronym title="eXtensible HyperText Markup Language">XHTML</acronym>。虽然这只多了一个字母X，却赋予了原来的HTML以无限的生命力。这生命力就来源于其无限的扩展能力（extensible）。旧有的HTML只有有限的标签，而XHTML的标签却可以无限扩展，这要归功于XML的命名空间（namespaces）的发明。在XHTML中，至少要加载XHTML命名空间，这样我们就可以使用几乎所有原来的HTML标签（当然有些已经被废弃或者不赞成使用(deprecated)）。在此基础上，我们还可以加载其他命名空间，获得扩展的功能，例如<acronym title="Mathematical Markup Language">MathML</acronym>可以使网页能嵌入数学公式，这是一项非常实用的技术。MathML的官方文档可以从<acronym title="World Wide Web Consortium">W3C</acronym>的<a href="http://www.w3.org/Math/" rel="external">MathML主页</a>找到。</p><p>...</p><p><a href="http://www.wensh.net/archive.php/topic/880.html">Read the whole topic</a></p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/880.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/879.html</link>
			<title><![CDATA[[S5] S5幻灯片制作 入门篇]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Sat, 24 Dec 2005 22:12:31 -0800</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/879.html</guid>
			<description><![CDATA[<p>本文假定<a href="http://www.wensh.net/archive.php/topic/877.html">S5的几个核心驱动文件</a>均在相对路径ui/里。现在只须要照copy下面的代码，并按其中的中文注释修改，即可快速制作出一个S5幻灯片。</p><p>...</p><p><a href="http://www.wensh.net/archive.php/topic/879.html">Read the whole topic</a></p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/879.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/877.html</link>
			<title><![CDATA[[S5] S5的文件结构]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Sat, 24 Dec 2005 18:55:28 -0800</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/877.html</guid>
			<description><![CDATA[<p>要制作一个<a href="http://www.wensh.net/archive.php/topic/261.html">S5幻灯片</a>，只需要写一个<acronym title="eXtensible HyperText Markup Language">XHTML</acronym>文档。而驱动该XHTML文档成为动态幻灯片的任务则由一个js脚本和若干css文件完成。这些文件打包在S5文件包里，可以在<a href="http://www.meyerweb.com/eric/tools/s5/" rel="external">S5的官方主页</a>下载到。</p><p>...</p><p><a href="http://www.wensh.net/archive.php/topic/877.html">Read the whole topic</a></p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/877.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/800.html</link>
			<title><![CDATA[Google流量统计试用]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Wed, 16 Nov 2005 22:18:11 -0800</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/800.html</guid>
			<description><![CDATA[<p>装了一天，有数据了。统计挺全面的，贴个图：<br /><img class="embed_img" src="http://www.wensh.net/up/2/img/800.gif" alt="Google流量统计" /><br />不知道有没有<a href="http://www.wensh.net/archive.php/topic/611.html">统计系统漏洞</a>呢？有空测试一下。可惜现在没空。</p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/800.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/724.html</link>
			<title><![CDATA[flash电路图绘制软件]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Sat, 22 Oct 2005 15:14:47 -0700</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/724.html</guid>
			<description><![CDATA[<p>绘制简单的电路图很方便。</p><p>...</p><p><a href="http://www.wensh.net/archive.php/topic/724.html">Read the whole topic</a></p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/724.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/674.html</link>
			<title><![CDATA[用WebCalendar+Gmail+GTalk打造在线备忘录]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Sat, 08 Oct 2005 21:43:37 -0700</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/674.html</guid>
			<description><![CDATA[<p>如果你经常上网而且常常忘记事情的话，这个方法制作的备忘录是不错的。</p><p>首先为了运行<a href="http://www.k5n.us/webcalendar.php" rel="external">WebCalendar</a>，你要有一个PHP+MySQL的网站空间。当然除了MySQL，WebCalendar还支持其他的一些数据库。你也可以用其他网上日历程序代替WebCalendar，例如使用文本方式存储数据的日历程序，这样就不需要数据库空间。但是为了配合使用Gmail和Google Talk，这个日历程序要能发送电子邮件。</p><p>Gmail是Google的免费邮箱，目前需要有邀请才能注册。如果你还没有Gmail而又想要，我可以提供邀请。当然你可以使用其它电子邮箱再加上邮件客户端实现同样功能，不过我更推荐Gmail，并结合Google Talk使用。</p><p>...</p><p><a href="http://www.wensh.net/archive.php/topic/674.html">Read the whole topic</a></p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/674.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/620.html</link>
			<title><![CDATA[[转载] 为什么你的网站没流量？做不大！让我来告诉你]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Thu, 29 Sep 2005 17:48:42 -0700</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/620.html</guid>
			<description><![CDATA[<p><strong>转载自 站长网志</strong></p><p>因为做站的心态，和站的大小很有关系，你的心态决定你的站，你的心态决定你的站的大小，因为他是你网站，不是我的网站</p><p>一般站长每天必干的三件大事——</p><p>第一件：看统计，很多网站下面都放了统计，有的统计爱好者一放一行，3个，5个的，我知道统计能了解网民，能知道网站的大小，能了解热门，可是有必要放这么多统计吗？有必要老看吗？</p><p>第二件：看排名，很多站长老盯着全球排名，每天等排名刷新，排名一般是23点左右刷新的，排名其实是不准的，他是以安装了alexa插件的才统计，所以这个根本就不权威，只是用来看网站历史，大概估计一下，有的站2万IP，排名200名左右，有的站1万5千IP，排名700名，这些是偏高的，这些站的访问人群是站长，所以他偏高，有的站60万IP，可才3000多名，为什么，因为访问他的站的网民没安装alexa插件，所以为什么访问量一样有的站排名高，有的站排名底，那么你还这么老看有必要吗？</p><p>第三件：看收入，挂个广告，一会去看看今天多少钱了，一会去看看这一个小时多少钱了，有的联盟还不是时时统计，那还比较麻烦，访问量上去了，收入自然会上去，有必要来看吗？联盟一般都会按时给钱的，所以根本就不需要去管这个事。</p><p>其实中国有很多网站，百度那里都什么号称6亿网页，还有多少没给百度收录的，那么中国一起才多少人？一起才多少网名？13亿人！1亿网名，可以用“是一个人都TMD有网站”来形容了，可为什么访问量很高的站为什么那么少，为什么？很多人老问岳贵：“为什么我的站没访问量？”，“能说说怎么提高访问量吗？”对于这样的问题，我不知道怎么回答，其实最简单的答案是——你为你的站付出了吗？你为他付出的多吗？付出肯定会有回报的，就看你肯不肯付出了，付出不一定成功，但是你不肯付出就绝对不会成功！！</p><p>个人网站是最具备战斗能力的，为什么这么说？企业网就不具备了吗？我肯定的告诉你：“企业网根本不是个人网站的对手”因为企业网，网站是公司的，每天8小时工作时间，完了就下班，一个项目弄下来，周期很久，而个人站长，吃晚饭的时候想到了，晚上就可以实施了，所以战斗能力强。同时企业网流量上不去，明天再说吧，今天先出去唱KTV，个人站长不行，网站没访问量了，就等于没钱了，所以个人站长爱网站就好象母亲爱儿子一样，那种爱，是最真诚的爱，所以个人网站具备战斗力。</p><p>明白你的网站为什么没访问量了吗？我认识很多很出色的站长，他们都不理广告的事，这些都叫代理去弄，自己去忙更重要的事，排名，统计这些基本不放，也不看。浪费时间，看了也起不到什么真正的作用。</p><p>其实站长要做的应该是：</p><ol class="dec"><li>多看看人家怎么做的，通过对比学习，从而提升自己。</li><li>多了解了解最近的动态，如果你连行情都不了解，怎么在这行混？</li><li>多想几个商业模式，多想想访问你网站的人的心里感受，因为他们感觉不爽了就不会再来了。</li><li>不要老看自己的统计，自己的排名，多看看人家的统计，多想想人家的模式。</li><li>其实没有新手老手的区别，因为任何人都是有新手变老手的，只是看你的领悟和觉悟能力。</li></ol>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/620.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/611.html</link>
			<title><![CDATA[脚本漏洞的边缘地带——计数统计系统的漏洞]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Wed, 28 Sep 2005 09:54:32 -0700</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/611.html</guid>
			<description><![CDATA[<p><strong>本文被<a href="http://www.hackerxfiles.net" rel="external">《黑客X档案》</a>录用，庆祝<a href="http://www.wensh.net/archive.php/topic/270.html">首次投稿</a>即获成功。</strong></p><p>各种动态脚本语言如asp、php等，给网站建设带来了快速便捷的同时，也带给了网站很多的安全问题。各种脚本漏洞被张贴在各大安全站点、黑客杂志，从最早的引号过滤漏洞，到Unicode漏洞，再到各种花样的SQL注射漏洞，真是层出不穷。于是吸引了大量的黑客和安全人士来研究，弄得今天这个论坛程序爆出头像上传漏洞，明儿那个blog程序又发现跨站脚本漏洞，一时之间各种论坛、blog程序、新闻系统、软件下载系统、音乐下载系统都被折腾得鸡犬不宁。经过一段时间的黑与反黑，发现漏洞与发布补丁，各种论坛、blog之类的全站系统的安全性都大为提高，像引号没有过滤这种低级错误逐渐不容易在成熟的全站系统中找到了。但是强大的动态脚本远不止用来做全站系统，于是一些动态脚本的边缘应用，由于受黑客、安全人士的关注不及全站系统，便成了滋生脚本漏洞的温床。本文以网站计数统计系统为例，主要阐述我发现两个网站计数统计系统的漏洞的经历，并在最后作一些总结，希望能启发大家在边缘地带上的思路。</p><p>...</p><p><a href="http://www.wensh.net/archive.php/topic/611.html">Read the whole topic</a></p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/611.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/604.html</link>
			<title><![CDATA[分辨纸张的技术]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Mon, 26 Sep 2005 15:57:55 -0700</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/604.html</guid>
			<description><![CDATA[<p><strong>从<a href="http://www.hackerxfiles.net/index.php" rel="external">《黑客X档案》论坛</a>学来的</strong></p><p>有些纸，越白越差，就是因为越白，使用的飘白剂越多。而为什么使用飘白剂呢，就是因为原浆少，原料都是烂东西，必须要使用飘白剂。</p><p>真正的好纸，柔、挺、厚（纸有60克、65克、70克等分别），不易破裂，越不使用飘白剂越好。还有的纸，因为太薄，反面印刷的东西都能看到。象这些都是不好的。另外，我们可以仔细的看一下黑色的图案，就会发现白色的班点，班点越少的，纸越好，斑点越大、越多的，纸越差。象黑色的CMD窗口的图，就能够看到的。</p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/604.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/547.html</link>
			<title><![CDATA[百度也出地图了]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Thu, 22 Sep 2005 20:33:50 -0700</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/547.html</guid>
			<description><![CDATA[<p>无意在<a href="http://www.baidu.com" rel="external">百度</a>中发现了其<a href="http://map.baidu.com" rel="external">地图服务</a>，全然一<a href="http://maps.google.com" rel="external">Google地图</a>的翻版。</p><p>不过用来搜中国的地方是不错的，因为Google地图还没有中国的部分，其<a href="http://bendi.google.com" rel="external">本地搜索</a>也不是很全。最重要的是最近Google经常上不了，而百度就总是可以连上。</p><p>哈哈，可以看到科大了<img class="emotion" src="http://www.wensh.net/em/em15.gif" alt="/em15/" />：<br /><a href="http://www.wensh.net/up/2/img/547.gif"><img class="embed_img" src="http://www.wensh.net/up/2/img/547p.gif" alt="http://www.wensh.net/up/2/img/547p.gif" /></a></p><p>不过校内的路好像有些错误<img class="emotion" src="http://www.wensh.net/em/em16.gif" alt="/em16/" />。</p><p>干脆把<a href="http://www.wensh.net/archive.php/topic/333.html">万佛山</a>的地图也用百度的换上了。</p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/547.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/461.html</link>
			<title><![CDATA[[转载] 浏览器的Cookie]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Fri, 16 Sep 2005 17:04:09 -0700</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/461.html</guid>
			<description><![CDATA[<p><strong>Cookie不是新技术，转载这篇文章只是由于很多人不了解，当我需要向他们介绍Cookie的时候，可以直接叫他们看这篇文章。</strong></p><p>Cookie技术是一个非常有争议的技术，自经诞生它就成了广大网络用户和Web开发人员的一个争论焦点。有一些网络用户，甚至包括一些资深的Web专家也对它的产生和推广感到不满，这倒不是因为Cookie技术的功能太弱或别的技术性能上的原因，而仅仅是因为他们觉得Cookie的使用，对网络用户的隐私构成了危害。因为Cookie是由Web服务器保存在用户浏览器上的小文本文件，它包含有关用户的信息（如身份识别号码、密码、用户在Web站点上购物的方式或用户访问该站点的次数）。</p><p>那么Cookie技术究竟怎样呢？是否真的给网络用户带来了个人隐私的危害呢？还是让我们看了下面的内容，再做回答吧。</p><p>...</p><p><a href="http://www.wensh.net/archive.php/topic/461.html">Read the whole topic</a></p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/461.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/356.html</link>
			<title><![CDATA[对Gmail邮箱容量的误解]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Sat, 03 Sep 2005 11:37:31 -0700</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/356.html</guid>
			<description><![CDATA[<p>以前Gmail邮箱容量是1G，后来增到2G。于是大家在宣传的时候也不忘宣扬其G级容量，接受宣传的人也按此理解，于是忙不迭跟别的邮箱比较，这个也有1G，那个也有2G，那那个还有10G呢。再一比较附件，Gmail才10M，人家有15M呢，那个还50M呢。</p><p>事实上，Google大容量邮箱所宣扬的是一种全新的理念，那就是可以把一辈子的邮件都放在Gmail上而不用删除任何邮件（除非你自己确信那封邮件不再有用而将其删除）。Gmail的1G、2G都是虚数，而且这个虚数还在不断增长，这点进入英文界面的Gmail就能看到。</p><p>有一次大头问Gmail邮箱2G一个，Google的硬盘究竟有多大。我说2G是个虚数，实际上大部分人在相当长时间内只能用很少一部分，于是硬盘就不需要很大。就像银行，大家都把钱存进去，银行里有多少现金？银行的道理大家都懂这里不多说。如果大家忽然一起去提款，而且都是提出所有的积蓄，银行就会被提爆。同样，如果忽然大家都把自己的Gmail塞满2G，Google的硬盘就要塞爆了。</p><p>所以，Google限制了邮件附件10M，这对于正常使用电子邮件的用户来说需求已经能基本满足，当然对于妄图将2G容量用来作网络硬盘的用户来说是严重的限制。但Gmail是电子邮箱而不是网络硬盘。</p><p>如果明白到这些，就能够明白，Gmail的2G跟别的邮箱的2G不同，主要是其理念不同。只要我们正常使用Gmail，就不需要关心其容量，因为Gmail的理念是可以保存我们一辈子的邮件而不需要删除。</p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/356.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/322.html</link>
			<title><![CDATA[服务器端数据导出到MS Excel数据表]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Mon, 22 Aug 2005 15:04:33 -0700</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/322.html</guid>
			<description><![CDATA[<p>使用asp、php等动态网页脚本可以轻松实现把服务器端的数据生成网页数据表，而客户端则可以方便地使用浏览器来查看生成的数据表。但有些时候需要把这些数据表保存为电子表格，例如MS Excel的格式，以方便二次处理（例如打印）或日后查看。在安装有IE浏览器及Excel的客户端电脑，有两种方便的方法可以实现网页数据表到Excel电子表格的转换：</p><ol class="dec"><li>在IE上拖动鼠标把数据表的数据都选中（俗称“拖黑”），接着复制（按组合键Ctrl+C或点选菜单 编辑-&gt;复制），然后在Excel中新建一空白电子表格，再粘贴（按组合键Ctrl+V或点选菜单 编辑-&gt;粘贴）。这样数据就到了Excel中，适当排版后保存即可。</li><li>在IE中右键点击数据表，在弹出的菜单中选择“导出到Microsoft Excel...”一项，Excel即会启动并获取网页上的数据表。排版后保存即可。</li></ol><p>上述第二种方法有一定局限性：似乎不是所有版本的Excel都会在IE的右键菜单中添加“导出”菜单项，不过我知道XP及2003都会添加；各种原因可能导致IE的右键菜单中没有“导出”一项；如果IE中的当前页面要靠session验证，则用此法无法导出成功，因为Excel试图从服务器端获取数据时没有正确的session。</p><p>以上的两种方法是在客户端作 网页-&gt;Excel电子表格 的转换的。其实这个工作可以在服务器端完成，而且从 数据-&gt;Excel电子表格 的一步转换比 数据-&gt;网页数据表-&gt;Excel电子表格 的两次转换显然更快捷高效。</p><p>...</p><p><a href="http://www.wensh.net/archive.php/topic/322.html">Read the whole topic</a></p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/322.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/294.html</link>
			<title><![CDATA[荒谬的预定义AGPIE_FETCH_TIME_OUT加速lilina！]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Sat, 20 Aug 2005 13:56:24 -0700</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/294.html</guid>
			<description><![CDATA[<p>最近频频看到这样的文章：通过在RSS聚合器lilina的首页把全局常量（还一堆人写“全局变量”，constant和variable都不会分么？）MAGPIE_FETCH_TIME_OUT预定义为60 * 60 * 3或60 * 60 * 4，使得3个小时或4个小时才刷新一次缓存，以实现提高lilina显示速度的目的。下文把此种方法简称为“<acronym title="MAGPIE_FETCH_TIME_OUT">MFTO</acronym>提速方法”。</p><p>这样做真能如愿吗？</p><p>...</p><p><a href="http://www.wensh.net/archive.php/topic/294.html">Read the whole topic</a></p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/294.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/293.html</link>
			<title><![CDATA[耐人寻味的PHP循环定义(recursive acronym)]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Fri, 19 Aug 2005 18:02:08 -0700</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/293.html</guid>
			<description><![CDATA[<p>玩PHP也有些日子了，可是“PHP”这三个字母究竟是什么意思？</p><p>初学时看到某本书上写PHP就是Personal Home Page的缩写，顿时觉得很荒谬，显然PHP的功能及用途是far beyond个人主页的范畴。只记得当时到官方主页上求证了后两个字母大概是Hypertext Processor（其实Processor也记错了，下文会提到），却记不起第一个字母P是什么含义。</p><p>于是近日再到官方网去求证，竟然写着PHP: Hypertext Preprocessor。如果PHP的定义就是P=PHP、H=Hypertext、P=Preprocessor，那岂不是第一个字母就循环定义了？这是故意的吗？</p><p>今天再到<a href="http://www.wikipedia.org" rel="external">Wikipedia百科全书</a>去求证，得到如下描述：</p><blockquote cite="http://en.wikipedia.org/wiki/Php"><p>PHP is a popular open-source, reflective programming language used mainly for developing server-side applications and dynamic web content, and more recently, other software. Originally, PHP stood for "Personal Home Page". Today, the official meaning is the recursive acronym "PHP Hypertext Preprocessor".</p></blockquote><p>由此证实了：一、早期PHP确实曾被赋予Personal Home Page的含义；二、PHP现在确实是一个循环定义，而且此种循环定义被称为recursive acronym。关于recursive acronym，Wikipedia的描述如下：</p><blockquote cite="http://en.wikipedia.org/wiki/Recursive_acronym"><p>A recursive acronym is an acronym (or occasionally, a backronym) which refers to itself in the expression for which it stands, similar to a recursive abbreviation. Though, because of their lack of a termination condition, perhaps a more accurate term would be circular acronym.</p><p>The earliest example is perhaps the credit card VISA, which was named in 1976 as a recursive acronym for VISA International Service Association.</p><p>In computing, it soon became a hackish (and especially MIT) tradition to choose acronyms and abbreviations which referred humorously to themselves or to other abbreviations. Perhaps the earliest example in this context, from about 1977 or 1978, is TINT ("TINT Is Not TECO"), an editor for MagicSix. This inspired the two MIT Lisp Machine editors called EINE ("EINE Is Not Emacs") and ZWEI ("ZWEI Was EINE Initially"). (Note that "eine" and "zwei" are German for "[female] one" and "two".)</p></blockquote><p>Wikipedia还列举了很多recursive acronym：</p><ul><li>CAVE - Cave Automatic Virtual Environment</li><li>Cygnus - Cygnus, Your GNU Support (though Cygnus says this is a backronym, while opponents maintain Cygnus, Your GNU Sucks)</li><li>GiFT - GiFT: Internet File Transfer, unofficially: "GiFT Isn't FastTrack"</li><li>GiNaC - GiNaC is Not a CAS</li><li>GNU - GNU's Not Unix!</li><li>LAME - LAME Ain't an MP3 Encoder</li><li>LIAR, a Scheme compiler - LIAR Imitates Apply Recursively</li><li>MINC - MINC Is Not C</li><li>mung - Mung Until No Good (backronym, based on an earlier backronym "Mash Until No Good")</li><li>NiL - NiL Isn't Liero</li><li>PINE - Pine is not Elm</li><li>PLD - PLD Linux Distribution (originally "Polish(ed) Linux Distribution")</li><li>RPM - RPM Package Manager (originally "Red Hat Package Manager")</li><li>Scaled - Scaled Composites: Advanced Link to Efficient Development</li><li>TRM - TRM Recognizes Music</li><li>TTP - The TTP Project (from Dilbert)</li><li>Wine - Wine Is Not an Emulator</li><li>XNU - XNU's not UNIX!</li><li>YAML - YAML Ain't Markup Language</li><li>Zinf - Zinf Is Not FreeA*p!</li></ul><p>于是欲问PHP究竟是什么，答案就是：<br />PHP = PHP Hypertext Preprocessor<br />&nbsp;&nbsp;&nbsp;&nbsp;= (PHP Hypertext Preprocessor) Hypertext Preprocessor<br />&nbsp;&nbsp;&nbsp;&nbsp;= ((PHP Hypertext Preprocessor) Hypertext Preprocessor) Hypertext Preprocessor<br />&nbsp;&nbsp;&nbsp;&nbsp;= ...</p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/293.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/292.html</link>
			<title><![CDATA[继续奋战RSS垃圾代码]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Thu, 18 Aug 2005 16:01:22 -0700</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/292.html</guid>
			<description><![CDATA[<p>才写了篇<a href="http://www.wensh.net/archive.php/topic/290.html">《决战RSS垃圾代码》</a>，新订一个feed，又是源自MSN Space，又多了一堆新垃圾，又要开工奋战我的微型Tidy了。</p><p>经过半小时的浴血奋战，消灭新的垃圾代码。新版的微型Tidy如下：</p><div class="code"><code class="nospec">function clean_summary($strSummary) &#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;$arrMatchings = array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array("&lt;", "&gt;")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 因为有“&amp;”实体检测，不需要检测截断的实体了<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//array("&amp;", ";")<br />&nbsp;&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;foreach ($arrMatchings as $arrMatching) &#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$intL = strrpos($strSummary, $arrMatching[0]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($intL !== false) &#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$intR = strrpos($strSummary, $arrMatching[1]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($intL &gt; $intR) $strSummary = substr($strSummary, 0, $intL);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;$strSummary = str_replace(array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&lt;br&gt;", "&lt;br/&gt;", "&lt;/font&gt;", "&lt;/span&gt;"<br />&nbsp;&nbsp;&nbsp;&nbsp;), array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&lt;br /&gt;", "&lt;br /&gt;", "", ""<br />&nbsp;&nbsp;&nbsp;&nbsp;), $strSummary);<br />&nbsp;&nbsp;&nbsp;&nbsp;$arrPatterns = array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"#&lt;script[.&#92;s]*&lt;/script&gt;#is",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"#&lt;script.*/&gt;#is",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"#&lt;iframe[.&#92;s]*&lt;/iframe&gt;#is",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"#&lt;iframe.*/&gt;#is",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'#&lt;img[^&gt;]*dynsrc[^&gt;]*&gt;#is', // 拿img标签来播音乐，真是开玩笑，删掉<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"#&lt;img([^&gt;]*)([^/])&gt;#is",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'#(height|width)="?(&#92;d+)(px)?"?#is',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"#(id|border)=[^&#92;s/]*#is",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'#style="[^"]*"#is',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"#&lt;font[^&gt;]*&gt;#is",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"#&lt;span[^&gt;]*&gt;#is",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"#&lt;div[^&gt;]*&gt;&lt;/div&gt;#is",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"#&lt;p[^&gt;]*&gt;&lt;/p&gt;#is",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'#&lt;img[^&gt;]*height="0"[^&gt;]*width="0"[^&gt;]*&gt;#is'<br />&nbsp;&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;$arrReplacements = array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"", "", "", "", "",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&lt;img&#92;1&#92;2 /&gt;",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&#92;1="&#92;2"',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"", "", "", "", "", "", ""<br />&nbsp;&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;$strSummary = preg_replace($arrPatterns, $arrReplacements, $strSummary);<br />&nbsp;&nbsp;&nbsp;&nbsp;$intAnd = -1;<br />&nbsp;&nbsp;&nbsp;&nbsp;while (($intAnd = strpos($strSummary, "&amp;", $intAnd + 1)) !== false) &#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (($intSemicolon = strpos($strSummary, ";", $intAnd)) !== false) &#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($intSemicolon - $intAnd &gt; 6) &#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$strSummary = substr_replace($strSummary, "&amp;amp;", $intAnd, 1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$strEntity = substr($strSummary, $intAnd, $intSemicolon - $intAnd + 1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$arrEntities = array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&amp;nbsp;", "&amp;amp;", "&amp;lt;", "&amp;gt;", "&amp;quot;"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$boolNotEscaped = true;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach ($arrEntities as $e) &#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($strEntity == $e) &#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$boolNotEscaped = false;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!$boolNotEscaped) continue;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!preg_match("|^&amp;#&#92;d+;|", $strEntity)) &#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$strSummary = substr_replace($strSummary, "&amp;amp;", $intAnd, 1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else $strSummary = substr_replace($strSummary, "&amp;amp;", $intAnd, 1);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;// 检测img标签没有alt属性的，添加上<br />&nbsp;&nbsp;&nbsp;&nbsp;$intStart = -1;<br />&nbsp;&nbsp;&nbsp;&nbsp;while (($intStart = strpos($strSummary, "&lt;img", $intStart + 1)) !== false) &#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$intEnd = strpos($strSummary, "&gt;", $intStart);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$strTag = substr($strSummary, $intStart, $intEnd - $intStart + 1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (false !== strpos($strTag, "alt=")) &#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$intStart = $intEnd;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$strSummary = substr_replace($strSummary, '&lt;img alt=""', $intStart, 4);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;return $strSummary;<br />}</code></div>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/292.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/290.html</link>
			<title><![CDATA[决战RSS的垃圾代码]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Thu, 18 Aug 2005 10:51:08 -0700</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/290.html</guid>
			<description><![CDATA[<p>前几天装了个lilina用来聚合（订阅）好友的Blog。很快发现这些聚合来的RSS其中的<acronym title="HyperText Markup Language">HTML</acronym>代码很不规范，把声明为<acronym title="eXtensible HyperText Markup Language">XHTML</acronym> 1.0 Strict的页面破坏得不成样子。由于开头只是聚合了源自BlogCN的RSS，看看垃圾代码不算多，主要有&lt;br /&gt;的不规范用法&lt;br&gt;和摘要对全文截断时会截断HTML标签，出现诸如“&lt;b”（&lt;br&gt;被截断）、“&amp;nbs”（&amp;nbsp;被截断）的东西；于是就写了段小程序三下五除二把垃圾代码摆平了。</p><p>谁知过了两天订了个源自MSN Space的RSS，发现垃圾代码超级多，img标签没有用“/&gt;”结尾；用了一堆font标签、一堆border属性；height、width属性值画蛇添足加了个“px”；有很多空的span标签和div标签；有些属性值没有用引号引起来；url中的“&amp;”没有用实体“&amp;amp;”代替。这么多垃圾可够麻烦的，起初让lilina把HTML标签都过滤掉（把“&lt;”替换成“&amp;lt;”，“&gt;”替换成“&amp;gt;”），结果页面非常难看。后来又想单独把lilina这页的文档类型DOCTYPE声明为HTML 4.01 Transitional，但是一想就算“&amp;”在HTML 4.01中都是非法的，而且小区用的是模版，要改DOCTYPE可不是容易的事情。干脆一不做二不休，专门写一个函数用来清理垃圾代码，堪称一微型<a href="http://www.w3.org/People/Raggett/tidy/" rel="external">Tidy</a>了（我当然知道PHP有Tidy的Extension啊，可是虚拟主机不会把这种东西编译进来啊）。下面就把我的微型Tidy贴一下：</p><p>...</p><p><a href="http://www.wensh.net/archive.php/topic/290.html">Read the whole topic</a></p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/290.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/287.html</link>
			<title><![CDATA[PHP对GB编码动态转UTF-8编码的测评]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Tue, 16 Aug 2005 14:07:55 -0700</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/287.html</guid>
			<description><![CDATA[<p>在<a href="http://www.wensh.net/archive.php/topic/286.html">《IP地址-&gt;地理位置转换的测评》</a>一文中提到用ip2addr函数直接读取IP数据库文件是效率最高的，相比<a href="http://www.wensh.net/archive.php/topic/274.html">用MySQL数据库存储IP数据</a>，用SQL查询是效率最低的。但是IP数据库文件QQWry.dat是GB2312编码的。现在我需要UTF-8编码的地理位置结果。如果用MySQL方法，可以在数据存入数据库时就转换为UTF-8编码，一劳永逸。但是QQWry.dat文件又无法修改，只能把ip2addr函数的输出结果再进行动态转换。</p><p>...</p><p><a href="http://www.wensh.net/archive.php/topic/287.html">Read the whole topic</a></p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/287.html#firstreply</comments>
		</item>
		
		<item>
			<link>http://www.wensh.net/archive.php/topic/286.html</link>
			<title><![CDATA[IP地址-&gt;地理位置转换的测评]]></title>
			<!-- BEGIN sPostAuthor --><author>wen@wensh.net</author><!-- END sPostAuthor -->
			<category>奇技淫巧</category>
			<pubDate>Tue, 16 Aug 2005 12:02:12 -0700</pubDate>
			<guid>http://www.wensh.net/archive.php/topic/286.html</guid>
			<description><![CDATA[<p>前些天做NetNest Stats统计系统，需要根据IP地址统计地理位置。</p><p>首先想到了<a href="http://www.wensh.net/archive.php/topic/274.html">把IP地址与地理位置的转换关系写入MySQL数据库</a>再调用查询。前天在<a href="http://club.php.net" rel="external">Exceed PHP Club</a>看到有一个QQWry.php程序，其中的QQWry类可以直接读取纯真的IP数据库QQWry.dat文件，于是去找来了一个，读后觉得算法不大高明，于是自己又重写了一个ip2addr函数。</p><p>今天来个测评，MySQL vs QQWry类 vs ip2addr函数。</p><p>...</p><p><a href="http://www.wensh.net/archive.php/topic/286.html">Read the whole topic</a></p>]]></description>
			<comments>http://www.wensh.net/archive.php/topic/286.html#firstreply</comments>
		</item>
		
	</channel>
</rss>