<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:thr='http://purl.org/syndication/thread/1.0' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-37073812</atom:id><lastBuildDate>Fri, 23 Apr 2010 02:02:37 +0000</lastBuildDate><title>Sanhe驳客</title><description>思考、记录、分享</description><link>http://www.sanhex.cn/</link><managingEditor>noreply@blogger.com (Sanhe)</managingEditor><generator>Blogger</generator><openSearch:totalResults>45</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-37073812.post-3059724521685117016</guid><pubDate>Sat, 07 Mar 2009 14:36:00 +0000</pubDate><atom:updated>2009-03-08T17:14:44.183+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>密码</category><title>Diffie-Hellman的弱点</title><description>准备密码技术课程的PPT时，想给听众解释一下DH的计算方法。于是在网上找到几幅图，出自Behrouz Forouzan先生的经典著作《密码学与网络安全》。他将DH画得淋漓尽致，几乎无需任何文字说明。贴上来留着以后用。&lt;br /&gt;&lt;br /&gt;图中的p是一个大素数，g是它的原始根。x和y分别是两端各自选取的随机数，分别作为R1和R2的离散对数，并满足大于等于0，小于等于p-1。K是双方最终计算出的用于数据加密时使用的工作密钥。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.sanhex.cn/uploaded_images/dh1-727480.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 234px;" src="http://www.sanhex.cn/uploaded_images/dh1-727478.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.sanhex.cn/uploaded_images/dh2-725950.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 270px;" src="http://www.sanhex.cn/uploaded_images/dh2-725948.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;DH易受离散对数攻击和中间人攻击，但如果p很大，计算离散对数很难。然而中间人攻击却非常容易。如图：&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.sanhex.cn/uploaded_images/dh3-790430.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 347px;" src="http://www.sanhex.cn/uploaded_images/dh3-790427.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;一直没弄明白对DH进行中间人攻击究竟怎么做，现在终于清楚了。之前我总想着让爱丽丝和鲍勃还有中间人伊夫，这三者都使用同一个密钥。没想到在伊夫那里维护两个密钥来进行攻击，惭愧惭愧。&lt;br /&gt;&lt;br /&gt;站对站协议用数字签名解决DH易受中间人攻击的问题，如图：&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.sanhex.cn/uploaded_images/dh4-724495.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 355px;" src="http://www.sanhex.cn/uploaded_images/dh4-724493.gif" alt="" border="0" /&gt;&lt;/a&gt;经典技术书籍中的图一般都比文字更经典，画得简明精巧。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37073812-3059724521685117016?l=sanhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.sanhex.cn/2009/03/diffie-hellman.html</link><author>noreply@blogger.com (Sanhe)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-37073812.post-2611320341901962877</guid><pubDate>Sat, 21 Feb 2009 18:30:00 +0000</pubDate><atom:updated>2009-02-22T03:13:04.109+08:00</atom:updated><title>10年前和20年前的玩具</title><description>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.sanhex.cn/uploaded_images/20090124%28003%29-780332.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://www.sanhex.cn/uploaded_images/20090124%28003%29-780303.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;10年前我最好的玩具，就是这台笔记本电脑。CPU主频400MHz，硬盘6GB。最初内存只有64MB，后来我找到一条128MB的给它装上，当前内存为192MB。它已为我勤勤恳恳零故障工作了10年以上。当初它预装的是Windows 98，现在它运行着基于Xubuntu的Hiweed Linux。看电影或上网已经卡得不太行了，但文字编辑，听音乐，甚至写点小程序，都没问题。大家都有自己的笔记本，早已没人用它，只是它装了我很多的回忆。看到它能让人想起那时候的一个个不眠之夜，对计算机软件的热情。于是它一直被留在父母家中，作为一个音乐播放机，或是一种见证。和我那把多年不弹的六弦琴享受同等的养老待遇。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.sanhex.cn/uploaded_images/20090124%28005%29-771665.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://www.sanhex.cn/uploaded_images/20090124%28005%29-771645.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;20年前我最好的玩具，就是这个舅舅送的智力拼图。今年春节拿了出来，我，老婆，还有我的母亲，三个人把它拼了起来。后来她们二人罢工睡觉去了，作为婆媳关系桥梁的我，独自坚持将它完成。这么多片经过了这么多年，只少了图中左侧边缘的那一片，保存还算完整。恩，十全九美。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37073812-2611320341901962877?l=sanhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.sanhex.cn/2009/02/1020.html</link><author>noreply@blogger.com (Sanhe)</author><thr:total>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-37073812.post-5035815040783846362</guid><pubDate>Sat, 07 Feb 2009 12:51:00 +0000</pubDate><atom:updated>2009-03-08T23:20:34.377+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Linux</category><category domain='http://www.blogger.com/atom/ns#'>Ubuntu</category><title>Thinkpad T61指纹仪过热问题</title><description>在系统登录或做系统管理任务时，用刷指纹来代替输入长长的密码，方便快捷，又能减轻手指的疲劳。在公共场合或办公区使用计算机时，为了信息保密，人离开机器后必须锁定屏幕。这早已成为我多年的习惯。然而Thinkpad T61使用Ubuntu8.04，出现锁定屏幕后指纹仪过热的问题。&lt;br /&gt;&lt;br /&gt;按快捷键或其他任意方式锁定屏幕后，指纹仪不停地发热，越来越热，十几分钟后热得无法触摸。我担心它会损坏，因此很长时间在办公室的时候不用Ubuntu。Google此问题之后，没找到解决的办法。本想在Ubuntu的launchpad上报告此Bug，却发现早已有人先我一步，但却没人提供答案。订阅该帖几个月后，近日终于收到邮件，有人回复，提供了解决方法。原来thinkwiki上早已有人对此作了详尽说明。我想翻译成中文，置此备忘。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.thinkwiki.org/wiki/How_to_enable_the_fingerprint_reader_with_ThinkFinger#Fix_for_the_fingerprint_reader_getting_too_hot"&gt;点击这里查看原文&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;修复指纹仪过热&lt;br /&gt;&lt;br /&gt;如果你注意到你的指纹仪偶尔会变得很热，那你也许会对这一节的内容有兴趣。感谢Tino Keitel，他通过linux-thinkpad邮件列表给了我这个解决方案。&lt;br /&gt;&lt;br /&gt;首先我们需要检测指纹仪是否没有处在自动挂起模式。&lt;br /&gt;打开一个终端并运行：&lt;br /&gt;&lt;br /&gt;for i in `find /sys/devices/*/*/usb* -name level` ; do echo -n "$i: " ; cat $i ; done&lt;br /&gt;&lt;br /&gt;我们关心的是那些状态为“on”的设备，并且我们需要检测看是否其中之一就是指纹仪。所以对这些设备每一个都运行一次类似这样的命令：&lt;br /&gt;&lt;br /&gt;cat /sys/devices/pci0000\:00/0000\:00\:1a.0/usb1/1-2/idVendor&lt;br /&gt;0483（这是命令输出的结果）&lt;br /&gt;&lt;br /&gt;cat /sys/devices/pci0000\:00/0000\:00\:1a.0/usb1/1-2/idProduct&lt;br /&gt;2016（这是命令输出的结果）&lt;br /&gt;&lt;br /&gt;以上命令中要用状态为“on”的那些设备所对应的路径，然后和lsusb命令的输出结果进行对比。举个例子：&lt;br /&gt;&lt;br /&gt;lsusb的输出结果：Bus 001 Device 004: ID 0483:2016 SGS Thomson Microelectronics Fingerprint Reader&lt;br /&gt;&lt;br /&gt;这正和上面命令的输出结果（0483:2016）相匹配。一旦检测完你指纹仪的路径，然后就用su -变成root并且执行：&lt;br /&gt;&lt;br /&gt;echo "auto" &gt; /sys/&lt;设备的路径&gt;/power/level&lt;br /&gt;&lt;br /&gt;之后，指纹仪应该就处于“自动挂起”模式，并且再也不会变热了。而且它仍能正常工作。&lt;br /&gt;这只对当前会话有效。如果你想让这个改动持续有效并且已经安装了sysfsutils，则编辑文件/etc/sysfs.conf并加入这行：&lt;br /&gt;&lt;br /&gt;&lt;设备的路径&gt;/power/level = auto&lt;br /&gt;&lt;br /&gt;对于前面的例子，则应该是&lt;br /&gt;&lt;br /&gt;devices/pci0000\:00/0000\:00\:1a.0/usb1/1-2/power/level = auto&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;另外一种方法，你可以安装一个初始化脚本：&lt;br /&gt;&lt;br /&gt;sudo gedit /etc/init.d/ReaderNoMoreHot&lt;br /&gt;&lt;br /&gt;粘贴以下内容到其中：&lt;br /&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;#&lt;br /&gt;echo "auto" &gt; /sys/&lt;设备的路径&gt;/power/level&lt;br /&gt;&lt;br /&gt;保存并关闭。然后：&lt;br /&gt;&lt;br /&gt;sudo chmod 755 /etc/init.d/ReaderNoMoreHot&lt;br /&gt;sudo update-rc.d ReaderNoMoreHot defaults 90&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37073812-5035815040783846362?l=sanhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.sanhex.cn/2009/02/thinkpad-t61.html</link><author>noreply@blogger.com (Sanhe)</author><thr:total>3</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-37073812.post-678750478742651002</guid><pubDate>Fri, 21 Nov 2008 15:24:00 +0000</pubDate><atom:updated>2009-02-01T17:20:54.134+08:00</atom:updated><title>冷兵器</title><description>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.sanhex.cn/uploaded_images/20080616%28002%29-768191.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://www.sanhex.cn/uploaded_images/20080616%28002%29-768178.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;蚂蚁牌第三代产品，做工精良，令我喜欢。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.sanhex.cn/uploaded_images/20080616%28003%29-744172.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://www.sanhex.cn/uploaded_images/20080616%28003%29-744162.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;可以收起来，携带方便。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.sanhex.cn/uploaded_images/20080616%28001%29-713699.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://www.sanhex.cn/uploaded_images/20080616%28001%29-713687.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;可以拆卸，方便隐藏和更换备件。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37073812-678750478742651002?l=sanhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.sanhex.cn/2008/11/blog-post.html</link><author>noreply@blogger.com (Sanhe)</author><thr:total>5</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-37073812.post-7976510949609478923</guid><pubDate>Wed, 09 Jul 2008 16:50:00 +0000</pubDate><atom:updated>2008-07-10T01:36:42.619+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Linux</category><category domain='http://www.blogger.com/atom/ns#'>Ubuntu</category><title>Thinkpad T61指纹登录Ubuntu</title><description>将Ubuntu 8.04安装到Thinkpad T61上，声卡显卡网卡无线网卡ACPI等大部分硬件都直接支持，包括Fn系列快捷键，令我满意。开源的显卡驱动提供了良好的2D显示。系统启动后，受限驱动管理器自动提示需启用显卡的3D驱动，启用后桌面特效即可打开，令我满意。&lt;br /&gt;唯有指纹仪没能用起来，稍有遗憾。&lt;br /&gt;&lt;br /&gt;遂Google之，发现方法无数，多次尝试无效。&lt;br /&gt;反复揣摩，终于完成。gdm登录或其他需要sudo，gksu的时候，无需再输口令，指纹一刷即可。非常方便快捷。方法总结如下：&lt;br /&gt;&lt;br /&gt;1. 从源中搜索thinkfinger，发现三个软件包，装之。&lt;br /&gt;&lt;span class="postbody"&gt;sudo apt-get install thinkfinger-tools libpam-thinkfinger&lt;/span&gt; libthinkfinger0&lt;br /&gt;网上有人说自己编译安装，我觉得何苦呢。&lt;br /&gt;&lt;br /&gt;2. 启用指纹功能&lt;br /&gt;&lt;span class="postbody"&gt;sudo /usr/lib/pam-thinkfinger/pam-thinkfinger-enable&lt;/span&gt;&lt;br /&gt;网上有文说需手动修改某些配置文件，我打开那配置文件后却发现早已改好，无须人工干预。&lt;br /&gt;&lt;br /&gt;3. 重启系统&lt;br /&gt;否则进行后续步骤时可能会报如下三种错误：&lt;br /&gt;&lt;span class="postbody"&gt;Undefined error occured (0xff). &lt;/span&gt;&lt;span class="postbody"&gt;&lt;/span&gt;&lt;br /&gt;或&lt;br /&gt;&lt;span class="postbody"&gt;Warning: usb_bulk_read expected to read 0x40 (read 0x10 bytes).&lt;/span&gt;&lt;br /&gt;亦或&lt;br /&gt;Could not acquire fingerprint (communication with fingerprint reader failed)&lt;br /&gt;无数人报了以上这三种错误，我也都一一遇到了。但最终发现此步骤时重启一下，便好了。&lt;br /&gt;&lt;br /&gt;4. 录制指纹&lt;br /&gt;sudo tf-tool --acquire&lt;br /&gt;网上有文说此处不加sudo，但我若不加sudo，总是失败。于是只好先sudo录之，然后把生成的指纹文件的属主由root改为当前用户。例如我的用户名为sanhe，便如此输入：&lt;br /&gt;sudo chown sanhe:sanhe ~/.thinkfinger.bir&lt;br /&gt;&lt;br /&gt;5. 检验指纹&lt;br /&gt;&lt;span class="postbody"&gt;tf-tool --verify&lt;br /&gt;此处不加sudo，因为那个指纹的文件已经被改为当前用户的了。若提示验证通过，则至此设置全部完成。&lt;br /&gt;&lt;br /&gt;网上有文说之后还得用&lt;/span&gt;&lt;span class="postbody"&gt;tf-tool &lt;/span&gt;&lt;span class="postbody"&gt;--add-user添加用户，然而我的tf-tool只有&lt;/span&gt;--acquire和&lt;span class="postbody"&gt;--verify等参数，&lt;/span&gt;&lt;span class="postbody"&gt;根本没&lt;/span&gt;&lt;span class="postbody"&gt;&lt;/span&gt;&lt;span class="postbody"&gt;--add-user&lt;/span&gt;&lt;span class="postbody"&gt;这参数，不知何来此说。总之完成这5步然后重启，指纹就可用了。&lt;br /&gt;记录于此，以示他人。&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37073812-7976510949609478923?l=sanhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.sanhex.cn/2008/07/thinkfinger-on-thinkpad-t61.html</link><author>noreply@blogger.com (Sanhe)</author><thr:total>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-37073812.post-5395857339569380590</guid><pubDate>Wed, 25 Jun 2008 13:56:00 +0000</pubDate><atom:updated>2008-06-25T21:59:39.386+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>反动言论</category><title>月福洗车造成车漆多处划痕</title><description>周末在月福奥运村店洗车，从自动洗车的隧道出来后停到擦车的位置上，然后有两个工人开始擦，我们就出去了。回来后直接开车回了家。到家停车后，发现车前盖上有多处深浅不一，长度各异的划痕，遍布前盖。划痕方向不一，从其走向来看，像是在用带硬物的布擦车的时候造成的。&lt;br /&gt;&lt;br /&gt;具体是自动洗车时划的还是工人擦的时候划的，我不能确定。但有一点是确定的，那就是这些划痕洗车前肯定没有。在路上跑一会儿怎么也不可能给前盖上造成划痕的。气愤之余，想找他们去。但一想，他们绝对不会承认是他们造成的。十分地气恼。上网一搜，发现早已有人和我有过同样的遭遇。不同的是，他们有人找月福理论了，月福果然不认账(与我意料的一致)。&lt;br /&gt;下面是这两个文章的链接：&lt;br /&gt;http://www.vehiclean.com.cn/link/gjsb.html&lt;br /&gt;http://pop.pcpop.com/030602/462758.html&lt;br /&gt;写在这里，大家办月福的洗车卡时，看着办吧。或者在他们擦车的时候多留意点儿，有问题当场指出也许会好些?没想到月福这么大的店，这么贵的收费，竟然会这样。郁闷那。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37073812-5395857339569380590?l=sanhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.sanhex.cn/2008/06/blog-post.html</link><author>noreply@blogger.com (Sanhe)</author><thr:total>4</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-37073812.post-967758111323714382</guid><pubDate>Fri, 11 Apr 2008 06:45:00 +0000</pubDate><atom:updated>2008-04-11T14:54:34.492+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Ubuntu</category><title>Ubuntu又来了</title><description>&lt;script type="text/javascript" src="http://www.ubuntu.com/files/countdown/display.js"&gt;&lt;/script&gt;&lt;br /&gt;新的软件包，新的内核(带KVM了)，集成活动目录(AD)功能，支持iSCSI，内存保护，新的安装程序……&lt;br /&gt;有点意思了，给做个广告。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37073812-967758111323714382?l=sanhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.sanhex.cn/2008/04/ubuntu.html</link><author>noreply@blogger.com (Sanhe)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-37073812.post-5279809283672794172</guid><pubDate>Wed, 16 Jan 2008 02:07:00 +0000</pubDate><atom:updated>2008-03-02T13:21:24.950+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>不知所云</category><title>自由软件好</title><description>旁边的一个同事前几天拿来一张CF卡和一个USB的读卡器，在他的笔记本上鼓捣了半天也没打开。据说他的系统老是不认。我以为是他的读卡器有问题。正好我的笔记本上有多合一的读卡器，于是说要不在我的机器上试试。我的系统是Ubuntu Linux。几秒后，一个nautilus的窗口弹了出来。把他要的文件从中拷出来，打包发给了他。他很高兴。原来那张CF卡上的文件系统是ext2，怪不得他的Windows系统不认识了。&lt;br /&gt;&lt;br /&gt;我笑了。暗自想，都说Linux在超级计算机，服务器，嵌入式设备上是老大。原来在日常办公中，也有Windows输给Linux的时候。&lt;br /&gt;&lt;br /&gt;最近公司有个Windows下的VPN软件要出个新版，由于前些年我曾在Windows下干过不少活，于是就由我操刀来修理它。快过年了，活终于干完了。很高兴，休假的心似箭。却忘记产品文档还没改。忙活了一天，看得眼睛疼，终于差不多改完。然后发现原来的截图都是gif的。我从不在Windows上装专门的截图软件，历来都是按PrintScreen键，辅以Alt键，然后把截下来的图粘贴到Windows的画图中。画图软件这厮，倒是能保存为gif，却失真得厉害，就像专门给图打了马赛克似的，不堪入目。无奈只好存为位图，开始找寻一个不太失真的bmp/jpg到gif的转换办法。这可苦了。&lt;br /&gt;&lt;br /&gt;我没有PS这样的专业图像处理软件，试了系统上所有能打开图片的程序，没一个满意的。只好上网去找。想要一个小巧的，不需要注册的软件，只要能把JPG或BMP转成GIF，并且不太失真就行。有人说ACDSee行，但记得它比较大，并且是商业软件，需要注册。还有人说“魔法转换”很行，但也得注册，否则会在转换后的图片上加上它的广告。正烦人的时候，忽然想到，why not Gimp? 于是赶紧把图片从Windows的办公机上拷到Ubuntu的笔记本上。接下来，Gimp一上，果然万图无忧。&lt;br /&gt;&lt;br /&gt;不禁感慨。&lt;br /&gt;无须注册，随意拷贝，随意使用，随意修改，功能强悍。&lt;br /&gt;自由软件真是好呀么真是好。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37073812-5279809283672794172?l=sanhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.sanhex.cn/2008/01/blog-post.html</link><author>noreply@blogger.com (Sanhe)</author><thr:total>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-37073812.post-5385981802907257115</guid><pubDate>Thu, 01 Nov 2007 23:21:00 +0000</pubDate><atom:updated>2007-11-02T13:37:44.611+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>不知所云</category><title>我们的互联网</title><description>*.flickr.com&lt;br /&gt;*.blogspot.com&lt;br /&gt;*.wikipedia.org&lt;br /&gt;*.wordpress.com&lt;br /&gt;ghs.google.com(目前暂时可用)&lt;br /&gt;其实远远不止这些，这仅是常用的几个著名的国外网站。&lt;br /&gt;每次看到管制新闻中关于这些事的正面报道时，我都感到无比搞笑。&lt;br /&gt;这也是我从上个公司的涉密部门离职的一个原因。&lt;br /&gt;看到一个有趣的图片，贴上来。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Q2Rzl96oJ7s/RyqNJVYA8AI/AAAAAAAAAa8/V3lpAYHE_5w/s1600-h/gfw2.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_Q2Rzl96oJ7s/RyqNJVYA8AI/AAAAAAAAAa8/V3lpAYHE_5w/s400/gfw2.jpg" alt="" id="BLOGGER_PHOTO_ID_5128066317210939394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;若寻求技术上的解决手段，可访问：&lt;br /&gt;&lt;a href="http://www.torproject.org/"&gt;www.torproject.org&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/37073812-5385981802907257115?l=sanhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.sanhex.cn/2007/11/blog-post.html</link><author>noreply@blogger.com (Sanhe)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Q2Rzl96oJ7s/RyqNJVYA8AI/AAAAAAAAAa8/V3lpAYHE_5w/s72-c/gfw2.jpg' height='72' width='72'/><thr:total>3</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-37073812.post-4710499088320427426</guid><pubDate>Mon, 23 Jul 2007 06:55:00 +0000</pubDate><atom:updated>2007-07-23T14:58:33.183+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Linux</category><title>Linux的前景</title><description>半年前，一个严重依赖Windows操作系统的友人在MSN上叫嚣说Linux要完蛋了。我猜想他大概看到了什么新闻，并由于不了解而产生了不正确的判断。内心觉得这说法多少有点荒谬，但没和他争辩什么。&lt;br /&gt;&lt;br /&gt;不争的原因有二。一是我也不敢肯定Linux的未来是怎样的，二是我觉得对一个工具，正确的态度应是各取所需而不是试图排除异己。但内心依然希望Linux能好好发展，原因同样有二。一是自由软件本身的优点吸引人。自由软件虽然经常表现得有点散漫，有点随心所欲。但它开发和应用的模式，强调自由，开放，协作，这在知识的传承和软件的发展等诸多方面有很多好处，的确是种先进的文化。二是我希望自己的志趣和在自由软件上投入的精力不要荒废。&lt;br /&gt;&lt;br /&gt;虽然广泛的传播对软件的发展很重要，但其实需求的满足才是根本。听说过Linux的人已经不少，但用的人却依然不是很多。服务器上用Linux的场合很多，但PC和Laptop上用的人依然不多。有不少人尝试使用Linux，但他们的很多需要Linux目前并不能满足。例如操作简便，良好的游戏支持等。因此我觉得如果真的想支援Linux的发展，更应当致力于改进软件本身。应用成熟后，传播自然不是问题。&lt;br /&gt;&lt;br /&gt;我没有资格预测Linux的前途，只能偶尔在我狭窄的可见范围内设想一番它的前景。服务器方面，Linux已经应用得很普遍。Redhat和Suse在这方面做了不少事，仅管我喜欢Debian，但它们的功劳也不可没。&lt;br /&gt;&lt;br /&gt;如果桌面计算机和嵌入式设备上也能广泛应用Linux，那就正中很多人下怀。因此看到戴尔在美国市场推出&lt;a href="http://www.dell.com/content/topics/segtopic.aspx/linux_3x?c=us&amp;cs=19&amp;amp;l=en&amp;amp;s=dhs"&gt;预装Ubuntu7.04的桌面计算机和笔记本&lt;/a&gt;后，我就暗自窃喜。据说此举是响应用户的要求，预装Ubuntu的机器卖得不错。据说戴尔正在考虑是否在美国以外的地区推出预装Ubuntu的台式机和笔记本。传说惠普也想出预装Ubuntu的机器，不知道是真是假。&lt;br /&gt;&lt;br /&gt;其实尝试卖预装Linux的桌面计算机，这回已不是首次。但我想，现在机会真正成熟了。相信对戴尔此举，高兴的不只是Canonical，还有很多公司和很多人。在嵌入式方面，摩托罗拉要卖Linux的智能手机，日本人要把Linux用在数码家电上。人们在谈论着ACCESS公司的ACCESS Linux Platform，开源的&lt;a href="http://www.openmoko.org/"&gt;OpenMoko&lt;/a&gt;。也许有一天，我们的台式机，笔记本，手机，家电，上面用的都是Linux操作系统。我隐约感到不远了。仅管还有很长的路要走，Linux要更好的发展，还需要软硬件厂商的联合支持。我以为，商业化运作的支持，是Linux更有希望，更光明的道路。&lt;br /&gt;&lt;br /&gt;前段时间，曾叫嚣说Linux要完蛋了的那个友人兴致勃勃地告诉我，他因为要维护自己网站的原因学习了点Linux的操作，觉得挺有趣。他也开始用Linux了，仅管用的并不多。我想了想，5年后，或者用不了5年，也许他的台式机和笔记本上，运行的都是Linux操作系统了。谁知道呢。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37073812-4710499088320427426?l=sanhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.sanhex.cn/2007/07/linux.html</link><author>noreply@blogger.com (Sanhe)</author><thr:total>5</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-37073812.post-902558146199359382</guid><pubDate>Wed, 13 Jun 2007 15:03:00 +0000</pubDate><atom:updated>2007-06-13T23:04:09.537+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>这样的日子</category><title>雷鸟和野鸟</title><description>早起，对我而言一直是个难事。于是我发现另一个相对容易的办法，就是晚上不睡，上网到清晨。然而此种旁门左道，太伤身，只能偶尔一用。&lt;br /&gt;&lt;br /&gt;这个时节，4点多天就开始亮了。我住的小区多树，有鸟。它们素质很差，完全不顾有的人还没睡觉，这时候就开始乱叫。令人困倦之余，又平添了恼火。我想，我的老板肯定不知道，在他睡得正流口水的时候，他的员工在为优化一个解决方案而彻夜未眠。&lt;br /&gt;&lt;br /&gt;每天都要收很多邮件，也要发几封给别人。我用的邮件客户端是Mozilla的雷鸟。别人用的是Windows，邮件客户端多是Outlook，Foxmail之类。试过了很多Linux下的邮件客户端，每当发送携带中文名附件给Windows用户的时候，总是有问题。不是乱码，就是乱名。网上有人说雷鸟没问题，但使用默认设置不行。&lt;br /&gt;&lt;br /&gt;在FireFox地址栏输入about:config，即可打开它的配置编辑器，它包含了FireFox无数细节的设置。同是Mozilla家族的Thunderbird，自然也有这东西。&lt;br /&gt;在Thunderbird的高级设置中，打开配置编辑器。在过滤器中输入&lt;br /&gt;mail.strictly_mime.parm_folding&lt;br /&gt;默认的值为2，把它设置为1或0。我觉得设为0更合适。&lt;br /&gt;此后，和Windows用户邮件往来再无障碍。大善。&lt;br /&gt;&lt;br /&gt;雷鸟，果然比窗外的野鸟好。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37073812-902558146199359382?l=sanhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.sanhex.cn/2007/06/blog-post.html</link><author>noreply@blogger.com (Sanhe)</author><thr:total>5</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-37073812.post-4580281444014527153</guid><pubDate>Mon, 28 May 2007 14:24:00 +0000</pubDate><atom:updated>2007-07-17T13:04:57.084+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Linux</category><title>当Synaptic遇上ISA</title><description>在我们研发部的办公室，可以上研发网和办公网。研发网无需代理，办公网则使用微软的ISA代理上网，这给Linux下的应用程序带来很多困扰。并非它们不支持代理，相反几乎都支持代理。无奈的是ISA用NTLM验证用户，除了FireFox，其它程序即使设置了账号也不能通过认证。即便是FireFox保存了账号和口令，每次启动还是需要多按一下回车。&lt;br /&gt;&lt;br /&gt;其他的可以不上，软件不能不下。Synaptic遇上ISA，并且需要认证，那就基本报废了。微软永远不和竞争对手兼容，自由软件却想方设法和各种主流软件兼容。源中有ntlmaps，一个会NTLM认证的代理服务器。用它在本机为各个需要访问互联网的程序作代理，就能通过ISA的NTLM认证了。从源安装，根据提示简单设置。若还不能用，手动修改/etc/ntlmaps/server.cfg。只要将用户名密码和登陆的域设置了即可。&lt;br /&gt;&lt;br /&gt;NTLM Authorization Proxy Server&lt;br /&gt;'NTLM Authorization Proxy Server' (APS) is a proxy software that allows you to authenticate via an MS Proxy Server (e.g. ISA server) using the proprietary NTLM protocol. Since version 0.9.5 APS has an ability to behave as a standalone proxy server and authenticate http clients at web servers using NTLM method. It can change arbitrary values in your client's request header so that those requests will look like they were created by MS IE. It is written in Python v1.5.2 language.&lt;br /&gt;&lt;br /&gt;Main features:&lt;br /&gt;  * supports NTLM authentication via parent proxy server&lt;br /&gt;    (Error 407 Proxy Authentication Required)&lt;br /&gt;  * supports NTLM authentication at web servers&lt;br /&gt;    (Error 401 Access Denied/Unauthorized)&lt;br /&gt;  * supports translation of NTLM scheme to standard "Basic"&lt;br /&gt;    authentication scheme&lt;br /&gt;  * supports the HTTPS 'CONNECT' method for transparent tunnelling&lt;br /&gt;    through parent proxy server&lt;br /&gt;  * has ability to change arbitrary values in client's request headers;&lt;br /&gt;  * supports unlimited number of client connections&lt;br /&gt;  * supports connections from external hosts&lt;br /&gt;  * supports HTTP 1.1 persistent connections&lt;br /&gt;  * stores user's credentials in config file or requests&lt;br /&gt;    password from a console during the start time&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37073812-4580281444014527153?l=sanhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.sanhex.cn/2007/05/synapticisa.html</link><author>noreply@blogger.com (Sanhe)</author><thr:total>4</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-37073812.post-8831154325274517640</guid><pubDate>Wed, 02 May 2007 01:32:00 +0000</pubDate><atom:updated>2007-09-03T18:01:07.736+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Ubuntu</category><title>Ubuntu 7.04 (Feisty Fawn)</title><description>发布已久，知道多了些新特性，想用。五一长假恰好是个契机，升级。它自动用了官方中国的源，我的歌华不太慢。一夜的时光，我睡机不睡。次日早餐，下载的部分已经都完成，正在安装。安装的时候有时需要和用户交互，可我在睡。于是一起床就和它交互，让它继续。突然间update-manager的窗口一闪，没了。再次执行它，起不来了。&lt;br /&gt;&lt;br /&gt;是我没看清楚？再执行它，还起不来。重启机器试试？我知道，如果升级安装没完成就重启，很可能起不来。上网看了看，好像没人像我这么土。我怕什么？大不了重装么。我向来是勇敢的。就重启。果然就起不来。按照惯例，每次系统升级都会有或多或少，或大或小的问题。这次有点重。&lt;br /&gt;&lt;br /&gt;ALERT! /dev/disk/by-uuid/xxx(省略) does not exist.&lt;br /&gt;Dropping to a shell!&lt;br /&gt;...(省去那些无聊的提示信息)&lt;br /&gt;/bin/sh: can't access tty;&lt;br /&gt;job control turned off (initramfs)&lt;br /&gt;&lt;br /&gt;上网看了看，依然不知所措。我升级前必然先用LiveCD引导机器，看看是否有问题。没问题才会升级。既然这样，重装了吧。装了，看到了种种细节的变化。挺好。&lt;br /&gt;&lt;br /&gt;网络管理器小程序，卡通，美观，实用。受限驱动管理器，为我自动安装了ATI官方的驱动，显卡的3D功能可以用了。从源里安装ntfs-config，简单设置ntfs-3g。可以从源里安装官方的Flash9，名为flashplugin-nonfree，装上后在FireFox中即可用Flash。可惜没有Adobe的Acrobat Reader了，找不到acroread这个包，可能是不想给白用了罢。但网上有很多介绍如何想方设法安装的文章。&lt;br /&gt;&lt;br /&gt;装了Cabextract和ies4linux，还是偶尔得用IE，没办法。alien是个好东西，能把RPM包转换为deb包，也装。stardict源里有，却没有词典包，无奈只好添加了一个Egdy的源来装。Totem-gstreamer播不了RM，RMVB等Windows下的媒体格式，只好换成Totem-xine。w32codecs源里没有，用Egdy的源装上。&lt;br /&gt;deb http://ftp.sjtu.edu.cn/ubuntu-cn/ edgy main&lt;br /&gt;&lt;br /&gt;好处人们已经说了很多，我不重复。说说我见到的离奇问题。我的笔记本是宽屏，使用1280×768的分辨率。但无论LiveCD还是安装程序，经过自动检测后，都给我用1024×768的分辨率。并且，屏幕分辨率设置处只有三种分辨率可选，1024×768是最高的一个了。另外，我的触摸屏的右键，滚轮，双击拖动，都不能用。&lt;br /&gt;&lt;br /&gt;我的第一反应，认为是驱动问题。但又一想，内核版本比以前高了，以前用Edgy都没问题，现在怎么会有问题。于是用sudo dpkg-reconfigure xserver-xorg重新配置显卡。一切使用默认值和程序自动检测到的值。重启gdm，问题依旧。&lt;br /&gt;&lt;br /&gt;迷惑，拿出LiveCD引导机器再看看，问题依旧。无聊中在LiveCD里用dpkg-reconfigure再次重新配置显卡。看到了奇事。同样的系统，同样的显卡配置程序，它在LiveCD中检测到的硬件参数竟然和它从硬盘安装的系统下检测的结果不同。以前它要用vesa驱动，现在要用ati。分辨率也正确检测到了1280×768。我依然一切使用它的默认值和它自动检测到的值。配置完后重启gdm，分辨率竟正常了。触摸屏的所有功能也都正常了。但这是在LiveCD里，硬盘上的系统依然没好。因为在硬盘上运行Ubuntu，这个显卡配置程序就不能自动检测到正确的参数。&lt;br /&gt;&lt;br /&gt;好，它不智能，不讲理，我帮它。硬盘引导，启动系统后运行sudo dpkg-reconfigure xserver-xorg，它又固执地认为我的显卡该用vesa而不是更适合的ati驱动。于是手动改为ati。在对分辨率自动检测后它又认为我的屏幕该用1024×768，手动选上1280×768，去掉1280×768以外的任何分辨率。重启gdm，分辨率终于正常了，触摸屏的所有功能也都正常了。喜出望外。&lt;br /&gt;Linux的乐趣就是这样，让喜欢折腾的人在解决问题后觉得万分爽快。&lt;br /&gt;&lt;br /&gt;自然，这还不是我所有的问题。Feisty还有更不讲理的行为。用LiveCD启动和安装系统之时，我选的语言是中文，但系统中的菜单依然是中西合璧。我知道这是因为什么，语言包没装全嘛。在语言支持中，Chinese前不是对勾，而是短横。好，打勾。装上需要的所有语言包。菜单都变成中文，连中文输入法也有了。但OpenOffice却再也启动不了了。有经验的人都知道，它和scim冲突了。官方提供的软件，自己和自己冲突。&lt;br /&gt;&lt;br /&gt;好，装上我最爱的fcitx。fcitx官方介绍了很多配置方法，我曾经也是那样弄。忽然发现其实在debian中，完全不必那样繁琐且极度缺乏灵活性。你可以在你的系统中任意装同类的软件，然后用update-alternatives来配置系统使用哪个。例如我装了scim和fcitx，系统默认的中文输入法是scim，只要用update-alternatives配置一下即可。这样，fcitx的安装和繁琐的设置就简化为两步：&lt;br /&gt;sudo apt-get install fcitx&lt;br /&gt;sudo update-alternatives --config xinput-zh_CN&lt;br /&gt;在提示中选择fcitx即可。&lt;br /&gt;&lt;br /&gt;用官方的方法配置过fcitx的人，就会明白上述方法是多么简单便捷。而这都是debian的功劳。update-alternatives是它的系统配置工具，通过使用软链接来管理系统默认的程序，当有多个可用的可选软件时，只要把当前的软链接指向相应的程序脚本即可。又一次印证了文件的链接是一种多么灵活的技术。&lt;br /&gt;&lt;br /&gt;问题远不止这些。播放rm，rmvb没声音，据说是xine设置的问题。编辑~/.xine/catalog.cache，找到[/usr/lib/xine/plugins/1.1.4/&lt;br /&gt;xineplug_decode_real_audio.so]，将decoder_priority的值设为10。&lt;br /&gt;&lt;br /&gt;系统自带的vim-tiny中，方向键，退格键都不能用。按方向键出来的是莫名其妙的字母。装上vim就好了，vim没这样的问题，不明白为什么。Eva的中文输入也有问题，在Eva中按快捷键不能激活中文输入法。诸如此类，举不胜举。一一解决，不再记录。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37073812-8831154325274517640?l=sanhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.sanhex.cn/2007/05/ubuntu-704-feisty-fawn.html</link><author>noreply@blogger.com (Sanhe)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-37073812.post-5415123793731629163</guid><pubDate>Wed, 11 Apr 2007 13:17:00 +0000</pubDate><atom:updated>2007-04-11T22:05:46.780+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>不知所云</category><title>辞职信一封</title><description>xx，你好！&lt;br /&gt;&lt;br /&gt;05年12月5日我来到xx，时光荏苒，转眼已过近一年半的时光。此间，公司的诸多项目给予我很多经验，同事们也给予我很多关照。此情难忘。&lt;br /&gt;&lt;br /&gt;我时常想，其实公司和雇员，不仅是劳务关系，也是一种互助和共赢的关系。有良心的雇主，会善待雇员，因为他们为自己创造了利润。同样，有良心的雇员，也应当对得起雇主，因为雇主给了他谋生和发展的机会。偶尔会想起我受雇的第一家公司，总是心怀感激。在我最落魄的时候，他们给了我机会和信任。xx并非我的第一个雇主，但却同样给了我机会和信任，因此我同样心怀感激。&lt;br /&gt;&lt;br /&gt;在每个项目中，我都想，如果我受人钱财却并未尽力做好产品，那么无异于坑蒙拐骗。然而我发现我虽能尽职，却无法尽力。作为一个坚定的理想主义者，志趣往往会影响我职业的方向。有兴趣的方向，常常更能体现个人的价值，也能更好地为公司创造价值。我最擅长的技术，xx并不需要。我崇尚的理念，和xx的发展方向并不一致。这其实对双方都是一种资源的浪费。因此，我希望离开xx，并推荐更合适的人来xx。这对我和xx，都有益处。&lt;br /&gt;&lt;br /&gt;在xx的日子，令人感到愉快并乐于回味。我希望我们高兴地，满怀祝福地分别。因为我们在意曾经一同工作的友情，并希望彼此过得更好。那么，我衷心地祝福xx，和所有在xx的朋友们！&lt;br /&gt;&lt;br /&gt;何致宇&lt;br /&gt;2007年4月11日&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37073812-5415123793731629163?l=sanhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.sanhex.cn/2007/04/blog-post_11.html</link><author>noreply@blogger.com (Sanhe)</author><thr:total>10</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-37073812.post-1720191116525748515</guid><pubDate>Sat, 07 Apr 2007 05:14:00 +0000</pubDate><atom:updated>2007-04-07T18:13:47.270+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>不知所云</category><title>真的猛士</title><description>作为Linux的中文用户，中文输入法&lt;a href="http://www.fcitx.org/"&gt;fcitx&lt;/a&gt;伴我已久。坦白的说，我离不开它。今日到其网站上，从作者到访客，满目消极。fcitx作者Yuking的一些话，总的意思是不想再把fcitx开发下去了。未经作者允许，就不引用了。&lt;br /&gt;&lt;br /&gt;作为一个坚定的理想主义者，看到此种现象，内心激情澎湃，感慨万千，于是发表了如下评论。&lt;br /&gt;记录在此(措词略微修改)，以求他日再看，不忘今日之感慨。&lt;br /&gt;&lt;br /&gt;--------------------------------------------------------------------&lt;br /&gt;fcitx不仅仅是一个输入法软件&lt;br /&gt;&lt;br /&gt;中文输入法软件很多，但像fcitx这样出色的，也算罕见。我一直觉得我们没有对fcitx做出一个更为公正和准确的评价。我坚持认为它的价值很难估量，远远不止是一个输入法软件。&lt;br /&gt;&lt;br /&gt;中文输入法，关系到计算机在中文用户中的普及使用。中文输入法软件，是中文输入法的载体。UNIX操作系统下好的中文输入法软件并不多。Linux下的中文输入法软件，关系到Linux以及其他UNIX操作系统在中文用户中的普及使用。而计算机和Linux在中文用户中的普及使用，可能关系到国计民生。因此，Linux下的中文输入法软件，可能间接影响到国计民生。&lt;br /&gt;&lt;br /&gt;在这样一个信息严重电子化的时代，很难想像，没有计算机会怎样，没有Linux会怎样，没有Linux下的中文输入法会怎样，没有不断发展的Linux下的中文输入法会怎样，没有不断发展的fcitx会怎样。&lt;br /&gt;&lt;br /&gt;Linux是先进的操作系统，在自由软件领域有巨大的影响。自由软件影响的其实不仅仅是软件行业。在信息电子化的时代，软件会影响到社会的各个方面。Linux如果没有了中文用户，也许不会有严重的损失。但中文用户如果没有了Linux，这会对经济，科技，文化，教育等多个方面造成不良的影响。&lt;br /&gt;&lt;br /&gt;Linux中文用户如果没有持续发展的输入法，这将间接地影响中文用户在世界的影响力，会间接地影响这个民族的生命力和扩张力。&lt;br /&gt;&lt;br /&gt;其实，每个人的每一个不经意的行为，都会对社会和民族造成一定的影响。而好的中文输入法，更是如此。我多么希望每个人都有强烈的民族利益的意识，因为群体的利益直接关系到个体的利益。&lt;br /&gt;&lt;br /&gt;fcitx的发展，会在一定程度上促进我们的社会和民族的发展。&lt;br /&gt;fcitx的作者，在一定意义上，无异于民族英雄。&lt;br /&gt;我希望，有力量的人，可以承担责任。&lt;br /&gt;这最终是为了众多生命的利益。&lt;br /&gt;&lt;br /&gt;fcitx的作者实际上一直在为民族做着公益事业。&lt;br /&gt;我每次看到他的名字，内心都觉得他是一个英雄。&lt;br /&gt;英雄，自有英雄的苦楚。&lt;br /&gt;但，英雄，也自有英雄的无畏和快活。&lt;br /&gt;--------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;再看的时候，自己都觉得言词有些过激，通篇都像是在忽悠人家继续开发下去。&lt;br /&gt;其实，每个人做事都需要一些精神力量作为支柱。&lt;br /&gt;其实，每次想到自己的种族将面临什么的时候，内心总是充满力量。&lt;br /&gt;&lt;br /&gt;真的猛士，敢于直面独酌的寂寞，敢于正视生活的无奈。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37073812-1720191116525748515?l=sanhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.sanhex.cn/2007/04/blog-post.html</link><author>noreply@blogger.com (Sanhe)</author><thr:total>3</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-37073812.post-3934633963528338924</guid><pubDate>Wed, 28 Feb 2007 03:11:00 +0000</pubDate><atom:updated>2007-03-26T11:29:08.334+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Linux</category><title>Firestarter启动的问题</title><description>我和论坛里的很多朋友都遇到这样一个问题。启动Firestarter的时候，提示&lt;br /&gt;“External network device $IF is not ready. Aborting..”&lt;br /&gt;其中$IF是个变量，是当前使用的网络接口的名字。例如如果用eth0上网，那么显示的就是&lt;br /&gt;“External network device eth0 is not ready. Aborting..”&lt;br /&gt;这个问题也让我感到很困惑，并且至今没有发现有人解答。只好自己捣鼓。一番猜测和检查后，终于发现了问题所在。就此谈谈其原因和解决的办法。&lt;br /&gt;&lt;br /&gt;在我的记忆中，该问题的发生，是在一次软件升级之后。在以前，我将firestarter设置为自启动，以方便随时查看防火墙的状态。它一直工作得很好，就在一次软件升级后，它出现了上述问题。为了查看我的eth0配置是否正确，当时便执行了ifconfig。结果发现软件升级前，ifconfig输出信息都是英文。而升级后，都是中文的了。当时并没有在意，觉得可能是安装了一些中文包的缘故。也并没有把这个变化和Firestarter无法启动的事情联系到一起。在后续检查中，发现虽然Firestarter提示错误，但iptables却运行正常。既然防火墙工作正常，那么这个图形前端，不看也罢。于是将该问题就此搁置，直到今天又想念这个图形前端了，才重新捡起来。&lt;br /&gt;&lt;br /&gt;想到这两个变化，便做了一个推测。觉得可能是Firestarter的启动脚本比较愚蠢，会从ifconfig的输出信息中查找相关接口的配置信息。以前它查找的肯定是英文的字符串，现在由于ifconfig的输出信息变成了中文的，一些参数信息它可能无法获取了，所以导致启动失败。于是检查Firestarter的启动脚本，发现竟和我预料的一样。于是问题迎刃而解。&lt;br /&gt;&lt;br /&gt;Firestarter的启动脚本是/etc/init.d/firestarter，其中执行了/etc/firestarter/firestarter.sh来启动防火墙，因此，其实Firestarter真正的启动脚本是/etc/firestarter/firestarter.sh。&lt;br /&gt;&lt;br /&gt;编辑/etc/firestarter/firestarter.sh&lt;br /&gt;根据本机ifconfig的输出信息来修改以下几行代码：&lt;br /&gt;IP=`/sbin/ifconfig $IF | grep inet | cut -d : -f 2 | cut -d \  -f 1`&lt;br /&gt;MASK=`/sbin/ifconfig $IF | grep Mas | cut -d : -f 4`&lt;br /&gt;BCAST=`/sbin/ifconfig $IF |grep Bcast: | cut -d : -f 3 | cut -d \  -f 1`&lt;br /&gt;&lt;br /&gt;例如，我的系统使用eth0上网，就执行ifconfig eth0。其中IP地址依然可以通过以上代码的第一行获取，只是子网掩码和广播地址的获取会有问题。于是保留第一行不做修改，将后两行代码中grep搜索的英文字符串改为相应中文字符串即可。&lt;br /&gt;&lt;br /&gt;IP=`/sbin/ifconfig $IF | grep inet | cut -d : -f 2 | cut -d \  -f 1`&lt;br /&gt;MASK=`/sbin/ifconfig $IF | grep 掩码: | cut -d : -f 4`&lt;br /&gt;BCAST=`/sbin/ifconfig $IF |grep 广播: | cut -d : -f 3 | cut -d \  -f 1`&lt;br /&gt;&lt;br /&gt;保存文件后，启动Firestarter。一切正常。&lt;br /&gt;不知道别人遇到的问题是否和我的一样，记录下来，仅供参考吧。&lt;br /&gt;&lt;br /&gt;Update:&lt;br /&gt;无意中看到有人转载了我这个文章，内心竟萌生出一点责任感。&lt;br /&gt;其实这个方法挺傻的。没有任何通用性可言。&lt;br /&gt;于是把想到的一个更好一些的法子写到这里，献丑了。&lt;br /&gt;sudo vi /etc/firestarter/firestarter.sh&lt;br /&gt;找个合适的地方，例如在&lt;br /&gt;# External network interface data&lt;br /&gt;这行注释的上面，添加一行：&lt;br /&gt;LANG=en_US&lt;br /&gt;&lt;br /&gt;这样，ifconfig的输出就是英文的了，这个启动脚本也就可以从它的输出信息中搜索出需要的几个参数了。这个方法更加简单，并且感觉上通用性似乎好一点。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37073812-3934633963528338924?l=sanhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.sanhex.cn/2007/02/firestarter.html</link><author>noreply@blogger.com (Sanhe)</author><thr:total>26</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-37073812.post-6159621502653654728</guid><pubDate>Mon, 26 Feb 2007 10:26:00 +0000</pubDate><atom:updated>2007-02-26T23:40:28.027+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>反动言论</category><title>Effective C++</title><description>很多程序员对牛人们谈论编程经验和感想的书籍顶礼膜拜，例如市面上种种《xx缄言》，《xx夜里睡不着觉》，《高质量xx》，以及老外写的一些诸如《xx陷井与缺陷》，《Effective xx》，甚至还觉得不过瘾，又来个《More Effective xx》。不知道以后会不会再出《More and More Effective xx》，《More and More and More Effective xx》，然后一直就这样more下去，子子孙孙无穷匮。&lt;br /&gt;&lt;br /&gt;出于好奇和对牛人以及伪牛人出书的敬佩，我也看过这些流行的小书。然后不由得想起有人曾对刘墉的文章的一句评价：“吃饱了饭，喝了杯凉水，然后放了个屁。” Bjarne Stroustrup是我心目中真的猛牛，在他的《The C++ Programming Language》一书第二版的序中，曾说过这样一句令我感动的话。 “这里的叙述仍然是针对有经验的程序员，并努力不去轻视他们的智慧和经验。” 作为一个自以为是的人，我希望得到这种尊重。&lt;br /&gt;&lt;br /&gt;其实对于语言的学习，只要你仔细阅读语言的权威书籍，认真实践，并勤于和善于思考，很多xx的经验，不言自明。Bjarne说要写出一个好程序需要智慧、品位和耐性，万分赞同。关于如何避免在C++中依旧使用C风格，以及有效使用C++进行编程，Bjarne已经给出一些很好的忠告。胜似金玉良言。我想摘录出来，以供借鉴。其中interface一词，译者把它译为“界面”，而我觉得这里译为“接口”更妥当一些，便改为接口。另外在抄这些条目的时候，忍不住做了一点注释。&lt;br /&gt;&lt;br /&gt;给C程序员的建议&lt;br /&gt;&lt;br /&gt;一个人对C了解得越好，在写C++程序时大概就越难避免C的风格，并会因此丢掉某些潜在C++的优势。这里是几个有关的要点，在这些地方做同样的事情时，在C++里存在比C更好的方式：&lt;br /&gt;&lt;br /&gt;［1］在C++里几乎不需要用宏。用const或enum定义明显的常量，用inline避免函数调用的额外开销，用template去刻画一族函数或者类型，用namespace去避免名字冲突。&lt;br /&gt;（抄袭者注：宏使得代码不易于理解和维护，有更多潜在的陷井，增加了出错的可能性。这个建议在C语言中也有一定的适用性，并且gcc的扩展使得C语言也支持inline。）&lt;br /&gt;&lt;br /&gt;［2］不要在你需要变量之前去声明它，以保证你能立即对它进行初始化。声明可以出现在能出现语句的所有位置上，可以出现在for语句的初始化部分，也可以出现在条件中。&lt;br /&gt;（抄袭者注：在使用前定义变量而不是先定义好要用的所有变量再开始操作语句，这样使得代码可读性更好，并且不容易出错。在C中，对ANSI标准支持不好的C编译器，不允许在一个代码块中已经开始执行语句的位置定义变量。但如果编译器支持，那么在C语言中也应当采用这个建议。）&lt;br /&gt;&lt;br /&gt;［3］不要用malloc（）。new运算符能将同样的事情做得更好。对于realloc（），请试一试vector（）。&lt;br /&gt;（抄袭者注：new比malloc更加灵活，表达能力更强。使用new的代码常常更加简短，并且避免了“强制”这样的不良风格。）&lt;br /&gt;&lt;br /&gt;［4］试着去避免void*、指针算术、联合和强制，除了在某些函数或类实现的深层之外。在大部分情况下，强制都是设计错误的指示器。如果你必须使用某个显示的类型转换，请设法去用一个“新的强制”，设法写出一个描述你想做的事情的更精确的语句。&lt;br /&gt;&lt;br /&gt;［5］尽量少用数组和C风格的字符串。与传统的C风格相比，使用C++标准库string和vector常常可以简化程序设计。&lt;br /&gt;（抄袭者注：C++在语言级别上提供了进一步的抽象，使得程序设计更加简化，维护更加容易。但无论使用C还是C++，使用安全而高效的库，总是比自己编写相关算法更好。因为这样不仅提高了生产效率，提高了代码的复用程度，而且使程序代码更简短，易于维护。所以尽量使用标准库中的容器和泛型算法，而不是自己处理低层的实现。即使自己可以将代码编写得和标准库一样高效和安全。）&lt;br /&gt;&lt;br /&gt;最重要的是，试着将程序考虑为一组由类和对象表示的相互作用的概念，而不是一堆数据结构和一些去拨弄数据结构中二进制位的函数。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;使用C++的一些忠告&lt;br /&gt;&lt;br /&gt;要写出一个好程序需要智慧、品位和耐性。你不会第一次就能把它搞好的。试验！&lt;br /&gt;&lt;br /&gt;［1］在编程序的时，你是在为你针对某个问题的解决方案中的思想建立起一种具体表示。让程序的结构尽可能地直接反映这些思想：&lt;br /&gt;［a］如果你能把“它”看成一个独立的概念，就把它做成一个类。&lt;br /&gt;［b］如果你能吧“它”看成一个独立的实体，就把它做成某个类的一个对象。&lt;br /&gt;［c］如果两个类有共同的接口，将此接口做成一个抽象类。&lt;br /&gt;［d］如果两个类的实现有某些显著的共同东西，将这些共性做成一个基类。&lt;br /&gt;［e］如果一个类是一种对象的容器，将它做成一个模板。&lt;br /&gt;［f］如果一个函数实现对某容器的一个算法，将它实现为对一族容器可用的模板函数。&lt;br /&gt;［g］如果一组类、模板等互相之间有逻辑关系，将它们放进一个名字空间里。&lt;br /&gt;&lt;br /&gt;［2］在你定义一个并不是实现某个像矩阵或复数这样的数学对象的类时，或者定义一个低层的类型如链接表的时候：&lt;br /&gt;［a］不要使用全局数据（使用成员）。&lt;br /&gt;［b］不要使用全局函数。&lt;br /&gt;［c］不要使用公用数据成员。&lt;br /&gt;［d］不要使用友元，除非为了避免［a］或［c］。&lt;br /&gt;［e］不要在一个类里面放“类型域”;采用虚函数。&lt;br /&gt;［f］不要使用在线函数，除非作为效果显著的优化。&lt;br /&gt;&lt;br /&gt;请记住，这些忠告只是粗略的实用规则，而不是万古不变的定律。它们只应使用在“合理的地方”。从来就没有任何东西能够替代智慧、经验、常识和好的鉴赏力。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37073812-6159621502653654728?l=sanhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.sanhex.cn/2007/02/effective-c.html</link><author>noreply@blogger.com (Sanhe)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-37073812.post-3723361677041387028</guid><pubDate>Sat, 03 Feb 2007 10:33:00 +0000</pubDate><atom:updated>2007-02-03T20:15:23.667+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Linux</category><title>自由软件对谈录</title><description>me:&lt;br /&gt;OO中写的doc，到了MS Word 2003中，图就乱了。&lt;br /&gt;   我辛辛苦苦画的流程图，变得乱七八糟。&lt;br /&gt;   我恨OO。早知如此，我就直接在Windows上用MSO写了&lt;br /&gt;&lt;br /&gt;Ma: 这不赖OO&lt;br /&gt;&lt;br /&gt;me:&lt;br /&gt;那赖谁？&lt;br /&gt;   另外用OO Drawing画图实在太痛苦了，用Dia花图还不如用OO方便。可能是我不会用吧&lt;br /&gt;&lt;br /&gt;Ma: 如果你用OO，为什么做完了还要拿到MS的O去打开呢&lt;br /&gt;&lt;br /&gt;me:&lt;br /&gt;因为我的领导用的都是Windows呀&lt;br /&gt;   别的同事用的也是Windows，他们只有MSO&lt;br /&gt;   我写文档不是给自己看的&lt;br /&gt;&lt;br /&gt;Ma: 如果真要用linux下的O来完成MSO的工作，你还是试试永中的O吧&lt;br /&gt;&lt;br /&gt;me:&lt;br /&gt;微软总是唯我独尊，从不考虑和同类软件的兼容。&lt;br /&gt;   仗着他在操作系统上占的市场份额，嚣张得不行。&lt;br /&gt;&lt;br /&gt;Ma: 因为1张2003的MSO才不到5RMB，你们同事为什么不使用MSO呢&lt;br /&gt;&lt;br /&gt;me: 啊，我多么希望中国正版化运动的来临&lt;br /&gt;&lt;br /&gt;Ma:&lt;br /&gt;那样也不好&lt;br /&gt;   真正正版了，咱们都不能使用xp了，除非购买正版&lt;br /&gt;&lt;br /&gt;me: 不用了呗&lt;br /&gt;&lt;br /&gt;Ma: 我不希望因为买个xp还要买一堆相关的软件&lt;br /&gt;&lt;br /&gt;me:&lt;br /&gt;大家都用Linux，FreeBSD呗&lt;br /&gt;   实在想用Windows就花钱买去呗&lt;br /&gt;&lt;br /&gt;Ma: 缺少了很多娱乐&lt;br /&gt;&lt;br /&gt;me: 别娱乐呗&lt;br /&gt;&lt;br /&gt;Ma: 比如游戏&lt;br /&gt;&lt;br /&gt;me:&lt;br /&gt;那样的话，游戏厂商会连夜加班去做他们游戏的Linux版本的。&lt;br /&gt;   你放心吧&lt;br /&gt;   他们为了赚钱，肯定会干。&lt;br /&gt;&lt;br /&gt;Ma: 买了这么好配置的硬件，不game一下，还不如买个普通的机子&lt;br /&gt;&lt;br /&gt;me:&lt;br /&gt;你顶多枯燥上半年，各大游戏厂商就会纷纷推出他们游戏的Linux版本。&lt;br /&gt;   硬件厂商，比如傻逼华硕，也会出Linux下的驱动程序。&lt;br /&gt;   我就不用再为我的笔记本不能使用显卡的3D功能而惋惜。&lt;br /&gt;   你也可以在Linux用OO办公，FF上网上银行，删掉Wine这类的模拟器，直接安装暴雪的游戏。&lt;br /&gt;   那时候，网吧里装的全是Linux，傻逼游戏小孩儿的机器装的也都是Linux&lt;br /&gt;   计算机启蒙课程，不再讲授DOS操作，而是Linux操作。&lt;br /&gt;   高中生不再以会修改注册表为荣，而是以熟练的Unix shell脚本能力而沾沾自喜。&lt;br /&gt;   那是什么样的世界，妈的？&lt;br /&gt;&lt;br /&gt;me:&lt;br /&gt;我决定费劲周折用OO写出MSO可以基本正常浏览的文档。&lt;br /&gt;     假设我一旦用了盗版MSO，就会名誉扫地，遭到巨额罚款，失去银行贷款需要的社会信誉。&lt;br /&gt;&lt;br /&gt;Ma: 那时我也鄙视你&lt;br /&gt;&lt;br /&gt;me:&lt;br /&gt;我不能为了让他们在Windows下看得舒服就付出这么大代价。&lt;br /&gt;     况且即便我没有被发现，盗版的行径影响了整个软件行业，使这个行业不景气。&lt;br /&gt;     我的薪水会因此下降，找工作困难，生活窘迫。&lt;br /&gt;     因此我不能为了让他们看着舒服，就冒这么大的风险。&lt;br /&gt;     下了。88&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37073812-3723361677041387028?l=sanhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.sanhex.cn/2007/02/blog-post.html</link><author>noreply@blogger.com (Sanhe)</author><thr:total>3</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-37073812.post-5583650574688630763</guid><pubDate>Fri, 19 Jan 2007 05:30:00 +0000</pubDate><atom:updated>2007-01-23T23:17:22.997+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>软件路由</category><title>言之有物</title><description>不知被&lt;a href="http://www.juniper.net/"&gt;Juniper&lt;/a&gt;收购后的NetScreen，价格有什么变化。但无论如何我都没有钱买NetScreen这样的硬件防火墙，并且也不需要。因此一直对软件防火墙情有独钟。上学的时候，曾经用过&lt;a href="http://www.gta.com/"&gt;GTA&lt;/a&gt;公司的GnatBox做网关和防火墙。麻雀虽小，五脏俱全。作为一个基于FreeBSD的软件防火墙，它如此小巧，功能却很完善。当时很是激动了一番。然而它和CheckPoint一样都是商业软件。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.checkpoint.com/"&gt;CheckPoint&lt;/a&gt;收购了ZoneLabs&lt;span style="TEXT-DECORATION: underline"&gt;&lt;/span&gt;，广受欢迎的Windows个人防火墙ZoneAlarm丰富了CheckPoint的产品线。可惜我对CheckPoint兴趣并不大。其实软件的网络防火墙还有很多，例如&lt;a href="http://www.coyotelinux.com/"&gt;CoyoteLinux&lt;/a&gt;，&lt;a href="http://www.smoothwall.org/"&gt;SmoothWall&lt;/a&gt;，&lt;a href="http://www.ipcop.org/"&gt;IPcop&lt;/a&gt;，&lt;a href="http://m0n0.ch/wall/"&gt;m0n0wall&lt;/a&gt;。它们有的基于FreeBSD，并且是开源的。有的是公司开发，但可以免费下载使用。有的功能不止防火墙，而且可以路由。&lt;br /&gt;&lt;br /&gt;见过开源的&lt;a href="http://www.vyatta.com/"&gt;Vyatta&lt;/a&gt;后，觉得如果仅仅需要个软件路由，就没有必要购买Juniper的JunOS了。尽管它无法和JunOS媲美，但毕竟是开源的，而且操作完全模仿Juniper的风格。尽管公司总是为了盈利，但至少利用开源盈利，我们都是受益者。正如&lt;a href="http://www.canonical.com/"&gt;Canonical&lt;/a&gt;的Ubuntu。&lt;br /&gt;&lt;br /&gt;本打算记载一番&lt;a href="http://www.mikrotik.com/"&gt;MikroTik&lt;/a&gt;的RouteOS等软件路由器的事情，然而觉得这似乎有些自寻烦恼。何必为一个商业软件大动干戈。当人们需要路由器，防火墙，或者NIDS的时候，如果要求并不高，或者不愿意花钱买昂贵的硬件产品，不妨试试软件路由，软件防火墙，软件入侵检测系统(例如著名的&lt;a href="http://www.snort.org/"&gt;Snort&lt;/a&gt;)。或许会发现，其实有时候不一定非要花钱。&lt;br /&gt;&lt;br /&gt;软件，本来应该是免费的。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37073812-5583650574688630763?l=sanhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.sanhex.cn/2007/01/blog-post_19.html</link><author>noreply@blogger.com (Sanhe)</author><thr:total>7</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-37073812.post-116823303573788909</guid><pubDate>Mon, 08 Jan 2007 04:55:00 +0000</pubDate><atom:updated>2007-01-29T17:10:27.049+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Google</category><title>Google的服务</title><description>Google的产品常令我瞠目结舌。偶尔逛逛Google实验室，都会感慨一番。例如Google竟然会提供月球和火星图片给人们看。当有了一个Google的账号后，竟然能享受到如此之多的有趣服务。登录Google的账号，然后保存登录不退出。就可以方便地使用Google的各种服务。&lt;br /&gt;&lt;br /&gt;每天早上打开浏览器，&lt;a href="http://www.google.com/"&gt;Google主页&lt;/a&gt;会展现出来。我使用了个性化主页，这样的话，Gmail中的新邮件，近日的天气，新闻，感兴趣的一些资讯，就可以一目了然。打开&lt;a href="http://mail.google.com/"&gt;Gmail&lt;/a&gt;，除了可以收发邮件，还能使用Web上的GoogleTalk来聊天。点上方的&lt;a href="http://www.google.com/calendar/"&gt;Calendar&lt;/a&gt;标签，可以查看日历并安排一天的事情，时间快到时，它会发出提醒。还可以和别人共享日历。点&lt;a href="http://picasaweb.google.com/"&gt;Photos&lt;/a&gt;，可以使用在线相册。分享一些图片，可以评论。点&lt;a href="http://docs.google.com/"&gt;Docs &amp;amp; Spreadsheets&lt;/a&gt;标签，可以在线处理文档和电子表格。支持MSOffice，OpenOffice等多种格式。可以上传和下载，在线保存，与他人共享查看或编辑。点&lt;a href="http://groups-beta.google.com/"&gt;Groups&lt;/a&gt;标签，可以查看Google的网上论坛，并且可以创建自己的论坛。点all my services，可以看到更多服务。点&lt;a href="http://www.blogger.com/"&gt;Blogger&lt;/a&gt;，可以创建自己的博客。点&lt;a href="http://www.google.com/reader"&gt;Reader&lt;/a&gt;，能够订阅，并与别人分享订阅的内容。点&lt;a href="http://www.google.com/talk"&gt;Talk&lt;/a&gt;，下载GoogleTalk聊天。不仅可以聊天和传文件，还可以用它当做具有新邮件提醒的邮件客户端。更美妙的是，用它的语音聊天功能，享受电话一般的语音质量。用它可以发送语音邮件，Gmail用户收到语音邮件后可以直接播放或下载为MP3。点&lt;a href="http://pages.google.com/"&gt;Page Creator&lt;/a&gt;，创建自己的个人主页。使用&lt;a href="https://www.google.com/webmasters/tools/"&gt;WebMasters Tools&lt;/a&gt;，诊断和管理自己的网站。点&lt;a href="http://www.orkut.com/"&gt;Orkut&lt;/a&gt;，体验虚拟社会关系网。用&lt;a href="http://www.google.com/alerts"&gt;Alerts&lt;/a&gt;，定期搜索感兴趣的快讯。用&lt;a href="http://ditu.google.com/"&gt;Google地图&lt;/a&gt;，方便地查询出行路线和周围商家。而Google的服务，却远不止这些。&lt;br /&gt;&lt;br /&gt;看到这样一个服务，很吸引我。便是&lt;a href="http://code.google.com/"&gt;Google Code&lt;/a&gt;。&lt;br /&gt;Google Code不仅是提供一些Google的API，还有一些令人激动的功能。&lt;br /&gt;例如Google &lt;a href="http://www.google.com/codesearch"&gt;Code Search&lt;/a&gt;，&lt;a href="http://code.google.com/hosting/"&gt;Project Hosting&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;Google有&lt;a href="http://www.google.com/linux"&gt;Linux搜索&lt;/a&gt;，&lt;a href="http://www.google.com/bsd"&gt;FreeBSD搜索&lt;/a&gt;，&lt;a href="http://www.google.com/mac"&gt;MAC搜索&lt;/a&gt;，针对不同操作系统用户的信息检索的服务。&lt;a href="http://www.google.com/codesearch"&gt;Code Search&lt;/a&gt;则专门用来搜索开源的代码。而&lt;a href="http://code.google.com/hosting/"&gt;Project Hosting&lt;/a&gt;，则可以允许Google用户创建开源的工程，利用Google的服务来发布自己的开源项目。供用户浏览，评论，下载，参与开发，参与维基的编写。也许，想弄一个开源项目而又没有自己的域名和空间的话，可以使用Google的这个服务。功能虽然简单，但访问速度还行，比把项目放在SourceForge快一些。&lt;br /&gt;&lt;br /&gt;而Google的服务，却远不止这些。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37073812-116823303573788909?l=sanhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.sanhex.cn/2007/01/google.html</link><author>noreply@blogger.com (Sanhe)</author><thr:total>5</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-37073812.post-116800557805779742</guid><pubDate>Fri, 05 Jan 2007 13:59:00 +0000</pubDate><atom:updated>2007-01-23T23:10:48.789+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>不知所云</category><title>数据的灾难</title><description>从来没有备份数据的习惯，从来不使用回收站，甚至以前从来都是用root用户操作计算机。总是觉得，硬盘一般怎么会坏呢？笔记本一般怎么会丢或者会坏呢？谁会无缘无故地执行rm * 呢？既然要删除，肯定是不想要的东西，还要先放到回收站，再清空回收站来释放磁盘空间，这是何苦呢？总是su，或者sudo，总是要输密码，多浪费时间，多费键盘。&lt;br /&gt;&lt;br /&gt;很庆幸的是，我的硬件至今没有坏也没有丢失。也已经不再使用root来进行日常工作。使用sudo的时候，不厌其烦地输入密码。开始有了点备份的意识，定期会把一些重要的东西至少拷贝到别的机器上一份。但在rm的时候，依然没有确认提示。在我的Nautilus中，依然包含了绕过回收站的删除命令。依然总是直接删除，并且即时有确认提示，也视而不见，直接点确定。&lt;br /&gt;&lt;br /&gt;就在今天，我的本命年来临的第五天，遭到了坏习惯的报应。做了很久的一个程序，很重要。却一直没有任何备份，也没有使用任何版本控制。昨天突然良心发现，打算用SVN把它管理起来。可惜还没有来得及。今天误删了一个目录。一个工程被我彻底从硬盘上砍掉了。&lt;br /&gt;&lt;br /&gt;慌张得跑进回收站，希望是移入了回收站而非直接删除。可是我当然没有这样的好习惯。到办公室的台式机上看是否存有备份，可是我当然没有及时备份的好习惯。于是指望从服务器上意外找到一个副本，因为曾经拷贝过一份源码到服务器上编译运行。可是那台服务器恰好挂了，硬件故障，无法启动。&lt;br /&gt;&lt;br /&gt;试图恢复已经删除的文件。可我的文件系统是ext3,不像ext2那么容易就可以反删除。找到一些方法，都是针对ext2的。想到Windows下的EasyRecovery，FinalData。FinalData有Linux版本，据说支持ext2。但下载不到免费版本，也不知道是否支持ext3。想到一个同事去年的MSN签名：本命年，果然背。但转念一想，不怪年子。只怪自己不懂未雨绸缪。&lt;br /&gt;把希望寄托在幸运上，是多么愚蠢的事。&lt;br /&gt;&lt;br /&gt;好在，这个工程规模还不大，代码量还很少。好在，周末来临，可以利用周末时间，凭着记忆重写为数不多的几百行代码。好在，情况还不算太糟，影响不算太大。好在我没有把整个项目的目录删掉。&lt;br /&gt;&lt;br /&gt;当即修改bash的配置文件，写上：&lt;br /&gt;alias cp='cp -i'&lt;br /&gt;alias mv='mv -i'&lt;br /&gt;alias rm='rm -i'&lt;br /&gt;修改Nautilus设置，去掉绕过回收站的删除命令。&lt;br /&gt;备份另外一个没有任何备份和版本控制的工程。&lt;br /&gt;&lt;br /&gt;砍档之前，定要三思。&lt;br /&gt;&lt;br /&gt;Update:&lt;br /&gt;尝试使用Windows下的EasyRecovery进行原始的恢复，失败。&lt;br /&gt;使用R-Studio，它支持Ext2/3。找到很多以前删除的文件，但却没有我要找的文件。也许已经被覆盖掉了，也许R-Studio仅仅支持Ext2，对Ext3的支持还不太好。但总归是没有希望了。&lt;br /&gt;于是决定重写丢失的代码，一天后，以更加合理的方式实现了丢失的部分。&lt;br /&gt;误砍造成的损失基本补救回来。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37073812-116800557805779742?l=sanhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.sanhex.cn/2007/01/blog-post_05.html</link><author>noreply@blogger.com (Sanhe)</author><thr:total>4</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-37073812.post-116800539378358965</guid><pubDate>Fri, 05 Jan 2007 13:47:00 +0000</pubDate><atom:updated>2007-01-23T23:10:21.289+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Linux</category><title>新年的新气象</title><description>从通州度假回来，想起一些事情，记录于此。&lt;br /&gt;新的年子来了，终日为我卖命的ubuntu也有了一些新气象。&lt;br /&gt;&lt;br /&gt;伴随我左右的火狐狸，近日新添了TorButton，MediaWrap，FlashGot，三个扩展。加上以前的Tab Mix Plus，火狐狸工作得更合我意了。不知道什么时候开始，FireFox无法播放一些在线的媒体了。连百度上的歌曲也不能在线播放。于是填上MediaWrap，问题解决。FlashGot用来方便得批量下载。TorButton则是为方便得启用Tor。&lt;br /&gt;&lt;br /&gt;作为gnome爱好者，以前在选择软件的时候，有些排斥K开头的系列KDE工具。&lt;br /&gt;这无疑是十分荒谬的错误。这违背了软件存在和发展的根本意义。&lt;br /&gt;不应当陷入工具的争议，没必要属于任何工具的阵营。只要是好的工具，就应当积极推进使用。&lt;br /&gt;LumaQQ无法传输文件，不能展示图片。虽然&lt;a href="http://www.imtata.com/"&gt;IMTaTa&lt;/a&gt;可以在线登录QQ和MSN，并且竟然有文件传输，语音聊天，视频聊天的功能。但这三个功能需要Flash9的支持，而我只能安装Flash7，beta版本的Flash9会令火狐崩溃。因此还是需要一个合适的QQ客户端，至少有传文件的功能。&lt;br /&gt;&lt;br /&gt;Anjuta功能简陋，并且新版2.x连基本的功能都无法正常使用。实在忍无可忍。大概自行下载编译最新的版本会好一些，但已经心灰意冷，不愿折腾。&lt;br /&gt;&lt;br /&gt;D4X经常无法下载，甚至不及火狐自带的下载管理器。昨晚下个Flash9的插件，由于速度太慢，决定挂着它，我去睡觉。这时候开始在d4x中到处找“下载完成后关机”这样的选项，发现竟然没有。&lt;br /&gt;&lt;br /&gt;于是开始使用EVA作为我的QQ客户端，使用KGet作为下载管理器，使用KDevelop作为IDE。&lt;br /&gt;这几个KDE的软件，为我的新年，带来了高兴的体验。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37073812-116800539378358965?l=sanhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.sanhex.cn/2007/01/blog-post.html</link><author>noreply@blogger.com (Sanhe)</author><thr:total>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-37073812.post-116727600731517706</guid><pubDate>Sat, 23 Dec 2006 15:05:00 +0000</pubDate><atom:updated>2007-01-23T23:15:14.043+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>模拟器</category><title>现实需要模拟</title><description>&lt;a href="http://news.xinhuanet.com/tech/2006-12/27/content_5537718.htm"&gt;地震&lt;/a&gt;损坏了海底光缆，导致我家访问国外网站比较困难。我原以为网速不好的时候用w3m这样的控制台浏览器上网会快点，但事实证明是徒劳。w3m装了插件后可以在控制台下显示图片，中文显示也没有问题，并且可以使用鼠标。的确很奇妙，但速度却似乎比图形的浏览器慢多了。&lt;br /&gt;&lt;br /&gt;一直对模拟器这种东西很有兴趣。从模拟插到电视上玩的那种游戏机，到模拟计算机，模拟网络设备，都极令人兴奋。喜欢Mac的人，可以在x86的机器上用&lt;a href="http://pearpc.sourceforge.net/"&gt;PearPC&lt;/a&gt;来模拟一台PowerPC的机器，然后安装苹果的操作系统。虽然昔日的开发者不幸因车祸去世，但好在后继有人。&lt;br /&gt;&lt;br /&gt;需要学习使用思科设备的人，可以使用&lt;a href="http://www.boson.com/"&gt;Boson&lt;/a&gt;公司的NetSim来模拟思科的IOS，并把他们连接成网络来实际运转。但这仅仅是提供了模拟使用IOS的途径。可以用&lt;a href="http://www.ipflow.utc.fr/blog/"&gt;Dynamips&lt;/a&gt;来完整模拟路由器硬件，然后在上面安装运行IOS。这样可以完成很多NetSim这样的玩具软件不能完成的功能。(找到两个它的前端，&lt;a href="http://dyna-gen.sourceforge.net/"&gt;Dynagen&lt;/a&gt;和&lt;a href="http://dynagui.sourceforge.net/"&gt;Dynagui&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;在系统管理，网络应用，软件调试，网络安全中，&lt;a href="http://www.vmware.com/"&gt;VMWare&lt;/a&gt;成为必不可少的x86虚拟机。既有Linux版本，也有Windows版本。接近真实地模拟一台计算机，在上面可以安装各种操作系统。可以模拟双CPU，可以像真实的计算机一样设置BIOS，安装系统，有虚拟网卡桥接或NAT两种方式接入宿主主机的网络。并且有免费的VMware Player可用。可以从Ubuntu的源中安装VMware Player，但它无法创建虚拟机配置文件。虚拟机配置文件可以自己编写，或用&lt;a href="http://www.easyvmx.com/"&gt;easyvmx&lt;/a&gt;这样的网站在线生成。&lt;br /&gt;&lt;br /&gt;如果仅仅要模拟Linux操作系统，那么可以使用一些更加轻量的工具。在Linux中可以使用&lt;a href="http://user-mode-linux.sourceforge.net/"&gt;User-Mode-Linux&lt;/a&gt;，Windows中可以选择&lt;a href="http://www.colinux.org/"&gt;coLinux&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;如果要在Windows中模拟一个Linux的运行环境，以方便在Windows中开发Linux下的程序，或者想把Linux应用程序移植到Windows。那么&lt;a href="http://www.cygwin.com/"&gt;Cygwin&lt;/a&gt;是很好的选择。同样，Linux中也有类似的工具，可以在Linux中模拟Windows的运行环境。&lt;a href="http://www.winehq.com/"&gt;Wine&lt;/a&gt;，&lt;a href="http://www.transgaming.com/"&gt;cedega&lt;/a&gt;，都是为了在Linux上运行Windows应用程序而产生的。后者专注于运行Windows下的游戏。而这些，都仅仅是模拟一个运行环境，功能有限，但执行效率很高，并且资源占用远远低于虚拟机。&lt;span style="TEXT-DECORATION: underline"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;如果要调试一个操作系统内核，会有这样的尴尬。虽然可以用VMWare虚拟一个机器，然后装个操作系统，再然后使用内核调试器通过网络对该系统上的内核态驱动进行远程调试。但如果需要在内核启动的过程中调试怎么办？在系统启动的时候，没有应用软件可用，也没有网络协议栈可用，更别说软件的调试器了。可以买个硬件调试器来做这个工作，可是如果自己没有钱或者舍不得花那么多钱怎么办？&lt;br /&gt;&lt;br /&gt;这时候，&lt;a href="http://bochs.sourceforge.net/"&gt;Bochs&lt;/a&gt;和&lt;a href="http://fabrice.bellard.free.fr/qemu/"&gt;QEMU&lt;/a&gt;就是救星。两者都是开源软件，都有Unix和Windows等各种版本，都可以完整模拟各种操作系统，并且都可以使用调试器连接到虚拟主机上充当硬件调试器来调试内核。这两个软件都可以从Ubuntu的源中安装编译好的Linux版本。QEMU在Bochs基础上做了更多工作，因此它似乎更好一些。例如Bochs需要安装特定的Kernel Patch，但QEMU不需要。并且QEMU安装加速器后据说速度约为真实机器的25%，约为Bochs的60倍。&lt;br /&gt;&lt;br /&gt;如此看来，qemu+kqemu(这个并非QEMU的那个KDE的GUI前端，而是QEMU的加速器)似乎是更好的选择。另外发现一个qemu的Gnome图形前端&lt;a href="http://emeitner.f2o.org/qemu_launcher"&gt;qemu-launcher&lt;/a&gt;。Ubuntu的源里没有这个软件，可以从&lt;a href="http://packages.debian.org/unstable/otherosfs/qemu-launcher"&gt;这里&lt;/a&gt;下载它的deb包。Windows用户可以使用QGui，喜欢KDE的人可以使用KQEMU。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37073812-116727600731517706?l=sanhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.sanhex.cn/2006/12/blog-post_28.html</link><author>noreply@blogger.com (Sanhe)</author><thr:total>8</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-37073812.post-116643692818930256</guid><pubDate>Mon, 18 Dec 2006 10:13:00 +0000</pubDate><atom:updated>2007-01-23T23:04:30.648+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Ubuntu</category><title>Ubuntu和Laptop</title><description>一直抱怨为什么gnome不会记录我的屏幕亮度。无论我把显示器亮度调成什么，每次登录Gnome后，都会自动变为最亮。今天从论坛里看到一个说法，觉得不胜惭愧。在电源管理中把默认的亮度调一下不就行了么。&lt;br /&gt;&lt;br /&gt;我的笔记本上有几个快捷键，提供浏览网络，电源管理，开关触摸屏等功能。&lt;br /&gt;原本以为它们只有用Windows才管用。后来发现只要我的ACPI被内核支持，那么这几个快捷键在Linux中也一样可以使用。很高兴。另外触摸屏也工作得很好，轻触的单击，双击，右击(轻触右下角的一个小区域)都没有问题。可惜开关触摸屏的快捷键无效。打字的时候我常常不小心碰到触摸屏，所以希望可以自由开关。于是找到一个说法，简便有效。&lt;br /&gt;&lt;br /&gt;编辑/etc/X11/xorg.conf&lt;br /&gt;查找"InputDevice"，找到触摸屏设置部分。&lt;br /&gt;例如我的Identifier是"Synaptics Touchpad"。&lt;br /&gt;在改Section中添加一行：&lt;br /&gt;Option "SHMConfig" "on"&lt;br /&gt;&lt;br /&gt;然后，论坛中说可以添加一个Gnome启动项目：&lt;br /&gt;syndaemon -i 1 -d&lt;br /&gt;以通过减少触摸屏响应的延迟来缓解乱碰带来的麻烦。&lt;br /&gt;而我则喜欢在不用触摸屏的时候直接关闭它：&lt;br /&gt;synclient touchpadoff=1&lt;br /&gt;用的时候可以再打开：&lt;br /&gt;synclient touchpadoff=0&lt;br /&gt;如果频繁使用这个命令，可以写成一个脚本，方便执行。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37073812-116643692818930256?l=sanhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.sanhex.cn/2006/12/ubuntulaptop.html</link><author>noreply@blogger.com (Sanhe)</author><thr:total>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-37073812.post-116610528059537788</guid><pubDate>Thu, 14 Dec 2006 14:05:00 +0000</pubDate><atom:updated>2007-01-23T23:03:02.190+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>反动言论</category><title>莫扎特密码</title><description>我一直觉得商业炒作情有可原，但对炒作艺术却万分反感。&lt;br /&gt;&lt;br /&gt;这些日子晚上一换到CCTV-3就看到莫扎特密码这个节目。看到很多演奏的片断，极为美妙。节目中也常常播放一些景色，还有对一些外国人的采访片断。本来觉得挺好。可惜的是一看到标语，一听到主持人和嘉宾的评论，我就由衷地感到恶心。&lt;br /&gt;&lt;br /&gt;与浪漫乐派的贝多芬，柴可夫斯基，肖邦，李斯特等人相比，我一直觉得莫扎特的音乐，虽然充满想像力和创造力，巧妙而优美，但没有起伏的情绪和锐利的思想。并且认为古典乐派的这些人的贵族音乐实在没什么意思。虽然贝多芬早期的作品也被列为古典时期的东西。&lt;br /&gt;&lt;br /&gt;我喜欢的音乐家都集中在浪漫乐派。当然也有少数几位不是。比如巴洛克时期的维瓦尔第，充满了变幻和美妙的韵律。民族乐派的德沃夏克和格里格，无比地动人。尽管世人都狂赞莫扎特和海顿，我也觉得他们的一些作品很奇妙，但实在不觉得他们的音乐有什么过分的动人之处。当然这可能和我个人喜好有关。别人喜欢他们，自有他们的原因。但看到电视节目中对他们奇烂无比的评论，出于收视率或其他什么原因的炒作行径，我实在觉得是对音乐的一种玷污。&lt;br /&gt;&lt;br /&gt;虽然有学识和见识的人通常不会当电视节目主持人，也不经常作为电视节目可笑的爪牙。但很难想像，一堆不懂音乐且没有思想的傻货，出于某种滑稽的原因竭尽他们低俗的文字能力评论一个音乐家。甚至把一个音乐人和密码学的名词扯到一起，让两者尽情地相互颠覆和嘲讽。实在是一种文化悲剧。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37073812-116610528059537788?l=sanhex.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.sanhex.cn/2006/12/blog-post_14.html</link><author>noreply@blogger.com (Sanhe)</author><thr:total>2</thr:total></item></channel></rss>