<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Imported from WordPress on 星月轮转</title>
    <link>https://qingbo-net.pages.dev/wp/</link>
    <description>Recent content in Imported from WordPress on 星月轮转</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Mon, 24 Mar 2025 21:51:32 +0000</lastBuildDate>
    <atom:link href="https://qingbo-net.pages.dev/wp/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>澳洲创业公司一个有趣现象</title>
      <link>https://qingbo-net.pages.dev/archives/618/</link>
      <pubDate>Mon, 24 Mar 2025 21:51:32 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/618/</guid>
      <description>&lt;p&gt;看起来不少澳洲创业公司想复印 Canva 的成功，首先标配就是创始三人组。&lt;/p&gt;
&lt;p&gt;立志干翻 Canva 的 Desygner:&lt;figure class=&#34;wp-block-image size-full&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://qingbo.net/wp-content/uploads/2025/03/Screenshot-2025-03-25-at-09.10.15.png&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;666&#34; height=&#34;610&#34; src=&#34;https://qingbo.net/wp-content/uploads/2025/03/Screenshot-2025-03-25-at-09.10.15.png&#34; alt=&#34;&#34; class=&#34;wp-image-626&#34; /&gt;&lt;/a&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;Springboards AI – 一对夫妻加一个 CTO。&lt;figure class=&#34;wp-block-image size-full&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://qingbo.net/wp-content/uploads/2025/03/Screenshot-2025-03-25-at-08.33.07.png&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;748&#34; height=&#34;621&#34; src=&#34;https://qingbo.net/wp-content/uploads/2025/03/Screenshot-2025-03-25-at-08.33.07.png&#34; alt=&#34;&#34; class=&#34;wp-image-624&#34; /&gt;&lt;/a&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;前几天刚融资，然后领投的 VC 马上报警的 StrongRoom AI:&lt;figure class=&#34;wp-block-image alignwide size-full&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://qingbo.net/wp-content/uploads/2025/03/Screenshot-2025-03-25-at-08.50.14.png&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;1211&#34; height=&#34;547&#34; src=&#34;https://qingbo.net/wp-content/uploads/2025/03/Screenshot-2025-03-25-at-08.50.14.png&#34; alt=&#34;&#34; class=&#34;wp-image-621&#34; /&gt;&lt;/a&gt;&lt;/figure&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>2020</title>
      <link>https://qingbo-net.pages.dev/archives/591/</link>
      <pubDate>Fri, 25 Dec 2020 11:02:47 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/591/</guid>
      <description>&lt;p&gt;2019年末，在前公司长达十年的打工生涯结束。2020年初，偶尔开车经过国贸，看高楼林立，灯火辉煌，略感留恋。快远离时，才开始欣赏美好的这一面。&lt;figure class=&#34;wp-block-image size-large is-style-default&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://qingbo.net/wp-content/uploads/2020/12/beijing.png&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;1080&#34; height=&#34;903&#34; src=&#34;https://qingbo.net/wp-content/uploads/2020/12/beijing.png&#34; alt=&#34;&#34; class=&#34;wp-image-602&#34; /&gt;&lt;/a&gt;&lt;figcaption&gt;东五环遥望国贸&lt;/figcaption&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;远赴他乡之前，一月中旬从北京出发南下，带家人开始最长的一次自驾。途经正定，邯郸，洛阳，襄樊，荆门，荆州，岳阳，长沙，株洲，第六天到达惠州。&lt;/p&gt;</description>
    </item>
    <item>
      <title>笔记软件比较</title>
      <link>https://qingbo-net.pages.dev/archives/579/</link>
      <pubDate>Sat, 07 Sep 2019 09:49:18 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/579/</guid>
      <description>&lt;p&gt;之前就写过一篇相关的——&lt;a href=&#34;http://qingbo.net/archives/479&#34;&gt;用 Markdown 记笔记的一些工具&lt;/a&gt;。几年过去了，我虽然没有“善其事”，仍然想“利其器”，挑选笔记软件的步伐还没有停下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>通勤路上听英语</title>
      <link>https://qingbo-net.pages.dev/archives/565/</link>
      <pubDate>Sun, 20 Nov 2016 14:51:16 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/565/</guid>
      <description>&lt;p&gt;最近一年半左右的时间，我每天上班花三到四个小时的时间通勤，可谓浪费生命。这种生活刚刚结束，我竟然有点怀念。其实现在也要花一个多小时在路上，只不过稍微碎片化，不如以前那么好利用了。&lt;/p&gt;
&lt;p&gt;住在远郊在中心城区上班，大部分人都觉得比较恐怖。然而我住的地方恰好班车比较发达，稍微多花点钱，每天就可以定点坐大巴上班，不用担心拥挤。车上不少人看手机，有的看书，而我这两样都不行，看一会就晕车，于是只好利用耳朵去享受这段时光。&lt;/p&gt;</description>
    </item>
    <item>
      <title>火星救援 – 作者，书，电影</title>
      <link>https://qingbo-net.pages.dev/archives/554/</link>
      <pubDate>Sat, 28 Nov 2015 13:47:40 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/554/</guid>
      <description>&lt;p&gt;上周一个朋友推荐纪录片 &lt;a href=&#34;http://www.amazon.com/gp/product/B00IWULSTC/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B00IWULSTC&amp;linkCode=as2&amp;tag=qingbblog-20&amp;linkId=YVF4VCSNSA3IG47Q&#34; rel=&#34;nofollow&#34;&gt;Cosmos: A Spacetime Odyssey&lt;/a&gt;, 没想到开始之后便停不下来，周六一天就看完了全部13集（非常推荐！）。之后一直对宇宙探索的话题着迷，第二天又看了亚利桑那大学的&lt;a href=&#34;http://open.163.com/special/opencourse/cosmic.html&#34; target=&#34;_blank&#34;&gt;宇宙起源讲座&lt;/a&gt;。正好《火星救援》这个电影要上映了。由于我对此主题的着迷，先读了原书，才去看的电影。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Among the Islands: Adventures in the Pacific</title>
      <link>https://qingbo-net.pages.dev/archives/529/</link>
      <pubDate>Wed, 14 Oct 2015 14:45:47 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/529/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.amazon.com/gp/product/B008DYIBNS/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B008DYIBNS&amp;amp;linkCode=as2&amp;amp;tag=qingbblog-20&amp;amp;linkId=KYZSZD4Q6BU4263S&#34;&gt;&lt;img decoding=&#34;async&#34; class=&#34;alignright&#34; src=&#34;http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;ASIN=B008DYIBNS&amp;Format=_SL250_&amp;ID=AsinImage&amp;MarketPlace=US&amp;ServiceVersion=20070822&amp;WS=1&amp;tag=qingbblog-20&#34; alt=&#34;&#34; border=&#34;0&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://qingbo.net/archives/498&#34;&gt;A Short History of Nearly Everything&lt;/a&gt; 一书中多次提到 Tim Flannery 这位澳大利亚哺乳动物学家和古生物学家，于是我找了一本他的书来看。&lt;/p&gt;
&lt;p&gt;这本 Among the Islands 并没有在 Bill Bryson 的那本著作中提到，因为它是在 A Short History of Nearly Everything 之后，2011年左右才出版的。它的内容是作者对上世纪八九十年代在近澳大利亚的太平洋岛屿的一系列考察之旅的回顾。&lt;/p&gt;
&lt;p&gt;这些岛屿形成的原因不尽相同。有的本是 Papua New Guinea 或澳大利亚大陆的一部分，很久以前因为地质运动或海平面上升，带着某些生物与大陆分离，像一艘巨大的方舟；有的是火山喷发或慢慢从海里冒出来，逐渐有飞行动物居住，甚至有陆地生物漂流过去。这些岛屿的形成有早有晚，就像有人（神）在做一个实验一样，在某个时间点，隔离一些生物，过几百或几千万年以后，看结果如何。此书中涉及的岛屿如下图所示，从西北的 Admiralty Islands，到东南的 Fiji，包括 Bismarck Archipelago (New Ireland, New Britain), Solomon Islands, New Caledonia 这些大的群岛以及其他一些小的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Walk in the Woods: Rediscovering America on the Appalachian Trail</title>
      <link>https://qingbo-net.pages.dev/archives/514/</link>
      <pubDate>Sat, 10 Oct 2015 14:04:19 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/514/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.amazon.com/gp/product/B000S1LSAM/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B000S1LSAM&amp;amp;linkCode=as2&amp;amp;tag=qingbblog-20&amp;amp;linkId=P5JOSI4SV5CTVOL5&#34;&gt;&lt;img decoding=&#34;async&#34; class=&#34;alignleft&#34; src=&#34;http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;ASIN=B000S1LSAM&amp;Format=_SL160_&amp;ID=AsinImage&amp;MarketPlace=US&amp;ServiceVersion=20070822&amp;WS=1&amp;tag=qingbblog-20&#34; alt=&#34;&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;美国是个公路交通高度发达的国家，人们恨不得过个马路都要开上车，但是有不少政府或公益组织却孜孜不倦地开发、维护用来健步或休闲的自行车路或徒步小径。2012年秋天我趁一个机会在波士顿北边&lt;a href=&#34;http://qingbo.net/archives/462&#34;&gt;简单体验了一下 Minuteman Bikeway&lt;/a&gt;，时间只有一天，而它的专一、完善以及与历史文化结合的方式给我留下了深刻印象。&lt;/p&gt;
&lt;p&gt;而第一次听说这条阿帕拉契小径 (Appalachian Trail，简写 AT)，我是在一个不熟悉的同事的离职邮件里。邮件里模糊记得的部分是——&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;……我将踏上阿帕拉契小径，看它会指引我向何方……&lt;/p&gt;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>A Short History of Nearly Everything</title>
      <link>https://qingbo-net.pages.dev/archives/498/</link>
      <pubDate>Tue, 06 Oct 2015 08:19:22 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/498/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.amazon.com/gp/product/076790818X/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=076790818X&amp;amp;linkCode=as2&amp;amp;tag=qingbblog-20&amp;amp;linkId=DBVJ5EYDZQZOFJSV&#34;&gt;&lt;img decoding=&#34;async&#34; class=&#34;alignright&#34; src=&#34;http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;ASIN=076790818X&amp;Format=_SL110_&amp;ID=AsinImage&amp;MarketPlace=US&amp;ServiceVersion=20070822&amp;WS=1&amp;tag=qingbblog-20&#34; alt=&#34;&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;我对跟历史有关系的书都很有兴趣，所以一看到这个书名就被吸引住了，觉得这是一本简短的、关于人类有记载历史的书。太好了，花费较短的时间就能满足我对“所有”历史的好奇心。&lt;/p&gt;
&lt;p&gt;可是一开篇就有点颠覆我从书名得来的印象，作者这样欢迎读者——你能“存在”真是一件不容易的事。从原子层面上看，组成你对它们来说没有任何意义。你再想想这有多神奇和幸运，在38亿年长的时间里，你的前辈们有足够好的运气生存下来，在进入有性繁殖的时代后一代一代都有足够的魅力找到对象，生生不息，最终有了你……&lt;/p&gt;</description>
    </item>
    <item>
      <title>A People’s History of the United States</title>
      <link>https://qingbo-net.pages.dev/archives/484/</link>
      <pubDate>Sat, 22 Aug 2015 09:06:13 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/484/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.amazon.com/gp/product/0060838655/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0060838655&amp;amp;linkCode=as2&amp;amp;tag=qingbblog-20&amp;amp;linkId=JEMJVTHG24G7PVTL&#34;&gt;&lt;img decoding=&#34;async&#34; class=&#34;alignleft&#34; src=&#34;http://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;ASIN=0060838655&amp;Format=_SL110_&amp;ID=AsinImage&amp;MarketPlace=US&amp;ServiceVersion=20070822&amp;WS=1&amp;tag=qingbblog-20&#34; alt=&#34;&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; style=&#34;border: none !important; margin: 0px !important;&#34; src=&#34;http://ir-na.amazon-adsystem.com/e/ir?t=qingbblog-20&amp;l=as2&amp;o=1&amp;a=0060838655&#34; alt=&#34;&#34; width=&#34;1&#34; height=&#34;1&#34; border=&#34;0&#34; /&gt;Howard Zinn，身为一个美国人，把整个美国史一黑到底，从哥伦布发现美洲开始到现代，用事实揭露得体无完肤，连华盛顿、林肯这样公认的伟人也不留情面，这是什么样的精神？&lt;/p&gt;
&lt;p&gt;这本书我看得比较慢，记性也不好，以至于现在读完了，前面的都忘得差不多了。不过看到好多史实和案例的时候，不禁大呼黑得漂亮。同时也经常纳闷，为什么我国没有把它翻译过来做资本主义民主的反面教材呢？&lt;/p&gt;</description>
    </item>
    <item>
      <title>There and Back Again</title>
      <link>https://qingbo-net.pages.dev/archives/480/</link>
      <pubDate>Wed, 19 Aug 2015 16:11:08 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/480/</guid>
      <description>&lt;p&gt;多年前就感慨过，当初写博客的那拨人，都不写了。现在更是如此，大家如果还有阵地，都转移到微博或微信了。不过微博微信毕竟不像自己的地盘，乱七八糟的，噪音太多了。&lt;/p&gt;
&lt;p&gt;我的博客在十年间，天灾人祸不知道经历了多少，至今还在苟延残喘，不容易。我已经不记得我折腾过它多少次了，上次是用 Python 自己写了个简单的程序，替换了 WordPress 吧。不过就在刚刚，我又换回 WordPress 了，不想折腾了。我自己写的程序没怎么做管理界面，导致我经常忘记写文章的链接。还有垃圾评论来了，我都不记得管理评论的链接是什么。&lt;/p&gt;
&lt;p&gt;以前搬家或者换程序的时候，还会仔细考虑如何修改内链，如何保证旧的链接格式还能访问，文章格式不要乱。现在不再考虑了，有的图片可能不会正常显示，访问旧的链接是 404，某些文章里用 JavaScript 做的效果也没了，评论、分类都懒得转移过来。&lt;/p&gt;
&lt;p&gt;最不折腾的办法其实是用第三方的博客服务，但是国外的所有博客服务在国内访问都有风险，国内所有做得还不错的博客（或类似）服务最终都会倒闭，所以，我还是自己弄个服务器稍微折腾一下吧。&lt;/p&gt;
&lt;p&gt;博客名字也改成了我最早使用的那个，所以本文取了这么个名字。&lt;/p&gt;</description>
    </item>
    <item>
      <title>用 Markdown 记笔记的一些工具</title>
      <link>https://qingbo-net.pages.dev/archives/479/</link>
      <pubDate>Mon, 02 Feb 2015 15:50:23 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/479/</guid>
      <description>&lt;p&gt;我和身边好多朋友都用 Evernote 来记笔记。但是好多年了我时常有个念头，如果用 Markdown 来写笔记，同时又能利用 Evernote 稳定便利的同步服务，那该多好！&lt;/p&gt;
&lt;p&gt;几年前在 Google 搜这个话题的时候，发现的网页现在竟然已经找不到了，印象中好像通过 Apple Script 来调用一个 Parser. 还有个特别简洁的应用，简洁到我都无法适应。&lt;/p&gt;
&lt;p&gt;今晚想写点笔记，看见 Evernote 又觉得贴个代码太丑了，花了点时间看了看现在的解决方案。&lt;/p&gt;
&lt;h2 id=&#34;quiver&#34;&gt;Quiver&lt;/h2&gt;
&lt;p&gt;&lt;a class=&#34;new-window&#34; href=&#34;http://happenapps.com/#quiver&#34; target=&#34;_blank&#34;&gt;Quiver&lt;/a&gt; 号称“程序员的笔记本”。&lt;/p&gt;
&lt;p&gt;优点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;与 Evernote 相似的界面，容易上手&lt;/li&gt;
&lt;li&gt;代码高亮功能貌似很完善&lt;/li&gt;
&lt;li&gt;支持普通文本框插入图片——纯粹的 Markdown 也许偶尔无法满足需求&lt;/li&gt;
&lt;li&gt;全文检索&lt;/li&gt;
&lt;li&gt;有实时预览&lt;/li&gt;
&lt;li&gt;支持 LaTex（这个我现在基本不用了）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;缺点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;实时预览无法跟踪当前编辑位置&lt;/li&gt;
&lt;li&gt;Markdown 语法支持有限（我只简单测试了表格好像不支持，但并不十分确定，求指正）&lt;/li&gt;
&lt;li&gt;撰写笔记是基于“Cell”的单位，是个新概念，我放在缺点里因为我不是很习惯……Cell 有四种 – Text, Markdown, Code, LaTex&lt;/li&gt;
&lt;li&gt;小 bug – 在文本框按了 Tab 后无法 Undo，只有再输入普通字符才可以一起 Undo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果 Quiver 有完善的 Markdown 支持，并且继续完善功能，修正 bug，我会购买并替换 Evernote 的。&lt;/p&gt;
&lt;h2 id=&#34;stackedit&#34;&gt;StackEdit&lt;/h2&gt;
&lt;p&gt;&lt;a class=&#34;new-window&#34; href=&#34;https://stackedit.io/&#34; target=&#34;_blank&#34;&gt;StackEdit&lt;/a&gt; 是基于浏览器的一个 Markdown 编辑器，开源项目。&lt;/p&gt;
&lt;p&gt;优点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Markdown 语法、扩展支持得相当完善&lt;/li&gt;
&lt;li&gt;云同步支持 Dropbox，Google Drive&lt;/li&gt;
&lt;li&gt;支持浏览器本地存储&lt;/li&gt;
&lt;li&gt;实时预览并且追踪当前编辑位置&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;缺点：&lt;/p&gt;</description>
    </item>
    <item>
      <title>在 Kindle 上体验多看</title>
      <link>https://qingbo-net.pages.dev/archives/478/</link>
      <pubDate>Wed, 15 Oct 2014 15:47:05 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/478/</guid>
      <description>&lt;p&gt;国庆节前最近为了看一个 pdf 格式的文档，也是为了体验一下多看，我在 Kindle Paperwhite 上面装了个多看系统。&lt;/p&gt;
&lt;p&gt;慢慢适应了它的操作、设置方式之后，简单看了几页那个 pdf 文档，有如下感受：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;切边功能很不错。不过手动切的话，在 Kindle 上对切边位置没有实时的反馈。我想这是受限于 e-ink 的刷新速度吧。&lt;/li&gt;
&lt;li&gt;切边后再横屏，就能凑合着看了。如果原 pdf 白边很大的话，那此时字体显示也很大了。但是横屏看东西总是有点不舒服。&lt;/li&gt;
&lt;li&gt;pdf 重排确实牛。但是终究有些格式是丢失了，比如源代码的排版，底色等。看 pdf 有时就是为了它严格的版式，所以我不太想用此功能。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但是之后整个长假有空的时候，都在看一本英文书。刚刚切回原生系统，简单对比一下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;字体 – 这个的差别感受太明显了，不光是 Kindle 对字体的渲染好太多，而且系统内带的为数不多的字体大都比较漂亮。而多看一方面不能从字体列表看到每个字体的效果，字体也不好看，渲染的效果明显没有原生系统的黑。切回原生系统看同一本英文书，那感觉就是诺基亚 S40 的手机换成了 iPhone&lt;/li&gt;
&lt;li&gt;查词典 – 多看的感觉稍微快点&lt;/li&gt;
&lt;li&gt;选择 – 改变选择区域的大小时，多看的似乎更容易掌控&lt;/li&gt;
&lt;li&gt;中文输入 – 多看的输入法又快又好，几乎赶上手机的体验。但这个其实不常用。&lt;/li&gt;
&lt;li&gt;书摘 – 多看可以同步至 Evernote，不过我没体验&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最后的结论——&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Kindle 还是不适合看 pdf，即使用多看。我可能会买个平板看 pdf&lt;/li&gt;
&lt;li&gt;看英文书还是原生系统好&lt;/li&gt;
&lt;li&gt;没必要卸载多看，万一哪天从多看买点中文书呢，毕竟排版比较好&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>天津集体户口准生证办理 (暨天津一日游)</title>
      <link>https://qingbo-net.pages.dev/archives/477/</link>
      <pubDate>Sat, 16 Aug 2014 00:49:27 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/477/</guid>
      <description>&lt;p&gt;俗话说，办证要从娃娃抓起。这娃娃还没到世上，就得办证了，以证明TA的出生是正确的。&lt;/p&gt;
&lt;p&gt;我户口在老家，本来是想在老家办准生证的。结果让爸问了三回，人家坚持说准生证必须在女方户籍所在地办。老婆户口在天津，最初给的说法是集体户口不能落户，不给办准生证。后来在网上咨询，天津计生委给回了电话说可以办，并且告知了所需的各种材料。&lt;/p&gt;
&lt;p&gt;于是我们就开始准备，最重要的是我的初婚未育证明。这个对我来说还算省事，就是辛苦我爸了。先去村里开个证明，村委会盖章，再去乡里计生办盖章，最后县里计生局盖章。集齐三枚印章，宝物成功合成。&lt;/p&gt;
&lt;p&gt;挑了一个工作日，带上能想到的各种身份证件及复印件，向天津进发。为顺利，除了普通的B超单子，我们让医院给开了正式的孕检证明，有医生的签字和医院的章。&lt;/p&gt;
&lt;p&gt;北京早上7-9点禁止外地车在五环内行驶。我们6点起床，6:30出发，还好离五环近，成功在7点前逃离。尽管想开慢点，一小时后还是通过了天津收费站，而天津外环以内也是7-9点禁行外地车，于是在简陋的服务区吃了点方便面什么的，拖延时间。快到9点的时候往城里走，没想到刚出收费站就堵得水泄不通，等到了户籍托管的地方已经9:40了。托管单位开了一些证明什么的，期间还有一位工作人员严肃告诫——千万别再天津办准生证。&lt;/p&gt;
&lt;p&gt;出来后赶到派出所把“未婚”改成“已婚”，到了下一个部门就11:30，下班了。我们找了一个餐馆，硬是熬过三个小时，等到下午2:30.&lt;/p&gt;
&lt;p&gt;下午跑了三个地方，我都记不清分别都是干嘛的了。居委会不再是大妈了，态度还不错，比较通融。奇怪的政策要求她们出具现居住地证明，问我们要暂住地的居委会开的居住证明，我们当然不知道有这回事也不知道要这个是为了什么，多亏出发前一天晚上把北京的“暂住证”带了，竟然派上了用场。&lt;/p&gt;
&lt;p&gt;注意办准生证的正规时间只有每周二、周五的上午，可是周二上午已经过去了！但是居委会让我们打个电话问问，可能给办。果然，我说了从外地过来的，对方就让我们去办了。办之前还先去另一个部门登记了资料，顺便办了个“流动人口婚育证明”，此时网断了，让我们去办准生证证的时候让对方打电话确认。办证还比较顺利，不过下午跑完三个地方，全部办完，也3:50了。天津下午4-7点是晚高峰，外环内禁行外地车。我们一阵猛跑，不过由于堵车，出去已经是4:10了。北京五环内5-8点禁行外地车，我算了算，5点到家的话，时速要150，于是作罢。在北京外面睡了一夜，第二天又大早起来，赶在7点之前到家了。&lt;/p&gt;
&lt;p&gt;总结一下这一天：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;7:00 – 9:00 必须在北京五环与天津外环之间，路程不到100公里，2小时&lt;/li&gt;
&lt;li&gt;9:00 – 11:30 办事时间 2.5 小时&lt;/li&gt;
&lt;li&gt;11:30 – 14.30 休息时间 3 小时&lt;/li&gt;
&lt;li&gt;14:30 – 16:00 办事时间 1.5 小时。各部门下班时间应该比这个晚，但我们想避开高峰禁行&lt;/li&gt;
&lt;li&gt;16:00 – 17:00 可以进北京，但是我们出天津耽误时间了&lt;/li&gt;
&lt;li&gt;17:00 – 20:00 不能进北京五环&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不管怎么辛苦折腾，最后准生证到手了，心情还算好。虽然目前的政策乱，有不合理之处，多数工作人员还是比较理解和通情达理的。&lt;/p&gt;
&lt;p&gt;现在我就希望下一步宝宝出生后，能在老家尽快顺利落户。但长期，我必须通过各种途径努力，摆脱“流动人口”、“外地车”的这些身份，也让我的后代不再“暂住”。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fitbit Flex 体验</title>
      <link>https://qingbo-net.pages.dev/archives/476/</link>
      <pubDate>Mon, 19 May 2014 13:00:39 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/476/</guid>
      <description>&lt;p&gt;公司为鼓励员工健身，让大家参加一个为期八周的“挑战”项目，一周走路达到一定步数，每周比上一周更多。这个项目最大的激励就是参与的人都发一个 Fitbit Flex 腕带，有了它才能计步嘛。&lt;/p&gt;
&lt;p&gt;过了年纪了，对这种新鲜小玩意没那么大热情了。现在所谓的可穿戴设备这么流行，没想到我的第一件竟然是免费得来的。到手之后赶紧研究一番，怎么同步，怎么记录睡眠。几乎24小时都戴着，睡觉前猛敲几下进入睡眠模式，早上醒来又要猛敲它一阵儿退出。&lt;/p&gt;
&lt;p&gt;这样的日子不出一周就厌倦了。首先，它计步就非常不准，这个是无解的。它靠探测摆动或震动来计算步数，但是你摆手的时候，不一定是在走路。有个同事说跑步快的时候，计数也不准。其次仔细想一下，对于运动的人来说，即使准确记录步数有什么意义吗？我上班是相当方便了，需要走路的距离非常短，每天上下班，包括在公司里面来回走动（码农也不需要走太多），加起来竟然五六千步。而中午去健身房跑步十五分钟，满头大汗，也就两三千步吧（我没记太清楚），对于我们的挑战赛来说，“性价比”极低。即使不是专门为这种“比赛”而购买，我觉得这个手环对于计算运动量（或者“卡路里”）来说真是没什么意义。&lt;/p&gt;
&lt;p&gt;刚开始了解它的时候我还想，Garmin 做了那么多 GPS 运动手表，为什么不把计步这么一个简单的功能做进去呢？没过几天，正好 &lt;a class=&#34;new-window&#34; href=&#34;http://garmin.blogs.com/my_weblog/2014/05/introducing-garmin-forerunner-15-a-gps-running-watch-with-heart-rate-and-daily-activity-tracking.html&#34; target=&#34;_blank&#34;&gt;Garmin 发布了 Forerunner 15&lt;/a&gt;，但是从定价看却是低端产品。现在看只要稍微体验一下，就知道这是个鸡肋功能，理解 Garmin 的思路了。顺便说，Forerunner 15 比 Flex 多太多功能了，只 GPS 一项就秒杀了，加上手表、外形的优势，价格却没贵多少。可惜所处环境太差，去户外跑步简直就是自杀，要不我真想买个 Garmin 的高端点的 GPS 手表。&lt;/p&gt;
&lt;p&gt;对记录睡眠时间、状态的功能，我的兴趣保持了稍微长一点的时间。每天早上会看看昨晚睡了多长时间，起来几次，睡眠状况好不好之类的数据。不过前天晚上开始不再戴着它睡觉了。即使调节得很松，长时间压着手腕还是会有印，而且戴着个东西睡觉很不习惯。最关键的是每天想着要记录睡觉的起始和结束，有点为了记录而睡觉的感觉，反倒成了一点压力。&lt;/p&gt;
&lt;p&gt;也许是我对什么事物的热情都不能长久吧，反正一两周时间，我就对这个产品失去兴趣了。设想几种适合该产品的人群：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;哇，今天我走了100步，比昨天多了13步！&lt;/li&gt;
&lt;li&gt;我不用它来计步，我要的是潮流和时尚。（建议直接买腕带套餐，五颜六色更好看，更便宜）&lt;/li&gt;
&lt;li&gt;我就喜欢静音闹钟！&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;当然如果是自掏腰包 $99 买的话，我的兴趣可能会持久一点，或者不承认它的不好……就写这么多，给打算入手类似设备的朋友们一个参考。&lt;/p&gt;</description>
    </item>
    <item>
      <title>关于房子</title>
      <link>https://qingbo-net.pages.dev/archives/475/</link>
      <pubDate>Sun, 01 Dec 2013 03:24:21 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/475/</guid>
      <description>&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;p&gt;屋里的插座都是我自己安装的，恰好装到最后一个的时候，发现它地线的电压不对，用一个破万用表测出来是140多伏。把工长找来找了好久的原因，最后拆开强电箱面板，发现那根地线连皮都没剥，什么都没接，太奇葩了。还好不是墙里的问题，我没有内六角螺丝刀，找物业的人来给接上了。&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;/p&gt;
&lt;p&gt;总之在一个上班都不方便的破地方买了这个房子，就不应该装修。这半年来不光花了很多时间，更是浪费了不少心思。今天应该算告一段落了，我可以开始静心做自己应该做的事。&lt;/p&gt;
&lt;p&gt;不过我已经开始有了奇怪的心理，即“房价越高，民众对政府的满意程度也相对提高”。在这高楼林立，人挤人，空气污染到不见天日，噪音巨大，交通拥堵的城市里，住在像蜂窝一样的楼里面，70年的租期，人为什么要这么折腾自己？&lt;/p&gt;</description>
    </item>
    <item>
      <title>关于英语学习</title>
      <link>https://qingbo-net.pages.dev/archives/474/</link>
      <pubDate>Thu, 14 Nov 2013 13:39:31 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/474/</guid>
      <description>&lt;p&gt;本文只是我个人的一些观点、方法和经验，只供借鉴，未必对所有人适用，每个人都应该根据自己的基础和环境发展自己的学习方法。&lt;/p&gt;
&lt;h3 id=&#34;不要太相信培训速成&#34;&gt;不要太相信培训、速成&lt;/h3&gt;
&lt;p&gt;大家都知道不能一口吃个胖子，多数人选择培训都是因为跟风或者应试压力。别人去了我为什么不去，别人知道了“应试技巧”我却不知道怎么行。根源还是对自己不自信，对自己的学习能力不自信。花几千块钱去大课堂里上课，花几万块钱跟外教说说话，真的很不值。真正能促进英语能力提升的，是找到兴趣并在平时不停的积累。&lt;/p&gt;
&lt;h3 id=&#34;阅读阅读阅读&#34;&gt;阅读，阅读，阅读&lt;/h3&gt;
&lt;p&gt;英语分听说读写四大块，对于中国人，由易到难一般是读，听，写，说。但这四者是互相有带动作用的，我就是在阅读上面下的功夫最多，其它的稍加练习也就进步很快了。这几样能力都有个共同的基础，就是词汇。词汇怎么积累呢？死记硬背是有一定效果的，但我记忆力一般，所以效果甚微。&lt;/p&gt;
&lt;p&gt;学好英文的好处就是可以跳过翻译，直接去读优秀的原著。不管是文学还是社科，英文的好书太多了，不会英文真可惜。反过来，稍有基础之后，你就可以找到适合自己的英文书籍去读，通过原汁原味的英语加速提升英语水平。刚开始的时候需要坚持，过不了多久你就发现生词变少了，阅读速度加快了，这就是乐趣，你不用再忍受蹩脚（大多数）的或者毫不负责任（大多数）的翻译了。两年前写过一篇文章”&lt;a href=&#34;http://qingbo.net/blog/post585.html&#34;&gt;英文书籍阅读之难度&lt;/a&gt;“，可能对选择阅读材料有所帮助。一定要找到感兴趣的书，才好坚持下来。&lt;/p&gt;
&lt;p&gt;有精力的时候你可以把所有遇见的生词都记下来学习，精神欠佳的话也可以跳过无所谓的单词，理解作者的意思即可。通过阅读积累的词汇最牢固，因为很多单词在同一本书里会重复出现。而且相比于简单的中文解释，在上下文和句子中你可能会体会到更微妙的甚至中文无法表达的含义。你可能在词典中看到许多单词有一样的中文释义，但是它们不一定是“同义词”。&lt;/p&gt;
&lt;h3 id=&#34;工具&#34;&gt;工具&lt;/h3&gt;
&lt;p&gt;如果想读英文书籍的话一定要有一部 Kindle. 最早的时候看到生词只能翻词典，文曲星一类电子辞典的出现就是一大进步，有了电脑以后，鼠标放在单词上就可以看到解释了。但是自制力不强的话，电脑上看书容易分神，另外眼睛也累。Kindle 提供了与纸质书籍接近的阅读体验，同时还可以最方便地查词典，尤其是现在的版本有了触摸屏。&lt;/p&gt;
&lt;p&gt;另一个推荐的工具是刚发现不久的 &lt;a class=&#34;new-window&#34; href=&#34;http://quizlet.com/&#34; target=&#34;_blank&#34;&gt;Quizlet&lt;/a&gt;，可以说把生词本做到了极致。最基本的单位是卡片，一个卡片对应一个单词。许多卡片组织成一个 set，你可以创建无限多的 set. 它提供以 set 为基础的各种学习、测验方式，帮你强化对这些单词的记忆。在某些环节中发现你容易出错的单词，它也有简单的机制将其标出 (star)，让你有针对地进行训练。这个网站有手机应用，但至少 android app 暂时没有 create set 的功能。&lt;/p&gt;
&lt;p&gt;我最近在读的一本书是 “Guns, Germs, and Steel: The Fates of Human Societies”，非常有意思。读的时候，我把遇到的生词用记在手机的 Evernote 里。攒够七八十个的时候，我就到电脑上打开 Evernote，手机上记录的单词会很快同步过来。在 Quizlet 上新建一个 set，对那个生词列表稍作处理即可导入，利用其 auto-define 功能给单词一个个加上中文解释（这步稍显繁琐，但是可以看作是第一遍学习）。&lt;/p&gt;
&lt;p&gt;最新的 Kindle 软件似乎已经内置有生词本了，如果能与 Quizlet 这样的网站结合就完美了。&lt;/p&gt;
&lt;h3 id=&#34;听写说&#34;&gt;听、写、说&lt;/h3&gt;
&lt;p&gt;前面就提到，这些都是相互关联的，从最容易实践的阅读下手，等读完一本书，你可能发现听、写、说的能力都有所提高了。一方面源于词汇的积累，另一方面就是所谓“熟读唐诗三百首，不会作诗也会吟”。&lt;/p&gt;
&lt;p&gt;当然练习听力的成本也是很低的，这里我推荐 &lt;a class=&#34;new-window&#34; href=&#34;http://learnenglish.britishcouncil.org/en/&#34; target=&#34;_blank&#34;&gt;British Council 的英语学习网站&lt;/a&gt;，Listen and Watch 栏目有几个系列高质量的 podcast. British Council 就是雅思考试背后的组织之一，为传播输出大英帝国的文化、价值观不遗余力。另一个是 &lt;a class=&#34;new-window&#34; href=&#34;http://learningenglish.voanews.com/&#34; target=&#34;_blank&#34;&gt;VOA 的英语学习网站&lt;/a&gt;，时事新闻，还按难度分级，非常好。iTunes 里也可以找到许多不同水平的 podcast，可以根据自己兴趣订阅。&lt;/p&gt;
&lt;p&gt;随时可以尝试用英文写一些文章，比如弄个别人不知道的 blog 随便写写。&lt;/p&gt;</description>
    </item>
    <item>
      <title>关于 C 程序的 exit status</title>
      <link>https://qingbo-net.pages.dev/archives/473/</link>
      <pubDate>Wed, 14 Aug 2013 13:21:23 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/473/</guid>
      <description>&lt;p&gt;APUE 的 7.3 节，Process Termination, 讲在各种情况下一个 C 程序的 exit status，看着实在是乱。&lt;/p&gt;
&lt;p&gt;我在 Mac 上用 gcc 4.2 试了一下，大致是如下情况：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;main 的返回类型不显式定义或定义为 int，不写 return 语句，默认编译后 exit status 是 255. 而指定 C99 标准编译（没有显示定义返回值的话有警告，返回值默认为 int），是 0&lt;/li&gt;
&lt;li&gt;定义 main 返回类型为 void，不写 return，exit status 是 10&lt;/li&gt;
&lt;li&gt;定义 main 返回类型为 void，return 不加参数，exit status 是 255&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;怎么办？我觉得很简单，这种东西是不需要记忆的——如果在意 exit status 的话，记住给 main 定义 int 型返回值，调用 return 和 exit 时加上参数不就行了吗。&lt;/p&gt;
&lt;p&gt;既然有了标准，就不用可以记住不标准的东西会有什么结果了。我们凡人脑容量有限，应该腾出地方来记更有意义的东西。&lt;/p&gt;</description>
    </item>
    <item>
      <title>网购方太烟机灶具及安装</title>
      <link>https://qingbo-net.pages.dev/archives/472/</link>
      <pubDate>Sun, 19 May 2013 00:31:52 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/472/</guid>
      <description>&lt;p&gt;在苏宁易购趁低价买了方太的烟灶套餐，比苏宁实体店便宜700元还送刀具。&lt;/p&gt;
&lt;h2 id=&#34;下单送货&#34;&gt;下单送货&lt;/h2&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;同时提醒，包裹可能会陆续到达。我以为只是“可能”，方太很实诚，&lt;strong&gt;真的是陆续到达&lt;/strong&gt;了。我的是EMS发来的（方太说有可能是顺丰、联邦或EMS）。即使是正在装修的新房，也千万不要有送到现住地址然后自己开车拉过去的想法。一方面烟机包装特别大，轿车是没办法装下的。另一方面，想不到烟机那么重，你车即使装得下，搬运也很累。正在装修的话，请工人代收是个好办法。送烟机的时候 EMS 有电梯的情况下都不给送上楼，是工人下楼签收后帮我搬上去的。灶具和赠品（还有后来的发票）我是自己去EMS的仓库拉回来的。&lt;/p&gt;
&lt;p&gt;等三件货物收齐，在苏宁后台订单页面点确认收货，发票就会送过来。没想到又是厂家用EMS发的，坑爹，为什么不跟货物一起发过来。当时我想让发票送到单位地址的，方太的人说确认的时候跟苏宁沟通一下看行不行（闹了半天是方太自己开发票，跟苏宁沟通个头啊）。后来跟苏宁打电话，苏宁说我没有在附言里写的话，就改不了了。&lt;/p&gt;
&lt;p&gt;下图是烟机灶具的包装，纸箱边角进行了加固，非常结实。本想烟机不就是个空壳加电扇吗，原来死沉死沉的！&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/qingbo/88569342/&#34; title=&#34;P1010110&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/CS44gabF/medium.jpg&#34; alt=&#34;P1010110&#34; width=&#34;500&#34; height=&#34;375&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;预埋烟管&#34;&gt;预埋烟管&lt;/h2&gt;
&lt;p&gt;预埋烟管的服务，网上的商品描述里根本没写，方太也不主动告知有该项免费服务。厨房装修的顺序是：贴瓷砖-&amp;gt;吊顶-&amp;gt;橱柜及烟机灶具。预埋烟管意思就是在吊顶之前把烟管接到烟道上。吊顶的时候开孔把烟管顺下来即可。&lt;/p&gt;
&lt;p&gt;提前一天预约，我问客服烟道窟窿比较大怎么办，他说工人会处理，但是要自己准备泡沫胶。晚上接到电话，师傅说第二天早上9点多到，我问要自己买泡沫胶吗，他说不用，他自己带快粘粉。第二天师傅还真是9点多到了，不过差几分钟就10点了。&lt;/p&gt;
&lt;p&gt;我之前就在京东买了个烟道、卫生间风道的止逆阀套餐。师傅拿着烟道的止逆阀说不怎么样，时间长了容易糊住，又拿出他售价100的跟我们讲设计多合理。我们既然买了就不浪费，他也爽快地答应用我们的。瓷砖贴得太高，他给敲开一个口才装上止逆阀。然后把铝箔烟管接在止逆阀上，用胶带（似乎是铝箔的）缠了两圈。期间还给我证明潜水艇的止逆阀不行——烟道有负压的时候，阀门就自己打开了。但是我觉得这时空气一般不会倒灌吧……待观察。我早知道他们卖的话就懒得费心自己买了。预埋烟管成果图：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/qingbo/88569343/&#34; title=&#34;P1010176&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/CS45aIl4/medium.jpg&#34; alt=&#34;P1010176&#34; width=&#34;500&#34; height=&#34;375&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;方太客服还有来预埋烟道的工人根本不管你买没买方太的东西，也不管有没有到货。提供电话、地址他直接自己带烟管来装，装好后收30块押金走人，应该是安装烟机的时候退（其实烟机箱子里有一段烟管，安装的时候他们收走就退押金了，循环利用）。我的单子上注明“防烟宝由业主自己购买，出现问题业主自行拆顶”云云。晚上师傅还给发短信叮嘱，大意就是给个好评呗。第二天大早还收到安装点管理人员的短信。&lt;/p&gt;
&lt;p&gt;总体感觉还不错，工人很辛苦还得讨好评，应该相互理解。方太做得不好的地方是通过电商销售应该吧安装服务描述得更清楚一些，让用户免去后顾之忧，还有客服跟安装师傅的标准不统一。比如说清楚他们提供免费预埋烟管服务，工人有止逆阀出售，免费提供快粘粉之类的。&lt;/p&gt;
&lt;p&gt;烟机灶具本打算跟橱柜约同一天安装，这师傅跟我说最好推后一天，免得装橱柜灰尘太大搞得烟机进灰，以后噪声大。&lt;/p&gt;
&lt;h2 id=&#34;烟机灶具安装&#34;&gt;烟机灶具安装&lt;/h2&gt;
&lt;p&gt;最后还是和橱柜的安装约在了同一天，不过是下午。因为安装橱柜一般需要多半天，台面开孔就下午两三点了。果然石英石切割、开孔那灰尘不是一般的大，帮我们做台面的师傅一进门全身上下都是白的。&lt;/p&gt;
&lt;p&gt;安装灶具之前最好开通燃气，方便调试，这一点预约的时候方太客服也问了。&lt;/p&gt;
&lt;p&gt;吊顶的时候在预定的位置开孔，把烟管顺了下来。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/qingbo/88569354/&#34; title=&#34;P1010223&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/CS47vcaP/medium.jpg&#34; alt=&#34;P1010223&#34; width=&#34;500&#34; height=&#34;375&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;关于拆箱的问题，后来方太的师傅来了以后说别听他的，怎么不能拆，拆开有问题他照样得给换。吊柜需要打孔的时候，我就把烟机打开了，方便师傅测量位置。石英石台面开孔，灶具也打开，里面有一张硬纸板是专门给开孔画线用的，很方便。&lt;/p&gt;
&lt;p&gt;安装师傅这次推销的是不锈钢的燃气管。他说燃气公司留下的那根塑料管质量一般，按规定是一年得换一次。他带的管子100块，用二三十年没问题。我们想了想就买了……&lt;/p&gt;
&lt;p&gt;安装过程很简单，我没怎么注意就装好了，简单试了一下没问题，在单子上签字，把账算清（包括上次预埋烟管的押金）就好了。发票根本都不用看。第二天照例接到方太的回访电话。&lt;/p&gt;
&lt;p&gt;下面是安装完毕的效果，师傅走之前用箱子里的泡沫把灶具给罩起来了：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/qingbo/88569345/&#34; title=&#34;P1010228&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/CS45lw0G/medium.jpg&#34; alt=&#34;P1010228&#34; width=&#34;375&#34; height=&#34;500&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>网购 A.O.史密斯热水器安装</title>
      <link>https://qingbo-net.pages.dev/archives/471/</link>
      <pubDate>Fri, 10 May 2013 14:24:54 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/471/</guid>
      <description>&lt;p&gt;趁苏宁易购搞活动的时候，购入了一台 A.O.Smith 的低端电热水器 &lt;a class=&#34;new-window&#34; href=&#34;http://www.suning.com/emall/prd_10052_10051_-7_89218_.html&#34; target=&#34;_blank&#34;&gt;CEWH-60P5&lt;/a&gt;。关于热水器的选择问题，我不专业就不多说了，这里只简单记录一下安装的过程及经验，希望对网购的朋友有帮助。&lt;/p&gt;
&lt;p&gt;初次购买需要专业人员安装的大件商品，有点忐忑不安，事先在网上查了不少别人的经验。&lt;/p&gt;
&lt;h2 id=&#34;要不要自己准备零件&#34;&gt;要不要自己准备零件&lt;/h2&gt;
&lt;p&gt;不少网友说自己准备好了零件，省了不少钱。A.O.史密斯指定使用申鹭达的五金件，如果你准备的不是这个牌子的话，安装工会警告说出了问题他们不负责。有人说在淘宝买了申鹭达的角阀特别便宜，十几块钱，而安装工人报价是48. 我去申鹭达的天猫旗舰店看了一眼，角阀是45元。不知道那些十几块钱的是什么渠道来的，为了省心，我就懒得节省这点钱了，坐等安装师傅来坑我。&lt;/p&gt;
&lt;h2 id=&#34;与吊顶的协调&#34;&gt;与吊顶的协调&lt;/h2&gt;
&lt;p&gt;我本来为了能安装得高一点，想让吊顶开个缺口，半包围。这样的话需要在吊顶之前安装热水器。后来发现热水器体积不小，只能放在卫生间屋顶的管道之下。吊顶的目的之一是遮住管道，所以热水器就完全在吊顶之下，不用做半包围。&lt;/p&gt;
&lt;h2 id=&#34;预约安装&#34;&gt;预约安装&lt;/h2&gt;
&lt;p&gt;这个热水器是苏宁自己的物流送货，苏宁自己的服务人员上门安装，上门的日期默认是你下订单的时候选择的那天。安装前一天下午会收到短信提醒，我马上打电话给客服，重新安排了安装日期。&lt;/p&gt;
&lt;p&gt;当天早上，安装师傅打电话说下午3-5点到，并且告知材料要收费——我已做好充分心里准备。后来又说进度比想象的快，中午12点多到。我们12点多就在房子里等，结果师傅又比预定的晚了一小时，都不容易，互相理解吧。&lt;/p&gt;
&lt;p&gt;对了，收货的时候，看看外包装没有明显破损就可以，不需拆包。等到上门安装的时候，师傅会开箱核对里面的东西，外观什么的。&lt;/p&gt;
&lt;p&gt;_网购与实体店购买的最大区别就是价格。_不管网店还是实体店，销售、安装都是不同的团队。你要说还有别的不同，那可能就是买的时候不能跟商家做太多直接沟通了。给我们安装的工人同时也安装各种其它品牌的热水器、厨宝，不论网店还是实体店购买的。&lt;/p&gt;
&lt;h2 id=&#34;插头的样式额定电流准备好插座面板&#34;&gt;插头的样式，额定电流（准备好插座面板）&lt;/h2&gt;
&lt;p&gt;没有开包的坏处是不清楚它插头具体是什么样的。我能想到3000W额定功率应该是16A的，准备了带开关的插座面板，可是后来偶然看到有人晒单的图片，插头似乎带了安全功能，特别大，防溅盒都盖不上。&lt;/p&gt;
&lt;p&gt;买的面板是西门子的（关于开关、插座面板改天我单写一篇，经验就是：不推荐西门子），开关很大个，我担心它影响那个大插头，于是临时又弄了一个不带开关的面板。怕安装热水器的师傅不给安装，自己折腾了半天装上了。&lt;/p&gt;
&lt;h2 id=&#34;安装服务态度&#34;&gt;安装服务、态度&lt;/h2&gt;
&lt;p&gt;其实基本不用担心工人的服务态度，他们有回访制度，似乎打分最高才能拿到一点工钱。他们安装一单即使你给好评挣钱也很少，除了保证安装的质量，其它方面要求就低一点吧，互相尊重，整个过程就比较愉快。给我安装的师傅比较负责，仔细测量安装高度，给吊顶留出了空间。打孔固定挂架的时候，有的孔打的时候感觉墙特别松，就重新打一个，尽量做到万无一失。最后还帮我把那个不能用的堵上防潮（挂架孔位，不影响美观）。&lt;/p&gt;
&lt;p&gt;看到我有带开关的插座，师傅主动帮我换上了。看到插头实物就知道，虽然看起来大，实际上是不影响开关的。特写如下：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/qingbo/88496945/&#34; title=&#34;P1010180&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/CQMqqpNs/medium.jpg&#34; alt=&#34;P1010180&#34; width=&#34;500&#34; height=&#34;375&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;与带开关插座（注意插头规格是16A的）配合：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/qingbo/88496952/&#34; title=&#34;P1010181&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/CQMqD1Pa/medium.jpg&#34; alt=&#34;P1010181&#34; width=&#34;500&#34; height=&#34;375&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;费用&#34;&gt;费用&lt;/h2&gt;
&lt;p&gt;我花的费用比较正常，主要是两个角阀，两个泄压阀，好多弯管，说直管用的是剩料，总共300出头。用好多弯管的原因是因为热水器安装得低，距离墙上的冷热水管口太近了，上图可以看到。如果不是承重墙的话要安装支架就更贵了。&lt;/p&gt;
&lt;p&gt;师傅走之前简单介绍了功能和用法，还反复叮嘱一定要选“非常满意”。用法比现在用的热水器复杂一些，还是自己看说明书吧。&lt;/p&gt;
&lt;p&gt;最后附上效果图。看到上面那个白色管道没有，就是这个坑爹的导致热水器安装位置降低，差点就顶头了：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/qingbo/88497208/&#34; title=&#34;P1010178&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/CQMCea0r/medish.jpg&#34; alt=&#34;P1010178&#34; width=&#34;480&#34; height=&#34;640&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>装修前应该逛一下家具</title>
      <link>https://qingbo-net.pages.dev/archives/470/</link>
      <pubDate>Sun, 05 May 2013 13:50:09 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/470/</guid>
      <description>&lt;p&gt;现在有许多在线的装修设计工具，比如 AutoCAD 有个 &lt;a class=&#34;new-window&#34; href=&#34;http://www.homestyler.com/designer&#34; target=&#34;_blank&#34;&gt;Home Styler&lt;/a&gt;，还针对中文用户有个单独的域名——&lt;a class=&#34;new-window&#34; href=&#34;http://www.meijiadaren.com/home&#34; target=&#34;_blank&#34;&gt;美家达人&lt;/a&gt;。我当初要装修的时候，也尝试用这个工具来设计家里的家具布局之类的，但是没做完就放弃了。&lt;/p&gt;
&lt;p&gt;一个原因是不知道自己要买什么样的家具，另外就是不知道一般家具的尺寸。这两点就足够阻止你去设计布局了。随着与家具销售、装修工人的沟通慢慢能学到一些基本的常识，比如家具的格局决定吸顶灯的位置。如果想装吊灯的话，预先规划好家具的尺寸布局就尤为重要了。&lt;/p&gt;
&lt;p&gt;装修第一步就是要改水电，那时工长就跟我商量客厅灯放哪儿，我听他建议取了电视墙的中点，这个没太大问题。定餐厅灯的位置时，我有点迷茫，想着在客厅放个大沙发，比如3.6米-3.7米的，就让他取剩余空间的中点留餐厅灯电线（总长6.3米，也就是距离墙只有1.3米）。其实我们没有征求任何人的意见，后来发现电视墙（靠阳台）只有3米，放3.6米的沙发偏大了，另外给餐厅留下的空间（约2.7米）其实也不算大。&lt;/p&gt;
&lt;p&gt;前几天在百强定了大部分的板材家具（两位同事推荐的），然后顺便逛了逛周边品牌的，发现一个这样带简易书桌的书柜：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/qingbo/88453119/&#34; title=&#34;P1010184&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/CQ12CcbQ/medium.jpg&#34; alt=&#34;P1010184&#34; width=&#34;375&#34; height=&#34;500&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;个人非常喜欢，想去掉机箱底座、键盘滑轨，放在客厅里沙发远端。可是它因为有书桌，厚度是60cm，靠墙放之后餐桌肯定就不能正对餐厅灯了。下面是用刚发现的另一个装修设计工具 &lt;a class=&#34;new-window&#34; href=&#34;http://floorplanner.com/&#34; target=&#34;_blank&#34;&gt;Floor Planner&lt;/a&gt; 做出的设计图：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/qingbo/88453118/&#34; title=&#34;first-design&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/CQ12C8WW/medish.jpg&#34; alt=&#34;first-design&#34; width=&#34;453&#34; height=&#34;640&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;理想情况下，餐桌两边应该留出80cm的距离才好进出。我定的餐桌本身是80cm，所以应该给它2.4m的空间。这样算的话，餐厅灯距离书柜那面墙的距离应该是1.8米(2.4 / 2 + 0.6)才合理。现在不知道还有没有补救的办法，实在不行的话，我们就打算装吸顶灯了，虽然错位，但是不至于像吊灯那么明显。装吸顶灯的话，将来想把餐桌转90度摆也一样。&lt;/p&gt;
&lt;p&gt;自己画出这个图之后发现另一个隐患，就是次卧如果像那样放一个1.8米的床的话，很可能会妨碍卧室门的开关！这个我正在跟木门商家沟通，确定门的尺寸，下次再去测量一下，以确保床不会影响门。&lt;/p&gt;
&lt;p&gt;对于空间不是特别宽裕的户型，定家具一定要精确测量其尺寸，或者方便的话让销售上门量房。例如1.8米的床，我们定的尺寸其实外延到了1.88*2.20. (次卧改成直板床头，长度可以省下10cm.)&lt;/p&gt;
&lt;p&gt;当然这只是非专业人员的建议。应该也有人觉得买家具不着急，等装修出个大致模样再定家具风格，即使这样也尽量提前计划好家具大致尺寸、灯具位置。其实买家具也没那么难，先定好实木还是板材，然后去大一点的卖场转转差不多点的品牌。我最早是在某个小市场看双虎、全友这样的品牌，觉得设计都很花哨，有点俗，觉得选套中意的真难。同事推荐百强，设计简约实用，很合我意。不过一开始觉得比那两个品牌贵很多，后来才知道上面写的价钱是最贵的板材。最后五一的时候有79的折扣，还有卧室四件套欧德森板材才5999，我们就定了两个卧室（欧德森），电视柜组合、餐桌、茶几（德盛比国产板贵不了多少，就选了它，其实选国产也行）。定了之后又看到周围还有意风、东方百盛等相近的品牌，设计大同小异，其实可以在它们中间选一下，看看网上的口碑之类。&lt;/p&gt;
&lt;p&gt;以后我还会分享一些其它经验，比如网购热水器、烟机灶具的安装等。&lt;/p&gt;</description>
    </item>
    <item>
      <title>佛家新生意经</title>
      <link>https://qingbo-net.pages.dev/archives/469/</link>
      <pubDate>Sun, 07 Apr 2013 00:57:35 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/469/</guid>
      <description>&lt;p&gt;有一次几个同事一起走在某城市街头上，不时看到有乞丐要钱。我当时做的是 SEO、SEM 一类的事情，就跟同事说，大家都是同行。&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;/p&gt;
&lt;p&gt;我觉得他们还可以做得更大更专业，成立一个全国连锁品牌，收加盟费，基于房车批量生产现代化的流动寺庙并高价出售，做成一个像麦当劳、肯德基一样的百年老店。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Boot Camp 安装 Windows 7 需要多大空间</title>
      <link>https://qingbo-net.pages.dev/archives/468/</link>
      <pubDate>Mon, 04 Mar 2013 22:57:11 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/468/</guid>
      <description>&lt;p&gt;有个 MacBook Pro 装的是 128 GB 固态硬盘，用了一段时间后，苹果的系统加上其它乱七八糟的东西占了已经有 30 多 GB. 通过虚拟机运行 Windows 觉得发热太厉害了，于是想通过 Boot Camp 安装一个。问题来了，这么小的硬盘，该给 Windows 划分多少空间呢？&lt;/p&gt;
&lt;p&gt;我试了一下 25 GB，安装完 Windows 7 一看，只剩 1G 多一点了。不过可以关掉休眠功能——&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;首先确定安装了 Boot Camp 驱动，不然触摸板都不好使&lt;/li&gt;
&lt;li&gt;点击 Windows 开始按钮，输入 “cmd”&lt;/li&gt;
&lt;li&gt;在显示出来的命令行工具上点击右键，“以管理员身份运行”&lt;/li&gt;
&lt;li&gt;输入 “powercfg -h off”，回车&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;现在看一下可用空间，已经是 6G 多了。老婆只是偶尔用它看一下 P2P 电影，这些做缓存也足够了。我对 Windows 的休眠功能不太了解，不知道休眠功能所需的额外磁盘空间是不是与机器内存大小相关。我这台 MacBook Pro 的内存是 8GB.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Think Aaron</title>
      <link>https://qingbo-net.pages.dev/archives/467/</link>
      <pubDate>Sun, 03 Mar 2013 10:16:07 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/467/</guid>
      <description>&lt;p&gt;我这个博客是自己用 Python 框架 &lt;a class=&#34;new-window&#34; href=&#34;http://webpy.org/&#34; target=&#34;_blank&#34;&gt;web.py&lt;/a&gt; 写的。右上角有个大图标提供 &lt;a class=&#34;new-window&#34; href=&#34;http://en.wikipedia.org/wiki/RSS&#34; target=&#34;_blank&#34;&gt;RSS&lt;/a&gt; 订阅。评论以及后台发布新文章都用 &lt;a class=&#34;new-window&#34; href=&#34;http://en.wikipedia.org/wiki/Markdown&#34; target=&#34;_blank&#34;&gt;Markdown&lt;/a&gt; 格式。&lt;/p&gt;
&lt;p&gt;这些东西都与一个人有关。最早的时候我开始用 web.py 来改写自己的个人网站，看到这个框架的作者是 &lt;a class=&#34;new-window&#34; href=&#34;http://www.aaronsw.com/&#34; target=&#34;_blank&#34;&gt;Aaron Swartz&lt;/a&gt;，没有太在意。后来想给内容发布找一种合适方式，发现了 Markdown，看到 Aaron Swartz 竟然也有参与它的制定，于是开始看他的&lt;a class=&#34;new-window&#34; href=&#34;http://www.aaronsw.com/weblog/&#34; target=&#34;_blank&#34;&gt;博客&lt;/a&gt;文章。多数文章写得篇幅很长，思维缜密，结构严谨，当时觉得很像一个满腹经纶的中年人写出来的。等到看到 Wikipedia 上 &lt;a class=&#34;new-window&#34; href=&#34;http://en.wikipedia.org/wiki/Aaron_Swartz&#34; target=&#34;_blank&#34;&gt;Aaron Swartz&lt;/a&gt; 的页面时，我吃了一惊，他竟然是 1986 年出生的，14 岁即已参与过 RSS 标准的制定！&lt;/p&gt;
&lt;p&gt;就是这样才华横溢的一个人，刚刚在 2013 年 1 月 11 日结束了自己的生命，让人震惊、叹息。2010 年他在 MIT 下载 JSTOR 上的论文被起诉，我以为没什么，毕竟他有一定影响力，有不少更有影响力的人会帮助他。后来他又恢复了博客的写作以及其它社会活动，我错误地感觉已经没事了。就在 2012 年 11 月 1 日，他还在博客写了最后一篇文章。我本就对世界悲观，当时知道消息后，抑郁了有一个星期。自大学以后，我第一次这么长时间情绪低落。&lt;/p&gt;
&lt;p&gt;许多人因以这种方式失去一个天才而悲痛。哈佛法学院的 Lawrence Lessig 教授十几年来和 Aaron 一起共事很多，除了悲痛，他在 &lt;a class=&#34;new-window&#34; href=&#34;http://lessig.tumblr.com/&#34; target=&#34;_blank&#34;&gt;Tumbler 个人主页&lt;/a&gt;上表达了对相关检举人及制度的强烈愤怒。适逢 Lawrence 被冠以 “Roy L. Furman Professor of Law and Leadership” 荣誉，chair lecture 定于 2 月 19 日。Aaron 死后他先请求重新安排日期，后来又决定不改日期，主题定为 “Aaron’s Law”.&lt;/p&gt;
&lt;p&gt;以此为契机，为了限制 CFAA/SOPA 等议案，国会议员 Rep Zoe Lofgren 在 reddit (注：Aaron 也是这个 Alexa 全球排名一百多的网站的 founder 之一，web.py 是这期间的副产品) 上发布了 &lt;a class=&#34;new-window&#34; href=&#34;http://www.reddit.com/r/technology/comments/16njr9/im_rep_zoe_lofgren_im_introducing_aarons_law_to/&#34; target=&#34;_blank&#34;&gt;Aaron’s Law&lt;/a&gt; 的草案征集意见。后来又放出根据意见&lt;a class=&#34;new-window&#34; href=&#34;http://www.reddit.com/r/IAmA/comments/17pisv/im_rep_zoe_lofgren_here_is_a_modified_draft/&#34; target=&#34;_blank&#34;&gt;修改过的版本&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>让摩托罗拉 tn30 导航支持大容量 SD 卡，一机多图</title>
      <link>https://qingbo-net.pages.dev/archives/466/</link>
      <pubDate>Wed, 05 Dec 2012 15:22:26 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/466/</guid>
      <description>&lt;p&gt;去年买便携导航，鬼使神差买了个摩托罗拉的产品——tn30. 关于它的奇异之处，我当时的一篇日志也有&lt;a href=&#34;http://qingbo.net/blog/post580.html&#34;&gt;介绍&lt;/a&gt;。现在更要命的是，灵图已经一年多不更新这个版本的地图了（直接导致我某次错误地冲上一条新开的高速走了好远），不知道这公司是不是做不下去了。买了个短命的导航，用了个短命的软件，就是这样。直到前阵子，我还对买它这件事后悔不已，并且在网上浏览一番之后，打算等这个导航彻底歇菜之后买个佳明。&lt;/p&gt;
&lt;p&gt;不过又起了折腾的心思，尤其是发现这个导航仪的蓝牙功能是大部分低端导航不提供的，即使佳明也只在最贵的那个上面有。试用了一下蓝牙，偶尔开车的时候接个电话还是比较方便的。于是开始尝试安装其它的导航软件，要不然这个灵图迟早有一天把我导到臭水沟里。&lt;/p&gt;
&lt;h2 id=&#34;尝试安装凯立德导航&#34;&gt;尝试安装凯立德导航&lt;/h2&gt;
&lt;p&gt;凯立德算是国内应用比较广泛的导航了。按照以前折腾灵图的经验，弄一个新的SD卡，把凯立德复制到根目录，文件夹改名 MobileNavigator, 几个主要的程序、DLL文件分别改名为 MobileNavigator.exe, MobileNavigator.dll, MobileNavigatorSCH.dll，插入导航仪重启（长按8秒至指示灯闪烁彻底关机），就可以运行了。我看到灵图的配置文件里写的端口是4，于是尝试给凯立德也设置 “COMMPORT=COM4:”，结果不能搜星。最后看京东论坛里“哈里老爹”说&lt;a class=&#34;new-window&#34; href=&#34;http://club.360buy.com/bbsDetail/358438_56864e62-1b64-4fb1-b4a0-186021ae8a70_2.html&#34; target=&#34;_blank&#34;&gt;他用的是端口7&lt;/a&gt;，最终在 NaviConfig.txt 中使用如下配置成功搜星：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;COMMPORT=COM7:
BAUDRATE=4800
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;试了一下感觉灵图的界面、用户体验还是比凯立德好很多，就是地图老了……所以做产品，不是产品优秀就能站稳脚跟的。&lt;/p&gt;
&lt;h2 id=&#34;大容量-sd-卡&#34;&gt;大容量 SD 卡&lt;/h2&gt;
&lt;p&gt;京东上 tn30 的官方参数里介绍，它支持的最大 SD 卡容量是 4G。目前的导航软件加上数据轻易就超过2G，甚至3到4G，所以4G的 SD 卡也只能放一个导航。给导航数据“瘦身”的事也有不小风险，我懒得那样折腾。&lt;/p&gt;
&lt;p&gt;所以我就一个SD卡放灵图，另一个放凯立德。这样很多问题，两个SD卡模样没区别，又不能写字，不好区分。每次想换导航，得关机，换卡，启动，搜星，很麻烦。最基本的，你还得到处找那个小小的SD卡！&lt;/p&gt;
&lt;p&gt;看到“哈里老爹”网友说他的8G卡可以使用，所以我才动了“一机多图”的念头。手头有一张 Sandisk Class 4 的8G卡，试了试不能用。同事说是 FAT32 分区簇大小的问题，我看了一下我已经装上导航软件的两个4G的 (Class 6)，一个簇大小是4KB，另一个是32KB，看来这并不是原因。正好同事有一张 Sandisk 16G Class 10 的卡，拿来把灵图复制上去，竟然能用！鉴于导航仪可能比较挑SD卡、分区格式，我分享一下，可以在&lt;a class=&#34;new-window&#34; href=&#34;http://www.suning.com/emall/prd_10052_10051_-7_1652663_.html&#34; target=&#34;_blank&#34;&gt;苏宁购买&lt;/a&gt;，我没有自行分区，拆开直接用的。用 chkdsk 看了簇大小是32KB。&lt;/p&gt;
&lt;h2 id=&#34;一机多图&#34;&gt;一机多图&lt;/h2&gt;
&lt;p&gt;在网上着了一个480 x 272的“一机五图”软件，复制到16G卡上，文件夹改名为 MobileNavigator, 可执行文件改名为 MobileNavigator.exe. 然后将灵图、凯立德的文件夹分别复制上来（它们的文件夹就不能再叫 MobileNavigator了，最好根据导航软件改名）修改 \MobileNavigator\Menu\Navi\Navi.ini 中的配置即可。&lt;/p&gt;
&lt;p&gt;慢着！Navi.ini 中的原有配置认为SD卡的路径是 SDMMC，不过在摩托罗拉这款与众不同的导航里，SD卡的路径是 “Storage Card”，带空格。Navi.ini 的配置比较直观明了，不用介绍太多，折腾几次就知道界面上的图标、文字都可以修改，不过我就沿用它自带的图标了，方便。它自带了五种导航的图标，给它们分配了界面中间的位置。上面没有灵图，我就让它占了别的导航的位置。只要路径配置正确，重启后按导航图标即可进入此一机多图软件，然后点相应的图标即可进入刚配置好的导航软件。&lt;/p&gt;
&lt;p&gt;这个一机多图程序还带了 ToWinCE.exe 这个进入 WinCE 系统的软件，以及任务管理器等实用小工具，只需调整 Navi.ini 中的路径即可使用。&lt;/p&gt;
&lt;p&gt;使用一机多图的最大好处是，如果导航过程中需要换一个导航软件，不需要换卡！这是废话，呵呵。关键是切换导航软件后，不需重新搜星，马上就有GPS信号，很方便。&lt;/p&gt;</description>
    </item>
    <item>
      <title>PostgreSQL truncate 阻塞</title>
      <link>https://qingbo-net.pages.dev/archives/465/</link>
      <pubDate>Thu, 18 Oct 2012 12:29:47 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/465/</guid>
      <description>&lt;p&gt;使用 PostgreSQL 的某程序在一个临时表里存放验证数据，用过之后即 truncate 该表。可是今天下午突然许多 truncate 的进程都在那儿不动了。怀疑跟正在进行的 pg_dump 有关系，后来同事通过&lt;a class=&#34;new-window&#34; href=&#34;http://wiki.postgresql.org/wiki/Lock_Monitoring&#34; target=&#34;_blank&#34;&gt;这个网页&lt;/a&gt;提供的查询语句，发现果然是 pg_dump 导致的。&lt;/p&gt;
&lt;p&gt;pg_dump 似乎会给数据库里所有的表加一个 access share lock. 而 truncate 需要对所操作的表加一个 access exclusive lock，于是它就等啊等。可是对很大的数据库，pg_dump 可是一时半会做不完的。&lt;/p&gt;
&lt;p&gt;发现这个问题以后，我临时把哪个程序里的 truncate 语句改成 delete from 让它可以继续进行它的工作。&lt;/p&gt;
&lt;p&gt;同事不只一次告诉我，truncate 是 DDL，而 delete 是 DML.&lt;/p&gt;
&lt;p&gt;truncate 一般很快，而 delete 可能很慢，即使不加条件。&lt;/p&gt;
&lt;p&gt;truncate 完成后，省下的空间立即回收。而 delete 掉的行所占用的空间不会立即被回收，需要等 vacuum 的时候。&lt;/p&gt;
&lt;p&gt;好在这些临时表一直数据很少，所以 truncate 和 delete 不会差别太大。&lt;/p&gt;</description>
    </item>
    <item>
      <title>用 RVM 从下载好的 Ruby 源代码安装</title>
      <link>https://qingbo-net.pages.dev/archives/464/</link>
      <pubDate>Wed, 17 Oct 2012 12:07:05 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/464/</guid>
      <description>&lt;p&gt;今天用 RVM (&lt;a class=&#34;new-window&#34; href=&#34;https://rvm.io/&#34; target=&#34;_blank&#34;&gt;Ruby Version Manager&lt;/a&gt;) 安装 Ruby 1.9.3，到了下载 Ruby 源代码的那一步就卡住了。自己上 Ruby 官方网站看，确实下载不下来，速度几乎是0，从公司换到家里的网络还是一样。&lt;/p&gt;
&lt;p&gt;后来跑到 ~/.rvm/archives 里看了一下，发现正在下载的文件是 ruby-1.9.3-p286.tar.bz2. 于是跑到 Google 上找到一个 mirror，自己下载回来覆盖了 RVM 下载了一点点的那个文件，然后重新运行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rvm install 1.9.3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;顺利安装完成。看来 RVM 会在 archives 目录里检查文件的 checksum，一致的话就不会重新下载了。我觉得加一个选项让人可以指定源代码文件安装比较好，不过人家国外应该不会出现我们这种情况吧。&lt;/p&gt;</description>
    </item>
    <item>
      <title>最新乞丐版 $69 Kindle</title>
      <link>https://qingbo-net.pages.dev/archives/463/</link>
      <pubDate>Wed, 12 Sep 2012 19:10:08 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/463/</guid>
      <description>&lt;p&gt;[&lt;a target=&#34;_blank&#34; href=&#34;http://qingbo.net/blog/post609-69-kindle.html&#34;&gt;本文有特效无法在 RSS Reader 里展示，请查看原文&lt;/a&gt;]&lt;/p&gt;
&lt;p&gt;新的 Kindle 阅读器发布，&lt;a class=&#34;new-window&#34; href=&#34;http://www.amazon.com/gp/product/B008GEKXUO/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B008GEKXUO&amp;linkCode=as2&amp;tag=qingbblog-20&#34; target=&#34;_blank&#34;&gt;Paperwhite&lt;/a&gt; 版本要十月一日以后才开始 shipping. 而最低端的版本，Amazon 给它做了简单的升级，还降了 $10，就太划算了。尤其是对美国人来说，也就吃一顿好饭的钱。&lt;/p&gt;
&lt;p&gt;主要的改变就是外观，基本上，全黑了，除去屏幕。Amazon 说翻页快了 15%，字体也进行了优化。翻页确实能感觉出来，不过字体我看不出来，更别提寒碜的中文字体了。&lt;/p&gt;
&lt;p&gt;看起来 Paperwhite 非常受欢迎，刚看它的页面，因为预订量大，如果现在预订，shipping 要等到10月22日了（早些时候是10月1日）。但是正好给我机会理性地思考一下。我不需要在没有光的情况下读书，晚上的话有台灯。虽然至今没有体验过触摸屏的 Kindle，但是对于一个阅读器来说，作用应该也不大（可能查词典方便一点吧）。所以我就买了一个&lt;a class=&#34;new-window&#34; href=&#34;https://qingbo-net.pages.dev/go/19&#34; rel=&#34;nofollow&#34; target=&#34;_blank&#34;&gt;“乞丐版”的 Kindle&lt;/a&gt;，比 Paperwhite 省了 $50，快一半了。想我那个 Kindle 3G 花了 $189, 尽管有终身免费的上网，也几乎没有用过，所以嘛，理性思考是很重要的！&lt;/p&gt;
&lt;p&gt;更新后的版本连外包装都是全黑色的：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/qingbo/86656480/&#34; title=&#34;P1000916&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/CgiFpkm6/medium.jpg&#34; alt=&#34;P1000916&#34; width=&#34;500&#34; height=&#34;375&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;包装很简洁，原来 Kindle 3 时代的说明书小册子变成了&lt;span class=&#34;pointer&#34; id=&#34;point-to-13&#34;&gt;一张黑纸&lt;/span&gt;：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/qingbo/86656481/&#34; title=&#34;P1000917&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/CgiFw1ok/medium.jpg&#34; alt=&#34;P1000917&#34; width=&#34;375&#34; height=&#34;500&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;电源插头也给省掉了，只有&lt;span class=&#34;pointer&#34; id=&#34;point-to-14&#34;&gt;一根连接线&lt;/span&gt;。屏幕指示接好电源：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/qingbo/86656483/&#34; title=&#34;P1000920&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/CgiFD62b/medium.jpg&#34; alt=&#34;P1000920&#34; width=&#34;500&#34; height=&#34;375&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;有了多语言选择，&lt;span class=&#34;pointer&#34; id=&#34;point-to-15&#34;&gt;其中没有汉语&lt;/span&gt;：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/qingbo/86656486/&#34; title=&#34;P1000922&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/CgiFS3p9/medium.jpg&#34; alt=&#34;P1000922&#34; width=&#34;500&#34; height=&#34;375&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;选择语言后，直接进入配置向导，需要连接无线网络。此时能体会到乞丐版的不足，因为没有键盘也没有触摸屏，靠方向键控制虚拟键盘太痛苦了，于是我就暂时没有联网。没有联网就没有广告，所以现在它跟 Without Special Offers 的版本是完全一样的……&lt;/p&gt;
&lt;p&gt;从 Kindle 3 直接跳到这个版本，发现中文不用配置就完全可以显示了，就是字体较差。这下有了两个 Kindle，在家的时候两人不用抢了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Minuteman Bikeway</title>
      <link>https://qingbo-net.pages.dev/archives/462/</link>
      <pubDate>Sun, 09 Sep 2012 02:36:49 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/462/</guid>
      <description>&lt;p&gt;本来就计划好今天骑车去玩，但是天气一直不确定。早上起来，偶尔能看到点蓝天，就决定执行计划，沿 &lt;a class=&#34;new-window&#34; href=&#34;http://www.minutemanbikeway.org/Pages/intro.html&#34; target=&#34;_blank&#34;&gt;Minuteman Bikeway&lt;/a&gt; 向北到尽头 Bedford. 这条路的名字，及它路过的 Lexington，都跟美国独立战争关系密切——还记得“莱克星顿的枪声”吧，呵呵。&lt;a class=&#34;new-window&#34; href=&#34;http://en.wikipedia.org/wiki/Minutemen&#34; target=&#34;_blank&#34;&gt;Minuteman&lt;/a&gt; 大致就是美国独立时候的“飞虎队”的叫法。&lt;/p&gt;
&lt;p&gt;先说路，最早的路段修好快20年了，有的地方有凸起，但是大部分都有人在路面上标记出来了。车道比较宽，并排骑三辆车没问题。路上有人玩轮滑，有不少父母在后面拖个小车带着小孩。但是绝对没有机动车，也没电动自行车。偶尔 Bikeway 会穿过公路，都会有明显的 STOP 标志提醒。繁忙的公路有按钮可以自助请求信号灯，很快。没有信号灯的话，看见骑车的人在路边，一般汽车都会主动停下让路（这边除了闹市区都这样）。路上有好多地方提供直饮水。&lt;/p&gt;
&lt;p&gt;这个 Bikeway 其实是铁路改造的，现在美国很少有铁路还在运作了，仅有的一些也主要是以观光为目的，比汽车慢、贵。美国又穷，修不起高铁，人们只好去买汽车。公共交通不发达，一家一个汽车还不够用，只好买一大堆。我住的酒店周围就至少有两条废弃的铁路，枕木、铁轨都在，就是长满了草。有个 &lt;a class=&#34;new-window&#34; href=&#34;http://www.railstotrails.org/index.html&#34; target=&#34;_blank&#34;&gt;Rails-to-Trails Conservancy&lt;/a&gt;，专门把全国各地的废弃铁路改造成小道 (trail)，让人们去跑步、骑自行车健身。这明显是臃肿的政府机构，放咱中国，不用动员大家就积极主动地把铁轨回收，把枕木烧了，然后一人踩几脚，不就成 trail 了吗，鲁迅就是这么说的。&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;new-window&#34; href=&#34;http://www.minutemanbikeway.org/Pages/milestones.html&#34; target=&#34;_blank&#34;&gt;Minuteman Milestones&lt;/a&gt; 这里记载了一些重要的时间点，我回来才看到。最上面的图片就是莱克星顿的火车站（按介绍，美国独立战争就是在那个过道里开始的），现在下面的铁轨已经变成柏油的自行车道了。都怪老美，盖的房子都看不出年代，害我都没看出来这是个历史建筑，没拍个照片。&lt;/p&gt;
&lt;p&gt;去 Watertown 一个叫 Farina’s 的店租了一辆自行车，价格是一天 $34，跟租汽车差不多了！这还是我找到的比较便宜的。公路车要 $60 以上吧。当然了，汽车还要付油钱，自行车只要人吃饱就行了。车子是捷安特的……我不知道具体型号，但是肯定比我家里那个好多了。之前的担心有所消除，店员会在交付前调一下自行车。&lt;/p&gt;
&lt;p&gt;可惜我就是人都吃不饱的那一类。过了中午，bikeway 一路也看不到吃的。Farina’s 明天不开门，我得在5点之前骑回去还掉。车子又没有带锁，不好放。最终3点骑到 Cambridge 西边有一堆快餐店，我把车停在玻璃窗前吃了点东西。&lt;/p&gt;
&lt;p&gt;安全回来，骑了总共50多公里，屁股疼。&lt;/p&gt;
&lt;p&gt;下图是我的装备。买了个最便宜的包，$19。淘宝绝对19人民币以下搞定啊。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/qingbo/86620282/&#34; title=&#34;P1000855&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/CfKkhh3u/medium.jpg&#34; alt=&#34;P1000855&#34; width=&#34;500&#34; height=&#34;375&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;一段路。上午一直晴朗，下午快3点的时候掉了几滴雨，衣服都没湿。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/qingbo/86620289/&#34; title=&#34;P1000885&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/CfKkpzDs/medium.jpg&#34; alt=&#34;P1000885&#34; width=&#34;500&#34; height=&#34;375&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最后是路线图。从 Watertown 到 Minuteman Bikeway 的起点比较费劲，看来还是有个能上网的手机比较靠谱。在 Google 地图上把 Bike path 图层打开，看人家到处都是啊。中国是自行车大国，可是没有自行车道！&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;a href=&#34;https://maps.google.com/maps?f=d&amp;source=embed&amp;saddr=Farina&#39;s,+Galen+Street,+Watertown,+MA&amp;daddr=42.3589172,-71.176573+to:42.3602418,-71.1519902+to:42.364,-71.14086+to:42.3774728,-71.1419471+to:42.381705,-71.14481+to:42.388566,-71.144144+to:42.395617,-71.1408547+to:Bedford,+MA&amp;geocode=FYtqhgId4sjB-yEJRTiU6qV4BymHrPBKD3jjiTEJRTiU6qV4Bw%3BFYVYhgIdg-7B-ykdPt0QEXjjiTHC6HzehPCNlg%3BFbFdhgIdik7C-ymBuAlsLnjjiTGW8KhyW-NhTQ%3BFWBshgIdBHrC-ym91DVS1HnjiTEwlUQTyilsZw%3BFQChhgIdxXXC-ylByJEKd3fjiTE9BwYxEKwlOg%3BFYmxhgIdlmrC-ykbN7KhdXfjiTEMs9HCuIL2JA%3BFVbMhgIdMG3C-ylbrcBiCnfjiTEg-zaU4yRmxQ%3BFeHnhgIdCnrC-yllzzYlBnfjiTG4izLUVv0ayg%3BFRpbiAIdd2nA-ymrMtz6z57jiTGAzPSCsAfS-Q&amp;sll=42.395208,-71.142976&amp;sspn=0.004445,0.00913&amp;hl=en&amp;dirflg=b&amp;mra=dpe&amp;mrsp=7&amp;sz=17&amp;via=1,2,3,4,5,6,7&amp;ie=UTF8&amp;t=m&amp;ll=42.429032,-71.208229&amp;spn=0.177388,0.206337&amp;z=12&#34; style=&#34;color:#0000FF;text-align:left&#34;&gt;View Larger Map&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Chrome 独立安装文件（完整版）</title>
      <link>https://qingbo-net.pages.dev/archives/461/</link>
      <pubDate>Sat, 28 Jul 2012 14:52:20 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/461/</guid>
      <description>&lt;p&gt;Firefox 越来越不给力了，我自己很久以前就转到了 Chrome 阵营，但是家里的 Windows 笔记本还是 Firefox 为默认浏览器。&lt;/p&gt;
&lt;p&gt;前几天老婆在淘宝上等着抢拍一件衣服，结果预定上架时间之后已经过了一个小时，页面上仍然显示“即将开始”。后来发现是 Firefox 的问题——不知道为什么，有的页面可以正常加载，但是有的页面就显示缓存的版本！我没有深究到底是什么原因造成了这个症状。&lt;/p&gt;
&lt;p&gt;每次打开 Firefox，开始在地址栏输入，总是要假死至少半分钟才能恢复。关掉 Firefox，进程仍然一直在后台无法退出，重新打开的时候就会提示，只有在进程管理器里杀掉。&lt;/p&gt;
&lt;p&gt;除了开发者，对普通用户而言，Firefox 给人的感觉变得甚至比 IE 还要臃肿、笨拙。该彻底摆脱它了。&lt;/p&gt;
&lt;p&gt;不过今天想安装 Chrome 的时候遇到问题了——每次安装的时候，总是卡在“正在等待下载 Chrome”这里，不能再继续。可是 Chrome 主页上并没有提供独立安装文件的下载。&lt;/p&gt;
&lt;p&gt;在网上找了一下，发现只需在 Chrome 主页的 URL 上加个参数 &lt;code&gt;standalone=1&lt;/code&gt;，Google 就会将安装方式更改为下载完整版本。即此链接：&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;new-window&#34; href=&#34;http://www.google.com/chrome/?standalone=1&#34; target=&#34;_blank&#34;&gt;&lt;a href=&#34;http://www.google.com/chrome/?standalone=1&#34;&gt;http://www.google.com/chrome/?standalone=1&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>天津护照办理流程（攻略）</title>
      <link>https://qingbo-net.pages.dev/archives/460/</link>
      <pubDate>Wed, 04 Jul 2012 16:14:38 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/460/</guid>
      <description>&lt;p&gt;在我朝，跟ZF打交道就跟探险似的（可是很少能感受到乐趣），大家得多贡献攻略，造福后来人。我今天就说说天津办理护照的流程。&lt;/p&gt;
&lt;p&gt;一年多前，写了一篇日志记录在&lt;a href=&#34;http://qingbo.net/blog/post532.html&#34;&gt;保定乡下老家办理护照的痛苦经历&lt;/a&gt;。最近，去天津办一些手续（也是跟ZF纠缠），顺路办护照，省得以后真要出去的时候麻烦。去之前就打电话咨询，问要不要“协查”，警察说户口迁入不满十年都要协查。我问要多久？他说不知道。问他根据经验呢？答曰——没经验，快的一两周就好了，慢的一两年都不行。你说得到这样的答复气人不气人，用血汗钱养着这帮孙子，让他办事的时候就尽给添麻烦！当时做计划就给办护照预留了不少时间。&lt;/p&gt;
&lt;p&gt;不过到了天津之后，办理护照出奇地顺利——在遭遇不下五次拒载之后，苦尽甘来，遇上一位性格开朗的老师傅，听说我们要去火车站附近的出入境管理局，就推荐我们去很近的一个地方，说是新开的，人少。开始我们还不信，觉得师傅年纪这么大了会不会弄错。后来师傅提了好几次，说他不确定能不能办护照，但他客人说可以，于是我们就听了师傅的，起步价距离就到了。停车一看，长江道出入境受理处，没错，很开心，零钱不用找了！（第一次在国内给小费……）。&lt;/p&gt;
&lt;p&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; – 电子照片的采集应该是包含在护照办理费用里的。他们照完给表的时候会问你带照片没有，没有的话交60大洋，买他们打印的照片贴在表格上，还有一张存照片的光盘！一般是稀里糊涂就上了套了——这些值60大洋？很明显这是中国特色经济，跟公权的关系造就私人的暴利。某公司可以拿这个出个面试题，问他们一年净利润是多少，偷税多少。不过大部分人也不缺这个钱，在这里花钱买省事，让少数人先富起来吧。&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;&lt;strong&gt;取件&lt;/strong&gt; – 选择特快专递，他会给你说两周收到。我们一周多一点就拿到了，效率不错。&lt;/p&gt;
&lt;p&gt;总之护照办下来感觉天津还是个大地方，不像我老家那种落后地区。不过其他很多方面真有待改善。交通已经很差，下午三四点就开始堵。大街小巷太多，XX道，XX道，连出租车司机都不知道，地图上信息都不准，12580查到的信息也不对。&lt;/p&gt;
&lt;p&gt;末了来个友情提醒，看到这儿的朋友们如果还没护照赶紧去办一个，尤其户口在偏远落后地区的。我一个刚毕业的哥们，老乡，说想去缅甸玩，问他情况，竟然户口刚迁回老家，麻烦大了……这东西，等你想用的时候就后悔没早办了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>骑行大运河森林公园未遂</title>
      <link>https://qingbo-net.pages.dev/archives/459/</link>
      <pubDate>Sun, 27 May 2012 13:48:00 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/459/</guid>
      <description>&lt;p&gt;今天下午骑车往通州去，想看看“大运河森林公园”。沿着京通快速的辅路走，竟然有一段路边还有这么宽阔的水面：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/qingbo/85614355/&#34; title=&#34;P1000729&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/BZQjim63/medium.jpg&#34; alt=&#34;P1000729&#34; width=&#34;500&#34; height=&#34;375&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;后来看辅路比较堵，我就在沿河的小路骑了一段。这段路是防汛路，车比较少，灰尘也少，不过路况比较差，有点越野的感觉。往前走，这小路和京通辅路交汇。后面在八里桥和北苑地铁站中间发生了悲剧，后胎扎了个铆钉！第二次骑远路就出这种事了。其实之前路上我就想了几次，万一轮胎扎了怎么办。用快没电的手机打开地图，搜到附近有个捷安特店，距离3.3公里。推车步行过去，打电话才知道人家搬了，又步行差不多1公里，到了九棵树地铁站，终于换了个新内胎。问了问，大运河森林公园还有点距离，天色不早了，灰溜溜回家。&lt;/p&gt;
&lt;p&gt;这就是罪魁祸首，长度差不多有手机那么宽了，不偏不倚从轮胎正中央扎了进去：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/qingbo/85614354/&#34; title=&#34;P1000731&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/BZQjdyNq/medium.jpg&#34; alt=&#34;P1000731&#34; width=&#34;500&#34; height=&#34;375&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我本以为带着这钉子还骑了几十米，肯定把内胎划得不成样子了。不过换下来之后发现也就一个眼，可以补补，以后出门带个备胎，哈哈：&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/BZQjkmWW/medium.jpg&#34; alt=&#34;P1000730&#34; width=&#34;500&#34; height=&#34;375&#34; border=&#34;0&#34; /&gt; 
&lt;p&gt;总起来说京通辅路还是比较好走的，自行车道很宽。偶尔有些车停着，有些车也从自行车道超车，但是情况比市里好多了。比较麻烦的是过五环的那一段，从西向东就绕圈，而且路况复杂，需要小心。从东向西似乎是根本没有正常的自行车道，立交桥下有一条黑咕隆咚的路，几个电三轮车主还在那儿乱停，坐着打牌。再往前，完全没有光让人看路了（汽车是进不来这个路的），只看到前面有亮光，知道方向。冷风吹过来——这是唯一的速度指示，这时就只能放慢速度，希望路上别有坑什么的，希望后面的车不要撞你。很恐怖，所以最好还是从从西向东的那条路逆行回去（路牌是这样指示非机动车的）。我现在也还是稀里糊涂的，有个示意图就好了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>骑车从劲松到香山</title>
      <link>https://qingbo-net.pages.dev/archives/458/</link>
      <pubDate>Sat, 19 May 2012 11:58:39 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/458/</guid>
      <description>&lt;p&gt;前阵子买了个入门级的山地车，捷安特欧野2.0，后来就张罗着和公司的同事们出去玩。最初定的是今天骑车去十三陵，查了一下地图，从国贸出发往返要150公里，对不常锻炼身体的我来说，强度太大了。于是后来改成了去香山。&lt;/p&gt;
&lt;p&gt;提前几天就开始关注天气，最初的预报是周六日都下雨，当时估计去不了了。周四的时候天气预报突然改成周六日都是好天气，开始让人兴奋了。到了周五，又变成周六日下雨了，我们商定下雨的话就取消。&lt;/p&gt;
&lt;p&gt;早上起来不想吃饭，就吃了一个小烧饼，出发了。带的东西有一个卡片相机，骑行手套，一瓶脉动，眼镜布，一件备用T恤。由于没有经验，车子的轮胎气都不够，虽然不会影响车子，但是阻力比较大，骑起来比较费力。&lt;/p&gt;
&lt;p&gt;在大望路地铁附近跟两位住东边的同事汇合，然后沿长安街一路向西，杀向XXX广场。两个同事都经常骑车，骑得比较快，我刚开始还觉得可以追赶，用力蹬，消耗了不少体力。到西三环附近跟另一位同事汇合（这位倒是轻松啊），然后往香山走。&lt;/p&gt;
&lt;p&gt;等到了香山脚下，腿已经基本没有力气了，稍微有个上坡，换到慢速档也坚持不了多远。最终有个同事沿防火道连骑带推上了山顶，我和另外两个大约只走了三分之一。&lt;/p&gt;
&lt;p&gt;等了很久看见那同事下来了，原来他的碟刹因为长时间使用，温度过高，他碰了一下把指头都烫伤了，恐怖。后来用水擦了一下，跟我们一起下山。我的车是V刹，下山之后摸轮圈也发现烫得厉害，如果是从最高处一次骑下来，估计刹车就冒烟了！下山还是很爽的，累了半天，就为了那一会快乐……&lt;/p&gt;
&lt;p&gt;之后骑到了西三环的香格里拉大酒店，附近的新疆餐馆用餐。吃完已经4点半了，我就靠一个烧饼坚持了一天。然后各奔东西。我还是沿长安街回来，一路不时有雨滴落到身上，我下意识地尽力提高速度，还好没有被雨淋。一整天也没心情（也没力气）掏出卡片机拍照。&lt;/p&gt;
&lt;p&gt;感觉不锻炼的话，骑平路还可以，稍微有个长一点的上坡，就很消耗体力，更别说香山那样的坡度了。北京的空气是够差的，大部分时间我罩着鼻子，还是吸了一鼻子黑。&lt;/p&gt;
&lt;p&gt;下面是今天的路线，除去上山大约往返70公里吧：&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;a href=&#34;http://ditu.google.cn/maps?f=d&amp;source=embed&amp;saddr=%E5%8C%97%E4%BA%AC%E5%B7%A5%E4%B8%9A%E5%A4%A7%E5%AD%A6%E5%8C%97%E7%AB%99&amp;daddr=39.90707004308784,116.47787991911173+to:39.908919954282595,116.31100997328758+to:39.94225196971828,116.30983985960484+to:39.94689625464938,116.2759830057621+to:39.955396679648175,116.21623512357473+to:%E5%8C%97%E4%BA%AC%E5%B8%82%E6%B5%B7%E6%B7%80%E5%8C%BA+(%E9%A6%99%E5%B1%B1%E7%8E%89%E7%9A%87%E9%A1%B6%E5%81%9C%E8%BD%A6%E5%9C%BA)&amp;hl=zh-CN&amp;geocode=FTKLYAId2k3xBikHuOq7mq3xNTHnH3yA9TW5Cw%3BFf7uYAIduE_xBikVcZuDra3xNTGo_G2fDfQdkg%3BFTj2YAId4sPuBiklbZfEHE7wNTHmXEDryl3Wxg%3BFWx4YQIdUL_uBimd4YhZmlHwNTHRHiFJXxMU_g%3BFZCKYQIdDzvuBikZjQciTVDwNTGg4fiS0FCWtA%3BFcSrYQIdq1HtBinlojuZl1rwNTG_zlZA8tEFOQ%3BFXdVYgIdFvvsBiHnkzjAU94hEw&amp;sll=39.940278,116.413193&amp;sspn=0.308506,0.595322&amp;dirflg=w&amp;brcurrent=3,0x35f05296e7142cb9:0xb9625620af0fa98a,0%3B5,0,0&amp;mra=ls&amp;via=1,2,3,4,5&amp;ie=UTF8&amp;t=m&amp;ll=39.940278,116.336288&amp;spn=0.252701,0.439453&amp;z=11&#34; style=&#34;color:#0000FF;text-align:left&#34;&gt;查看大图&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>警惕 Chrome 的查看源代码 (View Page Source) 功能</title>
      <link>https://qingbo-net.pages.dev/archives/457/</link>
      <pubDate>Sat, 21 Apr 2012 04:31:01 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/457/</guid>
      <description>&lt;p&gt;前阵子解决一个问题的时候，差点以为是我们自己在 HTML 代码中输出的一段信息有问题，结果发现，Chrome 的 View Source Code 竟然会重新发送一个请求！&lt;/p&gt;
&lt;p&gt;有史以来，所有的浏览器从来没有过这样天才的设计。大家都是老老实实，既然你让我显示源代码，那我就直接给你把正在看的这个页面的源代码显示出来。没有人想过竟然可以重新发起一个请求，去拿“纯洁的”源代码。这是革命性的！Chrome 你做到了！&lt;/p&gt;
&lt;p&gt;早在2008年，就已经有人提出这个 bug – &lt;a class=&#34;new-window&#34; href=&#34;http://code.google.com/p/chromium/issues/detail?id=523&#34; target=&#34;_blank&#34;&gt;View source forces page reload&lt;/a&gt;. 中间有人将之标记过 Fixed，但是世界末日快来了，Chrome 的稳定版本已经飚到18了，市场份额已经远超 Firefox 了，实际上这个 bug 仍然存在。我的天啊，究竟是什么样的设计，导致解决这样一个问题这么难？&lt;/p&gt;
&lt;p&gt;甚至还曾有开发者认为 View Source 就应该是这样的行为 (&lt;a class=&#34;new-window&#34; href=&#34;http://code.google.com/p/chromium/issues/detail?id=4650&#34; target=&#34;_blank&#34;&gt;链接&lt;/a&gt;):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Yes, when you “view source”, you’re really opening a new tab that opens the page&lt;br&gt;
again and displays the source rather than renders the page. &lt;strong&gt;&lt;em&gt;Many web pages are&lt;br&gt;
dynamic and modify their HTML content (eg. using JavaScript/XMLHttpRequest) so we&lt;br&gt;
cannot display the current HTML – this is why a new request is made.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Nothing to Envy</title>
      <link>https://qingbo-net.pages.dev/archives/456/</link>
      <pubDate>Tue, 17 Apr 2012 00:18:17 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/456/</guid>
      <description>&lt;p&gt;&lt;a class=&#34;new-window&#34; href=&#34;http://www.thesamueljohnsonprize.co.uk/pages/news/index.asp?NewsID=26&#34; target=&#34;_blank&#34;&gt;Winner of the 2010 BBC Samuel Johnson prize&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;new-window&#34; href=&#34;http://nothingtoenvy.com/&#34; target=&#34;_blank&#34;&gt;What if the nightmare imagined by George Orwell in 1984 were real?&lt;/a&gt; 这本书真是太棒了，我读英文还不是很快，不过书中的真实故事越来越抓住人的心理，前几天晚上都看到很晚才睡。此书中有些许关联的不同人物穿插叙事的方式也没有觉得太乱，比较自然、有条理。与1984的绝望不同，这本书除了让人看到外人很难知道的一些真相，悲哀，但同时也给人一些希望，让人珍惜亲情。此处摘录一些印象深刻的段落(数字是 Kindle 的 location)。&lt;/p&gt;
&lt;p&gt;103 没有污染&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The night sky in North Korea is a sight to behold. It might be the most brilliant in Northeast Asia, the only place spared the coal dust, Gobi Desert and carbon monoxide choking the rest of the continent.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;209&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;They learned that China’s diluted brand of c0mmun1sm was less successful than that brought by Kim Il-sung and that millions of Chinese were going hungry.&lt;/p&gt;</description>
    </item>
    <item>
      <title>《史蒂夫·乔布斯传》精彩摘录</title>
      <link>https://qingbo-net.pages.dev/archives/455/</link>
      <pubDate>Wed, 28 Mar 2012 13:11:54 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/455/</guid>
      <description>&lt;p&gt;37页&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;它（迷幻药）让我更清楚什么是重要的——创造伟大的发明，而不是赚钱。应该尽我所能，将此生放回历史和人类思想的长河。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;168页&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“这个道理很简单，团队扩张时，如果吸收了几名二流队员，他们就会招来更多二流队员，很快，你的团队里甚至还会出现三流队员，”他回忆道，“麦金塔的经验告诉我，一流队员只喜欢同一流队员合作，这就意味着你不能容忍二流队员。”&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;181页&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;但他对产品的关注又是斯卡利永远达不到的，而且乔布斯会侮辱任何一个算不上一流队员的人，以避免苹果出现太多的笨蛋。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;205页 Paul Rand –&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“我解决你的问题，你付钱给我。我设计出来的东西你用也行，不用也罢，都得付钱给我，但是我不做备选。”&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;332页&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;人们总是说他们和别人合不来，他们不喜欢团队合作。但是我发现，一流选手喜欢和一流选手共事，他们只是不喜欢和三流选手在一起罢了。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;392页&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;艺术的作用就是驱赶丑陋。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;399页（这是“风水”真正有意义的地方）&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Steve 坚信，设计对路的建筑物会对文化起到积极的作用。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;519页（书末乔布斯的原话太精彩了，大段摘录）&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;像IBM或微软这样的公司为什么会衰落，我有我自己的见解。这样的公司干得很好，它们进行创新，成为或接近成为某个领域的垄断者，然后产品的质量就变得不那么重要了。这些公司开始重视优秀的销售人员，因为是他们在推动销售、改写了收入数字，而不是产品的工程师和设计师。因此销售人员最后成为公司的经营者。IBM的约翰·埃克斯是聪明、善辩、非常棒的销售人员，但是对产品一无所知。同样的事情也发生在施乐。做销售的人经营公司，做产品的人就不再那么重要，其中很多人就失去了创造的激情。斯卡利加入后，苹果就发生了这样的事情，那是我的失误；鲍尔默接管微软后也是这样。苹果很幸运，能够东山再起，&lt;strong&gt;但我认为只要鲍尔默还在掌舵，微软就不会有什么起色。&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;521页&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我的动力是什么？我觉得，大多数创造者都想为我们能够得益于前人取得的成就而表达感激。我并没有发明我用的语言或数学。我的食物基本都不是我自己做的，衣服更是一件都没做过。我所做的每一件事都有赖于我们人类的其他成员，以及他们的贡献和成就。我们很多人都想回馈社会，在历史的长河中再添上一笔。我们只能用这种大多数人都掌握的方式去表达——因为我们不会写鲍勃· 迪伦的歌或汤姆· 斯托帕德(Tom Stoppard)的戏剧。我们试图用我们仅有的天分去表达我们深层的感受，去表达我们对前人所有贡献的感激，去为历史长河加上一点儿什么。那就是推动我的力量。&lt;/p&gt;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>运算符优先级</title>
      <link>https://qingbo-net.pages.dev/archives/454/</link>
      <pubDate>Tue, 06 Mar 2012 12:53:31 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/454/</guid>
      <description>&lt;p&gt;一段计时的代码，把时间长度用“2小时37分钟28秒”这样的形式输出，但是偶然注意到结果很有问题。盯着代码看了半天，觉得逻辑判断都是正确的，后来用一个数字 debug 才找到真相。&lt;/p&gt;
&lt;p&gt;比如 4000 秒，程序先判断如果大于一小时，就输出小时数，然后算余数。就是算余数这一步除了问题，代码写成 &lt;code&gt;secs % 60*60&lt;/code&gt;。写代码的人为了清晰，还故意在乘号两边去掉了空格，可是这更加容易地造成了错觉，让人觉得 &lt;code&gt;60*60&lt;/code&gt; 是先计算的。可是 “%” 的优先级和乘除是同等的！&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;new-window&#34; href=&#34;http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html&#34; target=&#34;_blank&#34;&gt;运算符优先级&lt;/a&gt;是挺难记的。我觉得，迷惑的时候，加括号就行了，可读性也绝对好。&lt;/p&gt;
&lt;p&gt;不过这次通过 Oracle 这个文档我是记住了，”%” 和乘除都是 multiplicative operators, 所以是同等优先级。想想处理器原理，确实是这样，除法的结果不就顺便出来余数了吗。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java SimpleDateFormat 与 locale (以及 Mac OS X 更改语言)</title>
      <link>https://qingbo-net.pages.dev/archives/453/</link>
      <pubDate>Sun, 04 Mar 2012 05:13:03 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/453/</guid>
      <description>&lt;p&gt;遇到一个非常怪异的问题，Tomcat 里面有个 servlet 用 SimpleDateFormat 解析日期的，类似这样：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DateFormat formatter = new SimpleDateFormat(&amp;quot;dd-MMM-yyyy&amp;quot;);
formatter.parse(&amp;quot;05-Jan-2012&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是会抛出 ParseException – Unparseable date “05-Jan-2012”.&lt;/p&gt;
&lt;p&gt;我仔细看了看，似乎一切都是对的，不应该出错。于是写一个最简单的测试类，main 函数就这么两行，同一台机器上运行完全正常。更纳闷了。&lt;/p&gt;
&lt;p&gt;最后在 servlet 代码里打出 formatter.format(new Date()) 的结果，发现是 “29-二月-2012”!&lt;/p&gt;
&lt;p&gt;这才想起我最早拿到这台 MacBook Pro 时系统是中文，我改成英文但是登录界面等少数地方还是中文。不知道 Tomcat 是怎么设置的 locale，不过这里有人在 Windows 上遇到&lt;a class=&#34;new-window&#34; href=&#34;http://bytes.com/topic/apache/answers/558992-tomcat-locale-difference-console-windows-service&#34; target=&#34;_blank&#34;&gt;同样的问题&lt;/a&gt;，可以通过指定 java 参数解决。&lt;/p&gt;
&lt;p&gt;但是苹果恰好有一个文档：&lt;a class=&#34;new-window&#34; href=&#34;http://support.apple.com/kb/HT4102&#34; target=&#34;_blank&#34;&gt;Mac OS X: How to change the language displayed in the login window&lt;/a&gt;！看起来，我在 System Preferences 里修改的只是我当前用户的 locale，而我启动 tomcat 的时候，使用了 sudo——root 的 locale 仍然是中文？&lt;/p&gt;
&lt;p&gt;不管怎么样，既然有了这么专业的文档，照做就是了。不过苹果给的第一种解决办法太让人无语了：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Reinstall Mac OS X and select the desired language during installation&lt;/p&gt;</description>
    </item>
    <item>
      <title>无限递归导致 Segmentation fault</title>
      <link>https://qingbo-net.pages.dev/archives/452/</link>
      <pubDate>Sat, 03 Mar 2012 02:08:30 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/452/</guid>
      <description>&lt;p&gt;某服务器上一个 cron job 是 shell 脚本调用 Java 程序，最近老是报 Segmentation fault, 每次看见此信息&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;/bin/sh: line 1: 4285 Segmentation fault java …&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;总觉得无处下手，bash 的问题？Java 版本不对？信息量太少了。其实遇到这种事情不能谎，表面上没有信息一定要挖出信息来。今天仔细一看，这个脚本把标准输出重定向到一个日志文件去了，于是去看日志。这个程序的主体是对一个信息列表做循环，恰好在每个循环的关键部分开始前、结束后都会写一条日志。其目的是为了计时，不过正是这两条日志让我很快找到了错误缘由，因为发现日志文件的末尾只有一个开始前的，说面在这个循环的处理过程里面发生了 Segmentation fault.&lt;/p&gt;
&lt;p&gt;找出程序的源代码，发现循环里面调用的方法有一个是递归的，情况就开始明朗了，猜测就是递归无法终止导致 stack overflow，segmentation fault. 果然，根据日志里最后一行日志中记录的真实数据，发现这条数据是有问题的，会导致此方法无限递归。&lt;/p&gt;
&lt;p&gt;Wikipedia 的 &lt;a class=&#34;new-window&#34; href=&#34;http://en.wikipedia.org/wiki/Segmentation_fault&#34; target=&#34;_blank&#34;&gt;Segmentation fault&lt;/a&gt; 词条里有一节是 “Common causes”, 我这次遇到的就是最后一条。&lt;/p&gt;</description>
    </item>
    <item>
      <title>wget 自动发送用户名密码</title>
      <link>https://qingbo-net.pages.dev/archives/451/</link>
      <pubDate>Thu, 01 Mar 2012 13:10:08 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/451/</guid>
      <description>&lt;p&gt;有个 Server 需要 Basic Auth 认证，但是我发现在它自己上面有一个任务会通过 wget 访问一个自己的 URL，调用的过程并没有提供用户名和密码，竟然可以成功访问！&lt;/p&gt;
&lt;p&gt;一开始我以为是 Apache 里面配置的访问规则是对本地访问不需要认证，但是并非如此。bash alias? 也不是。加上 –debug 参数调用 wget，发现它确实在访问本机的这个域名时会加上 Authorization 这个 header, 而访问其它域名的时候则不加。&lt;/p&gt;
&lt;p&gt;最终通过 strace 发现它会打开 $HOME/.netrc 文件，原来秘密就在里面。中间看了半天 manual，只看到它会读取 /etc/wgetrc, $HOME/.wgetrc, 没注意到还会读这个文件。我不太喜欢这种做法——谈不上安全，又不容易维护。&lt;/p&gt;
&lt;p&gt;参考：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;new-window&#34; href=&#34;http://linux.die.net/man/5/netrc&#34; target=&#34;_blank&#34;&gt;.netrc&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;new-window&#34; href=&#34;http://www.gnu.org/software/wget/manual/wget.html&#34; target=&#34;_blank&#34;&gt;wget&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>QQ 输入法的词频</title>
      <link>https://qingbo-net.pages.dev/archives/450/</link>
      <pubDate>Wed, 29 Feb 2012 12:41:55 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/450/</guid>
      <description>&lt;p&gt;现在 QQ 和搜狗都开始做 Mac 上的输入法。搜狗的问题是没有投入足够的资源在这上面，而它做 Mac 输入法也似乎是无奈之举。当时 QQ 突然发布了 Mac 输入法，搜狗没隔几天也赶紧出来一个，结果 bug 一大堆，至今在软件的功能和稳定性方面，搜狗依旧落后很多。&lt;/p&gt;
&lt;p&gt;前些天用了一下搜狗输入法，在 Gmail 里的聊天界面，候选窗口无法正确定位。可能跟我用两个屏幕有关系，不过在 QQ 群里（没错，他们用 QQ 群跟用户交流）报告了之后，有人告诉我用正在测试的 1.5 版本试试。我试了一下，完全不能用，应该是切到搜狗输入法它就 crash 了。&lt;/p&gt;
&lt;p&gt;QQ 输入法的功能现在非常稳定了，我没有遇到过任何问题。官方网站的 Mac 页面做得也有模有样（搜狗跟它一比就显得山寨），属性设置里也有丰富的选项可供选择，可是有个很致命的问题，那就是词频。我遇到许多让人觉得不可思议的词频，仅选取一小部分放在这儿 (都是第一页)：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/6930622863/&#34; title=&#34;QQ Mac 输入法词频 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm8.staticflickr.com/7195/6930622863_01b7fff0b9.jpg&#34; width=&#34;260&#34; height=&#34;247&#34; alt=&#34;QQ Mac 输入法词频&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;难道就是这么烂？&lt;/p&gt;</description>
    </item>
    <item>
      <title>小打小闹</title>
      <link>https://qingbo-net.pages.dev/archives/449/</link>
      <pubDate>Sun, 26 Feb 2012 06:40:08 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/449/</guid>
      <description>&lt;p&gt;在我的网站日志目录里先找到 Sogou spider 的 IP：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# grep -h -F &amp;quot;Sogou web spider&amp;quot; * | awk &#39;{print $1}&#39; | sort | uniq -c | sort -nr | head -n 5
 109766 220.181.94.231
  26244 220.181.125.69
     93 220.181.94.235
     90 220.181.125.107
     83 220.181.94.236
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后看看从访问最多的那个 IP 来的都是什么 user agent:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# grep -h -F &amp;quot;220.181.94.231&amp;quot; * | grep -v -F &amp;quot;robots.txt&amp;quot; | awk &#39;{ for (i=12; i&amp;lt;=NF; i++) printf(&amp;quot;%s &amp;quot;, $i); printf(&amp;quot;\n&amp;quot;); }&#39; | sort | uniq -c | sort -nr
 109497 &amp;quot;Sogou web spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)&amp;quot; 
    187 &amp;quot;Sogou-Test-Spider/4.0 (compatible; MSIE 5.5; Windows 98)&amp;quot; 
    109 &amp;quot;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Avant Browser; InfoPath.1; .NET CLR 2.0.50727; .NET CLR1.1.4322)&amp;quot; 
     70 &amp;quot;Tsinghua AI Lab Robot 2.0&amp;quot; 
     55 &amp;quot;Tsinghua AI Lab Robot&amp;quot; 
     35 &amp;quot;-&amp;quot; 
     21 &amp;quot;Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.7) Gecko/2009031915 Gentoo Firefox/3.0.7&amp;quot; 
     18 &amp;quot;Sogou Pic Spider/3.0(+http://www.sogou.com/docs/help/webmasters.htm#07)&amp;quot; 
      1 &amp;quot;Sogou Mobile Spider1.0 (http://wap.sogou.com)&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;真有意思。&lt;/p&gt;</description>
    </item>
    <item>
      <title>grep: writing output: Broken pipe in iTerm2</title>
      <link>https://qingbo-net.pages.dev/archives/448/</link>
      <pubDate>Tue, 03 Jan 2012 04:18:16 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/448/</guid>
      <description>&lt;p&gt;前天用 &lt;a class=&#34;new-window&#34; href=&#34;http://www.iterm2.com/&#34; target=&#34;_blank&#34;&gt;iTerm2&lt;/a&gt;，在执行一个 &lt;code&gt;grep &amp;quot;xxx&amp;quot; filename | head&lt;/code&gt; (filename 这个文件应该相当大，grep 到的内容也应该有很多)这样的命令时，遇到大量如下错误输出：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;grep: writing output: Broken pipe&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;而在 Mac 自带的 Terminal.app 里面执行完全一样的命令，不会有任何错误。用 which 查看，使用的确实是同一个 grep 命令，同一个 head 命令。再仔细观察，发现其实 iTerm 里面，命令也输出了正确的结果，那后面的这些错误信息应该是输出到 stderr 的。把命令改成&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;grep &amp;quot;xxx&amp;quot; filename 2&amp;gt;errors | head
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;确实，错误信息都跑到 errors 文件里了。这时又发现，在 Terminal.app 里命令在输出10行之后立即结束执行，而在 iTerm 里则取决于这个文件有多大，grep 出来的内容有多少行，它就会执行相应长的时间。网上看到有人说这是 head 取得10行后立即退出，这个 pipe 的读端就没了，grep 继续往 pipe 写，于是 – broken pipe, 只要将错误定向到 /dev/null, 忽略即可。可是我经常用 grep 来在特别大的日志文件里找东西，进行下一步分析前，就先用 head 看看 grep 的正则表达式写的对不对。每次 grep 都不管 head 只读少数行这个现实，一直执行到读完整个文件，太浪费时间和资源了。&lt;/p&gt;
&lt;p&gt;为什么在 Terminal 里，grep 会在 head 退出之后马上退出呢？当进程往一个 broken pipe 写东西的时候，会收到一个 &lt;a class=&#34;new-window&#34; href=&#34;http://en.wikipedia.org/wiki/SIGPIPE&#34; target=&#34;_blank&#34;&gt;SIGPIPE&lt;/a&gt; 信号，导致它退出。这时就觉得，肯定是 iTerm2 做了什么手脚，导致 SIGPIPE 这个信号没有被 grep 收到。&lt;/p&gt;</description>
    </item>
    <item>
      <title>李笑来《把时间当作朋友》</title>
      <link>https://qingbo-net.pages.dev/archives/447/</link>
      <pubDate>Sat, 31 Dec 2011 01:10:23 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/447/</guid>
      <description>&lt;p&gt;&lt;a class=&#34;new-window&#34; href=&#34;https://qingbo-net.pages.dev/go/18&#34; rel=&#34;nofollow&#34; target=&#34;_blank&#34;&gt;把时间当作朋友:运用心智获得解放&lt;/a&gt; – &lt;a class=&#34;new-window&#34; href=&#34;http://www.lixiaolai.com/&#34; target=&#34;_blank&#34;&gt;李笑来&lt;/a&gt;. 国内很少有人像这样认真写好书了！&lt;/p&gt;
&lt;p&gt;在2012来临前把这本书读完了，收获比我想象中大得多（这本书是我买一本数学书时顺便一起买下的），值得多看几遍。这本书大致是关于时间，心智，思考，学习，坚持的探讨和思考，也有关于成功的定义，以及介绍达到成功目的的一些必要途径，不过当然不是市面上流行的成功学书籍。&lt;/p&gt;
&lt;p&gt;关于时间管理，David Allen 那本著名的 Getting Things Done 我也看了，看到一半就觉得好像作者在反复重复本来很简单的一些事，就好像当年学政治一样，看不下去了，也许是我不够有耐心吧。书中介绍的方法基本了解了，但是对我的工作学习似乎没有什么帮助，该拖延的事我还是拖延。我觉得方法这东西，每个人都应该有自己的一套，别人的好方法对自己并不一定有用。李笑来这本书虽然名字“把时间当作朋友”听起来就是一本时间管理的书，实际上它并不是教你时间管理的方法，而是在整个过程中告诉读者思考、反省、心智的重要性。&lt;/p&gt;
&lt;p&gt;记得中学的时候成绩好，好多同学老问我学习方法。我比较烦这样的人，就说我也没有什么方法。其实这是实话，突然被问到，我却是总结不出自己有什么方法。我不怕泄露自己的方法“给竞争对手做培训”，而是即使我公开自己的方法对任何人都没有帮助，还是不要浪费口舌了。这些人的关键是他们没有意识到高考前剩余时间的流逝，没有意识到学好这些课程的重要性，没有下决心要精心学习。现在大家都上过大学了，回头看看——高中的那些东西有大学一个学期的多吗？需要什么奇技淫巧才能学会吗……&lt;/p&gt;
&lt;p&gt;我曾经在一段无聊的时间里，早上起来，在电脑上安装我喜欢的游戏，打到晚上。那时感觉到自己一天什么事情都没有做，太堕落了，把游戏删掉。第二天早上又下载这个游戏重新安装继续玩，如此重复，越来越懊恼却没法改变。我觉得我的心智就比较弱，也许应该仔细想想，我已经到了什么年龄，财富、知识却少得可怜，我还有多少时间可以学习以及积累财富。&lt;/p&gt;
&lt;p&gt;不知道以后再有这样无聊的时候，由于读了这本书对我有没有帮助。不过在读它的过程里我就已经在思考很多以前没有想过的问题，看到很多让我感慨的地方，仔细记下了笔记。不过到最后才看到李敖读书的方法，其中一点是不要躺着读，不过这本书我就是躺着读的，只是遇到精彩的部分偶尔起来记一下。当然我不舍得像他那样把书分尸了。以后要坐着读书（尤其是纸质），这样有什么想法可以随时记下。我有个 &lt;a href=&#34;https://qingbo-net.pages.dev/blog/post560-book-stand.html&#34;&gt;Book Stand&lt;/a&gt; 帮忙。&lt;/p&gt;
&lt;p&gt;思考有很多方向，《把时间当作朋友》基本是教你用一种积极向上的态度思考。我曾有几段时间也大量思考，但是很悲观，把自己想到死胡同里，甚至有自杀的念头，多亏我想到我还有父母兄弟。自杀的念头多半实现不了，所以我们还得在这个世界上生存，积极的态度会有帮助的。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;最后摘录一些书中有意思的地方：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;李笑来对某搜索引擎用低劣手段疯狂敛财很不满（105页括号中内容）。我相信百度因为钱去干扰 organic results 只是失败者的谣言而已，但是它的付费广告确实没有底线，或者说没有控制住底线。&lt;/li&gt;
&lt;li&gt;关于马克思和他的幻想，请看130页。这么荒谬的幻想，竟然被人利用愚弄了这么多的人口，这个事实更荒谬！209页——“亚当斯密用一生奠定了现代经济学的理论基础，而另外一个哲学家终其一生写了无数著作，引发的却是人类史上最大规模的、最失败的社会实验”。&lt;/li&gt;
&lt;li&gt;24页——“五笔输入法只不过是阶段性妥协的过渡产品，早晚会彻底消亡。”我最初就是学五笔打字的，我相信这一点，很庆幸自己比较早地回到拼音了。&lt;/li&gt;
&lt;li&gt;160页，有些人希望借助他人的力量，他越是渺小，越是衬得他的欲望无比强烈，一个特征就是日程生活中他们经常有意无意地用亲密的方式体积大家仰望的人物。“李开复”叫“开复”，甚至“俞敏洪”叫“小俞”。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;书中提到的其它一些书：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Knowledge and Decision&lt;/li&gt;
&lt;li&gt;The Tipping Point&lt;/li&gt;
&lt;li&gt;Mean Genes&lt;/li&gt;
&lt;li&gt;少有人走的路&lt;/li&gt;
&lt;li&gt;女心理师&lt;/li&gt;
&lt;li&gt;奇特的一生&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>JVM 的 Client Mode 与 Server Mode</title>
      <link>https://qingbo-net.pages.dev/archives/446/</link>
      <pubDate>Sun, 18 Dec 2011 15:20:44 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/446/</guid>
      <description>&lt;p&gt;目前正在读“&lt;a class=&#34;new-window&#34; href=&#34;https://qingbo-net.pages.dev/go/17&#34; rel=&#34;nofollow&#34; target=&#34;_blank&#34;&gt;深入理解 Java 虚拟机 – JVM 高级特性与最佳实践&lt;/a&gt;”，这本书确实是国内少见的好书之一，虽然个人感觉也有一些不恰当的地方。例如第3章介绍 GC 策略时，一直没有简单解释一下”新生代 (Young generation)” 和”老年代 (Tenured generation)” 这两个概念。我也是在这书中才发现 HotSpot VM 有两个模式 – Server Mode 与 Client Mode，作者也没有介绍。也许是因为这些话题比较初级吧。&lt;/p&gt;
&lt;p&gt;关于这两个模式的区别，这个 FAQ 里有&lt;a class=&#34;new-window&#34; href=&#34;http://www.oracle.com/technetwork/java/hotspotfaq-138619.html#compiler_types&#34; target=&#34;_blank&#34;&gt;介绍&lt;/a&gt;。简单地说，Client Mode 启动快，Server Mode 整体性能好。它们使用了不同的 JIT 编译器，Server VM 使用的那一个对代码做了更加多的优化。一般来说，像 Tomcat 这样的 Servlet container 需要长时间运行，启动速度相对来说不是那么的敏感，适合运行在 Server VM 里。而 GUI 程序对启动速度要求比较高，所以使用 Client VM 较好。&lt;/p&gt;
&lt;p&gt;它还提到 “Some of the other differences include the compilation policy,heap defaults, and inlining policy.” 当然按“深入理解 Java 虚拟机” 书中65页的表格，它们使用的 GC 策略也不一样。&lt;/p&gt;
&lt;p&gt;如何指定使用哪个 VM 呢？启动的时候指定 -client 或者 -server 参数即可。如果不写参数默认是哪个？&lt;a class=&#34;new-window&#34; href=&#34;http://docs.oracle.com/javase/6/docs/technotes/guides/vm/server-class.html&#34; target=&#34;_blank&#34;&gt;官方说法&lt;/a&gt;是自动探测 “server class”. 该网页介绍，如果当前机器有两个或以上 CPU，并且有2GB以上内存，那么就认为这个机器是 server-class machine, 默认就会运行 Server VM. 说实话，这个 server class 的标准还挺低的，现在大多数个人笔记本电脑也都达到 server class 的要求了！&lt;/p&gt;</description>
    </item>
    <item>
      <title>让 Greasemonkey 脚本同时支持 Firefox 和 Chrome</title>
      <link>https://qingbo-net.pages.dev/archives/445/</link>
      <pubDate>Mon, 21 Nov 2011 15:33:02 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/445/</guid>
      <description>&lt;p&gt;Greasemonkey 最初只是 Firefox 的一个扩展，不过流行之后，很快被其它的浏览器以不同形式采纳。IE 我不喜欢，此文就不关心它了。剩下的市场份额较高的是 Chrome 和 Firefox, 本文就简单讨论一下如何写出同时支持这两种浏览器的 user script (所谓“跨浏览器”).&lt;/p&gt;
&lt;p&gt;最早的时候也是热心用户给 Chrome 写了插件让它支持 user scripts, 但是现在 Chrome 不再另外需要插件就可以支持了。它的处理方式是每次安装 user script 的时候，自动把它&lt;a class=&#34;new-window&#34; href=&#34;http://googlesystem.blogspot.com/2009/11/google-chrome-converts-user-scripts.html&#34; target=&#34;_blank&#34;&gt;转换&lt;/a&gt;成一个扩展！刚开始在 Chrome 上调试脚本的时候，我还尝试在磁盘上找到它存储脚本的目录——在 Firefox 里我都是直接编辑脚本，保存，刷新页面马上看到效果，简单粗暴。肯定有更简单的调试方式，只是我不知道。&lt;/p&gt;
&lt;p&gt;看看 Chrome 的官方文档怎么&lt;a class=&#34;new-window&#34; href=&#34;http://www.chromium.org/developers/design-documents/user-scripts&#34; target=&#34;_blank&#34;&gt;介绍&lt;/a&gt;的：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Chromium does not support @require, @resource, unsafeWindow, GM_registerMenuCommand, GM_setValue, or GM_getValue.&lt;/p&gt;
&lt;p&gt;GM_xmlhttpRequest is same-origin only.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;这个显然有点过时。根据最近被完成的这个 &lt;a class=&#34;new-window&#34; href=&#34;http://code.google.com/p/chromium/issues/detail?id=18857&#34; target=&#34;_blank&#34;&gt;issue&lt;/a&gt;，现在 GM_xmlhttpRequest 已经可以跨域请求了。&lt;/p&gt;
&lt;p&gt;关键的一点，Chrome 不支持 @require 的写法，这可是个很方便的功能啊。我对 jQuery 相对熟悉一点，几乎每个脚本里都会用这个命令把 jQuery 引入。&lt;a class=&#34;new-window&#34; href=&#34;http://erikvold.com/blog/index.cfm/2010/6/14/using-jquery-with-a-user-script&#34; target=&#34;_blank&#34;&gt;这里&lt;/a&gt;有个例子介绍怎么解决这个问题。再稍稍加工一下，就得到一个跨浏览器的引入多个外部 JavaScript 的方案：&lt;/p&gt;
&lt;h2 id=&#34;跨浏览器-require&#34;&gt;跨浏览器 @require&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;// ==UserScript==
// @name           ???
// @namespace      http://your.tld/
// ==/UserScript==

var scripts = [
  &#39;//cdnjs.cloudflare.com/ajax/libs/jquery/1.7/jquery.min.js&#39;,
  &#39;//www.readability.com/embed.js&#39;
];

var numScripts = scripts.length, loadedScripts = 0;

GM_addStyle(&#39;CSS styles goes here&#39;);

function main() {
  jQuery.noConflict(); // if window.$ has been used by other libs
  // ...
}

var i, protocol = document.location.protocol;
for (i = 0; i &amp;lt; numScripts; i++) {
  var script = document.createElement(&amp;quot;script&amp;quot;);
  script.setAttribute(&amp;quot;src&amp;quot;, protocol + scripts[i]);
  script.addEventListener(&#39;load&#39;, function() {
      loadedScripts += 1;
      if (loadedScripts &amp;lt; numScripts) {
        return;
      }
      var script = document.createElement(&amp;quot;script&amp;quot;);
      script.textContent = &amp;quot;(&amp;quot; + main.toString() + &amp;quot;)();&amp;quot;;
      document.body.appendChild(script);
    }, false);
  document.body.appendChild(script);
  console.log(script);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在这个方案里，我把主要的逻辑都放在 main 函数里。需要搞清楚的是，main 不会在这个扩展脚本的 scope 里运行！它实际上是作为页面里内嵌的一段 JavaScript 代码被执行了，所以不要在里面引用任何所谓“全局变量”（不过可以引用你所确定知道的页面 window 对象的属性）。所以它不能调用 GM_addStyle, 于是我放在 main 外面。需要 Ajax 的话，也只能使用普通的 XMLHttpRequest 对象，也就&lt;strong&gt;不能进行跨域数据请求了&lt;/strong&gt;，这在某些脚本里可能无法忍受。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google Reader 与 Kindle</title>
      <link>https://qingbo-net.pages.dev/archives/444/</link>
      <pubDate>Sat, 19 Nov 2011 14:12:19 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/444/</guid>
      <description>&lt;p&gt;今天写了一个 Greasemonkey 脚本 – &lt;a class=&#34;new-window&#34; href=&#34;http://userscripts.org/scripts/source/118480.user.js&#34; target=&#34;_blank&#34;&gt;Google Reader Readability&lt;/a&gt; (点击安装). 该脚本同时支持 Firefox 和 Chrome. 效果如下，在每篇文章下面的工具栏添加一个新模块：&lt;/p&gt;
&lt;img decoding=&#34;async&#34; alt=&#34;Google Reader Readability&#34; src=&#34;http://thinlight.org/wp-content/uploads/2011/11/sendtokindle.png&#34; /&gt; 
&lt;p&gt;&lt;a class=&#34;new-window&#34; href=&#34;http://www.readability.com/&#34; target=&#34;_blank&#34;&gt;Readability&lt;/a&gt; 是专注于阅读的一家网站，最近刚推出了一系列产品，覆盖主要的一些便携设备，当然针对阅读的话必须有 Kindle 了。它的 &lt;a class=&#34;new-window&#34; href=&#34;http://www.readability.com/publishers/tools&#34; target=&#34;_blank&#34;&gt;publisher tool&lt;/a&gt; 给我们这样写博客的或者那些新闻网站提供一个小的 widget，点击即可在 readability.com 阅读，还有一个很好的功能是发送到 &lt;a href=&#34;http://qingbo.net/blog/post545-amazon-kindle-3-pros-cons.html&#34;&gt;Kindle&lt;/a&gt;. 而我的这个插件就是基于 publisher tool 的 JavaScript 代码 － 幸好他们没有压缩这个 JS，让我比较容易搞定了。其原理就是对网页作简单的处理之后，邮件发送给 &lt;user&gt;@free.kindle.com，然后 Amazon 就会在你连接 wifi 的时候把这些文章推送过来，免费。另外，Readability 有浏览器插件和 bookmarklet 可以在阅读任何网页的时候把它发给 Kindle.&lt;/p&gt;
&lt;p&gt;我现在 Kindle 里就有一个 Collection 叫 News &amp;amp; Articles，上网在 Google Reader 里看到比较长的好文章，就点一下这个按钮。定期 Turn on Wireless, 内容下载下来先放到这个 collection 里免得混乱，看完后直接删除 （最好是在选中文章的时候按右方向键，在那个界面里删除）。在 Kindle 里看书眼睛舒服，遇到英文生词的话查起来也方便。&lt;/p&gt;
&lt;p&gt;其实把 Google Reader 与 Kindle 连接的产品不只这一个。比如：&lt;/p&gt;
&lt;p&gt;G:RSS-Web 仍然是个网页，不过相当于利用 Google Reader API 重新设计了，适合在 Kindle，Nook 上显示。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dive Into * 作者 Mark Pilgrim 网上失踪 – 410 Gone</title>
      <link>https://qingbo-net.pages.dev/archives/443/</link>
      <pubDate>Sat, 05 Nov 2011 11:04:41 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/443/</guid>
      <description>&lt;p&gt;&lt;a class=&#34;new-window&#34; href=&#34;http://en.wikipedia.org/wiki/Mark_Pilgrim_(software_developer)&#34; target=&#34;_blank&#34;&gt;Mark Pilgrim&lt;/a&gt; 是 Dive Into … 系列编程书籍的作者，比较出名的是 Dive Into Python. 我最早接触他的作品是 Universal Feed Parser 中的 chardet library，后来还由于看见他网站的字体很特别，自己也&lt;a href=&#34;http://qingbo.net/blog/post485-font-face-embed.html&#34;&gt;尝试了一下&lt;/a&gt;。多产的人就是这样，有时候没有意识，突然有一天发现自己在用很多他做的东西。这只是他的贡献的一小部分，他把许多书都做成了网站让人免费阅读，比如 diveintopython.org, diveintopython3.org 等等。甚至他的 blog 名字也叫 Dive Into Mark. 下面是 Wikipedia 对他的简单介绍：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Mark Pilgrim is a software developer, writer, and advocate of free software. He authors a popular blog, and has written several books including Dive into Python, a guide to the Python programming language published under the GNU Free Documentation License. Formerly an accessibility architect in the IBM Emerging Technologies Group, he started working at Google in March 2007.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu 11.04 安装 scim-googlepinyin</title>
      <link>https://qingbo-net.pages.dev/archives/442/</link>
      <pubDate>Fri, 28 Oct 2011 04:09:19 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/442/</guid>
      <description>&lt;p&gt;以前用 Mac 的时候，抱怨 &lt;a href=&#34;http://qingbo.net/blog/post477-no-chinese-input-method-on-mac.html&#34;&gt;Mac 没有好用的中文输入法&lt;/a&gt;，现在搜狗和腾讯竞争激烈，Mac 用户不愁输入法了。现在又用 Linux 了，一直希望腾讯或者搜狗能够为 Linux 开发一款输入法可是迟迟不见踪影。前面写了一片 &lt;a href=&#34;http://qingbo.net/blog/post586-ubuntu-11-04-ibus-cloud-pinyin.html&#34;&gt;Ubuntu 安装 ibus-cloud-pinyin&lt;/a&gt; 的，不过后来还是感觉体验不太好，用回默认的 ibus 拼音了。&lt;/p&gt;
&lt;p&gt;今天写东西还是觉得中文输入很烦，于是试试安装这个 &lt;a class=&#34;new-window&#34; href=&#34;http://code.google.com/p/scim-googlepinyin/&#34; target=&#34;_blank&#34;&gt;scim-googlepinyin&lt;/a&gt; 吧。发现过程也不是太难，关键是怎么让 scim 正常运作起来。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sudo apt-get install scim scim-pinyin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后在 Language Support 里把 Keyboard input method system 选成 scim 重新登录就可以了。安装完成后 System Preferrences 里就会有 SCIM 的设置，把所有的都看一下大致知道怎么配置了。不过问题是在很多输入框里，候选词列表不跟随光标移动，比较难受。解决办法是修改 &lt;code&gt;/etc/X11/xinit/xinput.d/scim&lt;/code&gt;，把 GTK_IM_MODULE 改成 scim. 我把 QT_IM_MODULE 也改了，不过好像没效果，QT 程序里还是不跟随光标。对我来说无所谓，我目前用到的唯一 QT 程序是 skype，并且它的输入框就那么小，不碍事。&lt;/p&gt;
&lt;p&gt;我也不知道是什么影响一个输入法的体验的，这个是我感觉最好的。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;安装了 scim 之后发现系统的中文字体很奇怪，包括某些网页，标点符号跑到了正中心，让人受不了。看了一下目录 &lt;code&gt;/etc/fonts/conf.d/&lt;/code&gt; 下面有几个更改日期为今天的配置文件，顺藤摸瓜，应该是安装 scim 的时候顺带安装了两个字体包。照下面的命令卸载掉即可，不会影响 scim 输入法使用：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sudo apt-get remove ttf-arphic-uming ttf-arphic-ukai
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我不知道 apt 系统的依赖原理，不明白为啥安装 scim 的时候给我安装上，我卸载的时候却不管。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kindle 不适合阅读结构化书籍</title>
      <link>https://qingbo-net.pages.dev/archives/441/</link>
      <pubDate>Mon, 24 Oct 2011 04:44:29 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/441/</guid>
      <description>&lt;p&gt;Kindle 3 的软件在某次升级中，加入了 real page number 这么一个功能，似乎仅支持从 Amazon 购买的一部分书。我不知道这个功能到底有多大用处，Amazon 急于响应用户的要求。读书的过程中知道实际页码和知道百分比有什么区别吗？除非用这个功能是为了方便地在纸质书中找到对应的位置，去看一些在 Kindle 中排版错乱的文字、图表，或者 Kindle 中看不清的插图。&lt;/p&gt;
&lt;p&gt;在 Kindle 上看了各种各样的书之后，感觉它确实很难告诉读者，当前正在读的是什么地方。百分比、页码是不够的，纸质书是怎么做的？现在大多纸质书都会在页眉处标出章节，一般翻开书的任何地方，右边页眉标着这是第几章，左边页眉标着是第几节。这样读者困惑的时候，一抬头就知道自己看到哪儿了。我觉得 Kindle 最缺的就是这个，有时候不知道自己在什么地方，只好往前翻页，够痛苦。&lt;/p&gt;
&lt;p&gt;说到翻页，电子书的翻页也是够难受的。当然读书的过程中，大部分的操作都是一页一页往后翻。但是有时候比如你读小说，看到一个人的名字，明明刚十几页之前提到了却想不起来这是谁，翻页就比较痛苦。当然可以通过搜索定位，但是这样一般还得用书签记住当前位置，也挺麻烦的。&lt;/p&gt;
&lt;p&gt;最近看那个 Getting Things Done，作者也够唠叨的，一个概念翻来覆去很多次重复讲，可能是我没有耐心吧，有了上政治课的感觉。他那个几万英尺的说法，开头讲了一次，后半部分里又拿出来讲，其实当时我是比较想翻到开头去看看到底有什么区别的，但是由于 Kindle 做这个太麻烦，就懒得看这本书了。另一方面，我看了一下原版的纸质书（很久前买的，100大洋啊），章节层次是比较分明的，除了在页眉标明章节，更下面的层次就用大小字体、粗体、斜体依次标识。而 Kindle 版本的就只有两种层次，一种是很大的粗体，另一种就是斜体了，所以有时候不集中精力的话，看得云里雾里。&lt;/p&gt;
&lt;p&gt;目前来说，Kindle 最合适的还是看一些叙事性的小说。第一没有什么层次结构，第二不需要复杂的排版、插图、表格等。我老婆就在孜孜不倦地在这条路上实践。&lt;/p&gt;
&lt;p&gt;看来电子书还有很长的路要走。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu 11.04 安装 ibus-cloud-pinyin</title>
      <link>https://qingbo-net.pages.dev/archives/440/</link>
      <pubDate>Mon, 17 Oct 2011 07:49:46 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/440/</guid>
      <description>&lt;p&gt;首先安装必要的软件包（valac 默认版本不是 0.10 所以安装时必须指定版本号。subversion 是为了 checkout ibus-cloud-pinyin 的代码准备的）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get install liblua5.1-0-dev liblua5.1-socket2 libsqlite3-dev libibus-dev libnotify-dev lua5.1 libgee-dev valac-0.10 sqlite3 subversion
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后 check out ibus-cloud-pinyin 源代码，编译，安装：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;svn checkout http://ibus-cloud-pinyin.googlecode.com/svn/trunk/ ibus-cloud-pinyin
cd ibus-cloud-pinyin/
make
sudo make install
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;接下来重启 ibus. 通过命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ps -ef | grep ibus-daemon
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;找到 ibus 的进程号 kill 掉，然后通过菜单 System-&amp;gt; Preferences-&amp;gt;Keyboard Input Methods 启动。现在点击输入法图标，应该多了个 Chinese – Cloud Pinyin，选择即可使用。我也不太清楚它使用的是哪个云输入法，但是词库、词频比默认的输入法好太多了。&lt;/p&gt;
&lt;p&gt;另外，想要开机启动 ibus，可以在 System-&amp;gt;Preferences-&amp;gt;Startup Applications 里添加 &lt;code&gt;/usr/bin/ibus-daemon&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>英文书籍阅读之难度</title>
      <link>https://qingbo-net.pages.dev/archives/439/</link>
      <pubDate>Mon, 17 Oct 2011 06:33:37 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/439/</guid>
      <description>&lt;p&gt;最近读英文书比较多，感觉自己的阅读速度突飞猛进，心里很欢喜。不过几天前看《&lt;a class=&#34;new-window&#34; href=&#34;https://qingbo-net.pages.dev/go/13&#34; rel=&#34;nofollow&#34; target=&#34;_blank&#34;&gt;活着就为改变世界:史蒂夫•乔布斯传&lt;/a&gt;》中文版很快看到三分之一，开始转读英文版，一下就懵了，觉得满篇都是生词。&lt;/p&gt;
&lt;p&gt;高中时想找本完整的英文小说看，竟然在书摊上买了本英文版的《穆斯林的葬礼》！我现在想起来都觉得有点不可思议，不知道为什么翻译成英文又给卖到中国来。记得这本书也没看几页，因为基本上都是生词，查词典都查不过来，而且不是可以猜测意思跳过去的。文学作品里大多都有复杂的句子，还用很多修辞技巧，那时的我不可能接受。到现在，看这个 &lt;a class=&#34;new-window&#34; href=&#34;https://qingbo-net.pages.dev/go/14&#34; rel=&#34;nofollow&#34; target=&#34;_blank&#34;&gt;iCon Steve Jobs: The Greatest Second Act in the History of Business&lt;/a&gt; 仍然觉得有点难，读起来很慢。&lt;/p&gt;
&lt;p&gt;即使是跟自己不相干的偏专业性书籍，对我来说读起来也比文学作品容易。前阵子读了 &lt;a class=&#34;new-window&#34; href=&#34;https://qingbo-net.pages.dev/go/15&#34; rel=&#34;nofollow&#34; target=&#34;_blank&#34;&gt;Predictably Irrational&lt;/a&gt;, 没想到里面的英文会没有难度。主要原因就是作者 Dan Ariely 不是文学家，不常用一些对我们来说比较生僻的词汇。这本书的内容主要也是关于心理学、经济的，虽然有一些专业词汇，但是为数不多，可以接受，多见几遍就记住了。这两天正在读的是 &lt;a class=&#34;new-window&#34; href=&#34;https://qingbo-net.pages.dev/go/16&#34; rel=&#34;nofollow&#34; target=&#34;_blank&#34;&gt;Getting Things Done: The Art of Stress-Free Productivity&lt;/a&gt;，其实也是偏专业的一本。&lt;/p&gt;
&lt;p&gt;文学方面的书籍，即使是给小孩写的，比如 Alice’s Adventures in Wonderland，生词也是很多。一方面，作者为了不重复以防读者出现厌烦感，同一个意思变着法子换形容词，还有各种所谓 fancy word，就如有的街道不叫 street 叫 boulevard 一样。另一方面，文学作品描写生活、场景的很多，一涉及到这些就会出现大量我们从来没接触过的名词。不用细想，你往四周看看，家里有多少东西你不知道英文里叫什么？&lt;/p&gt;
&lt;p&gt;阅读除了学到书里的知识，对学习生词也是最好的方式了。尤其是一本书里反复出现的词汇，记忆效果非常好。这一点还是非文学类书籍做的最好，因为第一，技术性词汇会反复出现，不可避免；第二，作者不刻意追求形容词的不一致，所以很多形容词重复会用他偏好的那一个，对读者来说学习这个形容词就很有帮助。&lt;/p&gt;
&lt;p&gt;不过不管怎样，只要没有达到妨碍阅读的程度，都是学习英语的好工具，生词多少只是在一定程度上影响阅读速度吧。有了 &lt;a href=&#34;http://qingbo.net/blog/post545-amazon-kindle-3-pros-cons.html&#34;&gt;Kindle&lt;/a&gt; 的帮助，现在查生词也越来越方便了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在农村见过的小孩怪病疗法</title>
      <link>https://qingbo-net.pages.dev/archives/438/</link>
      <pubDate>Tue, 11 Oct 2011 03:16:45 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/438/</guid>
      <description>&lt;p&gt;刚看了 “Predictably Irrational” (不知道为何国内出版的译本叫“怪诞行为学”，而把正名作为副标题)，里面提到许多当今美国的外科手术可能只是安慰剂（placebo）。多数人都会承认，心理在疾病的发展和治疗过程中起很大的作用。我从小在农村长大，由此想起一些在城市里早已消失的“古法”治病方法。&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;/p&gt;
&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;p&gt;十几岁的时候经常想，为什么在城市里就没有人得这么奇怪的病，需要神仙给治呢？其实并不是城市里的孩子不得病，而是得了病不这么解释成“吓着了”、“冒犯神仙了”。应该是现代医术落后的情况下，人们只能寄托希望于神鬼了吧（找我姥姥看病的人都说吃药不管用）。&lt;/p&gt;
&lt;p&gt;农村还有许多其它的传说，比如我爸作为一个老师也曾跟我说有个人“鬼上身”了，说一些他自己根本不可能知道的那个死人生前的事。但是传说很多，我却没有亲眼见过任何一个，只好暂时不信了。也许这是真的吧，没事，总有一天会搞清楚是什么原理的。什么事都有来由，把它归为神鬼只是一个安慰而已。就像我们程序员看到一个 bug 的时候不能说“这是一个奇迹”。&lt;/p&gt;</description>
    </item>
    <item>
      <title>quicktime的安装过程没有完成 itunes要求安装quicktime</title>
      <link>https://qingbo-net.pages.dev/archives/437/</link>
      <pubDate>Wed, 21 Sep 2011 02:27:14 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/437/</guid>
      <description>&lt;p&gt;用电脑最烦的一件事就是出了问题，软件给的出错信息没有任何信息含量。这个技能，微软是最拿手的了。不过苹果有时候也学得很好，比如最近在一台 Windows 7 系统被折腾得比较乱的电脑上安装 iTunes 时，安装失败就给了这么一条信息：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;quicktime的安装过程没有完成 itunes要求安装quicktime&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;这意思明摆着就是让你放弃吧。但我没有放弃，后来发现是因为这个系统里面安装了各式各样的播放器、解码器。打开“添加删除程序”，把所有看着像音频/视频解码器的东西统统删了，再安装就没有问题了。&lt;/p&gt;
&lt;p&gt;本来装 iTunes 是为了同步音乐到 iPod 上，不过后来发现 Ubuntu 里带的 &lt;a class=&#34;new-window&#34; href=&#34;http://banshee.fm/&#34; target=&#34;_blank&#34;&gt;Banshee&lt;/a&gt; 就可以同步 iPod 而且还比较好用，于是不再需要到 Windows 里同步了。不得不说，Ubuntu 做桌面已经比较成熟（11.04 里的 unity，个人认为非常垃圾，已切换至传统的 gnome. 不知道 gnome 3 如何）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>两半西瓜</title>
      <link>https://qingbo-net.pages.dev/archives/436/</link>
      <pubDate>Tue, 20 Sep 2011 08:37:45 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/436/</guid>
      <description>&lt;p&gt;昨天中午进小区门口的时候，在水果摊买了半块西瓜。老板当下给切开一个西瓜，给我一半。&lt;/p&gt;
&lt;p&gt;老婆晚上下班回来路过小区水果摊，也买了半块西瓜。因为她把手机忘在公司了，所以不知道我也买了。等她把西瓜拿回来，我一看，似曾相识啊。搬出我买的半块，凹凸一致。往上一扣，真是天生的一对：&lt;/p&gt;
&lt;img decoding=&#34;async&#34; alt=&#34;西瓜&#34; src=&#34;http://pic.yupoo.com/qingbo/BnK2bxmS/medium.jpg&#34; /&gt; 
&lt;p&gt;看来老板的西瓜卖的不是太好啊 🙂&lt;/p&gt;</description>
    </item>
    <item>
      <title>租车自驾游装备</title>
      <link>https://qingbo-net.pages.dev/archives/435/</link>
      <pubDate>Wed, 14 Sep 2011 02:52:06 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/435/</guid>
      <description>&lt;p&gt;[&lt;a target=&#34;_blank&#34; href=&#34;http://qingbo.net/blog/post580.html&#34;&gt;本文有特效无法在 RSS Reader 里展示，请查看原文&lt;/a&gt;]&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;span class=&#34;pointer&#34; id=&#34;point-to-11&#34;&gt;GPS&lt;/span&gt; 是&lt;a class=&#34;new-window&#34; href=&#34;https://qingbo-net.pages.dev/go/7&#34; rel=&#34;nofollow&#34; target=&#34;_blank&#34;&gt;摩托罗拉 TN30&lt;/a&gt;，当时在京东看了不少，那些国内品牌总给人一种山寨的感觉，集成许多没用的功能。Motorola 也许会做点像样的东西吧，于是选了这个（我的第一件 Motorola 产品）。&lt;/p&gt;
&lt;p&gt;导航绝对不是摩托罗拉的强项，这个产品据说只是做出来试水的。它也并没有脱离山寨的品位，内置了很烂的音乐、电影播放器，超级垃圾的游戏。最早的版本只有摩托罗拉开发的一个导航软件，超级烂且没有后续地图数据更新。现在的版本都带了一张 2G 的 MicroSD，同时带一个 SD Adapter，里面装了灵图，第一次使用的时候需要激活。我换了一张 4G 的 SD 卡，在&lt;a class=&#34;new-window&#34; href=&#34;https://qingbo-net.pages.dev/go/9&#34; rel=&#34;nofollow&#34; target=&#34;_blank&#34;&gt;这里&lt;/a&gt;更新了数据，似乎一直免费的吧。&lt;a class=&#34;new-window&#34; href=&#34;https://qingbo-net.pages.dev/go/8&#34; rel=&#34;nofollow&#34; target=&#34;_blank&#34;&gt;这个帖子&lt;/a&gt;介绍了如何安装更多程序，有兴趣可以参考。&lt;/p&gt;
&lt;p&gt;灵图程序手写功能偶尔会导致崩溃，导航启动时搜索卫星也比较慢，有时候发现它还会找错地方，硬重启一次即可。彻底关闭的方式是一直按着电源按钮，先响一声，看到屏幕关闭，再过几秒橘色指示灯闪烁，表示已经完全关闭。&lt;/p&gt;
&lt;p&gt;支架看似是硬的，实际上是可以弯曲调节的，用力即可。这个力度正好可以让导航仪在颠簸中不会变位置。触摸屏要用指甲操作才流畅。总体来说，性价比很低的一个东西。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;img decoding=&#34;async&#34; alt=&#34;租车装备&#34; src=&#34;http://pic.yupoo.com/qingbo/BmPnsDHc/medish.jpg&#34; /&gt; 
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;span class=&#34;pointer&#34; id=&#34;point-to-12&#34;&gt;公对公音频线&lt;/span&gt;是&lt;a class=&#34;new-window&#34; href=&#34;https://qingbo-net.pages.dev/go/10&#34; rel=&#34;nofollow&#34; target=&#34;_blank&#34;&gt;秋叶原墨玉版1.8米&lt;/a&gt;。用不着这么长，不过这是质量比较好的里面最短的了。还有更贵的&lt;a class=&#34;new-window&#34; href=&#34;https://qingbo-net.pages.dev/go/11&#34; rel=&#34;nofollow&#34; target=&#34;_blank&#34;&gt;贝尔金的&lt;/a&gt;，太不值了。插 iPod, iPhone 的耳机口松紧正合适，另一头插入车的音频输入，按 AUX 键或者有的车是长按音源键即可切换，音量也合适。iPod, iPhone 控制音乐播放非常方便，又能听自己平时听的音乐，当然了也可以接其它的 mp3 player, 只要有3.5 mm 输出。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;先在京东上发现有专门给近视人士做的&lt;a class=&#34;new-window&#34; href=&#34;https://qingbo-net.pages.dev/go/12&#34; rel=&#34;nofollow&#34; target=&#34;_blank&#34;&gt;偏光套镜&lt;/a&gt;，不过怕不合适。去潘家园眼镜城买了个，品牌不一样，便宜点。这种偏光套镜据说都是一样的尺寸，反正我近视度数比较高加散光，镜架形状是普通的，套上这个正合适，而且很轻，没有感到不舒服。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>qingbo.net 最近的更新</title>
      <link>https://qingbo-net.pages.dev/archives/434/</link>
      <pubDate>Mon, 12 Sep 2011 14:56:09 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/434/</guid>
      <description>&lt;p&gt;首先加了分类的功能，其实一开始设计的时候就有，数据库里相关的表都一直存在，只是当时觉得分类其实没太大作用，搜索可以解决一切问题。现在想想，按分类浏览有时候还是很方便的，于是把它放了出来。不过自从由 WordPress 迁移到自己搭建的平台，文章都没有分类，以后再整理吧。&lt;/p&gt;
&lt;p&gt;可以在文章里画箭头指向图片上的某个区域，画线的部分已放在 GitHub 上，所有代码其实都可以查看源代码得到。详细介绍见上一篇文章 “&lt;a href=&#34;http://qingbo.net/blog/post578-autoarrow-js.html&#34;&gt;autoarrow.js&lt;/a&gt;“。&lt;/p&gt;
&lt;p&gt;图片上可以标记区域加 note，和 Flickr 基本一样。我是完全用 CSS 实现的鼠标悬浮等效果，没考虑 IE 的兼容性。&lt;/p&gt;
&lt;p&gt;后两个效果不能在 RSS Reader 里展示，所以如果用到了这两个特性，在 RSS 输出里加了提示。具体例子可以看文章“&lt;a href=&#34;http://qingbo.net/blog/post577.html&#34;&gt;人体工学键盘+笔记本支架&lt;/a&gt;”&lt;/p&gt;
&lt;p&gt;其它一些小的更新：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;写了一个 Python Markdown 的 extension, 如果链接是指向站外的，加上属性 &lt;code&gt;target=&amp;quot;_blank&amp;quot;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;评论不再支持 Markdown，使用纯文本，不会有链接，不会有任何样式了，只有换行。&lt;/li&gt;
&lt;li&gt;后台写文章的界面应用了 &lt;a class=&#34;new-window&#34; href=&#34;http://code.google.com/p/pagedown/&#34; target=&#34;_blank&#34;&gt;pagedown&lt;/a&gt;，写 Markdown 稍微方便了一些。这个项目就是 Stack Overflow 的那帮人维护的，基本上是把 SO 用的那个编辑器及预览功能剥了出来。&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>autoarrow.js</title>
      <link>https://qingbo-net.pages.dev/archives/433/</link>
      <pubDate>Mon, 12 Sep 2011 03:57:29 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/433/</guid>
      <description>&lt;p&gt;写了个简单的 JavaScript，可以指定 HTML 页面上的一个元素作为 container，从里面的任意元素向里面某个图片的一个区域画箭头。名字就叫 &lt;a class=&#34;new-window&#34; href=&#34;https://github.com/qingbo/autoarrow.js&#34; target=&#34;_blank&#34;&gt;autoarrow.js&lt;/a&gt; 吧，放在 github 上，点过去可以看到简介、截图，里面也有一个简单的例子。依赖 jQuery, 不过我不太熟悉怎么做成 jQuery 插件的形式，就这么凑合着吧。&lt;/p&gt;
&lt;h3 id=&#34;showcase&#34;&gt;Showcase&lt;/h3&gt;
&lt;p&gt;以下几篇文章可以作为演示 (如果你看不到可能是缓存问题，强制刷新一下)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://qingbo.net/blog/post560-book-stand.html&#34;&gt;Book Stand&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://qingbo.net/blog/post575.html&#34;&gt;AVIS国际租车体验 – 八达岭野生动物园&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://qingbo.net/blog/post577.html&#34;&gt;人体工学键盘+笔记本支架&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;大致原理&#34;&gt;大致原理&lt;/h3&gt;
&lt;p&gt;创建一个 canvas，位置、大小完全和 container 一致，但是 z-index 是负数，这样它就在 container 显示层的下面，设置 container 背景透明，所以能够看到 canvas 上的东西。如果 canvas 在 container 上面，则会影响 container 里的文字选择等操作。&lt;/p&gt;
&lt;p&gt;因为图片一般是不透明的，所以把区域内的图片都设置 z-index 为更小的负数，但暂未考虑其它不透明元素。&lt;/p&gt;
&lt;p&gt;计算出箭头起点区域和终点区域的坐标，用一种很简单的算法计算起点、终点到底从哪个方向画出来。这样在接口参数中，起点只需指定起点的元素，比如 &lt;code&gt;$(&#39;#anchor-1&#39;)&lt;/code&gt; 这样的，终点只需指定图片和目标区域（一般是图片上的一个物体）。无需考虑排版变化之后需要重新“布线”的问题。&lt;/p&gt;
&lt;h3 id=&#34;执行时机&#34;&gt;执行时机&lt;/h3&gt;
&lt;p&gt;使用这个脚本的时间问题。最初我选择在 jQuery 的 ready 事件中执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$(function() { ... });
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;随后发现在 Chrome 里，图片还没有加载就开始画线了，而如果这图片的大小是事先未知的，就不能事先指定其尺寸，图片加载完成会造成重新排版，就全乱了。&lt;/p&gt;
&lt;p&gt;正好 jQuery 还提供了一个 &lt;a class=&#34;new-window&#34; href=&#34;http://api.jquery.com/load-event/&#34; target=&#34;_blank&#34;&gt;.load&lt;/a&gt; 事件，这个可以在所有图像加载结束之后执行，正适合这个场合：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$(window).load(function() { ... });
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;如何方便地取得图片区域坐标&#34;&gt;如何方便地取得图片区域坐标&lt;/h3&gt;
&lt;p&gt;这只是一个小工具，如果想在动态程序中应用它，所需的额外工作还不少。比如怎么选定图片的一个区域，得到它的坐标并且保存起来，好在显示页面的时候使用？这方面的插件有很多，&lt;a class=&#34;new-window&#34; href=&#34;http://odyniec.net/projects/imgareaselect/&#34; target=&#34;_blank&#34;&gt;imgAreaSelect&lt;/a&gt; 就是很好用的一个。&lt;/p&gt;</description>
    </item>
    <item>
      <title>人体工学键盘&#43;笔记本支架</title>
      <link>https://qingbo-net.pages.dev/archives/432/</link>
      <pubDate>Sun, 11 Sep 2011 14:03:46 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/432/</guid>
      <description>&lt;p&gt;[&lt;a target=&#34;_blank&#34; href=&#34;http://qingbo.net/blog/post577.html&#34;&gt;本文有特效无法在 RSS Reader 里展示，请查看原文&lt;/a&gt;]&lt;/p&gt;
&lt;p&gt;祖宗不知道繁殖了多少代，终于让我们直立行走，进化成人。为了避免退化成程序“猿”，这几天购置了两件新玩意，一个是&lt;a class=&#34;new-window&#34; href=&#34;https://qingbo-net.pages.dev/go/4&#34; rel=&#34;nofollow&#34; target=&#34;_blank&#34;&gt;&lt;span class=&#34;pointer&#34; id=&#34;point-to-8&#34;&gt;微软的人体工学键盘 4000&lt;/span&gt;&lt;/a&gt;，另一个是&lt;a class=&#34;new-window&#34; href=&#34;https://qingbo-net.pages.dev/go/5&#34; rel=&#34;nofollow&#34; target=&#34;_blank&#34;&gt;&lt;span class=&#34;pointer&#34; id=&#34;point-to-9&#34;&gt;安尚笔记本电脑健康托架&lt;/span&gt;&lt;/a&gt;，支架主体被电脑挡住了，可以去 amazon 看。&lt;/p&gt;
&lt;img decoding=&#34;async&#34; alt=&#34;my workspace&#34; src=&#34;http://pic.yupoo.com/qingbo/BmrbmBsi/medish.jpg&#34; /&gt; 
&lt;p&gt;两个东西设计都非常好，一个字 – 值得拥有。分别介绍一下：&lt;/p&gt;
&lt;h2 id=&#34;微软人体工学键盘-microsoft-natural-ergonomic-keyboard-4000&#34;&gt;微软人体工学键盘 Microsoft Natural Ergonomic Keyboard 4000&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;掌托表面的材料不是塑料，柔软，很舒服。&lt;/li&gt;
&lt;li&gt;除了弧形起伏及左右手分离的设计，它与普通键盘最大的区别是有个&lt;span class=&#34;pointer&#34; id=&#34;point-to-10&#34;&gt;很厚的底座&lt;/span&gt;，位置在靠近身体的一方，所以键盘是越靠近身体越高（反坡度设计）。这样在打字的时候，手腕架在掌托上，手掌有点自然下垂的感觉，非常舒服。使用普通键盘的时候，总感觉需要用点力向上抬手掌。当然这个底座可以拆掉，但掌托还在，还是比普通键盘舒服。前面还有两只脚，可以在拆掉底座的时候打开。如果在有底座的时候打开，键盘无法稳定在桌面上。&lt;/li&gt;
&lt;li&gt;数字6键在左手区！一时半会没法适应，包括打省略号……&lt;/li&gt;
&lt;li&gt;Linux 支持 – 在 Ubuntu 11.04 系统中，至少在 Firefox 里实验可以直接支持前进、后退，还有书签 (My Favorites) 三个建，缩放滑块无效。更神的是 Web/Home, Search, Mail, Calculator, 音量竟然都可以用，还有播放/暂停建可以控制 Banshee 和 Totem，即使是程序在后台！不知到是哪个程序在控制。&lt;/li&gt;
&lt;li&gt;光盘上标着里面有 for Mac 的软件。&lt;/li&gt;
&lt;li&gt;不知道为啥京东之类的全都不卖这个了？我从新蛋买的，拿到包装是全英文，不知道是啥渠道的，上面还有撕掉的中文标签，剩下一个字。想买的同学&lt;a class=&#34;new-window&#34; href=&#34;https://qingbo-net.pages.dev/go/4&#34; rel=&#34;nofollow&#34; target=&#34;_blank&#34;&gt;从速&lt;/a&gt;吧。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;安尚-actto-笔记本电脑健康托架&#34;&gt;安尚 (actto) 笔记本电脑健康托架&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;颜色很深沉，没有 amazon 图片里那么鲜艳&lt;/li&gt;
&lt;li&gt;设计非常好，简约大方，占地面积小&lt;/li&gt;
&lt;li&gt;灰色的是类似橡胶的材质，防滑。设计巧妙也体现在不管调整到什么角度，后方的两个橡胶脚都是着地的，而靠近身体一方是一对弧形的防滑带（就是灰色的那种材料），角度高低都可以防止滑动。&lt;/li&gt;
&lt;li&gt;前面挡板的高度差不多3.5厘米，也是防滑的橡胶材质。我这笔记本也算厚了，还空余一大截。我感觉即使笔记本前面是弧形也不用担心滑下来。当然，前面如果有接口会被挡住。&lt;/li&gt;
&lt;li&gt;调节角度很简单，固定后放上电脑也很稳定。就是不知道能承受多大重量。&lt;/li&gt;
&lt;li&gt;不带散热器。我不需要这玩意，以前用一个 MacBook Pro 热到烫手好像也没啥事啊&lt;/li&gt;
&lt;li&gt;承重支架有个缝，说明书介绍是辅助走线的&lt;/li&gt;
&lt;li&gt;包装全是韩文，不过是 Made in China&lt;/li&gt;
&lt;li&gt;在 Amazon 买了托架付钱之后，发现其实把笔记本放在音箱上面也挺好的，不过既然买了就用吧，放上面也更稳定一些。这个笔记本除了配置低，没有无线网卡（买了个 &lt;a href=&#34;http://qingbo.net/blog/post570-dlink-dwl-g122-linux-driver.html&#34;&gt;USB 无线网卡&lt;/a&gt;）之外，还有个缺点是屏幕张开的角度有限，这就是为啥我在支架下面垫了 Wii 的盒子。托架本身可以变换角度把电脑支得很高的，只是那样屏幕就正对键盘了……&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;关于人体工学键盘，还有更高级的，比如 Amazon.com 上卖的这个 &lt;a class=&#34;new-window&#34; href=&#34;https://qingbo-net.pages.dev/go/6&#34; rel=&#34;nofollow&#34; target=&#34;_blank&#34;&gt;Kinesis Advantage USB – Keyboard&lt;/a&gt;，我去美国的时候看到有个同事在用，不过没想到要 $269，性价比太低。&lt;/p&gt;</description>
    </item>
    <item>
      <title>911 十周年</title>
      <link>https://qingbo-net.pages.dev/archives/431/</link>
      <pubDate>Sun, 11 Sep 2011 11:10:38 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/431/</guid>
      <description>&lt;p&gt;十年前这天还在上中学，911袭击发生的时候在中国已经是晚上了，我们第二天才知道。记得大部分同学都特别兴奋，庆祝美帝国主义被打击了。没错，南斯拉夫大使馆被美国人炸了，我们上街游行，还举着“打倒美帝国主义”的标语。&lt;/p&gt;
&lt;p&gt;去年有机会去美国，在波士顿旁边一个叫 Newton 的小城马路旁边就看见一个911的纪念碑，类似的纪念碑在整个美国肯定有不少。后来到了纽约，世贸中心遗址还在施工，应该是在建纪念碑吧。911给我留下的印象除了狂热的兴奋之外没有更多，即使到了遗址也没有太多感觉，虽然我已意识到当初的兴奋是多么变态。&lt;/p&gt;
&lt;p&gt;回来之后一个晚上我又开始看911的资料，从网上找了各种视频及录音。看到大厦在烈火中倒塌，烟尘将曼哈顿覆盖，开始体会到美国人当时的痛苦。记得在网易公开课上看到 MIT 的 Introduction to Algorithms 课程第三节似乎正好是2001年9月12日，Charles Leiserson 教授在讲课之前讲了好久与恐怖袭击相关的话题，声音哽咽。大致记得他说如果你有亲人或朋友在纽约，今天不来上课可以理解。他还劝大家都去献血，有机会来美国最好的大学读书，现在是回报社会的一个机会。别说“我来读书已经交过钱了”，在这里读书的花费远超你交的学费。可惜这个视频已经被&lt;a class=&#34;new-window&#34; href=&#34;http://v.163.com/movie/2010/12/8/U/M6UTT5U0I_M6V2T998U.html&#34; target=&#34;_blank&#34;&gt;替换&lt;/a&gt;掉了，如果谁有原来视频的话请分享一下。&lt;/p&gt;
&lt;p&gt;最后推荐此文——&lt;a class=&#34;new-window&#34; href=&#34;http://blog.sina.com.cn/s/blog_550e9f380100x72b.html&#34; target=&#34;_blank&#34;&gt;双子塔与清真寺——美国的十年之殇&lt;/a&gt;，并盗用图片：&lt;/p&gt;
&lt;img decoding=&#34;async&#34; alt=&#34;世贸大厦纪念光柱&#34; src=&#34;http://s14.sinaimg.cn/middle/550e9f38t77a87a58353d&amp;690&#34; title=&#34;世贸大厦纪念光柱&#34; /&gt;</description>
    </item>
    <item>
      <title>AVIS国际租车体验 – 八达岭野生动物园</title>
      <link>https://qingbo-net.pages.dev/archives/430/</link>
      <pubDate>Sat, 10 Sep 2011 13:53:49 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/430/</guid>
      <description>&lt;p&gt;[&lt;a target=&#34;_blank&#34; href=&#34;http://qingbo.net/blog/post575.html&#34;&gt;本文有特效无法在 RSS Reader 里展示，请查看原文&lt;/a&gt;]&lt;/p&gt;
&lt;p&gt;咱不是北京人，连暂住证都没有，严格说这就叫偷渡吧？本来想混个五年，求人给个买车买房的机会，结果发现前两年的个人所得税都交到上海去了。在咱社会主义，一个好处就是除了拿工资都不用缴税，所以我这两年根本就不是北京的纳税人。扯远了，嘿嘿。4月份和老婆同时拿到驾照（没学车的同学们赶紧的，推荐东方时尚，不用费脑筋考虑贿赂教练。别的地方看似便宜，加上隐性的就贵了），一直没怎么开过车。前阵子找了个周末，事先在 &lt;a class=&#34;new-window&#34; href=&#34;http://www.avischina.com/&#34; target=&#34;_blank&#34;&gt;AVIS&lt;/a&gt; 订了车，又在团购网站买了59元一张的野生动物园门票。&lt;/p&gt;
&lt;p&gt;从来没租过车，加上国内环境恶劣，订车之前还在网上查了好多评价，发现其它的租车公司都有人遇到一些不愉快的情况。也许是有的人真的开车不小心，故意给租车公司恶评。但是我有个朋友亲身经历，倒车不小心碰了一下，收车的人要好几百块钱（停驶费），他给了对方一点钱（当然进个人腰包了），就说没事了。有这个情况发生，肯定也就很容易出现恶意勒索的事情。了解到这些心里比较忐忑，最后选择了虽然比较小但是没有负面评价的 AVIS. 网上关于真实租车体验的文章特别少，大多都是租车公司自己的 PR，也许大家都很忙，只在有牢骚的时候才来发泄吧 🙂 我分享以下自己的经历，也算给别人点参考和帮助。&lt;/p&gt;
&lt;p&gt;我们在 AVIS 建外 SOHO 店（离永安里地铁近，从国贸要走一段）取车，店面很小，店员态度很好很热心。用身份证、驾照、信用卡（预授权5000，还车取消）办完手续，店员把车取来停在门口，比较细心地帮验车并在验车单子上对已有划痕作标记。租金里已经包含了基本保险，他们还提供&lt;a class=&#34;new-window&#34; href=&#34;https://qingbo-net.pages.dev/go/2&#34; rel=&#34;nofollow&#34; target=&#34;_blank&#34;&gt;更多保险&lt;/a&gt;，我买了 CDW1, CDW2, WDW，比较放心……GPS 是15一天，我自己在京东买了个带着。没开过自动档，他简单给我介绍了一下。订的是雪佛兰新乐风：&lt;/p&gt;
&lt;img decoding=&#34;async&#34; alt=&#34;从AVIS租到的车&#34; src=&#34;http://ww1.sinaimg.cn/bmiddle/572c6ca8jw1dkm7t6n6kyj.jpg&#34; /&gt; 
&lt;p&gt;刚上路比较紧张，一出去上了建国路转三环，前面又是国贸那么复杂的路口，我差点就从掉头的道走了，晃晃悠悠拐回转弯道，晃晃悠悠上了三环主路。从三环往京藏拐，比较堵，第一次挤着并线，很费劲很紧张。出了收费站又要挤着并线，差点追尾。离开收费站就好了，过了一会就熟悉了，并线、超车都很简单。一开始我还按新手规矩，不上快车道，后来发现有的车实在太慢，就破戒了……除了自己安全行车外还得注意，乱开的车太多了。有开个破跑车乱窜的，有从应急车道超车的，最危险的是车身很长的公交车或者卡车还没超过我就开始并线。&lt;/p&gt;
&lt;p&gt;终于开到野生动物园，很有成就感。可是一不小心开到自驾的入口，我们原本不想开车进去，怕车被猛兽划一下子麻烦，不过既然到了门口就一狠心，花35块买了个车的票开进去了。这时发现一个很郁闷的事，油量到红线了，没经验不知道能跑多远。硬着头皮走吧，千万别没油困在猛兽区了！&lt;/p&gt;
&lt;p&gt;以下插入野生动物园照片：&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;彷徨的白虎，凶悍的黑熊，威猛的狮子&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/qingbo/82657572/&#34; title=&#34;IMG_5582&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/Bmh8LayU/small.jpg&#34; alt=&#34;IMG_5582&#34; width=&#34;240&#34; height=&#34;160&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#34;http://www.yupoo.com/photos/qingbo/82657674/&#34; title=&#34;黑熊&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/BmhaMlN6/small.jpg&#34; alt=&#34;黑熊&#34; width=&#34;240&#34; height=&#34;160&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#34;http://www.yupoo.com/photos/qingbo/82657685/&#34; title=&#34;狮子&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/BmhaTuuB/small.jpg&#34; alt=&#34;狮子&#34; width=&#34;240&#34; height=&#34;160&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#34;http://www.yupoo.com/photos/qingbo/82657695/&#34; title=&#34;狮子&#34; target=&#34;_blank&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/BmhaXJbV/small.jpg&#34; alt=&#34;狮子&#34; width=&#34;240&#34; height=&#34;160&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;马来熊很可爱，嘴馋，据说会开车门，吃东西时坐地上双手捧着吃（还是有不少人投喂的）。鼠标放图片上看台词（blog新功能，如果看不见请强制刷新网页）……&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/Bmh8LmaC/medish.jpg&#34; alt=&#34;IMG_5600&#34; width=&#34;640&#34; height=&#34;427&#34; border=&#34;0&#34; /&gt; 
&lt;p&gt;动物园里独特的创收方式。小老虎像鸡一样被关在笼子里，游人来拍照就揪一只出来，任由人摆弄姿势。小老虎明显不舒服，有时候腿着不了地乱蹬，游人全然不顾，伸手做一个“二”的手势拍照。它们一天不知道被多少只脏手摸过……起码你给人戴个一次性手套！&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/Bmhb4EmA/medish.jpg&#34; alt=&#34;被虐待的小老虎&#34; width=&#34;427&#34; height=&#34;640&#34; border=&#34;0&#34; /&gt; 
&lt;p&gt;离开猛兽区，停车去看了猴子（好玩还得数猴子）。&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/BmhKaJLJ/medish.jpg&#34; alt=&#34;猴子&#34; width=&#34;640&#34; height=&#34;427&#34; border=&#34;0&#34; /&gt; 
&lt;hr&gt;
&lt;p&gt;第一次停车，走了半个广场才想起来忘记锁车了……看完猴子之后匆忙开车下山，路上的温顺动物都没仔细看，怕没油。&lt;/p&gt;
&lt;p&gt;出门之后直奔加油站，说加20升，他们说你凑个整钱，我就问20升大概多少钱，他们算了一下，说170吧，我就加了170. 我下车一看，7.85一升，他们数学学得真好。加好油之后上高速，去小汤山旁边的九华山庄住了一晚上。去八达岭的时候没感觉上坡，但是回来路上好像坐飞机似的，耳鸣，搞得晚饭都没食欲。第二天早上起来出发做了个错误的决定，打算去小汤山吃早餐，结果往那个方向一走就堵住了。过了好久从旁边叉路出去，绕了个大圈，跟着一个跑车在非机动车道上逆行终于逃脱，耽误了不少时间，直接就上高速往 AVIS 门店方向走了。导航让我从国贸桥右转到建国路，然后掉头。可是到了建国路，发现已经禁止掉头了，还站着警察叔叔。又绕了个大圈，最后终于到了 AVIS 门口，第一次自己开车一路无事，心里觉得这真是个奇迹，可是它就是发生了（当然有老婆在旁边做观察员）。&lt;/p&gt;
&lt;p&gt;这次收车的是个 MM，直接让我开到地库，简单看了一下就办了手续。取消那个5000的预授权后又做了500的预授权，作为违章押金。AVIS 的里程限制比较低，只有200公里每天，这次我们控制得真完美——199公里……出门后不久发现 iPod 耳机线丢了，回去后店员 MM 又陪我们到车里找回来。&lt;/p&gt;
&lt;p&gt;正好第二天拍婚纱照，回家才知道也要用车，让工作室帮忙联系的话一天350，这还不如自己租呢，于是我又打电话订了一天。第二天取车，店员（还不是前次收车的那个）还记得我还车的时候油多出来不少，因为租的是和上次同一辆车，还按第一次出车的时候油量，并且算上他们出去洗车之类的，又减掉三个。这样的态度真的让人感到非常舒服！在办手续的时候他们会提醒如果多加油是不退的，但发生了之后还是会站在客户的角度考虑问题。这次还车的时候，是把手机忘在副驾驶位了，收车的帅哥把车开到地库后发现了，回来给的我。&lt;/p&gt;
&lt;p&gt;几点补充……&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;虽然学的手动档，在市里新手上路开自动档还是挺好的，操作简单不用费心，可以有精力去观察周围的情况。并线的时候需要加速也简单。要是手动档，手忙脚乱的容易出事。即使自动档我也在动物园门口想刹车的时候踩了油门……&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;似乎有个租车公司（好像是1hai）不让新手买这种小额责任免除的保险。AVIS 只&lt;a class=&#34;new-window&#34; href=&#34;https://qingbo-net.pages.dev/go/3&#34; rel=&#34;nofollow&#34; target=&#34;_blank&#34;&gt;限制&lt;/a&gt;一年以下驾照的不能租比较贵的车。反正即使买了保险，大家还是要注意爱护车子，一方面是个习惯问题，另一方面如果谁都给撞，长远来看还不是得提高租金以覆盖成本吗。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;AVIS 网站用 Firefox 访问有小问题，chrome 问题少点，最好还是 IE。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;AVIS 好像在上海做得比较大，还有便宜的 Smart 可以租（体验一下奔驰，哈哈），北京我问了一下好像一共还没有上百辆车，国内覆盖的城市也相对比较少。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;AVIS 做得确实不错，毕竟是从国外直接拿来不少经验。希望国内租车市场越来越成熟吧。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu Linux 鼠标插上时禁用触摸板</title>
      <link>https://qingbo-net.pages.dev/archives/429/</link>
      <pubDate>Fri, 09 Sep 2011 04:12:16 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/429/</guid>
      <description>&lt;p&gt;在目前这个笔记本上装了 Ubuntu 11.04，多次遇见了触摸板干扰鼠标的情况。一般是鼠标按键失效，移动还可以。一开始我还以为鼠标坏了呢，心想正好有机会换个无线的，后来发现是触摸板的问题，只需按一下触摸板左键即可恢复正常。刚才又出现这种情况，让我误以为是 X 出毛病了，切换到另一个 tty，等 kill 掉 Firefox 的时候想明白了，按了一下触摸板。以前都是想禁用的时候输入命令 &lt;code&gt;synclient TouchPadOff=1&lt;/code&gt;，不过这次是一定要彻底解决这个问题。&lt;/p&gt;
&lt;p&gt;这里有个脚本 mouseSwitcher.sh，内容如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/bash
#
# Toggle touchpad on and off
#
# Author: Heath Thompson
# Email:  Heath.Thompson@gmail.com
#
# For startup wait for desktop to load first.
while true
do
    if ps -A | grep gnome-panel &amp;gt; /dev/null; 
    then
        echo &#39;X loaded&#39;
        break; 
    else
        echo &#39;X not loaded, waiting...&#39;
        sleep 5
    fi
done
#
# Check to see if appletouch is running
# if lsmod | grep appletouch &amp;gt; /dev/null; 
# then
#   echo &amp;quot; * Appletouch enabled&amp;quot;; 
# else
#   echo &amp;quot; * Appletouch either not working or not installed&amp;quot;
#   killall mouseSwitcher
# fi

while true
do
    # &#39;xinput list&#39; will list all input devices x detects
    # I could reference my usb mouse by ID but I&#39;m afraid that if I plug
    # another device in before my mouse, it might not have the same ID each
    # time.  So using the device name makes it relatively fail-safe.
    if xinput list &#39;Microsoft Microsoft? 2.4GHz Transceiver v5.0&#39;;
    then
        # Found my usb wireless mouse
        # Disable everything on the Touchpad and turn it off
        synclient TouchpadOff=1 MaxTapTime=0 ClickFinger1=0 ClickFinger2=0 ClickFinger3=0; 
        # Ends all syndaemon capturing which may have been used to monitor the touchpad/keyboard activity
        killall syndaemon
    else
        # My usb wireless mouse isn&#39;t present we need the touchpad
        # Reenable Touchpad and configure pad-clicks
        # RTCornerButton is the Right Top Corner on the touchpad
        #   The value 3 maps it as the right click button
        # RBCornerButton is the Right Bottom Corner on the touchpad
        #   The value 2 maps it as the middle click button
        synclient TouchpadOff=0 MaxTapTime=150 ClickFinger1=1 ClickFinger2=2 ClickFinger3=3 RTCornerButton=3 RBCornerButton=2;
        # Forces break of touchpad functions while typing if the touchpad is enabled.
        # Adds a 3 second interval following keyboard use which helps to prevent the
        # mouse from jumping while typing &amp;amp; resting hands on restpad or the touchpad
        syndaemon -i 3 -d;
    fi

    # wait 2 seconds and poll the mouse state again
    sleep 2
done

sleep 15
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是在我系统里，&lt;code&gt;xinput list&lt;/code&gt; 用设备名字做参数就是找不出来。以下是 &lt;code&gt;xinput list&lt;/code&gt; 的结果：&lt;/p&gt;</description>
    </item>
    <item>
      <title>D-Link DWL G122 与 Linux 驱动</title>
      <link>https://qingbo-net.pages.dev/archives/428/</link>
      <pubDate>Thu, 25 Aug 2011 16:50:47 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/428/</guid>
      <description>&lt;p&gt;从朋友那儿借了个联想的破笔记本竟然没有无线网卡，这样的配置在这年头显得有些奇特。于是在京东买了一个&lt;a class=&#34;new-window&#34; href=&#34;http://click.union.360buy.com/JdClick/?unionId=10184&amp;t=4&amp;to=http://www.360buy.com/product/112778.html&#34; target=&#34;_blank&#34;&gt;友讯 (D-Link) DWL-G122 无线USB网卡&lt;/a&gt;，省得拉网线麻烦。&lt;/p&gt;
&lt;p&gt;这只有1G内存的破电脑还装着 Windows 7，慢得要死。今天装了一个 Ubuntu 11.04，装的时候想到这个 USB 无线网卡可能在 Linux 里会有安装驱动的麻烦。装完之后也没多想就开始倒腾 Linux 驱动。先把 D-Link 给的 Windows 驱动盘插上，看到里面的驱动文件名是 rtl8192su.sys&lt;/p&gt;
&lt;img decoding=&#34;async&#34; alt=&#34;D-Link DWL-G122&#34; src=&#34;http://pic.yupoo.com/qingbo/BjSnGw9r/medish.jpg&#34; /&gt; 
&lt;p&gt;于是在 &lt;a class=&#34;new-window&#34; href=&#34;http://www.realtek.com/downloads/&#34; target=&#34;_blank&#34;&gt;Realtek 网站的下载页面&lt;/a&gt;搜索 rtl8192su，找到了 Linux 驱动的下载。看到是11年7月29日更新的，还挺勤快！不过是 for kernel 2.6.37 and earlier，可是 Ubuntu 11.04 的 kernel 恰好是2.6.38！不管了，先装上试试。解压 zip 之后，进入 driver 目录又解压 .tar.gz，make, make install, sudo depmod -a，抬头一看，咦，右上角有个无线的标志啊，真管用！点开之后选择我的路由器，输入密码，连上了！&lt;/p&gt;
&lt;p&gt;比较兴奋，于是想在 blog 里把过程简单记录一下。写了几个字以后感觉有点不对，好像我装好系统后 ifconfig 就看到了 wlan0… 应该是 Ubuntu 本身就已经支持这个 USB 无线网卡了，只是没有主动让我选择一个无线网络吧。我又跑到下载的驱动目录里，make uninstall，重启系统。果然，本来就可以上网的！本来此文的标题是 “D-Link DWL G122 安装 Linux 驱动”，我又舍不得丢掉已经写出来的东西，就把“安装”改成了“与” 🙂&lt;/p&gt;
&lt;p&gt;记得六七年前尝试使用 Linux 的时候真的很有难度，装个系统得折腾好久。装完之后还有网络、显卡等各种驱动等着折腾，当然，还有可恶的中文输入法（当时我都觉得中文输入法是阻碍 Linux 在国内发展的一个重要原因了）。现在安装 Linux 不比 Windows 复杂了，新的 kernel 对新显卡、网卡的支持又相对比较好，另外中文输入法点几下配置就可以用，实在是方便多了。可惜还是缺少一个优秀的、一致的 GUI 系统，抄 Mac 也好，抄 Windows 也好，只能得其皮毛。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 多进程日志记录</title>
      <link>https://qingbo-net.pages.dev/archives/427/</link>
      <pubDate>Wed, 17 Aug 2011 13:54:53 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/427/</guid>
      <description>&lt;p&gt;刚开始用 Python 做 web 开发的时候我就想一个问题，如果 Python 应用需要自己记录一些比 accesslog 更详细的日志（使用 Python 的 &lt;a href=&#34;http://docs.python.org/library/logging.html&#34;&gt;logging&lt;/a&gt; module），又有多个进程，怎么办最好呢？多个进程往同一个日志文件写入会不会出问题？&lt;/p&gt;
&lt;p&gt;最近有个在 Apache 里用 mod_wsgi 运行的程序，设置了4个 process. 最初没有设置日志的 rotation，看起来一切正常。有一天设定了每天 midnight rotate（换成 TimedRotatingFileHandler）, 第二天就出问题了，前一天的日志完全丢失，当天日志分散在前一天和当天的两个文件里，并且两个文件都在增长。比如今天是2011-08-14，现在去观察就会发现昨天的 customlog-20110813 和今天的 customlog 两个文件都在被写入。&lt;/p&gt;
&lt;p&gt;看了一下 TimedRotatingFileHandler 的 doRollover 方法：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    t = self.rolloverAt - self.interval
    if self.utc:
        timeTuple = time.gmtime(t)
    else:
        timeTuple = time.localtime(t)
    dfn = self.baseFilename + &amp;quot;.&amp;quot; + time.strftime(self.suffix, timeTuple)
    if os.path.exists(dfn):
        os.remove(dfn)
    os.rename(self.baseFilename, dfn)
    ...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这就了然了。每个进程在过了 rotate 时间点之后写第一条日志的时候，都会执行这个 doRollover，先看有没有 customlog-20110813 存在，存在的话删掉，把 customlog 改名为 customlog-20110813（注意这一步，文件名只是文件的一个属性，如果有进程已经打开该文件正在写入，并不会受影响，除非文件被删除），然后往新的 customlog 里写入。等四个进程都执行完这个方法的时候，就是一团糟了，不仅昨天的日志完全被删除，今天的日志也会有一小部分被删掉了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用第三方网站作为用户认证系统</title>
      <link>https://qingbo-net.pages.dev/archives/426/</link>
      <pubDate>Sun, 14 Aug 2011 04:11:54 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/426/</guid>
      <description>&lt;p&gt;很早的时候就有人发明了 OpenID，希望解决用户在每一个网站都重复注册流程的问题，但是由于种种原因，这个事情好久没什么起色。我&lt;a href=&#34;http://qingbo.net/blog/post479-openid-which-provider-to-trust.html&#34;&gt;曾经也弄过 OpenID&lt;/a&gt;，后来发现由于不怎么常用，我连 URL、密码之类的都记不住，还不如在每个网站上都注册一下。从网站的角度看，他们也不愿意把网站的入口交给第三方——这个 OpenID provider 的网站挂了怎么办？直到出现 Google/Yahoo! 这样级别的大佬作为 OpenID provider 还比较靠谱。第一，它们足够稳定；第二，它们本身就是许多广为使用的服务的提供商，这个也让人可以信赖第一点是成立的，它们从自身利益出发就有足够的理由去保障。到了这个阶段，就不是 OpenID 的成功了，而是 Google/Yahoo! 的成功，或者说第三方登录的成功，选择什么协议已经不重要了。&lt;/p&gt;
&lt;p&gt;现在国外许多网站都使用 Facebook Connect，大部分都是为了让自己的用户把 Facebook 账户关联起来，好从 Facebook 拿到用户的数据，或者让用户把本站的信息向 Facebook 发送，利用 Facebook 的巨大社交网络作传播。所以大部分的 Facebook Graph 教程，都在讲怎么往自己网站加个 Facebook Connect 的按钮，如何重定向，如何拿到用户的隐私数据等等。&lt;/p&gt;
&lt;p&gt;不过我最近在想做一个新的网站的时候，就想直接依赖第三方的用户认证系统，而不自己实现了。向第三方网站 pull/push 数据只是一个附带产物。以下只是我很粗浅的想法，还没有实现，等将来有了实际经验的话也许再回来更新一下这篇文章吧。&lt;/p&gt;
&lt;h2 id=&#34;基于-cookie-的用户名密码认证&#34;&gt;基于 cookie 的用户名密码认证&lt;/h2&gt;
&lt;p&gt;每个做过网站的都记得一般是怎么用用户名密码做用户登录的。数据库里有一个表来记录用户名和 hash 过的密码，登录时，用同样的算法 hash 提交过来的密码，看跟数据库里的记录是否一致。如果登录成功，创建一个或几个 cookie，里面记录该用户已经登录成功，并且有算法保证这个 cookie 的信息（用户名、过期时间）不是伪造的（许多使用 &lt;a class=&#34;new-window&#34; href=&#34;http://en.wikipedia.org/wiki/HMAC&#34; target=&#34;_blank&#34;&gt;HMAC&lt;/a&gt; 算法）。这样用户下次请求的时候，就不再需要重新提交用户名密码了，直接检查请求中附带的 cookie 即可知道他是谁。&lt;/p&gt;
&lt;p&gt;一直遵从这么一个思路，我都快忘了它是干嘛的了。如果一个网站有 UGC，那么很多情况下我们都需要知道访问者的身份。我们所需要的就是身份认证，让用户可以安全地保存他的内容或秘密。&lt;/p&gt;
&lt;h2 id=&#34;facebook-connect-作为身份认证服务&#34;&gt;Facebook Connect 作为身份认证服务&lt;/h2&gt;
&lt;p&gt;使用第三方用户认证的概念就是，以前我们直接问用户要口令，来确定来者是谁，现在转而去一个可信的人（Facebook/Google）那儿去查。一旦查清楚身份，我们就给用户一个临时的通行证（cookie），在一段时间内就不用再要密码或者再去第三方哪里查了。看起来很显然，不过我花了点时间才想清楚这一点。所以现在我们最需要的就是从 Facebook/Google 那儿要一个 ID，就好像一个人的名字、身份证号码一样。有一些选择：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Facebook ID 是一个号码，在 Facebook 的用户系统中是绝对不会重复的&lt;/li&gt;
&lt;li&gt;申请授权的时候，同时申请得到用户 email 的权限。email 也是一个非常合适的 ID，甚至比 Facebook ID 还好，因为它在 Facebook 之外也是唯一的。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;stack-overflow-的身份认证&#34;&gt;Stack Overflow 的身份认证&lt;/h2&gt;
&lt;p&gt;上面也提到了，一旦确认身份之后，还是用 cookie 作为临时通行证。我们可以把 Facebook ID 或者 email 放在 cookie 里，同时放一个 hash 来保证它的真实性。Stack Overflow 就是一个很好的例子，我觉得它是使用 email 作为 ID 的，可以这么来验证这一点：&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpenVPN 客户端在 Windows 里的配置</title>
      <link>https://qingbo-net.pages.dev/archives/425/</link>
      <pubDate>Sun, 31 Jul 2011 04:49:10 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/425/</guid>
      <description>&lt;p&gt;自己搭了一个 OpenVPN Server，以前一直是在 Mac 里使用客户端，加上 chnroutes，用得很舒服。最近想在 Windows 里用一下，结果显示能连上，但是流量就是不从 VPN 走，很郁闷。&lt;/p&gt;
&lt;p&gt;试了一下，连服务器 IP 10.0.0.1 都 ping 不通。运行 ipconfig 显示 OpenVPN 创建的 interface 信息为：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    Connection-specific DNS Suffix  . :
    IP Address. . . . . . . . . . . . : 10.0.0.6
    Subnet Mask . . . . . . . . . . . : 10.0.0.5
    Default Gateway . . . . . . . . . :
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;显然错得很厉害。看客户端日志，看服务器日志，都没找出什么原因来。最终发现是客户端配置文件里有个：&lt;/p&gt;</description>
    </item>
    <item>
      <title>欢乐谷玩了一圈</title>
      <link>https://qingbo-net.pages.dev/archives/424/</link>
      <pubDate>Wed, 06 Jul 2011 14:59:18 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/424/</guid>
      <description>&lt;p&gt;在北京去了几次北京游乐园，却没有去过欢乐谷。趁现在没有工作，今天去玩了一圈。早就知道暑假已经来了，估计即使是工作日小孩们也会很多，有点心理准备，于是找了一个预报有雷阵雨的天去。谁知道是大家现在都不信天气预报了，还是百折不挠长了这么大连雷劈都不怕了，去到欢乐谷门口的时候还没开门就发现长队已经排起来了。&lt;/p&gt;
&lt;p&gt;事先查了一下，攻略说一进去就赶紧到奥德塞之旅那儿，我就按攻略去了。八点半开门，但是大部分项目九点才开始运行，所以等了二十多分钟，坐上了第一条船。视频：&lt;/p&gt;
&lt;embed src=&#39;http://player.youku.com/player.php/sid/XMjgyNjU3OTQ0/v.swf&#39; quality=&#39;high&#39; width=&#39;480&#39; height=&#39;400&#39; align=&#39;middle&#39; allowScriptAccess=&#39;sameDomain&#39; type=&#39;application/x-shockwave-flash&#39;&gt;
&lt;/embed&gt;
&lt;p&gt;下了船全湿了，不过是夏天，后来一个小时就干了。丛林飞车是个很初级的过山车，保护措施都不需要太完善，坐我旁边的是一个老大爷，一直张着双臂很惬意的样子。天地双雄是两个柱子，一个急升，一个急降。我去的时候只开了急降的，排队大概20分钟，急降的那一瞬间感觉挺恐怖的，不光是下面没有了支撑（过山车或者奥德塞之类的），它还给你一个向下的力。还好只是很短的时间。&lt;/p&gt;
&lt;p&gt;玩水晶神翼的时候排了半小时，保护装置就位之后还没出发就成了贴地飞行的姿势，完全是让人体验做鸟人的感觉，第一次玩还是很恐怖的，很刺激。下午又去玩了一次基本就不用排队了，放松心情，充分信任设备的安全性，就可以享受飞翔的感觉了。雪域金翅中午12点才开始运行，排队20分钟左右，这个悬挂式过山车速度比较快，有好多翻转的地方，身体经常感受到很大的力量，这一点比水晶神翼厉害，就是第二次再去坐我觉得也不会觉得轻松。&lt;/p&gt;
&lt;p&gt;后来看到了极速飞车，很酷的弹射式过山车，但是人山人海，插队的，吵架的，简直就是传说中的人道主义灾难。感叹祖国大地真是狼多肉少，当初在 LA 去 Universal Studios, 还是周末，几乎所有的项目都不需要排队，最多也就几分钟，喜欢的项目可以有机会反复玩。过山车在一段直道突然加速，然后冲上最高点，我觉得这一段如果设计在一个黑暗的洞里或者水下会更刺激（像 Universal Studios 里的 Mummies 一样）。好玩是好玩，可我不想在那儿挤3个小时。问了一下工作人员，据说常年这么多人，这可如何是好……拍了一段别人玩的视频：&lt;/p&gt;
&lt;embed src=&#34;http://player.youku.com/player.php/sid/XMjgyNjYzMzcy/v.swf&#34; allowFullScreen=&#34;true&#34; quality=&#34;high&#34; width=&#34;480&#34; height=&#34;400&#34; align=&#34;middle&#34; allowScriptAccess=&#34;always&#34; type=&#34;application/x-shockwave-flash&#34;&gt;
&lt;/embed&gt;
&lt;p&gt;太阳神车主要是感受在谷底时的速度和嗖嗖的风，我有点理解在电影 &lt;a href=&#34;http://en.wikipedia.org/wiki/The_World%27s_Fastest_Indian&#34;&gt;The World’s Fastest Indian&lt;/a&gt; 里小孩问老头速度到了 200 MPH 的时候张开嘴是什么感觉，老头好像是说张开嘴就把你吹爆了……当然太阳神车远远没有达到这个速度。站在旁边看有时候也会遇见趣事。有个女生，设备一启动就开始不由自主尖叫，两脚紧紧缠在一起，把下面的人笑弯腰了都。&lt;/p&gt;
&lt;p&gt;最后做了个非常错误的决定，坐了一个欢乐风火轮，转得我开始恶心，于是回家来了。工作人员一般会在介绍的时候说如果遇到身体不适可以招手，游乐园里这种项目千万不能玩。还有一个特征是在旁边看着摇啊摇，玩的人里面却没有尖叫声。这种转啊转却不刺激的项目，容易让人头晕恶心。&lt;/p&gt;
&lt;p&gt;还发现欢乐谷里的所谓“高速摄影”，有很多是人肉拿着单反加长焦镜头在拍呢，祖国真是劳动力物美价廉。不过我猜他们用的是 Eye-Fi 卡吧，也算高科技了（也许是人肉速递的）。&lt;/p&gt;
&lt;p&gt;得到的经验就是，暑假工作日去的话，就奥德赛（我后来再去的时候都找不到排到哪儿了）和极速飞车很难排上，其它的到了下午最多排个十几二十分钟，当然也许跟天气预报有点关系。&lt;/p&gt;</description>
    </item>
    <item>
      <title>瑕疵的粉饰</title>
      <link>https://qingbo-net.pages.dev/archives/423/</link>
      <pubDate>Sun, 03 Jul 2011 07:25:31 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/423/</guid>
      <description>&lt;p&gt;最近在看林达关于美国法治与民主进程、历史的一系列书，里面讲述的许多历史事件让人收获颇丰。但是让我经常感到不舒服的是，在描写许多事件或者人物遇到一些瑕疵的时候（但是作者可能认为是完美的），总是尝试从一个顺手的角度，比如法律或者人性，去为他们的不完美做一个合理的解释，以显示他们仍旧是最好的。&lt;/p&gt;
&lt;p&gt;完全没有必要，读者自有能力去分辨是非，有些东西就是错的，不需要你证明这个错误是正确的合理的。这种行为让我反感的原因可能是我已经受够了从小到大被灌输的一些完美的概念。&lt;/p&gt;
&lt;p&gt;今天读到最后一本，第一篇里就又遇到了这种“老套的情节”。南北战争，联邦政府做手脚“合法”地将属于南军首领的阿灵顿收入囊中。但是此处林达加了一段——&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;尽管在这个过程中，我们还是看到美国的法律文化在起着一定作用，换个地方，只需一纸通令，作敌产没收即可，哪里还需要费这些周折。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我实在有点恶心，忍不住中断阅读来 blog 里记录一下。这无疑是一件肮脏的交易，是耻辱，有些人就是能从屎里发现金子。如同现今国内政府部门招标，自己注册一个公司去中标，同时还要请一个“第三方”公司代理招标以起到“监督”作用，你批判之余，难道还要赞美一下这符合流程吗？&lt;/p&gt;
&lt;p&gt;是不是我思维能力太差，看到很多历史的时候，我只能惊叹，却没有足够的脑力去想明白它的对错。&lt;/p&gt;</description>
    </item>
    <item>
      <title>找一份网站开发工作</title>
      <link>https://qingbo-net.pages.dev/archives/422/</link>
      <pubDate>Wed, 08 Jun 2011 14:56:21 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/422/</guid>
      <description>&lt;p&gt;我最近要换工作，也在 blog 里发一篇，希望能增加遇见合适互联网公司的几率。简历在&lt;a href=&#34;http://zhouqingbo.com/cv.php&#34;&gt;这里&lt;/a&gt;，也可下载 pdf 版本(&lt;a href=&#34;http://zhouqingbo.com/zhouqingbo-resume-zh.pdf&#34;&gt;中文&lt;/a&gt; | &lt;a href=&#34;http://zhouqingbo.com/zhouqingbo-resume-en.pdf&#34;&gt;英文&lt;/a&gt;)。&lt;/p&gt;
&lt;p&gt;我喜欢技术，不糟蹋技术。喜欢读英文书，包括技术、非技术。最近在读 &lt;a href=&#34;http://book.douban.com/subject/1417047/&#34;&gt;The Pragmatic Programmer&lt;/a&gt;，深深认同其中的观点。喜欢通过实践学习技术，比如2年前开始对 Python 感兴趣，于是基于 web.py，把这个个人网站（原来是 WordPress）用 Python 改写。&lt;/p&gt;
&lt;p&gt;对新公司的期望，除了经济上的回报，还希望能进入一个喜欢、尊重技术的团队，让我可以学到更多东西，同时把能力发挥到极致。我有一定经验但不是为了卖经验的，希望双方能达到共赢。&lt;/p&gt;
&lt;p&gt;憋不出字来了，就这样吧。朋友们看到合适的机会帮我引荐一下，谢谢！我现在住北京，但如果其它城市有合适的机会，我很乐意离开这儿。&lt;/p&gt;</description>
    </item>
    <item>
      <title>实践是砖头，理论是水泥</title>
      <link>https://qingbo-net.pages.dev/archives/421/</link>
      <pubDate>Tue, 24 May 2011 13:08:13 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/421/</guid>
      <description>&lt;p&gt;这两样东西缺了一个都垒不起墙来。最近觉得实践经验不少了，但是理论缺了点，所以感觉像一堵没用水泥垒起来的墙，摇摇晃晃就快倒了。&lt;/p&gt;
&lt;p&gt;于是决定补补基础，从 computer architecture 到 operating system 到 compiler，再看一遍。当时因为缺少实践，很多东西也是没搞明白就过去了，重新看一次效果一定更好。&lt;/p&gt;</description>
    </item>
    <item>
      <title>读完了 In the Plex</title>
      <link>https://qingbo-net.pages.dev/archives/420/</link>
      <pubDate>Tue, 24 May 2011 12:35:59 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/420/</guid>
      <description>&lt;p&gt;我买了 &lt;a href=&#34;http://qingbo.net/blog/post545-amazon-kindle-3-pros-cons.html&#34;&gt;Kindle&lt;/a&gt; 上的英文版读的。读一下你就知道这本书为什么不会有中文版在大陆出售了，Google，你知道的。从我个人的角度，我越来越喜欢读英文，喜欢欧美的文化和历史，虽然英文底子还是需要大力加强。Kindle 读英文也很舒服很强大，每天都能学到一些新的单词，比纯背单词好多了。&lt;/p&gt;
&lt;p&gt;作为跟随 Google 成长起来的一代网民，这么多年来在网上一直不停看到 Google 的消息，而今年刚出的这本 &lt;a href=&#34;http://www.amazon.com/gp/product/B003UYUP6M/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=qingbblog-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399349&amp;amp;creativeASIN=B003UYUP6M&#34;&gt;In the Plex&lt;/a&gt; 则是系统地把众多的关于 Google 的故事串联起来，成为一本公司传记。作者 &lt;a href=&#34;http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fentity%2FSteven-Levy%2FB000AR9LUS%3Fie%3DUTF8%26ref_%3Dntt_athr_dp_pel_1%23&amp;amp;tag=qingbblog-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=390957&#34;&gt;Steven Levy&lt;/a&gt; 本来就是一位对科技非常关注的记者，以前就写过一些非常出名的书比如 &lt;a href=&#34;http://www.amazon.com/gp/product/B003PDMKIY/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=qingbblog-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399349&amp;amp;creativeASIN=B003PDMKIY&#34;&gt;Hackers&lt;/a&gt;，是一个出色的科技作家。持一贯的认真态度，在这本 In the Plex 上 Steven Levy 也下了不少功夫，对 Google 的两位创始人，前 CEO，以及员工或前员工做了许多深入的采访，他甚至得到许可，参加一些 Google 内部的例会。&lt;/p&gt;
&lt;p&gt;正因为这些访谈的深入，这本书也肯定不只是已为世人熟知的旧闻的简单串联，在里面可以找到一些鲜为人知的故事。“改变世界”在常人嘴里也就是说笑而已，但是 Google 的创始人却一直认为这是他们可实现的任务，是他们创立 Google 的目的。在公司成长的过程中，他们寻找具有超人天赋的工程师帮他们实现这个愿景，但是同时又有一些相对传统、保守的人进来，帮他们做好与社会“非理想状态”的衔接——他们也需要赚钱，需要律师的保护，需要职业的管理团队。创始人的某些想法说出来很容易把旁边的人吓晕，以为是在开玩笑，而他们却是认真的，又经常为常人不能理解他们的小目标而痛苦、暴怒——比如把全世界的所有书籍扫描、识别并且让它们可以被搜索，这对人类的知识是多么大的一个贡献，可是这些混蛋为什么要百般阻挠？读这本书可以清楚地感受到在 Google 成长为今天规模的过程中，理想主义和务实主义两股力量的抗衡。&lt;/p&gt;
&lt;p&gt;而在此书的后记里，当时已经提到 Eric Schmidt 要把 CEO 的位置还给创始人，”Day-to-day adult supervision no longer needed!” 不知道这个 Montessori school 培养出来的狂人会把 Google 带到什么地方。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Book Stand</title>
      <link>https://qingbo-net.pages.dev/archives/419/</link>
      <pubDate>Thu, 05 May 2011 14:50:57 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/419/</guid>
      <description>&lt;p&gt;[&lt;a target=&#34;_blank&#34; href=&#34;http://qingbo.net/blog/post560-book-stand.html&#34;&gt;本文有特效无法在 RSS Reader 里展示，请查看原文&lt;/a&gt;]&lt;/p&gt;
&lt;p&gt;一个月前写了&lt;a href=&#34;http://qingbo.net/blog/post557-e-ink-is-future.html&#34;&gt;一文&lt;/a&gt;，说看厚书太累，那时就开始谋划找个工具来帮助我拿书——平放在桌子上读书得低着头，也还是不舒服。&lt;/p&gt;
&lt;p&gt;最先注意到这个 &lt;a class=&#34;new-window&#34; href=&#34;http://www.amazon.com/gp/product/B0006J323C/ref=as_li_ss_tl?ie=UTF8&amp;tag=qingbblog-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399349&amp;creativeASIN=B0006J323C&#34; target=&#34;_blank&#34;&gt;Bookgem Book Holder&lt;/a&gt;，不过后来看到有评论说这玩意太小，对于厚重的书来说不太适用。好处是可以架起 iPad/Kindle 之类的。&lt;/p&gt;
&lt;p&gt;后来顺着 Amazon 的推荐找到了一款透明的 &lt;a class=&#34;new-window&#34; href=&#34;http://www.amazon.com/gp/product/B001VSA88Y/ref=as_li_ss_tl?ie=UTF8&amp;tag=qingbblog-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399349&amp;creativeASIN=B001VSA88Y&#34; target=&#34;_blank&#34;&gt;book stand&lt;/a&gt;，看起来很不错，于是买了。今天终于拿到，跟预想的比较相符，感觉挺结实的（看了一下，Made in Korea）。看图：&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/B2P9QQrr/medium.jpg&#34; alt=&#34;IMG_5559&#34; width=&#34;500&#34; height=&#34;333&#34; border=&#34;0&#34; /&gt; 
&lt;p&gt;最下面有个&lt;span class=&#34;pointer&#34; id=&#34;point-to-1-5&#34;&gt;轴&lt;/span&gt;，可以把底座扳开，用于支撑书不滑下来。两边的两个&lt;span class=&#34;pointer&#34; id=&#34;point-to-2&#34;&gt;小手臂可以转动&lt;/span&gt;，并且有弹性，用于夹住翻开的书页，不用的时候底座上有个凹槽可以放进去。手臂的末端是一个可以转动的&lt;span class=&#34;pointer&#34; id=&#34;point-to-3-6&#34;&gt;橡胶头&lt;/span&gt;，所以翻页还是比较容易的。背面是支架，&lt;span class=&#34;pointer&#34; id=&#34;point-to-4&#34;&gt;可以随意调整各种角度&lt;/span&gt;，支架底部两端各缠了两个细橡胶圈，于是在光滑的桌面上也可以站得比较稳。&lt;/p&gt;
&lt;p&gt;这东西的卖家是 &lt;a class=&#34;new-window&#34; href=&#34;http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2Fb%3Fie%3DUTF8%26marketplaceID%3DATVPDKIKX0DER%26redirect%3Dtrue%26me%3DA3DEUPO81HYX9E%23&amp;tag=qingbblog-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=390957&#34; target=&#34;_blank&#34;&gt;BestBookStand&lt;/a&gt;，这家店如其名字所表达，就是卖这种东西的，不过只有上面说的一款是用透明的硬塑料做的，其它都是各种木质材料如 &lt;a class=&#34;new-window&#34; href=&#34;http://www.amazon.com/gp/product/B001J9SFXK/ref=as_li_ss_tl?ie=UTF8&amp;tag=qingbblog-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399349&amp;creativeASIN=B001J9SFXK&#34; target=&#34;_blank&#34;&gt;Jasmine Book Stand&lt;/a&gt;，都比塑料的贵。木质的也有结构更复杂的比如可以放两本书的。不好的地方是没有免费配送。&lt;/p&gt;
&lt;p&gt;今天拿到手，旁边的同事就说他们小时候就用它保护视力和身体，我咋小时候就没见过呢。不过上淘宝看了一下，质量、设计比这个肯定都差太远了。况且我就是喜欢这种设计精良的小玩意儿，虽然以后看书的时间可能不多（一大部分也可以在 Kindle 上看）。&lt;/p&gt;
&lt;p&gt;我觉得 Book stand 对于看书学编程的人会比较有用，可以一边翻着书一边打字。还有厨房里的新手，像我一样必须翻着菜谱才能做饭的 🙂 最理想的当然是像吊臂台灯一样的架子，可以让人躺在床上脸朝上看书的，Amazon 上确实还真有这样的（不愧是 a to z），不过价格超高，有人也抱怨时间长了以后会稍微变形，还有书倒过来了，怎么支撑和翻页是个问题。&lt;/p&gt;
&lt;p&gt;最后来一个实际效果图，翻开一本厚度大约3厘米的书 (我想应该架起 iPad 也挺舒服，不过没试)：&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://pic.yupoo.com/qingbo/B2P9xhDm/medium.jpg&#34; alt=&#34;book stand&#34; width=&#34;500&#34; height=&#34;333&#34; border=&#34;0&#34; /&gt;</description>
    </item>
    <item>
      <title>Amazon 开始在 Kindle 上玩广告了</title>
      <link>https://qingbo-net.pages.dev/archives/418/</link>
      <pubDate>Tue, 12 Apr 2011 17:32:48 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/418/</guid>
      <description>&lt;p&gt;Amazon 一直在首页的黄金位置给 Kindle 做广告，这也是 Kindle 成为 #1 best seller 的原因之一吧。今天看到广告换了个样子，发现又推出了一款 “&lt;a href=&#34;http://www.amazon.com/gp/product/B004HFS6Z0/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=qingbblog-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B004HFS6Z0&#34;&gt;Kindle with Special Offers &amp;amp; Sponsored Screensavers&lt;/a&gt;“，就是 &lt;a href=&#34;http://qingbo.net/blog/post545-amazon-kindle-3-pros-cons.html&#34;&gt;Kindle 3&lt;/a&gt; 的带广告版，比正常 Wifi 版本便宜 25 美金。&lt;/p&gt;
&lt;p&gt;Special Offers 有这样的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$10 for $20 Amazon.com Gift Card&lt;/li&gt;
&lt;li&gt;$6 for 6 Audible Books (normally $68)&lt;/li&gt;
&lt;li&gt;$1 for an album in the Amazon MP3 Store (choose from over 1 million albums)&lt;/li&gt;
&lt;li&gt;$10 for $30 of products in the Amazon Denim Shop or Amazon Swim Shop&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;关于 Sponsored Screensaver, 记得有阵子比较火的那种并排放两张美女图片让你挑哪个好看的网站吧（据说 Facebook 的前身就是这样）？Amazon 即将上线一个 &lt;a href=&#34;http://www.admash.com/&#34;&gt;AdMash&lt;/a&gt; 让读者推选最受欢迎的屏保（广告）。读者可以自己设置偏好，比如喜欢风景或是建筑，AdMash 在推送广告的时候会考虑进去。&lt;/p&gt;</description>
    </item>
    <item>
      <title>应试教育无孔不入</title>
      <link>https://qingbo-net.pages.dev/archives/417/</link>
      <pubDate>Fri, 08 Apr 2011 09:13:28 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/417/</guid>
      <description>&lt;p&gt;去年末报了驾校，后悔没有在学校的时候拿到驾照。现在经常劝那些在学校的人赶紧找时间学开车，但是遇到两种想法。一种是觉得反正现在不开车，等到需要的时候再学。但是事实上等需要的时候怕是已经来不及了，而且时间会越来越紧张，生活越来越累。另一种想法是不急，学校嘛，有的是时间！学校里确实有的是时间，但是得考虑实习啊，论文啊之类的，有一天你突然发现大学还没来得及享受已经结束了。在学校学车的一个好处是可以避开周末——在这个人多的国度里，这一点尤为珍贵。&lt;/p&gt;
&lt;p&gt;一开始学交规，讲了整整两天，重点就是考试。老师对考题了如指掌，知道那些题会考，哪些题不考，哪个地方要考几道题，罚钱的题都是什么规律。不过这考试终究拼的是智商，大部分题你只要有一颗正常的脑袋，就能用排除法看出正常的那个答案。看看路上开车的，有几个遵守规则的？并线开转向灯，你傻啊，你开了谁让你并啊？不知道为什么中国不承认外国的驾照，大概是怕老外在路上吓呆。反正好像在任何其它国家使用中国驾照都是无效的，租车公司会租给你，但是你最好拜拜上帝拜拜佛，保佑你不要出任何差错或事故。&lt;/p&gt;
&lt;p&gt;今天又去考了“桩考”和内路考试。内路包括侧方位停车、坡起真是脑残到极致，在那儿竖几个杆，到处是摄像头，地上装上磁铁。于是训练的时候就是一套死规矩——在哪儿看哪个杆，到什么地方打多少方向盘，而且用什么车学就用一样的车型考试，生怕你过不了。到了实际驾驶的时候，没杆了，就什么都不会了，相当于一切都得重新学起，这个考试有什么用？&lt;/p&gt;
&lt;p&gt;桩考完了考内路的时候才发现，比平时训练还松，你都不用看杆了，旁边的“安全员”(之前以为是警察，原来是驾校的教练)会帮你看，你只管听着让你怎么打方向盘，控制离合，安全员会及时帮你踩刹车！要过起伏路，那一段正在施工，我听安全员的指挥，绕到路段开始处，左转出来，然后再绕到结束处——目的是让起伏路两端的摄像头感应到……在安全员指挥下出了S弯道，稀里糊涂中听到“考试合格”。&lt;/p&gt;
&lt;p&gt;接下来是外路训练了，应该很快就可以拿到驾照。驾照是主要目的，不指望在这种考试制度里能学到东西。听说有驾校交300块就可以免去科目三，多贴心啊。&lt;/p&gt;
&lt;p&gt;比较逗的事——在考场外面看里面的人考桩，有个人一上车就把手伸出来举高，没人理，过了一会放下，然后又这么做了两次，还是没人理。外面的人说话他又听不见，最后终于有个备考的人过去告诉他要开出去再举手了。我是举手的时候方向盘还没有回正，听到开始就倒车，一下感觉到方向不对，多亏调整得快，要不然还得被这脑残的考试整一次！&lt;/p&gt;</description>
    </item>
    <item>
      <title>电子纸是趋势，纸质书快让路</title>
      <link>https://qingbo-net.pages.dev/archives/416/</link>
      <pubDate>Wed, 06 Apr 2011 15:10:52 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/416/</guid>
      <description>&lt;p&gt;今天看了一会&lt;a href=&#34;http://www.amazon.cn/mn/detailApp/ref=as_li_ss_tl?_encoding=UTF8&amp;amp;tag=qb-23&amp;amp;linkCode=as2&amp;amp;asin=B00116KV7E&amp;amp;camp=536&amp;amp;creative=3132&amp;amp;creativeASIN=B00116KV7E&#34;&gt;影印版的 Microeconomics&lt;/a&gt;，最让我头疼的是它太重了。卓越网上标出的重量是 1.1 kg，超过 4 个 &lt;a href=&#34;http://qingbo.net/blog/post545-amazon-kindle-3-pros-cons.html&#34;&gt;Kindle 3&lt;/a&gt; 的重量，基本上只能放在桌上读了，除非想练臂力。这本书只有不到 700 页，而且是用极薄的纸张印刷。另外我遇到生词的时候，下意识地就想移动光标去查，还有需要在手边准备纸和笔，记录一些看到的重要的东西（Kindle 可以方便地 take note, 并且很容易回头看）。&lt;/p&gt;
&lt;p&gt;这本书在 Amazon.com 有 Kindle 的版本，但是只比纸质的便宜几美金，要 130 多，还是算了吧。这本书是美国很多大学的教材，在美国印刷的版本肯定是很厚的纸，彩色印刷，所以和大部分教材一样很贵（我觉得这个在某种意义上可以体现美国人对教育的用心吧，印刷质量好的书当然会让人更有兴趣）。除了版权费用外，应该有不小的部分是印刷成本。但是这个 Kindle 版的定价，显然是让想买电子版的人靠边站。&lt;/p&gt;
&lt;p&gt;现在纸质书的电子化还有一些困难，比如在 “&lt;a href=&#34;http://qingbo.net/blog/post545-amazon-kindle-3-pros-cons.html&#34;&gt;亚马逊Kindle 3优点与缺点&lt;/a&gt;” 文中提到的脚注目前还没有很好的解决方案。图文混排的书籍要做电子化就更困难了，因为不同的设备有不同的尺寸，很容易破坏原来的排版。再比如上面提到的微观经济学的书，里面有大量的曲线图和表格，并且大量使用页边批注，不知道 Kindle 版本里面是如何处理的，反正看到书评里说 Kindle 版本排版比较差。&lt;/p&gt;
&lt;p&gt;不过造成这些原因的困难都是因为这些书原本都是为固定大小的纸张做的排版。如果是专门为电子阅读器做排版，恐怕这些问题就都不存在了。有了 Kindle 以后，大家都觉得它就应该和纸质书籍的体验一模一样，于是 Amazon 不得不在最近的更新里增加了 real page number 的功能。有人就感到很奇怪，大家为什么不要求给网页加上 real page number 呢？呵呵。&lt;/p&gt;
&lt;p&gt;电子纸还会进步，Kindle 还会进步，其它的电子阅读器也会进步。当彩色电子纸技术成熟，当 iPad 一样强大的交互性和多媒体融入电子纸，人们接受知识的方式就已经革新。&lt;/p&gt;
&lt;p&gt;在眼睛的感觉上，Kindle 已经证明电子纸可以做得跟真实纸张没有什么两样。其它的一些纸质书籍不可能做到而 Kindle 已经做到或将来电子纸可以做到的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;方便地查辞典，Kindle 移动光标即可，未来应用触摸技术，也可以像 iPad 一样手指按下即可。&lt;/li&gt;
&lt;li&gt;footnote 不再占用页面空间，想看的时候即可浮出。有些纸质书籍的脚注占了大部分空间。&lt;/li&gt;
&lt;li&gt;随时随地给作者纠错。现在 Kindle 已经可以免费获得修正的版本，纸质书籍的话，一般不可能会免费给读者一本修正版。&lt;/li&gt;
&lt;li&gt;有互动性的图表&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其实许多现有电脑上的技术将来都有可能应用到电子阅读器上，与电子纸配合。计算机已从昔日的巨无霸变成现在的 iPad 甚至智能手机，应该还会继续变小，直到让 Kindle 这样的重量也支持能强大的计算能力。&lt;/p&gt;</description>
    </item>
    <item>
      <title>HTTP status code “掩耳盗铃”</title>
      <link>https://qingbo-net.pages.dev/archives/415/</link>
      <pubDate>Tue, 05 Apr 2011 07:07:34 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/415/</guid>
      <description>&lt;p&gt;很久之前 Google Webmaster blog 里就发了一篇文章 “&lt;a href=&#34;http://googlewebmastercentral.blogspot.com/2008/08/farewell-to-soft-404s.html&#34;&gt;Farewell to soft 404s&lt;/a&gt;“. 其中 soft 404 指的是用户访问一个页面，显示网页没找到，但是实际上返回 HTTP status code 是 200. 这种情况下，搜索引擎的 bot 去抓这个链接的时候，发现状态码是 200 就会认为这个页面是存在的，会放进搜索引擎的索引中去（当然了，内容就是“对不起，您找的网页已经不存在”之类）。&lt;/p&gt;
&lt;p&gt;前些天在 Google 上看到一个结果，就更好玩了，用成语“掩耳盗铃”来形容是再恰当不过了：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/5591244164/&#34; title=&#34;点评网的 status code by qingbo, on Flickr&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;点评网的 status code&#34; src=&#34;http://farm6.static.flickr.com/5063/5591244164_d7148388af.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;注意下面那条结果，这种情况还是比较少见的，把 500 都写在网页上显示出来了，request header 里竟然还是 200 （因此 Google bot 才会认为这是个正常响应的网页）。&lt;/p&gt;
&lt;p&gt;Just for fun.&lt;/p&gt;</description>
    </item>
    <item>
      <title>站点加了一个栏目 – Wishlist</title>
      <link>https://qingbo-net.pages.dev/archives/414/</link>
      <pubDate>Sat, 26 Mar 2011 00:46:34 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/414/</guid>
      <description>&lt;p&gt;前几天看到一个人的个人网站，内容很丰富，集合了从大学到现在的项目、感想及经验，突然很羡慕。我从大学在学校服务器上做个人站点，后来用 WordPress，到现在自己写这么个简单的系统，变化很多，但是积累下的内容有限，许多大学时候的东西已经丢掉。另外就是偶尔有点想法就建立一个新的站点，比如两年前弄了一个专门放履历的网站，还有一个英文的 blog，大都没有时间去维护，却导致内容分散。&lt;/p&gt;
&lt;p&gt;今天早上被冻醒，心血来潮就做了一个 Wishlist 页面，把自己想要的列在上面。一个愿望实现，就会划掉，并在 blog 里有所记录，加上链接。&lt;/p&gt;
&lt;p&gt;我最愿意记录的，还是旅行。关于这个站点下一步的计划，我会专门为旅行做一个栏目，用不同于现有 blog 的样子输出。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Apple 的劣质产品 —— mini-displayport to DVI Adapter</title>
      <link>https://qingbo-net.pages.dev/archives/413/</link>
      <pubDate>Sat, 12 Mar 2011 03:26:50 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/413/</guid>
      <description>&lt;p&gt;上次发文“&lt;a href=&#34;http://qingbo.net/blog/post548.html&#34;&gt;劣质的飞利浦音箱&lt;/a&gt;”，有朋友说其它的产品还是靠得住的，我心想，苹果从来就不把商标借给垃圾产品用。不过最近想起苹果的 mini-displayport to DVI adapter 的劣质也让我非常头疼！&lt;/p&gt;
&lt;p&gt;有一天我突然发现 MacBook Pro 连接的显示器没有信号了，但是电脑显然探测到有另一个显示器，并且照常把菜单栏显示在另一台显示器上了。排查之后发现问题就在这个 adapter，这时才发现 mini-displayport 一端的四角都已经开裂。也许你会说我太暴力了，我不解释，请继续听我说。&lt;/p&gt;
&lt;p&gt;问旁边的同事，他说他的刚刚也一模一样地坏了，好像成功地拿去换了一个新的。IT同事帮我去换没有成功，不过正好有和我一起买的一个，同事暂时不用，我就拿来用了。虽然还可以用，但是不知道能坚持多久。这是我这辈子见过得所有的 mini-displayport to DVI adapter, 一共3个，每个售价238人民币。我不得不说我很喜欢 MacBook Pro，结实耐用，但是这个 mini-displayport，我见过的所有3个都是这个样子的：&lt;/p&gt;
&lt;p&gt;四角：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/5518377183/&#34; title=&#34;mini-displayport DVI adapter by qingbo, on Flickr&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;mini-displayport DVI adapter&#34; src=&#34;http://farm6.static.flickr.com/5291/5518377183_a767c41b08.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;一角：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/5518378387/&#34; title=&#34;mini-displayport DVI adapter by qingbo, on Flickr&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;mini-displayport DVI adapter&#34; src=&#34;http://farm6.static.flickr.com/5012/5518378387_299bfd40d1.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>中美旅游观光价格比较</title>
      <link>https://qingbo-net.pages.dev/archives/412/</link>
      <pubDate>Wed, 02 Mar 2011 13:52:42 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/412/</guid>
      <description>&lt;p&gt;什么油价、过路费之类的都是浮云，这儿就懒得说了。&lt;/p&gt;
&lt;p&gt;下面两个图，第一个是我国的“金沙江第一湾”，从这个角度看一眼实景要30元人民币。第二个是美国的马蹄湾 (Horseshoe Bend Overlook)，随便看，不要钱。&lt;/p&gt;
&lt;img decoding=&#34;async&#34; src=&#34;http://static9.photo.sina.com.cn/middle/488ddc6bg9bcf7a456cc8&amp;#038;690&amp;#038;690&#34; alt=&#34;金沙江第一湾&#34; style=&#34;height:300px;&#34; /&gt;  
&lt;img decoding=&#34;async&#34; src=&#34;http://img3.fengniao.com/forum/attachpics/399/18/15923410.jpg&#34; alt=&#34;Horseshoe Bend Overlook&#34; style=&#34;height:300px;&#34; /&gt; 
&lt;p&gt;美国的国家公园是要收费的，不过相当便宜。例如大峡谷国家公园 (&lt;a href=&#34;http://images.google.com/images?q=grand+canyon&#34;&gt;Grand Canyon&lt;/a&gt;)，按车收费，一辆小型车收费$25，可以待7天，在里面还可以无限免费乘坐方便的电动巴士。$25对美国人的收入来说算什么？如果步行或骑车，是$12，16岁以下免费。也可以花$80买一张America the Beautiful Pass，一年内通行所有国家公园，老人是$10，残疾人/志愿者（500小时以上）免费。&lt;/p&gt;
&lt;p&gt;在中国，黄山的门票是旺季230元，淡季150元；华山旺季120元，淡季60元；五台山旺季160元，淡季140元；九寨沟旺季门票220元，淡季200元，景区观光车旺季90元，淡季80元。免票的限制也比较严，比如五台山，免票的老年人是70岁以上（美国是62岁），残疾人需要是为革命伤残的。&lt;/p&gt;
&lt;p&gt;上面第一张图来自——&lt;a href=&#34;http://blog.sina.com.cn/s/blog_488ddc6b0100oobe.html&#34;&gt;214国道，那是一条神奇的“天路”&lt;/a&gt;，粗略看了一下，作者很喜欢旅游，满世界跑，羡慕。第二张图来自蜂鸟网友的&lt;a href=&#34;http://bbs.fengniao.com/forum/1706273_104.html&#34;&gt;美国西部自驾行帖子&lt;/a&gt;，照片拍得比较专业，不过他去这个地方的时间可能不是最好的 (更漂亮的可看&lt;a href=&#34;http://www.photography-match.com/views/images/gallery/Horseshoe_Bend_Overlook_Near_Page_Arizona.jpg&#34;&gt;这个&lt;/a&gt;)，强烈建议这个帖子从头到尾看一遍，看看美国的风土人情，更重要的是美丽又保护完好还低价或免费的自然风光。&lt;/p&gt;</description>
    </item>
    <item>
      <title>iPad == 游戏机 &#43; 浏览器</title>
      <link>https://qingbo-net.pages.dev/archives/411/</link>
      <pubDate>Sun, 16 Jan 2011 14:58:11 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/411/</guid>
      <description>&lt;p&gt;这两天苹果开始给 iPad 打广告，至少我在等电梯的时候看见了。看到里面表现它可以用于工作的镜头的时候，我不由地感觉到了痛苦——就是那段双手在 iPad 虚拟键盘上打字的。打过字的人都知道这个姿势有多痛苦。手指要完全悬空，只有打字的时候才可以接触那个字母，这就是它的虚拟键盘。那 iPhone 为什么人们发那么多短信不累呢？因为 iPhone 小，虚拟键盘也小，一只手握，刚好像普通手机一样打字，比较习惯。在 iPad 上，一般就是“一阳指”或者双一阳指了。所以，根本别想用 iPad 来工作。更何况这上面又太多其它的诱惑，让你无法集中注意力到“工作”上。&lt;/p&gt;
&lt;p&gt;根据我的经验，iPad 最适合的就是打一些小游戏，不需要打开电视或电脑，拿起来就能玩，几乎没有学习成本。EA 打折的那天我买了个赛车游戏，为了通关一下玩到凌晨五点，后来又多次清除数据重新玩，实在太上瘾了。&lt;/p&gt;
&lt;p&gt;前阵子有个朋友打电话问我怎么买 iPad，我说我给你玩一个月你就打消念头了。昨天发短信问，她说不想买了，除了打游戏没什么用。这下帮她省了不少钱。不过我觉得游戏，iPad 的浏览器也是不错的，操作方便，看视频也方便，当今国内的视频网站大多也都支持了，很好。&lt;/p&gt;
&lt;p&gt;所以我极力不推荐大家买 iPad，除非你想给它开发应用，或者花3000-4000元为了一个“On iPad with IM+”. 如果看书的话，&lt;a href=&#34;http://qingbo.net/blog/post545-amazon-kindle-3-pros-cons.html&#34;&gt;Kindle 3&lt;/a&gt; 比 iPad 好太多了！有 iPad 的钱，完全可以买一个 Kindle DX，简直爽歪歪。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quora – Python 驱动</title>
      <link>https://qingbo-net.pages.dev/archives/410/</link>
      <pubDate>Sat, 15 Jan 2011 15:08:39 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/410/</guid>
      <description>&lt;p&gt;写这个主要是因为我做自己的这个网站用的就是 Python 技术（基于简洁的 &lt;a href=&#34;http://webpy.org/&#34;&gt;web.py&lt;/a&gt; 框架）。虽然 Python 只是业余爱好，不怎么熟悉（每次写代码都得上网查好多资料，包括语法），但是很喜欢它。这几天发现最近很火的新问答网站 &lt;a href=&#34;http://www.quora.com/&#34;&gt;Quora&lt;/a&gt; 也是用 Python 做的，它自己网站上有一个问题就是——&lt;/p&gt;
&lt;h2 id=&#34;quora-是使用什么语言和框架做的&#34;&gt;Quora 是使用什么语言和框架做的？&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;http://www.quora.com/What-languages-and-frameworks-were-used-to-code-Quora&#34;&gt;What languages and frameworks were used to code Quora?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;创始人 Charlie 的回复：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;后端使用 Python 语言，Pylons 框架，但是框架一半左右被自己的系统替换（LiveNode/webnode2）&lt;/li&gt;
&lt;li&gt;前端 JavaScript 基于 jQuery&lt;/li&gt;
&lt;li&gt;用 &lt;a href=&#34;http://thrift.apache.org/&#34;&gt;Thrift&lt;/a&gt; 做后端服务器之间通信&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.ape-project.org/&#34;&gt;Comet&lt;/a&gt; Server 使用 &lt;a href=&#34;http://www.tornadoweb.org/&#34;&gt;Tornado&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;hosting 主要使用 Amazon &lt;a href=&#34;http://aws.amazon.com/ec2/&#34;&gt;EC2&lt;/a&gt;, &lt;a href=&#34;http://aws.amazon.com/s3/&#34;&gt;S3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;目前数据库使用 MySQL，memcached 做缓存，还有两个用 C++ 写的服务一起作为 data store&lt;/li&gt;
&lt;li&gt;版本控制用 Git&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个组合看起来不错！(其实我就是看着酷，其中有好多技术都从来没有尝试过。) 有人接着问：&lt;/p&gt;
&lt;h2 id=&#34;为什么-quora-选择-python-作为开发语言&#34;&gt;为什么 Quora 选择 Python 作为开发语言&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;http://www.quora.com/Why-did-Quora-choose-Python-for-its-development&#34;&gt;Why did Quora choose Python for its development?&lt;/a&gt;. 下文只是简单整理，不是翻译。&lt;/p&gt;
&lt;p&gt;创始人 Adam 的回复里，提到两个创始人正好都比较熟悉 Python. 另外他说明了排除其它语言的过程：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;PHP 根本不考虑。Facebook 陷进去无法脱身，不代表它是目前最好的选择，由此得到的经验是编程语言的选择非常重要而且改变的代价非常大。Adam 此处给了其它几个链接，其中有指出 PHP 一大堆弱点的，也包括一个问题 “&lt;a href=&#34;http://www.quora.com/Do-Facebook-engineers-enjoy-programming-in-PHP&#34;&gt;Do Facebook engineers enjoy programming in PHP?&lt;/a&gt;“. 我很赞同 Facebook 的工程师说的，familiarity breeds contempt. 没有完美的语言，每一种语言都有长有短，当把它用到极限的时候，短处就变得很显眼并让人烦恼。我个人认为 PHP 也仍然是不差的选择。&lt;/p&gt;</description>
    </item>
    <item>
      <title>劣质的飞利浦音箱</title>
      <link>https://qingbo-net.pages.dev/archives/409/</link>
      <pubDate>Tue, 04 Jan 2011 14:40:36 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/409/</guid>
      <description>&lt;p&gt;元旦前有一天上班路上，我正在考虑把广发的一张信用卡注销呢，接到一个电话正好是广发的，吓我一跳。广发说我刷卡授权码尾号有8，送我一个飞利浦的音箱。我心想，Google 的 AdSense 绝对是浮云了，广发已经用上 MindSense 了。虽然有点恐怖，我还是决定保留广发卡一段时间。&lt;/p&gt;
&lt;p&gt;今天上班收到了这个音箱，跟我想象的一样，小小的。把旁边的同事叫过来炫耀了一把，不过马上就发现拿起来的时候主音箱里有东西哗啦啦响，透过后面的孔一看，喇叭掉了。&lt;/p&gt;
&lt;p&gt;晚上到家拆开，飞利浦的工艺让人惊叹：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/5323920710/&#34; title=&#34;劣质飞利浦音箱 by qingbo, on Flickr&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;劣质飞利浦音箱&#34; src=&#34;http://farm6.static.flickr.com/5245/5323920710_ea9c1e58f3.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;看看喇叭周围掉落的干了的胶。把喇叭翻过来，上面两滴凝固的是什么东西？线路板上还有千丝万缕的丝线。再看线路板另一面：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/5323920714/&#34; title=&#34;劣质飞利浦音箱 by qingbo, on Flickr&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;劣质飞利浦音箱&#34; src=&#34;http://farm6.static.flickr.com/5250/5323920714_8955e43164.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这是在擤鼻涕吗？&lt;/p&gt;
&lt;p&gt;好了，把垃圾掏出来，把喇叭塞进去，螺丝拧好，来个合影：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/5323920716/&#34; title=&#34;劣质飞利浦音箱 by qingbo, on Flickr&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;劣质飞利浦音箱&#34; src=&#34;http://farm6.static.flickr.com/5287/5323920716_e7623857ff.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;以前还觉得飞利浦的东西比较精致的，现在看到这个，虽然是它的超低端产品，可是一下对它别的东西也不放心了，至少音箱、耳机再也不可能买它的了。不知道正在使用的剃须刀、榨汁机里是什么样的？飞利浦非要为这点利润丢掉声誉？&lt;/p&gt;</description>
    </item>
    <item>
      <title>2010年没了</title>
      <link>https://qingbo-net.pages.dev/archives/408/</link>
      <pubDate>Fri, 31 Dec 2010 09:52:10 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/408/</guid>
      <description>&lt;p&gt;看了看Google Reader，大家都在总结过去展望未来。我往窗外一看，北京的黄昏，刮着狂风，窗外有一些惨淡的灯光，2010年就这么没了！随大溜总结和展望是有点俗，不过还是写几句吧。&lt;/p&gt;
&lt;p&gt;我是个不容易满足的人，在村里觉得村子不好，在县城觉得县城不好，去合肥上学觉得合肥垃圾，来了北京觉得北京垃圾。不过现在北京真的是垃圾了，没人反对我这么说吧？虽然在“北国”，北京算个比较整洁的垃圾坑。入冬后有一阵子天天是晴天可是看不见太阳，新闻却说十几五的减排目标提前完成了，于是我怀疑给我配眼镜的做了手脚，给我配了个太阳镜。另外为了解决拥堵，又一高招出来了──限制买车。我打赌2011年北京会堵得更厉害，堵得喘不过气来，堵死。&lt;/p&gt;
&lt;p&gt;我在2011年，只办三件事──赚钱，赚钱，还是TMD赚钱！顺便寻找人生的下一站，虽然在那儿我依旧不会满意。&lt;/p&gt;</description>
    </item>
    <item>
      <title>亚马逊Kindle 3优点与缺点</title>
      <link>https://qingbo-net.pages.dev/archives/406/</link>
      <pubDate>Sun, 26 Dec 2010 08:47:56 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/406/</guid>
      <description>&lt;p&gt;Kindle 3用了有一段时间了，讲讲它的优点与缺点：&lt;/p&gt;
&lt;h2 id=&#34;亚马逊kindle-3之优点&#34;&gt;亚马逊Kindle 3之优点&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;逼真的纸质效果。如果在电脑或iPad上看书，过一会眼睛就受不了了，但是kindle的效果几乎跟纸质书籍一样。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;容易获取英文原版书籍。一部分英文书可以获得影印版（这些多是经典的计算机书籍），国内的售价相对国外原版相当便宜。但是大部分书是没有影印版的，尤其是文学、历史方面的。买国外的纸版的话，不说售价，运费就很高。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Kindle内置辞典，遇见生词可以随时查询（默认的词典是英英，但是可以自己传字典上去）。跟上一条一起，Kindle就是个学英语的好工具。以前总是想有个带摄像头的电子辞典，遇到生词扫一下就出来解释了。有道的手机词典号称有此功能，不过太鸡肋了，累死你也取不对一个词，试过的都知道。现在，纸质书与电脑的屏幕取词功能完美结合了！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;书签，评注，高亮。每次重新打开一本书，Kindle自然会翻到你上次读到的地方。也可以自己创建书签，在某个地方加批注，选择一段话高亮。如果有网络，还可以把选中的内容和心得一起分享到Facebook/twitter(当然最好是3G了，你明白)。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果书中有链接，可以直接点击打开在 Kindle 的浏览器中看。虽然浏览器只是 experimental, 也可以凑合用了。尤其是菜单中还有 “Article Mode” 选项，选择以后就像看报纸一样，很舒服。而且 3G 版本还是终身免费的 3G，随时随地都可以查阅相关资料！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;超轻。我刚买一本不到700页的纸质很薄的书（16开本），重量是 1.1KG, 端起来看可是体力活。而 Kindle 3 的 3G 版本也只有不到 250 克！加入一本 700 页的书，会增加多少重量？据说存储器的重量会随存储信息的多少而变化？&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;亚马逊kindle-3之缺点&#34;&gt;亚马逊Kindle 3之缺点&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Kindle版本的书籍质量参差不齐。同一本书纸质的很好，但是同一家出版社做出的Kindle版本可能问题很大，而且同一本书可能有很多人在做Kindle版本。Amazon会把同一本书的纸质版本和Kindle版本的评论放在一起，所以你在看一个Kindle版本页面下面的评论时，大部分也都是对纸质版本做的评论。如果在里面能找到几条针对Kindle版本的，很大的可能会发现与其它评论的调子完全不一样，选择的时候一定要小心。openlibrary.org的书，我试了一本The Wealth of Nations，发现是OCR的结果，很恶心。当然收费的Kindle书籍也可以免费试试Sample.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Kindle的做工，还不是特别精细，尤其如果跟iPad比的话。我的是Kindle 3，第一天就注意到有时候会啪啪响，第二天发现外壳跟屏幕粘合的地方翘起来了，捏一下就会粘上，但是松开后它会慢慢翘起来，和屏幕分开的瞬间就会有啪的一声。[Update 2011-04-06] 最近发现屏幕下面两个角处的黑色塑料已经开裂，暂时还没影响。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不支持脚注。因为Kindle有不同的尺寸并且字体可以由用户自己设置大小，所以做电子书的人不知道什么地方会翻页，如果有脚注，只能按照原书的位置去排版这些脚注。一般情况下，6寸的Kindle每页显示的文字比纸质书的一页要少得多，于是看到有脚注数字，得往后翻几页才能看到，看完后又需要返回来，比较麻烦。难道Kindle没有一个很酷的脚注功能吗？比如光标移动上去就显示脚注，像辞典一样？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中文内容太少。Amazon.com是根本没有中文的，国内做中文电子书因为没有利益可图，全靠某些好人的热情。希望将来Kindle正式在国内运营了情况可以有些改变，如果有书以Kindle格式发行，我很愿意花钱。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中文字体太差。Kindle默认的中文字体设计有很大缺陷，很多字能明显看出字体结构不匀称，看起来比较丑陋。有朋友说它文字的大小也不一致，一行文字放在那儿参差不齐的，我仔细看了一下，是有这么点情况……&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;英文书籍有些还是很贵的。有些刚刚出版的书，它的售价很大一部分可能都是版权费用，Kindle版本便宜很少，比如纸质的140多美金，Kindle的就卖130多，没有任何优势。或者是出版社故意用这种价格策略保证纸质书籍的销量。不过在中国，这个好像对大部分人不是问题。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;总之用了这一段时间，我非常喜欢我的Kindle，并且忽悠旁边的朋友们也买。我也有iPad，不过现在看&lt;a href=&#34;http://qingbo.net/blog/post550-ipad.html&#34;&gt;花钱买iPad完全是浪费&lt;/a&gt;──不仅浪费了钱，还浪费时间，可能是我自制力太差吧，我打开iPad就只知道它能打游戏，不知道能干什么正事……而Kindle让我读书的时间增多了。最近我就在Kindle上看了一本英文的富兰克林自传，由于有词典随时可以查询，读起来比读纸质书籍方便多了，也更容易读下去。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Amazon Kindle EDM的失误</title>
      <link>https://qingbo-net.pages.dev/archives/405/</link>
      <pubDate>Thu, 09 Dec 2010 00:15:43 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/405/</guid>
      <description>&lt;p&gt;Amazon经常基于客户在它网站上浏览的行为通过EDM推荐客户可能想要的产品。大部分时候还比较准，虽然大量的广告有点过分。&lt;/p&gt;
&lt;p&gt;不过今天它犯了个错误。我预订了一个3G &lt;a href=&#34;http://qingbo.net/blog/post545-amazon-kindle-3-pros-cons.html&#34;&gt;Kindle 3&lt;/a&gt;正在等待收货，可是收到了Amazon的一封邮件，标题为“Amazon.com: The All-New Kindle, Only $139”。邮件内容很醒目地写着：Kindle – #1 Bestselling, #1 Most-Wished-For, #1 Most-Gifted Product on Amazon. Only $139.&lt;/p&gt;
&lt;p&gt;我觉得Amazon的推荐系统一定也会在意客户买过的产品，这个问题可能是不同系统之间数据延迟导致的吧。&lt;/p&gt;</description>
    </item>
    <item>
      <title>信用卡积分都是浮云</title>
      <link>https://qingbo-net.pages.dev/archives/404/</link>
      <pubDate>Tue, 07 Dec 2010 11:52:40 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/404/</guid>
      <description>&lt;p&gt;刚开始申请信用卡的时候并没有在意积分，不过前阵子申请招行一张金卡的时候，就考虑了一下，选择了携程卡。我以为只要消费就可以得携程积分的，可是这想法显然太天真——只有在携程购买产品才可以累积携程积分。于是我觉得这基本上没什么用，因为到目前为止我还从来没有在携程买过任何东西。&lt;/p&gt;
&lt;p&gt;后来我就想申请个国航知音卡吧，消费那么多，能换个机票也还不错。于是前几天，招行国航知音信用卡到手，我就打电话注销携程卡，不过客服说好几千的信用卡积分（非携程积分）还没用，劝我兑换了积分再注销。这时我算了一下发现我想靠国航信用卡消费换机票就是个白痴——换一张从北京到深圳的机票大概需要消费30万人民币以上。而且国航卡不累积招行积分。&lt;/p&gt;
&lt;p&gt;看来信用卡积分都是浮云，相对来说银行提供的积分换礼品已经算不错了。携程卡跟普通卡一样累积招行积分，偶尔还能多点携程积分，何乐而不为？过阵子把国航卡销户了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>GoDaddy 7折域名（包括续费）</title>
      <link>https://qingbo-net.pages.dev/archives/403/</link>
      <pubDate>Mon, 06 Dec 2010 12:30:22 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/403/</guid>
      <description>&lt;p&gt;每次域名快到期前好几个月，GoDaddy就开始不停地发邮件通知，当然这通知只是附加在平时就连绵不断的广告邮件中。不过只要你沉住气慢慢等，在这几个月里肯定能等到比较低的折扣。折扣天天有，不过经常有附加条件。这次我就等到了一个条件很宽松的coupon&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Register or renew as many .COM, .NET or .ORG domain names as you want for 30% OFF&lt;/p&gt;
&lt;p&gt;This domain sale is over December 12, 2010 at midnight (Mountain Time)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;优惠码： gda1135b&lt;/p&gt;</description>
    </item>
    <item>
      <title>iPad 与 Kindle</title>
      <link>https://qingbo-net.pages.dev/archives/402/</link>
      <pubDate>Sat, 20 Nov 2010 17:04:07 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/402/</guid>
      <description>&lt;p&gt;我并不是要比较这两样东西……发生了两件事：&lt;/p&gt;
&lt;p&gt;iPad 在 TJ Maxx 和 Marshalls &lt;a href=&#34;http://www.crunchgear.com/2010/11/18/tj-maxx-selling-ipad-for-399/&#34;&gt;以 $399 的价格出售&lt;/a&gt;，比一般的价格低了 $100! 这有没有预示着什么？不管它预示着什么，我反正比较郁闷，感觉损失了100美金。那些囤了货的水货商现在又是什么心情？&lt;/p&gt;
&lt;p&gt;Amazon 上的 Kindle 电子书现在可以当礼物送人了。以前把一个电子书加入 wish list 的时候，总是提示目前不支持购买电子书送人，正在努力使之成为可能……现在终于好了。不过似乎对我没什么太大意义，虽然我有一个长长的 list – &lt;a href=&#34;http://www.amazon.com/wishlist/1WHHDIGZZOWS3/&#34;&gt;Kindle Books Wanted by Qingbo&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Twitter AJAX URL中的感叹号</title>
      <link>https://qingbo-net.pages.dev/archives/401/</link>
      <pubDate>Mon, 15 Nov 2010 19:53:05 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/401/</guid>
      <description>&lt;p&gt;前几天看Twitter上有人在讨论Twitter AJAX更新时URL里的感叹号是怎么回事，例如&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://twitter.com/#!/qingbo&#34;&gt;http://twitter.com/#!/qingbo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;好像没有什么结果。正好前几天在PubCon上，&lt;a href=&#34;http://www.mattcutts.com/blog/&#34;&gt;Matt Cutts&lt;/a&gt;的super session里提到了这个，原来是Google为Ajax crawl设定的标准，没想到后来Facebook和Twitter都采用了这种规范。Googlebot看到上面的那个URL，它实际上就会去crawl另外一个URL:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://twitter.com/?_escaped_fragment_=/qingbo&#34;&gt;http://twitter.com/?_escaped_fragment_=/qingbo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;具体请看Google的”&lt;a href=&#34;http://code.google.com/web/ajaxcrawling/docs/getting-started.html&#34;&gt;Making AJAX Applications Crawlable&lt;/a&gt;“&lt;/p&gt;</description>
    </item>
    <item>
      <title>美国短期出差使用电话</title>
      <link>https://qingbo-net.pages.dev/archives/400/</link>
      <pubDate>Sat, 23 Oct 2010 21:45:39 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/400/</guid>
      <description>&lt;p&gt;最简单的是用 skype 或者 google voice 了，不过接电话不方便，有人有急事找的话不行。&lt;/p&gt;
&lt;p&gt;移动的全球通可以开通国际漫游，但是如果没有三个月无欠费的记录，需要预存1000元。我有个担忧就是垃圾短信无数，漫游收短信好像是要钱的？还有昂贵的数据漫游费用，如果手机有定时上网更新数据的程序忘记关掉就惨了。&lt;/p&gt;
&lt;p&gt;我来了以后去 T-mobile 的商店里去问，得知正好第二天会有一个带 data 的 pre-paid plan 出来。于是我就等了一天，发现这个 plan 还是比较合适的，加上 SIM 卡激活、税等费用一共40美金多点，一个月1500分钟（短信一条相当于一分钟，接国际电话也只占用分钟数），30M数据流量。通话1500分钟是绰绰有余了，30M的流量正好偶尔用一下 Google Maps, 正适合我这样初来乍到的。&lt;/p&gt;
&lt;p&gt;用了几天发现美国也是有不少垃圾短信，大多是假装熟人问候的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>来到美国</title>
      <link>https://qingbo-net.pages.dev/archives/399/</link>
      <pubDate>Wed, 20 Oct 2010 21:48:54 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/399/</guid>
      <description>&lt;p&gt;来之前非常兴奋，非常期待。在芝加哥入关，之后到波士顿的路上靠近窗户，看到外面一路全是水，要么就是巨大的湖，要么就到处都是星罗棋布的小湖，空气非常清澈，看得清清楚楚，云彩像一撮一撮的棉花浮在中间。快到东部的时候开始看见大片的红叶，后来发现波士顿周围也是。&lt;/p&gt;
&lt;p&gt;入住酒店之后开始出来逛，比较窄的路上全部都是车，而且排量普遍比较大，大多是粗实的SUV，偶尔过来一辆悍马也完全显不出大来。车辆看到有人想过马路就会主动停下，有车想从旁边上路也在那儿等空，不过有时路上的车会主动停下让他上去，上路的时候就猛加速，避免拖慢整条道路的速度。我们坐同事的车，他开车的时候加速之猛在国内就很少见，发动机嗡嗡响。当然了，大部分人都比较守规矩，偶尔也会遇到素质不太好的。&lt;/p&gt;
&lt;p&gt;转了一圈，连个买拖鞋、牙膏的地方都没找到，完全陌生的环境，心情开始低落，加上时差导致很累，情绪很沮丧……后来在前台问在哪儿买，原来他们也有一次性的东西，就是不主动提供。之后同事带我们出去，最近的mall、walmart大概在十公里远，我们住的地方大小也算个城市啊，看来在美国没有车活不下去啊。过了几天，到现在慢慢能适应这里的生活了。&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;a href=&#34;http://www.flickr.com/photos/qingbo/5100062761/&#34; title=&#34;TA office building by qingbo, on Flickr&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;TA office building&#34; src=&#34;http://farm2.static.flickr.com/1083/5100062761_431ef98593.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;波士顿港口，蓝天，大海，海鸥：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/5100661018/&#34; title=&#34;波士顿港口 by qingbo, on Flickr&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;波士顿港口&#34; src=&#34;http://farm5.static.flickr.com/4086/5100661018_c7f1bcfb52.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;上班要路过的Charles River. 河边的房子应该很不错吧……河右边是 reservation area:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/5100066017/&#34; title=&#34;Charles River by qingbo, on Flickr&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;Charles River&#34; src=&#34;http://farm5.static.flickr.com/4151/5100066017_e9d07081af.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java 常量值修改后不起作用</title>
      <link>https://qingbo-net.pages.dev/archives/398/</link>
      <pubDate>Thu, 07 Oct 2010 10:30:41 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/398/</guid>
      <description>&lt;p&gt;几个月之前，一位朋友很郁闷地找我，说 Java 做的网站调整了一个参数，本地测试没有问题，但是 commit 代码之后在服务器上 check out，就不起作用。&lt;/p&gt;
&lt;p&gt;我通过 svn 看了一下两个版本的差异，发现朋友修改的是一个 static final 的变量，情况就开始明了了。检查一下，使用该常量的地方是在另一个 Java 文件的另一个类中，因为该文件没有被修改，所以没有重新编译生成新的 .class 文件。而 Java 编译器编译的时候，是直接把常量的值编译进 byte code 里的，运行时不会再有变量引用。删除这个过时的 .class 文件重新编译，一切都正常了。&lt;/p&gt;
&lt;p&gt;Eclipse 使用的是自带的 Java 编译器，所以它编译的细节处理会跟 Sun 的（现在成 Oracle 了）有所区别。或者是因为 Eclipse 编译时是 Debug 的模式吧。&lt;/p&gt;
&lt;p&gt;对新手来说，一不小心掉进这个陷阱，可能花好久才能挣扎出来……&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google TV</title>
      <link>https://qingbo-net.pages.dev/archives/397/</link>
      <pubDate>Wed, 06 Oct 2010 03:47:46 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/397/</guid>
      <description>&lt;p&gt;Google 正式推出了 &lt;a href=&#34;http://www.google.com/tv/&#34;&gt;Google TV&lt;/a&gt; 的首页，今秋发布，不知道跟 Apple TV 之间会有怎样的好戏。它提供一个开放平台，开发者可以为它开发应用。&lt;/p&gt;
&lt;p&gt;我觉得不管这两位大佬如何，一大堆山寨 TV 肯定会如雨后春笋，在中华大地上涌现……&lt;/p&gt;</description>
    </item>
    <item>
      <title>乡下经历──办理护照流程</title>
      <link>https://qingbo-net.pages.dev/archives/396/</link>
      <pubDate>Sat, 02 Oct 2010 00:23:24 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/396/</guid>
      <description>&lt;p&gt;我户口在老家，所以办护照得回老家公安局出入境管理处。回去之前我打电话询问流程，被告知户口迁回去不足十年，必须先拿着身份证户口本回去让他们发协查。&lt;/p&gt;
&lt;p&gt;另外我身份证号码在他们系统里查不到──一年多了，每次去银行都会被盘问，然后说要上报给公安局。我们纳税完了办个必需证件还得另外交钱，闹到最后还是个假证……&lt;/p&gt;
&lt;p&gt;8月2日，回到老家派出所解决假证的问题，给拍了个照片，把资料传上去，县公安局马上可以查到资料了（不过到现在银行还是查不到，看来不是一个系统，同步的延迟是很大的）。再到县公安局让发协查，一个警员说早知道这样你打个电话让我们查不就行了。于是我又回北京了。&lt;/p&gt;
&lt;p&gt;大约一周后，打北京市出入境管理处电话（他们好像有个客服系统，所以还比较容易打），过了一会回电话说协查已经回复。我就问县公安局，答复未收到，让我问保定市。当时下午4点半，我打过去，有人接起来，说已经下班了。第二天我又打保定市协查管理的电话，被告知根本没有我协查的任何记录！！于是我又告诉县公安局让他们帮忙重发协查。&lt;/p&gt;
&lt;p&gt;对了，协查就是因为户口迁回去时间不够长，怕你在外地有什么前科或者禁止出境的情况，用传真发一个协查函到上一个户口所在地公安局，让对方协助查历史。协查的时间是10个工作日，但是不能保证。这就是信息化的程度，我就不多想了。&lt;/p&gt;
&lt;p&gt;8-16日，接到保定电话，说要给我发函，但是没有地址怎么发啊，于是我把我当时在北京的住址告诉他，总算发出去了。&lt;/p&gt;
&lt;p&gt;大约8-25日左右，打电话到县公安局查到协查已经回复了，终于证明我是清白的。感觉就像当年派出去当间谍被抓咬掉舌头也不招供回来后被怀疑不能说话无法辩解最后终于洗清冤屈，我泪流满面。&lt;/p&gt;
&lt;p&gt;但是此时县出入境有个同志生孩子去了，负责管理协查的同志因为眼睛做手术不能上班，我只好继续等。&lt;/p&gt;
&lt;p&gt;9-1日，出入境还是只有一人上班，我不能等了，回去办。花了一下午时间，把护照连同港澳通行证一起办了。&lt;/p&gt;
&lt;p&gt;9-13日，港澳通行证到了公安局，过了几天，护照也到了。家人帮我取回，正好中秋节到了，我回家亲自把这珍贵的护照拿了回来。祖国，你不用这么挽留我，其实我也不想离开你……&lt;/p&gt;
&lt;p&gt;有遗漏的总结一下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;协查是查外地的历史，本地的怎么办？去派出所开个证明，说明你没有违法违纪行为，没有练过功夫，没有参加过邪教组织，历史北京清白。&lt;/li&gt;
&lt;li&gt;申请护照虽然要你交200大洋，还是要填写“正当”原因的，要写去哪个国家，如果是商务还要公司给证明（落后地区规定，听说有的地方还要在银行存3万块钱）。不知道旅游是不是简单点。&lt;/li&gt;
&lt;li&gt;根据身份证号在公安系统查到的信息，必须有照片，必须与户口本上的一致，这个事先最好联系户口所在地出入境管理处让他们帮忙查。&lt;/li&gt;
&lt;li&gt;身份证跟户口本不一致没关系。比如我拿上个户口所在地签发的身份证。&lt;/li&gt;
&lt;li&gt;办港澳通行证，会问你要哪些签注，注意划一个勾就是50或100大洋，我当时要了最多的，一年两次香港，一次澳门，一年内要是没去就浪费了。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;跟我一样情况的，早点准备办护照吧，准备好一场恶仗，折腾几个月。人生苦短，多出去走走，见见世面。万一哪天要出国，再想办就来不及了。那些在大城市读大学的同学最好趁现在办个护照。&lt;/p&gt;
&lt;p&gt;不过总是有些好的转变的，这次在县公安局出入境的警察态度就一直很好，事先没有想到。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《盗梦空间》与编译器</title>
      <link>https://qingbo-net.pages.dev/archives/395/</link>
      <pubDate>Fri, 01 Oct 2010 01:02:43 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/395/</guid>
      <description>&lt;p&gt;前阵子去看盗梦空间，本来我迷迷糊糊没看太明白还好，我看电影经常看不懂。但是等到结束，有观众开始鼓掌叫好，我就顿时感觉很郁闷──为啥他们看懂了我却不行！&lt;/p&gt;
&lt;p&gt;这几天突然由这个联想到编译器。你写的代码是要生成代码的代码──code generator. 写 code generator 的时候，你不仅要考虑你的 generator 能否正常运行，更重要的任务是生成的汇编代码能否正确运行，能否正确地使用有限的寄存器，尤其是在递归调用等复杂的情形中。现在写一个复杂语言的编译器，code generator 之前更基础的 lexer/parser 也不可能手写, 所以想象一下 lexer generator/parser generator (如 lex/yacc), 也是一个重重梦境的情形。这一切对我们这些新手来说是那么不稳定和难以捉摸，有时候你都搞不清楚自己是在哪一层，就到了“游离状态”，但是对那些造梦高手，都是手到擒来的事了。&lt;/p&gt;
&lt;p&gt;建议对编程有兴趣的人，都找个编译原理的经典书籍读一下，这非常锻炼编程方面的思维能力。我比较推荐的是龙书──编译原理、技术与工具 (Compilers: Principles, Techniques, and Tools)。我当时看的是1986年的第一版，历经20年，一些基础理论仍然没有过时，不过在06年有了第二版，现在国内有&lt;a href=&#34;http://www.china-pub.com/1451650&#34;&gt;影印版&lt;/a&gt;可以购买。突然想起以前就写了一篇介绍的文章“&lt;a href=&#34;http://qingbo.net/blog/post439.html&#34;&gt;Purple Dragon Book&lt;/a&gt;”。再次提醒，珍爱生命，远离中译本 (也许翻译得不差，但是翻译总是会有不可避免的误差)，感受原著的魅力，看这些造梦高手如何将高超的技艺传授给你！&lt;/p&gt;</description>
    </item>
    <item>
      <title>京东换货经历</title>
      <link>https://qingbo-net.pages.dev/archives/394/</link>
      <pubDate>Tue, 21 Sep 2010 00:23:29 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/394/</guid>
      <description>&lt;p&gt;前阵子在京东订购了一台&lt;a href=&#34;http://www.360buy.com/product/106892.html&#34;&gt;飞利浦榨汁机&lt;/a&gt;，本来填好了让他们只双休日送货，因为不是公司地址。可是星期一的时候，送货的师傅给我打电话说送来了，我犹豫了一下，为了早点享受到新鲜的果汁，就奔回家来收货，并且习惯性地没有开箱就签字让师傅走人了。迫不及待地开箱要榨汁，拿出来的时候呆了──机器上面透明的硬塑料盖子破裂了，真是暴力物流啊！赶紧打电话给送货师傅，他很淡定地让我直接打客服吧。&lt;/p&gt;
&lt;p&gt;于是我就打客服，客服帮我报了返修，我上网去查，地址还是家里的。为了让他们尽快取走，我把机子带到公司，然后打客服让帮忙改成公司地址，之后因为网上显示还是家庭住址，又打客服确认了一下。可是第二天有快递打电话给我，说要取件，在我家楼下……于是我打电话给客服。到了晚上，客服回复说没办法，只能把这个返修单子关掉重新来。&lt;/p&gt;
&lt;p&gt;这次我自己在网上填了返修，第二天，快递来取件，第四天，收到了换回来的新榨汁机。这次我可要认真检查了，不过送货的人说我必须先在那个确认完好的单子上签字才能开箱验货，比较奇怪。整个过程在返修单的页面上都可以跟踪，每一步都会更新(见下图)，让人感觉比较踏实，而且总体来说速度挺快的。此前我还很担心京东会做个鉴定，说是我弄坏的之类的，去网上搜京东换货相关的评论。客服跟我说，安排上门取件就说明肯定可以换货了，收回的货入库之后就会发新的。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/4998603307/&#34; title=&#34;京东换货跟踪 by qingbo, on Flickr&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;京东换货跟踪&#34; src=&#34;http://farm5.static.flickr.com/4130/4998603307_21df368b14.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;有了这次教训，以后一定要先验货再放人了……不得不说京东的服务还是很不错的，这个都签字确认完好了，还真没法说是不是我在说谎呢。要是在淘宝买的东西，就真的完蛋了。网上有不少评论说京东换货效率低之类的，我觉得倒是非常高效。不过建议京东能要求快递员主动开箱验货，减少这些周折。&lt;/p&gt;
&lt;p&gt;总之，现在可以喝上新鲜的果汁了……&lt;/p&gt;</description>
    </item>
    <item>
      <title>更新了一下 Flickr Markdown (Greasemonkey)</title>
      <link>https://qingbo-net.pages.dev/archives/393/</link>
      <pubDate>Sat, 18 Sep 2010 01:58:16 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/393/</guid>
      <description>&lt;p&gt;Flickr 的新界面上线已经有一段时间了，我之前写的&lt;a href=&#34;http://qingbo.net/blog/post470-flickr-photo-markdown-greasemonkey.html&#34;&gt;生成 Flickr Markdown 链接代码的 Greasemonkey 脚本&lt;/a&gt;已经失效，于是刚刚更新了一下。&lt;/p&gt;
&lt;p&gt;新版的界面明显优化了很多，重点突出，尤其是分享不需要跑到一个新的页面了，就在照片页面即可获取各种尺寸的分享代码，非常之方便。我本来想给 HTML/BBCode 旁边再加一个选项的，可是不太熟悉 YUI，也不知道删掉官方的 event handler 加上自己的能不能行得通（执行先后次序问题），于是就来了个简单粗暴的，直接把 HTML 代码替换成 Markdown (想要 HTML 代码的话，只需禁用 Greasemonkey). 效果如下：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/5000225248/&#34; title=&#34;flickr markdown greasemonkey script by qingbo, on Flickr&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;flickr markdown greasemonkey script&#34; src=&#34;http://farm5.static.flickr.com/4109/5000225248_dd20987d5a.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;安装请到 userscripts.org (昨晚这网站挂了一会，nginx server 返回500错误)：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://userscripts.org/scripts/show/66097&#34;&gt;Flickr markdown code&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>JavaScript 字符串连接</title>
      <link>https://qingbo-net.pages.dev/archives/392/</link>
      <pubDate>Wed, 15 Sep 2010 00:18:34 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/392/</guid>
      <description>&lt;p&gt;记得几年前想做前端，去腾讯面试，有人问我在 JavaScript 中，大量字符串的连接应该怎么做效率最高。当时我不知道怎么回答，甚至根本没想过这个问题，对方告诉我应该用 Array 的 join 方法，这一点我一直记着。不过今天看到了这篇文章：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.sitepoint.com/blogs/2010/09/14/javascript-fast-string-concatenation/&#34;&gt;High-performance String Concatenation in JavaScript&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;一开始觉得自己一直以来的认识完全被颠覆了，还在 gtalk 上找了好几个朋友问。不过看到文章后面，发现对于 IE 7 及更低的版本，array join 仍然比加号快上数百倍。&lt;/p&gt;
&lt;p&gt;在国内，IE 6 仍然是最主流浏览器，所以……&lt;/p&gt;</description>
    </item>
    <item>
      <title>百度开放平台</title>
      <link>https://qingbo-net.pages.dev/archives/391/</link>
      <pubDate>Tue, 14 Sep 2010 13:19:46 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/391/</guid>
      <description>&lt;p&gt;在百度搜一下“坦克大战”试试──第一屏右侧是推广链接，左侧是一个样式非常特殊的框，里面是搜到的一些游戏，这个框就属于所谓的“百度开放平台”，又名“框计算”。它把用户牢牢的框住，在这里点一个游戏即可在本页面玩，根本不需跑到游戏站点去了，详情、新窗口打开都仍旧是百度的页面。流量不再流向游戏网站，给游戏提供者的唯一好处就是有几处指向首页的链接。&lt;/p&gt;
&lt;p&gt;有几个值得思考的问题，大家自己细细揣摩吧：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;4399 和 7k7k 为什么愿意这么做？如果没有这个框，他们本有可能在此处占据一个好的位置，获得精准的流量&lt;/li&gt;
&lt;li&gt;搜“北京到沈阳机票”看看，用户可以直接在一个醒目的搜索表单直接提交到各大机票预订、搜索网站。这个问题该反过来问，百度为什么愿意这么做？它显然会降低左侧“推广位”和右侧广告的 CTR&lt;/li&gt;
&lt;li&gt;这个开放平台对百度是好事还是坏事？是远见卓识还是鼠目寸光？&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>被 Apache 的 MaxClients 困住了</title>
      <link>https://qingbo-net.pages.dev/archives/390/</link>
      <pubDate>Sun, 22 Aug 2010 16:00:31 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/390/</guid>
      <description>&lt;p&gt;今天在一个 Apache 上通过 mod_fastcgi 开了 redmine，使用的时候发现访问速度非常之慢，打开一个页面一般需要十几秒，开始以为是网速的问题，但是同一台服务器上其它的网站访问非常快。&lt;/p&gt;
&lt;p&gt;最开始以为是 rails 或者 mysql 的性能问题，但是打开 production.log 看了一眼，发现它们加起来一般占用仅几十毫秒的时间。Firefox 状态栏一直在显示正在加载，到底在干什么？用 “tail -f” 查看 apache 的 access_log，看到每次打开一个 redmine 页面，加上图片、javascript、CSS 一共有十个左右的请求，但是它们大概分成三波，两波之间有5秒左右的间隔。这时猛然想起以前因为内存不足，在 apache 配置文件加了几个限制，直接导致这种现象的就是&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;MaxClients 2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;当时几乎没有人访问 Apache，所以我把几个相关的数字都调得特别低，但是 redmine 这样的 rails 程序，光 prototype 带的 JavaScript 文件就一大堆，每个页面都要全部加载，即使只有一个人访问也会出现等待。这时 error_log 里应该会出现错误：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[error] server reached MaxClients setting, consider raising the MaxClients setting
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;从这个角度看，减少每个页面包含的 JavaScript/CSS/图片文件数量也是减轻服务器压力的重要途径，毕竟降低了连接数。&lt;/p&gt;</description>
    </item>
    <item>
      <title>没有干净的餐馆</title>
      <link>https://qingbo-net.pages.dev/archives/389/</link>
      <pubDate>Fri, 13 Aug 2010 13:30:20 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/389/</guid>
      <description>&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;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;自己吃饭在意卫生，但是觉得不用在意别人的卫生&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些只是看见的，看不见的还多着呢。咱们还是尽量自己家里做着吃吧，起码知道里面放的是什么。另一方面，开销上也能节省点。咱是年轻白领，白得锃亮，没有灰色收入，是社会最底层。&lt;/p&gt;</description>
    </item>
    <item>
      <title>激荡十五年 1978-1992</title>
      <link>https://qingbo-net.pages.dev/archives/388/</link>
      <pubDate>Sun, 25 Jul 2010 10:50:54 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/388/</guid>
      <description>&lt;p&gt;这几天看了《激荡三十年》的上册，从1978-1992，不过下册恐怕近期没时间读了，留给以后吧。&lt;/p&gt;
&lt;p&gt;有意思的一些事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;(8-9页)杨曦光冤案在胡耀邦批示之后，才可以“由法院依法处理”。如今这种情景依旧不同程度地存在着，最近的一个著名的例子便是“&lt;a href=&#34;http://news.163.com/10/0719/02/6BU2BT2C0001124J.html&#34;&gt;陕西国土厅否决民告官案判决&lt;/a&gt;”。&lt;/li&gt;
&lt;li&gt;忘记在书中什么地方了，内地官员到深圳参观后，俯床失身痛哭，说辛辛苦苦几十年，一夜回到解放前。&lt;/li&gt;
&lt;li&gt;(163页) 书中对唐骏的“传奇经历”也有记载，包括他的许多项“专利”。难怪吴晓波也被卷入这次的唐骏风波中。&lt;/li&gt;
&lt;li&gt;(289页) 吴树青如此解读“劳动权利”：“每个公民都有宪法赋予的劳动权利，砸铁饭碗是违法的。”拜托老先生，铁饭碗是“不劳动权利”好不好。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;一些乱七八糟的感悟：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;最初积累到财富的人，都是冒着各种危险，游走在“政策”的空隙，活下来就成了赢家&lt;/li&gt;
&lt;li&gt;1979年，香港学者张五常说：“以其他国家的标准来衡量，整个中国也找不到几个45岁以下，称得上是受过良好教育的人。结果就出现了一群散漫的劳动人口和无知的官员。”（30页）。我觉得这问题今天依然很严重，读十二年书只表示你被教育摧残过，并不意味着你受到了良好教育。当时45岁以上的人已经不再工作，如今人才外流又很严重。不过这是好事，因为你只要有点真本领，不停学习新知识，就会在这些散漫的劳动人口中脱颖而出&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;所以，我要不断学习、发现机会、抓住机会、适度冒险。&lt;/p&gt;</description>
    </item>
    <item>
      <title>综合症 综合征</title>
      <link>https://qingbo-net.pages.dev/archives/387/</link>
      <pubDate>Sat, 03 Jul 2010 09:00:48 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/387/</guid>
      <description>&lt;p&gt;最近在读&lt;a href=&#34;http://www.ruanyifeng.com/home.html&#34;&gt;阮一峰&lt;/a&gt;翻译的 More Joel on Software 一书，早上看到第 27 页有个词“埃斯伯格综合征” (Asperger syndrome) 觉得很奇怪──不应该是“综合症”吗？不过我没有深究就放过去了。生活中总是有许多巧合，尤其像现在这样周围通过各种媒介充斥着信息的时代。今天中午看电视，说荷兰在伊丽莎白港终于治愈了“巴西综合征”，屏幕上打出的字幕也是“综合征”。我当时就想，现在的媒体真是没文化，到处都是错词、错字，就像“空穴来风”我从来就没见过有用对的地方。&lt;/p&gt;
&lt;p&gt;不过现在在网上搜了一下，才知道我是错的。紫光拼音输入法论坛上有个关于此问题的[讨论]，(&lt;a href=&#34;http://bbs.unispim.com/viewthread.php?tid=4539&#34;&gt;http://bbs.unispim.com/viewthread.php?tid=4539&lt;/a&gt;)，&lt;br&gt;
“步虚”看起来很有才，在回帖中将“综合征”、“综合症”与外文 “syndrome” 的关系讲得比较清楚：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“综合征”还是“综合症”？野风兄提出的这个问题，我觉得蛮有意思。因为，它牵扯到东、西方，近、现代不同的思维方式，不同的符号逻辑在医学上的运用问题。&lt;/p&gt;
&lt;p&gt;首先可以肯定的是，综合征、综合症其实是我们中国人对英、法语中syndrome这个单词依不同理解翻译得出的结果，在医学上用来表示：1）一组病情、病态总体上反映或规定的某种疾病、功能失调等；2）疾病、功能失调等表现出的一组典型征候。也就是说，syndrome这个单词本身包含了两个意思：第一，由一组征候或症状标识的某一病症（disease）；第二，(确定或不确定的）疾病表现出的一组征候symptoms。&lt;/p&gt;
&lt;p&gt;我们知道，syndrome这个单词本身是由表示“相同的”前缀syn(sun-，)和dromos (一次流出) 组成的。它的具体意思是指相同的、相似的东西一齐涌现，也就是kingdick 版主所说的“好多个‘症’一块发作，n个跳蚤一块跳”这类现象。&lt;/p&gt;
&lt;p&gt;按照西方人的传统思维方式理解，符号与对象，病征与疾病之间的关系是直线对应的。什么样的病征就标识着什么样的疾病，也就是说，病征等于病症。因此，帕金森氏症候群symptoms，在一般人的表述中就成了帕金森氏病或帕金森综合症disease。这里，汉语之所以用“症”字，是因为“症”在古医书中为 “證”。而“證”字强调的是一种直接对应关系，即符号论中的标识关系（indicial）。&lt;/p&gt;
&lt;p&gt;而依我们中国人的传统思维，病征与疾病，特别是复杂的病征与疾病之间不能简单地划等号。它们之间存在的是一种征象关系（symptomatic）。当代科学发现、特别是复杂性科学研究呼应了中国人的思维传统。因此，具体到医学上，当临床上发现有一组典型的症状，人们开始学会从征候的（symptomatic）角度整体地去把握复杂的病情，甚至试图去探寻隐藏在它们后面的具体疾病。在这样的大背景下，“综合征”也就好像慢慢地被越来越多的人使用了。&lt;/p&gt;
&lt;p&gt;不过，在一般的使用者（包括许多医学内行）当中，“综合征”、“综合症”之间并没有明确的、实质的区别。即使有区别，人们也常常会根据不同的语境需要选择使用“综合征”或“综合症”。因此，作为词库，我以为“综合征”、“综合症”两个都应该保留。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;后面有人引用了两篇文章，也是辨析这两个字的：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;小议证、症、征&lt;/p&gt;
&lt;p&gt;陆军&lt;/p&gt;
&lt;p&gt;证、症、征是祖国医学中常用的几个同音字，分别和其他字组成症状、证候、体征等特定词。这三个字不能互换使用，如“综合征”，有人误写为“综合症”；适应证、禁忌证是“证”，而非“症”或“征”。要求规范使用这些字并不是吹毛求疵。&lt;br&gt;
　　症（症状），是患者本人的异常感觉，如头晕、目眩、气喘、咳嗽等；证（证候），指病人的一系列相互关联的表现，如风寒证常同时表现出头痛、鼻塞不通、恶风寒、脉浮等；征（体征），是医生在诊察患者时发现的迹象、现象（异常变化），如脉象变化，有结脉、代脉等。&lt;br&gt;
　　症状、证候、体征等虽然词义不同，但相互之间有着密切的联系。广义的症状可以包括体征，医生在记录病人症状时往往把舌、脉等部位的反应写上，如风寒证病人的症状中所表现的脉浮就是体征。证候不但可包括多种症状、体征，还可说明病因、病位、病性，如风寒一证即可包括头痛、恶寒、脉浮紧、舌苔薄白等症状和体征，又可表明病因是感受风寒，病位在表，疾病的性质属实证等。&lt;br&gt;
　　凭症、征都不能决定治法，如头痛一症，病因有风、寒、暑、湿、火、血淤、气滞等不同，性质又有寒热虚实的差异，因此，仅凭“头痛”这个症状是不能决定治法的。只有“证”是疾病的原因、部位、性质以及致病因素和抗病能力相互斗争情况的概括，是疾病过程中某阶段各种症状的综合，它直接反映疾病的本质，指导医生的治法和用药。因此说中医诊断疾病的目的就在于“辨证”，只有在辨清证的基础上才能谈“治”，根据不同的辨证结果，确定不同的治疗方法。&lt;/p&gt;
&lt;p&gt;《健康时报》 (2001年10月18日第十版)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;还有一篇：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;医学名词“证”“症”“征”规范使用的探讨&lt;/p&gt;
&lt;p&gt;朱建平1（中国中医研究院 北京 100700）&lt;/p&gt;
&lt;p&gt;医学名词“证”、“症”、“征”的混乱使用，一直困扰着学术界、出版界。本文拟从辞源学和中西医学概念等方面，对“症”、“征”、“证”及其相关的字、词进行探析，从其词义演变，以及当今对其概念的界定，来统一、规范它们的使用。不当之处，敬请指正。&lt;br&gt;
一、证（証、證）、证候&lt;br&gt;
现在使用的规范字“证”，来源于古代的两个汉字“証”和“證”。&lt;br&gt;
“証”的本义是谏正。汉?许慎撰《说文解字》：“証，谏也。从言正声，读若正月。谏，証也。从言柬声。”&lt;a href=&#34;http://www.ruanyifeng.com/home.html&#34;&gt;1&lt;/a&gt;可见“証”与“谏”互训，在最初并无病象的意义。&lt;br&gt;
那么，古代表达病象意义用哪个字呢？经查阅有关资料，发现古代用“證”字。《说文解字》：“證，告也。从言登声。” [2]《辞源》载“證”：“zhèng 诸应切，去，證韵，照。” [3]概括为五个义项：①证实，证验。②谏。③法则。④证据，根据。⑤病况。通“症”。并举例说明当时“證”与“症”通假。如《列子·周穆王》载：“其父之鲁，过陈，遇老聃，因告其子之證。”这里的“證”是病人告之的病情，即现在所说的症状。&lt;br&gt;
后来“證”被俗称为“証”，从而赋予“証”的病象意义。如清?段玉裁注《说文解字注》：“今俗以証为證验字，遂改。” [4]&lt;br&gt;
中医古籍较早记载“證”的有成书于战国时期的《黄帝内经》，其《黄帝内经·素问·至真要大论》载：“病有远近，證有中外” [5]。现存汉·张仲景《伤寒论》大多数章节以“×××病脉證并治”为题讨论外感病的诊治。同时，自古以来，“证”（証、證）与“症”在大量中医文献中时常混用。如《伤寒论·辨太阳病脉證并治上》载：“观其脉證，知犯何逆，随證治之” [6]，第一个“證”与脉连用，意指病人的脉象与症状，应用“症”而借用为“證”，而第二个“證”即今所指之“证”。又如清·唐容川著《血症论》，观其内容，主要讨论各种出血类疾病，而不单指出血的症状。因而，此“血症”应为“血证”，应用“证”而借用为“症”。&lt;br&gt;
随着中医学术的发展，学术界对“症”与“证”辨析越来越清楚。现代中医学家为了适应现代中医教育的需要，在编写中医学教材时，将“辨证论治”作为中医学基本特点之一，予以高度重视。&lt;br&gt;
研究者发现，中医辨证论治的思想在奠基性医著《黄帝内经》已经孕育，自汉张仲景以降，古代中医学家已经发明了六经辨证、八纲辨证、脏腑辨证、卫气营血辨证、三焦辨证、经络辨证等方法。而明确提出“辨证论治”一词的是清·章虚谷的《医门棒喝》。与“辨证论治”近义的词，在明·周慎斋《慎斋遗书》则记作“辨证施治”。而“辨证”一词可能还要早。虽然宋·张杲《医说》所载“辩证”，并不是“辨证”，但从内容看，还是“辨证”。&lt;br&gt;
症是症状的简称，是病人自我的不良感觉，往往是对单个病状的描述，如发热、头痛、鼻塞流涕……。症状可以出现在不同的疾病中，感冒有发热，痢疾有发热，中风也可以有发热。感冒、痢疾、中风，中西医都认为是疾病。而中医提出“证”的概念，是非常独特的一个概念，是西医所没有的概念。因为在中医看来，只知道病人患什么病还不够，还必须在病的基础上，进一步辨明属于什么证。因为不同的证，它的治法方药是不同的。只有辨明了证，方能确定治法，并组方用药。譬如，感冒，中医还要辨明属于风寒感冒证、风热感冒证等等。如果发热与恶寒重、无汗、脉浮紧一起出现，中医辨为风寒感冒证，宜疏风散寒解表，用麻黄汤等；而发热重，同时咽痛、脉浮数，可辨为风热感冒证，宜疏风清热解表，用桑菊饮、银翘散等。可见，“证”对于中医来说是一个非常重要的概念。&lt;br&gt;
何为“证”？学术界众说纷纭。一般认为，证是在疾病过程中一定阶段的病位、病因、病性、病势及机体抗病功能等本质变化的概括。证概念的内涵，随着学术的发展还在不断地变化。有人认为，证不仅有疾病之证，还有健康之证，因而有辨证论治，也有辨证养生。&lt;br&gt;
“证”字还用于“适应证”、“禁忌证”等名词的组合。适应证、禁忌证有病理的概念，亦有生理的概念，所以使用“适应证”、“禁忌证”比“适应症”、“禁忌症”、“适应征”、“禁忌征”更准确。“适应证”，《辞海》释为：“适合于采用某种治疗措施的疾病或情况。如痈发展成脓肿，应行切开术，脓肿开成为切开的适应证；奎宁治疗疟疾的急性发作有效，疟疾的急性发作即为奎宁的适应证。” [7]“禁忌证”，《辞海》释为：“禁忌证：适应证的反义词。指不适宜于采用某种治疗措施或采用后反而有害的疾病或情况。如痈未化脓即行切开，不但不能治愈，反而可造成败血症，未化脓的痈即为切开的禁忌证。另如属实热性的病证，为用温补药的禁忌证；属虚寒性的病证，为用寒凉药的禁忌证等。”[8]其释义只讲治疗措施，有些局限。如果补充预防保健的含义，就更加全面了。同时必须指出，“适应证”、“禁忌证”名词对中西医学都适用。&lt;br&gt;
“证”与“证候”的使用也很混乱，这与两者概念界定不清有关。&lt;br&gt;
而“证候”又需与古代“證候”、“症候”、“徵候”等词作辨析。“證候”一词，见于两晋南北朝文献。晋代指可以验证的天象。如《晋书·天文志上》：“度历象昏明之證候”。南北朝还指症状。如梁·陶弘景《肘后百一方·序》：“撰效验方五卷，具论诸病證候，因药变通。”[9]&lt;br&gt;
“症候”一词，《辞源》释：“病情，病象。” [10]并引宋·李昴英《文溪集》：“事事挂漏，色色穷空，症候转危，景象愈蹙。”又引明·王守仁《王文成公全书》“大抵忘已逐物，虚内事外，是近来学者时行症候。”&lt;br&gt;
“徵候”，《辞海》云“犹征兆。将要发生某种情况而预显的迹象。”并非专指疾病征象。[11]&lt;br&gt;
“证候”作为中医学名词，《辞海》释为：“指患病时出现的互有联系的一组症状。见陶弘景《肘后百一方·序》。可反映疾病的原因和病理变化，了解疾病的部位（如表证、里证）、正气和病邪的盛衰（如虚证、实证）、疾病的性质（如寒证、热证）、病机的变化（如闭证、脱证）等。辨别不同证候，是诊断疾病的重要方法。”[12]&lt;br&gt;
在中医学术界，对证候的概念，有两种代表性的看法：一种是证是证候的简称，两者内涵相同；另一种是证候是证的外候。证是疾病的本质，证候是疾病的外在表现，即在疾病过程中一定阶段的病位、病因、病性、病势及机体抗病功能等本质变化有机联系的反应状态，表现为临床可被观察到的症状与体征等。如前所述，风寒感冒证的外在表现为发热、恶寒重、无汗、脉浮紧等一组症状及体征，这组症状及体征即为风寒感冒的证候。根据学科发展的需要，对重要的概念做出分化，并对其内涵加以界定，是必要的。因此，后一种看法今后可以作为规范名词来使用。&lt;br&gt;
因为西医没有证的概念，所以证的英译也一直有不同的译法，常见的有syndrome ，pattern。《多兰医学词典》(Dorland’s Illustrated Medical Dictionary)载“syndrome”: a set of symptoms which occur together; the sum of signs of any morbid state; a symptom complex. In genetics ,a pattern of multiple malformations thought to be pathogenetically related. [13] （同时出现的一组症状，任一疾病的征候总和；症状复合。在遗传学方面，认为是在发病学上相关的多个畸形。）西医传入中国后，syndrome译为“综合征”。英文中没有证对应词，因此由pattern引申而来。pattern：《多兰医学词典》有一种释义为: a characteristic set of traits or actions, as behavior pattern. [14] （一套品格或动作的特征，如行为模式。）。英国著名中医翻译学者Nigel Wiseman 认为英文里没有“证”的对应词，pattern可用来表达一组症状和体征，同时也可用syndrome。美国著名中医学者Dan Bensky也如此译。他们对证、证候没作区别，一般两者混用。&lt;br&gt;
根据前面对“证”、“证候”的界定，“证候”可译为syndrome。“证”可译为“pattern”。当然，由于“证”、“证候”两个名词表述了一个事物的两个方面，一指本质，一种现象，在具体使用时，应由语境来确定。&lt;br&gt;
二、症（癥）&lt;br&gt;
现在的“症”字有两个读音：症状之“症”读zhèng；症瘕之“症”读zhēng。&lt;br&gt;
症（zhèng）：指疾病的表现。《说文解字》未见此字，在古代常用“證”字来表达。如《辞源》释为：“病徵。古皆作‘證’。” [15]《辞海》释为：“疾病的症候情况。如重症；对症下药。” [16]&lt;br&gt;
“症”是症状的简称。“症状”，《辞海》释为：“病人患病时所发生的异常感觉。如患感冒时的发热、喉痛、头痛、食欲减退等。广义的还包括‘体征’。” [17]&lt;br&gt;
《多兰医学词典》载“symptom”一词，释为：“any subjective evidence of disease or of a patient’s condition, i.e., such evidence as perceived by the patient; a noticeable change in p patient’s condition indicative of some bodily or mental state. ” [18] （病人的主观感觉。主观感觉的变化，提示患者某些身心状况的改变。）Symptom汉译为“症状”。&lt;br&gt;
另外，“症”（zhēng）是“癥”简化规范字。&lt;br&gt;
“癥”：《辞源》释：“腹中结块之病。旧题汉·华佗《华氏中藏经》上《积聚癥瘕杂虫论》：‘癥有劳、气、冷、热、虚、实、风、湿、食、药、思、忧之十二名也。’” [19] 并有“癥瘕”一词，《辞源》释：“癥瘕：腹中结块的病，坚者为癥，成物形者为瘕。……隋·巢元方《诸病源候论》十九有《癥瘕》。” 由于“癥”简化成“症”，于是“癥瘕”便成了“症瘕”。[20]&lt;br&gt;
所谓“癥”，是腹内有坚硬结块的疾患，是有徵可稽的疾病，其造字从疒从徵，非常科学。如果“徵”简化成“征”，那么“癥”应该简化成“”，而不是 “症”。“癥”简化为“症”，真是匪夷所思，不知当时简化的依据是什么？&lt;br&gt;
三、征（徵）&lt;br&gt;
规范汉字“征”，来源于三个古汉字“癥”、“征”、“徵”。&lt;br&gt;
中国古代“”、“征”字的义项中无一与疾病名词有关。《说文解字》：“，正行也。从正声。征，或从彳。” [21] “”为“征”的异体字，后被淘汰。《辞源》载“征”（zhēng）有远行，出兵征讨，取，抽税，通“怔”等五个义项。而《辞海》则六个义项：①远行；长行。②征伐；征戍。③收；取。④赋税；征用。⑤通‘怔’。⑥姓。但均与医学无涉。&lt;br&gt;
“徵”：《说文解字》释为“召也。从壬从微省。壬微为徵。行于微而闻达者，即徵也。” [22]《辞源》载“徵”（zhēng）有九个义项：①徵召。②徵聘。③求。④徵收。⑤迹象。⑥證明，證验。⑦姓。⑧八音之一。⑨惩戒。通‘惩’。” [23]而《辞海》载“征（徵）”有五个义项①召；征聘。②求；征求。③问；征询。④迹象。如象征；特征。⑤证验；证明。另《辞海》载“征（徵）验：可以令人信服的证据。” [24]&lt;br&gt;
由前可知，古代中医用“証”“證”“证”“症”来描述病情、病状，而不使用“徵”。西医传入后，人们在翻译医学名词时选用了“徵”字。当初翻译者之所以做出这样的选择，可能与汉字“徵”所具有的迹象、象征、特征、证明、证验等涵义，与原意较为相符，同时又可与中医用词“証”“證”“证”“症”相区别有关。 “徵”字经简化、规范后成为“征”。&lt;br&gt;
“征”主要用于西医名词“体征”、“综合征”。&lt;br&gt;
“体征”，《辞海》释为：“医生在检查病人时所发现的异常变化。如患心脏病时所听到的心杂音患肝脏病时所扪到的肝肿大或所见到的黄疸，患阑尾炎时的腹部压痛等。是医师诊断疾病的重要根据之一。” [25]与英文sign对应。《多兰医学词典》载“sign”：an indication of the existence of something; any objective evidence of a disease, i.e., such evidence as is perceptible to the examining physician, as opposed to the subjective sensations (syndromes) of the patient. [26] （提示某事物的存在；体征：疾病的客观证据，例如医生检查时发现的与病人主观感觉[症状]相反的证据。）而中医往往将体征包括在症状之内，而不单列。&lt;br&gt;
“综合征”，《辞海》释为：“亦称‘症候群’。代表一些相互关连的器官病变或功能紊乱而同时出现一群症状，往往不是一种独立的疾病，常可出现于几种疾病或由于几种不同原因所引起的疾病。如有显著的全身水肿、大量蛋白尿、血浆白蛋白降低和胆固醇增高时，称‘肾病综合症’。不少综合征用首先发现者的一个或几个学者的姓氏命名，如阿-斯综合征等。中医学中的证候，如脏腑分证、六经分证等，其表现的症状，类似综合征。” [27]“综合征”由英文syndrome一词译得。 “徵”（征）字有迹象、象征、特征、证明、证验等涵义，而“證”（证）则有证实、证验、证据、根据、病况等涵义，所以“征”与“证”亦有相通之处。就内涵讲，综合征相当于中医“证候”。&lt;br&gt;
四、小结&lt;br&gt;
由上可知，“証”本义并无病象的意思；“證”则有病象的含义，后被俗字“証”代替，同时“證”还被通假为“症”，作症状解。“証”、“證”，在文字上被后世简化规范为“证”字，而在中医学上则被提炼成一个特有概念的专有名词。&lt;br&gt;
“症”在古代与“證”是混用的，后世被固定释为症状。但作为“癥”的简化字，有待商榷。“征”（）本义与医学无关，它是作为“徵”的简化字，被作为西医名词“体征”、“综合征”译入时所选用的汉字，以便与中医名词相区别。&lt;br&gt;
“证”“症”“征”及相关字词之间的关系，如下图所示：&lt;/p&gt;</description>
    </item>
    <item>
      <title>张三眼镜</title>
      <link>https://qingbo-net.pages.dev/archives/386/</link>
      <pubDate>Fri, 02 Jul 2010 15:40:11 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/386/</guid>
      <description>&lt;p&gt;半个月前在惠东打了眼镜，回来后却不知道该去哪儿配眼镜。因为上次配了一副眼镜，戴上之后说不出来的难受，也不是不清楚，就是别扭，过十分钟就累得受不了了。后来有一次陪老婆配眼镜，那里帮我把这个调了好久，也没有变好。所以我宁可戴着破裂的眼镜，也不能忍受后来配的那副。我一度怀疑还有正经的配眼镜的地方吗？&lt;/p&gt;
&lt;p&gt;恰好想起有一次 twitter 上有人推荐一家“张三眼镜”，在网上还真的找到了。怀着半信半疑的态度去看了看，老师傅不借助电子仪器验光的手段和本领还是很牛的。帮我看了看以前配的那副，很快就看出来瞳距不对，而且散光度数不对！黑心的眼镜店。&lt;/p&gt;
&lt;p&gt;在那儿验光结束的时候，我戴着插镜片的那个眼镜（我也不知道这东西怎么称呼）就非常舒服了，而且非常清楚。验光的结果，两只眼分别增加了几十度，比我想象的要好。我在眼镜店的一般经验是，验光很快就结束了，大部分时间都在琳琅满目的镜架中浪费掉了。不过在张三眼镜，我大部分时间都花在了验光上，因为自己度数偏高还散光，所以选择余地比较小，直接接受了师傅的建议。&lt;/p&gt;
&lt;p&gt;三天后，拿到眼镜，因为度数有增长，所以开始走路稍微有点晕，但是很快适应了。推荐大家去这家眼镜店。&lt;/p&gt;
&lt;p&gt;感叹一下，国内大部分的岗位上的人，都是在其位却没能力谋其政。我弟弟刚高考完，成绩不是太好，有 loser 对他说，上本二将来肯定找不到工作。我说，没关系，即使你不上学，稍微有点真本领就能找个好工作，这个社会太缺人才了，而教育体系培养人才的成功率真是太低了。&lt;/p&gt;
&lt;p&gt;美国的验光师是需要执照的……国内的执照、牌照呢？只会给做正事的增加障碍……突然想起吴晓波书里一句话：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我很庆幸能生活在这个充满了变化和激情的大时代，但是说实话，我希望它快点过去。&lt;/p&gt;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>营养炔线</title>
      <link>https://qingbo-net.pages.dev/archives/385/</link>
      <pubDate>Wed, 23 Jun 2010 00:46:24 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/385/</guid>
      <description>&lt;p&gt;发布上一篇文章（&lt;a href=&#34;http://qingbo.net/blog/post518.html&#34;&gt;假期在惠东&lt;/a&gt;）后，霉运仍然在继续，回程的火车又因为江西暴雨晚点达 7 小时之久，让我很崩溃！&lt;/p&gt;
&lt;p&gt;到达南昌站后我下车透气，顺便去站台上的小摊买东西。可口可乐被我一眼认出是山寨货，后来发现了营养快线，觉得这东西挺好喝，就买了两瓶（5 元一瓶的定价很符合铁路的风格）。回到车上后，开盖，咦，怎么这么松？噢，里面还有锡纸密封呢，难道是升级了？我探头看了一眼下铺小朋友的营养快线，人家的就没有锡纸，再仔细比较，最大的区别是──我的瓶子上面没有娃哈哈的商标！&lt;/p&gt;
&lt;p&gt;半小时后我又不小心有了一个大发现──不是营养快线，是营养缺陷！&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/4715718945/&#34; title=&#34;gravity-63445263348611125 by qingbo, on Flickr&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;gravity-63445263348611125&#34; src=&#34;http://ac4.farm5.static.flickr.com/4016/4715718945_ccef4feda9_m.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;人家把”炔“字故意放大，并且在下面标明”Nutri-QueXian“，我竟然迟迟没有发现，惭愧惭愧。不知道看本文的朋友们一开始注意到标题里的文字不是”快“了吗？&lt;/p&gt;
&lt;p&gt;山寨威武！&lt;/p&gt;</description>
    </item>
    <item>
      <title>假期在惠东</title>
      <link>https://qingbo-net.pages.dev/archives/384/</link>
      <pubDate>Wed, 16 Jun 2010 08:15:16 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/384/</guid>
      <description>&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;昨天去果园看，一个荔枝都没看到，怀疑被人偷掉了。怀念几年前从树上摘荔枝直接吃，真是新鲜。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Update – 没想到写此文的时候霉运还没结束，这算是最倒霉的一个假期了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;回程坐火车，路过江西正好赶上暴雨，火车因此晚点达 7 小时之久，我也第一次坐火车长达 29 个小时。我们当初在首都机场被延误还想，火车不会这样的……&lt;/li&gt;
&lt;li&gt;路过南昌，买了两瓶”&lt;a href=&#34;http://qingbo.net/blog/post519.html&#34;&gt;营养炔线&lt;/a&gt;“！注意不是营养快线。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不说自己的运气，这边的发展还是很好的，规范﹑舒适﹑方便的公路客运，沃尔玛，苏宁，该有的购物场所都有，作为一个小县城，足以让那些紧邻京城的城市们感到惭愧了。假如再没有北京，北方发展会是什么样？&lt;/p&gt;
&lt;p&gt;本文在 E71 上的 Opera 里撰写﹑发布，发现 textarea 里文字一多就卡得要死啊。&lt;/p&gt;</description>
    </item>
    <item>
      <title>编程语言中的 true 和 false</title>
      <link>https://qingbo-net.pages.dev/archives/383/</link>
      <pubDate>Sat, 12 Jun 2010 15:18:23 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/383/</guid>
      <description>&lt;p&gt;我注意到 web.py 0.33 版本的一个问题，使用它的 Textbox 时，如果初始化给它一个值是 “0”：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;web.form.Textbox(&#39;foo&#39;, value=0)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;那么它 render 出来的代码是：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;foo&amp;quot; name=&amp;quot;foo&amp;quot;/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;没有 value 属性，但显然这不是我想要的。看它的源文件 form.py 里的 render 函数的相关代码，是这样判断要不要 value 属性的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;if self.value:
    attrs[&#39;value&#39;] = self.value
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;web.py 0.34 修复了这个问题，改成了这样（&lt;a href=&#34;http://github.com/webpy/webpy/blob/master/web/form.py#LC154&#34;&gt;完整代码&lt;/a&gt;）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;if self.value is not None:
    attrs[&#39;value&#39;] = self.value
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;各种编程语言对于其它类型变量向布尔值的转换都有自己的一套规则。&lt;/p&gt;
&lt;p&gt;C 语言中除 0 之外的所有值都相当于 true. 判断相等的语句如 &lt;code&gt;if (my_var == 5) ...&lt;/code&gt; 假如不小心少写了一个等号，那就跟 if (5) 等价了，条件永远为真。有些 C 程序员喜欢把判断相等的语句写成 &lt;code&gt;if (5 == my_var) ...&lt;/code&gt; 这样来避免粗心导致的错误，我个人不喜欢这种风格。&lt;/p&gt;
&lt;p&gt;Java 强制所有的条件都使用严格的布尔类型，不用考虑整数 0 会被当作 true 还是 false. 因为写出语句 &lt;code&gt;if (0) {...}&lt;/code&gt; 的话，编译阶段就会报错。&lt;/p&gt;</description>
    </item>
    <item>
      <title>软件购买</title>
      <link>https://qingbo-net.pages.dev/archives/382/</link>
      <pubDate>Fri, 11 Jun 2010 17:37:10 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/382/</guid>
      <description>&lt;p&gt;今天收到一封同事发的邮件针对某软件，说如果大家试用了觉得需要，可以问他申请购买 license. 邮件结尾：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you are using it seriously then please don’t use an evaluation version (this goes for all software) – not only is it illegal, it also keeps money out of the hands of starving software engineers who deserve it.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;盗版直接伤害的是软件作者的利益，但是他们热情的消退明显会影响市场上软件的质量，间接地也会影响到软件用户，包括盗版使用者。这影响在中国尤其严重，所以现在在中国很难看到有人在做桌面软件卖 license。但还是希望更加合理的定价和越来越强的版权意识能让这个市场恢复。手机软件市场的兴起是一个好兆头，不过目前国内舍得为这个付钱的还是少数……&lt;/p&gt;</description>
    </item>
    <item>
      <title>翻看了 blog 以前的文章</title>
      <link>https://qingbo-net.pages.dev/archives/381/</link>
      <pubDate>Fri, 11 Jun 2010 17:23:06 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/381/</guid>
      <description>&lt;p&gt;感触颇多。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://qingbo.net/blog/post105.html&#34;&gt;同学相聚&lt;/a&gt; – 小强这几天在北京出差，4 年左右没见了，只能抽出一点点时间几个人在公司旁边一起吃饭，不能像以前那样放纵了，因为第二天还得上班。吃饭时他们说小强很能喝，我都记不起来了，看这个刚大学毕业不久写的文章，还挺有趣的。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://qingbo.net/blog/post154.html&#34;&gt;昨晚赌赢了&lt;/a&gt; – 第一次工作就是在创业公司，乐趣很多。其实那时候我还在中科院，太无聊去找的兼职，后来也成为我第一份全职工作。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://qingbo.net/blog/post227.html&#34;&gt;我退学了&lt;/a&gt; – 看此文，仍然能感受当时复杂的心情，看朋友们在后面的留言依旧让我感动。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://qingbo.net/blog/post406.html&#34;&gt;急寻一份新工作&lt;/a&gt; – 我一直渴望自由，相信每个人都是，但是自由需要代价。&lt;/p&gt;
&lt;p&gt;blog 确实会留住许多珍贵的回忆。&lt;/p&gt;</description>
    </item>
    <item>
      <title>通宵游戏</title>
      <link>https://qingbo-net.pages.dev/archives/380/</link>
      <pubDate>Sat, 05 Jun 2010 08:55:41 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/380/</guid>
      <description>&lt;p&gt;我们 Team 好久没有过团队活动了，上周老大提议我们通宵打游戏，找回大学宿舍的感觉。于是，昨天晚上我们真的实行了这一计划，到凌晨一两点的时候，大概还有二十人左右，一拨玩桌游，一拨打电脑游戏。不过到三四点的时候，打桌游的就作鸟兽散了……我们玩的电脑游戏包括 CS，红警、星际、魔兽、帝国、文明，不过这其中我只会一点魔兽和 CS.&lt;/p&gt;
&lt;p&gt;我第一次通宵是有一年寒假没有回家在学校待着，农历二十九晚上一夜没睡，第二天（除夕，三十）早上倒不觉得困了。不过到了晚上跟同学在宿舍看春晚，看到九点左右突然不行了，于是睡觉去。一夜的爆竹声一点都没有听见，大年初一醒来的时候，已经是下午五点钟了，正好避免了感受到外面欢庆的气氛而勾起思乡的情绪。不过以后再怎么熬夜，也不能一下睡二十个小时了 🙂&lt;/p&gt;
&lt;p&gt;大学宿舍的生活总是越来越堕落，后来通宵也不是什么稀罕事了，多数是在打游戏。我最喜欢一堆人玩的还是 CS，简单粗暴，并且乐趣多多。尤其是在 03 年左右的时候，CS 特别流行，学校里一栋楼就是一个大局域网，一打开 CS 在局域网里就有好多服务器。因为菜鸟一堆一堆的，像我这种稍微好点的菜鸟就很开心，记得可以在 iceworld 里悄悄跳到他们头顶上然后用刀杀掉。等到05年以后，玩 CS 的就只剩下高手了，局域网里很少能找到服务器，进入外面的服务器只能被虐了。&lt;/p&gt;
&lt;p&gt;昨夜到了凌晨四五点，好多同志就坚持不住了，有的找个地方睡觉，有的看综艺节目，还有的竟然说打不动游戏却在那儿看书！不过可以理解，年纪都大了！&lt;/p&gt;
&lt;p&gt;不管什么名义，熬夜这种事还是少做为好，毕竟伤身体啊。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ruby 解析 HTML (Nokogiri)</title>
      <link>https://qingbo-net.pages.dev/archives/379/</link>
      <pubDate>Sat, 29 May 2010 16:18:35 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/379/</guid>
      <description>&lt;p&gt;很多时候我们需要爬取网页并且获取页面上的特定内容，不一定是做坏事比如爬取竞争对手的数据。也许我想定期爬自己的网站，找到页面上的链接，并且看它们指向的网页是不是都还可以访问。爬到一个网页，为了获得上面所有的链接，我以前首先想到的是用正则表达式。但是 HTML 并不一定是良构的 XML （如果每个人都用 XML 的标准写 HTML，那我们直接用标准的 XML parser 就好了），写正则表达式的时候你需要考虑大小写、换行、单引号/双引号/没有引号、某些地方的空格，太头疼了。&lt;/p&gt;
&lt;p&gt;更好的办法当然是像在浏览器中使用 JavaScript 一样，在 DOM 树上找东西。我比较习惯用 jQuery，通过 CSS selector 来找页面上的节点非常舒服。&lt;/p&gt;
&lt;p&gt;其实大部分的语言都有人实现了 HTML parser. 拿当下比较火的 Ruby 来说，随便一搜就找到两个：&lt;a href=&#34;http://hpricot.com/&#34;&gt;Hpricot&lt;/a&gt; 和 &lt;a href=&#34;http://nokogiri.org/&#34;&gt;Nokogiri&lt;/a&gt;.看名字好像都是日本人写的──不奇怪，Ruby 就是日本人发明的。&lt;/p&gt;
&lt;p&gt;我在 Mac 上先试用了 Hpricot, 很奇怪我测试的一个文档不能正常处理。于是尝试 Nokogiri，很不错，没有发现问题。如果懂 XPath，Nokogiri 提供了 XPath 方式来寻找文档里的节点。或者你习惯了 CSS selector，在 Nokogiri 中也可以用类似 jQuery 的方法：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;require &#39;nokogiri&#39;

html = &#39;...&#39;
doc = Nokogiri::HTML(html)

# 获取页面上所有的链接
doc.css(&#39;a&#39;).each do |link|
  puts &amp;quot;#{link.content}, #{link[&#39;href&#39;]}&amp;quot;
end

# 打出 meta-keywords
puts doc.css(&#39;meta[name=&amp;quot;keywords&amp;quot;&#39;])[0].content
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;使用 Nokogiri 相对于正则表达式的优点当然是更简单直观，而且更安全。缺点呢？如果你只是要页面上很少的数据，Nokogiri 可能比正则表达式稍微慢点，因为不管你要的数据有多么少，它都需要分析整个 HTML 文档（不过 Nokogiri 也提供了 SAX 方式的解析）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>说说凡客诚品(VANCL)的商品评论</title>
      <link>https://qingbo-net.pages.dev/archives/378/</link>
      <pubDate>Thu, 20 May 2010 14:54:51 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/378/</guid>
      <description>&lt;p&gt;首先写写促使我写本文的事情。&lt;/p&gt;
&lt;p&gt;今天看见某 blogger 的一篇文章广泛流传：&lt;a href=&#34;http://liumiao.com/blog/?p=1054&#34;&gt;我为什么越来越不乐意写博客了&lt;/a&gt;。文章内容其实是讲凡客诚品在最近推出的 T-shirt 中的抄袭行为，而现在打开凡客诚品的网站，发现它使用了如下的广告词来推广新产品：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/4623885169/&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;500 款图案 设计师原创&#34; src=&#34;http://ac4.farm5.static.flickr.com/4052/4623885169_07c6fd7be6_o.png&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;让人想起当初 facebook 的新版还在测试，校内网的抄袭过来的“新版”已经上线，并且有大幅标语“校内改版，因你而变”。&lt;/p&gt;
&lt;p&gt;另外在网上搜“凡客诚品 抄袭”，排在前面的页面就有凡客诚品自己的文章：&lt;a href=&#34;http://www.vancl.com/news/0909241420.htm&#34;&gt;VANCL或成行业“公敌” 加价率只有1.2-2倍&lt;/a&gt;。值得关注的是在该文中，凡客诚品使用了大段文字批评其它企业的模仿和抄袭行为，称“其抄袭手法十分低劣”，“已经对部分网站侵权的行为进行了取证”。&lt;/p&gt;
&lt;p&gt;也许这一切只不过是凡客诚品的商业炒作，也许过几天到了一定火候，凡客诚品官方会发个文章说 Flying Mouse 已经加入凡客诚品设计师团队，Shirt.Woot 也已经和凡客诚品合作。但是我觉得这个可能性不是太大。一边抄袭别人，一边在官网的 Press release 批评别人用低劣的手法抄袭自己，这真的很有讽刺意义。看到同为创作者的设计师的作品被抄袭，不知道韩寒是什么感觉。而抄袭者就是他代言的产品的公司。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;扯了半天跟标题无关的，接下来切入正题，讲我的经历──先申明我及我的利益跟凡客诚品没有一点竞争关系。其实我很早就开始在凡客诚品买东西了，并且几个月之前还是非常忠实的拥护者，逢人即推荐，也为凡客诚品拉了不少到现在比我还忠实的客户。&lt;/p&gt;
&lt;p&gt;有一天老婆送我一双鞋，从凡客诚品买的(&lt;a href=&#34;http://www.vancl.com/Product_1E4101E/MoShaNiuPiYunDongXiuXianXie+LanSe.html&#34;&gt;链接&lt;/a&gt;)。我看见了还比较喜欢，因为比较信赖它的品牌。可是第一天穿就感觉后跟非常磨脚，我上班几乎不用走路，穿了厚袜子，到下午就非常疼，晚上回来一看，双脚都破了。仔细查看鞋子，发现后跟的缝合处没有一丝柔软劲儿，坚硬得像石头，好像真的把一块石头缝进去了一样。花 300 块买一双鞋，还要买创可贴，准备让它磨破的袜子。后来发现鞋底的材料很不耐磨，没怎么穿（因为疼），后跟就磨掉一小块了──我在想，为什么不把磨破脚的那一块放在鞋底呢？&lt;/p&gt;
&lt;p&gt;其实偶尔买到一件次品也没关系，谁都是会犯错误的。我让老婆上去写个评论，给以后想买的人参考。真正让人生气的事情发生了──凡客诚品不让差评发表……我后来给凡客诚品客服打了电话，问为什么不让差评发表，他先是问我老婆的手机号码（因为鞋是老婆买给我的），后来确认身份之后，说您的意见很重要，评论会审核一段时间，过几天就会发表──其时我已经看见更晚时间的评论了。&lt;/p&gt;
&lt;p&gt;你懂得这种心情的──你一直被洗脑，等到你醒悟的时候，你会比常人更加憎恨现实。以前每次收到衣服都感到惊喜，是因为好的包装和印象让人下意识地往好处想。这时再回头看之前买到的商品，也不感觉有什么好了──好品质、好设计全是官方的观点，经过过滤的民意。现在看商品评论上方的一行小字：“所有打分与评论均来自已购买本商品用户”，多么巧妙的文案，它让客户觉得这些打分与评论是完全公正和有可信度的！没错，只有购买过的用户才可以发表评论，但这并不是充分必要条件，不是所有购买过该商品的用户都可以发表评论。我感觉鞋子很差的第一反应是自己去写评论，发现不可以才让老婆去写的。现在进入她的帐户，还可以看到订单，但是“我的评论”栏目是空的，写过的评论不见踪影，从订单点击进入商品页面再点写评论，被告知“只有买过商品的客户才可以写评论”。&lt;/p&gt;
&lt;p&gt;这就好像一个恶霸卖东西，把说好话的留下来，觉得不好的人统统赶走。让人不解的是，凡客诚品已经严格限制，必须买过东西的人才有权说话，为什么还要加一道审核的程序呢？很显然，这也是凡客诚品 Marketing 的一部分，他们不放过每一个角落，不止要各种铺天盖地的广告，觉得值得为此付出人力和物力，更何况，这是自家的地皮，不管怎么行！比起淘宝店铺的 100% 好评，这个可操作性高多了。&lt;/p&gt;
&lt;p&gt;平心而论，凡客诚品除了市场做得好，产品在同类企业中也是做得最好的一家之一。但是有些事情，就是让人不可容忍的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 2010-06-26&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;凡客诚品似乎已经承认抄袭，但是差评不让发表的事，要比抄袭更恶心。发现了新料：&lt;/p&gt;
&lt;p&gt;现在看这个&lt;a href=&#34;http://www.baidu.com/s?wd=site%3Avancl.com+%CE%D2%C3%C7%BB%E1%BD%D8%C8%A1%D2%BB%D0%A9%BE%DF%D3%D0%B4%FA%B1%ED%D0%D4%B5%C4%BF%CD%BB%A7%C6%C0%C2%DB%CF%D4%CA%BE%B5%BD%CD%F8%D2%B3%D6%D0&#34;&gt;搜索结果&lt;/a&gt;，发现对于这问题，凡客诚品已经有了官方回答，所谓官方回答，就是客服们遇到此问题很棘手，所以凡客诚品就制定个千篇一律的答复来敷衍客户。为什么我们的评论都不见了？凡客诚品&lt;a href=&#34;http://bbs.vancl.com/showtopic.aspx?page=end&amp;amp;forumpage=1&amp;amp;topicid=59799&#34;&gt;答曰&lt;/a&gt;：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;您好，很抱歉，由于网站上的商品评论因显示条数数量有限，我们会截取一些具有代表性的客户评论显示到网页中，例如关于商品的面料以及穿着后的舒适度等信息，以引导客户正确的选购商品，即使您的评论没有显示到网页中，并不代表vancl不重视您的评论，如您有任何疑问请直接告知客服人员，我们会及时为您处理。在此请您给予谅解，欢迎您继续关注，谢谢！&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;对阉割民意最好的辩解，就是“引导客户正确地选购商品”，凡客诚品果然深谙此道。其实，凡客诚品认为客户没有最基本的判断能力，所以才需要他们“引导客户正确地选购商品”，这是对客户智商的污蔑。以片面的信息来诱导（“引导”）客户，这种做法真的很无耻。摘一段 Animal Farm 中猪 Squealer 给猪 Napoleon 辩解的话：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“…No one believes more firmly than Comrade Napoleon that all animals are equal. He would be only too happy to let you make your decisions for yourselves. But sometimes you might make the wrong decisions, comrades, and then where should we be?…”&lt;/p&gt;</description>
    </item>
    <item>
      <title>lighttpd, web.py, spawning fcgi failed</title>
      <link>https://qingbo-net.pages.dev/archives/377/</link>
      <pubDate>Wed, 19 May 2010 14:27:52 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/377/</guid>
      <description>&lt;p&gt;基于 &lt;a href=&#34;http://webpy.org/&#34;&gt;web.py&lt;/a&gt; 的程序开发起来还是非常简单的，但是我没想到在服务器上部署的时候却遇到了不少麻烦。我用的 web server 是 lighttpd，不能正常启动，查看错误日志，发现如下几行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;2009-12-15 19:48:04: (server.c.1503) server stopped by UID = 0 PID = 25128 2009-12-15 19:48:30: (log.c.166) server started
2009-12-15 19:48:30: (mod_fastcgi.c.1104) the fastcgi-backend /var/www/code.py failed to start:
2009-12-15 19:48:30: (mod_fastcgi.c.1108) child exited with status 1 /var/www/code.py
2009-12-15 19:48:30: (mod_fastcgi.c.1111) If you&#39;re trying to run your app as a FastCGI backend, make sure you&#39;re using the FastCGI-enabled version.If this is PHP on Gentoo, add &#39;fastcgi&#39; to the USE flags.
2009-12-15 19:48:30: (mod_fastcgi.c.1399) [ERROR]: spawning fcgi failed. 2009-12-15 19:48:30: (server.c.931) Configuration of plugins failed. Going down.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;经历了许多周折之后，问题终于解决掉──实际上不是仅仅一个问题。在这儿把经验分享一下，如果有人遇到同样的问题，至少可以少走一些弯路。请按照一下几点检查错误：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mac 软件更新不了 – 解决方案</title>
      <link>https://qingbo-net.pages.dev/archives/376/</link>
      <pubDate>Sat, 15 May 2010 16:50:28 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/376/</guid>
      <description>&lt;p&gt;今天打开 iTunes，提示我有更新，是否下载，点了下载之后，Mac 的软件更新程序开始运行。但是过了一会它告诉我，你的软件已经是最新的，刚才明明 iTunes 自己说有更新的！于是我突然想起前几天在 twitter 上好像有人说 Mac 软件更新不了。我第一反应就是软件更新需要连接的 apple 服务器被封掉了 (事实证明不是)，决定花点时间弄清楚这个问题。&lt;/p&gt;
&lt;p&gt;懒得往下看的直接使用解决办法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在 /etc/hosts 文件添加一行： 80.67.74.160 swcdn.apple.com&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;有兴趣的请继续……&lt;/p&gt;
&lt;p&gt;首先 Google 这个问题，确实已经有不少用户开始在各个论坛上抱怨了，包括&lt;a href=&#34;http://www.macx.cn/MINI/Default.asp?100-1476712-1483172-1-2-2-0-a-.htm&#34;&gt;苹果的官方论坛&lt;/a&gt;，但是似乎没有让人满意的答复，大多数人都说把几个 com.apple.SoftwareUpdate.plist 文件删掉然后重启 Mac 试试 – 你不用试了，没用的。&lt;/p&gt;
&lt;p&gt;从苹果官方网站的&lt;a href=&#34;http://support.apple.com/kb/HT3923&#34;&gt;文章&lt;/a&gt;看到，Mac 软件更新需要连接的服务器有:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://swscan.apple.com&#34;&gt;http://swscan.apple.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://swquery.apple.com&#34;&gt;http://swquery.apple.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://swdownload.apple.com&#34;&gt;http://swdownload.apple.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://swcdn.apple.com&#34;&gt;http://swcdn.apple.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;http://www.google.com/search?q=swscan.apple.com&#34;&gt;Google swscan.apple.com&lt;/a&gt;, 第一条结果即是重要线索，该页面可以正常打开，说明此域名没有问题。页面上有好多 URL，域名都是 swcdn.apple.com，随便复制一个打开，都会首先显示 page not found, 然后跳到该域名的首页。这是一个 domain parking page，顶部还显示“您的域名已经到期，请联系您的服务商续费”。&lt;/p&gt;
&lt;p&gt;dig 的结果很有趣：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ dig swcdn.apple.com

; &amp;lt;&amp;lt;&amp;gt;&amp;gt; DiG 9.6.0-APPLE-P2 &amp;lt;&amp;lt;&amp;gt;&amp;gt; swcdn.apple.com
;; global options: +cmd
;; Got answer:
;; -&amp;gt;&amp;gt;HEADER&amp;lt;&amp;lt;- opcode: QUERY, status: NOERROR, id: 18722
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;swcdn.apple.com.       IN  A

;; ANSWER SECTION:
swcdn.apple.com.    1178    IN  CNAME   swcdn.apple.com.akadns.net.
swcdn.apple.com.akadns.net. 279 IN  CNAME   swcdn.apple.com.edgesuite.net.
swcdn.apple.com.edgesuite.net. 19178 IN CNAME   swcdn.apple.com.edgesuite.net.globalredir.akadns.net.
swcdn.apple.com.edgesuite.net.**globalredir**.akadns.net. 279 IN CNAME a1562.ce.w.ytcdn.net.
a1562.ce.w.ytcdn.net.   1179    IN  A   74.63.75.122

;; AUTHORITY SECTION:
ytcdn.net.      59910   IN  NS  **dns6.expirenotification.com**.
ytcdn.net.      59910   IN  NS  **dns5.expirenotification.com**.

;; ADDITIONAL SECTION:
dns5.expirenotification.com. 2803 IN    A   67.159.44.159
dns6.expirenotification.com. 377 IN A   67.159.44.159

;; Query time: 6 msec
;; SERVER: 124.207.160.106#53(124.207.160.106)
;; WHEN: Sat May 15 23:33:33 2010
;; MSG SIZE  rcvd: 305
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;看来应该不是常见的 DNS 投毒。我没搞清楚 ytcdn.net 到底是谁的，可能是属于 akamai 的，也有可能是 Akamai 在中国的合作伙伴。在域名解析之后，我们的请求被分配给 ytcdn.net 的服务器了。注意 dig 结果加粗的部分，然后查 &lt;a href=&#34;http://who.is/whois/ytcdn.net/&#34;&gt;ytcdn.net 的 whois&lt;/a&gt; 信息，哇，XIN NET 出现了：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Symbian Series 60 程序开发 (2) ListBox</title>
      <link>https://qingbo-net.pages.dev/archives/375/</link>
      <pubDate>Sat, 24 Apr 2010 10:28:36 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/375/</guid>
      <description>&lt;p&gt;&lt;strong&gt;上一篇：&lt;/strong&gt;&lt;a href=&#34;http://qingbo.net/blog/post497-s60-hello-world.html&#34;&gt;Symbian Series 60 程序开发(1) Hello World&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;继为 S60 成功编译 hello world 程序之后，我又尝试了一下跟实用程序更接近一步的开发——使用列表控件即 ListBox，这是在 S60 手机上比较常见的控件。大概花了5个小时的时间，终于知道最基本的用法，然而我已经开始对 Symbian 开发失去兴趣，因为 ROI 太低了。花的时间多，费的力气多，这还只是刚刚开始。我后来看了一眼怎么开发利用 API 如 flickr、evernote 等的应用，发现了由 Nokia 自己写的，网上广为流传的 CClientEngine 类，很复杂，用起来也很复杂。所以本来打算写一系列文章的，可是到这个第二篇，也许就是最后一篇了，目前不太想在这个事上浪费时间。&lt;/p&gt;
&lt;p&gt;最后的代码很简单，时间都浪费在文档查找与尝试的过程中。大致过程如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在 AppView 类的头文件中包含必要的头文件，添加成员变量定义&lt;/li&gt;
&lt;li&gt;在 AppView 类的 ConstructL 函数里添加创建 ListBox 的代码&lt;/li&gt;
&lt;li&gt;给 AppView 类实现 CountComponentControls，提供接口告诉外层容器该 view 包含多少个控件（本例是1）——我感觉这是设计缺陷&lt;/li&gt;
&lt;li&gt;给 AppView 类实现 ComponentControl(TInt aIndex), 提供接口给外层容器，使其可以根据 index 取得相应的控件——感觉同上，如果你没有实现这两步，程序就是个白板，ListBox won’t be rendered.&lt;/li&gt;
&lt;li&gt;给 AppView 类实现 OfferKeyEventL 函数，将按键事件传递给 ListBox 控件&lt;/li&gt;
&lt;li&gt;千万不要忘记在 CHelloS60AppUi::ConstructL 中 AppView 被创建后，将它加入 Control Stack，否则按键事件不会传递过去&lt;/li&gt;
&lt;li&gt;编辑 group 文件夹下面的 mmp 文件，添加需要链接的 lib 文件&lt;/li&gt;
&lt;li&gt;编译方法照旧&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;我懒得每一步都贴出代码了，不过我在 Google code 上创建了一个 project: &lt;a href=&#34;http://code.google.com/p/hello-s60/&#34;&gt;hello-s60&lt;/a&gt;. 它基于 svn 的 &lt;a href=&#34;http://code.google.com/p/hello-s60/source/list&#34;&gt;browse source&lt;/a&gt; 功能比在这里贴代码清楚多了。&lt;a href=&#34;http://code.google.com/p/hello-s60/source/detail?r=3&#34;&gt;Revision 3&lt;/a&gt; 即是本文中所介绍的代码修改，可以非常清楚地看到具体在哪些文件，哪个地方。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SEO 重复内容问题</title>
      <link>https://qingbo-net.pages.dev/archives/374/</link>
      <pubDate>Fri, 23 Apr 2010 15:00:54 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/374/</guid>
      <description>&lt;p&gt;几天前无聊在 Google 看对我这个站点的收录情况 (&lt;a href=&#34;http://www.google.com/search?q=site%3Aqingbo.net&#34;&gt;site:qingbo.net&lt;/a&gt;)，结果让我很意外：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/4545299571/&#34; title=&#34;site:qingbo.net by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://ac4.farm5.static.flickr.com/4007/4545299571_998afd3181_m.jpg&#34; width=&#34;240&#34; height=&#34;240&#34; alt=&#34;site:qingbo.net&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;看截图，严重的重复内容！SEO 之大忌，这里有 Google 关于重复内容的&lt;a href=&#34;http://www.google.com/support/webmasters/bin/answer.py?hl=en&amp;amp;answer=66359&#34;&gt;解释&lt;/a&gt;。重复内容事实上是说不同的页面（即链接，URL）有相同或过度相似的内容。当然这对用户来说很不友好，而搜索引擎作为方便用户查找信息的工具，也当然不喜欢这样的站点。&lt;/p&gt;
&lt;p&gt;不过我的站点被 Google 收录的所谓重复内容，实际上都是同一个页面即首页，只不过 Google 给首页加了参数 (?s=xxx) 之后来爬取，我在写程序的时候并没有考虑到。这确实不是爬虫普通的行为，出现这样的情况是因为我改了域名并且在 Google Webmaster Tools 里面使用了 &lt;a href=&#34;http://www.google.com/support/webmasters/bin/answer.py?hl=en&amp;amp;answer=83106&#34;&gt;Change of address&lt;/a&gt; 功能，而我又没有沿用原来的程序。Google 将原来存在的 url 替换了域名之后来爬取，就出了这样的问题。&lt;/p&gt;
&lt;p&gt;解决的办法有多种，比如 &lt;a href=&#34;http://www.google.com/support/webmasters/bin/answer.py?answer=139066&#34;&gt;canonicalization&lt;/a&gt;, 301 redirect, &lt;a href=&#34;http://www.google.com/support/webmasters/bin/answer.py?answer=147959&#34;&gt;Parameter handling tool&lt;/a&gt; 等等。我修改了一下自己的程序判断 URL，如果不是正规的就 301 跳转一下，并且加了 canonical 标签，希望可以解决重复内容。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Symbian Series 60 程序开发 (1) Hello World</title>
      <link>https://qingbo-net.pages.dev/archives/373/</link>
      <pubDate>Sun, 18 Apr 2010 14:40:10 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/373/</guid>
      <description>&lt;p&gt;&lt;strong&gt;下一篇：&lt;/strong&gt;&lt;a href=&#34;http://qingbo.net/blog/post499-s60-listbox.html&#34;&gt;Symbian Series 60 程序开发 (2) ListBox&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Symbian 平台的程序开发很困难，似乎是众所周知的问题。我目前还不了解是什么造成这种困难，开发工具、开发环境？相对 iPhone 平台来说，众多的屏幕尺寸也是一个问题。另外可能由于 Symbian 平台长期以来主要只是一些大企业在开发应用程序，导致对之有兴趣的个人程序员比较少，而且盈利的机会也不怎么多。如果 iPhone 不是把利益分配给大批的个人程序员和小团队，app store 也不可能这么繁荣吧。开发者少就直接导致社区规模小，开发资料少。&lt;/p&gt;
&lt;p&gt;我基本上还没有接触 Symbian 开发，所以上面的仅仅是个人猜想。不过我这几天倒是初步试了一下 s60 的开发，至少发现工具多而乱，文档多而乱，这里就把写一个 Hello World 程序的过程记下来。本文标题里有个编号，所以我还会继续探索，并继续记录。&lt;/p&gt;
&lt;h3 id=&#34;开发工具选择&#34;&gt;开发工具选择&lt;/h3&gt;
&lt;p&gt;我在使用的手机是 E71, 系统是 S60 3rd Feature Pack 1. 开发语言不必仅限于 C/C++，但是我比较在意性能问题，并且似乎在官方文档里看到过用 Symbian C++ 可以有最大限度的灵活性。我很理解苹果为什么&lt;a href=&#34;http://daringfireball.net/2010/04/iphone_agreement_bans_flash_compiler&#34;&gt;修改 SDK license agreement 禁止代码转化器或者生成器&lt;/a&gt;。&lt;a href=&#34;http://qt.nokia.com/products&#34;&gt;Qt&lt;/a&gt; 似乎有更好的开发工具，可是虽然它被诺基亚收购了，商业开发仍需支付不菲的费用。我很奇怪诺基亚为什么不为开发人员降低用 Qt 开发移动应用的成本。&lt;/p&gt;
&lt;h3 id=&#34;开发环境搭建&#34;&gt;开发环境搭建&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;安装之前注意，所有这些工具都必须安装到同一个磁盘分区，包括打开 IDE 时需要选择的 workspace 路径，以省去不必要的麻烦。&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;安装 &lt;a href=&#34;http://www.forum.nokia.com/info/sw.nokia.com/id/dbb8841d-832c-43a6-be13-f78119a2b4cb.html&#34;&gt;Carbide.c++&lt;/a&gt;，这是一个基于 Eclipse 的 IDE&lt;/li&gt;
&lt;li&gt;Carbide.c++ 安装完成后，应该会弹出一个网页，要求你安装 &lt;a href=&#34;ftp://ftp.activestate.com/ActivePerl/Windows/5.6/ActivePerl-5.6.1.635-MSWin32-x86.msi&#34;&gt;ActivePerl-5.6.1.635&lt;/a&gt; – 必须是这个特定的版本&lt;/li&gt;
&lt;li&gt;接下来&lt;a href=&#34;http://www.forum.nokia.com/info/sw.nokia.com/id/4a7149a5-95a5-4726-913a-3c6f21eb65a5/S60-SDK-0616-3.0-mr.html&#34;&gt;选择要安装的 SDK&lt;/a&gt;，我的 E71 就是 S60 3rd FP1, 列表里默认的就是，直接下载安装&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;hello-world&#34;&gt;Hello World&lt;/h3&gt;
&lt;p&gt;我是参考 Carbide.c++ &lt;a href=&#34;http://carbidehelp.nokia.com/help/index.jsp?topic=/com.nokia.carbide.cpp.doc.user/html/tasks/start/carbide_example.htm&#34;&gt;文档中的例子&lt;/a&gt;做的 Hello World，不需要写代码即可生成一个 S60 的应用，当然了，和所有的 hello world 一样，和所有 IDE 生成的程序一样，这个应用很没用。我这里就不再复制文档里的内容了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ruby 逗号带来的问题</title>
      <link>https://qingbo-net.pages.dev/archives/372/</link>
      <pubDate>Sun, 18 Apr 2010 08:05:28 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/372/</guid>
      <description>&lt;p&gt;几个月前写了一篇 “&lt;a href=&#34;http://qingbo.net/blog/post481-ruby-pitfall.html&#34;&gt;Ruby 的一个陷阱&lt;/a&gt;“，这几天又因为大意得到了另一个教训。&lt;/p&gt;
&lt;p&gt;程序有一段代码本来是 Hash 的，大约如同：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;a = {
  :x = 1,
  :y = 2,
  :z = 3
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;程序结构变化后，我需要给改成变量的赋值，但是忘记删除每行后面的逗号了，于是变成下面的样子：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;x = 1,
y = 2,
z = 3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我觉得学校里那一类闲得没事干的老师肯定会在考试的时候或者课本的习题中出这样的题：请写出变量 x 现在的值。你猜是什么？是一个数组：&lt;/p&gt;
&lt;p&gt;[1, 2, 3]&lt;/p&gt;
&lt;p&gt;看到答案就明白为什么了，是吧……看来 Ruby 语法很灵活，解释器为你发现错误的机会就少了，写程序的时候千万要注意。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mac OS X 中的怪事</title>
      <link>https://qingbo-net.pages.dev/archives/371/</link>
      <pubDate>Sun, 18 Apr 2010 07:37:19 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/371/</guid>
      <description>&lt;p&gt;Mac 一直用得好好的，不过最近发现两件比较奇怪的事情。&lt;/p&gt;
&lt;p&gt;有一天离开办公桌一会，习惯性地锁屏。回来之后一动鼠标，奇怪怎么没锁屏呢？仔细一看，不对，确实出来锁屏状态请求输入密码的对话框了，但是它后面并不是以往的黑屏，而是所有的窗口都可以看到，并且所有操作都可以正常进行，只是密码对话框永远居于所有窗口的前面。我本来想多玩一会再截屏的，不过玩了一小下，一切恢复正常，屏幕变黑，必须输入密码了……&lt;/p&gt;
&lt;p&gt;没过几天，又发现一个 bug，但这个我觉得可能是 Firefox 的问题。两个显示器上分别有一个 Firefox 的窗口，其中一个是正常的，但另一个在地址栏输入的时候，出来的提示竟然跑到另一个显示器上一个奇怪的地方！应该是这个窗口创建那个输入提示的 UI Control 的时候，找错显示器了。将出问题的 Firefox 窗口稍微移动一下位置，问题就没了。&lt;/p&gt;
&lt;p&gt;对了，我的系统还是老旧的 10.5.8.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gravity 在 E71 上怎么用 GPS</title>
      <link>https://qingbo-net.pages.dev/archives/370/</link>
      <pubDate>Wed, 14 Apr 2010 15:43:24 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/370/</guid>
      <description>&lt;p&gt;有了个新手机 (E71) 之后就比较喜欢折腾，尤其对基于位置的应用非常感兴趣，比如在 google maps 中打开 latitude 图层，分享自己的位置，以及查看朋友们都在什么地方，可惜 google buzz 的图层在国内无法使用。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://foursquare.com/&#34;&gt;foursquare&lt;/a&gt; 是目前最流行的一个基于位置的服务了，另外 twitter 也开始支持 geotagging，尽管 s60 的应用跟 iPhone 比起来太少，有人还是做出了一个出众的软件 &lt;a href=&#34;http://mobileways.de/products/gravity/gravity/&#34;&gt;Gravity&lt;/a&gt;. 它最先只支持 twitter，现在最新的测试版不仅支持 twitter 自定义 API proxy，还支持了 foursquare, facebook, google reader, 新浪微博等一堆 web 服务。提一下，用 Gravity 看 Google reader 非常舒服。&lt;/p&gt;
&lt;p&gt;几天前在机场比较无聊，又急着想方便地使用手机的 GPS 功能在 twitter, foursquare 上面分享位置，于是买了个 Gravity 的 license，这玩意的 UI 在 symbian 上确实是算好的，可惜的是文档太少，很多只能自己摸索，或者看山寨文档。比如一开始我用试用版就以为试用版限制了不能发布信息呢，后来才知道直接输入文字即可。&lt;/p&gt;
&lt;p&gt;最郁闷的是我连续折腾了好多天，都没有在 E71 上让 Gravity 成功使用 GPS. 本来想着在机场买了就可以用的，结果回来之后才搞明白，现在真相大白，不得不把 E71 上 Gravity 的用法分享出来，以造福广大劳苦人民。&lt;/p&gt;
&lt;p&gt;其实很简单——安装 FP2 版本！janole (Gravity 作者，此为其 twitter 用户名) 每次发布新版，总是有两个版本，比如最近发布了 6375 测试版，就给了两个短链接 bit.ly/6375ALL 和 bit.ly/6375FP2 (此域名被封，无需尝试)。我们普遍都认为 E71 是 FP1，于是就安装 6375ALL，这样无论如何都不能使用 GPS 的（我用尽了各种招数，包括打电话给朋友抱怨这软件垃圾……）。 在写 tweet 的界面使用上方向键，只能让 GPS icon 消失或者显示灰色；点击菜单 “options – tools – gps to clipboard”, 没有任何反应。foursquare 也找不到 checkin 的地方。&lt;/p&gt;</description>
    </item>
    <item>
      <title>世界很小</title>
      <link>https://qingbo-net.pages.dev/archives/369/</link>
      <pubDate>Fri, 09 Apr 2010 16:52:09 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/369/</guid>
      <description>&lt;p&gt;半个月前，美国那边过来一个同事，聊天时我第一次从他那儿知道百姓网的渊源（以前没怎么关注过），于是就查了一下相关的新闻，当时就看到了&lt;a href=&#34;http://home.wangjianshuo.com/&#34;&gt;王建硕&lt;/a&gt;的主页，但是没太在意，只粗略浏览了一篇访问 Facebook 的记录。&lt;/p&gt;
&lt;p&gt;恰好几天后，有好友发给我一个链接，是王建硕的最新一篇 blog post，上面竟然有我主页的链接（&lt;a href=&#34;http://home.wangjianshuo.com/archives/20100406_nice_technical_blogs.htm&#34;&gt;Nice Technical Blogs&lt;/a&gt;）。&lt;/p&gt;
&lt;p&gt;这事一方面在时间上很巧，另一方面也说明技术圈挺小的，我不太记得那个美国同事是不是跟王建硕也见面过了。后来我猜测，应该是 &lt;a href=&#34;http://robertmao.com/&#34;&gt;Robert Mao&lt;/a&gt; 推荐了我大学同学兼室友 &lt;a href=&#34;http://xlvector.net/blog/&#34;&gt;xlvector&lt;/a&gt; 和&lt;a href=&#34;http://blog.csdn.net/zhengyun_ustc&#34;&gt;郑昀&lt;/a&gt;，他们都在研究推荐系统相关课题，正好 xlvector blog 有我的一个链接，我就被不小心发现了。包括我在内的三个人都是来自中国科学技术大学，这也算是个巧合……&lt;/p&gt;
&lt;p&gt;被点名了，流量有小幅跳跃，google reader 增加了几个 subscriber, 给我加了点动力（压力），得提高文章质量。&lt;/p&gt;</description>
    </item>
    <item>
      <title>dabr 架设与修改</title>
      <link>https://qingbo-net.pages.dev/archives/368/</link>
      <pubDate>Sun, 21 Mar 2010 13:11:35 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/368/</guid>
      <description>&lt;p&gt;我的 Nokia 3100 已经用了大约有四五年了，最近很有冲动要买个 iPhone，不过某人却给我买了个 E71，粉碎了我的梦想。在 Nokia 3100 退休之际，看一下它的丰功伟绩：发出的信息 10243，收到的信息 11431.&lt;/p&gt;
&lt;p&gt;其实 E71 我也比较满意，不买 iPhone 也省下一笔钱。先配置了一下 Share Online，让它可以把照片上传到 flickr，然后就开始整 twitter. 先试了一下 Gravity，界面挺不错的，就是不是免费软件，最关键的是听说流量耗费比较大，我试用了一会确实如此，实在想不到为什么它会用那么多。&lt;/p&gt;
&lt;p&gt;我一直在想自己做一个 twitter 客户端，只需要能够发布和查看与自己相关的信息（我发布的或者提到我的），几个月前曾经用 Adobe AIR 尝试过，后来因为时间问题搁浅了，也许以后有空了还会拣起来。我关心的信息就这么多，但是 Gravity 不管这些，它会定时更新默认的 timeline，一方面耗费流量，另一方面信息过载让我比较头疼。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://code.google.com/p/dabr/&#34;&gt;dabr&lt;/a&gt; 是个非常好的选择，后来我使用也非常喜欢，虽然它只是个 mobile web interface. 第一，它可以让我访问到 twitter; 第二，只有在你操作的情况下它才会刷新页面，产生数据流量，且流量相当小; 第三，它是开源软件，可以非常方便地修改来适应自己的需求。其实它的安装就是比普通的 PHP 程序多了个 rewrite rule，很简单。不过我的配置比较特殊，也作了些修改，所以记下来，就当是个另类的 dabr 教程。&lt;/p&gt;
&lt;p&gt;我的服务器上有两个 web server，lighttpd 运行着包括 qingbo.net 在内的一些 PHP 或者 python 程序，监听 80 端口，apache 监听 443 端口，是我的私人 svn repository 和 trac 的前端，只能 https 访问。由于还没有为 apache 配置 PHP 环境，所以我仍然把 dabr 的程序分配给 lighttpd 运行，但是给它单独开了一个新端口（比如 3000），且只能本机访问（请求目标地址为 127.0.0.1）。又因为 lighttpd 没有配置 ssl，就用 apache 做个 ProxyPass，指向 127.0.0.1:3000，这样外部还是只能通过 https 来访问 dabr，避免某些安全隐患。&lt;/p&gt;</description>
    </item>
    <item>
      <title>粗读了 Web 信息架构</title>
      <link>https://qingbo-net.pages.dev/archives/367/</link>
      <pubDate>Sat, 06 Mar 2010 15:29:34 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/367/</guid>
      <description>&lt;p&gt;前段时间买了一本“&lt;a href=&#34;http://www.douban.com/subject/3169342/&#34;&gt;Web 信息架构&lt;/a&gt;”，英文名是 Information Architecture for the World Wide Web – Designing Large-Scale Web Sites. 网上还是有一些好评的，不过我却感觉有点无聊。&lt;/p&gt;
&lt;p&gt;我这人本来就不是特别喜欢读书，遇到这种比较无聊的就更觉得没劲了。我只认真地看了一小半，然后用刚才的十几分钟粗略浏览了剩余的内容。这本书给我的感觉就是总结了一些 common sense，或者说是汇编了所谓信息架构所涉及到的一些学科的知识。&lt;/p&gt;
&lt;p&gt;我很难想象这样一个会干涉到产品用户体验、数据库设计等的角色如何在公司的夹缝中生存，看来目前专注于这个的话，也只能给别人做咨询了。不过，产品设计人员在无聊的时候可以打发一下时间。&lt;/p&gt;
&lt;p&gt;书中提到的“搜索日志分析”我还是有点兴趣的，该书在109页的脚注里推荐了一本书 “Search Analysis for Your Site: Conversations with Your Customers”，2007年出版。但是我在网上搜寻许久都没找到，到&lt;a href=&#34;http://rosenfeldmedia.com/books/searchanalytics/&#34;&gt;脚注给出的链接&lt;/a&gt;看，发现该书名字跟脚注有些出入，并且状态是 “in progress” ——并没有出版。该未出版的书和这本信息架构的作者中都有 Louis Rosenfeld 这个人，我不知道他们出于什么目的以这样的方式利用这个广告位。我很害怕这本书也是由废话堆积而成。&lt;/p&gt;
&lt;p&gt;该书引用的一段话我倒是很喜欢（115页）：&lt;/p&gt;
&lt;p style=&#34;text-align:right;&#34;&gt;
  等一下，葛瑞蒂，月亮还没升上来。&lt;br /&gt; &lt;br /&gt;等到月亮升上来，才能看见我洒的面包屑。&lt;br /&gt; &lt;br /&gt;面包屑会告诉我们回家的路。&lt;br /&gt; &lt;br /&gt;——《韩森与葛瑞蒂》&lt;!-- doubanclaim735155a66f666e8b --&gt;
&lt;/p&gt;
&lt;p&gt;这就是&lt;a href=&#34;http://en.wikipedia.org/wiki/Breadcrumb_%28navigation%29&#34;&gt;“面包屑”导航 (breadcrumb navigation)&lt;/a&gt;名字的由来。我没有找到完全对应的英文原文，但是&lt;a href=&#34;http://www.pitt.edu/~dash/grimm015.html&#34;&gt;这一段&lt;/a&gt;很相似：&lt;/p&gt;
&lt;p&gt;“Wait, when the moon comes up I will be able to see the crumbs of bread that I scattered, and they will show us the way back home.”&lt;/p&gt;</description>
    </item>
    <item>
      <title>.NET 还是 Java?</title>
      <link>https://qingbo-net.pages.dev/archives/366/</link>
      <pubDate>Sat, 06 Mar 2010 05:57:00 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/366/</guid>
      <description>&lt;p&gt;今天跟一个计算机专业上大二的小兄弟聊了一会，期间他问：”你们公司招 Java 程序员?是不是基本大公司都不用 .NET?“&lt;/p&gt;
&lt;p&gt;他在自学 C#，这让我隐约回想起我学习计算机的过程。我基本是上大学才开始接触计算机，之前也就去过几次网吧，去校长办公室里打过几次抢滩登陆战。大学的一个寒假，我带回家一大堆计算机方面的书要自学，印象比较深的是还有一本讲 3ds Max 的书，当时什么都不知道，什么都想学……但是当时没有任何人给我指路，一直感觉很迷茫。就像这位小兄弟一样，经常担心，我学了这个技术将来有没有饭吃？&lt;/p&gt;
&lt;p&gt;其实大学跟培训学校的区别就是，培训学校主要传授你一门吃饭的技艺，而大学要教会你如何自己探索吃饭的本事。很不幸的是许多大学已经沦落成为培训学校了。上完大学之后别人问你在大学学到了什么，你如果说我学会了 Java 或者学会了 .NET，岂不让人耻笑？如果大学的目的就在于此，那么大学早就应该开设 Java 系、.NET 系了，学制最多一年。&lt;/p&gt;
&lt;p&gt;问这样的问题，就像要去种地，问别人我是该学锄头呢？还是该学犁呢？好吧，你学犁吧，你就永远是一头牛。你只管闷头拖着犁往前走，撒下的是别人的种子，结出的是别人的果实。&lt;/p&gt;
&lt;p&gt;对于计算机系的人来说，数据结构、算法、编译原理、操作系统原理、计算机体系结构等这些还是必须要学好的。Java 也好，.NET 也好，编程语言只是工具。打好了基础，学什么语言都很容易，可以融会贯通，可以用它们来实现自己的想法。否则，就很容易沦为可怜的流水线工人，帮别人实现那可恶的 CMM…&lt;/p&gt;</description>
    </item>
    <item>
      <title>物流也有技术含量</title>
      <link>https://qingbo-net.pages.dev/archives/365/</link>
      <pubDate>Tue, 02 Mar 2010 14:28:29 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/365/</guid>
      <description>&lt;p&gt;今天又看到了一篇分析物流的文章 – “&lt;a href=&#34;http://tech.sina.com.cn/i/2010-02-28/09063886887.shtml&#34;&gt;亚马逊“乱”改卓越&lt;/a&gt;”，我感觉写得还是挺不错的。想起来几个月前看到的类似主题的文章“&lt;a href=&#34;http://blog.donews.com/laobai/archive/2009/08/02/1546000.aspx&#34;&gt;为什么都要自建物流&lt;/a&gt;”，该文对自建物流的好处也分析得很详细。再到网上搜“&lt;a href=&#34;http://www.google.com/search?q=%E8%87%AA%E5%BB%BA%E7%89%A9%E6%B5%81&#34;&gt;自建物流&lt;/a&gt;”，发现漫山遍野都是这个话题。&lt;/p&gt;
&lt;p&gt;如果我没记错的话，我只在当当网买过一本书（&lt;a href=&#34;http://qingbo.net/blog/post295.html&#34;&gt;当当买书经历&lt;/a&gt;），恰好就遭遇了一次不愉快，此后就尽量避免在当当买书了。每次都是在豆瓣、当当看书评，然后到卓越下单买书。&lt;/p&gt;
&lt;p&gt;说实话，卓越的网站做得挺烂的，但是吸引我的就是它的物流。买的东西能够准确及时地送达，这才是最重要的。自建物流毫无疑问可以更好地跟自己的电子商务系统对接，提供更好更便捷的送货服务，展现更好的品牌形象。&lt;/p&gt;
&lt;p&gt;物流方面我肯定是外行，不敢多说免得遭人耻笑。不过做互联网多多少少也跟电子商务有点关系，而上面提到的都是电子商务网站的物流。我很欣喜的看到，物流也可以很有技术含量。&lt;/p&gt;
&lt;p&gt;看到用户行为分析在物流系统决策中的应用，感觉数据分析、数据挖掘还是大有前途的，尤其是在中国，大部分的企业这一块还是空白，但是大家都开始认识到它的重要性了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>第二次滑雪</title>
      <link>https://qingbo-net.pages.dev/archives/364/</link>
      <pubDate>Sun, 28 Feb 2010 06:41:11 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/364/</guid>
      <description>&lt;p&gt;去年春天我平生第一次去滑雪，没有经过人指导，头回上道之后都不知道怎么下来。不过后来知道点基本的东西了，看看下面人少的时候就冲下去了……&lt;/p&gt;
&lt;p&gt;前天公司组织大家一起去滑雪泡温泉，还很贴心地找教练教我们，总算知道了一些要领，在初级道上可以很自如地滑了。后来上了两次中级道，不过那段又陡又窄的路很让我发怵，速度一快了就忘记怎么控制了。但是再回来初级道，就感觉速度太慢，想快都快不起来。最后我忽悠部门所有同事包括第一次来滑雪的也都上中级道玩了一把……&lt;/p&gt;
&lt;p&gt;比较好的是我在中级道上虽然有时候歪歪斜斜，但最终没有倒，整天下来一个跟头都没摔。&lt;/p&gt;
&lt;p&gt;晚上抽奖还抽到了一瓶 Johnnie Walker, 立即就贡献出来给大家过了酒瘾。有同事后来甚至喝得不省人事。总体来说这次玩得挺愉快的，只是我们在&lt;a href=&#34;http://www.daodao.com/Hotel_Review-g294212-d1123963-Reviews-Hot_Spring_Leisure_City-Beijing.html&#34;&gt;温都水城&lt;/a&gt;住，却没有机会去水世界玩点刺激的项目。&lt;/p&gt;</description>
    </item>
    <item>
      <title>不能取得类 WorkBook 的 SaveAs 属性</title>
      <link>https://qingbo-net.pages.dev/archives/363/</link>
      <pubDate>Mon, 08 Feb 2010 07:26:58 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/363/</guid>
      <description>&lt;p&gt;同事（非编程出身）用 Ruby 写了个程序，生成一个 Excel 文件，把它作为附件发邮件给某些人。Excel 文件中是昨日数据的报告，他让我帮他每天让该程序自动运行一次。因为程序生成 Excel 文件调用的是 win32 OLE，所以是不能在 Linux 里用 cron 定期运行的，只好在一台 Windows 机器上用“任务计划程序”来实现。&lt;/p&gt;
&lt;p&gt;奇怪的是到了预定的时间，我们并没有收到电子邮件。到任务计划程序中看，果然任务执行失败了，但是没有更详细的信息，这符合微软的风格──用户不需要知道太多。于是在程序中加入 exception handling，将异常信息写入文件，执行任务后，看到异常是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;OLE error 0x800a03ec: 不能取得类 WorkBook 的 SaveAs 属性&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;得说明一下，这个 Ruby 程序如果是双击或者在命令行执行，会正常运行。因为指定了 DisplayAlerts = false, 保存文件的时候也不会有提示（假如有提示，就不好自动运行了）。但是在任务计划程序中就出现了这样的错误，我猜想是环境的问题，就像 Linux cron 里的环境变量跟正常登录的 shell 不完全一致一样。&lt;/p&gt;
&lt;p&gt;该错误的英文版本是 “Unable to get the SaveAs property of the Workbook class”. 很多时候因为中文的有价值信息太少，我们需要猜测出错信息的英文版本，去搜索英文的资料。不过这次英文资料并没有帮上忙，最后试了一下 &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/bb178003.aspx&#34;&gt;SaveCopyAs&lt;/a&gt; 这个方法，成功！既然用的是微软的东西，咱也不刨根问底地研究为什么这个方法就可以了──你可能会成为人人景仰的佛，但更可能成为唾弃的疯子。&lt;/p&gt;
&lt;p&gt;把 SaveAs 换成 SaveCopyAs 之后，任务计划程序中可以正常运行了，但是在命令行执行时，却会弹出一个需要确认的对话框……同理，不考虑为什么了，直接以暴制暴，用最简单的方式来解决掉它：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;begin
  workbook.saveas(filename)
rescue Exception =&amp;gt; e
  workbook.savecopyas(filename)
end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样，手动执行时使用 SaveAs, 任务计划程序中 SaveAs 会抛出异常，就会使用 SaveCopyAs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>用 CSS3 @font-face 嵌入字体</title>
      <link>https://qingbo-net.pages.dev/archives/362/</link>
      <pubDate>Mon, 08 Feb 2010 04:21:01 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/362/</guid>
      <description>&lt;p&gt;今天刚发现牛人 &lt;a href=&#34;http://diveintomark.org/&#34;&gt;Mark Pilgrim&lt;/a&gt; 正在写的 &lt;a href=&#34;http://diveintohtml5.org/&#34;&gt;Dive Into HTML5&lt;/a&gt;，对网站上标题的字体很感兴趣，查了一下，是 &lt;a href=&#34;http://www.thibault.org/fonts/essays/&#34;&gt;Essays 1743&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;这个字体以 LGPL 协议发布，并没有普及到大部分计算机上，所以需要用到 CSS3 的字体嵌入技术，&lt;a href=&#34;http://randsco.com/index.php/2009/07/04/cross_browser_font_embedding&#34;&gt;Cross Browser Font Embedding with the CSS3 @font-face selector&lt;/a&gt; 一文详细讲解了跨浏览器的解决办法。&lt;/p&gt;
&lt;p&gt;我已经把本站的头部标题改成使用这个字体，如果你没有看到可能是因为缓存的问题，请刷新一下浏览器。(update: 看久了感觉不太舒服，于是已经换掉了).&lt;/p&gt;
&lt;p&gt;上面提到的教程其实挺麻烦的，主要是 IE 仅支持 eot 格式字体文件。由于我是复制 Dive Into HTML5 的样式，于是直接从那儿把字体文件下载到我服务器上，再把 CSS 代码搬过来就可以了。&lt;/p&gt;
&lt;p&gt;@font-face 定义：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;@font-face {
  font-family: &amp;quot;Essays 1743&amp;quot;;
  src: url(&amp;quot;/static/font/essays1743-min.eot&amp;quot;);
  src: local(&amp;quot;Essays 1743&amp;quot;), url(&amp;quot;/static/font/essays1743-min.ttf&amp;quot;)
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在标题应用该样式：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#header-title {
  font-family: &amp;quot;Essays 1743&amp;quot;;
  ...
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;当然了，嵌入字体的做法对中文来说不大适用，因为一个中文字体文件少说几个到十几个 MB, 用户不能忍受，我们的服务器也不一定能够忍受。所以对中文来说，如果只是想标题使用特殊字体，最好做成图片。而这个英文字体文件只有 30 多 KB，和一张图片的大小差不多，如果有大量的文字需要使用该字体，存储、带宽这方面就划算得多了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>外链点击没有 referrer 信息?!</title>
      <link>https://qingbo-net.pages.dev/archives/361/</link>
      <pubDate>Sat, 30 Jan 2010 16:04:12 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/361/</guid>
      <description>&lt;p&gt;最近经常盯着访问日志，有一次一边 “tail -f” 日志，一边在 Google Reader 中点击了一下自己的一个日志（此处“日志”指 blog post）链接，发现新增的一行日志竟然没有 referrer 信息！&lt;/p&gt;
&lt;p&gt;我的浏览器并没有做任何隐藏 referrer 的特殊配置，所以这事儿我纳闷了好多天—— Google 是怎么做到的？即使可以做到，有什么必要隐藏 referrer 呢？&lt;/p&gt;
&lt;p&gt;今天晚上动用了一大堆工具——Firebug, Fiddler, Eventbug, 研究了半天，我想 Google 一定是在用 JavaScript 完成这样的 trick.&lt;/p&gt;
&lt;p&gt;后来突然想明白了，我的 Google Reader 一直是使用 https 连接的（避免意想不到的 connection reset），这不是 Google 做的，而是浏览器的默认行为。这么做很有必要，保护用户的隐私。把 https 换成 http 再点击，发现请求头中确实加入了 referrer 字段。据我所知，&lt;a href=&#34;http://www.quirk.biz/searchstatus/&#34;&gt;SearchStatus&lt;/a&gt; 这个扩展在遇到 https 页面的时候也是不会向外作任何查询的。&lt;/p&gt;
&lt;p&gt;根据我做的山寨测试，IE, Firefox, Opera 都是这么做的，很好。微软还有一篇 &lt;a href=&#34;http://support.microsoft.com/kb/178066&#34;&gt;support article&lt;/a&gt; 说这个事，里面提到:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;many secure (HTTPS) Web servers store secure information such as credit-card data in the URL&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我想现在应该很少有网站这么做了，不过 url 里面还是很容易找到涉及隐私的信息。隐藏 referrer 虽然给做 web analytics 的人带来了干扰，仍然是非常必要的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SQL Server 无法修改表，超时时间已到</title>
      <link>https://qingbo-net.pages.dev/archives/360/</link>
      <pubDate>Mon, 25 Jan 2010 14:11:05 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/360/</guid>
      <description>&lt;p&gt;SQL Server 一张表存储大量数据的时候，对表结构作修改就非常耗时了。其实耗时还好说，我们年轻，有的是时间……最怕的是它觉得太耗时就放弃给你修改了。这几天想给某个表加个字段，就遇到了这样的问题。点了保存后过一段时间，就会弹出个对话框说：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;无法修改表。超时时间已到，在操作完成之前超时时间已过或服务器未响应&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;解决办法：在 SQL Server Management Studio 里，通过菜单“工具-选项”打开选项对话框。在左侧寻找“设计器-表设计器和数据库设计器”，然后在右侧勾选“为表设计器更新重写连接字符串的超时值”，在它下面的“事务超时时间”默认应该是 30 秒，我们应该把它改得稍微大一些，不过好像不能超过65535.&lt;/p&gt;
&lt;p&gt;微软的软件报错的方式很像某些部门的声明──令人费解，这是它一贯的作风。&lt;/p&gt;
&lt;p&gt;话说我本来是比较不喜欢用 SQL Server 的，尤其是刚开始的时候遇到太多气人的问题，可是由于工作原因又不得不用。不过当那些让人郁闷的问题一个一个解决掉的时候，它也就不那么烦人了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ruby 的一个陷阱</title>
      <link>https://qingbo-net.pages.dev/archives/359/</link>
      <pubDate>Mon, 25 Jan 2010 13:01:33 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/359/</guid>
      <description>&lt;p&gt;今天是 2010-01-25. 我在 irb 中测试 Date 类的 &lt;a href=&#34;http://www.ruby-doc.org/core/classes/Date.html#M000688&#34;&gt;today&lt;/a&gt; 方法：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt; (Date.today -1 ).to_s
=&amp;gt; &amp;quot;2010-01-25&amp;quot;
&amp;gt;&amp;gt; (Date.today - 1).to_s
=&amp;gt; &amp;quot;2010-01-24&amp;quot;
&amp;gt;&amp;gt; (Date.today-1).to_s
=&amp;gt; &amp;quot;2010-01-24&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;结果多少让人有点吃惊。第一次我输入太快发生了错误，减号和 1 之间的空格被我敲到 1 后面去了，但是两次结果竟然不一样！&lt;/p&gt;
&lt;p&gt;不过我很快回过神来了，第一次输入，Ruby 把 -1 解释成为 today 方法的参数了。因为 Ruby 的方法调用可以不加括号，虽然不鼓励所有的函数调用都这么干，但是去掉一对空的括号是被鼓励的(&lt;a href=&#34;http://www.pathf.com/blogs/2008/10/elements-of-ruby-style/&#34;&gt;ref&lt;/a&gt;)。例如 puts，我就没见过有人调用它会加括号。&lt;/p&gt;
&lt;p&gt;再看第三个输入，那些对空格很吝啬的人也不会遇到这样的问题，除非他不小心在减号前打了一个空格。运算符和操作数之间的空格竟然影响了程序的解释结果，这让人很纠结。为了保险起见，我还是给这个方法调用加上了一对空的括号。&lt;/p&gt;
&lt;p&gt;假如 Ruby 像其它语言一样要求方法调用必须加括号，这个问题就不会存在。对于解释型语言来说，语法的灵活很可能导致解释效率的降低。不过这么多人喜欢 Ruby，也有一部分原因是它跟其它语言很不一样。&lt;/p&gt;
&lt;p&gt;我忽然想到，如果大学里面有 Ruby 课程（千万不要是必修，把大学变成培训班），肯定会有某些老师把上面的这个小把戏作为考试题，看着学生们出错得意地笑。就如同考察逻辑运算符的优先级一样无聊，其实只要记住括号的优先级最高就行了。&lt;/p&gt;
&lt;p&gt;另外，假如 Ruby 像其它语言一样要求方法调用必须加括号，有的 &lt;a href=&#34;http://stackoverflow.com/questions/1677861/how-to-implement-a-callback-in-ruby&#34;&gt;callback 实现&lt;/a&gt;就会更简单。把方法作为参数传递的时候，像 Python 一样直接写方法名不就可以了吗？不行，这是一个方法，方法调用不必要加括号，Ruby 解释器发现了方法名就会尝试执行它。所以得写成 “method(:my_callback)”，才能传入一个 Method object. 又因为这是一个 &lt;a href=&#34;http://ruby-doc.org/core/classes/Method.html&#34;&gt;Method&lt;/a&gt; object，所以调用它的时候也不能像 Python 一样简单地写 “callback(…)” 了，需要写成 “callback.call(…)”.&lt;/p&gt;
&lt;p&gt;看来“可省略的括号”使得这种思路的实现复杂化了，不过似乎 block 也是无所不能……&lt;/p&gt;</description>
    </item>
    <item>
      <title>Milestone blog-0.2 completed</title>
      <link>https://qingbo-net.pages.dev/archives/358/</link>
      <pubDate>Sun, 24 Jan 2010 13:40:29 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/358/</guid>
      <description>&lt;p&gt;2 weeks late…我在用 trac 跟踪自己的业余项目，今天终于 close 了这个 milestone 的所有 tickets.&lt;/p&gt;
&lt;p&gt;除了前几天记录的&lt;a href=&#34;http://qingbo.net/blog/post474-latest-comments-custom-search.html&#34;&gt;最新评论和站内搜索&lt;/a&gt;两个功能，这个 milestone 还包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sitemap.xml 生成&lt;/li&gt;
&lt;li&gt;更新了旧文章中所有指向旧域名的交叉链接到正确的新域名链接。因为我不光是换了域名，程序、数据库都变了，所以稍微麻烦一些&lt;/li&gt;
&lt;li&gt;评论框 Markdown 效果预览&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;还有其它好多琐碎的东西。最近的改进大部分都是访问者不太会注意到的。&lt;/p&gt;
&lt;p&gt;另外发现有一大堆 python 的进程，于是为了整洁起见，重启了一下服务器。我给我的程序指定了 fastcgi 的 max_procs 为 1，所以不可能是正常地 spawn 出来的，而很有可能是重启 lighttpd 的时候留下的，看来以后 stop 的时候要杀一下进程了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpenID, 信赖哪个 Provider?</title>
      <link>https://qingbo-net.pages.dev/archives/357/</link>
      <pubDate>Fri, 22 Jan 2010 12:41:46 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/357/</guid>
      <description>&lt;p&gt;OpenID 的概念确实非常好，正如它网站首页的大幅标语：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Can’t remember your passwords? Tired of filling out registration forms?&lt;br&gt;
OpenID is a safe, faster, and easier way to log in to web sites.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我曾经在 myOpenID 注册了一个帐号，然后在原来的 qingbo.org 首页加入了 delegate 之类的 meta 标签，后来也没怎么用过。&lt;/p&gt;
&lt;p&gt;知道最近想修改 twitterfeed 上的自动发布选项时，才发现发布我 feed 的帐号用的是 OpenID…… 这可郁闷了，此时我的 qingbo.org 首页已经 301 redirect 到 qingbo.net 了。终于有一天我以迅雷不及掩耳之势取消了重定向、登录进 twitterfeed (期间密码输入错误许多次)、然后又恢复了重定向。进了 twitterfeed 的帐户，我马上删除了里面所有的 feed，退出后重新注册了一个帐号── twitterfeed 当初是只能用 OpenID 登录的，但现在加上自己的注册功能了。&lt;/p&gt;
&lt;p&gt;由于 OpenID 还没有普及到一定程度，造成我注册了一个 OpenID 却忘记了密码。普及程度不够还造成一个比较严重的后果就是对于像以前的 twitterfeed 一样只提供 OpenID 登录的站点来说，会阻挡一部分不太愿意跑到别处注册一个 ID 的人。不过随着现在 Google, Yahoo! 等纷纷提供 OpenID 服务，这个问题好多了，大部分人都会有 Google, Yahoo! 的帐号。有 Google 帐号，即使不把它做 OpenID 用，你还可以使用 Google 数不清的优秀服务，而注册一个“专门提供 ID”而没有任何实际服务的比如 myOpenID 帐号，过阵子不用就会像我一样忘掉了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mac 还是缺中文输入法</title>
      <link>https://qingbo-net.pages.dev/archives/356/</link>
      <pubDate>Thu, 21 Jan 2010 17:16:56 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/356/</guid>
      <description>&lt;p&gt;中文显然不适应现代信息化的发展——这句话恐怕会引来不少争论，幸好现在我 blog 收视率很低。许多人在 Linux 面前退却的原因，可能就是系统不能很容易地支持中文，或者不能很容易地配置好中文输入。这问题最近几年在“多方努力”下，应该是比五年前好多了。曾经有“汉语编程”的闹剧，不知道有没有大学开了专业课，解决了就业问题，也不知道汉编的认证有没有人买到。现在又爆出了“汉办”的&lt;a href=&#34;http://www.flickr.com/photos/qingbo/4292322808/&#34;&gt;惊天丑闻&lt;/a&gt;，怎么这么多笑话都扯上“汉”啊……&lt;/p&gt;
&lt;p&gt;扯远了。开始使用 Mac 以后，我买了个 QIM 的 license. 买的时候就知道有 &lt;a href=&#34;http://fit.coollittlethings.com/&#34;&gt;FIT&lt;/a&gt; 了，不过觉得收费的肯定是比免费的要好，就从来没有试过 FIT. 直到前几天在 twitter 上抱怨 Mac 输入法也没有个像 Windows 上的一样好的，有两位朋友就推荐我用 FIT，于是下载安装了。使用了一天多，反正没感觉比 QIM 差，至少响应速度是明显快了。词库方面也还不错，倒是 QIM 的词库的排序经常让我感觉很蹊跷。&lt;/p&gt;
&lt;p&gt;FIT 的原作者已经停止更新，&lt;a href=&#34;http://fit.coollittlethings.com/?page_id=109&#34;&gt;最近的发布&lt;/a&gt;都是由 &lt;a href=&#34;http://hi.baidu.com/tianyu263&#34;&gt;tianyu263&lt;/a&gt; 完成的。&lt;/p&gt;
&lt;p&gt;更酷的是 tianyu263 还制作了一个&lt;a href=&#34;http://hi.baidu.com/tianyu263/blog/item/028712ea3dea30d8d539c906.html&#34;&gt;基于 sogou 云输入法的 Mac 输入法&lt;/a&gt;，只可惜在我的系统上无法使用。我倒腾了一番，推测是因为只能在 10.6 的 OS 中运行，而我还在 10.5 时代。&lt;/p&gt;
&lt;p&gt;如果我们的网络接入足够好，我觉得云输入法就真的可以解决问题了，不过现实是残酷的，我们的网络接入又贵又慢。&lt;/p&gt;
&lt;p&gt;总有一天搜狗或者腾讯或者 Google 会推出 Mac 输入法，最先推出的肯定占得先机。也许是现在 Mac 的市场份额还很小，不值得他们考虑。但是 Google 最近推出日文输入法的时候，除了 Windows 版本，还同步推出了 Mac 版本，中文输入法也快了吧。&lt;/p&gt;
&lt;p&gt;输入法的最高境界就是使用它却感觉不到它的存在，Windows 上的主流拼音输入法已经差不多这样了。但是 Mac 上的可就差太远了，虽然很难说出具体差在什么地方。&lt;/p&gt;
&lt;p&gt;竞争可能会使 QIM 的利益受损，但是对广大 Mac 用户来说只有好处。有竞争才有进步，什么都是这样，所以我们强烈要求 Windows 平台的输入法们大举进攻 Mac.&lt;/p&gt;</description>
    </item>
    <item>
      <title>新网互联停止“网址转发(url forwarding)”功能</title>
      <link>https://qingbo-net.pages.dev/archives/355/</link>
      <pubDate>Mon, 18 Jan 2010 07:15:31 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/355/</guid>
      <description>&lt;p&gt;域名在新网互联注册的朋友们需要注意一下，它已经停止网址转发（url forwarding）服务了。之前添加过网址转发记录的，只是在管理界面上有那么一条记录而已，已经没有任何作用了。修改现有的或者新增 url 转发记录，它都会说“系统调整中，转发暂停”。&lt;/p&gt;
&lt;p&gt;我觉得这个提示可以归类为“通常令人费解的声明”。这个词是今天看到一篇翻译文章，原文中是 “usual confused statements”。我感觉这个词非常的精确、贴切，就是专门拿来形容无耻、无赖之人的声明的。&lt;/p&gt;
&lt;p&gt;作为一个国家顶级的域名注册商，新网互联在客户毫不知情的情况下中断了客户已经在使用的服务，而且我也不知道这是什么时候中断的，新网互联网站公告里也看不到任何相关信息。&lt;/p&gt;
&lt;p&gt;当然，url 转发并不是域名注册商必须做的事，但是既然提供了，就有许多客户将自己的 business 依赖于你的这个服务上，结果就这么不声不响停掉了。我也是最近去修改一条记录的时候才发现这个问题。&lt;/p&gt;
&lt;p&gt;遇到这样的事，当然很想换一家注册商了。但是我相信更多被新网互联折磨的受害者是想从它那儿转出域名的客户。由于国内多数公司的短见、鼠目寸光，他们留住客户的最重要手段就是为客户的离开设置重重障碍，甚至收取额外的费用。&lt;/p&gt;
&lt;p&gt;虽然可能新网互联遇到了什么“不可抗拒”因素，但是我还是建议:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;正要注册域名的新手，千万不要在国内注册，以免被国内的无良注册商套住。请搜索“&lt;a href=&#34;http://www.google.com/search?q=%E5%9F%9F%E5%90%8D%E5%A6%82%E4%BD%95%E8%BD%AC%E5%87%BA&amp;amp;ie=utf-8&#34;&gt;域名如何转出&lt;/a&gt;”，即可知道从国内注册商转出域名有多么困难。国外注册域名一点也不贵，并且转出非常容易，不会有任何人给你设置障碍。&lt;/li&gt;
&lt;li&gt;已经上当受骗的受害者请参考“&lt;a href=&#34;http://hugege.com/2009/06/05/hichina-complaint/&#34;&gt;到ICANN投诉万网Complaint范文&lt;/a&gt;”，投诉欺骗你的域名注册商（包括但不限于万网、新网互联）。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;希望这些基本的意识能在互联网上广泛传播，让上当的人越来越少。当然，我们更希望这些注册商能够弃恶从善，改头换面，重新做人，拿出优质的服务来吸引住客户。&lt;/p&gt;</description>
    </item>
    <item>
      <title>最新评论与站内搜索</title>
      <link>https://qingbo-net.pages.dev/archives/354/</link>
      <pubDate>Sat, 16 Jan 2010 15:39:35 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/354/</guid>
      <description>&lt;p&gt;今天更新了一下网站的程序——其实这个初期阶段，我几乎有空就更新一下，呵呵。&lt;/p&gt;
&lt;h3 id=&#34;最新评论功能&#34;&gt;最新评论功能&lt;/h3&gt;
&lt;p&gt;之前右侧 sidebar 一直是空的，既不美观，又浪费空间。于是首先加上了一个非常简单的 Latest comments 功能，别看简单，在显示哪些信息，怎么布局这些问题上，真是很伤脑筋，我还通过某搜索引擎的 cache 找到 blog 以前的最新评论功能布局参考了一番，到最后就出来这么个样子，凑合着看吧……&lt;/p&gt;
&lt;p&gt;功能一上线吓了自己一跳，这才没几天，已经有 spam 了！我这是自己写的程序，表单字段名也是很奇怪的，看来人肉 spammer 可真不少。可怜删除评论的功能我还没做，只好到数据库里直接删掉了。&lt;/p&gt;
&lt;h3 id=&#34;站内搜索功能以及&#34;&gt;站内搜索功能以及……&lt;/h3&gt;
&lt;p&gt;另外在 sidebar 的最上面，放了一个 google custom search 的框，这是利用 &lt;a href=&#34;http://code.google.com/apis/ajaxsearch/&#34;&gt;Google AJAX Search API&lt;/a&gt; 实现的。我这是在“顶风作案”啊，不过没办法，我不知道其它的搜索引擎有没有提供同样优秀的服务。至少百度目前还没有，并且对我的网站索引极其滞后（也许是不太重视技术方面的网站？），而 Google 提供了 &lt;a href=&#34;http://www.google.com/help/blogsearch/pinging_API.html&#34;&gt;ping 的 API&lt;/a&gt;，有更新后几分钟就可以被索引，因此 Google custom search 完全可以替代使用 WordPress 时候使用的自带站内搜索，而且质量更好。似乎雅虎也提供了类似的服务？我隐约记得有这么一件事，而且对雅虎来说是负面的，一位年轻有位的牛人离开了这个团队，让一个大家充满希望的项目变得前途黯淡。目前懒得去翻腾了，等什么时候 google 的真用不下去了，我再去研究。&lt;/p&gt;
&lt;p&gt;当然了，集成这么一个自定义搜索太小儿科了，我在后面做了更有趣的事。这并不算是个新的 idea，很多网站都已经有类似的实现，但是不知道有没有人用 google 的服务来实现这个想法。如果浏览者是从搜索引擎过来，比如从百度、google 搜索到我的网站点击过来的话，就会在右侧搜索框处看到类似下面图片的样子：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/4279132002/&#34; title=&#34;integrated google custom search by qingbo, on Flickr&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;integrated google custom search&#34; src=&#34;http://ac4.farm5.static.flickr.com/4038/4279132002_84a2010e38_m.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;你可以自己用 google 搜索“&lt;a href=&#34;http://www.google.cn/search?hl=zh-CN&amp;amp;q=url%E7%BC%96%E7%A0%81&#34;&gt;url编码&lt;/a&gt;”，然后点击 qingbo.net 的结果试试。&lt;/p&gt;
&lt;p&gt;我感觉酷是次要的，对于依赖搜索引擎流量的网站来说，这无疑会增大用户继续浏览的几率，降低 bounce rate. 而且提供高度原创行、科学性的结果，对用户获取信息也是很大的帮助。&lt;/p&gt;
&lt;p&gt;目前该功能支持 google, baidu, soso, sougou, yahoo, bing, 几乎所有我能想到的搜索引擎，几乎所有常见的编码方式，尽管有些搜索引擎目前还没有过来流量……如发现 bug，请及时告知我，非常感谢！&lt;/p&gt;</description>
    </item>
    <item>
      <title>让别人看见你贴的 Flickr 图片</title>
      <link>https://qingbo-net.pages.dev/archives/353/</link>
      <pubDate>Thu, 14 Jan 2010 08:16:29 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/353/</guid>
      <description>&lt;p&gt;上一篇文章“&lt;a href=&#34;http://qingbo.net/blog/post472-flickr-how-to-access.html&#34;&gt;Flickr 被封，图片不显示的解决办法&lt;/a&gt;”说到如何访问 Flickr，但是只有自己能看见也不是太好，在 blog 贴图之后，访问者的系统如果没有像上文中说的修改 hosts 文件，一样还是看不见图片。除非是私密的照片，别人看不见，分享的目的也就没有达到。&lt;/p&gt;
&lt;p&gt;别着急，还是研究 &lt;a href=&#34;http://www.flickr.com/help/test&#34;&gt;Flickr test page&lt;/a&gt;，很容易发现玄机，能显示的用的是不同的域名。上文只是把原来的域名指向这两个 ac4.* 的新 IP 而已。&lt;/p&gt;
&lt;p&gt;因此解决办法很简单，只要贴图的时候把 http://farmX.* 改成 &lt;a href=&#34;http://ac4.farm&#34;&gt;http://ac4.farm&lt;/a&gt;X.* 就可以了。&lt;/p&gt;
&lt;p&gt;我也更新了一下 &lt;a href=&#34;http://userscripts.org/scripts/show/66097&#34;&gt;Flickr markdown code&lt;/a&gt; 这个 Greasemonkey 脚本，它会自动将 Markdown 代码中的链接加上 “ac4″，同时也顺便把 HTML 代码以及原始链接两个框改好了，所以如果你懒得每次手动改，即使不用 Markdown，也可以考虑使用这个脚本 🙂 当然按此方法重新写一个也很简单了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Flickr 被封，图片不显示的解决办法</title>
      <link>https://qingbo-net.pages.dev/archives/352/</link>
      <pubDate>Thu, 14 Jan 2010 06:47:10 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/352/</guid>
      <description>&lt;p&gt;最近几天 Flickr 新上传的图片又不显示了，只有红叉叉。我们都知道，它被封掉是好心人为了保护我们，免受很黄很暴力的、让人心神不宁的、导致本来能考重点大学的我们最终只能上个专科的不良信息的侵扰。&lt;/p&gt;
&lt;p&gt;但是我们也要学习西方列强的先进技术，师夷长技以制夷！被封掉的是 farm3 和 farm5 两个集群。Flickr 提供了一个测试页面可以方便地查看网络状况，非常贴心：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/help/test&#34;&gt;Flickr test page&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;一般人看到这个页面，也就知道该怎么办了吧？还是不懂的话，在 hosts 文件里加入下面两行 (不会改 hosts 的，上 google 或者 baidu 搜，一大堆一大堆的教程)：&lt;/p&gt;
&lt;p&gt;76.13.18.78 farm3.static.flickr.com&lt;br&gt;
76.13.18.79 farm5.static.flickr.com&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;说明&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Access Flickr! 扩展现在是无效的，不知道作者近期是否会更新，另外我们也没必要使用扩展中那么复杂的机制。&lt;/li&gt;
&lt;li&gt;找到访问方法之后，我很犹豫要不要公开……因为公开了很有可能又被封掉。但是如果大多数人不知道怎么上去，那跟被封基本上没什么差别。等这个方法失效了，自然会有新的。&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>百度/谷歌与突发负面新闻 (SEM)</title>
      <link>https://qingbo-net.pages.dev/archives/351/</link>
      <pubDate>Sun, 10 Jan 2010 10:48:48 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/351/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://qingbo.net/blog/post470-flickr-photo-markdown-greasemonkey.html&#34;&gt;Flickr markdown Greasemonkey 脚本&lt;/a&gt;写好了，我要开始贴图了！&lt;/p&gt;
&lt;p&gt;本次是从百度和 Google 上弄下来的几张截图（大约一个月前的），分别是搜索“石家庄砸酒店”和“宾馆内藏摸吧”这两个词的结果页面：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Google&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/4134659023/&#34; title=&#34;Google by qingbo, on Flickr&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;Google&#34; src=&#34;http://ac4.farm3.static.flickr.com/2670/4134659023_8d7665de38_m.jpg&#34; /&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#34;http://www.flickr.com/photos/qingbo/4135419782/&#34; title=&#34;Google by qingbo, on Flickr&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;Google&#34; src=&#34;http://ac4.farm3.static.flickr.com/2591/4135419782_0394f4b804_m.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Baidu&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/4135419564/&#34; title=&#34;baidu 石家庄砸酒店 by qingbo, on Flickr&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;baidu 石家庄砸酒店&#34; src=&#34;http://ac4.farm3.static.flickr.com/2661/4135419564_02b996ee4a_m.jpg&#34; /&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#34;http://www.flickr.com/photos/qingbo/4134659293/&#34; title=&#34;baidu by qingbo, on Flickr&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;baidu&#34; src=&#34;http://ac4.farm3.static.flickr.com/2696/4134659293_f01f11f752_m.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这两件事都是网上突然出现的热点。“石家庄砸酒店”虽然是几年前的事了，不过最近不知道为什么又火了一阵。可以参考它的&lt;a href=&#34;http://index.baidu.com/main/word.php?word=%CA%AF%BC%D2%D7%AF%D4%D2%BE%C6%B5%EA&amp;amp;submit=%B0%D9%B6%C8%D2%BB%CF%C2&#34;&gt;百度指数&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;不需点大图就可以看到谷歌的结果页面右侧是空的，而百度显示了许多广告。这两个词是前一段时间两个典型的负面新闻，我相信没有人愿意在这种关键词上投放广告吧？做 SEM 的人肯定知道加否定关键词，不过这种“摸吧”事件，发生之前大概许多人都没有听说过。&lt;/p&gt;
&lt;p&gt;据我的观察，Google 的搜索结果（至少我可以确定”石家庄砸酒店”）最初也是有广告的。但是在我截图的时候，广告已经消失了。而刚才我还去百度搜了一下”&lt;a href=&#34;http://www.baidu.com/s?wd=%CA%AF%BC%D2%D7%AF%D4%D2%BE%C6%B5%EA&amp;amp;cl=3&#34;&gt;石家庄砸酒店&lt;/a&gt;“，广告仍然在，其中不乏携程这样的大户。&lt;/p&gt;
&lt;p&gt;所以我冒昧推断，谷歌应该有一个应对突发负面新闻的机制或系统，在遇到这种情况时，可以及时作出反应，最小化客户的损失。而百度似乎没有这回事，只能靠客户自己去发现，然后加否定词解决（都这么长时间了，携程还坚持在这上面花钱……或许 ROI 真的很好？难道有人抄家伙要去砸酒店？）&lt;/p&gt;
&lt;p&gt;这也就要求做 SEM 工作的有足够快的反应速度，尽早发现否定词，尽量减少这样的不必要的损失。这样的热点，烧钱可是飞快的哦！&lt;/p&gt;</description>
    </item>
    <item>
      <title>为 Flickr 照片下载页提供 Markdown 代码 (Greasemonkey)</title>
      <link>https://qingbo-net.pages.dev/archives/350/</link>
      <pubDate>Sun, 10 Jan 2010 10:05:02 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/350/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;2010-09-18: 改为&lt;a href=&#34;http://qingbo.net/blog/post530-flickr-markdown-update.html&#34;&gt;支持 Flickr 的新版界面&lt;/a&gt; *&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因为有闲工夫就倒腾 blog 的代码，所以攒了很多想写的话题。现在算是差不多了，不过打算写的时候，发现想要插入一张 Flickr 上的图片可真麻烦。要是只是一张图片还好，不过按照 &lt;a href=&#34;http://www.flickr.com/guidelines.gne&#34;&gt;Flickr Community Guidelines&lt;/a&gt; 的规定：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Do link back to Flickr when you post your Flickr content elsewhere.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;所以除了嵌入图片，还要加一个链接，正如 Flickr 提供的 HTML 代码所做的。&lt;/p&gt;
&lt;p&gt;于是写了一个 Greasemonkey 脚本来做这件事，安装之后再到 Flickr 的照片下载页面（在自己的某张照片页面点击 All sizes 按钮）就会看到多了一种代码选项，如下图：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/4262082344/&#34; title=&#34;flickr_markdown by qingbo, on Flickr&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;flickr_markdown&#34; src=&#34;http://ac4.farm5.static.flickr.com/4020/4262082344_d02c3f32a4_o.png&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;没错，这张图所用的 Markdown 代码就是从图中绿框里复制出来的。&lt;/p&gt;
&lt;p&gt;相信用 Markdown 的人很少，不过还是把代码分享出来：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://userscripts.org/scripts/show/66097&#34;&gt;Flickr markdown code&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>评论系统打开</title>
      <link>https://qingbo-net.pages.dev/archives/349/</link>
      <pubDate>Sat, 09 Jan 2010 14:04:46 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/349/</guid>
      <description>&lt;p&gt;新的 blog 上线之后，只是做了评论的展示，却一直懒得做提交评论的功能。&lt;/p&gt;
&lt;p&gt;最近一段时间我隐隐感到一股神秘的力量正在积聚，肯定有人是因为不能发表评论憋坏了……于是我抵抗住了左邻右舍飘来的饭菜香气，终于完成了评论功能。请踊跃发表贺电！&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;简要教程&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;左上角的框添昵称，右上角添电子邮件，下面的大框自然是评论内容了……再有空了，我就给上面两个框各修饰一下，以便区分。&lt;/p&gt;
&lt;p&gt;目前有人写了评论我也不会立即知道。不过我会时不时到数据库里去看一看的，哈哈。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Markdown 及杂谈</title>
      <link>https://qingbo-net.pages.dev/archives/348/</link>
      <pubDate>Sat, 09 Jan 2010 11:04:32 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/348/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://en.wikipedia.org/wiki/Markdown&#34;&gt;Markdown&lt;/a&gt; 是一种轻量级的标记语言，两位牛人从纯文本邮件的格式惯例中借鉴了一些想法，规定了该语言的&lt;a href=&#34;http://daringfireball.net/projects/markdown/syntax&#34;&gt;语法&lt;/a&gt;。因为标记语言的英文是 Markup, 所以大家看 Markdown 的名字就大概了解作者的意图了……&lt;/p&gt;
&lt;p&gt;著名的面向程序员的问答交流站点 &lt;a href=&#34;http://stackoverflow.com/&#34;&gt;Stack Overflow&lt;/a&gt; 即采用 Markdown 作为用户输入中格式化文本的语言。我的这个新版 blog 也在后台采用这种格式写文章，很快就会上线的评论功能也将用 Markdown 作为输入格式。&lt;/p&gt;
&lt;p&gt;我个人比较烦可视化 (WYSIWSG) 编辑器，因为大部分都异常臃肿（客户端加载慢，用户体验差），生成的代码非常垃圾。我使用 WordPress 的时候，也从来不用它自带的 tinyMCE，quick tag editor 挺好用的。&lt;/p&gt;
&lt;p&gt;Stack Overflow 可以放心大胆地使用 Markdown，因为它面向的是程序员群体，即使从来没有接触过，稍微看一下帮助也就没问题了。如果真的不会，那你走错路了，我说程序员的平均水平咋这么差呢，你还是该干嘛干嘛去吧。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/&#34;&gt;Flickr&lt;/a&gt; 不是面向程序员的，不过它同样没有在图片评论框使用可视化编辑器，而是使用了自定义图片、链接格式加部分 HTML 代码的形式。这一方面也是因为在评论框中输入大量格式文本的需求不是那么大。我觉得这样很好，稍微有点脑子就很快知道怎么格式化文本，那些智商实在太低的，就淘汰掉吧。&lt;/p&gt;
&lt;p&gt;可是有时候不得不面对低智商的用户群，以前跟一个朋友交流，他就说，应用了可视化编辑器，许多用户还是不知道如何插入链接、图片。如果你不得已需要在网站上应用可视化编辑器，我推荐 &lt;a href=&#34;http://nicedit.com/&#34;&gt;NicEdit&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;使用非 HTML 代码作为用户输入方式，还有一个很大的好处，就是你可以放心地过滤掉 HTML 代码，不需担心用户夹杂恶意代码。最近很感兴趣的 web.py 中，就&lt;a href=&#34;http://www.freewisdom.org/projects/python-markdown/&#34;&gt;提供&lt;/a&gt;了一个方便的函数 safemarkdown 来做这样的事情。&lt;/p&gt;
&lt;p&gt;写完才发现，类似的内容我以前就写过一篇了：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://qingbo.net/blog/post400.html&#34;&gt;表单富文本输入，选择什么方式？&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>重新开张，从里到外通通换了一遍</title>
      <link>https://qingbo-net.pages.dev/archives/347/</link>
      <pubDate>Sat, 26 Dec 2009 14:49:58 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/347/</guid>
      <description>&lt;p&gt;blog 初步迁移到了自己写的 python 程序中，目前还非常简单，连评论也不能添加。在我自己的项目管理系统里，我就叫这个 milestone 0.1，到 0.2 就会有评论功能，肯定在一个月之内会实现。没有评论功能，意味着不能接受大家的贺电了，请抑制一下你们激动的心情…… (其实我是在响应号召，为建设和谐社会作贡献)&lt;/p&gt;
&lt;p&gt;大约从 05 年底我开始写 blog，最初似乎是在 donews 提供的 wordpress mu 平台上写（我不太清楚之前有没有在其它的一些 BSP 写过没有了）。很快为了自己能更加方便地自定义而选择了租用空间自己管理 WordPress. 其实 WordPress 对我影响非常大，我的 Web 开发就是从定制 WordPress 开始学起的，尽管 PHP 一直不是太熟悉，后来用 Java 比较多。&lt;/p&gt;
&lt;p&gt;所以转移阵地并不意味着 WordPress 不好。作为一个通用 blog 软件，它功能齐全，很容易定制，还是非常适合刚开始尝试自己架设 blog 的用户（或者刚刚弃暗投明从 sina, 163 等 BSP 过来的人）。我只是有了更加确切的需求，并且想放弃 WordPress 的大部分附加功能，同时借机学习一下 python. blogging 也是需要新鲜感的，所以每次 WP 的编辑页面升级的话，会大大提升写文章的欲望（虽然回头看时觉得文章大部分都是垃圾）。我现在确实有点厌烦 WordPress 了，并且在一个自己从头写出来的系统中，我可以更容易实现新的想法，甚至有些想法在 WordPress 中几乎不可能实现。&lt;/p&gt;
&lt;p&gt;从写程序到迁移，这个过程回头看有点长了，虽然我给自己留出了余地，还是比预定的时间晚了一周。没有足够的时间和精力，加上有那么一点点完美主意情结，导致在做很多选择时都比较犹豫，比较纠结。&lt;/p&gt;
&lt;p&gt;此次选择了 &lt;a href=&#34;http://webpy.org/&#34;&gt;web.py&lt;/a&gt; 作为 framework, 它网站的 header 里说是 “the ideal way of writing a web app”. 我用过的 framework 不多，不过每个总有这样那样让人深恶痛绝的缺点，到现在为止，web.py 还没有让我不爽的地方。&lt;/p&gt;</description>
    </item>
    <item>
      <title>用 pscp 代替 WinSCP</title>
      <link>https://qingbo-net.pages.dev/archives/346/</link>
      <pubDate>Sat, 19 Dec 2009 08:42:07 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/346/</guid>
      <description>&lt;p&gt;第一次从 Windows 向 Linux 传文件的时候，我找到了 &lt;a href=&#34;http://winscp.net/&#34;&gt;WinSCP&lt;/a&gt;，于是就以为世界上只有它可以干这个事情，一直以来都是用它在 Windows 和 Linux 之间互传文件，当然 samba 不算了。&lt;/p&gt;
&lt;p&gt;最近经常在 Windows 里用 Excel 处理一些数据，保存成 csv 格式再放到 Linux 里继续处理。正好那台 Windows 上还没有安装 &lt;a href=&#34;http://winscp.net/&#34;&gt;WinSCP&lt;/a&gt;，我就通过 Windows 共享中转到 Mac 上，然后再 scp 到 Linux 服务器上 —— 我也不知道我为啥自己懒得装 WinSCP 🙁&lt;/p&gt;
&lt;p&gt;前几天实在受不了这个繁琐的过程了，在下载 WinSCP 之前搜了一下，原来 Windows 上也有成熟的 scp 命令行工具，即与 &lt;a href=&#34;http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html&#34;&gt;PuTTY 项目&lt;/a&gt;中的 pscp —— 不知道去那个页面下载过多少次 PuTTY，却没有仔细看 PuTTY 之外的其它程序，惭愧惭愧。我不知好歹炫耀新发现的时候，发现某些同事早就在用 pscp 了……&lt;/p&gt;
&lt;p&gt;简单试用了一下 pscp，就我目前用到的功能，和 Linux 上的 scp 完全一致，非常方便。&lt;/p&gt;
&lt;p&gt;建议习惯命令行操作、嫌鼠标麻烦低效的用户放弃 WinSCP，使用 pscp.&lt;/p&gt;</description>
    </item>
    <item>
      <title>停业整顿</title>
      <link>https://qingbo-net.pages.dev/archives/345/</link>
      <pubDate>Mon, 23 Nov 2009 13:38:28 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/345/</guid>
      <description>&lt;p&gt;关闭了所有文章的评论，打算重新整理一下自己的网站，包括 blog 在内。&lt;/p&gt;
&lt;p&gt;可能将来就不再使用 wordpress 了。&lt;/p&gt;
&lt;p&gt;过半个月或者一个月，你就会看见我的新网站巍然屹立在 linode 上，以全新的技术（对我来说）驱动。&lt;/p&gt;
&lt;p&gt;关闭评论，就可以把数据拿回来随便玩了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>扭曲的技术环境</title>
      <link>https://qingbo-net.pages.dev/archives/344/</link>
      <pubDate>Wed, 18 Nov 2009 12:46:45 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/344/</guid>
      <description>&lt;p&gt;扭曲的生存环境当然会造成扭曲的技术环境。在大部分技术人才没有房子可住的情况下，当然会有好多人选择所谓的“捷径”，去“精通”一些歪门邪道的东西。是啊，整天为房租或者还贷以及其它高昂的生活费用发愁，哪儿有那么多闲心去钻研真正可以称为技术的东西呢，这是可以理解的。&lt;/p&gt;
&lt;p&gt;大多数（不是全部）“精通” SEO 的人，不会知道所谓 web 标准，不会知道 HTML 4，但是他们知道 h1, strong, meta-keywords, meta-description，还会熟练地用蹩脚的代码隐藏一些肮脏的东西在页面上，引来一阵艳羡。&lt;/p&gt;
&lt;p&gt;作为某大公司的客户，拿到他们的 API 文档，废话连篇也就罢了，错误百出。打算写邮件给他们，写到一半就放弃了，烂得不可救药，让人连提建议的心都没有。这方面跟他们国外的竞争对手比起来差的是十万八千里，不过人家在国内活得滋润得不得了。说到最后，还是市场即环境决定的，他们不会把主要资源投到这么“没钱途”的事情上。&lt;/p&gt;
&lt;p&gt;再往上说到那些高校实验室、研究所，里面有几个人在真正做科研？拉帮结派搞关系，骗国家钱，压榨学生才是来钱的正路。当然不是所有的老师都在这么干。&lt;/p&gt;
&lt;p&gt;穷则独善其身……&lt;/p&gt;</description>
    </item>
    <item>
      <title>SOHO 尚都，中看不中用</title>
      <link>https://qingbo-net.pages.dev/archives/343/</link>
      <pubDate>Wed, 28 Oct 2009 15:02:51 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/343/</guid>
      <description>&lt;p&gt;公司在 &lt;a href=&#34;http://www.sohochina.com/shangdu/index.asp&#34;&gt;SOHO 尚都&lt;/a&gt;，看起来很时尚很前卫的楼。租的是一间 LOFT，空间超大，非常开阔，墙壁多半都是玻璃，很亮堂。不过住在里面，很快就发现缺点不必优点少：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;空调&lt;/strong&gt;－我们租的 LOFT 据说是业主自己装的空调，所以不好用。由于屋顶特别高，所以夏天凉风吹下来就变热了（每人发一把扇子），冬天暖风吹下来就变冷了（那时我还没来，估计大家都穿着羽绒服）。后来又租了一件普通的办公室，中央空调，依旧不好用，三天两头打电话让物业来修。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;漏雨&lt;/strong&gt;－有一台小服务器放在窗台上（窗台很宽），某次下雨，第二天早上去，发现机器重启了，进而发现机器顶上还有下面都有不少水，于是检查前一天晚上是不是没关窗户。最终发现原因是“紧闭”的窗户漏水，需要定期让物业来涂密封胶。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;网络&lt;/strong&gt;－似乎大楼有专门的 IT 部门，住户不是跟网通、电信等 ISP 直接打交道，但是网络非常之不稳定，正好这几天尤其严重呢（这也是促发本文的重要因素），作为一家网络公司，遇到这样的情况真是窘迫。为了提供原始的“failover”，同事故意给两间办公室选择了不同的接入，但是……似乎效果不是很明显 🙂&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;电力&lt;/strong&gt;－这个就不用细说了，我们的多台服务器都被摧残过许多次。搞得我每次在上面执行个较长事件的任务都得探一下风声，看看断电的可能性有多大。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;周围也有其它的 SOHO 建筑，&lt;del datetime=&#34;2009-11-18T12:53:45+00:00&#34;&gt;应该都是出自万科，&lt;/del&gt;同事说都是中看不中用。是啊，破烂的办公楼见的多了，但是从来没有遇到过空调、电力、网络都这么差劲的……&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何将 AS 文件编译成为 swf</title>
      <link>https://qingbo-net.pages.dev/archives/342/</link>
      <pubDate>Sat, 17 Oct 2009 12:16:43 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/342/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post459.html&#34;&gt;上篇文章&lt;/a&gt;留下这么一个疑问，本以为被琐事缠身，没时间再写了，不过发布完之后正好将某事推掉，于是有时间马上写这一篇。造一个句：&lt;strong&gt;如果&lt;/strong&gt;志不同，&lt;strong&gt;那么&lt;/strong&gt;道不合。跟很没劲甚至很烦的人在一起吃饭，不如饿着肚子弄点技术方面的东西。我鼓捣的也不是很有技术含量的东西，就是有兴趣。&lt;/p&gt;
&lt;p&gt;下载并正确配置 Flex SDK 以后，就可以使用 compc 命令了。这个名字实际上是 component compiler 的简写，就是用来生成 swc 文件的。还有一个命令叫 acompc，前面加的那个字母应该是指 AIR，它与 compc 的区别只是加载了不同的配置文件而已，所以本文以后就只使用 compc 了。&lt;/p&gt;
&lt;p&gt;执行命令 “compc -help list” 就可以看到许多的编译选项，最重要的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-compiler.context-root&lt;/strong&gt; path to replace {context.root} tokens for service channel endpoints. 我不是特别了解，不过我把它设置为所有 package 的上级目录，对于 &lt;a href=&#34;http://code.google.com/p/twitterscript/&#34;&gt;twitterscript&lt;/a&gt; 来说就是 &lt;a href=&#34;http://twitterscript.googlecode.com/svn/trunk/src/&#34;&gt;http://twitterscript.googlecode.com/svn/trunk/src/&lt;/a&gt; （这里只是示意，我写了 svn 的链接）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-include-sources&lt;/strong&gt; 必须指定的源代码目录，不必多解释了。对于 twitterscript，仍然是 &lt;a href=&#34;http://twitterscript.googlecode.com/svn/trunk/src/&#34;&gt;http://twitterscript.googlecode.com/svn/trunk/src/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-directory&lt;/strong&gt; 本来结果是输出成为一个 swc 文件的，你需要 unzip 之才能得到想要的 swf，现在有了这个选项就好多了，直接生成一个目录，而不是压缩文件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;知道了这些就可以编译了 (我的当前目录下面是 twitter-api 目录，里面的 src 子目录里就是 svn export 的 &lt;a href=&#34;http://twitterscript.googlecode.com/svn/trunk/src/&#34;&gt;http://twitterscript.googlecode.com/svn/trunk/src/&lt;/a&gt;)：&lt;/p&gt;
&lt;p&gt;[code lang=’text’]&lt;br&gt;
compc -compiler.context-root=twitter-api/src/ -include-sources=twitter-api/src/ -directory=true -output=twitter-swc&lt;br&gt;
[/code]&lt;/p&gt;
&lt;p&gt;于是在当前目录下生成一个子目录叫 twitter-swc，里面的 library.swf 就是我们想要的文件。可以再加上一个参数 “-compiler.debug=false” 来编译，获得更小的输出文件。&lt;/p&gt;</description>
    </item>
    <item>
      <title>AIR – 在 HTML/Ajax 的程序中使用 ActionScript 3 的 Library</title>
      <link>https://qingbo-net.pages.dev/archives/341/</link>
      <pubDate>Sat, 17 Oct 2009 10:20:52 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/341/</guid>
      <description>&lt;p&gt;在 &lt;a href=&#34;http://www.adobe.com/products/air/&#34;&gt;Adobe AIR 的首页&lt;/a&gt;上，就给出了三种 AIR 编程的途径：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ajax – 主要编写 HTML 和 JavaScript 代码，对于经常编写 Web 应用的程序员们来说，很容易上手。&lt;/li&gt;
&lt;li&gt;Flex – 我不太熟悉，应该是配置文件主导的一种方式吧，有可视化设计工具。&lt;/li&gt;
&lt;li&gt;Flash – 利用可视化设计工具设计界面，配合编写 ActionScript 代码。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Flex 编程中应该也会用到大量的 AS 编程，但是 Ajax 方式的 AIR 呢？一开始，我认为它利用与 Web 编程几乎没有差别的环境吸引了以前熟悉 Web 应用的开发者，但是却牺牲了 Flash 强大的表现能力，如果用 JavaScript 实现 Flash 同等的动画效果，难度和复杂度应该会大很多。&lt;/p&gt;
&lt;p&gt;但是很快我就发现这个顾虑是多余的。Adobe 的 livedocs 中就有一个页面教大家怎么在 HTML 页面中调用 AS 的 library：”&lt;a href=&#34;http://livedocs.adobe.com/flex/3/html/help.html?content=ProgrammingHTMLAndJavaScript_08.html&#34;&gt;Using ActionScript libraries within an HTML page&lt;/a&gt;”&lt;/p&gt;
&lt;p&gt;Adobe 对 webkit 做了一个小小的扩展，使其支持新的脚本并与 JavaScript 互通：&lt;/p&gt;
&lt;p&gt;[code lang=’html’]&lt;/p&gt;
&lt;p&gt;[/code]&lt;/p&gt;
&lt;p&gt;该 swf 中的 AS 代码里的变量，怎么在 JavaScript 中引用呢？通过 window 变量一个特定的属性 runtime：&lt;/p&gt;</description>
    </item>
    <item>
      <title>四号线不到北京西站……</title>
      <link>https://qingbo-net.pages.dev/archives/340/</link>
      <pubDate>Sat, 10 Oct 2009 15:17:00 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/340/</guid>
      <description>&lt;p&gt;国庆回家，我一个朋友帮买的9月30号晚上的火车票，我们分头往西站走。&lt;/p&gt;
&lt;p&gt;当时风声比较紧，天天超载去西站的一辆公交车也不敢跑了。不过天无绝人之路，四号线不是开通了么，正好也让我沐浴一下春风，分享改革开放三十年伟大成就，于是我计划先乘十号线，再换四号线到达西站。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://news.sina.com.cn/c/2009-09-21/182518695994.shtml&#34;&gt;四号线的地图&lt;/a&gt;给我的感觉，下面向东突出的部分就是北京西站，我也从来没有仔细辨认过那个字。之前坐火车去广东，跟旁边的人聊天，还说四号线就是通北京西站，他们还附和说是呢，后来看都是托……&lt;/p&gt;
&lt;p&gt;我悠哉游哉上了四号线，感觉挺不错，就是那么凉快的天，空调温度还开那么低，我冷倒也罢了，社会主义也禁不住你这么糟蹋啊。有点奇怪国庆前夕去西站的人怎么那么少，不过别想太多了，有座位真好。朋友打电话过来说你还有心情绕北京转圈啊，我不急，地铁又不堵车。&lt;/p&gt;
&lt;p&gt;到了“北京×站”，我一下车，经过那个大柱子之后，又忍不住退回来，因为感觉柱子上的站名写错了。四处张望一番，发现到处写的都是“北京南站”，我一下懵了，一边往站外跑一边给朋友打电话——如果我为祖国牺牲了，你就一个人回家吧。此时距列车发车还有半小时，我也不清楚南站离西站到底有多远。骑三轮车的看我着急，说送到西站40块，真黑，我心里想，车票才二十几块，大不了明天再买一张，也不助长不正之风！这时开过来一出租车，司机师傅想进南站接个叫车的人，绕了好几圈都没找到进去的办法，正好拉着我一路顺风到了西站，我又一路狂奔拒绝出示身份证终于赶上了火车。&lt;/p&gt;
&lt;p&gt;一个半小时后到达保定，住了一夜，第二天一早吃了一个半驴肉火烧，赶到人山人海的汽车站，设法挤上汽车，被超载和破烂不堪的公路折磨到家。&lt;/p&gt;
&lt;p&gt;回到北京后上网看，果然又很多人认为四号线是通北京西站的……&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows 7 截图工具快捷键</title>
      <link>https://qingbo-net.pages.dev/archives/339/</link>
      <pubDate>Sat, 12 Sep 2009 02:07:02 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/339/</guid>
      <description>&lt;p&gt;Windows 7 新的一个小工具程序是截图工具，虽然还是比较鸡肋，但终归可以自选区域了。&lt;/p&gt;
&lt;p&gt;不过有些时候，用它来截图的话，切换到截图工具的窗口，要截图的东西却已经没了，比如说上篇文章里的百度输入框自动提示。&lt;/p&gt;
&lt;p&gt;这时候有个快捷键就解决问题了。我看到网上好多人在问截图工具的快捷键是什么，似乎大家都觉得 Windows 的帮助文档很没用。我在帮助里很快查到了 Ctrl+PrtScn，试了一下，果然可以。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux date 命令获取某日期的前一天</title>
      <link>https://qingbo-net.pages.dev/archives/338/</link>
      <pubDate>Thu, 10 Sep 2009 14:23:48 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/338/</guid>
      <description>&lt;p&gt;最近需要写个 shell script，给定一个日期参数，它要得到该日期的前一天，然后做剩下的事。执行的时候就是这样：&lt;/p&gt;
&lt;p&gt;[code lang=’text’]&lt;br&gt;
# ./foo.sh 2009-03-01&lt;br&gt;
[/code]&lt;/p&gt;
&lt;p&gt;初看，这个问题有些棘手。最原始的办法是写个比较繁琐的函数，知道每个月分别是多少天，还要处理一下闰年的情况——这也有点太繁琐了，呵呵。&lt;/p&gt;
&lt;p&gt;稍微看一下 &lt;a href=&#34;http://en.wikipedia.org/wiki/Date_%28Unix%29&#34;&gt;date&lt;/a&gt; 命令，就发现利用它可以很方便的写出一个非常 stable 的函数。date 可以通过 -d 指定一个日期，然后用指定的格式输出。-d 不仅可以接受 “2009-03-01″ 或者 yesterday 这样的格式，还可以接受一个从 1970 年开始至今的秒数，当然也可以指定日期输出这样的秒数。如：&lt;/p&gt;
&lt;p&gt;[code lang=’text’]&lt;br&gt;
# date +%s&lt;br&gt;
1252591191&lt;br&gt;
# date -d @1252591191 +%F&lt;br&gt;
2009-09-10&lt;br&gt;
[/code]&lt;/p&gt;
&lt;p&gt;这样，事情就变得很简单了。先用 date 命令将该日期转换成秒数，减去一天的秒数 86400，然后再转化成正常易读的日期格式，就可以了，不需要考虑复杂的大小月以及闰年问题。以下是简单的例子：&lt;/p&gt;
&lt;p&gt;[code lang=’bash’]&lt;br&gt;
#!/bin/sh&lt;/p&gt;
&lt;p&gt;function get_day_before {&lt;br&gt;
seconds=`date -d $1 +%s`&lt;br&gt;
seconds_yesterday=$((seconds – 86400))&lt;br&gt;
day_before=`date -d @$seconds_yesterday +%F`&lt;br&gt;
echo $day_before&lt;br&gt;
}&lt;/p&gt;
&lt;p&gt;get_day_before $1&lt;br&gt;
[/code]&lt;/p&gt;
&lt;p&gt;最后，必须支持一下这个 &lt;a href=&#34;http://en.wikipedia.org/wiki/World_Calendar&#34;&gt;World Calendar&lt;/a&gt;。它非常有规律，非常容易记忆，季度、月份、星期完美地吻合在一起。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Excel: 由于本机限制，该操作已被取消，请与系统管理员联系</title>
      <link>https://qingbo-net.pages.dev/archives/337/</link>
      <pubDate>Thu, 27 Aug 2009 05:21:11 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/337/</guid>
      <description>&lt;p&gt;这几天用 Excel，发现点击里面的链接都会出来这么一个警告：“由于本机限制，该操作已被取消，请与系统管理员联系”。要是一般的链接也就算了，关键是有个 VBA 的 addon，很多功能都是用链接实现的，出现这样的错误就基本上不可用了。&lt;/p&gt;
&lt;p&gt;搜索中文内容好几天，没有找到正确的解决办法，最后想想这个信息在英文的系统中会是什么样，于是在 Google 上搜到了&lt;a href=&#34;http://social.answers.microsoft.com/Forums/en-US/vistaprograms/thread/8815ad6c-0f44-477a-9ffa-beb98109b5a6&#34;&gt;这个页面&lt;/a&gt;，问题终于解决了。里面的回答每个都比中文的内容靠谱。&lt;/p&gt;
&lt;p&gt;我最后使用的方法是，先让 Firefox 成为默认浏览器，然后再让 IE 成为默认浏览器，问题就解决了。&lt;/p&gt;
&lt;p&gt;两点感想：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;有时候配置编译 Linux 里面的软件，觉得遇到的问题非常难以解决。可是真遇到 Windows 里的问题，解决起来更加困难，而且这些问题一般都很弱智，很不可思议，微软给出的错误信息也很没用。&lt;/li&gt;
&lt;li&gt;中文的内容太差了，且抄袭严重，抄袭时不加验证。&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>Windows 7 还挺不错的</title>
      <link>https://qingbo-net.pages.dev/archives/336/</link>
      <pubDate>Tue, 25 Aug 2009 13:50:20 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/336/</guid>
      <description>&lt;p&gt;刚装了一个试用了一下，没有感觉到像 Vista 那么难用。微软总算重新站稳了脚跟，据说 &lt;a href=&#34;http://www.thewindowsclub.com/windows-7-market-share-doubles-that-of-linux&#34;&gt;Windows 7 的市场占有率已经是 Linux 的两倍&lt;/a&gt;，看来 Windows 依旧是桌面操作系统的统治者。&lt;/p&gt;
&lt;p&gt;任务栏吸取了 Mac OS 的精华，做得像模像样，不需要再像以前那样翻来翻去找不到窗口了。不过同一程序有多个窗口时，点击任务栏图标不能使该组窗口获得焦点，仍需选择某一个窗口，我觉得这一点做得不太合适，不知道其他用户是怎么想的。&lt;/p&gt;
&lt;p&gt;用户的主目录路径成了 C:\Users\username，这一点可以说也是 Unix 系统的经验，终于不再是繁琐的 Documents and Settings 了。Library 的概念也很不错，此外也应该还有很多我没有发现的优点，比如计算器稍微改进了一点。&lt;/p&gt;
&lt;p&gt;现在有了个专门的“截图工具”，比 PrintScreen 稍微强了一点点，不过仍然没有随意调整截屏选区的功能。这应该是微软怕 SnagIt 之流没饭吃吧？呵呵。这样应该围绕这个操作系统会有一个更好的生态系统，反观国内的 51、校内，这一点上就做得太不厚道了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>https 页面的 Ajax</title>
      <link>https://qingbo-net.pages.dev/archives/335/</link>
      <pubDate>Sun, 23 Aug 2009 08:20:13 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/335/</guid>
      <description>&lt;p&gt;前阵子在一个大项目中做了一个小的 tool，在本机上测试完成之后，放到 production 环境中去，却发现页面上的 Ajax 功能不能使用。&lt;/p&gt;
&lt;p&gt;在 Firebug 的帮助下，很快就想到可能是因为 production 环境使用了 https，由于浏览器的安全限制，页面不允许随便请求 http 的页面。Ajax 请求的 url 其实就是本机的一个页面，不过因为 url 中没有写 protocol 以及 hostname，浏览器就默认是 http 了。&lt;/p&gt;
&lt;p&gt;我解决的办法是用 JavaScript 生成完整的 url，然后再发送请求。我测试的环境是 Firefox，不知道其它浏览器中有没有同样的问题。&lt;/p&gt;</description>
    </item>
    <item>
      <title>酒香不怕巷子深</title>
      <link>https://qingbo-net.pages.dev/archives/334/</link>
      <pubDate>Tue, 11 Aug 2009 15:54:44 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/334/</guid>
      <description>&lt;p&gt;今天晚上跟同事们一起看电影 “UP”，挺不错，就是没吃饭，有点饿。不过电影看完的时候，又没有食欲。一个同事说想吃桂林米粉，于是就跟着一起去了。&lt;/p&gt;
&lt;p&gt;初到那里，看到招牌挺不起眼的，在周围繁华街景的映衬下显得格格不入。不过进去之后就感觉舒服一些了，虽然里面的布局、通向二楼的窄小楼梯让人回想起大学时代校门口的小餐馆，但是相比之下干净多了。跟风点了个酸辣笋尖米粉，先来了两碗都让给同事了，不过我在旁边看得很想吃。终于等到之后，吃起来感觉还真的挺不错，汤稍微有点辣味，但是喝下去很舒服。&lt;/p&gt;
&lt;p&gt;最近经常是在外面吃，还好久没遇见这样吃着好吃，吃完了也舒服的东西了。于是就上点评网写了条好评……&lt;a href=&#34;http://www.dianping.com/review/16326316&#34;&gt;在这里&lt;/a&gt;。所谓酒香不怕巷子深，这么小的店都让我给找到了——一方面也说明点评网的设计比较合理，我搜索“桂林米粉”然后按地域筛选，很快就找到它了。&lt;/p&gt;
&lt;p&gt;人写点评，一般是感觉特别好，就像我今天这样的，或者是感觉特别烂，比如我前一段时间在住处旁边吃那个&lt;a href=&#34;http://www.dianping.com/review/14898082&#34;&gt;田园鸡火锅&lt;/a&gt;。这是我目前在点评网贡献的仅有的两条点评……一个指标特别好的话，会不自觉地其它方面的分数；某个指标特别差的话，自然地其它的印象也好不到哪儿去。有了这样强烈的感受，分享的欲望就随之很强烈，非常希望让别人也知道这里很好或者很差，让别人赶紧来或者千万不要来。&lt;/p&gt;</description>
    </item>
    <item>
      <title>AdWords API – 拯救错误很重要</title>
      <link>https://qingbo-net.pages.dev/archives/333/</link>
      <pubDate>Tue, 28 Jul 2009 16:42:12 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/333/</guid>
      <description>&lt;p&gt;对于类似当当、京东、新蛋这样拥有海量商品目录的商家来说，全靠手工去找出针对每种商品的关键词然后上传到 Google AdWords 账户，恐怕不是特别可行。AdWords Editor 是非常优秀的软件，然而它的 scalability 有限，假设有上千万级别的关键词，即使 Adwords Editor 恐怕也无能为力。&lt;/p&gt;
&lt;p&gt;AdWords API 对于&lt;a href=&#34;http://code.google.com/apis/adwords/docs/usecases.html&#34;&gt;这样的情景&lt;/a&gt;再适合不过了。利用 API 可以将海量的关键词自动地上传到 AdWords，更能方便地将它们在 Google 的花费、表现跟自己的商品数据库对接，实现投入产出比的及时计算，对市场的变化作出快速反应，从线上广告的角度让利益最大化。对于如此大量的数据，仍然可以在很细的粒度上对广告做优化。&lt;/p&gt;
&lt;p&gt;听起来很美好，可是实际做的话，就会发现一些让我们很烦恼的问题。Google 的系统足够稳定，非常值得信赖，我们的代码也很容易写得完全正确——AdWords 的 SOAP API 很简单，照着 Google 给的例子写就可以了吧。但是，网络却不是那么稳定，即使传输是基于具有纠错能力的 TCP，只要网线一拔，再强的纠错、重传也是白搭。所以光看 Google 的例子不行，程序需要更强的生命力。&lt;/p&gt;
&lt;h3 id=&#34;记录足够的日志&#34;&gt;记录足够的日志&lt;/h3&gt;
&lt;p&gt;不管你的程序多么 robust，遇到断电也得歇菜（除非你有昂贵的保障系统保证这个概率极低），所以至少你得知道它死在什么地方了，这时 log 是必不可少的。&lt;/p&gt;
&lt;p&gt;此外，大批量的操作中必然会遇到一些错误，但又不必因为这些错误让任务就此停止，这样的错误就应该记录在日志中，等上传结束后供认核查。&lt;/p&gt;
&lt;h3 id=&#34;check-before-add&#34;&gt;check before add&lt;/h3&gt;
&lt;p&gt;这是 Google 的建议。广告创意上传之前要 check 一下，关键词也要。看到有问题的就删掉（或者加个解释传上去），然后再上传。应用了这个机制，即使你不小心尝试上传重复的关键词，也不会导致错误。&lt;/p&gt;
&lt;h3 id=&#34;尽量恢复错误&#34;&gt;尽量恢复错误&lt;/h3&gt;
&lt;p&gt;最常见的问题出在网络连接上。TCP 再可靠，也终有它失败的时候。即使网线没被拔掉，在数百万的请求中，有那么一小撮出问题是很正常的。按照 Google 的例子，遇到任何异常都会退出。当你第二天早上兴致勃勃去查看昨晚开始的一个上传任务时，发现它实际上没上传几个就遇到异常退出了，可想而知会多么沮丧……&lt;/p&gt;
&lt;p&gt;认清这一点，我们搬过来 Google 的示例程序之后，就应该改造一下 Google 的例子。每个 SOAP 请求都可能出现连接问题导致的异常，你需要捕捉它们。一旦发现网络连接方面的一场，就让程序休息一小会再重试——简单的粗暴的方法是将执行 SOAP 请求的代码包装在一个 infinite loop 里 (例如 while true)。&lt;/p&gt;
&lt;p&gt;例如这个讨论：&lt;a href=&#34;http://groups.google.com/group/adwords-api/browse_thread/thread/45174e92405d8931/0f930281af1381e2&#34;&gt;ssl broken pipe | connection reset by peer&lt;/a&gt;. 这个问题应该很多人都会遇到，AdWords 官方也给了不少答复，但是始终没有清晰的答案。我个人认为这大概跟 AdWords API 的实现没太大的关系，用上面的方法即可解决。&lt;/p&gt;</description>
    </item>
    <item>
      <title>AdWords – java.lang.RuntimeException: Abstract keyValue without superclass</title>
      <link>https://qingbo-net.pages.dev/archives/332/</link>
      <pubDate>Mon, 27 Jul 2009 12:04:03 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/332/</guid>
      <description>&lt;p&gt;在 AdWords API 的开发中遇到这样的 Exception，总是让人感到很迷惑——Google 为什么把它的服务器内部错误直接给我们看呢？按理说应该告诉我们到底我们的输入数据错在哪里……&lt;/p&gt;
&lt;p&gt;今天在调用 &lt;a href=&#34;http://code.google.com/apis/adwords/docs/developer/CriterionService.html#updateCriteria&#34;&gt;updateCriteria&lt;/a&gt; 的时候又遇见了这个错误，经过一番搜索之后，在这里找到了答案：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://groups.google.co.uk/group/adwords-api/msg/3a311805b76e37f4&#34;&gt;http://groups.google.co.uk/group/adwords-api/msg/3a311805b76e37f4&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;哦，原来是因为我没有加 “criterionType” 这个属性。Criterion 有两个 subclass —— Keyword 和 Website，没有 criterionType 的话，Google 就不知道我们要操作的是哪一种类型了。&lt;/p&gt;
&lt;p&gt;关键是 &lt;a href=&#34;http://code.google.com/p/google-api-adwords-ruby/&#34;&gt;adwords4r&lt;/a&gt; 的 examples 太少，没有覆盖 API 的全部，在调用 addCriteria 的时候，很自然地把例子里地代码复制过来改改就好了，但是 updateCriteria 的时候，就没有例子可供参考了。而 Google 给的&lt;a href=&#34;http://code.google.com/apis/adwords/docs/developer/CriterionService.html#updateCriteria&#34;&gt;文档&lt;/a&gt;中，并没有将 criterionType 列在 “Required fields” 之中（大概该文档倾向于给使用 Java client 的人看吧）。&lt;/p&gt;
&lt;p&gt;另外，我觉得在添加关键词的时候指定 criterionType 是合理的，但是在 update 的时候，Google 根据我们提供的 id 和 adGroupId，已经完全可以确定该 criterion 的 type 了，为什么还要我们来指定呢？&lt;/p&gt;
&lt;p&gt;无所谓，既然是这个导致的问题，我们就注意一下，加上这个属性吧……&lt;/p&gt;</description>
    </item>
    <item>
      <title>SEO 的技术含量</title>
      <link>https://qingbo-net.pages.dev/archives/331/</link>
      <pubDate>Sat, 18 Jul 2009 02:19:27 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/331/</guid>
      <description>&lt;p&gt;现在几乎是个人都知道 SEO 这个词，尽管可能这些人中有的连这三个字母分别代表什么都不知道。那些给企业做垃圾网站的公司旗号中肯定包含一条 SEO，而很多传统企业的老总也慢慢地知道 SEO 这玩意对它们很有用。在办公楼的楼道里经过，也时不时听到有人在讨论 SEO – “哎呀，SEO 上不去，怎么整啊……” 曾经见过一张名片，title 是“智者”，自称是互联网、航空航天、SEO 的专家。&lt;/p&gt;
&lt;p&gt;在这样的环境下，我就得到一种印象，SEO 大概是互联网上最没有技术含量的东西了，打着 SEO 旗号的，全都是骗钱的。尤其是那些根本不懂互联网的人，还沾沾自喜地提一下 SEO 以炫耀自己对互联网地独到理解，真是让人反胃。&lt;/p&gt;
&lt;p&gt;直到最近我才发现 SEO 原来可以很有技术含量 —— 不过上述地那些人做的事除外。搜索引擎技术是很复杂的技术，非常有技术含量，因此针对搜索引擎所做的 SEO，自然也应该有一定技术含量。最早期最弱智的 SEO 方法如关键字堆砌、隐藏字符等等，现在应该已经被认为是垃圾技术，当然了，国内大部分 SEO 高手还在使用。&lt;/p&gt;
&lt;p&gt;SEO 应该从全局考虑，最好地引导搜索引擎（最终是引导执行搜索的用户）找到你网站上他们想要的最合适的内容，给搜索的各方带来最高的效益。最初级的做法就是想尽一切办法不惜作弊来提高排名、吸引流量。但是用户到了网站上大多数情况下都会觉得内容很不相符，很快跑掉。这种方法仅对色情网站有效。流量来了只是第一步，转化率才是重点。&lt;/p&gt;
&lt;p&gt;还有个简单的例子，一个网站的首页可能有了很高的排名（或许比如 Page rank 非常高），而内页对于搜索引擎来说权重比较低，于是用户搜索很多关键词，网站的首页都排在前面，真正跟这个关键词更相符的页面可能出不来，这也是失败。如何在网站的众多页面中合理分布权重，让最相符的内容排在第一位，这也是重点。&lt;/p&gt;
&lt;p&gt;搜索引擎肯定会越来越聪明，产品本身还是最重要的，SEO 只是起个辅助、指导的作用。做 SEO 的兄弟们，有点技术含量好吧……&lt;/p&gt;</description>
    </item>
    <item>
      <title>还是 ubuntu 省事</title>
      <link>https://qingbo-net.pages.dev/archives/330/</link>
      <pubDate>Mon, 25 May 2009 09:17:20 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/330/</guid>
      <description>&lt;p&gt;上周在一台联想的新机器上安装 Linux，最初是用一张自定义的 CentOS 5.2 netinstall disc，结果每次 usb-driver 加载结束的时候，都出来一屏乱码然后就没动静了，此时仅仅加载了内核，什么信息都没法看。于是我猜想是不是联想的隐藏分区在作怪，可是删除了之后依旧是一样的问题。不过使用另一张 redhat installation DVD 却可以正常地安装，安装结束后，终于知道了那屏乱码是啥原因——内核 too old, 不支持这个网卡。最终，安装了内核地 headers，然后在 Intel 网站上下载了&lt;a href=&#34;http://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&amp;amp;ProductID=2916&amp;amp;DwnldID=16242&amp;amp;strOSs=39&amp;amp;OSFullName=Linux*&amp;amp;lang=eng&#34;&gt;驱动的源代码&lt;/a&gt;，终于编译出来这个 driver，可以上网了。不过后来欲安装图形界面的时候，又发现它完全不支持附带的 21′ LCD.&lt;/p&gt;
&lt;p&gt;安装图形界面主要是想解决在该 server 上登录某 VPN 网络的问题。后来发现该 VPN server 提供了针对 debian 系列的 deb package 供安装，于是试试 Ubuntu，开始拿了一张 8.10 的盘，live cd 测试发现对屏幕的默认支持不太好，于是下载 9.04 刻录了一张，安装完成后，非常完美，VPN 果然可用，我只需静下心来配置我的服务器软件了。&lt;/p&gt;
&lt;p&gt;Linux 的桌面，折腾好了可以爽一爽，但是折腾不好的话，会让你很郁闷，还是找个省事的好，呵呵。&lt;/p&gt;</description>
    </item>
    <item>
      <title>vim 为啥把人吓跑</title>
      <link>https://qingbo-net.pages.dev/archives/329/</link>
      <pubDate>Tue, 12 May 2009 15:31:22 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/329/</guid>
      <description>&lt;p&gt;在 unix 环境工作难免要碰到 vim. 我倒也经常用 vim 做一些简单的编辑，但是似乎没怎么写过大段的代码。今天有人想用它来写 ruby 的时候，我帮忙去找 ruby 相关的配置，很快发现 vim 本身就带了丰富的完善的 ruby 配置，只是默认没有 enable.&lt;/p&gt;
&lt;p&gt;在几个 mac, linux 的系统中，我发现情况都是这样，可能是 vim 为了性能考虑？vim 安装时就带了许多的语法高亮、缩进等定义，分布在安装目录下的 plugin, indent 等目录中。只需要在你的 .vimrc 文件中加上这么一行：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;filetype plugin indent on&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;vim 在打开文件中就会根据文件类型选择不同的缩进方式。试了一下 ruby 的缩进，非常棒。好像很多用户想用 vim 编辑某种语言程序时，都会在网上到处搜该语言的配置文件，拿到一个就 paste 到自己的 .vimrc 中试试，结果折腾半天也不好，遂放弃。&lt;/p&gt;
&lt;p&gt;刚刚在 Google Reader 里看到一篇旧文，说 vim 的配置使用自己特定的语法是个硬伤，确实。上面简单的一个命令，如果没有看过一些 vim 的文档，谁也看不出它会起什么作用。许多人尝试 vim 好多次，好多次被吓跑。第一次可能是因为它的 mode 的概念，进去都不知道怎么编辑。第二次可能就是因为不会配置—— vim 的强大就在于它的可定制性，不会定制，就不能用了。&lt;/p&gt;
&lt;p&gt;最后再补上几个 .vimrc 中必备的命令：&lt;br&gt;
set nocompatible&lt;br&gt;
syntax on&lt;/p&gt;
&lt;p&gt;还有特别为某种文件类型指定 tab 以及缩进的配置，比如 ruby 的风格：&lt;br&gt;
au FileType ruby setlocal expandtab&lt;br&gt;
au FileType ruby setlocal tabstop=2 shiftwidth=2 softtabstop=2&lt;br&gt;
au FileType ruby setlocal cindent&lt;br&gt;
au FileType ruby setlocal smartindent&lt;br&gt;
au FileType ruby setlocal autoindent&lt;/p&gt;</description>
    </item>
    <item>
      <title>Purple Dragon Book!</title>
      <link>https://qingbo-net.pages.dev/archives/328/</link>
      <pubDate>Sun, 10 May 2009 09:29:51 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/328/</guid>
      <description>&lt;p&gt;计算机系的同学一定听说过“龙书”吧？编译原理的经典之作 – &lt;a href=&#34;http://www.amazon.com/Compilers-Principles-Techniques-Alfred-Aho/dp/0201100886&#34;&gt;Compilers: Principles, Techniques, and Tools&lt;/a&gt;. 很幸运，我们当时的课本就是它。&lt;/p&gt;
&lt;p&gt;刚才和同学聊到编译原理的好书还有“虎书”和“鲸书”时，他提醒我龙书已经出来第二版了 – &lt;a href=&#34;http://www.amazon.com/Compilers-Principles-Techniques-Tools-2nd/dp/0321486811/&#34;&gt;Compilers: Principles, Techniques, and Tools (2nd Edition)&lt;/a&gt;，让我比较吃惊。2006年出的，那时已经毕业了。做毕业设计的时候，老师就提到后来发展的许多新技术，龙书中都是看不到的，让我看虎书。现在应该好了：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Every chapter has been completely revised to reflect developments in software engineering, programming languages, and computer architecture that have occurred since 1986, when the last edition published.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;关于“龙书”，这里有一个&lt;a href=&#34;http://en.wikipedia.org/wiki/Dragon_book&#34;&gt;词条&lt;/a&gt;，原来之前还有一本绿龙书，出版于1977年。不到10年，红龙书出来了，而现在的紫龙书时隔20年才出来。看到定价请不要害怕，国内已经有影印版。&lt;/p&gt;
&lt;p&gt;看这本书以及另一本&lt;a href=&#34;http://www.amazon.com/Computer-Organization-Design-Fourth-Architecture/dp/0123744938/&#34;&gt;讲计算机体系结构的书&lt;/a&gt;的时候，给我印象最深的是，这些作者可以把如此深奥、晦涩、难懂的知识这么流畅地传授给你，让你感受不到门槛。他们不仅是科学家，还是教育家，他们写书的时候不仅要自己懂，而且要考虑如何让读者懂。而国内的作者们，肚子里本来就没东西的就不用说了，有些学术水平比较牛，写出的书看起来却不相称，许多感觉是在给自己打草稿。&lt;/p&gt;
&lt;p&gt;另外提醒大家，千万不要看那些糟蹋原著的中文译本。与其花时间在猜测那些蹩脚甚至错误的翻译文字上，不如花点时间学好英文，去看原著。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mac Terminal 的命令编辑技巧</title>
      <link>https://qingbo-net.pages.dev/archives/327/</link>
      <pubDate>Sat, 09 May 2009 11:26:26 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/327/</guid>
      <description>&lt;p&gt;初次试用 Mac 的 Terminal，肯定会觉得在命令行上移动光标非常不方便 —— Mac 的大部分程序中按下 Home/End 键都不是到达行首或行末，这让初次接触 Mac 的用户们很烦恼。这个其实比较容易解决，在 Mac 中，多数情况下 Ctrl-a/Ctrl-e 是行首、行末。接下来就说说其它的一些技巧，让你在 Terminal 中的工作更加高效。&lt;/p&gt;
&lt;p&gt;现在的 Mac OS X 中的默认 shell 都是 bash 了。bash 的最基本的技巧就不必多说了，大家按得最多的，我想可能是上下方向键（或者 Ctrl-p/Ctrl-n），还有 Ctrl-r 搜索命令历史。&lt;/p&gt;
&lt;p&gt;—————–不仅限于 Mac—————–&lt;/p&gt;
&lt;p&gt;有一个我们一般不去碰的命令 —— “set -o vi”，它会把 bash 命令行的编辑方式改成 vi，当然了，默认 mode 是 “Insert”。你可以试试执行这个命令，然后输入命令，按下 ESC. 这时 j/k 就是上一条/下一条命令，h/l 就是左右移动了，再试试 w? 如果你喜欢 vi，这也许是个不错的选择 🙂&lt;/p&gt;
&lt;p&gt;默认的编辑方式是 emacs，可以通过 “set -o emacs” 来设置。也就是说，在 bash 中，默认我们是可以用 Emacs 的方式来编辑命令的。回头看到达行首/行末的命令 Ctrl-a/Ctrl-e，它们就是 Emacs的命令啊。下面列出对命令编辑非常有用的一些其它指令：&lt;/p&gt;
&lt;p&gt;Ctrl-f/Ctrl-b: 向前/向后移动一个字符 (&lt;strong&gt;f&lt;/strong&gt;orward/&lt;strong&gt;b&lt;/strong&gt;ackword)，相当于方向键。&lt;br&gt;
Ctrl-n/Ctrl-p: 向下/向上移动一行，就是历史查找了，也相当于方向键&lt;br&gt;
Meta-f/Meta-b: 向前/向后移动一个&lt;strong&gt;单词&lt;/strong&gt;（在 vi 模式下可以单按w/e/b）&lt;br&gt;
Meta-d/Meta-backspace: 向前/向后删除一个&lt;strong&gt;单词&lt;/strong&gt; （vi：dw/db）&lt;br&gt;
Ctrl-k: 删除到行末，非常方便。比如你向前翻历史翻了很久，又决定从头输入一个命令，那么就 Ctrl-a, Ctrl-k，把整行删掉。（vi：d$, 还可以 d^ 删除到行首，不知道 emacs 有没有对应的便捷方式？）&lt;/p&gt;</description>
    </item>
    <item>
      <title>Site24x7 – 网站监控小工具</title>
      <link>https://qingbo-net.pages.dev/archives/326/</link>
      <pubDate>Fri, 08 May 2009 12:44:16 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/326/</guid>
      <description>&lt;p&gt;前文说到 VPS 被服务商无声无息地关闭，后来我就在网上找，看有没有针对俺这种小客户地免费监控工具。我不需要你每天从全球各地发来请求测量网站的 accessibility, response time，只需在它 down 的时候及时提醒我一声就好了。&lt;/p&gt;
&lt;p&gt;这篇&lt;a href=&#34;http://www.snipe.net/2009/01/cheap-or-free-website-status-monitoring/&#34;&gt;文章&lt;/a&gt;对于廉价或免费的监控服务做了比较详细的比较，我看了看，感觉 &lt;a href=&#34;http://site24x7.com/&#34;&gt;site24×7&lt;/a&gt; 比较好用。免费的监控服务对我来说已经够用了，只需要给我发个邮件即可。它甚至有短信提醒，支持的&lt;a href=&#34;http://site24x7.com/supported-sms-providers.html&#34;&gt;列表&lt;/a&gt;上有中国的主要运营商，至少我测试中国移动是可以的。不过只有免费的 10 条短信，用完后买 50 条需要 10 美金，还是比较贵的。&lt;/p&gt;
&lt;p&gt;可以查看完整的 &lt;a href=&#34;http://site24x7.com/site24x7-pricing.html&#34;&gt;pricing 及 feature comparison&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Apache 中禁止通过其它域名访问</title>
      <link>https://qingbo-net.pages.dev/archives/325/</link>
      <pubDate>Thu, 07 May 2009 17:11:39 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/325/</guid>
      <description>&lt;p&gt;现如今办什么事都不方便，有一天发现某 VPS 不能访问了，问服务商怎么回事，答曰指向该 VPS 的某域名没有beian，所以给你关了。国内的服务也就这样了，上面对他们野蛮，他们现学现卖，对客户也一样野蛮，连一声通知都没有。再说这个没有beian的域名，一个夹杂着字母和数字的 .cn 垃圾域名，我们根本没见过。照这样，我去花一块钱整个域名指向 miibeian，是不是它就该关了？&lt;/p&gt;
&lt;p&gt;本来，法律法规是弱者约定用来约束强者的工具，但是现在它对强者毫无作用，反而被强者用来欺压弱者。&lt;/p&gt;
&lt;p&gt;国内的主机商还有个特点是擅长使用 QQ，却不屑于使用其它的交流工具比如 Email. 客服丝毫不懂技术，死活要让我去把这个域名备案，shit. 后来又说，你的 VPS 上解除绑定不就行了？shit，我疯了，自己的事还忙不过来，去绑定这么个破域名。好吧，来“解除绑定”。&lt;/p&gt;
&lt;p&gt;httpd.conf 加上这么三行：&lt;/p&gt;
&lt;p&gt;RewriteEngine on&lt;br&gt;
RewriteCond %{HTTP_HOST} !^(.&lt;em&gt;).yourdomain.com [NC]&lt;br&gt;
RewriteRule ^/(.&lt;/em&gt;) &lt;a href=&#34;http://www.pig.com/&#34;&gt;http://www.pig.com/&lt;/a&gt; [L,R]&lt;/p&gt;
&lt;p&gt;其实就是用的 &lt;a href=&#34;http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html&#34;&gt;mod_rewrite&lt;/a&gt;, 在请求的域名不是你的域名的情况下，重定向到一个其它的地址。&lt;/p&gt;
&lt;p&gt;许多人可能会首先想到 &lt;a href=&#34;http://httpd.apache.org/docs/2.0/mod/mod_access.html&#34;&gt;mod_access&lt;/a&gt;，但这个似乎是用来控制 visitor IP 来源的，而不是他访问的地址。&lt;/p&gt;
&lt;p&gt;写完发现，本文本来空洞无物，加了些抱怨，显得丰满了许多。&lt;/p&gt;</description>
    </item>
    <item>
      <title>几个一直读错的英文单词</title>
      <link>https://qingbo-net.pages.dev/archives/324/</link>
      <pubDate>Sun, 26 Apr 2009 03:50:06 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/324/</guid>
      <description>&lt;p&gt;我一直认为自己的英文发音是比较准确的。如果发音不标准，至少也知道这个单词的音标是什么，大部分生词看到拼写也能知道它的音标。&lt;/p&gt;
&lt;p&gt;我第一个发现的一直读错的英文单词是 &lt;a href=&#34;http://www.merriam-webster.com/dictionary/archive&#34;&gt;archive&lt;/a&gt;. 中间的字母i，我一直认为发音是 [i:]，当听到一个同学读 [ai] 的时候，心想他一定是错了，不过后来自己回去查，发现自己一直都是错误的发音。&lt;/p&gt;
&lt;p&gt;我记得前段时间 &lt;a href=&#34;http://awflasher.com/blog/&#34;&gt;aw&lt;/a&gt; 曾经再 twitter 上征集容易读错的单词列表，不知道后来有没有继续，我也 search 不到当时的 tweet 了。当时我就回复了他一个 archive. 不过最近的这一段时间，因为连续遇到一些英文比较牛的朋友，我开始愈加谨慎起来，于是陆续发现了自己更多的错误，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.merriam-webster.com/dictionary/navigate&#34;&gt;navigate&lt;/a&gt;. 第一个字母我曾经以为发音是 [ei]&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.merriam-webster.com/dictionary/analytic&#34;&gt;analytic&lt;/a&gt;. 我模仿 &lt;a href=&#34;http://www.merriam-webster.com/dictionary/analysis&#34;&gt;analysis&lt;/a&gt; 的音标来读&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.merriam-webster.com/dictionary/iterate&#34;&gt;iterate&lt;/a&gt;. 第一个字母我认为是 [ai]&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;提醒一下，金山词霸这样的辞典是不怎么严谨的，它标注的音标有时候可能不准确。有时候你会发现同一个单词查出来有不同的读音（不是多音词），肯定有一个是错误的。查读音的话，比较权威的是这个：&lt;a href=&#34;http://dictionary.cambridge.org/cepd/&#34;&gt;Cambridge English Pronouncing Dictionary&lt;/a&gt;，一个研究语言学的朋友推荐的 🙂 他还跟我说，英文单词千万不要望文生音。上面提到的几个单词，实际上都是我犯了“望文生音”的错误。&lt;/p&gt;
&lt;p&gt;英语和美语的读音有一些常见的比较有规律的差异，可以在&lt;a href=&#34;http://en.wikipedia.org/wiki/American_and_British_English_differences&#34;&gt;这里看看&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;我个人觉得吧，发音准确对学好英语还是挺重要的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用英文版本网站的好处</title>
      <link>https://qingbo-net.pages.dev/archives/323/</link>
      <pubDate>Sat, 18 Apr 2009 00:53:48 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/323/</guid>
      <description>&lt;p&gt;前几天，&lt;a href=&#34;http://twitter.com/CharlesTang&#34;&gt;Charles&lt;/a&gt; 抱怨 subversion 的客户端版本不兼容问题搞得他很烦。因为 TortoiseSVN 的最新版本在 working copy 中记录的是 1.6 的 svn client metadata 格式，而 NetBeans 使用的是他自己安装的 CollabNet 版本的 1.5.6，因此用 TortoiseSVN 更新了一下 working copy，NetBeans 就无法操作了。&lt;/p&gt;
&lt;p&gt;Charles 坚持他在 collab.net 上看到的最新版本就是 1.5.6，然而我去看的时候，明明是已经有 1.6 版本的。我没太注意过 subversion 跟 CollabNet 到底是啥关系，反正是非常非常紧密的关系，不可能 svn 出了1.6 而 CollabNet 没有对应版本的（CollabNet 应该是主导作用的，它网站上下载的版本按理说应该是完全一样，虽然我从来没用过它的版本）。一番思考之后，Charles 终于发现了原因——&lt;a href=&#34;http://twitter.com/CharlesTang/status/1533152220&#34;&gt;他被重定向到了中文站&lt;/a&gt;，哈哈。&lt;/p&gt;
&lt;p&gt;这个故事告诉我们，有英文站尽量用英文站，不要图省事用中文版本，除去读到错误翻译的风险，你还有可能因为翻译的延迟而误事。Google 的产品也是一样，新特性都最先在英文版里尝试。&lt;/p&gt;
&lt;p&gt;Charles 说使用中文被 Collab 鄙视了，我又想到了 skype，中国人被鄙视得更加彻底，访问 skype.com 直接被重定向到 tom.com（肯定是根据 IP 判断地理位置），然后给你个贴了小广告的版本。去广告的最简单办法是访问 &lt;a href=&#34;http://www.skype.com/intl/en/&#34;&gt;http://www.skype.com/intl/en/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;学好英文吧！多一种语言，多好多机会！&lt;/p&gt;</description>
    </item>
    <item>
      <title>PHP Warning:  PHP Startup: Unable to load dynamic library</title>
      <link>https://qingbo-net.pages.dev/archives/322/</link>
      <pubDate>Mon, 06 Apr 2009 03:18:19 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/322/</guid>
      <description>&lt;p&gt;首先，做 web 开发一定要学会看日志。做了一个简单的 PHP 数据库程序，访问时页面全是空白怎么办？看看 Apache 的 error.log (Windows).&lt;/p&gt;
&lt;p&gt;在 Windows 上安装 PHP 之后，如果是以 Apache 方式运行，那么 Apache 启动的时候在 error.log 里一般会出现许多 warning，大致是这样的：&lt;/p&gt;
&lt;p&gt;PHP Warning: PHP Startup: Unable to load dynamic library ‘D:\Program Files\PHP\ext\php_gd2.dll’ – \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3\r\n in Unknown on line 0&lt;/p&gt;
&lt;p&gt;这个错误分两种情况处理。第一种情况，某些 ext 子目录中的扩展依赖于 PHP 安装根目录下的 dll，比如 ext/php_mysql.dll 就依赖 libmysql.dll，如果你发现错误日志中有 mysql 扩展，那就说明 PHP 安装的时候，没有在 PATH 环境变量中加上 PHP 的安装目录，需要你自己去修改。这一般是因为弱智的杀毒软件造成的。修改后重启机器，再试试。&lt;/p&gt;
&lt;p&gt;环境变量设置正确了之后启动服务还有 warning，说明这些扩展依赖你系统上没有的一些 dll 库，比如 php_oci8.dll/php_pdo_oci.dll 这些是依赖 oracle 的。你如果不在意这些 warning，不管它就可以了，毕竟只要不用到这些扩展提供的功能，就不影响服务运行。如果在意的话，直接去 php.ini 的文件末尾部分，把相应的扩展注释掉就可以了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>混乱的中文——“标签”是什么？</title>
      <link>https://qingbo-net.pages.dev/archives/321/</link>
      <pubDate>Sun, 05 Apr 2009 09:14:04 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/321/</guid>
      <description>&lt;p&gt;我觉得中文本来就够混乱不堪的，到了计算机及其它现代科学的世界里，就完全是一团糟了（也许我说的有点过了，呵呵）。今天在网上闲逛看见这么一个比较典型的代表，就拿它举个例子。&lt;/p&gt;
&lt;p&gt;假如做产品的跟做页面的交流，说：“这里需要一个标签。”请问这个“标签”指的是什么？我想到的有这么几种可能：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;tab. 不了解的请看这篇“&lt;a href=&#34;http://ucdchina.com/snap/2969&#34;&gt;如何处理海量tab？&lt;/a&gt;”，我就是看到这个想到写一写这个话题的 🙂&lt;/li&gt;
&lt;li&gt;tag. Web 2.0 时代被滥用的东西，实际上就是更随意的分类，我在很久以前写过一篇日志“&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post238.html&#34;&gt;标签(tag)真的那么重要吗？&lt;/a&gt;”。看，当时我就怕读者搞不清楚，于是在括号里标注了英文。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.w3schools.com/tags/tag_label.asp&#34;&gt;label&lt;/a&gt;. 一个 HTML tag，用在表单中。写过不少 HTML 的人还不知道？赶紧看去。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;平心而论，单单说中文混乱是偏激的。一词多义在一般自然语言中都存在，甚至在编程语言中不也很常见吗？就拿上面第二点提到的 tag 来说，在第三点里也出现了（HTML tag），不过是不同的含义。而 label 也解释为第二点的意思，和 tag 互换使用。Google 的产品就习惯把 tag 叫做 label. 这么理智地一想，又觉得英文也似乎好不到哪儿去……哦，我自己都快绕不过来了，想说服别人，却连自己都说服不了了 🙁&lt;/p&gt;
&lt;p&gt;总起来说，结合上下文语境，英文还是更清楚一些。这些差异主要是因为计算机世界里新创造了许多概念和词汇，而某些是在中文里没有对应的，或者对应得不好。如果留心的话，就会发现台湾人有许多名词的译法跟大陆不一样，也许值得参考。有些东西不好办，还是保留原词比较好，例如 “hack” 这个词。&lt;/p&gt;
&lt;p&gt;混乱，还是博大精深？我的思想又彪得更远，觉得语言对一个民族的性格特点有很大的影响力。中文是很善于模棱两可的，在古代更是这样，连标点符号都没有，不知道古代多少人因此吃过亏。由于交流的工具——语言本身就是很模糊的，人与人之间就是你说我猜，又怕猜错，于是孔老夫子就总结出来一套非常非常科学的行事方法，叫做中庸，一直被我们葱白到今天。&lt;/p&gt;
&lt;p&gt;扯太远了，全是愚见，仅供一笑 🙂 做过技术书籍翻译的同志们才更有发言权。&lt;/p&gt;</description>
    </item>
    <item>
      <title>葱白</title>
      <link>https://qingbo-net.pages.dev/archives/320/</link>
      <pubDate>Sun, 05 Apr 2009 07:33:01 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/320/</guid>
      <description>&lt;p&gt;前些天 Kaven 写了一篇文章 “&lt;a href=&#34;http://dancewithnet.com/2009/03/29/douglas-crockford/&#34;&gt;JavaScript大牛：Douglas Crockford&lt;/a&gt;“。过了几天，大牛 &lt;a href=&#34;http://blog.360.yahoo.com/blog-TBPekxc1dLNy5DOloPfzVvFIVOWMB0li&#34;&gt;Douglas Crockford&lt;/a&gt; 跑过来看，真是仔细，不光看文章，还翻到下面的评论，对&lt;a href=&#34;http://dancewithnet.com/2009/03/29/douglas-crockford/#comment-167523&#34;&gt;这句话&lt;/a&gt;产生了强烈的好奇心：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;不​​得​​不​​说​​，​​我​​葱​​白​​他​​。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;于是大牛就&lt;a href=&#34;http://blog.360.yahoo.com/blog-TBPekxc1dLNy5DOloPfzVvFIVOWMB0li?p=994&#34;&gt;到处找翻译&lt;/a&gt;，Yahoo/Google 的翻译都很糟糕——你能想象有翻译软件能搞对这句话吗？令人惊讶的是，微软的 &lt;a href=&#34;http://www.windowslivetranslator.com/Default.aspx&#34;&gt;Windows Live Translator&lt;/a&gt; 竟然给翻译出来了！&lt;/p&gt;
&lt;p&gt;大牛显然是谦虚中有睿智，睿智中有自信，认定微软是正确的。&lt;/p&gt;
&lt;p&gt;我一位同学又试了一下这句网络语言：“我稀饭你”，结果它又翻译得不错——”i’m crazy about you”. 让我葱白一下微软！&lt;/p&gt;</description>
    </item>
    <item>
      <title>return 一个空的集合，而不是 null</title>
      <link>https://qingbo-net.pages.dev/archives/319/</link>
      <pubDate>Sat, 04 Apr 2009 01:28:31 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/319/</guid>
      <description>&lt;p&gt;&lt;em&gt;想想几天前的天气，阳光明媚，万里无云，真是让人有辞职的冲动。到了这个小假期，似乎人间的幽怨又郁积起来，天地转入混沌，一篇迷茫。我决定窝在家里，学点东西。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;这个话题对于程序员来说是家常便饭，设计许多函数、方法的时候都会遇到。实际上这是极其基本、极其容易理解的一个问题，不过有些人还没有意识到，仍然随意乱写。拿 Java 举个最简单的例子：&lt;/p&gt;
&lt;p&gt;[code lang=”java”]&lt;br&gt;
public List getTopUsers(int limit) {&lt;br&gt;
if (limit &amp;lt; 1) {&lt;br&gt;
return null;&lt;br&gt;
}&lt;br&gt;
// …&lt;br&gt;
}&lt;br&gt;
[/code]&lt;/p&gt;
&lt;p&gt;这个例子里首先判断传入的参数 limit，如果它小于 1，那后面的工作就不需要了，这里用了 return null 来处理这种情况。这个方法可能在许多地方被调用，每次调用结束，都要判断一下返回值是不是 null，如果不是 null，才可以进行正常的处理。这是多么繁琐的事情。&lt;/p&gt;
&lt;p&gt;[code lang=”java”]&lt;br&gt;
// The tedious way:&lt;br&gt;
List topUsers = xxx.getTopUsers(limit);&lt;br&gt;
if (topUsers == null) {&lt;br&gt;
// …&lt;br&gt;
} else {&lt;br&gt;
for (…) {…}&lt;br&gt;
}&lt;br&gt;
[/code]&lt;/p&gt;
&lt;p&gt;推荐的做法是返回一个零长度的 List，这样调用该方法结束后，无需判断返回值是否为 null，直接对其进行循环。不过是 return new ArrayList(0) 吗？尽管这种返回情况几率不是太大，但是每次创建一个新对象总是让人很不爽。幸好，Java 的标准库设计者已经在 Collections 类中放了一个空的 List 常量 EMPTY_LIST，除此之外，还有 EMPTY_MAP, EMPTY_SET，真是贴心。我相信主要还是集合类自己的实现代码中有很多地方用到了它们。于是，我们把 return null 改成 return Collections.EMPTY_LIST.&lt;/p&gt;</description>
    </item>
    <item>
      <title>设想一下网络身份的高效管理及利用</title>
      <link>https://qingbo-net.pages.dev/archives/318/</link>
      <pubDate>Sat, 28 Mar 2009 16:05:33 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/318/</guid>
      <description>&lt;p&gt;使用网络服务的目的，应该是利用它们高效、及时地交流有用的信息，获取和分享知识，能够结交到志同道合的朋友也是非常好的事情。&lt;/p&gt;
&lt;p&gt;前阵子有不少朋友加了我 Gtalk. 最近我也在不断地通过 Google reader 中朋友们的分享扩大自己订阅的范围，新加了不少优秀 blogger 的 RSS. 很多人会在 blog 上留下自己的 twitter 帐号，我如果发现有价值就会 follow. 另外 &lt;a href=&#34;http://twitter.com/Fenng&#34;&gt;Fenng&lt;/a&gt; 当前正在进行他的&lt;a href=&#34;http://search.twitter.com/search?q=%E6%AF%8F%E6%97%A5%E6%8E%A8%E8%8D%90%E4%B8%80%E4%BD%8D%E6%8E%A8%E5%8F%8B%E8%AE%A1%E5%88%92&#34;&gt;每日推荐一位推友计划&lt;/a&gt;，也让我收获不少。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;现在一个比较烦恼的问题是，这些人在不同的网站有不同的身份，没有一种机制很好很方便地将它们关联起来。举个不太恰当的例子，Fenng 的 blog 叫做 “&lt;a href=&#34;http://www.dbanotes.net/&#34;&gt;DBA notes&lt;/a&gt;“，而 twitter 账户名就是 Fenng. 当然了，Fenng 的名气比较大，一般不会搞混的，并且 blog 的 RSS 输出中也包含了作者名，所以说举这个例子不是太恰当。对于普通人，可能就很难讲两个账户关联起来。有时候在 twitter 上看到一条引人注目的 tweet，都想不起来这是谁，还得到他的 twitter 主页去看，如果上面有 blog 链接还好。有时候某人接连几个月没有更新 blog，猛然更新一下，在 Google reader 里是很陌生的感觉，假如 blog 里没有个 about 页面，说不定还真想不起来这是谁。对了，我也希望把 Flickr 的账户也关联一下。&lt;/p&gt;
&lt;p&gt;我虽然关注 web 发展比较多，但是真正在使用的服务还是很少的，现阶段主要也就是 Gtalk, Google reader, twitter. 那些重度 SNS 用户，可能同时在使用的还有 Facebook, LinkedIn… 一大堆，我就懒得列出来了，对于这些人来说，这么多种服务上的朋友们肯定重叠的几率特别大，但是到底有几个朋友的行踪是自己熟悉的呢？twitter 上有位朋友发了一句话，我希望能够以最快的方式知道他是谁，我以前对他的看法，他还在网络上其它什么地方发布有价值的信息。&lt;/p&gt;
&lt;p&gt;friendfeed 我用得不多，但是感觉它不能解决我的问题，我似乎没有选择的余地，要么订阅他的全部，要么什么都不要。目前我在 Gmail contacts 里整理了一些联系人，有的怕忘记，在 notes 字段里写一段描述。仅此，并不是很方便，我几个月可能用到一次。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Web 开发之基本功</title>
      <link>https://qingbo-net.pages.dev/archives/317/</link>
      <pubDate>Fri, 27 Mar 2009 16:01:37 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/317/</guid>
      <description>&lt;p&gt;我感觉有些人学了 PHP 再学 ASP.NET 又学 J2EE，学了 struts 1.x 学 2.x，每学一种新的 web 开发技术都像是学一种完全陌生的技术一样。&lt;/p&gt;
&lt;p&gt;实际上这么多种语言、框架并存，各有各的优缺点。然而所有这些语言、框架的基石，都是 HTTP 协议。最起码的，一个 web 开发者要知道，它是无状态的 (stateless)。客户端向服务器发起请求，通常是 GET/POST 方式，服务器通常返回一个 HTML 文档，有时候就是随意一种格式（比如图片、二进制或者纯文本）。HTTP 协议需要特别注意的地方还包括缓存 (cache control) 以及跳转 (301/302) 等。&lt;/p&gt;
&lt;p&gt;我觉得，框架应该是归纳整理重复性的劳动，吸纳优秀的设计模式，而不是努力掩盖 HTTP 协议的本质。对 Web 开发者掩饰 web 的本质，是非常邪恶的一件事情。ASP.NET 就一直不遗余力地朝着这个目标发展，硬要把桌面程序的编程模式搬到 web 开发上来，Windows form、web form 的概念混为一谈，毒害了无数无辜的程序员。程序员接触到新的开发环境时，很可能到处碰壁，满地找牙（这个牙，可能就是 ASP.NET 给装的假牙——Event）。前段时间看了一下 Tapestry，发现该项目的老大有和 ASP.NET 类似的理念，按照他的说法，页面上的链接宁可在服务器端被 OnClick 处理一下然后 302 redirect，也不舍得直接指向实际的链接——声称这样更符合思维习惯。看到这个，我就明白了为什么 JavaEye 上有人惊呼，Tapestry 有点像 ASP.NET 啊，真好！说实话，看到这样的赞美，我就慌了。要 Tapestry 是我写的（假设而已，我现在还没这个能力），我就会反驳：“你才像 ASP.NET 呢！你们全家都是 ASP.NET!”.&lt;/p&gt;
&lt;p&gt;同志们，看清本质吧。web 开发真正的核心是 HTTP 协议，至于 Java 还是 C# 还是 PHP，它们只是服务器用来生成发送给客户端的那个 HTML 或其它格式的文档用的。尽管它们会影响到程序性能、开发速度等诸多方面，但是如果你连 HTTP 协议都不了解，即使使用的语言、框架再好、再高性能，也如同把一座钢铁大厦建在流沙之上。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google Reader 也有 twitter 功能</title>
      <link>https://qingbo-net.pages.dev/archives/316/</link>
      <pubDate>Mon, 23 Mar 2009 14:35:54 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/316/</guid>
      <description>&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://qingbo.org/wp-content/uploads/2009/03/google-reader-share.png&#34; alt=&#34;google-reader-share&#34; title=&#34;google-reader-share&#34; width=&#34;401&#34; height=&#34;275&#34; class=&#34;alignnone size-full wp-image-607&#34; /&gt;
&lt;p&gt;点击 Google Reader 左侧栏最上面一块中的 “Your stuff” 链接，即可看到类似上图的界面。我这个截图是在点击了 “Show Options” 链接之后的情况，默认只有一个输入框，没有标题、tag. 这不就是 twitter 吗？呵呵。&lt;/p&gt;
&lt;p&gt;我是昨天才发现 Google Reader 还有这么一个功能，平常我也就点点 share 按钮，分享些自认为有用或有趣的东西。看到这个界面上那个 bookmarklet 了吧？使用它可以分享任意一个链接，即使它不在任何一个 RSS 中。&lt;/p&gt;
&lt;p&gt;另外 Google Reader 最近刚刚发布了 &lt;a href=&#34;http://googlereader.blogspot.com/2009/03/google-reader-is-your-new-watercooler.html&#34;&gt;comments 功能&lt;/a&gt;，许多人欢呼雀跃，我却觉得没啥用处。虽然将某 item 的 comments 汇集到一起容易造成信息泛滥，但是分散在各个 share 中形不成规模，不利于思想的碰撞与融合，这样更不好。&lt;/p&gt;
&lt;p&gt;如果 Google Reader 能够像某些 RSS 阅读器那样让 blog 作者们 claim 自己的 RSS，然后看到所有在 Reader 中收到的评论，那是多么好的事情。我想许多读者也想在 Reader 中直接与作者交流，而不需跑到该 blog post 的页面。这牵扯的东西又太多了，如果这样，blog 的流量可能大减，等等。&lt;/p&gt;
&lt;p&gt;Reader team 的 blog post 说 “We have much more planned for this feature”，让我们拭目以待吧。&lt;/p&gt;</description>
    </item>
    <item>
      <title>用 Firefox 快速搜索</title>
      <link>https://qingbo-net.pages.dev/archives/315/</link>
      <pubDate>Sun, 22 Mar 2009 06:06:34 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/315/</guid>
      <description>&lt;p&gt;本文分享一下我在 Firefox 中使用搜索引擎的经验，希望对朋友们有所帮助。&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://qingbo.org/wp-content/uploads/2009/03/se-bar.png&#34; alt=&#34;se-bar&#34; title=&#34;se-bar&#34; width=&#34;285&#34; height=&#34;71&#34; class=&#34;alignnone size-full wp-image-605&#34; /&gt; 
&lt;p&gt;Firefox 界面右上角的搜索栏可是我严重依赖的东西。我不会先打开 google.com 然后再输入关键字搜索。不管你在做什么，有东西要搜索的时候，只需按下组合键 Ctrl+E 或者 Ctrl+K，焦点就会定位到搜索栏，输入你的关键字，回车，搜索结果就列出了。你可能不希望搜索结果在当前页面打开，很简单，在 Ctrl+E/Ctrl+K 之前按下 Ctrl+T，新建一个 Tab 就可以了。还有一个更便捷的方式是不用事先新建 tab，输入关键字之后按 Alt+Enter，搜索结果会自动在新 tab 页打开 (Alt+Enter 同样适用于地址栏)。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如何快速使用非默认搜索引擎搜索？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;点击搜索栏左侧的小按钮打开搜索引擎列表，然后点击最下面的 “Manage Search Engines…”，选中你需要使用的搜索引擎，然后点击右侧的 “Enter keyword…”，输入一个关键字，越短越好，一个字母就足够了，如下图所示：&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://qingbo.org/wp-content/uploads/2009/03/se-manage.png&#34; alt=&#34;se-manage&#34; title=&#34;se-manage&#34; width=&#34;425&#34; height=&#34;362&#34; class=&#34;alignnone size-full wp-image-604&#34; /&gt; 
&lt;p&gt;依我之见，默认的 Google 就不需要设置 keyword 了。keyword 有啥用呢？举个例子，我给 Wikipedia 的搜索引擎指派了关键字 “w”，那么在地址栏 (location bar) 输入 “w Java” 然后按下 Alt+Enter，就会在新 tab 打开 wikipedia 的搜索结果（实际上是直接 redirect 到 Java 词条的页面）。&lt;/p&gt;
&lt;p&gt;还不知道怎么快速定位到地址栏？至少有三个快捷键：Alt+D/F6/Ctrl+L&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;搜索指定版本的 Java 文档&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;比如 Java 6，可以到&lt;a href=&#34;http://mycroft.mozdev.org/search-engines.html?name=Java+6.0+JavaDoc&#34;&gt;这个页面&lt;/a&gt;去安装对应的搜索引擎。安装之后给它分配一个关键字 “j”，就可以像上面说的一样快速搜索 Java 文档了。&lt;/p&gt;
&lt;p&gt;实际上安装的搜索引擎只是在你的 Firefox profile 文件夹的 searchplugins 子目录中保存了一个文件。一般的路径是：&lt;br&gt;
&lt;em&gt;C:\Documents and Settings[USERNAME]\Application Data\Mozilla\Firefox\Profiles[PROFILE NAME]\searchplugins&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>收到了咔嚓鱼的免费杯子</title>
      <link>https://qingbo-net.pages.dev/archives/314/</link>
      <pubDate>Sat, 21 Mar 2009 09:45:35 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/314/</guid>
      <description>&lt;p&gt;杯子是免费的，不过要5元运费。本来我也没太大兴趣做个印着照片的杯子，不过去年年底的时候买了个麦当劳的优惠卡，送一张咔嚓鱼的优惠券，可以免费得到一个拼盘照片马克杯，只需支付5元运费，还不错。这个杯子好像原价要三十多块呢。&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;然后按照优惠卡上的地址去输入优惠码&lt;/li&gt;
&lt;li&gt;成功后就得到了优惠产品的链接&lt;/li&gt;
&lt;li&gt;顺着链接点过去，选择照片，定制杯子样式，最后 checkout&lt;/li&gt;
&lt;li&gt;在订单信息那一页下面有个填写优惠码的地方，比较容易迷惑人（如果优惠码填写在这里，是会报错的），实际上不要理会这个字段，空着它点击继续，在下一步结算的时候就可以发现咔嚓鱼已经把优惠计算进去了，最后账单总额是5元。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;然后就等着收杯子吧。我是15号下午订制，17号就收到了，速度很不错。而且包装也相当安全，里面是两块为马克杯量身定做的模具一样的细泡沫塑料，外面还有一层泡泡纸——这天下班回来的路上我就是靠挤爆泡泡消磨时间的，哈哈。&lt;/p&gt;
&lt;p&gt;杯子实际上也就放在那儿当个摆设，像我这么能喝水的人，那一杯还不够我一口喝……&lt;/p&gt;
&lt;p&gt;话说惠普为这个咔嚓鱼的推广真是费尽心机，免费冲洗，免费杯子，但是用户享受完免费的服务，还会接着去买东西吗？至少我没太大的需求。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Web framework 过度集成 JavaScript/Ajax</title>
      <link>https://qingbo-net.pages.dev/archives/313/</link>
      <pubDate>Sun, 15 Mar 2009 09:15:23 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/313/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post417.html&#34;&gt;前文&lt;/a&gt;提到 Matt Raible 在比较 Java web framework 的时候有一个重要的指标（他将之排在第一个）：&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Ajax Support: Is it built-in and easy to use?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;与 JavaScript 有关的指标还有一个：&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Validation: How easy is it to use and does it support client-side (JavaScript) validation?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;我个人却觉得服务器端的框架不应该对 JavaScript/Ajax 如此高度地集成，它们毕竟是客户端的东西。程序员必须有清晰的概念，什么是服务器，什么是客户端，它们之间是怎么交互的。微软的 ASP.NET 做了一个很不好的表率，将 web 开发用 Windows 桌面程序开发的理念来进行，迷惑了不少程序员——就连官方翻译 “Form” 成中文也是“窗体”，真是不伦不类。而程序员需要深究其运行机制的时候，就不得不折腾 POSTBACK 那一坨屎了。Ajax 开始流行之后，微软又不失时机地在 ASP.NET 加入了 Ajax 的控件，广受那些喜欢拖拖拽拽像搭积木一样“编程”的程序员的欢迎——这就是 “The Microsoft way”.&lt;/p&gt;
&lt;p&gt;Ajax 从概念上讲是革命性的，但在技术角度上说，了解 JavaScript 再去掌握 Ajax，就好象学会了 Java 再去学集合类怎么用一样简单。Ajax 技术被炒得神乎其神，以至于大家的简历上不得不再加一条“精通 Ajax”，一部分原因可能就是框架的集成使其神秘化，并且使大批程序员不愿或不敢去看它的真实面目。真要问问 Ajax 异步更新的下面是怎么回事，估计 80% 的人不知道。&lt;/p&gt;
&lt;p&gt;在 Tapestry 5 解释其 &lt;a href=&#34;http://wiki.apache.org/tapestry/Tapestry5AndJavaScriptExplained&#34;&gt;JavaScript 集成&lt;/a&gt;的 wiki 页面中，开头就写：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java web framework 之选择</title>
      <link>https://qingbo-net.pages.dev/archives/312/</link>
      <pubDate>Sat, 14 Mar 2009 15:31:08 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/312/</guid>
      <description>&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://qingbo.org/wp-content/uploads/2009/03/homer.png&#34; alt=&#34;homer&#34; title=&#34;homer&#34; width=&#34;400&#34; height=&#34;361&#34; class=&#34;alignnone size-full wp-image-600&#34; /&gt;
&lt;p&gt;相比 PHP, Ruby, Python 等语言，用 Java 来做 web 开发面临着太多的选择。不过也许正因为 Java 的选择更多，所以才有更多的人选择 Java？这一点不能确定。来&lt;a href=&#34;http://c2.com/cgi-bin/wiki?ObjectRelationalToolComparison&#34;&gt;这里&lt;/a&gt;看看，光是持久层的 ORM 工具就有这么一大坨。当然这里面还是 Hibernate 为王，这个选择比较容易做。&lt;/p&gt;
&lt;p&gt;然而到了表现层，虽然框架不是那么多，但是选择起来可不容易。每个框架需要评估的方面至少包括性能、学习/开发速度、可维护性、用户群体 (community) 等。&lt;/p&gt;
&lt;p&gt;Matt Raible 曾经对 Java web framework 们做了比较 (&lt;a href=&#34;http://static.raibledesigns.com/repository/presentations/ComparingJavaWebFrameworks-ApacheConUS2007.pdf&#34;&gt;PDF 下载&lt;/a&gt;，建议右键另存为)，我觉得这个 presentation 可以从39页开始看。第43、43页的建议和 tips 非常有价值：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Don’t believe blogs and articles – 也就是说，该 presentation 39页之前的内容要谨慎对待 🙂&lt;/li&gt;
&lt;li&gt;Try it yourself&lt;/li&gt;
&lt;li&gt;Believe developers, not evangelists&lt;/li&gt;
&lt;li&gt;Believe developers that are experienced with the framework and have used it in production&lt;/li&gt;
&lt;li&gt;Beware of corporate interests – they can twist marketing&lt;/li&gt;
&lt;li&gt;Books are a good sign&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如何选择呢？”Pick 2-3 frameworks for your type of application… and prototype! If prototyping is painful, switch.” 嗯，不要仅仅看各种派别的人整天在那争论孰优孰劣，虽然他们的争论很有价值，但是每个框架都有自己的优点和缺点，甚至有些优缺点是主观的。你选择的框架应该在你的项目环境（项目本身以及团队情况）中扬长避短，将优势发挥到最大。”You should try a framework before dissing it!”&lt;/p&gt;</description>
    </item>
    <item>
      <title>Trac 与 Redmine</title>
      <link>https://qingbo-net.pages.dev/archives/311/</link>
      <pubDate>Wed, 11 Mar 2009 05:07:14 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/311/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://trac.edgewall.org/&#34;&gt;Trac&lt;/a&gt; is an enhanced wiki and issue tracking system for software&lt;br&gt;
development projects.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.redmine.org/&#34;&gt;Redmine&lt;/a&gt; is a flexible project management web application.&lt;/p&gt;
&lt;p&gt;实际上 Redmine 应该是 Trac 的 clone，基于 RoR. 它们都是对项目开发、管理非常有帮助的系统，可不仅仅是 bugzilla +&lt;br&gt;
wiki，Timeline 这个 feature 将 bug tracking system, wiki,&lt;br&gt;
以及版本控制系统的最新动态整合起来，让你一眼看到项目的最新进展。&lt;/p&gt;
&lt;p&gt;我用 Trac 多一些，现在也在用，也更倾向于 Trac，而 Redmine 只是短暂地用过一段时间，下面简单地对二者的重要特性做一下比较。实际上&lt;br&gt;
python/ruby 我都不熟悉，所以下面的比较如有错误请多多指教 🙂&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;svn 支持&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Trac 只支持本机，通过 python 直接读取目录中的数据&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Redmine 是通过正常方式(http/svnserve之类)访问，支持远程代码库，不过要实现在 timeline 中实时看到最新的代码&lt;br&gt;
commit 比较麻烦一点&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;多项目支持&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Trac 可以在 Apache 中配置某目录的子目录全部为 Trac project，但是实现它们之间的综合管理比较&lt;a href=&#34;&#34;&gt;麻烦&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Redmine 原生支持多项目，管理比较方便&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;用户管理&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>安装 TortoiseSVN 并不需要重启</title>
      <link>https://qingbo-net.pages.dev/archives/310/</link>
      <pubDate>Tue, 10 Mar 2009 02:44:44 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/310/</guid>
      <description>&lt;p&gt;在 Windows 下面，&lt;a href=&#34;http://tortoisesvn.tigris.org/&#34;&gt;TortoiseSVN&lt;/a&gt; 应该是最常用的 Subversion 客户端了。但是安装完成的时候它都会要求重启计算机，连 FAQ 上都是&lt;a href=&#34;http://tortoisesvn.tigris.org/faq.html#ovlnotshowing&#34;&gt;这么说&lt;/a&gt;的：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You rebooted your PC of course after the installation? If you haven’t please do so now.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;不过我觉得实际上并不需要重启。它要求重启只是为了跟 explorer 的绑定生效，而为了重启 explorer 去重启计算机显然有点得不偿失。&lt;/p&gt;
&lt;p&gt;只需打开任务管理器，找到 explorer 进程并结束它，然后点击菜单“文件-新建任务(运行…)”，输入 explorer 回车，等一下任务栏出来的时候，一起就都 OK 了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>JavaScript/CSS 部署 – 从石器时代到工业时代</title>
      <link>https://qingbo-net.pages.dev/archives/309/</link>
      <pubDate>Sat, 28 Feb 2009 16:14:14 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/309/</guid>
      <description>&lt;p&gt;随着前端开发在 Web 开发中的地位日渐重要，前端相关的资源部署也成了各大网站开始重视的一步。&lt;/p&gt;
&lt;p&gt;对于一个访问量相当大的网站来说，从前端方面考虑，除了使用 CDN 向客户端分发 JavaScript/CSS 资源，充分利用客户端浏览器缓存也是减轻服务器压力的一个重要途径。&lt;/p&gt;
&lt;p&gt;首先按照我们的“常识”，认为 JavaScript/CSS 默认就是在浏览器中缓存“很长”一段时间的，作为最简单的策略，我们就依赖这种缓存机制来降低服务器的压力。然而，对于一个不断改进、更新的网站来说，JavaScript/CSS 的变动是相当频繁的。&lt;/p&gt;
&lt;p&gt;**如何让浏览器知道这些静态资源的改变呢？**让我们从最简单的解决方案开始摸索和学习，慢慢改进。&lt;/p&gt;
&lt;h3 id=&#34;刀耕火种的方式&#34;&gt;刀耕火种的方式&lt;/h3&gt;
&lt;p&gt;把这件事扔给开发者吧。以 JSP 页面为例，首先在一个统一的 jsp 文件（例如 version.jsp）中定义所有静态资源的版本号：&lt;/p&gt;
&lt;p&gt;[code lang=”html”]&lt;br&gt;
&amp;lt;%&lt;br&gt;
String dialogVersion = “20090101”;&lt;br&gt;
…&lt;br&gt;
%&amp;gt;&lt;br&gt;
[/code]&lt;/p&gt;
&lt;p&gt;然后在每个用到 JavaScript/CSS 的页面中包含该文件并且给静态资源加上版本号：&lt;/p&gt;
&lt;p&gt;[code lang=”html”]&lt;br&gt;
&amp;lt;%@ include file=&amp;quot;/WEB-INF/include/common.jspf&amp;quot; %&amp;gt;&lt;br&gt;
…&lt;/p&gt;
&lt;p&gt;…&lt;br&gt;
[/code]&lt;/p&gt;
&lt;p&gt;开发者负责在每次 commit 代码前检查自己修改过的静态资源，去修改相应的版本号。这给本来就不堪重负的开发者又增加了一项艰巨任务，他们难免会有疏忽的时候，等到有客户反馈问题，才想起来——哦，忘记改版本号了！&lt;/p&gt;
&lt;h3 id=&#34;自动化&#34;&gt;自动化&lt;/h3&gt;
&lt;p&gt;一个成熟的开发团队应该使用版本控制工具来管理代码，一般最常用的是 &lt;a href=&#34;http://subversion.tigris.org/&#34;&gt;Subversion&lt;/a&gt;. 除此之外，还应该有一套完善的部署脚本，执行一两个命令即可完成整个部署过程，而不是手动地去复制、修改代码。这个过程可能包含从 svn 检出代码、编译（解释型语言则省去了这一步）、选择性的复制（避免覆盖生产环境中的特定配置）等等。&lt;/p&gt;
&lt;p&gt;有了这些基础，把上面手工修改版本号的工作交给自动脚本去做就可以了。”&lt;a href=&#34;http://svnbook.red-bean.com/en/1.5/svn.ref.svn.c.info.html&#34;&gt;svn info&lt;/a&gt;” 命令可以列出文件最后被修改的版本号，我们只要得到这个版本号，把它写在 version.jsp 中即可。写这个脚本可能稍微麻烦一点，不过 python, perl, bash, ruby, 随便什么语言都可以，或者是一个 ant task. 这是一劳永逸的事情。开发者们可以把精力集中在真正的前端开发商了。&lt;/p&gt;
&lt;h3 id=&#34;不要用-query-string&#34;&gt;不要用 query string!&lt;/h3&gt;
&lt;p&gt;我本来以为到此为止就很完美了，但查阅了一些资料之后发现我的许多观点都是完全错误的。&lt;/p&gt;
&lt;p&gt;首先，在上述的方法中，版本号是作为 query string 附在静态资源的 URL 上的，然而：&lt;/p&gt;</description>
    </item>
    <item>
      <title>表单自动focus并不总是好的</title>
      <link>https://qingbo-net.pages.dev/archives/308/</link>
      <pubDate>Wed, 25 Feb 2009 08:02:16 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/308/</guid>
      <description>&lt;p&gt;许多网站的登录页面为了提升用户体验，都在页面加载完成后让用户名那个input自动获取焦点。就连struts的&lt;a href=&#34;http://struts.apache.org/1.3.10/struts-taglib/tagreference.html#html:form&#34;&gt;html:form&lt;/a&gt;标签也考虑到了这一点，提供了一个focus的属性。&lt;/p&gt;
&lt;p&gt;Gmail, Delicious都是这么做的。它们一般是hook页面的onload事件，调用input元素的focus方法。但是在网速较慢的情况下，onload可能会在表单显示之后好久才触发，而该事件触发前，用户可能已经填写了好几个表单项。假如此时用户刚好开始填写密码，就出现了下面的情景：&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://qingbo.org/wp-content/uploads/2009/02/auto-focus.png&#34; alt=&#34;auto-focus&#34; title=&#34;auto-focus&#34; width=&#34;290&#34; height=&#34;223&#34; class=&#34;alignnone size-full wp-image-590&#34; /&gt; 
&lt;p&gt;不仅破坏了两个已经填好的字段，对密码的安全也是一个威胁。&lt;/p&gt;
&lt;p&gt;某些方法例如jQuery提供的domReady可以比onload更早执行，然而在网速极慢的时候仍然无法完全避免这种情况。&lt;/p&gt;
&lt;p&gt;解决办法？我想大概有两种思路吧，一种是在用户名字段后面紧接着就插入一段javascript，让该字段获取焦点。&lt;/p&gt;
&lt;p&gt;另一种，当表单中有字段获得焦点时，hook到onload的函数不再设置焦点。实现方式可以有很多种。&lt;/p&gt;</description>
    </item>
    <item>
      <title>关于CrucialWebHost</title>
      <link>https://qingbo-net.pages.dev/archives/307/</link>
      <pubDate>Tue, 24 Feb 2009 01:00:40 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/307/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.crucialwebhost.com/&#34; rel=&#34;nofollow&#34;&gt;Crucial Web Hosting&lt;/a&gt;实际上是我尝试的第一家也是迄今为止唯一一家国外空间商。当时本来想在dreamhost, hostgator之类的里面挑一个的，正好CrucialWebHost做推广，价格非常优惠，$7.95/mo，然后还有优惠券，最后似乎是花了700多买了两年。最重要的是带有独立IP，这在其它空间上那里得每月几美元。&lt;/p&gt;
&lt;p&gt;我不知道RatePoint是一家什么样的网站，不过上面关于CrucialWebHost的评论全部是溢美之词，这也迷惑了我好一阵子。在我使用该空间一年多的时间里，空间商两次更改IP而不通知客户，每次都是发现不能访问之后与之联系才得知IP更换。他们的理由是客户应该使用他们的DNS Server，然而其管理功能极弱，自己不能随意修改A/CNAME等记录，只能通过技术支持修改。虽然他们非常乐意为你效劳，但我相信没人愿意这么麻烦……&lt;/p&gt;
&lt;p&gt;2008年9月24日，我的网站在访问时出现错误：&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Table ‘xxx’ was created with a different version of MySQL and cannot be read&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;赶紧与客服联系。答曰，正在升级服务器的MySQL. 真让人无语。&lt;/p&gt;
&lt;p&gt;后来又有一天，我有个使用mysqli的小程序出错了，mysqli无法加载，与客服交流后被告知：他们正在编译该模块。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When Dependability is Crucial Depend on Crucial Web Hosting, Ltd.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;这句话出现在每个技术支持邮件的末尾，颇具讽刺意味。&lt;/p&gt;
&lt;p&gt;在我买了空间不久，价格便暴涨到$25/mo，当然，涨价是不能指责人家的，他们也要活命嘛，以后买不起搬走就是了。不过最近我发现原来许多的条款例如无限个域名绑定，无限子域名，无限FTP账户都改了，有图为证：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://qingbo.org/wp-content/uploads/2009/02/quota.png&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://qingbo.org/wp-content/uploads/2009/02/quota.png&#34; alt=&#34;quota&#34; title=&#34;quota&#34; width=&#34;162&#34; height=&#34;239&#34; class=&#34;alignnone size-full wp-image-588&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;你可以到他们网站看&lt;a href=&#34;http://www.crucialwebhost.com/hosting/split-shared/&#34;&gt;最新的参数&lt;/a&gt;，对比&lt;a href=&#34;http://web.archive.org/web/20071231023813/http://www.crucialwebhost.com/hosting/split-shared/&#34;&gt;2007年12月31日的样子&lt;/a&gt;。感谢archive.org!&lt;/p&gt;
&lt;p&gt;另外该空间商跟&lt;a href=&#34;http://www.magentocommerce.com/&#34;&gt;Magento&lt;/a&gt;不知道是什么关系，几乎在倾力为Magento hosting打造空间，官方blog的大部分文章都是关于这个的。&lt;/p&gt;
&lt;p&gt;总之，感觉有点失望。什么split-shared，什么crucial，都是狗屁。&lt;/p&gt;</description>
    </item>
    <item>
      <title>转让国内1000M主机空间</title>
      <link>https://qingbo-net.pages.dev/archives/306/</link>
      <pubDate>Sat, 21 Feb 2009 01:59:57 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/306/</guid>
      <description>&lt;p&gt;年前买了&lt;a href=&#34;http://www.8-host.net/&#34;&gt;捌号主机&lt;/a&gt;的1000M PHP空间，本来想做个小网站玩玩的，不过事情不太顺利。您也知道，在我们文明的法治国家，做什么都得有个license，我的license就迟迟没有到手，相关部门的电话也是相当的热门，永远也打不通。每当想到这些，我脑海中都涌现出他们伟大的爷爷奶奶爸爸妈妈们，可是不知道从谁开始问候，就一切尽在不言中了。&lt;/p&gt;
&lt;p&gt;正好又赶上了&lt;a href=&#34;http://news.sina.com.cn/c/2009-02-16/192217225924.shtml&#34;&gt;深受广大网民拥护&lt;/a&gt;的整治互联网低俗风系列活动，我深怕我的内容不能摆脱低俗之风，毒害“生活在懵懂之中的青少年”，遮挡住“幸福的曙光”，于是下定决心，牺牲我一个，幸福千万家，为营造一个“窗明几净的网络空间”做贡献。&lt;/p&gt;
&lt;p&gt;现转让该PHP空间，08年12月20号买的，现在刚好还剩10个月，买的时候是398元，现在200元转让。空间的具体参数在捌号主机网站上可以&lt;a href=&#34;http://www.8-host.net/kongjian/php/1000m/&#34;&gt;查看&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;最好通过淘宝交易：&lt;a href=&#34;http://item.taobao.com/auction/item_detail.jhtml?item_id=bc2abec0d9e35321bb5de267ff24a9fa&amp;amp;x_id=0db1&#34;&gt;商品链接&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;旺旺不在线时，可以发电子邮件：&lt;img decoding=&#34;async&#34; src=&#34;https://qingbo-net.pages.dev/images/mail.png&#34; alt=&#34;email&#34; /&gt;&lt;br&gt;
本人开机即随时收邮件，反应速度足够快……&lt;/p&gt;</description>
    </item>
    <item>
      <title>WordPress 2.7评论CSS解惑</title>
      <link>https://qingbo-net.pages.dev/archives/304/</link>
      <pubDate>Fri, 23 Jan 2009 01:00:44 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/304/</guid>
      <description>&lt;p&gt;WordPress 2.7内置了threaded comment，评论的class name也变得非常繁杂。Betty给出了一张&lt;a href=&#34;http://myfairland.net/wordpress-27-comment-structure/&#34;&gt;WordPress 2.7 评论结构一览图&lt;/a&gt;，但是我想许多人大概还不知道某些class name的规则是什么样的。&lt;/p&gt;
&lt;p&gt;这里只说每条评论上添加的class name，总结一下，有这么多：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;comment, trackback, pingback&lt;/strong&gt;, 这三个不用多说，用来区分评论类型，方便用CSS样式来区分不同类型的。它们互相排斥，所以要想三个有统一的样式，就得这么写规则：&lt;/p&gt;
&lt;p&gt;[code lang=’css’]ol.commentlist li.comment, ol.commentlist li.pingback, ol.commentlist li.trackback {&lt;br&gt;
…&lt;br&gt;
}[/code]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;byuser, comment-author-*, bypostauthor&lt;/strong&gt;. 如果评论者是注册用户，会加上byuser和”comment-author-[nickname]“两个类，这样可以区分注册用户与非注册用户，甚至可以根据用户的不同呈现不同的样式。如果评论者是文章的作者，还会加上一个bypostauthor，这个最重要，很多blog用来突出显示文章作者的评论。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;odd, alt, even&lt;/strong&gt;. 评论的交替样式。评论从0开始计数，奇数时是odd, alt，偶数时是even. 注意，odd和alt两个类必然同时存在。一般情况下，根据odd, even来写CSS，另一种方式是根据有无alt这个类来写，两种方式选择其一即可。还要注意计数的顺序是按照“前序遍历”，具体可参考文章“&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post402.html&#34;&gt;WordPress 2.7自定义单条评论结构&lt;/a&gt;”中的图片。因此你不能保证这个thread（顶级评论）是奇数，下一个thread就是偶数。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;thread-odd, thread-alt, thread-even&lt;/strong&gt;. 和odd, alt, even类似，不过只计顶层评论。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;depth-[number]&lt;/strong&gt;. 表示评论嵌套的深度，顶层评论的class是depth-1，向下递增。可以根据这个调整输入框大小，以我的为例：&lt;/p&gt;
&lt;p&gt;[code lang=’css’]#comment {&lt;br&gt;
width: 530px;&lt;br&gt;
border: 1px solid #C4EF95;&lt;br&gt;
font-size: 12px;&lt;br&gt;
}&lt;br&gt;
.depth-1 #comment {&lt;br&gt;
width: 470px;&lt;br&gt;
}&lt;br&gt;
.depth-2 #comment {&lt;br&gt;
width: 410px;&lt;br&gt;
}&lt;br&gt;
.depth-3 #comment {&lt;br&gt;
width: 350px;&lt;br&gt;
}[/code]&lt;/p&gt;</description>
    </item>
    <item>
      <title>JavaScript性能相关资源</title>
      <link>https://qingbo-net.pages.dev/archives/303/</link>
      <pubDate>Thu, 22 Jan 2009 01:00:07 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/303/</guid>
      <description>&lt;p&gt;客户端应用程序的日益丰富越来越显示出JavaScript的性能劣势，由于这种语言太大的灵活性，大多数实现都是解释器类型，性能都不会太好，人们甚至怀疑基于JavaScript的重量级web应用是否还有前途。好消息是Google Chrome的JavaScript引擎是一个虚拟机叫做&lt;a href=&#34;http://code.google.com/p/v8/&#34;&gt;v8&lt;/a&gt;，Firefox 3.1将会把原来的SpiderMonkey替换为更强大的&lt;a href=&#34;http://ejohn.org/blog/tracemonkey/&#34;&gt;TraceMonkey&lt;/a&gt;，一个应用JIT技术的引擎。&lt;/p&gt;
&lt;p&gt;但是Chrome才刚刚出现，Firefox所占的市场份额也还不足够让人把它当作准绳。我们时时得考虑古老、陈旧、笨重的Internet Explorer，至少我们还没看见IE8的JavaScript实现有任何值得欢呼的线索。&lt;/p&gt;
&lt;p&gt;即使所有浏览器都有了高效的实现，注重代码本身的性能依旧是一个好的习惯。写出优质的代码，比把劣质的代码扔给编译器/解释器去优化好得多，即使编译器/解释器的优化很强大，因为起点不一样。&lt;/p&gt;
&lt;p&gt;下面是一些对了解JavaScript性能有帮助的一些资源：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;IE Blog里关于JS性能的文章，我建议新手先不要看IE/JScript Blog里的东西，他们经常会拿出自家的一些私藏来招待你。是的，IE没有实现JavaScript，他们实现的是一个叫JScript的东西，看起来跟JavaScript有点像。
&lt;a href=&#34;http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx&#34;&gt;IE + JavaScript Performance Recommendations – Part 1&lt;/a&gt; 变量使用的建议，你会看到，解释器不会做一丁点的优化，一些看似无用的多余代码可能会帮助你改善性能。&lt;br&gt;
&lt;a href=&#34;http://blogs.msdn.com/ie/archive/2006/11/16/ie-javascript-performance-recommendations-part-2-javascript-code-inefficiencies.aspx&#34;&gt;Part 2: JavaScript Code Inefficiencies&lt;/a&gt; 关于字符串拼接，eval和switch.&lt;br&gt;
&lt;a href=&#34;http://blogs.msdn.com/ie/archive/2007/01/04/ie-jscript-performance-recommendations-part-3-javascript-code-inefficiencies.aspx&#34;&gt;Part 3&lt;/a&gt; 提到一点内存泄漏问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;jQuery的作者指出提高客户端性能的工作不仅存在于JavaScript本身。&lt;br&gt;
&lt;a href=&#34;http://ejohn.org/blog/javascript-performance-stack/&#34;&gt;JavaScript Performance Stack&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;http://blog.stevenlevithan.com/archives/faster-than-innerhtml&#34;&gt;When innerHTML isn’t Fast Enough&lt;/a&gt; 我们知道如果有一大堆HTML要插入DOM，innerHTML方式要比document.createElement然后插入快得多。这篇文章给出一种比innerHTML更快的方式。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Comet Information Systems写的系列文章：
&lt;a href=&#34;http://www.comet.co.il/en/articles/performance/article.html&#34;&gt;String Manipulation&lt;/a&gt; 字符串拼接&lt;br&gt;
&lt;a href=&#34;http://www.comet.co.il/en/articles/performance/article2.html&#34;&gt;DOM Manipulation&lt;/a&gt; innerHTML, createElement, cloneNode.&lt;br&gt;
&lt;a href=&#34;http://www.comet.co.il/en/articles/performance/article3.html&#34;&gt;General Tips&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对于编译器来说，循环不变量外提是最基本的优化之一，然而你可不要认为JavaScript解释器也会为你做这个：&lt;br&gt;
&lt;a href=&#34;http://www.robertnyman.com/2008/04/11/javascript-loop-performance/&#34;&gt;JavaScript loop performance&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;微软曾经针对IE推出一个自动更新，声称内存泄漏得到了解决，一时间开发者们&lt;a href=&#34;http://novemberborn.net/javascript/memory-leaks-gone&#34;&gt;欢欣鼓舞&lt;/a&gt;。但是马上人们就发现了问题，和他们在blog里的惯用手法一样，这只不过是掩人耳目，夸大其词。
&lt;a href=&#34;http://ajaxian.com/archives/ies-memory-leak-fix-greatly-exaggerated&#34;&gt;IE’s Memory Leak Fix Greatly Exaggerated&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>WordPress 2.7自定义单条评论结构</title>
      <link>https://qingbo-net.pages.dev/archives/302/</link>
      <pubDate>Wed, 21 Jan 2009 01:00:10 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/302/</guid>
      <description>&lt;p&gt;WordPress 2.7内置了threaded comment之后，原来主题的comments.php文件中繁琐的评论循环简化成了一个函数调用：&lt;a href=&#34;http://codex.wordpress.org/Template_Tags/wp_list_comments&#34;&gt;wp_list_comments&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;然而不加任何参数调用该函数的话，它输出的HTML结构是固定的。尽管它给每个元素都提供了丰富的class name供CSS样式使用，但是CSS并不足够灵活（除非使用一些我认为不是太好的方式，比如大量绝对定位），可以任意显示固定的DOM结构。某些情况下，我们还是希望能够自己来定义DOM结构。&lt;/p&gt;
&lt;p&gt;WordPress开发者当然考虑到了这一点，在Codex上的&lt;a href=&#34;http://codex.wordpress.org/Template_Tags/wp_list_comments&#34;&gt;文档页&lt;/a&gt;就给出了一个例子。实际上就是wp_list_comments接收的数组参数中可以传入两个回调函数。一个是callback，负责输出一条评论的主体部分。另一个是end-callback，负责输出评论的结束部分。&lt;/p&gt;
&lt;p&gt;解释一下。threaded comments实际上在内部就是一个“森林”，每一条顶层评论和它的所有回复、回复的回复构成一棵树。wp_list_comments对每棵树做一次遍历，首先调用参数callback指定的函数，然后递归遍历其子节点（输出回复评论），完成之后再调用参数end-callback指定的函数。如果不指定这两个函数，WordPress就会输出默认的结构，实际上大家都是把默认输出复制到自己的回调函数中，然后修改一下结构。简单的说，就是callback输出一个块的开头加上该评论自己的内容，end-callback输出这个块的结尾，中间是子评论。如下图所示的遍历顺序，偏下的箭头表示调用callback，偏上的箭头表示调用end-callback.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/3205713933/&#34; title=&#34;tree (by qingbo)&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3474/3205713933_9e894ee76f.jpg&#34; title=&#34;tree (by qingbo)&#34; alt=&#34;tree (by qingbo)&#34; width=&#34;500&#34; height=&#34;333&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;以上提到的关键代码都在wp-includes/comment-template.php中。&lt;/p&gt;</description>
    </item>
    <item>
      <title>HTML编辑器之选择-FCKEditor/TinyMCE/NicEdit</title>
      <link>https://qingbo-net.pages.dev/archives/301/</link>
      <pubDate>Tue, 20 Jan 2009 01:00:14 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/301/</guid>
      <description>&lt;p&gt;这三个都是开源的HTML所见即所得（WYSIWYG）编辑器，下面简单地做一个比较。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.fckeditor.net/&#34;&gt;FCKEditor&lt;/a&gt;和&lt;a href=&#34;http://tinymce.moxiecode.com/&#34;&gt;TinyMCE&lt;/a&gt;都是非常老牌的了，我接触web开发的时候它们看起来都已经非常成熟了。TinyMCE至今仍然是WordPress的默认可视化编辑器。&lt;/p&gt;
&lt;p&gt;但是老牌的不一定是好的，它们在长年累月的积累中，吸纳了各种各样的需求，最后形成一个大而全的系统，无所不能。于是它们庞大而笨重，分别看一下它们的demo页吧，它们可能是要决心与微软的Word软件竞争，而不是给开发者提供一个适合浏览器环境的编辑器。&lt;/p&gt;
&lt;p&gt;各种命令都带有一堆看似合理实际上毫无用处的选项，对于开发者要面对的用户，更是会让他们无所适从。例如要插入图片，弹出的窗口里，有”alternative text”, “vertical space”, “title”, “horizontal space”等参数，有些连熟悉web开发的人都感到陌生，更不用说普通用户了。&lt;/p&gt;
&lt;p&gt;当然了它们都号称customizable，然而我确定这是有限的。以我使用FCKeditor的经验，要想在插入图片窗口删除那些无用的参数，仅保留一个链接地址的输入，就必须在它的源代码中做修改，而不是配置文件。修改源代码必然造成升级的困难。&lt;/p&gt;
&lt;p&gt;庞大的代码蕴含着丰富的功能，而我们只用其一小部分，这对于带宽来说明显是个浪费。没有具体数过，根据我的印象，它们至少应该有数以百计的小文件吧，简直无法忍受。&lt;/p&gt;
&lt;p&gt;这两个大家伙早期的时候还更过分，按钮的图片都是一张一张的，打开页面时就看到它们像多米诺骨牌一样依次展开。以前它们都使用window.open打开一个新窗口显示文本对象的属性，在许多情况（大多是个别用户客户端的问题）下，弹出的窗口大小有问题而且用户无法调整，反馈给我们也束手无策。还好这两个问题现在都已经解决，&lt;a href=&#34;http://www.alistapart.com/articles/sprites&#34;&gt;CSS sprite&lt;/a&gt;被使用，选项窗口也使用div来模拟实现，这两点是值得肯定的进步。&lt;/p&gt;
&lt;p&gt;————&lt;strong&gt;反衬结束，主角登场&lt;/strong&gt;————&lt;/p&gt;
&lt;p&gt;上一个项目要选择编辑器的时候，我死活不想再用FCKeditor了。在网上做了许多搜索，刚好发现一个新出现的编辑器：&lt;a href=&#34;http://nicedit.com/&#34;&gt;NicEdit&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What is NicEdit?&lt;/p&gt;
&lt;p&gt;NicEdit is a Lightweight, Cross Platform, Inline Content Editor to allow easy editing of web site content on the fly in the browser.&lt;/p&gt;
&lt;p&gt;NicEdit Javascript integrates into any site in seconds to make any element/div editable or convert standard textareas to rich text editing.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;轻量级是最大的优点。此外它还有许多优良的特性，比如输入框随文本自动拉高，良好的扩展性等。用它来实现了插入自定义表情的功能，非常简单、优美。&lt;/p&gt;
&lt;p&gt;不用多说了，把前面提到的那两个编辑器的缺点反过来，主语换成NicEdit放在这里就可以了。&lt;/p&gt;
&lt;p&gt;嗯，我就是要唱衰FCKEditor/TinyMCE，力挺NicEdit.&lt;/p&gt;
&lt;p&gt;也许FCKEditor/TinyMCE曾经也像NicEdit一样小巧玲珑？希望NicEdit能够守住贞操，不要被那些永无止境的Feature request给f*ck了。FCKEditor不会就是这样得名的吧？-joke.&lt;/p&gt;
&lt;p&gt;NicEdit现在还不是很完美，但是它在不断改进。如果你要用，建议先逛一下它的论坛，看看大家都遇到了什么问题，对你关键不关键。&lt;/p&gt;</description>
    </item>
    <item>
      <title>表单富文本输入，选择什么方式？</title>
      <link>https://qingbo-net.pages.dev/archives/300/</link>
      <pubDate>Mon, 19 Jan 2009 01:00:42 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/300/</guid>
      <description>&lt;p&gt;现在几乎所有的网站开发都必须面对一个问题，用户怎么输入带格式的文本呢？最基本的功能包括链接、图片、文字加粗、字体大小颜色等。不同的网站有不同的考虑，有不同的实现。实现得越简单，给用户的门槛就越高。我就尝试&lt;strong&gt;从简到繁&lt;/strong&gt;列一下一些常见的实现方式。&lt;/p&gt;
&lt;h3 id=&#34;1-textarea里写html代码&#34;&gt;1. textarea里写HTML代码&lt;/h3&gt;
&lt;p&gt;适用于非常简单的文本，如链接、图片。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;例子&lt;/strong&gt;：&lt;a href=&#34;http://www.douban.com/&#34;&gt;豆瓣&lt;/a&gt;，&lt;a href=&#34;http://www.facebook.com/&#34;&gt;Facebook&lt;/a&gt;，&lt;a href=&#34;http://www.flickr.com/&#34;&gt;Flickr&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;当然了，大部分这样的网站都不会要求你换行都用”&lt;br /&gt;”来实现的，文本显示的时候，换行符会被自动转换成HTML的换行。有的网站还会给一些辅助，比如豆瓣的日记编辑器上方有几个按钮，可以帮助生成链接等HTML代码。WordPress的quick tag editor也是这样。&lt;/p&gt;
&lt;p&gt;对于开发者来说，几乎没有工作量，只需一个html textarea元素即可解决问题。&lt;/p&gt;
&lt;p&gt;然而对于用户的要求就比较高了，他们要想插入链接、图片就必须学一些简单的HTML语法。不过用户及时一点HTML都不懂也没关系，他仍然可以发布内容，只是没有链接、图片而已。像Flickr这样流行的服务，有无数的人为它开发帮助用户输入的浏览器扩展、Greasemonkey脚本等，更降低了输入HTML代码的难度。&lt;/p&gt;
&lt;h3 id=&#34;2-textarea里写自定义语法&#34;&gt;2. textarea里写自定义语法&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;例子&lt;/strong&gt;：&lt;a href=&#34;http://en.wikipedia.org/wiki/Main_Page&#34;&gt;Wikipedia&lt;/a&gt;，&lt;a href=&#34;http://code.google.com/&#34;&gt;Google Code&lt;/a&gt;，大部分论坛&lt;/p&gt;
&lt;p&gt;比较常见的语法有&lt;a href=&#34;http://www.mediawiki.org/wiki/Help:Formatting&#34;&gt;wiki markup&lt;/a&gt;，&lt;a href=&#34;http://en.wikipedia.org/wiki/Markdown&#34;&gt;Markdown&lt;/a&gt;，以及各种论坛系统常用的&lt;a href=&#34;http://en.wikipedia.org/wiki/BBCode&#34;&gt;BBCode&lt;/a&gt;等等。当然了，wiki markup语法的目的不仅仅是为了方便用户输入带格式的文本，它还方便了页面之间的互相链接，但是这里也把它归在这一类。在文本要在浏览器中显示的时候，系统将它翻译成HTML.&lt;/p&gt;
&lt;p&gt;用户不需要学习HTML了，但这些语法也需要学习，虽然看起来稍微简单点。和第一种方式一样，许多网站也提供辅助按钮。自定义语法的最大优点在于其安全性，稍后讨论。&lt;/p&gt;
&lt;p&gt;Flickr的评论里实际上除了支持一些基本的HTML代码，其实也有自定义输入链接的方式。&lt;/p&gt;
&lt;h3 id=&#34;3-wysiwyg编辑器&#34;&gt;3. WYSIWYG编辑器&lt;/h3&gt;
&lt;p&gt;用户门槛很低，可以实现的效果很复杂。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;例子&lt;/strong&gt;：&lt;a href=&#34;http://www.fckeditor.net/&#34;&gt;FCKeditor&lt;/a&gt;，&lt;a href=&#34;http://tinymce.moxiecode.com/&#34;&gt;TinyMCE&lt;/a&gt;，&lt;a href=&#34;http://nicedit.com/&#34;&gt;NicEdit&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这是国内最常见的方式。国内网站大部分认为用户非常低端，而实际上的确如此。就拿已经够直观的FCKeditor来说，有些用户还是弄不明白插入图片时的一大堆属性都是什么东西，这是可以理解的，你自己&lt;a href=&#34;http://www.fckeditor.net/demo&#34;&gt;使用以下&lt;/a&gt;就知道了。所以即使拿来现成的可视化编辑器，你还得好好简化简化。比如插入图片，就输入一个图片地址就够了。不过还真有用户连图片地址是什么都不知道的，那……实在不行就让他上传吧。&lt;/p&gt;
&lt;p&gt;使用这些编辑器的缺点是客户端需要启用JavaScript才可以正常使用。另外前两个编辑器非常庞大笨重，二位的目标是打败微软的Word产品，所以我们要考虑好用牛刀来杀鸡是不是合适。&lt;/p&gt;
&lt;h3 id=&#34;安全性考虑&#34;&gt;安全性考虑&lt;/h3&gt;
&lt;p&gt;SQL注入的话题这里就不讨论了。&lt;/p&gt;
&lt;p&gt;允许用户提交HTML代码，就带来了潜在的危险。一方面是网站数据的安全，另一方面是页面显示的安全。前几天feelinglucky就披露了&lt;a href=&#34;http://www.gracecode.com/Archive/Display/2729&#34;&gt;yupoo的一个漏洞&lt;/a&gt;，尽管这不是由于输入带格式文本造成的，但这是允许HTML代码提交的常见漏洞，危害到网站数据的安全。&lt;/p&gt;
&lt;p&gt;如果对用户提交的数据不加处理，还可能会造成显示错乱，比如数据中大量没有关门的标签。如果用户想恶作剧，还可以增加一个元素让它占据整个网页，隐藏所有内容。&lt;/p&gt;
&lt;p&gt;千万不要试图仅仅在客户端过滤代码，这就好像敌人要来进攻，你去人家门口堵着一样，敌人很容易绕过这道防线，从后门出来就可以了。服务器端的过滤是绝对必要的。&lt;/p&gt;
&lt;p&gt;自定义语法大都不使用尖括号，这给安全性带来了帮助。在服务器端，所有的尖括号均转换成HTML entity表示，然后做语法翻译，这是最简单的方式。&lt;/p&gt;
&lt;p&gt;上述一、三方式都是提交HTML代码，服务器端就必须至少过滤JavaScript代码，不能让它在客户端执行。另外还要分析代码的标签是否完整，某些标签是否允许，等等。&lt;/p&gt;</description>
    </item>
    <item>
      <title>WordPress Feed添加自定义内容的正确方法</title>
      <link>https://qingbo-net.pages.dev/archives/299/</link>
      <pubDate>Sun, 18 Jan 2009 01:00:53 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/299/</guid>
      <description>&lt;p&gt;前段时间，Smashing Magazine的文章“&lt;a href=&#34;http://www.smashingmagazine.com/2008/12/02/10-useful-rss-hacks-for-wordpress/&#34;&gt;10 Useful RSS-Tricks and Hacks For WordPress&lt;/a&gt;”第三条讲怎么在RSS Feed中插入任意内容。实际上该hack出自&lt;a href=&#34;http://www.wprecipes.com/how-to-insert-ads-on-your-rss-feed&#34;&gt;wprecipes&lt;/a&gt;，但是很遗憾，它已身在高墙外了。&lt;/p&gt;
&lt;p&gt;这种方法就是添加两个filter，分别在the_excerpt_rss和the_content_rss. 貌似合理，但实际上呢？且看wp-includes/feed-rss2.php的关键部分：&lt;/p&gt;
&lt;p&gt;[code lang=’php’]&lt;?php if (get_option(&#39;rss_use_excerpt&#39;)) : ?&gt;&lt;/p&gt;
&lt;p&gt;&lt;description&gt;hp the_excerpt_rss() ?&amp;gt;]]&amp;gt;&lt;/description&gt;&lt;/p&gt;
&lt;?php else : ?&gt;
&lt;p&gt;&lt;description&gt;hp the_excerpt_rss() ?&amp;gt;]]&amp;gt;&lt;/description&gt;&lt;/p&gt;
&lt;?php if ( strlen( $post-&gt;post_content ) &gt; 0 ) : ?&gt;
&lt;p&gt;&lt;a href=&#34;content:encoded&#34;&gt;content:encoded&lt;/a&gt;hp the_content() ?&amp;gt;]]&amp;gt;&amp;lt;/content:encoded&amp;gt;&lt;/p&gt;
&lt;?php else : ?&gt;
&lt;p&gt;&lt;a href=&#34;content:encoded&#34;&gt;content:encoded&lt;/a&gt;hp the_excerpt_rss() ?&amp;gt;]]&amp;gt;&amp;lt;/content:encoded&amp;gt;&lt;/p&gt;
&lt;?php endif; ?&gt;
&lt;?php endif; ?&gt;[/code]
&lt;p&gt;首先鄙视一下RSS中只输出摘要的blogger，这样我们就只需关心外层if判断的else块了。Feed中的每个item都有一个description标签，调用的是the_excerpt_rss函数。而最重要的是content:encoded这个标签，因为多数RSS阅读器都是根据这里的内容显示的。可以看到，如果文章内容不为空——该条件99.9%的情况下成立，content:encoded的内容就是调用the_content. 该文件输出的是RSS 2.0格式，大部分WordPress blog的默认feed.&lt;/p&gt;
&lt;p&gt;再看feed-rss.php, feed-rdf.php和feed-atom.php，只有feed-rss.php输出的RSS 0.92格式的feed没有使用the_content. 因此，按照Smashing Magazine的方法，绝大多数情况下我们添加的内容不会再RSS阅读器中显示。&lt;/p&gt;
&lt;p&gt;所以正确的做法是把’the_content’也加上filter：&lt;/p&gt;
&lt;p&gt;[code lang=’php’]function process_feed($content) {&lt;br&gt;
if (is_feed()) { // 只在feed输出时处理，不影响站内内容显示&lt;br&gt;
$content = …;&lt;br&gt;
}&lt;br&gt;
return $content;&lt;br&gt;
}&lt;/p&gt;</description>
    </item>
    <item>
      <title>Get Recent Comments插件中文乱码问题</title>
      <link>https://qingbo-net.pages.dev/archives/298/</link>
      <pubDate>Sat, 17 Jan 2009 01:00:02 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/298/</guid>
      <description>&lt;p&gt;前几天启用了&lt;a href=&#34;http://wordpress.org/extend/plugins/get-recent-comments/&#34;&gt;Get Recent Comments&lt;/a&gt;这个插件，开始的时候一切正常，后来发现有时候中文会出现乱码。&lt;/p&gt;
&lt;p&gt;看了一下插件的源代码，发现它用&lt;a href=&#34;http://cn2.php.net/wordwrap&#34;&gt;wordwrap&lt;/a&gt;这个函数来把很长的单词切分开来。wordwrap函数没有multi-byte的版本，所以它就按字节来数，到了指定的地方就给野蛮地断开了。&lt;/p&gt;
&lt;p&gt;在以中文内容为主的blog里，我们基本不需要这个功能。那些超长的url可能会破坏布局，这时只需给外面的容器加上宽度并且overflow:hidden就可以了。无需修改插件源代码，最简单的做法是在该插件的选项页面把Wrap long words at这个选项设置成非常大的整数比如1000.&lt;/p&gt;
&lt;p&gt;写下文章标题的时候才去搜索，发现已经有人做了个“&lt;a href=&#34;http://blog.sunshow.net/archives/418.html&#34;&gt;中文改良版&lt;/a&gt;”，呵呵。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google Reader 可以实时更新feed</title>
      <link>https://qingbo-net.pages.dev/archives/297/</link>
      <pubDate>Fri, 16 Jan 2009 01:00:17 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/297/</guid>
      <description>&lt;p&gt;大部分在线RSS阅读器都支持&lt;a href=&#34;http://www.xmlrpc.com/&#34;&gt;XML-RPC&lt;/a&gt; ping，不过国内的抓虾、鲜果似乎实际上都不管用。鲜果在feed上右键-反馈，点击马上更新，它才会真正地去抓取。网上有些人说ping了Google blog search，Google reader就随之更新，我没有找到确切的证据。&lt;/p&gt;
&lt;p&gt;不过Google Reader的阅读区上方有一个“Refresh”按钮，点击它之后，Google就会马上抓取最新的feed过来，不像鲜果这样的是放入一个队列，可能几分钟之后才能抓回来，这点从侧面反映了Google服务器阵容的强大。&lt;/p&gt;
&lt;p&gt;看了一下点击Refresh之后发送的Ajax请求，主要的url就是：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.google.com/reader/api/0/stream/contents/feed/http%3A%2F%2Fqingbo.org%2Ffeed?refresh=true&#34;&gt;https://www.google.com/reader/api/0/stream/contents/feed/http%3A%2F%2Fqingbo.org%2Ffeed?refresh=true&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;即blog有新文章之后，在浏览器中访问该链接即可使Google Reader更新你的feed，在Google reader里订阅该feed的读者也就看到最新的了，不用等待Google Reader的默认更新周期。其实可以自动化一点，发布文章的时候让wordpress自动去请求该url，或者……不知道放在自动ping的列表里有没有作用，鉴于Google Reader更新的频率已经够快，我就懒得尝试了。&lt;/p&gt;
&lt;p&gt;在发布后修改文章的时候，刷新一下Google reader比较好，这样可以让它马上获取更新后的版本。&lt;/p&gt;</description>
    </item>
    <item>
      <title>JavaScript 慎用 with</title>
      <link>https://qingbo-net.pages.dev/archives/296/</link>
      <pubDate>Tue, 13 Jan 2009 01:22:31 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/296/</guid>
      <description>&lt;p&gt;像我这样最初并不是系统学习JavaScript的人，看到&lt;a href=&#34;https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Statements/with&#34;&gt;with&lt;/a&gt;这个东西的第一感觉是兴奋——不用再重复地写“element.style.xxx = …”了，只需要&lt;/p&gt;
&lt;p&gt;[code lang=’javascript’]with (element.style) {&lt;br&gt;
xxx = …;&lt;br&gt;
yyy = …;&lt;br&gt;
…&lt;br&gt;
}[/code]&lt;/p&gt;
&lt;p&gt;但是作为解释型语言，JavaScript都需要在运行时来决定xxx/yyy到底是什么东西。对每一个名字（不仅仅是被赋值的，也包括读取的变量！）它会首先去在with括号里的对象的属性里去寻找，然后才会找局部变量，最后是全局变量。在JavaScript的虚拟机、JIT技术普及之前，这种性能问题需要非常的注意。&lt;/p&gt;
&lt;p&gt;正确的做法是给element.style做一个local variable的cache：&lt;/p&gt;
&lt;p&gt;[code lang=’javascript’]var es = element.style;&lt;br&gt;
es.xxx = …;&lt;br&gt;
es.yyy = …;&lt;br&gt;
…[/code]&lt;/p&gt;
&lt;p&gt;这样不仅相对减少了代码大小，同时性能上也比element.style.xxx = … 要好得多。&lt;/p&gt;</description>
    </item>
    <item>
      <title>为WordPress 2.7加上鼓励评论功能</title>
      <link>https://qingbo-net.pages.dev/archives/295/</link>
      <pubDate>Mon, 12 Jan 2009 01:00:57 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/295/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://qingbo.org/wp-content/uploads/2009/01/encouraged-commentary.png&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://qingbo.org/wp-content/uploads/2009/01/encouraged-commentary.png&#34; alt=&#34;encouraged-commentary&#34; title=&#34;encouraged-commentary&#34; width=&#34;245&#34; height=&#34;88&#34; class=&#34;alignright size-full wp-image-563&#34; /&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#34;http://jimjeffers.com/&#34;&gt;Jim Jeffers&lt;/a&gt;刚刚发布了他的&lt;a href=&#34;http://donttrustthisguy.com/2009/01/04/encouraged-commentary/&#34;&gt;encouraged commentary&lt;/a&gt;脚本，功能非常强大，罗列一些主要的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;在文章中选中一段文字即可在留言中引用&lt;/strong&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;/ul&gt;
&lt;p&gt;在我看来，第一条是最基本的功能也是最重要的。最后两点，对于评论不是太多的blog来说基本是多余，甚至会显得很杂乱。&lt;/p&gt;
&lt;p&gt;而WordPress从2.7版本开始内置了对评论回复的支持，因此第二点、第三点也就没太大意义了。&lt;/p&gt;
&lt;p&gt;Jim Jeffers说不打算做任何插件，只在github上给出了&lt;a href=&#34;http://github.com/jimjeffers/encouraged-commentary/tree/master&#34;&gt;源代码&lt;/a&gt;以及详细的&lt;a href=&#34;http://wiki.github.com/jimjeffers/encouraged-commentary&#34;&gt;实现步骤&lt;/a&gt;，不仅针对WordPress，大部分的blog平台都可以应用。&lt;/p&gt;
&lt;p&gt;我就针对WordPress 2.7，简化一下脚本和整个流程，下面是让一个主题支持encouraged commentary的步骤：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;将需要的三个JavaScript脚本放在主题的scripts子目录中，保持主题结构清晰。因为只留下上面所列出的第一条功能，所以Jim Jeffers的脚本大大简化——这个&lt;a href=&#34;http://qingbo.org/wp-content/uploads/2009/01/scripts.zip&#34;&gt;压缩包&lt;/a&gt;里的是我简化过的。&lt;/li&gt;
&lt;li&gt;在header.php中，引入需要的脚本：&lt;br&gt;
[code lang=’php’]&lt;?php if ( is_singular() ) { ?&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?php } ?&amp;gt;[/code]&amp;lt;/p&amp;gt; 

注意不要使用wp\_enqueue\_script(&amp;amp;#8217;jquery&amp;amp;#8217;)，它没有提供$函数，而Jim Jeffers用到了。
&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;在single.php中，找到调用the_content函数的地方，把这个调用包在一个div中。例如：&lt;br&gt;
[code lang=’php’]&lt;/p&gt; &lt;div class=&#34;quotable&#34;&gt;
 &lt;?php the_content(&#39;


&lt;/li&gt;
&lt;/ol&gt;
&lt;p class=&#34;serif&#34;&gt;Read the rest of this entry &amp;raquo;&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;  &amp;lt;p&amp;gt;
    &amp;amp;#8216;); ?&amp;gt;
  &amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;

[/code] &amp;lt;/li&amp;gt; 

  * 现在，选中文章中的文字之后，就会浮出一个按钮&amp;amp;#8221;Respond&amp;amp;#8221;，可惜没有样式。我们现在需要给它和评论中的blockquote加上样式，我的仅作参考：  
    [code lang=&amp;amp;#8217;css&amp;amp;#8217;]#comment-respond {  
    width: 96px;  
    height: 24px;  
    background: transparent url(images/button.gif) left top no-repeat;  
    color: #FFFFFF;  
    border: none;  
    font-family: sans-serif;  
    font-size: 20px;  
    font-weight: bold;  
    vertical-align: middle;  
    cursor: pointer;  
    }&amp;lt;/p&amp;gt; 
    ol.commentlist blockquote {  
    margin: 0 0 0 20px;  
    padding-left: 10px;  
    background: transparent url(images/blue-vline.gif) repeat-y scroll left top;  
    font-style: italic;  
    }[/code] &amp;lt;/li&amp;gt; &amp;lt;/ol&amp;gt; 
    
    还有什么问题？现在就在这篇文章试试这个功能吧！
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>JavaScript simple dialog</title>
      <link>https://qingbo-net.pages.dev/archives/294/</link>
      <pubDate>Sun, 11 Jan 2009 03:51:07 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/294/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://qingbo.org/wp-content/uploads/2009/01/dialog.png&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://qingbo.org/wp-content/uploads/2009/01/dialog-150x150.png&#34; alt=&#34;dialog&#34; title=&#34;dialog&#34; width=&#34;150&#34; height=&#34;150&#34; class=&#34;alignright size-thumbnail wp-image-559&#34; /&gt;&lt;/a&gt;&lt;br&gt;
前些天做了一个非常简单的JavaScript library，用来模拟模态对话框(modal dialog)，刚刚放到Google code上：&lt;a href=&#34;http://code.google.com/p/javascript-simple-dialog/&#34;&gt;javascript-simple-dialog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在一个页面上向用户提示信息、与用户交互有多种方式，最基本的办法就是window的&lt;a href=&#34;https://developer.mozilla.org/En/DOM/Window.alert&#34;&gt;alert&lt;/a&gt;和&lt;a href=&#34;https://developer.mozilla.org/En/DOM/Window.prompt&#34;&gt;prompt&lt;/a&gt;函数。不过alert弹出的同时，会有一声比较恐怖的提示音，prompt在某些浏览器里因为安全限制比较麻烦，用户体验都不是太好。&lt;/p&gt;
&lt;p&gt;以前做项目的时候也想找一个现成的对话框来用，但是大部分都不符合我的要求，比如jQuery的插件&lt;a href=&#34;http://www.ericmmartin.com/projects/simplemodal/&#34;&gt;SimpleModal&lt;/a&gt;只能允许同时有一个对话框。jQueryUI的&lt;a href=&#34;http://ui.jquery.com/demos/dialog&#34;&gt;Dialog&lt;/a&gt;，当时我记得结构比较复杂，使用的CSS定位比较特殊，对内部内容要求也比较特殊，不知道现在的最新版本怎么样。&lt;/p&gt;
&lt;p&gt;于是这次基本是从自己的需求出发，设计并实现了这么一个小东西。最主要的特性是兼容IE（即可以盖住页面上的select按钮——掩饰IE臭名昭著的bug），以及可同时运行多个实例。&lt;/p&gt;
&lt;p&gt;更多请看Google code上的&lt;a href=&#34;http://code.google.com/p/javascript-simple-dialog/&#34;&gt;项目主页&lt;/a&gt;，在那里也可以下载代码或者直接从svn check out.&lt;/p&gt;
&lt;p&gt;这里有一个简单的&lt;a href=&#34;http://qingbo.org/sandbox/simple-dialog/demo/&#34;&gt;demo&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>主题支持2.7评论系统需要注意的几点</title>
      <link>https://qingbo-net.pages.dev/archives/293/</link>
      <pubDate>Sat, 10 Jan 2009 13:46:13 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/293/</guid>
      <description>&lt;p&gt;评论支持嵌套和分页是WordPress 2.7的一大亮点，不过让主题支持这个新的评论系统稍微有点麻烦，WordPress Codex上给出了&lt;a href=&#34;http://codex.wordpress.org/Migrating_Plugins_and_Themes_to_2.7/Enhanced_Comment_Display&#34;&gt;一长串步骤&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;其实最简单的，就是仿照默认主题来做，这里有一篇&lt;a href=&#34;http://photozero.net/wordpress27-thread-comment-tutorial-2/&#34;&gt;中文的文章&lt;/a&gt;讲得很清楚。&lt;/p&gt;
&lt;p&gt;需要注意的是：第三步尤其重要，很多人可能会忘记还要修改header.php，但是如果没有加入这个JavaScript脚本，点击回复就会刷新页面，用户体验很糟糕。&lt;/p&gt;
&lt;p&gt;另外如果要做一个通用的主题，就必须支持分页。仿照默认主题，就是下面的代码：&lt;/p&gt;
&lt;p&gt;[code lang=’php’]&lt;/p&gt;
&lt;div class=&#34;navigation&#34;&gt;
  &lt;div class=&#34;alignleft&#34;&gt;
    &lt;?php previous_comments_link() ?&gt;
  &lt;/div&gt;
  &lt;div class=&#34;alignright&#34;&gt;
    &lt;?php next_comments_link() ?&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;[/code]&lt;/p&gt;
&lt;p&gt;然而2.7的next_comments_link函数有点问题，在后台启用分页的时候，一切正常。但是禁用分页以后，next_comments_link无论如何都会返回一个链接！这一点用默认主题就可以测试，禁用分页之后，在评论列表的最下方可以看到链接“Newer comments”。我已经在trac里提交了一个&lt;a href=&#34;http://trac.wordpress.org/ticket/8824&#34;&gt;bug&lt;/a&gt;，希望在下一个版本可以解决。&lt;/p&gt;
&lt;p&gt;目前的解决办法是在主题中判断一下page_comments选项，启用时，才生成导航链接：&lt;/p&gt;
&lt;p&gt;[code lang=’php’]&lt;?php if (get_option(&#39;page_comments&#39;) == &#39;1&#39;) { ?&gt;&lt;/p&gt;
&lt;div class=&#34;navigation&#34;&gt;
  &lt;div class=&#34;alignleft&#34;&gt;
    &lt;?php previous_comments_link() ?&gt;
  &lt;/div&gt;
  &lt;div class=&#34;alignright&#34;&gt;
    &lt;?php next_comments_link() ?&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;?php } ?&gt;[/code]
&lt;p&gt;我的主题是给自己用的，干脆就直接不生成导航了，因为我现在不打算分页。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Firebug 1.3与Ajax response</title>
      <link>https://qingbo-net.pages.dev/archives/292/</link>
      <pubDate>Fri, 09 Jan 2009 01:00:26 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/292/</guid>
      <description>&lt;p&gt;如果一个Web开发者从来不使用&lt;a href=&#34;https://addons.mozilla.org/en-US/firefox/addon/1843&#34;&gt;firebug&lt;/a&gt;甚至从未听说过，我真替他感到可悲。&lt;/p&gt;
&lt;p&gt;昨天，Firebug 1.3&lt;a href=&#34;http://antennasoft.net/robcee/2009/01/07/firebug-130-final-released/&#34;&gt;正式发布&lt;/a&gt;，&lt;a href=&#34;http://code.google.com/p/fbug/source/browse/branches/firebug1.3/docs/ReleaseNotes_1.3.txt&#34;&gt;release notes&lt;/a&gt;在Google code上可以看到，现在查找更新即可自动升级了。Firebug是Firefox的扩展，但是它本身也提供了良好的接口，已经有不少扩展了。1.3版本包含了一些对于扩展开发者非常有帮助的特性，然而对于我们普通的Web开发者用户，最期待的更新当属JavaScript debugger了。在一个inner function里单步的时候，你可以通过scope chain来查看function定义同级的变量值。&lt;/p&gt;
&lt;p&gt;在调试Ajax应用的时候，用Firebug来查看Ajax请求的response即服务器端返回的响应是最方便的，省了使用HTTP抓包工具。然而从某个时间开始，Firebug的这一功能不再好用了，由于Firefox的一个内部实现问题，插件无法对响应进行分析。从&lt;a href=&#34;http://groups.google.com/group/mozilla.dev.tech.network/browse_thread/thread/62af84e6d35ab77d/81f5b792fac408d4&#34;&gt;这个讨论&lt;/a&gt;来看，应该是2.0版本，不过我记忆中似乎没这么早……症状就是，在console的Ajax请求列表中查看一个的时候，response里并不是服务器返回的数据，而是Firebug的一个提示，具体请看&lt;a href=&#34;http://www.benatkin.com/weblog/2008/09/13/trying-out-couchdb-in-firebug/&#34;&gt;这个网页&lt;/a&gt;的第一张图片。要想看到response，Firebug必须重新发送这个请求，这在许多情况下是不现实的。&lt;/p&gt;
&lt;p&gt;看到Firebug 1.3发布，我就在console栏里测试了一下Ajax的请求，惊喜地发现response已经可以查看了。&lt;/p&gt;
&lt;p&gt;事实上能否查看response数据在于Firefox而不在于Firebug，所以Firebug新版本发布与之关系不是很大。在前面提到的图片中可以看到，Firebug给出了一个链接，指向一个proposal：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://bugzilla.mozilla.org/show_bug.cgi?id=430155&#34;&gt;new nsHttpChannel interface to allow examination of HTTP data before it is passed to the channel’s creator&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;等这个proposal被实现，查看Ajax response的功能自然就恢复了。从该bug记录下面的评论来看，应该是在3.0.4版本就实现了。再看3.0.4修正的&lt;a href=&#34;https://bugzilla.mozilla.org/buglist.cgi?keywords_type=anywords&amp;amp;keywords=fixed1.9.0.4+verified1.9.0.4&#34;&gt;bug列表&lt;/a&gt;，果然430155就在里面。&lt;/p&gt;
&lt;p&gt;好久没有调试Ajax应用了，这个功能的恢复还是挺好的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Blog全新改版——白板</title>
      <link>https://qingbo-net.pages.dev/archives/291/</link>
      <pubDate>Thu, 08 Jan 2009 07:20:59 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/291/</guid>
      <description>&lt;p&gt;白板，开会、讨论用的白板。要是麻将里的白板，那下一个主题就是红中了。&lt;/p&gt;
&lt;p&gt;主题中用到图片的地方，就尽量模仿成白板上写字的效果。似乎专业的美工做的时候，都是先把整个页面画出来，然后再切割，实现。我很不专业，先是日思夜想，把整个页面画在脑子里，然后就开始实现。&lt;/p&gt;
&lt;p&gt;首先画出页面的边框（白板的框架），CSS里就写出header, content, sidebar和footer了。然后就盯着首页，把日志的样式调出来，sidebar的样式，接着把原来主题里的评论样式复制过来改改颜色，中间需要什么图片就随时画（不排除“窃”）。&lt;/p&gt;
&lt;p&gt;最后就是最重要的header了。领导亲笔题词，给我开了个好头，让我的心里充满希望：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/3179275350/&#34; title=&#34;星月轮转 (by qingbo)&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3466/3179275350_b4bcf3c141_m.jpg&#34; title=&#34;星月轮转 (by qingbo)&#34; alt=&#34;星月轮转 (by qingbo)&#34; width=&#34;240&#34; height=&#34;160&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;中间用bittbox做的免费&lt;a href=&#34;http://www.bittbox.com/fonts/bb-free-font-whiteboard-modern-demo/&#34;&gt;白板字体&lt;/a&gt;弄了个类似tag cloud的文字组合，右边是一列订阅按钮。tag cloud里本来没有”RSS”的，后来加上订阅按钮以后，灵机一动，加了个”RSS”，又连了个箭头。一个全新的主题，就这样诞生了。&lt;/p&gt;
&lt;p&gt;当然，不可避免地要加上“&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post384.html&#34;&gt;增强WordPress中的Gravatar应用&lt;/a&gt;”一文中介绍的小trick 🙂 接下来，慢慢地加一些实用的插件，改善用户体验。&lt;/p&gt;
&lt;p&gt;在做主题的过程中，免不了又跟IE死磕一番。中间也巩固了不少知识，正所谓——越磨砺，越光芒。这些知识都是伟大的IE创造的。有那么两三刻，我都想在主题里针对IE用户放出一个banner：“&lt;strong&gt;我谨代表全世界受苦受难的劳苦大众，请求你弃暗投明，放弃史前怪物，使用非IE浏览器。&lt;/strong&gt;”后来一想，我还得为了这个banner在IE里正常显示而折腾，算了，有空再说吧。&lt;/p&gt;
&lt;p&gt;欢迎测试、指正。&lt;/p&gt;</description>
    </item>
    <item>
      <title>延迟发布Feed须谨慎</title>
      <link>https://qingbo-net.pages.dev/archives/290/</link>
      <pubDate>Sun, 04 Jan 2009 02:05:52 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/290/</guid>
      <description>&lt;p&gt;前阵子有人分享了一个&lt;a href=&#34;http://wpengineer.com/publish-the-feed-later/&#34;&gt;延迟发布feed&lt;/a&gt;的技巧，在WordPress用户间广为流传。其原理就是利用WordPress的filter机制，发现当前的请求是Feed，即在查询条件中加一条，限制post的发布时间为五分钟之前(原文的代码escape太厉害了，直接复制有错误)：&lt;/p&gt;
&lt;p&gt;[code lang=’php’]&amp;lt;?php&lt;br /&gt; /**&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;puplish the content in the feed later&lt;/li&gt;
&lt;li&gt;$where ist default-var in WordPress (wp-includes/query.php)&lt;/li&gt;
&lt;li&gt;This function an a SQL-syntax&lt;br&gt;
*/&lt;br&gt;
function publish_later_on_feed($where) {&lt;br&gt;
global $wpdb;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;if ( is_feed() ) {&lt;br&gt;
// timestamp in WP-format&lt;br&gt;
$now = gmdate(‘Y-m-d H:i:s’);&lt;/p&gt;
&lt;p&gt;// value for wait; + device&lt;br&gt;
$wait = ‘5’; // integer&lt;/p&gt;
&lt;p&gt;// &lt;a href=&#34;http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_timestampdiff&#34;&gt;http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_timestampdiff&lt;/a&gt;&lt;br&gt;
$device = ‘MINUTE’; //MINUTE, HOUR, DAY, WEEK, MONTH, YEAR&lt;/p&gt;
&lt;p&gt;// add SQL-sytax to default $where&lt;br&gt;
$where .= ” AND TIMESTAMPDIFF($device, $wpdb-&amp;gt;posts.post_date_gmt, ‘$now’) &amp;gt; $wait “;&lt;br&gt;
}&lt;br&gt;
return $where;&lt;br&gt;
}&lt;/p&gt;</description>
    </item>
    <item>
      <title>放弃Feed服务商，享受原汁原味的RSS</title>
      <link>https://qingbo-net.pages.dev/archives/289/</link>
      <pubDate>Sat, 03 Jan 2009 08:26:35 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/289/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;人在悲哀之中，才象一个人。&lt;br&gt;
——孟德斯鸠&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我们太像人了。&lt;/p&gt;
&lt;p&gt;本来Feedburner是Feed服务的不二之选，然而由于众所周知的原因，我们不得不放弃它转向Feedsky. 最近似乎也听到声音，Google已经把它打造成一台广告机器，而不是原来的专业Feed服务商了。而Feedsky一直在风雨中飘摇，没见过有稳定的时候。&lt;/p&gt;
&lt;p&gt;跟Feedburner一样，feedsky提供了域名绑定功能，让你无后顾之忧——即使你不愿用Feedsky的服务，也可以将该域名指向其它的地址，实现无缝迁移。然而这个功能还不如没有，白白欺骗我绑定了域名，却没有跟上稳定的服务，还不如使用它的默认地址。这几天，绑定的域名就时常不能访问，似乎是有一台服务器出了问题。客服论坛里好多人反映，但是这是假期。记得当初我们的网站虽小，也会在第一时间作出反应。&lt;/p&gt;
&lt;p&gt;我考虑了一下是不是把blog的header/footer的rss链接换成feedsky的默认链接，后来决定不再对它抱有幻想，干脆放弃Feedsky，直接提供WordPress的原始RSS输出，地址是 &lt;a href=&#34;http://qingbo.org/feed&#34;&gt;http://qingbo.org/feed&lt;/a&gt; 我发誓只要这个blog还在，这个地址绝对是最新的feed.&lt;/p&gt;
&lt;p&gt;本来指向Feedsky服务器的域名feed.qingbo.org已经做了url转发到 feed.qingbo.org，所以通过该地址订阅的朋友无需修改。&lt;strong&gt;不过建议使用Feedsky地址(&lt;a href=&#34;http://feed.feedsky.com/flimsy&#34;&gt;http://feed.feedsky.com/flimsy&lt;/a&gt;)的朋友更改一下&lt;/strong&gt; 🙂&lt;/p&gt;
&lt;p&gt;可能对Feedsky的要求过高了，逆境中生存，在国内应该算已经做得不错了。不过对于blogger们来说，稳定性还是第一位。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;好处&lt;/strong&gt;：无需再为Feed服务的稳定性发愁，而且只要读者的阅读器来抓取，肯定是最新的Feed，不存在延时。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;坏处&lt;/strong&gt;：无法使用Feed服务商提供的高级统计服务，不过我觉得订阅数都是浮云，怎样提升文章质量才是重点，并且有许多提供统计的插件可以使用，稍微弥补一下。牺牲稳定性来换取统计服务，我觉得非常不值得。&lt;/p&gt;
&lt;p&gt;至于Feed服务商为blog分担Feed请求的负载，我觉得在当今online reader统治天下的局面下，不需要考虑。一个Reader服务只需请求一次，即可服务成百上千的读者。实在不行，还可以使用插件将Feed输出静态化。&lt;/p&gt;
&lt;div style=&#34;display:none;&#34;&gt;
  BANGB3A348BDD78150D425D1BF9CXIANGUO
&lt;/div&gt;</description>
    </item>
    <item>
      <title>WordPress post slug与SEO，中文blogger的困惑</title>
      <link>https://qingbo-net.pages.dev/archives/288/</link>
      <pubDate>Sat, 03 Jan 2009 01:43:00 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/288/</guid>
      <description>&lt;p&gt;今天在aw的blog看到他写的“&lt;a href=&#34;http://www.awflasher.com/blog/archives/1643&#34;&gt;中国Web工程师比美国人更厉害的4个原因&lt;/a&gt;”，讲了使用中文的计算机用户、以及面向中文用户进行开发的软件工程师需要额外修炼的法术——于我心有戚戚焉。当初在Linux里配置中文显示、输入的痛苦仍然记忆犹新，配置完系统又去配置特殊的软件；大部分的IDE把Ctrl+Blank作为代码提示的快捷键；……最近的&lt;a href=&#34;https://wiki.mozilla.org/Labs/Ubiquity&#34;&gt;ubiquity&lt;/a&gt;，也是以Ctrl+Blank作为呼出它的热键，并且其窗口会盖住中文输入法的候选窗口。尽管前辈已经把路铺得够平，我们已经足够幸福，中文在计算机世界里永远无法像英文一样简单、易用。&lt;/p&gt;
&lt;p&gt;晚上吃了饭，又看见WordPress爱好者论坛里有人问&lt;a href=&#34;http://wfans.org/forums/redirect.php?tid=1778&amp;amp;goto=lastpost&#34;&gt;日志缩略名的中文如何修改&lt;/a&gt;，我不知不觉就像唐僧一样罗里罗嗦回复了一大堆。&lt;/p&gt;
&lt;p&gt;post slug是什么？在wordpress后台的永久链接设置（/wp-admin/options-&lt;br&gt;
permalink.php）里，用户可以自定义&lt;a href=&#34;http://codex.wordpress.org/Using_Permalinks&#34;&gt;链接格式&lt;/a&gt;。绝大多数自定义的用户喜欢在url中包含由文章标题生成的一串字符，这就是post slug.&lt;br&gt;
一旦永久链接中使用了post slug，编写文章的时候标题下面就会显示post&lt;br&gt;
slug并允许你编辑，否则不显示，但wordpress仍然会自动生成并保存到数据库中。&lt;/p&gt;
&lt;p&gt;首先，URL中是不允许出现中文的，这个我以前写过一篇“&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post144.html&#34;&gt;中文URL编码&lt;/a&gt;”的文章，里面有详细介绍。简单地说，中文必须以UTF-&lt;br&gt;
8编码，然后再进行percent encoding，即每个字节转换成百分号后跟两位十六进制数字。英文标题不会引起任何问题，如图所示：&lt;/p&gt;
&lt;img decoding=&#34;async&#34; alt=&#34;post-slug&#34; src=&#34;http://qingbo.org/wp-content/uploads/2009/01/post-slug.png&#34; title=&#34;post-slug&#34; /&gt; 
&lt;p&gt;但是如果标题里有中文（当然其它不是基于英文字母表的语言也一样），问题就麻烦了。为了符合标准，WordPress必须将它们做percent&lt;br&gt;
encoding，然后你看到的post slug就是一连串的百分号。&lt;/p&gt;
&lt;h3 id=&#34;为什么在地址栏看到的是正常的中文&#34;&gt;为什么在地址栏看到的是正常的中文？&lt;/h3&gt;
&lt;p&gt;我机器上的浏览器当中，除了IE 6，其它的包括Firefox 3，Opera，Chrome，Safari都会自动将url中的中文解码，所以我们会看到正常的中&lt;br&gt;
文。不仅如此，鼠标悬浮在链接上时，状态栏显示该链接的目标也会对中文进行自动解码。而IE&lt;br&gt;
6和Firefox以前的版本则没有这么做，浏览器地址栏就会看到一串百分号，IE 7以后的版本我没有测试，不知道它们是怎么处理的。Firefox&lt;br&gt;
3还有一个特点，它虽然显示了中文，可是复制的时候，剪贴板里仍然是未经解码的原始URL，这样可以防止某些浏览器错误地处理该链接地址。&lt;/p&gt;
&lt;h3 id=&#34;为什么post-slug不自动修改&#34;&gt;为什么post-slug不自动修改？&lt;/h3&gt;
&lt;p&gt;post slug是在永久链接(permalink)中使用的。顾名思义，这个链接轻易是不会改动的。否则，搜索引擎所保存的记录就会失效，而指向该页面的链接也会&lt;br&gt;
失效，造成很多麻烦。&lt;/p&gt;
&lt;p&gt;实际上，post slug在特定情况下会自动更新的，那就是在文章发布之前。因为这时候，搜索引擎不会来抓取该网页，别的页面也不会有意指向这个“尚不存在的”页面&lt;br&gt;
。但是当文章发布之后再编辑文章标题的时候，post slug就不会自动更新了，这时，即使你主动编辑也要三思而后行。&lt;/p&gt;
&lt;h3 id=&#34;我如何更新这些乱码&#34;&gt;我如何更新这些“乱码”？&lt;/h3&gt;
&lt;p&gt;好，你确定要修改post slug并承受永久链接失效的损失了。&lt;/p&gt;
&lt;p&gt;对于英文标题的post&lt;br&gt;
slug，改起来相当方便，因为英文不需要进行额外的编码工作。而中文的标题可就麻烦了，这些满眼的百分号对普通用户来说简直就像刺猬一样，不知道从哪儿下手。&lt;/p&gt;
&lt;p&gt;其实这是一项极为简单的工作，至少你不会经常这么做，所以犯不着做一个WordPress插件来帮助你完成。在Firefox中，打开Tools-&amp;gt;JavaScri&lt;br&gt;
pt Console(Ctrl+Shift+J)，代码框输入encodeURIComponent(‘中文标题’)并回车，“中文标题”这四个字的正确编码就显示&lt;br&gt;
在下面了。当然，如果中间有标点，还是做一些处理例如转换成减号比较好看。&lt;/p&gt;
&lt;h3 id=&#34;不喜欢中文post-slug&#34;&gt;不喜欢中文post slug?&lt;/h3&gt;
&lt;p&gt;毕竟，我们看到了它的本质——一串夹杂着百分号的无法阅读的文字，尽管多数浏览器已经将其解码还原。许多朋友还是喜欢用可读性更好的英文字母来做slug.&lt;br&gt;
可能有些勤奋而认真的blogger每写一篇文章都会自己写一个英文的post slug，但是更多的人习惯将这一工作交给计算机。&lt;a href=&#34;http://www.storyday.com/html/y2007/1202_auto-slug-translate-&#34;&gt;cos_slug_transl&lt;br&gt;
ator&lt;/a&gt;就是一个自动翻译成英文然后生成slug的插件，还有一些转换成拼音的，大家有兴趣的话自己去搜。&lt;/p&gt;
&lt;h3 id=&#34;使用英文或拼音做post-slug利于seo&#34;&gt;使用英文或拼音做post slug利于SEO？&lt;/h3&gt;
&lt;p&gt;大部分人都这么认为，而我的意见是未必如此（我不懂SEO，如有误请专家指教）。这里仅针对中文内容和标题的blog post. 链接中有文章描述的主题关键字会增&lt;br&gt;
加该网页在搜索结果中的权重，这是正常的。然而用中文写成的内容和标题，链接却是拼音或者英文，这个，Google和Baidu会考虑吗？&lt;/p&gt;
&lt;p&gt;假设我写一篇文章，标题叫农历。&lt;/p&gt;
&lt;p&gt;如果我用英文做post slug，那么可能是lunar-calendar或者chinese-lunar-calendar.&lt;br&gt;
搜索引擎在收录该网页的时候，会考虑到链接中有lunar calendar而升高它在“农历”关键字搜索结果中的名次吗？我想不会。而搜索”lunar&lt;br&gt;
calendar”过来的人，90%的几率是看不懂文章在说什么。&lt;/p&gt;
&lt;p&gt;如果我用拼音做post slug，那么是nongli. 我认为搜索引擎同样不会因此而觉得该网页与“农历”关系更紧密。由于同词多音的存在，这个分析对于搜索引擎&lt;br&gt;
来说非常鸡肋。对于关键字”nongli”，搜索引擎会提示，是不是要找“农历”。&lt;/p&gt;
&lt;p&gt;如果用中文做post slug呢？我们可以在Google中搜索“农历”试试看。第一页上就有wikipedia的繁体&lt;a href=&#34;http://zh.wikipedia.org/wiki/%E8%BE%B2%E6%9B%86&#34;&gt;农历&lt;/a&gt;词条。Google在这条搜索&lt;br&gt;
结果的下面给出的链接是“zh.wikipedia.org/wiki/農曆”。实际上该词条的真是链接地址是“http://zh.wikipedia.org/w&lt;br&gt;
iki/%E8%BE%B2%E6%9B%86”，后面是繁体“農曆”的编码。&lt;strong&gt;wikipedia没有使用拼音、英文做”slug”，而是直接使用了中文&lt;/strong&gt;。而&lt;br&gt;
Google显然懂得对它进行解码，因为它给出了解码后的链接，并且将该词加粗，表明这是一个匹配，不仅仅是页面标题。&lt;/p&gt;
&lt;p&gt;搜索引擎懂得做简繁转换，懂得对percent encoding解码来寻找信息（这一点不知道百度做到了没有），但是目前似乎不会先翻译再搜索。&lt;/p&gt;</description>
    </item>
    <item>
      <title>增强WordPress中的Gravatar应用</title>
      <link>https://qingbo-net.pages.dev/archives/287/</link>
      <pubDate>Thu, 01 Jan 2009 05:39:34 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/287/</guid>
      <description>&lt;div class=&#34;info&#34;&gt;
  如果你是点击了评论框旁边的“What?”帮助链接而来，推荐先看前一篇文章“&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post383.html&#34;&gt;Gravatar简介&lt;/a&gt;”。本文主要介绍如何用Gravatar来完善WordPress的评论框，实现这一功能，如果感兴趣并且已经了解Gravatar，请继续。
&lt;/div&gt;
&lt;p&gt;虽然WordPress早在2.5的版本中就内置了Gravatar支持，似乎也没有人在添加评论form的旁边加上它。我似乎是第一个？呵呵，如有先行者，恕我孤陋寡闻。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;功能&lt;/strong&gt;：在添加评论的表单旁边显示gravatar头像预览，登录用户直接取其email，而未登陆用户则首先尝试从cookie取得email，若cookie中部存在，则在其输入email之后，取得email值即时更新预览。&lt;/p&gt;
&lt;p&gt;首先说明，本文不介绍排版，即不介绍CSS布局，不过你可以参考我的评论form布局。&lt;/p&gt;
&lt;p&gt;第一步，在主题的comments.php中，找到评论框合适的位置，添加gravatar预览：&lt;/p&gt;
&lt;p&gt;[code lang=’php’]&lt;/p&gt;
&lt;div id=&#34;avatar-preview&#34;&gt;
  &lt;?php $id_or_email = $user_ID ? $user_ID : $comment_author_email;&lt;br /&gt; echo get_avatar($id_or_email, &amp;#8217;32&amp;#8217;); ?&gt;
&lt;/div&gt;
&lt;p&gt;[/code]&lt;/p&gt;
&lt;p&gt;第二步，仍旧在comments.php中，给email输入的input绑定blur事件，在其失去焦点的时候更新gravatar头像预览：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;onblur=&amp;quot;updateAvatarPreview(this.value)&amp;quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;第三步，下载&lt;a href=&#34;http://pajhome.org.uk/index.html&#34;&gt;Paul Johnston&lt;/a&gt;的&lt;a href=&#34;http://pajhome.org.uk/crypt/md5/&#34;&gt;JavaScript md5&lt;/a&gt;脚本，放在网站中合适的目录（我是放在当前主题的scripts子目录中）。&lt;/p&gt;
&lt;p&gt;第四步，修改主题的header.php文件，在head标签内加入如下代码：&lt;/p&gt;
&lt;p&gt;[code lang=’php’]&lt;?php if (is_singular() &amp;#038;&amp;#038; !$user_ID) { ?&gt;&lt;/p&gt;
&lt;?php } ?&gt;[/code]
&lt;p&gt;is_singular函数在当前页面为单篇文章、单个页面或者单个附件的时候返回true，这些一般都是有评论的页面，所以正好合适。而另一个条件 (!$user_ID) 则是因为有用户登录的时候，不需要填写Email，也就不需要客户端更新的代码了。根据email的md5 hash值生成图片链接的代码，在末尾加了个参数”s=32″，是指定头像的大小，这个可以参考gravatar的&lt;a href=&#34;http://en.gravatar.com/site/implement/url&#34;&gt;官方说明&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;JavaScript代码中要根据“avatar-preview”这个id来找到头像的预览并且更新它，因此这两个地方要统一。另外md5的JavaScript文件位置也要和引用的url统一起来，这样才能成功调用。&lt;/p&gt;
&lt;p&gt;开始的时候考虑了一下要不要做成插件形式，想了想，评论框的修改还是得手动修改才够灵活，于是作罢。谁要是自己做主题，也可以按照这个教程把这个功能添加上。如有不清楚的地方，请在下面留言。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gravatar简介</title>
      <link>https://qingbo-net.pages.dev/archives/286/</link>
      <pubDate>Thu, 01 Jan 2009 01:58:54 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/286/</guid>
      <description>&lt;p&gt;现在介绍这个似乎有点晚了，许多人都在用这个服务，不过我有点小用……&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://en.gravatar.com/&#34;&gt;Gravatar&lt;/a&gt;(globally recognized avatar)是一个很不错的想法，用户在该网站上传头像图片之后，就可以被任何网站使用。只要用户在其它网站提供了email地址，这些网站就可以知道用户头像图片的地址。当然了，email地址并不会暴露在页面上，它是用email的md5 hash来&lt;a href=&#34;http://en.gravatar.com/site/implement/url&#34;&gt;确定头像地址&lt;/a&gt;的。&lt;/p&gt;
&lt;p&gt;由于它十分流行，2007年10月18日被automattic&lt;a href=&#34;http://blog.gravatar.com/2007/10/18/automattic-gravatar/&#34;&gt;收购&lt;/a&gt;。现在，wordpress已经内置了gravatar的支持，一切都是很自然的事情——当初Gravatar的流行，也依赖了wordpress广大的用户基础。&lt;/p&gt;
&lt;p&gt;对于一般网站的开发者来说，现在头像对于用户是必不可少的一个功能。然而头像的上传、剪切、存储并不是小菜一碟。如果网站决定使用gravatar，那就会省了这道工序。更重要的是，对于一个起步中的网站，可能愿意主动上传头像的用户不会超过10%，因为在硬盘上浏览图片，找到合适的头像不一定是一件易事，而用户还没有确定他是否会在这个网站活跃。&lt;/p&gt;
&lt;p&gt;所以gravatar对于开发者和用户都有帮助。如果你在wordpress搭建的blog（本blog即是）里留言发现别人的头像很cool而你的是默认，很有可能是人家使用了gravatar，赶紧去gravatar上传一张头像吧。&lt;/p&gt;</description>
    </item>
    <item>
      <title>迎接2009，Blog主题更新</title>
      <link>https://qingbo-net.pages.dev/archives/285/</link>
      <pubDate>Wed, 31 Dec 2008 15:57:47 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/285/</guid>
      <description>&lt;p&gt;其实没更新啥，WordPress 2.7的评论功能大大增强，主要是增加了comment threading功能，而这一功能以前大部分blogger都是用插件&lt;a href=&#34;http://meidell.dk/archives/2004/09/04/nested-comments/&#34;&gt;Brian’s Threaded Comments&lt;/a&gt;实现的。我今天就抽了一点时间，去掉了插件，换用WordPress本身的&lt;a href=&#34;http://codex.wordpress.org/Template_Tags/wp_list_comments&#34;&gt;wp_list_comment&lt;/a&gt;函数来显示评论。&lt;/p&gt;
&lt;p&gt;晚上吃饭的时候，电视上都是迎接新年的气氛。而我回顾2008年，却感觉有点失败，一事无成。以后要把更多的时间用在工作和学习上了，尽量不做无聊的事。作为兴趣爱好，我会多看看PHP以及WordPress的东西。最近如果有时间，就写几篇关于WordPress 2.7的评论功能的文章吧。&lt;/p&gt;</description>
    </item>
    <item>
      <title>啥时候&amp;lt;!–more–&amp;gt;有用？</title>
      <link>https://qingbo-net.pages.dev/archives/284/</link>
      <pubDate>Wed, 31 Dec 2008 10:05:41 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/284/</guid>
      <description>&lt;p&gt;今天打开自己的blog，发现那两个flash游戏自动播放很烦，我一时写文章不勤快了，就没有把它们埋下去，每次打开首页都听那么一遍。&lt;/p&gt;
&lt;p&gt;于是&lt;a href=&#34;http://codex.wordpress.org/Customizing_the_Read_More&#34;&gt;&amp;lt;!–more–&amp;gt;&lt;/a&gt;派上了用场。把两篇文章分别编辑了一下，给flash嵌入的代码前面加上了more，这下首页没有了。话说，多亏我今天把电脑的静音取消了，要不还不知道用户体验这么差呢……&lt;/p&gt;
&lt;p&gt;文章特别长的时候，这个特殊标签也非常有用，它会让blog的首页高度不会出奇地大。尤其是文中有大量图片的时候，前阵子从黄山回来，那些流水帐里不少就用了more标签。&lt;/p&gt;
&lt;p&gt;首页默认是10篇文章，缩小每篇文章的高度，有利于读者更快地发现更多有意思的东西。&lt;/p&gt;
&lt;p&gt;另一方面，首页的数据量也大大减小，页面加载速度大大加快，也提升不少用户体验。&lt;/p&gt;</description>
    </item>
    <item>
      <title>慎用StringEscapeUtils.escapeHtml方法</title>
      <link>https://qingbo-net.pages.dev/archives/283/</link>
      <pubDate>Wed, 17 Dec 2008 08:37:41 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/283/</guid>
      <description>&lt;p&gt;几个月前写了篇&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post312.html&#34;&gt;文章&lt;/a&gt;推荐使用Apache commons-lang的StringUtils来增强Java字符串处理功能，我也一直在项目中大量使用StringUtils和StringEscapeUtils这两个实用类。&lt;/p&gt;
&lt;p&gt;最近在数据库里发现某个表的内容全都成了HTML entity表示，中文也全被转换成了”我”这样的格式，而在页面上显示一切正常。最终发现造成这个后果的原因是在将字符串保存到数据库之前，用StringEscapeUtils.escapeHtml对其进行了处理。&lt;/p&gt;
&lt;p&gt;字符串过滤是在许多Web应用开发中需要考虑的问题。比如用户输入一个左尖括号(&amp;lt;)，在输出HTML代码对其进行显示的话，应该用”&amp;lt;”来表示（而我为了正常显示这句话中出现的两次尖括号，必须做多余的工作，你可以看一下源代码）。是在用户将表单提交后就做转换呢，还是在从数据库取出内容向用户展示时再转换？这个问题需要仔细考虑。在入库前转换，看似一劳永逸，然而如果用户需要编辑这个内容，你需要原路退回，做个逆向的转换，这看起来比较麻烦。所以大部分的转换都是在从数据库中取出数据之后做的，struts的&lt;a href=&#34;http://struts.apache.org/1.3.8/struts-taglib/tagreference.html#bean:write&#34;&gt;bean:write标签&lt;/a&gt;的filter属性就是控制这个开关的（默认为true）。&lt;/p&gt;
&lt;p&gt;而某些内容是不会被编辑的，比如一般的电子邮件，这类就可以在用户提交表单之时转换，一劳永逸。于是我使用了StringEscapeUtils.escapeHtml来做这个工作。&lt;/p&gt;
&lt;p&gt;如果是英文内容，没有任何问题，然而它将一个中文字符转换成了8个字符。在&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post145.html&#34;&gt;UTF-8的编码&lt;/a&gt;中，每个汉字占用三个字节，每个英文字符占用一个字节。这样的转换造成了大量的空间浪费。&lt;/p&gt;
&lt;p&gt;简单的办法是自己写一个escapeHtml方法，替换左右尖括号就可以了。虽然还有一些HTML entity未被转换，可能造成输出的网页不符合web标准，但是大部分浏览器都可以正常显示也就够了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Firefox必备扩展 – Copy URL &#43;</title>
      <link>https://qingbo-net.pages.dev/archives/282/</link>
      <pubDate>Thu, 11 Dec 2008 10:20:06 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/282/</guid>
      <description>&lt;p&gt;在网上看到有趣的新闻，经常有在IM上分享给朋友的冲动。不过这个操作一般都要复制两次，一次标题，一次链接，这样才专业。&lt;/p&gt;
&lt;p&gt;不用想就知道肯定有人做了这样的扩展，&lt;a href=&#34;https://addons.mozilla.org/en-US/firefox/addon/129&#34;&gt;Copy URL +&lt;/a&gt;就是一个，我不知道有没有其它的，至少这个已经足够好用了。&lt;/p&gt;
&lt;p&gt;遗憾的是作者似乎已经不再维护了，官方版本只支持Firefox 1.5. 没关系，下面的Review提供了支持3.x的版本：&lt;a href=&#34;http://www.utm.edu/staff/bmoseley/copyurlplus-v1.3.4.xpi&#34;&gt;http://www.utm.edu/staff/bmoseley/copyurlplus-v1.3.4.xpi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;安装后在网页的右键菜单上有一个Copy URL+的菜单组，下面默认有三个子菜单项（没有选中文本时仅显示第一个）：&lt;/p&gt;
&lt;p&gt;Copy URL + Title -&amp;gt; 复制链接和标题，中间用回车隔开&lt;br&gt;
Copy URL + Selection -&amp;gt; 复制链接和选中文本，中间用回车隔开，并且选中文本加引号&lt;br&gt;
Copy URL + Title + Selection -&amp;gt; 上面二者之结合&lt;/p&gt;
&lt;p&gt;该扩展的功能比想象的还要强大，可以在Firefox的profile文件夹里的user.js中定义新的菜单项(Windows在C:\Documents and Settings[username]\Application Data\Mozilla\Firefox\Profiles[randstr])。自定义的方法在扩展的README文件中有介绍（解压或安装后可以看见），也可以在扩展的官方主页看到。&lt;/p&gt;
&lt;p&gt;对于像我这样不喜欢使用可视化编辑器写东西（更利于控制HTML代码质量）的blogger，用这个插件来生成链接代码要方便多了。我定义了两个菜单项如下：&lt;/p&gt;
&lt;p&gt;user_pref(’copyurlplus.menus.1.label’, ‘Copy URL + Title (HTML)’);&lt;br&gt;
user_pref(’copyurlplus.menus.1.copy’, ‘&lt;a href=&amp;#8221;%URL%&amp;#8221;&gt;%TITLE%&lt;/a&gt;’);&lt;br&gt;
user_pref(’copyurlplus.menus.2.label’, ‘Copy URL + Selection (HTML)’);&lt;br&gt;
user_pref(’copyurlplus.menus.2.copy’, ‘&lt;a href=&amp;#8221;%URL%&amp;#8221;&gt;%SEL%&lt;/a&gt;’);&lt;/p&gt;
&lt;p&gt;第一个把标题作为链接文本，第二个把选中文本作为链接文本，生成对应的HTML代码。&lt;/p&gt;</description>
    </item>
    <item>
      <title>打企鹅变速齿轮版</title>
      <link>https://qingbo-net.pages.dev/archives/281/</link>
      <pubDate>Wed, 10 Dec 2008 15:33:30 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/281/</guid>
      <description>&lt;p&gt;新鲜出炉，该快的快，该慢的慢，节约时间，为构建和谐社会做贡献：&lt;br&gt;
&lt;span id=&#34;more-542&#34;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;版权归&lt;a href=&#34;http://www.yetisports.org/&#34;&gt;yetisports.org&lt;/a&gt;所有。。&lt;/p&gt;
&lt;p&gt;另，我打出了5556的成绩，不过是用正规版本打出的，估计自己也难以超越了：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/3094556085/&#34; title=&#34;5556 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3101/3094556085_66c8d830a1_o.jpg&#34; width=&#34;548&#34; height=&#34;398&#34; alt=&#34;5556&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>打企鹅 – 神奇的非洲 修改版</title>
      <link>https://qingbo-net.pages.dev/archives/280/</link>
      <pubDate>Thu, 04 Dec 2008 17:00:24 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/280/</guid>
      <description>&lt;p&gt;这两天打企鹅打上瘾了，我玩的是神奇的非洲这个版本，应该是最耐玩的一个吧。注意第一棒要从长颈鹿的肚子下面过去，这样有机会越过两棵树，一下打1200米左右，某同学甚至打出了1500米，真是……我的最好成绩是5棒4000多米。&lt;/p&gt;
&lt;p&gt;让人不爽的是这个游戏没有一个reset键，有时候明明失误了，很希望重新来过，只能靠点浏览器的刷新按钮来完成。于是再听一遍烦人的音乐，再点好多次OK.&lt;/p&gt;
&lt;p&gt;痛定思痛，不是很熟悉flash的我还是把这个难题给攻克了。本来想加个reset的button的，后来图简单，就把5棒结束后乌鸦衔着的那个记分牌给搬过来了，哈哈，效果很明显：&lt;br&gt;
&lt;span id=&#34;more-541&#34;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;就加了那么五六行action script. 因为机器上没有一个字体，原来的字体被替换了，不过没多大影响。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SVN 错误 – no such revision</title>
      <link>https://qingbo-net.pages.dev/archives/279/</link>
      <pubDate>Thu, 04 Dec 2008 11:10:10 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/279/</guid>
      <description>&lt;p&gt;Linux服务器不小心断电，重启后，修复了硬盘，但是SVN Server出问题了。在浏览器中访问，看似一切正常，但是要check out，update的时候，就报错 no such revision ‘xxx’，xxx是一个版本号。&lt;/p&gt;
&lt;p&gt;对repository目录执行svnadmin verify，发现很早之前的版本还在，从某个版本号就出错了。Google了一通之后，发现搜索结果里和我的症状都不太相同。丢失的太多了，近期备份也没有，难道就重新建一个repository了事？&lt;/p&gt;
&lt;p&gt;不过很快找到了问题所在，db/revprops目录中的文件从0开始，到了出错的版本号就没了。打开这些文件，发现是纯文本，格式如下：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;K 10&lt;br&gt;
svn:author&lt;br&gt;
V 7&lt;br&gt;
someone&lt;br&gt;
K 8&lt;br&gt;
svn:date&lt;br&gt;
V 27&lt;br&gt;
2008-07-08T19:54:09.605509Z&lt;br&gt;
K 7&lt;br&gt;
svn:log&lt;br&gt;
V 9&lt;br&gt;
log here.&lt;br&gt;
END&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;显然，一个key(K)跟一个value(V)，大写字母K、V之后是字符串的长度，revprops中的文件只是记录了每个版本提交的信息。&lt;/p&gt;
&lt;p&gt;由于我们同时使用了trac，这些revprops文件丢失并没有损失，trac的数据库中都有保存，可以通过它来重新生成。但是为了简便起见，我就把最后一个存在的版本号文件复制了N遍：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;for i in $(seq 250 500)
do
 cp 249 ${i}
done
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;250到500是缺失的版本号，249是最后一个存在的。就这样终于把版本库给修复了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>补记凤凰岭秋游</title>
      <link>https://qingbo-net.pages.dev/archives/278/</link>
      <pubDate>Mon, 01 Dec 2008 04:54:25 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/278/</guid>
      <description>&lt;p&gt;一个多月前我们去了一次凤凰岭，两男两女。原计划是十点上山，灌点泉水，两三点下山，然后去小汤山泡汤。&lt;/p&gt;
&lt;p&gt;结果上山后不久，看到旁边有一条比较宽阔的山路，我们就抛弃了正途，沿这条山路向上走了。旁边出现一条小溪，一个水池子里有好多蝌蚪，某些没见过世面的同志看得很开心——“咦，这个长后腿了耶！”“啊，这个有四条腿还有尾巴哎！”漫山遍野散步的红色，也让人很兴奋，想到后来我还到香山去看了红叶，哪里有这么好啊。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/2958507560/&#34; title=&#34;站在山脚 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3166/2958507560_a875560f87_m.jpg&#34; width=&#34;240&#34; height=&#34;180&#34; alt=&#34;站在山脚&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://www.flickr.com/photos/qingbo/2958516292/&#34; title=&#34;红叶 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3227/2958516292_deb541e59a_m.jpg&#34; width=&#34;240&#34; height=&#34;180&#34; alt=&#34;红叶&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;沿南线走了不久遇到的一个岔路口成了这天行程的转折点，队伍一番商量之后，决定逢路口即选择右边的。后来证明，右倾机会主义害人不浅。在经过几次右倾之后，小溪离我们越来越远，路越来越不清晰，最后几乎找不到了。有时候是高大的灌木挡着，需要弯腰钻过去，或者把稍微矮小一点的用力踩到下面。有时候是大片大片的藤，差不多一人高，人就像在一张蛛网上爬一样，倒是很安全。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/2958527292/&#34; title=&#34;藤 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3207/2958527292_885859232a_m.jpg&#34; width=&#34;240&#34; height=&#34;180&#34; alt=&#34;藤&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在山谷的时候，看着上面不远处就是几块巨石，似乎山顶并不远，不过往上爬的过程中才发现，那是很难爬上去的，我们只能斜向上，往更高的山顶爬。很快，最初的那些巨石就在我们下面了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/2957718289/&#34; title=&#34;光秃秃的岩壁 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3292/2957718289_aabd9b89bd_m.jpg&#34; width=&#34;240&#34; height=&#34;180&#34; alt=&#34;光秃秃的岩壁&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最后终于到了一个小山顶。没有任何准备，没有任何专业的装备，几乎没有食物和水，我们就爬上来了。因为路一直比较难走，甚至有的地方很危险，我们一直不想回头，想着前面的路可能会比较好走，前面也会有好的景色。那些高大的灌木和藤条，向下走的话，估计会更困难，所以我们决定从另一面下山。人大概都是这样，不知道前面的路是不是更危险，反正不想走回头路了。走到山顶那两块巨石前面，看到了不久前有人留下的痕迹，稍稍地宽慰了一些。毕竟这不是无人区，我们还能看到人的痕迹，远处就是北京市，还能听见对面山上有人说话的声音。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/2958565150/&#34; title=&#34;山顶 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3072/2958565150_da8a98841e_m.jpg&#34; width=&#34;240&#34; height=&#34;180&#34; alt=&#34;山顶&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://www.flickr.com/photos/qingbo/2958567674/&#34; title=&#34;公交队也上来过 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3068/2958567674_54bf7f50e3_m.jpg&#34; width=&#34;180&#34; height=&#34;240&#34; alt=&#34;公交队也上来过&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;下山的路一开始就不好走，好几次需要从巨石上滑下来，主要是有两位女士。不过很快发现一条平整的小路，我们一下就兴奋起来，心想又找到路了，顺着它一定能走下山去。路况相对于乱石杂草那是好多了，但是它把我们引向了一个悬崖。悬崖边上有浓密的灌木，多亏我当时速度不是特别快，否则一下就走下去了。拽着藤条向下看，不是特别高，不过因为有女的，我们就退回去另选它路了。右边是一条山涧，堆满了从山上滚落的大石块，我们决定从那里走。过去以后发现那里也有人走过的痕迹，小心地下到谷底，又在一处石壁上发现了公交队的“到此一游”——果然，他们也是从这里下来的。这时看到前方的巨石附在悬崖上，仿佛一只乌龟在向上爬。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/2958583446/&#34; title=&#34;公交队也上来过 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3135/2958583446_452c1c5f76_m.jpg&#34; width=&#34;240&#34; height=&#34;180&#34; alt=&#34;公交队也上来过&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://www.flickr.com/photos/qingbo/2958581624/&#34; title=&#34;乌龟 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3014/2958581624_7244503e24_m.jpg&#34; width=&#34;180&#34; height=&#34;240&#34; alt=&#34;乌龟&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;到了谷底终于有了真正的路，心情也就放松下来了，到处都是山核桃树，山核桃落得满地都是，我们用帽子装了不少。在山顶比较饿的时候，就是吃了几个山核桃充饥，味道很纯正。半小时后走到了南线的大路上，身心疲惫，回头望下来的山，如果事先知道，肯定不会爬上去的……路过一家采摘的园子，尝了一下我平时从来不吃的苹果，真好吃，买了一些带回家，结果第二天吃的时候，完全没有了下山时品尝的美味……&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/2958586938/&#34; title=&#34;回头看我们下山的路 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3055/2958586938_966b62bdd2_m.jpg&#34; width=&#34;240&#34; height=&#34;180&#34; alt=&#34;回头看我们下山的路&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这一路真可谓是披荆斩棘，多少有点后怕。至于泉水，下次再灌吧。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Greasemonkey与DOMContentLoaded</title>
      <link>https://qingbo-net.pages.dev/archives/277/</link>
      <pubDate>Sat, 29 Nov 2008 14:03:54 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/277/</guid>
      <description>&lt;p&gt;昨天在&lt;a href=&#34;http://hexy.cc/&#34;&gt;hexy&lt;/a&gt;要求下写了一个&lt;a href=&#34;http://userscripts.org/scripts/show/37718&#34;&gt;小脚本&lt;/a&gt;，在豆瓣的邀请页面加了全选按钮。&lt;/p&gt;
&lt;p&gt;按照习惯，我把处理DOM的代码放在了窗口的load事件的处理函数中：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;window.addEventListener(&#39;load&#39;, function(e) {
	...
}, false);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是hexy说页面上有很多图片（头像）的情况下，页面一显示出来没有全选那个checkbox，延迟好一会之后才出现。以前处理的页面因为比较简单，都没怎么在意这个问题，看来这次是不行了。各种JavaScript库里都有另外的途径来替代”load”，比如jQuery有ready函数，mootools有domready事件。而我们写Greasemonkey脚本，只需要考虑Firefox就好了，它有一个&lt;a href=&#34;https://developer.mozilla.org/en/Gecko-Specific_DOM_Events&#34;&gt;DOMContentLoaded&lt;/a&gt;事件，页面上解释得非常清楚：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Fired on a Window object when a document’s DOM content is finished loaded, but unlike “load”, does not wait till all images are loaded. Used for example by GreaseMonkey to sneak in to alter pages before they are displayed.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我们要的就是它。然而在把load替换为DOMContentLoaded之后，我发现更糟了，代码根本不执行了。一番搜索之后，我发现我从来就没仔细想过一个问题，Greasemonkey的脚本到底是什么时候执行的？&lt;a href=&#34;http://wiki.greasespot.net/DOMContentLoaded&#34;&gt;这个页面&lt;/a&gt;解释了这个问题。&lt;/p&gt;
&lt;p&gt;原来Greasemonkey的脚本就是在DOMContentLoaded这个事件触发后执行的，而这个事件对每次打开网页只有一次，脚本中再往这个事件添加处理函数当然是徒劳了！于是解决方案就是更简单地，把处理代码外面的皮剥掉，直接放出来就可以了。结果就是现在的&lt;a href=&#34;http://userscripts.org/scripts/review/37718&#34;&gt;这个样子&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;可能是最初学写脚本的教程里就是教用load事件的，看起来又比较专业，我就一直这么用了，可见启蒙教育是多么重要，要不是这次教训，可能我就一辈子这么缺钙了。&lt;/p&gt;
&lt;p&gt;实际上一般情况下对DOM的操作都不需要等到load事件，DOM结构完整之后就可以了，这样给用户的体验也会好很多。&lt;/p&gt;</description>
    </item>
    <item>
      <title>看了一下facebook的应用开发</title>
      <link>https://qingbo-net.pages.dev/archives/276/</link>
      <pubDate>Thu, 27 Nov 2008 07:02:15 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/276/</guid>
      <description>&lt;p&gt;一想到弄个Facebook的小应用，我就有点雄心勃勃的，想针对Facebook的数据做一些处理。不过看了一些相关的文档和例子之后，才发现有了API并不能为所欲为，Facebook对于应用的限制还是比较多的。&lt;/p&gt;
&lt;p&gt;对Facebook的用户生成内容做处理和分析是基本不可能的，它最多只向你提供用户的账户基本信息及朋友关系。Facebook的应用一般都是将Facebook庞大的用户群为我所用，借助应用本身的趣味性以及facebook错综复杂的朋友关系、news feed迅速蔓延、推广。这种模式在游戏类的应用中表现尤为突出。&lt;/p&gt;
&lt;p&gt;Facebook的应用不限于那些像开心网的模块一样的。开心网的应用一般都是添加，然后就出现在左侧栏，就可以玩了。Facebook的应用不添加也可以使用，只要你授权给它，它就可以不同程度地取得你的各种信息。有了这样的机制，应用可以完全栖身于Facebook之外，最初的访问可能需要跳转到Facebook（登录）进行授权。一旦授权成功，用户就可以只访问这个独立的站点，与Facebook Server的交互只是该站点的服务器在后台做了。这种模式相当于是一个独立站点借用了Facebook的用户表和朋友表。&lt;/p&gt;
&lt;p&gt;然而给Facebook开发应用远没有使用Facebook那么简单，它的文档、示例等有点像大部分的开源项目，让入门者找不到清晰的道路。最近Facebook出来新版，有了新的Profile设计以及一个Publisher，但是大部分的教程（尤其是第三方开发者的）都没有及时更新。&lt;/p&gt;
&lt;p&gt;Facebook开发的首页是这个”&lt;a href=&#34;http://developers.facebook.com/&#34;&gt;Facebook Developers&lt;/a&gt;“，初看简介明了，不过浏览半天还是一头雾水。我的建议是看完&lt;a href=&#34;http://developers.facebook.com/get_started.php&#34;&gt;Get Started&lt;/a&gt;之后，直接到wiki里去看”&lt;a href=&#34;http://wiki.developers.facebook.com/index.php/Creating_your_first_application&#34;&gt;Creating your first application&lt;/a&gt;“这篇文章，写得非常详细。&lt;/p&gt;
&lt;p&gt;Facebook给出了一些&lt;a href=&#34;http://wiki.developers.facebook.com/index.php/Demos&#34;&gt;Demo App&lt;/a&gt;，多看看多用用就知道Facebook API能干些什么。不过到最后谁都很郁闷，看到了demo，它们的源代码在哪儿呢？Facebook似乎没在明显的地方告诉我们，它们在一个SVN代码库里：&lt;a href=&#34;http://svn.facebook.com/svnroot/platform/samples/&#34;&gt;http://svn.facebook.com/svnroot/platform/samples/&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>写blog的朋友越来越少</title>
      <link>https://qingbo-net.pages.dev/archives/275/</link>
      <pubDate>Wed, 26 Nov 2008 04:52:21 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/275/</guid>
      <description>&lt;p&gt;记得当初刚开始写blog的时候，周围好多人都在写，包括在BBS上认识的一些朋友。写blog的过程中也认识了不少新朋友，都是写blog的。而如今，那些最初认识的blogger大部分都不写了。打开网址，有的域名已经过期了都不续费，还有的就是荒废了，几年前的文章摆在那儿，有的甚至都不知道去向。&lt;/p&gt;
&lt;p&gt;基本上所有的人都是为生活奔波，没时间也没心情写这玩意了。剩下来写blog的，几乎都是IT人士。甚至有的IT人士也整天见不到踪影，不要说让他写blog了。&lt;/p&gt;
&lt;p&gt;就是因为大学快毕业的时候空闲时间太多，所以大家就靠写blog打发时间。而现在为生活奔命，谁还有工夫顾着这个？倒是长江后浪推前浪，我们开始奔命了，新一代的准毕业生来了，组成一个新的blog圈子，互相做链接，互相点名，互相探讨建站，blog圈依旧繁荣如初。&lt;/p&gt;</description>
    </item>
    <item>
      <title>招行信用卡的账单分期</title>
      <link>https://qingbo-net.pages.dev/archives/274/</link>
      <pubDate>Sat, 22 Nov 2008 10:42:44 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/274/</guid>
      <description>&lt;p&gt;招商银行推出了“&lt;a href=&#34;http://creditcard.cmbchina.com/financing/billdiy/diy.htm&#34;&gt;账单分期DIY&lt;/a&gt;”，不过好多人都在网上抱怨说过不了审核。我觉得这些大概都是那种“玩”信用卡的人，整天把申请、刷信用卡当成自己的事业了。如果信用记录良好，银行应该不会刁难的。&lt;/p&gt;
&lt;p&gt;账单分期在网银里就可以申请，具体方法在&lt;a href=&#34;http://creditcard.cmbchina.com/financing/billdiy/net.htm&#34;&gt;这个网页&lt;/a&gt;有详细说明。&lt;/p&gt;
&lt;p&gt;申请提交后，马上收到一条短信说网上消费××元，这实际上就是第一期的金额，会出现在下个月的账单里。收到这条短信，应该就说明分期成功了。我没有失败的经验，所以不知道分期失败是什么效果……网上说会告诉你综合评分不够。&lt;/p&gt;
&lt;p&gt;几天之后，短信提醒的这笔金额会出现在网银的“未出账单查询”中，同时有账单分期的手续费（这个没有短信告知），还有招商银行暂时替客户还的款，也就是办理分期的总金额。这时再看“账户查询”里的“本期应还金额”，已经减去了分期的部分。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Flickr Uploadr 与 jUploadr</title>
      <link>https://qingbo-net.pages.dev/archives/273/</link>
      <pubDate>Thu, 20 Nov 2008 04:20:29 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/273/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/tools/uploadr/&#34;&gt;Uploadr&lt;/a&gt;是Flickr自己开发的照片上传工具，但是存在不少问题。这个3.0的版本似乎就不支持文件路径上有中文字符，于是我一直在使用&lt;a href=&#34;http://flickr.com/help/forum/en-us/70149/&#34;&gt;3.1测试版&lt;/a&gt;。3.1支持中文路径，可惜经常崩溃。最初的时候，是每次关闭的时候Windows都会弹出一个对话框说崩溃了。到后来，一批文件经常是上传几张就崩溃掉，要不停地重试才上传完成，很烦。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://juploadr.org/&#34;&gt;jUploadr&lt;/a&gt;是第三方工具，跨平台（Flickr Uploadr只支持Windows和Mac），在&lt;a href=&#34;http://www.flickr.com/tools/&#34;&gt;Flickr工具页&lt;/a&gt;上也有推荐。&lt;/p&gt;
&lt;p&gt;跟Flickr Uploadr比较，jUploadr的操作方式和显示方式稍微有点差异，初用可能不太习惯，但是用多了也可以像Flickr Uploadr一样顺手。最大的优点当然是稳定了，再多的东西点一下Upload就可以扔在那儿不管了，它会一张一张给你传上去，而不会像Flickr Uploadr，过一会去看的时候，发现一个崩溃对话框……&lt;/p&gt;
&lt;p&gt;不过jUploadr有一个比较致命的毛病。假如选中的一批照片有不同的permission，最好不要批量编辑它们，因为即使你在编辑时不修改permission，最后它们也都会变成同样的permission。这一点真是太不应该了，在Flickr Uploadr中是不会发生的。为避免这样的事情发生，可以把permission的设置放在编辑的最后一步。&lt;/p&gt;
&lt;p&gt;稳定是王道，目前还是用jUploadr最好。当然大家都希望Flickr自己做的Uploadr能够更完善一些。&lt;/p&gt;</description>
    </item>
    <item>
      <title>回到北京</title>
      <link>https://qingbo-net.pages.dev/archives/272/</link>
      <pubDate>Wed, 19 Nov 2008 07:14:02 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/272/</guid>
      <description>&lt;p&gt;在安徽待了7天，现在又回到了北京。&lt;/p&gt;
&lt;p&gt;这次的照片基本整理完了：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/sets/72157609345054178/&#34;&gt;宏村&lt;/a&gt; | &lt;a href=&#34;http://www.flickr.com/photos/qingbo/sets/72157609345103650/&#34;&gt;翡翠谷&lt;/a&gt; | &lt;a href=&#34;http://www.flickr.com/photos/qingbo/sets/72157609353527815/&#34;&gt;黄山&lt;/a&gt; | &lt;a href=&#34;http://www.flickr.com/photos/qingbo/sets/72157609416928396/&#34;&gt;合肥&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;一共拍了大概500张照片，整理的时候删了一多半。&lt;/p&gt;
&lt;p&gt;我还得努力争取下一次旅行的时间和钱。&lt;/p&gt;</description>
    </item>
    <item>
      <title>安徽(7-7) 合肥 – 科大东区，归途</title>
      <link>https://qingbo-net.pages.dev/archives/271/</link>
      <pubDate>Sun, 16 Nov 2008 12:16:23 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/271/</guid>
      <description>&lt;p&gt;这是在安徽也是在合肥的最后一天。中午退房后，又去了王仁和米线，因为昨天给了两张代金券。于是两人花10元吃了一顿饱饱的午餐，擦擦嘴就去科大东区参观了。&lt;/p&gt;
&lt;p&gt;如今科大正门的风头已经被高架路给抢去了：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/3040205339/&#34; title=&#34;东区西门 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3204/3040205339_4b5a3bbc29_m.jpg&#34; width=&#34;240&#34; height=&#34;160&#34; alt=&#34;东区西门&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;天屎路已经是淡季，人们可以安全地通过。以下分别是全景和路面细节：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/3040268317/&#34; title=&#34;天屎路 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3223/3040268317_d43659cf22_m.jpg&#34; width=&#34;160&#34; height=&#34;240&#34; alt=&#34;天屎路&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://www.flickr.com/photos/qingbo/3040261921/&#34; title=&#34;天屎路，路面 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3009/3040261921_850206ebfa_m.jpg&#34; width=&#34;240&#34; height=&#34;160&#34; alt=&#34;天屎路，路面&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;校园里转了一圈后，买了几本杂志，去二教“上自习”。老婆说她又找到了上大学的感觉，我却没有，大概是因为我从来不在教室看彩页杂志……&lt;/p&gt;
&lt;p&gt;晚上在教学楼前的“星座”餐厅吃晚餐，然后乘1路车到火车站，踏上归途。&lt;/p&gt;</description>
    </item>
    <item>
      <title>安徽(7-6) 合肥 – 科大西区，八大碗</title>
      <link>https://qingbo-net.pages.dev/archives/270/</link>
      <pubDate>Sat, 15 Nov 2008 12:55:23 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/270/</guid>
      <description>&lt;p&gt;辣糊汤这种东西，我也不知道是不是合肥的特产，反正我是上了大学才发现的，科大食堂里就有。配料应该有淀粉、海带、豆腐丝，少许辣椒，微辣，很开胃。科大人不拘小节，经常把名字弄错：“一碗呼啦汤，三个包子！”到底是辣糊汤，还是胡辣汤？我也搞懵了。&lt;/p&gt;
&lt;p&gt;今天早上就在路边小摊吃的这东西，不过口感不如科大食堂的好。吃完后，就大摇大摆混进了科大西区。科大和科大人都有着与其它大学不同的气质，到了周六，校园里仍然十分安静，学生们有很多待在教室、图书馆里。去芳花园转了一圈，去三教上了个厕所，顺便站在扇形教室的门口张望一番，许多学生在上自习，依旧是以前的那种气氛。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/3040937600/&#34; title=&#34;芳花园 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3250/3040937600_9417230204_m.jpg&#34; width=&#34;240&#34; height=&#34;160&#34; alt=&#34;芳花园&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://www.flickr.com/photos/qingbo/3040926086/&#34; title=&#34;三教 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3011/3040926086_875bda0328_m.jpg&#34; width=&#34;240&#34; height=&#34;160&#34; alt=&#34;三教&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;从西区出来，坐车沿黄山路向东，寻找记忆中的烤羊腿——小肥羊的烤羊腿。不过走到了尽头仍然没有发现——又倒了一个。一边短信hsm帮忙查小肥羊的地址，一边四下搜寻好吃的地方。hsm短信过来的时候，正好在一个十字路口发现了八大碗。在合肥就经常听说，倒还没去过。小肥羊是全国连锁，不过八大碗只有合肥才有，于是就进去了。一个渣茄子，一个龙骨炖玉米，汤很好喝。&lt;/p&gt;
&lt;p&gt;下午就在酒店看电视，休息。&lt;/p&gt;
&lt;p&gt;晚饭去西区门口新开的“王仁和米线”，以前在合肥的时候不记得有。30块一大盆“状元过桥米线”，两个人吃得很饱，这才知道正宗的过桥米线是啥。里面的汤和肥西老母鸡的鸡汤有点像，好喝。&lt;/p&gt;</description>
    </item>
    <item>
      <title>安徽(7-5) 合肥 – 老母鸡，007</title>
      <link>https://qingbo-net.pages.dev/archives/269/</link>
      <pubDate>Fri, 14 Nov 2008 12:36:40 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/269/</guid>
      <description>&lt;p&gt;坐惯了北京的公交车，到了合肥觉得好贵。空调车要两块，而出租车起步价也才六块。&lt;/p&gt;
&lt;p&gt;坐着昂贵的公交车到达步行街，直接走到尽头，找到了日思夜想的肥西老母鸡。这是一家把当地特色小吃用麦当劳肯德基的快餐店模式来经营的连锁店，比较成功。鸡汤相当好喝，我是毕业快走的时候才尝到了这个美味，一直惦记着……这次点了一份鸡汤，一份鸡汤炖豆腐。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/3040047221/&#34; title=&#34;肥西老母鸡 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3241/3040047221_b0ef9d4a4b_m.jpg&#34; width=&#34;240&#34; height=&#34;160&#34; alt=&#34;肥西老母鸡&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://www.flickr.com/photos/qingbo/3040898816/&#34; title=&#34;肥西老母鸡 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3283/3040898816_a8dac7845c_m.jpg&#34; width=&#34;240&#34; height=&#34;160&#34; alt=&#34;肥西老母鸡&#34; /&gt;&lt;/a&gt;&lt;br&gt;
&lt;span id=&#34;more-526&#34;&gt;&lt;/span&gt;&lt;br&gt;
吃饱了，在步行街闲逛，新开了一家电玩城。我这个好孩子，小时候也只是进电子游戏厅参观一下而已，这还是第一次进去消费。最喜欢玩的还是篮球，玩得胳膊都疼了。&lt;/p&gt;
&lt;p&gt;然后到肥西老母鸡的对面——长江剧院去看电影。当年我们也是在吃了肥西老母鸡之后，来电影院看的《ICE AGE II》，那时票价是10元，学生5元。现在涨价了，不过给我们都是学生价，20元。007大破量子危机，效果不错，放映厅名叫“黄山厅”，观众一共只有四个人……&lt;/p&gt;
&lt;p&gt;晚饭在黄山路的“老字号”川徽饭店吃，这也是一家在拆迁风波中屹立不倒的。我就是冲着店里的“红烧蹄膀”来的，肉肥瘦适中，非常松软，当年在科大时，就是必点的菜。&lt;/p&gt;
&lt;p&gt;晚饭之后，路过科大西区门口，看见那里的烧烤店浓烟滚滚。以前这里都是露天的大排档，没有店面的，我们经常在十一二点的时候出来吃烤串，喝酒。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/3040912488/&#34; title=&#34;科大西区东门 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3295/3040912488_7f81f7ef63_m.jpg&#34; width=&#34;240&#34; height=&#34;160&#34; alt=&#34;科大西区东门&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;昨天晚上没注意，今天白天才发现合肥比原来更脏了，空气很差，出去应该戴着口罩，不适宜逛街。这恐怕是城市快速发展中不可避免的？大概科大校园里情况好一点。&lt;/p&gt;</description>
    </item>
    <item>
      <title>安徽(7-4) 重回合肥</title>
      <link>https://qingbo-net.pages.dev/archives/268/</link>
      <pubDate>Thu, 13 Nov 2008 12:17:56 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/268/</guid>
      <description>&lt;p&gt;说实话，我不喜欢合肥。不过这是我上大学的地方，我和老婆初识的时候，也有很多时光在合肥度过，于是在黄山游结束后，我们没有直接回北京，而是去合肥开始了吃喝玩乐加怀旧的几天。&lt;/p&gt;
&lt;p&gt;云海楼事先给订好了大巴的票，下午一点多直接到门口来接。全程高速，到了合肥天基本黑了。大巴的司机非常好说话，给我们在离科大最近的地方停车，取行李。下车后坐出租车到科大西区，路上发现才过了两年，合肥变化太大了，科大东区门前的金寨路上有了高架路，出租车走的路以前都是没有的。到了西区门口，也是司机提醒我才知道的……&lt;/p&gt;
&lt;p&gt;找到事先让hsm同学帮我查的“深港酒店”，原来离东区更近一些，房间物美价廉，放下东西之后直奔黄山路去解决温饱问题。黄山路以前可是美食的天下，可是走过去之后，发现一切都变了，新加了几座高楼，但是由于道路拓宽，沿街的店面拆了一排，许多记忆中的餐馆都不见了。&lt;/p&gt;
&lt;p&gt;惊喜地看到“川人川菜馆”，像是见到了老字号一样亲切，马上就进去坐下了。菜做的不错，就是好像服务员都换了。要两个勺子，服务员给拿过来我正要接，她就直接给放到了桌子上，我当时就一愣，老婆在对面就笑出声来了。出来之后看到门前拆过的痕迹，到底已经不是鼎盛时期的黄山路了……&lt;/p&gt;
&lt;p&gt;饭饱之后慢慢逛街，旧地重游，感触颇多。五彩的灯光，点缀着彩灯的高架路，处处显示着这个城市的快速发展。&lt;/p&gt;</description>
    </item>
    <item>
      <title>安徽(7-3) 黄山-天都峰</title>
      <link>https://qingbo-net.pages.dev/archives/267/</link>
      <pubDate>Wed, 12 Nov 2008 12:11:25 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/267/</guid>
      <description>&lt;p&gt;狮子峰（日出） – 光明顶 – 鳌鱼峰 – 天都峰 – 汤口&lt;/p&gt;
&lt;p&gt;早上五点钟起床，洗漱之后向狮子峰进发，右膝仍在隐隐作痛。爬到猴子观海以为到了狮子峰了，就在那里等着了，后来发现狮子峰是后面更高的一座，很累，懒得上去了。开始的时候一切都好，不过太阳快出来的时候，大块的乌云飘过来，日出看得不怎么爽。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/3038098947/&#34; title=&#34;猴子观海 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3254/3038098947_2ddeaed10c_m.jpg&#34; width=&#34;240&#34; height=&#34;160&#34; alt=&#34;猴子观海&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://www.flickr.com/photos/qingbo/3038083123/&#34; title=&#34;日出 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3135/3038083123_e1d20b8189_m.jpg&#34; width=&#34;240&#34; height=&#34;160&#34; alt=&#34;日出&#34; /&gt;&lt;/a&gt;&lt;br&gt;
&lt;span id=&#34;more-524&#34;&gt;&lt;/span&gt;&lt;br&gt;
然后折返回到北海，往光明顶走去。快到光明顶的时候，在一个断层口吃早餐，看到另一边云雾翻腾。因为右膝的疼痛，从起床后一直到天都峰脚下，路上都在犹豫要不要爬天都峰。吃完早餐爬上光明顶，发现光明顶北侧晴空万里，天非常蓝，而南侧阴云密布，雾气滚滚，能见度大约50米。南侧的雾气被风吹着掠过光明顶，就消散了。运气不好，于是一整天都没看到好景色，一直都是在雾里走，到了绝顶也难领略“一览众山小”的气势。&lt;/p&gt;
&lt;p&gt;鳌鱼峰，一线天，百步云梯，玉屏楼（迎客松），一路平淡无奇。从光明顶下山路上有好几个“一线天”，后来才发现。而迎客松人气最高，似乎是黄山的标志，人山人海的，跟北京站一样，围在那儿排队合影留念。作为一个稍微有一点点品味的人，我显然是飘过了……&lt;/p&gt;
&lt;p&gt;从玉屏楼往下走，雾气稍微消散，很快就看到了天都峰的云梯，直直地挂在那里，直到雾里。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/3039896785/&#34; title=&#34;从北面上天都峰的路 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3225/3039896785_33d8be51c5.jpg&#34; width=&#34;333&#34; height=&#34;500&#34; alt=&#34;从北面上天都峰的路&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这时倒感觉右膝没那么疼了，于是决定爬上去。快到谷底的时候，遇见了几个挑夫师傅，挑着大约100斤的东西往山上走。有个师傅跟我们要手套，说手都冻僵了，我们就马上把手套给了他。剩下的一副手套，一人戴一只。在谷底休整片刻，就开始爬那个天梯。&lt;/p&gt;
&lt;p&gt;远处看着挺恐怖的，实际上阶梯总是至少有一边有粗大的尼龙绳索，抓着它往上爬，没什么危险，心里也很踏实，腿也省点力气，并且每隔一段路就有一个小平台供人休息。走这样的直路其实是最省事的，海拔上升很快。云海楼的人说，爬天都峰是三分体力七分毅力，讲得有点恐怖。实际上我们在体力不充沛的情况下，歇了四五次，大概不到一小时就上去了，感觉几乎一点都不消耗体力，比起西海大峡谷简直太小菜一碟了。&lt;/p&gt;
&lt;p&gt;由于雾大，从峰顶向下也看不到什么。在峰顶吃了午饭，就向山下去了，这才是今天行程中最累的部分，大概四五个小时的步行，没有什么风景，只有险路可以提神。中间有一个岔路，不小心脱离了组织，旁边是万丈悬崖，台阶很窄很陡峭，手机也没了信号，前后看不见人，真的很恐怖，幸好几分钟之后，又会合在一起了。&lt;/p&gt;
&lt;p&gt;就这样终于到了山下，我们一行正好四个人，马上就有新国线的一辆小车载着开到云海楼。昨天上山之前，云海楼免费提供登山杖的，结果第一天大峡谷我们就没带，今天想带结果忘了……&lt;/p&gt;</description>
    </item>
    <item>
      <title>安徽(7-2) 黄山-西海大峡谷</title>
      <link>https://qingbo-net.pages.dev/archives/266/</link>
      <pubDate>Tue, 11 Nov 2008 14:39:21 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/266/</guid>
      <description>&lt;p&gt;云古寺索道 – 西海 – 西海大峡谷 – 天海 – 光明顶 – 飞来石（日落） – 西海休息&lt;/p&gt;
&lt;p&gt;早上5:40起床，在云海楼吃早餐。想到两天吃不到好饭，就吃得特别多。吃饭的时候，新国线的司机师傅就在旁边等了，一吃完就凑够四个人乘车走了，这次旅程在云海楼的帮助下一直都是这么方便。车子沿着盘山公路一直往上爬，路是刚修好的，非常平稳。到了高处，往车外望去，云已经在下面了，真想让司机停下出去看看，后来证实完全没这个必要。&lt;/p&gt;
&lt;p&gt;到了云古寺索道站，把门票和索道票一起买了。两个半小时的步行，据说没什么风景，还是坐索道上去的好，只要8分钟。在索道上，看见前面山峰就以为到了，但是到了那里才发现前面有更高的峰。就这样仿佛上了几个台阶，回头看时，太阳已经出来，光芒四射，然后就看到了云海，下了缆车赶紧拍照。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/3037461913/&#34; title=&#34;朝阳中的奇石 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3205/3037461913_73e563a3d4_m.jpg&#34; width=&#34;240&#34; height=&#34;160&#34; alt=&#34;朝阳中的奇石&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://www.flickr.com/photos/qingbo/3038313240/&#34; title=&#34;云海 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3187/3038313240_92b77d5b9c_m.jpg&#34; width=&#34;240&#34; height=&#34;160&#34; alt=&#34;云海&#34; /&gt;&lt;/a&gt;&lt;br&gt;
&lt;span id=&#34;more-523&#34;&gt;&lt;/span&gt;&lt;br&gt;
看到美景非常兴奋，顿时对两天的辛苦旅程充满了信心。到始信峰看了看，直奔西海，拿到房卡放下大部分食物，只带了中午饭和一壶1L的水往西海大峡谷而去。西海大峡谷是新开发的路线，据说门票80%的价值在此处。但是旅游团是从来不会带游客到这里来的，因为太耗费体力。我们的路线是从排云亭到谷底，然后从另一边上到天海。&lt;/p&gt;
&lt;p&gt;下到谷底的路不怎么费力，但下山一般会比较小心。这段路也有一些悬空的栈道，虽然让人胆战心惊，但不是太多。向谷底看，奇石、奇峰像利刃一样立在那里，而顺路走下去，过一会就仰着头看这些“利刃”了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/3037663041/&#34; title=&#34;险道！ by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3206/3037663041_53982e2d82_m.jpg&#34; width=&#34;240&#34; height=&#34;160&#34; alt=&#34;险道！&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://www.flickr.com/photos/qingbo/3037608669/&#34; title=&#34;奇石林立 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3072/3037608669_215e734646_m.jpg&#34; width=&#34;240&#34; height=&#34;160&#34; alt=&#34;奇石林立&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;谷底没什么好看的，只是有工人在修新的路，似乎要有一个新的大门直接到谷底，这样会有更多的游客到西海大峡谷。休息片刻之后，开始爬山的路——往天海走。最初的一段没有什么景色，就是往上爬，很累很无聊，这时才发现能够轻松走下来的一段台阶，上去的时候竟要歇几次，感觉有点绝望，照这样什么时候才能回去？下面这张图片是在路上看对面山上的栈道，下谷底的路：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/3038571850/&#34; title=&#34;回望来时路 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3245/3038571850_5e3d640601.jpg&#34; width=&#34;500&#34; height=&#34;333&#34; alt=&#34;回望来时路&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;无聊中爬到绝望的时候，穿过一个山洞，峰回路转，看到了起伏的栈道。总算不用一直向上爬了，松了一口气。轻松走到下一个山洞，穿过之后，景象真让人兴奋。这两张分别是栈道两端拍的：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/3038643900/&#34; title=&#34;绝壁栈道 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3042/3038643900_486ebcdd46_m.jpg&#34; width=&#34;240&#34; height=&#34;160&#34; alt=&#34;绝壁栈道&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://www.flickr.com/photos/qingbo/3037848733/&#34; title=&#34;绝壁栈道 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3029/3037848733_011d6fd2a2_m.jpg&#34; width=&#34;160&#34; height=&#34;240&#34; alt=&#34;绝壁栈道&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;走完后又过一个山洞，依旧险峻，然后到达一处平台。这里可能是大峡谷开发之前游客止步折返的地方，稍微宽阔，有石桌石凳，我们就在这里吃了午饭。和我们反方向走的人先在平台上观察一下这段又陡又悬空的栈道，已经眼晕了。一个哥们扶着峭壁和我们说腿发软。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/3037901233/&#34; title=&#34;心悸 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3048/3037901233_7bb38cd878.jpg&#34; width=&#34;333&#34; height=&#34;500&#34; alt=&#34;心悸&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;从这个平台往上继续爬，不远就到步仙桥，这就离天海不远了。9点钟左右从西海出发，到这里大约一点多，时间太充裕了，不过体力下降比较严重，尽管穿着护膝，右膝还是开始疼了。可能是由于最初下谷底的时候用力太猛了，所以不管有力没力，一定要匀着走。&lt;/p&gt;
&lt;p&gt;一路向上，走一会，歇一会，到天海，再到光明顶。在光明顶四处转了转，就去了飞来石，三点多就到了，而日落是五点多，干等了两个小时。日落很美，我坐在飞来石那个平台上拍照，风越来越冷，日落还没结束人都快走光了。后来我的手也冻僵按不下快门了……&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/3038042999/&#34; title=&#34;日落 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3200/3038042999_11331fe226_m.jpg&#34; width=&#34;240&#34; height=&#34;160&#34; alt=&#34;日落&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>安徽(7-1) 宏村，翡翠谷</title>
      <link>https://qingbo-net.pages.dev/archives/265/</link>
      <pubDate>Mon, 10 Nov 2008 13:37:25 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/265/</guid>
      <description>&lt;p&gt;早上在火车上很早就醒来，看着太阳升起来，K45竟然提前到站，这在我坐火车的历史上还是第一次。出站后马上看见了写有我名字的牌子，于是跟着那人走向一辆中巴，带路的过程中顺路推销她的商品——雨衣、手套等。我们以为是司机家或者云海楼的就买了，后来发现是云海楼让司机接我们，而司机又懒，把牌子让卖东西的人举着，他们可以顺便推销东西，各有其得。不过东西虽然贵了一点，还不是很黑，司机也好，商贩也好，服务态度都很好。这些东西，在云海楼都可以买到，而且价格很实在。&lt;/p&gt;
&lt;p&gt;坐中巴约一小时后到达云海楼，才发现这么出名的店竟然不是临街的店面。诚信为本，做到这么成功也不为过。进去以后，交一夜房费加上山上的房费就领了钥匙把东西放进去了，不需要押金。匆忙洗漱一下，在楼下喝了一碗粥，就出去搭车了——今天的行程是跟人拼车去&lt;strong&gt;宏村和翡翠谷&lt;/strong&gt;，一切都是店里伙计安排好了的，带好东西就行了，不用操心太多。&lt;br&gt;
&lt;span id=&#34;more-522&#34;&gt;&lt;/span&gt;&lt;br&gt;
宏村是个不错的地方，门票80还算比较值。村口的南湖上的石桥，在《卧虎藏龙》里出现过，周润发牵着白马就是从这里走过去的。而村子中间的月沼，是那个安徽民居的取景地。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/3038005264/&#34; title=&#34;宏村村口 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3276/3038005264_4fe8d78032_m.jpg&#34; width=&#34;240&#34; height=&#34;160&#34; alt=&#34;宏村村口&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://www.flickr.com/photos/qingbo/3037538660/&#34; title=&#34;宏村 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3187/3037538660_f1d24140f5_m.jpg&#34; width=&#34;240&#34; height=&#34;160&#34; alt=&#34;宏村&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;宏村有很多学美术的学生写生，大多是学校组织去的，据说30元一天包吃住。村里有许多村民开设的旅店，价格一般是50一天。在村里逛了两圈，跟着导游看贫农、地主家的房子，都很有趣，看着许多精美的木雕因为老毛毁掉，心里真有点恨恨的。将来有时间的话，在这里住一段时间也不错，就是旅游开发得太严重了，住上几天恐怕就被来往的游人和叫卖的小贩给烦死了。&lt;/p&gt;
&lt;p&gt;从宏村出来，往翡翠谷进发。这两个地方在汤口的两个方向，宏村离汤口大概40分钟路程，而翡翠谷则非常近，只是要沿盘山公路下降不少海拔。宏村到汤口的路上，还有塔川、竹海等景点，我们都没去。&lt;/p&gt;
&lt;p&gt;翡翠谷只是一条沿溪而上的小山谷，只有几个小瀑布稍微有点景色，因为很久以前的故事又有“情人谷”之称。现如今情人谷到处都是，还不如叫翡翠谷，免了那个俗气。可能在未开发前还有点探险的味道，而现在路修得平平整整，倒是一点意思都没有。门票50，&lt;strong&gt;非常不推荐&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;回到云海楼，洗澡，吃饭，然后就坐在那儿听“老师”讲课。每人发一张地图，老师对不同的人指导不同的路线，带多少食物，非常详细，地图上把各段路程大约花费的时间都标出来了，事后证明是相当准确的。&lt;/p&gt;
&lt;p&gt;店内就有山上用品卖，不过店里没人要求在这里买东西。大部分人懒得出去，就在这里买了，价格应该是很厚道的。我在北京买了一对护膝，讲了讲价才15拿下，在那里要价是10块……&lt;/p&gt;
&lt;p&gt;我们要在山上住一夜，带的食物是：压缩饼干两包，火腿肠四根，泡面两个，小面包一包，牛肉干一包，巧克力一小堆。&lt;/p&gt;</description>
    </item>
    <item>
      <title>已婚</title>
      <link>https://qingbo-net.pages.dev/archives/264/</link>
      <pubDate>Tue, 04 Nov 2008 08:37:03 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/264/</guid>
      <description>&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;p&gt;9块钱的工本费，包括复印证件，挺值的 🙂&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/3002340308/&#34; title=&#34;结婚证 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3221/3002340308_4d7cab9994_m.jpg&#34; width=&#34;240&#34; height=&#34;160&#34; alt=&#34;结婚证&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>在Blip.fm主导航添加Upload链接</title>
      <link>https://qingbo-net.pages.dev/archives/263/</link>
      <pubDate>Mon, 03 Nov 2008 13:10:25 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/263/</guid>
      <description>&lt;p&gt;这互联网的发展真是日新月异，我一直都跟不上时代。&lt;a href=&#34;http://hexy.cc/&#34;&gt;Hexy&lt;/a&gt;好多次跟我提到&lt;a href=&#34;http://blip.fm/&#34;&gt;Blip.fm&lt;/a&gt;，我这个守旧的人从来没仔细玩过——关键是我也不喜欢音乐。&lt;/p&gt;
&lt;p&gt;今天该互联网著名女博客让我帮她写一个Greasemonkey脚本，把&lt;a href=&#34;http://blip.fm/settings/upload&#34;&gt;上传的链接&lt;/a&gt;添加到Blip.fm每个页面右上角的导航栏里。效果如下：&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://qingbo.org/wp-content/uploads/2008/11/blip-upload.png&#34; alt=&#34;&#34; title=&#34;blip-upload&#34; width=&#34;313&#34; height=&#34;34&#34; class=&#34;alignnone size-full wp-image-520&#34; /&gt; 
&lt;p&gt;脚本在：&lt;a href=&#34;http://userscripts.org/scripts/show/36473&#34;&gt;http://userscripts.org/scripts/show/36473&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hexy算的时间是15分钟，工作交付后，得到了一大堆溢美之辞，于是怀着激动的心情写下这篇文章以作纪念。其实，就那么几行代码。&lt;/p&gt;
&lt;p&gt;名人的号召力就是不一样，很快就有用户在那里开始留言了……&lt;/p&gt;</description>
    </item>
    <item>
      <title>Adobe Bridge 取消reject</title>
      <link>https://qingbo-net.pages.dev/archives/262/</link>
      <pubDate>Sat, 01 Nov 2008 11:53:40 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/262/</guid>
      <description>&lt;p&gt;Scott Kelby的《Photoshop CS3 数码照片专业处理技法》一书中，讲到删除、“拒绝(reject，翻译成这个)”照片的时候，并没有说如何取消reject状态。我在帮助中查”cancel reject”无果，又在网上搜索了好久也没找到问题的答案。&lt;/p&gt;
&lt;p&gt;选中某照片，按下Delete键的时候，会弹出对话框让你选择reject。reject比较有用。标记为reject的照片在硬盘上没有被删除，不过View菜单中有选项可以隐藏reject掉的照片。也可以通过filter仅查看reject的照片。&lt;/p&gt;
&lt;p&gt;那如果后悔了怎么办呢？折腾了半天，终于发现reject是一种rating… 在preview面板，照片下面默认有五个小点（或者是小星号，看不太清楚），这个状态是”no rating”。星级可以从1到5，reject可能是-1? 呵呵。&lt;/p&gt;
&lt;p&gt;在Preview图上点击右键，菜单最上面一组就是管理rating的，只要选择No Rating，reject状态就取消了。&lt;/p&gt;
&lt;p&gt;用了一会，发现bridge确实是很专业的照片管理工具。举个例子，以前几张同样场景的照片，只能来回翻看来选择最好的一张，而Bridge中就提供了比较照片的功能，两张甚至多张照片可以一起出现在preview面板中，非常方便。另外，根据ISO、曝光时间、光圈大小、焦距等属性过滤，似乎也是其它软件缺少的功能。&lt;/p&gt;</description>
    </item>
    <item>
      <title>hypo, 印刷照片</title>
      <link>https://qingbo-net.pages.dev/archives/261/</link>
      <pubDate>Thu, 30 Oct 2008 12:46:31 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/261/</guid>
      <description>&lt;p&gt;前几天买的SD卡今天送到，打开封装，塑料盒内有一个标签，写道“内有惊喜”。打开塑料盒，发现两张小广告：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/2986701594/&#34; title=&#34;hypo.cc (by qingbo)&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3049/2986701594_cc46fe3efd_m.jpg&#34; title=&#34;hypo.cc (by qingbo)&#34; alt=&#34;hypo.cc (by qingbo)&#34; width=&#34;240&#34; height=&#34;160&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://www.flickr.com/photos/qingbo/2986705988/&#34; title=&#34;hypo.cc (by qingbo)&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3014/2986705988_f43f536da6_m.jpg&#34; title=&#34;hypo.cc (by qingbo)&#34; alt=&#34;hypo.cc (by qingbo)&#34; width=&#34;240&#34; height=&#34;160&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;于是就上&lt;a href=&#34;http://hypo.cc/&#34;&gt;hypo.cc&lt;/a&gt;去看，这是一个专门把照片印刷成书的在线服务。注意是印刷，不是冲洗。似乎在大一点的照相馆也见过类似的服务，不过不知道那些排版能不能自己DIY，文字呢？这个可是能够让你自己选择排版方式，并且加上自己的文字的。足不出户，几天之后，就可以拿到一本精美的书，作者是自己。&lt;/p&gt;
&lt;p&gt;更重要的，它可以抓取flickr的照片过来。记得我在惠普的咔嚓鱼&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post346.html&#34;&gt;冲印&lt;/a&gt;的时候，选好照片，一张一张传，好不痛苦！而且咔嚓鱼上传很慢的。我没有试，不知道hypo会不会也很慢。我已经在flickr上传过了，何必重新上传呢？可以直接抓取flickr图片，实在太方便了。&lt;/p&gt;
&lt;p&gt;这是一家台湾的公司，似乎在上海有分部，不过简体的网站还不甚完善，比如简体版就没有提供flickr抓取的功能。我不知道可不可以在繁体版上面制作——会不会由台湾那边的人制作，然后飘洋过海过来呢？嗯，等我真想要的时候，我得问问。&lt;/p&gt;
&lt;p&gt;hypo的宣传也很有针对性。在注册页面有一个选择如何得知hypo的，里面的选项就有Mobile01这样的摄影爱好者聚居地。而我是从创见的SD卡中得知的，创见是台湾的品牌，另外他们知道买SD卡的，多半是拍照片用。&lt;/p&gt;
&lt;p&gt;一本书的价格是110大洋，挺贵的吧？打了折扣，加上运费，还是得100. 别人告诉我国内已经有了一个叫&lt;a href=&#34;http://www.inker.com.cn/&#34;&gt;印客网&lt;/a&gt;的，业务范围更广，不知道质量怎么样。&lt;/p&gt;
&lt;p&gt;在国外，已经有许多成熟的个人出版服务，比如&lt;a href=&#34;http://www.blurb.com/&#34;&gt;blurb&lt;/a&gt;，&lt;a href=&#34;http://www.lulu.com/&#34;&gt;lulu&lt;/a&gt;，他们有更成功的商业模式，用户可以零风险地把作品（不仅是摄影，小说也可以）卖出去。而blurb就是flickr的&lt;a href=&#34;http://www.flickr.com/do/more/&#34;&gt;合作伙伴&lt;/a&gt;之一。&lt;/p&gt;
&lt;p&gt;等我有了值得印刷成书的东西，我也去尝试一下这些服务。&lt;/p&gt;</description>
    </item>
    <item>
      <title>MP3Timer – 定时提醒</title>
      <link>https://qingbo-net.pages.dev/archives/260/</link>
      <pubDate>Wed, 29 Oct 2008 12:25:50 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/260/</guid>
      <description>&lt;p&gt;最近有好几次煲粥的时候来上网，结果忘记了还在煲粥，等到想起来的时候，厨房里已经是一屋子白烟了。&lt;/p&gt;
&lt;p&gt;于是下定决心要找一个定时提醒的软件，结果自己在网上搜了好久都没有找到一个合适的，大部分都是闹钟类型的，比如每天什么时候响一下。而我需要的功能很简单，启动后，可以设定隔五分钟响一次就可以了，不需要其它任何功能。&lt;/p&gt;
&lt;p&gt;刚刚有人推荐给我一个小软件叫&lt;a href=&#34;http://www.mp3timer.com/en/index.html&#34;&gt;MP3Timer&lt;/a&gt;。选择一个mp3文件，再设定一个时间，比如五分钟，它就开始倒计时，倒计时结束就播放那个mp3.&lt;/p&gt;
&lt;p&gt;它并不完全符合我的需求，但是对我来说已经不错了。mp3开始播放的时候我就可以一边听歌一边去厨房，回来之后再点一下“+5”那个按钮，它又重新倒计时了。&lt;/p&gt;
&lt;p&gt;自从消化道得了一次病，我就开始注意起饮食了，每天早上起来都喝粥。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gmail 英明神武</title>
      <link>https://qingbo-net.pages.dev/archives/259/</link>
      <pubDate>Tue, 28 Oct 2008 14:23:13 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/259/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.rememberthemilk.com/&#34;&gt;Remember The Milk&lt;/a&gt;有个&lt;a href=&#34;http://www.rememberthemilk.com/services/gmail/&#34;&gt;Firefox扩展&lt;/a&gt;，安装后打开Gmail，就会在右侧显示RTM上的日程。后来不用RTM了，我就想能不能把Gtalk那一块放在右侧呢？由于屏幕高度的限制，Gtalk被压在inbox/spam之类的下面，显示不了多少联系人(Options-&amp;gt;Size of chat list)。&lt;/p&gt;
&lt;p&gt;为解决这个问题我一直在找GreaseMonkey的脚本，没有特别合适的。知道今天，在RWW上一篇文章得知Gmail Labs里有了一个Google Calendar的gadget，我才发现，原来labs里不全都是experimental的废物，我想要的功能就在那里：”Right-side chat”。&lt;/p&gt;
&lt;p&gt;现在一共启用了三个labs feature：”Right-side chat”, “Right-side labels”, “Google Calendar gadget”。Google Calendar gadget在左侧显示了一个agenda，还可以方便地添加event。options里还可以设置”Show mini calendar”，虽然可以方便地查看某日的日程，不过如果屏幕不大的话，会把日程表挤到不可见区域。&lt;/p&gt;
&lt;p&gt;Gtalk放在右侧，更符合我把IM软件窗口拖到桌面右侧的习惯，而且，web版的gtalk，做得真是太完美了，把web的能力发挥到了极致。&lt;/p&gt;
&lt;p&gt;现在只要开着电脑，Gmail页面一定是打开的。不需要邮件提醒工具，我会时不时切换到Gmail看看有没有新邮件，聊聊天，看看日程……嗯，Gmail 英明神武！&lt;/p&gt;</description>
    </item>
    <item>
      <title>惠普笔记本读卡器支持4G SD卡</title>
      <link>https://qingbo-net.pages.dev/archives/258/</link>
      <pubDate>Sat, 25 Oct 2008 07:11:06 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/258/</guid>
      <description>&lt;p&gt;今天往读卡器里插了一个4G的SD卡，竟然什么反应都没有。于是上网搜了一下，发现HP在2006年7月31日发布了读卡器的驱动更新&lt;a href=&#34;http://h50176.www5.hp.com/support/EJ362AV/more_info_soar_ob-42454-1.html&#34;&gt;2.0.0.6 A&lt;/a&gt;，更新的内容就是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;提供一个新驱动支持 4-GB Secure Digital (SD) high-capacity media。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;而最新的版本是&lt;a href=&#34;http://h50176.www5.hp.com/support/EJ362AV/more_info_soar_ob-58364-1.html&#34;&gt;2.0.0.7 B (2008/02/22)&lt;/a&gt;，“修正了蓝屏……”，真恐怖，不知道为什么有了新的，HP还是把一堆旧的驱动放在列表里供人下载。&lt;/p&gt;
&lt;p&gt;上面的链接是针对nx6320这个型号的。HP的网站做得还算可以，能够比较快地找到自己的型号的驱动。&lt;/p&gt;
&lt;p&gt;安装完毕，哎呀，可以读了哎！哈哈&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google Calendar的todo list何时出来？</title>
      <link>https://qingbo-net.pages.dev/archives/257/</link>
      <pubDate>Sun, 12 Oct 2008 05:30:43 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/257/</guid>
      <description>&lt;p&gt;todo list或者叫task list，Google Calendar一直没有这个功能。一个task跟Calendar的一个event有些区别，有时我就是想起一件什么事要做，不过并不给它安排一个固定的时间，只要放在一个列表中，啥时候做完了，像辛普森一家里的Homer一样，check. Yahoo!刚刚推出的新版calendar就提供了这个功能。&lt;/p&gt;
&lt;p&gt;早在两年半以前，有人(ZDNet)就分析了Google Calendar的代码，&lt;a href=&#34;http://blogs.zdnet.com/Google/?p=170&#34;&gt;欣喜地宣告&lt;/a&gt;Google已经预留了task list的接口，只是暂时没有实现。&lt;/p&gt;
&lt;p&gt;事实上，早已有众多用户在&lt;a href=&#34;http://groups.google.com/group/google-calendar-help-misc/&#34;&gt;Google Calendar帮助论坛&lt;/a&gt;里请求加上task list这样的功能。而Google官方在2007年10月13日做了&lt;a href=&#34;http://groups.google.com/group/google-calendar-help-misc/browse_thread/thread/c2d8efbfa6bf68bf/feca7c1f78dd8325#6edd11d98c8cc0ac&#34;&gt;如下的答复&lt;/a&gt;：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hey everyone – thanks for the loud and very clear feedback on your&lt;br&gt;
desire for a to-do/task list feature. We’re pretty passionate about to-&lt;br&gt;
do lists here as well, and we’ve got something in the works. Of&lt;br&gt;
course, we’re working to add our special Google secret sauce to the to-&lt;br&gt;
do lists space (which can take some time to get right,) so we don’t&lt;br&gt;
have something to announce just yet, but the entire team is listening&lt;br&gt;
to these threads closely.&lt;/p&gt;</description>
    </item>
    <item>
      <title>根据EXIF日期信息整理照片</title>
      <link>https://qingbo-net.pages.dev/archives/256/</link>
      <pubDate>Sun, 28 Sep 2008 14:47:05 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/256/</guid>
      <description>&lt;p&gt;一般相机拍下来的照片都是JPEG格式，文件头部有一块专门用来存储&lt;a href=&#34;http://en.wikipedia.org/wiki/Exchangeable_image_file_format&#34;&gt;EXIF&lt;/a&gt;信息，包括光圈、快门、焦距等，还有拍摄照片时的日期。&lt;/p&gt;
&lt;p&gt;用ruby写一个这样的程序非常简单：&lt;/p&gt;
&lt;p&gt;`&lt;/p&gt;&lt;/p&gt;
&lt;pre&gt;require &#39;exifr&#39;
require &#39;ftools&#39;

unorganized_dir = &#39;e:\\flickr-photo\\unorganized\\&#39;
root_dir = &#39;e:\\flickr-photo\\&#39;
Dir.chdir(unorganized_dir)
Dir.glob(&#39;*.jpg&#39;) { |filename|
	exif_info = EXIFR::JPEG.new(filename)
	date_time = exif_info.date_time
	unless date_time.nil?
		target_dir = File.join(root_dir, date_time.year.to_s, &#34;%02d&#34; % date_time.month)
		File.makedirs(target_dir)
		File.move(filename, target_dir)
	end
}&lt;/pre&gt;
&lt;p&gt;`
&lt;p&gt;我在E盘的flickr-photo目录下存放组织有序的照片，第一层子目录是年，2006，2007，2008……第二层子目录是月，01，02，03……把未组织的照片放在unorganized目录里，在命令行里执行ruby organize.rb，就把这些照片各自移动到合适的月份目录下了，不存在的目录会自动创建。&lt;/p&gt;
&lt;p&gt;当然你需要修改这个程序，把unorganized_dir和root_dir设置成你自己的目录。另外需要先执行gem install exifr命令来安装exifr这个library.&lt;/p&gt;
&lt;p&gt;也有个别的照片（或者图片）是没有携带exif信息的，程序不会对它们进行处理，执行完后，这些照片留在原地不动。我把它们移动到一个叫”no-exif”的文件夹中。&lt;/p&gt;
&lt;p&gt;差点忘记，首先，请把你的相机时间设置正确！ 🙂&lt;/p&gt;
&lt;p&gt;这是我的第一个ruby程序……虽然简单，但很实用，帮我把从flickr备份回来的图片分好了目录。&lt;/p&gt;</description>
    </item>
    <item>
      <title>收到了咔嚓鱼冲洗的照片</title>
      <link>https://qingbo-net.pages.dev/archives/255/</link>
      <pubDate>Sat, 27 Sep 2008 13:52:01 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/255/</guid>
      <description>&lt;p&gt;惠普的&lt;a href=&#34;http://www.kachayu.com/&#34;&gt;咔嚓鱼&lt;/a&gt;，注册就送10张免费冲洗（现在是10张，据说以前是20张，甚至有的账户有源源不断的免费）。16号选了10张照片上传到账户里，让它给冲洗&lt;br&gt;
，前天（25号）终于拿到手了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/2892375338/&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;咔嚓鱼 (by qingbo)&#34; src=&#34;http://farm4.static.flickr.com/3295/2892375338_33c8c6bcf8.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;当然不是一分钱不花，快递要了7.9元。咔嚓鱼没有自己的物流，它是委托快递公司给送货的。冲洗似乎是在上海，速度这么慢大概是因为这个原因。&lt;/p&gt;
&lt;p&gt;冲洗的质量还不错，相纸可以选择光面还是磨砂，不过感觉相纸比较薄(改天跟楼下的冲印店比较一下)，毕竟这是6毛一张的东西。其实我更希望多花几毛钱换成质量更好的相&lt;br&gt;
纸。包装方面，有一块硬纸板防止折叠。&lt;/p&gt;
&lt;p&gt;咔嚓鱼是舶来品。惠普最初收购了国外的&lt;a href=&#34;http://www.snapfish.com/&#34;&gt;snapfish&lt;/a&gt;，开始发展在线冲印。在咔嚓鱼的页面最下方选择United States，就会跳转到snapfi&lt;br&gt;
sh的网站。但是现在咔嚓鱼的本地化工作做得并不是太好，有的地方还有错别字，比如上传照片用的客户端写成“咔嚓鱼上传&lt;strong&gt;销&lt;/strong&gt;精灵”，显然是输入法把把“传销”作&lt;br&gt;
为一个词了。&lt;/p&gt;
&lt;p&gt;说到上传，我使用北京网通的网络上传极慢，在网页上由于受到HTTP连接时间的限制，上传多个照片的时候经常失败，所以还是建议使用客户端上传。&lt;/p&gt;
&lt;p&gt;不过，如果我冲洗少量的照片，肯定会到楼下的冲印店直接去冲了，最迟第二天就可以拿回来，而不必花8块运费，等上10天再拿到照片。&lt;/p&gt;
&lt;p&gt;在线冲印，需要更优质的产品，更快速的物流。&lt;/p&gt;</description>
    </item>
    <item>
      <title>用FlickrDown下载flickr上的照片</title>
      <link>https://qingbo-net.pages.dev/archives/254/</link>
      <pubDate>Sun, 21 Sep 2008 07:44:31 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/254/</guid>
      <description>&lt;p&gt;决定把flickr上的照片下载回来备份一下，于是花了不少时间在网上找下载工具。&lt;/p&gt;
&lt;p&gt;不少人推荐&lt;a href=&#34;http://sunkencity.org/flickredit&#34;&gt;flickredit&lt;/a&gt;，不过我试了好多次，下载不了几张照片就出错，换了它的前身似乎叫flickrbackup也是一样。看起来很强大，实际上不能用，真是可惜。&lt;/p&gt;
&lt;p&gt;试了好多个，最后还是&lt;a href=&#34;http://www.greggman.com/pages/flickrdown.htm&#34;&gt;FlickrDown&lt;/a&gt;解决了我的问题。它主页上的图片已经old了，新版本加入了authentication，这样我们就可以下载自己账户中带有权限的照片了。当然也可以下载朋友账户中部分加有权限的照片，不过我没兴趣给别人的照片作备份，如果喜欢加到flickr的favourite里就可以了。&lt;/p&gt;
&lt;p&gt;默认配置下，FlickrDown仅下载最近的500张照片。目前我有700多张照片，后来才发现可以把这个值调大一点。&lt;/p&gt;
&lt;p&gt;FlickrDown也有个缺点，缓存似乎不会刷新，尤其是当你新建了一个set的时候，不管怎么办，它显示的还是第一次去下来的set列表。我本来想新建一个set把500张之后的照片放进去，一起下载回来，后来发现了这一点，很是郁闷。研究了半天也不知道它的缓存放在什么地方。FlickrDown首页上也有用户提出这个问题，但是没人给出解决办法。&lt;/p&gt;
&lt;p&gt;除此之外，FlickrDown是相当稳定的，非常推荐。&lt;/p&gt;
&lt;p&gt;P.S. 个篱&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post342.html#comment-65028&#34;&gt;留言说&lt;/a&gt;Flickr Pro是无底洞，实际上并不是这样。可以说Flickr的策略是最宽容的，即使你没有pro account，它一样为你保存了原始文件，一样不限制空间使用总量和浏览流量，只是你的photostream只能显示最新的200张照片（对200张之前的照片的外链完全不受影响），并且不能获得原始文件。一旦购买了pro，这些限制完全解除（包括每月上传限制等），什么都没有损失。假如我明年不想用它了，我的照片也不会有任何损失，只是有些功能加了限制，可以随时买一次pro，把照片搬出去。&lt;/p&gt;</description>
    </item>
    <item>
      <title>自己做个花生壳（动态IP解析）</title>
      <link>https://qingbo-net.pages.dev/archives/253/</link>
      <pubDate>Sun, 21 Sep 2008 05:08:38 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/253/</guid>
      <description>&lt;p&gt;花生壳动态域名解析曾经风靡一时，把域名指向某台随时改变IP的机器。我从来没用过花生壳，不过大致也明白它的基本道理，自己也时常遇到需要访问某动态IP机器的问题，其实可以用很简单的方式来实现类似的功能。&lt;/p&gt;
&lt;p&gt;现在有许多专门做查询IP的网站，一个基本功能就是你一上去马上就可以看到自己的IP. 嗯，一般情况下你访问网站时对方就会获知你的IP地址。&lt;/p&gt;
&lt;p&gt;实现这个功能，只要在外网有一个固定IP的服务器（或者共享空间）就可以了。比如说，我的网站有个子目录叫”ip”. 第一步，我想在访问http://qingbo.org/ip/的时候，显示出我家计算机的IP地址。&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;在ip子目录里放一个ip.php文件，内容如下：
`&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/blockquote&gt;
&lt;pre&gt;
&lt;?php
        $file = fopen(&#34;index.html&#34;,&#39;w&#39;);
        fwrite($file, $_SERVER[&#34;REMOTE_ADDR&#34;]);
        fclose($file);
?&gt;
&lt;/pre&gt;
&lt;p&gt;`
&gt; 
&gt;   2. 在家里的计算机上访问http://qingbo.org/ip/ip.php
&gt;   3. 不论我在哪里，打开地址&amp;#8221;http://qingbo.org/ip/&amp;#8221;都可以看到家里的IP了。因为访问ip.php的时候，它把IP写入了index.html文件。
&lt;p&gt;这样有几个问题存在。首先，家里用的是ADSL(其它的网络提供商大部分也都如此)，IP地址是不定期变化的，总不能家里老是放个人不停上网吧 🙂 其次，如果别人在别的地方访问ip.php，这不是捣乱吗？这个捣蛋鬼的IP会被记录下来，而家里的IP则不见了。最后，我们想访问http://qingbo.org/ip/的时候，直接转到家里的服务器去浏览网页（这是一台不太正规的web server）。&lt;/p&gt;
&lt;p&gt;第一个可以用cron来解决，让它定期自动执行。执行命令”crontab -e”，然后加入这一行：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;0 * * * * wget -q -O /dev/null &lt;a href=&#34;http://qingbo.org/ip/ip.php&#34;&gt;http://qingbo.org/ip/ip.php&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Windows应该可以用计划任务，不过我没有试过。&lt;/p&gt;
&lt;p&gt;第二个，应该加个认证码（相当于密码）。只要在ip.php里记录IP的时候加一个判断：&lt;/p&gt;
&lt;p&gt;`&lt;/p&gt;&lt;/p&gt;
&lt;pre&gt;
if ($_POST[&#34;code&#34;] === &#34;strongauthenticationcode&#34;) {
   ...
}
?&gt;
&lt;/pre&gt;
&lt;p&gt;`
&lt;p&gt;这样，只有提供了正确的认证码，IP才会被记录下来，防止别人瞎捣乱。（&lt;strong&gt;这是cron task的最终版本&lt;/strong&gt;）&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;0 * * * * wget -q -O /dev/null –post-data ‘code=strongauthenticationcode’ &lt;a href=&#34;http://qingbo.org/ip/ip.php&#34;&gt;http://qingbo.org/ip/ip.php&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;第三个问题，只要把写入index.html的内容改一下，让它作&lt;a href=&#34;http://www.webworkshop.net/auto-redirecting_methods.html&#34;&gt;自动转向&lt;/a&gt;就可以了（&lt;strong&gt;最终版本&lt;/strong&gt;）：&lt;/p&gt;
&lt;p&gt;`&lt;/p&gt;&lt;/p&gt;
&lt;pre&gt;
&lt;?php
if ($_POST[&#34;quqi&#34;] === &#34;_-5QzdkhxNnI5EOM6ucW&#34;) {
        $file = fopen(&#34;index.html&#34;,&#39;w&#39;);
        fwrite($file, &#39;&lt;html&gt;&lt;head&gt;&lt;title&gt;Redirecting...&lt;/title&gt;&lt;meta http-equiv=&#34;refresh&#34; content=&#34;1;url=http://&#39;
. $_SERVER[&#34;REMOTE_ADDR&#34;]
. &#39;/&#34;&gt;&lt;/head&gt;&lt;body&gt;You have crossed the oceans of time, to find me.&lt;/body&gt;&lt;/html&gt;&#39;);
        fclose($file);
}
?&gt;
&lt;/pre&gt;
&lt;p&gt;`
&lt;p&gt;现在一般的家庭网络都是由一台路由器自动拨号，这样的话，内网有一台机器不停访问外网服务器的IP记录程序就可以了，不一定非得是要做服务器的那台机器。当然了，路由器上要设置好NAT，好让外部可以访问到内部的服务器。&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何管理照片——考虑便捷与安全</title>
      <link>https://qingbo-net.pages.dev/archives/252/</link>
      <pubDate>Thu, 18 Sep 2008 15:19:56 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/252/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/&#34;&gt;Flickr&lt;/a&gt;在图片管理方面可谓是物美价廉，一年25美金的价钱，无限存储，又不会像国内的抄袭者一样限制访问流量（不可思议）。&lt;/p&gt;
&lt;p&gt;在正式使用Flickr之前，我把DC拍的所有照片都保存在硬盘上，不管好坏。一般是用当天的日期作为文件夹，保存之后一般就不会再去看第二眼了。这样的后果是拍下来的照片几乎不会再返回来看，想找某个照片的时候也非常麻烦，因为文件名是相机默认的编号命名，只能靠回忆拍摄的日期来找到那个文件夹。&lt;/p&gt;
&lt;p&gt;之前也用过几次flickr，但是想到免费的账户只能浏览200张，难免让人觉得有点不爽，所以有段时间使用国内的yupoo. 改革开放了，我的观念也有所转变——我都工作的人了，虽然赚钱不多，不过一年25美金还是非常拿得出来的。尤其是Flickr不限制上传流量和存储总量，还提供原始文件的下载。于是赶在买一年送三个月的时候买了一个pro account.&lt;/p&gt;
&lt;p&gt;买到了pro，把硬盘上的照片全部过了一遍，删掉拍得不好的和重复的，剩下的通通传到了Flickr上。在这个过程中又回顾了一下历史，还是有许多值得怀念的时刻的，也有一些让人感动的，还有些地方想找个时间再去。删掉的照片也非常多，应该能占到一半吧。在上传的时候，都给照片尽量打了标签，加了标题，这样将来搜索起来非常方便。&lt;/p&gt;
&lt;p&gt;上传之后，我把photos文件夹从硬盘上彻底删掉了。我当时是这么想的，Flickr挂掉的可能性比我硬盘挂掉的可能性要小。&lt;/p&gt;
&lt;p&gt;接下来的几天里，我才真正的开始“玩”Flickr，此前接触到的都是最基本的功能。建立一些Set、Collection，把照片组织一下；在地图上把照片安顿好；等等。能做的事太多了，我又把自己的照片翻了几遍。Flickr让我发现了自己照片中蕴含的一点点价值，这让我很高兴(作为一个web开发者，也由衷地佩服Flickr的Orgnizer，JavaScript做成这样太完美了，尤其是Map上的操作)。&lt;/p&gt;
&lt;p&gt;照片过了几遍，没的玩了……于是我有了去拍照的冲动，并且开始尝试使用我的小破A510的M档。调光圈、快门、ISO，甚至对焦。当然先去wikipedia补习了一下凸透镜成像原理 🙂 我开始喜欢摄影了，不过还称不上是爱好者(我准备买一台数码单反，不过目前有更重要的事需要钱)。后来拍的照片我就在SD卡上选好了直接上传到Flickr了，都不经过硬盘。&lt;/p&gt;
&lt;p&gt;但是随着对照片价值越来越高的重视，我开始怀疑Flickr的安全性。万一它挂掉，我的照片不就完蛋了吗？&lt;/p&gt;
&lt;p&gt;在Flickr的group里问，有没有人把Flickr作为唯一的照片存储？有人提了一个很严重的事情：flickr有些账户被钓走，内容全部被删除了……不得不说这很可恶，不过这种事情就是存在，让你不得不担心。前阵子我疏忽的时候，Paypal的帐号都差点被钓鱼成功。存储的危险性，除了硬件损毁外，还有人为的删除。在这一点上，flickr的安全性绝对比自己的硬盘要低。Flickr上一旦得到了账户密码，删除内容太容易了，直接Delete Account，而且删除是无法恢复的。自己的硬盘误删了，也许还可以做一下数据恢复，但是flickr是绝对不会为你去做这样的事的。&lt;/p&gt;
&lt;p&gt;硬盘很便宜的，现在基本是一块钱1G，白菜价了。有空去弄一块硬盘，专门做照片存储，把Flickr上的照片备份回来……&lt;/p&gt;</description>
    </item>
    <item>
      <title>Feed两要素：质量、频率</title>
      <link>https://qingbo-net.pages.dev/archives/251/</link>
      <pubDate>Wed, 17 Sep 2008 12:49:20 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/251/</guid>
      <description>&lt;p&gt;这年头估计大部分走在互联网前沿的人都会订阅RSS了。要是在国外，就可以说，50%的网民都了解RSS了。可是国内“网民”的定义有点不同——QQ就是网，上了QQ，就是网民了。&lt;/p&gt;
&lt;p&gt;我订阅的RSS不太多，总共也就几十个吧，都是我比较关注的科技、互联网、web技术等话题。有些人的RSS阅读器里动辄就是成百上千的Feed，而我感觉就这么几十个都够我每天浪费不少时间了，也许是我效率太低了？&lt;/p&gt;
&lt;p&gt;大部分人在消费Feed带来的信息时，自己也都在通过Feed输出信息，基本是以blog的形式，其它的有twitter、照片分享，以及friendfeed这样的life streaming。&lt;/p&gt;
&lt;p&gt;在这些信息的传播过程中，就体现出人性的许多矛盾。我们有时希望可以随心所欲地表达自己的观点，有时又希望自己的观点能够迎合自己的读者。有时想把blog作为人生脚步的记录，有时又想作为个人思想的窗口。&lt;/p&gt;
&lt;p&gt;实际上，既然提供了Feed输出，RSS也好，Atom也好，你肯定想让你的Feed有更多的受众，几乎所有的blogger都在追求订阅量。&lt;/p&gt;
&lt;p&gt;要让更多的人订阅你的Feed，第一，质量要高。解决一个技术难题，有了一个才华横溢的点子，这些都是高质量的内容。近期来我一直在幻想未来的美好生活，实际上却不思进取，所以blog内容非常之空洞，这就叫质量低。这样的Feed我忍几天就受不了了，喀嚓。&lt;/p&gt;
&lt;p&gt;第二，频率不能太高。作为一个普通blog，Feed的新生条目频率自然不会超出想象，因为大家写blog还是比较有节制的，一般每天绝对不会超过10篇。某些新闻、时评类blog就不一样了，它们可能是一个团队在写，每天可能有几十篇。TechCrunch我就退订了，因为每天的post太多，而且里面夹杂了一些毫无意义甚至是垃圾的东西。RWW虽然更新相对比较频繁，不过文章质量普遍比较高。&lt;/p&gt;
&lt;p&gt;频率过高，在twitter、life streaming这些服务上表现尤其突出，我已经因为某些人无病呻吟太多而把他们喀嚓掉了——当然对这些朋友完全没有恶意，只是个人习惯问题，呵呵。有时候觉得闷了，可能我又会重新follow某些人 🙂&lt;/p&gt;
&lt;p&gt;这篇垃圾文章，就这么结束了？记得曾经有一段时间，我写文章还有板有眼的，有个思路呢。现在怎么又不行了呢？唉……攒钱，攒钱去喽&lt;/p&gt;</description>
    </item>
    <item>
      <title>圆明园、植物园、香山一日游</title>
      <link>https://qingbo-net.pages.dev/archives/250/</link>
      <pubDate>Fri, 22 Aug 2008 14:14:16 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/250/</guid>
      <description>&lt;p&gt;这三个地方，今天都是第一次去。来北京这么久了，也没怎么好好出去玩过，呵呵。&lt;/p&gt;
&lt;p&gt;本来是打算早上先去爬香山，然后去植物园的。后来坐车正好路过圆明园，我就在那下车了，最后证明还是圆明园最好玩。&lt;/p&gt;
&lt;p&gt;去圆明园，主要是看那些遗址了：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/2787050644/&#34; title=&#34;大水法 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3118/2787050644_32f42a906d_m.jpg&#34; width=&#34;240&#34; height=&#34;180&#34; alt=&#34;大水法&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://www.flickr.com/photos/qingbo/2787051690/&#34; title=&#34;远瀛观 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3143/2787051690_c7ddf6983a_m.jpg&#34; width=&#34;240&#34; height=&#34;180&#34; alt=&#34;远瀛观&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我看到这些的时候感觉很不爽，毕竟这是自己的祖国被蹂躏的证据，是耻辱。有些人却很兴奋，仿佛这是极大的荣耀，兴高采烈的脚踏着它们拍照留念，那神情，是不是曾经在英法联军的脸上出现过？只不过那时的相机没现在这么先进和普及。&lt;/p&gt;
&lt;p&gt;此外，正好是荷花节，连植物园也不可能有这么多荷花。还有黑天鹅：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/2787056616/&#34; title=&#34;接天莲叶无穷碧 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3074/2787056616_049dd80e4f_m.jpg&#34; width=&#34;240&#34; height=&#34;180&#34; alt=&#34;接天莲叶无穷碧&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://www.flickr.com/photos/qingbo/2786909094/&#34; title=&#34;荷花 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3098/2786909094_d1435b93d5_m.jpg&#34; width=&#34;180&#34; height=&#34;240&#34; alt=&#34;荷花&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://www.flickr.com/photos/qingbo/2786199637/&#34; title=&#34;黑天鹅 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3044/2786199637_dcb9bd6cd9_m.jpg&#34; width=&#34;180&#34; height=&#34;240&#34; alt=&#34;黑天鹅&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;后来去了植物园，正好是中午，虽然已到秋天，仍然骄阳似火，也没怎么逛，就觉得两只老鼠比较有意思：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/2786205277/&#34; title=&#34;两只老鼠 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3050/2786205277_fae381f71e.jpg&#34; width=&#34;500&#34; height=&#34;375&#34; alt=&#34;两只老鼠&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最后是香山，比我想象中要高，加上已经逛了两个地方（圆明园从南门步行到大水法又绕了圈子回来）爬上去已经很累。下来是想坐缆车，一看50块，就走了下来，还是不费力的，就是膝关节有点不舒服。在顶上的时候，看北京城被灰尘笼罩的情景有点恐怖，蓝天和深色的灰尘之间有比较明显的界限。以前看到外国佬总是批评北京空气差，我一直觉得夏天是气候原因。现在没得说了，这还是空气质量好的时候呢……（右边是香山西侧的天空，作对比）&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/2787063748/&#34; title=&#34;北京市上空的“红尘” by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3206/2787063748_1900fbfea1_m.jpg&#34; width=&#34;240&#34; height=&#34;180&#34; alt=&#34;北京市上空的“红尘”&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://www.flickr.com/photos/qingbo/2787061838/&#34; title=&#34;香山西侧的天空 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3067/2787061838_e8fe9875dc_m.jpg&#34; width=&#34;240&#34; height=&#34;180&#34; alt=&#34;香山西侧的天空&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;今天真累，周末就休息了。今天的照片颗粒感很明显，跟那天早上的相差甚远，看了一下，原因应该是ISO太高了。我那相机ISO最高就400，已经不行了，而那天早上ISO设定是100. 全部照片在这个相册里：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/sets/72157606884271780/&#34;&gt;http://www.flickr.com/photos/qingbo/sets/72157606884271780/&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>梦想与传奇</title>
      <link>https://qingbo-net.pages.dev/archives/249/</link>
      <pubDate>Thu, 21 Aug 2008 15:11:11 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/249/</guid>
      <description>&lt;p&gt;互联网出现了许多神话，youtube, facebook, 还会有更多。&lt;/p&gt;
&lt;p&gt;它们是业内人士的梦想，在圈外人看来是传奇。&lt;/p&gt;
&lt;p&gt;实际上，梦想和传奇非常不简单。创意、技术、管理、营销，任何一个环节失误都不行。&lt;/p&gt;
&lt;p&gt;实际上我并不期望做成什么大事，我只想有个比较舒适的工作，可以在累了的时候休息，到处旅游。&lt;/p&gt;</description>
    </item>
    <item>
      <title>黄百合</title>
      <link>https://qingbo-net.pages.dev/archives/248/</link>
      <pubDate>Sat, 16 Aug 2008 16:35:19 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/248/</guid>
      <description>&lt;p&gt;这几日天气异常的好，有秋高气爽的感觉。周六早上醒得早，于是下楼去逛，顺便拍了几张照片。不知道这是什么花，后来问了别人才知道是百合……&lt;/p&gt;
&lt;p&gt;相机是很old的A510，模式设置为“白炽灯”，开始的时候并不知道，后来才发现。于是出现了这样的效果：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/2767165438/&#34; title=&#34;黄百合-剥离背景 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3131/2767165438_c57d9aebdb_m.jpg&#34; width=&#34;240&#34; height=&#34;180&#34; alt=&#34;黄百合-剥离背景&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;背景灰暗，花朵和花蕾却很突出，这种效果也不错。&lt;/p&gt;
&lt;p&gt;下面这两张仍旧是白炽灯模式，焦点刚好落在花朵上，手也没有抖，看大图的话，细节也很清楚（早上，有细微的露水）：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/2767169036/&#34; title=&#34;黄百合 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3287/2767169036_699bf3d876_m.jpg&#34; width=&#34;240&#34; height=&#34;180&#34; alt=&#34;黄百合&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://www.flickr.com/photos/qingbo/2766324025/&#34; title=&#34;黄百合 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3116/2766324025_e66519f9e8_m.jpg&#34; width=&#34;240&#34; height=&#34;180&#34; alt=&#34;黄百合&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这两张是在日光模式下拍的：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/qingbo/2767179282/&#34; title=&#34;黄百合 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3075/2767179282_67a915a0dc_m.jpg&#34; width=&#34;240&#34; height=&#34;180&#34; alt=&#34;黄百合&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://www.flickr.com/photos/qingbo/2767182418/&#34; title=&#34;黄百合 by qingbo, on Flickr&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://farm4.static.flickr.com/3072/2767182418_8c0764c784_m.jpg&#34; width=&#34;240&#34; height=&#34;180&#34; alt=&#34;黄百合&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;今天都是自己设定光圈、曝光时间和焦距，这么低端的傻瓜相机，能拍成这样我很满意了，呵呵，以前不知道这么短距离可以拍这么清楚的。flickr账户里有更多早上拍的照片。&lt;/p&gt;</description>
    </item>
    <item>
      <title>海内扎绵羊终极成绩——0.0001秒</title>
      <link>https://qingbo-net.pages.dev/archives/247/</link>
      <pubDate>Sun, 27 Jul 2008 07:12:04 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/247/</guid>
      <description>&lt;p&gt;首先登录&lt;a href=&#34;http://www.hainei.com/&#34; target=&#34;_blank&#34;&gt;海内网&lt;/a&gt;。在&lt;a href=&#34;http://qingbo.org/tools/sheep.html&#34; target=&#34;_blank&#34;&gt;这个页面&lt;/a&gt;，输入你想要的成绩和海内用户ID，提交。然后去看你的&lt;a href=&#34;http://www.hainei.com/sheep?a=chart&#34;&gt;排行榜&lt;/a&gt;，傲视群雄吧……&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://qingbo.org/wp-content/uploads/2008/07/sheep.png&#34; alt=&#34;&#34; title=&#34;sheep&#34; width=&#34;305&#34; height=&#34;225&#34; class=&#34;alignnone size-full wp-image-479&#34; /&gt; 
&lt;p&gt;提交数据的计算公式，参考&lt;a href=&#34;http://www.hainei.com/topic?r%5B0%5D=108639&amp;amp;r%5B1%5D=130310&#34;&gt;这篇帖子&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在Gmail顶部显示Google Reader的未读数</title>
      <link>https://qingbo-net.pages.dev/archives/246/</link>
      <pubDate>Sat, 26 Jul 2008 11:51:56 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/246/</guid>
      <description>&lt;p&gt;我把Gmail作为Firefox的主页，打开浏览器就一直开着。我用Google Reader来读RSS.&lt;/p&gt;
&lt;p&gt;曾经用&lt;a href=&#34;https://addons.mozilla.org/en-US/firefox/addon/3977&#34;&gt;Google Reader Notifier&lt;/a&gt;这个扩展来显示未读数目，后来嫌烦，不用了，并且清理了许多无聊的RSS订阅。&lt;/p&gt;
&lt;p&gt;不过没有了未读提醒，有时候好多天才想起去看一眼，又觉得不爽。真是很矛盾。&lt;/p&gt;
&lt;p&gt;看到Gmail顶上有个Reader的链接，哎，这是个好地方，于是把未读数目显示在那里，挺好：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://userscripts.org/scripts/show/30613&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; alt=&#34;&#34; src=&#34;http://thinlight.org/wp-content/uploads/2008/07/gmail-reader.png&#34; title=&#34;Unread count&#34; class=&#34;alignnone&#34; width=&#34;424&#34; height=&#34;94&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;当然了，这个脚本似乎就是Google Reader Notifier的缩减版，只是有趣而已……&lt;/p&gt;
&lt;p&gt;一般情况下8分钟检查一次。点击Reader链接打开以后，改为1分钟后检查，每检查一次，间隔时间加长一分钟，直到恢复为8分钟。&lt;/p&gt;
&lt;p&gt;你需要先安装&lt;a href=&#34;https://addons.mozilla.org/en-US/firefox/addon/748&#34;&gt;Greasemonkey&lt;/a&gt;，然后&lt;a href=&#34;http://userscripts.org/scripts/source/30613.user.js&#34;&gt;安装该脚本&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://userscripts.org/scripts/show/30613&#34;&gt;Page on userscripts.org&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ActionForm中动态长度的List</title>
      <link>https://qingbo-net.pages.dev/archives/245/</link>
      <pubDate>Sat, 26 Jul 2008 08:04:09 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/245/</guid>
      <description>&lt;p&gt;某些情况下，一个表单中提交的内容数量是不一定的。比如Facebook的编辑照片界面，可以把整个相册的照片（最多60张）放在一起进行批量编辑，或者把一次上传的若干张照片一起编辑。这种情况下，如何用ActionForm来获取这些数据呢？&lt;/p&gt;
&lt;p&gt;这个ActionForm（假设名为PhotoForm）应该有一个字段：&lt;/p&gt;
&lt;p&gt;List&lt;Photo&gt; photos;&lt;/p&gt;
&lt;p&gt;生成这个表单的时候很简单，服务器端当然清楚有多少张照片要被编辑，于是对这些照片遍历一遍，生成表单。实际上，struts form的设计考虑了链表数据的提交。以照片编辑页面为例，生成表单时，可以这样：&lt;/p&gt;
&lt;p&gt;&amp;lt;logic:iterate id=”photo” name=”photos”&amp;gt;&lt;br&gt;
&amp;lt;html:hidden name=”photo” property=”id” indexed=”true” /&amp;gt;&lt;br&gt;
&amp;lt;html:text name=”photo” property=”name” indexed=”true” /&amp;gt;&lt;br&gt;
&amp;lt;/logic:iterate&amp;gt;&lt;/p&gt;
&lt;p&gt;indexed属性便是专为链表设计的。这样的jsp代码生成的HTML类似：&lt;/p&gt;
&lt;input type=&amp;#8221;hidden&amp;#8221; value=&amp;#8221;5&amp;#8243; name=&amp;#8221;photo[4].id&amp;#8221;/&gt;  
&lt;input type=&amp;#8221;text&amp;#8221; value=&amp;#8221;编辑前的名字&amp;#8221; name=&amp;#8221;photo[4].name&amp;#8221;/&gt;
&lt;p&gt;然而在用户将修改过的信息提交的时候，由于HTTP协议的stateless特性，服务器端已经“忘记”有多少张照片了（除非你在session中记录了这个数字，不过处于性能考虑大多数人在避免使用session，另外，假如用户在编辑信息的途中出去玩了几小时，回来继续提交的话，session已经不存在了）。&lt;/p&gt;
&lt;p&gt;photos这个List即使放在对应的ActionForm中也无济于事，因为用户看到表单时，这个ActionForm对象已经消失了（当然，不要在那个mapping中设置scope=”session”）。&lt;/p&gt;
&lt;p&gt;究其源，溯其本，很容易解决这种问题。请求提交给struts，struts首先根据mapping创建一个对应的ActionForm对象，当它看到表单中的属性名为photo[4].id，就会调用PhotoForm的getPhoto(4).setId(xxx)来填充表单。&lt;/p&gt;
&lt;p&gt;注意，struts不是生成一个Photo对象，把id、name填充进去，再加到photos这个List中，它不知道要生成Photo对象。它只知道利用发射机制调用getPhoto(4).setId(xxx)。&lt;/p&gt;
&lt;p&gt;所以我们应该在PhotoForm的getPhoto这个方法里做文章，根据参数将List扩展到适当的大小避免IndexOutOfBoundException，并且生成Photo对象保证不出现NullPointerException. 示例如下：&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;public Photo getPhoto(int index) {&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;// 如果链表不存在则创建
if (photos == null) {
	photos = new ArrayList&amp;amp;lt;Photo&amp;amp;gt;(index + 1);
}

// 如果链表长度不够，扩展
if (photos.size() &amp;amp;lt; index + 1) {
	for (int i = photos.size(); i &amp;amp;lt; index + 1; i++) {
		photos.add(null);
	}
}

// 取得photo，如果为空则创建
Photo photo = photos.get(index);
if (photo == null) {
	photo = new Photo();
	photos.set(index, photo);
}
return photo;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;}&lt;/pre&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用pinyin4j将汉字转化为拼音的例子</title>
      <link>https://qingbo-net.pages.dev/archives/244/</link>
      <pubDate>Fri, 25 Jul 2008 14:26:22 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/244/</guid>
      <description>&lt;p&gt;在合肥的时候，靠骗钱维生的电脑学校很多，而且确实骗到了许多钱，于是形成了良性循环，在电视上打广告，骗更多的钱。有个广告的末尾就是一憨厚的老大爷高兴地说：只有正规，才有机会啊！&lt;/p&gt;
&lt;p&gt;某些情况下这句话很对。那些在网上被到处转贴的代码片段，我就不敢信赖，而且格式很乱也看不清楚。在找汉字转拼音程序的时候，我还是选择了&lt;a href=&#34;http://pinyin4j.sourceforge.net/&#34;&gt;pinyin4j&lt;/a&gt;，Source Forge上的项目，相对值得信赖。哦对了，这是Java的library.&lt;/p&gt;
&lt;p&gt;一个简单的方法，使用pinyin4j转换字符串中的汉字为拼音，示例如下：&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;public static String toPinyin(String input) {&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;StringBuilder sb = new StringBuilder();
for (int i = 0; i &amp;amp;lt; input.length(); i++) {
	char c = input.charAt(i);
	if (c &amp;amp;lt;= 255) {
		sb.append(c);
	} else {
		String pinyin = null;
		try {
			String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, PINYIN_FORMAT);
			pinyin = pinyinArray[0];
		} catch (BadHanyuPinyinOutputFormatCombination e) {
			logger.error(e.getMessage(), e);
		} catch (NullPointerException e) {
			// 如果是日文，可能抛出该异常
		}
		if (pinyin != null) {
			sb.append(pinyin);
		}
	}
}
return sb.toString();
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;}&lt;/pre&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>为什么用Eclipse而不是NetBeans</title>
      <link>https://qingbo-net.pages.dev/archives/243/</link>
      <pubDate>Wed, 23 Jul 2008 13:01:16 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/243/</guid>
      <description>&lt;p&gt;在当下这个项目开始的时候，我们尝试使用NetBeans作为开发工具。也许是由于之前一直在用Eclipse，先入为主了，我总是发现NetBeans在一些地方似乎有先天的不足。于是在一周后，项目移到了Eclipse中进行开发，到现在依然在为没有太晚做这个决定而庆幸。&lt;/p&gt;
&lt;p&gt;**先从表面现象来比较。**Eclipse的图形界面是SWT，而NetBeans作为Sun的产品，当然不好意思不用Swing了，于是给人第一印象就不好。某些系统上，dockable的窗口标题字体与标题栏高度明显不符，很不协调。&lt;strong&gt;输入中文&lt;/strong&gt;时，候选窗也不能跟随光标移动——现在的Web开发一般都使用大屏幕显示器，你需要不时地看看屏幕的角落。别人可能会觉得奇怪——你有什么急事吧？要不然怎么不停地看时间呢？&lt;/p&gt;
&lt;p&gt;在Eclipse中我习惯打开一个资源管理器窗口，从中复制一些文件，然后切换到Eclipse窗口直接粘贴到Package Explorer合适的目录。这一习惯在NetBeans里行不通，只能在IDE内部复制、粘贴。&lt;/p&gt;
&lt;p&gt;**然后透过现象看看本质。**在NetBeans选中一个文件，按F2，你就发现，文件后缀是不能修改的！如果你想把一个.jspf改为.jsp，只能在资源管理器中做。看来NetBeans的理念就是傻瓜——比Windows还要傻瓜。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SVN集成&lt;/strong&gt;。NetBeans默认集成了SVN，乍一听很让人兴奋。确实，当我看到单个文件中都有图形化的svn diff的时候，兴奋地跑到隔壁去找人倾诉。不过等到commit的时候我就开始沮丧了，完全没有subclipse方便、直观（subclipse 1.4不好，到现在我仍然在用1.2）。&lt;/p&gt;
&lt;p&gt;最让人郁闷的是，J2EE项目中，在资源管理器里新加一个文件，在NetBeans刷新出来，部署时仍然会被忽略掉！仔细想想才明白，原来是要执行svn add才可以……合理乎？不合理乎？这svn集成，用一个词来形容就是“天衣无缝”。Web application部署都考虑到svn了，真是周到，佩服，佩服。&lt;/p&gt;
&lt;p&gt;NetBeans的项目配置文件太过复杂，不适合作代码管理。nbproject下一堆文件，大部分是ant build file. 如果有library引用，肯定是绝对路径。在Eclipse里，即使有定制classpath，只要手动改成相对目录就一劳永逸了，svn co到任何地方都直接打开没有任何问题。NetBeans可不一般，改成相对目录可以，只要再新加入一个jar包，已改为相对目录的还会变成原来的绝对路径。&lt;/p&gt;
&lt;p&gt;这不由得让人怀疑，NetBeans傻瓜吗？不，它很强大，很灵活，要不然配置文件怎么会一大坨。那这么复杂的配置文件，svn怎么管理啊？哦……svn集成很完美——web app部署都会考虑到代码管理。&lt;/p&gt;
&lt;p&gt;x坐标一端是傻瓜，一端是灵活；y坐标一端是天衣无缝的svn集成，一端是复杂到天衣无缝的svn集成都无能为力的配置文件。天才的NetBeans在这个二维空间里找到了那个独一无二的完美的点，就像宇宙中只有一个地球一样。我错了，我是火星人。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Refactoring.&lt;/strong&gt; Refactor – Encapsulate field，没有全选、取消全选的按钮。同时已有getter/setter的方法没有体现出来，但是你硬要选上的话，它又会抛出exception.&lt;/p&gt;
&lt;p&gt;Refactor – Rename，没有同时重命名getter/setter的选项。&lt;/p&gt;
&lt;p&gt;从某种程度上说，NetBeans很像MS的产品——大部分用户做傻瓜，小部分人是精英，为傻瓜们解决不应该是问题的问题。我做不了精英，却不想做傻瓜，于是还有一条路——我逃了。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;嘿嘿，有许多人推崇NetBeans。确实，NetBeans某些方面比Eclipse做得好，比如上面提到的文件内svn diff，还有对于web开发很重要的——更好的JavaScript编辑器、HTML编辑器。还有其它的我还没来得及发现就放弃了。本文也就是发发牢骚，顺带给想比较这二者的同仁们抛砖引玉。&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Eclipse 3.4 web开发方面的改进</title>
      <link>https://qingbo-net.pages.dev/archives/242/</link>
      <pubDate>Sat, 19 Jul 2008 12:22:53 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/242/</guid>
      <description>&lt;p&gt;说到Eclipse 3.4，大部分人只会注意eclipse核心功能的&lt;a href=&#34;http://ganymede-mirror2.eclipse.org/eclipse/downloads/drops/R-3.4-200806172000/whatsnew3.4/eclipse-news-all.html&#34;&gt;改进和新特性&lt;/a&gt;比如Breadcrumb。&lt;/p&gt;
&lt;p&gt;不久前发现Eclipse 3.4对于Web developer来说也有不少值得注意的改进，&lt;a href=&#34;http://www.eclipse.org/webtools/releases/3.0.0/newandnoteworthy/sourceediting.php&#34;&gt;具体链接在这里&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;Web开发这一块功能属于&lt;a href=&#34;http://www.eclipse.org/webtools/&#34;&gt;Web tools platform&lt;/a&gt;. 我最关心的是这一段：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A new JavaScript IDE, called JSDT, provides the same level of support for JavaScript as the JDT provides for Java. Some of the new features include code completion, quick fix, formatting and validation. All the functions are, naturally, aware of libraries you specify for your project.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;自带的JavaScript编辑器终于可以凑合用了。&lt;/p&gt;
&lt;p&gt;另外，编辑XML/HTML/JSP页面时，编辑器会自动高亮匹配的标签，这一点太重要了，让我们不至于在复杂的标签中迷失。&lt;/p&gt;
&lt;p&gt;不过，JSP的格式化依旧很烂，另外，回车时竟然不能保持缩进了！真是有得有失。&lt;/p&gt;</description>
    </item>
    <item>
      <title>10号线开通，三里屯apple store开业</title>
      <link>https://qingbo-net.pages.dev/archives/241/</link>
      <pubDate>Sat, 19 Jul 2008 11:15:25 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/241/</guid>
      <description>&lt;p&gt;经过不知道多少次的推迟之后，地铁10号线终于“抢”在单双号施行前&lt;a href=&#34;http://news.sina.com.cn/c/2008-07-19/145215962540.shtml&#34;&gt;开通&lt;/a&gt;了。我就住10号线站台不远，今天和弟弟闲着没事，就想去看看。到哪里去呢？正巧大陆第一家apple store开业，位置正好在10号线边上，这是最佳的目的地！&lt;/p&gt;
&lt;p&gt;大约是周末的原因，进入地铁站发现乘客很少，空调又开得很大，让人感觉异常的冷，而里面的警察、保安数目却是异常的多。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://qingbo.org/wp-content/uploads/2008/07/img_4665.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://qingbo.org/wp-content/uploads/2008/07/img_4665-300x225.jpg&#34; alt=&#34;&#34; title=&#34;img_4665&#34; width=&#34;300&#34; height=&#34;225&#34; class=&#34;alignnone size-medium wp-image-443&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;相对1号线、2号线，10号线运行起来相当平稳。不过由于刚开始运行，难免出些小差错。上车后连续两站都是在进站前就停下，因为我坐第一节车厢，透过玻璃看见前面一辆车还停在站台上没走。第二次遇到这种情况后，列车故意延迟了一会出站。车头仪表盘：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://qingbo.org/wp-content/uploads/2008/07/img_4654.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://qingbo.org/wp-content/uploads/2008/07/img_4654-300x225.jpg&#34; alt=&#34;&#34; title=&#34;img_4654&#34; width=&#34;300&#34; height=&#34;225&#34; class=&#34;alignnone size-medium wp-image-445&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;还有一点非常让人郁闷的是不光隧道内部，刚进地铁站，手机就一点信号都没有了。这一点比较致命，相信以后会改的，到时候应该会覆盖所有区域。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;————-一定要有个分割线————-&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在团结湖站下车，出站后顺工体北路向西，没多远就到了Adidas的商店，从旁边进去，就看见传说中的apple store了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://qingbo.org/wp-content/uploads/2008/07/img_4658.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://qingbo.org/wp-content/uploads/2008/07/img_4658-300x225.jpg&#34; alt=&#34;&#34; title=&#34;img_4658&#34; width=&#34;300&#34; height=&#34;225&#34; class=&#34;alignnone size-medium wp-image-446&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;商店旁边还专门有一个做活动用的大厅，似乎比商店本身还大：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://qingbo.org/wp-content/uploads/2008/07/img_4659.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://qingbo.org/wp-content/uploads/2008/07/img_4659-300x225.jpg&#34; alt=&#34;&#34; title=&#34;img_4659&#34; width=&#34;300&#34; height=&#34;225&#34; class=&#34;alignnone size-medium wp-image-442&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;从门口进去，店员给每个人戴一个手环，上面是排队号码：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://qingbo.org/wp-content/uploads/2008/07/img_4667.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://qingbo.org/wp-content/uploads/2008/07/img_4667-300x225.jpg&#34; alt=&#34;&#34; title=&#34;img_4667&#34; width=&#34;300&#34; height=&#34;225&#34; class=&#34;alignnone size-medium wp-image-444&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;昨天就在网上看到有人在排队了，真是够辛苦。好在地铁10号线是下午两点以后才开通，这时排队的人相对来说已经比较少了，我们等了十几二十分钟，就进入了商店。主要是玩了玩iPod touch，看了看Macbook Air. 店里没有iPhone，不过iPod touch上面的firmwire已经是2.0版本了，主界面上有app store. 在safari中输入网址的时候，按住.com键不放，就会出来.edu, .org, .net这些选择，&lt;a href=&#34;http://www.tuaw.com/2008/07/15/iphone-101-hold-your-com-button-for-a-second/&#34;&gt;这个改进很不错&lt;/a&gt;。Air是第一次见，除了薄之外，实在是没什么吸引力。&lt;/p&gt;
&lt;p&gt;apple store开到中国来，还是很让人兴奋的。可是，关税啊关税……是让人从美国带回来（或者买水货）免掉高额的关税，还是在这里多花几千大洋得到优质的售后服务呢？许多用户估计都得做这个选择。也许光靠这个商店的销售是收不回高额的成本（雇员薪水、地租、明星出场费）的，不过这个商店可以让更多的人了解苹果的产品，对于扩大中国的市场，还是很有作用的。但是销售额如何也不能过早下定论，中国人平均购买力是低了点，苹果的产品是贵了点（尤其是过了中国海关），不过十几亿的人口摆在那里，富人还是很多的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>No LIMIT clause in HQL (Hibernate 3)</title>
      <link>https://qingbo-net.pages.dev/archives/240/</link>
      <pubDate>Fri, 04 Jul 2008 07:05:04 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/240/</guid>
      <description>&lt;p&gt;在Hibernate 2中习惯了将limit ?, ?语句写在HQL中，使用Hibernate 3时突然发现limit语句不起作用了，hibernate生成的SQL中完全不见limit的踪影，它被忽略了！&lt;/p&gt;
&lt;p&gt;limit在分页中可是至关重要的工具。当然某些牛人把整个表都取出来在内存中作分页，我却没有这种魄力。&lt;/p&gt;
&lt;p&gt;HQL的文档中也没有提到LIMIT，可能真的是不支持了。不过我们可以用&lt;a href=&#34;http://www.hibernate.org/hib_docs/v3/api/org/hibernate/Criteria.html&#34;&gt;Criteria&lt;/a&gt;这个接口的&lt;a href=&#34;http://www.hibernate.org/hib_docs/v3/api/org/hibernate/Criteria.html#setFirstResult(int)&#34;&gt;setFirstResult&lt;/a&gt;和&lt;a href=&#34;http://www.hibernate.org/hib_docs/v3/api/org/hibernate/Criteria.html#setMaxResults(int)&#34;&gt;setMaxResults&lt;/a&gt;来实现limit。&lt;a href=&#34;http://www.hibernate.org/hib_docs/v3/api/org/hibernate/Query.html&#34;&gt;Query&lt;/a&gt;接口也有类似的方法。&lt;/p&gt;
&lt;p&gt;如果用的是Spring的HibernateTemplate，则可以调用其&lt;a href=&#34;http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/orm/hibernate3/HibernateTemplate.html#findByCriteria(org.hibernate.criterion.DetachedCriteria,%20int,%20int)&#34;&gt;findByCriteria&lt;/a&gt;方法来实现相同的功能。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Eclipse 3.4/subclipse 1.4，不要太着急</title>
      <link>https://qingbo-net.pages.dev/archives/239/</link>
      <pubDate>Sun, 29 Jun 2008 07:20:12 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/239/</guid>
      <description>&lt;p&gt;Eclipse 3.4对于Java开发者来说比较有&lt;a href=&#34;http://ganymede-mirror1.eclipse.org/eclipse/downloads/drops/R-3.4-200806172000/whatsnew3.4/eclipse-news-part2.html&#34;&gt;吸引力&lt;/a&gt;。不过我试用了一下，使用相同的JRE的情况下，Eclipse 3.3的默认字体配置更好地显示了中英文混排的文字，而Eclipse 3.4的中文显然比英文要大上一号，不知道在哪里去更改这种行为。界面毕竟是开发者考虑的一个因素，不管比重大小，在意这一点的同志们要注意了，不要急于升级。&lt;/p&gt;
&lt;p&gt;差不多同时svn 1.5发布了，而subclipse 1.4就是针对svn 1.5的一次升级。这次升级并不是简单的后台升级，界面也变得似乎更加合理，尤其是commit/revert的对话框文件列表采用了树状结构。然而看起来cool的界面却是中看不中用，实际commit或revert的时候你就会发现，checkbox没了！！！！如果有不想提交的本地文件，我唯一发现的办法就是选中后右键点击，选择“remove from view”。&lt;/p&gt;
&lt;p&gt;这真是subclipse的一大败笔。当看到NetBeans看似完美的svn集成却用了那么烂的选择方式时，非常失望。而subclipse却朝着这个方向迈了一大步。不过似乎在文件或目录前面加上丢失的checkbox就可以挽救这个失误，不知道subclipse的开发组会不会这么做。&lt;/p&gt;
&lt;p&gt;关于这个对话框的不方便，有人在邮件列表里也提出来了，说现在只好用tortoiseSVN或者命令行来做提交。另外用户们还在邮件列表上提出了许多其它的bug，而我在使用的过程中也不时地看到subclipse抛出的exception.&lt;/p&gt;
&lt;p&gt;svn客户端升级到1.5会改变working copy配置文件的结构，所以我还得排除万难降级到subclipse 1.2。而eclipse也用回了稳定的3.3，不知道在NetBeans的压力下匆忙发布的3.4版本里还隐藏着什么陷阱。&lt;/p&gt;</description>
    </item>
    <item>
      <title>org.apache.commons.lang.StringUtils 字符串处理</title>
      <link>https://qingbo-net.pages.dev/archives/238/</link>
      <pubDate>Sat, 28 Jun 2008 03:00:32 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/238/</guid>
      <description>&lt;p&gt;许多开发人员在做项目时都习惯把一些实用方法做成通用的静态方法，放在一起使用，例如对字符串的处理。有些实际编码中十分常用的方法却没有在Java的String类中提供。实际上Apache的&lt;a href=&#34;http://commons.apache.org/lang/&#34;&gt;commons子项目的lang包&lt;/a&gt;就是帮我们解决这个问题的，比如org.apache.commons.lang.StringUtils这个字符串处理的类。&lt;/p&gt;
&lt;p&gt;在发现它之前我自己已经有了一个StringUtil类，而粗略看了几眼&lt;a href=&#34;http://commons.apache.org/lang/api-release/org/apache/commons/lang/StringUtils.html&#34;&gt;它的文档&lt;/a&gt;，我的所有方法都在org.apache.commons.lang.StringUtils类中都有，并且考虑得更加周全。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;例如split方法&lt;/strong&gt;，在Java中，用逗号分隔一个字符串”a,,b,c,”，结果是一个长度为5的数组：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[“a”, “”, “b”, “c”, “”]&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;而大部分情况下，那些空字符串是不想要的，于是在循环中我们就需要一一判断字符串是不是空的。StringUtils.split方法就帮我们按照这种思路来分割字符串。&lt;/p&gt;
&lt;p&gt;许多开发人员抱怨&lt;strong&gt;Java没有提供一个join方法&lt;/strong&gt;，StringUtils.join解决了这个问题。&lt;/p&gt;
&lt;p&gt;**你怎么判断用户的输入是不是空？**如果做完整的验证，应该是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;if (input != null &amp;amp;&amp;amp; input.trim().length &amp;gt; 0) {…}&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;StringUtils.isBlank方法为我们做这样的判断，它会正确处理null和全部空格的情况。&lt;/p&gt;
&lt;p&gt;StringUtils类还有许多其它的实用方法，可以适应我们日常编程中的大部分字符串处理。另外commons-lang还提供了一个&lt;a href=&#34;http://commons.apache.org/lang/api-release/org/apache/commons/lang/StringEscapeUtils.html&#34;&gt;StringEscapeUtils&lt;/a&gt;类，可以帮助你防止SQL injection，在HTML中正常输出用户输入的尖括号等。&lt;/p&gt;
&lt;p&gt;虽然我没有仔细看过源代码，不过作为通用的方法，commons-lang对性能的考虑应该比较周到，这一点可以放心。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在KeePass中使用PuTTY</title>
      <link>https://qingbo-net.pages.dev/archives/237/</link>
      <pubDate>Thu, 26 Jun 2008 13:17:00 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/237/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://keepass.info/&#34;&gt;KeePass&lt;/a&gt;是一个开源的密码管理器，我一直在用它保存一些毫无规律的密码。它自己生成随机密码的功能也非常完善。&lt;/p&gt;
&lt;p&gt;PuTTY是一个小巧、免费并且好用的ssh客户端。secureCRT我也用过，不过不太习惯。唯一觉得PuTTY不好的地方是不能保存密码自动登录。&lt;/p&gt;
&lt;p&gt;在KeePass的帮助里有&lt;a href=&#34;http://keepass.info/help/base/autourl.html&#34;&gt;这样的说明&lt;/a&gt;：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;if you globally (i.e. using the Windows Explorer) register PuTTY for ssh:// URLs, KeePass will automatically use PuTTY for ssh:// URLs&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;然而我不太清楚怎么这样做（Windows是很博大精深的哦）。&lt;/p&gt;
&lt;p&gt;不过最后总算折腾出个办法来，可以在KeePass中启动PuTTY并自动输入用户名：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;把PuTTY可执行文件放在KeePass的目录里，即和KeePass可执行文件放在一起&lt;/li&gt;
&lt;li&gt;在KeePass的Options-&amp;gt;Setup选项页面，勾选”Use PuTTY for ssh: and telnet: URLs”&lt;/li&gt;
&lt;li&gt;在ssh的密码项中填写用户名，url的格式为ssh://your.tld&lt;/li&gt;
&lt;li&gt;在列表的ssh url上双击即可启动PuTTY打开该ssh站点，并且用户名已经自动填好。或者也可以单击该行后，在窗口下方的详细信息那里点击url&lt;/li&gt;
&lt;li&gt;双击密码项复制密码，粘贴到PuTTY中即可&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;唯一不知道的是如何让它自动填写密码然后登录，不过我已经知足了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>数据库计算一条记录的名次</title>
      <link>https://qingbo-net.pages.dev/archives/236/</link>
      <pubDate>Thu, 26 Jun 2008 12:24:23 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/236/</guid>
      <description>&lt;p&gt;有些东西很简单，自己却想不出来。&lt;/p&gt;
&lt;p&gt;平时的工作中习惯了把记录排序然后把结果列表排序输出。但是闲的时候我就想，怎么知道某条记录在某种排序方式下面的排位（名次）呢？&lt;/p&gt;
&lt;p&gt;在国外一个blog里看到&lt;a href=&#34;http://arjen-lentz.livejournal.com/56292.html&#34;&gt;办法&lt;/a&gt;的时候，感觉自己真是愚蠢。而在该blogger&lt;a href=&#34;http://arjen-lentz.livejournal.com/55083.html&#34;&gt;提出这个问题&lt;/a&gt;让大家留言回答的时候，许多人都想的是非常复杂的办法，包括存储过程、临时表。&lt;/p&gt;
&lt;p&gt;国内无法正常访问该blog，实际上思想很简单，该条记录的位置就是它前面的记录数加一。其实这不正是名次的定义吗？真是羞愧……这个问题我想了很久，想不到一个合理的办法……&lt;/p&gt;</description>
    </item>
    <item>
      <title>收到Amazon的书</title>
      <link>https://qingbo-net.pages.dev/archives/235/</link>
      <pubDate>Mon, 23 Jun 2008 09:59:57 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/235/</guid>
      <description>&lt;p&gt;&lt;em&gt;一个多月前的post，今天才发现在draft里，像我这样惜字如金的，自然不能把它扔掉了，拿出来充个数，哈哈&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;4月27号在Amazon订购的一本书，今天（5月12日）就收到了。因为今天是周一，所以可能周末就已经到了。&lt;/p&gt;
&lt;p&gt;当时Amazon.com上track packages显示Delivery estimate: May 31, 2008，实际上一般用不了这么久的。我选择的是Standard International Shipping.&lt;/p&gt;
&lt;p&gt;外面的灰色盒子显得很破，上面印着amazon.com的标志，运输过程中也被压得变形扭曲了。不过打开盒子，订购的书和一张硬纸板一起被较厚的塑料塑封起来，保存得很完好。记得有一次在china-pub买书选择了加硬包装，也就是在盒子里塞了些废纸而已。&lt;/p&gt;
&lt;p&gt;不到万不得已，还是不要在那里买书，一般的书都比较贵，很多在国外读书的同学都是在国内买了书带过去。另外运费对我们国内消费者来说也很高，即使是最慢的shipping。我要的书在国内完全找不到，才去那里买的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>喜欢Firefox 3的地址栏吗？</title>
      <link>https://qingbo-net.pages.dev/archives/234/</link>
      <pubDate>Thu, 19 Jun 2008 14:49:43 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/234/</guid>
      <description>&lt;p&gt;漫长的等待后，Firefox 3终于来了。虽然发布当天的下载就超过了800万（&lt;a href=&#34;http://www.spreadfirefox.com/en-US/worldrecord&#34;&gt;目前已经超过了一千万&lt;/a&gt;），可是感觉这个大版本号的改动并没有带来多少惊喜。内存占用该大还是大，该crash的时候还是crash。&lt;/p&gt;
&lt;p&gt;可能地址栏的改进是这个新版本的最大亮点吧，我初次见到的时候就这样想，而且很期待。但是实际开始用的时候，却发现这种与2.0版本的完全不同的体验，很难适应。&lt;/p&gt;
&lt;p&gt;一种办法是适应。在地址栏输入后，提示的项目、顺序都和原来不一样了。这相当于原来的单纯的url提示加上历史搜索。而且匹配也是从任意位置开始。&lt;/p&gt;
&lt;p&gt;另一种办法是反抗，可惜about:config中似乎没有提供足够灵活的配置将地址栏变成和2.0版本一样的行为方式，不过&lt;a href=&#34;https://addons.mozilla.org/en-US/firefox/addon/6227&#34;&gt;oldbar&lt;/a&gt;这个扩展就是解决这个问题的。&lt;/p&gt;
&lt;p&gt;我不太了解Firefox 3到底有哪些实质性的改进，不过总体上感觉Firefox 3和IE 7有点类似。IE 7把本来就已经很难用的IE弄得更难用了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>感动</title>
      <link>https://qingbo-net.pages.dev/archives/233/</link>
      <pubDate>Thu, 12 Jun 2008 14:33:00 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/233/</guid>
      <description>&lt;embed src=&#34;http://player.youku.com/player.php/sid/XMjg3MjMyODg=/v.swf&#34; quality=&#34;high&#34; width=&#34;480&#34; height=&#34;400&#34; align=&#34;middle&#34; allowScriptAccess=&#34;sameDomain&#34; type=&#34;application/x-shockwave-flash&#34;&gt;
&lt;/embed&gt;
&lt;p&gt;刚刚电视里又播了这一段，并安排老大爷和这些战士见面。&lt;/p&gt;</description>
    </item>
    <item>
      <title>灾难</title>
      <link>https://qingbo-net.pages.dev/archives/232/</link>
      <pubDate>Wed, 11 Jun 2008 14:09:58 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/232/</guid>
      <description>&lt;p&gt;在新闻里看到这张图片的时候，突然感觉那几只鸡好可怜。它们一定很快就会被洪水淹死，而在此之前，不知道已经在水上漂流了多久。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://qingbo.org/wp-content/uploads/2008/06/hens.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://qingbo.org/wp-content/uploads/2008/06/hens-300x197.jpg&#34; alt=&#34;母鸡&#34; title=&#34;母鸡&#34; width=&#34;300&#34; height=&#34;197&#34; class=&#34;alignnone size-medium wp-image-426&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;不过，在人都顾不过来的情况下，也没有人会理会这些生命了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>清理Google Reader订阅</title>
      <link>https://qingbo-net.pages.dev/archives/231/</link>
      <pubDate>Wed, 11 Jun 2008 14:04:11 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/231/</guid>
      <description>&lt;p&gt;最近非常忙，Google Reader已经很久没看过了，几千未读。&lt;/p&gt;
&lt;p&gt;不过有时候在网上会看到几个非常非常有价值的blog，很想订阅，不过想想Google Reader里现在那一坨垃圾就作罢了。今天抽空把大部分的没什么意义的Feed全部清理了，以后订阅就选那些万里挑一的精华，当然是跟自己的职业紧密相关的。&lt;/p&gt;
&lt;p&gt;比如像我的blog这样无聊的，绝对是在退订之列。什么儿女情长，什么生活闲趣，太他妈的无聊了。&lt;/p&gt;
&lt;p&gt;那些玩技术的blog，也纯粹是浪费读者时间，做技术和玩技术还是有很大区别的。&lt;/p&gt;
&lt;p&gt;世界清净了！&lt;/p&gt;</description>
    </item>
    <item>
      <title>方正宽带够恶心的</title>
      <link>https://qingbo-net.pages.dev/archives/230/</link>
      <pubDate>Wed, 28 May 2008 14:05:50 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/230/</guid>
      <description>&lt;p&gt;搬家之后才发现有方正宽带这么一个东西，原住户跟我们说只能一台电脑同时上网，我还感觉奇怪。后来发现果然是这样，更可恶的是我们的笔记本都不能上网，提示“IP地址或MAC地址错误”。看来是绑定了MAC地址，到了能上网的地方登陆方正网站，发现里面果然绑定了两个MAC地址。&lt;/p&gt;
&lt;p&gt;刚才打电话给方正客服，态度不错，并且轻车熟路地问了我一些信息之后帮我绑定了新的MAC地址，看来这个问题是很普遍的了。&lt;/p&gt;
&lt;p&gt;网上也有一些帖子讲怎么破解它的限制，怎么共享上网之类的，但是我不想搞这么麻烦了。中午在旁边的一家网通营业厅咨询了一下，准备马上申请网通ADSL，这样我可以自由自在地用无线路由了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Internet Explorer无法打开站点，已终止操作</title>
      <link>https://qingbo-net.pages.dev/archives/229/</link>
      <pubDate>Wed, 23 Apr 2008 01:33:04 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/229/</guid>
      <description>&lt;p&gt;看到这个对话框，谁都会骂微软的娘，妈的，又来浪费老子时间！不过我们骂也就是出出气而已，大部分人群智商比较低，造成了微软市场运作的成功。&lt;/p&gt;
&lt;p&gt;关于这个问题比较合理的解释，&lt;a href=&#34;http://liuguanyu.blog.hexun.com/13570806_d.html&#34;&gt;这里有一个&lt;/a&gt;：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在页面还没有ready的时候就调用了htmlObject的appendChild或者innerHTML操作，这样会在IE上弹出一个对话框：“Internet Explorer无法打开站点,已终止操作”&lt;/p&gt;
&lt;p&gt;解决方法有两个：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;在appendChild或者innerHTML操作处判断document.readyState==”complete”, 若为否，则setTimeout若干秒之后重新作这个操作。
但是，此属性只对ie，opeara有效，ff的document没有readyState属性，永远是undefined. &lt;/li&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在script中使用defer属性。意在页面加载完毕后再执行脚本,这样可以避免找不到对象的问题。defer不会考虑外部文件是否全部下载完，只会判当前页面是否全部加载完成。并且，有defer标签的代码块里不能写document.write方法&lt;/ul&gt; &lt;/blockquote&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;和一般的javascript语法错误不一样，即使启用了脚本调试，IE也不会让你去调试这个错误。所以看到这个对话框，你就应该检查哪些javascript语句在文档还没有load完成时执行了一些dom操作。&lt;/p&gt;
&lt;p&gt;除了上文提到的两种办法，当然也可以把这些操作放在页面的onload事件处理中执行。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Google Talk桌面客户端新版</title>
      <link>https://qingbo-net.pages.dev/archives/228/</link>
      <pubDate>Sat, 19 Apr 2008 07:46:50 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/228/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.google.com/talk/labsedition/&#34;&gt;Google Talk Labs Edition&lt;/a&gt;发布已经有一段时间了。我刚刚安装的时候，发现除了把一些网页版的功能加入之外，整体上变得极其难用。&lt;/p&gt;
&lt;p&gt;没有了设置选项的地方，聊天记录不能复制，刚打开时输入中文总是乱码，搜索联系人也不好用……&lt;/p&gt;
&lt;p&gt;不过几天前某同学发给我她的flickr地址，gtalk马上把这个地址转化成了一个缩略图和两个按钮，一个按钮是打开该链接，另一个按钮点击后，直接在gtalk顶部以幻灯片方式浏览这个相册，太酷了！&lt;/p&gt;
&lt;p&gt;我立即联想到了Youtube，于是给对方发送了一个youtube的视频地址，果然不出所料，gtalk用同样的方式处理了这个链接，点击View即可在顶部观看这个视频。这样，在gtalk上分享视频的时候，就可以不中断双方的对话，可以一边观看视频一边继续交谈或者交流观看视频的感受，使得沟通变得更加流畅。&lt;/p&gt;
&lt;p&gt;似乎Gtalk的官方博客并没有提到与flickr/youtube的集成，只有一些“小道消息”对此有所提及。&lt;/p&gt;
&lt;p&gt;后来与人共享Google Spreadsheet的时候，发现其中的聊天模块也换成了和Google Talk Labs Edition一样的一个Flash——桌面版其实也是个Flash，因为我在一台新机器上试用的时候，它要求我先安装adobe flash player. 在这里，flickr/youtube的链接也被特殊照顾。&lt;/p&gt;
&lt;p&gt;不过朋友在Google docs中选择的语言是中文，她那里显示的是和我差不多的聊天窗口，也是flash，不过flickr/youtube的链接没有作处理，不知道是什么原因。&lt;/p&gt;</description>
    </item>
    <item>
      <title>WordPress中的英文(半角)单引号</title>
      <link>https://qingbo-net.pages.dev/archives/227/</link>
      <pubDate>Fri, 18 Apr 2008 13:18:45 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/227/</guid>
      <description>&lt;p&gt;在WordPress里，保存文字时系统都会有一些filter函数对输入的文字进行处理，然后再输入数据库。但是这个过程中英文(半角)单引号的处理有些诡异。&lt;/p&gt;
&lt;p&gt;无论是在设置中的blog标题，还是日志，输入的英文单引号都会被转换成”’”这样的表示方法。在HTML页面中输出特殊符号(HTML entities)时转换成这样的表示非常值得推荐，问题是”’”表示的是全角的单引号，即中文的单引号。&lt;/p&gt;
&lt;p&gt;我们一般也不会在意，不过昨天，我帮她搬家的国内互联网某知名博客（其blog标题中有个单引号）说很丑。于是我想了想，英文单引号的正确表示是”&#39;”，填入，然后点击Save Changes。嗯，真正的英文单引号显示在了标题栏，世界清净了。&lt;/p&gt;
&lt;p&gt;不过此时要注意看，Blog Title输入框里的”&#39;”又变成了英文单引号！如果再次点击Save Changes，那么前功尽弃，单引号又变成了全角。所以每次保存这个表单时，都需要把这个引号用”&#39;”替换，再保存。&lt;/p&gt;</description>
    </item>
    <item>
      <title>从blogbus搬家到WordPress</title>
      <link>https://qingbo-net.pages.dev/archives/226/</link>
      <pubDate>Thu, 17 Apr 2008 15:24:37 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/226/</guid>
      <description>&lt;p&gt;最近刚刚帮国内互联网某知名女博客搬了家，稍微写点东西。&lt;/p&gt;
&lt;p&gt;据她说，许多人对她说“使用wordpress是成名的第一步”。又据说还有Blogbus的人跑去留言“Blogbus竟然还有这样的人”。要是一直用WordPr&lt;br&gt;
ess，早就火了。&lt;/p&gt;
&lt;p&gt;Blogbus也算国内数一数二的BSP了（新浪、搜狐那些不能叫做blog，也就不算在BSP之列——顺便鄙视一把），导入功能做得炉火纯青，然而导出就只是作为备&lt;br&gt;
份用了。这也不能怪blogbus，因为各种blog平台之间并没有统一的交换格式。普通的RSS输出显然不能胜任，因为完整的转换至少还要包括评论以及评论与日志之&lt;br&gt;
间的对应关系。&lt;/p&gt;
&lt;p&gt;然而一旦有了备份，一般情况下也就解决了问题。比如WordPress就提供了导入Movable Type导出文件的功能，Movable&lt;br&gt;
Type同样也有导入WordPress eXtended RSS（WXR）的功能。&lt;/p&gt;
&lt;p&gt;不过东方文明还不为西方世界所熟知，譬如Automattic就不知道东方有一个Blogbus，所以WordPress没有直接提供导入Blogbus文件的功能，&lt;br&gt;
我们只好绕一些弯路。&lt;/p&gt;
&lt;p&gt;事实上这条路已经有很多人走过。冰古算是一位先驱，先后几次更新他的&lt;a href=&#34;http://bingu.net/blog/308/update-blogbus-to-wordpress/&#34;&gt;转换程序&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;这里又有一位blogger在冰古的启发下写了一个从blogbus备份转换为MT导出文件的&lt;a href=&#34;http://ease.blogbus.com/logs/3284856.html&#34;&gt;脚本&lt;/a&gt;，使得评论也可以导入WordPress，但是该文章中的&lt;br&gt;
下载似乎已成为死链接。另外许多用户反映在服务器上运行时，浏览器中不能显示程序的输出，从而无法复制。这是由于脚本的第一行中指定了Content-type:&lt;br&gt;
text/xml，浏览器就将它的输出作为xml格式解析。解决办法就是改为Content-type: text/plain.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://qingbo.org/wp-content/uploads/2008/04/bb2wp.zip&#34;&gt;下载脚本文件&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;我转换的过程中，分类没有导过来，其它的还算正常。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ajax.Autocompleter不支持中文</title>
      <link>https://qingbo-net.pages.dev/archives/225/</link>
      <pubDate>Wed, 16 Apr 2008 12:37:14 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/225/</guid>
      <description>&lt;p&gt;最近在使用&lt;a href=&#34;http://script.aculo.us/&#34;&gt;scriptaculous/&lt;/a&gt;完成项目中的一处自动提示功能时，发现Ajax.Autocompleter对中文支持很不好。&lt;/p&gt;
&lt;p&gt;我用的是Google拼音输入法，在输入汉字的拼音时，输入完第一个字母后即触发输入框的事件，js就向服务器查询相应的匹配。实际上此时汉字尚未上屏，出来的匹配是该汉字首字母匹配（英文的）。这样，自动提示功能不仅毫无用处，而且会让用户莫名其妙。&lt;/p&gt;
&lt;p&gt;一番探索之后，发现scriptaculous是在捕捉到keypress事件时向后台发起查询请求的，我仅简单地把keypress改为keyup，即解决了支持中文输入的问题。显然，这是由于输入法在浏览器的更上层处理了键盘事件的缘故。不过本方法没有经过广泛的测试，我只是在Firefox+Google拼音这个组合中试验通过。&lt;/p&gt;
&lt;p&gt;似乎现在jQuery的发展正如日中天，各种插件数不胜数。尽管Prototype以及基于它而来的一些js library仍旧占据着很大的市场，但相对于jQuery来说已经是在走下坡路。&lt;/p&gt;</description>
    </item>
    <item>
      <title>美景在于心情</title>
      <link>https://qingbo-net.pages.dev/archives/224/</link>
      <pubDate>Fri, 11 Apr 2008 16:28:54 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/224/</guid>
      <description>&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;p&gt;今天早上，刚下过雨，空气像被过滤了一样，很新鲜。走在路上的时候，我就想，假如我在这里没有那么多的琐事缠身，我是来这里度假，这个城市里也有许多让人留恋的美景，生活也可以很美好。回来之后发现门口的一树桃花挤得都放不下了，可是已经过了最鲜艳的时候。玉渊潭的樱花，估计也错过不少了吧。在没有好心情的时候，这些美景会马上被忽略。&lt;/p&gt;
&lt;p&gt;忙过这一阵，如果有时间，我想去欢乐谷，找点刺激，放松一下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>迟来的燃气缴费单</title>
      <link>https://qingbo-net.pages.dev/archives/223/</link>
      <pubDate>Fri, 11 Apr 2008 14:23:04 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/223/</guid>
      <description>&lt;p&gt;我们楼的煤气缴费通知单都放在一楼门口的一个纸袋里，可是这次单子发下来的时候，我却找不到我们房间的。说是“这次”，似乎已经过去一个月了。我去问值班的大爷，他先给我来了一段广告，让我租他的房子……blabla……然后才告诉我两个电话——62344438/62344439——我后来才发现以前的缴费单上就写着这个电话。&lt;/p&gt;
&lt;p&gt;于是我不辞劳苦地打啊打啊，可是这两个号码就好像民生银行的客服一样——打不通！过了几天，终于打通了，对方说帮我查一下，然后回电话。过了两天，果然给回了电话，真让我意外加激动，说星期一给我补一张，我连忙道谢。可是到了星期一，我却没有发现补来的煤气单子。&lt;/p&gt;
&lt;p&gt;正好此时去了广东。快回来的那几天，我就开始想回来之后的几件麻烦事，其中之一就是这煤气费。我想，虽然收不到缴费单不是我的责任，但是燃气公司肯定也不会认为是他们的责任，滞纳金不知道有多少，对租给我房子的房东也不知道有没有影响。&lt;/p&gt;
&lt;p&gt;前天，我终于鼓起勇气开始了第二轮轰炸，没想到第三次就打通了，真是幸运。这次直接找来了管我小区的人来接听，我说明情况后，对方就说，你这是欠费了啊。没办法，你不给我单子，我不欠费怎么办？这么神秘的组织，电话打不通，地址也不知道，就管收钱。后来说给我补一张，我说已经补过一回了，对方说第二天下午给我送过来。&lt;/p&gt;
&lt;p&gt;昨天下班回家，终于看到了亲爱的通知单，最迟交费日期一栏写的是4月18日，不错，看来没把责任算在我头上。&lt;/p&gt;
&lt;p&gt;你想想，追着人家给钱！这是什么道理呢？绑匪一般都是通知人“你把钱放在某某地方，钱到手了我就放人”。燃气公司可厉害多了。“您要多少钱？”“我把金额放到某某地方，你看到了就去交钱！”于是我就屁颠屁颠去看该交多少钱，空手而归，还得求人家，“拜托赶紧告诉我多少钱吧！”&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows挂载Linux硬盘（解决乱码）</title>
      <link>https://qingbo-net.pages.dev/archives/222/</link>
      <pubDate>Fri, 07 Mar 2008 12:49:33 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/222/</guid>
      <description>&lt;p&gt;前阵子，一台Linux服务器因为根分区满了，挂掉了。紧接着在光盘恢复的过程中发现机器的硬件也有问题，不定时地重启，非常不稳定。尝试了几次，根分区没办法似乎恢复。而因为频繁重启，其它分区的数据也不容易复制出来。&lt;/p&gt;
&lt;p&gt;于是试图在另一台Linux机器上挂载这一块硬盘，结果启动的时候说有重复的/boot label，导致什么错误，启动不了。查了一下，似乎要先改卷标，又要装到服务器上弄。当时嫌麻烦，用一个小U盘复制出来一部分关键数据，就搁那不管它了。&lt;/p&gt;
&lt;p&gt;今天正好有点时间，试着把硬盘拿来装在了我用的Windows机器上。启动一切顺利，进入系统后右下角有一个图标指示发现了新的驱动器，很快就安装好了。打开磁盘管理，发现两个硬盘，其中一个正是刚安装的Linux硬盘，分区状态都是良好，Good.&lt;/p&gt;
&lt;p&gt;然后下载了一个&lt;a href=&#34;http://uranus.it.swin.edu.au/~jn/linux/explore2fs-old.htm&#34;&gt;Explore2fs&lt;/a&gt;，结果打开一看中文都是乱码。然后又尝试TotalCommander的&lt;a href=&#34;http://www.totalcmd.net/plugring/ext2fsreiser.html&#34;&gt;Ext2fs+Reiser 1.3&lt;/a&gt;插件，发现它读取ext3分区实际上就是用的Explore2fs，同样乱码。最后终于找到了救星——&lt;a href=&#34;http://ext2fsd.sourceforge.net/&#34;&gt;ext2fsd&lt;/a&gt;. 这东西用起来有点麻烦，打开后，选中想读取的分区，要给它分配一个Windows盘符，然后启动服务，在Windows Explorer里就可以像普通的Windows分区一样打开它了！对了，解决乱码——因为Linux系统一般用的是UTF-8编码，所以右键点击这个分区，选择“配置Ext2卷属性”（没关系，Ext3分区它也给这样的菜单项），在语种编码下拉列表中选择utf8，结果如图：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;ext2fsd&#34; loading=&#34;lazy&#34; src=&#34;http://qingbo.org/wp-content/uploads/2008/03/ext2fsd.PNG&#34;&gt;&lt;/p&gt;
&lt;p&gt;打开F盘，我想要的东西都在里面了，什么时候愿意就把它们复制出来(据说ext2fsd复制的速度也比较快，相对其它的同类软件)……早知道这么容易，何必当初在频繁重启的间隙中寻找机会。。。&lt;/p&gt;
&lt;p&gt;好了，跟我一起喊：我们的目标是——没有乱码！&lt;/p&gt;</description>
    </item>
    <item>
      <title>行路难</title>
      <link>https://qingbo-net.pages.dev/archives/221/</link>
      <pubDate>Thu, 21 Feb 2008 14:12:13 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/221/</guid>
      <description>&lt;p&gt;我们那里的春运秩序太混乱了。&lt;/p&gt;
&lt;p&gt;回家那一天，上了一辆车，说是直达，结果到了保定就说车坏了，然后给了车上每人一张事先买好的到县城的票。这样倒是便宜一点，不过许多乘客因为被欺骗了，很生气，骂了他们祖宗好几辈，还差点动手。感谢这些兄弟拖住了他们。我急匆匆走出几百米后，突然想起箱子拉在车里了，回去一看，还在骂。关键问题在于，大家不知道去哪里投诉，说不定车站方跟他们是一伙呢。&lt;/p&gt;
&lt;p&gt;今天在县城车站，我要上直达车，售票员说满了。我走了，她又喊我回去，让我在站外等。于是车出站后，我上去了。没有座位，售票员变出两个小马扎。直达车省得在保定倒车，就这样凑和着吧……这时超员2个，包括我。后来一路上见客就拉，真是比公交车方便多了，就像某些小城市的公交，“招手停车，随处下车”。我真庆幸自己有个“座”。后来拉的大多是到保定的，到了保定某个公交站，售票员说要上高速，去保定站的赶紧下车，给你们一人一块钱坐8路公交车，啧啧，服务真是周到。有的人不想下，售票员说，不能超员啊！乘客说，一路上挤死了，还不超员啊。售票员说，保定就是咱家，超员怕什么啊，去北京就不行了！&lt;/p&gt;
&lt;p&gt;其实，上了京石高速，还是像最初那样超员2个，不过售票员不知道什么时候消失了。高速上走了不到半小时，嘭的一声巨响，车身剧烈颤抖了一下，然后砰砰的不停响，我周围的乘客吓得惊慌失措。司机把车靠在边上下车看了一下，后轮爆了一个，又上车慢慢开到紧急停车带，修车去了，许多乘客下车去放风。我看了一眼那个轮胎，一排钢丝都断了。真是倒霉。。。&lt;/p&gt;
&lt;p&gt;花了半个小时，换了一个轮胎，终于继续前进了。&lt;/p&gt;
&lt;p&gt;别看我家离北京直线距离大概只有250公里，可是走一趟可真不容易。比如回去的时候，早上四点半起床，坐车到木樨园，七点左右从北京走，九点半左右到保定排队换车，十一点的时候才绕保定转了一圈出了城，下午一点半到了我们县城，进那个小破车站时，楞堵了20多分钟……然后又换一个到我家的车，大概四点半回去了，基本上是12个小时。从北京到上海也用不了这么久啊，奶奶的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>gDocsBar – 在Firefox侧栏管理Google Docs</title>
      <link>https://qingbo-net.pages.dev/archives/220/</link>
      <pubDate>Sun, 27 Jan 2008 18:16:17 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/220/</guid>
      <description>&lt;p&gt;如果你日常生活、工作中大量使用Google Docs，一定要试一试这个刚刚发布的Firefox扩展——&lt;a href=&#34;http://www.gdocsbar.com/&#34;&gt;gDocsBar&lt;/a&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;gDocsBar is a sidebar extension for firefox, a perfect companion for Google® Docs.&lt;/p&gt;
&lt;p&gt;With gDocsBar, you can drag and drop multiple files into the sidebar to upload documents.&lt;/p&gt;
&lt;p&gt;You can search, filter documents right from the sidebar.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;个人觉得打开Google docs的首页是非常慢的，除了网速的限制，大量的JavaScript也是一个问题。这个扩展真的很方便，也可以提高使用Google docs的效率。&lt;/p&gt;</description>
    </item>
    <item>
      <title>08年春节火车票纪事</title>
      <link>https://qingbo-net.pages.dev/archives/219/</link>
      <pubDate>Fri, 25 Jan 2008 16:06:46 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/219/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;中国人回家的过程充分说明：有苦才有甜。就是这苦也太大了点！&lt;br&gt;
—- 2008-01-20 21:05 写在&lt;a href=&#34;http://fanfou.com/statuses/CRgV7Nkd9dk&#34;&gt;饭否&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;img style=&#34;float:right;&#34; src=&#39;http://qingbo.org/wp-content/uploads/2008/01/ticket.jpg&#39; alt=&#39;东方红，太阳升&#39; /&gt; 
&lt;p&gt;女朋友在快要走的时候突然感冒了，于是我便去火车站退票并买张新的——不改签是因为本来是硬座，想换个卧铺。&lt;/p&gt;
&lt;p&gt;到了西站，人流拥挤。进入售票厅，广播说西侧停车场新开120个售票窗口，退票在地下二层。不时地有广播说某窗口还有一张到某地的卧铺，一坨人就围上去抢。平日的售票厅里人还是特别多的，于是我直奔地下去退票。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;恍若人才市场&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;到了退票窗口那里，我的兲哪，这简直就是到了人才市场（实际上，我没实际见过人才市场，这里说的是我想象中的样子，或者说菜市场？）啊。许多人手里拿着一张纸放在胸前，像是简历一样，行人路过的时候还专门摆正方向，好让人看清楚。也有许多人像老板一样徜徉在其中，见个“简历”就瞅一眼，找不到满意的就摇头叹息。他们不想退票，一张500块的票，一退就损失100. 而对于想买票的人来说，在这里碰运气也是不错的选择，座位早就没了，而票一旦被退了，能在窗口买到的几率也小之又小。这个市场的形成是自然而然的，解决两类人的需求。&lt;/p&gt;
&lt;p&gt;在我退票的时候，就有许多人过来看，可惜没有一个人要，不然也可以省几十块钱了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;穷人怎么回家？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;退了票，我去旁边的黑店买了根火腿，借机问了西侧停车场怎么走。那里真是地广人稀，只不过天气冷一点，或者人们不愿意买根火腿来问路，基本上每个窗口前就一两个人。&lt;/p&gt;
&lt;p&gt;我前面站着个小伙子，售票员给他查出一张票，说57. 他问，有慢车吗？售票员很奇怪地说，这是快车！我也很奇怪。他坚持说，我就要慢车啊，我没那么多钱。这时我注意到他手里捏着皱巴巴的50块钱。当时心里就一阵感慨……回来之后别人说，你怎么不帮他一把呢？是啊。&lt;/p&gt;
&lt;p&gt;轮到我了，问了一下，别说卧铺了，座位都没有。已经是晚上8点钟，过了一个小时了，很正常。去公交站等车，通过短信在饭否发了本文开头的感慨……&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;信息化时代，抛弃传统人才市场&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;记得有位伟人说过，二十一世纪是信息化的世纪。第二天，我就开始在酷讯上想办法，这基本上是我第一次用酷讯的&lt;a href=&#34;http://piao.kooxoo.com/&#34;&gt;火车票搜索&lt;/a&gt;。不出意外，酷讯贴心地提供了邮件订阅的功能，可以指定起点、终点以及日期范围。我将广州和深圳两条线路订阅到Gmail，加上Gtalk的邮件提示功能，一般情况下有人在网上发布了火车票转让信息，10分钟左右就可以通知到我，一天大约有50条左右的信息。有了这么先进的工具，买张票真是太简单了，肯定会有很多人临时改变行程的嘛！关键在于很少人会利用这么高效的工具，我的成功率就大大提高了。&lt;/p&gt;
&lt;p&gt;当然这是高兴得有点早了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;信息化时代，挑战信用&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在网上买票，我有意避开那些黄牛。一打电话对方就说，“我先跟你说清楚啊，我这票是怎么怎么弄来的，你得给我加多少多少”，我兴趣就不大了。这要么就是老黄牛，要么就是从黄牛那弄来的，要么就是想临时当一次黄牛。那么多的票，我干嘛要买贵的呢？我主动上门去帮你无损失退票，你还要我的钱？太黑了吧 🙂 可是，让人不安的不只票贩子。&lt;/p&gt;
&lt;p&gt;当天晚上的时候，联系到一位广东人（听口音）。跟他说好，第二天早上我过去拿，不要卖给别人了。对方满口答应，还说原价转让，不加钱了。我挺高兴，定好闹钟第二天早上七点起床（我保证是2008年起得最早的一次，平时都是九点半），怕打扰对方睡觉，我在坐车到了地铁站的时候，才给他打电话。和我担心的一样，他把票给卖了……据他说，是他父亲把票给卖了。平日里很愤青的我倒不是特别生气（大概是没睡醒），不过你知道票已经卖了，告诉我一声多好啊？还好我还没完全醒来，回来继续睡到正常起床时间，就当做了一个梦。hefa说双方都感受到信用危机，是的。不过他确实应该通知一下，不是吗？&lt;/p&gt;
&lt;p&gt;正式起床后到了公司，打开电脑，一堆转让信息已经在邮箱里了。找了一个不太像票贩子的打过去，对方说买重了，别人还没给她送过去呢，让我第二天过去拿。女朋友不是太急着走，所以我就答应了（看，我还是比较容易相信别人的，刚被放了一次鸽子）。过了一会，又接到对方的电话，竟然怕我有变，让我下午就去拿，还说因为我是第一个打电话的，后面的都直接拒了。这下我就放心了，遇上个有谱的人。于是，我也上酷讯取消了订阅。&lt;/p&gt;
&lt;p&gt;下午4点钟接到对方电话，让我过去拿。我坐了一溜地铁，包括在西直门走了一遍迷宫，终于见到了亲爱的——火车票。票价加5块手续费，我给了个整还找我两块钱，太厚道了。办公室一同事通过酷讯找了个票贩子，150的票都加了80——他急着要票，没办法。相比之下，我命太好了 🙂&lt;/p&gt;
&lt;p&gt;正所谓：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;千金易得，一票难求。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;同志们，回趟家不容易啊。看那些连快车票都买不起的，看那些有票挤不上的，看那些在回家的铁轨上惨死的……能回到家的，珍惜和家人的时间吧！&lt;/p&gt;</description>
    </item>
    <item>
      <title>去除Firefox中点击链接时的虚线边框</title>
      <link>https://qingbo-net.pages.dev/archives/218/</link>
      <pubDate>Thu, 10 Jan 2008 13:15:00 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/218/</guid>
      <description>&lt;p&gt;在Firefox里，鼠标点击一个链接时，它的周围即出现虚线画出的边框。这种例子遍地都是，在WordPress后台写这个文章的时候，随手点一下右边那些widget，就看到了这个问题（图片的右上角）：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;WP-admin link&#34; loading=&#34;lazy&#34; src=&#34;http://qingbo.org/wp-content/uploads/2008/01/wp-admin-link.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;在某些特殊的情况下，比如做一个导航菜单的时候，出现这个情况时效果就很糟糕了，因为Firefox会错误地扩大链接的边框：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Digg Menu Link&#34; loading=&#34;lazy&#34; src=&#34;http://qingbo.org/wp-content/uploads/2008/01/digg-menu-link.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;🙂 这是我用Firebug修改了Digg的CSS截到的效果。Digg的设计是比较完美的。&lt;/p&gt;
&lt;p&gt;在Firefox的地址栏输入about:config，回车。有一个配置项叫做“&lt;a href=&#34;http://kb.mozillazine.org/Browser.display.focus_ring_width&#34;&gt;browser.display.focus_ring_width&lt;/a&gt;”，把它修改成0，点击链接时就不会出现那个边框。但这样的话，在焦点落在按钮上时也没有了边框指示。而且作为一个开发者，在浏览器里设置这个属性，无异于掩耳盗铃。&lt;/p&gt;
&lt;p&gt;这实际上是Firefox在&lt;a&gt;这个标签处于focus状态时（pseudo selector – a:focus）给它加的outline属性。&lt;/p&gt;
&lt;p&gt;正确的解决办法是在CSS里加一个规则：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;a {&amp;lt;br /&amp;gt; outline: none;&amp;lt;br /&amp;gt; }&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;或者缩小范围：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;a:focus {&amp;lt;br /&amp;gt; outline: none;&amp;lt;br /&amp;gt; }&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;后者使得鼠标左键在链接上按下，松开之前的这段时间里，仍会显示虚线的outline.&lt;/p&gt;
&lt;p&gt;在我看到的大部分网站中，都把这条规则写在CSS里。或许Firefox该考虑去掉这个的默认outline.&lt;/p&gt;</description>
    </item>
    <item>
      <title>JavaScript</title>
      <link>https://qingbo-net.pages.dev/archives/217/</link>
      <pubDate>Wed, 26 Dec 2007 15:59:34 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/217/</guid>
      <description>&lt;p&gt;“用”了这么久的JavaScript，却始终对这个语言有一种很陌生的感觉。&lt;a href=&#34;http://prototypejs.org/&#34;&gt;Prototype&lt;/a&gt;和&lt;a href=&#34;http://script.aculo.us/&#34;&gt;script.aculo.us&lt;/a&gt;一直在用，可是它们的源代码，说实在的，我看不大懂。JavaScript非常灵活，也使得它比较难以掌握。另外由于各种浏览器实现之间的差异，使得它显得更加混乱，所以在最开始接触JavaScript的时候，我就困惑，在哪里找到一个比较权威的reference呢？&lt;/p&gt;
&lt;p&gt;如今JavaScript的代码写了应该有上万行了，不过大部分都是借助于Prototype和script.aculo.us以及其它的一些library，而且我自己感觉，事情是做成了，代码还有很大的提升空间。以后准备抽出一定时间来，把JavaScript的基础补一下，争取在面对任何JavaScript代码的时候，都像C++、Java一样，知其然，且知其所以然。比如：this到底指的是什么？&lt;/p&gt;
&lt;p&gt;从哪里开始？当然是&lt;a href=&#34;http://developer.mozilla.org/en/docs/JavaScript&#34;&gt;MDC&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>仙人掌，仙人球</title>
      <link>https://qingbo-net.pages.dev/archives/216/</link>
      <pubDate>Tue, 04 Dec 2007 15:55:33 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/216/</guid>
      <description>&lt;img decoding=&#34;async&#34; src=&#34;http://photo1.bababian.com/upload6/20071203/4766553A7200D05AFFD69D737023EB87_240.jpg&#34; alt=&#34;仙人球&#34; /&gt;
&lt;p&gt;在淘宝上买了三盆仙人球，上周六送到的。我喜欢中间那个大的（据说叫金琥），一来看起来稍稍壮观一点，二来刺也很帅，不像那两个小的，好像发霉了长的毛一样。刚拿到的时候觉得金琥长歪了，后来才发现它根本没有扎根，我就把它扶正。看到过邻居把仙人球养得很大很大的，希望我也能把它养大……&lt;/p&gt;
&lt;p&gt;想起自己小时候刚见到仙人掌，是看到村里有一家人的窗台上放了一盆。找了一个小伙伴，一起爬上去，揪下几片叶子，塞裤兜里就跑了。那仙人掌可不是现在买的这样的，要么没有小刺，有小刺也扎不着。它每个刺孔里有根粗刺，周围有一堆小刺。粗的不怕，那小的扎到衣服上、肉里，就别想拔出来了，还有毒。那次那个痛苦啊……&lt;/p&gt;
&lt;p&gt;回去之后找了个盆，把叶子插进去，慢慢地就活了。可是到了冬天，我还放在屋外，给冻死了。虽然是鲜血换来的，也得扔到垃圾堆里了。第二年夏天的时候，偶然路过那个垃圾堆，发现那个我以为已经死掉的仙人掌又复活了，还长出好多叶子，好高，于是就又搬回到花盆里。那之后也仔细地观察过一片叶子是如何顶出来，慢慢长大的。后来我去外地上学，回家后看见又变成了孤零零一片叶子，我妈说有人生病，要用它配药，就剪去了。再后来也不知道什么时候，仙人掌就没了。&lt;/p&gt;
&lt;p&gt;网上讲仙人球的养殖也讲得神乎其神的，像养宠物一样。我虽然挺喜欢它，也不会“宠”它的……&lt;/p&gt;</description>
    </item>
    <item>
      <title>数列题的答案</title>
      <link>https://qingbo-net.pages.dev/archives/215/</link>
      <pubDate>Mon, 03 Dec 2007 14:45:54 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/215/</guid>
      <description>&lt;p&gt;前几天在blog上出了一道&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post256.html&#34;&gt;数字序列题&lt;/a&gt;，&lt;a href=&#34;http://blacktulip.cn/&#34;&gt;blacktulip&lt;/a&gt;很快给出了答案：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;625?&lt;br&gt;
a(n)=a(n-1)*3+a(n-2)+1 (n&amp;gt;2)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;后来在msn群里问，有几个同学也很快得出这个结果。而我想这道题的时候脑子就有点歪，想到了另一个答案：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;a(n) = {a(0) + … + a(n-1)} * 2 + 3^(n-2)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;这样算出下一个数字是621. 告诉最初问我的朋友，他说不对，是625. 我又想了一下，得出了上面blacktulip那个公式。我告诉他我想出的公式，和链接中的标准答案其实是“同等正确”的，即a(0), a(1)都是例外……只不过我的公式更复杂一点。&lt;/p&gt;
&lt;p&gt;朋友给了我&lt;a href=&#34;http://www.research.att.com/~njas/sequences/?q=1%2C+1%2C+5%2C+17%2C+57%2C+189&amp;amp;language=english&amp;amp;go=Search&#34;&gt;一个链接&lt;/a&gt;，是他的问题的缘起。嗯，这是个很有意思的网站，“&lt;a href=&#34;http://www.research.att.com/~njas/sequences/Seis.html&#34;&gt;整数序列的在线百科全书&lt;/a&gt;”，是AT&amp;amp;T的研究人员维护的，页脚有许多有趣的分类，可以去看看。&lt;/p&gt;</description>
    </item>
    <item>
      <title>生活太单调</title>
      <link>https://qingbo-net.pages.dev/archives/214/</link>
      <pubDate>Fri, 30 Nov 2007 16:34:14 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/214/</guid>
      <description>&lt;p&gt;仔细想想，我发现好几个月了，我的活动范围几乎都在一平方公里的小圈子里，坐车都不会坐过站——今天早上一同事还因为看美女坐过站了呢。&lt;/p&gt;
&lt;p&gt;每天对着电脑，工作、熬夜。连购物都越来越倾向于在网上进行。&lt;/p&gt;
&lt;p&gt;这样不好，不好。昨天hexy提醒我说注意休息，不然到了30就痛苦了，嗯，我的生活方式太不健康了。&lt;/p&gt;
&lt;p&gt;生活单调，容易造成心情不好，心理狭隘——所以我要改善。&lt;/p&gt;
&lt;p&gt;比如说摆弄摆弄花草？嗯，我在淘宝上订了几盆仙人球，白天就可以收到 🙂 ameng劝我在街上买，我犹豫了一下，还是在网上买了……&lt;/p&gt;
&lt;p&gt;跟卖家说，给我挑几个根红苗正的。我要把它们养得肥肥胖胖的，生出许多小仙人球，看谁不爽就摘一个扔给他！&lt;/p&gt;
&lt;p&gt;怀着对仙人球的期待，睡觉了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>1, 1, 5, 17, 57, 189,</title>
      <link>https://qingbo-net.pages.dev/archives/213/</link>
      <pubDate>Thu, 29 Nov 2007 14:41:12 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/213/</guid>
      <description>&lt;p&gt;下一个数字是什么？&lt;/p&gt;
&lt;p&gt;前天Gtalk上一个朋友发给我这个题目，说他也不知道答案。过了一会他说知道结果了，不过说这个题目有点”evil”。我带回家来想了一会，也出了一个答案。但第二天对答案的时候，我们的结果却不一样……但“正确的程度”是相同的。&lt;/p&gt;
&lt;p&gt;嗯，得出的公式中，序列中前两个数字都是不符合规律的，所以这个序列题是比较牵强的。&lt;/p&gt;
&lt;p&gt;想想看，下一个数字该是几呢？请给出你的规律。先不告诉你已知的答案 🙂&lt;/p&gt;</description>
    </item>
    <item>
      <title>Blog 浴火重生</title>
      <link>https://qingbo-net.pages.dev/archives/212/</link>
      <pubDate>Wed, 28 Nov 2007 15:10:10 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/212/</guid>
      <description>&lt;p&gt;前几天看到aw写他的blog&lt;a href=&#34;http://www.awflasher.com/blog/archives/1121&#34;&gt;服务器挂了&lt;/a&gt;，造成了重大损失，还为他惋惜。但是我却没有想到同样的灾难也在向我逼近，26号，服务器硬盘损坏，从杭州运到上海修理，我的blog也从那时挂了，到现在才好。比起aw来，我值得庆幸的是现在基本上所有的数据库数据都没有丢失。&lt;/p&gt;
&lt;p&gt;有了这回事，我打算重新开始定期备份数据库了。以前都是每天自动发送一个备份到Gmail的，后来发得多了，觉得没什么用，就停了。这次的数据本来是18号以后的都丢了，下午的时候我发现丢了3篇日志、若干评论。IDC告诉我不要加新数据，他们要恢复数据。如果是像以前那样每天有备份的话，就不用这么担心了……&lt;/p&gt;
&lt;p&gt;上一篇日志，其实是两天前就写好的，只是作为draft，没有发布。现在终于吐出来了 🙂&lt;/p&gt;
&lt;p&gt;国内虚拟主机还是不能尽如人意，所以近期打算买个国外的虚拟空间，目标大致就是hostmonster, bluehost, dreamhost这几个吧（似乎前两个是一家）。苦啊，国内的质量差而且太和谐，国外的不和谐……苦啊。&lt;/p&gt;
&lt;p&gt;有朋友还正好问我，国内哪个PHP空间好？唉，怎么说呢，怎么说呢。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Nokia地址簿的bug</title>
      <link>https://qingbo-net.pages.dev/archives/211/</link>
      <pubDate>Sun, 25 Nov 2007 10:08:50 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/211/</guid>
      <description>&lt;p&gt;最初用手机是一个波导，很结实。不过有一个很严重的问题就是，全部删除短信时，收到的短信也会一并被删除。因为它只能存储30条短信，所以这个事情经常发生。听到短信提示音，却看不到短信，那才叫郁闷，连谁发的都不知道！总不能挨个问一遍吧。所以我一般选择在夜深人静的时候删。&lt;/p&gt;
&lt;p&gt;第二个手机一直用到现在，Nokia 3100，挺舒服的。一个小问题：联想状态不能输入标点。按理说这是完全不冲突的，可是按1键就是没反应，必须先取消，再输入标点。&lt;/p&gt;
&lt;p&gt;一个比较搞笑的bug，就发生在多音字“曾”上。我地址簿里有位姓曾的朋友，众所周知，用作姓氏应该读“zeng”。翻开地址簿往下翻，没错，它是按“zeng”的读音排列在“张”姓的前面，很好，很强大。可是当使用快速查找功能，输入“ze”两个字母时，咦，怎么没有“曾”呢？消失了？……不要着急，发挥你丰富的想象力——没错，重新查找，输入“ce”，“曾”排列在“陈”姓之前了！&lt;/p&gt;
&lt;p&gt;排序时按“zeng”，查找时按“ceng”。&lt;/p&gt;
&lt;p&gt;怎么说呢？我依然想说，很好，很强大。Nokia深刻地领会了汉语言多音字的博大精深，并活学活用应用到了它的地址本设计之中，让你在查地址本的时候也能体会多音字的精妙，加深对“曾”字两个读音的记忆，生活促进学习，学习改进生活。&lt;/p&gt;</description>
    </item>
    <item>
      <title>小游戏——Deep Blue Sea</title>
      <link>https://qingbo-net.pages.dev/archives/210/</link>
      <pubDate>Sat, 24 Nov 2007 02:15:32 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/210/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.thegameequation.com/games/deepbluesea/&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;http://photo1.bababian.com/upload5/20071124/C249872F5DDD69EE787EB79A42706664.jpg&#34; alt=&#34;Deep Blue Sea&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.thegameequation.com/games/deepbluesea/&#34;&gt;Deep Blue Sea&lt;/a&gt;——一个朋友做的休闲游戏，对对碰类型的(Match 3 games)。我有幸参与了beta测试。什么测试，就是玩嘛，呵呵。他们上一个游戏做得不是很成功，我只是出于好心帮他们“测试”一下。不过这次这个&lt;a href=&#34;http://www.thegameequation.com/games/deepbluesea/&#34;&gt;Deep Blue Sea&lt;/a&gt;真是让人很上瘾，没事的时候我就打开来玩一会，在解锁和过关的过程中获得“满足感”。甚至在休息的时候，大脑中也在计算怎么解锁……产生这种效应，说明游戏本身已经有很大的吸引力。我女朋友更是趴在那玩了个通关。&lt;/p&gt;
&lt;p&gt;感兴趣的话，你可以下载它的demo版本来玩玩……和祖玛一样，适合女生哦。&lt;/p&gt;</description>
    </item>
    <item>
      <title>学生时代酷刑纪实</title>
      <link>https://qingbo-net.pages.dev/archives/209/</link>
      <pubDate>Thu, 15 Nov 2007 17:51:41 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/209/</guid>
      <description>&lt;p&gt;我读书的环境是比较传统的，相对来说。大学时我们宿舍一同学说他们敢跟老师还手，我就感叹，太进步了，太进步了。从小学到高中，没少见过体罚的场面，自己也亲身体验过一些。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;滑稽的&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;初三时英语老师是个老头，让我们称呼他老韩。老韩心态很年轻，有一次在教室前跟一个年轻老师打赌翻单杠，噌的一下就转了一个——我都做不到啊。有一次罚一个学生去后面站着，这家伙不老实，趁老韩背过身去还跟旁边的人打闹。老韩装作不知道，转到那里的时候，一边讲课一边向后踹了一脚，看都不看，讲课也没中断，那神态，安然自若。&lt;/p&gt;
&lt;p&gt;语文课上，我和同桌在高高的一排书后面玩小汽车，被老师发现了。走下讲台，他先去摘下同桌的眼镜，呱唧一个耳光，然后把眼镜戴回去。我在旁边看着，憋着笑。果然，他走过来用同样的程序把我处理了一遍……&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;严酷的&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;初三班主任是位非常严肃又厉害的老师，一次上课发火，直接就踹前排两个人的桌子，把两个人挤在中间。我和同桌也在第一排，胆战心惊——平常我们也经常玩个小把戏什么的。又有一次生气，直接把一个凳子放倒跺了，拿起腿就打……多亏我还算很老实的，成绩又不错，他不会对我下毒手的 🙂 说实话，我比较尊重这位老师。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;冤枉的&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;自古一来，老实人就是被人冤枉的多。一年级的时候大家一起去河里滑冰，回来说是我带头去的，我被罚在教室里站了好久，最后用黑板擦打手，才放我走。&lt;/p&gt;
&lt;p&gt;初二的时候，课间和一个同学去一处正在装修的房子玩，突然窗户里跳出一个身材魁梧的家伙，二话不说就猛揍我俩一顿。这次可没那个语文老师那么温柔，差点把我的眼镜扇掉。原来是教训我们，别再使坏，往新房子里撒尿了……我的天啊，我可是好孩子啊，初到贵地，就这么对我？后来，他成了我的物理老师，我也就原谅他了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;变态的&lt;/strong&gt;&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;/p&gt;
&lt;p&gt;看看大家的智慧集锦：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yotie.com/question/224.html&#34;&gt;http://www.yotie.com/question/224.html&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>朱国城老师</title>
      <link>https://qingbo-net.pages.dev/archives/208/</link>
      <pubDate>Tue, 13 Nov 2007 15:30:10 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/208/</guid>
      <description>&lt;p&gt;这是大学时教我微积分的老师。朱老师的课讲得很好，名声在外，同级另一个专业的学生慢慢地都跑过来蹭朱老师的课，他们的老师只好收摊。第二个学期，两个系的学生都被安排在朱老师的课堂，换了一个大教室。&lt;/p&gt;
&lt;p&gt;当时他已经60多岁了吧，似乎。说是就我们最后一年了，不过我大三的时候，看到他还在授课。好老师越来越少，没办法啊。年纪大了，但是仍然非常有风度，也就是“帅”。我们就经常讨论，朱老师年轻的时候，一定是风流倜傥，英俊潇洒，迷倒一片女生的。后来有人竟然从网上翻出老师的一张证件照，稍微年轻一点的，果然是很帅。&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;/p&gt;
&lt;p&gt;朱老师似乎是有糖尿病。有一次上课他忘记了带水杯，课间有同学去给他买水，他说不喝甜的。后来我一位同学住院，我去看望，他说朱老师也在医院。我没拿东西就去看朱老师，可惜护士告诉我他刚走。当时也是忙，现在想起来真是遗憾……&lt;/p&gt;
&lt;p&gt;再后来，我就离开科大了。关于朱老师，我就记得这么几件事。我再回合肥的时候，肯定要去看望他的啊。祝愿朱老师身体健康！&lt;/p&gt;</description>
    </item>
    <item>
      <title>Skyrails</title>
      <link>https://qingbo-net.pages.dev/archives/207/</link>
      <pubDate>Mon, 12 Nov 2007 15:55:44 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/207/</guid>
      <description>&lt;p&gt;看到这个标题你一定想到Ruby on Rails. 事实上Skyrails和它一点关系都没有。看一下&lt;a href=&#34;http://cgi.cse.unsw.edu.au/~wyos/skyrails/&#34;&gt;Skyrails Blog&lt;/a&gt;里的说法：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Skyrails was originally aimed for social network visualisation. Then I realised it can also draw any (reasonably sized) graph interactively.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;这似乎是一个本科生的course project，在国外，课程作业也会出现很多这样让你惊叹的作品。当然了，Skyrails目前还看不出有什么很实际的作用，不过它确实可以以3D方式清楚地展示一些网络结构，social network也不例外，只不过节点是用户，边是用户之间的关系。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.cse.unsw.edu.au/~wyos/skyrailscreens/skyrailsdist.zip&#34;&gt;下载&lt;/a&gt;回来后解压，打开first.exe，Skyrails就启动了。左下角有一排图标，鼠标悬浮时会出来提示。打开一个project，鼠标按下，拖拽，配合wasdq这些按键，就可以在网络中穿行了……&lt;/p&gt;
&lt;p&gt;由于没有文档，你只能由scripts文件夹中的例子来猜测怎么使用它的脚本语言。prelude.van是程序启动就加载的，由它来初始化那些菜单（左下角的图标），我可不想看它……当然要找个简单的来看，自己多多摸索。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;简单的例子：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;打开Skyrails，按下Tag键上方的`键，呼出console（打CS的朋友们感到亲切吧？）。顺次输入下面三条语句，输入每一条后回车：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A — loves -&amp;gt; B;&lt;br&gt;
B — loves -&amp;gt; C;&lt;br&gt;
C — loves -&amp;gt; A;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;一个三角恋的关系就呈现在屏幕上了，是吧？再按一次`键，隐藏console，然后利用控制键变换方位观察一下这个network——没什么好观察的，三角恋而已。关系可以更复杂，节点可以更多。节点和边的样式都可以自定义。&lt;/p&gt;
&lt;p&gt;当然也可以把语句写成一个脚本，然后使用语句 loadfile “scripts/myscript.van” 来载入（假设脚本放在scripts目录中）。&lt;/p&gt;
&lt;p&gt;下面是我根据&lt;a href=&#34;http://www.yotie.com&#34;&gt;友贴&lt;/a&gt;的数据做的一个非常简单的关系：&lt;/p&gt;
&lt;p&gt;图可视化是比较有技术含量的工作。大家可以尝试一下这个东西，也许它将来真的会变得很实用。至少，作者的3D引擎是不错的，另外程序的扩展性（脚本支持）也是一大优点。&lt;/p&gt;</description>
    </item>
    <item>
      <title>拼音输入——从google到sogou</title>
      <link>https://qingbo-net.pages.dev/archives/205/</link>
      <pubDate>Mon, 12 Nov 2007 14:22:23 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/205/</guid>
      <description>&lt;p&gt;&lt;img decoding=&#34;async&#34; src=&#34;http://photo1.bababian.com/upload5/20071112/4294E0E5582E7271C382601C4B42D3C0.jpg&#34; alt=&#34;Google Pinyin&#34; /&gt;     &lt;img decoding=&#34;async&#34; src=&#34;http://photo1.bababian.com/upload5/20071112/2DE8A5F2CAA7043B140FB9F660B02281.jpg&#34; alt=&#34;Sogou Pinyin&#34; /&gt;&lt;/p&gt;
&lt;p&gt;前阵子，&lt;a href=&#34;http://tools.google.com/pinyin/&#34;&gt;Google拼音输入法&lt;/a&gt;自动升级到了1.0.23.40这个版本，有一个改动令我非常厌烦：在词组已经上屏的情况下，继续输入仍然会根据之前的词组联想。临时调整词频使得我经常打错字，不得不删除了重新打。再打的时候往往还会错，因为脑子里又存下了那个临时的词频顺序……&lt;/p&gt;
&lt;p&gt;本来，我是用五笔输入法的。在Google推出拼音输入法之后，我就很快&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post182.html&#34;&gt;过渡到了拼音输入&lt;/a&gt;。当时google拼音最吸引我的是词组的自动同步功能，不过现在搜狗也有类似的功能了，自然地，我就转向了搜狗的阵营。&lt;/p&gt;
&lt;p&gt;很早就知道搜狗拼音了，不过那时候不想放弃五笔，又有一种对流氓的恐惧。不过从网上的反应来看，搜狗拼音还不错，水木上当初拼音版就是专为它开的。把搜狗拼音下载回来装上，很快就习惯了，最重要的是没有最新版Google拼音的“Feature”。从UI上来说，我并不喜欢搜狗的皮肤可定制。因为用户自定义的皮肤，绝对没有一个好的。Google的虽没有选择余地，但给人感觉比较舒服（人与人审美观不同，呵呵），不过这是小问题。&lt;/p&gt;
&lt;p&gt;看，Google把我从五笔用户转化成了拼音用户，然后又把这个用户交给了搜狗。Google的新版是个bug吗？绝对不是，确实是个“Feature”。但是你不能太simple了，强制地把这个feature推给我，我只好跑路了。这个使我联想到了那篇&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post233.html&#34;&gt;Java回忆录&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;搜狗酷字还有它内置的那几个字符表情，看似没用，但实际上却对它的营销推广起了很大的作用。这两个东西都是上不了正式场合的，但是在聊天、灌水的时候却显得挺酷的。别人一看见就会问，哎，为什么最近经常见这样的表情呢？答曰：连这都不会？╭∩╮（︶︿︶）╭∩╮鄙视你！&lt;/p&gt;
&lt;p&gt;给Gtalk上的一个大学同学（我问了一下，正在使用google拼音）演示了一把酷字和“o(∩_∩)o”之类的表情，他马上就去下了个回来装了。过了一会，Gtalk上冒出一句话：“bsn”. 太糗了，输完bsn，应该空格才对！好几个人都这样被我转化成了搜狗用户。&lt;/p&gt;
&lt;p&gt;嗯，技术重要，营销也很重要。我这样的用户也许是少数，不过我是经历了这么一个过程。&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何判断Firebug的存在？</title>
      <link>https://qingbo-net.pages.dev/archives/204/</link>
      <pubDate>Sun, 11 Nov 2007 02:15:26 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/204/</guid>
      <description>&lt;p&gt;前几天&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post242.html&#34;&gt;Gmail更新&lt;/a&gt;，会判断你是否启用了Firebug，如果启用则警告“Firebug会使Gmail变慢”。有人在网上问是怎么判断安装了Firebug的？&lt;/p&gt;
&lt;p&gt;我看了一下Gmail的JS代码，似乎是这么一个判断语句：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Boolean(window.console &amp;amp;&amp;amp; window.console.firebug)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;如果你安装了Firebug并启用，那么这条语句的结果是布尔值”true”. window.console是Firebug给window对象扩展的一个Object属性。打开Firebug，在Console中输入”window.console”并回车，则会显示：Object firebug=1.05&lt;/p&gt;
&lt;p&gt;而window.console.firebug是Firebug的版本号。大家可以自己在Firebug里试一下，或者自己写一个测试页面。&lt;/p&gt;</description>
    </item>
    <item>
      <title>过期域名抢注的一点经验</title>
      <link>https://qingbo-net.pages.dev/archives/203/</link>
      <pubDate>Sat, 10 Nov 2007 02:39:23 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/203/</guid>
      <description>&lt;p&gt;10月中旬的时候，我注意到qingbo.net这个域名已经过期两个月了，于是赶紧上网查域名的过期、删除策略，以及如何抢注。按查到的资料，.net的域名应该在75天后删除，不过我看了一下当天删除的域名，并不都是过了75天。于是就隔几天去查一次域名删除列表，在&lt;a href=&#34;http://www.pool.com/&#34;&gt;pool&lt;/a&gt;搜一下qingbo，如果5天内删除的域名包含这个关键字，它就会列出来。&lt;/p&gt;
&lt;p&gt;终于在这个11月1号的时候，我看到了qingbo.net将要在4号删除，查whois也显示status已经变成pendingDelete. 按规律，应该是北京时间5号凌晨，于是我就做好了艰苦奋斗的准备，打算那天晚上熬夜把这个域名抢到手 🙂&lt;/p&gt;
&lt;p&gt;可是在水木上问了一下，马上被泼了冷水，个人抢域名基本上是徒劳……于是我就查了几个前几天过期的域名，全都被注册了，一个不剩，而且我查的都是拼音的，注册公司都是国外的几家抢注者。这些怪物，不管什么域名都往肚子里吞。&lt;/p&gt;
&lt;p&gt;怎么办怎么办？&lt;a href=&#34;http://snapnames.com&#34;&gt;snapnames&lt;/a&gt;预定似乎至少是60刀，我可不想花这么多钱抢一个破域名。后来看到&lt;a href=&#34;http://godaddy.com/&#34;&gt;godaddy&lt;/a&gt;上也有backorder的服务，才不到两个域名的价格，嗯，就它了。如果抢到，就当是早注册了一年吧 🙂 至少我可以安心睡觉不用熬夜了。不过据说godaddy抢注的成功率不高。&lt;/p&gt;
&lt;h3 id=&#34;抢注失败&#34;&gt;抢注失败&lt;/h3&gt;
&lt;p&gt;5号早上打开信箱就看到godaddy发来的邮件：capture unsuccessful! 嗯，我已经有心理准备了。查了一下whois，是一个allearthdomains.com在snapnames注了，看名头就不一样，果然是专业。浏览器输入qingbo.net，到了一个domain parking网页。&lt;/p&gt;
&lt;p&gt;在godaddy的控制面板里有一个提示：&lt;br&gt;
&lt;img decoding=&#34;async&#34; src=&#34;http://photo1.bababian.com/upload4/20071109/F2A3E733D028E4BE97C43699FB06D1EB.jpg&#34; alt=&#34;Godaddy&#34; /&gt;&lt;/p&gt;
&lt;p&gt;嗯，一来老外不懂这个域名有什么含义，二来这个域名没有PR，也没有流量，估计几天之后那个家伙就会放弃的。去snapnames上一查，这个域名正在拍卖，三天时间……我忍。&lt;/p&gt;
&lt;h3 id=&#34;第二次到手&#34;&gt;第二次，到手&lt;/h3&gt;
&lt;p&gt;8号，snapnames的拍卖结束了。晚上的时候查whois，发现registrar已经是godaddy了：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Domain Name: QINGBO.NET&lt;br&gt;
Registrar: GODADDY.COM, INC.&lt;br&gt;
Whois Server: whois.godaddy.com&lt;br&gt;
Referral URL: &lt;a href=&#34;http://registrar.godaddy.com&#34;&gt;http://registrar.godaddy.com&lt;/a&gt;&lt;br&gt;
Name Server: No nameserver&lt;br&gt;
Status: ok&lt;br&gt;
Updated Date: 08-nov-2007&lt;br&gt;
Creation Date: 08-nov-2007&lt;br&gt;
Expiration Date: 08-nov-2008&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;在godaddy的控制面板中，状态成了”public backorder capture in progress”。&lt;/p&gt;
&lt;p&gt;9号下午3点，打开控制面板，状态依旧。不过尝试了一下Add Monitoring，发现我&lt;strong&gt;有100个credit&lt;/strong&gt;，不知道是注册就给，还是购买了backorder给的。随意添加了几个监视，刷新一看，Backorders and Monitorings里竟然没有了qingbo.net，赶紧到All my domains里查看，哇哈哈，是我的就是我的，它已经在那里了！查whois，里面有了我的信息。&lt;/p&gt;
&lt;p&gt;直到今天(10号)早上，我才收到了GoDaddy发来的邮件，通知我Capture successful.&lt;/p&gt;
&lt;h3 id=&#34;经验&#34;&gt;经验&lt;/h3&gt;
&lt;p&gt;流水账记完了，我说几点经验。&lt;strong&gt;我不是靠抢注域名生活的&lt;/strong&gt;，不过我确实还没想好用这个域名做什么 🙂 保护个人品牌？这个理由还不错，哈哈。总之对我自己来说，假如以后再抢域名的话，可能会省不少精力。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;不要因为第一次抢失败就放弃，因为有些抢注公司是见域名就抢，不管多烂。&lt;a href=&#34;http://help.godaddy.com/article.php?article_id=3677&amp;amp;topic_id=&#34;&gt;按照规则&lt;/a&gt;，注册者是可以在5天内取消的。所以在此后一小段时间内，你可能还有一次机会。&lt;/li&gt;
&lt;li&gt;想监视一个域名，最好用GoDaddy之类的监视服务。那100个credit有可能是注册就有的，用它来监视，就不用你天天自己去查了，域名状态有变化时，会及时地邮件通知。&lt;/li&gt;
&lt;li&gt;尽量不要在国内注册域名了。国内许多注册商故意把转出(transfer)的手续搞得及其复杂（比如新网互联这个垃圾，要求代理商盖章，然后寄给它），以留住客户。GoDaddy的价格是10刀一年，而且经常有优惠（10% off的优惠码遍地都是），比国内不怎么贵（再想一下RMB升值加速 🙂 ），而且管理方便。想转回来容易，转出去可就难了，尽量不要上贼船。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;希望这篇文章对大家有所帮助，都能得到自己的域名。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gmail最近的变化</title>
      <link>https://qingbo-net.pages.dev/archives/202/</link>
      <pubDate>Thu, 08 Nov 2007 16:46:27 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/202/</guid>
      <description>&lt;p&gt;我的Gmail帐户不被Google看好，&lt;a href=&#34;http://mail.google.com/support/bin/answer.py?answer=79344&#34;&gt;IMAP功能&lt;/a&gt;来得很晚，幸好我不需要这个功能——我觉得邮件放在网上挺好的。后来马上&lt;a href=&#34;http://googlesystem.blogspot.com/2007/10/gmails-new-version-is-now-available.html&#34;&gt;Gmail又有了新的改动&lt;/a&gt;，我直到昨天才用上新版本。&lt;/p&gt;
&lt;p&gt;后来这一次更新，最大的改动应该是联系人管理系统的改进，不过对我个人来说，用处不是很大。另外不管你想不想要，standard界面上都必须有GTalk的Gadget，唯一可以做的事turn off. 用户体验的一个大的提升，是它在打开inbox的邮件列表的时候，预先加载了所有这些邮件的内容，在点击一个邮件查看的时候，不需要再到服务器上Fetch了，大大提高了响应速度（延迟几乎为零），可以很明显地感觉到。&lt;/p&gt;
&lt;p&gt;无论是邮件中还是在网页版GTalk上，光标在某Gmail邮件地址上悬浮时，显示的小窗口都具有了更丰富的信息，并且更美观了。以前的邮件头部，光标悬浮时最多会有一个头像，而现在可以直接发邮件、聊天、改名、改头像……真是太方便了。&lt;/p&gt;
&lt;p&gt;另外如果你安装了Firebug并且启用，Gmail会检测到并给出明显的提示，真是够贴心的，我赶紧去把我的Firebug对Gmail禁用了：&lt;/p&gt;
&lt;img decoding=&#34;async&#34; src=&#34;http://photo1.bababian.com/upload4/20071109/1A9848C471C83E8AA66840BC4E8D18D2.jpg&#34; alt=&#34;Gmail-Firebug&#34; /&gt; 
&lt;p&gt;不知道大家有没有注意过，Gmail近期曾经有段时间改了它的Title和logo. Title从Gmail改为Google Mail，而logo也相应地改为这个：&lt;/p&gt;
&lt;img decoding=&#34;async&#34; src=&#34;http://photo1.bababian.com/upload4/20071109/4AD3C7C7950A5881BB96D0C0C0C80CEA.jpg&#34; alt=&#34;Google Mail&#34; /&gt; 
&lt;p&gt;不知道是不是因为“Gmail”在许多国家被注册了的原因，不过几天之后这两个改动都撤消了。在Gmail新版本推出后，页面title又加上了用户的邮件地址。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Prototype 1.6, script.aculo.us 1.8</title>
      <link>https://qingbo-net.pages.dev/archives/201/</link>
      <pubDate>Thu, 08 Nov 2007 02:47:30 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/201/</guid>
      <description>&lt;p&gt;今天打开Google Reader，发现&lt;a href=&#34;http://prototypejs.org/2007/11/7/prototype-1-6-0-script-aculo-us-1-8-0-and-the-bungee-book-now-available&#34;&gt;prototype&lt;/a&gt;和&lt;a href=&#34;http://mir.aculo.us/2007/11/7/script-aculo-us-1-8-prototype-1-6-and-the-book-released&#34;&gt;script.aculo.us&lt;/a&gt;的blog各有一条更新，同时告诉大家：Prototype 1.6.0 &amp;amp; script.aculo.us 1.8.0都是final了！&lt;/p&gt;
&lt;p&gt;对于Prototype，我比较期待它的DOM Builder。而对于script.aculo.us，以前曾经试过用它的InplaceEditor，然而它的设计是在是不怎么样，尤其是你想处理服务器端返回的数据后再显示（或者报错，取消）的话。在1.8.0里，说是完全重写了这个InplaceEditor，希望会有较大改进。&lt;/p&gt;
&lt;p&gt;另外似乎script.aculo.us的1.x系列到此就feature freeze了，让我们期待2.0吧！&lt;/p&gt;
&lt;p&gt;不多说了，赶紧去升级一下，看有没有什么问题需要解决的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>标签(tag)真的那么重要吗？</title>
      <link>https://qingbo-net.pages.dev/archives/200/</link>
      <pubDate>Fri, 02 Nov 2007 17:31:41 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/200/</guid>
      <description>&lt;p&gt;前几天写了一篇文章提到&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post235.html&#34;&gt;“官方blog”已成为Web 2.0网站的标配&lt;/a&gt;。而标签似乎从来就是Web 2.0网站的标配之一。这几天跟不止一个人讨论了关于标签的问题，我来说一下自己的想法。首先说明，我现在对tag不怎么感兴趣，尽管我在这篇文章里加了tag，也是因为WordPress 2.3内置了tag系统，看到那里有个input，强迫症使然。&lt;/p&gt;
&lt;p&gt;我最初使用tag这东西似乎是在用delicious的时候吧。它的标签系统做得不错，可以自动补全，还有Yahoo!的推荐系统，贴起标签来比较方便。后来就发现几乎所有的Web 2.0网站都有tag，包括图片分享、blog等等。许多都有酷酷的tag cloud，啊，真是2.0！&lt;/p&gt;
&lt;p&gt;刚开始的时候觉得tag真是好东西，就好像现在看iPhone的心理。于是见到有的网站没有tag系统，心里就想，都什么时代了，还这么老土，连tag都不支持，一点不geek，一点不professional，一点不2.0！自己建一个blog网站，也要用插件实现tagging（那时的WordPress没有内置tag系统），再放个tag cloud，显得咱这么有技术含量，倍儿有面子。&lt;/p&gt;
&lt;p&gt;然而到最后冷静下来想，在添加tag后我几乎没有用过它们。仅有的几次是在delicious上查一下曾经收藏过、有点印象却又记不清的一个网页，先想想当时打了什么标签，再打开这个标签看有没有，标签下内容多的时候还要翻页。&lt;/p&gt;
&lt;h3 id=&#34;tag之优势&#34;&gt;Tag之优势&lt;/h3&gt;
&lt;p&gt;有一天跟&lt;a href=&#34;http://hexybaby.blogbus.com/&#34;&gt;Hexy&lt;/a&gt;讨论这个问题，她说，在看到一个陌生人的页面时，tag列表（或者tag cloud）可以帮助你了解他(或他的关注点)。嗯，这是一个作用。不过在没有tag cloud的情况下，稍微浏览一下这个人的内容也可以大致上对他的喜好有个了解。不管怎么样，tag至少可以加速对人的了解。&lt;/p&gt;
&lt;p&gt;另一天在水木上我又鼓吹我的tag无用论 🙂 有网友说，&lt;strong&gt;tag的主要作用在于搜索引擎优化&lt;/strong&gt;。这个……有点道理。不过，搜索引擎可能会考虑你设定的网站关键字，也可能会重视你的页面title，或者&lt;h1&gt;之类的HTML标签（非标题中之标签）内容，但是，你输出个“Tag: SEO, 优化”，它会把这两个词作为重点吗？我想不会。除非你把它输出到meta中，不过目前搜索引擎对它也不是那么重视了。&lt;/p&gt;
&lt;h3 id=&#34;tag之无能为力&#34;&gt;Tag之无能为力&lt;/h3&gt;
&lt;p&gt;最初打标签的时候，是想着方便个人查找。然而内容越积越多，每个标签下的条目也越来越多，这个时候，初衷就不能实现了，你最终还得使用站内搜索，或者通用搜索引擎如Google、Baidu。&lt;/p&gt;
&lt;p&gt;最近出来一个&lt;a href=&#34;http://www.jiglu.com/&#34;&gt;Jiglu&lt;/a&gt;，用来给你自动分析tag，省去你亲自加tag之烦恼：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Jiglu plugs into your site to automatically create intelligent tags and links for your web content. This means that people can dive straight in and read what they want – your most popular blog entries or even stuff buried deep within your site.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;哦，这跟直接用搜索引擎来搜索有什么区别呢？tag本来就应该是创作者自己的观点，机器最多只能给出建议。&lt;/p&gt;
&lt;p&gt;我还是更倾向于使用稍微完善的分类系统。完善很难做到，但tag显然更加杂乱。在水木上有人问，tag跟分类有什么区别？有人答：我认为没有区别。或者可以美其名曰，社会化分类。&lt;/p&gt;
&lt;p&gt;有一点我得说，tag对于图片确实比较重要。因为机器是很难分析出图像的语义的，而创建者的tag可以提供视觉之外的信息，使得机器可以“理解”图像，从而可以更精准地通过文字来查询。而对于日志、网页之类已经有了具体内容的，tag的作用就不大了，省下那一会思考的时间吧！&lt;/p&gt;</description>
    </item>
    <item>
      <title>整理你的Firefox状态栏</title>
      <link>https://qingbo-net.pages.dev/archives/199/</link>
      <pubDate>Sun, 28 Oct 2007 15:29:32 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/199/</guid>
      <description>&lt;p&gt;Firefox的一个优点在于&lt;a href=&#34;https://addons.mozilla.org/en-US/firefox&#34;&gt;丰富的扩展&lt;/a&gt;，几乎每个Firefox用户都或多或少安装了扩展，借此使自己的Firefox用起来更加得心应手。但是许多Firefox扩展都会在状态栏中显示信息，这对于安装了很多扩展的用户来说，可是个麻烦事。尤其是习惯了原有的顺序后，再安装一个新的扩展，新扩展可能在原来的一排位置中间找个空当。比如我就习惯了Firebug的小图标放在状态栏的最右边，很方便点击（当然F12可以呼出，不过我受鼠标的毒害太深了 🙂 )。在安装一个新扩展后，发现它抢去了Firebug的风水宝地，让我很不爽。&lt;/p&gt;
&lt;p&gt;当然了，在对Firefox有了新的需求时，先要看看它有没有扩展已经可以满足你。果然，Google一下就找到了&lt;a href=&#34;https://addons.mozilla.org/en-US/firefox/addon/1759&#34;&gt;Organize Status Bar&lt;/a&gt;这个扩展，正是我想要的！&lt;/p&gt;
&lt;p&gt;安装后重启，Firefox的“工具”主菜单中多了一项“组织工具栏”，点击后，如下所示，你可以给各个扩展划定版图了：&lt;/p&gt;
&lt;img decoding=&#34;async&#34; src=&#34;http://photo1.bababian.com/upload4/20071028/8CF61932586DA2641E669BE1DBBA15F5.jpg&#34; alt=&#34;Firefox Status Bar&#34; /&gt; 
&lt;p&gt;我当然是要将Firebug的领土归还给它 🙂&lt;/p&gt;</description>
    </item>
    <item>
      <title>Web 2.0网站没有官方Blog，太土了？</title>
      <link>https://qingbo-net.pages.dev/archives/198/</link>
      <pubDate>Sat, 27 Oct 2007 15:57:37 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/198/</guid>
      <description>&lt;p&gt;在Feedsky的话题推广过程中，有几位Blogger提到&lt;a href=&#34;http://www.yotie.com/&#34;&gt;友贴&lt;/a&gt;的官方Blog放在新浪不好，或者说太土了，明确地作为一个“缺点”列出。后来有的新注册用户也提出这个观点。于是，诞生了一个根红苗壮的&lt;a href=&#34;http://blog.yotie.com&#34;&gt;友贴官方Blog&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;不知从何时起，“官方Blog”似乎成为了Web 2.0网站的标配，随便想了想，就得到了下面的这个列表：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://blog.digg.com/&#34;&gt;Digg the Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://blog.delicious.com/&#34;&gt;delicious blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://blog.jiwai.de/&#34;&gt;叽歪de博客&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.zhuaxia.com/blog/&#34;&gt;抓虾日记&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当然“官方Blog”不是交互型网站的专利，现在许多开源项目比如&lt;a href=&#34;http://prototypejs.org&#34;&gt;Prototype&lt;/a&gt;，&lt;a href=&#34;http://script.aculo.us&#34;&gt;scriptaculous&lt;/a&gt;，&lt;a href=&#34;http://jquery.com/&#34;&gt;jQuery&lt;/a&gt;等都在用这种方式发布项目动态。&lt;/p&gt;
&lt;p&gt;确实，很少有新兴的网站没有官方Blog的。有官方Blog的，很少见放在第三方BSP的。使用第三方BSP，又选择了新浪Blog，更是招来了鄙视的目光。嗯，新浪Blog很烂。作为Blog“标配”的Pingback/Trackback，它没有，而且也没有打算支持的征兆。可定制性极差，基本不可能做到跟网站本身风格统一。新浪过于重视它做blog的最终目的——&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post101.html&#34;&gt;增大网站流量&lt;/a&gt;，而那些明星们绝对不会想到还有Pingback这种怪物，所以你不要对它的服务有什么期望。在新浪写Blog，会被“pro blogger”们鄙视到家的 🙂&lt;/p&gt;
&lt;p&gt;不过正是由于新浪的大流量，它也可以作为一个营销的好工具。关键是，你的文章要被推到一个首页上，呃，这个有点难度是吧，不过是可以做到的。&lt;/p&gt;
&lt;p&gt;所以呢，“官方Blog”放在了新浪是有利有弊。在广大人民群众的强烈要求下，我急匆匆赶出了一个粗糙的“官方Blog”——暂时叫&lt;a href=&#34;http://blog.yotie.com&#34;&gt;友贴日志&lt;/a&gt;。太土了是吧？没办法，我就是一个土人 🙂 若知后事如何，请订阅&lt;a href=&#34;http://blog.yotie.com/feed&#34;&gt;Feed&lt;/a&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;广告：该Blog由目前应用最广泛的&lt;a href=&#34;http://wordpress.org&#34;&gt;WordPress&lt;/a&gt;强力驱动。Automattic在收购&lt;a href=&#34;http://site.gravatar.com/&#34;&gt;Gravatar&lt;/a&gt;之后不久，就又&lt;a href=&#34;http://mashable.com/2007/10/18/automattic-federated-media/&#34;&gt;谣传要被收购，价值1.5亿到3亿美金&lt;/a&gt;，看来WordPress还是很有前途的。上面提到的那些官方blog，多是用WordPress搭建的吧。&lt;/p&gt;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>调查，让交流变得更容易</title>
      <link>https://qingbo-net.pages.dev/archives/197/</link>
      <pubDate>Fri, 26 Oct 2007 16:35:47 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/197/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.yotie.com/pk&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;http://photo1.bababian.com/upload4/20071026/151A248879F87C61C961079C94F1A2DC.jpg&#34; alt=&#34;友贴调查大赛&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;紧张的准备之后，&lt;a href=&#34;http://www.yotie.com/pk&#34;&gt;友贴首届最“牛”调查大评比&lt;/a&gt;活动终于开幕了。&lt;/p&gt;
&lt;p&gt;你一定会经常看到新闻说什么民意调查显示，布什的支持率下降到……或者你走在路上，有人不管你的态度，追着你让你做一份调查问卷。显然，这两件事情的发起者，都希望知道被调查者的态度或意见。从调查者的角度考虑，事先拟定了有限的选项，答案更容易做统计分析，如果得到的是一段文字，统计的工作量就太大了，即使不是长篇大论。从接受调查的人的角度考虑，有了固定的选项后，回答起来显然要省去很多的思考（当然，调查的选项应当完备）。&lt;/p&gt;
&lt;p&gt;在互联网上，调查的成本变得很低，你一般不用为了发起调查去购买纸张、排版和印刷。有了像&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post231.html&#34;&gt;PollDaddy&lt;/a&gt;这样的专业调查网站，你可以方便地发起一个调查，邀请朋友们来参加。当然，调查的内容不能拘泥于朋友对你的支持率或者对你的产品的满意程度。&lt;/p&gt;
&lt;p&gt;作为一个交流方式（或者“交流点”，发起话题的缘由），&lt;a href=&#34;http://www.yotie.com/&#34;&gt;友贴&lt;/a&gt;也提供了调查的功能。你的个人网站一般不会有这么大的用户群，在这里做调查，你可能吸引更多的用户来参加。当然，如果你只想让熟悉的人参加，你还可以自己定制“认证问题”，只有答对的人才可以参与。调查的主题？千万不要局限于朋友对你的支持率或者对你产品的满意度，太土了吧 🙂 你可以调查一下，你的朋友都谈过多少次恋爱，平均每次恋爱的时间有多长，……&lt;/p&gt;
&lt;p&gt;对于做调查，我有几点具体的建议。首先，在描述中把调查的主题说清楚。比如这个参赛调查： &lt;a href=&#34;http://www.yotie.com/poll/227.html&#34;&gt;有多少人喜欢小配件?&lt;/a&gt;，假如没有下面的链接到&lt;a href=&#34;http://www.cngadget.cn/&#34;&gt;Cngadget首页&lt;/a&gt;，谁会知道“小配件”是啥子哟？我认为，这个描述还应该更详细一点（充分利用超文本编辑器！）。要是背景都描述不清楚，那参与者迷迷糊糊的，还调查什么啊？&lt;/p&gt;
&lt;p&gt;其次，调查的选项应该具有完备性。比如你想知道朋友们的初恋都在多少岁，给了4个选项：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A、10岁以下&lt;br&gt;
B、11岁到19岁&lt;br&gt;
C、21岁到29岁&lt;br&gt;
D、31岁以上&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;太大意了！我的初恋在20岁！不要笑，这里举一个弱智的例子，意思是让大家考虑好，不要让有的用户没法选 🙂&lt;/p&gt;
&lt;p&gt;好了，去友贴&lt;a href=&#34;http://www.yotie.com/add_poll.html&#34;&gt;建个调查&lt;/a&gt;参赛吧！有大奖等着你哦 🙂 现在也已经&lt;a href=&#34;http://www.yotie.com/poll/contest.do?method=list&#34;&gt;有了一些有才的调查&lt;/a&gt;，欢迎参与！当然，最好的收获是你在这次活动中认识一些朋友（比如看看谁和你的选项比较一致啊），建立或扩大自己的圈子。调查不是友贴的全部，还有网页、日记……它们都是促进交流的便捷方式。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java成败之路——推荐一篇极好的文章</title>
      <link>https://qingbo-net.pages.dev/archives/196/</link>
      <pubDate>Tue, 23 Oct 2007 10:28:07 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/196/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.readwriteweb.com/&#34;&gt;Read/WriteWeb&lt;/a&gt;上的文章和&lt;a href=&#34;http://mashable.com/&#34;&gt;Mashable!&lt;/a&gt;比起来，每天的更新要少得多。但是从质量上来说，&lt;a href=&#34;http://www.readwriteweb.com/&#34;&gt;Read/WriteWeb&lt;/a&gt;要好得多。&lt;a href=&#34;http://mashable.com/&#34;&gt;Mashable!&lt;/a&gt;上有&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post217.html&#34;&gt;太多的无用信息&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;昨天就在&lt;a href=&#34;http://www.readwriteweb.com/&#34;&gt;Read/WriteWeb&lt;/a&gt;上发现了一篇极好的文章：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.readwriteweb.com/archives/java_a_retrospective.php&#34;&gt;&lt;strong&gt;Java: A Retrospective&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Java如何兴起，J2EE和&lt;a href=&#34;http://jcp.org/&#34;&gt;Java Community Process&lt;/a&gt;如何产生，IBM如何抢占了IDE市场，微软如何在桌面和浏览器的竞争中获胜，文章几乎涵盖了Java这十几年的所有历程。也是从此文中，我才知道了Eclipse这个IDE为什么会叫这个名字（日蚀），Sun对这个名字是什么感情？这个命名可以说是这些 “Language Politics” 中比较妙的一笔 :)，至少在旁观者的眼里。&lt;/p&gt;
&lt;p&gt;这篇文章推荐大家好好地读一遍。古人说：以史为鉴，可以知兴替。回顾Java的历史，也可以让我们学到许多东西，这些大多涉及到市场竞争与策略，并不是仅仅适用于一种编程语言，在其它产品的兴衰中也会上演同样的悲喜剧。所以，文章的结尾写道：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Before inventing new languages and re-inventing new ways of doing things, the industry should pause and re-think the fate of Java in the browser.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;天才的&lt;a href=&#34;http://blogs.sun.com/jag/&#34;&gt;James Gosling&lt;/a&gt;发明了如此优秀的语言，它对后来出现的许多语言都有着巨大的贡献。Java当然不会就这么灭亡，Java的开源也会进一步推动Java的应用。但愿Java不会成为 “Language Politics” 的牺牲品。&lt;/p&gt;</description>
    </item>
    <item>
      <title>如果你想做调查</title>
      <link>https://qingbo-net.pages.dev/archives/195/</link>
      <pubDate>Sun, 21 Oct 2007 07:04:10 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/195/</guid>
      <description>&lt;p&gt;在&lt;a href=&#34;http://www.yotie.com&#34;&gt;友贴&lt;/a&gt;初期的时候，曾经想找一个免费的第三方调查网站来调查一下用户体验之类的东西。然而当时google关键字“free poll”的时候，出来的全是一些比较垃圾的网站。现在，我们有了自己的&lt;a href=&#34;http://www.yotie.com/static/help_guide_poll.htm&#34;&gt;调查功能&lt;/a&gt;，你可以来试试看，比如调查一下同学聚餐去哪里 🙂&lt;/p&gt;
&lt;p&gt;现在google同样的关键字，排在第一的是“&lt;a href=&#34;http://www.polldaddy.com/&#34;&gt;PollDaddy&lt;/a&gt;”。这是一个“很2.0”的网站，在它的blog里看到刚刚一年了，所以当时没有搜到它是应该的，现在2.0也是应该的 🙂 其实今天是从&lt;a href=&#34;http://www.readwriteweb.com/&#34;&gt;Read/WriteWeb&lt;/a&gt;看到他们在用这个网站做调查，才发现的。&lt;/p&gt;
&lt;p&gt;试用一下，就可以知道它提供了足够完善的功能，例如多选、定时关闭，以及各种block多次投票的方式，多种嵌入网站的方法。添加选项的时候很方便，我在其它网站没见过，可以拖动以改变顺序：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://bababian.com:80/phoinfo/EF2DA7FD2C9397357AAA9E0C9911E67BDT&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;http://photo1.bababian.com/upload3/20071020/EF2DA7FD2C9397357AAA9E0C9911E67B_500.jpg&#34; border=&#34;0&#34; alt=&#34;pollDaddy&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最重要的，引用&lt;a href=&#34;http://www.polldaddy.com/&#34;&gt;PollDaddy&lt;/a&gt;自己的一句话：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;There is no advertising on any of our polls, and we never redirect your users away from your website or blog&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;下面是一个示例：&lt;/p&gt;
&lt;embed allowScriptAccess=&#34;never&#34;  saveEmbedTags=&#34;true&#34; src=&#34;http://www.polldaddy.com/poll.swf&#34; FlashVars=&#34;p=123162&#34; quality=&#34;high&#34;  wmode=&#34;transparent&#34;  bgcolor=&#34;&amp;#035;ffffff&#34; width=&#34;252&#34;  height=&#34;296&#34;  name=&#34;beta3&#34; salign=&#34;tl&#34; scale=&#34;autoscale&#34;  type=&#34;application/x-shockwave-flash&#34; pluginspage=&#34;http://www.macromedia.com/go/getflashplayer&#34; &gt;
&lt;/embed&gt;
&lt;p&gt;如果你不想自己动手做一个调查程序，又想在自己网站上放一个调查，那么&lt;a href=&#34;http://www.polldaddy.com/&#34;&gt;PollDaddy&lt;/a&gt;绝对是不二的选择。&lt;/p&gt;</description>
    </item>
    <item>
      <title>怀念科大了</title>
      <link>https://qingbo-net.pages.dev/archives/194/</link>
      <pubDate>Sat, 20 Oct 2007 03:55:57 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/194/</guid>
      <description>&lt;p&gt;偶然在水木上发现开了个USTC版，进去之后，立刻感受到了&lt;a href=&#34;http://bbs.ustc.edu.cn&#34;&gt;瀚海星云&lt;/a&gt;的气氛和科大的气息。那种气氛和气息，也说不上喜欢，甚至在未离开科大的时候都感觉烦，然而，现在却有些怀念了。&lt;/p&gt;
&lt;p&gt;有人贴了几张图，第一张是小雨，第二张是雪景，第三张是比较有年头的了，在我去之前……&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.qingbo.org/wp-content/uploads/2007/10/ustc_1.jpg&#34; title=&#34;雨中西区&#34;&gt;&lt;img alt=&#34;雨中西区&#34; loading=&#34;lazy&#34; src=&#34;http://www.qingbo.org/wp-content/uploads/2007/10/ustc_1.thumbnail.jpg&#34;&gt;&lt;/a&gt; &lt;a href=&#34;http://www.qingbo.org/wp-content/uploads/2007/10/ustc_2.jpg&#34; title=&#34;西区雪景&#34;&gt;&lt;img alt=&#34;西区雪景&#34; loading=&#34;lazy&#34; src=&#34;http://www.qingbo.org/wp-content/uploads/2007/10/ustc_2.thumbnail.jpg&#34;&gt;&lt;/a&gt; &lt;a href=&#34;http://www.qingbo.org/wp-content/uploads/2007/10/ustc_3.jpg&#34; title=&#34;老西区&#34;&gt;&lt;img alt=&#34;老西区&#34; loading=&#34;lazy&#34; src=&#34;http://www.qingbo.org/wp-content/uploads/2007/10/ustc_3.thumbnail.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;你可以点击看一下大图，很漂亮的。&lt;/p&gt;
&lt;p&gt;这几张照片都是科大西区的芳花园，园子里有几只鸭子和鹅，我还见过小乌龟。我大学四年一直都在西区。西区地广人稀，是旅游的好地方，除了这个园子外，还有两个小湖，里面全是荷花，到了某个时候，你看这张从图书馆楼上拍的：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://bababian.com:80/phoinfo/3BA846A272FDDD28FE4F4DEA56E270CDDT&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;http://photo1.bababian.com/upload3/20071020/3BA846A272FDDD28FE4F4DEA56E270CD_500.jpg&#34; border=&#34;0&#34; alt=&#34;科大西区的荷塘&#34; /&gt;&lt;/a&gt;&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;/p&gt;</description>
    </item>
    <item>
      <title>雅虎全能搜——不只1百度</title>
      <link>https://qingbo-net.pages.dev/archives/193/</link>
      <pubDate>Fri, 19 Oct 2007 16:39:45 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/193/</guid>
      <description>&lt;p&gt;某日出了电梯，顿觉眼前一亮，在报栏里看到了Yahoo!和Baidu的校园招聘海报。左上角的百度和雅虎，雅虎的盖住了百度的一边，百度的又掀起来一块压住雅虎，互相纠缠在一起：&lt;/p&gt;
&lt;img decoding=&#34;async&#34; src=&#34;http://image.yotie.com/photo/784/750/11918936295057559E4.jpg&#34; alt=&#34;Yahoo &amp;#038; Baidu&#34; /&gt; 
&lt;p&gt;放大一下右下角的雅虎海报，“搜索只搜1百度 不如雅虎全能搜360度”：&lt;/p&gt;
&lt;img decoding=&#34;async&#34; src=&#34;http://image.yotie.com/photo/603/911/1191893696263867ZB0.jpg&#34; alt=&#34;Yahoo&#34; /&gt; 
&lt;p&gt;呵呵，有点嚣张，有点意思。雅虎肯定巴不得百度痛骂它一顿，借机推广它的搜索产品 🙂&lt;/p&gt;
&lt;p&gt;话说回来，&lt;a href=&#34;http://www.yahoo.cn/&#34;&gt;雅虎全能搜&lt;/a&gt;还是有点新意的，我比较喜欢那个人物关系图。比如搜&lt;a href=&#34;http://yahoo.cn/s?p=%E5%BC%A0%E9%92%B0&amp;amp;v=web&#34;&gt;“张钰”&lt;/a&gt;，在网页结果的右侧会出来一个Flash的小窗体，以张钰为中心，图形化地展示了与她有一腿的人。点击这个图，就可以看到一张&lt;a href=&#34;http://yahoo.cn/s?v=person&amp;amp;p=%E5%BC%A0%E9%92%B0&#34;&gt;更详细的关系图&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>雷柏鼠标质量一般</title>
      <link>https://qingbo-net.pages.dev/archives/192/</link>
      <pubDate>Fri, 19 Oct 2007 07:36:05 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/192/</guid>
      <description>&lt;p&gt;前段时间&lt;a href=&#34;http://www.rapoo.cn/Chinese/index.asp&#34;&gt;雷柏&lt;/a&gt;这个品牌进入中国，炒作得沸沸扬扬。还没有上市，淘宝上就有众多卖家开始接受预订，许多人翘首以待。&lt;/p&gt;
&lt;p&gt;我当时正想要一个无线鼠标，正好看见了雷柏的铺天盖地的宣传，于是一上市就买了一个&lt;a href=&#34;http://www.fj007.com/news/news_html/20079/20079363316_0.html&#34;&gt;7100&lt;/a&gt;。130，在无线鼠标中，这算是比较便宜的。看到那么多的宣传（包括上面的链接），我当时认为质量应该可以和罗技、微软媲美（似乎也有报道中这么说）。你现在搜一下，也可以找到关于它的无数的正面新闻，可谓在营销方面做足了功夫，也起到了效果。&lt;/p&gt;
&lt;p&gt;然而拿到了鼠标之后就有点失望，左键似乎有点松，和右键有所区别。这也罢，用了一段时间感觉还行。不过一个多月后，按键就感觉有滑动的感觉，声音不像以前那么脆了。这也无所谓，我可以忍受。但最近，大概用了三个月，左键开始间歇性失灵了。这，还怎么能忍受呢？唉。&lt;/p&gt;
&lt;p&gt;怪只怪当时轻信了这个品牌。不得不说雷柏的营销做得很成功，二流的产品，二流的价格，硬是推到一流的层次上去，让消费者享受着二流的破烂，还都以为占了便宜。&lt;/p&gt;
&lt;p&gt;鼠标这东西，如果你想用得舒服点，用得久一点，最好还是多花点钱，买罗技或者微软的吧。当然，如果你是职业游戏玩家，你可以追求更高层次的……办公、日常应用，还是数罗技、微软的合适。&lt;/p&gt;</description>
    </item>
    <item>
      <title>我退学了</title>
      <link>https://qingbo-net.pages.dev/archives/191/</link>
      <pubDate>Sat, 13 Oct 2007 19:41:19 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/191/</guid>
      <description>&lt;p&gt;自去年有了退学的想法，我有好几次差点就去做了，最终因为父母的不乐意而作罢。我努力地调整自己的心态，然而之后我又经常陷入迷茫和困惑之中，觉得自己无法在那种环境中继续下去。&lt;/p&gt;
&lt;p&gt;在“黎明前最黑暗的时刻”，我和laozhou、jundao一起聊了聊，他们告诉我很多事情。laozhou看我精神状态很差，于是跟我说，既然这样，就退了吧！于是第二天我就去准备退学。记得大一快结束的时候我也很迷茫，某一天突然想到正好是重新选择专业的时间，于是我打印了一张表填好就交了。退学的决定显然比转专业要难下，以至于后来许多同学还以为我在开玩笑。&lt;/p&gt;
&lt;p&gt;提出退学的想法后，大部分见过面的老师都找我谈话或者打电话劝我。他们都是好人，然而我不适合在这样的环境中生活。到了最后，我的心里大部分都是感激的心情。研究生部的李老师在最后要交文件的时候还问我考虑不考虑换导师、方向（当然我并不是因为导师或者方向而退学），我在她惋惜的神情中写了保证：不再考虑更换导师、方向。此后她又把文件收起来，说一天后再交，中间想法改了可以告诉她。文件交了好久之后还有老师打电话说你如果后悔了，可以帮你试试能否取消。&lt;/p&gt;
&lt;p&gt;男人，都到这地步了，还后悔什么？虽然老师们不理解我的心思，但是从心底里非常感激他们。&lt;/p&gt;
&lt;p&gt;“原谅我这一生不羁放纵爱自由”&lt;/p&gt;
&lt;p&gt;我也不知道什么时候记住这么一句歌词的，beyond的歌我虽有点喜欢却听不大懂。这些天突然就想起了这句歌词，最适合表达我对朋友们和亲人的心情，让我情不自禁地落泪。&lt;/p&gt;
&lt;p&gt;感谢朋友们为我担忧，提醒我做事情的后果，在迷茫的时候给我鼓励。每次苦恼的时候经常有那么多的朋友陪我聊天，开导我。&lt;/p&gt;
&lt;p&gt;我的父母为我的学业花了太多的心血，我放弃这个学位对他们来说是在是有点不甘心。我告诉他们我会做好的，我也会努力。&lt;/p&gt;
&lt;p&gt;我从&lt;a href=&#34;http://bbs.cncn.com/simple/index.php?t21310.html&#34;&gt;网上&lt;/a&gt;看到这句话：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;自由是我的愿望，如果旁人不干涉我干任何事，多好！我不知道什么是大事，什么是小事，我只做年轻人应该做的事。 …………黄家驹&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;是啊，我也希望这样。至少希望不要有太多的羁绊。&lt;/p&gt;
&lt;p&gt;选择了这条路，我便不会后悔，年轻人，何不凭着自己的热血去做点事情？人首先得为自己活着，才能为别人活着。&lt;/p&gt;</description>
    </item>
    <item>
      <title>友贴在做什么？</title>
      <link>https://qingbo-net.pages.dev/archives/190/</link>
      <pubDate>Thu, 11 Oct 2007 17:35:44 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/190/</guid>
      <description>&lt;img decoding=&#34;async&#34; align=&#34;left&#34; src=&#34;http://www.yotie.com/images/logo.gif&#34; alt=&#34;友贴&#34; /&gt;
&lt;p&gt;作为一个开发者，我加入&lt;a href=&#34;http://www.yotie.com&#34;&gt;友贴&lt;/a&gt;这个团队也多半年了。友贴从酝酿开始到现在，已经有一年多的时间了，一直专注于网站本身的开发，并没有急于推广，网站上的用户大多数都是我们自己的朋友圈发展起来的。直到最近，友贴才以&lt;a href=&#34;http://www.feedsky.com/ad/review.html&#34;&gt;Feedsky话题广告&lt;/a&gt;的形式进行了营销的第一步尝试。&lt;/p&gt;
&lt;p&gt;许多Blogger都围绕友贴所出的话题写了文章。最初，看了大部分的文章都觉得blogger们太不负责任了，都没有仔细使用就写出了所谓的话题文章。讨论了一下之后，我们从自己身上找了原因：对用户的正确引导还远远不够。有些文章确实写得是没水准，从网站上、话题中复制一些，拼凑一下，就成了赚钱的文章。然而有些定价高一点、写得好一点的文章，也没有说到我们想象中的“点子”上，这自然不是他们的错。感谢那些认真写文章的人。&lt;/p&gt;
&lt;p&gt;许多文章都是这样写的：友贴现在有这么六大功能，网页、日记……然后拿网页跟&lt;a href=&#34;http://del.icio.us&#34;&gt;del.icio.us&lt;/a&gt;比一下，拿近况跟&lt;a href=&#34;http://twitter.com&#34;&gt;Twitter&lt;/a&gt;比一下，拿图片跟&lt;a href=&#34;http://flickr.com&#34;&gt;Flickr&lt;/a&gt;比一下。结论是：友贴是现有Web 2.0流行应用的一个汇总，但是各方面都不如相应的对手做得专业。&lt;/p&gt;
&lt;p&gt;我们当然不是在做&lt;a href=&#34;http://del.icio.us&#34;&gt;del.icio.us&lt;/a&gt;、&lt;a href=&#34;http://twitter.com&#34;&gt;Twitter&lt;/a&gt;、&lt;a href=&#34;http://flickr.com&#34;&gt;Flickr&lt;/a&gt;. 友贴的乐趣在于交流，而网页、日记、图片、近况之类，只不过是交流的一个话题（或者说缘由）而已。这“六大功能”都是可以进行评论的。打开&lt;a href=&#34;http://www.yotie.com/friend.html&#34;&gt;朋友圈&lt;/a&gt;你就可以看到所有朋友的信息（网页、日记、图片……）收到的评论，默认将所有信息的评论糅合在一起，当然你也可以选择一种信息类型来单独查看其评论。&lt;/p&gt;
&lt;p&gt;另外在朋友圈这个页面中，你可以看到所有朋友的动态，包括收网页、写日记、做调查，等等动作。以前我也写过文章说明&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post222.html&#34;&gt;朋友动态的重要性&lt;/a&gt;，我们把它作为一个很重要的功能来做。跟&lt;a href=&#34;http://facebook.com&#34;&gt;Facebook&lt;/a&gt;的Mini-Feed不同，你在一个页面中就可以方便地看到所有朋友的动态。加一个用户为朋友，实际的意义是订阅了他的信息，在朋友圈页面中可以看到他发布的新信息，以及他的信息收到的评论。&lt;/p&gt;
&lt;p&gt;看到一条有意思的新闻，收上来，让大家评论；完成了一天的工作，把白天的琐事记在日记里，让大家去聊天；洗澡时突发奇想，大家都是怎么洗的，自顶向下还是自下向上还是……？做个调查吧，看看大趋势:) 所有的这些信息发布后，都会被关注你的人（加你为朋友的人）在他的朋友动态中发现，评论的查看（交流）也极其方便。就这样，友贴的用户们过着其乐融融的生活。&lt;/p&gt;
&lt;p&gt;拿图片功能来说，我们当然比不过&lt;a href=&#34;http://flickr.com&#34;&gt;Flickr&lt;/a&gt;，比不过&lt;a href=&#34;http://yupoo.com&#34;&gt;Yupoo&lt;/a&gt;，将来也没有超越它们的打算。我们重视的是由图片引发的评论，用户之间的交流，而不是图片本身。如果你打算给自己的摄影作品找个好的栖身之地，我推荐你上&lt;a href=&#34;http://flickr.com&#34;&gt;Flickr&lt;/a&gt;、&lt;a href=&#34;http://yupoo.com&#34;&gt;Yupoo&lt;/a&gt;，它们的服务很专业。&lt;/p&gt;
&lt;p&gt;我们还比较重视用户的隐私保护。你会发现各种信息在发布时都会有一个权限选项，简单的，你可以选择公开与否，复杂的，你可以指定只有哪几位朋友可以查看。除去谁都不能说的秘密，用户也一定想在不同的人面前呈现出不同的自己，所以，设定精细的权限系统是有必要的。随着互联网信息的真实化程度越来越高，隐私保护一定会受到更多的重视。&lt;/p&gt;
&lt;p&gt;许多文章说，友贴功能很全，却没有亮点。不对，他们提到的“六大功能”不太可能成为我们的亮点，统一的评论系统、朋友动态和完善的权限系统才是我们的亮点。&lt;/p&gt;
&lt;p&gt;通过这次尝试，稍微扩大了点知名度，更重要的是这些文章让我们看到了一些亟待解决的问题。从话题的描述到网站的首页，基本没有突出我们的“亮点”，而且新用户上来是缺少朋友的，评论汇总、朋友动态中也就没有多少信息，使得他们体会不到其中的乐趣和方便之处。一位Blogger提到，没有留下的理由，我很理解，在没有朋友的情况下，体验那些功能是多么的无聊。所以我们讨论后觉得目前很重要的任务是在用户导向上做一些修正，突出“亮点”，首页可能会有所修改。另外一个问题是如何使新用户迅速建立或融入一个圈子，如何发现朋友，我们一直在努力思考。至于网站的开放性，有些初步工作也已经开始了，但它的重要性在前二者之后，&lt;a href=&#34;http://facebook.com&#34;&gt;Facebook&lt;/a&gt;的API也不是从一开是就有的:)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;欢迎到&lt;a href=&#34;http://www.yotie.com&#34;&gt;友贴&lt;/a&gt;来玩！&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>回家去了！</title>
      <link>https://qingbo-net.pages.dev/archives/189/</link>
      <pubDate>Fri, 28 Sep 2007 06:08:42 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/189/</guid>
      <description>&lt;p&gt;明天就回家了。&lt;/p&gt;
&lt;p&gt;爬山，钓鱼，太爽了……&lt;/p&gt;</description>
    </item>
    <item>
      <title>加了两个动感地带的套餐</title>
      <link>https://qingbo-net.pages.dev/archives/188/</link>
      <pubDate>Thu, 27 Sep 2007 03:21:03 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/188/</guid>
      <description>&lt;p&gt;要回家，就加了一个漫游计划，一个月3元，不错。还加了一个动听计划，10元。&lt;/p&gt;
&lt;p&gt;大概是最近一段时间打电话比较多，花费也比较多，移动上次发短信问我问题，回复就送花费10元，今天又送了30.&lt;/p&gt;
&lt;p&gt;另外看了一下动感地带的小册子，里面有个超级畅听，15元，本地接听500分钟加10M上网流量。然而动听计划加上网套餐也是15，两方面都比超级畅听好得多，不明白它还有什么理由存在。大约现在就是这么多SB的事，专门为SB准备的？&lt;/p&gt;</description>
    </item>
    <item>
      <title>我们都很菜</title>
      <link>https://qingbo-net.pages.dev/archives/187/</link>
      <pubDate>Tue, 25 Sep 2007 03:37:27 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/187/</guid>
      <description>&lt;p&gt;昨天在修改以前同事写的JavaScript代码时，看到里面有这样的写法：&lt;br&gt;
location.load(’/foo…’)&lt;br&gt;
以此跳转到新的页面。&lt;/p&gt;
&lt;p&gt;当时心想，哟，看别人代码就是有收获，又学到新东西了。于是修改的过程中，我也尝试用这种办法，一方面我可以copy原来的代码，另一方面，这种办法比起window.location.href = ‘/foo…’的写法要好看一些嘛……然而代码跑起来的时候却发现，location对象根本没有这个方法。原来，这位同事是看到location有reload（查一下标准）这个方法来重新载入当前页，就认为载入一个新页面应该有个方法为load，以一个字符串为参数。&lt;/p&gt;
&lt;p&gt;记下这件事，并没有丝毫冷嘲热讽的意思。从程序语言设计的角度来说，这种思想是很合理的：为location对象的href属性赋值，应该只引起该对象属性的变化，而不是引发一个动作；而要想使浏览器加载新的页面，应该由一个方法来完成。然而，不论怎么合理，都不能想当然地这样写代码，这已经超出了写代码的范畴了，这是在设计语言。我也不应该看到这样的代码就想当然地认为有这样的方法，至少，google一下就知道它不存在了，万幸的是这个错误被及时地发现了。&lt;/p&gt;
&lt;p&gt;还有一件事，在看到有人用system.out.println方法debug代码时，我经常会指出，除非万不得已，尽可能用IDE的Watch之类的功能，打印的函数很有可能被遗忘在代码中而不被删除。我是个比较自以为是的人，也很理解对方不以为然地说，没关系，完了都会删除的。我很不放心地走开，然而事后经常证明我的担心是对的，检查代码时，还可以看见许多的println debugger完好地留在代码中。&lt;/p&gt;
&lt;p&gt;总之，虚心是很重要的一个品德，如果实在以下问为耻，可以Google啊，baidu啊。看到这些事情，在为别人惋惜的同时，我也把它们当作镜子，反观自己身上是不是有同样的缺点。对别人宽容，对自己严格，又是更难做到的一件事情。&lt;/p&gt;</description>
    </item>
    <item>
      <title>朋友动态，SNS的核反应堆？</title>
      <link>https://qingbo-net.pages.dev/archives/186/</link>
      <pubDate>Sat, 22 Sep 2007 02:39:48 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/186/</guid>
      <description>&lt;p&gt;前几日在&lt;a href=&#34;http://www.yotie.com/&#34;&gt;友贴&lt;/a&gt;上，一位新用户注册时我加了他为好友。不一会就在我的朋友动态里就发现他发起了一个调查，于是我就去参加了他的调查。此时他应该最多只有我一个好友，然而我参加了他的调查之后，加了我为朋友的用户们就在他们的朋友动态中知道我参加了这个调查，于是许多人都跑去参加调查，如果有足够多的用户，这可能就是一个链式反应的效果。这种效果对于用户的交流有切实而有效的促进作用。自己创建的信息有了这么多的参与者，新用户在心理上得到很大的满足，积极性得到提升，圈子也便容易扩大，他就更容易融入这个社区。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.facebook.com/&#34;&gt;Facebook&lt;/a&gt;的Mini-Feed，可以说为Facebook的崛起立下了汗马功劳。用户利用网站提供的API定制各式各样有趣的应用，公布后，只要最初有几个用户参加，如果确实有意思的话，通过Mini-Feed，用户数量就会以指数级的形式增长。&lt;/p&gt;
&lt;p&gt;在&lt;a href=&#34;http://digg.com&#34;&gt;Digg&lt;/a&gt;的这次改版之前，我不知道有没有Friends’ Activity这个栏目。反正在改版后，我注意到最大的变化便是它把朋友的动态放在了页眉比较显眼的位置。这吸引我通过导入Gmail的地址簿来寻找朋友。&lt;/p&gt;
&lt;p&gt;导入地址簿后，我发现许多Gmail联系人都已经是&lt;a href=&#34;http://digg.com&#34;&gt;Digg&lt;/a&gt;的用户，甚至某些头像便是我熟悉的，于是我挑了几个熟悉的人加为朋友（我的联系人并不多），大约不到10个吧。然后让我感觉有趣的事就开始发生。&lt;/p&gt;
&lt;p&gt;很快我就收到数封来自&lt;a href=&#34;http://digg.com&#34;&gt;Digg&lt;/a&gt;的电子邮件，告诉我某某已经加我为好友，（你们现在是真正的朋友了！）此时我就回到&lt;a href=&#34;http://digg.com&#34;&gt;Digg&lt;/a&gt;去刷新朋友动态页面，发现在短短的十分钟内，我刚加的几位朋友达到了非常活跃的程度，产生了许多新的动作，都呈现在我的朋友动态视图中。&lt;/p&gt;
&lt;p&gt;大部分都是加了我为朋友，然后他们就看到我刚才有个动作加了一群好友。于是除了加我为朋友，有的用户还加了我的某些朋友（也就是他的二度好友）。有的用户开始更新自己的头像，还有的用户也通过导入地址簿的方式找到一群好友。他的这群好友又会有怎样的动作呢？我没有继续去追溯，不过可以想象，这是一个爆炸式的信息产生过程。&lt;/p&gt;
&lt;p&gt;在这个过程中，参与的许多用户在&lt;a href=&#34;http://digg.com&#34;&gt;Digg&lt;/a&gt;上本来不是特别活跃的，有的甚至数月未有过动作。毕竟Digg不像一般的社区网站，有很大的黏性，大多数用户都只是上来看看有趣的事情或者头条新闻。此间就是Email起了推动和联系的作用，&lt;a href=&#34;http://digg.com&#34;&gt;Digg&lt;/a&gt;将重要的信息（比如有人加你为好友）通过Email的方式通知给用户，促使我们上去交友并发现朋友们正在关注的新闻以及其它动作。看来Email仍然是人们交流的一个重要的有一定优势的渠道，Email营销是相当有意义的。&lt;/p&gt;
&lt;p&gt;正如核能一样，链式反应不光带来巨大的能量，控制不好的话，更可能带来灾难。&lt;/p&gt;
&lt;p&gt;对于用户来说，朋友圈不能无限制地扩大，否则朋友的动态便成为一个非常巨大的信息库，让他找不到真正的朋友及其动态，这就是灾难。即使朋友圈的大小在正常范围内，也有可能存在特别活跃的朋友把不太活跃的朋友的动态淹没的现象，而我们更关心的，可能是不太活跃的朋友产生的少量信息，活跃朋友的信息的权重会低一些。有了可控性，朋友动态才会为SNS带来真正的活力。&lt;/p&gt;</description>
    </item>
    <item>
      <title>不能再用Google Reader Notifier了</title>
      <link>https://qingbo-net.pages.dev/archives/185/</link>
      <pubDate>Mon, 17 Sep 2007 07:39:52 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/185/</guid>
      <description>&lt;p&gt;在Google Reader通知插件中，&lt;a href=&#34;http://www.markdbd.com/proyectos/google_reader_notifier/&#34;&gt;Google Reader Notifier&lt;/a&gt;一直是最好的一个，我一直用它。&lt;/p&gt;
&lt;p&gt;但RSS的notifier只适合少量订阅的情景。像我现在订阅的RSS随着时间推移不断地增多，几乎每半小时都有许多更新。我又是那种看见那里有个未读数字就感觉不爽的人，于是不停地打开看reader，浪费许多时间。&lt;/p&gt;
&lt;p&gt;从必要性上来说，RSS毕竟不是邮件，至少对我来说没有那么重要。&lt;/p&gt;
&lt;p&gt;只好把它卸载了，以后每天没事的时候集中看个一两次就行了。对于那些订阅RSS很少的用户，仍然很推荐这个Firefox插件。&lt;/p&gt;</description>
    </item>
    <item>
      <title>摸了一把iPhone</title>
      <link>https://qingbo-net.pages.dev/archives/184/</link>
      <pubDate>Sat, 08 Sep 2007 18:11:14 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/184/</guid>
      <description>&lt;p&gt;在摸到iPhone之前，我一直觉得那些排队等iPhone的人是疯子。不过昨天一位朋友拿来iPhone让我玩了一下，真是太爽了。&lt;/p&gt;
&lt;p&gt;从外观到软件界面到操作方式的设计都是一流的，图片、网页的手指操作缩放，微软所谓的Surface Computer应该是从此借鉴而来。对JavaScript的良好支持，浏览一般的网站没有问题。&lt;/p&gt;
&lt;p&gt;实际上功能很简单，比现在几百块的手机功能都少。然而用完后只能说，太酷了！有忍不住想买一个的冲动。朋友劝我这几年攒点钱，攒钱买房子吗？还早呢，呵呵。正好iPhone大降价导致Jobs公开道歉，我真想……还是忍忍！&lt;/p&gt;
&lt;p&gt;起初这位朋友问我的时候，我还说等gPhone出来再说。看到iPhone后就想，可能Google在服务上会好过Apple，但设计上不大可能超越。在iPhone的软件中，就带了&lt;a href=&#34;http://youtube.com&#34;&gt;Youtube&lt;/a&gt;和&lt;a href=&#34;http://maps.google.com/&#34;&gt;Google地图&lt;/a&gt;两个服务，可见它们已经有比较密切的合作。&lt;/p&gt;
&lt;p&gt;有弱智指出”&lt;a href=&#34;http://www.yotie.com/post/6627&#34;&gt;Google开发手机注定要失败&lt;/a&gt;“，这是不可能的。不过假如Google推出了手机，可能多数人就会走实用主义的道路，对iPhone的市场也会有影响。但是Apple所针对的用户，正式那些愿意为领先的设计和超凡的体验付出代价的人们。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gmail: A Behind the Scenes Video</title>
      <link>https://qingbo-net.pages.dev/archives/183/</link>
      <pubDate>Sat, 08 Sep 2007 02:12:53 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/183/</guid>
      <description>&lt;p&gt;Google的程序总是在有新功能的时候及时的通知用户，Gmail里一般在右上角用红字标出。&lt;/p&gt;
&lt;p&gt;某一天Gmail右上角出了个”Watch our video”，点过去看，很有意思。&lt;/p&gt;
&lt;p&gt;世界各地的人们拍出了各种各样富有创意的以Gmail为主题的视频片段，然后google剪辑成了一个video，展示一封邮件在全世界传递的情景：&lt;/p&gt;
&lt;p&gt;页面的下面还有一个简单的地图mashup，将那些视频短片标注在地图上，似乎还有中国上海拍的一段。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.youtube.com/video_response_view_all?v=VfDW7qAdFGk&#34;&gt;更多视频&lt;/a&gt; | &lt;a href=&#34;http://gmailblog.blogspot.com/2007/08/watch-final-gmail-collaborative-video.html&#34;&gt;更多详情&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我们也想了一个片段：Gmail信封飞啊飞，突然碰到了长城，掉下去了。谁能将它做成视频？&lt;/p&gt;</description>
    </item>
    <item>
      <title>Search in Google Reader!</title>
      <link>https://qingbo-net.pages.dev/archives/182/</link>
      <pubDate>Thu, 06 Sep 2007 05:07:42 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/182/</guid>
      <description>&lt;p&gt;今天上了Google Reader，注意到两个改变。一是Offline那里没有了“New”字样，一是Ajax加载的Loading改了样子。&lt;/p&gt;
&lt;p&gt;可是我却没有注意到它的最重要的改动，&lt;a href=&#34;http://googlereader.blogspot.com/2007/09/we-found-it.html&#34;&gt;顶上竟然有了搜索框&lt;/a&gt;！直到看到了Google Reader Blog的日志。&lt;/p&gt;
&lt;p&gt;桌面软件是不能比的，因为它的历史记录非常有限。其它的Online reader？我觉得不可能超越Google. 没有理由再用别的RSS阅读器了，除非有一天我们拯救了全人类，实现了和谐世界。&lt;/p&gt;
&lt;p&gt;除了搜索，左边栏可以隐藏了，另外加了浏览器历史记录管理，可以前进后退了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>月光晚餐</title>
      <link>https://qingbo-net.pages.dev/archives/181/</link>
      <pubDate>Tue, 28 Aug 2007 13:49:47 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/181/</guid>
      <description>&lt;p&gt;（&lt;a href=&#34;http://www.yotie.com/diary/2393&#34;&gt;转载&lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;本来是想拿相机拍摄红月亮的，结果没有找到月亮，索性拍拍晚餐&lt;br&gt;
地点：财智大厦北侧银谷大厦的邻居的邻居的苗阿朵&lt;br&gt;
模特：&lt;a href=&#34;http://www.yotie.com/u/laoguan&#34;&gt;laoguan&lt;/a&gt;、&lt;a href=&#34;http://www.yotie.com/u/qingbo&#34;&gt;qingbo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;第一道：大丰收（那个酱味道有些怪）&lt;br&gt;
&lt;img decoding=&#34;async&#34; src=&#34;http://image.yotie.com/photo/833/143/118830568895225DLS9.jpg&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;第二道：苗家烧茄子（经典，去4次要点3次的）&lt;br&gt;
&lt;img decoding=&#34;async&#34; src=&#34;http://image.yotie.com/photo/250/944/1188305729577XK7S4D.jpg&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;第三道：豆豉回锅肉（不怎么点，失败，太肥了）&lt;br&gt;
&lt;img decoding=&#34;async&#34; src=&#34;http://image.yotie.com/photo/302/904/11883057914958RAEN1.jpg&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;第四道：小炒肉（去4次点3次的东西，今天的辣椒太多了）&lt;br&gt;
&lt;img decoding=&#34;async&#34; src=&#34;http://image.yotie.com/photo/542/426/1188305815697255M5H.jpg&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;虽然点菜不是很成功，不过你们看laoguan同学的饭碗……&lt;br&gt;
&lt;img decoding=&#34;async&#34; src=&#34;http://image.yotie.com/photo/599/45/1188306301276291RD7.jpg&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Simpsons Movie (辛普森一家)</title>
      <link>https://qingbo-net.pages.dev/archives/180/</link>
      <pubDate>Tue, 28 Aug 2007 07:55:53 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/180/</guid>
      <description>&lt;p&gt;其实我是通过&lt;a href=&#34;http://www.yotie.com/u/twoiron&#34;&gt;twoiron&lt;/a&gt;才知道辛普森一家的，首先是他的头像，然后是他的一篇日记里贴了一段&lt;a href=&#34;http://www.yotie.com/diary/1595&#34;&gt;Lisa和Homer的对话&lt;/a&gt;。之后很快我就看到消息说这个1989年就开始放映的动画戏剧要搬上大荧幕，非常期待。&lt;/p&gt;
&lt;p&gt;看完之后的感觉就和当初看完Ice Age差不多，同学来了就打开给他看，逢人便强烈推荐，不愧是待客、送礼的上品:)&lt;/p&gt;
&lt;p&gt;辛普森一家是住在Springfield的一个怪异、畸形、变态却招观众喜爱的家庭。故事以他们为主角，以环境污染为主题展开，幽默、诙谐和小小的讽刺充满了影片的整个过程。&lt;/p&gt;
&lt;p&gt;故事还没开始，就开始给人以幽默、讽刺的感觉。在20th Century Fox的logo片段中，故事中的人物Ralph Wiggum从0字中走出来，叫声代替了我们已经习惯了的音乐。然后画面开始播放猫和老鼠的片段，Homer站起来，后悔自己竟然买了电影票来看可以在电视上免费收看的东西，然后说每个电影院里的观众都是”Giant sucker”，手指指向观众，”especially you!”。这也是制作者向观众表明了他们将电视剧搬上荧幕的勇气。&lt;/p&gt;
&lt;p&gt;随便挑几个片段：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Homer看到其他人通过下水口逃出玻璃罩，向loser们告别，艰难地逃走后，警察说，”Now they’re China’s problem.”&lt;/li&gt;
&lt;li&gt;施瓦辛格当了总统，”I was elected to lead, not to read.”&lt;/li&gt;
&lt;li&gt;Bart裸体滑板在路上飞奔，老太婆高喊，”Don’t look at where I’m pointing!”&lt;/li&gt;
&lt;li&gt;Marge说猪屎漏出来了，Homer: “It’s not leaking, it’s overflowing.”&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;总之幽默到处都是，看的时候一定要从头到尾，连最后的制作组人员表也不要错过啊。&lt;/p&gt;
&lt;h3 id=&#34;关于spider-pigharry-plopper&#34;&gt;关于Spider-Pig/Harry Plopper&lt;/h3&gt;
&lt;p&gt;Homer将一头差点被宰掉的猪带回家玩，后来差点跟它接吻，再后来猪屎酿成了大祸。中间有一段Homer让它在屋顶来回走，一边模仿spiderman主题曲唱：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Spider-Pig, Spider-Pig. / Does whatever a Spider-Pig does. / Can he swing / from a web? / No he *can’t*, / cause he’s a pig. / Look out! / He is the Spider-Pig!&lt;/p&gt;</description>
    </item>
    <item>
      <title>出乎意料的Yahoo! Pipes</title>
      <link>https://qingbo-net.pages.dev/archives/179/</link>
      <pubDate>Sun, 26 Aug 2007 14:22:15 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/179/</guid>
      <description>&lt;p&gt;前阵子有个在美国的老同学想买车，但是&lt;a href=&#34;http://craigslist.org/&#34;&gt;craigslist.org&lt;/a&gt;上的信息太多了，他想把输出的RSS过滤一下，比如只看包含”Toyota”的信息，问我有什么好办法。我一下就想到了&lt;a href=&#34;http://pipes.yahoo.com/pipes/&#34;&gt;Pipes&lt;/a&gt;。不过虽然当时我看到了Yahoo Pipes发布的消息，却没有自己去体验一番，只看到有些人用它做了一些过滤、合并后的feed。这次朋友问，顺便自己去试试吧！&lt;/p&gt;
&lt;p&gt;点击了“Create a pipe”之后，真是一种惊艳的感觉（它是用&lt;a href=&#34;http://developer.yahoo.com/yui/&#34;&gt;yui&lt;/a&gt;做的）。这时我才发现Yahoo! Pipes的精华原来在pipe的创建：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://bababian.com:80/phoinfo/8A33343441B7F2619646076F9ECE2CA1DT&#34;&gt;&lt;img decoding=&#34;async&#34;  style=&#34;float:left;margin:3px;&#34; src=&#34;http://photo1.bababian.com/upload3/20070826/8A33343441B7F2619646076F9ECE2CA1_240.jpg&#34; border=&#34;0&#34; alt=&#34;pipe&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在Pipes推出的时候，说它借用了Unix pipe的概念。不过不懂Unix pipe可没关系，在这里，管道的概念是如此的直观，你根本不需要自己写”xxx file | grep …”这样的命令。只要提供你的数据源，通过鼠标的点击、拖拽设计出自己的逻辑，一个pipe就出来了。你可以想象自己是一个技艺精湛的管道工，水该怎么流，什么样的物质需要保留，什么样的物质需要去除，只要想好了，就可以熟练地铺设好管道。&lt;/p&gt;
&lt;p&gt;朋友用了这个东西之后感觉很好，说Yahoo! Pipes才让RSS变得真正有用了（当然他还有一点不甚满意就是即时性，一个hot deal可能几分钟就已经成交，而RSS更新的间隔远远大于这个时间。这个延迟有多方面的因素，包括网站本身、Yahoo! Pipes、在线RSS阅读器等）。&lt;/p&gt;
&lt;p&gt;然而让我兴奋的并不是这个过滤的结果，而是生成pipe的过程。以我这样传统的思维来设计这个应用，可能是一个向导式的界面。第一步，选择数据源；第二步，选择操作；第三步，预览或完成。如果你在第二步想修改一下数据源，如果在第三步想修改一下operator，都得返回之前的界面，多么繁杂！这样的话，pipes肯定不会有这么大的影响力。&lt;/p&gt;
&lt;p&gt;Yahoo! Pipes的UI/UE可以说做到了极致，在一个界面中融合了这么多的元素而不显得杂乱无章，让人无所适从。随时可以修改任意模块的设定，反而让人觉得极其方便、直观，这也许是人们为什么愿意使用pipes的原因。&lt;/p&gt;
&lt;p&gt;桌面程序都少有做得这么方便操作的。微软一直想让爷爷奶奶都可以像搭积木一样编写程序，他们把IDE做成傻瓜式的，托托拽拽一个SQL数据库连接就出来了，一个窗体程序就生成了。然而某些用这样的傻瓜式IDE写出来的应用程序，用起来比写程序都难。Yahoo! Pipes可以作为桌面应用和RIA的一个榜样，推荐所有感兴趣的人自己做一个pipe感受一下。&lt;/p&gt;
&lt;p&gt;一个优秀的软件或应用程序固然需要优秀的创意、架构和算法，但是用户界面和体验也非常重要。Yahoo! Pipes的成功，固然有稳定、快速的服务器端程序支持为基础，但我认为主要功劳在于界面。&lt;/p&gt;</description>
    </item>
    <item>
      <title>推荐CSSVista</title>
      <link>https://qingbo-net.pages.dev/archives/178/</link>
      <pubDate>Thu, 23 Aug 2007 05:42:51 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/178/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://litmusapp.com/cssvista/&#34;&gt;CSSVista&lt;/a&gt;是一个免费软件，用它编辑CSS或inline style时，可以即时地看到在IE和Firefox中的实际效果：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.mattbrindley.com/images/cssvista-015-1.jpg&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;http://www.mattbrindley.com/images/cssvista-015-1-thumb.jpg&#34; alt=&#34;CSSVista&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;安装它首先需要安装 .NET Framework，但是这是值得的。经常一些时候你在一种浏览器里面调试界面，终于好了，然而拿到另一种浏览器中，啊，一团糟！如果用CSSVista来编辑CSS，哪个改动引起了浏览器不同的render行为，你都可以及时地知道。&lt;/p&gt;
&lt;p&gt;它还有一些handy的小功能如语法高亮、自动补全等，绝对值得一试。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://litmusapp.com/cssvista/&#34;&gt;CSSVista&lt;/a&gt;的主页不如&lt;a href=&#34;http://www.mattbrindley.com/projects/cssvista/announcing-cssvista-015/&#34;&gt;一个开发者的blog文章&lt;/a&gt;详细。&lt;/p&gt;</description>
    </item>
    <item>
      <title>用Firebug加速Web前端开发</title>
      <link>https://qingbo-net.pages.dev/archives/177/</link>
      <pubDate>Thu, 16 Aug 2007 01:49:41 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/177/</guid>
      <description>&lt;p&gt;工欲善其事，必先利其器。&lt;/p&gt;
&lt;p&gt;Firebug是在Firefox中调试HTML、JavaScript、CSS的工具。它的发布可以用“横空出世”来形容，对于Web开发者来说，针对Firefox的开发成本大大降低。我现在开发都是先在Firefox上，然后为兼容IE给代码“打补丁”，而这打补丁花费的时间，有时会超过在Firefox上开发所用的时间，甚至数倍、数十倍！&lt;/p&gt;
&lt;p&gt;IE deverloper toolbar，是IE开发组自己做的，按理说应该更强大才对，然而实际上它根本无法跟Firebug这个第三方插件相比，简直就是鸡肋。拥有如此优秀的插件，一定程度上也反映了Firefox的良好基础架构。&lt;/p&gt;
&lt;p&gt;了解Firebug，首先要上它的主页。插件的作者首先是位优秀的Web开发者，Firebug的主页是做得非常好的。注意页顶的图片，它不仅仅是一幅截图，Console, HTML, CSS, …那排Tab，都是可以点击的！图片的切割和JavaScript的应用，构成了一个交互式的预览。先不用安装，点一点那些tab，你就会大致了解Firebug的界面和功用。&lt;/p&gt;
&lt;p&gt;这个预览的下面是它的各种功能的简介。我最近才发现简介的链接是到更详细的介绍，以前都是自己摸索，看到那些激动人心的功能，忍不住有写出来分享的冲动。既然人家本来就有这么好的介绍，我再做这件事就是费力不讨好了:) 如果你确实需要Firebug，那你一定要从头到尾一字不拉地把它的介绍看完，不然说不定会遗漏一些贴心的功能！&lt;/p&gt;
&lt;p&gt;这里还有一篇Firebug作者写的文章，可以看看：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.ddj.com/development-tools/196802787&#34;&gt;AJAX Debugging with Firebug&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Firefox的一个小bug</title>
      <link>https://qingbo-net.pages.dev/archives/176/</link>
      <pubDate>Tue, 14 Aug 2007 01:33:43 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/176/</guid>
      <description>&lt;p&gt;这两天网络不好，发现了Firefox的一个小问题。&lt;/p&gt;
&lt;p&gt;假设你现在网络出了问题，虽然不显示网络连接断开，但连接任何网站都会超时。打开一个新标签，输入一个网址，回车，过一会，出现了超时的提示。在同一标签页中，重新连接另一个网址，同样是超时。&lt;/p&gt;
&lt;p&gt;这时就可以发现问题了。点击“刷新”图标，刷新的是第二个网址。点击重试图标，重试的是第一个网址！&lt;/p&gt;
&lt;p&gt;谁把它提交到Firefox的Tracker吧。Firefox 2.0.0.6, Windows XP SP2.&lt;/p&gt;</description>
    </item>
    <item>
      <title>对付垃圾留言的较好方案</title>
      <link>https://qingbo-net.pages.dev/archives/175/</link>
      <pubDate>Sun, 12 Aug 2007 16:01:10 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/175/</guid>
      <description>&lt;p&gt;垃圾留言真是blogger们心中永远的痛。&lt;/p&gt;
&lt;p&gt;在Akismet被封后，我一度不知道如何应对蜂拥而至的spam. 后来我关闭了Pingback和Trackback，然后把spam中常用的词写进了黑名单。黑名单有些效果，大部分的spam都没了，可是还是有不少漏网之鱼，例如有个垃圾就天天写ro***ck，邮箱是随机的，IP不固定，中间那几个星号也是随机。我就是拿它没办法。另外也造成了留言者的不便，因为黑名单中的词也很可能被正常的留言使用，例如我当时就把“…”放进了黑名单。&lt;/p&gt;
&lt;p&gt;最近一次误删了blog，我又开始寻找对付spam的好方法。&lt;/p&gt;
&lt;p&gt;首先，对付comment spam，我认为最好的是&lt;a href=&#34;http://wordpress-plugins.feifei.us/hashcash/&#34;&gt;WP-Hashcash&lt;/a&gt;，不需验证码（额外的输入使留言者感到繁琐而且影响注意力），留言者只要启用了JavaScript就可以成功留言，而spam bot一般难以模拟这种行为。&lt;/p&gt;
&lt;p&gt;你也看到了&lt;a href=&#34;http://wordpress-plugins.feifei.us/hashcash/&#34;&gt;WP-Hashcash&lt;/a&gt;那里也写出了Limitations，除了需要启用Javascript（现在哪个网站不需要Javascript？），还有不能阻止Trackback/Pingback spam。&lt;/p&gt;
&lt;p&gt;对付trackback/pingback spam，可以用&lt;a href=&#34;http://sw-guide.de/wordpress/plugins/simple-trackback-validation/&#34;&gt;Simple Trackback Validation Plugin&lt;/a&gt;。之前我用过RICE大学的人搞的&lt;a href=&#34;http://seclab.cs.rice.edu/proj/trackback/trackback-validator-plugin/&#34;&gt;Trackback Validator Plugin&lt;/a&gt;，效果不好。这个新的插件就是基于RICE的插件改进的，我打开trackback好多天了，收到一些正常的trackback/pingback，还没有发现spam。很好！&lt;/p&gt;
&lt;p&gt;这两个插件的组合，我认为比Akismet强多了。Akismet会放过一些spam bot，还会误杀一些非spam的留言，这两种情况都被解决了，而且数据库空间没有浪费。什么Spam Kama，什么bad behaviour，都回误杀无辜，误杀率比Akismet大得多，通通不可取。&lt;/p&gt;
&lt;p&gt;当然对于人工spammer，我们还是束手无策。前几日有人在我站上发了一个留言，我看到了，比较正常。过一会又发一条，哇，竟然是那传说中的人肉spammer！二话不说，连同那个正常的留言一起删了，妈的！这位仁兄，你还会来看我blog吗？骂的就是你！&lt;/p&gt;
&lt;p&gt;spam几乎绝迹，用一个时下流行的词说，叫和谐。用原始社会的话说，叫清净。&lt;/p&gt;</description>
    </item>
    <item>
      <title>世界观？</title>
      <link>https://qingbo-net.pages.dev/archives/174/</link>
      <pubDate>Sun, 12 Aug 2007 02:55:37 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/174/</guid>
      <description>&lt;p&gt;近日laozhou在&lt;a href=&#34;http://www.yotie.cn/&#34;&gt;友贴&lt;/a&gt;上写了篇日记，&lt;a href=&#34;http://www.yotie.cn/diary/1863&#34;&gt;讲他奇怪的想法&lt;/a&gt;，部分摘录：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;看了亚瑟合和他的mini王国，感叹这部电影的浪漫与现实的完美结合，感叹作者的丰富的想像力和那轻松幽默诙谐的风格。&lt;/p&gt;
&lt;p&gt;我们这个地球很大啊，很大吗？从宇宙的观点是不是很小的一颗呢？“一沙一世界”，漂浮在我们身边的那些尘埃，上面是不是也类似一个星球呢？在不同的尘埃之间穿行，会不会也是星际旅行了呢？那些尘埃上面是不是也生活着一些“人”类呢？他们是不是也要吃喝拉撒睡，也有白天和黑夜，也有感情有苦恼呢？它们那个世界也有互联网么？或许是更先进的信息传递技术？它们那些或者很小或者很大的世界里面，也有计算机，有汽车，有自然灾害，有空气污染什么的么？它们会不会看着我们就如同我们用电子显微镜来观看细菌一样，觉得我们很小很小？我们的暴雨雨是不是它们洒水的结果呢？我们打雷是不是它们拍桌子的结果呢？我们地震是不是它们跺脚的结果呢？我们的火山爆发是不是它们扔了火柴棍（如果它们有火柴的话）的结果呢？或者，它们看着我们，我们用肉眼根本看不到它们，它们觉得我们很大很大呢？我们随便一个小动作，它们的世界就会天翻地覆了呢？那么它们也结婚么？它们也购物么？&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;嗯，我有时候也有这种想法，在人类看来，自己生活的地球很大，处于浩瀚无边的宇宙中。说不定地球就是一颗小灰尘飘来飘去，漫长的几百万年对于更宏观的世界来说只是微不足道的一瞬间，等到灰尘落到地上，或被雨打下的时候，人们就认为，啊，世界末日来了。可怜的生物经历了这么复杂的进化，人类出了这么复杂的文明和技术，全部成了虚无，唉，我们为什么奋斗，活着有什么意义呢？&lt;/p&gt;
&lt;p&gt;人类总是自以为是的，或者想像力不够，描述外星人的时候，总是以自己为模板，复制一下，改改体形五官。我的胡思乱想中，也是把我们的世界放大了一下。谁知道宏观的世界里，“生命”是如何延续的呢？如同我们所发现的微观世界里，生命体是和人类很不同的。&lt;/p&gt;
&lt;p&gt;dandan的一段回复：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;至于生活的意义，我问过自己和别人同样的问题，别人给的答案是马斯洛的自我实现理论，我自己呢，觉得生活是一种历程，大家的终点一样，因此享受这个过程是重要的~&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;自我实现，还是为了一些牵挂而活着？如果没有亲人朋友，活着还有意义吗？唉，太哲学了，不想了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>将文章同步到Live Space中去</title>
      <link>https://qingbo-net.pages.dev/archives/173/</link>
      <pubDate>Tue, 31 Jul 2007 13:27:39 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/173/</guid>
      <description>&lt;p&gt;MSN上的朋友们，现在你们可以及时看到我的Blog更新了 🙂&lt;/p&gt;
&lt;p&gt;许多人还是不大喜欢用RSS订阅，而Live Space的更新会及时地在MSN联系人前面显示一个小星星。&lt;/p&gt;
&lt;p&gt;我用了&lt;a href=&#34;http://privism.org/blog/live-sync/&#34;&gt;Live Space Sync&lt;/a&gt;这个插件来把我的Live Space与这个blog同步。至少从已经转过去的文章看，效果是很不错的。&lt;/p&gt;
&lt;p&gt;不过那边基本就是一个通知，我只管把文章推过去，评论还是来这边好了，呵呵。那边的评论我关闭了。&lt;/p&gt;
&lt;p&gt;可能还有很多朋友、同学不知道我在写blog吧，哈哈，欢迎大家以后多来看看 🙂 从生活到技术，什么都乱扯。从体系结构到编译器到高级语言到Web前端，知道什么写什么。&lt;/p&gt;</description>
    </item>
    <item>
      <title>script.aculo.us实现Gmail联系人自动补全</title>
      <link>https://qingbo-net.pages.dev/archives/172/</link>
      <pubDate>Mon, 30 Jul 2007 08:35:49 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/172/</guid>
      <description>&lt;p&gt;摘自&lt;a href=&#34;http://script.aculo.us/&#34;&gt;script.aculo.us&lt;/a&gt;首页：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;script.aculo.us provides you with easy-to-use, cross-browser user interface JavaScript libraries to make your web sites and web applications fly.&lt;/p&gt;
&lt;p&gt;What’s inside? animation framework, drag and drop, Ajax controls DOM utilities, and unit testing.&lt;/p&gt;
&lt;p&gt;It’s an add-on to the fantastic &lt;a href=&#34;http://prototypejs.org&#34;&gt;Prototype&lt;/a&gt; framework.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;用script.aculo.us有一段时间了，它实现的效果很美观实用，用起来又非常简单，非常舒服。最初的时候我为一个drag drop的任务头疼，后来发现了它，一句代码搞定，真是太爽了。&lt;/p&gt;
&lt;p&gt;如果让你现在做一个像Gmail写邮件时自动补全地址的功能，一定会觉得无从下手。是啊，动态创建提示列表，方向键处理，回车，Tab，还不知道在各种浏览器中调试多少次才可以，好麻烦！&lt;/p&gt;
&lt;p&gt;别急，有script.aculo.us，这个工作简单了很多。我们用&lt;a href=&#34;http://wiki.script.aculo.us/scriptaculous/show/Autocompleter.Local&#34;&gt;Autocompleter.Local&lt;/a&gt;来实现这个效果。先给个效果看看：&lt;/p&gt;
&lt;p&gt;&lt;input type=&#34;text&#34; size=&#34;70&#34; id=&#34;autocompleter&#34; /&gt; &lt;/input&gt;&lt;/p&gt;
&lt;div id=&#34;popup-options&#34; style=&#34;display:none;&#34;&gt;
&lt;/div&gt;
&lt;p&gt;我不想为它专门改一下blog模板加个CSS，所以候选项的样式不是很好，分不清哪个被选中了。你可以在上面输入字幕”b”，然后用鼠标点击一个选项。实际使用的时候一定是需要样式的，这样方便用上下方向键选择(现在也可以按上下键然后回车，只是没有表现)。javascipt我也是引用的script.aculo.us的，如果是自己用，可以下载一份到自己的服务器上。&lt;/p&gt;
&lt;p&gt;代码我就不再写一遍了，你可以自己查看本页面的源代码。关键就是一句代码：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;new Autocompleter.Local(”autocompleter”, “popup-options”, [“aaa”, “abc”, “bbb”, “bbc”, “bcd”, “cdd”],&lt;br&gt;
{frequency: 0.1, tokens: “,”, afterUpdateElement: function(element) {element.value+=”, “;}}&lt;br&gt;
);&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;第一个参数是那个input的id，第二个参数是显示後选项的元素的id，第三个参数是候选项数组。第四个参数是选项。tokens指定分隔符，我这里指定了逗号，那么它就会对最后一个逗号后面的内容进行补全操作。afterUpdateElement我定义了一个函数，在输入框中加上一个”, “，这样就可以输入多个项了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>form的onsubmit属性</title>
      <link>https://qingbo-net.pages.dev/archives/171/</link>
      <pubDate>Mon, 30 Jul 2007 06:23:51 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/171/</guid>
      <description>&lt;p&gt;在对一个表单（form）进行客户端检验的时候，我们已经习惯了&amp;lt;form onsubmit=”return&lt;br&gt;
check()”&amp;gt;这样的形式，如果表单没有通过验证，在check函数中return false就会阻止表单的提交了。&lt;/p&gt;
&lt;p&gt;然而，如果要动态地为一个表单添加验证，即HTML代码中没有写onsubmit，而在页面加载后用javascript给这个form加一个handler，问题就&lt;br&gt;
来了。&lt;/p&gt;
&lt;p&gt;假设我们已经得到了表单的DOM节点，保存在变量form中，一般这样来给它加上handler：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;if (form.addEventListener) {&lt;br&gt;
form.addEventListener(“submit”, check, false);&lt;br&gt;
} else if (form.attachEvent) {&lt;br&gt;
form.attachEvent(“onsubmit”, check);&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;但是这个check函数现在应该怎么写呢？验证失败时，仅仅写一个”return&lt;br&gt;
false;”在Firefox中是不能阻止表单的提交的(在IE中可以)，这就是为什么大家在onsubmit属性中要写”return&lt;br&gt;
check()”，而不仅仅是”check()”。&lt;/p&gt;
&lt;p&gt;请看&lt;a href=&#34;http://www.w3.org/TR/DOM-Level-2-Events/ecma-script-binding.html&#34;&gt;ECMAScript Language Binding&lt;/a&gt;，其中明确地写着，event&lt;br&gt;
listener没有返回值。其实一切的根本都因为IE不支持DOM Level 2，大家都习惯了IE的return&lt;br&gt;
false，到了Firefox中也只是一个ugly的变通，而很少去注意正确的做法。&lt;/p&gt;
&lt;p&gt;下面是一个可以被动态地attach(见上面的代码)的check函数：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;function check() {&lt;br&gt;
if (e &amp;amp;&amp;amp; e.preventDefault) e.preventDefault();&lt;br&gt;
return false;&lt;br&gt;
}&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;在IE和Firefox中，它都可以被动态挂载为onsubmit的handler而且正常工作。&lt;/p&gt;
&lt;p&gt;万恶的IE！&lt;/p&gt;</description>
    </item>
    <item>
      <title>在Flash中如何弹出链接</title>
      <link>https://qingbo-net.pages.dev/archives/170/</link>
      <pubDate>Sat, 28 Jul 2007 10:18:20 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/170/</guid>
      <description>&lt;p&gt;在AS2中，一般用getURL函数来打开链接：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;getURL(”http://www.qingbo.org/”, “_blank”);&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;在AS3中，用navigateToURL函数：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;navigateToURL(new URLRequest(”http://www.qingbo.org/”), “_blank”);&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;但它们都回被Firefox的ad blocker阻止并出现一个警告条（甚至是一个随机事件！）。我Google了好久，大部分都没有给出好的办法。&lt;/p&gt;
&lt;p&gt;其实Google的第二条结果是blogspot的，因它被封我就懒得打开了。最后不得已用代理上去，发现解决办法就在那里，用ExternalInterface调用Javascript打开新窗口就可以了。简单的就是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;ExternalInterface.call(“window.open”, “http://www.qingbo.org/”, “_blank”, “”);&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;原文链接（链接加了代理，直接点击可访问）：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://anonymouse.org/cgi-bin/anon-www.cgi/http://skovalyov.blogspot.com/2007/01/how-to-prevent-pop-up-blocking-in.html&#34;&gt;http://skovalyov.blogspot.com/2007/01/how-to-prevent-pop-up-blocking-in.html&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pownce不好玩</title>
      <link>https://qingbo-net.pages.dev/archives/169/</link>
      <pubDate>Sat, 28 Jul 2007 09:45:48 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/169/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://pownce.com&#34;&gt;Pownce&lt;/a&gt;是&lt;a href=&#34;http://digg.com&#34;&gt;Digg&lt;/a&gt;的创始人的又一个产品。&lt;/p&gt;
&lt;p&gt;首先不支持中文，现在做宽字符的支持不很简单吗？它页面编码是UTF-8的，肯定是数据库或者后台没有处理好。&lt;/p&gt;
&lt;p&gt;客户端软件，可以发消息，可以发链接，加Event，但上传不了文件。选择文件后什么反应都没有，点“post”就提示我没有选择文件。也许是我的人品问题。&lt;/p&gt;
&lt;p&gt;在客户端软件想Reply，又跑到网页上去了，不爽。为了流量？这不客户端上也有广告么。。&lt;/p&gt;
&lt;p&gt;AIR是刚出的技术，Pownce的软件还是Alpha 2，也许以后会有惊喜吧，呵呵，我现在是对它没什么兴趣。不明白为什么造了这么大的势，病毒营销这么成功，可能跟digg有关系吧！&lt;/p&gt;
&lt;p&gt;有6个邀请，想试试的说话:)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Nokia删除SIM卡通讯录需要保密码</title>
      <link>https://qingbo-net.pages.dev/archives/168/</link>
      <pubDate>Fri, 27 Jul 2007 02:11:16 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/168/</guid>
      <description>&lt;p&gt;前几天试用一个新手机，把通讯录复制到了SIM卡上。换回原手机后，通讯录里全是重复的联系人，因为手机上也有个备份。但选择全部删除SIM卡上的联系人时，却提示输&lt;br&gt;
入保密码。&lt;/p&gt;
&lt;p&gt;我上网找啊找啊，找到一个试一个，1234, 123456, 0000, 手机号后四位，都不行。后来搜到一个比较像的，说是Nokia的保密码是12345，跟SIM卡没关系。但我输入后还是不对！再搜，有人说连续输入5次错误后，会有一段时间连正确密码都不接受。嗯，等它休息了一会，我再试，终于成功了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google 拼音导致程序崩溃</title>
      <link>https://qingbo-net.pages.dev/archives/167/</link>
      <pubDate>Thu, 26 Jul 2007 16:41:52 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/167/</guid>
      <description>&lt;p&gt;Google拼音导致程序崩溃的事情听说好多了，不过今天是自己亲身遇到了。&lt;/p&gt;
&lt;p&gt;昨天还是今天我看见输入法自动更新到了1.0.20.0，&lt;a href=&#34;http://tools.google.com/pinyin/version.html&#34;&gt;Google输入法的版本历史&lt;/a&gt;里还写着“修正了在部分游戏和应用程序中的兼容性问题”。&lt;/p&gt;
&lt;p&gt;可是在Flash CS3中切换到Google拼音，一打字就挂了。&lt;/p&gt;
&lt;p&gt;难道找一个编辑器写好再往里复制？麻烦不说，总有忘记的时候，一切换输入法，按个键就挂，说不定有重要的工作就丢失了。&lt;/p&gt;
&lt;p&gt;绝对不可用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Blog坏了几天</title>
      <link>https://qingbo-net.pages.dev/archives/166/</link>
      <pubDate>Thu, 26 Jul 2007 05:14:21 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/166/</guid>
      <description>&lt;p&gt;前几天有门课程让做一个简单的mashup，我就准备在自己这个网站上搞，结果不小心把WordPress的文件全删除了，所以挂了好几天。&lt;/p&gt;
&lt;p&gt;今天恢复了，不知道有什么问题没有。顺便用上了最新的WordPress 2.2.1，现在没有加任何插件，主题也很干净。&lt;/p&gt;
&lt;p&gt;对了，那个简单的Mashup，在地图上显示你IP的对应位置：&lt;a href=&#34;http://www.qingbo.org/map/&#34; target=&#34;_blank&#34;&gt;&lt;a href=&#34;http://www.qingbo.org/map/&#34;&gt;http://www.qingbo.org/map/&lt;/a&gt;&lt;/a&gt;。非常简单，其实是受别人的启发:)&lt;/p&gt;</description>
    </item>
    <item>
      <title>快回家了</title>
      <link>https://qingbo-net.pages.dev/archives/165/</link>
      <pubDate>Sat, 21 Jul 2007 15:58:59 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/165/</guid>
      <description>&lt;p&gt;忙得连写blog的时间都没了，呵呵，回家可以放松一下。家里和北京完全是两个世界，没什么压力。&lt;/p&gt;
&lt;p&gt;准备坐个D车回去，虽然贵了点，不过到保定这么一段距离，也贵不到哪里去，哈哈，体验一下。&lt;/p&gt;
&lt;p&gt;其实还有十几天才回去，明天去送人，顺带把票买了。&lt;/p&gt;
&lt;p&gt;上完的课还有没交的作业，考完的课还有没出来的分数，实验室有没完成的工作，还有。。。更重要的事情&lt;/p&gt;</description>
    </item>
    <item>
      <title>AS3如何fade文本(text)?</title>
      <link>https://qingbo-net.pages.dev/archives/164/</link>
      <pubDate>Sun, 08 Jul 2007 11:50:24 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/164/</guid>
      <description>&lt;p&gt;fade文本的效果在很多时候是需要的，但初试时总不成功。找到的答案是，文本必须是static，或者如果文本是dynamic的话，必须embed字体进去。&lt;/p&gt;
&lt;p&gt;在Adobe的这篇文章里，讲到了&lt;a href=&#34;http://www.adobe.com/devnet/flash/quickstart/embedding_fonts/&#34;&gt;如何在Flash中潜入字体&lt;/a&gt;，末尾还给了一个利用Tween类做Fading的例子，然而文中似乎并没有提到只有潜入了字体才可以做这样的Fading&lt;/p&gt;</description>
    </item>
    <item>
      <title>Flash中如何让一个Label使用手形光标？</title>
      <link>https://qingbo-net.pages.dev/archives/163/</link>
      <pubDate>Sun, 08 Jul 2007 11:14:16 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/163/</guid>
      <description>&lt;p&gt;原来光label.useHandCursor = true;还不够，要加下面两条语句：&lt;br&gt;
label.mouseChildren = false;&lt;br&gt;
label.buttonMode = true;&lt;/p&gt;</description>
    </item>
    <item>
      <title>AS3的Dictionary是个好东西</title>
      <link>https://qingbo-net.pages.dev/archives/162/</link>
      <pubDate>Sun, 08 Jul 2007 01:50:22 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/162/</guid>
      <description>&lt;p&gt;最近在学习Flash的简单东西。为了数据和表现的分离，我把读取数据的代码做成一个类，跟显示数据的控件分开。&lt;/p&gt;
&lt;p&gt;在第一帧的AS中，将一个数组的数据用循环显示到控件上，控件也是一个数组。但是，如果要给控件加上事件处理，比如点击，在处理函数中想获得数据，怎么办呢？&lt;/p&gt;
&lt;p&gt;最直接的办法是用Array.indexOf()函数取得控件在数组中的下标，然后再取数据数组中的对应下标的元素，不是太好。&lt;/p&gt;
&lt;p&gt;本来我是想在控件中找类似“setAttribute/getAttribute”的函数的（Java的HttpServletRequest有get/setAttribute，另外Eclipse JDT的编译器语法结构类都有get/setProperty:) ）。后来发现了帮助中在讲Array时提到两种，一种indexed，一种associative，后者就是Dictionary。&lt;/p&gt;
&lt;p&gt;你可以写，&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;var map:Dictionary = new Dictionary();&lt;br&gt;
map[displayObject] = data;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;在event handler里，map[e.target]就可以取得对应数据了。嗯，也可以叫做Map&lt;/p&gt;</description>
    </item>
    <item>
      <title>FCKEditor的Packager</title>
      <link>https://qingbo-net.pages.dev/archives/161/</link>
      <pubDate>Sat, 07 Jul 2007 11:26:44 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/161/</guid>
      <description>&lt;p&gt;FCKEditor的js很大，它特意提供了一个packager来压缩。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.fckeditor.net/download&#34;&gt;FCKEditor的下载页&lt;/a&gt;提供了最新2.4.3版的下载，包括源代码及压缩过的代码。然而当我改动了JS想重新打包的时候问题来了，从同一下载页下载到的FCKEditor.Packager却不能使用，报错说找不到_packager.xml。搞笑的是那个下载的下面还提示2.4以前版本的Packager请到某某地下载。&lt;/p&gt;
&lt;p&gt;最后浏览FCKEditor的Trac站点终于找到了想要的东西，&lt;a href=&#34;http://dev.fckeditor.net/browser/FCKpackager/trunk/fckpackager.exe?format=raw&#34;&gt;下载地址&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;把它放在FCKEditor的目录下（和editor和_samples两个目录在同一层）运行即可。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Visual C&#43;&#43; 2005, ArcGIS Engine 9.2, ATL对话框程序</title>
      <link>https://qingbo-net.pages.dev/archives/160/</link>
      <pubDate>Fri, 06 Jul 2007 03:54:17 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/160/</guid>
      <description>&lt;p&gt;首先向还在被迫学习或使用MFC、ATL之类代表原始社会生产力的工具的同志们道一声，你们辛苦了！&lt;/p&gt;
&lt;p&gt;我郁闷了好长时间才把一个使用ArcGIS Engine的ATL程序弄起来。把详细过程分享出来，避免像我一样不熟悉ATL/COM的人走弯路。ArcGIS可以用C#或Java开发，但有时候你不能自己决定。&lt;/p&gt;
&lt;p&gt;准备工作：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ctrl+Shift+N，New Project&lt;/li&gt;
&lt;li&gt;选择Visual C++下的ATL，在右侧选择ATL Project，在Name栏填写project name，ATLDialog，OK&lt;/li&gt;
&lt;li&gt;在随即出现的ATL Project Wizard里，选择“Application Settings”，Server Type选择Executable，点击Finish&lt;/li&gt;
&lt;li&gt;项目已经生成。在Class View中，右击ATLDialog，Add=&amp;gt;Class&lt;/li&gt;
&lt;li&gt;在Add Class对话框中，选择ATL Dialog，点击Add。接下来的ATL Dialog Wizard中，在Short name中填写TestDialog，点击Finish&lt;/li&gt;
&lt;li&gt;向导已经为我们生成了一个ATL对话框的框架。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;试一下吧。在文件ATLDialog.cpp中，找到_tWinMain函数，在前面添加代码：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;CTestDialog dlg;&lt;br&gt;
dlg.DoModal();&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;并且在前面要包含我们对话框的声明：#include “TestDialog.h”&lt;br&gt;
按下F7，编译结束后对话框弹出了，按下OK，程序正常结束。&lt;/p&gt;
&lt;p&gt;接下来，我们就可以在此基础上加上ArcGIS的控件了（给地图控件加一个点击事件处理）。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Resource View中，ATLDialog-&amp;gt;ATLDialog.rc-&amp;gt;Dialog-&amp;gt;IDD_TESTDIALOG，打开对话框编辑窗口&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对话框稍微拉大点，右键-&amp;gt;Insert ActiveX Control。在弹出的框中选择ESRI MapControl，同样方法加入ESRI LicenseControl&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;调整好MapControl的大小位置后，右键-&amp;gt;Add Event Handler&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;弹出的向导中，选择CTestDialog类，Message Type选择OnMouseUp，点击Add and Edit&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;输入代码：&lt;br&gt;
&amp;gt; IMapControl3Ptr ipMapControl;&lt;br&gt;
&amp;gt; GetDlgControl(IDC_MAPCONTROL1, IID_IMapControl3, (void**) &amp;amp;ipMapControl);&lt;br&gt;
&amp;gt; ipMapControl-&amp;gt;AboutBox();&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;关键时刻来了。IMapControl3Ptr这些接口的定义在哪里呢？不要试图在ArcGIS的VC++ Help for VS2005中找到答案，它会让你郁闷几天的。&lt;br&gt;
在stdafx.h中找到#include &amp;lt;atlcom.h&amp;gt;这行，把它替换成下面的代码（根据你的ArcGIS安装位置更改）：&lt;/p&gt;
&amp;gt; #define ISegment IMSSegment&lt;br&gt;
&amp;gt; #include &amp;lt;atlcom.h&amp;gt;&lt;br&gt;
&amp;gt; #include &amp;lt;atlwin.h&amp;gt;&lt;br&gt;
&amp;gt; #undef ISegment
&amp;gt;
&amp;gt; #include “C:\Program Files\ArcGIS\include\CPPAPI\SDK_Windows.h”&lt;/p&gt;</description>
    </item>
    <item>
      <title>迷茫的一代啊</title>
      <link>https://qingbo-net.pages.dev/archives/159/</link>
      <pubDate>Sun, 01 Jul 2007 05:01:52 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/159/</guid>
      <description>&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;p&gt;当然，自杀对自己来说没有什么好坏。如果真的没有灵魂，死去后万事结束，世界也就没了，一切消失，有什么好有什么坏？人不是为自己活的，有许多人在乎你。父母花了多少心血把我们养了这么大，一瞬间，他们的付出全成了空。&lt;/p&gt;
&lt;p&gt;记得有一次有同学发给我一个类似点名的消息，他说他也想到过自杀。我也想到过自杀，但是没想到他也有过这种念头。看来人人都有难过的时候。在想到自杀的时候，多找人谈谈吧，尽管最后还得靠自己解决，至少你会知道有人关心你，在意你。&lt;/p&gt;
&lt;p&gt;这个社会的大部分不会在乎我们有没有信仰。他们以盈利为第一目的，甚至利用我们的迷茫。于是湖南卫视才会发财，捧出了几个缺少应有能力甚至不可想象的明星。在这样的时代里，文化也会腐朽。&lt;/p&gt;
&lt;p&gt;上午听到有人跳湖的消息，下午看到&lt;a href=&#34;http://www.sillysnail.cn/talk-of-super-boy-2007.htm/&#34;&gt;SillySnail写的文章&lt;/a&gt;，感叹感叹。&lt;/p&gt;</description>
    </item>
    <item>
      <title>并行？</title>
      <link>https://qingbo-net.pages.dev/archives/158/</link>
      <pubDate>Sat, 30 Jun 2007 14:42:59 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/158/</guid>
      <description>&lt;p&gt;并行的应用其实已经很久了，不过最近几年普通PC的CPU也普遍采用多核，并行普及的时代已经到来了。Intel又开始在桌面系统中推它的四核处理器，前几天还看到消息说它几年后将推出32核到48核的图形芯片。&lt;/p&gt;
&lt;p&gt;编写桌面程序的人可以不用太担心，依赖操作系统的调度就可以了。而如果是开发专用的算法之类，那就得自己处理，使得多个核心或CPU能够联合起来发挥足够的优势。还有针对32核、48核的图形芯片编程，怎么办？微软的DirectX会支持吗？&lt;/p&gt;
&lt;p&gt;想当年刚刚有计算机的时候0101地写程序是多么变态，到现在写个漂亮的程序如同搭积木一样简单（微软不是想让奶奶级别的也会变成吗）。并行的概念虽然很早提出，应用也比较早，但我觉得到现在也没有一个像当初编译器出现那样的飞跃。将来会有吗？&lt;/p&gt;
&lt;p&gt;OpenMP、MPI之类基本都是在现有编译器的基础上加东西，对很多人还是有一定的难度。程序员还得精心地考虑如何调度进程（或线程），如何降低调度引入的负载。如同编译器的出现一样，尽管编译器的优化不可能完美，但它毕竟使得大型的项目更容易开发了。对于关键部位的代码，仍然可以用汇编来写。&lt;/p&gt;
&lt;p&gt;嗯，其实我的认识也很粗浅，随便联想一下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>本地连接受限或无连接</title>
      <link>https://qingbo-net.pages.dev/archives/157/</link>
      <pubDate>Thu, 14 Jun 2007 14:33:31 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/157/</guid>
      <description>&lt;p&gt;伸缩网线挺好玩的，不用时收起来成为一个小盒子，不用为纷乱的线烦恼。生活中的烦恼太多了，是吧。&lt;/p&gt;
&lt;p&gt;起初在海龙买了一只，在那里测试没有问题。但拿回来后街上，插口旁边的指示灯闪烁都跟其它网线不同，系统托盘显示“本地连接受限或无连接”，换普通的网线是好的。心里暗骂奸商，可是当时连票都没开，在几楼买的也忘了。于是又上淘宝买了一只，叮嘱卖家一定帮我测试好。收到后赶紧试用，结果竟然跟在海龙买的一样，这下我开始怀疑自己了。跟卖家联系，他说是测试过的，而且以前也有客户遇到这样的情况。&lt;/p&gt;
&lt;p&gt;在网上搜了一下，找到&lt;a href=&#34;http://java.learndiary.com/diaries/2329.jsp&#34;&gt;这个网页&lt;/a&gt;。打开本地连接，属性，配置网卡，高级，选择speed/duplex属性，默认为auto，根据自己网络环境改，不知道可以试，我选择了10Mbps/Full。&lt;/p&gt;
&lt;p&gt;终于可以用了，不过只能用10M，太慢了。原来海龙那家没骗我。。。&lt;/p&gt;</description>
    </item>
    <item>
      <title>从五笔转向拼音</title>
      <link>https://qingbo-net.pages.dev/archives/156/</link>
      <pubDate>Thu, 14 Jun 2007 14:31:45 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/156/</guid>
      <description>&lt;p&gt;五笔还是我在高考完的时候学的，当时我们那个小地方学电脑的主要课程都是学打字，大部分出路都是打字员。学会了，过了几个月，到了学校，又忘了。当时比较有决心，坚持用五笔，没过多久就记起来了。&lt;/p&gt;
&lt;p&gt;记得那时候还有人问我借五笔打字的书来着，不过已经有同宿舍的同学开始讲拼音输入法的好处。那时用的是智能陈桥，在机房的破机器上，切换出来要几秒钟。&lt;/p&gt;
&lt;p&gt;用五笔也有不知道编码的时候，就用拼音打，我最开始习惯用智能ABC，微软拼音是从来不想用。到现在搜狗拼音、Google拼音盛行并传出绯闻，五笔的确是要退出普通人的生活了。&lt;/p&gt;
&lt;p&gt;如果有一个五笔输入法可以像Google拼音一样自动网络同步，该多好。如果可以方便地修改默认的中文输入法该多好，改注册表真麻烦。如果我不添加拼音输入法，别人过来用机器又很不方便。主要就是这两点促使了我转向拼音输入法，Google拼音刚推出时用了一下，太舒服了。&lt;/p&gt;
&lt;p&gt;当然五笔也有好处，上大一的时候同班一个MM用“恩”作QQ昵称，我问为什么，她说打不出口字旁的。。。（可能应该打ng而不是en）于是我用五笔打了个“嗯”（KLDN），看着别人的QQ昵称是自己创作的，别提多有成就感了。有时候在BBS上看到有人问，那个“有”字缺两横怎么打啊？五笔很简单，DMB，冇。又有人问，Orz那个O换成汉字是什么啊？是冏（MWKD）。尤其对着手写的花名册输入一些生僻的人名时，五笔真的有拼音起不到的实际作用。当然，可以用手写板解决。&lt;/p&gt;
&lt;p&gt;去年到Meimei家的时候，她二哥拿着对讲机跟同楼的哥们一起打传奇。我发现他竟然用的是五笔输入——原来他不会拼音，呵呵。跟用五笔的人聊天，一出错就能辨别出来是五笔用户，比如用五笔的人打“程度”可能打出“程序”，而拼音不会，最多是“成都” 🙂&lt;/p&gt;
&lt;p&gt;一个是音，一个是形。还真希望Google弄个五笔输入法出来，虽然可能性不大。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google的圆角生成器</title>
      <link>https://qingbo-net.pages.dev/archives/155/</link>
      <pubDate>Tue, 22 May 2007 05:39:58 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/155/</guid>
      <description>&lt;p&gt;有一次想在页面中做圆角矩形效果，无意中搜索到了这样一篇文章：&lt;a href=&#34;http://ajaxian.com/archives/googles-rounded-corner-generator&#34;&gt;Googles Rounded Corner Generator&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;代码&amp;lt;img src=”http://groups-beta.google.com/groups/roundedcorners?c=E8EEF7&amp;amp;bc=white&amp;amp;w=50&amp;amp;h=50&amp;amp;a=tr” alt=”google round corner” /&amp;gt;的效果就是这样一个图片：&lt;/p&gt;
&lt;img decoding=&#34;async&#34; src=&#34;http://groups-beta.google.com/groups/roundedcorners?c=E8EEF7&amp;#038;bc=white&amp;#038;w=50&amp;#038;h=50&amp;#038;a=tr&#34; alt=&#34;google round corner&#34; /&gt; 
&lt;p&gt;参数说明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;c(color): 前景色&lt;/li&gt;
&lt;li&gt;bc(background-color): 背景色（默认为透明）&lt;/li&gt;
&lt;li&gt;h(height): 高度(默认8 px)&lt;/li&gt;
&lt;li&gt;w(width): 宽度(默认8 px)&lt;/li&gt;
&lt;li&gt;a(angle?): 要产生哪个角。有四个值：tl(top left), tr(top right), bl(bottom left), br(bottom right)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;太方便了，太方便了&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google如何纠正错别字？</title>
      <link>https://qingbo-net.pages.dev/archives/154/</link>
      <pubDate>Mon, 21 May 2007 10:58:23 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/154/</guid>
      <description>&lt;p&gt;刚刚看新浪一个搞笑新闻&lt;a href=&#34;http://mil.news.sina.com.cn/p/2007-05-19/1013445258.html&#34;&gt;日本媒体称官兵缺爱易陷中国桃色陷阱(组图)&lt;/a&gt;，里面有一段的标题中写了个“攻城掠地”。我记得就应该是“攻城略地”，可是上网一搜，“攻城掠地”也到处都是。&lt;/p&gt;
&lt;p&gt;后来看到有一些网页是出找错别字的题目的，才看出“攻城掠地”确实是写错了。&lt;/p&gt;
&lt;p&gt;而我在Google拼音中输入gongchengluedi的时候，竟然出来两个成语，一个“攻城略地”，还有一个“攻城掠地”。这样对于文化的传播真的有很坏的影响。。&lt;/p&gt;
&lt;p&gt;Google输入法的词库据说有来源是网民搜索关键字，造成这种错误也不足为怪了。但用Google搜索英文的时候它都会提示拼写错误，什么时候可以对汉字检查拼写错误呢？就算现在没有能力检查，在生成词库的时候为什么不把这样的错误除掉呢？&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何安装Subversion，及通过Apache提供HTTP服务</title>
      <link>https://qingbo-net.pages.dev/archives/153/</link>
      <pubDate>Fri, 18 May 2007 15:51:03 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/153/</guid>
      <description>&lt;p&gt;服务器上httpd，Subversion都是自己编译的。&lt;/p&gt;
&lt;p&gt;最初安装Subversion时，配置Apache，HTTP访问不了。查Apache的Log发现有segmentation fault. 曾经也在网上找过合适的mod_dav_svn.so恰好能用，但这只是投机取巧，自己也不放心，还是找到根本的解决办法比较好。&lt;/p&gt;
&lt;p&gt;问题的原因在于Apache和Subversion都使用了&lt;a href=&#34;http://apr.apache.org/&#34;&gt;APR&lt;/a&gt;库，然而用的不是一个版本。我不知道Subversion为什么带着apr 0.97发布（该版本似乎不支持大文件），apr的最新版本已经是1.2.8了。Apache里的版本是比较新的，我用Apache的APR替换Subversion的来编译，这样它们用的就是同一版本了，不再有segmentation fault，使用过程中也没有发现其它问题。&lt;/p&gt;
&lt;p&gt;下面是安装的过程。安装swig-py是为了能够将svn与&lt;a href=&#34;http://trac.edgewall.org/&#34;&gt;trac&lt;/a&gt;结合，你当然可以不安装它。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;将subversion-1.4.3, subversion-deps-1.4.3在同一目录解压，然后把subversion-1.4.3目录中的apr和apr-util两个目录删除，将apache源代码中的两个目录复制过来。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;先安装neon&lt;br&gt;
&amp;gt; # ./configure -with-zlib –enable-shared –enable-static –with-libs=/usr/local&lt;br&gt;
&amp;gt; # make &amp;amp;&amp;amp; make install&lt;br&gt;
&amp;gt; 将neon目录改名：&lt;br&gt;
&amp;gt; # mv neon neon-back&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;安装subversion/swig-py&lt;br&gt;
&amp;gt; # make clean&lt;br&gt;
&amp;gt; # make clean-swig-py&lt;br&gt;
&amp;gt; # ./configure –prefix=/etc/subversion –with-apxs=/etc/httpd/bin/apxs –with-swig –with-neon=/usr/local&lt;br&gt;
&amp;gt; # make &amp;amp;&amp;amp; make swig-py&lt;br&gt;
&amp;gt; # make install &amp;amp;&amp;amp; make install-swig-py&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;安装过程中假设Apache的安装目录是/etc/httpd/，make会自动把mod_dav_svn.so安装到/etc/httpd/modules目录，在httpd.conf中load，就可以配置Subversion的HTTP访问了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>收到sohu寄来的耳机</title>
      <link>https://qingbo-net.pages.dev/archives/152/</link>
      <pubDate>Thu, 17 May 2007 12:54:17 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/152/</guid>
      <description>&lt;p&gt;昨天突然有陌生号码打电话给我，说有快递送给我。因为不在住址，我就告诉他我在的地方，等他送来。心里想，哪个好朋友给我送东西来了呢？&lt;/p&gt;
&lt;p&gt;听到快递进了门我赶紧迎接过去，生怕是什么见不得人的东西。不过收到的却是一个耳机，而且是Sohu送来的。我和Sohu向来没有什么瓜葛啊。&lt;/p&gt;
&lt;p&gt;过了一会看到快递单子上有个电话号码，打过去问，说是我参加了Nokia的一个活动，中奖了。&lt;/p&gt;
&lt;p&gt;冥思苦想。仿佛曾经有一天打开MSN，弹出广告，不小心点了一下，填了个表。早知道，忘了用这点人品去买彩票了。&lt;/p&gt;
&lt;p&gt;耳机是买N7x系列送的那种，Cosonic CD-850V，值几十块钱，冬天可以给耳朵保暧。&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何为Yourkit配置以jsvc方式运行的Tomcat</title>
      <link>https://qingbo-net.pages.dev/archives/151/</link>
      <pubDate>Wed, 16 May 2007 15:26:31 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/151/</guid>
      <description>&lt;p&gt;我们一般在Linux服务器上用&lt;a href=&#34;http://jakarta.apache.org/commons/daemon/jsvc.html&#34;&gt;jsvc&lt;/a&gt;(Java Service)来运行Tomcat 5.5。Tomcat的源代码中带了jsvc，在bin目录中。jsvc工具是属于&lt;a href=&#34;http://jakarta.apache.org/commons/daemon/&#34;&gt;commons-daemon&lt;/a&gt;项目的，Tomcat中带的是最新的稳定版本1.0.1。&lt;/p&gt;
&lt;p&gt;用Yourkit来profile一个J2EE Web应用，首先需要在Tomcat启动时加上profile agent的参数，-agentlib:yjpagent. 然而，1.0.1版本的jsvc并不支持Java 1.5的参数”-agentlib”。当然，你可以在catalina.sh中加参数，用startup.sh启动Tomcat，但应该还是有许多人希望用jsvc运行。&lt;/p&gt;
&lt;p&gt;我最初Google的结果来自&lt;a href=&#34;http://forums.yourkit.com/viewtopic.php?t=326&#34;&gt;Yourkit的服务论坛&lt;/a&gt;。2005年的问题，到现在还没有解决，甚至yourkit的人都不知道jsvc是什么东西。&lt;/p&gt;
&lt;p&gt;终于在Apache的bugzilla里看到有人提出了&lt;a href=&#34;http://issues.apache.org/bugzilla/show_bug.cgi?id=38992&#34;&gt;jsvc不支持Java 5的新参数的问题&lt;/a&gt;，而下面有开发人员回复说在trunk里已经修正。又搜到这样&lt;a href=&#34;http://lists.alioth.debian.org/pipermail/pkg-java-commits/2006-November/002585.html&#34;&gt;一个网页&lt;/a&gt;，可以看到parse函数中处理了agentlib这个参数。&lt;/p&gt;
&lt;p&gt;但jsvc在Apache SVN的什么地方呢？坚持找了好久，终于找到了&lt;a href=&#34;http://svn.apache.org/repos/asf/jakarta/commons/proper/daemon/trunk/src/native/unix/&#34;&gt;这个地址&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;好，从这里co一份代码替换原来的jsvc，编译。编辑/etc/init.d/tomcat，加上agentlib参数。如果按照Yourkit的文档做好了准备工作的话，启动Tomcat，在%TOMCAT_HOME%/logs/catalina.out中就可以看到Yourkit的agent已经工作了，且可以知道它在哪个端口上工作。&lt;/p&gt;
&lt;p&gt;打开Yourkit的图形界面，连接到这台服务器，就可以监视上面的J2EE应用了。&lt;/p&gt;
&lt;p&gt;不知道新版本的commons-daemon什么时候发布，或者新的jsvc代码什么时候被打包进Tomcat. 但如果你需要JVM 1.5的新参数，就应该使用最新的SVN代码。&lt;/p&gt;</description>
    </item>
    <item>
      <title>猫</title>
      <link>https://qingbo-net.pages.dev/archives/150/</link>
      <pubDate>Mon, 14 May 2007 12:35:42 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/150/</guid>
      <description>&lt;p&gt;今天来上班的时候路过一家理发店，几个店员看着一只猫，猫嘴里有一只鸽子。我开始以为是死的，他们告诉我是这只猫刚抓的。他们都惊讶猫能抓住鸽子真厉害，可是鸽子那么&lt;br&gt;
笨，猫抓它其实很容易。可怜那只鸽子。去年春节回家，我一个邻居家说他家的猫经常去山上抓野兔回来。我二奶奶家的猫会抓麻雀，这难度比抓鸽子可大多了。&lt;/p&gt;
&lt;p&gt;会抓鸟的猫不一定会抓老鼠。并且那个抓鸽子的猫不一定愿意抓老鼠。我姥姥家有一只猫，长得很漂亮，其实是邻居家的。当时它快死了，我姥姥把它养活，它就不走了。但它留&lt;br&gt;
下来不是报恩抓老鼠，而是去抓鸡吃。于是只好把它拴起来。&lt;/p&gt;
&lt;p&gt;我姥姥家还有另外两只猫，应该是同一胎的。去年我见到的时候它们还小，有一只想爬上一个很矮的箱子。轻轻一跳就上去了，它没有。它把前爪搭到箱子边上，后腿蹬啊蹬，蹬&lt;br&gt;
了好久也上不去，放弃了。我无话可说了，懒到这种程度！今年去，它们还是一样的懒，白天睡，晚上也睡。据姥姥说，它们在地上玩，老鼠在高处害人。下面是其中一只睡觉的&lt;br&gt;
照片，真惬意：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/view?id=ff8080811288df6701128a64ce453612&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;懒猫&#34; src=&#34;http://photo8.yupoo.com/20070514/194140_405854599_m.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;就这样，我姥姥家的老鼠和猫过着和谐的生活。&lt;/p&gt;</description>
    </item>
    <item>
      <title>事情太多了</title>
      <link>https://qingbo-net.pages.dev/archives/149/</link>
      <pubDate>Fri, 27 Apr 2007 15:25:25 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/149/</guid>
      <description>&lt;p&gt;我连去寄个信的时间都没有，宿舍的电脑上已经落了一层灰。&lt;/p&gt;
&lt;p&gt;Ubuntu 7.04发布了，我是没时间去尝试了，另外对Gnome这个笨重的家伙也越来越不感冒，在它基础上也做不出什么用着舒服的东西来。开源是好，但说实话，反应速度和界面的可用性上，Gnome跟Window$没法比。你可以说，界面还是Mac为尊，但作为抄袭者，显然还是微软更专业一点。可惜了那么酷的beryl.&lt;/p&gt;
&lt;p&gt;现在所做的工作和所处的境地也逼着我，得装Windows了。&lt;/p&gt;
&lt;p&gt;快5.1了，回家好好休息休息。嗯，回到家，跟这里就是两种人生观，就想去弄块地，盖个小房子，鸡，鸭，羊，牛，。。。&lt;/p&gt;</description>
    </item>
    <item>
      <title>祸兮，福之所倚</title>
      <link>https://qingbo-net.pages.dev/archives/148/</link>
      <pubDate>Tue, 24 Apr 2007 14:39:16 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/148/</guid>
      <description>&lt;p&gt;一周前，我的校友信箱被发垃圾邮件的盯上了，发得那个疯狂，过了一天，系统就发出警告信，说容量超过警戒线了。毕竟校友信箱不是Gmail。&lt;/p&gt;
&lt;p&gt;我一直是将其中的信件自动转发到Gmail中的，已经好久没登录过了。这一警告，赶紧去邮箱里删信，删完了发现还有许多空间被使用，就到发件箱去看。意外收获，大三时图像处理的作业乖乖地躺在那里呢！其时我正在被一门选修课的作业所困扰。把它放到Linux里，touch一下再拿回来，写个报告交上去，完事了。&lt;/p&gt;
&lt;p&gt;多么宝贵的人生经验，平凡的生活中蕴含着这么深奥的哲理。&lt;/p&gt;
&lt;p&gt;Update: 发现里面还有详尽的文档，但遗憾的是当时不知道为什么转成了PDF还加了密。。。不过省得动脑筋了，打字还是很快的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>IE float元素的一个恶心Bug</title>
      <link>https://qingbo-net.pages.dev/archives/147/</link>
      <pubDate>Thu, 19 Apr 2007 15:30:12 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/147/</guid>
      <description>&lt;p&gt;这种问题不好Google，也许已经有许多人知道怎么解决了，不过我没有搜索到，为解决这问题，加起来花了应该有半天时间。我大致知道了一个重现的过程。&lt;/p&gt;
&lt;p&gt;在一个比较窄的元素中，我想把几个词排成两列。用如下的代码（容器宽度是在外面的元素限制的）：&lt;/p&gt;
&lt;p&gt;`&lt;br /&gt;&lt;/p&gt;
&lt;div style=&#34;width:250px&#34;&gt;&lt;br /&gt;
	&lt;div style=&#34;border:1px solid #0066CC;padding:10px;font-size:14px;text-align:left;&#34;&gt;&lt;br /&gt;
		&lt;div style=&#34;margin-left:10px;float:left;width:100px&#34;&gt;Test&lt;/div&gt;&lt;br /&gt;
		&lt;div style=&#34;margin-left:10px;float:left;width:100px&#34;&gt;Test&lt;/div&gt;&lt;br /&gt;
		&lt;div style=&#34;margin-left:10px;float:left;width:100px&#34;&gt;Test&lt;/div&gt;&lt;br /&gt;
		&lt;div style=&#34;margin-left:10px;float:left;width:100px&#34;&gt;Test&lt;/div&gt;&lt;br /&gt;
		&lt;div style=&#34;margin-left:10px;float:left;width:100px&#34;&gt;Test&lt;/div&gt;&lt;br /&gt;
		&lt;div style=&#34;margin-left:10px;float:left;width:100px&#34;&gt;Test&lt;/div&gt;&lt;br /&gt;
		&lt;div style=&#34;margin-left:10px;float:left;width:100px&#34;&gt;Test&lt;/div&gt;&lt;br /&gt;
		&lt;div style=&#34;margin-left:10px;float:left;width:100px&#34;&gt;Test&lt;/div&gt;&lt;br /&gt;
		&lt;div style=&#34;clear:both&#34;&gt;&lt;/div&gt;&lt;br /&gt;
	&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
` 
&lt;p&gt;但效果是这样：&lt;/p&gt;
&lt;div style=&#34;width:250px&#34;&gt;
  &lt;div style=&#34;border:1px solid #0066CC;padding:10px;font-size:14px;text-align:left;&#34;&gt;
    &lt;div style=&#34;margin-left:10px;float:left;width:100px&#34;&gt;
      Test
    &lt;/div&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;div style=&amp;quot;margin-left:10px;float:left;width:100px&amp;quot;&amp;gt;
  Test
&amp;lt;/div&amp;gt;

&amp;lt;div style=&amp;quot;margin-left:10px;float:left;width:100px&amp;quot;&amp;gt;
  Test
&amp;lt;/div&amp;gt;

&amp;lt;div style=&amp;quot;margin-left:10px;float:left;width:100px&amp;quot;&amp;gt;
  Test
&amp;lt;/div&amp;gt;

&amp;lt;div style=&amp;quot;margin-left:10px;float:left;width:100px&amp;quot;&amp;gt;
  Test
&amp;lt;/div&amp;gt;

&amp;lt;div style=&amp;quot;margin-left:10px;float:left;width:100px&amp;quot;&amp;gt;
  Test
&amp;lt;/div&amp;gt;

&amp;lt;div style=&amp;quot;margin-left:10px;float:left;width:100px&amp;quot;&amp;gt;
  Test
&amp;lt;/div&amp;gt;

&amp;lt;div style=&amp;quot;margin-left:10px;float:left;width:100px&amp;quot;&amp;gt;
  Test
&amp;lt;/div&amp;gt;

&amp;lt;div style=&amp;quot;clear:both&amp;quot;&amp;gt;
&amp;lt;/div&amp;gt;&amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;显然我想边框把这几个条目全部包起来（而且行间距也不应该那么大！）。最初的时候这几个词是相等字数即等宽的，于是我把”Test”的float属性去掉，加上display:inline。这时，宽度就无效了，但因为字符串等长，我就给它加了固定的margin，可以实现两列了，而且IE的border也把它们都包起来了。&lt;/p&gt;
&lt;p&gt;不过最近需求变了，这几个词的长度不等了，用display:inline再加margin的办法不行了。该面对的问题还是要面对，尽管IE很垃圾，用它的人还是太多。仔细看上面代码显示的效果，IE似乎是认为那个框里只有三行（在我的应用里，它是认为只有一行），显然是处理float的高度有问题。知道这点后，我就在那些float元素的前面加了一个空的div，NND，这就没事了。&lt;/p&gt;
&lt;p&gt;代码：&lt;/p&gt;
&lt;p&gt;`&lt;br /&gt;&lt;/p&gt;
&lt;div style=&#34;width:250px&#34;&gt;&lt;br /&gt;
	&lt;div style=&#34;border:1px solid #0066CC;padding:10px;font-size:14px;text-align:left;&#34;&gt;&lt;br /&gt;
		&lt;div&gt;&lt;/div&gt;&lt;br /&gt;
		&lt;div style=&#34;margin-left:10px;float:left;width:100px&#34;&gt;Test&lt;/div&gt;&lt;br /&gt;
		&lt;div style=&#34;margin-left:10px;float:left;width:100px&#34;&gt;Test&lt;/div&gt;&lt;br /&gt;
		&lt;div style=&#34;margin-left:10px;float:left;width:100px&#34;&gt;Test&lt;/div&gt;&lt;br /&gt;
		&lt;div style=&#34;margin-left:10px;float:left;width:100px&#34;&gt;Test&lt;/div&gt;&lt;br /&gt;
		&lt;div style=&#34;margin-left:10px;float:left;width:100px&#34;&gt;Test&lt;/div&gt;&lt;br /&gt;
		&lt;div style=&#34;margin-left:10px;float:left;width:100px&#34;&gt;Test&lt;/div&gt;&lt;br /&gt;
		&lt;div style=&#34;margin-left:10px;float:left;width:100px&#34;&gt;Test&lt;/div&gt;&lt;br /&gt;
		&lt;div style=&#34;margin-left:10px;float:left;width:100px&#34;&gt;Test&lt;/div&gt;&lt;br /&gt;
		&lt;div style=&#34;clear:both&#34;&gt;&lt;/div&gt;&lt;br /&gt;
	&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
` 
&lt;p&gt;效果：&lt;/p&gt;</description>
    </item>
    <item>
      <title>request.getParameter返回null</title>
      <link>https://qingbo-net.pages.dev/archives/146/</link>
      <pubDate>Sun, 08 Apr 2007 10:27:39 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/146/</guid>
      <description>&lt;p&gt;用GET方法传递过去的参数，在某些情况下用request.getParameter只能取得null，而apache确实得到了完整的URL，且Debug时URL也是完整的，就是取不出来。&lt;/p&gt;
&lt;p&gt;参数是一大段文字，其中可能有中文，我在客户端是用Javascript编码过的，为了避免URL过长，截断过，在以前的PHP里用得很好，就是偶尔会把一个中文字的编码给切断，造成末尾乱码，但影响不大。这次出了这个问题，我一直怀疑是不是Tomcat不能接受这么长的URL，或者是struts/JSP. 结果找到最后，发现就是编码不完整的问题。&lt;/p&gt;
&lt;p&gt;在request.getParameter这个调用里，会对percent encode过的参数值进行解码，但解码时遇到不正确的码就会返回null. 这不正确的码就是我截断的。&lt;/p&gt;
&lt;p&gt;以前编码是把所有的文字编码，组成URL后截断长度到6000。于是改了一下编码的策略，每100个字符作为一个块编码一次，直到字符串结束或剩下的空间不能容纳一个块为止。目前看来，这是一个好办法。&lt;/p&gt;</description>
    </item>
    <item>
      <title>bbPress做菜单</title>
      <link>https://qingbo-net.pages.dev/archives/145/</link>
      <pubDate>Wed, 04 Apr 2007 14:08:03 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/145/</guid>
      <description>&lt;p&gt;在公司用bbPress架了个小论坛，交流经验、灌水，一个主要的功能是点菜。&lt;/p&gt;
&lt;p&gt;这个版面每天一个sticky主题，吃饭时间大家都把自己要点的东西作为回复发上去，专人统计好后打电话点。&lt;/p&gt;
&lt;p&gt;前些天都是把各家的菜单置顶，但仍然很不方便，每次发贴都得看着其它的页面点。今天花了一点时间，把菜单做到了这个版面的发贴框下面，而且点击一样饭菜时它就会自动加入输入框，舒服多了。&lt;/p&gt;
&lt;p&gt;如果再把每次点的菜加入tag列表，那么就可以利用bbPress的Tag系统统计各样菜的popularity了。可惜我0.81的版本还不支持中文Tag，据说是支持的。。。可以想见，首页的tag cloud将会变成一个menu cloud. menu cloud? 将来开饭馆一定要做一个:) 这样服务员就不用给人介绍哪个菜卖得最好了。&lt;/p&gt;
&lt;p&gt;做一个简单的点菜系统也不难，不过在论坛上点菜更有乐趣。今天就有人滥用key master职能，改了好多人点的菜，哈哈。&lt;/p&gt;</description>
    </item>
    <item>
      <title>奇怪的错误</title>
      <link>https://qingbo-net.pages.dev/archives/144/</link>
      <pubDate>Tue, 03 Apr 2007 05:43:32 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/144/</guid>
      <description>&lt;p&gt;刚才调试一个日记页面时，突然看见tomcat打出的异常，整页的stacktrace，吓了一跳。仔细看，跟这个页面一点关系都没有。&lt;/p&gt;
&lt;p&gt;后来老大过来看，原来是他刚才把一个出错页面信息保存下来记到日记里了。。。&lt;/p&gt;
&lt;p&gt;愚人节还有一件趣事，有时间再记。&lt;/p&gt;</description>
    </item>
    <item>
      <title>精彩评论</title>
      <link>https://qingbo-net.pages.dev/archives/143/</link>
      <pubDate>Sat, 31 Mar 2007 13:30:03 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/143/</guid>
      <description>&lt;p&gt;Quoted from IEBlog:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://blogs.msdn.com/ie/archive/2006/11/30/ie6-and-ie7-running-on-a-single-&#34;&gt;http://blogs.msdn.com/ie/archive/2006/11/30/ie6-and-ie7-running-on-a-single-&lt;/a&gt;&lt;br&gt;
machine.aspx#1186820&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This “solution” shows the utter lack of talent at Microsoft. An application&lt;br&gt;
shouldn’t be so ingrained into an operating system that an entire virtual&lt;br&gt;
environment is needed to use different versions. I used to believe it was a&lt;br&gt;
pain testing web applications for quirks in IE6, Mozilla, Opera, Safari, etc,&lt;br&gt;
but now, thanks to the dolts at MS, I have to run a virtual environment in&lt;br&gt;
addition to my normal rounds of testing, and I guess I can forget about&lt;br&gt;
supporting IE6 users after April 1st. Because the Software Engineers at&lt;br&gt;
Microsoft are clearly lacking in their ability to produce a well written&lt;br&gt;
operating system, I’ve provided a diagram below to prevent mistakes like this&lt;br&gt;
from happening again, courtesy of my undergraduate OS class:&lt;/p&gt;</description>
    </item>
    <item>
      <title>IE，无比垃圾</title>
      <link>https://qingbo-net.pages.dev/archives/142/</link>
      <pubDate>Sat, 31 Mar 2007 13:12:19 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/142/</guid>
      <description>&lt;p&gt;对于开发者来说，使自己的界面在IE下显示正常，需要花费数倍于在Firefox中下的功夫。&lt;/p&gt;
&lt;p&gt;人们可以为Firefox开发出Firebug这样强大的东西，而IE的开发者们自己也仅仅只能做出一个跟Firebug比起来基本上没用的toolbar.&lt;/p&gt;
&lt;p&gt;时无英雄，竟使竖子称雄！希望IE早日安息。&lt;/p&gt;</description>
    </item>
    <item>
      <title>动物园</title>
      <link>https://qingbo-net.pages.dev/archives/141/</link>
      <pubDate>Fri, 23 Mar 2007 16:19:28 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/141/</guid>
      <description>&lt;p&gt;前天下午去的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 熊猫，这只很活跃，跑到玻璃前面好奇地看着外面的人们（&lt;a href=&#34;http://qingbo.yupoo.com/photos/tags/?tag=panda&#34;&gt;所有图片&lt;/a&gt;）：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/view?id=ff808081114495c301117a224fac0783&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;熊猫&#34; src=&#34;http://photo1.yupoo.com/20070322/225218_92369145.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;下面两个视频是它在玩一根竹子，这叫竹马。还有一个好玩的视频，相机上正常，电脑上看很暗。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;熊喝奶，没有一点威风。我建议抓住那些投食的，重罚，或者扔下去喂熊，提高中华民族种群素质，为中华民族伟大复兴做贡献。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/view?id=ff808081114494f001117a1f86301136&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;棕熊&#34; src=&#34;http://photo1.yupoo.com/20070322/224916_2127913626_m.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;这只巨大的猫：&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/view?id=ff808081114494f001117a1f66a41132&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;巨大的猫，注意耳朵上的毛&#34; src=&#34;http://photo1.yupoo.com/20070322/224908_707204105_m.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;这鸟肯定是不死族的，注意左边那只的眼神。它拧着脖子到那样的角度不是看天，是看我！&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/view?id=ff808081114494f001117a1f3ad3112d&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;undead&#34; src=&#34;http://photo1.yupoo.com/20070322/224856_1901873152.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>自然规律</title>
      <link>https://qingbo-net.pages.dev/archives/140/</link>
      <pubDate>Fri, 16 Mar 2007 13:16:47 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/140/</guid>
      <description>&lt;p&gt;上次LMS就提醒我要小心，这次果然最先出局了。看来已经形成自然规律了，以后一定要注意，差不多就可以了，千万不做赢家。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/view?id=ff808081114494f001115ad4465631c9&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://photo1.yupoo.com/20070316/205851_1969239118_m.jpg&#34; alt=&#34;2007-3-16 Texas Hold&#39;em&#34; width=&#34;240&#34; height=&#34;180&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;哪个比较空，被别人的钱占满了的地方就曾经是我的阵地。&lt;/p&gt;</description>
    </item>
    <item>
      <title>办公室</title>
      <link>https://qingbo-net.pages.dev/archives/139/</link>
      <pubDate>Wed, 14 Mar 2007 05:28:52 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/139/</guid>
      <description>&lt;p&gt;我的角落：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/view?id=ff8080811144931501114bb5137d7057&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://photo1.yupoo.com/20070313/223027_1491154347_m.jpg&#34; alt=&#34;我的小角落&#34; width=&#34;240&#34; height=&#34;180&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;健身球，这个比较小，今天又买来一个大的，很爽&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/view?id=ff8080811144931501114bb505ed7055&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://photo1.yupoo.com/20070313/223024_632625148_m.jpg&#34; alt=&#34;健身球&#34; width=&#34;240&#34; height=&#34;180&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>花花草草</title>
      <link>https://qingbo-net.pages.dev/archives/138/</link>
      <pubDate>Wed, 14 Mar 2007 05:26:44 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/138/</guid>
      <description>&lt;p&gt;同事收到的花：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/view?id=ff8080811144931501114bb4f9047054&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; align=&#34;left&#34; src=&#34;http://photo1.yupoo.com/20070313/223020_607955001_m.jpg&#34; alt=&#34;同事收到的花&#34; width=&#34;240&#34; height=&#34;180&#34; border=&#34;0&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://www.yupoo.com/photos/view?id=ff8080811144931501114bb4ebed7052&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://photo1.yupoo.com/20070313/223017_1915685062_m.jpg&#34; alt=&#34;同事收到的花&#34; width=&#34;240&#34; height=&#34;180&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;馒头柳，挺好看的：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/view?id=ff8080811144931501114bb4d1497050&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://photo1.yupoo.com/20070313/223010_1318292256_m.jpg&#34; alt=&#34;馒头柳&#34; width=&#34;240&#34; height=&#34;180&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;桃花快开了：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/view?id=ff8080811144931501114bb4c399704f&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://photo1.yupoo.com/20070313/223007_1406333455_m.jpg&#34; alt=&#34;桃花要开了&#34; width=&#34;240&#34; height=&#34;180&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>昨晚赌赢了</title>
      <link>https://qingbo-net.pages.dev/archives/137/</link>
      <pubDate>Tue, 13 Mar 2007 09:35:36 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/137/</guid>
      <description>&lt;p&gt;昨天晚上是我们第二次玩Texas Hold’em，最后我赢了，哈哈。&lt;/p&gt;
&lt;p&gt;开始的时候放舒缓的音乐，大家都舍不得下注。后来改成了斗牛士进行曲，就变得热血沸腾了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/view?id=ff808081114494f001114a9ade855ad9&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://photo1.yupoo.com/20070313/172214_467337010_qncaptmb.jpg&#34; alt=&#34;Texas Hold&#39;em&#34; width=&#34;320&#34; height=&#34;240&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;第一次的赢家这次最先出局，打扫卫生、跳绳。下次我可得小心了，不能冲动。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Red Hat AS 配置 Subversion</title>
      <link>https://qingbo-net.pages.dev/archives/136/</link>
      <pubDate>Fri, 09 Mar 2007 17:29:52 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/136/</guid>
      <description>&lt;p&gt;今天在一台Red Hat AS 4的服务器上配置Subversion服务。&lt;/p&gt;
&lt;p&gt;首先下载源代码编译，因为没有Apache合适版本的mod_dav.h，没有生成mod_dav_svn.so，而且总是报Locale错误，删了。&lt;/p&gt;
&lt;p&gt;然后下了Collab Net的那个版本，配置Apache的时候说那个mod_dav_svn.so不对，只好也删了。&lt;/p&gt;
&lt;p&gt;最后按Subversion页面上的那个链接找到RPM包，包括apr, apr-util，安装成功，且svn/svnadmin正常运行&lt;br&gt;
。因为本来就有apr和apr-util的低版本，要用-Uvh选项升级。&lt;/p&gt;
&lt;p&gt;但配置Apache的时候出了问题，目录权限没问题了，访问就出错。后来在&lt;a href=&#34;http://subversion.tigris.org/faq.html#reposperms&#34;&gt;Subversion FAQ&lt;/a&gt;里发现Red Hat还有security con&lt;br&gt;
text的概念，正是它阻止了Apache访问代码库。于是chcon一下，可以访问了。然而加上密码验证后总是不能通过验证，这时候才想起看Apache的Log，&lt;br&gt;
原来是无法访问密码文件，permission denied. 噢，密码文件也要chcon.&lt;/p&gt;
&lt;p&gt;看Log很重要，Apache、Tomcat都是。&lt;/p&gt;
&lt;p&gt;期间有一次启动机器，随便按了几个键，好久都无法连接。插上显示器一看，原来停在选择内核那个界面上了。。。&lt;/p&gt;</description>
    </item>
    <item>
      <title>一盆花枯了</title>
      <link>https://qingbo-net.pages.dev/archives/135/</link>
      <pubDate>Fri, 09 Mar 2007 17:02:13 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/135/</guid>
      <description>&lt;p&gt;前些天同学把一盆花放在我们宿舍窗台上，我看它叶子有点蔫，就浇了点水放到窗户外面。&lt;/p&gt;
&lt;p&gt;那几天下雨又下雪，它的叶子变得绿油油的，精神多了。&lt;/p&gt;
&lt;p&gt;可是没过多久叶子就开始变黄枯萎──原来已经冻死了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/view?id=ff8080811144931501114bb4de8d7051&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; src=&#34;http://photo1.yupoo.com/20070313/223014_170553473_m.jpg&#34; alt=&#34;被我冻死的花&#34; width=&#34;240&#34; height=&#34;180&#34; border=&#34;0&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;听说公司要买些花来，呵呵。我还是比较喜欢看见植物的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>日落真美</title>
      <link>https://qingbo-net.pages.dev/archives/134/</link>
      <pubDate>Mon, 05 Mar 2007 10:53:25 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/134/</guid>
      <description>&lt;p&gt;昨天下了雪，今天天气晴了。空气特别清新，在18楼上，远处的山看得清清楚楚，山上还有没化的雪。&lt;/p&gt;
&lt;p&gt;到了黄昏，太阳落山的时候，眼看着它就在十几秒内从刺眼到消失，留下火红的余辉。深蓝的夜幕慢慢下垂，和黑色的山交融在一起。&lt;/p&gt;
&lt;p&gt;没想到它落得那么快。&lt;/p&gt;</description>
    </item>
    <item>
      <title>正月十五</title>
      <link>https://qingbo-net.pages.dev/archives/133/</link>
      <pubDate>Sun, 04 Mar 2007 14:44:22 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/133/</guid>
      <description>&lt;p&gt;今天元宵节。昨天下了一整天的雨，到了晚上十一点多就飘起雪来。今天白天雪融化了，温度降了很多。&lt;/p&gt;
&lt;p&gt;晚上人们开始放烟花，出去看很热闹很漂亮，不过天气太冷。&lt;/p&gt;
&lt;p&gt;小桂子还是不改风格，上班级群里发了一句“大家中秋快乐，恭喜发财”，就跑了，留给同学们无限暇想。Shrek里驴子指着月亮问，那是什么，那个又大又圆的？今天晚上确实晴了，天上挂个又大又圆的东西，小桂子知道它是月亮:)&lt;/p&gt;</description>
    </item>
    <item>
      <title>寒假结束</title>
      <link>https://qingbo-net.pages.dev/archives/132/</link>
      <pubDate>Sun, 25 Feb 2007 11:44:58 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/132/</guid>
      <description>&lt;p&gt;弟弟先我一天去上学，我在家也倍感无聊。周围都是小学同学，大都有了孩子，谈话没有共同语言了。&lt;/p&gt;
&lt;p&gt;昨天早上6:30就起床，坐车到县城。在车站看到红旗招展人山人海在等到北京的直达车，想都没想就买了到保定的票，打算从保定转车到北京。在保定站，发现等车的人更多了，被人带到个大院子里，一队人密密麻麻围了整整一圈，我们排在末尾。看见对面有个拐角，人们从那里拐出去排着队，就奇怪，拐个小弯也多放不了几个人啊。后来排到那边才发现，那里拐到了一个更大的院子里，也被人密密麻麻围了一圈，每个人刚到那里都傻眼了。排队途中不停地有开黑车的动摇人们排队的信心，让人坐他们的车。算起来，至少有一千人吧，好在车多，排了不到一小时就上了车，下午五点钟左右到了庄严肃穆的保福寺。在门口要了一笼包子，一碗面，想大吃一顿，结果吃面的时候看到了小强的尸体，真够倒霉的。&lt;/p&gt;
&lt;p&gt;到了宿舍，才发现是星期六，来得太早了。&lt;/p&gt;
&lt;p&gt;坐车接近北京的时候就感觉到在这种城市中有着和农村不一样的压力，还得拼搏。&lt;/p&gt;</description>
    </item>
    <item>
      <title>用密码保护整个blog</title>
      <link>https://qingbo-net.pages.dev/archives/131/</link>
      <pubDate>Thu, 08 Feb 2007 16:10:01 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/131/</guid>
      <description>&lt;p&gt;WordPress 只提供对某篇文章进行密码保护，但它的标题仍然显示。如果你的Blog是写日记，可能什么都不想让外人看到。&lt;/p&gt;
&lt;p&gt;WP支持论坛的&lt;a href=&#34;http://wordpress.org/support/topic/58347&#34;&gt;一个主题&lt;/a&gt;中给出一种非常简单的解决方案，未登录用户自动被重定向到登录页面。将以下代码复制到你的Blog根目录下，并将$siteurl变量赋予正确的值（从论坛里直接复制的代码似乎有问题）。&lt;/p&gt;
&lt;pre&gt;&amp;lt;?php
$siteurl = &#39;http://your.blog.url&#39;;

$cookiehash = md5($siteurl);
if(empty($_COOKIE[&#39;wordpressuser_&#39; . $cookiehash])) :
header(&#39;Location: /wp-login.php&#39;);
else :
define(&#39;WP_USE_THEMES&#39;, true);
require(&#39;./wp-blog-header.php&#39;);
endif;
?&amp;gt;
&lt;/pre&gt;
&lt;p&gt;刚才朋友让我给他弄密码保护，我把自己的改了一下，然后告诉他好了。刚才上自己Blog出了问题，才想起来改错了。。。我说怎么好几个小时没收到垃圾评论呢，看来对付spam最好的办法还是──关站。&lt;/p&gt;</description>
    </item>
    <item>
      <title>GBK(GB2312)向UTF-8的编码转换</title>
      <link>https://qingbo-net.pages.dev/archives/130/</link>
      <pubDate>Thu, 08 Feb 2007 02:34:35 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/130/</guid>
      <description>&lt;p&gt;最近做一个IE插件，要从网页中取得文字，编码到一个URL中去。在前一篇文章“&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post144.html&#34;&gt;中文URL编码&lt;/a&gt;”中，粗略地介绍了URL编码的规则，以及中文URL编码的过程，但在如何将GBK或者GB2312编码的汉字转换到UTF-8编码仍然是一个问题。编码是一个很复杂的问题，我也了解甚少，这里只是写写我的经验，欢迎补充和指正。&lt;/p&gt;
&lt;p&gt;在PHP、.NET中，编码的转换都比较容易。ATL中有一些宏是用来做编码转换的，我没试过，而且我更愿意用后面所讲的方法。&lt;/p&gt;
&lt;p&gt;在COM编程中，字符串多存储在BSTR结构中。网上许多文章都说这个数据结构中存储的就是Unicode，我就试了好多次从Unicode转UTF-8，未遂。在Debug的时候，含有中文字符串的BSTR能够正常显示，说明它的编码应该是GBK.&lt;/p&gt;
&lt;p&gt;如何从GBK转换到UTF-8呢？&lt;a href=&#34;http://www.gnu.org/software/libiconv/&#34;&gt;libiconv&lt;/a&gt;应该可以做到，然而我使用它的Windows port后，可以编译、注册COM组件，就是工具栏出不来了，于是放弃。上网搜索，得到一个被广泛转载的&lt;a href=&#34;http://www.google.com/search?q=CChineseCode&#34;&gt;CChineseCode&lt;/a&gt;类。然而它仅仅针对汉字（每个汉字在UTF-8编码中占3个字节），如果字符串中有英文，就有麻烦了，因为英文在UTF-8编码中只有一个字节。另外有的字符会占用更多的字节。所以这个类并不适用。&lt;/p&gt;
&lt;p&gt;正确的方法是用Win32 API的&lt;a href=&#34;http://msdn.microsoft.com/library/en-us/intl/unicode_17si.asp&#34;&gt;MultiByteToWideChar&lt;/a&gt;和&lt;a href=&#34;http://msdn.microsoft.com/library/default.asp?url=https://qingbo-net.pages.dev/library/en-us/intl/unicode_2bj9.asp&#34;&gt;WideCharToMultiByte&lt;/a&gt;两个函数，Wide character指的就是Unicode. GBK和UTF-8之间的转换，需要用Unicode作为桥梁（在这种方法里）。比如我们要转换这样一个字符串”编码 – Google 搜索”。&lt;/p&gt;
&lt;h4 id=&#34;从gbk向unicode转换&#34;&gt;从GBK向Unicode转换&lt;/h4&gt;
&lt;p&gt;该字符串在BSTR类型的变量in中存储，首先将其转换为普通的字符串：&lt;/p&gt;
&lt;pre&gt;char *lpszText = _com_util::ConvertBSTRToString(in);
&lt;/pre&gt;
&lt;p&gt;此时，如果用strlen函数取得lpszText的长度，则为18，4个汉字，每个占两个字节，另外有10个英文字符。所以说GBK/GB2312是MultiByte而不是WideChar. 并且有lpszText[0] == 0xb1 &amp;amp;&amp;amp; lpszText&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post144.html&#34;&gt;1&lt;/a&gt; == 0xe0，在&lt;a href=&#34;http://www.microsoft.com/globaldev/reference/dbcs/936.mspx&#34;&gt;微软Windows Codepage 936&lt;/a&gt;这一页上查到果然是“编”字，更坚定了我们认为它是GBK的信心。&lt;/p&gt;
&lt;p&gt;转换到Unicode所用的函数是MultiByteToWideChar，第一个参数是MultiByte的&lt;a href=&#34;http://en.wikipedia.org/wiki/Windows_code_pages&#34;&gt;Code page&lt;/a&gt;，如果确定是GBK，就可以使用&lt;a href=&#34;http://msdn.microsoft.com/library/en-us/intl/unicode_81rn.asp&#34;&gt;936&lt;/a&gt;. 我考虑它应该是与系统有关的（比如日语系统上应该是932），所以使用CP_ACP，系统所用的Codepage.&lt;/p&gt;
&lt;p&gt;先通过将cchWideChar参数设置为0，取得转换后需要的空间大小，然后分配空间，再做实际的转换(转换时cbMultiByte为-1表示要转换的字符串以0结尾)。代码如下：&lt;/p&gt;
&lt;pre&gt;int wLen = MultiByteToWideChar(CP_ACP, 0, lpszText, -1, NULL, 0);
LPWSTR wStr = (LPWSTR)CoTaskMemAlloc(wLen * sizeof(WCHAR));
MultiByteToWideChar(CP_ACP, 0, lpszText, -1, wStr, wLen);
&lt;/pre&gt;
&lt;p&gt;wLen是15，注意是指宽字符的个数，很贴心，14个字符，加上末尾的结束符。分配空间的时候也要注意，不是15个字节，而应该分配30个字节。这些在MSDN中都有说明，仔细看cchWideChar参数的介绍。最后一行代码执行后，wStr中就是这些汉字的Unicode了，查看一下，wStr[0] == 0×7f16，刚才在&lt;a href=&#34;http://www.microsoft.com/globaldev/reference/dbcs/936.mspx&#34;&gt;微软Windows Codepage 936&lt;/a&gt;查找时，“编”字的下面标明7f16，就是它的Unicode编码，说明一切正常。&lt;/p&gt;
&lt;h4 id=&#34;从unicode向utf-8转换&#34;&gt;从Unicode向UTF-8转换&lt;/h4&gt;
&lt;p&gt;转换到Unicode后，就可以使用WideCharToMultiByte函数将其转换到UTF-8编码，这次的code page要用CP_UTF8. 和前面的转换一样，先计算所需要的空间大小并分配，再做实际转换。&lt;/p&gt;
&lt;pre&gt;int aLen = WideCharToMultiByte(CP_UTF8, 0, wStr, -1, NULL, 0, NULL, NULL);
char* converted = (char*)CoTaskMemAlloc(aLen);
WideCharToMultiByte(CP_UTF8, 0, wStr, -1, converted, aLen, NULL, NULL);
&lt;/pre&gt;
&lt;p&gt;aLen为23，因为4个汉字，每个占3个字节，加上10个英文字符（每个占1字节），再加末尾的’\0′，正好是23. 现在converted里就是字符串”编码 – Google 搜索”的UTF-8编码。converted[0] == 0xe7 &amp;amp;&amp;amp; converted&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post144.html&#34;&gt;1&lt;/a&gt; == 0xbc，正是“编”字的UTF-8编码。&lt;/p&gt;</description>
    </item>
    <item>
      <title>中文URL编码</title>
      <link>https://qingbo-net.pages.dev/archives/129/</link>
      <pubDate>Sat, 03 Feb 2007 09:22:44 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/129/</guid>
      <description>&lt;p&gt;URL编码是一个比较麻烦的事情，&lt;a href=&#34;http://www.ietf.org/rfc/rfc3986.txt&#34;&gt;RFC 3986&lt;/a&gt;是关于URI的一个标准，在它的第2节定义了字符如何在URI中进行表示，而第3节把一个URI区分为scheme, hier-part, query, fragment几个component。根据这个RFC，A URI is composed from a limited set of characters consisting of digits, letters, and a few graphic symbols. 附录A中给出了ABNF定义。&lt;/p&gt;
&lt;p&gt;比如URL，/blog/post139.html#comments，就包含了上述的全部四个components。这个URL不需要进行百分号编码，因为每个component中都没有保留字，全部为字母、数字或者非保留的ASCII可见字符（见RFC 3986第2.3节）。&lt;/p&gt;
&lt;p&gt;假设我们在Firefox中打开了这个URL，并且想通过&lt;a href=&#34;http://del.icio.us/help/firefox/extension&#34;&gt;del.icio.us的插件按钮&lt;/a&gt;把它收藏起来。del.icio.us插件打开一个新窗口，并通过GET方法向服务器发出请求，将这个URL和它对应的title作为query的参数传递给服务器，服务器就把这两个值填充到对应的input value属性中。&lt;/p&gt;
&lt;p&gt;假如不经过编码，这个GET请求中的URL就是”http://del.icio.us/flimsy?url=https://qingbo-net.pages.dev/blog/post139.html#comments&amp;amp;title=星月轮转 » Blog Archive » Blog换了个样子&amp;amp;noui&amp;amp;jump=close&amp;amp;v=4″。问题就出来了，#号后面的是什么呢？按理说应该解释为页面中的一个anchor，然而#comments只是url这个参数的一部分。另外，URL中含有汉字，也不符合标准。所以编码是必须的，要针对各个component，以及query中的每个参数值做percent encoding. 注意不是对整个URL（指del.icio.us的GET请求中的长URL）做，如果flimsy后面的问号被编码，服务器便不知道它后面是query部分了。正确编码后的链接应该是&lt;a href=&#34;http://del.icio.us/flimsy?url=http%3A%2F%2Fwww.qingbo.org%2F%3Fp%3D230%23comments&amp;amp;title=%E6%98%9F%E6%9C%88%E8%BD%AE%E8%BD%AC%20%C2%BB%20Blog%20Archive%20%C2%BB%20Blog%E6%8D%A2%E4%BA%86%E4%B8%AA%E6%A0%B7%E5%AD%90&amp;amp;noui&amp;amp;jump=close&amp;amp;v=4&#34;&gt;这样&lt;/a&gt;，很长，就不显示了，你可以复制链接地址来看看&lt;ins datetime=&#34;2007-02-04T12:53:31+00:00&#34;&gt;（似乎显示的时候浏览器又自动decode了，点击即可在地址栏看到编码后结果）&lt;/ins&gt;。&lt;/p&gt;
&lt;p&gt;URL编码要求先将URL转换为一个UTF-8的字节序列，然后再做percent encoding, 这在RFC 3986和W3C的网站上都&lt;a href=&#34;http://www.w3.org/International/O-URL-code.html&#34;&gt;有介绍&lt;/a&gt;。在为Firefox做插件时，主要用Javascript实现程序逻辑，而Javascript中的字符串是UTF-8编码，且有一个方便的encodeURIComponent函数可以做URL编码。除此之外，还有escape/encodeURI两个函数。关于它们三个的比较，可参考&lt;a href=&#34;http://xkr.us/articles/javascript/encode-compare/&#34;&gt;这篇文章&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;如果没有现成的函数，对UTF-8字节序列进行percent encoding也是比较方便的。对于unreserved character值，不需要做转换，其它的字节全部用% HEXDIG HEXDIG来表示。另外空格除”%20″外，也可以转为”+”，节省空间。&lt;/p&gt;
&lt;p&gt;一个非常重要的问题就是如何把字符（ASCII字符除外，主要是中文等）转换为UTF-8的字节序列。并不是每种语言都像Javascript那样方便，比如在C++中，你得到了一个含有中文的宽字符串，怎么处理呢？Win32 API中是有一个InternetCanonicalizeUrl函数，但它只针对一个字节序列，不会考虑中文的编码转换。在MSDN“规范的URL”&lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/aa384225.aspx#What_Canon_URL&#34;&gt;定义&lt;/a&gt;中，”Characters that must be encoded”并没有提到宽字符的处理，甚至没有提到UTF-8. 它还要求字符串中必须包含一个scheme.&lt;/p&gt;
&lt;p&gt;有时间的时候我会再写一篇关于怎么在Windows中把中文转换为UTF-8字节序列的文章，对进行中文URL编码的朋友也许会有帮助。&lt;ins datetime=&#34;2007-02-08T02:35:08+00:00&#34;&gt;见“&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post145.html&#34;&gt;GBK(GB2312)向UTF-8的编码转换&lt;/a&gt;”一文。&lt;/ins&gt;&lt;/p&gt;
&lt;p&gt;PS. 网上文章一大抄，这几天体会深刻，中文文章尤甚。许多误导的文章被当作经典转来转去，充斥着搜索引擎。网上信息越来越多，有用的信息有时候却越来越难找。本文参考网上一些较为权威的资料，但仍有可能理解不对，欢迎指正。&lt;/p&gt;</description>
    </item>
    <item>
      <title>James Gosling 也玩点名游戏</title>
      <link>https://qingbo-net.pages.dev/archives/128/</link>
      <pubDate>Sat, 03 Feb 2007 01:16:05 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/128/</guid>
      <description>&lt;p&gt;近期国内的Blogger玩点名游戏比较多，我个人是对这东西不感兴趣。&lt;/p&gt;
&lt;p&gt;没想到James Gosling还这么有兴趣，回应别人的点名：&lt;br&gt;
&lt;a href=&#34;http://blogs.sun.com/jag/entry/five_things_you_probably_don&#34;&gt;&lt;br&gt;
Five things you probably don’t know about me&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>穷人的生活</title>
      <link>https://qingbo-net.pages.dev/archives/127/</link>
      <pubDate>Tue, 30 Jan 2007 13:34:35 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/127/</guid>
      <description>&lt;p&gt;前天晚上到火车站送人，看到所有的候车室都挤得满满的，却见到有一个候车室不仅人少，沙发也很舒服，门口还有一个“总服务台”。正要进去却被人拦住要钱，才知道这就是传说中的提前上车。&lt;/p&gt;
&lt;p&gt;问了一下五块一个人，就进去了。除了座位舒服，还有一个好处就是提前上车有地方放行李。想想那些回家过年的农民，肯定很多连五块钱都舍不得花，这种候车室才人少，要不早就涨价了。我爸就不会花这个钱，前阵子坐火车回来就跟我们说被骗了，花了五块钱。&lt;/p&gt;
&lt;p&gt;里面的工作人员心情也好，因为人少。他们在那里聊天说笑，还一个一个乘客地问上哪个车，看有没有已经检票还在做梦的。一个民工的小孩跑进来捡瓶子，一个工作人员就过去逗他。我们开始还以为那小孩是来玩的，后来他抱着一堆瓶子跑了，那人说，瞧这速度，从小就练出来了。这才明白是帮父母捡瓶子卖钱的。那人又说，把老杨的财产全给弄走了。想必老杨是这里捡瓶子的专业户吧。我又想起有一次坐火车停在某一站，有人就飞快地从走廊上穿过，把桌子上有水没水的瓶子全部装到编织袋里跑了。&lt;/p&gt;
&lt;p&gt;送走之后回家，路上又看到两个人在人行道旁边铺了一张毯子，冻得抱在一起，大概是要过夜。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Akismet是不是挂了？</title>
      <link>https://qingbo-net.pages.dev/archives/126/</link>
      <pubDate>Sat, 27 Jan 2007 17:19:30 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/126/</guid>
      <description>&lt;p&gt;这些天Akismet一直很无用，Spam全跑掉了。觉得有点异常，在设置页里点Update，果然，无法连接服务器。&lt;/p&gt;
&lt;p&gt;Akismet插件要连接的地址是key.rest.akismet.com，把key替换成你的akismet key。我（IP：210.77.14.*）直接打开这个地址，连接超时。通过&lt;a href=&#34;http://anonymouse.org/anonwww.html&#34;&gt;Anonymouse&lt;/a&gt;代理却可以正常连接，返回一个数字。&lt;/p&gt;
&lt;p&gt;我blog所在的主机在杭州。akismet.com还是可以访问，但blog.akismet.com就不能访问了。真不明白。&lt;/p&gt;
&lt;p&gt;各位用Akismet的，帮忙看一下它是不是真的挂了。&lt;/p&gt;
&lt;p&gt;我无语，暂时把Akismet禁用了，很影响留言的速度。用了一个&lt;a href=&#34;http://seclab.cs.rice.edu/proj/trackback/trackback-validator-plugin/&#34;&gt;trackback validator&lt;/a&gt;，因为Spam全是trackback. 还是希望能用Akismet.&lt;/p&gt;
&lt;p&gt;为什么好的东西都挂掉？好人该死。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Blog换了个样子</title>
      <link>https://qingbo-net.pages.dev/archives/125/</link>
      <pubDate>Wed, 24 Jan 2007 19:43:44 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/125/</guid>
      <description>&lt;p&gt;那个blue-tech主题虽然刚用时感觉清爽，过了一段时间还是有点疲劳了，于是自己动手，多方参考，做了个新主题。&lt;/p&gt;
&lt;p&gt;几乎就在同时，&lt;a href=&#34;http://groups.google.com/&#34;&gt;Google Groups&lt;/a&gt;的新面孔推出，与我的blog主题惊人的雷同，这绝对不是巧合。&lt;/p&gt;
&lt;p&gt;设计网站还要考虑IE这样老掉牙的浏览器，真是一件痛苦的事。麻烦各位给看看，怎么让IE显示导航条跟Firefox的效果一样，谢谢了。Opera我看了一下也正常，不知道IE7正常不。如果只是IE6，就不管它了。&lt;/p&gt;
&lt;p&gt;有空再往好弄。&lt;/p&gt;</description>
    </item>
    <item>
      <title>升级到WordPress 2.1</title>
      <link>https://qingbo-net.pages.dev/archives/124/</link>
      <pubDate>Tue, 23 Jan 2007 09:07:12 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/124/</guid>
      <description>&lt;p&gt;今天考完最后一门课回来发现&lt;a href=&#34;http://wordpress.org/development/2007/01/ella-21/&#34;&gt;WordPress 2.1&lt;/a&gt;终于发布了。看了一下马上就升级了，备份都懒得做。结果出人意料的顺利，什么问题都没有，我都感觉很奇怪，因为所有插件我都没照升级说明指示的禁用掉。&lt;/p&gt;
&lt;p&gt;尤其是Brian’s latest comments刚刚发布了&lt;a href=&#34;http://code.google.com/p/brianslatestcomments/&#34;&gt;1.5.8&lt;/a&gt;，以解决与2.1的兼容问题。这说明2.1正式发布时又保持了对以前插件的兼容性。不过还是挨个把各个插件换到了最新的版本。&lt;/p&gt;
&lt;p&gt;这个版本最好的最实在的功能就是加上了自动保存功能，太爽了(可惜的是Trackback框不会被保存，是这样吗？)。另外也有其它一些改动，详见&lt;a href=&#34;http://wordpress.org/development/2007/01/ella-21/&#34;&gt;WordPress 2.1的发布日志&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;也就这些。它已经够成熟了，就像Blizzard要出TFT1.21补丁，也没多少激动人心的东西一样。&lt;/p&gt;
&lt;p&gt;&lt;ins datetime=&#34;2007-01-23T10:08:17+00:00&#34;&gt;由于日志和链接的种类被合并，所以链接原来的link_id很可能变了，这一点在自己调用函数的时候要注意。&lt;/ins&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpenDNS</title>
      <link>https://qingbo-net.pages.dev/archives/123/</link>
      <pubDate>Fri, 19 Jan 2007 05:43:29 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/123/</guid>
      <description>&lt;p&gt;我这边的本地DNS服务器很垃圾，有的时候一次dns lookup要花一分钟，查到后网页打开倒是不慢，真能把人郁闷死。&lt;/p&gt;
&lt;p&gt;上网去骂，有人推荐用&lt;a href=&#34;http://www.opendns.com/&#34;&gt;OpenDNS&lt;/a&gt;，真是个好东西：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What is OpenDNS?&lt;/p&gt;
&lt;p&gt;OpenDNS is a better DNS, free to all. OpenDNS uses its distributed network of DNS servers to speed up your Internet experience, increase reliability, improve security and make DNS smarter for users all over the world.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;如果你的DNS查找很慢，不妨也试试OpenDNS。&lt;/p&gt;</description>
    </item>
    <item>
      <title>try ruby! (in your browser)</title>
      <link>https://qingbo-net.pages.dev/archives/122/</link>
      <pubDate>Thu, 18 Jan 2007 13:45:52 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/122/</guid>
      <description>&lt;p&gt;我觉得学习一门脚本语言是非常有必要的。前几天有人在试用RoR，极力推荐我学习Ruby。RoR那个比较酷的做blog的视频倒是看过，不过看完觉得，这样做网站，对程序逻辑的可控制性一定很差，但他说没有这个问题。今天浏览Ruby主页时正好看到那个&lt;a href=&#34;http://tryruby.hobix.com/&#34;&gt;try ruby!&lt;/a&gt;的链接，就上去玩了一遍。&lt;/p&gt;
&lt;p&gt;Ruby很酷，这个hands-on tutorial更酷。在同一个页面上就可以把现看来的东西实践，很方便，这种方式是做教程的最好方式。其间遇到一个问题，用它给的Popup类的时候，我把第一个弹出的窗口关了，然后再输入什么都不行了，那个命令行坏了。我以为是关掉弹出窗口的原因，当时已经过了大半，我坚持又来了一遍。再到弹出窗口，发现把输入区都遮住了，不关怎么行，才想起是刚才把Popup小写了:smile. 又发现可以用reset(Ctrl+D)来从错误中恢复这个模拟的命令行。&lt;/p&gt;
&lt;p&gt;想学脚本语言的，可以考虑下ruby，如果要了解ruby，先玩玩这个。&lt;/p&gt;</description>
    </item>
    <item>
      <title>BBS, sign in, log out.</title>
      <link>https://qingbo-net.pages.dev/archives/121/</link>
      <pubDate>Sun, 14 Jan 2007 17:34:11 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/121/</guid>
      <description>&lt;p&gt;高三时就在书上看见中山大学有个电子公告牌，BBS，于是到网吧看了一下，不爽。不用。&lt;/p&gt;
&lt;p&gt;刚到科大的时候，看见教学楼、图书馆有许多“信息快车”，跟电子游戏厅的街机差不多，课间的时候一堆学生挤在那里排队。后来知道他们是在上BBS。我之前没怎么接触过电脑，看见那黑底白字的屏幕更是恐怖，所以最初上BBS是在机房里用 IE浏览。还记得发现了BBS有讯息功能后，疯狂地发信息给一起上网的室友，效果呢？自那以后就没用过Web的讯息，已经忘记了，或许有声音？反正搞得室友很烦。&lt;/p&gt;
&lt;p&gt;后来终于大胆地摸到快车上，加入了站长一族──在快车上灌水的人只能站着，被人尊称为站长。开始的时候不会用，进去之后就在SYSOP版灌了一篇，被封了7天。每次登录后不知道怎么退出，怕别人盗用帐号，就重启机器。隔几天不见，发文的时候又问旁边的人：“同学，我写好文章了，怎么发表啊？”在快车上灌水不用付网费，我们当时就在上面收发邮件。不过后来为了避免某些站长站得太久累坏，学校限制每位站长只能站30分钟，于是就有人开始做抢劫帐号的生意。有时候看见有的同学听见上课铃声顾不得退出就跑进教室，就像捡到几块钱一样，上去把他的时间用完再说──我这么做过一次。等我离开科大时，计算机业发达的西区已经基本把快车淘汰，只能到东区去怀旧了。&lt;br&gt;
&lt;span id=&#34;more-222&#34;&gt;&lt;/span&gt;&lt;br&gt;
那个时候BBS的环境比现在好些，至少我这么觉得，可能是我当时见识得太少了吧。我真想让所有不知道BBS的朋友都来了解它喜欢它，于是给我最要好的正在复读的朋友注册了一个。他凭借自己的诗词在poem版上混得很滋润，后来在同舟共济混进了站务组。我虽然当时喜欢，但也没现在不喜欢的时候灌水厉害，因为那个时候我主要是Web用户，每天发不了几篇帖子。&lt;/p&gt;
&lt;p&gt;后来自己有了电脑可以在宿舍上网，才明白做站长比做Web用户要牛。尽管站长们的武器很简陋，只是一台终端，但这才是BBS。于是开始用STerm，后来转向 CTerm，现在用QTerm，这些才是专业水虫的装备，跟Web比起来，是全自动与半自动的区别。我的战场也不再限于瀚海星云，水木的人气更旺，我去那里的时间渐渐多了。我春节不回家的时候在BBS上结识过朋友，深夜在水木的技术版面上他乡遇故人，版聊许多屏后删除说再见。但是我没有刻意追求过文章数，有人说这是浮云，它不是，它是null，浮云也稍微有点内涵。在这个过程中，我看到了 YTHT的倒掉，SMTH的涅磐与重生，明白了许多道理。&lt;/p&gt;
&lt;p&gt;随着BBS上的发文数越来越多，我对它的一些现状越来越反感。当然在BBS上互相帮助还是很好的，一些技术方面的问题在BBS上很容易得到解答。关键是不是少数的一部分人，把这个环境给污染了。比方说有人诚恳地在NewSoftware上问一个问题，回复的水虫们，有的敲三个点──表示不可思议，有的说楼主是火星人，鉴定完毕──表示讽刺，也有人说楼主在挖坑灌水，很久之后才终于有人愤愤不平，跳出来把问题回答一下。也有在BBS上肆无忌惮地谩骂和人身攻击的，往往他们在现实中是懦夫，这是虚拟世界的规律。&lt;/p&gt;
&lt;p&gt;这年头能去的也就几个技术版面。其实我一直都是上技术版面的多，不过现在的趋势是其它的版面越来越多越来越热闹，技术版面只是一个冷清的角落，一定程度上，也反映了国内年轻人的心理（我old了）。想到这，不禁感叹一下中国的苍蝇真是多，要不千橡这个厕所也没这么大嗡嗡声了。在厕所里嗡嗡倒没什么，但总会有几只乱飞的跑到BBS上来。Joke版上固然有Joke的高手，经常抓住一个主题发挥到极致，在全国娱乐界造成影响。不过我们的Joke高手有点太多了，而且把不好的风气传到技术版面上。你们就TMD不能干点更有意义的事么？要是中国有这么多的人这么热心地专注于科技（当然不是专注于学术腐败），和发达国家的差距很快可以缩小了。我越来越多地跟别人说，BBS就是个垃圾坑。&lt;/p&gt;
&lt;p&gt;现在还经常看见有的人以自己数以万计的文章数为荣，或者以登上十大为荣。 Too young. Too simple, sometimes naive. 在虚拟世界中的成功，往往暗示着现实世界中的失败。当然大部分人把BBS当作一个玩具，这是好的，不要太投入。那么，技术版面就要划清界限了。服务器90%的存储是被垃圾填充。&lt;/p&gt;
&lt;p&gt;从最初在BBS上的快乐，到现在快乐中夹杂着厌恶。也许它并没有变，只是我的认识在变。&lt;/p&gt;</description>
    </item>
    <item>
      <title>kompare</title>
      <link>https://qingbo-net.pages.dev/archives/120/</link>
      <pubDate>Sat, 13 Jan 2007 10:50:17 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/120/</guid>
      <description>&lt;p&gt;在Linux下工作，可能希望找一个像beyond compare一样强大的比较工具，毕竟字符界面的diff用来作复杂的目录树比较还是不大方便。&lt;/p&gt;
&lt;p&gt;今天在SMTH看到doser推荐kompare，说它比BC只好不差，有机会一定试试。KDE的优秀程序越来越多了，是个好事。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/view?id=ff8080811015909a01101b0b90375889&#34;&gt;点击这里看图片&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>The second smallest</title>
      <link>https://qingbo-net.pages.dev/archives/119/</link>
      <pubDate>Mon, 08 Jan 2007 15:56:29 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/119/</guid>
      <description>&lt;p&gt;算法导论书上有个练习，让证明n个元素的第2个最小的元素可以用n + ceil(lg n) – 2次比较找出来，给的提示只是：把最小的也找出来。&lt;/p&gt;
&lt;p&gt;我想了好久，终于出来了。思路是：n-1次比较找出最小，然后再用ceil(lg n)-1次比较就找到第2个最小。具体见&lt;a href=&#34;http://www.qingbo.org/muse/algorithm/MediansOrderStatistics.html#sec2&#34;&gt;这一页&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google Apps for Your Domain很容易申请</title>
      <link>https://qingbo-net.pages.dev/archives/118/</link>
      <pubDate>Sun, 07 Jan 2007 13:49:46 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/118/</guid>
      <description>&lt;p&gt;.cn的一般不会通过。今天试了一下，.com/.org的去申请，直接就通过了，连邮件都不用看，当下就可以进行设置、验证。以前听人说要通过国外IP代理才能通过，现在看来没必要了。不过保险起见，在国家那里我还是选的美国，呵呵。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://partnerpage.google.com/qingbo.org&#34;&gt;我的start page&lt;/a&gt;，没有自定义。&lt;/p&gt;</description>
    </item>
    <item>
      <title>家乡的天空</title>
      <link>https://qingbo-net.pages.dev/archives/117/</link>
      <pubDate>Sun, 31 Dec 2006 14:17:42 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/117/</guid>
      <description>&lt;p&gt;暑假拍的，云很白，天很蓝。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/view?id=ff8080810fc8ac78010fd416df7f139d&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;http://photo4.yupoo.com/20061231/000004_348274617_m.jpg&#34; /&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href=&#34;http://www.yupoo.com/photos/view?id=ff8080810fc8ac78010fd416f6ab13a2&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;http://photo4.yupoo.com/20061231/000010_392029915_m.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;北京这几天下雪，脏得都捏不起来，还是农村环境好点。共有十几张照片，都很清新，白云、蓝天，未经软件处理，请到&lt;a href=&#34;http://http://qingbo.yupoo.com/photos/tags/?tag=%E8%93%9D%E5%A4%A9&#34;&gt;这里&lt;/a&gt;看。&lt;/p&gt;</description>
    </item>
    <item>
      <title>IT民工保重身体</title>
      <link>https://qingbo-net.pages.dev/archives/116/</link>
      <pubDate>Sat, 30 Dec 2006 12:42:47 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/116/</guid>
      <description>&lt;p&gt;大四保完研得了气胸，休息了一段时间。&lt;/p&gt;
&lt;p&gt;今天惊闻小强也得了气胸，而且还比我严重，插了管子抽气。想起大一宿舍两人连续得尿路结石了，这病还真巧。&lt;/p&gt;
&lt;p&gt;IT民工许多也是贫农出身，需要靠自己拼命打江山，不过努力的时候也别忘了身体是本钱。等有了钱的时候，你还得有那个身体去享受是不是。&lt;/p&gt;
&lt;p&gt;医生都说气胸容易复发了，最近熬夜又多了起来，不行，得悔改。要说穷人一定要以身体为代价才能换来成功，那是不对的，许多时候身体的代价花在没有意义甚至有害的事情上去了。&lt;/p&gt;
&lt;p&gt;兄弟们都保重。&lt;/p&gt;</description>
    </item>
    <item>
      <title>第一次用Beamer做slide</title>
      <link>https://qingbo-net.pages.dev/archives/115/</link>
      <pubDate>Sat, 30 Dec 2006 12:22:54 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/115/</guid>
      <description>&lt;p&gt;选了个WSN（首先澄清一下是无线传感器网络:smile:）课，最后让读一篇论文，写个心得，做个报告。就是我前几天报怨垃圾的那篇，几篇文章拼起来的好像是，就发到IEEE的杂志上了。&lt;/p&gt;
&lt;p&gt;论文垃圾归垃圾（因为根本不知道它想干什么），不过写那篇心得和做报告用的slide要做得专业一点，尽管内容也很垃圾。两个东西都是用LaTeX做的，现在用着越来越爽了，尤其在Emacs里用AucTeX，发现了许多开始不知道的功能，源文件也清晰了，编译出来的文章感觉专业，舒服。&lt;/p&gt;
&lt;p&gt;slide是用Beamer做的，它有许多种主题，可以在&lt;a href=&#34;http://mike.polycat.net/gallery/beamer-themes&#34;&gt;LaTeX Beamer Themes&lt;/a&gt;这里看各个主题的效果。其实并不限于那些，Beamer还有inner/outer/color theme等概念，可以通过选择颜色主题把slide变得更加漂亮。我用的是Copenhagen，由于里面有白底的图片，就没有用什么color theme. pdf文件较大，就懒得发了，&lt;a href=&#34;http://www.qingbo.org/wp-content/uploads/2006/12/reporttex.gz&#34; title=&#34;reporttex.gz&#34;&gt;reporttex.gz&lt;/a&gt;{#p213}是源文件(WP自动去掉了中间的点)，供参考。欣赏外表美，不要看内在。&lt;/p&gt;
&lt;p&gt;对了，我用的TeX版本是科大一些人最近做的那个live cd，完美支持UTF8编码，不过CJK的声明上跟以前GBK编码的时候略有不同。另外，中文一定要用CJK*带星号的这个啊，我就是犯了这个错误，把星号忘记了，结果源文件中文换行就插入空格了，后来查Ctex faq才知道加不加星号就是这个区别。还有这个Beamer源文件要用pdflatex命令编译两次才好。&lt;/p&gt;</description>
    </item>
    <item>
      <title>打印浮点数的IEEE 754表示</title>
      <link>https://qingbo-net.pages.dev/archives/114/</link>
      <pubDate>Sat, 30 Dec 2006 11:37:04 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/114/</guid>
      <description>&lt;p&gt;前阵子有门课的作业让写出几个浮点数的&lt;a href=&#34;http://en.wikipedia.org/wiki/IEEE_754&#34;&gt;IEEE 754&lt;/a&gt; 单精度形式，有的数很不规则，23个尾数都得算，于是就写了个程序。先判断正负，小于零则符号位为1，否则为0. 然后对它的绝对值以2为底取对数，再取下整，加上127为8位指数部分的无符号数。最后算23位尾数。程序写出来了：&lt;/p&gt;
&lt;pre style=&#34;width:45%;float:left;margin-right:5px&#34;&gt;void ieee754_alg(char* bits, float num)
{
    int exp;
    int i;
    int temp;
    float tail;
    float b = 1;

    if (num &amp;gt;= 0)
        bits[0] = 0;
    else
    {
        bits[0] = 1;
        num = -num;
    }

    exp = floor(log(num)/log(2)) + 127;
    tail = num / pow(2, exp - 127) - 1;
    for (i = 7; i &amp;gt;= 0; i--)
    {
        temp = pow(2, i);
        if (exp &amp;gt;= temp)
        {
            exp = exp - temp;
            bits[8 - i] = 1;
        }
        else
            bits[8 - i] = 0;
    }

    for (i = 1; i &amp;lt;= 23; i++)
    {
        b /= 2;
        if (tail &amp;gt;= b)
        {
            tail = tail - b;
            bits[8 + i] = 1;
        }
        else
            bits[8 + i] = 0;
    }

}
&lt;/pre&gt;
&lt;p&gt;bits是个长度为32的字节数组。再复杂的数，一下就算出来了，很爽。但最近又想了一下，这种办法实在是太傻了，我们一般计算机里面不就是用IEEE 754表示浮点数的吗？把内存里面的位取出来就行了。程序如下，注意要考虑到一般的计算机都是&lt;a href=&#34;http://en.wikipedia.org/wiki/Endianness&#34;&gt;little-endian&lt;/a&gt;，高字节在高地址。&lt;/p&gt;</description>
    </item>
    <item>
      <title>堆了个雪人</title>
      <link>https://qingbo-net.pages.dev/archives/113/</link>
      <pubDate>Sat, 30 Dec 2006 09:08:11 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/113/</guid>
      <description>&lt;p&gt;哈哈哈哈，下午和几个同学一起弄的，雪很脏，堆不起来，头是用脸盆帮助才做好的。眼睛和钮扣是破坏的花草，围巾是一个女生贡献的。现在手真是不耐冻了，记得以前是越玩雪手越暖和的。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/view?id=ff8080810fc8ac78010fd2957f084b59&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;http://photo4.yupoo.com/20061230/165909_601047507_m.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;还有几张图片，都可以在&lt;a href=&#34;http://qingbo.yupoo.com/photos/tags/?tag=%E9%9B%AA%E4%BA%BA&#34;&gt;这个链接&lt;/a&gt;看到。&lt;/p&gt;</description>
    </item>
    <item>
      <title>下雪了</title>
      <link>https://qingbo-net.pages.dev/archives/112/</link>
      <pubDate>Fri, 29 Dec 2006 20:44:45 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/112/</guid>
      <description>&lt;p&gt;应该是2006年最后一场雪了吧。雪花不大，不过飞飞扬扬下得挺快的。&lt;/p&gt;
&lt;p&gt;看到这雪我好兴奋，已经好几年没见过这样的雪了。在合肥的时候也下雪，不过掉下来就融化了，更有时候温度合适，成为冰水混合物，经夜里一冻，第二天走路就会难受了。&lt;/p&gt;
&lt;p&gt;突然想起以前在家跟伙伴们打雪仗的情景来了。高中时上体育课如果赶上下雪就打雪仗，有一次我们把老师打跑了。不过也想起在科大时和同学在宿舍里看到外面白茫茫的雪，还有在食堂看到像鹅毛大的雪片飘下来。我不喜欢南方夏季的炎热，喜欢北方的冬天，喜欢雪，但又喜欢从树上摘荔枝来吃，喜欢南方的发达。&lt;/p&gt;
&lt;p&gt;想打雪仗过过瘾:smile:&lt;/p&gt;</description>
    </item>
    <item>
      <title>LaTeX中输入下划线(underscore)</title>
      <link>https://qingbo-net.pages.dev/archives/111/</link>
      <pubDate>Fri, 29 Dec 2006 09:58:50 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/111/</guid>
      <description>&lt;p&gt;参考文献里有一个URL，里面含有下划线。我起初也没注意，编译的时候才发现下划线不能直接输入的。&lt;/p&gt;
&lt;p&gt;起初就简单的用_来输入，发现出来的下划线很粗，跟周围的字母不相衬。&lt;/p&gt;
&lt;p&gt;到水木TeX版去搜，发现有人这么做：\underline{\hspace{1m}}，不过试了一下，和_的效果差不多，不合适。&lt;/p&gt;
&lt;p&gt;继续问，终于有人给出一种好的办法：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;\rule[水平高度]{长度}{粗细}&lt;/p&gt;
&lt;p&gt;比如:&lt;/p&gt;
&lt;p&gt;\rule[-2pt]{1.5cm}{0.5pt}产生的是一个长度为1.5cm,0.5pt粗的一条线, 处于基准线以下2pt&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;效果可以随意调整，很好。&lt;/p&gt;</description>
    </item>
    <item>
      <title>福特死了</title>
      <link>https://qingbo-net.pages.dev/archives/110/</link>
      <pubDate>Wed, 27 Dec 2006 20:45:26 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/110/</guid>
      <description>&lt;p&gt;美国第38任总统，Gerald R. Ford (1913 – 2006)&lt;/p&gt;
&lt;p&gt;希望我能活这么久。。。&lt;/p&gt;</description>
    </item>
    <item>
      <title>一个满意的PHP editor都没有</title>
      <link>https://qingbo-net.pages.dev/archives/109/</link>
      <pubDate>Mon, 25 Dec 2006 18:15:03 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/109/</guid>
      <description>&lt;p&gt;我放弃了。没有一个能在PHP, HTML混合的情况下正确地缩进。&lt;/p&gt;
&lt;p&gt;Subversion也不会用了，两个项目导入了一个repo，乱了。记得以前看文档挺简单的啊，怎么是那么大一个svn-book.&lt;/p&gt;
&lt;p&gt;Google code提供的project hosting，不知道是不是申请就过，那样的话，岂不是。。。hiahiahiahia&lt;/p&gt;
&lt;p&gt;为什么中国人都把圣诞节当作自己的节日来过呢？啥时候外国人能像现在中国人庆祝圣诞这样庆祝春节就好了。那些给我发祝福短信的朋友们，希望圣诞只是个借口。&lt;/p&gt;
&lt;p&gt;水木上又在讨论老毛的功过，这种事情，几时能说清楚。&lt;/p&gt;</description>
    </item>
    <item>
      <title>慎用 Shift&#43;Del 啊</title>
      <link>https://qingbo-net.pages.dev/archives/108/</link>
      <pubDate>Sat, 23 Dec 2006 00:37:26 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/108/</guid>
      <description>&lt;p&gt;我Muse的源文件放在wiki根目录下的一个文件夹里面，叫source. 还有一个目录叫software，本来是想把它删除重新发布的。删完后去发布，却告诉我目录不存在之类，一看，我靠，source没了！搜索了一下，Linux里恢复文件比较麻烦。多亏现在发布的页面还不多，我一个一个又从HTML弄成了Muse的格式。然后多了个心眼，把Muse源文件一起更新到服务器上去了。&lt;/p&gt;
&lt;p&gt;用图形的文件管理器时，相近的文件名很容易看混，而用shell操作，这样错误的几率可能会小一点。以后在文件管理器中只用Delete好了，完了都进.Trash了，时间长了再清理。&lt;/p&gt;
&lt;p&gt;对了，Muse发布的页面在&lt;a href=&#34;http://www.qingbo.org/muse/&#34;&gt;这里&lt;/a&gt;。刚加了CSS上去，大家给看看&lt;a href=&#34;http://www.qingbo.org/muse/programming/web/JavaScriptForDevelopers.html&#34;&gt;这个网页&lt;/a&gt;，还有&lt;a href=&#34;http://www.qingbo.org/muse/software/AucTeX.html&#34;&gt;这个&lt;/a&gt;，给提点意见:smile:.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Subclipse的配置</title>
      <link>https://qingbo-net.pages.dev/archives/107/</link>
      <pubDate>Fri, 22 Dec 2006 12:59:40 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/107/</guid>
      <description>&lt;p&gt;Subclipse是为Eclipse做的一个Subversion插件，不过我安装后出现了一些问题。&lt;/p&gt;
&lt;p&gt;首先我的操作系统、Eclipse都是英文语言的，但安装Subclipse后，菜单却是中文的。中文倒也罢，只是有些名词翻译得莫名其妙，看不懂。即便把插件目录中的中文相关文件删除，还是显示中文，真神了，或许是我没有找对。&lt;a href=&#34;http://svn.haxx.se/subusers/archive-2006-01/0177.shtml&#34;&gt;搜索到一个网页&lt;/a&gt;，说它是根据Java的locale来判断的。于是修改/usr/bin/eclipse启动脚本，在最后的VMARGS里加上参数：-Duser.language=en，可以了。注意加在Eclipse的菜单快捷方式上没有用，脚本好像不检查传递给它的参数。另外也可以加在/usr/lib/eclipse/eclipse.ini文件中。&lt;/p&gt;
&lt;p&gt;点击Window-&amp;gt;Preferences-&amp;gt;Team-&amp;gt;SVN选项时，报错误“Javahl interface not available”。可以选择纯Java实现来避免这个问题，不过还是JNI来得快点。在&lt;a href=&#34;http://blog.usershell.org/2006/08/21/subclipse-javahl-interface-not-available/&#34;&gt;这个网页&lt;/a&gt;上，作者修改了java.library.path这个变量使得javahl库能被找到。但我的系统中根本就没有这个库，思索半天后用aptitude搜索了一下，果然源里面有这个专门的包，装上之后就没问题了。&lt;/p&gt;
&lt;p&gt;Eclipse启动的参数可以在Help-&amp;gt;About Eclipse SDK-&amp;gt;Configuration Details里面看到。&lt;/p&gt;</description>
    </item>
    <item>
      <title>终于又用上Muse了</title>
      <link>https://qingbo-net.pages.dev/archives/106/</link>
      <pubDate>Wed, 20 Dec 2006 13:23:23 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/106/</guid>
      <description>&lt;p&gt;有些东西放在Blog里不太合适，比如软件使用中的一个小tip，或者学习中的一点心得，还有一些不太成熟的想法等等。&lt;/p&gt;
&lt;p&gt;很久以来也在想着找个CMS系统，试过drupal，用了一阵子doku wiki，感觉这个还可以，不需要数据库，后来搬到本机上来了。不过后台管理、插件之类还是比较麻烦，也许是我不熟悉的原因，不想放到服务器上。我觉得WordPress真的很简单又很强大，兼具这两点真不容易。&lt;/p&gt;
&lt;p&gt;用Emacs Muse的顾忌就是页面多了管理起来不方便。不过考虑再三，还是用起了Muse，毕竟代价低，只有静态的HTML，不用操心后台管理。需要的就是在Emacs里写好，然后发布到FTP上去。即便我不太会用Emacs，还是感觉在里面写东西真是一种享受。&lt;/p&gt;
&lt;p&gt;其实是读JavaScript for Breakfast这本书，想记些东西，才折腾这些的。以前读C++/Java的书，也记了不少精华的东西，或许记了好多遍，但记在纸上，本子一扔，就没了。目前仅有&lt;a href=&#34;http://www.qingbo.org/muse/programming/web/JavaScriptForBreakfast.html&#34;&gt;一个页面&lt;/a&gt;，以后慢慢积累。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Nautilus预览音乐</title>
      <link>https://qingbo-net.pages.dev/archives/105/</link>
      <pubDate>Sun, 17 Dec 2006 08:28:12 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/105/</guid>
      <description>&lt;p&gt;许多人不会注意到Nautilus还可以预览音乐。如果安装了mpg123，把鼠标停放在某个音乐文件上时，就会自动播放，鼠标离开时停止播放。在Edit-&amp;gt;Preferences-&amp;gt;Preview那里可以设置预览选项。不过除了有声音，其它现象都没有，所以一般不会注意这个功能。&lt;/p&gt;
&lt;p&gt;没多大用。还是希望gtk/gnome去死。现在不得已用gnome，emacs在KDE里有时显示不正常，gtk程序在KDE里有一堆错误。许多优秀的程序用gtk做了界面，是堕落，也是无奈，之前QT还没有GPL。Ubuntu对KDE也不大重视，希望有一天KUbuntu消失，GUbuntu诞生。gtk去死，让qt一统江湖。qt的协议应该再开放些，windows中开源软件也可以用它的GPL协议就好了，这样更有助于它的发展和扩大市场。&lt;/p&gt;</description>
    </item>
    <item>
      <title>想学一下javascript</title>
      <link>https://qingbo-net.pages.dev/archives/104/</link>
      <pubDate>Sat, 16 Dec 2006 16:59:28 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/104/</guid>
      <description>&lt;p&gt;最近对Web编程比较感兴趣了。javascript这些脚本语言语法限制相对C之类的较为宽松，看书也就是浏览一下，主要功夫还在练习上。学习C/C++/Java语言千万别看那种“24小时学会……”的书，纯粹是垃圾，应该看”The C Programming Language”之类的，把语法以及与底层联系实现紧密的一些概念搞清楚。&lt;/p&gt;
&lt;p&gt;Javascript就不同了，似乎没有像C语言之类的有那么几本特别权威经典的书籍，别捧着一本宝典在那里钻研，不然兴趣都被磨灭了。不过也不能什么都不看，上来就到网上搜索。这年头尤其在国内，真是天下文章一大抄，往往搜索一个东西，每页结果上都是那么几篇文章，而且有很大几率是错误的。&lt;/p&gt;
&lt;p&gt;好的学习途径可能就是初学时找本书看一下基本的语法，了解一些内置支持的对象和基本概念，然后在运用中就会不断有提高了。也许有时候会突然发现某个问题原来可以这样简单地解决，这就是一个积累知识的过程了。听说Javascript也是很强大的东西，我得慢慢学。&lt;/p&gt;
&lt;p&gt;目前开始看一本书叫”JavaScript for Breakfast”，写得比较随意，看着舒服。刚开始学，得看看别人（权威）是如何用它来解决问题，解决哪些问题的。比较困惑的几点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Javascript有哪些内置支持的对象如document，document.images这样的呢？在哪里有完整的列表。不知道所谓的Javascript core language到底包含哪些部分。&lt;/li&gt;
&lt;li&gt;它和DOM是个什么样的关系。&lt;/li&gt;
&lt;li&gt;不同浏览器之间有怎样的兼容性问题。那本书上写着最好用object.property这样的方式来设置属性，而不要用setAttribute。&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>自动更新水木签名档</title>
      <link>https://qingbo-net.pages.dev/archives/103/</link>
      <pubDate>Fri, 15 Dec 2006 22:32:16 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/103/</guid>
      <description>&lt;p&gt;有人想要这个自动更新签名档的插件，我就整理一下放出来吧，有兴趣就用。插件的功能是每次有新日志发表时，自动更新水木社区的签名档，显示最新的两篇帖子，删除日志时也会更新。&lt;/p&gt;
&lt;p&gt;它是用curl通过模拟Web登录实现的，本来想改成模拟telnet的，发现更复杂，遂作罢。&lt;/p&gt;
&lt;p&gt;想用这个插件，首先请注意以下几点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;web登录的窗口是有限制的，超出了会提示，这个我没有处理，所以登录过多的话更新可能不成功。不过插件本身的模拟登录会自动退出的，一般term用户不会有问题。&lt;/li&gt;
&lt;li&gt;需要服务器的PHP支持curl。即便支持了，有的服务器可能仍然不允许这种对外请求。&lt;/li&gt;
&lt;li&gt;签名档六行一个，可以设置多个，插件的代码只生成一个，并且会把你原来的所有签名档覆盖，千万注意。通过修改代码，想设置多个也可以。&lt;/li&gt;
&lt;li&gt;这种东西不是那么稳定，所以有时候更新不成功也找不到原因。可能等一段时间就更新过去了。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;愿意尝试的话，&lt;a href=&#34;http://www.qingbo.org/wp-content/uploads/2006/12/sig-update.zip&#34;&gt;从这里下载&lt;/a&gt;，照如下步骤设置：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;把sig-update.php中的用户名和密码填上，需要的话，把生成签名档的代码(SQL，PHP)改改。我就懒得在插件中做配置页面了，估计也没多少人用，呵呵。&lt;/li&gt;
&lt;li&gt;cookie文件是必要的，且传到服务器上要可写，否则无法更新。&lt;/li&gt;
&lt;li&gt;将sig-update目录上传到插件文件夹中，激活。如果一切正常，再发文的时候签名就会更新了。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;*\&lt;em&gt;*有兴趣的继续看**&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;这个东西可能不太实用，不过对curl模拟web登录可以作为粗略的参考。首先POST自己的用户名、密码给登录页，获得一个cookie，在以后的请求中把这个cookie带上就可以了。最初中文发过去是乱码，后来发现水木页面编码是gb2312，于是把中文用mb_convert_encoding函数转换了一下，问题解决。&lt;/p&gt;
&lt;p&gt;由于WordPress中，hook到delete_post的函数在删除之前执行，因此需要在SQL查询中把它给去掉。另外在编写的过程中发现，激活的插件中的代码在所有的管理页面载入时都会执行（没注意非管理页什么效果），需要特别小心。还有插件代码是被其它文件调用的（可能是wp-admin中的吧），因此工作目录并非这个插件所在的目录，那个cookie还是用绝对路径比较好。开始的时候就是搞不清楚为什么不能更新，原来是找不到cookie。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在Ubuntu中使用ColorZilla</title>
      <link>https://qingbo-net.pages.dev/archives/102/</link>
      <pubDate>Thu, 14 Dec 2006 14:50:03 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/102/</guid>
      <description>&lt;p&gt;设计、修改网页的时候很想要一个color picker，比如想跟某个颜色保持一致，一般还得翻出CSS代码来看它的颜色码是什么。有时候我也截个图，然后到GIMP里面去看它的颜色，都比较麻烦。&lt;/p&gt;
&lt;p&gt;今天发现一个大惊喜，&lt;a href=&#34;http://www.iosart.com/firefox/colorzilla/&#34;&gt;ColorZilla&lt;/a&gt;，实在是一个must have的扩展，太爽了。Mozilla addons网站上不是最新的，建议直接到这个主页去安装。&lt;/p&gt;
&lt;p&gt;像我一样用Ubuntu的人可能比较郁闷，它把Firefox重新打包并做了些修改，导致ColorZilla不能正常使用。刚开始安装时说该平台不支持，到其主页看，要安装Mozilla官方的Firefox。我扩展装了好多，Flash、播放器各种插件都配好了，才懒得折腾。搜索半天发现&lt;a href=&#34;http://ubuntuforums.org/showthread.php?t=271159&#34;&gt;这里有个好的解决办法&lt;/a&gt;，只需替换几个文件：&lt;/p&gt;
&lt;pre&gt;* Uninstall colorzilla
* Download latest firefox binaries from getfirefox.com
* Unpack (tar -xvzf firefox.....tar.gz)
* cp firefox/libxpcom* /usr/lib/firefox/
* Reinstall colorzilla
* Restart firefox and eyedropper should now work&lt;/pre&gt;
&lt;p&gt;它的color picker实际上只是一个在调色板中取色的工具。真正有用的也是我们想要的color picker，是那个Eyedropper。安装好后在状态栏里面单击，鼠标变成十字形，开始在网页上取色。移动到想要的颜色后单击，颜色码就保存下来了。&lt;/p&gt;
&lt;p&gt;右键单击状态栏图标，可以选择复制哪种代码。更方便的是在Options-&amp;gt;Auto Copy那里设置一下格式（要选上“Enabled”），一劳永逸。总之Eyedropper这个功能已经相当完善了，快快安装，想查看某个颜色的代码会方便很多。color picker无太大作用，它的zoomr功能也很差劲，期待哪天做好了，也就可以对那些想从Opera转过来的人说，整体放大功能已经有了。不过这个可能由Firefox开发组来做更好一些。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Emacs 23支持xft</title>
      <link>https://qingbo-net.pages.dev/archives/101/</link>
      <pubDate>Thu, 14 Dec 2006 04:42:08 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/101/</guid>
      <description>&lt;p&gt;前阵子在Gnome中不能用XIM，后来解决了又不能用–enable-font-backend选项，现在终于一切都没问题了（至少我们关心的没问题了）。&lt;/p&gt;
&lt;p&gt;取得最新的源代码，加选项–enable-font-backend和–with-xft来编译。我用如下参数启动&lt;/p&gt;
&lt;pre&gt;emacs --enable-font-backend --font &#34;Bitstream Vera Sans Mono-14&#34;&lt;/pre&gt;
&lt;p&gt;效果：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/view?id=ff8080810f74c366010f7f3f1c4b3070&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;http://photo4.yupoo.com/20061214/123618_1265569123_m.jpg&#34; alt=&#34;Emacs-snapshot-unicode-2&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>同学相聚</title>
      <link>https://qingbo-net.pages.dev/archives/100/</link>
      <pubDate>Wed, 13 Dec 2006 16:47:24 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/100/</guid>
      <description>&lt;p&gt;老孙出差来了北京，聚了这里一帮人又去喝酒。&lt;/p&gt;
&lt;p&gt;想起上半年快毕业时天天喝酒。毕业那次聚餐，个个喝得人仰马翻，吐的吐，哭的哭，装的装，好不热闹。小强被抬回去睡在地上，起来时奇怪怎么会跑地上睡去，期间每次起来都问一句“学位服拿回来没有”，小桂子被送进医院。如今大家都分开了，北京一群书呆子，上海一群打工仔，合肥一群留守的，还有一些到国外闯世界。有像老孙这样苦苦奋斗的，有继续努力专攻学业的，也有我这样游手好闲的。&lt;/p&gt;
&lt;p&gt;仔细想想，自己和大学时已经变了很多。那时候有自信，有斗志。现在却总是放纵自己，以不得志为借口。&lt;/p&gt;</description>
    </item>
    <item>
      <title>glxgears输出FPS</title>
      <link>https://qingbo-net.pages.dev/archives/99/</link>
      <pubDate>Tue, 12 Dec 2006 16:09:25 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/99/</guid>
      <description>&lt;p&gt;想用glxgears输出一下FPS看看，怎么弄都不输出了，很郁闷，在manual上也看不到相关的选项。&lt;/p&gt;
&lt;p&gt;搜索半天才发现glxgears已经改了但是manual page并没有更新。glxgears一直被当作Linux里面测试3D性能的一个benchmark来使用，但它并不能成为一个benchmark，因为测试太片面了。&lt;/p&gt;
&lt;p&gt;新的glxgears发源加一个选项才打印FPS，或者是-printfps，或者是-iacknowledgethatthistoolisnotabenchmark。从后面这个长长的参数就可以看出其用意，这些人也太搞了:smile:。&lt;/p&gt;
&lt;p&gt;现在glxgears的选项有：&lt;/p&gt;
&lt;pre&gt;-display
-info
-stereo
-fullscreen
-iacknowledgethatthistoolisnotabenchmark
-printfps
&lt;/pre&gt;</description>
    </item>
    <item>
      <title>推荐这个Articles插件</title>
      <link>https://qingbo-net.pages.dev/archives/98/</link>
      <pubDate>Mon, 11 Dec 2006 12:34:13 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/98/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://alexking.org/blog/2006/12/06/articles-10&#34;&gt;Articles 1.0&lt;/a&gt;，这是&lt;a href=&#34;http://alexking.org&#34;&gt;Alexking&lt;/a&gt;写的一个插件，留心的朋友应该已经从WordPress后台的Dashboard里面看到了，利用它可以把自己blog里面一些值得读的日志整理出来放到一个页面中（其实也不限于是一个页面）。对某些人可能比较有用。&lt;/p&gt;
&lt;p&gt;想把某文章加进该页面需要为它加一个名为article的custom field，值为1。可以通过新建一个页面模板来实现，或者用它默认打开的”token”方法，显示效果可以选择单列或双列，具体用法见插件中所带的说明文件。效果可以看我的&lt;a href=&#34;http://www.qingbo.org/?page_id=108&#34;&gt;Articles&lt;/a&gt;页。&lt;/p&gt;</description>
    </item>
    <item>
      <title>WordPress的一个小bug</title>
      <link>https://qingbo-net.pages.dev/archives/97/</link>
      <pubDate>Sun, 10 Dec 2006 16:29:32 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/97/</guid>
      <description>&lt;p&gt;今天删除了一个无用的分类，该类下有一篇文章，文章除了属于这个分类外还属于默认分类。删除后，偶然发现在默认分类中该文章竟然出现了两次，在数据库中直接查询了一下，果然是有重复的行。&lt;/p&gt;
&lt;p&gt;看来删除分类的时候，WP想当然地认为该分类下的日志没了爹，就应该进孤儿院。可是爹死了说不定还有妈在，这样做有点着急了，至少应该检查一下，没有的话再划到默认分类里面。&lt;/p&gt;
&lt;p&gt;WP也没有检测重复分类，显然是疏忽了，如果考虑到这点，自然也就有上面的想法了。默认分类不一定是垃圾坑，我就把Uncategorized类别删除了，默认分类是Blogging。&lt;/p&gt;
&lt;p&gt;我觉得正确的做法应该是检查一下这些文章有没有别的类别，有的话就不用加默认分类了。不知道其他用户什么看法？我已经在trac里面提交了这个问题，见&lt;a href=&#34;http://trac.wordpress.org/ticket/3460&#34;&gt;Ticket #3460&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;ins datetime=&#34;2006-12-11T04:36:51+00:00&#34;&gt;Update: Trac里面有了回应，说这在2.1里面已经修正了，有可能加到2.0.7版本中。&lt;/ins&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>梦见回去了</title>
      <link>https://qingbo-net.pages.dev/archives/96/</link>
      <pubDate>Sat, 09 Dec 2006 10:37:32 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/96/</guid>
      <description>&lt;p&gt;好像是这里把我开除了，也不知道是回到哪里了，跟高中的同学说我回来了，似乎是回到高中了，连教学楼都是高中时的样子。可是同时又有一种想法，开除当然不太爽，好在合肥这个城市比北京要安静得多，尤其是──网络比中科院好一百倍:smile:，似乎又是在科大。&lt;/p&gt;
&lt;p&gt;开除我吧！&lt;/p&gt;</description>
    </item>
    <item>
      <title>用好WordPress的ping功能</title>
      <link>https://qingbo-net.pages.dev/archives/95/</link>
      <pubDate>Fri, 08 Dec 2006 18:45:46 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/95/</guid>
      <description>&lt;p&gt;ping是blog最基本的功能之一，WordPress作为当前最优秀的blog系统之一，当然在这方面也做得相当好，pingback，trackback，该有的都有了。&lt;/p&gt;
&lt;p&gt;尽管这是最基本的功能，许多blogger可能根本没有用过或注意过，甚至不知道这是什么东西。它不是操作系统中测试网络状态的那个ping工具，而是在blog之间或者blog与其它服务之间进行通知的一种机制。&lt;/p&gt;
&lt;p&gt;经常会有这样的情况，在别人的blog上看见一篇文章，看完之后很有一些想法。可是这么有价值的东西，放在自己的blog上岂不是更好吗？然而这样做的话又怎么能让原文的作者和其他阅读同一篇文章的人分离自己的观点呢？这时候就该trackback出马了。一般的blog每篇日志都在显要位置给出一个trackback地址。在WordPress里写文章的时候，编辑框下面有一栏“Trackbacks”，在那里填写你要通知的日志的trackback地址。这样在发表文章的时候，你的blog就会向被trackback的日志发送一个ping。这个ping消息里面包含一个摘要，就是你的文章的开头。如果ping成功的话，对方的留言区就会出现你的文章的摘要，并且有文章的链接。&lt;/p&gt;
&lt;p&gt;你可能会说，还要找到对方的trackback地址填写到那里，真麻烦。那么可以选择另一种方式。在Options-&amp;gt;Discussion里面，第一个选项就是“Attempt to notify any Weblogs linked to from the article”，打开它。对别人的文章作评论时，一般会写“某某某说什么什么”，再加上他日志的链接。日志发布时WordPress就会自动通知你文章中出现的所有链接。发表后如果ping成功，他的日志留言里也会出现你的文章摘要。不过和trackback有区别的是，这个摘要是链接出现位置周围的那一段。&lt;/p&gt;
&lt;p&gt;前面提到ping可以让blog通知其它的服务而不限于blog。Technorati和Weblogs.com之类的就是一些blog目录服务器，它们搜集各个blog里面的日志并且做一些处理，提供搜索等服务，让读者更方便地获取信息。WordPress的Options-&amp;gt;Writing管理页最下面有一个“Update Services”，把相应的ping服务器填写进去，有新文章发布时就会自动通知这些网站，让它们来抓取最新的文章。WordPress在这里默认添加了一个&lt;a href=&#34;http://pingomatic.com/&#34;&gt;Ping-o-Matic!&lt;/a&gt; 的地址。Ping-o-Matic! 并不是面向读者的，它像FeedBurner一样为你分担任务，你只要通知它一个服务器，它就会为你通知许许多多的服务器。&lt;/p&gt;
&lt;p&gt;如果你使用了FeedBurner或者Feedsky之类的RSS烧制服务来为你分担流量和统计订阅者数据，最担心的可能就是它的更新速度问题了。发表文章后你肯定希望更新后的Feed被抓取并更新到FeedBurner或Feedsky的Feed，以让读者尽快看到，但是烧制者的服务器又无法过于频繁地做查询更新的无用功。这时候ping又可以发挥作用了。Feedsky刚刚发布了它的Ping接口，地址是http://www.feedsky.com/api/RPC2，把它填写在Update Services里面，发表文章时就会自动通知Feedsky，它的bot很快就会过来看你的blog有没有更新，有的话就重新烧制Feed。实际上FeedBurner已经在Ping-o-Matic!的列表中，所以不用再操心了，如果你还嫌Ping-o-Matic!慢而想直接Ping，就把FeedBurner的ping地址（http://ping.feedburner.com/）也加上。试一下，Feed一般在十分钟之内应付更新，足够了。需要注意的一点是，Feedsky的bot是看head里面的RSS链接来查找更新的，所以要把WordPress本身的RSS链接（通过调用bloginfo(’rss2_url’);）加进去，否则接到通知也无法更新。&lt;/p&gt;</description>
    </item>
    <item>
      <title>wine in Edgy</title>
      <link>https://qingbo-net.pages.dev/archives/94/</link>
      <pubDate>Thu, 07 Dec 2006 15:03:21 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/94/</guid>
      <description>&lt;p&gt;今天才发现原来在Ubuntu Edgy里面，wine已经相当好了。运行魔兽时，除了偶尔声音稍微有点不对劲，其他一切都非常好，声音的缺陷也基本上没什么影响。&lt;/p&gt;
&lt;p&gt;cedega在模拟的时候有几点很不爽。首先是不能输入中文，wine模拟时Ctrl+Space中文输入法就出来了，输入也很正常。另一点是进去以后除非退出游戏，否则无法切换到其他程序（不过中途有Gaim聊天窗口弹出的话可以出来，也许是有办法切换的，我不了解），而在wine中，这个全屏的模拟窗口跟其它窗口有相同的行为，可以Alt+Tab随意切换。但随之而来的一个不便之处就是Alt和鼠标右键同时按下时，就出来了操纵窗口的菜单。&lt;/p&gt;
&lt;p&gt;刚运行了一下winecfg，Graphics里有一项设置叫“Allow the window manager to control the windows.”，可能cedega默认把这个关闭了吧，应该也可以设置。那里也写着，如果禁用这个选项的话，模拟的效果会更好一些。&lt;/p&gt;
&lt;p&gt;可惜的是我现在用wine和cedega都无法成功模拟CS。&lt;/p&gt;
&lt;p&gt;Mark在上次party上透露7.04版本的一个亮点就是使游戏在Linux中更容易玩，希望wine到时候能做得更好。&lt;/p&gt;
&lt;p&gt;游戏伤身，少玩为好&lt;/p&gt;</description>
    </item>
    <item>
      <title>Shuttle project is dead</title>
      <link>https://qingbo-net.pages.dev/archives/93/</link>
      <pubDate>Thu, 07 Dec 2006 08:30:06 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/93/</guid>
      <description>&lt;p&gt;自从某次发现&lt;a href=&#34;http://www.brokenkode.com/shuttle&#34;&gt;Shuttle&lt;/a&gt;这个项目我就开始期待它被WordPress纳入，它在界面和易操作性上比WordPress原有的后台有很大的提升，看看它主页上的图片就知道了。&lt;/p&gt;
&lt;p&gt;今天早上看到&lt;a href=&#34;http://meidell.dk/archives/2006/12/06/brians-latest-comments-158/&#34;&gt;Brian’s Latest Comments插件有更新&lt;/a&gt;，感觉很奇怪，他已经好久没更新过了，而且我用得好好的。原来是Binary Bonsai将Blog更新到2.1 Alpha后出现了兼容性问题，详情见&lt;a href=&#34;http://binarybonsai.com/archives/2006/12/06/wordpress-21-alpha-notes/&#34;&gt;WordPress 2.1 Alpha Notes&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;文中提到测试版本有了Autosave的功能，非常值得期待。我们经常会遇到浏览器意外关闭后辛辛苦苦编辑的内容丢失的情况，虽然可以通过插件添加自动保存功能，但集成在WordPress里面就方便多了。&lt;/p&gt;
&lt;p&gt;同一页面（包括comments）也提到了关于Shuttle的坏消息。难怪这个项目最近没什么动静了，Matt似乎并不喜欢Shuttle的开发方式。我本来想着到2.10版本时整个Shuttle项目会被融合进来，现在看希望不大了，最多只是一小部分。不过WordPress的后台也没什么大的缺陷，够用就好了。&lt;/p&gt;
&lt;p&gt;另外WP的&lt;a href=&#34;http://trac.wordpress.org/roadmap&#34;&gt;Roadmap&lt;/a&gt;里2.0.6应该是在12月1日就该发布了，推迟到现在还有一个active ticket。2.1版本还是“no date set”，不过进度已经到98%，应该快了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>用好WordPress的quicktag editor</title>
      <link>https://qingbo-net.pages.dev/archives/92/</link>
      <pubDate>Wed, 06 Dec 2006 15:12:30 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/92/</guid>
      <description>&lt;p&gt;自从开始用WordPress就不停地寻找一个完美的编辑器，它自带的tinyMCE实在是太垃圾了，经常会自作主张地整理HTML代码，从而把我们想要的格式抹掉，尤其在排版代码的时候最郁闷。&lt;/p&gt;
&lt;p&gt;后来也用过EditorMonkey，很大，载入页面很慢，这个是不想用它的主要原因。另外&lt;a href=&#34;http://www.twilightuniverse.com/2005/04/twilight-autosave/&#34; title=&#34;Twlight Autosave&#34;&gt;Autosave&lt;/a&gt;这样的插件也不正常工作，用FCKEditor作编辑器的话，上传图片也不支持直接点发送填到文章里面。&lt;/p&gt;
&lt;p&gt;最终还是觉得WordPress的quicktag editor最爽，它不会随意修改HTML代码，而且页面载入飞快，因为没有了带图片的工具栏。&lt;/p&gt;
&lt;p&gt;比如你想加一段引文，点一下b-quote按钮，&lt;blockquote&gt;就出现在了编辑器中，引文输入完成，点击Close Tags，blockquote关闭标签就出来了。&lt;/p&gt;
&lt;p&gt;但是quicktag editor的按钮还是太少了。如果要加一些按钮怎么办呢？非常方便，有一个插件叫做&lt;a href=&#34;http://roel.meurders.nl/wordpress-plugins/wp-addquicktag-plugin-for-adding-quicktags/&#34;&gt;WP-AddQuicktag&lt;/a&gt;，可以快速地为quicktag editor增加按钮。&lt;/p&gt;
&lt;p&gt;但是这个插件插入的按钮全部是追加在原有按钮的后面，如果你想自已定义按钮的顺序，也不难，打开wp-includes/js/quicktags.js文件，它的顶部就是添加按钮的代码，照葫芦画瓢就可以了。比如要添加一个插入段落标签&lt;p&gt;的按钮，可以在合适的位置加入这样的代码：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;edButtons[edButtons.length] = new edButton(&#39;ed_p&#39;&amp;lt;br /&amp;gt; ,&#39;p&#39;&amp;lt;br /&amp;gt; ,&#39;&amp;lt;p&amp;gt;&#39;&amp;lt;br /&amp;gt; ,&#39;&amp;lt;/p&amp;gt;&#39;&amp;lt;br /&amp;gt; ,&#39;&#39;&amp;lt;br /&amp;gt; );&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;更多方法可参考&lt;a href=&#34;http://www.tamba2.org.uk/wordpress/quicktags/&#34;&gt;WordPress Quicktags Guide&lt;/a&gt;。参考quicktags.js中img按钮的做法，应该也可以实现自己的比较复杂的功能。&lt;/p&gt;
&lt;p&gt;对不喜欢默认可视化编辑器的稍微了解HTML的用户，推荐使用这个编辑器。看样子有不少WP用户是这样的，比如那个&lt;a href=&#34;http://en.dahnielson.com/2006/09/mimetex-plugin.html&#34;&gt;mimeTex&lt;/a&gt;作者就是，他甚至不知道WYSIWYG编辑器会把&lt;tex&gt;这样的标签剔除。&lt;/p&gt;</description>
    </item>
    <item>
      <title>应对垃圾留言的困境</title>
      <link>https://qingbo-net.pages.dev/archives/91/</link>
      <pubDate>Sat, 02 Dec 2006 16:45:14 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/91/</guid>
      <description>&lt;p&gt;前阵子pulq的留言总是被Akismet ban，显然是根据IP判断的。我便发邮件给akismet的support，回复说，让朋友在podz.wordpress.com留个言，他会分捡出来。我便让pulq通过代理上那个网址留言。多亏他没留，过了几天我一想，通过代理上去有个P用，IP都变了。&lt;/p&gt;
&lt;p&gt;于是又发邮件给akismet，问他们为什么要根据IP来杀，还有尽量不要误杀，即便有少量的不能抓住。回复说，由于一个IP经常在某段时间用来发送无数的spam comment，他们必须根据IP判断。spammer为了逃避也会经常换IP，这里就解封原来的IP了。嗯，pulq留言已经正常了:smile:。&lt;/p&gt;
&lt;p&gt;Akismet并不是“宁可误杀一千，决不放过一个”，他说误杀的情况很少。不过我已经遇见好几个了，现在每次清空的时候都比较谨慎地浏览一下。该死的垃圾留言现在是越来越长，有的甚至像一篇长长的论文，也够占地方的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Book of Mozilla, 7:15</title>
      <link>https://qingbo-net.pages.dev/archives/90/</link>
      <pubDate>Thu, 30 Nov 2006 20:18:28 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/90/</guid>
      <description>&lt;p&gt;在Firefox的地址栏输入“about:mozilla”就会出来这样一个页面：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;And so at last the beast &lt;em&gt;fell&lt;/em&gt; and the unbelievers rejoiced.&lt;br&gt;
But all was not lost, for from the ash rose a &lt;em&gt;great bird&lt;/em&gt;.&lt;br&gt;
The bird gazed down upon the unbelievers and cast &lt;em&gt;fire&lt;/em&gt;&lt;br&gt;
and &lt;em&gt;thunder&lt;/em&gt; upon them. For the beast had been&lt;br&gt;
&lt;em&gt;reborn&lt;/em&gt; with its strength &lt;em&gt;renewed&lt;/em&gt;, and the&lt;br&gt;
followers of &lt;em&gt;Mammon&lt;/em&gt; cowered in horror.&lt;/p&gt;
&lt;p&gt;from &lt;strong&gt;The Book of Mozilla,&lt;/strong&gt; 7:15&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;2003年7月15日，AOL关闭了它的Netscape部门，Mozilla组织成立。The beast指Mozilla(Netscape)那个怪兽标志，暗指Netscape。Unbelievers，很多人认为AOL并不重视Netscape浏览器，不会把它做好。有了这两点，为什么rejoice，为什么reborn with its strength renewed就容易理解了。财主很可能指的就是M$。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google Reader Notifier</title>
      <link>https://qingbo-net.pages.dev/archives/89/</link>
      <pubDate>Thu, 30 Nov 2006 19:43:56 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/89/</guid>
      <description>&lt;p&gt;前面写过一篇&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post86.html&#34;&gt;关于Google Reader Toolkit&lt;/a&gt;的，不久我推荐itsokbaby用Google Reader的时候他就提醒我有一个新的Firefox插件实现同样的功能的。我看了一下果然这个是专业的，比那个Toolkit要好得多，也不存在跟Gmail Manager的冲突问题。它需要你输入用户名、密码，这样就不用先在网页上登录并保存登录信息了。&lt;/p&gt;
&lt;p&gt;主页是：&lt;a href=&#34;http://markdbd.com/proyectos/google_reader_notifier/&#34;&gt;http://markdbd.com/proyectos/google_reader_notifier/&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>I’m back</title>
      <link>https://qingbo-net.pages.dev/archives/88/</link>
      <pubDate>Thu, 30 Nov 2006 16:43:55 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/88/</guid>
      <description>&lt;p&gt;有朋友奇怪为什么这几天我的Blog连不上了，因为有人在同一台服务器上放了不好的东西。一方面对这种人表示强烈的不满，另一方面对自己生活在这样的环境中表示深深的同情。&lt;/p&gt;
&lt;p&gt;在主机挂掉的这几天里，我一直在考虑自己是不是太依赖于电脑，太依赖于网络了。每天都要上网，看看有没有新邮件，别人的Blog里有什么更新，digg.com上有什么新热点。对看到的东西有些想法，就想在Blog上把它写出来。主机被封了，我又不停地发消息问meyu什么时候能好，当下什么进展。&lt;/p&gt;
&lt;p&gt;这样，很少读纸质的印刷品了，也很少通过写信和同学交流了。总感觉比较耽误时间，可是坐在自习室里，又觉得没什么东西可看，或者需要看的东西太无聊了。可能是我现在所学的，确实很无聊吧。要是有个很让人感兴趣的项目来做，也许可以让我集中起精神来。&lt;/p&gt;
&lt;p&gt;那些不注意自己网站内容的人也应该好自为之了，以前总想着为自己注意点，现在看来，更应该为别人想想。&lt;/p&gt;
&lt;p&gt;好了，用Blog记录生活，继续享受这被阉割过的Internet。我们仍然可以自由地在互联网上冲浪，不过互联网最吸引人的特性──最方便地获取信息──在某些情况下已经失去了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Icon generator 泛滥</title>
      <link>https://qingbo-net.pages.dev/archives/87/</link>
      <pubDate>Mon, 27 Nov 2006 13:31:57 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/87/</guid>
      <description>&lt;p&gt;最初发现网上有icon generator，只是一些像Email地址转换成图片、生成个XHTML valid 之类的小标志。&lt;/p&gt;
&lt;p&gt;现在看，五花八门的icon generator层出不穷，做什么的都有。昨天看了一下digg.com的RSS，有40多个未读条目。其中关于generator的就有三个，已经是不小的比例了。比如昨天写过的生成Web 2.0样式logo的网站，挺有用的，还有一个是&lt;a href=&#34;http://www.warninglabelgenerator.com/&#34;&gt;生成警告图标&lt;/a&gt;的。另有一个只是for fun，&lt;a href=&#34;http://digg.com/design/Haha_I_m_Using_the_Internet_Image_Generator&#34;&gt;生成搞笑的图片&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;有人更是过分，说”Everytime somebody submits ONE generator, I submit LOTS of generators.” 原来他有一个Blog专门是关于generator的，见&lt;a href=&#34;http://generatorblog.blogspot.com/&#34;&gt;The Generator Blog&lt;/a&gt;，不过大部分都很弱智，用来玩的。PS: blogspot又能访问了。&lt;/p&gt;
&lt;p&gt;说不定有一天出来个家伙一统天下，你想要什么图标我就能生成什么图标。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Web 2.0 logo maker</title>
      <link>https://qingbo-net.pages.dev/archives/86/</link>
      <pubDate>Sun, 26 Nov 2006 18:49:10 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/86/</guid>
      <description>&lt;p&gt;目前网络上各种各样的icon maker可以说是层出不穷，以前也曾&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post20.html&#34;&gt;写过一篇日志&lt;/a&gt;列举了一些生成Email icon的网站。&lt;/p&gt;
&lt;p&gt;今天看到新出来一个网站(&lt;a href=&#34;http://web2.0stylr.com/stylr.aspx&#34;&gt;Logo Maker: Web 2.0 Stylr&lt;/a&gt;)，专门生成Web 2.0样式的网站标题的。对于像我一样不会Photoshop的人可是个好消息。&lt;/p&gt;
&lt;p&gt;根据作者在&lt;a href=&#34;http://digg.com/design/Web_2_0_Logo_Generator_3&#34;&gt;digg.com上的留言&lt;/a&gt;，这个网站被“blogged about like crazy in China”。还有什么是Web 2.0 logo？作者说是“over-done-reflection-logo”。网站的右边列出了最新生成的一些logo，看一下就知道是什么样子了，被许多Blog所采用。&lt;/p&gt;
&lt;p&gt;尽管这种图片已经“用滥”了，我还是生成了一个放上来，比以前的文字好看些，又没有破坏整体的风格。或许正是作者所说的在中国如此受欢迎，字体列表的最后有一个“汉鼎繁古印”，正适合于中文。&lt;/p&gt;
&lt;p&gt;程序目前还比较简单，只有两种渐变效果。不过由于大众的要求，作者可能会下功夫把它做好。很期待，我已订阅了他的RSS。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google Reader Toolkit</title>
      <link>https://qingbo-net.pages.dev/archives/85/</link>
      <pubDate>Sat, 25 Nov 2006 13:05:28 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/85/</guid>
      <description>&lt;p&gt;一直希望能有Google Reader Notifier这样一个Firefox扩展，像Bloglines一样，可惜以前搜索的时候只能搜索到一个&lt;a href=&#34;http://troelsbay.eu/software/reader&#34;&gt;For Mac的Notifier&lt;/a&gt;。Google Reader并没有正式发布一个API，所以它的插件开发并不活跃，不过有人通过反向工程分析出来一些头绪，并且得到了Google Reader开发小组的认可，见&lt;a href=&#34;http://www.niallkennedy.com/blog/archives/2005/12/google_reader_a.html&#34;&gt;此链接&lt;/a&gt;。也想过自己做一个扩展，但Javascript实在是不熟悉，只好作罢。&lt;/p&gt;
&lt;p&gt;今天又搜索，终于发现有人做了，叫做&lt;a href=&#34;http://www.myths.ru/grtoolkit/&#34;&gt;Google Reader Toolkit&lt;/a&gt;。很简单，甚至没有实现登录，只有自己登录或通过别的扩展登录Google帐户才可以使用。目前与Gmail Manager扩展有冲突，但可以与Gmail Notifier共同使用。不知道Gmail Manager是如何工作的，很可能是登录、检查、注销这样，于是Google帐户一般是处于注销状态的。我不喜欢这种方式，没有必要注销。不过我现在就开着Gmail页面不关闭，也就不装Gmail通知扩展了。&lt;/p&gt;
&lt;p&gt;安装好Google Reader Toolkit后，它默认是禁用的，右键点击状态栏它的图标进行设置，启用。当它检测到有未读的Item时，默认的Google Reader图标颜色会发生变化，点击图标就会打开Reader页面。&lt;/p&gt;
&lt;p&gt;希望作者能够继续改进，更希望Google Reader开发者早日发布API。&lt;/p&gt;</description>
    </item>
    <item>
      <title>WordPress 2.0.x需要注意的两个地方</title>
      <link>https://qingbo-net.pages.dev/archives/84/</link>
      <pubDate>Mon, 20 Nov 2006 08:21:27 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/84/</guid>
      <description>&lt;ol&gt;
&lt;li&gt;每日自动备份失效。我一直用wp-cron配合wp-db-backup插件，每天定时将数据库备份发送到信箱中。不过好像是从2.0.4版本开始wp-db-backup插件作了修改，使得定时备份不起作用了。解决办法是在该插件的php文件的末尾，找到wpdbBackup_init函数，把其中的“if ( !current_user_can(’import’) ) return;”语句注释掉。&lt;/li&gt;
&lt;li&gt;缓存功能默认关闭。就是不在wp-content/cache目录中写缓存文件了。解决办法是在wp-config.php文件中加一行“define(’ENABLE_CACHE’,true);”将该功能打开。WP好像从2.0.3开始就默认关闭了这个功能，因为它有一个&lt;a href=&#34;http://secunia.com/advisories/20271/&#34;&gt;安全隐患&lt;/a&gt;。不过我们大部分的WP用户并不需要为这个漏洞担心，看看&lt;a href=&#34;http://wordpress.org/support/topic/73908&#34;&gt;这个页面&lt;/a&gt;上westi列的三个必要条件。我们大多都不提供用户注册功能，所以，放心吧。&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>怎样阅读 Blog</title>
      <link>https://qingbo-net.pages.dev/archives/83/</link>
      <pubDate>Fri, 17 Nov 2006 17:29:55 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/83/</guid>
      <description>&lt;p&gt;不忍心看朋友在慢如牛，广告如牛毛的Live Space上写Blog，劝他搬出来，我给空间。他唯一舍不得的就是朋友们在MSN上可以看到更新的标志（那个星星），怕Blog没人看。于是写篇扫盲文，让他放在Blog上，希望RSS阅读能在他的朋友圈里得到推广。不太会写文章，莫笑:smile:&lt;/p&gt;
&lt;h3 id=&#34;怎样阅读-blog&#34;&gt;怎样阅读 Blog&lt;/h3&gt;
&lt;p&gt;Blog是朋友们展现个性、发表观点的自由舞台。对于愿意了解别人的我们来说，阅读其Blog是一个直接而方便的方式。初看这个标题你一定有点奇怪，阅读 Blog还有什么学问，打开浏览器输入地址谁不会啊？确实，通过浏览器直接浏览Blog的见面是一种办法，不过这并不是最方便最有效的。用MSN的可能经 常会看到联系人前面的星星，就点击进入他的MSN Space或Live Space，这样是挺不错的，能及时看到更新的内容。不过如果他的Blog不是用的微软的服务呢？大家都知道Live Space顶上那一大条广告多影响市容，还有它的速度也不尽人意。这篇文章就来说说怎样快速有效地阅读朋友们的Blog。&lt;/p&gt;
&lt;h4 id=&#34;rss&#34;&gt;RSS&lt;/h4&gt;
&lt;p&gt;RSS是一个缩略词，它有太多种解释。在这里，就指显示网站最新内容的一种格式，不仅限于Blog。一般的Blog系统都提供了一个RSS Feed，它是一个网页地址，显示最新的若干个日志。其链接可以在Blog首页上找到，比如用户名为bob的Live Space的RSS地址就是&lt;a href=&#34;http://bob.spaces.live.com/feed.rss&#34; class=&#34;urlextern&#34; title=&#34;http://bob.spaces.live.com/feed.rss&#34; rel=&#34;nofollow&#34;&gt;&lt;a href=&#34;http://bob.spaces.live.com/feed.rss&#34;&gt;http://bob.spaces.live.com/feed.rss&lt;/a&gt;&lt;/a&gt;。 有了RSS我们可以干什么呢？如果是在浏览器里输入其地址，那还不如直接上主页看去。不，我们要用一个软件或者另一个网站的服务来“订阅”它。“订阅”听 起来有点像订报纸、杂志的感觉是吧？嗯，有点像。Blog不就是朋友们自己的报纸吗？我们让人给送到门口的报刊箱里，然后再取回来读。以前东跑西跑偷窥别 人的日子结束了，现在你坐在家里看报纸，然后决定要不要去现场看看。这就是RSS给我们带来的好处。&lt;/p&gt;
&lt;h4 id=&#34;用抓虾来订阅rss&#34;&gt;用“抓虾”来订阅RSS&lt;/h4&gt;
&lt;p&gt;首先推荐用一些网站提供的服务来订阅RSS。许多大网站如Google、Yahoo!等都提供了这类服务。这里就讲一下&lt;a href=&#34;http://zhuaxia.com/index.php&#34; class=&#34;urlextern&#34; title=&#34;http://zhuaxia.com/index.php&#34; rel=&#34;nofollow&#34;&gt;“抓虾”&lt;/a&gt;，容易上手。&lt;/p&gt;
&lt;li class=&#34;level1&#34;&gt;
  &lt;div class=&#34;li&#34;&gt;
    首先在抓虾网站上&lt;a href=&#34;http://zhuaxia.com/indexFrame.php#showRegister%28%27%27%29&#34; class=&#34;urlextern&#34; title=&#34;http://zhuaxia.com/indexFrame.php#showRegister(&#39;&#39;)&#34; rel=&#34;nofollow&#34;&gt;注册一个帐号&lt;/a&gt;。填写你的真实Email，抓虾不会发垃圾邮件的:)收到邮件后按提示激活你的帐户，就可以使用所有的服务了。
  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;level1&#34;&gt;
  &lt;div class=&#34;li&#34;&gt;
    登录后，页面上方有一个导航栏，点击&amp;ldquo;我的频道&amp;rdquo;就可以看到自己已经订阅的Blog了。
  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;level1&#34;&gt;
  &lt;div class=&#34;li&#34;&gt;
    点击&amp;ldquo;添加频道&amp;rdquo;，右边出来添加频道的提示，然后输入频道的地址（就是Blog的RSS Feed），点击&amp;rdquo;订阅&amp;ldquo;，出来一个页面让你修改该频道的信息。你可以在右边选择&amp;rdquo;订阅到&amp;ldquo;哪里，如果目录不存在，可以新建一个目录如&amp;rdquo;朋友&amp;ldquo;以方便分类。
  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;level1&#34;&gt;
  &lt;div class=&#34;li&#34;&gt;
    填写好之后，点击&amp;rdquo;订阅频道&amp;ldquo;，稍等片刻，朋友的RSS就出现在页面左侧了！再看右栏，朋友最新的日志标题尽收眼底。朋友的Blog有新日志时，这里也会很快更新的。
  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&#34;level1&#34;&gt;
  &lt;div class=&#34;li&#34;&gt;
    开始你崭新的Blog阅读体验吧！点击右边的加号可以展开该日志来阅读，如果你看了高兴或不爽，想吼两声，就点击标题到他的Blog里去留言。
  &lt;/div&gt;
&lt;/li&gt;
&lt;p&gt;设想你有许多朋友，你经常想了解他们的Blog有没有更新。不要一一打开他们的网址，只要在这里订阅，以后想看的时候只要打开”抓虾“，所有Blog的更新就都一目了然了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://reader.google.com/&#34; class=&#34;urlextern&#34; title=&#34;http://reader.google.com&#34; rel=&#34;nofollow&#34;&gt;Google Reader&lt;/a&gt;也非常好用，可以试一下，选择一个适合自己的。&lt;/p&gt;
&lt;h4 id=&#34;用greatnews来订阅rss&#34;&gt;用GreatNews来订阅RSS&lt;/h4&gt;
&lt;p&gt;也许你不愿意在网页上阅读RSS，那么就选择一个软件吧。同样有很多软件，不过有一个强大而且免费的&lt;a href=&#34;http://www.curiostudio.com/&#34; class=&#34;urlextern&#34; title=&#34;http://www.curiostudio.com/&#34; rel=&#34;nofollow&#34;&gt;GreatNews&lt;/a&gt;可以用。我不推荐这种用客户端软件阅读的方式，因为一旦你的系统崩溃或者重装系统时忘记备份，这些订阅信息很可能就会丢失。&lt;/p&gt;
&lt;p&gt;安装该软件后，添加频道等方法与上面说的”抓虾“基本类似，就不再多说了。&lt;/p&gt;
&lt;p&gt;如果你没有订阅过RSS，你已然落伍了。RSS是被越来越多的人采用的发布和获取互联网信息的途径，赶快尝试一下吧！&lt;/p&gt;
&lt;p&gt;前面已经提到，RSS的用处不仅限于Blog，你也可以订阅各大新闻网站的RSS来了解国家大事，或者花边八卦。&lt;/p&gt;</description>
    </item>
    <item>
      <title>终于配置好了Subversion</title>
      <link>https://qingbo-net.pages.dev/archives/82/</link>
      <pubDate>Thu, 16 Nov 2006 16:33:14 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/82/</guid>
      <description>&lt;p&gt;以前在Windows里配置过，记得不太难。不过这次想通过http方式访问版本库，费了好多周折，主要是Apache对目录读写的权限问题，最后照&lt;a href=&#34;http://wiki.ubuntu.org.cn/SubVersion&#34;&gt;UbuntuChina Wiki上的指导&lt;/a&gt;弄好了。看来以后要好好看看Linux的文件权限管理了，不然会遇到好多麻烦。&lt;/p&gt;
&lt;p&gt;在Eclipse里通过更新的方式添加了Subcilpse，竟然自动给我搞了个中文版的。我的locale和Eclipse都是英文的啊，难道它会根据IP判断不成？真郁闷，英文界面中冒出一个中文菜单&lt;img decoding=&#34;async&#34; class=&#34;wp-smiley&#34; src=&#34;https://qingbo-net.pages.dev/wp-content/plugins/editormonkey/fckeditor/editor/images/smiley/msn/regular_smile.gif&#34; /&gt;。&lt;/p&gt;
&lt;p&gt;机器是通过DHCP分配的动态IP，不过变化不太频繁。所以在域名管理里面增加了一个A记录指向当前IP，变化的时候修改一下，让同学通过域名来访问SVN。不然的话，每次的URL变化，客户端这边可能不太好办。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在WordPress里使用LaTeX输出公式</title>
      <link>https://qingbo-net.pages.dev/archives/81/</link>
      <pubDate>Tue, 14 Nov 2006 17:53:27 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/81/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.forkosh.com/mimetex.html&#34;&gt;mimeTeX&lt;/a&gt;处理LaTeX的数学公式，并直接输出一个gif格式的图片。可以在&lt;a href=&#34;http://www.forkosh.com/mimetextutorial.html&#34;&gt;这里&lt;/a&gt;看它的教程，并且也有输入框，让你写几个公式看看效果。我的前面两篇日志中也都包含有mimeTeX输出的公式。&lt;/p&gt;
&lt;p&gt;用LaTeX写公式实在太爽了，mimeTeX终于让我们可以在写Blog时也可以方便地插入公式，而不用自己运行一堆命令生成图片再上传。&lt;/p&gt;
&lt;p&gt;Dahnielson&lt;a href=&#34;http://en.dahnielson.com/2006/09/mimetex-plugin.html&#34;&gt;专门为WordPress写了一个插件&lt;/a&gt;，使用一个公共的mimeTeX服务器，从而避免了在cgi-bin中安装（有的服务器还不支持这个）。它从服务器上取得图片，放在Blog目录中的wp-content/cache目录下。只要在写文章的时候把TeX公式用&lt;tex&gt;&lt;/tex&gt;标记括起来，页面在浏览器打开时就会将代码自动替换为图片，非常方便。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.wordpresscn.com/964&#34;&gt;BloggingPro&lt;/a&gt;提到了Yujian写的&lt;a href=&#34;http://heaps.cn/?page_id=21&#34;&gt;类似插件&lt;/a&gt;，不过仍然需要安装mimeTeX在cgi-bin中。其它的方案如&lt;a href=&#34;http://www.mayer.dial.pipex.com/tex.htm#latexrender&#34;&gt;LaTeXRender&lt;/a&gt;，对服务器的需求更多，就不提了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Lottery问题的递归方程</title>
      <link>https://qingbo-net.pages.dev/archives/80/</link>
      <pubDate>Tue, 14 Nov 2006 13:34:44 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/80/</guid>
      <description>&lt;p&gt;继续考虑Lottery问题的第三类（有序、可重复），一个同学根据下边的图列出了一个递归方程如下：&lt;/p&gt;
&lt;p&gt;&lt;tex&gt;T(n, m) = \left{ \begin{array}{ll} T(n – 1, m) + T(n, m – 1) &amp;amp; a \geq 2, b \geq 2\ 1 &amp;amp; n = 1\ n &amp;amp; m = 1 \end{array} \right.&lt;/tex&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;250&#34; height=&#34;307&#34; border=&#34;2&#34; align=&#34;right&#34; src=&#34;http://www.qingbo.org/wp-content/uploads/2006/11/tmn.png&#34; alt=&#34;T(n, m)&#34; style=&#34;padding: 5px; margin-left: 5px;&#34; /&gt; 设前n个自然数填充m个空，按照要求有T(n, m)种填充方法。图中只给出了n=3, m=3的情况，树的高度为m，从根到每一个叶节点的路径上的标号序列就是一种方法，所以叶节点的个数即为填充方法的个数。用蓝线将图分成两半，则可以发现，左边的子树与T(3, 2)相同，右边子树结构与T(2, 3)相同。可以想象对任意n&amp;gt;=2, m&amp;gt;=2这个式子都成立。&lt;/p&gt;
&lt;p&gt;一行行列举T(n, m)的值（按每行m+n的值相等），就可以发现跟杨辉三角很相似。可以证明这个方程的解就是&lt;/p&gt;
&lt;p&gt;&lt;tex&gt;C_{n+m-1}^m&lt;/tex&gt;&lt;/p&gt;
&lt;p&gt;不过，可不可以在不知道结果的情况下把它解出来呢？&lt;/p&gt;</description>
    </item>
    <item>
      <title>Topcoder上的数学题</title>
      <link>https://qingbo-net.pages.dev/archives/79/</link>
      <pubDate>Sun, 12 Nov 2006 14:24:04 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/79/</guid>
      <description>&lt;p&gt;前几天上Topcoder，第二个题（Lottery）就让我比较郁闷。&lt;/p&gt;
&lt;p&gt;输入是一些彩票的描述，有名字、可选数字、空格数、是否有序、是否唯一这些项目，有多种彩票，以字符串数组类型输入，要求在输出中按照各种彩票的可能个数大小对这些彩票排序。给定可选数字n，空格数m，则问题就是在1, 2, … , n中选择m个来填空，并按照是否有序（非降序，如：1,2,2,3）、是否允许重复的限制来计算可能的答案数。&lt;/p&gt;
&lt;p&gt;这其实就不算个算法题。首先就是要分析输入字符串，生成可以操作的问题对象（需要定义类），考察的是对语言运用的熟练程度。然后要根据问题限制求出排列数，考察的是对排列组合的掌握。最后是排序，如果用Java，实现一个Comparable接口，还是写一个实现了Comarator接口的类，随便了，不过前一个更方便。如果用C++，那么就写一个回调函数。这考察的又是语言。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.qingbo.org/wp-content/uploads/2006/11/lottery.png&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;200&#34; height=&#34;117&#34; align=&#34;right&#34; alt=&#34;Lottery problem&#34; src=&#34;http://www.qingbo.org/wp-content/uploads/2006/11/lottery.png&#34; /&gt;&lt;/a&gt;可怜我就在排列组合那里出了问题。现在每次遇到数学问题的时候就没信心，总是觉得学得太差了，好像以前学过的东西都忘了。这个问题，如果不考虑是否有序的话还算简单，很容易想出来，但是考虑到有序，就不知道从何处下手了。&lt;/p&gt;
&lt;p&gt;问了一下数学比较牛的xl，他马上给出了答案。&lt;/p&gt;
&lt;table width=&#34;376&#34; height=&#34;200&#34; cellspacing=&#34;1&#34; cellpadding=&#34;1&#34; border=&#34;1&#34; align=&#34;&#34; summary=&#34;&#34;&gt;
  &lt;caption&gt;Lottery问题解的个数&lt;/caption&gt; &lt;tr&gt;
    &lt;td&gt;
      是否有序
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  是否允许重复
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  答案数
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      F
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  T
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  &amp;lt;tex&amp;gt;n^m&amp;lt;/tex&amp;gt;
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      F
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  F
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  &amp;lt;tex&amp;gt;P_n^m&amp;lt;/tex&amp;gt;
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      T
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  T
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  &amp;lt;tex&amp;gt;C_{n+m-1}^m&amp;lt;/tex&amp;gt;
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;
      T
    &lt;/td&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;td&amp;gt;
  F
&amp;lt;/td&amp;gt;

&amp;lt;td&amp;gt;
  &amp;lt;tex&amp;gt;C_n^m&amp;lt;/tex&amp;gt;
&amp;lt;/td&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
  &lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;我问的是后两种情况，最后一种给出答案我就明白了，n个数里取出m个，按顺序就只有一种放法了。第三种情况，他说也是猜的，看来数学好，感觉也是对的。后来在&lt;a href=&#34;http://en.wikipedia.org/wiki/Permutations_and_combinations&#34;&gt;Wikipedia上找到了解释&lt;/a&gt;，这是个很普通的问题吗？我没想到会很容易在上面找到该问题的解释，呵呵。那里已经给出了非常好的讲解，这里就不再赘述了。挺有意思的，自己凭空想，怎么也想不明白是怎么回事。&lt;/p&gt;</description>
    </item>
    <item>
      <title>修改live注册页面的userscript</title>
      <link>https://qingbo-net.pages.dev/archives/78/</link>
      <pubDate>Fri, 10 Nov 2006 05:29:53 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/78/</guid>
      <description>&lt;p&gt;cnBeta爆出了一个&lt;a href=&#34;http://cnbeta.com/modules.php?name=News&amp;amp;file=article&amp;amp;sid=17929&#34;&gt;注册@live.com用户的方法&lt;/a&gt;。以前在yahoo想注册一个用户，能想到的全部已经注册，资源枯竭了。所以这次就抢着上去注册了和自己有关的所有用户名。&lt;/p&gt;
&lt;p&gt;顺便写了一个GreaseMonkey的userscript，不用每次注册都要在地址栏手动复制一次。&lt;/p&gt;
&lt;p&gt;先安装&lt;a href=&#34;http://greasemonkey.mozdev.org/&#34;&gt;GreaseMonkey&lt;/a&gt;，再点击这个链接：&lt;a href=&#34;http://www.qingbo.org/wp-content/uploads/2006/11/addlive.user.js&#34;&gt;addlive.user.js&lt;/a&gt;，GreaseMonkey会自动提示安装。&lt;/p&gt;</description>
    </item>
    <item>
      <title>可怜的骡子</title>
      <link>https://qingbo-net.pages.dev/archives/77/</link>
      <pubDate>Tue, 07 Nov 2006 15:18:20 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/77/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;80&#34; height=&#34;80&#34; align=&#34;right&#34; alt=&#34;Donkey&#34; src=&#34;http://www.qingbo.org/wp-content/uploads/2006/11/donkey.jpg&#34; /&gt;它们与这个现代化、快节奏的城市如此不协调。&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;/p&gt;</description>
    </item>
    <item>
      <title>退学是要本领的</title>
      <link>https://qingbo-net.pages.dev/archives/76/</link>
      <pubDate>Mon, 06 Nov 2006 18:24:15 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/76/</guid>
      <description>&lt;p&gt;在水木上看到一个讨论，里面提到了前不久退学的王垠，是某个网友出来鄙视他的。有人回贴说，文人相轻，这样只能自降身份，我同意。这位朋友一张口就这家伙连什么什么都不会，一副唯我独尊的模样，显示自己很牛。也许他的确很牛，不过世界上不缺少这样的垃圾。──无关话题了&lt;/p&gt;
&lt;p&gt;我想大部分人都认为国内的教育体制太差，可是敢退学的又有几个呢。我也不想在这种地方呆着，可是又不知道出去以后应该怎么办。当初想上研究生，其实是想逃避社会，逃避生活。本来是有机会找到工作，接触生活的。混三年，拿个证书，走人。当然混是对学校方面，对自己还是要负责任。如果我生活宽裕，能交得起40000培养费，我也想退学，表露一下这些无所事事的研究生的心情。&lt;/p&gt;
&lt;p&gt;当然是有研究生是在干正事的，不然中国就完了。我也希望我能干些正事，但到底能否，现在还不得而知。那些整天看paper，整天copy代码给老板做廉价劳动力还以在做“科研”在搞863、973自慰的研究生们，醒醒吧，你也老大不小了。&lt;/p&gt;
&lt;p&gt;我就是这样一个人，如果不小心有研究生看了这些话，别受影响。&lt;/p&gt;
&lt;p&gt;垃圾，垃圾，垃圾，全部都是垃圾。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Novell与Microsoft之合作</title>
      <link>https://qingbo-net.pages.dev/archives/75/</link>
      <pubDate>Sun, 05 Nov 2006 12:57:48 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/75/</guid>
      <description>&lt;p&gt;最近比较热的一条新闻是&lt;a href=&#34;http://www.betanews.com/article/Novell_Microsoft_Ink_Linux_Partnership/1162510036&#34;&gt;Novell与Microsoft的合作&lt;/a&gt;。这里转篇学校BBS上的文章，究竟将来会如何，这是不是MS的阴谋，拭目以待吧，呵呵。&lt;a href=&#34;http://bbs.ustc.edu.cn/cgi/bbscon?bn=Linux&amp;amp;fn=M454C1426&amp;amp;num=7725&#34;&gt;原文地址&lt;/a&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;发信人: Galoisx (9800~昆虫博士), 信区: Linux&lt;/blockquote&gt;
&lt;p&gt;标  题: 号召大家谨慎使用Novell Linux产品
发信站: 瀚海星云 (2006年11月04日13:33:43 星期六), 站内信件&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;所有的故事都和Microsoft，一个体积硕大并诡计多端，一个永远是Linux 和自由软件的敌人有关。&lt;/p&gt;
&lt;p&gt;2006年11月2日，Novell和Microsoft联合宣布关于两家公司的一个合作， 也就是Windows和Novell Linux的一项合作。声称MIcrosoft将为Novell SUSE Linux和WInodws的互操作性提供a degree of sales support，以及 Microsoft将保证不会因软件专利问题起诉Novell SUSE Linux用户. [详情请看http://arstechnica.com/news.ars/post/20061102-8141.html]&lt;/p&gt;
&lt;p&gt;让我们一起回忆，Microsoft的历史，尤其是和Linux相关的历史，自从 Linux和自由软件进入公共视野以来(1998)。微软作了很多事情，说了很多 宣称，但唯独没有一件不是想置Linux(他的来自平民大众的竞争对手)于死地 的。&lt;/p&gt;
&lt;p&gt;无数次FUD(Fear, Uncertain, Doubt)旨在用威胁恐吓来吓倒竞争对手， 打击竞争对手用户的信心，是Microsoft一贯的伎俩，但对于Linux，这个 来自大众，来自社区，竞争对手即是用户，用户即是竞争对手的强大对手， Microsoft一次次无功而返，而Linux却在每一次对决后仍然大步前进，而 这又进一步使得Microsoft更加担心，使出更进一步的手段。&lt;/p&gt;
&lt;p&gt;Microsft刚开始并不care Linux(1998前)，直到当Linux开始变得家喻户晓时， 它没法忽略它时，不得不Care了，就出钱收买一家调查公司做操作系统性能 对比评测，其结果当然是说Linux性能不好(1999)，谎言被回击之后。它又 接着说Linux不nice，是cancer，是棵毒瘤(2001, Steve Ballmer)，进而发起 另一轮混淆黑白的FUD; 再之后又搜集起子虚乌有的报告，说Linux系统使用价格 比windows昂贵，谎言再次被事实无言的击穿。&lt;/p&gt;
&lt;p&gt;历史上，没有一家公司能像Microsoft那样将子虚乌有的东西吹嘘的天花乱坠， 将FUD手段运用得淋漓尽致，能够如此不要脸的欺诈，恐吓竞争对手和用户。&lt;/p&gt;
&lt;p&gt;一次次的FUD失败导致下一次更无聊也更无耻，更强奸民意的FUD. 2003年， Microsoft买通了Linux和自由软件社区阵营中的背叛者SCO公司(它曾经贡献过Linux)， 它们联合出演了一处滑稽的闹剧，一个出钱，一个出力，想告Linux代码侵权 知识产权。&lt;/p&gt;
&lt;p&gt;当一些人们以为，Linux这下也许真出问题的时候，因为这是来自Linux 自己身边的谋杀和暗杀。但最后，真相又公之于众了，原来SCO一直处在财务 低迷困难重重中，Microsoft利用了这个没良心和意志淡薄的叛徒的这种心理， 通过另一家公司给SCO支付大量现金，背后策划攻击Linux、自由软件和所有 Linux用户。&lt;/p&gt;
&lt;p&gt;这是一个可耻的闹剧，让我们看清楚了两个可耻的主角: 叛徒SCO和刽子手头目 Microsoft. 也让Linux在代码开发和吸收上进行慎重思考和改革。&lt;/p&gt;
&lt;p&gt;那么，我们要问，还有下一个叛徒吗？答案是YES. 因为刽子手还在，刽子手金钱 的魔力还在，就可能有下一个叛徒。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Emacs可以在Gnome下使用输入法了</title>
      <link>https://qingbo-net.pages.dev/archives/74/</link>
      <pubDate>Fri, 03 Nov 2006 12:00:02 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/74/</guid>
      <description>&lt;p&gt;最近编译了CVS的Emacs23后一直不能使用X的中文输入法，因为Emacs与gnome-settings-demon进程有冲突。经过一些人在邮件列表上讨论之后，终于有开发者作了一些修改。而现在co出来的代码编译后已经可以正常切换中文输入法了，真爽。&lt;/p&gt;
&lt;p&gt;前些日子一直用happierbee写的输入法，很不错。不过候选词在mode-line里，始终感觉太远，用tooltip显示效率又不好。而且在一个系统里要适应两种输入法的习惯，两个词库，有点不舒服。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Edgy Eft release party</title>
      <link>https://qingbo-net.pages.dev/archives/73/</link>
      <pubDate>Thu, 02 Nov 2006 16:33:46 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/73/</guid>
      <description>&lt;p&gt;早就知道11月2日的Edgy Eft Release Party上Mark会亲自来，晚上就和同学去了。就在自动化所，挺方便的。看来自动化所的自由软件活动还是组织得好，这么大个北京，这么重要的party就在那里开了。遗憾的是没有准备好一个比较大的房间，大概去了有400人吧，好多站着的，后来也很热。&lt;br&gt;
很佩服Mark这样的人，技术牛，商业头脑也不差。今天在听讲的时候想到，Ubuntu对扩大Linux的市场真的是起到了非常重要的作用，作了相当大的贡献。而这些，要归功于Mark的最初投资，以及Canonical的商业运作模式。&lt;br&gt;
最初接触Linux时，只用Debian。因为学校大部分人都用Debian，另外校内就有一个Debian镜像，太方便了。最喜欢的就是Debian安装软件的简单，一个apt-get install命令就装好了，只要源中有这个软件包。也有同学用Redhat，配置简单，X自动装好，想要开发包也可以选。而我当时装Debian就比较痛苦，先装好基本系统，然后安装、配置X，又花好长时间来配置声卡。旁边需要有一台空闲的电脑，要看着屏幕敲命令。所以前阵子犹豫要不要装Ubuntu，主要就因为舍不得删除自己用心良苦配置好的Debian。&lt;br&gt;
要是知道Ubuntu用起来这么舒服，就不用心疼删除Debian了。几乎比安装Windows还简单──Windows的软件安装起来其实挺麻烦的──于是我把Windows删除了（最主要的原因是受不了Windows在“武装到牙齿”的情况下还三天两头被强奸）。Ubuntu继承了Debian优秀的atp包管理系统，并且使安装、配置变得简单。近来Ubuntu的镜像站越来越多，科大都做了镜像，更新越来越方便了。Ubuntu的社区也越来越繁荣，搜索Linux中遇到的问题，大部分结果都源自Ubuntu的用户。&lt;br&gt;
在party上Mark透露下一个Release可能会内置3D桌面，并使Windows下的流行游戏在Linux下也可以玩。估计后者还是基于wine吧。至于3D桌面，目前处于0.1.*阶段的beryl效果已经非常炫了，远比vista酷，且不需要vista那样变态的system requirements。Ubuntu应该会具有在桌面应用中与Windows抗衡的能力。&lt;/p&gt;</description>
    </item>
    <item>
      <title>换回国内的空间</title>
      <link>https://qingbo-net.pages.dev/archives/72/</link>
      <pubDate>Thu, 02 Nov 2006 15:19:40 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/72/</guid>
      <description>&lt;p&gt;经过一番辗转之后，终于又换回到国内的空间了，观察几天看看吧。&lt;br&gt;
原来那个空间被Ban掉了，现在服务器上的文件都不好取回来，还好数据库备份还是每天按时发到邮箱里。&lt;/p&gt;</description>
    </item>
    <item>
      <title>合唱，念课文，小学生</title>
      <link>https://qingbo-net.pages.dev/archives/71/</link>
      <pubDate>Wed, 25 Oct 2006 16:16:07 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/71/</guid>
      <description>&lt;p&gt;今天到系版上逛，发现又在搞大合唱比赛了。软件学院没本科生，只得研究僧们出马，哈哈。这里不也是么？两个地方是一脉相承的，连活动都没点新意。想我们上了四年大学，唱了三年合唱，也出力够多了。没办法，四年大学，从没有尝过做师兄的滋味，我们不上谁上？现在这里人手多了，也就不用我上了，这样最好，省得我把声音搞得不和谐。&lt;/p&gt;
&lt;p&gt;系版上有人说，好不容易从小学读到大学，今天一合唱，一举一动，仿佛又像是小学生了。&lt;/p&gt;
&lt;p&gt;我当时唱的时候倒不太有这种感觉。有点不愿意去，毕竟是觉得浪费时间。不过去了之后就跟着大家唱，张大嘴吼校歌。尤其是有时候有特别漂亮的女老师作指导，呵呵。唱歌也是一种休息，唱完了感觉脑子比较清新，在那里合唱不像去KTV，还得交钞票。合唱却又不像在KTV里那样争相表现自我，而是考验一个队伍的协作能力。当声音产生共鸣的时候，大家就都很高兴，自然地鼓起掌来，心中都有种成就感。当然了，我要想有成就感，就不要出声音，只要卖力地张大嘴就算作贡献了。大一唱完后看照片，大家都对我说，看你嘴张那么小！于是后来我就默默无闻地作贡献，不向别人炫耀了。&lt;/p&gt;
&lt;p&gt;说到小学生的感觉，最近倒是有件事值得提一下。这学期选修了一门论语研读──必须选一门人文或管理类的课。我每次坐倒数几排，戴了眼镜也看不太清楚，以为老师是个刚毕业的小年青，有次下课走到门口才发现已是中年人了。老师讲课不用PPT，都用粉笔在黑板上写，擦，写（教学就应该这样）。从来不坐椅子，不写字的时候就把手拄在讲桌上。不像自然辩证法，他也坐，我也坐，谁也看不见谁。且说上次课上看网络课本看得正有兴趣，隐约听得好像要念课文，心想不大可能吧，然后就听见前面响起了朗朗书声──是真的。我这人面上冷漠，内心其实感情很丰富。一时间，就开始感慨年华似水，青春易逝，呆呆地看着前面念书的同学，各种杂乱的思绪涌上心头。念完了，老师又起头，学生又跟着念一遍，真是一波还未平息，一波又来侵袭……呵呵，有一点点感觉而已，没这么严重:) 当然对这位老师我是比较尊重的。&lt;/p&gt;
&lt;p&gt;想起了小学时候念课文，那时音调都不对，意思也不懂，完全就是念经的。到了中学，早自习要早读，长身体的时候，总是觉得吃得少，尤其早晨跑完步已经浑身无力了，课堂里就是此起彼伏，蛙声一片，班主任老师在窗外徘徊时就鼓起气来。上大学以后，就再没读过课文。有时候看见同学在草坪上忘我地模仿李阳，还投之以敬佩加异样的目光。&lt;/p&gt;
&lt;p&gt;我们都长大了，不再想那些小学生的事情了。可是回头看时仍然觉得，还是做小学生最好啊。&lt;/p&gt;</description>
    </item>
    <item>
      <title>XGL disabled</title>
      <link>https://qingbo-net.pages.dev/archives/70/</link>
      <pubDate>Mon, 23 Oct 2006 08:20:33 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/70/</guid>
      <description>&lt;p&gt;Beryl project is still on its heavy development phase and the application is not quite stable.&lt;/p&gt;
&lt;p&gt;After the installation, I found that Shift+Backspace just restart the X server. It’s quite often that I press the Shift key when typing uppercase letters but still holding it when I want to delete something. So my works not saved all were gone&lt;/p&gt;
&lt;p&gt;Another issue is that the nvidia driver can’t enable direct rendering when running XGL. The glxgears can’t run smoothly.&lt;/p&gt;</description>
    </item>
    <item>
      <title>或者，还是</title>
      <link>https://qingbo-net.pages.dev/archives/69/</link>
      <pubDate>Fri, 20 Oct 2006 10:26:30 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/69/</guid>
      <description>&lt;p&gt;昨天上完课坐电梯下楼，里面两个老外在讨论“或者”和“还是”两个词的用法。电梯到一楼的时候，一个得出结论说“差不脱”。似乎他一直在问我们，呵呵，只是由于文化不同，他只是眼睛看着我们，语调也没什么表示。出楼梯后跟他说，“还是“一般用来问问题。&lt;/p&gt;
&lt;p&gt;看来他们学中文跟我们学英文一样，容易把一些显而易见的东西混淆。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu, XGL</title>
      <link>https://qingbo-net.pages.dev/archives/68/</link>
      <pubDate>Wed, 18 Oct 2006 10:06:29 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/68/</guid>
      <description>&lt;p&gt;前几天把老旧的debian删除，刻了个Ubuntu 6.06(LTS)的光盘。发现Ubuntu安装很简单，先从光盘启动，然后在这个live系统中把Ubuntu安装到硬盘上。安装完成之后，声卡、显卡都不用配置，直接可以进入图形界面，结束了在字符界面下看着另一台电脑敲命令安装X的时候。同时它有具有Debian更新方便的优点，难怪这么有前途。&lt;/p&gt;
&lt;p&gt;装好系统配好中文后迫不及待地安装了期待已久的XGL，还算比较顺利。下面是一张截图：&lt;/p&gt;
&lt;p&gt;&lt;a target=&#34;_blank&#34; href=&#34;http://www.qingbo.org/wp-content/uploads/2006/10/screenshot.png&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;128&#34; height=&#34;96&#34; border=&#34;2&#34; align=&#34;left&#34; style=&#34;padding: 5px; margin-right: 5px;&#34; alt=&#34;XGL&#34; src=&#34;http://www.qingbo.org/wp-content/uploads/2006/10/screenshot.thumbnail.png&#34; /&gt;&lt;/a&gt;现在还不知道Linux里录像有什么很好的解决方案，可能是开一个VNC Server，然后在Windows中用软件连接并录像吧。vnc2swf只能保存成flash也不太爽。下面的录像我是用xvidcap做的，它本来是有每秒若干帧截图的功能（不编码成视频），这样可能丢失的帧会少点，然后用mencoder编码。不过每次这样调用的时候都得到Segmentation Fault，遂作罢。&lt;/p&gt;
&lt;p&gt;丢帧好像有75%，将就着看吧。&lt;/p&gt;
&lt;div&gt;
&lt;/div&gt;</description>
    </item>
    <item>
      <title>Emacs里用emms放音乐</title>
      <link>https://qingbo-net.pages.dev/archives/67/</link>
      <pubDate>Tue, 17 Oct 2006 03:32:08 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/67/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.gnu.org/software/emms/&#34;&gt;http://www.gnu.org/software/emms/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;可以一边编程一边听音乐，不用切换窗口，设置Emacs的快捷键就可以控制播放器了。也不用再考虑xmms的乱码问题了，爽。&lt;/p&gt;
&lt;p&gt;还用了&lt;a href=&#34;http://learn.tsinghua.edu.cn:8080/2005211356/&#34;&gt;happierbee&lt;/a&gt;写的&lt;a href=&#34;http://learn.tsinghua.edu.cn:8080/2005211356/emacs/ScrolledModeline.html&#34;&gt;扩展&lt;/a&gt;，用于在mode-line上滚动正在播放歌曲的信息。本来emms也可以显示now playing，不过占满了mini-buffer，不太好。&lt;/p&gt;
&lt;p&gt;现在这个服务器FTP太慢了，图片都上传不了，唉。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google买下YouTube</title>
      <link>https://qingbo-net.pages.dev/archives/66/</link>
      <pubDate>Tue, 10 Oct 2006 18:26:34 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/66/</guid>
      <description>&lt;p&gt;看这两个人有多兴奋，哈哈。&lt;/p&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;p&gt;这是该视频的&lt;a href=&#34;http://youtube.com/watch?v=QCVxQ_3Ejkg&#34;&gt;URL&lt;/a&gt;，related videos里有好几个Re: A Message From Chat and Steve，比较有趣。&lt;/p&gt;</description>
    </item>
    <item>
      <title>一些更新</title>
      <link>https://qingbo-net.pages.dev/archives/65/</link>
      <pubDate>Sat, 07 Oct 2006 15:51:23 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/65/</guid>
      <description>&lt;p&gt;我的网站：用上了Gravatar，留言时候有大头贴了。&lt;/p&gt;
&lt;p&gt;Paged Threaded Plugin：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PHP5对array_merge函数有所修改，参数必须是array类型，于是插件在PHP5环境中就有问题。把参数做个强制类型转换就好了。&lt;/li&gt;
&lt;li&gt;原来要回复某个留言，点了&amp;quot;reply to this comment&amp;quot;之后，被回复的留言前面的加号就一直保持不变，今天终于知道是怎么回事了，修正了相关的Javascript。&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>喷涌的小泉水</title>
      <link>https://qingbo-net.pages.dev/archives/64/</link>
      <pubDate>Sat, 07 Oct 2006 09:40:43 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/64/</guid>
      <description>&lt;p&gt;我们村旁边的泉水，汇合起来挺大的，水温很低，脚伸进去过一会就不能忍受。&lt;/p&gt;
&lt;p&gt;这是一段小电影：&lt;/p&gt;
&lt;div&gt;
  &lt;/p&gt; 
  &lt;p&gt;
    &amp;nbsp;
  &lt;/p&gt;
&lt;/div&gt;</description>
    </item>
    <item>
      <title>Firefox显示本机IP(Javascript)</title>
      <link>https://qingbo-net.pages.dev/archives/63/</link>
      <pubDate>Thu, 05 Oct 2006 18:05:02 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/63/</guid>
      <description>&lt;p&gt;当初用马桶的时候记得有个插件可以在状态栏上显示本机IP的软件，需要看自己IP的话很方便，免除打开网络连接选项之麻烦。以前想在Firefox里找个这样的插件，可惜搜索不到。现在无聊想自己做，却发现已经有了这样功能的插件，这就省事了，呵呵。不过在这个过程中也学了一些东西，总结一下Javascript显示本机IP的方法（Firefox）：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;调用Java（Netscape Navigator系列）：
&lt;pre&gt;var localhost = java.net.InetAddress.getLocalHost();
var hostname = localhost.getHostName();
var hostIP = localhost.getHostAddress();&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;一执行这个代码，系统就多了个javaw进程，不太爽，而且还要求安装Java虚拟机。 &lt;/li&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;向远程服务器请求（适合于任何浏览器）：这种办法最容易想到了，许多网站在用户浏览时都会给出用户机的IP地址，所以只要向一个提供这种服务的Web服务器发送个请求并分析返回页面就可以了。缺点是，需要与服务器交流，服务器地址变动或者停止服务都会出问题。 自己做一个这样的页面也很简单，下面有两个地址是从&lt;a href=&#34;https://addons.mozilla.org/firefox/1731/&#34;&gt;Live IP Address&lt;/a&gt;插件中找到的：
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://filezilla.sourceforge.net/misc/ip.php&#34;&gt;http://filezilla.sourceforge.net/misc/ip.php&lt;/a&gt;仅返回一个IP地址而没有任何其它东西。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.showmyip.com/xml/&#34;&gt;http://www.showmyip.com/xml/&lt;/a&gt;返回一个XML文档，也很容易得到IP地址。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Mozilla软件本身的服务：从&lt;a href=&#34;http://addons.mozine.org/firefox/196/&#34;&gt;Show IP&lt;/a&gt;插件里看到这样的方法，应该算是最好的解决方案了。
&lt;pre&gt;cls = Components.classes[&#39;@mozilla.org/network/dns-service;1&#39;];
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;iface = Components.interfaces.nsIDNSService;
dns = cls.getService(iface);
a = new Array();
try {
var nsrecord = dns.resolve(dns.myHostName, true);
while (nsrecord.hasMore()) {
a[a.length] = nsrecord.getNextAddrAsString();
}
} catch (e) { }
localip = a.join(&amp;quot; | &amp;ldquo;);&lt;/pre&gt;&lt;/ol&gt;&lt;/p&gt;
&lt;p&gt;先就用Show IP了，不过它不像Live IP Address那么简洁，用不了那么多功能。&lt;/p&gt;</description>
    </item>
    <item>
      <title>替换Gmail的链接栏</title>
      <link>https://qingbo-net.pages.dev/archives/62/</link>
      <pubDate>Wed, 04 Oct 2006 13:23:48 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/62/</guid>
      <description>&lt;p&gt;为Firefox写了一个简单的user script，用于替换Gmail左上角链接栏，效果如下：&lt;/p&gt;&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;413&#34; height=&#34;22&#34; src=&#34;http://www.qingbo.org/blog/wp-content/uploads/2006/10/gmail.png&#34; alt=&#34;gmail&#34; /&gt; 
&lt;p&gt;主要是原来链接栏里各个链接都有id，用document.getElementById就找到了，再找其parentNode，把innerHTML替换就可以了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.qingbo.org/blog/wp-content/uploads/2006/10/link_bar.user.js&#34;&gt;这里是源代码&lt;/a&gt;。想用的话，把替换文本换成自己合适的就行。&lt;/p&gt;
&lt;p&gt;先安装&lt;a href=&#34;http://greasemonkey.mozdev.org/&#34;&gt;GreaseMonkey&lt;/a&gt;，然后点击上面用户代码的链接，就会提示安装。&lt;/p&gt;</description>
    </item>
    <item>
      <title>熬夜搬家</title>
      <link>https://qingbo-net.pages.dev/archives/61/</link>
      <pubDate>Fri, 29 Sep 2006 19:39:51 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/61/</guid>
      <description>&lt;p&gt;不想再在21Windows的服务器上忍受下去了，于是熬夜搬到了国外这个服务器上，免费一年，不知道将来速度怎么样。现在访问就是在国外的服务器上了，呵呵。&lt;/p&gt;
&lt;p&gt;Akismet可以正常使用，mail函数也正常，真好。&lt;/p&gt;
&lt;p&gt;促使我搬的主要原因是下午一个朋友和我说留言时被Ban了，唉，这该死的Bad behavior，我就知道会发生这种事情的。&lt;/p&gt;
&lt;p&gt;也不一定就在这个服务器上了，免费的还是不大可靠。有朋友说可以给我空间，明天看看，好的话再搬一次。今天搬的时候经历了一些小挫折，以后就知道怎么解决了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>百度超级搜霸</title>
      <link>https://qingbo-net.pages.dev/archives/60/</link>
      <pubDate>Fri, 29 Sep 2006 07:19:54 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/60/</guid>
      <description>&lt;p&gt;看这条新闻：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://finance.ce.cn/rolling/200609/27/t20060927_8751157.shtml&#34;&gt;http://finance.ce.cn/rolling/200609/27/t20060927_8751157.shtml&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;文章先用激动人心的语气描述了百度这款“新”产品的特性，然后花了大部分篇幅鼓吹百度对开源领域的关注，以及为网民服务的宗旨（同时还拥有上网伴侣的贴心功能，就体现了这一点）。&lt;/p&gt;
&lt;p&gt;同时打开&lt;a href=&#34;http://www.google.com/tools/firefox/toolbar/index.html&#34;&gt;Google Toolbar&lt;/a&gt;和&lt;a href=&#34;http://bar.baidu.com/sobar/firefox/promotion.html&#34;&gt;百度超级搜霸&lt;/a&gt;的网页，比较一下？似乎从Google Toolbar页面的右上角下拉列表中的English改为中文（简体）就是搜霸了，不禁赞叹百度的学习能力，就连截图中画的圈的颜色、形状都没有任何差别，工具栏的布局也完全一致。&lt;/p&gt;
&lt;p&gt;在这个工具栏上，百度唯一有新意的就是名字——超级搜霸。这是何等的自信，何等的响亮。太响亮了，看见这个霸字，我就退却三分，不敢用了。恰如其分的形容就是“恶俗”。&lt;/p&gt;
&lt;p&gt;其实百度也是不错的，大部分人也认为它的中文分词比Google要好。不过看一个企业更要看它的品质，从早期百度的卑鄙竞争开始，到最近封杀Google广告客户（现在搜索这条新闻，Google没有相关结果，只是最后写着：根据当地法律法规……），百度早已让许多人产生了敌意。于是我就骂它一骂，呵呵。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google Reader的新版</title>
      <link>https://qingbo-net.pages.dev/archives/59/</link>
      <pubDate>Fri, 29 Sep 2006 06:24:37 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/59/</guid>
      <description>&lt;p&gt;Google Reader很久之前就出来了，不过一直似乎很少人用。确实，以前的界面让人觉得无所适从，大部分人订阅RSS还是用其它的在线RSS Reader如Bloglines，zhuaxia等等。&lt;/p&gt;
&lt;p&gt;今天看到Google Reader改版了：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://googlereader.blogspot.com/2006/09/something-looks-different.html&#34;&gt;http://googlereader.blogspot.com/2006/09/something-looks-different.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;上去试了一下，感觉好多了。Google不得不放弃它之前的“创新”，向在线RSS Reader的普遍模式靠拢了一下：左边分类Feed列表，右边为阅读栏。&lt;/p&gt;
&lt;p&gt;不过Google还有一些比较让人兴奋的特性，如阅读窗口使用Expanded View时滚动到某个Item上时才把它标为Read，而不是打开一个Feed就全标为Read。&lt;/p&gt;
&lt;p&gt;另外Feed Item比较多时Reader加载也比较智能，向下滚动窗口到底部时才加载后面20个，这样不会在刚打开时造成很大的停顿。&lt;/p&gt;
&lt;p&gt;Google Reader还提供了把clip添加到个人站点或Blog的功能，只需复制一段代码即可。&lt;/p&gt;
&lt;p&gt;试用中。。。&lt;/p&gt;</description>
    </item>
    <item>
      <title>虚拟主机</title>
      <link>https://qingbo-net.pages.dev/archives/58/</link>
      <pubDate>Thu, 28 Sep 2006 16:04:52 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/58/</guid>
      <description>&lt;p&gt;找了好久觉得21Windows还可以，后来封了mail函数，我用PHPMailer插件发邮件通知。最近又很莫名其妙地不能用fsockopen连akismet.com，而其它网站正常。问客服，态度还可以，不过一点技术都不懂，帮我去问技术人员，说技术人员让我在后台的程序里提问。免了，我把Akismet换成Bad behavior，省得麻烦。&lt;/p&gt;
&lt;p&gt;看到国外如bluehost.com之类的空间提供商真的很眼馋，想做什么都可以。价格$6.95/mo，对欧美来说是没什么问题，可对我这样的穷人就算不小的开支了。国内恐怕没有这么好的服务，同等规模的，价格也很高。&lt;/p&gt;
&lt;p&gt;难道国内就没有一个像样的吗？在国内如果有像bluehost那样的hosting service，恐怕要收人民币10000/y。也从来没有听说过哪个主机服务商有好评的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>James Gosling</title>
      <link>https://qingbo-net.pages.dev/archives/57/</link>
      <pubDate>Wed, 27 Sep 2006 16:44:37 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/57/</guid>
      <description>&lt;p&gt;今天参加了Sun的大学技术日活动，就在教学楼里，挺方便的。在那里终于见到了传说中的Java之父，James Gosling，一看就是大牛，不管从个头上来说还是技术上：）&lt;/p&gt;
&lt;p&gt;首先是Gosling的演讲，主题是“Java now and future”，接下来是Sun其他几位职员，期间展示了他们的新技术与产品，包括很酷的OpenSolaris 3D桌面。用一个小传感器（感知手的动作）通过无线电控制一辆小车，还有像手套一样的东西来代替鼠标在3D桌面上进行操作，让所有在场的人惊叹不已。&lt;/p&gt;
&lt;p&gt;一位中国职员出了一些“Java Puzzle”来让观众赢取奖品，看似简单，很少人能答对。我蒙对一题，很惭愧地拿走一本NetBeans的书，本来对Java就是一知半解。最后的iPod Shuffle是通过才艺表演决出的。。。&lt;/p&gt;
&lt;p&gt;我们去的时候已经没有座位了，只有前面几个位子摆了水杯，给Sun职员留的。不过后来他们把杯子拿走了，然后一位外国人示意我们去做。演讲开始后他们就坐在我们前面的地上，和其他同学一样，真是不好意思。&lt;/p&gt;
&lt;p&gt;Gosling讲到Java的性能时说&amp;quot;Generally beats or equals to C/C++“，这个可能有点虚吧？至少是在拥有较大的内存和较强CPU的情况下，我想。&lt;/p&gt;
&lt;p&gt;回来后订阅了James Gosling的Blog，发现他最近一篇中也提到了现在的中国之旅，以后多关注一下他的Blog，这里肯定是Java发展的信息之源，呵呵。&lt;/p&gt;
&lt;p&gt;发现了参与今天活动的Sun职员之一的Blog：），这是他写的相关日志：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.qyjohn.net/?p=282&#34;&gt;http://www.qyjohn.net/?p=282&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;本来没想能得到小Duke，最后走的时候这位职员刚好扔一只到我脚下，就捡了起来&lt;img decoding=&#34;async&#34; src=&#34;https://qingbo-net.pages.dev/blog/wp-content/plugins/editormonkey/fckeditor/editor/images/smiley/msn/wink_smile.gif&#34; /&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>可试用90天的NOD32序列号</title>
      <link>https://qingbo-net.pages.dev/archives/56/</link>
      <pubDate>Tue, 26 Sep 2006 14:45:08 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/56/</guid>
      <description>&lt;p&gt;NOD32是一款非常出名的杀毒软件，最让人高兴的是它不会影响机器的性能，不像Norton之流，不把系统拖垮誓不罢休。它几乎每天都更新，比如今天竟然更新了三次。。。不过最让人郁闷的是它的key不太好找，而且找到以后用的人太多马上被ban，所以很多人（像我这样的穷人）都放弃了。杀毒软件最重要的还是更新要快，想更新的时候却找不到可用的u/p真是郁闷，前些天中了TrojanDownloader.Delf.AWY木马，把整个E盘的可执行文件都感染了才发现，就因为更新得太晚了。&lt;/p&gt;
&lt;p&gt;不过现在NOD32台湾的网站上正在搞一个活动，可以提供90天试用的u/p：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.nod32tw.com/beta&#34;&gt;http://www.nod32tw.com/beta&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>del.icio.us与Firefox</title>
      <link>https://qingbo-net.pages.dev/archives/55/</link>
      <pubDate>Tue, 26 Sep 2006 13:52:56 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/55/</guid>
      <description>&lt;p&gt;del.icio.us是个保存书签的好地方，看到有用的网址我就喜欢把它保存到这个网站上，这样不会把浏览器的Bookmarks菜单弄得太大，而且系统出了问题也不用担心把Bookmark给丢了。&lt;/p&gt;
&lt;p&gt;前几天还原系统后装了Firefox 2.0b2，但是del.icio.us的Firefox插件限制最高版本1.5.0.*，这就不能装了。把插件中的install.rdf解出来，改了最大限制，重新放进去，安装时Firefox报什么不能验证Signing的错误。当时以为Firefox的插件有什么特殊的Signing机制防修改呢:) 无奈之下把那个Bookmark this的链接拉进了收藏菜单，虽然用着很不爽。&lt;/p&gt;
&lt;p&gt;今天有空搜了一下网上，也没看到Firefox插件Signing的介绍，很郁闷。看了一个写插件的Howto，也没有这种机制。于是把插件文件全部解开，修改install.rdf后重新打包。。。这次好了，奇怪，不知道跟只解一个文件再添加有什么区别。不管它了，反正现在工具栏上又出现熟悉的Tag this按钮，保存书签又方便了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>终于清理了CNNIC</title>
      <link>https://qingbo-net.pages.dev/archives/54/</link>
      <pubDate>Sat, 16 Sep 2006 16:14:23 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/54/</guid>
      <description>&lt;p&gt;不知道为什么最近老中毒，更常中流氓软件的招。在科大我防火墙和杀毒软件都不开，裸奔半年没出任何问题啊&lt;img decoding=&#34;async&#34; src=&#34;https://qingbo-net.pages.dev/blog/wp-content/plugins/editormonkey/fckeditor/editor/images/smiley/msn/regular_smile.gif&#34; /&gt;。&lt;/p&gt;
&lt;p&gt;比较难杀的是CNNIC。来这里发现CNNIC就在我们旁边&lt;img decoding=&#34;async&#34; src=&#34;https://qingbo-net.pages.dev/blog/wp-content/plugins/editormonkey/fckeditor/editor/images/smiley/msn/embaressed_smile.gif&#34; /&gt;，难怪这么牛，倚托了雄厚的科研力量啊！不过这些科研力量干正事不一定行，呵呵。&lt;/p&gt;
&lt;p&gt;CNNIC软件说得可谓冠冕堂皇，在添加/删除程序中卸载即可，可惜每次重启后又装上了就。刚才找到一个软件叫“完美卸载”，把它除掉了，不知道彻底不彻底，反正现在开机后清静多了，没有那个cdnup进程了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>65年的人民币</title>
      <link>https://qingbo-net.pages.dev/archives/53/</link>
      <pubDate>Sat, 09 Sep 2006 06:13:19 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/53/</guid>
      <description>&lt;p&gt;发现家里还有这样一张10元面值的old人民币：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/view?id=ff8080810d8842c3010d912bbb9127d3&#34; title=&#34;做全球中文领域最大的照片发布、存储、分享及传播社区&#34;&gt;&lt;img decoding=&#34;async&#34; border=&#34;0&#34; src=&#34;http://photo7.yupoo.com/20060909/140244_1850221959.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;反面：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/view?id=ff8080810d8842c3010d912bbfaa27d4&#34; title=&#34;做全球中文领域最大的照片发布、存储、分享及传播社区&#34;&gt;&lt;img decoding=&#34;async&#34; border=&#34;0&#34; src=&#34;http://photo7.yupoo.com/20060909/140245_1458269294.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;呵呵&lt;/p&gt;</description>
    </item>
    <item>
      <title>失事的小鸟</title>
      <link>https://qingbo-net.pages.dev/archives/52/</link>
      <pubDate>Sat, 09 Sep 2006 06:09:49 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/52/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/photos/view?id=ff8080810d8842c3010d912bb76e27d2&#34; title=&#34;做全球中文领域最大的照片发布、存储、分享及传播社区&#34;&gt;&lt;img decoding=&#34;async&#34; border=&#34;0&#34; align=&#34;right&#34; src=&#34;http://photo7.yupoo.com/20060909/140243_230818523_m.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;暑假里7月22日，我和弟弟在院子里坐着的时候，突然听到呯的一声，一只小鸟就在地上转着圈挣扎。原来它是不小心撞到我家玻璃上掉下来了。&lt;/p&gt;
&lt;p&gt;捡起来的时候，它的头是歪的，眼睛不能睁开，嘴也合不上了。我也曾有过类似的经历，撞过大树，篮球架子，每次都很受伤。看到这样一只小鸟，自然有点同病相怜的感觉。&lt;/p&gt;
&lt;p&gt;本来认为它要死了，后来它却在我们不注意的时候飞走了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>不如去工作？</title>
      <link>https://qingbo-net.pages.dev/archives/51/</link>
      <pubDate>Sat, 09 Sep 2006 05:51:59 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/51/</guid>
      <description>&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;p&gt;学校好像是个舒适的棺材，我正在里面慢慢地腐烂。。。&lt;/p&gt;</description>
    </item>
    <item>
      <title>改变中文默认输入法</title>
      <link>https://qingbo-net.pages.dev/archives/50/</link>
      <pubDate>Wed, 06 Sep 2006 23:42:13 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/50/</guid>
      <description>&lt;p&gt;我比较喜欢用极点输入法，因为习惯了五笔。一般情况下我只添加这一个中文输入法，不过有同学用我机器时就要添加微软拼音输入法。比较郁闷的是一加了MSPY，它就变成默认中文输入法了，不管怎样调整添加的顺序。&lt;/p&gt;
&lt;p&gt;昨天终于在网上找到了一篇文章&lt;a href=&#34;http://wy.cnii.com.cn/20040315/ca262709.htm&#34;&gt;《输入法顺序调整DIY》&lt;/a&gt;，用修改注册表的办法改变了默认中文输入法。&lt;/p&gt;
&lt;p&gt;这下好了，不用每次同学用完了再删除MSPY了，呵呵。&lt;/p&gt;</description>
    </item>
    <item>
      <title>回来了</title>
      <link>https://qingbo-net.pages.dev/archives/49/</link>
      <pubDate>Wed, 06 Sep 2006 11:39:59 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/49/</guid>
      <description>&lt;p&gt;终于在北京这边安顿好了，宿舍住着还舒服。&lt;/p&gt;
&lt;p&gt;电脑搬回来了，网络也通了，英语分级考试刚考完，过几天回所里看看，下周开课。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Leaving for the summer</title>
      <link>https://qingbo-net.pages.dev/archives/48/</link>
      <pubDate>Wed, 21 Jun 2006 10:01:13 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/48/</guid>
      <description>&lt;p&gt;After finishing the trivial things of graduating, I’m now preparing for the summer vacation.&lt;/p&gt;
&lt;p&gt;Probably this is the last long summer recess for me. On 28th this month, my girl friend will come to Hefei. Together we’ll go to her hometown in Guangdong and maybe we’ll have a good time on the beach. Then I’ll go back home to spend the rest.&lt;/p&gt;
&lt;p&gt;Tomorrow I’ll send my computer to Beijing, for I will have graduate education there after the vacation. I’ll register at the graduate school on 3rd, Sep., and during this period, I’ll have little chance to update my blog or answer the emails.&lt;/p&gt;</description>
    </item>
    <item>
      <title>我的困惑</title>
      <link>https://qingbo-net.pages.dev/archives/47/</link>
      <pubDate>Thu, 15 Jun 2006 17:42:02 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/47/</guid>
      <description>&lt;p&gt;日子过得很累，但仔细想时却没有什么收获。&lt;/p&gt;
&lt;p&gt;有朋友问我将来想做什么工作，我想应该是做喜欢的工作，感兴趣的，最好能按照自己的意愿去做。&lt;/p&gt;
&lt;p&gt;然而我有这样的能力吗？至少现在不行。他问我会哪些编程语言。我知道的不少啊，C、C++、Java……可是哪一种语言我敢说会呢，如果让我开发一个实际的东西，单靠自己是肯定不能胜任的。课程项目是做过不少，可惜它们与应用差得太远。&lt;/p&gt;
&lt;p&gt;越来越感觉到自己在能力、技术和思维方式上与人的差距。浮躁的心态，偷懒的情绪，我都有。想做感兴趣的东西却不愿去用吃苦来换取成就感。我说我工作不努力，因为花不少时间来玩；人家说工作不努力，因为每天有半天时间来做自己感兴趣的项目。又要上研究生了，可能会变得更加懒惰或贪玩吧？国内的研究生不过是廉价的劳动力，能有多少符合自己兴趣的东西来给自己做？&lt;/p&gt;
&lt;p&gt;将来，我不想做一个只会在实验室里埋头研究的书呆子。把好的想法做成产品，提供给人们，不是更好吗？身为社会的一分子，这样所得的成就感是最强的。&lt;/p&gt;
&lt;p&gt;天生不爱学习，喜欢享乐的人，需要不断的反省。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Social Networks: Future Portal Or Fad?</title>
      <link>https://qingbo-net.pages.dev/archives/46/</link>
      <pubDate>Thu, 15 Jun 2006 17:06:17 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/46/</guid>
      <description>&lt;p&gt;该文提出了社会化网络如MySpace、FaceBook的两个方向：持续流行，或者像AOL一样淡出。&lt;/p&gt;
&lt;p&gt;Social networks like MySpace and Facebook are the zeitgeist for online executives and investors, just as they are for millions of young people. &lt;a href=&#34;http://news.com.com/Social+networks-future+portal+or+fad/2100-1038_3-6083546.html?tag=nefd.lede&#34;&gt;read more&lt;/a&gt; | &lt;a href=&#34;http://digg.com/technology/Social_Networks:_Future_Portal_Or_Fad_&#34;&gt;digg story&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>WordPress插件：Clean Archives Reloaded</title>
      <link>https://qingbo-net.pages.dev/archives/45/</link>
      <pubDate>Tue, 13 Jun 2006 13:49:47 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/45/</guid>
      <description>&lt;p&gt;今天发现了Viper007Bond上的新插件，&lt;a href=&#34;http://www.viper007bond.com/wordpress-plugins/clean-archives-reloaded/&#34;&gt;Clean Archives Reloaded&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;摘自Viper007Bond：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The main code in this plugin was originally written by Sebastian Schmieg for the archive page of his “Blix” theme.&lt;/p&gt;
&lt;p&gt;The code was later converted to a plugin by Shawn Grimes.&lt;/p&gt;
&lt;p&gt;The drawback of both of these versions though was the sheer number of queries required (around 1 per month + 2 per post — it added up quick). So, I decided to make it cache the output so that it was only regenerated when needed and otherwise just pulled with 1 query from the database. I was also given the idea by Chris O’Rourke to use moo.fx to make the months collapsable as many people’s archives pages were getting rather long.&lt;/p&gt;</description>
    </item>
    <item>
      <title>几个Google Analytics邀请码</title>
      <link>https://qingbo-net.pages.dev/archives/44/</link>
      <pubDate>Mon, 12 Jun 2006 10:44:44 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/44/</guid>
      <description>&lt;p&gt;前阵子申请的时候填了好多信箱，结果也收到好多：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;NUXL-KUG4K-DEBA&lt;/li&gt;
&lt;li&gt;5NEG-JIA2W-KW7I&lt;/li&gt;
&lt;li&gt;GQUA-R7LFB-JM64&lt;/li&gt;
&lt;li&gt;CRUQ-6WIYI-34YQ&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;用法到&lt;a href=&#34;http://www.google.com/analytics/home&#34;&gt;http://www.google.com/analytics/home&lt;/a&gt;去看。&lt;/p&gt;
&lt;p&gt;使用一个邀请码后，请留言说明用了哪个，谢谢。&lt;/p&gt;
&lt;p&gt;另外，Google Analytics的邀请只能由Google发，而Analytics的用户没有发邀请的权限，所以这里的邀请码用完之后，请到Google那里自己申请，一般几周内可以收到邀请。&lt;/p&gt;</description>
    </item>
    <item>
      <title>可悲的软件学院</title>
      <link>https://qingbo-net.pages.dev/archives/43/</link>
      <pubDate>Fri, 09 Jun 2006 15:52:50 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/43/</guid>
      <description>&lt;p&gt;软件学院最近要办一个英语演讲比赛，系版上发出了通知。一位一向言辞犀利的师兄回复说，为何不搞日语演讲比赛呢，更能体现软件学院的特色。看到这样的话，突然想把对软件学院的看法胡乱写下来，权作一个发泄吧。&lt;/p&gt;
&lt;p&gt;混了一年后，我从牛人如牛毛一样多的十系转到了软件学院。当时在十系确实比较郁闷，对将来的方向很迷茫，对专业不感兴趣。现在证明，十系也培养出了比我强的计算机牛人。看到软件学院的海报，突然就对它产生了兴趣。尤其是吹嘘的英语授课，很大程度上是这个吸引了我，因为我认为阅读英文的东西更有意思，而且，计算机界正在发生什么，只能通过英文的材料知道。&lt;/p&gt;
&lt;p&gt;在软院三年过完，中间一直是失望。不过一个好处是有较大的自由空间，可以学些自己喜欢的东西。班里只有二十几个人，也就经常享受着对研究生都是奢望的小班教学。可是我们的下一届就只有三个人有转系的愿望，班级没有成立，再往后，学院似乎也不张罗了，于是我们就一直没有尝过做师兄的滋味。&lt;/p&gt;
&lt;p&gt;倒是研究生办学运作得轰轰烈烈，每年都有郁闷的人来投奔软件学院，交上昂贵的学费，和读MBA差不多吧。似乎没有直接报名考的，多是调剂来的。每到招生季节，学院的领导老师忙得是不亦乐乎。&lt;/p&gt;
&lt;p&gt;最让人遗憾的是，软件学院一直在张罗着和微软、IBM、Oracle之类的巨头合作，当然，有许多牛师兄也去了那些地方。不过软件学院与他们谈不上合作，和日本的一些外包企业倒好上了。不可否认日本的计算机技术比中国发达得多，但这些公司多是做外包的。当然，日本的外包做得也非常好，管理经验值得借鉴。但我想中国软件业缺管理，更缺的或者是从根本上缺的是技术。&lt;/p&gt;
&lt;p&gt;软件学院彻底地搬到了南区（苏州也有根据地），而计算机方面的老师都在西区附近，南区主要是人文方面的学科，没有一个理想的环境，老师上课也不方便。听说以后想直接从高考招本科生，我的天，本科生在南区，不郁闷死才怪。&lt;/p&gt;
&lt;p&gt;不过，软件学院似乎有自己的老师了。中期检查时见到了两位，能力方面不说什么，师德（时髦话叫做人品）方面忍不住想说一下，仅指其中一位。报告的过程中不停地打断，弄得同学都不高兴，最后的结果是“我可以打断你，你不能打断我。下一个。” 另一位同学报告时他一直在啪啪地按PDA，中间出去接了个电话，同学讲完后，抬起头来，“你这个PPT的颜色，不大好啊”。&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;/p&gt;
&lt;p&gt;在软院过了三年，多交了些学费，对学院没有什么感情。当然同学之间的感情，没的说。终于要离开了，唯一值得怀念的就是这种异样的自由。&lt;/p&gt;
&lt;p&gt;&lt;font color=&#34;#ff0000&#34;&gt;该文请勿转载，谢谢。&lt;/font&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>网页聊天的前景与新浪的WooCall</title>
      <link>https://qingbo-net.pages.dev/archives/42/</link>
      <pubDate>Tue, 06 Jun 2006 12:00:57 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/42/</guid>
      <description>&lt;p&gt;最初接触互联网就是在新浪的聊天室里跟别人交流，我的QQ号也是在那里找人帮忙申请的。&lt;/p&gt;
&lt;p&gt;现在兴起了一种更新鲜的服务，即在任意一个网页或网站上为浏览者提供相互交流的机会。有一些做成了商业化的，如&lt;a href=&#34;http://BoldChat.com&#34;&gt;BoldChat&lt;/a&gt;，&lt;a href=&#34;http://Kayako.com&#34;&gt;Kayako&lt;/a&gt;，&lt;a href=&#34;http://LivePerson.com&#34;&gt;LivePerson&lt;/a&gt;等，它们为一些电子商务网站提供在购买网页上聊天的功能。这里只说说我最近所知道的几个免费的。&lt;/p&gt;
&lt;p&gt;它们都是为了让浏览某网站的网友实时聊天，寻找与自己有共同爱好的人，与他们交流对该网站的看法。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;http://www.chatsum.com/&#34;&gt;ChatSum&lt;/a&gt;：2006年1月推出，它的口号是“On the web, no one can hear you scream… Until now”。它目前只能在Firefox中使用，通过一个插件为Firefox增加一个侧栏。ChatSum需要注册才能使用，目前还不到2000用户，显然不能支撑下去。而它的网站首页右侧栏中有一项Most Active，列出聊天最活跃的站点，它们的聊天者数量都是1，很可笑。在它的主页上都找不到聊天的人。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.gabbly.com&#34;&gt;Gabbly&lt;/a&gt;：3月推出，有一个中文名字“盖不理”。它是匿名的，而且提供了许多工具，比如浏览器扩展、Blog扩展，还可以加到Google和live.com个人主页，提供了代码来嵌入任意的网页中，甚至有一个Gabbly浏览器，是基于Mozilla的。gabbly主页上一般有几十个人在聊天。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://itzle.com&#34;&gt;Itzle&lt;/a&gt;：最初看到它时感觉太有创意了，不是指网页聊天，这方面它不是开创者。主要是它提供了像虚拟世界一样的感觉，在网页上有你的一个形象和名字，可以进行修改。鼠标点一个地方时，你的个人形象就会走过去，而当点击一个链接时，链接会在你的形象走到那里之后才打开。这样别人就能知道你在看网页的哪一部分，或是“从哪里出去了”。让人尴尬的也是它的用户数量，在聊天栏查看popular site，结果是1 people at 1 websites，指的就是我了。另外，似乎它会使Firefox失去响应？也许是与TabMix的冲突，已经两次了。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Web2.0时代创意很重要，可是光有好的创意远远不够。这样的免费服务感觉没有什么前途，因为吸引用户的只是它们给人的新鲜感。最重要的是有一个庞大的用户群，而像这样的网页聊天要将用户分布在全世界无数的网站之上，有点不可能。即使是用户较多的Gabbly，也只能在它主页上聊聊。同时，站长们不太愿意把它放在自己的网站上做一个shoutbox来拖慢用户访问的速度，他们宁愿做成自己网站的服务，而访问者也不愿意在URL前面加上http://gabbly.com/来减慢页面加载。只是新鲜感而已。&lt;/p&gt;
&lt;p&gt;而如今，新浪&lt;a href=&#34;http://games.sina.com.cn/y/n/2006-06-01/1100153483.shtml&#34;&gt;推出了一个WooCall服务&lt;/a&gt;，Dict把它&lt;a href=&#34;http://mydict.blogsome.com/2006/06/06/gabbly/&#34;&gt;叫做“我靠”&lt;/a&gt;。新浪是善于模仿的，前几日keso在日志中指出它&lt;a href=&#34;http://blog.donews.com/keso/archive/2006/06/02/898693.aspx&#34;&gt;模仿了豆瓣&lt;/a&gt;。我想这次它的模仿也很成功，最起码，热门八卦新闻有足够的访问者来支持，而且每个访问者打开时都会看到聊天框，一般也乐于与人交流。&lt;/p&gt;
&lt;p&gt;新浪这个举动也可以说是不错的创意吧，把网页聊天与新闻结合？对原有新闻留言讨论方式的改进？我靠，用八卦新闻来维持生计的新浪也玩Web2.0。不过至少可以说新浪比较有头脑。&lt;/p&gt;
&lt;p&gt;不过，网页聊天似乎也没别的出路了。让大家都通过你的服务去上网，这需要多大的号召力？新闻门户自己开发了Ajax化的评论系统后，Gabbly之类的服务该喜还是该忧呢？&lt;/p&gt;</description>
    </item>
    <item>
      <title>关于Blog访问量</title>
      <link>https://qingbo-net.pages.dev/archives/41/</link>
      <pubDate>Tue, 06 Jun 2006 01:09:07 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/41/</guid>
      <description>&lt;p&gt;出于商业利益也好，或是为取得满足感也好，Blogger们都希望获得大的访问量。Blog已不再是Web Log这么简单，现在一大部分人写网络日志主要是为了让别人知道自己的观点，就自己的看法进行讨论。身为社会的一分子，每个人都渴望被关注，并且在关注他人的过程中寻找乐趣。&lt;/p&gt;
&lt;p&gt;最近Seth发表一篇日志，&lt;a href=&#34;http://sethgodin.typepad.com/seths_blog/2006/06/how_to_get_traf.html&#34;&gt;How to get traffic for your blog&lt;/a&gt;。其中第53点：用中文写Blog。他大概是看到了&lt;a href=&#34;http://blog.sina.com.cn/m/xujinglei&#34;&gt;徐静蕾的Blog&lt;/a&gt;在Technorati上排到了第一，但这并不能说明什么问题，主要的原因还是明星效应。她发一篇日志说手被水烫了，马上就有上千的留言来关心，换个普通人，可能吗？&lt;/p&gt;
&lt;p&gt;我还很遗憾Blog不能被不懂中文的用户访问呢。Blog要扩大影响，关键的是要有新意、有特色，既然没有脸可卖，那就卖点别的嘛。Seth文章里其它的观点都挺好的，比如写点Blogging的知识，用英文写等等，有需要的人应该读一下。&lt;/p&gt;
&lt;p&gt;啥叫特色，看看这几个老外的中文Blog：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.sinosplice.com/chinese/&#34;&gt;华结|超级老外&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a accesskey=&#34;1&#34; href=&#34;http://www.waze.net/laihua/&#34;&gt;来华干嘛&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.bokane.org/chinese/&#34;&gt;在北京找不着北&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Seth也许是这样的意思？不过他的例子实在不恰当。&lt;/p&gt;
&lt;p&gt;另外，关于我自己Blog的访问量提一句，申请到Google Analytics之后，发现主要的访问量竟来自&lt;a href=&#34;http://ddrr.org&#34;&gt;ddrr.org&lt;/a&gt;，比直接访问还多，呵呵。我不清楚ddrr的访问量是不是很大，不过至少说明图片链接比文字链接效果要好得多。我对访问量不是太敏感，人多了当然好，没人访问也没什么，反正目前没多大运营成本。&lt;/p&gt;</description>
    </item>
    <item>
      <title>WordPress中文文档翻译倡议</title>
      <link>https://qingbo-net.pages.dev/archives/40/</link>
      <pubDate>Sun, 04 Jun 2006 15:27:19 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/40/</guid>
      <description>&lt;p&gt;Zhang-Zi倡议广大WordPress中文用户把WP的文档翻译成中文，以方便大家。&lt;/p&gt;
&lt;p&gt;希望广大网友能够参与到这个项目中来，在让他人得到好处的同时，也锻炼自己的英文阅读能力，同时对WordPress有更深入的理解。&lt;/p&gt;
&lt;p&gt;倡议发表在&lt;a href=&#34;http://zhiqiang.org/blog/322.html&#34;&gt;http://zhiqiang.org/blog/322.html&lt;/a&gt;，有兴趣的快去看看。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pandora vs. Last.fm</title>
      <link>https://qingbo-net.pages.dev/archives/39/</link>
      <pubDate>Sat, 03 Jun 2006 20:26:57 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/39/</guid>
      <description>&lt;p&gt;目前有两个音乐推荐与分享的网络服务比较出名：Pandora与Last.fm。&lt;/p&gt;
&lt;p&gt;Pandora利用技术手段分析音乐的曲调与感情，只要输入一首曲子或者一个乐队的名字，它就为你推荐你可能喜欢的其它音乐。比如我输入“secret garden”，它首先播放一曲神秘园的音乐，接下来就搜索与之相近的曲子，我发现大部分都比较全我的口味，呵呵。在他们的Blog上写着有人把他们的服务用在音乐课上，让学生用它来找适合自己的音乐。团队中还有人在美国各地进行调查，听当地的音乐，与使用他们服务的人交流，可以说是一群有活力的艺术家。&lt;/p&gt;
&lt;p&gt;而Last.fm则是一个非常成功的社会性网络应用，它推荐的歌曲主要是通过用户的选择来推测的。并且它有许多服务例如tag, radio, group等，更注重用户之间的交流和相互影响，可能因此也比Pandora更受欢迎。&lt;/p&gt;
&lt;p&gt;二者都提供了代码让你把自己喜欢的或常听的音乐信息加到站点上，请到&lt;a href=&#34;http://www.qingbo.org/blog/?page_id=47&#34;&gt;我的音乐页面&lt;/a&gt;来看效果。&lt;/p&gt;
&lt;p&gt;我平常做事的时候也不太喜欢听音乐，听也多是在本机上听，因此对它们不是很熟悉。关于这两个有趣的服务，这里有一篇详细的描述与比较：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.stevekrause.org/steve_krause_blog/2006/01/pandora_and_las.html&#34;&gt;http://www.stevekrause.org/steve_krause_blog/2006/01/pandora_and_las.html&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>牯牛降第二日</title>
      <link>https://qingbo-net.pages.dev/archives/38/</link>
      <pubDate>Sat, 03 Jun 2006 06:44:13 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/38/</guid>
      <description>&lt;p&gt;第二天游玩的是一个大溶洞，以前也没玩过这类景点，感觉里面太大了，虽然有的地方很狭窄。里面的道路四通八达，空气也很潮湿。我们是从山脚的洞口进去的，之后出来的时候发现在半山腰，下岗的时候好累，才知道在洞里向上爬了很高的距离。里面的景色很单调，主要就是石钟乳，不过其形态又很多变。尽管没有什么好描述的，但比第一天玩得好多了。&lt;/p&gt;
&lt;p&gt;下面就贴一些照片，更多请到&lt;a href=&#34;http://qingbo.my.yupoo.com/&#34;&gt;我的Yupoo&lt;/a&gt;去看吧。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/view/662e443ba9564f5484c3e64a2f46a715&#34; title=&#34;pic 040&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;240&#34; height=&#34;180&#34; border=&#34;2&#34; align=&#34;left&#34; style=&#34;padding: 5px; margin-right: 5px;&#34; alt=&#34;pic 040&#34; src=&#34;http://photo7.yupoo.com/20060603/20060603125715_1044728669_m.jpg&#34; xxxxx=&#34;border: 1px solid #000000;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/view/397d32faf7294b70862afe56b239a532&#34; title=&#34;pic 052&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;240&#34; height=&#34;180&#34; alt=&#34;pic 052&#34; src=&#34;http://photo7.yupoo.com/20060603/20060603125715_1266551074_m.jpg&#34; xxxxx=&#34;border: 1px solid #000000;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/view/277a42b5105c44d2977d1b4938789b29&#34; title=&#34;pic 053&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;240&#34; height=&#34;180&#34; border=&#34;2&#34; align=&#34;left&#34; style=&#34;padding: 5px; margin-right: 5px;&#34; alt=&#34;pic 053&#34; src=&#34;http://photo7.yupoo.com/20060603/20060603125715_842975381_m.jpg&#34; xxxxx=&#34;border: 1px solid #000000;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/view/dca5dd43910646b2a55234a7c10db8a9&#34; title=&#34;pic 055&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;240&#34; height=&#34;180&#34; alt=&#34;pic 055&#34; src=&#34;http://photo7.yupoo.com/20060603/20060603125715_960418885_m.jpg&#34; xxxxx=&#34;border: 1px solid #000000;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/view/9bca89e3a3fd4c6b98b778a375f7f3a0&#34; title=&#34;pic 056&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;240&#34; height=&#34;180&#34; border=&#34;2&#34; align=&#34;left&#34; style=&#34;padding: 5px; margin-right: 5px;&#34; alt=&#34;pic 056&#34; src=&#34;http://photo7.yupoo.com/20060603/20060603125715_263887316_m.jpg&#34; xxxxx=&#34;border: 1px solid #000000;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/view/9e8551ecdf444180bbb50bd556c91bc0&#34; title=&#34;pic 068&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;240&#34; height=&#34;180&#34; alt=&#34;pic 068&#34; src=&#34;http://photo7.yupoo.com/20060603/20060603125715_1428396753_m.jpg&#34; xxxxx=&#34;border: 1px solid #000000;&#34; /&gt;&lt;/a&gt;&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;/p&gt;</description>
    </item>
    <item>
      <title>牯牛降第一日</title>
      <link>https://qingbo-net.pages.dev/archives/37/</link>
      <pubDate>Sat, 03 Jun 2006 06:17:37 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/37/</guid>
      <description>&lt;p&gt;论文终于交了，不管有没有大幅修改的危险，现在总算可以休息一下了。于是想把牯牛降那两天的见闻记下来，不过在埋头写了四天论文之后，只剩那些照片作为回忆，而景点的名字也几乎不能记起。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/view/19f8c4aa22db4785b65c8d7067024622&#34; title=&#34;qiupu&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;240&#34; height=&#34;180&#34; border=&#34;2&#34; align=&#34;right&#34; xxxxx=&#34;border: 1px solid #000000;&#34; src=&#34;http://photo7.yupoo.com/20060603/20060603134028_1429086534_m.jpg&#34; alt=&#34;qiupu&#34; style=&#34;padding: 5px; margin-left: 5px;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;第一天早上到了石台县，直奔漂流地点，秋浦河。这个地区的环境仍然非常好，河水很清澈，和我家乡十多年前的差不多。李白曾经作秋浦歌十七首，秋浦就是这条秋浦河。其中最著名的一首&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;白发三千丈，缘愁似个长。&lt;/p&gt;
&lt;p&gt;不知明镜里，何处得秋霜。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;大家应该都知道，里面的明镜指的就是秋浦河了。可惜的是一群理科生坐在筏子上，只有画意，没有诗情。&lt;/p&gt;
&lt;p&gt;吃过午饭，导游带我们到牯牛降去玩。说实在的，景点没什么看头，不过这里就是环境好，能体会到与自然的亲近，是修身养性的好地方。&lt;/p&gt;
&lt;p&gt;首先去的是一个什么潭，忘记名字了。看下面的照片你可以知道什么叫清澈见底。看起来水很浅，但是实际上是非常深的，只是太干净了。水边的峭壁上修建了栈道，方便游人观赏。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/view/79d9d84db05d4d4188be5c763f39beea&#34; title=&#34;pic 003&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;180&#34; height=&#34;240&#34; border=&#34;2&#34; align=&#34;left&#34; xxxxx=&#34;border: 1px solid #000000;&#34; src=&#34;http://photo7.yupoo.com/20060603/20060603125715_7447053_m.jpg&#34; alt=&#34;pic 003&#34; style=&#34;padding: 5px; margin-right: 5px;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/view/0b46218eb87047e9a46fb4fced076c3e&#34; title=&#34;pic 007&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;240&#34; height=&#34;180&#34; xxxxx=&#34;border: 1px solid #000000;&#34; src=&#34;http://photo7.yupoo.com/20060603/20060603125715_963990650_m.jpg&#34; alt=&#34;pic 007&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/view/4cd1df8e34d7406e92a522363ad735c3&#34; title=&#34;pic 004&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/view/978ff6d906694a87862e69d21090e95d&#34; title=&#34;pic 021&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;240&#34; height=&#34;180&#34; border=&#34;2&#34; align=&#34;left&#34; style=&#34;padding: 5px; margin-right: 5px;&#34; xxxxx=&#34;border: 1px solid #000000;&#34; src=&#34;http://photo7.yupoo.com/20060603/20060603125715_1633063232_m.jpg&#34; alt=&#34;pic 021&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/view/4cd1df8e34d7406e92a522363ad735c3&#34; title=&#34;pic 004&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;240&#34; height=&#34;180&#34; alt=&#34;pic 004&#34; src=&#34;http://photo7.yupoo.com/20060603/20060603125715_505098346_m.jpg&#34; xxxxx=&#34;border: 1px solid #000000;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;经过栈道向山谷内前行，还有摇晃不定的吊桥、年久的灌木和幽深的小径。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/view/cdb4788fd9604c2c8a18bb0e3b7ba4e4&#34; title=&#34;pic 010&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;240&#34; height=&#34;180&#34; border=&#34;2&#34; align=&#34;left&#34; xxxxx=&#34;border: 1px solid #000000;&#34; src=&#34;http://photo7.yupoo.com/20060603/20060603125715_201544878_m.jpg&#34; alt=&#34;pic 010&#34; style=&#34;padding: 5px; margin-right: 5px;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.yupoo.com/view/c13c248cf13540748b27662661280f19&#34; title=&#34;pic 014&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;240&#34; height=&#34;180&#34; xxxxx=&#34;border: 1px solid #000000;&#34; src=&#34;http://photo7.yupoo.com/20060603/20060603125715_1162924593_m.jpg&#34; alt=&#34;pic 014&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Paged Threaded Comments plugin update</title>
      <link>https://qingbo-net.pages.dev/archives/36/</link>
      <pubDate>Sat, 03 Jun 2006 02:41:58 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/36/</guid>
      <description>&lt;p&gt;前几天想到一个问题，如果把某个留言删除，它的回复怎么办呢？结果是回复没有从数据库中删除，但它们再也不会被显示了，这是因为列出留言时都是从comment_reply_ID为0即顶层的留言开始递归。 &lt;a href=&#34;http://meidell.dk/archives/2004/09/04/nested-comments&#34;&gt;Brian’s Threaded Comments&lt;/a&gt;和&lt;a href=&#34;http://www.keyvan.net/code/paged-comments/&#34;&gt;Keyvan’s Paged Comments Plugin&lt;/a&gt;似乎都没有考虑这个问题。&lt;/p&gt;
&lt;p&gt;WordPress文档中有一页&lt;a href=&#34;http://codex.wordpress.org/index.php?title=plugin_api&amp;amp;redirect=no&#34;&gt;plugin api&lt;/a&gt;，里面列出了delete_comment这个hook，正是我想要的。在源代码中看了一下，hook到它的函数是在从数据库删除留言之前被调用的，这也比较合理。于是写了一个函数repair_comment_reply_ID，取得要删除的留言的comment_reply_ID，并赋给所有comment_repley_ID为要删除comment_ID的留言。然后用add_action函数把它hook上去。&lt;/p&gt;
&lt;p&gt;现在的行为是删除留言后，其回复作为更上层的留言的回复出现（如果没有则作为顶层留言）。另外加了些代码来显示thread个数，即在留言区域上方显示“# comments in # threads”这样的信息。&lt;/p&gt;
&lt;p&gt;插件页面已更新：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;中文：&amp;lt;/blog/post26.html&amp;gt;&lt;/li&gt;
&lt;li&gt;English: &amp;lt;/blog/post25.html&amp;gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>WordPress Plugin: Trackback Validator Plugin</title>
      <link>https://qingbo-net.pages.dev/archives/35/</link>
      <pubDate>Fri, 02 Jun 2006 05:56:26 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/35/</guid>
      <description>&lt;p&gt;Blog在DoNews的时候，收到一些comment spam。如今换到自己的空间，comment spam不见了，全是trackback spam，实在想不出什么好的方法。&lt;/p&gt;
&lt;p&gt;今天在Blogging Pro上看到了Trackback Validator Plugin的介绍，感觉原理很简单，可能也比较有效吧。这是Rice的一些人研究的，目前只是看Trackback的发送者有没有在它页面上链接你的日志，插件有一个选项把trackback spam发送给他们以供研究，可能以后会根据语义判断，或者会像Akismet一样？&lt;/p&gt;
&lt;p&gt;插件主页在这里：&lt;a href=&#34;http://seclab.cs.rice.edu/proj/trackback/trackback-validator-plugin/&#34;&gt;Trackback Validator Plugin&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;去年就开始发布了，但似乎用的人不多，搜索出来的结果也不多。希望它能起到好的效果。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Firefox 1.5.0.4 Released</title>
      <link>https://qingbo-net.pages.dev/archives/34/</link>
      <pubDate>Fri, 02 Jun 2006 05:41:27 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/34/</guid>
      <description>&lt;p&gt;楼里的网络从昨晚断到现在才好，习惯了在网上生存的人。看到RSS了，看到邮件了，真是有一种久旱逢甘霖的感觉，不顾要交论文的压力，上Blog来透透气。&lt;/p&gt;
&lt;p&gt;打开Firefox不一会就说下载了1.5.0.4更新，询问是否重启。上mozilla.com一看，才知道已经是“昨日黄花”了。&lt;/p&gt;
&lt;p&gt;以下摘自&lt;a href=&#34;http://www.mozilla.com/firefox/releases/1.5.0.4.html&#34;&gt;http://www.mozilla.com/firefox/releases/1.5.0.4.html&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Firefox 1.5.0.4 is a security update that is part of our ongoing program to provide a safe Internet experience for our customers. We recommend that all users upgrade to this latest version.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improvements to product stability&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.mozilla.org/projects/security/known-vulnerabilities.html#firefox1.5.0.4&#34;&gt;Several security fixes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Release Date: June 1, 2006&lt;/p&gt;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>PHP mail(), Yahoo search</title>
      <link>https://qingbo-net.pages.dev/archives/33/</link>
      <pubDate>Sun, 28 May 2006 14:34:17 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/33/</guid>
      <description>&lt;p&gt;今天一回来就看我的Blog，发现mail函数还是不能发出邮件。想到空间商前几日因为有人狂发邮件而被封掉服务器，可能是阻止掉邮件了吧。再一次问空间商客服，告诉我果真如此。&lt;/p&gt;
&lt;p&gt;然后到wordpress.org去搜索mail，竟然发现没有结果返回，搜索什么都是这样。想起以前试过的&lt;a href=&#34;http://www.coffee2code.com/archives/2004/06/28/plugin-wpphpmailer/&#34;&gt;wp-phpMailer&lt;/a&gt;，装上竟然能用，21Windows还不错，没有禁掉太多的函数，就是希望他们的服务器挂的时候少一些。不过，它的邮件头还是有问题，中文乱码，听说数据库备份也不能正常发送，比较遗憾。&lt;/p&gt;
&lt;p&gt;刚才打开GreatNews，发现Matt在Blog上发了一篇日志，&lt;a href=&#34;http://photomatt.net/2006/05/27/yahoo-search/&#34;&gt;Yahoo Search Broken (again?)&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>紧急时刻，却要去旅游</title>
      <link>https://qingbo-net.pages.dev/archives/32/</link>
      <pubDate>Thu, 25 May 2006 09:22:11 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/32/</guid>
      <description>&lt;p&gt;昨天导师打电话给我，说实验室要去旅游，问我去不去。我说现在时间紧……“工作要照常做，也要散散心啊。”于是没多想就答应了。&lt;/p&gt;
&lt;p&gt;挂了电话就有点后悔了，答应得太仓促。现在感觉做得越来越没劲了，也许是快毕业的缘故。这个项目最有成就感的时候还是做出那个可以翻译简单语言的compiler。现在快到尽头了，而进度也越来越慢，最后还剩下个JFlex&amp;amp;CUP生成分析器的工作，争取明天完成吧。我没做完又不想开写，到现在连论文的格式都没看。而周一交过周报之后导师就发邮件告诉我月底要交稿了，现在又让我去玩，呵呵，我论文没动笔她是知道的。&lt;/p&gt;
&lt;p&gt;收到了出行计划，去皖南的牯牛降，估计还可以吧。只是名单上的人都是只见过几面，不如和自己朋友去的好，争取混熟一点吧，有个好心情，不然两天时间真的就浪费了。&lt;/p&gt;
&lt;p&gt;27、28两天，回来开始写论文吧。没想到快毕业的时候会这么烦。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Paged Threaded Comments 插件</title>
      <link>https://qingbo-net.pages.dev/archives/31/</link>
      <pubDate>Tue, 23 May 2006 04:17:34 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/31/</guid>
      <description>&lt;p&gt;English page: &amp;lt;/blog/post25.html&amp;gt;&lt;/p&gt;
&lt;p&gt;这个插件是&lt;a href=&#34;http://meidell.dk/archives/2004/09/04/nested-comments&#34;&gt;Brian’s Threaded Comments&lt;/a&gt;和Keyvan的&lt;a href=&#34;http://www.keyvan.net/code/paged-comments/&#34;&gt;WordPress Paged Comments Plugin&lt;/a&gt;的结合。Trustin Lee曾经做了一个插件&lt;a href=&#34;http://gleamynode.net/wordpress/archives/106&#34;&gt;Threaded and Paged Comments Plugin for WordPress 1.5&lt;/a&gt;，但结构比较复杂，我把其中的关键SQL语句和函数取出，使得两个插件可以顺利地结合起来。现在两个插件被放在同一个目录下（除了comments-paged.php），结构较为整洁了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.qingbo.org/wp-content/uploads/2006/06/ptc.zip&#34;&gt;下载（zip包，2006-06-08）&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;更新：&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;2006-10-07：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;修正了thread-event.js中一个Bug。现在点击“Reply to this comment”之后’+’和’-‘图标如预想的那样显示，以前总是错误。&lt;/li&gt;
&lt;li&gt;修正了array_merge在PHP5中的问题。&lt;a href=&#34;https://qingbo-net.pages.dev/blog/post25.html#comment-2135&#34;&gt;谢谢Andy&lt;/a&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2006-06-08：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;修正了在更新Threaded Comments选项时的Bug。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2006-06-03：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;向delete_comment添加一个hook，在删除某留言时，它的回复都得到它的reply ID。之前留言被删除后回复不再显示。&lt;/li&gt;
&lt;li&gt;添加了代码在留言区域上方显示thread个数。效果见下面。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2006-05-24：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;将图标文件转换为gif格式，弥补IE6不支持透明PNG的问题。&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;安装步骤：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;解压zip包，得到一个PagedThreadedComments目录和一个comments-paged.php文件。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;将PagedThreadedComments目录上传至WordPress插件目录下（wp-content/plugins/）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;将comments-paged.php文件上传至你使用的主题目录下（wp-content/themes/yourtheme/）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在该主题目录中，编辑每个加了留言功能的页面模板（如single.php），把comments_template()调用替换为
if (function_exists(&amp;lsquo;paged_comments_template&amp;rsquo;)) paged_comments_template();
else comments_template();&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在WordPress面板中激活Paged Threaded Comments插件。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;现在应该已经可以使用，如果与主题不搭配，请修改插件目录中的thread-style.css&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;默认最后一页显示最近的10个thread，最新的排在最上面。在paged-comments-config.php中可以修改这个行为，以及其它一些选项。Thread的嵌套深度请在WP面板选项中修改。&lt;/p&gt;
&lt;p&gt;仅在WordPress 2.02中测试过。如果有什么问题，请留言或发邮件给我。&lt;/p&gt;
&lt;p&gt;许多朋友问怎么用Gravatar。Brian的插件中使用$c作为循环变量，所以与许多插件不兼容。有时间或许我会修改它使之与其它插件相兼容，不过这里有个方案可以凑合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把&lt;a href=&#34;http://www.qingbo.org/wp-content/uploads/2006/10/gravatar.zip&#34;&gt;这个文件&lt;/a&gt;解压到你的插件目录，并激活它。这是一个修改过的gravatar.php。&lt;/li&gt;
&lt;li&gt;在comments-paged.php的合适位置添加这样的代码： &amp;lt;img src=’&lt;?php gravatar($c-&gt;comment\_author\_email); ?&gt;’ /&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当然需要一些CSS或HTML来美化它:)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Paged Threaded Comments plugin</title>
      <link>https://qingbo-net.pages.dev/archives/30/</link>
      <pubDate>Tue, 23 May 2006 03:29:12 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/30/</guid>
      <description>&lt;p&gt;中文页面: &amp;lt;/blog/post26.html&amp;gt;&lt;/p&gt;
&lt;p&gt;This plugin is a combination of &lt;a href=&#34;http://meidell.dk/archives/2004/09/04/nested-comments&#34;&gt;Brian’s Threaded Comments&lt;/a&gt; and Keyvan’s &lt;a href=&#34;http://www.keyvan.net/code/paged-comments/&#34;&gt;WordPress Paged Comments Plugin&lt;/a&gt;. Trustin Lee has written a plugin &lt;a href=&#34;http://gleamynode.net/wordpress/archives/106&#34;&gt;Threaded and Paged Comments Plugin for WordPress 1.5&lt;/a&gt;, but the structure is complicated. I borrowed the SQL statements and functions of it, and made the two plugins work together. Now the structure is tidier, since the plugin files are put into one directory, except the comments-paged.php file.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.qingbo.org/wp-content/uploads/2006/06/ptc.zip&#34;&gt;Download(zip file, 2006-06-08)&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>EditorMonkey修复与完善</title>
      <link>https://qingbo-net.pages.dev/archives/29/</link>
      <pubDate>Thu, 18 May 2006 02:26:29 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/29/</guid>
      <description>&lt;p&gt;写Blog时有一个好的编辑器会有一份好心情。WP默认编辑器把&lt;pre&gt;中的 都吃掉，实在是霸道。Zoundry的编辑器也不成熟，我就暂时放弃了离线编辑。&lt;/p&gt;
&lt;p&gt;近来一直在用EditorMonkey写Blog，感觉比起WP默认的编辑器来要好得多。当然我选择的是FCKEditor，tinyMCE已经删 除了，它占了很大的空间，而且有大量的语言文件，查看源代码时全放在一行中:(。不过EditorMonkey的作者在集成FCKEditor的时候没有能够解决&amp;lt;!–more –&amp;gt;和&amp;lt;!–nextpage–&amp;gt;两个标记的插入问题。在他的论坛里问的时候他说由于FCKEditor太难搞了，以后也不会再 支持它了。&lt;/p&gt;
&lt;p&gt;我在那个thread上订了E-Mail通知，最近发现&lt;a href=&#34;http://liucougar.scim-im.org/&#34;&gt;Cougar&lt;/a&gt;解决了这个问题，在他的一篇日志中：&lt;a href=&#34;http://liucougar.scim-im.org/blog/archives/18&#34;&gt;EditMonkey 2.5 Patched Version&lt;/a&gt;，日志里有patch过的下载链接。&lt;/p&gt;
&lt;p&gt;最初装上的时候觉得还有很多问题，后来证明都是我对XHTML的不了解。唯一发现的错误是如果文章中有图片，就不能显示源代码了，不过这已经被修正。在他的文章里提到&amp;lt;!–more–&amp;gt;和&amp;lt;!–nextpage–&amp;gt;标记的支持至少和原来的WP默认tinyMCE一样好了。如果使用的是Windows下的Firefox，可能换了之后还是不能使用可视化编辑器来插入这两个标记，因为Firefox的缓存机制有些问题吧。直接在浏览器中打开fckeditor\editor\plugins\wordpress\fckplugin.js文件并刷新就可以了。&lt;/p&gt;
&lt;p&gt;当然我是不喜欢用这两个标记，呵呵，只是&lt;a href=&#34;http://www.brightyoung.org/blog/&#34;&gt;Bright Young&lt;/a&gt;曾经问我怎么点那个按钮什么效果都没有（Firefox中源代码中是插入标签的，而IE中则是完全无效），现在你方便了:)。接下来就说说怎么排版文章好让发表出去的日志符合Web标准吧，针对Cougar修改过的FCKEditor。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;段落：FCKEditor在你回车的时候并不会把刚写的一段用&lt;p&gt;&lt;/p&gt;标记包起来，这与tinyMCE不同。Cougar的patch把&lt;br/&gt;全去掉了，所以发表的日志就只有一个段落。正确的做法是为每个段落在格式下拉框里选择“普通”，在回车几次后新的段落就自动包含在&lt;p&gt;&lt;/p&gt;标记中了，自己体会吧。&lt;/li&gt;
&lt;li&gt;代码：粘贴代码时，不要仅仅用&lt;code&gt;标记wrap。&lt;code&gt;实际是&lt;span class=&#34;Code&#34;&gt;，其中的&lt;br/&gt;会被剔除，因此发表后只有一行了。应该在外面用&lt;pre&gt;标记wrap起来。&lt;/li&gt;
&lt;li&gt;编辑框的样式表：通过修改fckeditor\editor\css\fck_editorarea.css文件可以控制编辑区域元素的样式，例如图片样式等。同样在Windows中的Firefox里，最好手动刷新这个文件。&lt;/li&gt;
&lt;li&gt;插入图片：在XHTML中&lt;img&gt;标记必须有alt属性，所以插入图片时最好加上它（插入图片对话框的“替换文本”），图片不能显示的时候可以显示文字。另外，同样根据XHTML标准，不要使用border/align等属性，而把相关样式放在CSS文件中，在插入图片的对话框中，高级页里的样式类名称中填上它应属的class。我的CSS相关设置（从themes/my theme/style.css中抽取）：
&lt;pre&gt;&lt;span class=&#34;Code&#34;&gt;.img-right {
    float: right;
    margin: 5px 0px 5px 5px;
}
.img-left {
    float: left;
    margin: 5px 5px 5px 0px;
}&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这样，插入图片时在样式类名称中填上img-right或img-left就可以使图片靠右或靠左了。而FCK的样式下拉列表中有&amp;quot;image on left&amp;quot;和&amp;quot;image on right&amp;quot;，是给&lt;img&gt;加align属性，不建议使用。但这样的话，编辑的时候并不显示图片的停靠，解决办法很简单，照第3点讲的，把这CSS代码复制一份到fck_editorarea.css中去。&lt;/li&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;最后：FCKEditor/tinyMCE的对话框都是Javascript弹出窗口。某些Firefox用户（比方我）使用了tab浏览插件的单进程功能，从而对话框在新标签页中打开，把整个窗口缩小，很难受。如果不想这样还是取消单窗口模式，并对javascript弹出窗口设置为允许所有窗口。&lt;/ol&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;现在我最想要的功能就是像Twilight-Autosave那样的自动保存功能，这个插件在EditorMonkey中不再起作用，我也看不明白，似乎要FCKEditor中的API才能取得textarea内容。&lt;/p&gt;
&lt;p&gt;Happy editing, happy blogging.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows Media Player 11</title>
      <link>https://qingbo-net.pages.dev/archives/28/</link>
      <pubDate>Sat, 13 May 2006 08:43:18 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/28/</guid>
      <description>&lt;p&gt;&lt;img decoding=&#34;async&#34; src=&#34;http://www.qingbo.org/blog/wp-content/uploads/2006/05/ms_media2.gif&#34; alt=&#34;WMP&#34; style=&#34;margin: 5px 0px 5px 5px; float: right;&#34; /&gt;今天9down.com的一篇文章放出了Windows Media Player 11，原文链接：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.9down.com/story.php?sid=6574&#34;&gt;http://www.9down.com/story.php?sid=6574&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;按照9down.com的说法，这是一个泄露版本。WMP 11已经在Vista中了，不过这是for Windows XP的版本。我已经装在机器上了，试了一下，没什么问题。看起来更cool了，黑色调。播放时间会显示在标题栏上，而屏幕的左下角会显示专辑的图片。在媒体库管理中，也采用显示大的专辑图片，原文中说这方便了媒体的管理，是个极大的进步。我倒一直觉得WMP不适合于媒体管理，呵呵。&lt;/p&gt;
&lt;p&gt;如果选择显示原来的菜单栏，会发现其色彩已经与传统的Windows菜单栏色彩有所不同。 另外，WMP 11采用了与Vista的Explorer路径栏相似的工作方式，在创建、编辑Playlist的时候可以感受到。&lt;/p&gt;
&lt;p&gt;下面是两张截图，查看的同时也体验一下LightBox插件的特效&lt;img decoding=&#34;async&#34; src=&#34;https://qingbo-net.pages.dev/blog/wp-content/plugins/editormonkey/fckeditor/editor/images/smiley/msn/teeth_smile.gif&#34; alt=&#34;&#34; /&gt;。这是一组图，点击任一个，显示后，把鼠标放到两边，会出来箭头，点击看其它图片。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.qingbo.org/blog/wp-content/uploads/2006/05/wmp.JPG&#34; title=&#34;{WMP} 播放界面&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;http://www.qingbo.org/blog/wp-content/uploads/2006/05/wmp.thumbnail.JPG&#34; alt=&#34;播放界面&#34; title=&#34;播放界面&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://www.qingbo.org/blog/wp-content/uploads/2006/05/wmp2.JPG&#34; title=&#34;{WMP} 媒体管理&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;http://www.qingbo.org/blog/wp-content/uploads/2006/05/wmp2.thumbnail.JPG&#34; alt=&#34;媒体库界面&#34; title=&#34;媒体库&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;color: rgb(255, 102, 0);&#34;&gt;5.15 更新：&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;微软官方已经开始提供下载，标明测试版，有多种语言可以选择。之前的泄露版本是5358.4826，现在版本号变为5358.4827。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.microsoft.com/downloads/details.aspx?FamilyID=a75638ef-2ed1-43db-881f-c9ff337c2e91&amp;amp;DisplayLang=en&#34;&gt;下载链接&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Technorati is back</title>
      <link>https://qingbo-net.pages.dev/archives/27/</link>
      <pubDate>Sat, 13 May 2006 08:12:19 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/27/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://technorati.com/&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;223&#34; height=&#34;52&#34; alt=&#34;Technorati&#34; src=&#34;http://www.qingbo.org/blog/wp-content/uploads/2006/05/technoratilogo.jpg&#34; style=&#34;margin: 5px 5px 5px 0px; float: left;&#34; /&gt;&lt;/a&gt;在与Technorati隔绝一阵子之后，今天又看到它了。是Kenwell在他的WP控制板里查看连入的连接时发现的，不过让我过去看时Technorati报告服务量过大，没有给搜出来&lt;img decoding=&#34;async&#34; src=&#34;https://qingbo-net.pages.dev/blog/wp-content/plugins/editormonkey/fckeditor/editor/images/smiley/msn/sad_smile.gif&#34; alt=&#34;&#34; /&gt;。这算是提供关键字服务比较早的一个站吧，可惜前段时间被封了，现在看起来挺亲切的。&lt;/p&gt;
&lt;p&gt;改了一下UTW的输出，给每个Tag加上了Technorati和Del.icio.us的链接。如果哪天Technorati又被Ban，也可以方便地把链接去掉，UTW的机制在这点上真够方便的。&lt;/p&gt;
&lt;p&gt;对了，刚才添加Technorati和Del.icio.us的图标链接的时候，怎么也加不上去，还翻开代码看了看。后来发现WP管理后台里把图标都禁用了，呵呵。&lt;/p&gt;</description>
    </item>
    <item>
      <title>终于通过了XHTML 1.0 strict validation</title>
      <link>https://qingbo-net.pages.dev/archives/26/</link>
      <pubDate>Sat, 13 May 2006 04:54:15 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/26/</guid>
      <description>&lt;p&gt;模板的下面有Valid &lt;a href=&#34;http://validator.w3.org/check/referer&#34;&gt;XTHML&lt;/a&gt; &amp;amp; &lt;a href=&#34;http://jigsaw.w3.org/css-validator/validator?profile=css2&amp;amp;warning=2&amp;amp;uri=http://www.qingbo.org/blog/wp-content/themes/plaintxtBlog/style.css&#34;&gt;CSS&lt;/a&gt; 的链接，我点了一下，XTHML的验证错误一堆。plaintxtBlog模板本身应该是没问题的，就是我给加了好多东西，弄坏了，还有发表的文章中的图片属性也不合法。&lt;/p&gt;
&lt;p&gt;于是就想着把Blog弄规范些，毕竟这是好的。可是对CSS基本不懂，真是费了劲。一边validate，一边到处查资料，同时参考一些规范的网站，最终通过了测试，得到了下面的小奖状&lt;img decoding=&#34;async&#34; alt=&#34;&#34; src=&#34;https://qingbo-net.pages.dev/blog/wp-content/plugins/editormonkey/fckeditor/editor/images/smiley/msn/regular_smile.gif&#34; /&gt;：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://validator.w3.org/check?uri=referer&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;Valid XHTML 1.0 Strict&#34; src=&#34;http://www.qingbo.org/blog/wp-content/uploads/2006/05/valid-xhtml10.png&#34; /&gt;&lt;/a&gt;     &lt;a href=&#34;http://jigsaw.w3.org/css-validator/validator?uri=http://www.qingbo.org/blog/wp-content/themes/plaintxtBlog/style.css&#34;&gt;&lt;img decoding=&#34;async&#34; alt=&#34;Valid CSS!&#34; src=&#34;http://www.qingbo.org/blog/wp-content/uploads/2006/05/vcss.png&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;至于网页规范的好处，就很多了，不光对访问者好，同样地对建站者也是有很大好处的。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://w3cn.org&#34;&gt;网页设计师&lt;/a&gt;这个网站一直致力于Web标准的推广，可以常去看看。&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何生成E-Mail的图片</title>
      <link>https://qingbo-net.pages.dev/archives/25/</link>
      <pubDate>Fri, 12 May 2006 09:12:03 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/25/</guid>
      <description>&lt;p&gt;现在垃圾邮件日益猖獗，网络上出现了另一种爬虫，专爬E-Mail地址的。那些人搞到了E-Mail地址，然后卖给做广告的，让他们四处发垃圾邮件。&lt;/p&gt;
&lt;p&gt;为了避免收到太多的垃圾邮件，越来越多的朋友开始把E-Mail地址做到图片上，这样那些收集程序就不可能发现了。经常看到网上的Blog里漂亮的E-Mail图片，用软件自己做又太麻烦，好在有免费的生成工具。最近发现有几个地方提供这样的服务或程序：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;http://services.nexodyne.com/email/&#34;&gt;E-Mail Icon Generator&lt;/a&gt;：&lt;img decoding=&#34;async&#34; src=&#34;http://www.qingbo.org/blog/wp-content/uploads/2006/05/image.png&#34; alt=&#34;Gmail&#34; style=&#34;margin: 5px 0px 5px 5px; float: right;&#34; /&gt;支持各种E-Mail，甚至连国内的qq.com，sina.com都有，图片的风格都跟邮件服务商的网站或产品有关，比如QQ，Hotmail。看它为我生成的Gmail图片，呵呵。好像用的最多的都是这种风格的。担心它收集用户邮件应该是多余的，按它的记录，已经生成了1亿多图标，而没有听到用户的抱怨。网页的下面也有详细的隐私声明。对了，这个网站还可以为你提供投票服务，比如可以在你的Blog上开展一个投票，而投票的数据是存在他们的服务器上的。&lt;/li&gt;
&lt;li&gt;Playtime &lt;a href=&#34;http://email.playtime.uni.cc/&#34;&gt;Email Signature Generator&lt;/a&gt;：支持的邮件类型少一些，不过花样不少。Blog首页右上的邮件图标就是取自这里的，不过稍微编辑了一下，因为它生成的原始图片不会根据用户名的长度自动调整大小，这一点是不太好。他们还提供图标生成程序的&lt;a href=&#34;http://playtime.uni.cc/downloads.php&#34;&gt;源代码下载&lt;/a&gt;，让自己去生成，因此就更不用担心隐私问题了。&lt;/li&gt;
&lt;li&gt;国内的&lt;a href=&#34;http://www.xabar.net/&#34;&gt;西安吧&lt;/a&gt;也出了一个&lt;a href=&#34;http://pic.xabar.net/generator/email.asp&#34;&gt;签名图标生成器&lt;/a&gt;：支持国内大多的邮件，不过不太推荐使用&lt;img decoding=&#34;async&#34; alt=&#34;&#34; src=&#34;https://qingbo-net.pages.dev/blog/wp-content/plugins/editormonkey/fckeditor/editor/images/smiley/msn/wink_smile.gif&#34; /&gt;，也不能算是恶意揣度其用意。我们是为了避免垃圾邮件而生成图标的，它连个隐私声明都不放，真有点“后面有狼追，想让老虎救人”的感觉。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;好了，赶快为你的邮件地址做一个图标吧！&lt;/p&gt;</description>
    </item>
    <item>
      <title>cdog帮我加工的logo</title>
      <link>https://qingbo-net.pages.dev/archives/24/</link>
      <pubDate>Thu, 11 May 2006 14:26:17 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/24/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;150&#34; height=&#34;60&#34; src=&#34;http://www.qingbo.org/blog/wp-content/uploads/2006/05/blog%284%29.jpg&#34; alt=&#34;Blog logo&#34; style=&#34;margin: 5px 5px 5px 0px; float: left;&#34; /&gt;今天一早收到一封DoNews的垃圾邮件，邀请交换链接。我上去看了一下，&lt;a href=&#34;http://inout.donews.com&#34;&gt;DoNews Inout&lt;/a&gt;是和分类网址差不多的一个地方。想把我的网站加到里面，结果发现需要上传一个logo。于是左边弄个星星加月亮（我的Blog名字嘛，呵呵），然后右边写个名字和网址，文字的取色是参照Google来的。传完之后再看，越看越觉得不相称，感觉左边太死板了。忽然想起cdog曾经参加过学校的 Flash大赛，还为班级设计过T-shirt，就找他帮我加工了一下。cdog非常热心而且细心，改了一个下午，最后给了三种不同的方案。我一收到就感觉非常喜欢，果然是职业的水准，做完了还说今天没灵感。尤其是文章开头贴这张，很好看。而且他们经常用Photoshop的都有较专业的漂亮的字体。&lt;/p&gt;
&lt;p&gt;还有一个也比较漂亮，我看它跟主题搭配得较好，就放在Blog的标题上了。&lt;/p&gt;
&lt;p&gt;至于我最初做的，就不拿出来让人笑话了，呵呵。&lt;/p&gt;
&lt;p&gt;对了，cdog最近不太顺利，祝他以后的路能越走越宽畅。 &lt;/p&gt;</description>
    </item>
    <item>
      <title>装点我的Blog</title>
      <link>https://qingbo-net.pages.dev/archives/23/</link>
      <pubDate>Thu, 11 May 2006 09:01:23 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/23/</guid>
      <description>&lt;p&gt;Blog 安装好之后，又花了不少时间来照顾它。到现在为止还没怎么体会在新的博客做Blogging的乐趣，呵呵。中间由于相关知识的欠缺，吃了不少苦头。&lt;/p&gt;
&lt;p&gt;这个主题看起来比较朴素，并且充分利用了浏览器的宽度，看着还行。装插件改了它不少的东西，想要换别的主题也不好了，很多插件肯定就不能正常用了。 &lt;/p&gt;
&lt;p&gt;下面来写写这些天装的插件： &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.m3nt0r.de/blog/lightbox-wordpress-plugin/&#34; title=&#34;访问插件主页&#34;&gt;Lightbox 2.0 Plugin&lt;/a&gt;&lt;/strong&gt;：如果文章中显示一张图片，并且它链接到的地址也是一张图片的话会起作用，效果非常cool，现在站上的任何一张图片都是这种效果。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://yanfeng.org/blog/wordpress/kit&#34; title=&#34;访问插件主页&#34;&gt;中文 WordPress 工具箱&lt;/a&gt;&lt;/strong&gt;：显示最新留言、最新文章等，正在犹豫是不是把它去掉呢。朋友们给点意见。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.neato.co.nz/ultimate-tag-warrior/&#34; title=&#34;访问插件主页&#34;&gt;Ultimate Tag Warrior&lt;/a&gt;&lt;/strong&gt;：鼎鼎大名的UTW，安装和使用手册就够看的了，我只是大概扫了扫，简单地了解了一下。准备加一个Tag Cloud在侧栏。它在每篇文章里用AJAX技术添加Tag的功能也比较舒服，这样即使是以前没有它的时候写的文章，也可以随手翻一下，加几个Tag。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.rajprasad.net/plugins/editormonkey/&#34; title=&#34;访问插件主页&#34;&gt;EditorMonkey&lt;/a&gt;&lt;/strong&gt;：替换了WordPress的破编辑器，现在发表文章用的就是它了。使用的时候如果选tinyMCE可能字体偏小，可以修改editormonkey/tinymce/themes/advanced/css/editor-content.js中的字体为合适的大小。不过这个插件太大，占了10M空间，虽然作者说删除不必要的语言文件可以减少75%大小，我看了看，十几个langs文件夹，才懒得去删。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://meidell/threadedcomments/&#34; title=&#34;访问插件主页&#34;&gt;Brian&amp;rsquo;s Threaded Comments&lt;/a&gt;&lt;/strong&gt;：使留言更有针对性，Blog目前的留言系统就是这样的，想着用Ajax-comment-reply来着，不过原作者做得并不完美。&lt;a href=&#34;http://zhiqiang.org/blog&#34; title=&#34;Zhang-Zi&#39;s blog&#34;&gt;Zhang-Zi&lt;/a&gt;修改得倒很好了，不过我看了下他的JS代码，不懂:( 装了这个插件后，它把javascript及CSS一起输出到了页面，我把它们移到别的文件中去了，只在输出中包含了一下。另外它设置的tabindex与主题有冲突，还有comment的anchor不对，已经一一修正。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;到&lt;a href=&#34;http://www.qingbo.org/blog/wp-admin/amazingcounters.com&#34;&gt;Amazingcounters.com&lt;/a&gt;申请了一个新的简单的计数器，放在左上角。增长的好快，自己看着都难受，于是加一个判断，除了首页都不显示了。&lt;/p&gt;
&lt;p&gt;对了，左边栏的那个日历，是借用的&lt;a href=&#34;http://zhiqiang.org/blog&#34; title=&#34;Zhang-Zi&#39;s blog&#34;&gt;Zhang-Zi&lt;/a&gt;的代码，在此致谢啦。我修改了一下颜色来适应这个主题。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Blog 搬到这里了</title>
      <link>https://qingbo-net.pages.dev/archives/22/</link>
      <pubDate>Wed, 10 May 2006 07:44:19 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/22/</guid>
      <description>&lt;p&gt;虽说DoNews的WordPress算国内好的Blog系统了，我还是想为自己开拓更大的定制空间:) &lt;/p&gt;
&lt;p&gt;从五一期间开始选择购买空间。开始看着512j的不错，不过看他们的网站做得不怎么样，另外让我比较郁闷的是装了WordPress后邮件通知不能发，折腾了好久不见效果。后来一位朋友说发不了就不发嘛，我想想也是。但后来找到21Windows的网站，他们还有客服论坛，价钱也更低些，就决定买了。装好之后发现邮件可以正常发送。另外21windows的客服们都还好说话。&lt;/p&gt;
&lt;p&gt;然后是购买域名，听人说淘宝便宜，就上去买，弄到一个新网代理的，就是现在的qingbo.org。但那位朋友很无奈地告诉我新网的不能转出，我也不知道转出有什么意义，先就这样吧，域名管理功能够全，服务商还行。&lt;/p&gt;
&lt;p&gt; 本来想导入原来的文章有些麻烦，因为前次导入时全部只有标题，内容丢了。这一次倒顺利，没出什么错误，只是图片仍然链接到原来的网站上，修改了一下。&lt;/p&gt;
&lt;p&gt;接下来是备案。那几天似乎他们的邮件系统坏了，换了无数邮箱找回验证码，一直未果。后来突然就收到一堆邮件，终于来了。迅速提交了备案材料。听说是要等几周的，不过这次倒是快，一两天就收到了通过的消息。&lt;a href=&#34;http://www.kenwell.org&#34; title=&#34;Kenwell&#39;s blog&#34;&gt;Kenwell&lt;/a&gt;跟我一起申请的，他的备案号竟然比我的靠前一个，哼哼。现在备案号已经放在页脚了，终于不用担心服务商停止服务了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>WordPress扩展标记的使用</title>
      <link>https://qingbo-net.pages.dev/archives/21/</link>
      <pubDate>Fri, 05 May 2006 04:19:12 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/21/</guid>
      <description>&lt;p&gt;最近DoNews添加了一个Limit Posts插件，就是把index.php里的the_content函数换一下，显示部分文字，其余的点击&amp;quot;更多&amp;quot;之类的链接可以查看。&lt;/p&gt;
&lt;p&gt;不过一般的Blog hosting服务商并不允许修改index.php，DoNews也一样，所以这个插件是没用的。&lt;/p&gt;
&lt;p&gt;如果仍然想仅显示文章的一部分，留一个链接查看全文，还是有办法的。WordPress本身就提供了一个标记来实现这样的效果，就是&amp;lt;!–more–&amp;gt; 。这个标记更具有灵活性，加在哪里就在哪里分隔。现在我就加一个标记，请点击下面的链接浏览全文吧:)&lt;/p&gt;
&lt;p&gt;如果你使用WordPress的Web界面里的HTML编辑器，可以在显示部分的结束加上这个标记，后面的文字在首页、搜索结果中就不可见了，不过多了一个链接，点击它可以看见全文。&lt;/p&gt;
&lt;p&gt;如果使用可视化编辑器，工具栏有一个按钮&amp;quot;Split post with More tag (Alt+t)&amp;quot;，如图所示，点击它编辑器中会出现一条横线，后面的内容在首页就隐藏了，其效果也就是在HTML代码中辑一个扩展标记。&lt;/p&gt;
&lt;p&gt;离线编辑器我用的是Zoundry Blog Writer，现在已经支持WP的扩展标记，它的可视化编辑器里也有一个类似的按钮，在工具栏下排的最右边。&lt;a href=&#34;http://qingbo.org/blog/wp-content/uploads/2006/05/1146993286433.png&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;200&#34; height=&#34;79&#34; src=&#34;http://qingbo.org/blog/wp-content/uploads/2006/05/114699328643_tn3.jpg&#34; title=&#34;114683038598.png&#34; alt=&#34;114683038598.png&#34; style=&#34;margin: 5px 0px 5px 5px; float: right;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;当然，有的人并不喜欢点个链接再看全文，而是想在首页把文章读完，这就看个人爱好了。&lt;/p&gt;&lt;/p&gt;
&lt;!-- Tag links generated by Zoundry Blog Writer. Do not manually edit. http://www.zoundry.com --&gt;Del.icio.us : 
&lt;p&gt;&lt;a href=&#34;http://del.icio.us/tag/WordPress&#34; rel=&#34;tag&#34;&gt;WordPress&lt;/a&gt; &lt;/p&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>翻译了Zoundry的软件界面</title>
      <link>https://qingbo-net.pages.dev/archives/20/</link>
      <pubDate>Thu, 04 May 2006 06:46:01 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/20/</guid>
      <description>&lt;p&gt;Zoundry是一款相当好用的离线Blog发布工具，它是免费的，支持常见的Blog系统。对于我用WordPress来说，它可以自动使用WP的API来上传图像，这点是相对其它工具来说最方便的。&lt;/p&gt;
&lt;p&gt;软件的本地化也相对方便，语言文件在安装目录下，是XML格式。而Zoundry本身提供了本地化的工具，就更加简单了。不过界面上的条目太多，超过了1000条，今天大部分时间都在搞它了，呵呵。&lt;/p&gt;
&lt;p&gt;完了发到Zoundry论坛中去，希望其他用户可以改进我拙劣的翻译，也希望有了中文界面的Zoundry在中文用户中得到更广泛的使用。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://home.ustc.edu.cn/~xyzzqb/data/zBlogWriter_zh_CN.zip&#34;&gt;下载链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;用法，将解压出的文件复制到Zoundry安装目录下，在Tools-&amp;gt;Settings中设置使用中文。需要重启。&lt;/p&gt;
&lt;p&gt;附中文界面图：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://qingbo.org/blog/wp-content/uploads/2006/05/1146992896681.JPG&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;200&#34; height=&#34;147&#34; alt=&#34;1146753861182.JPG&#34; title=&#34;1146753861182.JPG&#34; src=&#34;http://qingbo.org/blog/wp-content/uploads/2006/05/114699289668_tn1.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Del.icio.us : &lt;a rel=&#34;tag&#34; href=&#34;http://del.icio.us/tag/Zoundry&#34;&gt;Zoundry&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>让人郁闷的CUP调试</title>
      <link>https://qingbo-net.pages.dev/archives/19/</link>
      <pubDate>Wed, 03 May 2006 10:15:05 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/19/</guid>
      <description>&lt;p&gt;首先定义了一种词法描述格式，并按照它写了某语言的词法规范。&lt;/p&gt;
&lt;p&gt;为处理这种词法描述，用&lt;a href=&#34;http://jflex.de/&#34;&gt;JFlex&lt;/a&gt;配合&lt;a href=&#34;http://www2.cs.tum.edu/projects/cup/&#34;&gt;CUP&lt;/a&gt;为它生成了一个语法分析器，它分析前述的词法描述，产生一个抽象语法树（AST），这样就方便处理词法描述了。&lt;/p&gt;
&lt;p&gt;有一个NFA产生器，它遍历那个AST并输出一个NFA。&lt;/p&gt;
&lt;p&gt;最后又有一个NFA模拟器，它以从某语言的词法规范得来的NFA和一份该语言源代码为输入，输出词法分析的结果。&lt;/p&gt;
&lt;p&gt;真是一个复杂的过程，说清楚可不容易，尤其是我用Java语言实现，所测试的”某语言”又与Java语言相似，期间很多时候都把自己搞得很糊涂。&lt;/p&gt;
&lt;p&gt;今天写CUP文件时有个非终结符的产生式全部没有加action。那是一个Statement类的产生式，导致最后语句块的statements()元素全部都是null。CUP生成的文件好大好复杂，跟踪了很久才发现这个弱智的错误，本来想11点就睡觉的，结果拖到现在，都两点了，不过还好找出来了，不然睡觉也不安生。之后又除去一些稍容易定位的bug，目前已经能输出词法分析的结果了，不过还不完善，就等明天了。&lt;/p&gt;
&lt;p&gt;似乎又有以前那种找出深藏程序中的bug后喜悦的感觉了。兴奋之余，不禁对那些开发编译器的人肃然起敬，那是多么复杂的脑力劳动！Compiler, lexer generator, parser generator，它们发展的过程中有多少鸡生蛋，蛋生鸡的循环反复呢？我总是很惊奇，看似毫无头绪的技术竟然能总结成一个完整的理论体系，竟然能写出一本不是太难懂的书（Dragon book）。自动机理论、语法分析的体系化方法，多是数学家、计算机专家的杰作。像我这样的人，只能冥思苦想怎么使用它们，也许是天赋，但主要是对待工作的态度所致。&lt;/p&gt;
&lt;p&gt;告诫自己，无论如何，学习是最有用的，绝不能在没用的事情上，尤其是游戏，耽误过多的时间。&lt;/p&gt;
&lt;!-- Tag links generated by Zoundry Blog Writer. Do not manually edit. http://www.zoundry.com --&gt; Del.icio.us : 
&lt;p&gt;&lt;a href=&#34;http://del.icio.us/tag/CUP&#34; rel=&#34;tag&#34;&gt;CUP&lt;/a&gt;, &lt;a href=&#34;http://del.icio.us/tag/compiler&#34; rel=&#34;tag&#34;&gt;compiler&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>还是Babylon好用</title>
      <link>https://qingbo-net.pages.dev/archives/18/</link>
      <pubDate>Wed, 03 May 2006 03:45:41 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/18/</guid>
      <description>&lt;p&gt;翻译软件我以前一直都在用金山词霸。在论坛里别人常常谈Babylon，最近刚出了版本6，昨天安装了一个试了一下，确实不错。其实从功能上来讲词霸也差不多，不过我现在对于软件的看法，除了功能性外，易用、友好性和厂家（或者作者）的品质也很重要，不是我崇洋媚外，国内许多软件厂商的态度实在不欣赏。&lt;/p&gt;
&lt;p&gt;安装文件上来说，词霸有安装盘，600多M吧大概，具体忘了，而Babylon只有两位数而已。其实词霸光翻译软件也很小，不过它带了太多的垃圾东西（似乎是有试用的毒霸、影霸？）。Babylon直接从网站上下载即可，即使你网络很差。&lt;/p&gt;
&lt;p&gt;Babylon还支持在线词典，词霸我不太清楚，好像没有吧。Babylon添加词典也很方便，到它&lt;a href=&#34;http://www.babylon.com/&#34;&gt;官方网站&lt;/a&gt;下就可以了，有许多免费的，一般大小在几个M，不是很大，不过wikipedia可是很大的，呵呵，差不多一个G了。有很多优秀的词典如Oxford、Merriam-Webster等，不过要收费。&lt;/p&gt;
&lt;p&gt;最关键的还是取词方式。好多人说Babylon只能鼠标点击取词不方便，不能像词霸那样方便地鼠标悬停取词。我原来也是这样认为而不想换用Babylon，不过越来越觉得鼠标移上去就翻译实在很影响工作或阅读。尤其是有时候使用软件的菜单，词霸会不识时务地用它的浮动窗口把子菜单盖住，弄得很郁闷。当然它有选项可以加辅助键取词。但金山词霸这种取词方式还是不大好，似乎是用了Windows编程中的钩子技术（不知道Babylon有没有使用）吧，有时候会让程序崩溃。比如你用Visual Studio写程序的时候千万别开词霸自动取词，你未保存的程序随时可能丢失。至少还没听说Babylon有这样的问题。另外金山词霸在某些程序中无法取词，比如&lt;a href=&#34;http://www.eclipse.org/&#34;&gt;Eclipse&lt;/a&gt;的编辑器，Babylon不受这个限制。&lt;/p&gt;
&lt;p&gt;当然了，如果你所阅读的东西满篇都是生词，金山词霸的词方式还是首选。对于有一定英语阅读能力的人，Babylon更好一些。想起来Linux里用的那个StarDict，选中取词的方法是真的不方便，可能是受限于X Window的API吧，不知道它的Windows版本怎么样？&lt;/p&gt;
&lt;p&gt;许多用户对Babylon的评价是&amp;quot;优秀的软件&amp;quot;。最后，附一张Babylon 6的截图，很清爽：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://qingbo.org/blog/wp-content/uploads/2006/05/1146992759001.JPG&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;200&#34; height=&#34;139&#34; src=&#34;http://qingbo.org/blog/wp-content/uploads/2006/05/114699275900_tn1.jpg&#34; title=&#34;1146656567511.JPG&#34; alt=&#34;1146656567511.JPG&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!-- Tag links generated by Zoundry Blog Writer. Do not manually edit. http://www.zoundry.com --&gt;Del.icio.us : 
&lt;p&gt;&lt;a href=&#34;http://del.icio.us/tag/babylon&#34; rel=&#34;tag&#34;&gt;babylon&lt;/a&gt;, &lt;a href=&#34;http://del.icio.us/tag/%E7%BF%BB%E8%AF%91%E8%BD%AF%E4%BB%B6&#34; rel=&#34;tag&#34;&gt;翻译软件&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>不打游戏了</title>
      <link>https://qingbo-net.pages.dev/archives/17/</link>
      <pubDate>Wed, 03 May 2006 02:51:45 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/17/</guid>
      <description>&lt;p&gt;上学期末开始打魔兽，打到现在，浪费了太多的时间。&lt;/p&gt;
&lt;p&gt;最近是CS、魔兽轮着玩，晚上睡觉时想着第二天要做点事情，不过一起床就又想玩了。现在做论文是有点费劲、无聊，每次做得郁闷的时候，或者做得有点成果的时候，就想打游戏了，呵呵。&lt;/p&gt;
&lt;p&gt;今天WEG终于结束了，我也想着打游戏要停一下了，先把论文做好了再说。&lt;/p&gt;
&lt;p&gt;也不是没有其它的事情，每次跟家里联系，总感觉自己应该挣点钱，总感觉很对不起家里。可是过几天就又忘记了，真是惭愧。爸爸现在身体不太好，想着找个时间得让他找个好医院检查一下。忽然觉得自己太没有责任心了。&lt;/p&gt;
&lt;p&gt;以前有事情了总是心里惦记着，想尽早地完成，现在学会往后拖了，正在做的论文就是这样，面对比较烦的问题时就不想努力做下去。&lt;/p&gt;
&lt;p&gt;这些天上网多一些，发现许多全新的东西，感觉自己还是要多关注学习，不只是学业中所必需的任务，多关心那些IT界的新事物也很有益处。魔兽删了，CS也删了。学习累了就睡觉吧，或者写写BLOG，也比玩游戏强多了。&lt;/p&gt;
&lt;!-- Tag links generated by Zoundry Blog Writer. Do not manually edit. http://www.zoundry.com --&gt; Del.icio.us : 
&lt;p&gt;&lt;a href=&#34;http://del.icio.us/tag/%E6%B8%B8%E6%88%8F&#34; rel=&#34;tag&#34;&gt;游戏&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>又到一年劳动节</title>
      <link>https://qingbo-net.pages.dev/archives/16/</link>
      <pubDate>Sun, 30 Apr 2006 09:59:15 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/16/</guid>
      <description>&lt;p&gt;五一节就来了。&lt;/p&gt;
&lt;p&gt;想那些旅游胜地肯定又是人满为患，即使是合肥的野生动物园，路上也走不通了，所以我们就算想去游玩，也不会选择在五一期间的。就待在校园吧，安安静静，跟平常一样。&lt;/p&gt;
&lt;p&gt;前几年到这个时候就有点兴奋，不过现在这似乎对我们没有什么意义了。晚饭去一家自助吃了个大饱，然后回来CS，这就算我们庆祝劳动节了，哈哈。去和回来都从安徽大学经过，感觉气氛就是跟科大不一样，适合生活。科大，不管适合不适合学习，反正适合变态。&lt;/p&gt;
&lt;p&gt;现在也没什么心情，这周的任务没怎么做，周报没什么可以写的，这几天要加油干了，五一过后就是中期检查。虽然检查不检查无所谓，还是想把这个项目完成，给本科划一个句号。说实在的，到这个时候，心也不好静下来，做的东西又复杂，一层套一层的，真的很乱。&lt;/p&gt;
&lt;p&gt;劳动光荣。^_^&lt;/p&gt;
&lt;!-- Tag links generated by Zoundry Blog Writer. Do not manually edit. http://www.zoundry.com --&gt; Del.icio.us : 
&lt;p&gt;&lt;a href=&#34;http://del.icio.us/tag/%E5%8A%B3%E5%8A%A8%E8%8A%82&#34; rel=&#34;tag&#34;&gt;劳动节&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>配置Blog</title>
      <link>https://qingbo-net.pages.dev/archives/15/</link>
      <pubDate>Tue, 25 Apr 2006 04:43:31 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/15/</guid>
      <description>&lt;p&gt;又给Blog的侧栏加了一个计数器，是从amazingcounters申请的。使用的时候有一个sponsor link，必须放在页面可见地方，否则计数器不可用，我就直接弄了一个空链接，呵呵，主要是那个广告比较影响市容:)&lt;/p&gt;
&lt;p&gt;以前从来没弄过Google AdSense，今天试着申请了一下，竟然通过了。看了一下，税务方面似乎对美国以外的没有什么要求。其实也就是玩个新鲜，呵呵，本来访问这个Blog的人就没几个，谁会去点它。&lt;/p&gt;
&lt;p&gt;今天用IE打开Blog，发现右边的侧栏挤到网页的最下面，和左边的文章页面一点都不搭界了，Firefox下好好的。很奇怪，&lt;a href=&#34;http://my.donews.com/pulq&#34;&gt;小强&lt;/a&gt;和我使用一个主题，他的就显示很好。用FrontPage打开比较了半天，最后终于发现是文章里那个猴子骑斑马的图片太宽了，IE不会自动把它缩放到适合那个层的大小。现在把所有大一些的图片都重新调整了一下，IE可以正常显示了，希望以后别再出现这样的情形。&lt;/p&gt;
&lt;p&gt;把原来有WordPress链接的栏禁用，换了与自己有关的一些链接，以后还会继续补充。&lt;/p&gt;
&lt;p&gt;No IE那个logo去掉了，主要是看着它太和网页的本色太不协调了，呵呵，加了Firefox with Google Toolbar&lt;br&gt;
和Google AdSense的推广链接，虽然颜色亮，给人感觉还是比较温和的。&lt;/p&gt;
&lt;p&gt;DoNews的WP还是配置空间不大，大概BSP提供的都这样吧，不太可能把index.php之类的拿来让我们修改。以后有了条件还是自己找个空间，申请个域名，想怎么搞就怎么搞。&lt;/p&gt;
&lt;!-- Tag links generated by Zoundry Blog Writer. Do not manually edit. http://www.zoundry.com --&gt; Technorati : 
&lt;p&gt;&lt;a href=&#34;http://technorati.com/tag/Blog%E9%85%8D%E7%BD%AE&#34; rel=&#34;tag&#34;&gt;Blog配置&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Spread Firefox!</title>
      <link>https://qingbo-net.pages.dev/archives/14/</link>
      <pubDate>Sun, 23 Apr 2006 06:53:41 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/14/</guid>
      <description>&lt;p&gt;用Firefox已经很习惯了，IE反倒不舒服。Tabbed browsing，只打开一个实例就可以了。舒服的增量搜索，让我现在很不习惯大多数文本编辑或查看工具的搜索方式。还有一堆好用的插件，数不过来。&lt;/p&gt;
&lt;p&gt;我现在安装的插件不多：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://tmp.garyr.net/&#34;&gt;Tab Mix Plus&lt;/a&gt;–标签浏览&lt;br&gt;
&lt;a href=&#34;http://flashgot.net/&#34;&gt;FlashGot&lt;/a&gt;–曾经因为Firefox缺乏多线程工具而痛苦，现在它已经做得很好了。&lt;br&gt;
&lt;a href=&#34;http://toolbar.google.com/&#34;&gt;Google Toolbar for Firefox&lt;/a&gt;–搜索关键字提示，充分应用Firefox功能的页面关键字搜索，还有关键的一点，可以在网页上取词翻译，这可没有for IE&lt;br&gt;
&lt;a href=&#34;http://www.longfocus.com/firefox/gmanager&#34;&gt;Gmail Manager&lt;/a&gt;–Gmail的管理、通知程序&lt;br&gt;
&lt;a href=&#34;http://www.foxytunes.org/firefox&#34;&gt;FoxyTunes&lt;/a&gt;–在Firefox里控制你喜欢的音乐播放器，foobar2000/iTunes/WinAmp等等，一般的都支持。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;索性今天就在Blog的侧栏加了一栏”No IE”和”Spread Firefox”的宣传图片，呵呵。希望更多的人开始认识Firefox，使用Firefox，并喜欢它。&lt;/p&gt;
&lt;!-- Tag links generated by Zoundry Blog Writer. Do not manually edit. http://www.zoundry.com --&gt; Technorati : 
&lt;p&gt;&lt;a href=&#34;http://technorati.com/tag/Firefox&#34; rel=&#34;tag&#34;&gt;Firefox&lt;/a&gt;, &lt;a href=&#34;http://technorati.com/tag/No%20IE&#34; rel=&#34;tag&#34;&gt;No IE&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>猴子倒骑斑马</title>
      <link>https://qingbo-net.pages.dev/archives/13/</link>
      <pubDate>Wed, 05 Apr 2006 07:21:04 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/13/</guid>
      <description>&lt;p&gt;合肥野生动物园我去过两次，当时还没有现在的熊猫和白虎。让人觉得不错的是那个野兽园的观光大桥，听说现在上面卖鸡了，买了马上扔下去喂野兽，就几十块钱，呵呵。&lt;/p&gt;
&lt;p&gt;园里的孔雀和鹿是到处跑的，小鹿看见人伸手就以为是人要喂它，就跑过来了。还有海狮馆的表演也很好。&lt;/p&gt;
&lt;p&gt;有一次去的时候在猴园看，它跟斑马园是挨着的，猴子可以去斑马那边逛。当时一只斑马在中间的栏杆旁边散步，一个猴子看见了，就在栏杆上跟着它跑，跑着跑着瞅准了就跳到斑马背上去了。又一只猴子看见了，就抓着马尾巴也爬上去了。斑马大概已经习惯了，若无其事地继续走。前几天在论坛上看同学发的动物园照片，竟然又有这样的情景，保留下来，呵呵，这个挺像故事&amp;quot;张果老倒骑毛驴&amp;quot;的吧？如下：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://qingbo.org/blog/wp-content/uploads/2006/05/1146992417291.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;200&#34; height=&#34;150&#34; src=&#34;http://qingbo.org/blog/wp-content/uploads/2006/05/114699241729_tn1.jpg&#34; title=&#34;monkey.jpg&#34; alt=&#34;monkey.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>合肥的怪异天气</title>
      <link>https://qingbo-net.pages.dev/archives/12/</link>
      <pubDate>Tue, 04 Apr 2006 03:29:24 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/12/</guid>
      <description>&lt;p&gt;昨晚睡觉没关阳台的门，早上还不知道8点就被雷声吵醒了。&lt;/p&gt;
&lt;p&gt;中午的时候， 往外面一看，大吃一惊，天黑得跟晚上一样，以为是日食了呢，赶紧跑出去看。可是日食应该会有预报的，原来是云层太厚了。各大网站上都报道了这个现象，呵呵。在合肥最讨厌它的天气了，不过今天让我长了见识:)&lt;/p&gt;
&lt;p&gt;下面是两张网上复制的图片(&lt;a href=&#34;http://xinhuanet.com/&#34;&gt;新华网&lt;/a&gt;)：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://qingbo.org/blog/wp-content/uploads/2006/05/1146989493621.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;146&#34; height=&#34;200&#34; alt=&#34;Img242634350.jpg&#34; title=&#34;Img242634350.jpg&#34; src=&#34;http://qingbo.org/blog/wp-content/uploads/2006/05/114698949362_tn1.jpg&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://qingbo.org/blog/wp-content/uploads/2006/05/1146989614591.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;200&#34; height=&#34;132&#34; alt=&#34;Img242634351.jpg&#34; title=&#34;Img242634351.jpg&#34; src=&#34;http://qingbo.org/blog/wp-content/uploads/2006/05/114698961459_tn1.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;还有几张是同学在东区理化大楼拍的：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://qingbo.org/blog/wp-content/uploads/2006/05/1146990197041.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;200&#34; height=&#34;150&#34; alt=&#34;雨前1.jpg&#34; title=&#34;雨前1.jpg&#34; src=&#34;http://qingbo.org/blog/wp-content/uploads/2006/05/114699019704_tn1.jpg&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://qingbo.org/blog/wp-content/uploads/2006/05/1146990205011.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;200&#34; height=&#34;150&#34; alt=&#34;雨前2.jpg&#34; title=&#34;雨前2.jpg&#34; src=&#34;http://qingbo.org/blog/wp-content/uploads/2006/05/114699020501_tn1.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://qingbo.org/blog/wp-content/uploads/2006/05/1146990220341.jpg&#34;&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; width=&#34;200&#34; height=&#34;150&#34; alt=&#34;雨前3.jpg&#34; title=&#34;雨前3.jpg&#34; src=&#34;http://qingbo.org/blog/wp-content/uploads/2006/05/114699022034_tn1.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>代码生成器的弱智错误</title>
      <link>https://qingbo-net.pages.dev/archives/11/</link>
      <pubDate>Mon, 03 Apr 2006 05:54:39 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/11/</guid>
      <description>&lt;p&gt;中缀表达式计算的翻译存在严重问题，以前的想法是，右操作数计算结果放在%ebx中，左操作数结果放%eax，再根据运算符计算即可。但仔细想想便知道，计算左操作数时，仍可能用到%ebx，所以是不可行的。&lt;/p&gt;
&lt;p&gt;现在是把左操作数的结果放在栈上，维护一个临时空间的表，表的大小根据需要的最多临时变量确定。&lt;/p&gt;
&lt;p&gt;目前可以翻译了，递归函数也没问题。以上问题是由于用一个binary Euclid’s algorithm求最大公约数的算法做测试而发现的，呵呵。这个算法比较有个性，不同于常见的辗转相除法。具体见&lt;br&gt;
&lt;a href=&#34;http://www.cut-the-knot.org/blue/binary.shtml&#34;&gt;http://www.cut-the-knot.org/blue/binary.shtml&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>开始设计实验了</title>
      <link>https://qingbo-net.pages.dev/archives/10/</link>
      <pubDate>Sat, 01 Apr 2006 06:23:10 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/10/</guid>
      <description>&lt;p&gt;Berkeley的实验已经做到可以接受函数参数及返回值、局部变量了，不准备再继续做面向对象特性了，而开始做计算机系实验的设计。&lt;br&gt;
感觉这个难度更大了，要考虑的事情更多。现在应该把玩的心收一收，集中精力完成毕业设计。如果做完得早，说不定还可以出去做兼职赚点小钱，哈哈。&lt;/p&gt;</description>
    </item>
    <item>
      <title>The simplest working compiler!</title>
      <link>https://qingbo-net.pages.dev/archives/9/</link>
      <pubDate>Fri, 17 Mar 2006 16:45:22 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/9/</guid>
      <description>&lt;p&gt;比较弱智，呵呵。&lt;br&gt;
源程序如下：&lt;/p&gt;
&lt;div&gt;
  &lt;pre&gt;class Program {
static int i;
static int j;
static boolean b;
&lt;p&gt;static void Main() {
i = 3 * 5;
j = i + 10;
func();
print(j);
}
static void func() {
print(i);
}
}&lt;/pre&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;翻译成汇编码：&lt;/p&gt;
&lt;div&gt;
  &lt;pre&gt;
.section    .rodata
format:
.string    &#34;%dn&#34;
.text
.globl main
.type    main, @function
main:
pushl    %ebp
movl    %esp, %ebp
subl    $8, %esp
movl    $3, %eax
movl    %eax, %ebx
movl    $5, %eax
imull    %ebx, %eax
movl    %eax, i
movl    i, %eax
movl    %eax, %ebx
movl    $10, %eax
addl    %ebx, %eax
movl    %eax, j
call    func
movl    j, %eax
movl    %eax, 4(%esp)
movl    $format, (%esp)
call    printf
leave
ret
.globl func
.type    func, @function
func:
pushl    %ebp
movl    %esp, %ebp
subl    $8, %esp
movl    i, %eax
movl    %eax, 4(%esp)
movl    $format, (%esp)
call    printf
leave
ret
.local    i
.comm    i, 4, 4
.local    j
.comm    j, 4, 4
.local    b
.comm    b, 4, 4&lt;/pre&gt;
&lt;/div&gt;</description>
    </item>
    <item>
      <title>GAS编译的第一个汇编小程序</title>
      <link>https://qingbo-net.pages.dev/archives/8/</link>
      <pubDate>Thu, 16 Mar 2006 01:15:02 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/8/</guid>
      <description>&lt;p&gt;在Linux里写了第一个汇编小程序，呵呵，输入两个数字，计算出结果并显示。&lt;br&gt;
保存为example.s，&lt;br&gt;
# gcc -o example example.s&lt;/p&gt;
&lt;pre&gt;.section	.rodata
prompt:
.string	&#34;Please input an integer:&#34;
format:
.string	&#34;%d&#34;
oform:
.string &#34;%d + %d = %dn&#34;
.text
.globl main
.type	main, @function
main:
pushl	%ebp
movl	%esp, %ebp
subl	$32, %esp
andl	$-16, %esp
movl	$0, %eax
subl	%eax, %esp	;Instructions above have nothing meaningful.

movl	$prompt, (%esp)
call	printf		;Prompt for the first integer.
movl	%esp, %eax
addl	$20, %eax
movl	%eax, 4(%esp)
movl	$format, (%esp)
call	scanf		;Accept the first input.
movl	$prompt, (%esp)
call	printf		;Prompt for the second.
movl	%esp, %eax
addl	$16, %eax
movl	%eax, 4(%esp)
movl	$format, (%esp)
call	scanf		;Accept the second.
movl	16(%esp), %eax
addl	20(%esp), %eax	;Compute the sum of two integers
movl	%eax, 12(%esp)	;sum
movl	16(%esp), %eax
movl	%eax, 8(%esp)	;num2
movl	20(%esp), %eax
movl	%eax, 4(%esp)	;num1
movl	$oform, (%esp)
call	printf		;printf(&#34;%d + %d = %dn&#34;, num1, num2, sum);
leave
ret&lt;/pre&gt;</description>
    </item>
    <item>
      <title>AT&amp;T assembly syntax</title>
      <link>https://qingbo-net.pages.dev/archives/7/</link>
      <pubDate>Sat, 11 Mar 2006 20:36:59 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/7/</guid>
      <description>&lt;p&gt;记得以前是弄过Windows里的汇编的，还调用了printf。现在不知道为什么不会弄了，只好转入Linux。现转载一篇AT&amp;amp;T语法格式的介绍（原文 h&lt;br&gt;
ttp://www.delorie.com/djgpp/doc/brennan/brennan_att_inline_djgpp.html ）：&lt;/p&gt;
&lt;h3 id=&#34;register-naming&#34;&gt;Register naming:&lt;/h3&gt;
&lt;p&gt;Register names are prefixed with “%”. To reference eax:&lt;/p&gt;
&lt;p&gt;AT&amp;amp;T: %eax&lt;/p&gt;
&lt;p&gt;Intel: eax&lt;/p&gt;
&lt;h3 id=&#34;sourcedestination-ordering&#34;&gt;Source/Destination Ordering:&lt;/h3&gt;
&lt;p&gt;In AT&amp;amp;T syntax (which is the UNIX standard, BTW) the source is always on&lt;br&gt;
the left, and the destination is always on the right.&lt;/p&gt;
&lt;p&gt;So let’s load ebx with the value in eax:&lt;/p&gt;
&lt;p&gt;AT&amp;amp;T: movl %eax, %ebx&lt;/p&gt;
&lt;p&gt;Intel: mov ebx, eax&lt;/p&gt;
&lt;h3 id=&#34;constant-valueimmediate-value-format&#34;&gt;Constant value/immediate value format:&lt;/h3&gt;
&lt;p&gt;You must prefix all constant/immediate values with “$”.&lt;/p&gt;</description>
    </item>
    <item>
      <title>锻炼身体，好好学习</title>
      <link>https://qingbo-net.pages.dev/archives/6/</link>
      <pubDate>Thu, 09 Mar 2006 06:44:23 +0000</pubDate>
      <guid>https://qingbo-net.pages.dev/archives/6/</guid>
      <description>&lt;p&gt;上大学后体质越来越差了，上学期竟得了气胸，唉。&lt;br&gt;
最近决定每天早上打会篮球，昨天早上去了，中午没睡觉，结果今天早上没起来，中等补打了会，呵呵。坚持下去，身体会好起来的。&lt;br&gt;
记得高中的时候，在家里摸那个房梁，可以超半截手指的，这次回家只摸到了一次，后来再也摸不到了。。。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
