<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6385435377008869350</id><updated>2012-01-13T22:51:36.965+08:00</updated><category term='Python'/><category term='Google Maps'/><category term='MP4'/><category term='Vista'/><category term='Visual Studio'/><category term='Windows Mobile'/><category term='Teclast'/><category term='MPC'/><category term='Game'/><category term='SanDisk'/><category term='VirtualBox'/><category term='Google Docs'/><category term='Photo'/><category term='Windows'/><category term='Apple'/><category term='Movie'/><category term='Web'/><category term='Greasemonkey'/><category term='Google Toolbar'/><category term='Picasa'/><category term='Web Design'/><category term='Trac'/><category term='PXE'/><category term='Mathematics'/><category term='PostRank'/><category term='GTK+'/><category term='IT Review'/><category term='Notepad++'/><category term='Software'/><category term='GFW'/><category term='AMD'/><category term='ACG'/><category term='Blog Writer'/><category term='U3'/><category term='Video'/><category term='Dropbox'/><category term='News'/><category term='IM'/><category term='Coding'/><category term='Mobile'/><category term='i18n'/><category term='Google Reader'/><category term='Sony'/><category term='AideRSS'/><category term='WoW'/><category term='Office'/><category term='Essay'/><category term='Sogou'/><category term='MP3'/><category term='Gmail'/><category term='Tips'/><category term='TeamViewer'/><category term='Fun'/><category term='BlackBerry'/><category term='Google'/><category term='Google App Engine'/><category term='Boot'/><category term='USB'/><category term='AutoHotkey'/><category term='DirectShow'/><category term='Browser'/><category term='MinGW'/><category term='iPhone'/><category term='Firefox'/><category term='MATLAB'/><category term='Google Desktop'/><category term='H.264'/><category term='ATI'/><category term='Reference'/><category term='Avivo'/><category term='Google Notebook'/><category term='Hardware'/><category term='Ubuntu'/><category term='iPad'/><category term='SVN'/><category term='LaTeX'/><category term='Blogger Template'/><category term='Blog'/><title type='text'>晓月</title><subtitle type='html'>简陋的界面，不深刻的内容</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default?start-index=101&amp;max-results=100'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>353</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-2218527786784271792</id><published>2012-01-09T22:00:00.000+08:00</published><updated>2012-01-10T01:31:57.440+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BlackBerry'/><title type='text'>BlackBerry 9000</title><content type='html'>&lt;h2 id="toc_1.1"&gt;   前言&lt;br /&gt;
&lt;/h2&gt;&lt;p&gt;   之前用过多台黑莓，一直都是用最便宜的机型，这次的 9000 也是要淘汰的机型了。不过我是初次详细接触 5.0 的系统。&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;   RIM 感觉要倒闭了，但是我对黑莓有想当的好感，希望能多坚持坚持。以前我对西门子的手机也有好感，可能是和我第一个手机是西门子的有关。西门子的手机业务后来卖给了明基，明基一年后宣布放弃。&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;   不过黑莓就是黑莓，我觉得如果单论短信和电话功能，我最喜欢黑莓，全键盘真是太棒了。但是，黑莓的软件不够丰富，系统也不是为了娱乐应用而开发的，所以在 iOS 和 Android 的打压下，似乎情况不太妙。&lt;br /&gt;
&lt;/p&gt;&lt;h2 id="toc_1.2"&gt;   硬件和内存&lt;br /&gt;
&lt;/h2&gt;&lt;p&gt;   9000 板载了一个 1G 的 TF 卡，真是神奇的设计思路。也可以再插一张。&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;   RAM 大概 32M 左右，用 MemoryBooster 查看的应该就是这个。我的重启后在 13M 左右，有的时候也会用光。&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;   ROM 大概 128M 左右，其中至少 70M 用来安装内核，用 Option - Memory 查看的 Application Memory 剩余大概是这个，刚安装完 ROM 剩余了 40M 左右（稍微精简了下）。因为 9000&lt;br /&gt;
   的内存真的很小，所以需要小心翼翼地安装软件。&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;   另外 Option - Security Options - Advanced Security Options - Memory Cleaning 应该是为了安全性擦除信息的，不是为了释放内存。&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;   至于 200W 的摄像头，我基本不用...624MHz 的处理器也马马虎虎。&lt;br /&gt;
&lt;/p&gt;&lt;h2 id="toc_1.3"&gt;   OS&lt;br /&gt;
&lt;/h2&gt;&lt;p&gt;   5.0 OS 的中文字体感觉太好了，这是驱使我更换掉 8820 的主要原因。输入法感觉还成，就是没有快捷选字了，用轨迹球也不慢倒是。&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;   长按黑莓键可以进入后台程序列表，这个设计比之前只能用 Alt+返回 切换程序方便多了。&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;   短信的界面变了，变成会话模式了，习惯后感觉还不错。就是不能直接 R 回复不太习惯。通话记录的显示方式也变了，不过看起来也挺好的。&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;   主屏幕界面的 R 本来是闹钟，取消了，但是在 Clock 的界面里面 R 可以设置闹钟。&lt;br /&gt;
&lt;/p&gt;&lt;h2 id="toc_1.4"&gt;   Bug&lt;br /&gt;
&lt;/h2&gt;&lt;p&gt;   一年多前我入手了这台 9000，当时最大的问题是铃声 bug，大概是设置铃声的时候会出现铃声和振动都失效的情况。目前 ROM 升级后修复。&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;   重启大量掉电的问题，似乎是 5.0 OS 普遍的问题，目前还没解决。听说 4.6 OS 正常。我现在重启的时候都是插着电源。&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;   断网问题，这个是黑莓系统普通存在的问题，网上的讨论非常多。现在有&amp;quot;黑莓断续膏&amp;quot;的软件，可以手动修复。&lt;br /&gt;
&lt;/p&gt;&lt;h2 id="toc_1.5"&gt;   软件&lt;br /&gt;
&lt;/h2&gt;&lt;p&gt;   安装软件不要太多， Application Memory 保持 10M 以上的剩余，给短信和通话记录留下地方。不然应该会出现自动删除短信的情况。&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;   Google 放弃了 BlackBerry 上的 Gmail，但是软件还能从别的地方下到 2.0.7 版本的使用。&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;   本文无评论墙内镜像：&lt;a href="http://arccos.github.com/blog/20120109-blackberry-9000.html" target="_blank"&gt;BlackBerry 9000&lt;/a&gt;。&lt;br /&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-2218527786784271792?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/2218527786784271792/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2012/01/blackberry-9000.html#comment-form' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2218527786784271792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2218527786784271792'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2012/01/blackberry-9000.html' title='BlackBerry 9000'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-2877034423425129471</id><published>2012-01-04T23:00:00.000+08:00</published><updated>2012-01-05T23:01:54.702+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MP4'/><category scheme='http://www.blogger.com/atom/ns#' term='iPad'/><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><title type='text'>一些电子产品</title><content type='html'>因为泰国洪水，买不了硬盘，只好随便买些电子产品。&lt;br /&gt;
&lt;br /&gt;
&lt;h2 id="toc_1.1"&gt;   欧姆龙 HEM-7201 血压计 379&lt;br /&gt;
&lt;/h2&gt;给妈妈买的，这款血压计外观比较漂亮，至于功能什么的，我觉得都差不多。所谓的礼品装就是附带了一个计步器。&lt;br /&gt;
&lt;br /&gt;
Link：&lt;a href="http://www.360buy.com/product/311292.html"&gt;http://www.360buy.com/product/311292.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2 id="toc_1.2"&gt;   SanDisk CZ33 8GB U盘 59&lt;br /&gt;
&lt;/h2&gt;冲动消费的产物（其实下面每一个都是）。小巧是优势，写入速度不要指望了，大约 3.5M/s 。它作为车载或者 OTG 应用的配件倒是不错，因为插入后就很小了。&lt;br /&gt;
&lt;br /&gt;
Link：&lt;a href="http://www.360buy.com/product/526928.html"&gt;http://www.360buy.com/product/526928.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2 id="toc_1.3"&gt;   昂达 VX580T 8G MP4播放器 白色 379&lt;br /&gt;
&lt;/h2&gt;给妹妹买的，以前都是台电最便宜的，但是她说总死机。其实这玩意本来就容易死机倒是，台电我觉得已经是低端中好的了。不过既然指名点姓不要台电，那就买个昂达的吧。&lt;br /&gt;
&lt;br /&gt;
这款 MP4 的优势在于 800x480 的分辨率，触屏，非智能系统应该比较稳定。我简单试用了一下，触摸屏的手感当然不能要求太高，但是基本的视频播放功能还是可以用的，比较流畅。（我也没有进行极限测试，随便用了下。）&lt;br /&gt;
&lt;br /&gt;
Link：&lt;a href="http://www.360buy.com/product/418572.html"&gt;http://www.360buy.com/product/418572.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2 id="toc_1.4"&gt;   iPad2 蓝牙键盘+皮套 125&lt;br /&gt;
&lt;/h2&gt;淘宝的山寨货，键盘手感一般，整体设计还不错，各个功能键齐全，和 iPad 很搭。&lt;br /&gt;
&lt;br /&gt;
Link：&lt;a href="http://detail.tmall.com/item.htm?id=13053523639"&gt;http://detail.tmall.com/item.htm?id=13053523639&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2 id="toc_1.5"&gt;   iPazzPort 迷你蓝牙键盘 KP-810-10BTT 175&lt;br /&gt;
&lt;/h2&gt;压力大，所以乱买东西了。这款键盘功能齐全，有触摸板，有 iPad 的 Home 键，不过似乎没有虚拟键盘弹出的键。&lt;br /&gt;
&lt;br /&gt;
使用起来触摸板有点碍事，比较好的操作方式是左手在下、右手在上得斜握。&lt;br /&gt;
&lt;br /&gt;
Link：&lt;a href="http://item.taobao.com/item.htm?id=9493852825"&gt;http://item.taobao.com/item.htm?id=9493852825&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-2877034423425129471?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/2877034423425129471/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2012/01/blog-post.html#comment-form' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2877034423425129471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2877034423425129471'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2012/01/blog-post.html' title='一些电子产品'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-8160692141278979699</id><published>2011-07-05T21:22:00.000+08:00</published><updated>2011-07-05T21:22:53.858+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><title type='text'>多次插拔网线才能连上网络的问题</title><content type='html'>&lt;p&gt;
　　今天我新买的笔记本发现一个问题，插着网线开机可以连上网络，但是如果开机后才插上网线，就连接不上。我一开始以为是没有检测到网络自动把网卡关闭了，但是后来发现不是这样，因为有的时候多插拔几次也能连上。&lt;/p&gt;
&lt;p&gt;
　　在网卡中设置电源管理或者禁用网卡重新启用，也能连上，但是重启后故障依旧。&lt;/p&gt;
&lt;p&gt;
　　换了网线也是如此。&lt;/p&gt;
&lt;p&gt;
　　我怀疑可能是路由器问题，于是换了网线，不接路由器，就正常了。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-8160692141278979699?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/8160692141278979699/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2011/07/blog-post.html#comment-form' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/8160692141278979699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/8160692141278979699'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2011/07/blog-post.html' title='多次插拔网线才能连上网络的问题'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-6986184175157141609</id><published>2011-05-14T11:24:00.000+08:00</published><updated>2011-05-14T11:24:11.058+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Python 的 and-or 技巧</title><content type='html'>&lt;p&gt;本文在 github 中的镜像：&lt;a href="http://arccos.github.com/blog/20110514-python-and-or-trick.html"&gt;Python 的 and-or 技巧&lt;/a&gt;。&lt;/p&gt;

&lt;h2 id="toc_1.1"&gt;布尔上下文&lt;/h2&gt; 
&lt;p&gt; 
在 Python 中，可以在布尔上下文中使用几乎所有类型的表达式。通常的数据类型的“空值”都为 False。
&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt; 
&lt;code&gt;None&lt;/code&gt; 为假值
&lt;/li&gt; 
&lt;li&gt; 
数值 &lt;code&gt;0&lt;/code&gt;，&lt;code&gt;0.0&lt;/code&gt; 等为假值
&lt;/li&gt; 
&lt;li&gt; 
空串 &lt;code&gt;""&lt;/code&gt; 为假值
&lt;/li&gt; 
&lt;li&gt; 
空列表 &lt;code&gt;[]&lt;/code&gt; 为假值
&lt;/li&gt; 
&lt;li&gt; 
空元组 &lt;code&gt;()&lt;/code&gt; 为假值
&lt;/li&gt; 
&lt;li&gt; 
...
&lt;/li&gt; 
&lt;/ul&gt; 
 
&lt;h2 id="toc_1.2"&gt;逻辑演算&lt;/h2&gt; 
&lt;p&gt; 
在 Python 中，and 和 or 按照下面的规则执行布尔逻辑演算：
&lt;/p&gt; 
 
&lt;p&gt; 
对于 and，从左到右运算：
&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt; 
如果所有表达式都为真，则 and 返回最后一个表达式。
&lt;/li&gt; 
&lt;li&gt; 
否则，and 返回第一个假值。
&lt;/li&gt; 
&lt;/ul&gt; 
 
&lt;p&gt; 
对于 or，从左到右运算：
&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt; 
如果有一个为真，则 or 立刻返回该值。
&lt;/li&gt; 
&lt;li&gt; 
否则，or 返回最后一个表达式。
&lt;/li&gt; 
&lt;li&gt; 
or 找到第一个真值后会忽略计算剩余的表达式。
&lt;/li&gt; 
&lt;/ul&gt; 
 
&lt;p&gt; 
注意到：返回的并不是布尔值，而是其中某个参与比较的表达式值。
&lt;/p&gt; 
 
 
&lt;h2 id="toc_1.3"&gt;and-or 技巧&lt;/h2&gt; 
&lt;p&gt; 
在 C 中，表达式 &lt;code&gt;bool ? a : b&lt;/code&gt; 表示当 bool 为真时结果为 a，其它值则为 b。在 Python 中可以使用 and-or 实现类似的功能。
&lt;/p&gt; 
&lt;pre&gt; 
((test and [x]) or [y])[0]
&lt;/pre&gt; 
&lt;p&gt; 
在这个 Python 表达式中，如果 test 为真，则返回 x，否则返回 y。
&lt;/p&gt; 
 
&lt;p&gt; 
这里使用列表将 x 和 y 括起来是为了防止 x 为空值的情况，比如想要实现：“如果 test 为真，则取 0，如果 test 为假，则取 1”，如果不将 0 括起来则为：
&lt;/p&gt; 
&lt;pre&gt; 
(test and 0) or 1
&lt;/pre&gt; 
&lt;p&gt; 
不论 test 是真是假，都只会返回 1。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-6986184175157141609?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/6986184175157141609/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2011/05/python-and-or.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/6986184175157141609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/6986184175157141609'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2011/05/python-and-or.html' title='Python 的 and-or 技巧'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-3905228167580909361</id><published>2011-05-12T23:40:00.000+08:00</published><updated>2011-05-14T04:44:34.354+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>不同操作系统中的行结束符</title><content type='html'>&lt;h2 id="toc_1.1"&gt;行结束符&lt;/h2&gt; 
 
&lt;p&gt; 
一个文本文件是由行组成的，本文所说的就是行与行之间用来表示新行（newline）的间隔，一般称作断行符（link break）或者行结束符（end-of-line, EOF）。
&lt;/p&gt; 
 
&lt;p&gt; 
由于历史的原因，不同的操作系统用来表示换行的字符不同，这就给跨操作系统编辑文件带来不便。
&lt;/p&gt; 
 
&lt;h2 id="toc_1.2"&gt;操作系统中的差异&lt;/h2&gt; 
 
&lt;p&gt; 
使用下面的 Unicode 标准定义的符号：
&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt; 
LF: Line Feed, U+000A, '\n'
&lt;/li&gt; 
&lt;li&gt; 
CR: Carriage Return, U+000D, '\r'
&lt;/li&gt; 
&lt;/ul&gt; 
 
&lt;p&gt; 
不同的操作系统使用的行结束符：
&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt; 
Windows 使用 CR+LF，也就是 '\r\n'
&lt;/li&gt; 
&lt;li&gt; 
Linux/Unix 系列使用 LF，也就是 '\n'
&lt;/li&gt; 
&lt;/ul&gt; 
 
&lt;p&gt; 
特别的，目前 Mac OS X 是基于 Unix 的，所以行结束符也是 LF。只有 v9 之前 Mac OS 才是用 '\r'。
&lt;/p&gt; 
 
 
&lt;h2 id="toc_1.3"&gt;历史&lt;/h2&gt; 
 
&lt;p&gt; 
为什么对“另起一行”的处理有这样的差异，是因为早期的电传打字机（teletype）从左至右打完一行的时候，需要给打印机头重新移回左边界的时间，在一个字符的时间内，不足以让打印机头移动到正确的位置，这样会影响下一个字符的打印。所以就需要在一行结束的时候额外传递一个 CR 字符令装置 carriage 归位。
&lt;/p&gt; 
 
&lt;p&gt; 
进一步阅读：&lt;a href="http://en.wikipedia.org/wiki/Newline"&gt;Wikipedia: Newline&lt;/a&gt;。
&lt;/p&gt; 
 
&lt;h2 id="toc_1.4"&gt;对不同换行符的处理&lt;/h2&gt; 
 
&lt;p&gt; 
一般操作系统的运行库决定了文本文件的换行格式，在一个平台上使用另一种换行符的文件通常会有问题。大部分编辑器会自动识别换行符类型，并带有换行转换的功能。
&lt;/p&gt; 
 
&lt;p&gt; 
比如某些 FTP 软件在进行文本传输的时候会对换行符进行转换（这样修改了原文件）。
&lt;/p&gt; 
 
&lt;p&gt; 
Python 使用 "&lt;a href="http://www.python.org/dev/peps/pep-0278/"&gt;Universal Newline&lt;/a&gt;" 处理这个问题。在以文本方式 open() 的时候，会对换行符进行识别并一致处理成 '\n'，在文件写入的时候，也只要 write('\n') 即可，Python 会根据操作系统自动处理。有关文档：
&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt; 
&lt;a href="http://docs.python.org/library/stdtypes.html#file.newlines"&gt;http://docs.python.org/library/stdtypes.html#file.newlines&lt;/a&gt; 
&lt;/li&gt; 
&lt;li&gt; 
&lt;a href="http://docs.python.org/library/functions.html#open"&gt;http://docs.python.org/library/functions.html#open&lt;/a&gt; 
&lt;/li&gt; 
&lt;/ul&gt; 


&lt;p&gt;本文 github 中的&lt;a href="http://arccos.github.com/blog/20110512-newline.html"&gt;镜像&lt;/a&gt;。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-3905228167580909361?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/3905228167580909361/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2011/05/blog-post.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3905228167580909361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3905228167580909361'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2011/05/blog-post.html' title='不同操作系统中的行结束符'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-8493180626679006316</id><published>2011-05-12T15:46:00.000+08:00</published><updated>2011-05-14T04:44:35.212+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HTML5'/><title type='text'>HTML5 的本地存储</title><content type='html'>&lt;p&gt;可以访问&lt;a href="http://arccos.github.com/blog/20110508-html5-local-storage.html"&gt;本文镜像&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id="toc_1.1"&gt;为什么要引入本地存储&lt;/h2&gt; 
 
&lt;p&gt; 
这个问题也是在做 Web App 的时候自然注意到，HTTP 的传输是无状态的（stateless），所以为了给用户个性化体验就必须在客户端存储一些数据。比如，网站的登录过程，事实上就是利用 Cookie 在客户端保存了用户的验证信息，在用户每一次发送 Request 的时候都会在 Header 部分加入 cookie 的信息，从而让网站服务器得知用户已经登录，并提供用户所需的信息。
&lt;/p&gt; 
 
&lt;h2 id="toc_1.2"&gt;Cookie 的缺点&lt;/h2&gt; 
&lt;p&gt; 
Cookie 已经实现了在客户端储存资料，不过它有几点不足：
&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt; 
Cookie 的设计限制了大小为 4KB；
&lt;/li&gt; 
&lt;li&gt; 
Cookie 每次 HTTP Request 都要传输一遍，并且通常不加密传输（可以使用 SSL 加密）；
&lt;/li&gt; 
&lt;li&gt; 
Cookie 通常存储了用户的浏览行为和隐私相关的信息，有可能造成安全隐患。
&lt;/li&gt; 
&lt;/ul&gt; 
 
&lt;h2 id="toc_1.3"&gt;快速入门&lt;/h2&gt; 
&lt;p&gt; 
如今知名的浏览器都已经支持了 HTML5 Storage，不过对国内来说 IE 的版本才是最大的问题（IE8 以上才支持）。并且包括 iPhone 和 Android 在内的手机浏览器也支持。
&lt;/p&gt; 
 
&lt;p&gt; 
以下文章可以快速了解 HTML5 Storage 的特性和用法：
&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt; 
&lt;a href="http://html5.litten.com/html5-web-storage-using-localstorage-and-sessionstorage-objects/"&gt;HTML5 Web Storage, Using localStorage and sessionStorage Objects&lt;/a&gt; 
&lt;/li&gt; 
&lt;li&gt; 
&lt;a href="http://php-html.net/tutorials/html5-local-storage-guide/"&gt;HTML5 Local Storage – Complete Guide&lt;/a&gt; 
&lt;/li&gt; 
&lt;/ul&gt; 
 
&lt;h2 id="toc_1.4"&gt;localStorage 和 sessionStorage&lt;/h2&gt; 
&lt;p&gt; 
localStorage 可以认为不主动清除则一直存在。
&lt;/p&gt; 
 
&lt;p&gt; 
sessionStorage 则是和会话相关，刷新页面不会清除，但是关闭浏览器则会清除。所以浏览器崩溃后，通常 sessionStorage 还可以存在。
&lt;/p&gt; 
 
&lt;h2 id="toc_1.5"&gt;更多参考&lt;/h2&gt; 
&lt;ul&gt; 
&lt;li&gt; 
&lt;a href="http://dev.w3.org/html5/webstorage/"&gt;W3C: Web Storage&lt;/a&gt; 
&lt;/li&gt; 
&lt;li&gt; 
&lt;a href="http://diveintohtml5.org/storage.html"&gt;The Past, Present &amp;amp; Future of Local Storage for Web Applications&lt;/a&gt; 
&lt;/li&gt; 
&lt;li&gt; 
&lt;a href="http://www.smashingmagazine.com/2010/10/11/local-storage-and-how-to-use-it/"&gt;Local Storage And How To Use It On Websites&lt;/a&gt; 
&lt;/li&gt; 
&lt;li&gt; 
一个例子：&lt;a href="http://hacks.mozilla.org/2009/06/localstorage/"&gt;saving data with localStorage&lt;/a&gt; 
&lt;/li&gt; 
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-8493180626679006316?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/8493180626679006316/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2011/05/html5.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/8493180626679006316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/8493180626679006316'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2011/05/html5.html' title='HTML5 的本地存储'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-6842072579670166200</id><published>2011-05-12T15:28:00.000+08:00</published><updated>2011-05-14T04:44:35.318+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Wiki'/><category scheme='http://www.blogger.com/atom/ns#' term='Vim'/><category scheme='http://www.blogger.com/atom/ns#' term='VimWiki'/><title type='text'>使用 VimWiki 进行知识管理</title><content type='html'>&lt;p&gt;
可以访问：&lt;a href="http://arccos.github.com/blog/20110512-use-vimwiki-for-knowledge-managment.html"&gt;本文镜像&lt;/a&gt;。
&lt;/p&gt; 
&lt;h2 id="toc_1.1"&gt;为什么要用 VimWiki&lt;/h2&gt; 
&lt;p&gt; 
个人 Wiki 个性化的程度比较严重，所以千挑万选总也找不到好用的。Vim 虽然学习成本很高，但是我想既然已经到使用个人 Wiki 了，应该不会在乎这点投资。
&lt;/p&gt; 
 
&lt;p&gt; 
Wiki 形式的文档好处在于易于写作，纯文本的管理，即使是源文件也有很强的可读性，可以方便地导出规范的 HTML 文件。
&lt;/p&gt; 
 
&lt;p&gt; 
Wiki 的格式也很多，比如 Markdown，reStructuredText 等等，这都被称作 &lt;a href="http://en.wikipedia.org/wiki/Lightweight_markup_language"&gt;Lightweight markup language&lt;/a&gt;，在这个维基词条上也有些简单的对比。&lt;a href="http://www.subspacefield.org/~travis/"&gt;Travis&lt;/a&gt; 的主页有文章对这些做了总结（文章提到，选择太多，很难总结完善）。我个人依照我的喜好选择了 &lt;a href="http://code.google.com/p/support/wiki/WikiSyntax"&gt;Google Code Wiki&lt;/a&gt;，其实我也觉得，如果不是写书，其实哪种 Wiki 形式都一样，重要的是开始写，选一个喜欢的语法和实现，并且保证用的人比较多的就行。
&lt;/p&gt; 
 
&lt;p&gt; 
说了半天还没有介绍 &lt;a href="http://code.google.com/p/vimwiki/"&gt;VimWiki&lt;/a&gt;，它是一个 Vim 的开源插件，采用类似 Google Code Wiki 的语法，所有的文档组织就是利用 Wiki 格式的纯文本。结合 Dropbox 可以轻松实现同步。我觉得 Wiki 就不用版本控制了，简单在文中标注下必要的更新说明就是。
&lt;/p&gt; 
 
&lt;h2 id="toc_1.2"&gt;Quick Start&lt;/h2&gt; 
&lt;p&gt; 
为了快速上手，下面各种操作不多做解释，官方文档能提供所有的解答，也有&lt;a href="http://code.google.com/p/vim-script-cn/source/browse/trunk/doc/vimwiki.cnx"&gt;中文文档&lt;/a&gt;。另外，这个软件的更新较快，网上的一些设置介绍可能过时，需要及时查阅官方的文档。
&lt;/p&gt; 
 
&lt;h3 id="toc_1.2.1"&gt;下载安装&lt;/h3&gt; 
 
&lt;p&gt; 
方法一：下载 .vba 是 Vimball 的安装文件，打开后使用 &lt;code&gt;:so %&lt;/code&gt; 即可。
&lt;/p&gt; 
 
&lt;p&gt; 
方法二：也可以直接使用 zip 文件，解压复制到相应路径。
&lt;/p&gt; 
 
&lt;p&gt; 
注意：Vim 中涉及到的路径最好不要含有比较特殊的字符（比如空格，括号等），以免出现各种错误。
&lt;/p&gt; 
 
&lt;h3 id="toc_1.2.2"&gt;配置 vimrc&lt;/h3&gt; 
&lt;p&gt; 
安装官方文档的要求，需要确保 vimrc 文件中有如下的设置： 
&lt;/p&gt; 
&lt;pre&gt; 
    set nocompatible
    filetype plugin on
    syntax on
&lt;/pre&gt; 
&lt;p&gt; 
另外就是要设置个人 Wiki 库的存放地址和 HTML 模板：
&lt;/p&gt; 
&lt;pre&gt; 
let g:vimwiki_list = [{'path': 'D:\Link\Wiki\wiki\',
      \ 'path_html': 'D:\Link\Wiki\html\',
      \ 'template_path': 'D:\Link\Wiki\templates\',
      \ 'template_default': 'def_template',
      \ 'template_ext': '.html',
      \ 'css_name': '',
      \ 'auto_export': 1,
      \ 'diary_link_count': 5}]
&lt;/pre&gt; 
&lt;p&gt; 
注意到有关模板我使用的是 Dev (2010-12-27) 版本，所以和当前的 1.1.1 的设置有所不同。
因为 VimWiki 可以定义 css，所以有一个 css_name 的设置，应该是保存在文档中定义的 css（不确定）。
&lt;/p&gt; 
 
&lt;h3 id="toc_1.2.3"&gt;使用&lt;/h3&gt; 
&lt;p&gt; 
这部分请看&lt;a href="http://xbeta.info/vimwiki.htm|善用佳软的的"&gt;VimWiki 介绍&lt;/a&gt;中第二节。
&lt;/p&gt; 
 
&lt;p&gt; 
在 Vim 中，键入 &amp;lt;leader&amp;gt;ww 三个键即可进入第一个 Wiki 库的首页（index.wiki）。其中 &amp;lt;leader&amp;gt; 一般是 \ 字符。
&lt;/p&gt; 
 
&lt;p&gt; 
在首页中就可以随意输入了，使用类似 NewPage 之类的驼峰词可以创建新页面。如果需要创建中文词条可以使用： &lt;code&gt;[[中文]]&lt;/code&gt; 或者 &lt;code&gt;[[文件名|中文描述]]&lt;/code&gt; 的方法。
&lt;/p&gt; 
 
&lt;p&gt; 
&amp;lt;tab&amp;gt; 和 &amp;lt;shift&amp;gt; + &amp;lt;tab&amp;gt; 键可以在词条之间跳转，&amp;lt;enter&amp;gt; 可以进入词条进行编辑，&amp;lt;backspace&amp;gt; 可以返回。注意到，通常情况下 VimWiki 会自动存盘。
&lt;/p&gt; 
 
&lt;p&gt; 
使用 :Vimwiki2HTML 和 :VimwikiAll2HLML 可以导出 HTML 格式的网页。
&lt;/p&gt; 
 
 
&lt;h2 id="toc_1.3"&gt;Tips&lt;/h2&gt; 
&lt;ul&gt; 
&lt;li&gt; 
可配置多个 Wiki 库。访问第二个 Wiki 库可以键入 2&amp;lt;leader&amp;gt;ww，或者通过 &amp;lt;leader&amp;gt;ws 进行选择。
&lt;/li&gt; 
&lt;/ul&gt; 
 
&lt;ul&gt; 
&lt;li&gt; 
Wiki 中的 CamelCase 会自动转换为 link，按 &amp;lt;enter&amp;gt; 即可进入编辑，按 &amp;lt;backspace&amp;gt; 回到前一页。
&lt;pre&gt; 
" 不需要驼峰英文成为维基词条
let g:vimwiki_camel_case = 0
&lt;/pre&gt; 
&lt;/li&gt; 
&lt;/ul&gt; 
 
&lt;ul&gt; 
&lt;li&gt; 
可以设置在存档后自动更新 HTML 文件，在 vimwiki_list 中的 auto_export 属性。
&lt;/li&gt; 
&lt;/ul&gt; 
 
&lt;ul&gt; 
&lt;li&gt; 
可以建立 to-do list，只不过默认的快捷键 &amp;lt;C-space&amp;gt; 和中文输入法切换的热键冲突，可以重新映射。比如下面映射成 &amp;lt;leader&amp;gt;tt，
&lt;pre&gt; 
:map &amp;lt;leader&amp;gt;tt &amp;lt;Plug&amp;gt;VimwikiToggleListItem
&lt;/pre&gt; 
&lt;/li&gt; 
&lt;/ul&gt; 
 
&lt;ul&gt; 
&lt;li&gt; 
方便的日记功能，使用 &amp;lt;leader&amp;gt;w&amp;lt;leader&amp;gt;w 就可以开启一个以今天日期命名的 diay page，还可以结合 &lt;a href="http://www.vim.org/scripts/script.php?script_id=52"&gt;Calendar&lt;/a&gt; 插件，以日历形式显示日记。
&lt;/li&gt; 
&lt;/ul&gt; 
 
 
&lt;h2 id="toc_1.4"&gt;发布&lt;/h2&gt; 
&lt;p&gt; 
通过 HTML 模板，可以把 VimWiki 当做 Blog 和个人 Wiki 的发布工具使用，而且文档编辑简单，内容和样式分离，非常省心。
目前一个选择是使用 &lt;a href="https://github.com/"&gt;github&lt;/a&gt; 的 &lt;a href="http://pages.github.com/"&gt;Pages feature&lt;/a&gt;。本来 github 是代码托管服务，但是允许作者发布静态的网页作为主页。
&lt;/p&gt; 
 
&lt;p&gt; 
对此不再赘述，可以参考：
&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt; 
&lt;a href="http://blog.hotoo.me/use-vimwiki-for-blog.html"&gt;用 Vimwiki 写博客&lt;/a&gt; 
&lt;/li&gt; 
&lt;li&gt; 
&lt;a href="http://wiki.ktmud.com/tips/vim/ways-to-sync-vimwiki.html"&gt;同步 vimwiki 到线上的各种方法&lt;/a&gt; 
&lt;/li&gt; 
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-6842072579670166200?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/6842072579670166200/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2011/05/vimwiki.html#comment-form' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/6842072579670166200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/6842072579670166200'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2011/05/vimwiki.html' title='使用 VimWiki 进行知识管理'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-6604110005713398252</id><published>2011-05-05T00:23:00.000+08:00</published><updated>2011-05-05T00:23:51.519+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google App Engine'/><title type='text'>Google App Engine 应用程序局域网调试</title><content type='html'>&lt;p&gt; 
　　有的时候需要在局域网内调试 GAE 的程序，比如调试手机应用程序的时候，需要通过 WiFi 访问应用程序。
&lt;/p&gt; 
 
&lt;p&gt; 
　　默认的 dev_appserver 使用的地址是 localhost，如果需要其他计算机也能访问，则需要再启动的时候加入参数 &lt;code&gt;--address= ...&lt;/code&gt; 设置服务器的主机地址，使用 &lt;code&gt;0.0.0.0&lt;/code&gt; 则允许本地主机访问和主机名访问。参见：&lt;a href="http://code.google.com/appengine/docs/python/tools/devserver.html"&gt;The Python Development Server: Command-Line Arguments&lt;/a&gt;。
&lt;/p&gt; 
 
&lt;p&gt; 
　　如果使用的是 GAE Launcher，则是在 Application Settings 中在 Extra Command Line Flags 中加入：
&lt;/p&gt; 
&lt;blockquote&gt;
&lt;pre&gt; 
-a 0.0.0.0
&lt;/pre&gt; 
&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-6604110005713398252?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/6604110005713398252/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2011/05/google-app-engine.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/6604110005713398252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/6604110005713398252'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2011/05/google-app-engine.html' title='Google App Engine 应用程序局域网调试'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-4625127945265973761</id><published>2011-04-30T11:44:00.000+08:00</published><updated>2011-04-30T11:44:38.201+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reference'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='LaTeX'/><title type='text'>用什么来管理参考文献？</title><content type='html'>&lt;p&gt;
   　　本文的经验建立在理科专业并使用 LaTeX 的基础上。文献管理的软件和服务很多，我没有用过此类的收费软件，免费的也没有全部仔细试用。因为这类软件或服务的个性化太强，很难找到一个能完全符合我的喜好。本文可以当做一个对最知名的免费的文献管理软件和服务的简要介绍和主观评价。
&lt;/p&gt;
&lt;p&gt;
   　　首先是我个人的偏好：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;不能处理中文虽然不好，但是无所谓。
   &lt;/li&gt;
   &lt;li&gt;如果带有自动获取题录的功能，最好能指定来源，获取准确和全面。
   &lt;/li&gt;
   &lt;li&gt;理想中的情况是在有多个数据来源的情况下，可以供用户选择较优的。
   &lt;/li&gt;
   &lt;li&gt;只要支持 BibTeX 就行。
   &lt;/li&gt;
   &lt;li&gt;社会化功能无所谓。
   &lt;/li&gt;
   &lt;li&gt;注释功能无所谓。
   &lt;/li&gt;
   &lt;li&gt;能否自动获取全文无所谓。
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   　　在线的文献管理服务：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      &lt;a href="http://www.citeulike.org/"&gt;CiteULike&lt;/a&gt;：Richard Cameron 编写的文献管理服务。个人感觉比较好，支持网站众多，支持 tag，导入和导出都比较方便，分享功能也很完善。可以从 CrossRef
      更新数据，并且提示哪些条目更改了。只不过操作不是很方便，批量处理比较麻烦。 或许研究下 API 比较好。
   &lt;/li&gt;
   &lt;li&gt;
      &lt;a href="http://www.connotea.org/" target="_blank"&gt;Connotea&lt;/a&gt;： 后台是 Nature 出版集团，当然这个也说明不了什么，因为 Elsevier 旗下的 &lt;a href=
      "http://www.2collab.com/" target="_blank"&gt;2collab&lt;/a&gt; 就停止服务了。Connotea 要求文献来源必须提供 &lt;span style=
      "FONT-FAMILY: &amp;#39;WenQuanYi Micro Hei Mono&amp;#39;, &amp;#39;WenQuanYi Micro Hei&amp;#39;, &amp;#39;Microsoft Yahei Mono&amp;#39;, &amp;#39;Microsoft Yahei&amp;#39;, sans-serif"&gt;
      URI、DOI、PMID、ASIN&lt;/span&gt; 这类索引性信息，但是比如早期的期刊文献并没有 DOI 数据。这对其所能管理的文献有很大的限制。
   &lt;/li&gt;
   &lt;li&gt;
      &lt;a href="http://xinkexue.net/" target="_blank"&gt;新科学&lt;/a&gt;：国内的服务，用的人不多，但是功能还不错，对于国内的数据库的文献导入支持得比较好。
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   　　注：&lt;a href="http://www.crossref.org/" target="_blank"&gt;CrossRef&lt;/a&gt; 的信息也不全是正确的，作者名称通常只是简称。此外使用 CrossRef 搜索题录应该是收费的，虽然可以利用 CiteULike
   的数据吧...
&lt;/p&gt;
&lt;p&gt;
   　　完全本地的文献管理软件：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      &lt;a href="http://jabref.sourceforge.net/" target="_blank"&gt;JabRef&lt;/a&gt;：开源。只能管理 BibTeX 格式，需要 Java 运行环境，界面不好看。但这是我最终一直在使用的软件，它的自动生成 BibTeX
      key 的功能非常好用，另外自动查找相关文件（需要靠文件名）的功能也很有用。论功能，JabRef 完全可以满足我的所有需求。
   &lt;/li&gt;
   &lt;li&gt;
      &lt;a href="http://bibus-biblio.sourceforge.net/" target="_blank"&gt;Bibus&lt;/a&gt;：开源，还是 Python 开发的。但是经历了一次安装失败，就没用...
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   　　下面介绍的是在线服务和本地客户端整合的软件，主要功能集中在客户端，网络服务上可以备份数据并提供社会化功能：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      &lt;a href="http://www.zotero.org/" target="_blank"&gt;Zotero&lt;/a&gt;：是 Firefox 的一个扩展，现在也有独立运行版本（感觉是基于 Firefox 剪裁的）。对惯用 Firefox
      的人来说，这是非常好的一个选择。它通过 DOI 等信息获取题录应该也是来自 CrossRef。我非常喜欢的是它能标出获取的数据来源，虽然并没有提供多个来源的选择。
   &lt;/li&gt;
   &lt;li&gt;
      &lt;a href="http://www.mendeley.com/" target="_blank"&gt;Mendeley&lt;/a&gt;： 非常适合在积攒了大量的 PDF 文件时处理，因为这个软件可以识别 PDF 中包含的 citation
      信息（虽然准确率一般般）。也可以通过 DOI 数据从 CrossRef （我猜测）获取信息。可惜不方便的地方在于，它从 DOI 更新数据的时候，没有提示就直接覆盖了之前的数据。往往获取的数据并不太好，这点使我的体验不是太好，期待之后的改进。此外，Mendeley
      可以导入 CiteULike 的数据。
   &lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-4625127945265973761?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/4625127945265973761/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2011/04/blog-post_30.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/4625127945265973761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/4625127945265973761'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2011/04/blog-post_30.html' title='用什么来管理参考文献？'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-7137047001502867766</id><published>2011-04-28T21:16:00.001+08:00</published><updated>2011-04-30T00:48:12.067+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><title type='text'>锂电池的保养和使用</title><content type='html'>&lt;p&gt;
   　　买了新手机、新笔记本的同学往往特别在乎电池，尤其是笔记本，喜欢用各种软件去查看电池损耗。本文希望能简要介绍一些我能所知的锂电池使用和保养的方法。物理也不怎么好，以下所有论断都是查阅资料后的判断。
&lt;/p&gt;
&lt;p&gt;
   　　首先说一下常见的误区：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;满充满放三次，充电12小时，刻意满充满放，都是对锂电池有损害的方式，这些是对镍氢电池的。
   &lt;/li&gt;
   &lt;li&gt;充满了继续插着对锂电池没什么用，充电电路会停止充电的。
   &lt;/li&gt;
   &lt;li&gt;边充电边工作对锂电池影响不大，之所以不建议边充边工作的原因是高温环境对电池损害大。除非笔记本天天不关温度较高，去掉电池可能有点好处。一般情况下，边用边用没有问题。
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　正确的使用方法是随时充电，想用就用，避免过放。当然，如果有可能，遵循下面的使用方式会有些好处：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;浅充浅放。也就是说放电和充电的程度都不要太大，所以在条件允许的情况下随手充电就是很好的习惯。
   &lt;/li&gt;
   &lt;li&gt;避免高温。
   &lt;/li&gt;
   &lt;li&gt;避免过充和过放。因为锂电池都有保护电路，所以一般情况下，这种情况也不会发生。除非长时间不用，可能就过放了。
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　长时间不用怎么办？
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;电量在 40%~60% 的程度保存。
   &lt;/li&gt;
   &lt;li&gt;尽量在低温环境下保存。
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　此外涉及到充电器的问题：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;现在很少有把电源管理 IC 放在充电器上，一般都在锂电池上或者设备上。所以充电器只要电压符合，就可以充电。
   &lt;/li&gt;
   &lt;li&gt;至于充电器的标称电流，代表充电器的输出功率，使用多少是由电源管理 IC 控制的，所以功率大小只会影响充电快慢，使用超过设备所需的大功率充电器充电，也只会依据设备的电源管理 IC 的设置进行充电，通常也不会充得快。特别指出，用 iPad 的 10W 充电器给
   iPhone 充电完全没有问题。Apple 网站和下面提供的参考资料中都有回答和验证。
   &lt;/li&gt;
   &lt;li&gt;充电器电压一般都高于 5V，浮动 0.2V 没有关系，由电源管理 IC 控制提供给电池的电压。
   &lt;/li&gt;
   &lt;li&gt;尽量不用座充，这是因为市面上的万能充不怎么好。详细介绍见下面的参考资料。
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　iPad 充电要求比较高，一方面是需要 10W 功率的充电器才能合理的时间充电（否则就太慢了），另一方面，Apple 的充电器的 USB 接口额外有一个识别电阻。没有这个识别电阻，可能会让 iPad 显示&amp;quot;不在充电&amp;quot;。
&lt;/p&gt;
&lt;p&gt;
   　　参考资料如下：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      &lt;a href="http://www.buchmann.ca/default.asp" target="_blank"&gt;Battery in a Portable World&lt;/a&gt; by Mr. Isidor Buchmann
   &lt;/li&gt;
   &lt;li&gt;
      &lt;a href="http://zh.wikipedia.org/wiki/%E9%94%82%E7%A6%BB%E5%AD%90%E7%94%B5%E6%B1%A0" target="_blank"&gt;Wiki: 锂离子电池&lt;/a&gt; 储存电量和温度对损耗的影响
   &lt;/li&gt;
   &lt;li&gt;
      &lt;a href="http://blog.sina.com.cn/gumphe" target="_blank"&gt;阿苷的博客&lt;/a&gt; 专业的介绍和评测
   &lt;/li&gt;
   &lt;li style="LIST-STYLE-TYPE: none"&gt;
      &lt;ul&gt;
         &lt;li&gt;
            &lt;a href="http://blog.sina.com.cn/s/blog_53a811100100grof.html" target="_blank"&gt;存储方法对锂离子电池寿命影响的研究&lt;/a&gt;
         &lt;/li&gt;
         &lt;li&gt;
            &lt;a href="http://blog.sina.com.cn/s/blog_53a811100100grod.html" target="_blank"&gt;充放电方法对锂离子电池寿命影响的研究&lt;/a&gt;
         &lt;/li&gt;
         &lt;li&gt;
            &lt;a href="http://blog.sina.com.cn/s/blog_53a811100100p3z7.html" target="_blank"&gt;你在充电的时候玩手机吗?&lt;/a&gt;
         &lt;/li&gt;
         &lt;li&gt;
            &lt;a href="http://blog.sina.com.cn/s/blog_53a811100100gsiq.html" target="_blank"&gt;论部分手机电池座充的危害性&lt;/a&gt;
         &lt;/li&gt;
      &lt;/ul&gt;
   &lt;/li&gt;
   &lt;li&gt;
      &lt;a href="http://www.mk2leo.com/?p=2355" target="_blank"&gt;究竟IPAD的10W充电器能否给IPHONE4充电 大测试&lt;/a&gt;
   &lt;/li&gt;
   &lt;li&gt;
      &lt;a href="http://bbs.weiphone.com/read-htm-tid-1476458.html" target="_blank"&gt;揭露ipad只能用原装充电器的秘密&lt;/a&gt;
   &lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-7137047001502867766?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/7137047001502867766/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2011/04/blog-post_28.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7137047001502867766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7137047001502867766'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2011/04/blog-post_28.html' title='锂电池的保养和使用'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-5847715567017081958</id><published>2011-04-28T21:15:00.001+08:00</published><updated>2011-04-29T00:43:38.814+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><title type='text'>插线板选购经验</title><content type='html'>&lt;p&gt;
   　　这个东西到底怎么叫呢？插线板，接线板，插排，电源转换器好多名字，英文怎么说？不管了。
&lt;/p&gt;
&lt;p&gt;
   　　为什么要选择一个好的插线板，两点考虑：用电安全和保护电器。
&lt;/p&gt;
&lt;p&gt;
   　　先说结论：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;不在乎的用什么都行。
   &lt;/li&gt;
   &lt;li&gt;想用便宜没有过多要求的，用航嘉、公牛、可来博等等你听说过的牌子。
   &lt;/li&gt;
   &lt;li&gt;需要防浪涌等功能，就选择：APC、贝尔金、突破（保镖系列），不建议用航嘉、秋叶原、飞利浦等带防浪涌的型号，既然都在乎了，就买个好点的。比如飞利浦的低端电源做工不错，带防雷击的型号就比较差。
   &lt;/li&gt;
   &lt;li&gt;特有钱没地方花的，选择电源净化器、UPS等。
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   　　国内大部分插线板（包括品牌的），假冒伪劣（比如不接地线）的就不说了，即使能用的，在做工和用料上往往也不令人满意。设计和用材不好的插线板，自然有安全隐患。
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;线缆铜丝截面积至少应为 3×0.75 平方毫米。如果截面积太小，插线板所接电器功率过大时，线就会发热。有的插线板线很粗，但是里面铜丝确很细。
   &lt;/li&gt;
   &lt;li&gt;内部走线美观，做工精致。用铜排的当然最好，如果都用焊接方式的，走线美观也不错。一体式内芯有利于减少内阻，避免虚焊，从而降低损耗。
   &lt;/li&gt;
   &lt;li&gt;插口使用磷青铜接触弹片。使用其他材质的，多次插拔后夹持力就下降了。
   &lt;/li&gt;
   &lt;li&gt;使用银触点开关。普通铜触点开关容易引起电弧，也就是开关过程中看见的火花。煤气泄漏不要按开关就是说这个。
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　插线板除了基本功能以外，还有些个性化要求，比如我喜欢：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;每个插孔独立开关的。
   &lt;/li&gt;
   &lt;li&gt;插孔间距大。
   &lt;/li&gt;
   &lt;li&gt;插孔有插入保护，可以防止儿童误插或者异物落入。
   &lt;/li&gt;
   &lt;li&gt;高阻燃、耐冲击外壳。
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　插线板骗我们钱，自然是从更高级的功能上来的：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;过电压保护，过载保护，漏电保护：这些从功能上有了应该不会骗人，算是比较好检测的保护，区别就在于敏感度和承载量，不过一般有这些功能的区别不会太大。
   &lt;/li&gt;
   &lt;li&gt;浪涌保护，防雷击保护：别想着能防直击雷，对于感应雷和普通浪涌，目前的插线板都是使用压敏电阻 MOV 和放电管来保护的。区别在于用的 MOV 好不好。其实不用太在意浪涌，家用大型电器设计的时候一般都考虑了保护功能（如果没有说明电器不好...）。
   &lt;/li&gt;
   &lt;li&gt;滤波功能：防浪涌可以削弱尖峰，但是对于电源中的噪声应该无能为力。如果有一个 EMI 滤波器自然更好。如果对音响的性能比较敏感，就多花些钱买电源净化器吧。当然了，&lt;a href=
   "http://www.douban.com/group/topic/15959089/" target="_blank"&gt;真正的HIFI烧友只用雅鲁藏布江的水电&lt;/a&gt;，我作为外行就不讨论了。
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　泡泡网有一个系列文章：&lt;a href="http://www.pcpop.com/doc/0/497/497376.shtml" target="_blank"&gt;帮助你了解电源&lt;/a&gt;，可以看看。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-5847715567017081958?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/5847715567017081958/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2011/04/blog-post.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/5847715567017081958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/5847715567017081958'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2011/04/blog-post.html' title='插线板选购经验'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-2343105446453729224</id><published>2011-04-28T11:13:00.003+08:00</published><updated>2011-04-28T11:13:38.711+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><title type='text'>伪造 Referer 与外链</title><content type='html'>&lt;p&gt;
   　　总不能在标题上就写如何盗链吧...
&lt;/p&gt;
&lt;p&gt;
   　　Referer 是 HTTP Header 的一个字段（&lt;a href="http://en.wikipedia.org/wiki/HTTP_referrer" target="_blank"&gt;wiki&lt;/a&gt;），包含在向服务器发送的请求中，记录访客的来源URI。
&lt;/p&gt;
&lt;p&gt;
   　　很多网站用辨识 Referer 来防止盗链，比如百度、网易相册。以猫扑上的图片为例，如果我们直接访问，或者外链到其他网站，就会显示不出。因为猫扑的服务器判断 Referer 信息，发现不是来自自身网站，就对该请求予以拒绝。
&lt;/p&gt;
&lt;p&gt;
   　　如果网站的防盗链措施只是基于 Referer 判断，可以通过伪造 Referer 来实现外链。比如 Firefox 的 RefControl 扩展。但是依据安全性（&lt;a href=
   "http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader-method" target="_blank"&gt;The setRequestHeader() method&lt;/a&gt;），不能要求用户浏览器发送伪造的
   Referer。
&lt;/p&gt;
&lt;p&gt;
   　　所以早期使用 JavaScript 利用 XMLHttpRequest 设置 Referer，早期的 Flash 通过 ActionScript 构造请求的时候，自定义 Referer 的方法现在都被禁止了。
&lt;/p&gt;
&lt;p&gt;
   　　既然不能强制客户端设置 Referer，那只能通过服务器中转的方式，因为在服务器端就可以构造自定义请求了。
&lt;/p&gt;
&lt;p&gt;
   　　对于网站管理者来说，防止盗链的方式就很多了，比如利用 Session，判断 IP，生成随机码等等方式...
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-2343105446453729224?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/2343105446453729224/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2011/04/referer.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2343105446453729224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2343105446453729224'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2011/04/referer.html' title='伪造 Referer 与外链'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-3906096702224364017</id><published>2011-04-28T03:10:00.000+08:00</published><updated>2011-04-28T03:10:19.083+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Python 中的 exec 和 eval</title><content type='html'>&lt;p&gt;
   　　Python 允许通过 exec 和 eval 执行以字符串形式表示的代码片段，这体现了动态语言的特性。利用这种特性，可以让代码变得更灵活。不过一直以来，我对这种&amp;quot;动态&amp;quot;的用法不太&amp;quot;适应&amp;quot;，因为：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;让代码引入了某些不安定因素，这些代码片段执行后可能对全局造成影响。尤其是当使用全局名称空间时，它的作用范围难以控制。
   &lt;/li&gt;
   &lt;li&gt;对执行的效率也有影响。Python 在执行代码之前也是要预编译的，比如 pyc 文件。因此这些字符串形式的代码片段在执行的时候，需要编译的过程，哪怕是使用 compile 编译后重复使用，第一次的编译是难以避免的。
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　很多人也倾向于避免这种用法，比如：&lt;a href="http://stackoverflow.com/questions/1087255/use-of-eval-in-python" target="_blank"&gt;Use of eval in
   Python?&lt;/a&gt;。
&lt;/p&gt;
&lt;p&gt;
   　　不过最近在写网站解析程序的时候，发现为了实现目的，最好的解决方案还是引入这种字符串形式的代码片段。这个问题具体描述是：我需要对一系列类似的网站进行解析。整体的解析过程是相似的，所以我建立了一个框架，使用 XML 保存每个站点各自的解析属性，通常是 XPath
   和正则表达式。但是某些内容各个网站的表现方式有很大差别，这些内容想要解析出来只使用 XPath 和正则表达式是不够的。因此对这些例外情形，最好的方式是直接利用代码片段来计算。
&lt;/p&gt;
&lt;p&gt;
   　　此外，现有的项目，比如 Genshi 之类模板引擎也采用了类似的处理手段。
&lt;/p&gt;
&lt;p&gt;
   　　用户使用程序如果能执行自己的代码片段，这往往是有潜在危险的，尤其是在网络服务中，因此我们在使用的字符串代码片段的时候，要严格限制名称空间。对这个问题的讨论，可以参考 &lt;a href=
   "http://lybniz2.sourceforge.net/safeeval.html" target="_blank"&gt;Using eval() safely in python&lt;/a&gt;，这里做一个简要的总结。
&lt;/p&gt;
&lt;p&gt;
   　　默认的，eval 和 exec 所运行的代码都位于当前的名称空间中，它们也可以接受一个或两个可选字典参数作为代码执行的全局名称空间和局部名称空间。
&lt;/p&gt;
&lt;p&gt;
   　　eval 的用法最严格的限制（注意对 builtins 的处理）是：
&lt;/p&gt;
&lt;blockquote&gt;
   &lt;pre xml:space="preserve"&gt;
eval(user_func,{&amp;quot;__builtins__&amp;quot;:None},{&amp;quot;x&amp;quot;:x,&amp;quot;sin&amp;quot;:sin})
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   　　如果希望允许使用某些变量和函数，可以采用下面的方法：
&lt;/p&gt;
&lt;blockquote&gt;
   &lt;pre xml:space="preserve"&gt;
eval(user_func,{&amp;quot;__builtins__&amp;quot;:None},{&amp;quot;x&amp;quot;:x,&amp;quot;sin&amp;quot;:sin})
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   　　有关使用 exec 和 eval 的注意事项，文章 &lt;a href="http://lucumr.pocoo.org/2011/2/1/exec-in-python/" target="_blank"&gt;Be careful with exec and eval in
   Python&lt;/a&gt; 进行了细致的讨论。首次编译是不可避免的，使用预编译后重复使用可以提高效率。另外使用局部空间因此可以加快变量的查询速度，所以执行会快。
&lt;/p&gt;
&lt;p&gt;
   　　下面还有几个需要注意的地方：
&lt;/p&gt;
&lt;p&gt;
   　　能避免使用的时候，还是应该采用其他方式，比如转换字符串的时候，使用 int() 而不是 eval()，因为如果转换的这个字符串是用户输入的，危险的情况是 eval() 会执行恶意输入的条命令。详细的解释参考：&lt;a href=
   "http://blog.donews.com/soarnil/archive/2007/02/28/1134203.aspx" target="_blank"&gt;Python之eval()函数的危险&lt;/a&gt;。
&lt;/p&gt;
&lt;p&gt;
   　　尽量避免使用 eval 来获取变量名，想要实现动态变量名，使用 globals()，locals() 以及 vars()。
&lt;/p&gt;
&lt;blockquote&gt;
   &lt;pre xml:space="preserve"&gt;
a = 123 
s1 = locals()[&amp;#39;a&amp;#39;] 
s2 = vars()[&amp;#39;a&amp;#39;] 
print s1, s2
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   　　类似的情况也出现在 JSON 格式的解析上，参见 &lt;a href="http://stackoverflow.com/questions/1083250/running-json-through-pythons-eval" target=
   "_blank"&gt;Running JSON through Python&amp;#39;s eval()?&lt;/a&gt; 。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-3906096702224364017?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/3906096702224364017/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2011/04/python-exec-eval.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3906096702224364017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3906096702224364017'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2011/04/python-exec-eval.html' title='Python 中的 exec 和 eval'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-1518719770293603535</id><published>2011-03-14T21:24:00.002+08:00</published><updated>2011-05-06T00:23:56.288+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google App Engine'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>ReadTxT 开源到 Google Code</title><content type='html'>&lt;p&gt;
   　　ReadTxT 是基于 Google App Engine
   编写的阅读网络小说的工具，初衷是为了使阅读网络小说更方便而设计的。它支持常见的网络文学站点，比如：起点中文网、纵横中文网、飞库电子书等。用户可以在登录后统一管理各个站点自己喜欢的书目，并保存阅读书签，实现一站式阅读。主要的特点有：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;支持多个主流小说网站。
   &lt;/li&gt;
   &lt;li&gt;自动抓取最新的章节。
   &lt;/li&gt;
   &lt;li&gt;无广告。
   &lt;/li&gt;
   &lt;li&gt;支持手机阅读，并针对 iPhone 优化。
   &lt;/li&gt;
   &lt;li&gt;提供下载和订阅功能。
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   　　项目主页：&lt;a href="http://code.google.com/p/bookreader/"&gt;http://code.google.com/p/bookreader/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
   　　部署需要对 Google App Engine 有一点点了解，如果只是希望使用，可以直接进入：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;ReadTxT：&lt;a href="http://readtxt.appspot.com/"&gt;http://readtxt.appspot.com/&lt;/a&gt;
   &lt;/li&gt;
   &lt;li&gt;更多的介绍可以参见 &lt;a href="http://readtxt.appspot.com/help" target="_blank"&gt;ReadTxT 的帮助&lt;/a&gt;
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   　　可以保证上述部署的应用是最新版本，除非调整数据库结构，书签信息不会清空（有的时候清空了数据...请不要怪我）。 需要补充说明的是，本人不负责使用代码或者应用本身所带来的网络小说版权问题。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-1518719770293603535?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/1518719770293603535/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2011/03/readtxt-google-code.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1518719770293603535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1518719770293603535'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2011/03/readtxt-google-code.html' title='ReadTxT 开源到 Google Code'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-7450820947507308640</id><published>2011-02-21T23:03:00.000+08:00</published><updated>2011-02-21T23:03:05.613+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>有关联通186的3G号码发彩信的问题</title><content type='html'>&lt;p&gt;
   　　我用 iPhone4，号码是联通的186号段。出问题时候的症状是只能收不能发，无法调出设置中的&amp;quot;蜂窝数据网络&amp;quot;。彩信在手机上未显示发送异常，那些未成功送达的彩信也没出现在账单上。
&lt;/p&gt;
&lt;p&gt;
   　　一句话解决：应该是联通自身的问题，过一天就好了。
&lt;/p&gt;
&lt;p&gt;
   　　下面是折腾记录，谨献给我浪费的时间。
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;能不能发彩信和是否越狱无关。
   &lt;/li&gt;
   &lt;li&gt;联通网络已经设置好了 APN 信息，所以苹果觉得没必要显示出来。如果是移动用户，可能需要设置 APN，这个是由手机系统里面的 /System/Library/Carrier Bundles/ 决定的。
   &lt;/li&gt;
   &lt;li&gt;针对2，如果没有&amp;quot;蜂窝数据网络&amp;quot;的设置，就别折腾了，折腾出来你会发现内置的数据也是对的。
   &lt;/li&gt;
   &lt;li&gt;我觉得没用的所谓技巧：拔卡再插卡；电话号码去掉+86。
   &lt;/li&gt;
   &lt;li&gt;可能有影响，我不确认的设置：&amp;quot;短信&amp;quot;设置是否带主题，彩信是否写文字。（能发我就没管了，懒得试，一条0.9元）
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　可能有用的链接，不同系统、不同运营商不一样，仅供参考：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      &lt;a href="http://bbs.imobile.com.cn/thread-tid-9461448-userId-781218.html" target="_blank"&gt;越狱解锁后让丢失的&amp;quot;蜂窝数据网络&amp;quot;重新回来之五种方法&lt;/a&gt;
   &lt;/li&gt;
   &lt;li&gt;
      &lt;a href="http://bbs.weiphone.com/read-htm-tid-541225.html" target="_blank"&gt;解除在iTunes里更新了联通运营商配置信息后对于Apn修改的锁定100%成功办法&lt;/a&gt;
   &lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-7450820947507308640?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/7450820947507308640/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2011/02/1863g.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7450820947507308640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7450820947507308640'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2011/02/1863g.html' title='有关联通186的3G号码发彩信的问题'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-7961172486732709518</id><published>2011-01-29T07:58:00.000+08:00</published><updated>2011-01-29T07:58:56.561+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPad'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>iPad 维修记录</title><content type='html'>&lt;p&gt;
   　　家里一个 iPad 开机花屏，出现一条条的彩道，无法操作，于是拿去维修了。
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;在官方网站预约 Genius Bar，恰好有人取消预约，选择了一个中午的时间。
   &lt;/li&gt;
   &lt;li&gt;到了苹果店确认了预约，然后等待。只带了机器，没带括发票、充电器、数据线。
   &lt;/li&gt;
   &lt;li&gt;准时开始，负责接待的是一个漂亮姑娘，记得名字是 Endless。
   &lt;/li&gt;
   &lt;li&gt;先问我是不是破解了，我说没有。问我是否摔了，我说没有。问我是否进水了，我说没有。我说就是放着就坏了。
   &lt;/li&gt;
   &lt;li&gt;问我是否有重要资料，我说没有，然后连电脑重置，过程正常，但是问题依旧。
   &lt;/li&gt;
   &lt;li&gt;判断是内部硬件问题。（虽然我早知道...我觉得是屏线问题）
   &lt;/li&gt;
   &lt;li&gt;给我换了一台，我打开后是4.2.1版本，外观有一点点无关紧要的瑕疵。
   &lt;/li&gt;
   &lt;li&gt;再次更换了一台，系统是3.2.2。
   &lt;/li&gt;
   &lt;li&gt;签字，说保修3个月，但是我本身质保也是3个月后过期。
   &lt;/li&gt;
&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-7961172486732709518?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/7961172486732709518/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2011/01/ipad.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7961172486732709518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7961172486732709518'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2011/01/ipad.html' title='iPad 维修记录'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-3701884410669973077</id><published>2010-11-22T19:04:00.000+08:00</published><updated>2010-11-22T19:04:56.058+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blog'/><title type='text'>买了一个手写板（文明笔-春秋篇-精致快捷型）</title><content type='html'>&lt;p&gt;
   　　这个，买了京东上最便宜的一个手写板...
&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt;
   &lt;a href="http://picasaweb.google.com/lh/photo/oKn2BOKOx18Q6q82sWMnVmMD9lhdX6BWWSFyJlFIkso?feat=embedwebsite"&gt;&lt;img src=
   "http://lh4.ggpht.com/_1NZOc1C8JjM/TOpL8CBl5JI/AAAAAAAADp8/qAsRRukoB1A/s800/wenmingbi.jpg" height="345" width="423" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
   　　对于这样一个价位的压力板，能用就行了，反正不是我用...本文用它书写，累死我了！
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-3701884410669973077?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/3701884410669973077/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2010/11/blog-post.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3701884410669973077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3701884410669973077'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2010/11/blog-post.html' title='买了一个手写板（文明笔-春秋篇-精致快捷型）'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_1NZOc1C8JjM/TOpL8CBl5JI/AAAAAAAADp8/qAsRRukoB1A/s72-c/wenmingbi.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-4649343648909719333</id><published>2010-10-07T01:12:00.000+08:00</published><updated>2010-10-07T01:12:31.399+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Reader'/><title type='text'>要规律生活 -- 我的 Google Reader 记录</title><content type='html'>&lt;p&gt;
   　　关心我的人总会提醒我要生活规律，嗯，是的。
&lt;/p&gt;
&lt;p&gt;
   　　Google Reader 提供近30天的阅读统计，黄色的柱形表示那个时间点阅读的条目数。
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://lh6.ggpht.com/_1NZOc1C8JjM/TKx62zBiCiI/AAAAAAAADo0/QEEkzdO7paI/s800/Reader_20101006.png" style=
   "TEXT-ALIGN: center; DISPLAY: block; MARGIN-LEFT: auto; MARGIN-RIGHT: auto"  /&gt;
&lt;/p&gt;
&lt;p&gt;
   　　凌晨1点到2点是阅读最多的时刻，我倒是奇怪早上7点怎么也会那么多。下午时间基本都在老实干活，所以没有阅读数目。晚上五点有个小高峰，是因为要吃饭了吗...？晚上8点到12点通常在电脑前，但是一般都会有别的事情，直到凌晨。
&lt;/p&gt;
&lt;p&gt;
   　　数据统计如下：
&lt;/p&gt;
&lt;blockquote style="MARGIN-RIGHT: 0px" dir="ltr"&gt;
   &lt;p&gt;
      From your 129 subscriptions, over the last 30 days you read 6,297 items, clicked 267 items, starred 0 items, shared 8 items, and
      emailed 0 items. Since December 23, 2006 you have read a total of 248,289 items.
   &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   　　我记得2007年初的时候，利用 Google 搜索记录&lt;a href="http://arccos.blogspot.com/2007/02/google.html" target="_blank"&gt;统计了我各个时刻搜索的次数&lt;/a&gt;，也有按小时统计的结果：
&lt;/p&gt;
&lt;p&gt;
&lt;img src=
   "http://lh6.ggpht.com/_1NZOc1C8JjM/RdQDRrNHldI/AAAAAAAABFU/5uK-k1MeZ-4/s800/googlehis_2.png" style=
   "TEXT-ALIGN: center; DISPLAY: block; MARGIN-LEFT: auto; MARGIN-RIGHT: auto"  width="500"/&gt;
&lt;/p&gt;
&lt;p&gt;
   　　这个…似乎说明我这几年没什么长进。凌晨三点是我的黄金时间啊。早上九点到十二点估计不是睡觉就是吃饭。下午六点也是吃饭吧。嗯…规律生活规律生活。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-4649343648909719333?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/4649343648909719333/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2010/10/google-reader.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/4649343648909719333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/4649343648909719333'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2010/10/google-reader.html' title='要规律生活 -- 我的 Google Reader 记录'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_1NZOc1C8JjM/TKx62zBiCiI/AAAAAAAADo0/QEEkzdO7paI/s72-c/Reader_20101006.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-3330839680158428395</id><published>2010-08-06T03:27:00.002+08:00</published><updated>2010-08-06T03:27:41.422+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MP3'/><title type='text'>飞利浦 GoGear Spark 4GB MP3</title><content type='html'>&lt;p&gt;
   　　入手了一个纯音的 MP3，飞利浦 GoGear Spark 4GB，型号 SA2SPK04K/93，370 元。
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://lh4.ggpht.com/_1NZOc1C8JjM/TFsN0X8natI/AAAAAAAADnY/JgegCgX1wYE/s800/GoGearSpark_1.jpg" height="450" width="600" /&gt;
&lt;/p&gt;
&lt;p&gt;
   　　国内似乎只有黑色的（型号末尾为 K，银色的应该为 S），到手后是这个样子：
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://lh5.ggpht.com/_1NZOc1C8JjM/TFsN09a2siI/AAAAAAAADnc/X8koDTe2eqQ/s800/GoGearSpark_2.jpg" height="480" width="600" /&gt;
&lt;/p&gt;
&lt;p&gt;
   　　特点和网上说的差不多：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;背夹太容易坏。
   &lt;/li&gt;
   &lt;li&gt;我的这个返回按键（屏幕左键）似乎不太灵敏，不过不影响使用。
   &lt;/li&gt;
   &lt;li&gt;屏幕相比同品牌类似型号要好很多。
   &lt;/li&gt;
   &lt;li&gt;可以按照文件夹播放。
   &lt;/li&gt;
   &lt;li&gt;播放列表需要用软件 SongBird 编辑。
   &lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-3330839680158428395?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/3330839680158428395/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2010/08/gogear-spark-4gb-mp3.html#comment-form' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3330839680158428395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3330839680158428395'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2010/08/gogear-spark-4gb-mp3.html' title='飞利浦 GoGear Spark 4GB MP3'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_1NZOc1C8JjM/TFsN0X8natI/AAAAAAAADnY/JgegCgX1wYE/s72-c/GoGearSpark_1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-7016597241163000148</id><published>2010-07-20T00:27:00.001+08:00</published><updated>2010-07-22T10:05:12.432+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SVN'/><title type='text'>TortoiseSVN 的图标覆盖问题</title><content type='html'>&lt;p&gt;
   　　安装 TortoiseSVN 后会在文件和文件夹上覆盖一个表示文件状态的小图标。但是在使用过程中经常出现某些种类的图标覆盖显示不出的现象。具体情况可能出现在安装了 Office Groove, Dropbox 等同样有图标覆盖功能的软件以后。
&lt;/p&gt;
&lt;p&gt;
   　　这是因为 Windows 只允许最多15个图标被覆盖。Windows 使用了其中4个，剩下的11则被其他的应用程序所使用（参见 TSVN 官方 FAQ：&lt;a href="http://tortoisesvn.tigris.org/faq.html#ovlnotall"
   target="_blank"&gt;不是所有图标都被覆盖&lt;/a&gt;）。
&lt;/p&gt;
&lt;p&gt;
   　　修改注册表可以一定程度解决这个问题：
&lt;/p&gt;
&lt;blockquote style="MARGIN-RIGHT: 0px" dir="ltr"&gt;
   &lt;pre xml:space="preserve"&gt;
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   　　其实就是调整图标覆盖的顺序，只有前11个才有效果。
&lt;/p&gt;
&lt;p&gt;
   　　注意有三个是微软自带的：EnhancedStorageShell, Offline Files, SharingPrivate（Windows 7 x64）。
&lt;/p&gt;
&lt;p&gt;
   　　如果安装了32位的 TortoiseSVN 则可以在32位程序中显示图标覆盖和菜单，比如 Total Commander 是32位程序，如果安装了64位则不能在其中显示图标覆盖（但是 X64 菜单项可以显示）。但是如果只安装32位的 TortoiseSVN
   则在64位的 Windows 7 的资源管理器中看不到图标覆盖。因此，32位和64位的都装能在一定程度上解决这个问题。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-7016597241163000148?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/7016597241163000148/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2010/07/tortoisesvn.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7016597241163000148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7016597241163000148'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2010/07/tortoisesvn.html' title='TortoiseSVN 的图标覆盖问题'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-7500442652278478417</id><published>2010-06-12T04:48:00.000+08:00</published><updated>2010-06-12T04:48:47.368+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='BlackBerry'/><title type='text'>Google Contacts 同步的相关感想</title><content type='html'>&lt;p&gt;
   　　我使用 Google Contacts 来管理所有的通讯录，同时使用 Google Sync 来和手机（黑莓）的通讯录同步。
&lt;/p&gt;
&lt;p&gt;
   　　我之前写过一篇：&lt;a href="http://arccos.blogspot.com/2009/04/google-sync-for-blackberry.html"&gt;Google Sync for BlackBerry 试用&lt;/a&gt;，里面讨论了一些和 Google
   Contacts 同步的问题。但是可能是系统升级或者版本更新的缘故，以前解决中文姓名不太符合中文习惯的方法有些失效。
&lt;/p&gt;
&lt;p&gt;
   　　首先，数据是以网络为主，手机为辅的，原因如下：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;数据云端存储很流行，也是合理的保存方式。本地可以定时备份到硬盘。
   &lt;/li&gt;
   &lt;li&gt;手机通讯录的条目不多，所以同步是不对称的，如果依赖手机可能造成信息的部分丢失。
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　黑莓手机通讯录姓名是分 First 和 Last 两个字段的，如果按照这个方式填写，不是出现姓和名倒置，就是需要分隔符隔开，不符合中文习惯。多数人采用的是如下的做法：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;把姓名全部写在 First 字段。
   &lt;/li&gt;
   &lt;li&gt;Last 字段留空或者写拼音首字母（或者拼音全称）。
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　之前我也是这样做的，将 Last 字段留空，但是我发现，如果在网页上使用 Google Contacts 新建或者更改某个联系人的姓名，同步到手机这个姓名会自动划分到 First 和 Last 两个字段，而不是自动让 Last 字段留空。经过研究，是 Google
   Contacts 的智能处理，可惜在这里对我造成了麻烦。具体情形如下：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;Google Contacts 虽然只显示一个名字（在内部使用 Name 字段），但是当你输入一个新名字或者修改某个名字的时候，会智能地填充 Given Name, Additional Name, Family Name 等字段。
   &lt;/li&gt;
   &lt;li&gt;
   如果姓名中含有空格，则自动成为划分依据，否则对于中文姓名会智能划分。比如：&amp;quot;王小二&amp;quot;会划分成&amp;quot;王+小二&amp;quot;；&amp;quot;王小二家&amp;quot;会划分成&amp;quot;王小+二家&amp;quot;；而&amp;quot;王小二放羊&amp;quot;则不会划分，还是&amp;quot;王小二放羊&amp;quot;，但如果手动用空格分开成&amp;quot;王
   小二 放羊&amp;quot;，则被划分成&amp;quot;王+小二+放羊&amp;quot;。
   &lt;/li&gt;
   &lt;li&gt;当同步的时候 Google Sync 不会同步 Name 字段到手机上，而是同步 Additional Name + Given Name 到 First 字段，Family Name 到 Last 字段。
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　我希望实现的是：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;中文姓名同步到手机上后，全部集中在 First 字段，Last 字段可以留空最好，不行的话可以写成拼音或者其他信息。
   &lt;/li&gt;
   &lt;li&gt;因为 Gmail 从 Google Contacts 选取联系人发信（尤其是群发）的时候，你对联系人的命名对方是可以看到的，所以希望 Google Contacts 的联系人名称不能太奇怪。所以最好是保证 Name
   字段只有中文姓名（但是后面的解决方案无法满足这个愿望）。
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　导出 Google Contacts 到文件，然后编辑，强制修改划分后的字段，我并不喜欢这种方法。所以我的解决方案是：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;给所有人的中文姓名后添加空格和拼音名，而且拼音名中间没有空格，只对姓和名首字母大写区分。这样做是因为，我想让汉字在前面，而且如果划分了三个字段，同步到黑莓上就不对了，除非让中文作为最后一个字段。
   &lt;/li&gt;
   &lt;li&gt;我加的是拼音的全称，因为只有首字母不好看，而且发信的时候对方收到也不好看。
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　这样做需要承担的不便是：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;每个联系人要在 Google Contacts 上重新输入一遍姓名，保证字段划分正确、一致。
   &lt;/li&gt;
   &lt;li&gt;要忍受名字后面还跟着一个拼音的不爽。
   &lt;/li&gt;
   &lt;li&gt;要忍受不能在拼音（或者英文名）中间加空格的不爽。　
   &lt;/li&gt;
&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-7500442652278478417?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/7500442652278478417/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2010/06/google-contacts.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7500442652278478417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7500442652278478417'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2010/06/google-contacts.html' title='Google Contacts 同步的相关感想'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-4042090505225817575</id><published>2010-03-24T21:19:00.002+08:00</published><updated>2010-03-24T21:19:35.764+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><title type='text'>罗技 M215 + 日立 1T</title><content type='html'>&lt;p&gt;
   　　买了东西后，例行地到处得瑟显摆...
&lt;/p&gt;
&lt;p&gt;
   　　首先是 Logitech M215 无线鼠标（&lt;a href="http://product.pconline.com.cn/mouse/logitech/394173.html" target=
   "_blank"&gt;详细信息&lt;/a&gt;），非常便宜，性价比高，在我看来有如下几个优点：
&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt;
   &lt;img src="http://lh4.ggpht.com/_1NZOc1C8JjM/S6oH0HgBDvI/AAAAAAAADlU/T_SN1AkLVgs/s400/Logitech_M215.jpg" height="300" width="400" /&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;&amp;quot;即插即忘&amp;quot;Nano接收器，非常小巧，插到笔记本上后可以不必拔下来。
   &lt;/li&gt;
   &lt;li&gt;自带接收器的收纳，在携带时防止丢失。
   &lt;/li&gt;
   &lt;li&gt;有电源开关，可以省电。
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   　　缺点也有：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;摇晃鼠标可以听到某些部件活动的声音。
   &lt;/li&gt;
   &lt;li&gt;滚轮上下的声音和手感有些涩。
   &lt;/li&gt;
   &lt;li&gt;开启电池盖的标记有些含糊，应该更明确的指示出。
   &lt;/li&gt;
   &lt;li&gt;包装上有个大大的 &amp;quot;25m&amp;quot;，不过前面有个小小的 &amp;quot;≤&amp;quot; 符号，有点骗人的感觉。
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   　　同时还有 Hitachi 1TB HCS721010CLA332 7200转 32M SATAII 盒装硬盘，日立的家用级硬盘有 CinemaStar 和 Deskstar 两个系列。区别是：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;Deskstar: 高效，面向 PC 机。
   &lt;/li&gt;
   &lt;li&gt;CinemaStar: 静音，低功耗，面向音视频存储、播放、监控设计，适合 7x24 使用。
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   　　所以我的理解，如果是做系统盘就选 DS，如果是做数据仓库就选 CS。当然，也有人说本质上没有区别，只是 DS 默认 AAM 是 254，而 CS 默认 AAM 是 128。的确通过 HD Tune 软件可以将 CS 的 AAM 改成 254 从而将寻道时间从 18ms
   提升到 14ms，不过我想应该不至于就这点区别，内部设计应该还有区别。
&lt;/p&gt;
&lt;p&gt;
   　　官方没有提供这款硬盘是否双碟，不过按照测试结果应该是。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-4042090505225817575?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/4042090505225817575/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2010/03/m215-1t.html#comment-form' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/4042090505225817575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/4042090505225817575'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2010/03/m215-1t.html' title='罗技 M215 + 日立 1T'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_1NZOc1C8JjM/S6oH0HgBDvI/AAAAAAAADlU/T_SN1AkLVgs/s72-c/Logitech_M215.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-1896436067237917564</id><published>2010-03-24T00:06:00.000+08:00</published><updated>2010-03-24T00:06:09.963+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><title type='text'>看不懂的新闻</title><content type='html'>&lt;p&gt;
   　　沙尘暴那天，手机报上新闻是这样写的：
&lt;/p&gt;
&lt;blockquote&gt;
   &lt;p&gt;
      &amp;quot;大风起兮尘飞扬&amp;quot;，&amp;quot;满城尽带黄金甲&amp;quot;，沙尘暴&amp;quot;如约而至&amp;quot;。
   &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   　　当时我抬头看看天，突然对这条新闻感到一阵恶心。
&lt;/p&gt;
&lt;p&gt;
   　　次日，因为大旱，贵州黄果树瀑布水量大幅减少，手机报上这样写：
&lt;/p&gt;
&lt;blockquote&gt;
   &lt;p&gt;
      黄果树大瀑布严重&amp;quot;瘦身&amp;quot;，过去气势磅礴的大瀑布，如今宛如纤弱细腰的少女。
   &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   　　别卖弄你们这些&amp;quot;文学素养&amp;quot;了，正经报道新闻就是了。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-1896436067237917564?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/1896436067237917564/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2010/03/blog-post.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1896436067237917564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1896436067237917564'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2010/03/blog-post.html' title='看不懂的新闻'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-7557240791649377988</id><published>2010-03-13T00:43:00.002+08:00</published><updated>2010-03-13T00:43:28.707+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Reader'/><title type='text'>Google Reader 不能删除 tag 或 folder 的 bug</title><content type='html'>&lt;p&gt;
   　　最近整理 Google Reader 的时候，发现有些标签无法删除，显示：
&lt;/p&gt;
&lt;blockquote&gt;
   &lt;p&gt;
      Oops...an error occurred. Please try again in a few seconds.
   &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   　　搜索了下论坛，发现是一个很长时间没解决的 bug，如下：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      &lt;a href="http://www.google.com/support/forum/p/reader/thread?tid=42022526def45ebb&amp;amp;hl=en"&gt;I can&amp;#39;t delete a tag in Google
      Reader&lt;/a&gt;
   &lt;/li&gt;
   &lt;li&gt;
      &lt;a href="http://www.google.com/support/forum/p/reader/thread?tid=78e7cf9ab6b26e90&amp;amp;hl=en"&gt;Some of my tags cannot be removed&lt;/a&gt;
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   　　据说问题出现在对标签进行大量操作的时候，我感觉频繁对标签进行操作就有可能出现这个问题。解决方法暂无。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-7557240791649377988?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/7557240791649377988/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2010/03/google-reader-tag-folder-bug.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7557240791649377988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7557240791649377988'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2010/03/google-reader-tag-folder-bug.html' title='Google Reader 不能删除 tag 或 folder 的 bug'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-3658276055696960932</id><published>2010-03-01T22:04:00.000+08:00</published><updated>2010-03-01T22:04:18.346+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google App Engine'/><title type='text'>网站提供大量 Feed 时的解决方案</title><content type='html'>&lt;p&gt;
   　　最近写了一个 GAE 应用，需要向外提供大量 Feed，很多以前不是问题的问题就出来了：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;各个在线阅读器的抓取器对网站造成负担，尤其是当 Feed 很多的时候；
   &lt;/li&gt;
   &lt;li&gt;因为我提供的 Feed 有时效性，但是很多在线阅读器的抓取器不能正确识别 301 重定向和 410 永久删除，这就造成还会始终访问无效的地址；
   &lt;/li&gt;
   &lt;li&gt;现有的 Feed 托管服务基本都不支持批量托管，比如 Feedburner 和 Feedsky，只有一个 FeedCat 支持，但是就是它的 FeedCatBot 现在还在对我无效的网址进行抓取。
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　不同的在线阅读器的抓取器也不同：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;Google Reader：一小时一次，User Agent 为 Feedfetcher-Google，我看以前人说它不支持 301，不过据我观察，它会接受 301 重定向，只是用户界面查看 Feed 地址还是原来的。但是 Feedfetcher-Google
   不会再去抓取原地址。
   &lt;/li&gt;
   &lt;li&gt;抓虾：User Agent 为 Zhuaxia.com，支持 301 重定向，不过需要响应 Head 方法。它先用 Head 然后 Get。
   &lt;/li&gt;
   &lt;li&gt;豆瓣九点：完美支持 301 重定向。
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　我最后的解决方案是：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;自己编写了一个批量托管的 GAE 应用，使得原始服务不会受到太大压力，一部分转接到 Feed 托管服务上。
   &lt;/li&gt;
   &lt;li&gt;Feed 托管服务针对实际 Feed 的不同状态返回相应的状态码和转向。
   &lt;/li&gt;
&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-3658276055696960932?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/3658276055696960932/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2010/03/feed.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3658276055696960932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3658276055696960932'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2010/03/feed.html' title='网站提供大量 Feed 时的解决方案'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-2436841870310429279</id><published>2010-01-18T00:18:00.002+08:00</published><updated>2010-01-18T00:18:49.441+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MATLAB'/><title type='text'>MATLAB 不同版本间转换到整数类型的差别</title><content type='html'>&lt;p&gt;
   　　在 MATLAB 6.5 中 int8, uint8, int32 这种函数是采用截断尾数的方式取整，在 MATLAB 7.9 中采用的是取就近整数的方式。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-2436841870310429279?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/2436841870310429279/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2010/01/matlab.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2436841870310429279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2436841870310429279'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2010/01/matlab.html' title='MATLAB 不同版本间转换到整数类型的差别'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-1740931014753214942</id><published>2010-01-13T11:57:00.002+08:00</published><updated>2010-01-13T11:57:49.259+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Google 退出 cn 吧</title><content type='html'>&lt;p&gt;
   　　&lt;a href="http://googleblog.blogspot.com/2010/01/new-approach-to-china.html" target="_blank"&gt;A new approach to
   China&lt;/a&gt;，这个消息真是震撼但不震惊。Google 退出中国吧，别折腾了。还谈什么协议，就你这公告就能招来全面封锁。
&lt;/p&gt;
&lt;p&gt;
   　　没关系，反正以后都是翻墙。
&lt;/p&gt;
&lt;p&gt;
   　　这新闻没什么好评论的，肯定铺天盖地都在说，发文留念～
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-1740931014753214942?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/1740931014753214942/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2010/01/google-cn.html#comment-form' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1740931014753214942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1740931014753214942'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2010/01/google-cn.html' title='Google 退出 cn 吧'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-1832178728052535812</id><published>2010-01-05T14:32:00.002+08:00</published><updated>2010-01-05T14:32:38.011+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MP4'/><category scheme='http://www.blogger.com/atom/ns#' term='Teclast'/><title type='text'>买了MP4：Teclast C430T</title><content type='html'>&lt;p&gt;
   　　今天去买了台电的MP4，型号是 C430T，8G，4.3的统宝LTPS高分屏幕。
&lt;/p&gt;
&lt;p&gt;
   　　感觉还不错，性价比很高。给妹妹用挺合适的。
&lt;/p&gt;
&lt;p&gt;
   　　问题如下：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;液晶面板材质和C430不同，清晰细腻，但是亮度稍暗，阳光下看不清，有反光。
   &lt;/li&gt;
   &lt;li&gt;播放 H264 1280x720 的影片有些卡，不太流畅。
   &lt;/li&gt;
   &lt;li&gt;偶尔会死机。
   &lt;/li&gt;
   &lt;li&gt;字幕似乎必须要用 srt 格式，如果显示不出，可能是编码的问题，改成 UTF-8 试试。
   &lt;/li&gt;
   &lt;li&gt;文件夹名称的大小写有时候显示有点问题。
   &lt;/li&gt;
&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-1832178728052535812?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/1832178728052535812/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2010/01/mp4teclast-c430t.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1832178728052535812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1832178728052535812'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2010/01/mp4teclast-c430t.html' title='买了MP4：Teclast C430T'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-2902046221363338529</id><published>2009-12-07T16:11:00.000+08:00</published><updated>2009-12-07T16:11:01.625+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><title type='text'>如何阅读条形码</title><content type='html'>&lt;p&gt;
   　　如果你错过了煎蛋这篇：&lt;a href=
   "http://jandan.net/2009/12/01/read_a_barcode.html"&gt;学会条码，在它被遗弃之前&lt;/a&gt;，不要紧，你依然可以通过阅读本文快速掌握人眼扫描、解码，从而破解出这些粗细条条蕴含的深刻含义的高科技技能。
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;条形码的意义&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;　　&lt;/strong&gt;按照八股论文的写法，我应该先介绍下条形码的NB之处，以提醒读者此刻正在阅读一篇有着深刻含义的文章。
&lt;/p&gt;
&lt;p&gt;
   　　2009年10月7日，Google 为了纪念1952年10月7日条形码 (Bar Code) 成功申请专利（专利号为2612994），首页 Logo
   都改成了条形码。这个日子恰好与高锟、乔治·史密斯、威拉德·波义耳被授予诺贝尔物理学奖的时间重叠在一起，而他们发明的&amp;quot;电荷耦合器件&amp;quot;在用于扫读条形码的方面作出了贡献。
&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt;
   &lt;a href="http://picasaweb.google.com/lh/photo/ZEB9bIXKmwY5e6OBGmpPQw?authkey=Gv1sRgCI2DmvKVrPuLtgE&amp;amp;feat=embedwebsite"&gt;&lt;img src=
   "http://lh3.ggpht.com/_1NZOc1C8JjM/Sxyom13X6BI/AAAAAAAADhs/UMtpwf3-5to/s400/google-barcode.png" height="151" width="400" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
   　　为了继承这宝贵的文化遗产，应对外星人入侵地球导致所有条码扫描仪都失效的情况，我们必须学习条形码！当然，某些三俗的读者可能觉得&amp;quot;在MM面前显摆才是真正的目的&amp;quot;。
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;准备工作&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;　　&lt;/strong&gt;对正常人来说，只要能看见东西就行。
&lt;/p&gt;
&lt;p&gt;
   　　如果你有条码扫描仪，可以用来通过扫描实物来做练习。不要问：&amp;quot;我都有扫描仪了还学什么？&amp;quot;这种弱智问题。
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;条码介绍&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;　　&lt;/strong&gt;所谓万变不离其宗，下面介绍的是通用的 Code 39。条条们分为四种：细细的白条、粗粗的白条、细细的黑条、粗粗的黑条。它们分别代表条码中所用的四个符号：空格、破折号、0和1。对应关系如下：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;细白：空格
   &lt;/li&gt;
   &lt;li&gt;粗白：破折号
   &lt;/li&gt;
   &lt;li&gt;细黑：0
   &lt;/li&gt;
   &lt;li&gt;粗黑：1
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   　　也就是说，粗细不等的黑条表达了主要的编码，白条则表达分隔符。注意到，空格的含义并不是指编码中的空格，而是要分离相邻的两个黑条。破折号不仅可以分离相邻的黑条，还可以表达破折号的含义...
&lt;/p&gt;
&lt;p&gt;
   　　题目：阅读下面的条形码，写出它代表的二进制编码。
&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt;
   &lt;a href="http://picasaweb.google.com/lh/photo/V0_Ph6VsCSCy_QUOGLuzeg?authkey=Gv1sRgCI2DmvKVrPuLtgE&amp;amp;feat=embedwebsite"&gt;&lt;img src=
   "http://lh5.ggpht.com/_1NZOc1C8JjM/SxysyXZDZnI/AAAAAAAADhw/zpMYjwosp8I/s400/Barcode_example1.png" height="105" width="400" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
   　　答案是：0-0110|10-&lt;wbr /&gt;010|01-100&lt;wbr /&gt;|00-011|10&lt;wbr /&gt;-100|11-00&lt;wbr /&gt;0|00-110|0&lt;wbr /&gt;1-010|0-01&lt;wbr /&gt;10，其中的&amp;quot;|&amp;quot;不在条码表示的范围，是为了更好的阅读手工加入的，5位一组。
&lt;/p&gt;
&lt;p&gt;
   　　那么这堆数字表示什么含义呢？就要熟记下面的编码含义了：
&lt;/p&gt;
&lt;ul style="FONT-FAMILY: Verdana"&gt;
   &lt;li&gt;* = 0-0110
   &lt;/li&gt;
   &lt;li&gt;0 = 00-110
   &lt;/li&gt;
   &lt;li&gt;1 = 10-001
   &lt;/li&gt;
   &lt;li&gt;2 = 01-001
   &lt;/li&gt;
   &lt;li&gt;3 = 11-000
   &lt;/li&gt;
   &lt;li&gt;4 = 00-101
   &lt;/li&gt;
   &lt;li&gt;5 = 10-100
   &lt;/li&gt;
   &lt;li&gt;6 = 01-100
   &lt;/li&gt;
   &lt;li&gt;7 = 00-011
   &lt;/li&gt;
   &lt;li&gt;8 = 10-010
   &lt;/li&gt;
   &lt;li&gt;9 = 01-010
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   　　于是，上面的条形码表达的编码含义为：*8675309&lt;wbr /&gt;*，至此，恭喜你已经具备了技能：阅读条形码 Level 1。
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;更多技巧&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;　　&lt;/strong&gt;有同学立刻提问，那个星号是什么意思。在正规的 Code 39 中，开头都有一个&amp;quot;*&amp;quot;，它的作用和男人的乳头是一样的（亦即区分正反面...煎蛋怎么这么邪恶）。
&lt;/p&gt;
&lt;p&gt;
   　　又有同学说了，阅读出 01 串比较简单，怎么跟数字对应上呢？这叫涉及到当初设计条形码编码时的高深理论了：我们可以看到，每一个条形码如果表达的含义是数字，则它是形如：ab-cde 的形式。
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;e 是奇偶校验用的，无视。
   &lt;/li&gt;
   &lt;li&gt;有两个1和三个0。
   &lt;/li&gt;
   &lt;li&gt;左边四位按照逆序排列dcba，其值是：1-6、8-10、12，分别对应真实数字中的：1-6、7-9、0。
   &lt;/li&gt;
   &lt;li&gt;为何跳过7和11？是为了校验方便，避免出现三个1的情况。
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;strong&gt;更多疑问&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
   　　感谢坚持阅读到这里，您可能会有疑问：&amp;quot;知道了数字，我还是不知道有什么用啊？怎么知道定价呢？&amp;quot;这很简单，只要你能连上商场超市的数据库，查询对应条码即可。至于怎么连上数据库，就是另外一个问题了。
&lt;/p&gt;
&lt;p&gt;
   　　也有同学对本文表达质疑：&amp;quot;现在条形码下面似乎都有数字啊&amp;quot;。我想说，怎么这么死脑筋，难道不会把数字挡住，然后对身边的MM（不排除是GG）说：&amp;quot;你看，我不看下面的数字也能说出下面的数字！厉害吧！&amp;quot;。
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;更多链接&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;　　&lt;/strong&gt; &lt;a href="http://howto.wired.com/wiki/Read_a_Barcode" target="_blank"&gt;Read a Barcode&lt;/a&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-2902046221363338529?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/2902046221363338529/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/12/blog-post.html#comment-form' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2902046221363338529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2902046221363338529'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/12/blog-post.html' title='如何阅读条形码'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_1NZOc1C8JjM/Sxyom13X6BI/AAAAAAAADhs/UMtpwf3-5to/s72-c/google-barcode.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-1547646270975944838</id><published>2009-10-23T23:58:00.002+08:00</published><updated>2009-10-23T23:58:53.249+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BlackBerry'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Maps'/><title type='text'>在北京 Google Maps 连接问题的解决方法</title><content type='html'>&lt;p&gt;
   　　近日，Google Maps 发布了黑莓上的 3.20 版本。用手机访问：&lt;span class="fullpost"&gt;m.google.com/maps 下载。&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
   　　相信很多人都遇到第一次打开就连接不上的问题：
&lt;/p&gt;
&lt;blockquote&gt;
   &lt;p&gt;
      Network Unavailable: This application requires a data connection, and some BlackBerry devices require reconfiguration to work
      properly. Please visit www.google.com/gmm on your computer for more info.
   &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style="TEXT-ALIGN: center"&gt;
   &lt;img src="http://lh5.ggpht.com/_1NZOc1C8JjM/SuHR9zdosvI/AAAAAAAADgc/ZNztt7XGSSY/s800/google_maps_error.jpg" style=
   "DISPLAY: inline; WIDTH: 439px; HEIGHT: 234px" height="234" width="439" /&gt;
&lt;/p&gt;
&lt;p&gt;
   　　这是不是北京移动的问题我不知道，我只知道，去国贸转一圈就行了...我出了金台夕照地铁站，立刻就正常了。就好像激活，只要打开一次，以后其他地方也没问题了。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-1547646270975944838?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/1547646270975944838/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/10/google-maps.html#comment-form' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1547646270975944838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1547646270975944838'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/10/google-maps.html' title='在北京 Google Maps 连接问题的解决方法'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_1NZOc1C8JjM/SuHR9zdosvI/AAAAAAAADgc/ZNztt7XGSSY/s72-c/google_maps_error.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-2879028427365611391</id><published>2009-10-06T19:35:00.000+08:00</published><updated>2009-10-06T19:35:02.426+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mobile'/><title type='text'>联通，你网站的技术还要加强呀</title><content type='html'>&lt;p&gt;
   　　186 入网，预约订单失效后，预约的号码虽然重新出现在列表，但是无法选择，提示被预定。
&lt;/p&gt;
&lt;p&gt;
   　　分析应该是失效订单还存在导致的，这个失效订单不仅让此号码锁定，而且导致我登记的身份证无法再选择别的号码。
&lt;/p&gt;
&lt;p&gt;
   　　订单不论是否失效都无法取消。　　
&lt;/p&gt;
&lt;p&gt;
   　　打了一圈客服，自然没用，希望转到技术部门后能快点解决。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-2879028427365611391?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/2879028427365611391/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/10/blog-post.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2879028427365611391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2879028427365611391'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/10/blog-post.html' title='联通，你网站的技术还要加强呀'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-1513964496489479910</id><published>2009-10-03T18:18:00.003+08:00</published><updated>2009-10-03T18:21:51.400+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GFW'/><title type='text'>终于能看自己的 Blog 了...</title><content type='html'>&lt;p&gt;　　国庆期间，各种翻墙工具都不好使了，连 Tor 都挂了。我平时又不思进取，只会这一种方法，算是束手无策了。&lt;/p&gt;

&lt;p&gt;　　尝试使用 GAE 的那个代理，结果犯傻，域名竟然起了个 acrossgfw，还没连上就被封了...&lt;/p&gt;

&lt;p&gt;　　现在使用这个方法加上各种 VPN 终于可以上网了...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-1513964496489479910?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/1513964496489479910/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/10/blog.html#comment-form' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1513964496489479910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1513964496489479910'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/10/blog.html' title='终于能看自己的 Blog 了...'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-6994207892131521558</id><published>2009-09-09T23:05:00.002+08:00</published><updated>2009-09-09T23:05:24.876+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mobile'/><title type='text'>华为 C5600 入手感受</title><content type='html'>&lt;p&gt;
   　　冲动消费下的产物。
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;这款手机有两种颜色，都挺好看的。
   &lt;/li&gt;
   &lt;li&gt;入手第一感觉是轻薄，从外壳上看做工比较精致。
   &lt;/li&gt;
   &lt;li&gt;屏幕在阳光下表现一般，可能会看不见，而且没有亮度调节的选项。
   &lt;/li&gt;
   &lt;li&gt;屏幕显示细腻，字体清晰美观，但无自定义选项。
   &lt;/li&gt;
   &lt;li&gt;输入法没有智能功能，只能一个字一个字地输入，有后续字的联想功能。
   &lt;/li&gt;
   &lt;li&gt;支持存储卡，购机时包装盒内附赠 1G 存储卡。
   &lt;/li&gt;
   &lt;li&gt;支持蓝牙。
   &lt;/li&gt;
   &lt;li&gt;3.5毫米耳机插孔。
   &lt;/li&gt;
   &lt;li&gt;200万像素摄像头，无变焦。照相和摄像效果就那样。
   &lt;/li&gt;
   &lt;li&gt;按键个人感觉比较舒适。
   &lt;/li&gt;
   &lt;li&gt;娱乐功能较强，支持音频、视频播放。
   &lt;/li&gt;
   &lt;li&gt;有 PC 端软件。
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　总之，对于我所花费的价钱来说，还是比较满意这款机型。
&lt;/p&gt;
&lt;p&gt;
   　　另外，CMDA 必须激活呼叫等待功能才能实现上网的时候对方打电话不会提示占线。激活的方式很简单，可以从手机的菜单里面选择，也可以手动拨打：*74（然后按发送键）。至于此项功能是否收费，请咨询当地运营商。
&lt;/p&gt;
&lt;p&gt;
   附录：
&lt;/p&gt;
&lt;p&gt;
   　　网易手机：&lt;a href="http://tech.163.com/mobile/09/0521/11/59R6BRPJ00112K8F.html" target="_blank"&gt;华为轻薄CDMA手机C5600评测&lt;/a&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-6994207892131521558?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/6994207892131521558/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/09/c5600.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/6994207892131521558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/6994207892131521558'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/09/c5600.html' title='华为 C5600 入手感受'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-8181164816699990816</id><published>2009-09-06T22:48:00.002+08:00</published><updated>2009-09-06T22:48:34.912+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mobile'/><title type='text'>三星 SCH-B189 折腾记录</title><content type='html'>&lt;p&gt;
   　　给通过搜索引擎进来的一句话摘要：我没折腾出啥结果，没有办法破解电信的限制。
&lt;/p&gt;
&lt;p&gt;
   　　近日电信活动，弄到了一个特别破的手机：三星 SCH-B189。
&lt;/p&gt;
&lt;p&gt;
   　　目前进展，可以通过 Samsung New PC Studio 连接到手机，但是没法控制手机上的文件夹，也没有办法安装软件。使用 PC 连接手机的方法如下：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;在手机中输入 &lt;strong&gt;*#2739#&lt;/strong&gt;，选择打开端口，要求输入的 PIN 为 &lt;strong&gt;*#67367678#&lt;/strong&gt;。
   &lt;/li&gt;
   &lt;li&gt;在手机中输入 &lt;strong&gt;*759#813580&lt;/strong&gt;，选择端口映射图，进入数据，选择 &lt;strong&gt;USB CDC&lt;/strong&gt;。
   &lt;/li&gt;
   &lt;li&gt;安装 Samsung New PC Studio，官方有下载，我安装的是 1.1.0 Build IB5。
   &lt;/li&gt;
   &lt;li&gt;使用普通数据线就可以连接上，同步短信，通信录，日程备忘等。
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　这款机器是初始密码是8个0。
&lt;/p&gt;
&lt;p&gt;
   　　可以刷机，但是买来的时候已经是最新的版本 CD30，还找不到破解的版本。网上可以搜索到刷机的过程和软件，我没刷就不写了。
&lt;/p&gt;
&lt;p&gt;
   　　通过 &lt;strong&gt;*759#813580&lt;/strong&gt; 可以进入测试模式，命令代码和网上说的有些不太一致，但是我从 001 试到了 100，没试出什么激动人心的命令。
&lt;/p&gt;
&lt;p&gt;
   　　此外，通过菜单－天翼－手机下载，可以看到很多收费的 Brew
   应用，注意到在下载列表的时候就会计算流量，且电话占线。如果查看手机内存状态，发现应用那项占用了一部分，应该就是下载的软件目录。这个缓存我尝试使用菜单－设置－复位，不能清空。有一个小技巧，就是切换一下手机的语言，就清空这个缓存了。
&lt;/p&gt;
&lt;p&gt;
   　　除去不能上网，其他功能都设计的不错。通讯录支持手机和卡之间复制，日历有日程安排和农历显示，可以设置多个闹钟和关机闹钟，输入法使用流畅。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-8181164816699990816?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/8181164816699990816/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/09/sch-b189.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/8181164816699990816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/8181164816699990816'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/09/sch-b189.html' title='三星 SCH-B189 折腾记录'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-4266477763732239946</id><published>2009-09-03T17:06:00.002+08:00</published><updated>2009-09-03T17:06:35.738+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Visual Studio 2008 中“包加载失败”问题</title><content type='html'>&lt;p&gt;
   　　安装了 VS2008 SP1 后每次打开&amp;quot;工具箱&amp;quot;都会提示：
&lt;/p&gt;
&lt;blockquote&gt;
   &lt;p&gt;
      包加载失败
   &lt;/p&gt;
   &lt;p&gt;
      未能正确加载包&amp;quot;Microsoft.Data.Entity.Design.Package.MicrosoftDataEntityDesignPackage, Microsoft.Data.Entity.Design.Package,
      Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&amp;quot;( GUID = {8889E051-B7F9-4781-BB33-2A36A9BDB3A5}
      )。请与包供应商联系以获得帮助。由于可能会发生环境损坏，建议重新启动应用程序。要禁止将来加载此包吗? 可以使用&amp;quot;devenv /resetskippkgs&amp;quot;重新启用包加载。
   &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   　　按照提示使用 &amp;quot;devenv /resetskippkgs&amp;quot; 自然是毫无效果。网上出现的&amp;quot;包加载失败&amp;quot;错误多是不同语言环境造成的问题，而这个错误显然不是这个问题。
&lt;/p&gt;
&lt;p&gt;
   　　漫长的探索、重装过程就不说了，解决方法是 Visual Studio 在安装的时候需要勾选上组件 Visual Web Developer ，我估计问题是因为 SP1 的安装时不管三七二十一，直接全部安装，而没有判断之前 Visual Studio 2008
   安装时候选择的组件，所以导致某些组件缺失。
&lt;/p&gt;
&lt;p&gt;
   　　一句话总结，要把 Visual Studio 好好供起来，别想着折腾了...每次都选默认安装（或者完全安装）就没事。
&lt;/p&gt;
&lt;p&gt;
   　　我的环境如下：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;Windows XP SP3
   &lt;/li&gt;
   &lt;li&gt;Visual Studio Team System 2008 Team Suite (90 天试用版)
   &lt;/li&gt;
   &lt;li&gt;Visual Studio 2008 Service Pack 1
   &lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-4266477763732239946?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/4266477763732239946/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/09/visual-studio-2008.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/4266477763732239946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/4266477763732239946'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/09/visual-studio-2008.html' title='Visual Studio 2008 中“包加载失败”问题'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-27419623877531345</id><published>2009-07-30T03:27:00.002+08:00</published><updated>2009-07-30T03:27:45.249+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MPC'/><category scheme='http://www.blogger.com/atom/ns#' term='Avivo'/><category scheme='http://www.blogger.com/atom/ns#' term='H.264'/><category scheme='http://www.blogger.com/atom/ns#' term='AMD'/><category scheme='http://www.blogger.com/atom/ns#' term='ATI'/><title type='text'>使用 ATI Avivo 技术对 H.264 硬件解码</title><content type='html'>&lt;p&gt;
   　　显卡是 ATI HD 4650，支持 ATI Avivo 技术，可以利用 GPU 编解码 H.264 等格式的视频。
&lt;/p&gt;
&lt;p&gt;
   　　但是使用起来还需要进行设置，网上一搜就有一大堆文章，反正都不怎么好用。还说要从 PowerDVD 提取解码器，看着就觉得麻烦，而且人家是收费软件吧？还有用 KMPlayer 的，个人不是很认同违反开源协议的。
&lt;/p&gt;
&lt;p&gt;
   　　最简单的方法就是安装一个 K-Lite Mega Codec Pack，使用里面的播放器 Media Player Classic Homecinema。设置方法如下：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;在菜单中选取 View -&amp;gt; Options -&amp;gt; Internal Filters
   &lt;/li&gt;
   &lt;li&gt;勾选 Transform Filters 中的 H264/AVC (DXVA) 以及 VC1 (DXVA)
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   　　这个时候，选择一个 H.264 视频播放，看看 CPU 占用率和之前相比，如果小了很多就说明使用了硬解，否则就是没有成功。或者在播放的时候，点右键 -&amp;gt; Filters -&amp;gt; MPC Video Decoder，是否启动了 DXVA 模式。
&lt;/p&gt;
&lt;p&gt;
   　　经过我的测试，似乎对于某些高级编码级别无法解，显示不出图像，但是大部分显示正常。设置播放就完成了，下面再写一些资料。
&lt;/p&gt;
&lt;p&gt;
   　　ATI Avivo 的对手是 NVIDIA PureVideo，GPU 编程我也不懂，似乎 NVIDIA 的 CUDA 架构编程更自由，CoreAVC 就是使用 CUDA 技术来发挥显卡资源的。
&lt;/p&gt;
&lt;p&gt;
   　　微软和图形芯片厂商联合制定了一个硬件接口规范 DXVA (DirectX Video Acceleration)，规定了几个硬件解码加速的级别，基本上支持的格式也就 H264 和 VC-1。而前面提到的 CUDA
   就不是一回事，它是一个通用计算技术，所以更自由，可以更灵活挖掘显卡资源。
&lt;/p&gt;
&lt;p&gt;
   　　在安装显卡驱动的时候同时安装的 ATI AVIVO Codecs 应该就是支持硬件编解码的驱动程序。在 Windows 上想要利用显卡资源，应该是通过这个驱动沟通的。
&lt;/p&gt;
&lt;p&gt;
   　　很多人都提到的 CyberLink PowerDVD 的 H.264 解码器，搞不清楚是不是免费的，应该就是这个解码器利用上了 Avivo 等技术。而普通的 ffdshow 应该都是软解，目前还没有利用上 GPU 资源。名为 CyberLink Video/SP
   Decoder (PDVD9) 的 Filter 应该是解 mpeg2 的，似乎免费。
&lt;/p&gt;
&lt;p&gt;
   　　而我使用的播放器 MPC-HC 则在程序内提供了 &lt;a href="http://mpc-hc.sourceforge.net/DXVASupport.html" target="_blank"&gt;DXVA Support&lt;/a&gt;。MPC
   的参与者都是大神级别的人物。有兴趣的可以去 &lt;a href="http://www.xvidvideo.ru/"&gt;http://www.xvidvideo.ru/&lt;/a&gt; 看看。下载一个 MPCVideoDec.ax 就可以在别的播放器里面使用 MPC Video
   Decoder 从而开启 DXVA 模式了。
&lt;/p&gt;
&lt;p&gt;
   　　至于编码，则要下载一个 Avivo Video Converter，不过对视频参数的设置很少，虽然快，但是质量一般，适合转换到便携设备，比如 PSP，Mobile Phone 上去。
&lt;/p&gt;
&lt;p&gt;
   　　相关工具有一个 DXVA Checker，可以去 &lt;a href="http://bluesky23.hp.infoseek.co.jp/"&gt;http://bluesky23.hp.infoseek.co.jp/&lt;/a&gt; 下载。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-27419623877531345?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/27419623877531345/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/07/ati-avivo-h264.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/27419623877531345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/27419623877531345'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/07/ati-avivo-h264.html' title='使用 ATI Avivo 技术对 H.264 硬件解码'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-1415410123422391395</id><published>2009-07-27T16:18:00.002+08:00</published><updated>2009-07-27T16:18:46.020+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AMD'/><title type='text'>AMD X2 545 + 技嘉770T-UD3P 双核开4核</title><content type='html'>&lt;ul&gt;
   &lt;li&gt;CPU：AMD Phenom II X2 545，周期编号是 0922。
   &lt;/li&gt;
   &lt;li&gt;主板：技嘉 GA-MA770T-UD3P，BIOS 版本 F2。
   &lt;/li&gt;
   &lt;li&gt;内存：DDR3 1333 2G x 2
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   　　主板想用 UD4P 但是没货，这款 770 南桥是 SB710，只要支持 ACC（Advanced Clock Calibration）即可，不用必须 790。
&lt;/p&gt;
&lt;p&gt;
   　　过程很顺利，只要在 BIOS 中把 EC Firmware Selection 改成 Hybrid，并且把 Advanced Clock Calibration 设置成 Auto 即可。此时显示的 CPU 型号是 Phenom II x4 B45。
&lt;/p&gt;
&lt;p&gt;
   &lt;span lang="EN-US" xml:lang="EN-US"&gt;　　主板的北桥温度有些偏高。&lt;/span&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-1415410123422391395?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/1415410123422391395/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/07/amd-x2-545-770t-ud3p-4.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1415410123422391395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1415410123422391395'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/07/amd-x2-545-770t-ud3p-4.html' title='AMD X2 545 + 技嘉770T-UD3P 双核开4核'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-1601455027525033039</id><published>2009-07-06T19:04:00.002+08:00</published><updated>2009-07-06T19:04:24.100+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Trac'/><category scheme='http://www.blogger.com/atom/ns#' term='SVN'/><title type='text'>Trac 0.12dev 安装记录</title><content type='html'>&lt;div&gt;
   &lt;h1 align="center" id="zmw1"&gt;
      Trac 0.12dev 安装记录
   &lt;/h1&gt;
   &lt;h2 align="center"&gt;
      by 晓月
      &lt;br /&gt;
   &lt;/h2&gt;
   &lt;h1 id="u-:g"&gt;
      参考文档
   &lt;/h1&gt;
   &lt;br /&gt;
   　　&lt;a id="oepb" title="Trac Installation Guide for 0.12dev" href="http://trac.edgewall.org/wiki/0.12/TracInstall" target="_blank" name=
   "oepb"&gt;Trac Installation Guide for 0.12dev&lt;/a&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   &lt;h1&gt;
      超简易在线安装
   &lt;/h1&gt;
   &lt;br /&gt;
   　　因为 Trac 0.12dev 是正在开发的版本，所以它的安装过程需要注意各个组件的版本问题，以下操作在2009年7月6日是可行的，但是如果有某个组件版本升级，可能导致问题。
   &lt;br /&gt;
   &lt;br /&gt;
   &lt;ol&gt;
      &lt;li&gt;下载 &lt;a id="hctf" title="Python 2.5.4" href="http://www.python.org/ftp/python/2.5.4/python-2.5.4.msi" target="_blank" name="hctf"&gt;
         Python 2.5.4&lt;/a&gt;，安装到 C:\Python25。
      &lt;/li&gt;
      &lt;li&gt;下载 &lt;a id="e3j1" title="setuptools-0.6c9.win32-py2.5.exe" href="http://pypi.python.org/pypi/setuptools" target="_blank" name=
      "e3j1"&gt;setuptools-0.6c9.win32-py2.5.exe&lt;/a&gt;，直接运行安装。
      &lt;/li&gt;
      &lt;li&gt;下载 &lt;a href=
      "http://subversion.tigris.org/files/documents/15/45937/Setup-Subversion-1.5.6.msi"&gt;Setup-Subversion-1.5.6.msi&lt;/a&gt;，直接运行安装。
      &lt;/li&gt;
      &lt;li&gt;下载 &lt;a href=
      "http://subversion.tigris.org/files/documents/15/45229/svn-python-1.5.6.win32-py2.5.exe"&gt;svn-python-1.5.6.win32-py2.5.exe&lt;/a&gt;，直接运行安装。
      &lt;/li&gt;
      &lt;li&gt;安装 &lt;a id="a02c" title="Genshi" href="http://genshi.edgewall.org/" target="_blank" name="a02c"&gt;Genshi&lt;/a&gt;，运行：easy_install
      Genshi==dev
      &lt;/li&gt;
      &lt;li&gt;安装 &lt;a id="p_u9" title="Babel" href="http://babel.edgewall.org/" target="_blank" name="p_u9"&gt;Babel&lt;/a&gt;，运行：easy_install Babel
      &lt;/li&gt;
      &lt;li&gt;检出 &lt;a id="e03h" title="Trac" href="http://trac.edgewall.org/" target="_blank" name="e03h"&gt;Trac&lt;/a&gt;：svn export &lt;span class=
      "copyAngel_dummy_LinkUp"&gt;https://svn.edgewall.com/repos/trac/trunk&lt;/span&gt; trac
      &lt;/li&gt;
      &lt;li&gt;在 trac 目录运行：python setup.py compile_catalog -f
      &lt;/li&gt;
      &lt;li&gt;在 trac 目录运行：python setup.py install
      &lt;/li&gt;
      &lt;li&gt;安装完毕，此时 trac 目录可以删除。
         &lt;br /&gt;
      &lt;/li&gt;
   &lt;/ol&gt;
   &lt;h1 id="i5vl"&gt;
      离线安装
   &lt;/h1&gt;
   &lt;br /&gt;
   　　在线安装虽然简单方便，但是感觉不太可控，而且重新安装起来比较慢。下面就介绍如何把依赖的包下载到本地。
   &lt;br /&gt;
   &lt;br /&gt;
   　　Genshi 在下载页面只有 0.51 版本，而 Trac 0.12 需要 0.6（r690以上）的版本。因此需要自己手动打包成 egg 文件。
   &lt;br /&gt;
   &lt;ol&gt;
      &lt;li&gt;svn co http://svn.edgewall.org/repos/genshi/trunk genshi
      &lt;/li&gt;
      &lt;li&gt;在 genshi 目录，运行：python setup.py bdist_egg
      &lt;/li&gt;
      &lt;li&gt;在 genshi/dist 目录，得到相应的 egg 文件。
      &lt;/li&gt;
   &lt;/ol&gt;
   &lt;br /&gt;
   　　Babel 使用下载页面上的 &lt;a href="http://ftp.edgewall.com/pub/babel/Babel-0.9.4-py2.5.egg" class="ext-link"&gt;Babel-0.9.4-py2.5.egg&lt;/a&gt; 就行。如果从 SVN
   检出最新的代码（1.0dev），配置还需要进行比较复杂的操作，参见文档：&lt;a id="gu2s" title="Setting up Babel from a Subversion Checkout" href=
   "http://babel.edgewall.org/wiki/SubversionCheckout" target="_blank" name="gu2s"&gt;Setting up Babel from a Subversion Checkout&lt;/a&gt;。
   &lt;br /&gt;
   &lt;br /&gt;
   　　Trac 需要在打包之前先编译一下翻译文件，过程类似于在线安装，就是第一步把导出改成检出（为了包含版本信息），最后一步改成打包：
   &lt;br /&gt;
   &lt;ol&gt;
      &lt;li&gt;svn co &lt;span class="copyAngel_dummy_LinkUp"&gt;https://svn.edgewall.com/repos/trac/trunk&lt;/span&gt; trac
      &lt;/li&gt;
      &lt;li&gt;在 trac 目录运行：python setup.py compile_catalog -f
      &lt;/li&gt;
      &lt;li&gt;在 trac 目录运行：python setup.py bdist_egg
      &lt;/li&gt;
      &lt;li&gt;在 trac/dist 目录，得到相应的 egg 文件。
      &lt;/li&gt;
   &lt;/ol&gt;
   &lt;br /&gt;
   　　这样在安装的时候，使用如下命令即可：
   &lt;br /&gt;
   &lt;ul&gt;
      &lt;li&gt;easy_install Genshi-0.6dev_r1063-py2.5-win32.egg
      &lt;/li&gt;
      &lt;li&gt;easy_install Babel-0.9.4-py2.5.egg
      &lt;/li&gt;
      &lt;li&gt;easy_install Trac-0.12dev_r8345-py2.5.egg
      &lt;/li&gt;
   &lt;/ul&gt;
   &lt;br /&gt;
   &lt;h1&gt;
      SVN 版本造成的差异
   &lt;/h1&gt;
   &lt;br /&gt;
   　　如果，SVN 使用的不是 1.5.x 版本，而是 1.6.x 版本，因为 checkout 格式发生变化，导致 setuptools 无法正确获得版本，详见 &lt;a id="wvbu" title="Trac Ticket #8365" href=
   "http://trac.edgewall.org/ticket/8365" target="_blank" name="wvbu"&gt;Trac Ticket #8365&lt;/a&gt;。这就导致安装 Genshi 以后版本号不对，在安装 Trac 会提示：
   &lt;br /&gt;
   &lt;br /&gt;
   &lt;div style="MARGIN-LEFT: 40px"&gt;
      No local packages or download links found for Genshi&amp;gt;=0.6dev-r960
      &lt;br /&gt;
      error: Could not find suitable distribution for Requirement.parse(&amp;#39;Genshi&amp;gt;=0.6dev-r960&amp;#39;)
   &lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
   &lt;br /&gt;
   　　因此，如果使用 SVN 1.6.x，目前解决方法是手动修改 egg 包的名称和内部 EGG-INFO 的版本信息。手动版本信息从 0.6dev-r0 修改成类似 0.6dev-r1063，其中 1063 是 SVN 的版本号。或者在安装之后，修改 Python
   目录下的 easy-install.pth 文件。
   &lt;br /&gt;
   &lt;br /&gt;
   　　SVN 1.6.3 下载：
   &lt;br /&gt;
   &lt;ul&gt;
      &lt;li&gt;
         &lt;a href="http://subversion.tigris.org/files/documents/15/46163/Setup-Subversion-1.6.3.msi"&gt;Setup-Subversion-1.6.3.msi&lt;/a&gt;
      &lt;/li&gt;
      &lt;li&gt;
         &lt;a id="k9d." title="svn-python-1.6.3.win32-py2.5.exe" href=
         "http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100" target="_blank" name=
         "k9d."&gt;svn-python-1.6.3.win32-py2.5.exe&lt;/a&gt;
      &lt;/li&gt;
   &lt;/ul&gt;
   &lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
   &lt;h1&gt;
      一些说明
      &lt;br /&gt;
   &lt;/h1&gt;
   &lt;br /&gt;
   　　有版本有&amp;quot;洁癖&amp;quot;的人，相信总喜欢用最新的版本，但是对待类似这种问题，还是老老实实用稳定的版本省心。比如 Python 3.1 都发布，但是因为其各种特性还不稳定（从 3.0-3.1
   的变化就能看出），所以很多第三方库都还没有迁移，所以目前我也只能多个版本的 Python 混合使用了。
   &lt;br /&gt;
   &lt;br /&gt;
   　　很多扩展包使用 easy_install 方式（PEAK 开发的新的 Python 扩展包方式）会比较简单，在安装了上面的 setuptools 后在 Python 目录下的 Scripts 目录就有了。
   &lt;br /&gt;
   &lt;br /&gt;
   　　SVN 似乎在 Apache 2.0 和 2.2 版本上有分支，所以根据使用的 Apache 选择合适的版本下载。SVN 安装完成后要设置环境变量。比如 C:\Subversion\ 是安装目录，注意安装完检查是否设置好了环境变量：SET
   APR_ICONV_PATH=&amp;quot;C:\Subversion\iconv&amp;quot;。
   &lt;br /&gt;
   &lt;br /&gt;
   　　svn-python 是 SVN 自身提供的 Python 模块，用来操作 SVN。操作 SVN 的 Python 模块还有 &lt;a id="l.tr" title="PySVN" href="http://pysvn.tigris.org/" target=
   "_blank" name="l.tr"&gt;PySVN&lt;/a&gt;，不过 Trac 使用的是 svn-python。
   &lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
&lt;/div&gt;
&lt;p&gt;
   &lt;br /&gt;
&lt;/p&gt;
&lt;hr size="2" /&gt;
&lt;p&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   修订记录：
   &lt;br /&gt;
   2009-07-06：初稿。
   &lt;br /&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-1601455027525033039?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/1601455027525033039/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/07/trac-012dev.html#comment-form' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1601455027525033039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1601455027525033039'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/07/trac-012dev.html' title='Trac 0.12dev 安装记录'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-4584063090349251991</id><published>2009-07-04T01:28:00.002+08:00</published><updated>2009-07-04T01:28:35.976+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DirectShow'/><title type='text'>DirectShow 中的 Renderer Filters</title><content type='html'>&lt;p&gt;
   　　在用 DirectShow 写程序的时候，被 Renderer Filter 的问题折腾了好几次，有的问题一开始不了解还觉得莫名其妙，虽然说到现在也不是完全明白，但好歹解决了。
&lt;/p&gt;
&lt;p&gt;
   　　我曾经遇到的问题有：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;将一个解码器封装成 ActiveX 控件，但是遇到刷新问题，就是拖动窗口的时候才刷新。奇怪的是，在有的机器上就没有问题，即使配置一样，而且和 IE 版本也没什么关系。
   &lt;/li&gt;
   &lt;li&gt;在一个桌面播放器中同时播放4个视频，都附着到一个窗口上，但是左上角一路异常，总是打开比其他几个慢，而且拖动窗口时会反应迟缓，总之就是它特殊，但是程序中完全是一样对待的。
   &lt;/li&gt;
   &lt;li&gt;使用远程桌面连接的时候，看不到播放的视频。这个是小事。
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　以上问题通过搜索，主要解决方法有：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;折腾 OnDraw(), OnPaint(), OnEraseBkGnd() 这几个函数，要 put_owner 在窗体上，由窗体的 WM_PAINT 来刷新。
   &lt;/li&gt;
   &lt;li&gt;修改控件属性，添加处理消息。
   &lt;/li&gt;
   &lt;li&gt;不使用默认的 Renderer Filter，手动使用 VMR-9。
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　也是我水平不高，还就替换 Renderer Filter 好用，手动刷新的方法在上面第二个问题的时候就不怎么好使。而且 DirectShow 提供了多个 Renderer Filter，换一个更高级的往往能解决问题。
&lt;/p&gt;
&lt;p&gt;
   　　但是，我只是知道，比如 VMR-9 中自己管理了刷新机制，所以上述这些问题都能解决，但是如何处理的还不明白。
&lt;/p&gt;
&lt;p&gt;
   　　DirectShow 中自带的 Renderer Filter 挺多的，甚至还有同名但是 CLSID 不同的，在 MSDN: &lt;a href="http://msdn.microsoft.com/en-us/library/dd374574(VS.85).aspx"
   target="_blank" title="如何选取正确的 Renderer Filter"&gt;Choosing the Right Video Renderer&lt;/a&gt; 中有一个较详细的介绍。通过以下 CLSID 以及 MSDN 上的资料应该能回答有关 Renderer
   Filter 的疑惑。
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;CLSID_OverlayMixer // {CD8743A1-3736-11d0-9E69-00C04FD7C15B}
   &lt;/li&gt;
   &lt;li&gt;CLSID_VideoRenderer // {70E102B0-5556-11CE-97C0-00AA0055595A}
   &lt;/li&gt;
   &lt;li&gt;CLSID_VideoRendererDefault // {6BC1CFFA-8FC1-4261-AC22-CFB4CC38DB50}
   &lt;/li&gt;
   &lt;li&gt;CLSID_VideoMixingRenderer // {B87BEB7B-8D29-423f-AE4D-6582C10175AC}
   &lt;/li&gt;
   &lt;li&gt;CLSID_VideoMixingRenderer9 // {51b4abf3-748f-4e3b-a276-c828330e926a}
   &lt;/li&gt;
   &lt;li&gt;CLSID_EnhancedVideoRenderer // {FA10746C-9B63-4b6c-BC49-FC300EA5F256}
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   　　以上 CLSID 都可以在 Windows SDK 中的 uuids.h 找到。
&lt;/p&gt;
&lt;p&gt;
   　　 Overlay Mixer 不怎么用，Enhanced Video Renderer (EVR) 是 Vista 之后的，还没用过。VMR-9 最强大，如果能用（系统软硬件支持），一般能解决问题。VMR-7 以及更早的，我也分不太清楚细致的区别，其中 VMR-7
   本身就有两个Filter，其中一个还和 Video Renderer Filter 的 friendly name 相同，都是 &amp;quot;Video Renderer&amp;quot;。
&lt;/p&gt;
&lt;p&gt;
   　　因为 Renderer 接收的是 RGB/YUV 数据，然后交由显卡处理显示，所以显卡的差别会导致性能的差别。此外，VMR-9 因为有更强的功能和更好的质量，所以会占用更多的资源，在不同的显卡上，可能会有实例 (instance) 的限制，比如只能显示 7-8
   个窗口，而 VMR-7 则限制小很多。
&lt;/p&gt;
&lt;p&gt;
   　　在陆其明的书上有一些介绍，网上很多文章都是这本书上相应章节内容，搜一下&amp;quot;关于VMR7、VMR9、Video Renderer&amp;quot;就能找到。
&lt;/p&gt;
&lt;p&gt;
   　　一句话总结，系统资源允许的情况下，使用高级的 Renderer Filter，否则就只能使用较低版本的 Renderer Filter，手动解决出现的种种问题。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-4584063090349251991?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/4584063090349251991/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/07/directshow-renderer-filters.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/4584063090349251991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/4584063090349251991'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/07/directshow-renderer-filters.html' title='DirectShow 中的 Renderer Filters'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-2024540502249197643</id><published>2009-06-19T15:01:00.000+08:00</published><updated>2009-06-19T15:01:21.959+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IT Review'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>各地网民强烈谴责谷歌传播淫秽色情和低俗信息</title><content type='html'>&lt;p&gt;
   　　原谅我...实在忍不住，还是决定转载下这篇文章以及 CCTV 相关报道，留作纪念。按照习惯，先给链接：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;高清无码视频：&lt;a href="http://space.tv.cctv.com/video/VIDE1245372046343146" target="_blank"&gt;焦点访谈：&amp;quot;谷歌中国&amp;quot;色情链接遭谴责(2009.06.18)&lt;/a&gt;
   &lt;/li&gt;
   &lt;li&gt;新浪高清视频：&lt;a href="http://video.sina.com.cn/tech/i/v/2009-06-18/20096363.shtml" target="_blank"&gt;互联网协会谴责谷歌传播色情和低俗信息&lt;/a&gt;
   &lt;/li&gt;
   &lt;li&gt;精彩文字报道：&lt;a href="http://www.china.com.cn/news/txt/2009-06/19/content_17979444.htm" target="_blank"&gt;各地网民强烈谴责谷歌传播淫秽色情和低俗信息&lt;/a&gt;
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   　　前几天，知名软件&amp;quot;绿坝-花季护航&amp;quot;我都没兴趣说，现在看来是舆论控制不住想要转移视线，或者央视又没钱修大楼，或者真的是有人闲的没事干，现在拿&amp;quot;谷歌中国&amp;quot;下手了。
&lt;/p&gt;
&lt;p&gt;
   　　明白的人都知道搜索引擎可以做什么不可以做什么，就不对这些&amp;quot;小事&amp;quot;评论了。本博客主要关注的是互联网娱乐新闻，所以主要探究下本次事件的娱乐性。
&lt;/p&gt;
&lt;p&gt;
   　　我个人觉得报道中最精彩的还是&amp;quot;各地网民&amp;quot;的发言意见，比如：
&lt;/p&gt;
&lt;blockquote&gt;
   &lt;p&gt;
      　　网友&amp;quot;卡卡&amp;quot;在网上发帖留言称：&amp;quot;谷歌中国，这个网站&lt;span style=
      "COLOR: #ff0000"&gt;太邪恶了&lt;/span&gt;，今天我在搜资料的时候搜到了很多的色情信息，我想如果是鉴别能力比较低的青少年看到这样的标题和图片肯定会受到不良影响，恐怕在以后我都不敢让我的孩子上网了&amp;quot;。
   &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   　　我感到很震惊，你 TMD（TMD=甜蜜的）搜什么资料能出来色情信息啊...我看你就挺邪恶，你孩子以后上网学坏就是你管教不严。另外，你和瑞星啥关系？我觉得新浪上就有很多不良的标题和图片。
&lt;/p&gt;
&lt;blockquote&gt;
   &lt;p&gt;
      　　中国人民大学院新闻系的同学小青告诉记者：&amp;quot;作为80后的一员，我们现在大三的学生对互联网的&lt;span style=
      "COLOR: #ff0000"&gt;需求特别的强烈&lt;/span&gt;，基本每天都能用到……&amp;quot;当记者提到谷歌时，同学们更表达了自己的不满：&amp;quot;谷歌作为国外知名搜索引擎，进入中国是一件好事，但是在搜索中谷歌出现的不该有的东西还是让我们无法接受，甚至搜索一些
      &lt;span style="COLOR: #ff0000"&gt;学术词语都可能会出现不良内容&lt;/span&gt;，对于这样的网站我们应该强烈谴责！&amp;quot;。
   &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   　　别80后，没人愿意跟你套近乎，不知道这位人大同学你搜索什么&amp;quot;学术词语&amp;quot;啊？不过考虑到你是新闻专业的可以理解，是在搜索&amp;quot;淫秽低俗&amp;quot;吗？我就奇怪了，搜索&amp;quot;淫秽&amp;quot;难道还能给你返回新闻理论的资料（别说，百度还真是这样...）？不接受你就用百度，你有什么不满的。
&lt;/p&gt;
&lt;blockquote&gt;
   &lt;p&gt;
      　　北京理工大学&lt;span style=
      "COLOR: #ff0000"&gt;计算机学院&lt;/span&gt;的王同学，则从专业角度告诉记者：&amp;quot;对于这样的一种行为，谷歌中国是完全有悖于互联网道德的。而且从技术的角度讲，谷歌中国完全有能力屏蔽掉这些不良内容，他们正是因为利益的驱使而&amp;#39;顶风作案&amp;#39;，我们不但该深深地批判、谴责这样的行为，
      &lt;span style="COLOR: #ff0000"&gt;更应该在以后的工作、学习中放弃使用这样的网站&lt;/span&gt;&amp;quot;。
   &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   　　这个王同学太不像话了，你学计算机的，人不能这么无耻，有种你以后别用Google。还技术角度，还利益驱使，看似一本正经，其实满嘴胡话。
&lt;/p&gt;
&lt;p&gt;
   　　还有违法和不良信息举报中心的专家们，你们让我长见识了，我能想到的关键词太土太俗太普通，我也承认我词汇量不高，通过观看节目和课下学习，我掌握了三个新单词：boobs，butt，shoulder 的含义。都搜&amp;quot;boobs&amp;quot;了，还想让搜索引擎返回什么？
&lt;/p&gt;
&lt;p&gt;
   　　最后，我有一个可爱的妹妹，我同样关注互联网的健康和安全，但是我认为应该把功夫用在正确的地方。所以试图嚷嚷&amp;quot;你没孩子你不知道有多危险&amp;quot;的网友就不要留言了，当然了，如果您没有看到这段话就发表了如上评论，我会帮您删除的，不用谢。其实目前 Blog
   是封锁状态，估计一般人也留不了言...
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-2024540502249197643?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/2024540502249197643/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/06/blog-post_19.html#comment-form' title='6 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2024540502249197643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2024540502249197643'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/06/blog-post_19.html' title='各地网民强烈谴责谷歌传播淫秽色情和低俗信息'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-8557114051472710694</id><published>2009-06-16T17:39:00.002+08:00</published><updated>2009-06-16T17:39:23.592+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ACG'/><title type='text'>钢炼：不该看第十集的，修兹死了</title><content type='html'>&lt;p&gt;
   　　都怪这次剧情进展迅速，早知道就跳过这集了。
&lt;/p&gt;
&lt;p&gt;
   　　我没看过漫画，也不知道谁告诉我&amp;quot;这次按原作，修兹不死了&amp;quot;，我还信以为真了。
&lt;/p&gt;
&lt;p&gt;
   　　感觉真悲伤，虽然只是动画...
&lt;/p&gt;
&lt;p&gt;
   　　拖了一周才写，以此纪念。
&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt;
   &lt;a href="http://picasaweb.google.com/lh/photo/UGv7rTgVYdUiiElxh1zReA?feat=embedwebsite"&gt;&lt;img src=
   "http://lh4.ggpht.com/_1NZOc1C8JjM/SjdmMas7z_I/AAAAAAAADas/TFOUrMMOmsA/s400/FA2009_10_01.png" height="226" width="400" /&gt;&lt;/a&gt; &lt;a href=
   "http://picasaweb.google.com/lh/photo/58IKnraTXsQzGqad0cXRiw?feat=embedwebsite"&gt;&lt;img src=
   "http://lh5.ggpht.com/_1NZOc1C8JjM/SjdmMeekcHI/AAAAAAAADaw/A8otktx3faA/s400/FA2009_10_02.png" height="226" width="400" /&gt;&lt;/a&gt; &lt;a href=
   "http://picasaweb.google.com/lh/photo/Ps2dEt11fNwDhaDzuG1bjw?feat=embedwebsite"&gt;&lt;img src=
   "http://lh6.ggpht.com/_1NZOc1C8JjM/SjdmMnnIIEI/AAAAAAAADa0/8Y0Tca1NwTA/s400/FA2009_10_03.png" height="226" width="400" /&gt;&lt;/a&gt; &lt;a href=
   "http://picasaweb.google.com/lh/photo/ZHTSTKWwYJ3wDwm2UAvlVw?feat=embedwebsite"&gt;&lt;img src=
   "http://lh5.ggpht.com/_1NZOc1C8JjM/SjdmMhN3-fI/AAAAAAAADa4/SUwxi42ehfs/s400/FA2009_10_04.png" height="226" width="400" /&gt;&lt;/a&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-8557114051472710694?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/8557114051472710694/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/06/blog-post.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/8557114051472710694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/8557114051472710694'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/06/blog-post.html' title='钢炼：不该看第十集的，修兹死了'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_1NZOc1C8JjM/SjdmMas7z_I/AAAAAAAADas/TFOUrMMOmsA/s72-c/FA2009_10_01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-745615738818909180</id><published>2009-06-06T01:28:00.000+08:00</published><updated>2009-06-06T01:28:26.378+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Google Developer Day 2009 见闻</title><content type='html'>&lt;p&gt;
   　　今天去参加了 Google 开发人员日的活动：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;时间：2009年6月5日
   &lt;/li&gt;
   &lt;li&gt;地点：北京国际会议中心
   &lt;/li&gt;
   &lt;li&gt;主页：&lt;a href=
   "http://code.google.com/intl/zh-CN/events/developerday/2009/home.html"&gt;http://code.google.com/intl/zh-CN/events/developerday/2009/home.html&lt;/a&gt;
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   　　以前参加过微软的硬件工程和移动与嵌入式开发者大会（&lt;a href="http://arccos.blogspot.com/2007/06/microsoft-winhec-2007-china.html" target="_blank" title=
   "2007年参加微软活动见闻"&gt;见闻&lt;/a&gt;），Google 的活动是向往已久，第一次参加，非常高兴。我随手拍了几张照片，见相册：
&lt;/p&gt;
&lt;div style="TEXT-ALIGN: center"&gt;
 &lt;embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="400" height="267" flashvars="host=picasaweb.google.com&amp;captions=1&amp;hl=en_US&amp;feat=flashalbum&amp;RGB=0x000000&amp;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Farcos.zf%2Falbumid%2F5343870814987041633%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/embed&gt;
&lt;/div&gt;
&lt;p&gt;
   　　我早早就起床赶到场地，这时候人还不多，就听见工作人员在大喊：&amp;quot;快交出邀请函&amp;quot;，我连忙听话地交了打印好的邀请函签到。顺便说一下，看签到处的情况，似乎有 3000
   人，实际肯定来不了这么多。我的号码十分靠前，但是当初发确认信的时候出了纰漏，直到最后我才收到确认。幸好最后还是收到了，不然又要错过了。
&lt;/p&gt;
&lt;p&gt;
   　　首先是李开复博士的演讲，十分精彩，不愧是职业的。同时看到了 Google Wave 的演示，这个我前几天就在新闻中看到了，但是实际看到演示时，我感到非常震撼，是一款能令人热血沸腾的产品，因为今天主要是见闻，所以涉及技术的就不说了，一搜索肯定有更详细的介绍。此外还有
   Map API、iGoogle 、OpenSocial、HTML5 等产品和技术。
&lt;/p&gt;
&lt;p&gt;
   　　接着就是第一个分会场课程，注意到本次大会有几十个课程，但是我只能选择 5 个来听。讲的不是很深，但是很有收获。中午的时候午餐是盒饭，不能说好吃，无功无过吧。下午继续听课。
&lt;/p&gt;
&lt;p&gt;
   　　所有课程结束后，我领取了纪念品：一件 T 恤和一个电脑包。图片中有电脑包，是绿色的，设计和质量都很好，只是颜色不太喜欢。T 恤也是绿色的，太难看了这颜色，所以我连照都没照。
&lt;/p&gt;
&lt;p&gt;
   　　晚饭是自助餐，同样是无功无过（我是不是口味太挑剔了...），需要排队，没有正经桌子，都在主会场吃，同时主会场也有乐队表演（其实就一首歌）。接着是开发者们进行交流，我看礼品不怎么吸引人也没有 Google 特色就闪人了。出门的时候是 19:30，按照日程这个活动应该是
   20:30 结束。
&lt;/p&gt;
&lt;p&gt;
   　　因为是免费的活动，我觉得相当不错，组织和安排都比较好。而且我又吃又喝又拿的，一整天心情很愉快！
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-745615738818909180?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/745615738818909180/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/06/google-developer-day-2009.html#comment-form' title='5 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/745615738818909180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/745615738818909180'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/06/google-developer-day-2009.html' title='Google Developer Day 2009 见闻'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-6292104386061264869</id><published>2009-05-29T00:16:00.004+08:00</published><updated>2009-05-29T01:00:28.432+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IT Review'/><title type='text'>“暴风娱乐”有赶超瑞星之势</title><content type='html'>&lt;p&gt;
   　　IT 界也有很多娱乐新闻，以前瑞星是主要制造者，自从&amp;quot;DNS事件&amp;quot;后，暴风逐渐显露出其娱乐天赋！
&lt;/p&gt;
&lt;p&gt;
   　　且不说断网事件是谁引起的，暴风有没有后门（没有后门我也不用...），单看其对网易的态度就让我想起一句话：惹谁也别惹流氓...
&lt;/p&gt;
&lt;p&gt;
   　　事情大概是这样的：在暴风影音的 DNS 服务器受攻击导致全国大面积网络瘫痪后，网易科技发布了一系列针对暴风影音后门程序的文章。暴风自然不干了，在其播放软件的弹出窗口中做出反击，陆续发布如下文章：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;网易博客沦为卖淫女招揽生意平台
   &lt;/li&gt;
   &lt;li&gt;网易传播淫秽信息被谴责
   &lt;/li&gt;
   &lt;li&gt;色情泛滥，网易聊天室终关门
   &lt;/li&gt;
   &lt;li&gt;焦心拷问：十问丁磊
   &lt;/li&gt;
   &lt;li&gt;专家痛批网易&amp;quot;博眼球赚点击&amp;quot;
   &lt;/li&gt;
   &lt;li&gt;卖淫女广告！网易博客很危险
   &lt;/li&gt;
   &lt;li&gt;网易财经很黄很暴力
   &lt;/li&gt;
   &lt;li&gt;网易已出局，搜狐新浪才算真正门户
   &lt;/li&gt;
   &lt;li&gt;网易与暴雪联手操作，必将是四败俱伤
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　真是全方位批判啊，专家也上阵了。不仅如此，还提供了问卷调查：&amp;quot;你认为网易是流氓网站吗？&amp;quot; ，&amp;quot;呼吁&amp;quot;流氓网站、淫秽内容危害网络，清除毒瘤还我洁净空间！最后还有互联网违法和不良信息中心的举报电话...
&lt;/p&gt;
&lt;p&gt;
   　　以上消息也是来自于别人的截图，我没有安装暴风影音，不知道是不是真的，哈哈。
&lt;/p&gt;
&lt;p&gt;
   　　如果你的机器上也安装的暴风影音，并且对其也没有太深的感情，不妨换一个播放软件，比如 K-Lite Mega Codec Pack 是一个很好的选择。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-6292104386061264869?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/6292104386061264869/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/05/it.html#comment-form' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/6292104386061264869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/6292104386061264869'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/05/it.html' title='“暴风娱乐”有赶超瑞星之势'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-8901460604000841198</id><published>2009-05-21T00:37:00.002+08:00</published><updated>2009-05-21T00:37:52.464+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MATLAB'/><title type='text'>MATLAB符号计算模块和360冲突</title><content type='html'>&lt;p&gt;
   　　使用 MATLAB 内置的符号计算工具箱（Symbolic Math Toolbox），会返回如下错误：
&lt;/p&gt;
&lt;blockquote&gt;
   &lt;p&gt;
      ??? Error using ==&amp;gt; mupadinit at 35
      &lt;br /&gt;
      Unable to initialize kernel
   &lt;/p&gt;
   &lt;p&gt;
      Error in ==&amp;gt; mupadengine.mupadengine&amp;gt;mupadengine.evalin at 117
      &lt;br /&gt;
      [res,status] = mupadmex(statement,8);
   &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   　　这是和安全卫士360有冲突，将360及其保险箱完全卸载并重启后问题解决。
&lt;/p&gt;
&lt;p&gt;
   　　这个问题已经出现一段时间了，但是在 360 v5.1.1 版本仍没有解决，我在 MATLAB 2008b 和 2009a 中都遇到此问题。
&lt;/p&gt;
&lt;p&gt;
   　　目前最简单的解决方案就是卸载360相关程序，有人说卸载后再重装360可以解决，但是我只要一安装360问题就出现。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-8901460604000841198?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/8901460604000841198/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/05/matlab360.html#comment-form' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/8901460604000841198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/8901460604000841198'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/05/matlab360.html' title='MATLAB符号计算模块和360冲突'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-2483904464592200091</id><published>2009-05-19T22:02:00.002+08:00</published><updated>2009-05-19T22:02:27.814+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Essay'/><title type='text'>随便写的</title><content type='html'>&lt;p&gt;
   　　据说是因为快到某些日子了，所以 blogspot 和 blogger 都无法访问。其实，即使没有特定日期，想封也就封了。
&lt;/p&gt;
&lt;p&gt;
   　　在这样艰苦环境下发文，一是表达一下封锁实在是给我造成很多不便，二是体现一下我迎难而上的好品质。
&lt;/p&gt;
&lt;p&gt;
   　　最近两三个月发文量不多，还是有很多要写的，大部分还停留在零散的草稿阶段...等到不太忙的时候再整理整理。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-2483904464592200091?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/2483904464592200091/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/05/blog-post_19.html#comment-form' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2483904464592200091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2483904464592200091'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/05/blog-post_19.html' title='随便写的'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-5940005685168567424</id><published>2009-05-08T16:19:00.000+08:00</published><updated>2009-05-08T16:19:31.594+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Essay'/><title type='text'>可怕的网瘾治疗</title><content type='html'>&lt;p&gt;
   　　本文是就近日《中国青年报》多篇质疑&amp;quot;戒网中心&amp;quot;和负责人杨永信（&lt;a href="http://zh.wikipedia.org/wiki/%E6%9D%A8%E6%B0%B8%E4%BF%A1" target=
   "_blank"&gt;维基：杨永信&lt;/a&gt;）的文章：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      &lt;a href="http://www.chinanews.com.cn/jk/kong/news/2009/05-07/1680402.shtml" target="_blank"&gt;孩子入院时多被强行押制 专家电击治网瘾惹争议&lt;/a&gt;
   &lt;/li&gt;
   &lt;li&gt;
      &lt;a href="http://www.chinanews.com.cn/jk/kong/news/2009/05-07/1680403.shtml" target="_blank"&gt;一个网戒中心的生态系统&lt;/a&gt;
   &lt;/li&gt;
   &lt;li&gt;
      &lt;a href="http://www.chinanews.com.cn/jk/kong/news/2009/05-07/1680404.shtml" target="_blank"&gt;谁都想在网瘾治疗市场分杯羹&lt;/a&gt;
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   及其相关事件的评论。本文不是一篇客观的文章，不讨论网络是否造成危害，不讨论青少年是否容易走偏，只是纯粹的惊讶、震撼以及感同身受般的痛苦和愤怒。
&lt;/p&gt;
&lt;p&gt;
   　　这已经不算新闻了，去年就看过央视的&lt;a href="http://ng.pcgames.com.cn/xyxw/0807/1098336.html" target=
   "_blank"&gt;《战网魔》：谁把天才变成了魔兽&lt;/a&gt;。当时我对其嗤之以鼻，以为就是一个新闻广告而已，顺便对 WoW
   恶意丑化和攻击，而被治疗的对象的种种不自然行为也觉得是因为在拍广告导致的。今天重新看了相关的内容，认真了解了&amp;quot;治疗&amp;quot;的过程，我先是被吓住了，然后是觉得不可思议，这种事情怎么能堂而皇之地宣传？
&lt;/p&gt;
&lt;p&gt;
   　　尽管随便一搜索就能看到很多对&amp;quot;戒网中心&amp;quot;和杨教授的质疑甚至谩骂的文章，但不妨碍我在此继续表达质疑和指责。
&lt;/p&gt;
&lt;p&gt;
   　　我对网瘾中心毁灭人性的残酷环境和极端粗暴的治疗方法的了解恰恰是从对其吹捧的电视纪录片和纪实文学中看到的。首先是 CCTV12 《第一线》栏目播出的 12 集电视纪录片，分为《战网瘾》和《战网魔》两部，有 DVD，目录如下：
&lt;/p&gt;
&lt;blockquote&gt;
   &lt;p&gt;
      &lt;strong&gt;DVD1 战网瘾篇&lt;/strong&gt;
      &lt;br /&gt;
      　　少女的耳光和拥抱（上）
      &lt;br /&gt;
      　　少女的耳光和拥抱（下）
      &lt;br /&gt;
      　　双胞胎的爱与痛（上）
      &lt;br /&gt;
      　　双胞胎的爱与痛（下）
      &lt;br /&gt;
      　　瞧这两个&amp;quot;孕妇&amp;quot;
      &lt;br /&gt;
      &lt;br /&gt;
      &lt;strong&gt;DVD2 战网魔篇&lt;/strong&gt;
      &lt;br /&gt;
      　　爸爸的誓言和八十副拐杖
      &lt;br /&gt;
      　　九只羊和少女的呐喊
      &lt;br /&gt;
      　　黑客之王的早恋生活
      &lt;br /&gt;
      　　谁把天才变成了魔兽
      &lt;br /&gt;
      　　蒙面大侠和金童玉女（上）
      &lt;br /&gt;
      　　蒙面大侠和金童玉女（下）
      &lt;br /&gt;
      　　&amp;quot;黄河&amp;quot;保卫战
   &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   这一个个题目倒真有标题党的潜质，如果想看通过搜索题目在优酷一类的视频网站就可找到。与之相关的是刘明银所写的纪实文学《战网魔》（在线阅读：&lt;a href="http://vip.book.sina.com.cn/book/catalog.php?book=74748"
   target="_blank"&gt;新浪读书&lt;/a&gt;）。视频和文字非常详细，原话是：&amp;quot;完全原生态地纪录下来，用绝对真实的场景去感染读者和观众&amp;quot;，我的确是被震撼到了！
&lt;/p&gt;
&lt;p&gt;
   　　很无奈我必须在文章里面转载那些令我不舒服的文字，首先一个例子是：《少女的耳光和拥抱》，在书中是第一章，里面有赤裸裸的电刑和威胁，参考上文提到的&lt;a href=
   "http://www.chinanews.com.cn/jk/kong/news/2009/05-07/1680403.shtml" target="_blank"&gt;一个网戒中心的生态系统&lt;/a&gt;这篇文章可以快速了解。下面摘抄几段她刚进中心时的内容：
&lt;/p&gt;
&lt;blockquote&gt;
   &lt;p&gt;
      　　杨永信以他惯有的表情，微笑着向盟友点头，说道：&amp;quot;你们好，做好准备！&amp;quot;盟友们都明白这句话意味着什么，表情严肃起来，兴奋中包含着一种恶作剧的快感，初来乍到的盟友是无法理解这其中的奥秘的。方磊幸灾乐祸地对杨奎嘀咕说：&amp;quot;哟，还是个姐姐！看样子也得先去&amp;#39;吃饺子&amp;#39;。杨奎，你说她能吃几个？&amp;quot;
   &lt;/p&gt;
   &lt;p&gt;
      &lt;span style="COLOR: #0000ff"&gt;　　（注：&amp;quot;恶作剧的快感，幸灾乐祸&amp;quot;，真是很可怕的地方，这就是所谓的盟友？）&lt;/span&gt;
   &lt;/p&gt;
   &lt;p&gt;
      　　护士拿出一个橡皮牙垫，对少女说：&amp;quot;来，张嘴，垫在嘴里，它能保护你的牙齿和……舌头。&amp;quot;
   &lt;/p&gt;
   &lt;p&gt;
      　　&lt;span style="COLOR: #0000ff"&gt;（注：这就是所谓的吃饺子！）　&lt;/span&gt;　
   &lt;/p&gt;
   &lt;p&gt;
      　　&amp;quot;不，我没有网瘾，我不要做检查，你们让我走！&amp;quot;了解了目的，不过是一次检查，没有什么可怕，少女硬起来，自信又回来了，她确信自己没有网瘾。
   &lt;/p&gt;
   &lt;p&gt;
      　　&amp;quot;现在没有你选择的自由了，你想证明自己，就得付出一点代价。&amp;quot;杨永信说着，从小仪器上取出两个端子，一手一个，调试了电量，对着少女的太阳穴轻轻地点了一下，少女的头部马上有一点轻微的抖动，身体倒是不僵硬了，呼吸也正常了，牙却咬得很紧。
   &lt;/p&gt;
   &lt;p&gt;
      　　&lt;span style="COLOR: #0000ff"&gt;（注：太邪恶了！什么叫没有选择的自由了？什么是付出一点代价？）&lt;/span&gt;
   &lt;/p&gt;
   &lt;p&gt;
      　　&amp;quot;难受吗？&amp;quot;杨永信盯着少女的脸问道。
   &lt;/p&gt;
   &lt;p&gt;
      　　 &amp;quot;不难受！我没有网瘾！&amp;quot;少女够种，明明脑袋有点疼，为了证明她没有网瘾，她却硬说不难受。
      &amp;quot;那好，再来一下。&amp;quot;杨永信又点了一下，少女的脑袋有点受不了，颤抖了一下，可她咬紧牙关，不说难受。杨永信在两个太阳穴上同时点了一下，少女受不了了，叫起来：&amp;quot;我难受，我难受，医生，你这是用的什么东西，我的脑袋为什么这么难受？&amp;quot;
   &lt;/p&gt;
   &lt;p&gt;
      　　 &amp;quot;不是仪器的问题，是你有网瘾，有网瘾就难受。&amp;quot;杨永信进入角色，开始心理引导，&amp;quot;告诉我，你叫什么名字？&amp;quot;
   &lt;/p&gt;
   &lt;p&gt;
      &lt;span style="COLOR: #0000ff"&gt;　　（注：有网瘾就难受？这叫什么？滥用权威吧？作者真是学文的，竟然还觉得这个很神奇，电你一下你就知道了。）&lt;/span&gt;
   &lt;/p&gt;
   &lt;p&gt;
      　　 &amp;quot;我不想告诉你，我想离开这个地方，我想去找我未婚夫……&amp;quot;短暂的不舒服消失了，少女伤疤未好就忘了疼，又想叫板。
   &lt;/p&gt;
   &lt;p&gt;
      &lt;span style="COLOR: #0000ff"&gt;　　（如此痛苦且无助，竟然是伤疤未好忘了疼，作者这么多年白学中文了。也亏如此，我们才得以知道真实的场景。）&lt;/span&gt;
   &lt;/p&gt;
   &lt;p&gt;
      　　 &amp;quot;看来你有点健忘，好吧，我们接着做检查。盟友们替我记着时间，按照一般的程序是要做6个小时，每次按一秒算，每分钟60次，每小时3600次，你们算一算，6小时要做多少次？&amp;quot;
   &lt;/p&gt;
   &lt;p&gt;
      　　&amp;quot;21600次。&amp;quot;方磊抢着说。他知道，这是威慑治疗，他也经历过的。这世界上肯定没有人能经受这么多次，能挺过十几次的就算是英雄了。
   &lt;/p&gt;
   &lt;p&gt;
      　　&amp;quot;好吧，你们数着，接着来。&amp;quot;杨永信在少女的太阳穴上又点了一下，比前几次的时间略微长一点，少女的反应更强烈了一些。护士又把橡皮牙垫送到她的嘴边，她还是咬紧牙关，不张嘴。
      &amp;quot;你想想，你打你父母对不对？&amp;quot;杨永信又点了一下，换了一个问题。
   &lt;/p&gt;
   &lt;p&gt;
      　　 &amp;quot;不对……我打他，是因为他打我，他打我妈妈……医生，我难受，你还要再做吗？你真要给我做两万多次吗？&amp;quot;少女的防线开始松动了。
   &lt;/p&gt;
   &lt;p&gt;
      　&lt;span style="COLOR: #0000ff"&gt;　（注：赤裸裸的威胁，盟友也是帮凶，屈打成招就是这么来的！）&lt;/span&gt;
   &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   这一章的主人公武旭影在离开戒网中心据说立刻&amp;quot;反水&amp;quot;， 披露杨永信戒网中心实施不人道的监禁和虐待手段并非法使用电休克仪器，且对被监禁人员进行传销洗脑式的精神摧残，强迫其人员必须&amp;quot;绝对服从杨叔的命令&amp;quot;等内容。（参见：&lt;a href=
   "http://tieba.baidu.com/f?kz=504106265" target="_blank"&gt;我的小故事及在&amp;quot;杨永信网戒中心&amp;quot;的心理日记&lt;/a&gt;，链接备份：&lt;a href=
   "http://tieba.baidu.com/f?kz=504135826" target="_blank"&gt;一&lt;/a&gt;，&lt;a href="http://www.acfun.cn/html/art/20090407/26167.html" target=
   "_blank"&gt;二&lt;/a&gt; ，是否真实还需确认，但本文不客观，假不到哪儿去。）
&lt;/p&gt;
&lt;p&gt;
   　　第二个例子是那个&amp;quot;黑客之王&amp;quot;，张正是一个聪明的人，是天才，曾经跳过三级，18岁想结婚却没到年龄，不上学自己开公司，既然是黑客自然要天天接触网络，写过网络小说。当然他成了网瘾患者，被送进了网戒中心。下面是一段&amp;quot;治疗&amp;quot;的描写：
&lt;/p&gt;
&lt;blockquote&gt;
   &lt;p&gt;
      　　杨永信没有放张正走，而是带他进了治疗室，让他饱饱地吃了一顿&amp;quot;饺子&amp;quot;，张正的&amp;quot;饭量&amp;quot;很大，比谁吃的都多，最后投降得也彻底，一切都交待了，连初吻的事都主动说了出来，让喂他&amp;quot;饺子&amp;quot;的盟友们心里直乐：原来这个呼风唤雨的英雄和帝王，在11岁的时候就是个&amp;quot;情种&amp;quot;！
   &lt;/p&gt;
   &lt;p&gt;
      　　&lt;span style="COLOR: #0000ff"&gt;（注：天啊！何其悲哀！）&lt;/span&gt;
   &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   　　在纪录片里面充斥着被治疗者所谓的&amp;quot;自白、检讨&amp;quot;，家长们对网络的控诉和批判，但是我同时也注意到了其中闪烁的眼神，不自然的表情，以及说到&amp;quot;想回家&amp;quot;时候的真情流露。有人竟然跪下大喊：&amp;quot;杨叔，救救我们吧！&amp;quot;，太不可思议了，我是否可以理解为：&amp;quot;我的主宰，放我回家吧！&amp;quot;？在纪录片《把天才变成魔兽》中，有一个家长称：&amp;quot;我为他，多次求过神、拜过佛、爬过山，我心想这是什么原因啊，网络是不是把他的心灵，把他的灵魂夺走了呢？&amp;quot;。且不说拜佛爬山不能解决她&amp;quot;想知道原因&amp;quot;的问题，主要是后面的话明显不符合语境，而且语调由方言变成了普通话，明显的背词现象。
&lt;/p&gt;
&lt;p&gt;
   　　纪录片的真实本身就是作者眼中的真实，所以虚假、夸张，怎么都好，但正因为如此，才让我看到网瘾中心的真实并不是美好。
&lt;/p&gt;
&lt;p&gt;
   　　我不懂医学，我个人认为杨永信的做法已经是滥用其精神卫生领域医师的权限实施虐待（&lt;a href="http://zh.wikipedia.org/wiki/%E9%9B%BB%E7%97%99%E6%94%A3%E7%99%82%E6%B3%95" target=
   "_blank"&gt;维基：电痉挛疗法&lt;/a&gt;）；我不懂心理学，我个人认为，戒网中心是集中营式的洗脑中心，是对心理的摧残，是对人格的毁灭（参见盟友的行为和态度）；我不懂法律，我个人认为杨永信和戒网中心可能触发了极其严重的法律。从电视和书中了解到的是对人权和尊严的无情践踏，难道这在某些人眼里真的是正当的？
&lt;/p&gt;
&lt;p&gt;
   　　很多家长把孩子骗到中心，他们觉得毁灭人格是好事，一个&amp;quot;乖巧听话&amp;quot;的孩子就是他们想要的。解决网络成瘾更关键的因素是家庭和社会的环境，但是这种话对那些家长说是对牛弹琴。还有比把所有责任归于网络和孩子，再对他们进行洗脑教育更省心省事的方法吗？正是这种不负责任的态度才是造成问题的根源！换句话说，凭什么这些父母可以这样为所欲为？如果是父母错了，谁又来保证孩子的权益？
&lt;/p&gt;
&lt;p&gt;
   　　如果说家长只是无知的罪恶，杨永信就是彻底的邪恶，我真想知道如果他也在电击治疗室测试&amp;quot;21600次&amp;quot;又将是一副什么丑态！
&lt;/p&gt;
&lt;p&gt;
   　　再说 CCTV
   等宣传、支持者，只看到一个个原本&amp;quot;暴躁乖戾&amp;quot;的&amp;quot;网瘾患者&amp;quot;进了电击治疗室都老老实实，就大肆宣传，真是愚昧。而且很大可能这所谓的纪录片是拿了钱做广告，那就更加体现出其冷漠和恶毒。如果放任这种&amp;quot;只要能治好就可以下猛药&amp;quot;的强盗逻辑，还不知会有多少悲剧。
&lt;/p&gt;
&lt;p&gt;
   　　杨永信网瘾戒治模式被列为全国重点推广项目，杨永信也获得了2008年度国务院政府特殊津贴（来源：&lt;a href="http://www.sd.xinhuanet.com/sdsq/2009-03/13/content_15941408.htm"&gt;新华网&lt;/a&gt;），
   社会承认了这种行为，我觉得很可怕。我知道现代社会面临种种难题，简单粗暴的方法只能表面压制而不能根本解决，承认这种模式只能说明这个社会这太急功近利了。
&lt;/p&gt;
&lt;p&gt;
   　　我承认网络成瘾是有问题存在，有了问题一定要想办法解决，但是，我坚决反对这种方式以及在这种方式下面潜藏的急功近利。网络和个人、家庭和社会，都应该对这个问题承担责任并付出努力。而杨永信模式及其戒网中心，是畸形的产物，或许是利益催生的，无管是出于什么目的而产生的，都不能再这样下去了。
&lt;/p&gt;
&lt;p&gt;
   　　我期望心理咨询和治疗能在国内健康规范的发展起来，这对解决问题才是有帮助的；新闻媒体能正确引导，而不是收了谁的钱就说谁好；中小学教育要多加引导，而不是在教科书里面教小孩子怎么注册网页游戏。
&lt;/p&gt;
&lt;p&gt;
   　　后记：这篇文章写了好几天，开始的时候只是对&amp;quot;杨教授&amp;quot;的愤怒。可是越写到越觉得沉重，问题还是存在，我也想不出什么好办法。不得已，只好专心指责和批评。如同文中所说，这是整个社会都要承担的问题，不能因为整个社会都要承担，个体就不再思考，相信越多的人关注和思考，问题会越早缓解直至解决。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-5940005685168567424?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/5940005685168567424/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/05/blog-post.html#comment-form' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/5940005685168567424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/5940005685168567424'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/05/blog-post.html' title='可怕的网瘾治疗'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-7951070491921637221</id><published>2009-04-25T17:58:00.001+08:00</published><updated>2009-04-26T01:39:22.475+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='BlackBerry'/><title type='text'>Google Sync for BlackBerry 试用</title><content type='html'>&lt;p&gt;
   　　测试环境：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;BlackBerry 8820 ROM v4.5.0.124
   &lt;/li&gt;
   &lt;li&gt;Google Sync v0.5.15(1017)，Plantform: Blackberry-43
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   　　进行尝试前，请先&lt;span style="COLOR: #ff0000"&gt;备份&lt;/span&gt; Gmail Contacts 和 BlackBerry 上的 Address Book。
&lt;/p&gt;
&lt;p&gt;
   　　安装了 Google Mobile App 后在无聊状态下安装了 Sync，然后一不小心就开始了同步，于是干脆仔细尝试一下这个功能。
&lt;/p&gt;
&lt;p&gt;
   　　下面是我的使用体验和一些细节方面的实验。首先是 Calendar 方面：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;因为 Google Calendar 可以有多个日历，但是 BlackBerry 上是一个整体，所以在同步的时候可以选择同步 Google Calendar 的哪一些日历（比如日历A，B，C），并可以设定把 BlackBerry 上的日历同步到 Google
   Calendar 上的哪一个日历（比如日历A）。
   &lt;/li&gt;
   &lt;li&gt;当删除 BlackBerry 上原本属于日历 B，C 的日程时，再次同步并不会同步回来，并且 Google Calendar 上相关的日程也不会更改，但是涉及到日历 A 的更改则会完全同步。
   &lt;/li&gt;
   &lt;li&gt;如果设定了 BlackBerry 上的一些提醒，比如在 Address Book 中的生日，则也会同步到 Google Calendar（并且是重复每年）。
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　下面重点是尝试 Contacts 的同步：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;第一次同步没有清空我手机上的联系人，所有信息没有丢失。（注：手机上Address Book开启了&amp;quot;Allows Duplicate Names&amp;quot;。）因为 Gmail Contacts
   可以添加非常多的信息字段，所以资料在网络端是完整的。没有出现乱码问题。
   &lt;/li&gt;
   &lt;li&gt;第一次同步过后，联系人肯定有很多重复的，我在 PC 上进行了调整，使用 Gmail Contacts 的合并联系人的功能，然后再同步回去。
   &lt;/li&gt;
   &lt;li&gt;同步的字段有：Title, First, Last, Job Title, Company, Email, Work, Home, Mobile, Pager, Fax, Other, Work Address, Home Address,
   Notes。涉及到生日的属于 Calendar 的同步范围。不在上述字段的内容不会被同步，比如只修改联系人的头像，在同步时 Sync 也会提示有一个更新，但头像内容并没有同步。
   &lt;/li&gt;
   &lt;li&gt;Gmail Contacts 的字段比较自由，比如可以添加几乎任意个 Mobile 号码，但是在 BlackBerry 上 Mobile 字段只能有一个。所以当 Gmail Contacts 的 Mobile 有多个号码时，同步到 BlackBerry
   上的只有第一个。同理，在 BlackBerry 上 Work，Home 只能有 2 个，Email 只能有 3 个。
   &lt;/li&gt;
   &lt;li&gt;有一个似乎是 Bug：当一个联系人电话号码比较多，可能是因为 Gmail Contacts 上电话号码字段排序较乱或者和 BlackBerry 相同字段冲突的时候，不能完全同步所有电话号码。 这个时候可以尝试完全重新同步。
   &lt;/li&gt;
   &lt;li&gt;我有 300 个左右的联系人，第一次同步很耗时间和流量，之后不论是小修改还是清空后完全同步则都快很多。
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　不论是 Calendar 或者 Contacts，如果在同步中出现了问题，比如上面提到的无法同步所有电话号码时，可以尝试完全重新同步。在 Google Sync 中选择 Options &amp;gt; Menu &amp;gt; Reset Calendar/Contacts
   Sync，注意这会把 BlackBerry 上的数据&lt;span style="COLOR: #ff0000"&gt;清空&lt;/span&gt;。然后再重新同步。
&lt;/p&gt;
&lt;p&gt;
   　　如果不进行这一步，而是通过其他方式清空了 BlackBerry 上的数据，比如 Address Book，这个时候进行同步，没准就把 Gmail Contacts 清空了。
&lt;/p&gt;
&lt;p&gt;
   　　相关内容：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;写写改改的 Belen 使用的是 Windows Mobile 系统：&lt;a href="http://blog.ibelen.com/2009/03/gmail-activesync.html"&gt;成功同步Gmail联系人到手机上&lt;/a&gt;。
   &lt;/li&gt;
   &lt;li&gt;可能吧的 Jason Ng 使用的是 iPhone：&lt;a href="http://www.kenengba.com/post/728.html" rel="bookmark" title="Google Sync试用感受：失望"&gt;Google
   Sync试用感受：失望&lt;/a&gt;。
   &lt;/li&gt;
   &lt;li&gt;cnBeta 上的使用&lt;a href="http://www.cnbeta.com/articles/76713.htm" target="_blank"&gt;简易指南&lt;/a&gt;，包括一些 SyncML 的介绍。
   &lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-7951070491921637221?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/7951070491921637221/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/04/google-sync-for-blackberry.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7951070491921637221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7951070491921637221'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/04/google-sync-for-blackberry.html' title='Google Sync for BlackBerry 试用'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-8092497993834057733</id><published>2009-04-23T17:44:00.003+08:00</published><updated>2009-04-23T22:00:37.780+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Greasemonkey'/><category scheme='http://www.blogger.com/atom/ns#' term='Gmail'/><title type='text'>推荐 GM 脚本：Folders4Gmail</title><content type='html'>&lt;p&gt;
   　　这个月截止到今天可以说是我更新最少的一个月了，当忙起来的时候，能静下心写几篇日志也成了奢侈的享受。Folders4Gmail 是很有名的脚本，今天它给我带来了非常愉悦的体验:)
&lt;/p&gt;
&lt;p&gt;
   　　我有轻微的强迫心理，对信息的收集和组织有洁癖。今天，当我打开 Gｍail 时，心里突然升起一股难以抑制的愤怒，因为这一瞬间我想到：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;我有滚动一页都显示不下的凌乱的标签；
   &lt;/li&gt;
   &lt;li&gt;邮箱里面有无数只有附件且标题毫无意义的邮件（比如 hello）；
   &lt;/li&gt;
   &lt;li&gt;更不要提那些连附件名也毫无意义（比如 新建文本文档）的邮件。
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   　　于是我花了整个下午来整理后两种邮件，将这些邮件打包后转发给自己，或者下载附件重命名后再发送给自己。真希望Gmail可以提供邮件注释的功能，或者提供修改原始邮件的功能。
&lt;/p&gt;
&lt;p&gt;
   　　而第一个问题的解决方法就是使用标题提到的 &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/748"&gt;Greasemonkey&lt;/a&gt; 脚本 &lt;a href=
   "http://userscripts.org/scripts/show/8810"&gt;Folders4Gmail&lt;/a&gt;。我也希望 Gmail 可以提供可以设定某些标签隐藏的功能。在 &lt;a href=
   "http://lifehacker.com/"&gt;L&lt;/a&gt;&lt;a href="http://lifehacker.com/" target="_blank"&gt;ifehacker&lt;/a&gt; 发布的 &lt;a href=
   "https://addons.mozilla.org/en-US/firefox/addon/6076" target="_blank"&gt;Better Gmail 2&lt;/a&gt; 中含有这个脚本，我倒不想安装那么多功能。
&lt;/p&gt;
&lt;p&gt;
   　　在安装了 Folders4Gmail
   后，就可以给标签分类了，使用方法只要重命名原本的标签即可。比如将原来的&amp;quot;项目1&amp;quot;，&amp;quot;项目2&amp;quot;，&amp;quot;项目3&amp;quot;，重命名为&amp;quot;项目/项目1&amp;quot;，&amp;quot;项目/项目2&amp;quot;，&amp;quot;项目/项目3&amp;quot;就会发现在标签栏多出一个可以折叠的标签目录&amp;quot;项目&amp;quot;。
&lt;/p&gt;
&lt;p&gt;
   　　需要注意的是，修改了标签名以后，原本的 Filter 可能需要修改。另外，由于标签长度变长了，原来&lt;a href="http://arccos.blogspot.com/2008/06/gmail.html"&gt;查看 Gmail
   中所有未加标签的邮件&lt;/a&gt;的方法就不能用了，在 basic view 下提示&amp;quot;Request-URI Too Large&amp;quot;，在 standard view 下提示：&amp;quot;the system encountered a problem
   (#6414)&amp;quot;。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-8092497993834057733?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/8092497993834057733/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/04/gm-folders4gmail.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/8092497993834057733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/8092497993834057733'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/04/gm-folders4gmail.html' title='推荐 GM 脚本：Folders4Gmail'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-6706891551615506112</id><published>2009-04-17T11:42:00.000+08:00</published><updated>2009-04-17T11:42:16.645+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WoW'/><title type='text'>9C 失去 WoW 代理权</title><content type='html'>&lt;p&gt;
   　　已经不是什么新闻。
&lt;/p&gt;
&lt;p&gt;
   　　WoW 代理权易主，需要转移数据，这不是一天两天的事儿，目前看来 WLK 更是遥遥无期，至少 6 月之前是没什么希望了。
&lt;/p&gt;
&lt;p&gt;
   　　虽然还是玩不了 WLK，但是我还是很高兴，只因为我不喜欢 9C。我相信在运营游戏、审批资料片、利益分配中有种种困难，但这正是代理商要解决的，而不是要玩家负责。且不说 TBC 特别迟，WLK
   忘了开，就是服务器一天一掉线硬是逼迫工会转服，把我所在的服务器变成鬼服，我就感觉特别气愤。
&lt;/p&gt;
&lt;p&gt;
   　　没有 WoW 的 9C 会不会就倒了，我也管不着，反正 FIFA 和劲舞团我也不玩。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-6706891551615506112?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/6706891551615506112/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/04/9c-wow.html#comment-form' title='5 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/6706891551615506112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/6706891551615506112'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/04/9c-wow.html' title='9C 失去 WoW 代理权'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-2052336556881832707</id><published>2009-04-04T03:47:00.003+08:00</published><updated>2009-04-07T14:53:20.654+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Python 3 中网页获取的长度问题</title><content type='html'>&lt;blockquote style="MARGIN-RIGHT: 0px" dir="ltr"&gt;
   &lt;p&gt;
      2009-04-07Up: 更新到 Python 3.1a2，发现似乎问题解决了...
   &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   　　我在使用 urlopen(...).read() 读取某一个论坛网页的时候，发现获取的内容不全，最为奇怪的是，获取的内容是这个网页最后的部分。给我的感觉是分配给字符串的空间不够，导致读取超过长度限制的时候就把前面的&amp;quot;冲掉&amp;quot;了。但是 Python
   的字符串是任意长的，不应该出现这个问题。
&lt;/p&gt;
&lt;p&gt;
   　　我用同一个程序尝试读取其他网页，包括相似的论坛都没有问题。同时，如果我设置一个很大的值，比如 read(100000)，则也能完整读取这个网页。
&lt;/p&gt;
&lt;p&gt;
   　　后来我仔细查了一下 HTTP Headers，发现该网页 Response Headers 中有如下信息：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;Content-Encoding : gzip
   &lt;/li&gt;
   &lt;li&gt;没有 Transfer-Encoding : chunked 项
   &lt;/li&gt;
   &lt;li&gt;没有 Content-Length 域的值
   &lt;/li&gt;
   &lt;li&gt;有 Connection : Close 项
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   　　我不太懂 HTTP 协议是怎样规定的，我猜测因为这个网页的服务器没有告之文件大小，所以 Python 在读取的时候也无法预先得之大小，因此在读取的每次读一个新块就会把前一个覆盖。而当我指定一个读取大小时，Python 就会按照连接是否断开来判断是否读取结束。
&lt;/p&gt;
&lt;p&gt;
   　　以上是我的猜测，因为这个折腾了半天，也没有去查看源代码是如何实现的。希望有经验的朋友能告诉我对不对，多谢！
&lt;/p&gt;
&lt;p&gt;
   　　另外，使用标准库中的 urllib.request 应该能自动处理 gzip。
&lt;/p&gt;
&lt;p&gt;
   　　环境：Python 3.1a1。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-2052336556881832707?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/2052336556881832707/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/04/python-3.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2052336556881832707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2052336556881832707'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/04/python-3.html' title='Python 3 中网页获取的长度问题'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-1802461251709040521</id><published>2009-03-29T00:57:00.000+08:00</published><updated>2009-03-30T00:59:31.227+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Python 3 的标准输出缓冲</title><content type='html'>&lt;p&gt;
   　　使用 IDLE 运行 Python 程序的时候输出是即时的，但是在命令行下调用 .py 文件的时候，Python 对标准输出默认是有缓冲管理的。也就是说，在程序中尽管 print 试图输出好几行，但是在终端上并没有显示。只有当输出内容足够多的时候才会一起显示。
&lt;/p&gt;
&lt;p&gt;
   　　之前在配置 Notepad++ 的插件 NppExec 时就遇到了这个问题（见&lt;a href="http://arccos.blogspot.com/2009/03/notepad-python.html" target="_blank"&gt;使用 Notepad++
   编辑运行 Python 程序&lt;/a&gt;最后一部分）。
&lt;/p&gt;
&lt;p&gt;
   　　Python 提供一个 -u 参数，使用它可以实现无缓冲的 IO（详细说明可以查看 Python --help）。
&lt;/p&gt;
&lt;p&gt;
   　　Python 3.0 版本的 -u 参数似乎有一个 bug： &lt;a href="http://bugs.python.org/issue4705" target="_blank"&gt;Issue4705&lt;/a&gt; (&lt;a href=
   "http://svn.python.org/view?view=rev&amp;amp;revision=68451" target="_blank"&gt;Revision 68451&lt;/a&gt;)。安装 3.1 应该就没问题了。
&lt;/p&gt;
&lt;p&gt;
   　　不过即使使用了 -u 参数，也是指行缓存为 0，每当遇到一个换行符的时候才会输出。如果想在任意地方刷新缓冲区以达到立即输出的目的，需要在 print() 后使用 sys.stdout.flush()。（不知道还有没有更好的方法？）
&lt;/p&gt;
&lt;p&gt;
   　　这里谈的是标准输出的缓冲，对于其他对象，比如文件，也会涉及到类似的输入输出缓冲的问题。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-1802461251709040521?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/1802461251709040521/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/03/python-3.html#comment-form' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1802461251709040521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1802461251709040521'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/03/python-3.html' title='Python 3 的标准输出缓冲'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-755239365247362741</id><published>2009-03-12T00:50:00.000+08:00</published><updated>2009-03-12T00:50:41.432+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Python 3.0 处理中文路径的问题</title><content type='html'>&lt;p&gt;
   　　今天我写了一个处理 Google Reader API 的 Python 模块，当我在其他程序中 import 这个模块的时候，第一次运行（在生成 pyc 文件之前）顺利通过，第二次运行就失败，显示如下错误：
&lt;/p&gt;
&lt;blockquote&gt;
   &lt;p&gt;
      &lt;span style="FONT-FAMILY: Courier New"&gt;Traceback (most recent call last):
      &lt;br /&gt;
      　File &amp;quot;test.py&amp;quot;, line 1, in &amp;lt;module&amp;gt;
      &lt;br /&gt;
      　　import readerapi
      &lt;br /&gt;
      UnicodeDecodeError: &amp;#39;utf8&amp;#39; codec can&amp;#39;t decode bytes in position 36-37: invalid data&lt;/span&gt;
   &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   　　但是我尝试在 Notepad++ 中将文件编码进行改变：ANSI、带 BOM 的 UTF-8、不带 BOM 的 UTF-8，始终都是失败。
&lt;/p&gt;
&lt;p&gt;
   　　后来我尝试把文件从桌面（这个路径含有空格和中文）转移到一个简单的路径，运行就没有问题。
&lt;/p&gt;
&lt;p&gt;
   　　折腾了半天未果，怀疑是 3.0.1 有 bug，下载安装 Python 3.1 alpha 1 就好了=.=!
&lt;/p&gt;
&lt;p&gt;
   　　
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-755239365247362741?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/755239365247362741/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/03/python-30_12.html#comment-form' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/755239365247362741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/755239365247362741'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/03/python-30_12.html' title='Python 3.0 处理中文路径的问题'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-8741186994291875926</id><published>2009-03-10T18:40:00.002+08:00</published><updated>2009-03-14T16:18:26.511+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Notepad++'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>使用 Notepad++ 编辑运行 Python 程序</title><content type='html'>&lt;p&gt;
   　　&lt;a href="http://notepad-plus.sourceforge.net/tw/site.htm" target="_blank"&gt;Notepad++&lt;/a&gt; 是一个开源的文本编辑器，功能强大而且使用方便。编辑和调试 Python
   程序使用什么编辑器或者 IDE 不同人有不同见解。在不考虑使用调试工具的情况下，Vim 或者 Emacs 用户自然可以无视其他编辑器，不过在 Windows 环境下，使用 Notepad++ 之类的编辑器也是很好的选择。
&lt;/p&gt;
&lt;p&gt;
   　　我是在 PortableApps.com 上下载的 &lt;a href="http://portableapps.com/apps/development/notepadpp_portable" target="_blank"&gt;Notepad++
   Portable&lt;/a&gt;，它的好处是可以在每次关闭程序的时候把所需的配置文件单独保存，省却每台机器上重新配置的烦恼。
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;Tab长度和空格转换&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;　　&lt;/strong&gt;因为 Python 对缩进要求严格，我们将 Tab 设置成4个空格，在 &amp;quot;设置－＞首选项－＞编辑－＞制表符设置&amp;quot; 中修改。
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;语法高亮&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;　　&lt;/strong&gt;只要正确设置了扩展名，Notepad++ 就会自动识别语言并进行语法高亮。如果对高亮的颜色或者字体不满意，在 &amp;quot;设置-&amp;gt;语言格式设置&amp;quot; 中可以进行修改。
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;自动完成&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
   　　Notepad++ 也提供了自动完成和输入提示功能，在 &amp;quot;设置-&amp;gt;首选项-&amp;gt;备份与自动完成&amp;quot; 中可以设置。Python 的自动完成所需的文件在安装的时候自带了，存放在
   &amp;quot;YOUR_NPP_DIR\plugins\APIs&amp;quot;（详见官方FAQ：&lt;a href="http://notepad-plus.sourceforge.net/uk/auto-completion-HOWTO.php" target=
   "_blank"&gt;Auto-completion&lt;/a&gt;）。默认的快捷方式是 Ctrl+Space 和 Ctrl+Enter，可能和输入法的快捷键冲突，不过 Notepad++ 的所有快捷键都可以自定义。
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;运行程序&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
   　　点击 &amp;quot;运行－＞运行&amp;quot; (默认快捷键是 F5 )，在弹出的菜单中输入：
&lt;/p&gt;
&lt;blockquote&gt;
   &lt;p&gt;
      cmd /k C:\Python30\python.exe &amp;quot;$(FULL_CURRENT_PATH)&amp;quot; &amp;amp; PAUSE &amp;amp; EXIT
   &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   选择 &amp;quot;保存&amp;quot;，就可以给这条命令设置一个快捷键并起一个名字，比如叫 &amp;quot;Run Python&amp;quot;。以后运行直接按自定义的快捷键就可以了。注意如果想修改这个快捷键，可以在 &amp;quot;设置－＞管理快捷键－＞Run
   Commands&amp;quot; 中修改。还有几点说明：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;如果想修改这条命令，目前只能通过修改 shortcuts.xml 文件，这个文件保存在 Notepad++ 的配置文件中，可能在 Notepad++ 的目录，也可能在 Documents and Settings 下的 Application Data 内。
   &lt;/li&gt;
   &lt;li&gt;$(FULL_CURRENT_PATH) 的含义是当前文件的完整路径，这是 Notepad++ 的宏定义，更多的相关宏可以参见官方FAQ：&lt;a href="http://notepad-plus.sourceforge.net/uk/run-HOWTO.php"
      target="_blank"&gt;Run external tools&lt;/a&gt;。注意要用引号括起来，防止路径中间有空格。
   &lt;/li&gt;
   &lt;li&gt;直接执行 python.exe 在运行结束后窗口会自动关闭，所以要用 cmd 来执行。（在 Python 2.5 似乎有所不同，但是 3.0 需要这样设置。）
   &lt;/li&gt;
   &lt;li&gt;cmd /k 的含义是执行后面的命令，并且执行完毕后保留窗口。&amp;amp; 是连接多条命令。PAUSE 表示运行结束后暂停，等待一个任意按键。EXIT 表示关闭命令行窗口。如果使用 cmd /c 就可以省掉 EXIT 了。
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   &lt;strong&gt;更多 Plugin&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
   　　因为 Notepad++ 支持插件扩展，所以可以使用很多有用的插件（&lt;a href="http://notepad-plus.sourceforge.net/uk/download.php" target=
   "_blank"&gt;下载页面&lt;/a&gt;有插件列表）。比如有一个插件：NppExec，可以在 Notepad++ 中增加一个 Console 窗口，使得运行命令和脚本更加方便。可以通过这个插件设置 Python 的运行命令。
&lt;/p&gt;
&lt;p&gt;
   　　不过这个插件有个问题是只有程序运行结束了才会返回输出结果，这样就没法实时观察程序的运行了。不知道有没有好的解决方法？
&lt;/p&gt;
&lt;blockquote&gt;
   &lt;p&gt;
      2009-03-14Up:
   &lt;/p&gt;
   &lt;p&gt;
      　　关于输出不及时问题，可以通过刷新 stdout 缓冲来解决。
   &lt;/p&gt;
&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-8741186994291875926?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/8741186994291875926/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/03/notepad-python.html#comment-form' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/8741186994291875926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/8741186994291875926'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/03/notepad-python.html' title='使用 Notepad++ 编辑运行 Python 程序'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-1538391658777869058</id><published>2009-03-09T18:38:00.002+08:00</published><updated>2009-03-09T18:38:18.547+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Python 3.0 中的编码和字符串</title><content type='html'>&lt;p&gt;
   　　前几天决定尝试下 Python 3.0，安装的版本是 3.0.1。不出意外，原来的代码都不能用了。
&lt;/p&gt;
&lt;p&gt;
   　　我想要修改的是&lt;a href="http://arccos.blogspot.com/2008/10/python.html"&gt;使用 Python 登录网站&lt;/a&gt;中的程序，经过把 print
   语句改成函数，重新查找标准库的用法，修改字符串的表达方式这些常规的修改，终于不提示语法错误了。
&lt;/p&gt;
&lt;p&gt;
   　　不过我运行程序，却发现没有登录成功。经过调试，发现在发送登录请求的时候，编码出了问题。论坛需要 GBK，而 Python 使用 urlencode 编码得出的是 UTF-8。
&lt;/p&gt;
&lt;p&gt;
   　　在 Python 3 中取消了原来的 unicode 类型，现在的字符串类型为 str，并且存放的就是 unicode 字符串。这样，在 Python
   程序内部就不用为各种字符编码困扰了。现在使用字符串，只要保证在与外界交互，即读取（比如赋值、从文件读、从网络读）和输出（比如存储文件、发送信息）的时候使用正确的编码即可。但是这样也就造成原来很多程序都要重新写。
&lt;/p&gt;
&lt;p&gt;
   　　字符串经过具体编码，就不再是 str 了，而是 bytes 类型。对一个 str 可以用个 encode 编码成 bytes 数据，而一个经过编码的 bytes 数据可以通过 decode 解码成 unicode 字符串。在 &lt;a href=
   "http://docs.python.org/dev/3.0/whatsnew/3.0.html#text-vs-data-instead-of-unicode-vs-8-bit" target="_blank"&gt;Python Docs: What&amp;#39;s New
   In Python 3.0 : Text Vs. Data Instead Of Unicode Vs. 8-bit&lt;/a&gt; 中有详细说明。
&lt;/p&gt;
&lt;p&gt;
   　　在读取文件的时候，默认是以 text mode 打开的，所以读取的资料直接可以存放到 str 字符串中，同时在 open 的时候可以指定编码系统。而如果文件不是文本，则需要在 open 的时候使用 &amp;quot;b&amp;quot;以 binary mode 打开。
&lt;/p&gt;
&lt;p&gt;
   　　回到之前那个论坛登录程序，我使用标准库自带的 urlencode 将个人用户名和密码等参数进行 URL 编码，而由于 Pyhton 字符串机制发生根本变化，这个函数默认将文字（比如用户名是中文）按照 UTF-8 进行编码。而论坛需要的是 GBK
   编码，所以造成无法登录。
&lt;/p&gt;
&lt;p&gt;
   　　通过查看标准库相关的代码：Lib\urllib\parse.py 文件中的 urlencode 函数可以看出，它默认使用的就是 UTF-8，也没有提供可选的编码参数。所以要想实现 GBK 编码，只能放弃使用 urlencode 函数，直接使用 quote_plus
   来编码。不过就要手动实现把编码后的参数用&amp;quot;&amp;amp;&amp;quot;连接起来了。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-1538391658777869058?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/1538391658777869058/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/03/python-30.html#comment-form' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1538391658777869058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1538391658777869058'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/03/python-30.html' title='Python 3.0 中的编码和字符串'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-7861840432286422413</id><published>2009-02-28T22:43:00.002+08:00</published><updated>2009-02-28T22:43:18.282+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TeamViewer'/><title type='text'>如何将 TeamViewer 从商业试用版改回个人免费版</title><content type='html'>&lt;p&gt;
   　　如果在安装过程中选择了商用环境，那么 TeamViewer 安装结束后就是试用版，在使用一段时间后过期。
&lt;/p&gt;
&lt;p&gt;
   　　因为 TeamViewer 的 ID 是根据包括 MAC 地址在内的硬件信息生成的，所以即使重装系统，依然会生成同一个 ID，那么原本是商用的 ID 在重新安装的时候就会跳过&amp;quot;Environment&amp;quot;这一个选择页面。
&lt;/p&gt;
&lt;p&gt;
   　　从原理上，修改 MAC 地址可以欺骗软件认为换了一台机器，重新生成一个 ID，不过这个我没有尝试成功，我想可能是没有把系统已安装的信息清理干净，软件没有重新扫描硬件信息。
&lt;/p&gt;
&lt;p&gt;
   　　下面介绍一个简单的方法，也是官方提供的，不过&amp;quot;隐藏&amp;quot;得比较深。
&lt;/p&gt;
&lt;p&gt;
   　　在菜单上选择 Extras -&amp;gt; Your trial period，这个选项只有试用版才有，免费版是没有的。然后会弹出一个窗口，选择 extend the trial period，这个时候重新选择 I use TeamViewer for .. 下面的
   personal，输入 Email 即可，最后那个 newsletter 的选项可以去掉，点击 continue 即可。
&lt;/p&gt;
&lt;p&gt;
   　　其实这个网页为：
&lt;/p&gt;
&lt;blockquote style="MARGIN-RIGHT: 0px" dir="ltr"&gt;
   &lt;p&gt;
      http://www.teamviewer.com/integrated/trial.aspx?ID=&lt;span style="COLOR: #ff0000"&gt;你的ID&lt;/span&gt;&amp;amp;IC=&lt;span style=
      "COLOR: #ff0000"&gt;你的IC&lt;/span&gt;
   &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   　　分析一下软件生成的日志文件可以知道这个 IC 相当于一个校验码，应该是先于 ID 在本地产生的。
&lt;/p&gt;
&lt;p&gt;
   　　如果按照上面的方法，被告之验证错误，无法点击 continue，这个时候可能是服务器那边有问题，稍等刷新即可。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-7861840432286422413?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/7861840432286422413/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/02/teamviewer_28.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7861840432286422413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7861840432286422413'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/02/teamviewer_28.html' title='如何将 TeamViewer 从商业试用版改回个人免费版'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-4275936689197485576</id><published>2009-02-28T16:45:00.001+08:00</published><updated>2009-02-28T22:47:19.157+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TeamViewer'/><title type='text'>TeamViewer：简单好用的远程控制软件</title><content type='html'>&lt;p&gt;
   　　Linux 下远程终端操作和本地没什么区别，但是 Windows 环境下就对远程控制／远程桌面软件有很大的需求。
&lt;/p&gt;
&lt;p&gt;
   　　这类软件对网络环境的要求很高，比如在局域网内我觉得使用 Windows 自带的远程桌面最方便；对使用者也有一定的要求，在公网下最方便的应属 QQ 远程协助。
&lt;/p&gt;
&lt;p&gt;
   　　我有一台机器处于教育网，一台机器处于不能修改路由设置的局域网，一般软件很难胜任这种&amp;quot;糟糕&amp;quot;的网络环境，经过试用，我觉得 TeamViewer（&lt;a href="http://www.teamviewer.com/" target=
   "_blank"&gt;主页&lt;/a&gt;） 非常不错：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;使用方便，应用范围很强，可以说只要计算机能连上 Internet，就可以远程控制。
   &lt;/li&gt;
   &lt;li&gt;个人非商业使用是完全免费的！
   &lt;/li&gt;
   &lt;li&gt;提供免安装版（安装以后有更多的功能） 。
   &lt;/li&gt;
   &lt;li&gt;有 Mac 版本。
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   　　下面我详细介绍安装的过程，因为如果不小心把用户类型选择成商用，就变成试用版了，不太容易再改成个人版。
&lt;/p&gt;
&lt;p&gt;
   　　从官方网站上&lt;a href="http://www.teamviewer.com/download/index.aspx" target="_blank"&gt;下载&lt;/a&gt;（&lt;a href=
   "http://www.teamviewer.com/download/portable.aspx" target="_blank"&gt;便携版&lt;/a&gt;）后运行，我下载的是普通的安装版，进入第一个选择界面如下：
&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt;
   &lt;a href="http://picasaweb.google.com/lh/photo/p1gX0hN3uYqH7J1zE0roNg?feat=embedwebsite"&gt;&lt;img src=
   "http://lh3.ggpht.com/_1NZOc1C8JjM/Sajm1IS-D1I/AAAAAAAADOE/gbQUBAn3Nu4/s800/TeamViewer_01.png" height="383" width="503" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
   　　第一项&amp;quot;Install&amp;quot;是将软件安装到计算机中，第二项&amp;quot;Run&amp;quot;相当于免安装，想立刻使用的可以先试试这项，没有管理员权限时也可以使用。注意，这里的免安装并不是便携，因为它仍要写注册表和配置文件。如果选择&amp;quot;Install&amp;quot;，不妨把下面的高级设置选上，可以多设置一些参数。
&lt;/p&gt;
&lt;p&gt;
   　　点击&amp;quot;Next&amp;quot;进入下一个页面，这一步选择非常重要。
&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt;
   &lt;a href="http://picasaweb.google.com/lh/photo/gcqIYC0G2RLp1pR45o3MBA?feat=embedwebsite"&gt;&lt;img src=
   "http://lh5.ggpht.com/_1NZOc1C8JjM/Sajm1L_YGfI/AAAAAAAADOM/duODRYX_DTM/s800/TeamViewer_02.png" height="383" width="503" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
   　　第一项&amp;quot;company&amp;quot;是指商业应用，选择以后软件就是试用版，有使用期限，过期可以申请延长和更改许可（但是我没有试过，只是看到菜单上有这一项）。而且一旦选定，即使重装系统安装的时候也不会再出现这个页面了。所以我们选择第二项&amp;quot;personal&amp;quot;，这是免费的，而且功能也不少，只是在每次连接结束后会弹出一个提示你不能商用的窗口。
&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt;
   &lt;a href="http://picasaweb.google.com/lh/photo/gzcQWBipjjcjOMvIi-jwRw?feat=embedwebsite"&gt;&lt;img src=
   "http://lh6.ggpht.com/_1NZOc1C8JjM/Sajm1WuM9tI/AAAAAAAADOU/K91QosdGhww/s800/TeamViewer_03.png" height="383" width="503" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
   　　这步不用多说，勾选上即可，因为上面选择的是个人非商用，所以这里第二项就是保证在本台机器上是个人使用。
&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt;
   &lt;a href="http://picasaweb.google.com/lh/photo/O1qpPwJEeHN6ZpzbQ6cWSw?feat=embedwebsite"&gt;&lt;img src=
   "http://lh5.ggpht.com/_1NZOc1C8JjM/Sajm1fCrUJI/AAAAAAAADOc/awkGvYScTDw/s800/TeamViewer_04.png" height="383" width="503" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
   　　这一步是选择是否开机启动服务，对于要远程控制的机器，肯定是要选择随 Windows 启动。只有这样才能使用远程重启的功能。下面要求输入的密码就是远程登陆所需要的密码。当然，选择&amp;quot;Normal installation&amp;quot;之后也可以很方便的设置成随
   Windows 启动。
&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt;
   &lt;a href="http://picasaweb.google.com/lh/photo/3rkuD6ixnUS3mK6hKlDrpA?feat=embedwebsite"&gt;&lt;img src=
   "http://lh5.ggpht.com/_1NZOc1C8JjM/Sajm1tfGr5I/AAAAAAAADOk/kSgas6aPN5I/s800/TeamViewer_05.png" height="383" width="503" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
   　　最后是询问是否安装 VPN，不知道这是什么的可以先不安装，之后在软件的选项中可以随时安装卸载。
&lt;/p&gt;
&lt;p&gt;
   　　再之后就是常规的安装步骤，一路 Next 下去即可。
&lt;/p&gt;
&lt;p&gt;
   　　安装完之后（或者在第一步点击了 Run），就可以运行了，保证计算机联网就可以获得一个九位 ID 和一个四位 Password，显示在&amp;quot;Wait for session&amp;quot;中，如下：
&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt;
   &lt;a href="http://picasaweb.google.com/lh/photo/jy-cf9QP_d47jdckSsanKQ?feat=embedwebsite"&gt;&lt;img src=
   "http://lh5.ggpht.com/_1NZOc1C8JjM/SajvgIlsQEI/AAAAAAAADOs/TPV3fNJ1OyA/s800/TeamViewer_06.png" height="401" width="593" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
   　　这个 ID 是根据机器的硬件信息（这个信息至少包含了MAC地址）生成的，所以即使重装系统，ID 也不会变化。而四位的密码则是每次随机生成的，如果对密码进行了自定义，则会显示&amp;quot;Predefined&amp;quot;。
&lt;/p&gt;
&lt;p&gt;
   　　如果另外还有一台机器也安装了 TeamViewer，在&amp;quot;Create session&amp;quot;中输入对方机器的 ID，并且经过密码认证，就会连接到远程桌面。
&lt;/p&gt;
&lt;p&gt;
   　　连接上以后的设置就比较普通了，比如画面质量、远程屏幕分辨率、是否显示桌面等等。文件传输也非常方便。
&lt;/p&gt;
&lt;p&gt;
   　　使用远程桌面的控制面板：Actions-&amp;gt; Switch side with partner，可以立刻切换控制和被控制的两端。这个功能也是非常有用的。当有的时候因为防火墙设置等原因（比如在使用 IP
   直连时），可能会出现只有一端能连到另一端，但是反过来则因为被防火墙屏蔽无法连上，这个时候用切换功能就很方便。
&lt;/p&gt;
&lt;p&gt;
   　　TeamViewer 允许在 ID 中直接输入 IP 地址，这在局域网环境中非常方便，但是注意要在 Options -&amp;gt; General -&amp;gt; Connection -&amp;gt; 勾选 Accept incoming LAN connections。
&lt;/p&gt;
&lt;p&gt;
   　　当需要控制的机器很多时，要记住这些 ID 也是件麻烦事。申请一个 TeamViewer 的账户就方便多了，点击程序主界面下方的&amp;quot;Partner list&amp;quot;就可以注册和管理了。
&lt;/p&gt;
&lt;p&gt;
   　　最后还有几点相关的内容：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;如何屏蔽使用 TeamViewer。因为此软件的穿透能力很强，对个人自然是好事，但是对公司数据的安全就造成了威胁。因为 TeamViewer 获取 ID 必然要连上自己的服务器，所以只要屏蔽这个服务器即可。
   &lt;/li&gt;
   &lt;li&gt;关于数据传输安全，因为使用 ID 进行连接必定要在服务器进行数据交换（使用加密传输），所以这一步的数据安全只能依靠 TeamViewer 公司来保证了。在建立了连接后，应该就是两端直接相连了。
   &lt;/li&gt;
   &lt;li&gt;有一个 CrossLoop 的软件功能和 TeamViewer 差不多，不过我用了一下，没连上...
   &lt;/li&gt;
   &lt;li&gt;我看到一个十分详细的 TeamViewer 使用说明：&lt;a href="http://jackbin.blogspot.com/2007/11/teamviewer.html" target="_blank"&gt;Jackbin 的懶人筆記: 功能強大的遠端控制軟體
   (2) - TeamViewer&lt;/a&gt;，从安装到注册到配置各个细节都有。文章的选项界面和我略有不同，应该是版本问题。
   &lt;/li&gt;
   &lt;li&gt;如果不小心把应用环境选成了商用，改回个人免费版的方法见：&lt;a href="http://arccos.blogspot.com/2009/02/teamviewer_28.html"&gt;如何将 TeamViewer 从商业试用版改回个人免费版&lt;/a&gt;。
   &lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-4275936689197485576?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/4275936689197485576/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/02/teamviewer.html#comment-form' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/4275936689197485576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/4275936689197485576'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/02/teamviewer.html' title='TeamViewer：简单好用的远程控制软件'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_1NZOc1C8JjM/Sajm1IS-D1I/AAAAAAAADOE/gbQUBAn3Nu4/s72-c/TeamViewer_01.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-4788229073306204906</id><published>2009-02-19T15:29:00.002+08:00</published><updated>2009-02-19T15:29:55.702+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Essay'/><category scheme='http://www.blogger.com/atom/ns#' term='Blog'/><title type='text'>今天我退订了月光博客</title><content type='html'>&lt;p&gt;
   　　本来，退订一个 Blog 是不应该单独写一篇的，不过&lt;a href="http://www.williamlong.info/" target=
   "_blank"&gt;月光博客&lt;/a&gt;如此知名，写写倒也无妨。我还记得，在月光博客上看到很多写作技巧类的文章，比如&lt;a href="http://www.williamlong.info/archives/1645.html" target=
   "_blank"&gt;十个避免RSS订阅被退订的方法&lt;/a&gt;。
&lt;/p&gt;
&lt;p&gt;
   　　之前，我忍痛退订了 GSeeker（G速客），毕竟是换人了，关注内容和文章风格差异太大。
&lt;/p&gt;
&lt;p&gt;
   　　这次，退订月光博客，我也考虑了很久，很早就有这个念头，因为这个博客的内容已经不再吸引我了。
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;新闻类的文章：就内容来说，不是独家或首发，到处都能看到，就文章质量来说，仅仅是简单的介绍，没有深度的内容。（这让我非常怀念当前的 GSeeker，每篇文章都有自己的测试和见解。）比如说，讨论某次 Gmail 界面更新，我看的其他任何一个写同样内容的 Blog
   都要比他的详尽。我感觉，仅仅是为写这个话题而写这篇文章，是为了搜索引擎优化吗？
   &lt;/li&gt;
   &lt;li&gt;教程类的文章：现在几乎没有了。
   &lt;/li&gt;
   &lt;li&gt;翻译类的文章：我现在也订阅原文出处的 Blog，所以这类文章对我而言没有必要了。而且，翻译的内容甚至还不如原文内容多...也很少很少有个人的补充和见解。
   &lt;/li&gt;
   &lt;li&gt;时事类的文章：力度和深度都不够，对问题的分析不够透彻，感觉行文仓促。
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   　　我一边写上面的文字，一边在想，我写下这篇的目的是什么。我想，主要还是对这个原本觉得不错的知名博客的失望吧。我猜测，很有可能是在写博客上面的时间投入不如以前多了。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-4788229073306204906?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/4788229073306204906/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/02/blog-post_19.html#comment-form' title='34 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/4788229073306204906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/4788229073306204906'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/02/blog-post_19.html' title='今天我退订了月光博客'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>34</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-1329436897632455889</id><published>2009-02-09T16:36:00.001+08:00</published><updated>2009-02-09T16:47:34.488+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Sony'/><title type='text'>笔记本开启麦克风后发出刺耳的啸叫声</title><content type='html'>&lt;p&gt;
   　　今天我的一台 Sony SZ28 笔记本在把音量调大的时候突然发出刺耳的啸叫声，就跟以前把麦克风靠近音响时的声音一样，调节屏幕面板角度，声音也会不同。
&lt;/p&gt;
&lt;p&gt;
   　　的确是我没有把内置的麦克风（在摄像头旁边）静音造成的。这是麦克风和扬声器的自激效应。扬声器声音能量的一部分通过声传播的方式传到麦克风，又被麦克风放大而引起啸叫。这个问题在很多笔记本中都存在，Sony SZ 系列听说尤其明显。
&lt;/p&gt;
&lt;p&gt;
   　　所以解决这个问题，有如下几种选择：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;在音量设置里面将麦克风静音。
   &lt;/li&gt;
   &lt;li&gt;如果需要使用麦克风，并且没有外置的，则需要将麦克风音量调小，关闭高级选项里面的麦克风增强。
   &lt;/li&gt;
   &lt;li&gt;使用耳机或者外置的麦克风。
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　出现这个问题不能说笔记本的设计不好，我觉得这种声反馈很难避免。而且越是高品质、高敏感度的设备越容易出现声反馈。
&lt;/p&gt;
&lt;p&gt;
   　　当我们把麦克风静音的时候，并不是禁止麦克风接收声音，而是不让扬声器反馈麦克风的声音。事实上，静音状态下，麦克风还是正常工作，并且可以录音。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-1329436897632455889?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/1329436897632455889/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/02/blog-post.html#comment-form' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1329436897632455889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1329436897632455889'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/02/blog-post.html' title='笔记本开启麦克风后发出刺耳的啸叫声'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-7241171731767245131</id><published>2009-01-19T22:14:00.001+08:00</published><updated>2009-01-19T22:15:38.567+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BlackBerry'/><title type='text'>BlackBerry 8820</title><content type='html'>&lt;p&gt;
   　　话说，&lt;a href="http://arccos.blogspot.com/2008/01/blackberry-8700.html" target="_blank"&gt;去年元旦我买了一个 8700&lt;/a&gt;，因为&lt;a href=
   "http://arccos.blogspot.com/2007/07/blackberry-7100v.html" target="_blank"&gt;原来的 7100&lt;/a&gt; 在公交车上被别人拿走了。今年同样不顺...所以，我又买了一个 8820。
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://picasaweb.google.com/lh/photo/Xmcd3Ve8gazOBCZTN3ZnQA?authkey=thftYV5GgY0&amp;amp;feat=embedwebsite"&gt;&lt;img src=
   "http://lh3.ggpht.com/_1NZOc1C8JjM/SXSFb-onZjI/AAAAAAAADME/qTtMSlaMNq8/s288/BlackBerry_8820_01.jpg" height="288" width="288" /&gt;&lt;/a&gt;
   &lt;a href="http://picasaweb.google.com/lh/photo/rJgrAyR03JQ8ZvkewLE4rg?authkey=thftYV5GgY0&amp;amp;feat=embedwebsite"&gt;&lt;img src=
   "http://lh3.ggpht.com/_1NZOc1C8JjM/SXSFcKB2qbI/AAAAAAAADMM/BAoT3XslXrw/s288/BlackBerry_8820_02.jpg" height="288" width="288" /&gt;&lt;/a&gt;　
&lt;/p&gt;
&lt;p&gt;
   　　本来想买 8320，不过没有货，我没有手机用又很焦虑...所以就选了 8820 先用。有 GPS 和 WIFI，挺好玩的。
&lt;/p&gt;
&lt;p&gt;
   　　终于又有了拼音输入法，一开始还不习惯，总是打笔画。
&lt;/p&gt;
&lt;p&gt;
   　　另外，点讯输入法相当不错！Anyview 还是选择了 3.2.12版本，最新的抗锯齿不好用，完全没法看，好在我有算号器，还能注册。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-7241171731767245131?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/7241171731767245131/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/01/blackberry-8820.html#comment-form' title='5 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7241171731767245131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7241171731767245131'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/01/blackberry-8820.html' title='BlackBerry 8820'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_1NZOc1C8JjM/SXSFb-onZjI/AAAAAAAADME/qTtMSlaMNq8/s72-c/BlackBerry_8820_01.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-932772676135235116</id><published>2009-01-15T20:29:00.000+08:00</published><updated>2009-01-15T20:51:03.435+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Notebook'/><category scheme='http://www.blogger.com/atom/ns#' term='IT Review'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Google 竟然放弃 Notebook 服务！</title><content type='html'>&lt;p&gt;
   　　Google 已经放弃了我一直喜爱并使用的服务：Notebook。不仅如此，还有很多其他服务也不能幸免。
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      &lt;a href="http://googlenotebookblog.blogspot.com/2009/01/stopping-development-on-google-notebook.html" target="_blank"&gt;Official Google
      Notebook Blog: Stopping development on Google Notebook&lt;/a&gt;
   &lt;/li&gt;
   &lt;li&gt;
      &lt;a href="http://googlesystem.blogspot.com/2009/01/google-closes-many-services.html" target="_blank"&gt;Google Operating System: Google
      Closes Many Services&lt;/a&gt;
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   　　尽管我购买了正版的 myBase、CyberArticle，我使用免费的 Evernote 还有 Firefox 的扩展 ScrapBook，但是 Google Notebook 作为 Google 的一项优秀的服务，我是从始至终关注并支持，多次提交反馈意见与 Bug
   报告，可以说，我对这项服务是相当有感情的。
&lt;/p&gt;
&lt;p&gt;
   　　今天不讨论经济危机对一个公司的影响，不讨论我这些数据怎么处理。
&lt;/p&gt;
&lt;p&gt;
   　　我只是想说，为了节省开支今天关闭这个服务明天停止那项开发，到最后肯定能特别省钱，因为所有服务都没有存在的必要了 -- 用户除了逃离你 Google 还能有什么选择？
&lt;/p&gt;
&lt;p&gt;
   　　以前有很多服务被关闭，都至少有一个看似合理的理由。比如 Google Answers，因为它的收费模式与网络精神格格不入；比如 &lt;span&gt;Page Creator，好歹有个 Sites 代替。&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;span&gt;　　总之我是非常生气，对 Google 也非常失望！停止一项服务是小事，或许真的没有什么人用 Google Notebook，但是如此的态度却是让我难以接受。&lt;/span&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-932772676135235116?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/932772676135235116/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/01/google-notebook.html#comment-form' title='7 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/932772676135235116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/932772676135235116'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/01/google-notebook.html' title='Google 竟然放弃 Notebook 服务！'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-1062491084669762963</id><published>2009-01-10T14:14:00.000+08:00</published><updated>2009-01-10T14:33:12.235+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Google 又换了一个图标</title><content type='html'>&lt;p&gt;
   　　上次 Google 变换 Favicon 就引起了争议，毕竟用了很多年的东西突然变了总不习惯。
&lt;/p&gt;
&lt;p&gt;
   　　结果这次变得更离谱，我看了很久很久才看出是什么玩意儿！
&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt;
   &lt;img src="http://lh4.ggpht.com/_1NZOc1C8JjM/SWg_o7HkNGI/AAAAAAAADH4/yq8Vbx4mP24/d/Google%20Favicon_0109.png" style="DISPLAY: inline"
   height="30" width="28" /&gt;
&lt;/p&gt;
&lt;p&gt;
   　　官方 Blog 还有&lt;a href="http://googleblog.blogspot.com/2008/06/one-fish-two-fish-red-fish-blue-fish.html" target="_blank" title=
   "Official Google Blog: One Fish, Two Fish, Red Fish, Blue Fish"&gt;说明&lt;/a&gt;。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-1062491084669762963?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/1062491084669762963/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/01/google.html#comment-form' title='5 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1062491084669762963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1062491084669762963'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/01/google.html' title='Google 又换了一个图标'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-277028198388842612</id><published>2009-01-07T11:04:00.000+08:00</published><updated>2009-01-07T11:39:14.011+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IT Review'/><category scheme='http://www.blogger.com/atom/ns#' term='Essay'/><title type='text'>哦，开始整顿低俗之风了</title><content type='html'>&lt;p&gt;
   　　由国务院新闻办及工业和信息化部、公安部等７部委联合公布的首批&amp;quot;低俗网站&amp;quot;名单出炉。谷歌、百度、新浪、搜狐、猫扑、天涯等搜索引擎、门户网站和社区论坛网站均位列其中。
&lt;/p&gt;
&lt;p&gt;
   　　我得承认，这些低俗网站有几个我还是经常上的，有的从来没听说过。不知道迅雷为什么没在里面，因为我在下载的空闲，总是会点击几个&amp;quot;推荐&amp;quot;的内容。
&lt;/p&gt;
&lt;p&gt;
   　　搜索引擎很无辜，按理搜不到才是奇怪的，我就不信网上那么多图片都能给屏蔽了。我觉得在国内就不应该提供什么搜索功能，用个分类导航不就得了，顺便还解决了人肉搜索问题。
&lt;/p&gt;
&lt;p&gt;
   　　根据&lt;a href="http://arccos.blogspot.com/2007/06/blog-post_05.html" target=
   "_blank"&gt;主流媒体惯用词语&lt;/a&gt;中总结的经验，本消息出现了&amp;quot;７部委&amp;quot;，所以问题很严重，所以各大网站都得赶紧出来&lt;a href="http://www.cnbeta.com/articles/74151.htm" target=
   "_blank"&gt;道歉&lt;/a&gt;。
&lt;/p&gt;
&lt;p&gt;
   　　我在五、六年前就曾经投诉过网易社区的广告比较低俗，我记得当初处理很快，快到等我再次刷新的时候，我的举报帖子就不知道哪儿去了。我不知道新浪的体育新闻现在有没有变好一点，至少一年多以前还有很多&lt;a href=
   "http://arccos.blogspot.com/2007/07/blog-post_31.html" target="_blank" title="服了新浪的编辑们，体育新闻也能写成色情小说"&gt;色情小说&lt;/a&gt;。
&lt;/p&gt;
&lt;p&gt;
   　　哦，文章最后，按惯例，还是要表达对国家为广大网民净化网络环境的支持，希望能够在春节之前，各部门&amp;quot;严格执法，敢于碰硬，对在网上传播淫秽色情信息和低俗信息的不法分子，要依据有关法律法规和管理规定严肃处理。对屡教不改、影响恶劣的网站，要曝光一批、处罚一批、关闭一批，绝不姑息迁就＂。
&lt;/p&gt;
&lt;p&gt;
   　　曝光已经做得不错，我建议，处罚谷歌、百度、新浪、搜狐、腾讯，他们有钱。把什么网易、天涯一类的都关了，新闻看新华网、CCTV就够了，大过年的也不用上论坛。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-277028198388842612?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/277028198388842612/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/01/blog-post.html#comment-form' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/277028198388842612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/277028198388842612'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/01/blog-post.html' title='哦，开始整顿低俗之风了'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-7694098343206277793</id><published>2009-01-06T11:56:00.000+08:00</published><updated>2009-01-06T12:00:09.949+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Visual Studio 2008 没有 ActiveX Control Test Container</title><content type='html'>&lt;p&gt;
   　　今天写 ActiveX 发现 Visual Studio 2008 里面已经没有了 ActiveX Control Test Container，查了一下，发现是从 2005 版本开始取消的。
&lt;/p&gt;
&lt;p&gt;
   　　如果对这个工具念念不忘，似乎只能从旧版本里面提取了，或者下载旧版本的 SDK 里面的 Sample 重新编译。
&lt;/p&gt;
&lt;p&gt;
   　　MSDN相关内容：&lt;a href="http://msdn.microsoft.com/en-us/library/f9adb5t5.aspx" target="_blank"&gt;TSTCON Sample: ActiveX Control Test
   Container&lt;/a&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-7694098343206277793?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/7694098343206277793/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/01/visual-studio-2008-activex-control-test.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7694098343206277793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7694098343206277793'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/01/visual-studio-2008-activex-control-test.html' title='Visual Studio 2008 没有 ActiveX Control Test Container'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-1645917946046396629</id><published>2009-01-05T23:59:00.000+08:00</published><updated>2009-01-06T00:01:15.950+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BlackBerry'/><title type='text'>修改 BlackBerry 蓝牙传输文件的大小限制</title><content type='html'>&lt;p&gt;
   　　之前用蓝牙往黑莓传文件的时候，经常遇到直接失败的情况，原因是文件太大。我一直很迷惑，因为我的内存还有空间，即使我清理了一些空间，不能发送还是不能发送。
&lt;/p&gt;
&lt;p&gt;
   　　今天无意中发现原来是我的设置有问题，进入 Media，在这里有选项&amp;quot;Receive Using Bluetooth&amp;quot;，我都是这样接收文件的。点开&amp;quot;Options&amp;quot;，发现第一项就是&amp;quot;Device Memory
   Limit&amp;quot;，我原本的设置是5MB，怪不得总传不过去。改成15MB（我的8700最大的选项就是15MB）就可以了。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-1645917946046396629?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/1645917946046396629/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2009/01/blackberry.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1645917946046396629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1645917946046396629'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2009/01/blackberry.html' title='修改 BlackBerry 蓝牙传输文件的大小限制'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-7638895191805770114</id><published>2008-12-31T23:50:00.000+08:00</published><updated>2009-01-01T00:04:47.983+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Photo'/><title type='text'>小动物们</title><content type='html'>&lt;p&gt;
   　　一些动物的图片，有山羊、河马、北极熊...
&lt;/p&gt;
&lt;p&gt;
   　　大部分是在煎蛋上看的。
&lt;/p&gt;
&lt;embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="400" height="267" flashvars="host=picasaweb.google.com&amp;RGB=0x000000&amp;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Farcos.zf%2Falbumid%2F5285982406666519505%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/embed&gt;
&lt;p&gt;
   　　元旦了，祝大家身体健康，工作顺利，学习进步。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-7638895191805770114?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/7638895191805770114/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/12/blog-post_31.html#comment-form' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7638895191805770114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7638895191805770114'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/12/blog-post_31.html' title='小动物们'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-6280191228521758720</id><published>2008-12-25T22:47:00.000+08:00</published><updated>2008-12-25T22:50:42.832+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blog'/><title type='text'>开博两周年纪念</title><content type='html'>&lt;p&gt;
   　　最近真是太忙，昨天连觉都没睡。手里文章已经积压了好几篇没写了。
&lt;/p&gt;
&lt;p&gt;
   　　想不到已经两年了，虽然很多文章自娱自乐的成分较多，但是非常感谢阅读我 Blog 的朋友，祝圣诞快乐~
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-6280191228521758720?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/6280191228521758720/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/12/blog-post_25.html#comment-form' title='4 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/6280191228521758720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/6280191228521758720'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/12/blog-post_25.html' title='开博两周年纪念'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-6477594015306791085</id><published>2008-12-22T21:37:00.000+08:00</published><updated>2008-12-22T21:49:21.447+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sogou'/><category scheme='http://www.blogger.com/atom/ns#' term='Browser'/><title type='text'>搜狗浏览器</title><content type='html'>&lt;p&gt;
   　　搜狗推出了&lt;a href="http://ie.sogou.com/" target="_blank"&gt;浏览器&lt;/a&gt;，当然是 IE 内核。我觉得软件做得还行。
&lt;/p&gt;
&lt;p&gt;
   　　重点是内含代理，可以使教育网免费出国，的确是可以的。只是不知道是否是搜狗自己架设的服务器，如果是，那就可能用的人多的时候不太好使。
&lt;/p&gt;
&lt;p&gt;
   　　其实，我觉得在浏览器中加入教育网增强是好的，只是应该以插件形式。不然可能会损失一部分不在教育网，又有&amp;quot;软件洁癖&amp;quot;的人...
&lt;/p&gt;
&lt;p&gt;
   　　如果浏览器能搞成类似 Tor 的网络形式，可能能从根本上优化浏览速度。但是，估计就要被墙了。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-6477594015306791085?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/6477594015306791085/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/12/blog-post_22.html#comment-form' title='5 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/6477594015306791085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/6477594015306791085'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/12/blog-post_22.html' title='搜狗浏览器'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-1981296519529251316</id><published>2008-12-12T23:00:00.000+08:00</published><updated>2008-12-12T23:00:01.660+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Essay'/><title type='text'>参观社会公共安全产品博览会</title><content type='html'>&lt;p&gt;
   　　今天去东三环的国展参观了中国国际社会公共安全产品博览会（&lt;wbr /&gt;CIEC），主题是平安城市。有非常多的参展公司，Sony、三星、海康等等。涉及的领域有：摄像设备（摄像机、云台），配套的&lt;wbr /&gt;管理平台（硬盘录像机、视频服务器、显示设备），还有&lt;wbr /&gt;入侵报警的传感器以及软件，安检设备，生物特征识别设备等等。
   &lt;br /&gt;
   &lt;br /&gt;
   　　不同厂商所做的工作也不同，有的是做芯片的，&lt;wbr /&gt;有的是做摄像头等设备的，有的是做智能监控软件，&lt;wbr /&gt;还有是做身份认证系统的。
   &lt;br /&gt;
   &lt;br /&gt;
   　　感觉挺有意思，也很受启发。只是我去的时候已经是最后一天，下午一点的时候就往外赶人了。
&lt;/p&gt;
&lt;p&gt;
   　　Sorry，本次无图...
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-1981296519529251316?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/1981296519529251316/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/12/blog-post_12.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1981296519529251316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1981296519529251316'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/12/blog-post_12.html' title='参观社会公共安全产品博览会'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-670385449914693926</id><published>2008-12-12T15:31:00.001+08:00</published><updated>2008-12-12T15:48:47.800+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IT Review'/><category scheme='http://www.blogger.com/atom/ns#' term='Essay'/><title type='text'>从媒体报道来看国家对搜索引擎监管的加强</title><content type='html'>&lt;p&gt;
   　　近期，有关搜索引擎的问题被报道很多，包括 CCTV 也曝光百度的竞价排名。但是令我很不解的是，经常有媒体在转载过程，或者自己的报道过程中把 Google 也牵扯进来。我不想举出这些文章的来源、转载过程等等，相信对新闻关注的人早已发现了这个问题。
&lt;/p&gt;
&lt;p&gt;
   　　不排除这些是媒体在某些部门（这个词真好用）授意下故意把打击面扩大的缘故。这也说明了，国家要加大对网络信息，尤其是搜索引擎的监管力度和方式。
&lt;/p&gt;
&lt;p&gt;
   　　今天在 cnBeta 上看到李开复说：&amp;quot;我们预料到了近期可能会有关于谷歌相关不利报道&amp;quot;，我觉得非常好笑。
&lt;/p&gt;
&lt;p&gt;
   　　现在都在痛打搜索引擎上的虚假医药广告，我就想，CCTV 不也在黄金时段播放那些个&amp;quot;不太真实的&amp;quot;破广告吗？
&lt;/p&gt;
&lt;p&gt;
   　　我一向都是支持国家政策的，我也理解新闻工作者为了增强导向性，为了增加收视率而做出的努力。但我厌恶那种为达目的不择手段的方式，故意做出假的画面，甚至移花接木、张冠李戴。
&lt;/p&gt;
&lt;p&gt;
   　　回想了一下，Blog 上很多文章都是看了新闻报道有感而写下来的，其中有好几篇是在谈媒体本身的问题。比如：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      &lt;a href="http://arccos.blogspot.com/2007/07/blog-post.html"&gt;从两则新闻看媒体的导向性&lt;/a&gt;
   &lt;/li&gt;
   &lt;li&gt;
      &lt;a href="http://arccos.blogspot.com/2008/03/blog-post_2611.html"&gt;知情人士称...&lt;/a&gt;
   &lt;/li&gt;
   &lt;li&gt;
      &lt;a href="http://arccos.blogspot.com/2007/06/blog-post_05.html"&gt;主流媒体惯用词语&lt;/a&gt;
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   　　我关心媒体的道德问题，一个原因是这个的确很重要。我可以理解媒体应该起到正确的宣传教育和引导公众的作用。但是我希望，所使用的手段是合乎道德的，我想真实的报道应该是这个行业的底限吧？
&lt;/p&gt;
&lt;p&gt;
   　　另外一个更重要的原因是，我很关心的人想要投身这个行业。我是一个理想主义者，我希望这里能保持它应有的纯洁。
&lt;/p&gt;
&lt;p&gt;
   　　弄虚作假在什么地方都有，包括学术界，但是我不能默许它的存在。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-670385449914693926?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/670385449914693926/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/12/blog-post.html#comment-form' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/670385449914693926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/670385449914693926'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/12/blog-post.html' title='从媒体报道来看国家对搜索引擎监管的加强'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-7350940603044596951</id><published>2008-12-07T14:48:00.000+08:00</published><updated>2008-12-07T14:49:00.907+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blog'/><title type='text'>Blog 增加 Google Friend Connect 功能</title><content type='html'>&lt;p&gt;
   　　看很多人都在 Blog 上增加了 &lt;a href="http://www.google.com/friendconnect/" target="_blank"&gt;Google Friend
   Connect&lt;/a&gt;，我也想加一个。过程倒是非常简单，只要按照提示一步一步来就是，使用 Blogger 还不用上传文件，倒是很方便。
&lt;/p&gt;
&lt;p&gt;
   　　只是，原本的 Friends 链接就重复了，和 Follower 的功能也有重复。所以决定都去掉...其实我好不容易才决定加上 Follower 的功能的...
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-7350940603044596951?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/7350940603044596951/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/12/blog-google-friend-connect.html#comment-form' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7350940603044596951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7350940603044596951'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/12/blog-google-friend-connect.html' title='Blog 增加 Google Friend Connect 功能'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-3163997590220195893</id><published>2008-12-05T10:36:00.001+08:00</published><updated>2008-12-05T11:11:03.766+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Reader'/><title type='text'>Google Reader 界面更新</title><content type='html'>&lt;p&gt;
   　　今天打开 Google Reader，发现眼前一亮，原本熟悉的界面变了。我第一反应是赶紧看了看 Greasemonkey 和 Stylish，发现没有修改什么啊，然后才反应过来，是改版了。（前一段时间 Gmail
   增加了主题选择，让我对上述两个扩展的依赖也越来越小了。）
&lt;/p&gt;
&lt;p&gt;
   　　这次 Google Reader 第一眼看上去，更加清爽和整洁。侧栏的颜色变浅，使人可以更加关注内容。侧栏中各个元素经过了重新设计和安排，显得更有结构，每一个导航条还可以收缩和展开，显得很贴心。
&lt;/p&gt;
&lt;p&gt;
   　　以前我经常遇到 All items 和 Subscriptions 里面未读条目不同步的情况，一般我是分别刷新，现在新的界面左侧导航条的刷新按钮也变成了下拉菜单中的一项。
&lt;/p&gt;
&lt;p&gt;
   　　虽然还有些不太习惯，不过很喜欢新的界面。期待提供类似 Gmail 的主题功能。我感觉，在阅读的时候，主要内容的焦点没有以前强烈（虽然淡化了侧栏的导航条），如果加入背景颜色（毕竟颜色太白会显得刺眼），或者一个更明显的边框可能更好一些。
&lt;/p&gt;
&lt;p&gt;
   　　官方 Blog 文章： &lt;a href="http://googlereader.blogspot.com/2008/12/square-is-new-round.html"&gt;Square is the new round.&lt;/a&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-3163997590220195893?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/3163997590220195893/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/12/google-reader.html#comment-form' title='5 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3163997590220195893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3163997590220195893'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/12/google-reader.html' title='Google Reader 界面更新'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-2543336248393795309</id><published>2008-12-02T16:04:00.001+08:00</published><updated>2008-12-02T16:07:16.839+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='VirtualBox'/><title type='text'>VirtualBox 安装 Windows</title><content type='html'>&lt;p&gt;
   　　之前曾经使用 &lt;a href="http://arccos.blogspot.com/2008/05/virtualbox-16.html"&gt;VirtualBox 安装过 Ubuntu&lt;/a&gt;，现在因为测试需要，准备安装一下 Windows XP。
&lt;/p&gt;
&lt;p&gt;
   　　结果一上来就遇到一个问题，在格式化一步出错，提示：Unable to allocate and lock memory...错误 ID：HostMemoryLow。原来是我把虚拟机的内存设置得太大了（设置的是 128M 好像，主机内存 1G+2G
   页面缓存）。后来修改成 64M 就可以了。
&lt;/p&gt;
&lt;p&gt;
   　　VirtutalBox 的虚拟硬盘是保存成 VDI 文件的，在虚拟系统运行的任何时刻，都可以生成一个当前系统运行状态的快照（Snapshots）。这个备份是保存在 Snapshots 目录下的一个新的 VDI 文件中，在快照生成之后的所有操作都是保存在这个新的 VDI
   文件中，原始的文件就不会发生变化了。通过快速修复界面，可以恢复最近的快照。
&lt;/p&gt;
&lt;p&gt;
   　　注意，当你新生成或者删除某一个快照备份的时候，原始的 VDI 就会发生变化，保存的是当前的系统状态。
&lt;/p&gt;
&lt;p&gt;
   　　但是，VirtualBox 的快照恢复顺序类似与一个堆栈，只能恢复最近的快照，想要生成更早一点的状态，只能把最近的快照删除才行。这点也很好理解，因为如果想要并行保存两个状态，那势必要占用两份空间，而 VirtualBox
   的快照是一个增量备份的过程，所以它只能线性恢复。
&lt;/p&gt;
&lt;p&gt;
   　　而我们软件测试，是需要在同一个操作系统的不同软件环境下进行，比如需要保存刚刚安装完 Windows 的状态，还要保存已经安装常用软件的状态。这样就需要把虚拟硬盘的 VDI 文件多保存几份了。但是，直接复制 VDI 文件是不行的，因为 VirtualBox 对每个
   VDI 文件有一个 uuid，所以直接复制以后无法注册，因为 uuid 是相同的。
&lt;/p&gt;
&lt;p&gt;
   　　在帮助文件中给出了解决方案，就是通过命令行中使用 VBoxManage 的 clonevdi 的方法来复制一个 VDI 文件，并重新生成一个 uuid。使用方法如下，注意文件名如果有空格，需要用引号括起来。
&lt;/p&gt;
&lt;blockquote&gt;
   &lt;p&gt;
      VBoxManage clonevdi &amp;lt;uuid&amp;gt;|&amp;lt;filename&amp;gt; &amp;lt;outputfile&amp;gt;
   &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   　　复制的过程相当慢...
&lt;/p&gt;
&lt;p&gt;
   　　如何压缩虚拟硬盘的大小，在 VBoxManage 中有一个 modifyvdi compact 的命令，如果选用了动态分配磁盘，可以试试。注意到，因为在频繁的文件操作后，将会有大量的空间只被标记为删除，但是并没有真的清空。这样压缩就会没什么效果。
&lt;/p&gt;
&lt;p&gt;
   　　一种方法是使用 Ghost 备份一下然后再恢复。另一种方法是：
&lt;/p&gt;
&lt;blockquote&gt;
   &lt;ol&gt;
      &lt;li&gt;首先进行磁盘碎片整理。
      &lt;/li&gt;
      &lt;li&gt;然后使用 Sysinternals 的一个命令行工具 &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb897443.aspx" target="_blank"&gt;SDelete&lt;/a&gt;，在
      Guest OS 中执行：sdelete -c c:\ ，把C盘中标记为未使用的空间清0。
      &lt;/li&gt;
      &lt;li&gt;在 Host OS 中执行：VBoxManage modifyvdi &amp;quot;文件名.vdi&amp;quot; compact
      &lt;/li&gt;
   &lt;/ol&gt;
&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-2543336248393795309?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/2543336248393795309/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/12/virtualbox-windows.html#comment-form' title='5 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2543336248393795309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2543336248393795309'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/12/virtualbox-windows.html' title='VirtualBox 安装 Windows'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-4392382755162895704</id><published>2008-11-29T02:33:00.000+08:00</published><updated>2008-11-29T02:35:15.885+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Essay'/><title type='text'>入手22宽+双显示器</title><content type='html'>&lt;p&gt;　　嗯...为了更好地学习与工作，我经过几天的酝酿，出手买了一台22宽的显示器：BenQ G2200W。&lt;/p&gt;
&lt;p&gt;　　本来想买 AOC 2217V 的，因为它性价比最高，也就是最便宜，但是实际看了几眼，感觉的确是一分价钱一分货。做工略显粗糙，漏光处理不好。&lt;/p&gt;
&lt;p&gt;　　最后买的这台 BenQ 其实也不怎么好，各项性能也一般，但是感觉稍微舒服一些。现在有 16:9 的型号，比如 BenQ T2200HD，分辨率可以达到 1920x1080，但是我感觉点距太小，平常编程或者文字处理会很不舒服。&lt;/p&gt;
&lt;p&gt;　　我的破旧的 9550 显卡还是能支持双显示器的。感觉不错，一边看电影，一边写文档，很自在。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-4392382755162895704?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/4392382755162895704/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/11/22.html#comment-form' title='4 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/4392382755162895704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/4392382755162895704'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/11/22.html' title='入手22宽+双显示器'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-8493001380413128645</id><published>2008-11-22T19:51:00.000+08:00</published><updated>2008-11-22T19:55:38.628+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogger Template'/><title type='text'>Blogger 模板中一个变量的翻译问题</title><content type='html'>&lt;p&gt;
   　　在 blogger 模板中有两个变量：data:newerPageTitle 和 data:olderPageTitle，一般显示在页面下方，是供翻页用的。
&lt;/p&gt;
&lt;p&gt;
   　　其中 data:newerPageTitle 在中文环境下的内容为&amp;quot;较新的帖子&amp;quot;，这是对的。但是 data:olderPageTitle 目前内容却为&amp;quot;帖子&amp;quot;，应该翻译为&amp;quot;较旧的帖子&amp;quot;。
&lt;/p&gt;
&lt;p&gt;
   　　我今天提交了这个问题，希望能尽快修正。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-8493001380413128645?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/8493001380413128645/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/11/blogger.html#comment-form' title='4 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/8493001380413128645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/8493001380413128645'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/11/blogger.html' title='Blogger 模板中一个变量的翻译问题'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-3518804152809045803</id><published>2008-11-22T13:37:00.005+08:00</published><updated>2008-11-24T20:50:33.677+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Coding'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Mobile'/><title type='text'>Windows下如何枚举所有进程</title><content type='html'>&lt;p&gt; 　　要编写一个类似于 Windows
任务管理器的软件，首先遇到的问题是如何实现枚举所有进程。暂且不考虑进入核心态去查隐藏进程一类的，下面提供几种方法。请注意每种方法的使用局限，比如使用这些 API 所需要的操作系统是什么（尤其是是否能在 Windows Mobile 下使用）。
&lt;/p&gt;

&lt;p&gt;
　　本文参考&lt;a href="http://borland.mblogger.cn/pantao/posts/34097.aspx" target="_blank"&gt;用户态枚举进程的几种方法&lt;/a&gt;，原文对于每一种方法都给出了完整的代码，被我照抄下来。还有一篇：&lt;a href="http://www.vckbase.com/document/viewdoc/?id=1482" target="_blank"&gt;如何用 Win32 APIs 枚举应用程序窗口和进程&lt;/a&gt;。基于我现学现卖的本质，对我演绎的部分请抱着批判的眼光来看，另外代码也没有充分验证。&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;使用 ToolHelp API&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;　　&lt;/strong&gt; ToolHelp API
的功能就是为了获取当前运行程序的信息，从而编写适合自己需要的工具（&lt;a href="http://msdn.microsoft.com/en-us/library/ms686837%28VS.85%29.aspx" target="_blank"&gt;@MSDN&lt;/a&gt;）。它支持的平台比较广泛，可以在 Windows CE
下使用。在 Windows Mobile SDK 的 Samples 里面有一个 PViewCE
的样例程序，就是用这个来查看进程和线程信息的。
&lt;/p&gt;

&lt;p&gt;
　　使用方法就是先用 CreateToolhelp32Snapshot
将当前系统的进程、线程、DLL、堆的信息保存到一个缓冲区，这就是一个系统快照。如果你只是对进程信息感兴趣，那么只要包含
TH32CS_SNAPPROCESS 标志即可。
&lt;/p&gt;

&lt;p&gt;
　　然后调用一次 Process32First 函数，从快照中获取第一个进程，然后重复调用 Process32Next，直到函数返回
FALSE 为止。这样将遍历快照中进程列表。这两个函数都带两个参数，它们分别是快照句柄和一个 PROCESSENTRY32 结构。调用完
Process32First 或 Process32Next 之后，PROCESSENTRY32 中将包含系统中某个进程的关键信息。其中进程
ID 就存储在此结构的 th32ProcessID。此 ID 传给 OpenProcess API
可以获得该进程的句柄。对应的可执行文件名及其存放路径存放在 szExeFile 结构成员中。在该结构中还可以找到其它一些有用的信息。
&lt;br&gt;

&lt;br&gt;

　　需要注意的是：在调用 Process32First() 之前，要将 PROCESSENTRY32 结构的 dwSize 成员设置成
sizeof(PROCESSENTRY32)。 然后再用 Process32First、Process32Next
来枚举进程。使用结束后要调用 CloseHandle 来释放保存的系统快照。&lt;/p&gt;

&lt;p&gt;　　以下为参考代码：&lt;/p&gt;

&lt;div style="font-family: &amp;quot;[object HTMLOptionElement]&amp;quot;,&amp;quot;Consolas&amp;quot;,&amp;quot;Lucida Console&amp;quot;,&amp;quot;Courier New&amp;quot;; background-color: rgb(249, 247, 237);"&gt;&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32);"&gt;#include
&amp;lt;windows.h&amp;gt;&lt;/span&gt;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32);"&gt;#include
&amp;lt;tlhelp32.h&amp;gt;&lt;/span&gt;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32);"&gt;#include
&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt; &lt;span style="color: rgb(144, 32, 0);"&gt;void&lt;/span&gt;
useToolHelp()&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; {&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
HANDLE procSnap &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;
CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, &lt;span style="color: rgb(64, 160, 112);"&gt;0&lt;/span&gt;);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;if&lt;/span&gt;(procSnap
&lt;span style="color: rgb(102, 102, 102);"&gt;==&lt;/span&gt;
INVALID_HANDLE_VALUE)&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
printf(&lt;span style="color: rgb(64, 112, 160);"&gt;"CreateToolhelp32Snapshot
failed, %d "&lt;/span&gt;,GetLastError());&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;return&lt;/span&gt;;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(96, 160, 176); font-style: italic;"&gt;//&lt;/span&gt;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
PROCESSENTRY32 procEntry &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;
{ &lt;span style="color: rgb(64, 160, 112);"&gt;0&lt;/span&gt;
};&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procEntry.dwSize &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;sizeof&lt;/span&gt;(PROCESSENTRY32);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
BOOL bRet &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;
Process32First(procSnap,&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;amp;&lt;/span&gt;procEntry);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;while&lt;/span&gt;(bRet)&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
wprintf(&lt;span style="color: rgb(64, 112, 160);"&gt;L"PID: %d
(%s) "&lt;/span&gt;,
procEntry.th32ProcessID,
procEntry.szExeFile);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
bRet &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;
Process32Next(procSnap, &lt;span style="color: rgb(102, 102, 102);"&gt;&amp;amp;&lt;/span&gt;procEntry);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
CloseHandle(procSnap);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; }&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt; &lt;span style="color: rgb(144, 32, 0);"&gt;void&lt;/span&gt; main()&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; {&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
useToolHelp();&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
getchar();&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; }&lt;br&gt;

&lt;/div&gt;

&lt;p&gt;
&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;使用 Processing Status API&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
　　在 Windows SDK 中可以找到 PSAPI，通过 PSAPI 可以获取进程列表和设备驱动列表。通过
EnumProcesses、EnumProcessModules、GetModuleFileNameEx
和 GetModuleBaseName 来实现。&lt;/p&gt;

&lt;p&gt;　　首先使用 EnumProcesses 来枚举所有进程，它有三个参数：DWORD 类型的数组指针
lpidProcess；该数组的大小尺寸 cb；以及一个指向 DWORD 的指针 cbNeeded，它接收返回数据的长度。DWORD
数组用于保存当前运行的进程 IDs。cbNeeded 返回数组所用的内存大小。下面算式可以得出返回了多少进程：nReturned =
cbNeeded / sizeof(DWORD)。&lt;br&gt;

　　注意：虽然文档将返回的 DWORD 命名为“cbNeeded”，实际上是没有办法知道到底要传多大的数组的。EnumProcesses
根本不会在 cbNeeded 中返回一个大于 cb 参数传递的数组值。所以，唯一确保 EnumProcesses 函数成功的方法是分配一个
DWORD 数组，并且，如果返回的 cbNeeded 等于 cb，分配一个较大的数组，并不停地尝试直到 cbNeeded 小于 cb 。&lt;/p&gt;

&lt;p&gt;　　下面是参考代码：
&lt;/p&gt;

&lt;div style="font-family: &amp;quot;[object HTMLOptionElement]&amp;quot;,&amp;quot;Consolas&amp;quot;,&amp;quot;Lucida Console&amp;quot;,&amp;quot;Courier New&amp;quot;; background-color: rgb(249, 247, 237);" class="source"&gt;&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32);"&gt;#include
&amp;lt;windows.h&amp;gt;&lt;/span&gt;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32);"&gt;#include
&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32);"&gt;#include
&amp;lt;tchar.h&amp;gt;&lt;/span&gt;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32);"&gt;#include "psapi.h"&lt;/span&gt;&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32);"&gt;#pragma
comment(lib,"psapi.lib")&lt;/span&gt;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(144, 32, 0);"&gt;void&lt;/span&gt;
PrintProcessNameAndID(DWORD processID)&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; {&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; TCHAR szProcessName[MAX_PATH] &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; _T(&lt;span style="color: rgb(64, 112, 160);"&gt;"&amp;lt;unknown&amp;gt;"&lt;/span&gt;);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
HANDLE hProcess &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;
OpenProcess(PROCESS_ALL_ACCESS&lt;span style="color: rgb(96, 160, 176); font-style: italic;"&gt;/* |
PROCESS_QUERY_INFORMATION | PROCESS_VM_READ*/&lt;/span&gt;,FALSE,processID);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(96, 160, 176); font-style: italic;"&gt;//Process
name.&lt;/span&gt;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;if&lt;/span&gt;(&lt;span style="color: rgb(0, 112, 32);"&gt;NULL&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;!=&lt;/span&gt;hProcess)&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
HMODULE hMod;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD cbNeeded;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;if&lt;/span&gt;(EnumProcessModules(hProcess,&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;amp;&lt;/span&gt;hMod,&lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;sizeof&lt;/span&gt;(hMod),
&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;amp;&lt;/span&gt;cbNeeded))&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
GetModuleBaseName(hProcess,hMod,szProcessName,&lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;sizeof&lt;/span&gt;(szProcessName)&lt;span style="color: rgb(102, 102, 102);"&gt;/&lt;/span&gt;&lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;sizeof&lt;/span&gt;(TCHAR));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
wprintf(_T(&lt;span style="color: rgb(64, 112, 160);"&gt;"PID:
%d (%s) "&lt;/span&gt;),processID,szProcessName);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
CloseHandle(hProcess);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; }&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt; &lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(144, 32, 0);"&gt;void&lt;/span&gt; main( )&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; {&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD aProcesses[&lt;span style="color: rgb(64, 160, 112);"&gt;1024&lt;/span&gt;],
cbNeeded, cProcesses;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(144, 32, 0);"&gt;unsigned&lt;/span&gt; &lt;span style="color: rgb(144, 32, 0);"&gt;int&lt;/span&gt; i;&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;if&lt;/span&gt;(&lt;span style="color: rgb(102, 102, 102);"&gt;!&lt;/span&gt;EnumProcesses(aProcesses,&lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;sizeof&lt;/span&gt;(aProcesses),&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;amp;&lt;/span&gt;cbNeeded))&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;return&lt;/span&gt;;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
cProcesses &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;
cbNeeded&lt;span style="color: rgb(102, 102, 102);"&gt;/&lt;/span&gt;&lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;sizeof&lt;/span&gt;(DWORD);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;for&lt;/span&gt;(i&lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(64, 160, 112);"&gt;0&lt;/span&gt;;i&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;lt;&lt;/span&gt;cProcesses;i&lt;span style="color: rgb(102, 102, 102);"&gt;++&lt;/span&gt;)&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
PrintProcessNameAndID(aProcesses[i]);&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; getchar();&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; }&lt;br&gt;

&lt;/div&gt;

&lt;br&gt;

　　注意到，此方法由于需要进行 OpenProcess 操作，所以需要一定的权限，当权限不够时，有些进程将不能被打开。下面给出提升权限的相关代码：&lt;br&gt;

&lt;div style="font-family: &amp;quot;[object HTMLOptionElement]&amp;quot;,&amp;quot;Consolas&amp;quot;,&amp;quot;Lucida Console&amp;quot;,&amp;quot;Courier New&amp;quot;; background-color: rgb(249, 247, 237);" class="source"&gt;&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(144, 32, 0);"&gt;void&lt;/span&gt;
RaisePrivilege()&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; {&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
HANDLE hToken;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
TOKEN_PRIVILEGES tp;&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; tp.PrivilegeCount &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(64, 160, 112);"&gt;1&lt;/span&gt;;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
tp.Privileges[&lt;span style="color: rgb(64, 160, 112);"&gt;0&lt;/span&gt;].Attributes
&lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;
SE_PRIVILEGE_ENABLED;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;if&lt;/span&gt;(OpenProcessToken(GetCurrentProcess(),TOKEN_ALL_ACCESS,&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;amp;&lt;/span&gt;hToken))&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;if&lt;/span&gt;(LookupPrivilegeValue(&lt;span style="color: rgb(0, 112, 32);"&gt;NULL&lt;/span&gt;,SE_DEBUG_NAME,&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;amp;&lt;/span&gt;tp.Privileges[&lt;span style="color: rgb(64, 160, 112);"&gt;0&lt;/span&gt;].Luid))&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
AdjustTokenPrivileges(hToken,FALSE,&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;amp;&lt;/span&gt;tp,&lt;span style="color: rgb(0, 112, 32);"&gt;NULL&lt;/span&gt;,&lt;span style="color: rgb(0, 112, 32);"&gt;NULL&lt;/span&gt;,&lt;span style="color: rgb(64, 160, 112);"&gt;0&lt;/span&gt;);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;if&lt;/span&gt;(hToken)&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
CloseHandle(hToken);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; }&lt;br&gt;

&lt;/div&gt;

&lt;br&gt;

&lt;br&gt;

&lt;strong&gt;&lt;br&gt;

使用 Native API&lt;/strong&gt;
&lt;span style="font-weight: bold;"&gt;&lt;br&gt;

&lt;/span&gt;
&lt;p&gt;　　在 &lt;a href="http://arccos.blogspot.com/2008/11/native-api.html"&gt;使用Native API 探测本机系统信息&lt;/a&gt; 中我介绍了 Native API
中的
NtQuerySystemInformation（ZwQuerySystemInformation）。当设置查询的信息类型为&amp;nbsp;
SystemProcessesAndThreadsInformation 时（第5号功能），可以用来枚举所有进程和线程。&lt;/p&gt;

&lt;p&gt;　　提醒：这个函数属于&amp;nbsp;Undocumented
API，并且不建议使用，因为不同系统的结构和常量有所不同。下面列出 Windows XP 下可以用的相关结构和常量：&lt;/p&gt;

&lt;div style="font-family: &amp;quot;[object HTMLOptionElement]&amp;quot;,&amp;quot;Consolas&amp;quot;,&amp;quot;Lucida Console&amp;quot;,&amp;quot;Courier New&amp;quot;; background-color: rgb(249, 247, 237);" class="source"&gt;&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;typedef&lt;/span&gt;
DWORD (WINAPI &lt;span style="color: rgb(102, 102, 102);"&gt;*&lt;/span&gt;ZWQUERYSYSTEMINFORMATION)(DWORD,
PVOID, DWORD, PDWORD);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;typedef&lt;/span&gt;
&lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;struct&lt;/span&gt;
_SYSTEM_PROCESS_INFORMATION&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; {&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; DWORD NextEntryDelta;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD ThreadCount;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD Reserved1[&lt;span style="color: rgb(64, 160, 112);"&gt;6&lt;/span&gt;];&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
FILETIME ftCreateTime;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
FILETIME ftUserTime;&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; FILETIME ftKernelTime;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
UNICODE_STRING ProcessName;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD BasePriority;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD ProcessId;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD InheritedFromProcessId;&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; DWORD HandleCount;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD Reserved2[&lt;span style="color: rgb(64, 160, 112);"&gt;2&lt;/span&gt;];&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD VmCounters;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD dCommitCharge;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
PVOID ThreadInfos[&lt;span style="color: rgb(64, 160, 112);"&gt;1&lt;/span&gt;];&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
}SYSTEM_PROCESS_INFORMATION, &lt;span style="color: rgb(102, 102, 102);"&gt;*&lt;/span&gt;PSYSTEM_PROCESS_INFORMATION;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32);"&gt;#define
SystemProcessesAndThreadsInformation 5&lt;/span&gt;&lt;br&gt;

&lt;/div&gt;

&lt;br&gt;

　　然后动态加载 ntdll.dll，获得函数的地址。便可以进行进程的枚举相关代码如下：&lt;br&gt;

&lt;div style="font-family: &amp;quot;[object HTMLOptionElement]&amp;quot;,&amp;quot;Consolas&amp;quot;,&amp;quot;Lucida Console&amp;quot;,&amp;quot;Courier New&amp;quot;; background-color: rgb(249, 247, 237);" class="source"&gt;&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32);"&gt;#include
&amp;lt;windows.h&amp;gt;&lt;/span&gt;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32);"&gt;#include
&amp;lt;ntsecapi.h&amp;gt;&lt;/span&gt;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32);"&gt;#include
&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;typedef&lt;/span&gt;
DWORD (WINAPI &lt;span style="color: rgb(102, 102, 102);"&gt;*&lt;/span&gt;ZWQUERYSYSTEMINFORMATION)(DWORD,
PVOID, DWORD, PDWORD);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;typedef&lt;/span&gt;
&lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;struct&lt;/span&gt;
_SYSTEM_PROCESS_INFORMATION&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; {&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD NextEntryDelta;&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; DWORD ThreadCount;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD Reserved1[&lt;span style="color: rgb(64, 160, 112);"&gt;6&lt;/span&gt;];&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
FILETIME ftCreateTime;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
FILETIME ftUserTime;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
FILETIME ftKernelTime;&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; UNICODE_STRING ProcessName;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD BasePriority;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD ProcessId;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD InheritedFromProcessId;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD HandleCount;&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; DWORD Reserved2[&lt;span style="color: rgb(64, 160, 112);"&gt;2&lt;/span&gt;];&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD VmCounters;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
DWORD dCommitCharge;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
PVOID ThreadInfos[&lt;span style="color: rgb(64, 160, 112);"&gt;1&lt;/span&gt;];&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; }SYSTEM_PROCESS_INFORMATION, &lt;span style="color: rgb(102, 102, 102);"&gt;*&lt;/span&gt;PSYSTEM_PROCESS_INFORMATION;&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt; &lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32);"&gt;#define
SystemProcessesAndThreadsInformation 5&lt;/span&gt;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(144, 32, 0);"&gt;void&lt;/span&gt; main()&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; {&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; HMODULE hNtDll &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;
GetModuleHandle(&lt;span style="color: rgb(64, 112, 160);"&gt;L"ntdll.dll"&lt;/span&gt;);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;if&lt;/span&gt;(&lt;span style="color: rgb(102, 102, 102);"&gt;!&lt;/span&gt;hNtDll)&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;return&lt;/span&gt;;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
ZWQUERYSYSTEMINFORMATION ZwQuerySystemInformation &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;
(ZWQUERYSYSTEMINFORMATION)GetProcAddress(hNtDll,&lt;span style="color: rgb(64, 112, 160);"&gt;"ZwQuerySystemInformation"&lt;/span&gt;);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
ULONG cbBuffer &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;
&lt;span style="color: rgb(64, 160, 112);"&gt;0x10000&lt;/span&gt;;&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPVOID pBuffer &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32);"&gt;NULL&lt;/span&gt;;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
pBuffer &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;
malloc(cbBuffer);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;if&lt;/span&gt;(pBuffer
&lt;span style="color: rgb(102, 102, 102);"&gt;==&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32);"&gt;NULL&lt;/span&gt;)&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;return&lt;/span&gt;;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
ZwQuerySystemInformation(SystemProcessesAndThreadsInformation,pBuffer,cbBuffer,&lt;span style="color: rgb(0, 112, 32);"&gt;NULL&lt;/span&gt;);&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; PSYSTEM_PROCESS_INFORMATION pInfo &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;
(PSYSTEM_PROCESS_INFORMATION)pBuffer;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;for&lt;/span&gt;(;;)&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
wprintf(&lt;span style="color: rgb(64, 112, 160);"&gt;L"PID: %d
(%ls) "&lt;/span&gt;,pInfo&lt;span style="color: rgb(102, 102, 102);"&gt;-&amp;gt;&lt;/span&gt;ProcessId,pInfo&lt;span style="color: rgb(102, 102, 102);"&gt;-&amp;gt;&lt;/span&gt;ProcessName.Buffer);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;if&lt;/span&gt;(pInfo&lt;span style="color: rgb(102, 102, 102);"&gt;-&amp;gt;&lt;/span&gt;NextEntryDelta
&lt;span style="color: rgb(102, 102, 102);"&gt;==&lt;/span&gt; &lt;span style="color: rgb(64, 160, 112);"&gt;0&lt;/span&gt;)&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;break&lt;/span&gt;;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
pInfo &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;
(PSYSTEM_PROCESS_INFORMATION)(((PUCHAR)pInfo) &lt;span style="color: rgb(102, 102, 102);"&gt;+&lt;/span&gt; pInfo&lt;span style="color: rgb(102, 102, 102);"&gt;-&amp;gt;&lt;/span&gt;NextEntryDelta);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
free(pBuffer);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
getchar();&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt; }&lt;br&gt;

&lt;/div&gt;

&lt;span style="font-weight: bold;"&gt;　　&lt;br&gt;

&lt;/span&gt;　　对这个方法有问题的，可以参考我之前的那篇介绍 Native API 的文章。&lt;br&gt;

&lt;span style="font-weight: bold;"&gt;&lt;br&gt;

&lt;/span&gt;　　同样使用 ZwQuerySystemInformation 函数，查询类型如果设置为
SystemHandleInformation（第16号功能）也可以达到目的。它能获取系统中所有句柄，再加上进程 ID
的判断就可以枚举所有进程了。&lt;br&gt;

&lt;div style="font-family: &amp;quot;[object HTMLOptionElement]&amp;quot;,&amp;quot;Consolas&amp;quot;,&amp;quot;Lucida Console&amp;quot;,&amp;quot;Courier New&amp;quot;; background-color: rgb(249, 247, 237);" class="source"&gt;&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32);"&gt;#include
&amp;lt;windows.h&amp;gt;&lt;/span&gt;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32);"&gt;#include
&amp;lt;ntsecapi.h&amp;gt;&lt;/span&gt;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32);"&gt;#include
&amp;lt;ntstatus.h&amp;gt;&lt;/span&gt;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32);"&gt;#include
&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt; &lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;typedef&lt;/span&gt;
NTSTATUS (WINAPI &lt;span style="color: rgb(102, 102, 102);"&gt;*&lt;/span&gt;ZWQUERYSYSTEMINFORMATION)(DWORD,
PVOID, DWORD, PDWORD);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;typedef&lt;/span&gt;
&lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;struct&lt;/span&gt;
_SYSTEM_HANDLE_INFORMATION &lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; {&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ULONG ProcessId;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
UCHAR ObjectTypeNumber;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
UCHAR Flags;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
USHORT Handle;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
PVOID Object;&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ACCESS_MASK GrantedAccess;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; }SYSTEM_HANDLE_INFORMATION, &lt;span style="color: rgb(102, 102, 102);"&gt;*&lt;/span&gt;PSYSTEM_HANDLE_INFORMATION;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;typedef&lt;/span&gt;
&lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;struct&lt;/span&gt;
_SYSTEM_HANDLE_INFORMATION_EX &lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; {&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ULONG NumberOfHandles;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
SYSTEM_HANDLE_INFORMATION Information[&lt;span style="color: rgb(64, 160, 112);"&gt;1&lt;/span&gt;];&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; }SYSTEM_HANDLE_INFORMATION_EX, &lt;span style="color: rgb(102, 102, 102);"&gt;*&lt;/span&gt;PSYSTEM_HANDLE_INFORMATION_EX;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32);"&gt;#define
SystemHandleInformation 0x10&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: rgb(96, 160, 176); font-style: italic;"&gt;//16&lt;/span&gt;&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt; &lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;span style="color: rgb(144, 32, 0);"&gt;void&lt;/span&gt; main()&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; {&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
HMODULE hNtDll &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;
LoadLibrary(&lt;span style="color: rgb(64, 112, 160);"&gt;L"ntdll.dll"&lt;/span&gt;);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;if&lt;/span&gt;(&lt;span style="color: rgb(102, 102, 102);"&gt;!&lt;/span&gt;hNtDll)&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;return&lt;/span&gt;;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
ZWQUERYSYSTEMINFORMATION ZwQuerySystemInformation &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;
(ZWQUERYSYSTEMINFORMATION)GetProcAddress(hNtDll,&lt;span style="color: rgb(64, 112, 160);"&gt;"ZwQuerySystemInformation"&lt;/span&gt;);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
ULONG cbBuffer &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;
&lt;span style="color: rgb(64, 160, 112);"&gt;0x4000&lt;/span&gt;;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
LPVOID pBuffer &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;
&lt;span style="color: rgb(0, 112, 32);"&gt;NULL&lt;/span&gt;;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
NTSTATUS s;&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;do&lt;/span&gt;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
pBuffer &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;
malloc(cbBuffer);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;if&lt;/span&gt;(pBuffer
&lt;span style="color: rgb(102, 102, 102);"&gt;==&lt;/span&gt; &lt;span style="color: rgb(0, 112, 32);"&gt;NULL&lt;/span&gt;)&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;return&lt;/span&gt;;&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
memset(pBuffer,&lt;span style="color: rgb(64, 160, 112);"&gt;0&lt;/span&gt;,cbBuffer);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
s &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;
ZwQuerySystemInformation(SystemHandleInformation,pBuffer,cbBuffer,&lt;span style="color: rgb(0, 112, 32);"&gt;NULL&lt;/span&gt;);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;if&lt;/span&gt;(s
&lt;span style="color: rgb(102, 102, 102);"&gt;==&lt;/span&gt;
STATUS_INFO_LENGTH_MISMATCH)&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
free(pBuffer);&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
cbBuffer &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;
cbBuffer &lt;span style="color: rgb(102, 102, 102);"&gt;*&lt;/span&gt;
&lt;span style="color: rgb(64, 160, 112);"&gt;2&lt;/span&gt;;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;while&lt;/span&gt;(s
&lt;span style="color: rgb(102, 102, 102);"&gt;==&lt;/span&gt;
STATUS_INFO_LENGTH_MISMATCH);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
PSYSTEM_HANDLE_INFORMATION_EX pInfo &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;
(PSYSTEM_HANDLE_INFORMATION_EX)pBuffer;&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ULONG OldPID &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(64, 160, 112);"&gt;0&lt;/span&gt;;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;for&lt;/span&gt;(DWORD
i &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;
&lt;span style="color: rgb(64, 160, 112);"&gt;0&lt;/span&gt;;i&lt;span style="color: rgb(102, 102, 102);"&gt;&amp;lt;&lt;/span&gt;pInfo&lt;span style="color: rgb(102, 102, 102);"&gt;-&amp;gt;&lt;/span&gt;NumberOfHandles;i&lt;span style="color: rgb(102, 102, 102);"&gt;++&lt;/span&gt;)&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 112, 32); font-weight: bold;"&gt;if&lt;/span&gt;(OldPID
&lt;span style="color: rgb(102, 102, 102);"&gt;!=&lt;/span&gt;
pInfo&lt;span style="color: rgb(102, 102, 102);"&gt;-&amp;gt;&lt;/span&gt;Information[i].ProcessId)&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
OldPID &lt;span style="color: rgb(102, 102, 102);"&gt;=&lt;/span&gt;
pInfo&lt;span style="color: rgb(102, 102, 102);"&gt;-&amp;gt;&lt;/span&gt;Information[i].ProcessId;&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
wprintf(&lt;span style="color: rgb(64, 112, 160);"&gt;L"PID: %d "&lt;/span&gt;,OldPID);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
free(pBuffer);&lt;br&gt;

&lt;span class="lineno special"&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; FreeLibrary(hNtDll);&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
getchar();&lt;br&gt;

&lt;span style="color: rgb(96, 160, 176); font-style: italic;" class="lineno"&gt;&lt;/span&gt; }&lt;br&gt;

&lt;/div&gt;

&lt;br&gt;

　　原文中提到，在进行进程“隐藏”工作的时候，此处的句柄是一件容易被忽略的地方，因此需要注意隐藏由程序打开的相关句柄。由于系统中句柄数量经常变换，所以没有什么必要修改其中的 NumberOfHandles
域，因为如果修改此处的值，则需要不停对句柄的变化进行维护，开销比较大。在用户态下的进程枚举已经变得不可靠，因为一个内核级的 Rootkit
很容易就能够更改这些函数的返回结果。所以进程的可靠枚举应在内核态中实现，可以通过编写驱动来实现。&lt;br&gt;

&lt;strong&gt;&lt;br&gt;

有关16位程序&lt;/strong&gt;&lt;br&gt;

&lt;br&gt;

　　根据参考的第二篇文章：在 Windows 95，Windows 98 和 Windows ME 中，ToolHelp32
对待16位程序一视同仁，它们与 Win32 程序一样有自己的进程 IDs。但是在 Windows NT，Windows 2000 或
Windows XP 中情况并不是这样。在这些操作系统中，16位程序运行在所谓的 VDM 当中（也就是DOS机）。&lt;br&gt;

　　为了在 Windows NT，Windows 2000 和 Windows XP 中枚举16位程序，必须使用一个名为
VDMEnumTaskWOWEx 的函数。它的声明包含在 Windows &amp;nbsp;SDK 中的 VDMDBG.h
中，并且需要在项目中链接 VDMDBG.lib 文件。&lt;br&gt;

　　微软的网上帮助里面有一篇介绍的文章：&lt;a href="http://support.microsoft.com/kb/182559" target="_blank"&gt;如何在 Windows NT、 Windows 2000 和 Windows XP
上使用 VDMDBG 函数&lt;/a&gt;。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-3518804152809045803?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/3518804152809045803/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/11/windows_22.html#comment-form' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3518804152809045803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3518804152809045803'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/11/windows_22.html' title='Windows下如何枚举所有进程'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-5473559669630874282</id><published>2008-11-21T17:15:00.001+08:00</published><updated>2008-11-23T02:03:40.493+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>没有 Windows 键如何锁定屏幕？</title><content type='html'>&lt;p&gt;
   　　锁定屏幕的快捷方式是：Win + L，但是某些键盘没有 Windows 键，那如何方便的锁屏幕呢。
&lt;/p&gt;
&lt;p&gt;
   　　一种方法是，打开开始菜单，选择注销，再选择切换用户。
&lt;/p&gt;
&lt;p&gt;
   　　另外一种是，可以在运行中输入下面的命令，也可以建立一个批处理：
&lt;/p&gt;
&lt;blockquote style="MARGIN-RIGHT: 0px" dir="ltr"&gt;
   &lt;p&gt;
      rundll32.exe user32.dll,LockWorkStation
   &lt;/p&gt;
&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-5473559669630874282?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/5473559669630874282/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/11/windows.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/5473559669630874282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/5473559669630874282'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/11/windows.html' title='没有 Windows 键如何锁定屏幕？'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-7955264632729379270</id><published>2008-11-20T14:03:00.001+08:00</published><updated>2008-11-20T14:20:30.192+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='i18n'/><title type='text'>语言文件 po 与 mo 的编辑和转换</title><content type='html'>&lt;p&gt;
   　　使用 GetText 来实现国际化是要依赖相应的语言文件的。其中 po（或者 pot）文件是原始的翻译文档。而 mo 文件是编译生成的二进制文件。在发布软件的时候，只要将 mo 文件存放在正确的位置，软件根据不同的 locale 设定寻找不同语言的 mo
   文件，这样就能正确显示语言了。
&lt;/p&gt;
&lt;p&gt;
   　　对于普通的软件使用者，如果对软件的翻译不满意，也可以手动修改翻译。这就需要反编译 mo 文件成 po 文件，修改 po 文件，再编译成 mo 文件。
&lt;/p&gt;
&lt;p&gt;
   　　首先下载 &lt;a href="http://gnuwin32.sourceforge.net/packages/gettext.htm" target="_blank"&gt;GetText for Windows&lt;/a&gt;（还需要下载一个 &lt;a href=
   "http://gnuwin32.sourceforge.net/packages/libiconv.htm" target="_blank"&gt;libiconv&lt;/a&gt;，GetText 依赖 libiconv ）。反编译 mo 文件成 po 文件：
&lt;/p&gt;
&lt;blockquote style="MARGIN-RIGHT: 0px" dir="ltr"&gt;
   &lt;p&gt;
      msgunfmt.exe d:\test.mo -o d:\test.po
   &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   编译 po 文件为 mo 文件：
&lt;/p&gt;
&lt;blockquote style="MARGIN-RIGHT: 0px" dir="ltr"&gt;
   &lt;p&gt;
      msgfmt.exe -o d:\test.mo d:\test.po
   &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   　　po 文件用一般的文件编辑器就可以编辑，但是因为编码多为 unicode，所以记事本可能不行。还可以使用开源跨平台的 po 编辑器：&lt;a href="http://www.poedit.net/index.php" target=
   "_blank"&gt;Poedit&lt;/a&gt;。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-7955264632729379270?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/7955264632729379270/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/11/pomo.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7955264632729379270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/7955264632729379270'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/11/pomo.html' title='语言文件 po 与 mo 的编辑和转换'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-307038442406703002</id><published>2008-11-20T13:47:00.001+08:00</published><updated>2008-11-20T14:20:50.662+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SVN'/><title type='text'>SVN 出现乱码问题的解决</title><content type='html'>&lt;p&gt;
   　　安装完 SVN 后如果在命令行运行时出现乱码，则是因为中文编码没有正确配置。在 Windows 系统中，可以设置环境变量：
&lt;/p&gt;
&lt;blockquote style="MARGIN-RIGHT: 0px" dir="ltr"&gt;
   &lt;p&gt;
      LANG = zh_CN.UTF8
      &lt;br /&gt;
      APR_ICONV_PATH = svn安装目录\iconv
      &lt;br /&gt;
      SVN_EDITOR = notepad.exe
   &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   　　如果喜欢英文，也可以把 LANG 设置成 EN_US。至于 iconv 目录存放的是各种编码文件。
&lt;/p&gt;
&lt;p&gt;
   　　还有一个问题，在使用 TortoiseSVN 的时候，可能会遇到这样的错误信息：&amp;quot;璁よ瘉澶辫触&amp;quot;，这个明显是编码错误，转换一下就知道是&amp;quot;认证失败&amp;quot;。我 TSVN 的语言包看了下，这里翻译没有错误，看来是 TSVN 程序的一个
   bug。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-307038442406703002?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/307038442406703002/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/11/svn.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/307038442406703002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/307038442406703002'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/11/svn.html' title='SVN 出现乱码问题的解决'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-6433373083538883041</id><published>2008-11-19T20:07:00.001+08:00</published><updated>2008-11-19T20:39:14.508+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Visual Studio 2008 非正常自动关闭问题</title><content type='html'>&lt;p&gt;
   　　今天，我在笔记本上的 Visual Studio 2008 TS 上编译一个正确的解决方案，发现在生成以后会自动关闭，但是项目已经正确生成。或者虽然不自动关闭，但是手动关闭时会报错。
&lt;/p&gt;
&lt;p&gt;
   　　为了解决这个问题，我甚至还重装了一遍系统。最后终于确定，原来是和安全卫士360冲突...
&lt;/p&gt;
&lt;p&gt;
   　　有些奇怪的是，我使用的另外几台机器安装的程序都一样，也是 VS2008 + 360，但都没有出现这个问题。
&lt;/p&gt;
&lt;p&gt;
   　　顺便说下，Visual Studio 在第一次运行的时候可以看到它在进行一下初始化的配置。如何恢复默认设置呢？只要在 Visual Studio 的安装目录下找到 devenv.exe 文件，然后在命令行中输入：
&lt;/p&gt;
&lt;blockquote&gt;
   &lt;p&gt;
      devenv /ResetSettings
   &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   就可以恢复 IDE 的默认设置了。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-6433373083538883041?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/6433373083538883041/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/11/visual-studio-2008.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/6433373083538883041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/6433373083538883041'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/11/visual-studio-2008.html' title='Visual Studio 2008 非正常自动关闭问题'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-3866337186872518866</id><published>2008-11-18T00:23:00.000+08:00</published><updated>2008-11-18T00:25:49.446+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Coding'/><title type='text'>使用 Native API 探测本机系统信息</title><content type='html'>&lt;p&gt;
   　　一般我们实现系统功能都是通过调用微软提供的公用 Win32 API 函数来实现。但今天我们采用的方法是通过本机系统服务（Native API）来探测本机系统信息。
&lt;/p&gt;
&lt;p&gt;
   　　Native API 是 Windows 用户模式中为上层 Win32 API 提供接口的本机系统服务。微软没有为我们提供关于本机系统服务的文档 (Undocumented)，也就是不会为对它的使用提供任何的保证，所以不提倡使用 Native API 来开发软件。
&lt;/p&gt;
&lt;p&gt;
   　　不过由于通过 Native API 可以实现很多功能，所以相关的参考也可以找到很多。 比如 Gary Nebbett, &lt;em&gt;Windows NT/2000 Native API Reference&lt;/em&gt;. New Riders Publishing,
   2000. 是一本详细的参考书(&lt;a href="http://www.amazon.co.uk/Windows-NT-2000-Native-Reference/dp/1578701996" title="@Amazon"&gt;@Amazon&lt;/a&gt;
   )，内容可能不是最新的，但非常有价值。 而 &lt;a href="http://undocumented.ntinternals.net/" title="The Undocumented Functions"&gt;The Undocumented Functions&lt;/a&gt;
   是一个内容充足的在线参考手册。
   &lt;br /&gt;
   &lt;br /&gt;
   　　为了探测系统信息，我们要使用一个函数：NtQuerySystemInformation（与ZwQuerySystemInformation相同，只是入口不同），这是一个属于 ntdll.dll 的函数。
&lt;/p&gt;
&lt;p&gt;
   　　在 &lt;a href="http://msdn.microsoft.com/en-us/library/ms724509.aspx" target="_blank"&gt;MSDN 上对这个函数定义&lt;/a&gt;如下：
&lt;/p&gt;
&lt;blockquote style="MARGIN-RIGHT: 0px" dir="ltr"&gt;
   &lt;pre xml:space="preserve"&gt;
NTSTATUS WINAPI NtQuerySystemInformation(
  __in       SYSTEM_INFORMATION_CLASS &lt;em&gt;SystemInformationClass&lt;/em&gt;,
  __inout    PVOID &lt;em&gt;SystemInformation&lt;/em&gt;,
  __in       ULONG &lt;em&gt;SystemInformationLength&lt;/em&gt;,
  __out_opt  PULONG &lt;em&gt;ReturnLength&lt;/em&gt;
);
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   　　难点在于各个数据结构是如何定义的。事实上，在不同版本的 Windows 中，这些数据结构的定义是有区别的，这也是微软不建议使用这些 API 的一个原因。
&lt;/p&gt;
&lt;p&gt;
   　　通过我上面给出的资料倒是可以查到这些数据是如何定义的。比如　SYSTEM_INFORMATION_CLASS 是一个集合，如果我想要查看有关系统进程的信息，则要取 5 即 SystemProcessInformation。这个在
   &lt;strong&gt;winternl.h&lt;/strong&gt; 也有定义，但是这个头文件中的定义比较保守。更多的信息还需要自己 Google 才行。（比如上文提到的 &lt;a href=
   "http://undocumented.ntinternals.net/UserMode/Undocumented%20Functions/System%20Information/Structures/SYSTEM_PROCESS_INFORMATION.html"
   target="_blank"&gt;The Undocumented Functions 中的 SYSTEM_PROCESS_INFORMATION&lt;/a&gt;）
&lt;/p&gt;
&lt;p&gt;
   　　对这个函数更详细的说明可以参见：&lt;a href="http://www.inkings.cn/blog/?p=996" rel=
   "bookmark"&gt;NtQuerySystemInformation(ZwQuerySystemInformation)函数说明&lt;/a&gt;，这篇文章也有很全的 SYSTEM_INFORMATION_CLASS 是如何定义的。以及我&lt;a href=
   "http://hi.baidu.com/ring3world/blog/item/3f0fb1dbf1fa0a65d0164eab.html" target=
   "_blank"&gt;最早参考的NtQuerySystemInformation&lt;/a&gt;，也讲了大部分数据结构如何定义。
&lt;/p&gt;
&lt;p&gt;
   　　至于如果调用这个函数在分析完数据结构后就比较简单了。下面是一个简单的示例，里面还有很多没有说明的类型，不影响理解，进一步查看相关资料就能清楚了。
&lt;/p&gt;
&lt;blockquote style="MARGIN-RIGHT: 0px" dir="ltr"&gt;
   &lt;pre xml:space="preserve"&gt;
// 定义类型 
typedef NTSTATUS (WINAPI *PROCNTQSI)(UINT,PVOID,ULONG,PULONG); 
PROCNTQSI NtQuerySystemInformation;

// 调用 
NtQuerySystemInformation = (PROCNTQSI)GetProcAddress( 
GetModuleHandle(&amp;quot;ntdll&amp;quot;), 
&amp;quot;NtQuerySystemInformation&amp;quot; 
);
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   　　网上有很多例子可以参考，第一个是获取每个进程和线程：&lt;a href="http://www.alexfedotov.com/samples/threads.asp" target="_blank"&gt;Processes and Threads
   Sample&lt;/a&gt;，讲解详细（网页上有一个小笔误），提供代码下载，用到了 Windows NT DDK，但是如果用上面我说的方法调用的话就不需要了 DDK 了。研究明白了这个，要点就全掌握了。
&lt;/p&gt;
&lt;p&gt;
   　　还有一个是 &lt;a href="http://blog.csdn.net/afxid/archive/2006/06/09/784526.aspx"&gt;Windows NT/2000系统中如何获取系统的启动时间&lt;/a&gt;，也有代码下载。
&lt;/p&gt;
&lt;p&gt;
   　　上面提到的 GetProcAddress，GetModuleHandle，要涉及到动态链接库的使用。针对性的，可以参考：&lt;a href="http://bbs.pediy.com/showthread.php?threadid=20230" target=
   "_blank"&gt;3个脱壳相关的重要函数介绍&lt;/a&gt;。简单地说就是：
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;如果文件已经被映射进了调用进程的地址空间，则函数 GetModuleHandle 返回指定模块的句柄。注意，GetModuleHandle 是在不增加引用次数的情况下返回已映射模块的句柄。
   &lt;/li&gt;
   &lt;li&gt;LoadLibrary 把模块映射进调用进程的地址空间内。映射进地址空间后，如果必要，则增加模块的引用次数。最后用 FreeLibrary 把它从进程地址空间释放掉。
   &lt;/li&gt;
   &lt;li&gt;使用 GetProcAddress 函数返回指定的输出动态链接库内的函数地址。
   &lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-3866337186872518866?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/3866337186872518866/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/11/native-api.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3866337186872518866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3866337186872518866'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/11/native-api.html' title='使用 Native API 探测本机系统信息'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-94882129234772150</id><published>2008-11-12T15:58:00.000+08:00</published><updated>2008-11-12T16:04:45.704+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Office'/><title type='text'>PowerPoint 2007无法输入中文问题的解决</title><content type='html'>&lt;p&gt;
   　　最近遇到一个 Office PowerPoint 2007 的 bug，因为某些原因，一般是安装、删除输入法，导致在 PowerPoint 中无法输入中文，但是英文输入没有问题，也可以复制粘贴中文。
&lt;/p&gt;
&lt;p&gt;
   　　网上给出的解决方案是开启高级文字服务：控制面板-区域与语言-语言-详细-高级-去掉&amp;quot;关闭高级文字服务&amp;quot;的勾。
&lt;/p&gt;
&lt;p&gt;
   　　但是我用了也没有效果。最后重新安装了 Office 中的微软拼音输入法后问题解决。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-94882129234772150?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/94882129234772150/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/11/powerpoint-2007.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/94882129234772150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/94882129234772150'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/11/powerpoint-2007.html' title='PowerPoint 2007无法输入中文问题的解决'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-1394129165961325990</id><published>2008-11-10T15:38:00.001+08:00</published><updated>2008-11-10T15:38:59.462+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>在Python中调用默认浏览器</title><content type='html'>&lt;p&gt;
   　　前面讲了用 Python 模拟浏览器进行登陆、抓取页面然后分析等操作。有的时候，我们还需要把筛选出的页面显示出来，最简单的方法自然是调用系统默认的浏览器。
&lt;/p&gt;
&lt;p&gt;
   　　直接使用标准库中的 webbrowser 模块，看下面的例子：
&lt;/p&gt;
&lt;blockquote style="MARGIN-RIGHT: 0px" dir="ltr"&gt;
   &lt;pre xml:space="preserve"&gt;
import webbrowser 
webbrowser.open_new_tab(&amp;#39;www.163.com&amp;#39;)   
&lt;/pre&gt;
&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-1394129165961325990?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/1394129165961325990/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/11/python_10.html#comment-form' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1394129165961325990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1394129165961325990'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/11/python_10.html' title='在Python中调用默认浏览器'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-3389182814184321732</id><published>2008-11-09T19:01:00.001+08:00</published><updated>2008-11-10T15:38:06.156+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Python：通过代理访问网络</title><content type='html'>&lt;p&gt;　　之前说过&lt;a href="http://arccos.blogspot.com/2008/10/python.html"&gt;使用 Python 登陆网站&lt;/a&gt;，我们已经可以获取任意一个网址的数据了。但是，在实际应用中，代理服务器往往是少不了的。&lt;/p&gt;
&lt;p&gt;　　在 urllib2 模块中，每一个 opener 可以用多个 handler 来增强功能，在前一篇，我们使用的是 Cookie 的支持，我们只要在这里再加上 proxy 支持就可以了。&lt;/p&gt;
&lt;blockquote style="MARGIN-RIGHT: 0px" dir="ltr"&gt;
&lt;pre&gt;
#!/usr/bin/env python
# -*- coding: GB2312 -*-
# 

from urllib import urlencode
import cookielib, urllib2

# 准备cookie
cj = cookielib.LWPCookieJar()
cookie_support = urllib2.HTTPCookieProcessor(cj)

# 设置代理服务器
proxy_info = {  
        'host' : '127.0.0.1' ,
        'port' : 8118
}
proxy_support = urllib2 . ProxyHandler ( { 'http' : \
        'http://%(host)s:%(port)d' % proxy_info } ) 

# 构造opener
opener = urllib2.build_opener(cookie_support, proxy_support)
urllib2.install_opener(opener)

# 打开网页
page = urllib2.urlopen("http://www.163.com")
print page.read(1000)
page.close()
&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-3389182814184321732?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/3389182814184321732/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/11/python.html#comment-form' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3389182814184321732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3389182814184321732'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/11/python.html' title='Python：通过代理访问网络'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-1865806959487601022</id><published>2008-11-01T19:17:00.000+08:00</published><updated>2008-11-01T19:23:47.416+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Essay'/><title type='text'>我所不能理解的艺术</title><content type='html'>&lt;p&gt;　　据说，古今中外，不少伟大的雕塑和建筑，在问世之初都饱受非议，比如埃菲尔铁塔最初被认为是极其丑陋的庞然大物，现在已是法国的象征和巴黎第一地标。&lt;/p&gt;
&lt;p&gt;　　所以，对于我这个不懂艺术的人来说，看到一个狗屁不是的雕塑时，也不敢轻易发表意见。万一哪天这坨垃圾变成国宝了，我岂不是显得很不识货？&lt;/p&gt;
&lt;p&gt;　　因此，我绝对不说下面这两个立在北京大学光华管理学院新楼门前的两个玩意儿是垃圾。&lt;/p&gt;
&lt;center&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="http://lh5.ggpht.com/_1NZOc1C8JjM/SQw7YwPB7kI/AAAAAAAACR8/v4h8PEVsU6w/guanghua_laozi.jpg?imgmax=800" alt="guanghua_laozi.jpg" height="800" width="600"/&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p style="TEXT-ALIGN: center"&gt;作者：田世信，名称：《刚柔之道－－老子像》&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;center&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="http://lh3.ggpht.com/_1NZOc1C8JjM/SQw7anM4LuI/AAAAAAAACSA/ZdD3Gv41XEY/guanghua_zhanli.jpg?imgmax=800" alt="guanghua_zhanli.jpg" height="800" width="600"/&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p style="TEXT-ALIGN: center"&gt;作者：申红飙，名称：《蒙古人－－站》&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;p&gt;　　不看作者的解释（见&lt;a href="http://news.sina.com.cn/s/2008-10-31/025716559792.shtml" target="_blank"&gt;北大校园裸体雕塑与老子雕像相对&lt;/a&gt;），我是真不知道原来那个吐舌头的俏皮老头（或者说像个吊死鬼），是"源自孔子向老子请教何为刚柔之道，老子吐舌露牙、以唇齿比拟刚柔"，还有那个光屁股遛鸟男是在展示"知识就是力量"。&lt;/p&gt;
&lt;p&gt;　　我不敢妄谈艺术，作者对这两个雕塑给出了合理的解释，为什么还有这么多人觉得不能接受呢？我想，这莫非是作者的功夫不到，不能表达出自己的思想？毕竟创作意图谁都会扯，但作品能否完美表现出来，就是艺术家该做的事情了。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-1865806959487601022?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/1865806959487601022/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/11/blog-post.html#comment-form' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1865806959487601022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1865806959487601022'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/11/blog-post.html' title='我所不能理解的艺术'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_1NZOc1C8JjM/SQw7YwPB7kI/AAAAAAAACR8/v4h8PEVsU6w/s72-c/guanghua_laozi.jpg?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-6385106813194972649</id><published>2008-11-01T15:10:00.001+08:00</published><updated>2008-12-01T21:23:24.987+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Firefox 3 无法保存 Cookie 的解决方法</title><content type='html'>&lt;p&gt;　　前几天，我的 Firefox 突然无法保存 Cookie 了，问题是：每次退出 Firefox 再进入，以前论坛的登陆信息都不存在了，需要重新登陆。&lt;/p&gt;
&lt;p&gt;　　我检查了各项设置（选项－隐私－Cookie），发现没有问题。我就没有理会，直到今天才得到解决方法：&lt;/p&gt;
&lt;p&gt;　　关闭 Firefox，把 Profiles 目录下的 cookies.sqlite 删除即可。&lt;/p&gt;
&lt;p&gt;　　分析原因，可能是某次非正常关闭，导致保存 Cookies 的数据库出错了。删除这个数据库，再次开启 Firefox 会重新建立一个，就正常了。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-6385106813194972649?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/6385106813194972649/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/11/firefox-3-cookie.html#comment-form' title='17 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/6385106813194972649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/6385106813194972649'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/11/firefox-3-cookie.html' title='Firefox 3 无法保存 Cookie 的解决方法'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-4831049649584836061</id><published>2008-10-30T22:38:00.003+08:00</published><updated>2009-03-09T18:42:27.486+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>使用 Python 登录网站</title><content type='html'>&lt;p&gt;
   　　对于大部分论坛，我们想要抓取其中的帖子分析，首先需要登录，否则无法查看。
&lt;/p&gt;
&lt;p&gt;
   　　这是因为 HTTP 协议是一个无状态(Stateless)的协议，服务器如何知道当前请求连接的用户是否已经登录了呢？有两种方式：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;在URI 中显式地使用 Session ID；
   &lt;/li&gt;
   &lt;li&gt;利用 Cookie，大概过程是登录一个网站后会在本地保留一个 Cookie，当继续浏览这个网站的时候，浏览器会把 Cookie 连同地址请求一起发送过去。
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　Python 提供了相当丰富的模块，所以对于这种网络操作只要几句话就可以完成。我以登录 QZZN 论坛为例，事实上下面的程序几乎所有的 PHPWind 类型的论坛都是适用的。
&lt;/p&gt;
&lt;blockquote&gt;
   &lt;pre xml:space="preserve"&gt;
# -*- coding: GB2312 -*-

from urllib import urlencode
import cookielib, urllib2

# cookie
cj = cookielib.LWPCookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)

# Login
user_data = {&amp;#39;pwuser&amp;#39;: &amp;#39;你的用户名&amp;#39;,
             &amp;#39;pwpwd&amp;#39;: &amp;#39;你的密码&amp;#39;,
             &amp;#39;step&amp;#39;:&amp;#39;2&amp;#39;
            }
url_data = urlencode(user_data)
login_r = opener.open(&amp;quot;http://bbs.qzzn.com/login.php&amp;quot;, url_data)
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   　　一些注释：
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;urllib2 显然是比 urllib 高级一点的模块，里面包括了如何使用 Cookies。
   &lt;/li&gt;
   &lt;li&gt;在 urllib2 中，每个客户端可以用一个 opener 来抽象，每个 opener 又可以增加多个 handler 来增强其功能。
   &lt;/li&gt;
   &lt;li&gt;在构造 opener 时指定了 HTTPCookieProcessor 做为 handler，因此这个 handler 支持 Cookie。
   &lt;/li&gt;
   &lt;li&gt;使用 isntall_opener 后，调用 urlopen 时会使用这个 opener。
   &lt;/li&gt;
   &lt;li&gt;如果不需要保存 Cookie，cj 这个参数可以省略。
   &lt;/li&gt;
   &lt;li&gt;user_data 存放的就是登录所需要的信息，在登录论坛的时候把这个信息传递过去就行了。
   &lt;/li&gt;
   &lt;li&gt;urlencode 功能是把字典 user_data 编码成&amp;quot;?pwuser=username&amp;amp;pwpwd=password&amp;quot;的形式，这样做是为了使程序易读一些。
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   　　最后一个问题是，pwuser、pwpwd 这类的名字是从哪儿来的，这就要分析需要登录的网页了。我们知道，一般的登录界面都是一个表单，节选如下：
&lt;/p&gt;
&lt;blockquote style="MARGIN-RIGHT: 0px" dir="ltr"&gt;
   &lt;p&gt;
      &amp;lt;form action=&amp;quot;login.php?&amp;quot; method=&amp;quot;&lt;span style="COLOR: #ff0000"&gt;post&lt;/span&gt;&amp;quot; name=&amp;quot;login&amp;quot;
      onSubmit=&amp;quot;this.submit.disabled = true;&amp;quot;&amp;gt;
      &lt;br /&gt;
      &amp;lt;input type=&amp;quot;hidden&amp;quot; value=&amp;quot;&amp;quot; name=&amp;quot;forward&amp;quot; /&amp;gt;
      &lt;br /&gt;
      &amp;lt;input type=&amp;quot;hidden&amp;quot; value=&amp;quot;http://bbs.qzzn.com/index.php&amp;quot; name=&amp;quot;jumpurl&amp;quot; /&amp;gt;
      &lt;br /&gt;
      &amp;lt;input type=&amp;quot;hidden&amp;quot; value=&amp;quot;&lt;span style="COLOR: #ff0000"&gt;2&lt;/span&gt;&amp;quot; name=&amp;quot;&lt;span style=
      "COLOR: #ff0000"&gt;step&lt;/span&gt;&amp;quot; /&amp;gt;
      &lt;br /&gt;
      ...
      &lt;br /&gt;
      &amp;lt;td width=&amp;quot;20%&amp;quot; onclick=&amp;quot;document.login.pwuser.focus();&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;radio&amp;quot;
      name=&amp;quot;lgt&amp;quot; value=&amp;quot;0&amp;quot; checked /&amp;gt;用户名 &amp;lt;input type=&amp;quot;radio&amp;quot; name=&amp;quot;lgt&amp;quot; value=&amp;quot;1&amp;quot;
      /&amp;gt;UID&amp;lt;/td&amp;gt;
      &lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;input class=&amp;quot;input&amp;quot; type=&amp;quot;text&amp;quot; maxLength=&amp;quot;20&amp;quot; name=&amp;quot;&lt;span style=
      "COLOR: #ff0000"&gt;pwuser&lt;/span&gt;&amp;quot; size=&amp;quot;40&amp;quot; tabindex=&amp;quot;1&amp;quot; /&amp;gt; &amp;lt;a
      href=&amp;quot;reg1ster.php&amp;quot;&amp;gt;马上注册&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;
      &lt;br /&gt;
      &amp;lt;td&amp;gt;密　码&amp;lt;/td&amp;gt;
      &lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;input class=&amp;quot;input&amp;quot; type=&amp;quot;password&amp;quot; maxLength=&amp;quot;20&amp;quot; name=&amp;quot;&lt;span style=
      "COLOR: #ff0000"&gt;pwpwd&lt;/span&gt;&amp;quot; size=&amp;quot;40&amp;quot; tabindex=&amp;quot;2&amp;quot; /&amp;gt; &amp;lt;a href=&amp;quot;sendpwd.php&amp;quot;
      target=&amp;quot;_blank&amp;quot;&amp;gt;找回密码&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;
      &lt;br /&gt;
      ...
      &lt;br /&gt;
      &amp;lt;/form&amp;gt;
      &lt;br /&gt;
   &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
   　　从这里可以看出，我们需要输入的用户名密码对应的就是 pwuser 和 pwpwd，而 step 对应的则是登录（这个是尝试出来的）。
&lt;/p&gt;
&lt;p&gt;
   　　注意到，这个论坛表单采用的是 post 方式，如果是 get 方式则本文的方法就需要变动一下，不能直接 open，而是应该首先 Request，然后再 open。更详细的请看手册...
&lt;/p&gt;
&lt;p&gt;
   　　有一篇文章供参考：&lt;a href="http://wiki.woodpecker.org.cn/moin/PythonClientCookie" target="_blank"&gt;解决在 Python 中登录网站的问题&lt;/a&gt;。
&lt;/p&gt;
&lt;blockquote style="MARGIN-RIGHT: 0px" dir="ltr"&gt;
   &lt;p&gt;
      2009-03-09Up：在 Python 3 下可以参考：&lt;a href="http://arccos.blogspot.com/2009/03/python-30.html"&gt;Python 3.0 中的编码和字符串&lt;/a&gt;。
   &lt;/p&gt;
&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-4831049649584836061?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/4831049649584836061/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/10/python.html#comment-form' title='6 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/4831049649584836061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/4831049649584836061'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/10/python.html' title='使用 Python 登录网站'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-5940501508662695645</id><published>2008-10-23T23:18:00.000+08:00</published><updated>2008-10-23T23:31:05.842+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Essay'/><title type='text'>2008通讯展归来</title><content type='html'>&lt;p&gt;　　今天去看了"2008年中国国际信息通信展览会"（P&amp;amp;T/EXPO COMM CHINA 2008），在顺义那个新的国际展览中心。太远了，坐车都得一个多小时。听说附近有豪华别墅区，王菲就住在这&lt;del&gt;穷乡僻壤&lt;/del&gt;里。&lt;/p&gt;
&lt;p&gt;　　比起以前参加的展会来说，人不算很多，我觉得还是太偏僻的缘故。虽然有所谓的摆渡车，但也就是那么几辆大巴。&lt;/p&gt;
&lt;p&gt;　　展会上没有见到什么出彩的东西，或许是因为拿出来展示的都是较为成熟的技术吧。&lt;/p&gt;
&lt;p&gt;　　不多说了，因为大部分看我 Blog 的人对通讯这口没啥兴趣。其实我也是...最后，放一张图，请放心，不是什么电子元器件...&lt;/p&gt;
&lt;div style="TEXT-ALIGN: center"&gt;
&lt;table style="WIDTH: auto" align="center"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p style="TEXT-ALIGN: center"&gt;&lt;a href="http://lh6.ggpht.com/arcos.zf/SQCTCdGMMsI/AAAAAAAACQQ/fhRmvOmaRU0/2008_OKWAP.jpg"&gt;&lt;img src="http://lh6.ggpht.com/arcos.zf/SQCTCdGMMsI/AAAAAAAACQQ/fhRmvOmaRU0/s400/2008_OKWAP.jpg" height="400" width="300"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="FONT-SIZE: 11px; FONT-FAMILY: arial,sans-serif; TEXT-ALIGN: center"&gt;OKWAP 展台(点击查看)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;　　btw，&amp;lt;div style="TEXT-ALIGN: center"&amp;gt; 不能在 Firefox 下令表格居中？在 IE 下倒是没有问题。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-5940501508662695645?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/5940501508662695645/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/10/2008.html#comment-form' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/5940501508662695645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/5940501508662695645'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/10/2008.html' title='2008通讯展归来'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/arcos.zf/SQCTCdGMMsI/AAAAAAAACQQ/fhRmvOmaRU0/s72-c/2008_OKWAP.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-2561604508079205692</id><published>2008-10-21T16:40:00.004+08:00</published><updated>2008-12-16T17:57:51.222+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>也说Windows黑屏</title><content type='html'>&lt;p&gt;
   　　本来不想写的，因为微软打击盗版已经不是一天两天了，这次使用的手段也不新鲜。关键的是，由此涌现出无数[文明用语]，让我很震惊。
&lt;/p&gt;
&lt;p&gt;
   　　首先是抵制的。这种人太无耻，用了盗版还理直气壮。有一个新闻是：&lt;a href=
   "http://it.people.com.cn/GB/42891/42893/8196453.html"&gt;中国网民向微软递交抗议信&lt;/a&gt;。微软打击的就是这帮人，本身就没给微软带来利益，难道还要讨好你不成？
&lt;/p&gt;
&lt;p&gt;
   　　其次是上告的。比如：&lt;a href="http://www.cnbeta.com/articles/67483.htm"&gt;微软黑屏行动是有计划的大规模网络犯罪&lt;/a&gt;，&lt;a href=
   "http://www.cnbeta.com/articles/67547.htm"&gt;律师向公安部举报微软黑屏涉嫌黑客攻击犯罪&lt;/a&gt;。尤其是这个律师，简直没文化啊，有人还专门写文章从技术角度对其批驳，太给他面子了。
&lt;/p&gt;
&lt;p&gt;
   　　还有让中国自己做操作系统的。他们说，中国要自强，自己做系统，把微软赶回老家。参见：&lt;a href="http://kisshi.com/2008/10/20/wei-ruan-hei-ping/" title=
   "金山抵制微软黑屏评论精选"&gt;金山抵制微软黑屏评论精选&lt;/a&gt;。暂且不说中国自己开发一个操作系统的可能性及其付出的代价。我就问这种人一句：中国真出了操作系统， 你会掏钱买吗？如果真的有人辛辛苦苦做出一个操作系统，不是国家买单，就是全都饿死。
&lt;/p&gt;
&lt;p&gt;
   　　有人觉得，微软定价太贵，一个操作系统就要成百上千。我却觉得，从软件开发的角度来讲，如果真像某些人希望的那样，一个 Windows
   只要50元，那微软还是别开发了，连员工的工资都不够，更别说赚钱了。我承认，2000元一套系统的价钱很多人承受不起，但是没有操作系统，2万元的机器也只能当摆设。
&lt;/p&gt;
&lt;p&gt;
   　　有人不明白，为什么微软会提示：&amp;quot;您是盗版软件受害者&amp;quot;，他们会觉得，我明明是盗版软件的受益者啊。说好听点，这种人是目光短浅，说难听点，就是偷了别人钱还在疑惑：明明能偷钱，干嘛还有人要辛辛苦苦工作。
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-2561604508079205692?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/2561604508079205692/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/10/windows.html#comment-form' title='8 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2561604508079205692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2561604508079205692'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/10/windows.html' title='也说Windows黑屏'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-2914431460801737474</id><published>2008-10-16T19:59:00.000+08:00</published><updated>2008-10-16T20:00:30.788+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><title type='text'>硬盘速度突然下降问题的解决</title><content type='html'>&lt;p&gt;　　前几天在折腾那几块硬盘的时候，突发发现其中一块读写速度骤降，从原先的 80MB/s 降到了 8.5MB/s。使用磁盘检查、更换数据线、去掉其他硬盘都没有解决问题。&lt;/p&gt;
&lt;p&gt;　　后来发现原来是传输模式变成了PIO，在设备管理器，SCSI 和 RAID 控制器下面，改回 DMA 5 就恢复了。&lt;/p&gt;
&lt;p&gt;　　分析故障出现的原因，可能是有一次硬盘线没有插好，导致 Windows XP 为了保护硬盘而关闭 DMA 模式，只使用兼容模式。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-2914431460801737474?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/2914431460801737474/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/10/blog-post_16.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2914431460801737474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2914431460801737474'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/10/blog-post_16.html' title='硬盘速度突然下降问题的解决'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-4873443296782602372</id><published>2008-10-09T23:10:00.000+08:00</published><updated>2008-10-09T23:11:05.155+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Essay'/><title type='text'>新闻二则</title><content type='html'>&lt;p&gt;　　经人介绍，在&lt;a href="http://www.ifeng.com/" target="_blank"&gt;凤凰网&lt;/a&gt;上看到了两则新闻，很有趣...&lt;/p&gt;
&lt;p&gt;2008年09月28日：&lt;/p&gt;
&lt;p&gt;　　&lt;a href="http://phtv.ifeng.com/phinfo/200809/0928_45_810365.shtml" target="_blank"&gt;温家宝：在凤凰电视上看到曼德尔森喝中国牛奶很感动&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2008年10月08日：&lt;/p&gt;
&lt;p&gt;　　&lt;a href="http://finance.ifeng.com/news/hqcj/20081008/173686.shtml" target="_blank"&gt;英商务大臣曼德尔森上任当天 肾结石发作接受手术&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-4873443296782602372?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/4873443296782602372/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/10/blog-post.html#comment-form' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/4873443296782602372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/4873443296782602372'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/10/blog-post.html' title='新闻二则'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-705875348322439996</id><published>2008-10-04T20:46:00.000+08:00</published><updated>2008-10-04T20:49:14.448+08:00</updated><title type='text'>希捷 ST31000340AS 1T 硬盘</title><content type='html'>&lt;p&gt;　　硬盘越来越便宜了...几年前我还使用刻录 CD 保存数据，但是现在感觉用 DVD 刻录也不如再买块硬盘方便。下图来自 it168。&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt;&lt;img src="http://lh6.ggpht.com/arcos.zf/SOdmQ-cXpEI/AAAAAAAACO8/VCuNLo7jlKY/zrclip_001p1a2f1331.png?imgmax=512" height="338" width="450"/&gt;&lt;/p&gt;
&lt;p&gt;　　我的经验来看，刻录光盘首先受到容量限制，不能很好地组织数据；刻录花费大量的时间；刻完的盘还会自然损坏，根本不可能像所说的那样放上30年。&lt;/p&gt;
&lt;p&gt;　　这款希捷 ST31000340AS 1T 硬盘已经不到900元，我觉得比用光盘划算多了。&lt;/p&gt;
&lt;p&gt;　　不是专业评测，我也不怎么关心硬盘速度，实际使用中两块硬盘拷贝速度约为 35MB/s（其中一块是 IDE 希捷160G），还算满意。&lt;/p&gt;
&lt;p&gt;　　找些毛病：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;或许是电机声音大，很高频的噪音，我室友听不到，我倒是听的清楚。（这点也可能是我误会，但反正我装上它就能听见，拔下就听不到）&lt;/li&gt;
&lt;li&gt;做工没有几年前的那么细致了...但还是不错，反向封装设计，看不到元器件。&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-705875348322439996?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/705875348322439996/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/10/st31000340as-1t.html#comment-form' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/705875348322439996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/705875348322439996'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/10/st31000340as-1t.html' title='希捷 ST31000340AS 1T 硬盘'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/arcos.zf/SOdmQ-cXpEI/AAAAAAAACO8/VCuNLo7jlKY/s72-c/zrclip_001p1a2f1331.png?imgmax=512' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-2720055156273983335</id><published>2008-09-30T20:42:00.000+08:00</published><updated>2008-09-30T21:46:54.216+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ACG'/><title type='text'>热烈庆祝Code Geass R2完结</title><content type='html'>&lt;p&gt;　　叛逆的鲁路修经过两部折腾终于完结了。虽然第二部剧情进展略逊色于第一部，吐便当的也是一个接一个，但大结局还是相当精彩、值得回味的。&lt;/p&gt;
&lt;p&gt;　　回顾整个剧情，有的人早就死了，比如尤菲米娅；有的人肯定要死，最后的确死了，比如罗洛；有的人总是要死，最后也没死成，比如藤堂；有的人早该死了，最后也不知死没死，比如黎星刻。&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt;&lt;img src="http://lh3.ggpht.com/arcos.zf/SOId9JTgpkI/AAAAAAAACN4/ElYBQFzSYUk/code_geass_25_all.jpg?imgmax=512" style="DISPLAY: inline; WIDTH: 512px; HEIGHT: 288px" height="288" alt="code_geass_25_all.jpg" width="512"/&gt;&lt;/p&gt;
&lt;p&gt;　　这张全家福里面就没有黎星刻的影子，莫非在照相？还有下面一张，画面正中神虎倒是站着，里面不知坐的是不是黎大叔。&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt;&lt;img src="http://lh4.ggpht.com/arcos.zf/SOId-I9dlXI/AAAAAAAACN8/0tUz1mL-H4s/code_geass_25_meet.jpg?imgmax=512" style="DISPLAY: inline; WIDTH: 512px; HEIGHT: 288px" height="288" alt="code_geass_25_meet.jpg" width="512"/&gt;&lt;/p&gt;
&lt;p&gt;　　据我分析，编剧一开始是想让他死的，不然他就文武双全、盖世无双了。配角怎么能比主角强呢，所以给他安了一个绝症，天天吐血，随时准备领盒饭。不过，随着剧情的发展，观众们都不想（我推测...）让萝莉天子早早守寡，于是就没法死了。但是，不死又没法解释前面设下的伏笔，于是就这样隐晦的表示了。按照惯例 ，这个家伙肯定没死，在后面偷着乐呢。&lt;/p&gt;
&lt;p&gt;　　为了确认这个家伙死没死，我还又看了一遍...发现了这张图。说明至少这个时候还活着。&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt;&lt;img src="http://lh4.ggpht.com/arcos.zf/SOId_PQl2GI/AAAAAAAACOA/Jp-3vwBYj-A/code_geass_25_li.jpg?imgmax=512" style="DISPLAY: inline; WIDTH: 512px; HEIGHT: 288px" height="288" alt="code_geass_25_li.jpg" width="512"/&gt;&lt;/p&gt;
&lt;p&gt;　　好了，不说他了，谈谈鲁路修。这更不用说了，肯定死不了。有人问，他被捅了个透心凉，还大出血，咋会没死呢？答案很简单，因为他有 Code 啊。至于所谓的 Code 是不是只有在被杀死一次后才能显现，我就不分析了。（那些说是咲世子在里面掺和的被我无视了。）反正，最后他和 C.C 去乡下拉马车了。&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt;&lt;img src="http://lh4.ggpht.com/arcos.zf/SOIeAX4MtBI/AAAAAAAACOE/mh5wiKUmxCM/code_geass_25_lulucc.jpg?imgmax=512" style="DISPLAY: inline; WIDTH: 512px; HEIGHT: 288px" height="288" alt="code_geass_25_lulucc.jpg" width="512"/&gt;&lt;/p&gt;
&lt;p&gt;　　有人说娜娜莉获得了能力：最后鲁路修被刺跌落到娜娜莉身边，娜娜莉摸到鲁路修的时候看到鲁路修的历史（或记忆）。不过我觉得这是被施与了 Geass 的典型症状。&lt;/p&gt;
&lt;p&gt;　　其他角色们一个个都过得挺滋润，卡莲上学去了，聒噪男玉成开了间酒馆，扇把人家的肚子搞大了，最搞笑的竟然是 Orange 真去种橘子了，还是和阿妮娅一起。&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt;&lt;img src="http://lh4.ggpht.com/arcos.zf/SOIeC5gOyYI/AAAAAAAACOI/5Jw6RFFbMB4/code_geass_25_orange.jpg?imgmax=512" style="DISPLAY: inline; WIDTH: 512px; HEIGHT: 288px" height="288" alt="code_geass_25_orange.jpg" width="512"/&gt;&lt;/p&gt;
&lt;p&gt;　　嗯，以上内容涉及到分析的都是我扯的，到底谁死谁活还是编剧说了算。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-2720055156273983335?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/2720055156273983335/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/09/code-geass-r2.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2720055156273983335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2720055156273983335'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/09/code-geass-r2.html' title='热烈庆祝Code Geass R2完结'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/arcos.zf/SOId9JTgpkI/AAAAAAAACN4/ElYBQFzSYUk/s72-c/code_geass_25_all.jpg?imgmax=512' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-2947472487546452495</id><published>2008-09-27T15:39:00.000+08:00</published><updated>2008-09-27T15:57:28.998+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Essay'/><category scheme='http://www.blogger.com/atom/ns#' term='Blog'/><title type='text'>百度搜索"晓月"</title><content type='html'>&lt;p&gt;　　今天发现在百度搜索"&lt;a href="http://www.baidu.com/s?ie=utf-8&amp;amp;wd=晓月" target="_blank"&gt;晓月&lt;/a&gt;"，竟然能排在第一个，原来的什么家具城、娱乐场所都跑到第二页去了。&lt;/p&gt;
&lt;p&gt;　　莫非是百度因为奶粉问题，想要低调处理竞价排名？&lt;/p&gt;
&lt;p&gt;　　btw，我的 Blog 应该采用的是 UTF-8 编码，所以如果直接嵌入百度的搜索结果为：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://www.baidu.com/s?wd=晓月" target="_blank"&gt;http://www.baidu.com/s?wd=晓月&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;就会出现乱码。所以需要加上编码：&lt;/p&gt;
&lt;blockquote style="MARGIN-RIGHT: 0px" dir="ltr"&gt;
&lt;p&gt;&lt;a href="http://www.baidu.com/s?ie=utf-8&amp;amp;wd=晓月" target="_blank"&gt;http://www.baidu.com/s?ie=utf-8&amp;amp;wd=晓月&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-2947472487546452495?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/2947472487546452495/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/09/blog-post_27.html#comment-form' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2947472487546452495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/2947472487546452495'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/09/blog-post_27.html' title='百度搜索&amp;quot;晓月&amp;quot;'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-3308287876691267982</id><published>2008-09-27T01:00:00.000+08:00</published><updated>2008-09-27T15:37:15.852+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Toolbar'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>在 Google Toolbar 加入百度搜索和使用感受</title><content type='html'>&lt;blockquote&gt;
&lt;p&gt;2008-09-27Up:&lt;/p&gt;
&lt;p&gt;　　发现一点小问题，我把PageRank的小图标拖到了工具条外，然后把工具条隐藏，发现它就不起作用了。只有当我显示工具条的时候，PageRank 才会正确显示，否则就会提示没有 PageRank 信息。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;　　Google Toolbar for Firefox 终于正经更新了一下（&lt;a href="http://www.google.com/tools/firefox/toolbar/" target="_blank"&gt;下载&lt;/a&gt;）。在没有工具条的日子里，我最常用的功能 Google Bookmarks 是用 &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/2888" target="_blank"&gt;GMarks&lt;/a&gt; 替代，&lt;a href="http://arccos.blogspot.com/2008/05/google-toolbar-google-web-history.html" target="_blank"&gt;网页历史使用 GM 脚本替代&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;　　我的布局采用替代 Firefox 默认搜索框，这样可以通过下拉表单选择最近的搜索。有很多搜索选项：Google 搜索，站内搜索、网页历史搜索、Gmail搜索等等。我希望能添加百度搜素，方法很简单，只要在百度网页的搜索框上点右键，在菜单中选择"生成自定义搜素"，就可以生成百度搜素的按钮了。我记得在上一个版本还需要使用高级编辑功能修改网页编码，现在直接添加就可以了。&lt;/p&gt;
&lt;p&gt;　　GMarks 虽然也可以使用 Google 书签，但是在添加一个书签的时候很不方便，而 Google Toolbar 自带的书签按钮点起来就非常舒适。&lt;/p&gt;
&lt;p&gt;　　同时 Google Toolbar 整合了 Google Notebook，原来的 Google Notebook 扩展被直接替换，连删除都省了。&lt;/p&gt;
&lt;p&gt;　　还有一个同步工具栏的功能，挺好的，我记得以前自定义按钮都是存放在本地硬盘的用户文件夹下，为制作便携版造成了很大的不便。&lt;/p&gt;
&lt;p&gt;　　新增加了表单填充功能，不太实用。&lt;/p&gt;
&lt;p&gt;　　值得一提的是，新版本的按钮功能似乎可以非常高级，比如添加 Google Talk 到一个按钮上。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-3308287876691267982?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/3308287876691267982/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/09/google-toolbar.html#comment-form' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3308287876691267982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3308287876691267982'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/09/google-toolbar.html' title='在 Google Toolbar 加入百度搜索和使用感受'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-1904088896954372114</id><published>2008-09-24T22:48:00.000+08:00</published><updated>2008-09-24T22:53:08.709+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Photo'/><category scheme='http://www.blogger.com/atom/ns#' term='Essay'/><title type='text'>福猴...</title><content type='html'>&lt;p&gt;　　据说来自新加坡。&lt;/p&gt;
&lt;p&gt;&lt;img src="http://lh4.ggpht.com/arcos.zf/SNpURmVnA4I/AAAAAAAACNU/uS0VnJg-GCA/fuhou1.jpg?imgmax=400" alt="fuhou1.jpg" height="147" width="400"/&gt;&lt;img src="http://lh6.ggpht.com/arcos.zf/SNpUT43gnvI/AAAAAAAACNY/ASzTKAsTNjg/fuhou2.jpg?imgmax=400" alt="fuhou2.jpg" height="149" width="400"/&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-1904088896954372114?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/1904088896954372114/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/09/blog-post_24.html#comment-form' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1904088896954372114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/1904088896954372114'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/09/blog-post_24.html' title='福猴...'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/arcos.zf/SNpURmVnA4I/AAAAAAAACNU/uS0VnJg-GCA/s72-c/fuhou1.jpg?imgmax=400' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-3760761285277418072</id><published>2008-09-23T19:57:00.000+08:00</published><updated>2008-09-23T20:09:05.891+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Picasa'/><title type='text'>Picasa相册标签Bug</title><content type='html'>&lt;p&gt;　　几天前我发现 Picasa 相册的标签似乎出了点问题，在所有标签的列表处，会出现一个"空白标签"。&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt;&lt;img src="http://lh3.ggpht.com/arcos.zf/SNjcVxe7myI/AAAAAAAACMs/1bRgWeiqfx8/picasa_bug_1.png?imgmax=144" alt="picasa_bug_1.png" height="62" width="91"/&gt;&lt;/p&gt;
&lt;p style="TEXT-ALIGN: left"&gt;　　如图，标签 nici 上面的那个标签，显示有3张照片，但是点击会出现错误信息：&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt;&lt;img src="http://lh4.ggpht.com/arcos.zf/SNjcXW6ujMI/AAAAAAAACMw/jYsyNR7IJj8/picasa_bug_2.png?imgmax=400" alt="picasa_bug_2.png" height="103" width="350"/&gt;&lt;/p&gt;
&lt;p&gt;　　这个问题是在删除一个标签的情况下出现。比如我删除某一个照片上的标签，则空白标签会增加一个。&lt;/p&gt;
&lt;p&gt;　　在 Picasa Help Group 已经有了这个 bug 的报告，不知道什么时候能够解决。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-3760761285277418072?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/3760761285277418072/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/09/picasabug.html#comment-form' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3760761285277418072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3760761285277418072'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/09/picasabug.html' title='Picasa相册标签Bug'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/arcos.zf/SNjcVxe7myI/AAAAAAAACMs/1bRgWeiqfx8/s72-c/picasa_bug_1.png?imgmax=144' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-3584424443162244590</id><published>2008-09-21T19:15:00.000+08:00</published><updated>2008-09-21T19:16:45.008+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Essay'/><title type='text'>星巴克的咖啡换用豆奶了</title><content type='html'>&lt;p&gt;　　去买咖啡，所有的咖啡中的牛奶都换成了豆奶。唯一不需要牛奶的是美式咖啡，不好喝...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-3584424443162244590?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/3584424443162244590/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/09/blog-post_21.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3584424443162244590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3584424443162244590'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/09/blog-post_21.html' title='星巴克的咖啡换用豆奶了'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-3988440930855690647</id><published>2008-09-14T22:12:00.000+08:00</published><updated>2008-09-15T16:02:42.435+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dropbox'/><title type='text'>使用 Dropbox 备份、同步文件</title><content type='html'>&lt;p&gt;　　 我们经常有这种需求：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在不同的地点，不同的计算机上编辑同一份文档&lt;/li&gt;
&lt;li&gt;希望可以随时随地访问自己的文件（比如照片），并能分享给家人&lt;/li&gt;
&lt;li&gt;把自己的重要文件备份起来&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;　　如果你不想带着Ｕ盘到处跑，觉得把文件保存在自己的邮箱里面很麻烦，你可以试试 &lt;a href="http://www.getdropbox.com/" target="_blank" title="Dropbox的主页"&gt;Dropbox&lt;/a&gt;。不同于一般的网络硬盘服务，它不仅可以通过网页上传、管理文件，还提供一个跨平台的客户端。通过这个客户端，用户可以操作本地一个文件夹来管理远程的文件，任何操作都会被自动同步。不仅如此，Dropbox 还提供版本控制功能，完全不同担心文件误修改或者误删除。&lt;/p&gt;
&lt;p&gt;　　Dropbox 现在免费提供了 2G 的空间，保存文档和图片应该足够了。下面详细介绍下客户端的使用。&lt;/p&gt;
&lt;p&gt;　　首先&lt;a href="http://dl.getdropbox.com/u/17/Dropbox 0.6.394.exe"&gt;下载 Dropbox 的客户端&lt;/a&gt;（链接如果失效，可访问&lt;a href="https://www.getdropbox.com/"&gt;主页&lt;/a&gt;下载），安装客户端后注册帐户。&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt;
          &lt;img src="http://lh3.ggpht.com/arcos.zf/SM0bvQzYxkI/AAAAAAAACIM/mMrTiNubZR4/Dropbox_01.png?imgmax=512" alt="Dropbox_01.png" height="181" width="434"/&gt;
        &lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt; &lt;/p&gt;
&lt;p&gt;　　使用自己的邮箱注册以后，可以看到一个简单的使用介绍。&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt;
          &lt;img src="http://lh6.ggpht.com/arcos.zf/SM0b0cHXJ_I/AAAAAAAACIQ/h3i88OvQ5ZU/Dropbox_02.png?imgmax=576" alt="Dropbox_02.png" height="415" width="528"/&gt;
        &lt;/p&gt;
&lt;p&gt;　　在教程最后，有一个选项，问是否指定 Dropbox 存放的文件夹，我选择了指定（默认是我的文档下面的 My Dropbox）。&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt;
          &lt;img src="http://lh6.ggpht.com/arcos.zf/SM0b3eBDXRI/AAAAAAAACIU/z9x_M8Ub_9c/Dropbox_03.png?imgmax=576" alt="Dropbox_03.png" height="170" width="528"/&gt;
        &lt;/p&gt;
&lt;p&gt;　　我指定的保存位置是桌面。注意，不需要手动再新建文件夹了，直接选择桌面会自动建立一个 My Dropbox 的文件夹。这个文件夹的位置在软件的设置中也是可以更改的。&lt;/p&gt;
&lt;p&gt;　　打开 My Dropbox，你会看到一些文件夹和文件，这些都是新建帐户的演示文件，可以删除。&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt;
          &lt;img src="http://lh6.ggpht.com/arcos.zf/SM0b6RrDZ5I/AAAAAAAACIY/2agtfWORPEs/Dropbox_04.png?imgmax=512" alt="Dropbox_04.png" height="129" width="403"/&gt;
        &lt;/p&gt;
&lt;p style="TEXT-ALIGN: left"&gt;　　注意到，文件的图标左下角有一个绿色的小图标，表明的是已经同步的文件。我简单的试验了一下版本控制功能，对冲突的文件也能很好的识别，它会给出所有冲突文件的不同副本。个人使用的时候不必担心版本冲突的问题。&lt;/p&gt;
&lt;p style="TEXT-ALIGN: left"&gt;　　Dropbox 预设了两个文件夹 Photos 和 Public，这两个文件夹有特殊性。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div style="TEXT-ALIGN: left"&gt;Photos 文件夹使用网络浏览器访问的时候，提供了 Gallery view，在使用网页上可以方便查看照片。
&lt;br/&gt;
&lt;img src="http://lh5.ggpht.com/arcos.zf/SM0b9UQCV-I/AAAAAAAACIc/hmSeJyRk27w/Dropbox_05.png?imgmax=640" alt="Dropbox_05.png" height="164" width="584"/&gt;
            &lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div style="TEXT-ALIGN: left"&gt;Public 文件夹提供外部链接的功能，可以直接让任何人访问这个文件夹中的某个文件。在文件上点右键，从菜单中可以选择"Copy public link" ，把这个链接直接发送给朋友，他就能查看、下载这个文件了。
&lt;br/&gt;
&lt;img src="http://lh6.ggpht.com/arcos.zf/SM0cAa7XuhI/AAAAAAAACIg/HvJ3Fbyk8a4/Dropbox_06.png?imgmax=512" alt="Dropbox_06.png" height="211" width="460"/&gt;
            &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="TEXT-ALIGN: left"&gt;　　文件夹还有分享功能，可以和朋友共同分享一个文件夹（能否通过这个方法获取更大的空间？自己建立一个新帐户，然后分享新帐户的文件夹...）。登陆网页，还可以看到能把一个文件夹打包下载的选项。&lt;/p&gt;
&lt;blockquote style="MARGIN-RIGHT: 0px" dir="ltr"&gt;
&lt;p style="TEXT-ALIGN: left"&gt;　　2008-09-15Up：建立多帐户获取更大的容量目前是行不通的，分享的文件夹会占用所有帐户的资源。这是制作方避免取巧获得容量的手段，但显然不是一个好的解决方法。我觉得应该把共享文件夹分成两种：一种是目前的分享，共享的任何人可以进行修改；另一种是只读，被分享者只能查看下载。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style="TEXT-ALIGN: left"&gt;　　以上我对 Dropbox 做了简单的介绍，这个软件/服务使用起来非常简单和流畅，同步工作都在后台进行，完全感觉不到迟缓。我觉得这才是我想要的网络硬盘服务，本来等着 Google 推出呢，看样子是 Google 不喜欢桌面客户端，而想把所有的功能通过浏览器来实现。&lt;a href="http://arccos.blogspot.com/2008/05/blog-post_10.html" target="_blank" title="晓月: 云计算对我来说只是一个美好的前景"&gt;在我梦想中&lt;/a&gt;，我去任何地方都可以不带我的计算机，在任何终端登陆我的帐户都可以查看、编辑、分享我的文件。如果我的桌面终端有强大的编辑器，我可以方便的和网络上的文件同步，比如 Dropbox 的方式。如果没有编辑器，我也可以通过浏览器来编辑我的文件，比如 Google Docs。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-3988440930855690647?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/3988440930855690647/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/09/dropbox.html#comment-form' title='6 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3988440930855690647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3988440930855690647'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/09/dropbox.html' title='使用 Dropbox 备份、同步文件'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/arcos.zf/SM0bvQzYxkI/AAAAAAAACIM/mMrTiNubZR4/s72-c/Dropbox_01.png?imgmax=512' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-3942295769245605240</id><published>2008-09-13T21:15:00.000+08:00</published><updated>2008-09-13T21:16:36.495+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='U3'/><category scheme='http://www.blogger.com/atom/ns#' term='Boot'/><category scheme='http://www.blogger.com/atom/ns#' term='USB'/><category scheme='http://www.blogger.com/atom/ns#' term='SanDisk'/><title type='text'>SanDisk Cruzer Micro 4GB USB 闪存盘</title><content type='html'>&lt;p&gt;　　今天入手了一个 SanDisk 的 U3 盘，使用了一下，感觉还不错。&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center"&gt;&lt;img src="http://lh4.ggpht.com/arcos.zf/SMu9GIDI8kI/AAAAAAAACII/56aOdgFcqdg/zrclip_001n5e8bde9d.png?imgmax=144" height="114" width="130"/&gt;&lt;/p&gt;
&lt;p&gt;　　目前只有黑色的，都是塑料外壳，伸缩式的 USB 连接器。自带 U3 技术。推拉口的地方是指示灯，非常漂亮。&lt;/p&gt;
&lt;p&gt;　　插入U盘后，会出现两个驱动器，其中一个是 CDFS 格式，只读，存放的是系统文件。另外一个是 FAT32 格式，就是和普通U盘一样的存储区域。如果允许自动运行，则会开启 U3 的 LaunchPad。利用 LaunchPad 附带的安全保护功能，可以给数据分区加密。只有当输入了正确的密码后才能访问数据。读写速度都不错，我也没有专门测试，简单用了一下，写大文件能达到 8M/s 。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://cn.sandisk.com/Retail/DriverDownloads.aspx" target="_blank"&gt;SanDisk 驱动/应用程序下载&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://software.u3.com/interstitial.aspx" target="_blank"&gt;U3 Software Central&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;　　我最关心的还是如何量产的问题。因为 U3 盘已经是一个 CDFS 分区，一个数据区，所以肯定可以量产，只需要选择合适的工具。&lt;/p&gt;
&lt;p&gt;　　在上面提到的官方网站可以下载 U3 LaunchPad 的安装程序和移除工具。所以不用担心量产失败，随时可以用这两个工具重新恢复原始设置。另外，在运行 U3 LaunchPad 的时候需要从网络下载 U3 的原版启动镜像：cruzer-autorun.iso（&lt;a href="http://u3.sandisk.com/download/apps/lpinstaller/isofiles/cruzer-autorun.iso" target="_blank"&gt;直接下载&lt;/a&gt;），在 LaunchPad.zip 里面可以找到 u3dapi10.dll（下面会用到这个文件）。&lt;/p&gt;
&lt;p&gt;　　从 &lt;span class="maintitle"&gt;&lt;a href="http://www.u3community.com/" target="_blank"&gt;U3 Community&lt;/a&gt; 可以下载到 &lt;span class="postbody"&gt;&lt;a href="http://www.hak5.org/packages/files/Universal_Customizer.zip" class="postlink" target="_blank"&gt;Universal Customizer 1.0.0.8&lt;/a&gt;（&lt;a href="http://www.u3community.com/viewtopic.php?t=434" target="_blank"&gt;页面&lt;/a&gt;），使用它就可以使用自己的 ISO 文件重新格式化制作了。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="maintitle"&gt;&lt;span class="postbody"&gt;　　如果U盘是 8G 的，那么下载到的 Universal_Customizer 中 u3dapi10.dll 的版本就太低了（1.0.1.0），可能会把 8G 格式化成 4G 的，使用上面提到的同名文件替换（我使用的是 1.0.9.0）可以解决这个问题。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-3942295769245605240?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/3942295769245605240/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/09/sandisk-cruzer-micro-4gb-usb.html#comment-form' title='4 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3942295769245605240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/3942295769245605240'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/09/sandisk-cruzer-micro-4gb-usb.html' title='SanDisk Cruzer Micro 4GB USB 闪存盘'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/arcos.zf/SMu9GIDI8kI/AAAAAAAACII/56aOdgFcqdg/s72-c/zrclip_001n5e8bde9d.png?imgmax=144' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6385435377008869350.post-109111848204634197</id><published>2008-09-13T20:11:00.000+08:00</published><updated>2008-09-13T20:13:47.689+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Mobile'/><title type='text'>Vista不能上网，IP显示169.254.*.*</title><content type='html'>&lt;p&gt;　　一台 HP 的笔记本，突然无法连接到网络，前一天正常关机。&lt;/p&gt;
&lt;p&gt;　　在连接属性里面可以看到，没有分配到 IP，显示的地址是 169.254.*.*。在设备管理器里面有关网络适配器的部分，似乎有一些硬件没有安装好。&lt;/p&gt;
&lt;p&gt;　　尝试了以下方法，都没有成功：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;删除设备，由系统自动重装驱动。&lt;/li&gt;
&lt;li&gt;命令行：netsh int ip reset c:\relog.txt。&lt;/li&gt;
&lt;li&gt;命令行：ipconfig /release，ipconfig /renew。&lt;/li&gt;
&lt;li&gt;手动设置 IP 和 DNS。&lt;/li&gt;
&lt;li&gt;在属性里面去掉 IPv6。&lt;/li&gt;
&lt;li&gt;更改网卡的电源属性："允许计算机关闭此设备以节省电源"去除勾选 。&lt;/li&gt;
&lt;li&gt;微软&lt;a href="http://support.microsoft.com/kb/928233" target="_blank"&gt;KB928233：Windows Vista 无法从某些路由器或非 Microsoft DHCP 服务器获取 IP 地址&lt;/a&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;　　折腾了几个小时，故障依旧，心中升起了很强的挫败感...于是重装系统，恢复正常...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6385435377008869350-109111848204634197?l=arccos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arccos.blogspot.com/feeds/109111848204634197/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://arccos.blogspot.com/2008/09/vistaip169254.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/109111848204634197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6385435377008869350/posts/default/109111848204634197'/><link rel='alternate' type='text/html' href='http://arccos.blogspot.com/2008/09/vistaip169254.html' title='Vista不能上网，IP显示169.254.*.*'/><author><name>Fan Zhang</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-eKtCpsrYVuQ/AAAAAAAAAAI/AAAAAAAADt4/jR68jGA6rmk/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
