<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/feedsky2.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.solrex.cn" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/solrex" type="application/rss+xml"></fs:self_link><lastBuildDate>Wed, 01 Feb 2012 10:00:24 GMT</lastBuildDate><title>Solrex Shuffling</title><description>Engineering a better life, programming a great future.</description><image><url>http://www.feedsky.com/feed/solrex/sc/gif</url><title>Solrex Shuffling</title><link>http://blog.solrex.org</link></image><link>http://blog.solrex.org</link><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><language>en</language><pubDate>Wed, 01 Feb 2012 10:03:21 GMT</pubDate><item><title>灯泡接口</title><link>http://blog.solrex.org/articles/bulb-caps.html</link><content:encoded>&lt;p&gt;我以前是一个略具 geek 精神的人。现在不算了，写出来的好玩的计算机技术文章也没那么多了。虽然变无趣了，但我还有生活，所以我决定发掘一下其它的领域。生活中的琐事虽小，仔细琢磨下却有一些有趣的知识在里面。某些人从极小的时候就掌握的常识，对其他人来说可能到老都不明白。典型的例子有识别地图、指南针、手表或者分辨麦苗、韭菜等。&lt;/p&gt;
&lt;p&gt;今天说的灯泡接口，也是类似。我从小到大，做过不少次爬上跳下换灯泡的活儿，本来觉得是一件很稀松平常的事情。但自食其力后才发现，原来也没那么简单，至少面临着一个复杂的问题：怎样选购正确的灯泡？&lt;/p&gt;
&lt;p&gt;在我老家那个落后的小城镇里，很多东西都是二元的。免费电视信号只有两个：县台和县教育台；（铁路）地下道只有两个：东地下道和西地下道；灯泡也只有两种：(螺)丝口或者挂口。这样购买的风险很低。白炽灯泡一元一个，实在不行的话，买两个不同接口的灯泡就完了。反正在我小的时候有过买错灯泡的经历，算不得难堪。&lt;/p&gt;
&lt;p&gt;长大后忽然发现，这世界不再是二元的了。典型的例子就是普通灯泡接口不再是两种，灯泡商品也不再是两种，当然价钱也不再是一元。去年年初，我老婆从公司带回来一个小台灯。它有一个圆盘形的底座，底座中央是一个笔直的灯杆，看起来像是一个倒立的图钉。在图钉的钉尖儿上是灯泡的接口，有一个可爱的圆柱状塑料灯罩可以把灯泡罩起来。灯泡的接口很奇怪，看起来是丝口，但又比丝口细。包装盒上的文字介绍极少，少到几乎无法阅读。在这些几乎无法阅读的文字中，我找到一个神奇的代码：E14。凭着直觉，我认出这应该是灯泡接口的型号。&lt;/p&gt;
&lt;p&gt;我用来认知灯泡世界的模型改变了，只好重新建立模型。然后我才知道，原来我平常说的丝口，学名应该叫做“爱迪生螺旋（&lt;a href=&quot;http://en.wikipedia.org/wiki/Edison_screw&quot;&gt;Edison Screw&lt;/a&gt;）接口”  ，更确切一些，应该叫做“中型爱迪生螺旋（Medium Edison Screw）” 或者“E27”接口，即直径为 27 毫米的爱迪生螺旋接口。显而易见，除了E27，肯定还有其它的 E* 接口，例如上文提到的“E14”。此外，原来旧式手电筒上常见的小灯泡接口，也属于这一家族：“E10”。&lt;/p&gt;
&lt;p&gt;从螺旋接口的型号上来看，中国普遍使用的是欧制接口。我不知道标准是如何制定的，但从查到的信息来看，中国最早的电灯公司是1861年英国商人办的“汉口电灯公司”，采用欧制接口可能跟我国 19 世纪首先被欧洲入侵的这一段历史有一定的关系。&lt;/p&gt;
&lt;p&gt;与螺旋接口类似，卡口（或挂口，&lt;a href=&quot;http://en.wikipedia.org/wiki/Bayonet_mount#Bulb_bayonet_mounts&quot;&gt;Bayonet Mount&lt;/a&gt;）也是一个家族 。我们通常家庭使用的，应该是“B22d”接口，即直径为 22 毫米，带双（double）接触点的卡口。此外还有射灯常用的“GU5.3”或者“GU10”接口，即插脚式U型接口，也属于卡口的一种。&lt;/p&gt;
&lt;p&gt;在我看来，卡口要比丝口更安全，因为其露出的金属部分是不带电的，无意中摸到内部带电的弹簧突起比较困难。但奇怪的是周围的卡口灯座越来越少，我对这个现象非常好奇，却不知道其原因。&lt;/p&gt;
&lt;p&gt;当然，除了上面说的这两个系列之外，还有其它的系列接口，可以参考这篇文档《&lt;a href=&quot;http://www.google.com/#hl=en&amp;#038;site=&amp;#038;q=%22%E7%81%AF%E5%A4%B4%E3%80%81%E7%81%AF%E5%BA%A7%E7%9A%84%E5%9E%8B%E5%8F%B7%E5%91%BD%E5%90%8D%E6%96%B9%E6%B3%95%E5%8F%8A%E5%B8%B8%E7%94%A8%E5%9E%8B%E5%8F%B7%22&amp;#038;btnK=Google+Search&amp;#038;oq=&amp;#038;aq=&amp;#038;aqi=&amp;#038;aql=&amp;#038;gs_sm=&amp;#038;gs_upl=&amp;#038;bav=on.2,or.r_gc.r_pw.r_cp.,cf.osb&amp;#038;fp=c63f254fa8c1c4db&amp;#038;biw=1280&amp;#038;bih=699&quot;&gt;灯头、灯座的型号命名方法及常用型号&lt;/a&gt;》 。不过其中一些，例如预聚焦式、凹点式或者汽车用灯接口，一般就只有专业人士才用得着了。&lt;/p&gt;
&lt;h3&gt;您可能对这些感兴趣：&lt;/h3&gt;
&lt;ul class=&quot;related_post&quot;&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601236018/solrex/feedsky/s.gif?r=http://blog.solrex.org/articles/bulb-caps.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.solrex.org/articles/bulb-caps.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>我以前是一个略具 geek 精神的人。现在不算了，写出来的好玩的计算机技术文章也没那么多了。虽然变无趣了，但我还有生活，所以我决定发掘一下其它的领域。生活中的琐事虽小，仔细琢磨下却有一些有趣的知识在里面。某些人从极小的时候就掌握的常识，对其他人来说可能到老都不明白。典型的例子有识别地图、指南针、手表或者分辨麦苗、韭菜等。 今天说的灯泡接口，也是类似。我从小到大，做过不少次爬上跳下换灯泡的活儿，本来觉得是一件很稀松平常的事情。但自食其力后才发现，原来也没那么简单，至少面临着一个复杂的问题：怎样选购正确的灯泡？ 在我老家那个落后的小城镇里，很多东西都是二元的。免费电视信号只有两个：县台和县教育台；（铁路）地下道只有两个：东地下道和西地下道；灯泡也只有两种：(螺)丝口或者挂口。这样购买的风险很低。白炽灯泡一元一个，实在不行的话，买两个不同接口的灯泡就完了。反正在我小的时候有过买错灯泡的经历，算不得难堪。 长大后忽然发现，这世界不再是二元的了。典型的例子就是普通灯泡接口不再是两种，灯泡商品也不再是两种，当然价钱也不再是一元。去年年初，我老婆从公司带回来一个小台灯。它有一个圆盘形的底座，底座中央是一个笔直的灯杆，看起来像是一个倒立的图钉。在图钉的钉尖儿上是灯泡的接口，有一个可爱的圆柱状塑料灯罩可以把灯泡罩起来。灯泡的接口很奇怪，看起来是丝口，但又比丝口细。包装盒上的文字介绍极少，少到几乎无法阅读。在这些几乎无法阅读的文字中，我找到一个神奇的代码：E14。凭着直觉，我认出这应该是灯泡接口的型号。 我用来认知灯泡世界的模型改变了，只好重新建立模型。然后我才知道，原来我平常说的丝口，学名应该叫做“爱迪生螺旋（Edison Screw）接口” &amp;#8230; &lt;a href=&quot;http://blog.solrex.org/articles/bulb-caps.html&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601236018/solrex/feedsky/s.gif?r=http://blog.solrex.org/articles/bulb-caps.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>E10</category><category>生活</category><category>Bayonet</category><category>GU10</category><category>Bulb Cap</category><category>Edison Screw</category><category>Bulb</category><category>B22d</category><category>B22</category><category>E14</category><category>E27</category><category>社会</category><pubDate>Wed, 01 Feb 2012 18:00:24 +0800</pubDate><author>Solrex Yang</author><comments>http://blog.solrex.org/articles/bulb-caps.html#comments</comments><guid isPermaLink="false">http://blog.solrex.org/?p=639853</guid><dc:creator>Solrex Yang</dc:creator><fs:srclink>http://blog.solrex.org/articles/bulb-caps.html</fs:srclink><fs:srcfeed>http://blog.solrex.org/feed/</fs:srcfeed><fs:itemid>feedsky/solrex/~7985859/601236018/4221199</fs:itemid></item><item><title>裸婚</title><link>http://blog.solrex.org/articles/get-married.html</link><content:encoded>&lt;p&gt;&lt;div id=&quot;attachment_639850&quot; class=&quot;wp-caption alignnone&quot; style=&quot;width: 610px&quot;&gt;&lt;a href=&quot;http://blog.solrex.org/wp-content/uploads/2012/01/民政局黑白.jpg&quot;&gt;&lt;img src=&quot;http://blog.solrex.org/wp-content/uploads/2012/01/民政局黑白-600x867.jpg&quot; alt=&quot;裸婚&quot; title=&quot;裸婚&quot; width=&quot;600&quot; height=&quot;867&quot; class=&quot;size-medium wp-image-639850&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;裸婚&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
&lt;h3&gt;您可能对这些感兴趣：&lt;/h3&gt;
&lt;ul class=&quot;related_post&quot;&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601236019/solrex/feedsky/s.gif?r=http://blog.solrex.org/articles/get-married.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.solrex.org/articles/get-married.html/feed</wfw:commentRss><slash:comments>17</slash:comments><description>您可能对这些感兴趣：&lt;img src=&quot;http://www1.feedsky.com/t1/601236019/solrex/feedsky/s.gif?r=http://blog.solrex.org/articles/get-married.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>爱情</category><pubDate>Sat, 14 Jan 2012 12:24:22 +0800</pubDate><author>Solrex Yang</author><comments>http://blog.solrex.org/articles/get-married.html#comments</comments><guid isPermaLink="false">http://blog.solrex.org/?p=639849</guid><dc:creator>Solrex Yang</dc:creator><fs:srclink>http://blog.solrex.org/articles/get-married.html</fs:srclink><fs:srcfeed>http://blog.solrex.org/feed/</fs:srcfeed><fs:itemid>feedsky/solrex/~7985859/601236019/4221199</fs:itemid></item><item><title>2012的前一年</title><link>http://blog.solrex.org/articles/the-year-before-2012.html</link><content:encoded>&lt;p&gt;回顾了一下我的 2011 年，做了下面这幅图：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.solrex.org/wp-content/uploads/2012/01/my_2011.png&quot;&gt;&lt;img src=&quot;http://blog.solrex.org/wp-content/uploads/2012/01/my_2011.png&quot; alt=&quot;2012 的前一年&quot; title=&quot;2012 的前一年&quot; width=&quot;600&quot; height=&quot;1380&quot; class=&quot;alignnone size-full wp-image-639838&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;您可能对这些感兴趣：&lt;/h3&gt;
&lt;ul class=&quot;related_post&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/five-days-in-qingdao.html&quot; title=&quot;青岛行记&quot;&gt;青岛行记&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(4)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;在种种客观、主观条件下，我和媳妇儿同时决定上周休假一周散散心。选在十一之后，主要是为了人少点儿、住店...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/road-test-passed.html&quot; title=&quot;通过科目三路考&quot;&gt;通过科目三路考&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(2)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;前天晚上通过科目三路考，我为期半年的驾校学习总算结束了。想起来这半年也是折腾不断。我是 2 月底参加...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/two-days-in-chengde.html&quot; title=&quot;承德行记&quot;&gt;承德行记&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(5)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;来北京几年，周边去的地方也不多。今年大组 building 选择了承德，那么自然愿意去到彼一游了。由...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/some-household-affairs.html&quot; title=&quot;家居二三事&quot;&gt;家居二三事&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(3)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;以前曾经有过吐槽，租房住的一大缺憾就是没法按照自己的想法布置房子，即使看上了某样家具，也能负担得起，...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/freshman-year-in-baidu.html&quot; title=&quot;在百度的第一年&quot;&gt;在百度的第一年&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(1)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;半夜精神有些亢奋，混乱的思绪在脑袋里滚来滚去，没来由地忽然想起在百度这一年。想起这一年可以总结为：前...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/learning-to-drive.html&quot; title=&quot;开始学车&quot;&gt;开始学车&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(3)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;我终于又开始着手实现今年的一个愿望：学会开车。报的是北京靠南的一家驾校，东方时尚。因为这个驾校离我家...&lt;/small&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601236020/solrex/feedsky/s.gif?r=http://blog.solrex.org/articles/the-year-before-2012.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.solrex.org/articles/the-year-before-2012.html/feed</wfw:commentRss><slash:comments>2</slash:comments><description>回顾了一下我的 2011 年，做了下面这幅图： 您可能对这些感兴趣： 青岛行记 (4) - 在种种客观、主观条件下，我和媳妇儿同时决定上周休假一周散散心。选在十一之后，主要是为了人少点儿、住店... &amp;#8230; &lt;a href=&quot;http://blog.solrex.org/articles/the-year-before-2012.html&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601236020/solrex/feedsky/s.gif?r=http://blog.solrex.org/articles/the-year-before-2012.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>生活</category><category>回忆</category><category>Data Visualization</category><category>所谓文艺</category><pubDate>Sun, 08 Jan 2012 00:35:11 +0800</pubDate><author>Solrex Yang</author><comments>http://blog.solrex.org/articles/the-year-before-2012.html#comments</comments><guid isPermaLink="false">http://blog.solrex.org/?p=639837</guid><dc:creator>Solrex Yang</dc:creator><fs:srclink>http://blog.solrex.org/articles/the-year-before-2012.html</fs:srclink><fs:srcfeed>http://blog.solrex.org/feed/</fs:srcfeed><fs:itemid>feedsky/solrex/~7985859/601236020/4221199</fs:itemid></item><item><title>史蒂夫·乔布斯传</title><link>http://blog.solrex.org/articles/steve-jobs.html</link><content:encoded>&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;br /&gt;
&lt;h3&gt;您可能对这些感兴趣：&lt;/h3&gt;
&lt;ul class=&quot;related_post&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/three-body-gift-book-giving.html&quot; title=&quot;《三体三部曲》赠书计划&quot;&gt;《三体三部曲》赠书计划&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(20)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;上周我又重读了一遍《三体》系列，在路上，用 Kindle。还记得原来《三体I》好像是在《科幻世界》上...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/it-birds-review.html&quot; title=&quot;因为真实才宝贵&quot;&gt;因为真实才宝贵&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(15)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;读大学时我很佩服一个老师。他教过我两门课，两门都是计算机类的课程，在数学系并不很受欢迎。他讲得不错，...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/lies-my-teacher-told-me.html&quot; title=&quot;Lies My Teacher Told Me&quot;&gt;Lies My Teacher Told Me&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(11)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;最早是从笑来的博客里看到这本书的信息，而目前从搜索结果来看，在中文世界里评论这本书的也只有笑来老师。...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/the-road-less-traveled-etc-5-books.html&quot; title=&quot;新购《少有人走的路》等五本书&quot;&gt;新购《少有人走的路》等五本书&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(2)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;其实本想只买《少有人走的路》一本书，但卓越网购书总价 49 元以上才给免配送费，于是就在卓越的特价店...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/book-legends-of-the-enigma.html&quot; title=&quot;密码传奇&quot;&gt;密码传奇&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(1)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;不想睡觉，就写一个小书评吧。《密码传奇》上次在国家科学图书馆借一本密码学教材的时候，碰巧看到了这本书...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/can-you-feel-the-pressure-frombooks.html&quot; title=&quot;你能感到书本给你的压力吗&quot;&gt;你能感到书本给你的压力吗&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(9)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;你能感到书本给你的压力吗？随着案头累积的书越来越多，我忽然想到这个问题，因为我发现我越来越为这个焦虑...&lt;/small&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601236021/solrex/feedsky/s.gif?r=http://blog.solrex.org/articles/steve-jobs.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.solrex.org/articles/steve-jobs.html/feed</wfw:commentRss><slash:comments>1</slash:comments><description>我一直羞于去崇拜某个人，死去的或者正在死去的。我总害怕他做了或者将要做一件我并不认同的事情，这就好比冬至吃饺子时吃到一块脏兮兮的硬币，不是每个人都能享受这种运气。所幸的是《史蒂夫·乔布斯传》的作者所持角度还算客观。读完这本书之后你不免去崇拜乔布斯，但又会有所保留。你会想：我真希望能达到他那样的成就，却不想成为他那样的人。 每个人做事都有自己的方法，但乔布斯采用的那种，恐怕要被归到异类中去。只有他那种天生的特质，结合独特的人生经历，还有过早成功的光环，才能造就那样强大的现实扭曲力场。跋扈如他那样，做一个打工仔的话，恐怕不出半月就要卷铺盖走人了。 在他的传奇一生中，有一股认真劲儿让人不能不佩服。包括他对事件策划、产品外观、字体、广告、包装，甚至于名片美学上的执念，无不让你觉得这家伙真倔，真难办。但当你转了一圈儿，看到那么多平庸的玩意儿时，你就会想：哦，这家伙还是有一定的道理的。 除了认真之外，他还有一点让我非常羡慕的，就是不屈于现实。软驱、吸入式光驱、玻璃屏幕、拉丝铝外框，到处都透着不妥协。但奇迹的是，那些硅谷工程师们居然办到了！这一点也被我归结为我们信息技术落后于硅谷的原因，奇思妙想得不到尊重，创新的阻力远大于推动力，有批判性，无建设性。 如果在这里赞扬他，能够列出的点还有很多。看完这本传记后，我甚至有去买苹果产品的冲动。但就像前面所说，我，一个平庸的家伙，对乔布斯的革命性的设计和产品，一直没有足够到转化为购买力的欣赏。创新是一样高投入的工作，必须有高回报的支持，而这依赖于掏腰包的人的欣赏和价值认可。对于某个产品来说是这样，对于一个公司来说，同样如此。可惜的是，很多公司的老板更像我，而不是乔布斯。 您可能对这些感兴趣： 《三体三部曲》赠书计划 (20) &amp;#8230; &lt;a href=&quot;http://blog.solrex.org/articles/steve-jobs.html&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601236021/solrex/feedsky/s.gif?r=http://blog.solrex.org/articles/steve-jobs.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Book</category><category>IT杂谈</category><category>Biography</category><category>Steve Jobs</category><category>读书</category><pubDate>Thu, 29 Dec 2011 01:18:56 +0800</pubDate><author>Solrex Yang</author><comments>http://blog.solrex.org/articles/steve-jobs.html#comments</comments><guid isPermaLink="false">http://blog.solrex.org/?p=639828</guid><dc:creator>Solrex Yang</dc:creator><fs:srclink>http://blog.solrex.org/articles/steve-jobs.html</fs:srclink><fs:srcfeed>http://blog.solrex.org/feed/</fs:srcfeed><fs:itemid>feedsky/solrex/~7985859/601236021/4221199</fs:itemid></item><item><title>std::sort 的仿函数参数</title><link>http://blog.solrex.org/articles/using-functor-in-sort.html</link><content:encoded>&lt;p&gt;因为习惯了 qsort 的函数指针参数，以前用 std::sort 的时候一般也是传函数指针而不是仿函数（functor）。从很多示例程序来看，貌似没有什么大的不同。但是直到今天我才醒悟，原来是示例太简单了啊！&lt;/p&gt;
&lt;p&gt;具体来说，我今天遇到了一个问题：要对一个表进行排序，每个字段可能是升序，可能是降序，也有不同的类型，所以排序的时候需要根据这些信息进行比较。比较函数不能是类成员函数，但我又的确要用到类成员的信息，函数接口又不能变，着实发愁。愁了就只能 Google，发现原来仿函数可以轻松地搞定这件事情。&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
&lt;span style=&quot;color: rgb(0, 136, 0); &quot;&gt;// 来自 &lt;a href=&quot;http://stackoverflow.com/a/1902360&quot;&gt;http://stackoverflow.com/a/1902360&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: rgb(0, 0, 128); font-weight: bold; &quot;&gt;class&lt;/span&gt; MyClass{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: rgb(0, 136, 0); &quot;&gt;// ...&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: rgb(0, 0, 128); font-weight: bold; &quot;&gt;struct&lt;/span&gt; doCompare&lt;br /&gt;
&amp;nbsp;&amp;nbsp; { &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; doCompare( &lt;span style=&quot;color: rgb(0, 0, 128); font-weight: bold; &quot;&gt;const&lt;/span&gt; MyClass&amp;amp; info ) : m_info(info) { } &lt;span style=&quot;color: rgb(0, 136, 0); &quot;&gt;// only if you really need the object state&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: rgb(0, 0, 128); font-weight: bold; &quot;&gt;const&lt;/span&gt; MyClass&amp;amp; m_info;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: rgb(0, 0, 128); font-weight: bold; &quot;&gt;bool&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 128); font-weight: bold; &quot;&gt;operator&lt;/span&gt;()( &lt;span style=&quot;color: rgb(0, 0, 128); font-weight: bold; &quot;&gt;const&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 128); font-weight: bold; &quot;&gt;int&lt;/span&gt; &amp;amp; i1, &lt;span style=&quot;color: rgb(0, 0, 128); font-weight: bold; &quot;&gt;const&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 128); font-weight: bold; &quot;&gt;int&lt;/span&gt; &amp;amp; i2&amp;nbsp; )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: rgb(0, 136, 0); &quot;&gt;// comparison code using m_info&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp; };&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; doSort() &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { std::sort( arr, arr+someSize, doCompare(*&lt;span style=&quot;color: rgb(0, 0, 128); font-weight: bold; &quot;&gt;this&lt;/span&gt;) ); }&lt;br /&gt;
};
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;简单点儿说，因为仿函数是个类，也可以有成员变量，构造的时候可以传参进去初始化，这样就能实现更灵活的比较方法。这么简单的道理，为什么之前我就是想不到呢？&lt;/p&gt;
&lt;p&gt;此外值得一提的是，std::sort 要求比较的结果是 strict weak order，就是说要严格小于才返回 true。这就意味着，仅仅对比较结果取反，是无法实现逆序的。因为小于的取反不是大于，而是大于等于。&lt;/p&gt;
&lt;p&gt;我们有过经验，如果相等的时候也返回 true，可能会导致某些标准库实现的 sort 函数指针越界，导致程序出错。所以要千万避免犯这个错误。&lt;br /&gt;
&lt;h3&gt;您可能对这些感兴趣：&lt;/h3&gt;
&lt;ul class=&quot;related_post&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/cygwin-gcc-qsort-error-ext.html&quot; title=&quot;Cygwin GCC qsort 函数错误（续）&quot;&gt;Cygwin GCC qsort 函数错误（续）&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(0)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;上一篇文章中提到我在为 qsort 写 compare 函数时犯了一个愚蠢的错误：我脑袋陷入了一个错...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/cxx11-changes-in-levedb-compiling-error.html&quot; title=&quot;Leveldb 编译错误背后的C++标准变化&quot;&gt;Leveldb 编译错误背后的C++标准变化&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(1)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;在编译 Levedb 时，我遇到了这个错误：g++ -c -I. -I./include -fno-...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/road-test-passed.html&quot; title=&quot;通过科目三路考&quot;&gt;通过科目三路考&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(2)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;前天晚上通过科目三路考，我为期半年的驾校学习总算结束了。想起来这半年也是折腾不断。我是 2 月底参加...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/epoll-event-epollrdhup.html&quot; title=&quot;epoll 事件之 EPOLLRDHUP&quot;&gt;epoll 事件之 EPOLLRDHUP&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(2)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;在对系统问题进行排查时，我发现了一个奇怪的现象：明明是对方断开请求，系统却报告一个查询失败的错误，但...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/raii-or-zombie-object.html&quot; title=&quot;僵尸对象或 RAII&quot;&gt;僵尸对象或 RAII&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(4)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;我最近在想这个问题，到底要不要在程序中使用异常？以前写的 C 代码比较多，即使写 C++，基本上也是...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/new-wordpress-theme.html&quot; title=&quot;WP 换了个新主题&quot;&gt;WP 换了个新主题&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(6)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;我也记不得从什么时候开始用 mg12 写的 iNove 主题了。当时选择它的主要原因是贴心，集成了很...&lt;/small&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601236022/solrex/feedsky/s.gif?r=http://blog.solrex.org/articles/using-functor-in-sort.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.solrex.org/articles/using-functor-in-sort.html/feed</wfw:commentRss><slash:comments>1</slash:comments><description>因为习惯了 qsort 的函数指针参数，以前用 std::sort 的时候一般也是传函数指针而不是仿函数（functor）。从很多示例程序来看，貌似没有什么大的不同。但是直到今天我才醒悟，原来是示例太简单了啊！ 具体来说，我今天遇到了一个问题：要对一个表进行排序，每个字段可能是升序，可能是降序，也有不同的类型，所以排序的时候需要根据这些信息进行比较。比较函数不能是类成员函数，但我又的确要用到类成员的信息，函数接口又不能变，着实发愁。愁了就只能 Google，发现原来仿函数可以轻松地搞定这件事情。 // &amp;#8230; &lt;a href=&quot;http://blog.solrex.org/articles/using-functor-in-sort.html&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601236022/solrex/feedsky/s.gif?r=http://blog.solrex.org/articles/using-functor-in-sort.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Quick Sort</category><category>Functor</category><category>Compare</category><category>Sort</category><category>编程</category><category>STL</category><pubDate>Fri, 02 Dec 2011 17:18:31 +0800</pubDate><author>Solrex Yang</author><comments>http://blog.solrex.org/articles/using-functor-in-sort.html#comments</comments><guid isPermaLink="false">http://blog.solrex.org/?p=639813</guid><dc:creator>Solrex Yang</dc:creator><fs:srclink>http://blog.solrex.org/articles/using-functor-in-sort.html</fs:srclink><fs:srcfeed>http://blog.solrex.org/feed/</fs:srcfeed><fs:itemid>feedsky/solrex/~7985859/601236022/4221199</fs:itemid></item><item><title>第一次香山</title><link>http://blog.solrex.org/articles/xiangshan-the-first-time.html</link><content:encoded>&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;有人可能觉得很习惯，但我真厌倦这些个装逼的词儿。就比如拿 5D Mark II 相机非得叫“无敌兔”，佳能 EF 50/1.8 镜头叫“小痰盂”，还有各种“小白、小小白、爱死小白”等。唉，难道就不能正正经经地说话？我以后可能慢慢地会理解这些词的含义，但我也会尽力地不去使用这些词。&lt;/p&gt;
&lt;p&gt;再说回来，在我很久很久以前拟定计划时，是希望从珠联大酒楼-海军第二招待所-松鹤山庄那个香山入口进去，骑防火道熟悉一下香山的地形。以后有机会了再跟着别人走山地。但没成想到的是，因为什么森林公园养护完成开放之类，除正门外的其它门大多关闭不让走了。有一个老大爷在那拦各种车，行人如果不是当地居民也会被拦下。&lt;/p&gt;
&lt;p&gt;无奈只能另想它法，有人给我说珠联大酒楼南面不远有一个山地入口。于是我就战战兢兢地从一个挂着军事禁区牌子的路口进去了，进去之后右转走到尽头有个看起来像部队的院子。大门右侧有条小路，我就很冒失地骑了进去。刚开始没有什么坡，还能骑。&lt;/p&gt;
&lt;div id=&quot;attachment_639800&quot; class=&quot;wp-caption alignnone&quot; style=&quot;width: 610px&quot;&gt;&lt;a href=&quot;http://blog.solrex.org/wp-content/uploads/2011/11/IMG_20111112_130154.jpg&quot;&gt;&lt;img src=&quot;http://blog.solrex.org/wp-content/uploads/2011/11/IMG_20111112_130154-600x450.jpg&quot; alt=&quot;山路的开始阶段&quot; title=&quot;山路的开始阶段&quot; width=&quot;600&quot; height=&quot;450&quot; class=&quot;size-medium wp-image-639800&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;山路的开始阶段&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;骑没多久就到了一个挺长的围墙边，从那儿开始就有些变态了。再加上从我家到香山路上已经花了 30 公里了，体力也跟不上，于是很多坡就是推过去的了。下面是一个特别变态的地方，下降约有一米，路外侧有个大石块，内侧小沟不到一尺宽，还拐个弯儿。我觉得如果不从大石头上飞过去，走内侧不倒也得磕牙盘，只好无奈地扛着车过去了。&lt;/p&gt;
&lt;div id=&quot;attachment_639801&quot; class=&quot;wp-caption alignnone&quot; style=&quot;width: 610px&quot;&gt;&lt;a href=&quot;http://blog.solrex.org/wp-content/uploads/2011/11/IMG_20111112_132224.jpg&quot;&gt;&lt;img src=&quot;http://blog.solrex.org/wp-content/uploads/2011/11/IMG_20111112_132224-600x450.jpg&quot; alt=&quot;变态小坡&quot; title=&quot;变态小坡&quot; width=&quot;600&quot; height=&quot;450&quot; class=&quot;size-medium wp-image-639801&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;变态小坡&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;实话说，走的这段山路我是又累又怕，我这种平原长大的孩子哪儿骑过这种路呀？左侧是石壁，右侧是山崖，掉下去即使有小树挡着，也好不到哪儿去。我是好不容易捱到了防火道的出口啊！这个出口外面应该是梅园。&lt;/p&gt;
&lt;div id=&quot;attachment_639803&quot; class=&quot;wp-caption alignnone&quot; style=&quot;width: 610px&quot;&gt;&lt;a href=&quot;http://blog.solrex.org/wp-content/uploads/2011/11/IMG_20111112_133440.jpg&quot;&gt;&lt;img src=&quot;http://blog.solrex.org/wp-content/uploads/2011/11/IMG_20111112_133440-600x450.jpg&quot; alt=&quot;防火道-梅园&quot; title=&quot;防火道-梅园&quot; width=&quot;600&quot; height=&quot;450&quot; class=&quot;size-medium wp-image-639803&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;防火道-梅园&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;回来后我回顾了一下这段上山线路，我估计我走的可能是果园的上山路线，但是后来可能走岔了，所以才从梅园上了防火道。中午到下午这段路上太阳不多，基本上都在阴影下，不会很热。虽然看到防火道很兴奋，但无奈地发现自己已经木有力气了，于是只稍往上爬了一点儿，就溜车下去了。&lt;/p&gt;
&lt;div id=&quot;attachment_639805&quot; class=&quot;wp-caption alignnone&quot; style=&quot;width: 610px&quot;&gt;&lt;a href=&quot;http://blog.solrex.org/wp-content/uploads/2011/11/IMG_3688.jpg&quot;&gt;&lt;img src=&quot;http://blog.solrex.org/wp-content/uploads/2011/11/IMG_3688-600x400.jpg&quot; alt=&quot;不知名建筑&quot; title=&quot;不知名建筑&quot; width=&quot;600&quot; height=&quot;400&quot; class=&quot;size-medium wp-image-639805&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;不知名建筑&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;唉，本来想继续写点儿的，被一个工作电话给弄烦了，罢了。&lt;br /&gt;
&lt;h3&gt;您可能对这些感兴趣：&lt;/h3&gt;
&lt;ul class=&quot;related_post&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/five-days-in-qingdao.html&quot; title=&quot;青岛行记&quot;&gt;青岛行记&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(4)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;在种种客观、主观条件下，我和媳妇儿同时决定上周休假一周散散心。选在十一之后，主要是为了人少点儿、住店...&lt;/small&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601236023/solrex/feedsky/s.gif?r=http://blog.solrex.org/articles/xiangshan-the-first-time.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.solrex.org/articles/xiangshan-the-first-time.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>下午在电视上看了个《李献计历险记》，直接没把我脑壳看坏掉。之后七荤八素地躺在床上，在似睡似醒中迷瞪了一个小时，睁开眼忽然看到一幅奇怪的景象，从窗帘缝隙中透过的一点亮光在三四秒内以肉眼可见的速度暗了下去。直到现在我也不确定那是现实还是梦中，但可以确定的一点是，我随后陷入了白日梦后的各种恶心、难受和不适中。 周末就是这样，可能安排个一到两件事，其它时间睡也不是，坐也不是。徒留些无聊烦躁心情在那，如此一来就特别羡慕那些把日程排得满满的人。为了不让自己烦躁，我也在尝试找一些不那么无聊的事情去做，比如骑车爬香山。 这个念头由来已久，但付诸实施却只是昨天的事。有各种原因，懒惰，周末不愿意动弹；住的太靠里，出城太远；没有人一起玩，不认识路之类的。真正促使我成行的是微博上的一句话，做好一件事的最好方法，就是去做这件事。 在我很久很久以前拟定计划时，最大的困难就是不认识路。值得一提的是，这个困难一部分来自于没有好的地图，另一部分来自于一些所谓老鸟的行话。在香山路线中，出现频率最高的有以下几个：海二招、鬼笑石、果快、茶棚、马道等等。理解这几个名字费了我不少劲，比如海二招原来是海军第二招待所的简称，而不是海淀区第二招待所；果快原来不是地名，是果园和快活林的简称。不过，惭愧地是，我现在还是不知道这几个地方在哪儿。 有人可能觉得很习惯，但我真厌倦这些个装逼的词儿。就比如拿 5D Mark II &amp;#8230; &lt;a href=&quot;http://blog.solrex.org/articles/xiangshan-the-first-time.html&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601236023/solrex/feedsky/s.gif?r=http://blog.solrex.org/articles/xiangshan-the-first-time.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Photo</category><category>Xiangshan</category><category>旅行</category><category>Cycling</category><pubDate>Sun, 13 Nov 2011 21:43:29 +0800</pubDate><author>Solrex Yang</author><comments>http://blog.solrex.org/articles/xiangshan-the-first-time.html#comments</comments><guid isPermaLink="false">http://blog.solrex.org/?p=639791</guid><dc:creator>Solrex Yang</dc:creator><fs:srclink>http://blog.solrex.org/articles/xiangshan-the-first-time.html</fs:srclink><fs:srcfeed>http://blog.solrex.org/feed/</fs:srcfeed><fs:itemid>feedsky/solrex/~7985859/601236023/4221199</fs:itemid></item><item><title>TCP Fast Open by Google 浅析</title><link>http://blog.solrex.org/articles/tcp-fast-open-by-google.html</link><content:encoded>&lt;p&gt;Google 将在今年 12 月的 ACM CoNEXT 会议上发表他们在改善 Web 应用响应时延方面的一个工作，通过修改 TCP 协议利用三次握手时进行数据交换的“&lt;a href=&quot;http://0-research.google.com.topcat.switchinc.org/pubs/pub37517.html&quot;&gt;TCP Fast Open&lt;/a&gt;”。虽然 paper 是两天前才释出，但相关的 &lt;a href=&quot;http://tools.ietf.org/html/draft-cheng-tcpm-fastopen-00&quot;&gt;RFC&lt;/a&gt; 草案则早在 2011 年 3 月份就提交到了 IETF，并且在两周前进行了一次 &lt;a href=&quot;http://tools.ietf.org/html/draft-cheng-tcpm-fastopen-01&quot;&gt;UPDATE&lt;/a&gt;，这里是 &lt;a href=&quot;http://tools.ietf.org/rfcdiff?url2=draft-cheng-tcpm-fastopen-01.txt&quot;&gt;DIFF&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;对于 TCP Fast Open 方案的内容，淘宝的一个朋友已经根据 RFC 草案进行了&lt;a href=&quot;http://www.pagefault.info/?p=282&quot;&gt;解读&lt;/a&gt;。我就不再赘述，感兴趣的朋友可以去看 paper 或者 RFC。我这里只是想讨论一下这个东西的应用前景。&lt;/p&gt;
&lt;p&gt;由于对背景并没有做深入了解，我相信已经有很多人尝试去做过类似的工作，但我想类似的工作应该没有得到过大规模的应用。对于已经成型很久很久的 TCP 协议，让人很难有修改它的欲望，因为改那么底层的东西意味着很多很多的麻烦。&lt;/p&gt;
&lt;p&gt;但是是否愿意付出代价，有一个前提是有没有足够的好处。TFO 给出的好处是：在 RTT (Round Trip Time) 比较低时，客户端页面加载时间优化大约在 4%~5%；RTT 越长，好处越大，平均大约在 25%。&lt;/p&gt;
&lt;div id=&quot;attachment_639782&quot; class=&quot;wp-caption alignnone&quot; style=&quot;width: 610px&quot;&gt;&lt;a href=&quot;http://blog.solrex.org/wp-content/uploads/2011/11/google-tfo.jpg&quot;&gt;&lt;img src=&quot;http://blog.solrex.org/wp-content/uploads/2011/11/google-tfo-600x283.jpg&quot; alt=&quot;Google TCP Fast Open Evaluation&quot; title=&quot;Google TCP Fast Open Evaluation&quot; width=&quot;600&quot; height=&quot;283&quot; class=&quot;size-medium wp-image-639782&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Google TCP Fast Open Evaluation&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;除了页面加载变快改善了用户体验之外，TFO 给服务器端也带来了一些好处。由于每个请求都节省了一个 RTT，相应地也减少了服务器端的 CPU 消耗。paper 中给出的数据是每秒事务数由 2876.4 上升到 3548.7。&lt;/p&gt;
&lt;p&gt;虽然 paper 中大部分时间在强调 TFO 对 web 页面加载的显著加速作用，但我认为即使 TFO 能成为互联网标准，它目前的状态离成为标准还有很长一段距离，因而在短期内它是无法影响到主流互联网世界的。但这并不意味着它没有机会，依小弟的愚见，目前它的推广应用可能有两个方向：&lt;/p&gt;
&lt;p&gt;1. 移动互联网。移动互联网的 RTT 目前远大于传统互联网(常理推测，需数据支撑)，因而一个 RTT 节省的效果无法被忽视；另外移动互联网终端操作系统多样化，不像桌面终端系统那么单一。 Google 自己就掌握着其中一个很重要的 android，百度也计划推出自己的“易平台”。这些互联网公司有动力去改善移动用户访问自身网站的用户体验。&lt;/p&gt;
&lt;p&gt;2. 互联网企业数据中心。虽然数据中心内部访问时延很低，但对于典型的请求/响应的服务而言，减少一次 RTT 带来的好处还是有吸引力的，最起码能减少计算能力浪费和增加吞吐吧。再加上很多企业内部使用的都是定制的开源操作系统和定制的网络库，升级的代价并不是那么高。如果我是企业基础设施的负责人，我想我会很慎重地考虑这个方案的。&lt;/p&gt;
&lt;h3&gt;您可能对这些感兴趣：&lt;/h3&gt;
&lt;ul class=&quot;related_post&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/the-vision-of-an-engineer.html&quot; title=&quot;技术人员的眼界&quot;&gt;技术人员的眼界&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(5)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;意识到眼界的重要性，最初是在大学时学长的交流会上。南大数学系有一个传统，每年总有那么两三次组织高年级...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/epoll-event-epollrdhup.html&quot; title=&quot;epoll 事件之 EPOLLRDHUP&quot;&gt;epoll 事件之 EPOLLRDHUP&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(2)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;在对系统问题进行排查时，我发现了一个奇怪的现象：明明是对方断开请求，系统却报告一个查询失败的错误，但...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/wifi-channel-choosing.html&quot; title=&quot;无线Wi-Fi路由器的信道选择&quot;&gt;无线Wi-Fi路由器的信道选择&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(4)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;早上起来看到一个朋友抱怨 Kindle 无法连接无线路由器，我有感而发，写了下面这篇微博：很多人从来...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/share-internet-access-with-adhoc-network.html&quot; title=&quot;使用无线自组网共享互联网接入&quot;&gt;使用无线自组网共享互联网接入&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(5)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;在这个互联网已经渗透入每个角落的时代，GUCAS 的网络接入收费显得非常不合时宜：（二年级以上同学）...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/problems-with-google-voice-rigister.html&quot; title=&quot;注册 Google Voice 的曲折经历&quot;&gt;注册 Google Voice 的曲折经历&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(18)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;昨天 iron-feet 同学给我讲了不少 Google Voice 的好处，搞得我也心痒痒的（技术...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/podcast-and-other-stuff.html&quot; title=&quot;播客和其它&quot;&gt;播客和其它&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(8)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;每隔一段时间，我都会到 Google Analytics 里面检查我博客的引入链接，主要关注那些个人...&lt;/small&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601236024/solrex/feedsky/s.gif?r=http://blog.solrex.org/articles/tcp-fast-open-by-google.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.solrex.org/articles/tcp-fast-open-by-google.html/feed</wfw:commentRss><slash:comments>2</slash:comments><description>Google 将在今年 12 月的 ACM CoNEXT 会议上发表他们在改善 Web &amp;#8230; &lt;a href=&quot;http://blog.solrex.org/articles/tcp-fast-open-by-google.html&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601236024/solrex/feedsky/s.gif?r=http://blog.solrex.org/articles/tcp-fast-open-by-google.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>TCP</category><category>Google</category><category>IT杂谈</category><category>Mobile</category><category>Network</category><category>无线和移动</category><pubDate>Thu, 10 Nov 2011 16:42:12 +0800</pubDate><author>Solrex Yang</author><comments>http://blog.solrex.org/articles/tcp-fast-open-by-google.html#comments</comments><guid isPermaLink="false">http://blog.solrex.org/?p=639776</guid><dc:creator>Solrex Yang</dc:creator><fs:srclink>http://blog.solrex.org/articles/tcp-fast-open-by-google.html</fs:srclink><fs:srcfeed>http://blog.solrex.org/feed/</fs:srcfeed><fs:itemid>feedsky/solrex/~7985859/601236024/4221199</fs:itemid></item><item><title>代码行统计工具-CLOC</title><link>http://blog.solrex.org/articles/cloc-source-lines-of-code-counter.html</link><content:encoded>&lt;p&gt;在工作中有时会有需要统计代码的行数，一般会用 wc 给出一个大致的结果。只不过在源代码文件分布比较分散，且存在多种不同类型语言的源代码时，wc 就不是特别适合了。&lt;/p&gt;
&lt;p&gt;在公司内部也见过一些同事实现类似功能的脚本，但我想这应该是一个通用的需求，于是就找到了这个工具 - &lt;a href=&quot;http://cloc.sourceforge.net&quot;&gt;CLOC&lt;/a&gt;。其实就是一个 perl 脚本，很好用，统计报告也很清晰。在这里推荐一下。下面是一个统计 leveldb 源代码行数的例子。&lt;/p&gt;
&lt;pre&gt;$ cloc .
     128 text files.
     123 unique files.
     353 files ignored.

http://cloc.sourceforge.net v 1.55  T=0.5 s (238.0 files/s, 46718.0 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
C++                             60           2012           1258          13124
C/C++ Header                    52            968           1458           2690
HTML                             3             84              0           1094
C                                1             33              7            255
make                             1             43             17            153
CSS                              1             10              1             78
Bourne Shell                     1              9             19             46
-------------------------------------------------------------------------------
SUM:                           119           3159           2760          17440
-------------------------------------------------------------------------------
&lt;/pre&gt;
&lt;h3&gt;您可能对这些感兴趣：&lt;/h3&gt;
&lt;ul class=&quot;related_post&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/an-ipv6-enabled-ntp-client-for-windows-in-python.html&quot; title=&quot;An IPv6 Enabled NTP Client for Windows in Python&quot;&gt;An IPv6 Enabled NTP Client for Windows in Python&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(2)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;Python NTP library (ntplib)  offers a simple inter...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/python-htp-client-for-windows.html&quot; title=&quot;一个 Windows 对时小工具&quot;&gt;一个 Windows 对时小工具&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(4)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;由于在 CERNET 内，我经常需要用代理上网，没办法直连到 NTP 服务器，因此不能使用 Wind...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/windows-tips-hotkeys-and-access-control-list.html&quot; title=&quot;Windows Tips: 修改热键和文件访问权限&quot;&gt;Windows Tips: 修改热键和文件访问权限&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(3)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;我平时习惯使用 Win+E 打开 Windows 的资源管理器，但对资源管理器的左侧栏一直不感冒。用...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/install-kscope-on-ubuntu-9-04.html&quot; title=&quot;在 Ubuntu 9.04 上安装 Kscope&quot;&gt;在 Ubuntu 9.04 上安装 Kscope&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(8)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;Kscope 是我很喜欢的 Linux 平台上的代码查看工具，因为我不会用 Emacs，vim + ...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/songbird-music-player.html&quot; title=&quot;跨平台音乐播放软件 Songbird&quot;&gt;跨平台音乐播放软件 Songbird&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(9)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;Songbird 是一款开源音乐播放软件，目前可以支持在 Windows, Linux 和 Mac ...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/packaging-1-src.html&quot; title=&quot;应用程序打包技术之一（源代码篇）&quot;&gt;应用程序打包技术之一（源代码篇）&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(2)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;1. 应用程序打包技术之一（源代码篇）2. 应用程序打包技术之二（deb篇）3. 应用程序打包技术之...&lt;/small&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601236025/solrex/feedsky/s.gif?r=http://blog.solrex.org/articles/cloc-source-lines-of-code-counter.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.solrex.org/articles/cloc-source-lines-of-code-counter.html/feed</wfw:commentRss><slash:comments>1</slash:comments><description>在工作中有时会有需要统计代码的行数，一般会用 wc 给出一个大致的结果。只不过在源代码文件分布比较分散，且存在多种不同类型语言的源代码时，wc 就不是特别适合了。 在公司内部也见过一些同事实现类似功能的脚本，但我想这应该是一个通用的需求，于是就找到了这个工具 - CLOC。其实就是一个 perl &amp;#8230; &lt;a href=&quot;http://blog.solrex.org/articles/cloc-source-lines-of-code-counter.html&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601236025/solrex/feedsky/s.gif?r=http://blog.solrex.org/articles/cloc-source-lines-of-code-counter.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Tools</category><category>应用软件</category><category>Software</category><category>Source</category><category>Open Source</category><category>Perl</category><pubDate>Sun, 06 Nov 2011 22:52:50 +0800</pubDate><author>Solrex Yang</author><comments>http://blog.solrex.org/articles/cloc-source-lines-of-code-counter.html#comments</comments><guid isPermaLink="false">http://blog.solrex.org/?p=639768</guid><dc:creator>Solrex Yang</dc:creator><fs:srclink>http://blog.solrex.org/articles/cloc-source-lines-of-code-counter.html</fs:srclink><fs:srcfeed>http://blog.solrex.org/feed/</fs:srcfeed><fs:itemid>feedsky/solrex/~7985859/601236025/4221199</fs:itemid></item><item><title>关于自动分裂的思考</title><link>http://blog.solrex.org/articles/on-automatic-splitting.html</link><content:encoded>&lt;p&gt;自动分裂是分布式系统中的一项重要技术，通常与自动迁移和负载均衡一起考虑，提供了系统的可扩展性和良好的性能。例如 Google 的 BigTable 和 Yahoo 的 PNUTS 都实现了类似的功能，我之前也认为这应该是一个好的分布式系统标配。&lt;/p&gt;
&lt;p&gt;但&lt;a href=&quot;/articles/facebook-realtime-hadoop-system.html&quot;&gt;读了 Facebook 关于实时 Hadoop 的文章&lt;/a&gt;后，结合我自己在工程上的实践，我开始反思这一想法，认识到了这个功能的一些局限性。&lt;/p&gt;
&lt;p&gt;Facebook 在打造实时 HBase 系统时，放弃了 HBase 提供的自动分裂，而专门开发了手工分裂功能。对此， Facebook 的解释是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;由于业务数据的均匀增长性，所有子表可能在相近的时间触发自动分裂，导致分裂风暴；合理安排的手工分裂可以避免这一情况，减少对生产环境的影响。&lt;/li&gt;
&lt;li&gt;手工分裂时在某个时间，子表的数目是稳定的，有利于进行调试和调优；自动分裂时很难把握住系统中子表的变化。&lt;/li&gt;
&lt;li&gt;在对日志文件问题进行后期处理时，子表没有分裂比有分裂要容易处理很多。因为应用日志到子表上时不用考虑是否已经分裂。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Facebook 给出的三个原因是非常合理的，我也很赞同，但我想补充一下我对自动分裂局限性的两个考虑：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;较难进行事故影响评估。对于一个严肃服务来说，发生系统事故时不仅要求尽快恢复，更为紧迫的要求是迅速给出影响评估。手工分裂时运维人员对系统中子表的分布情况有着更好的了解，能够更快地做出评估（而且一般影响面也可控一些）。&lt;/li&gt;
&lt;li&gt;较难进行数据恢复。当子表数据出现问题，或者数据源本身就有问题，要进行数据恢复时，手工分裂一方面能够准确地定位错误数据的位置，另一方面便于进行错误数据的处理（后台直接替换错误文件等，不单指 HBase）。而自动分裂时寻找错误数据位置本身就比较麻烦，由于子表可能一直在变动中，对错误数据进行处理也不容易。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;从上面列出的几点来看，使用、改造或者实现一个分布式系统时，不能仅仅考虑方案是否漂亮，还要考虑到该系统的具体应用场景。脱离了应用场景的系统实现，如同漂亮的水果，吃起来不一定甜。但令人感到讽刺的是，漂亮的水果一般比较贵。&lt;br /&gt;
&lt;h3&gt;您可能对这些感兴趣：&lt;/h3&gt;
&lt;ul class=&quot;related_post&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/facebook-realtime-hadoop-system.html&quot; title=&quot;Facebook的实时Hadoop系统&quot;&gt;Facebook的实时Hadoop系统&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(1)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;Facebook 在今年六月 SIGMOD 2011 上发表了一篇名为“Apache Hadoop ...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/oceanbase-architecture-note.html&quot; title=&quot;淘宝OceanBase架构笔记&quot;&gt;淘宝OceanBase架构笔记&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(1)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;[caption id=&quot;attachment_639438&quot; align=&quot;aligncenter...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/infobright-data-warehouse.html&quot; title=&quot;Infobright 数据仓库&quot;&gt;Infobright 数据仓库&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(1)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;最近有部分工作涉及到了 Infobright 数据仓库，就浏览了一些相关的资料，感觉很受启发。下面写...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/freshman-year-in-baidu.html&quot; title=&quot;在百度的第一年&quot;&gt;在百度的第一年&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(1)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;半夜精神有些亢奋，混乱的思绪在脑袋里滚来滚去，没来由地忽然想起在百度这一年。想起这一年可以总结为：前...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/can-a-mobile-app-do-this.html&quot; title=&quot;有没有这样一种手机应用?&quot;&gt;有没有这样一种手机应用?&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(8)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;Google 的 Jeff Dean 在演讲中提过：对一套系统来说，每年典型的事故率会是这样的：1....&lt;/small&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601236026/solrex/feedsky/s.gif?r=http://blog.solrex.org/articles/on-automatic-splitting.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.solrex.org/articles/on-automatic-splitting.html/feed</wfw:commentRss><slash:comments>1</slash:comments><description>自动分裂是分布式系统中的一项重要技术，通常与自动迁移和负载均衡一起考虑，提供了系统的可扩展性和良好的性能。例如 Google 的 BigTable 和 Yahoo 的 PNUTS &amp;#8230; &lt;a href=&quot;http://blog.solrex.org/articles/on-automatic-splitting.html&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601236026/solrex/feedsky/s.gif?r=http://blog.solrex.org/articles/on-automatic-splitting.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Facebook</category><category>HBase</category><category>Hadoop</category><category>Storage</category><category>分布式系统</category><category>Splitting</category><pubDate>Fri, 04 Nov 2011 00:43:36 +0800</pubDate><author>Solrex Yang</author><comments>http://blog.solrex.org/articles/on-automatic-splitting.html#comments</comments><guid isPermaLink="false">http://blog.solrex.org/?p=639751</guid><dc:creator>Solrex Yang</dc:creator><fs:srclink>http://blog.solrex.org/articles/on-automatic-splitting.html</fs:srclink><fs:srcfeed>http://blog.solrex.org/feed/</fs:srcfeed><fs:itemid>feedsky/solrex/~7985859/601236026/4221199</fs:itemid></item><item><title>青岛行记</title><link>http://blog.solrex.org/articles/five-days-in-qingdao.html</link><content:encoded>&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;我从青岛回来之后，看了一个名为《硬汉2》的电影。整个故事是在青岛取景拍摄的，一开头就是青岛天主教堂，熟悉的画面让我感觉好生激动。想要休闲的话，在家里宅着也未尝不可。但到一个陌生的地方总是一个更优的选择。在那里，困扰你的不再是日常的琐碎小事，而是完全不同的问题域。除此之外，还有增长见闻的好处，这一点对我是颇有吸引力的。特别是在当地能够发生一些有趣的、甜蜜的、或者忧伤的故事，就再好不过了。&lt;/p&gt;
&lt;p&gt;我不太善于描述旅行中的人和事，再加上到青岛玩纯粹是休息，没办法作为攻略分享。只好挑几张图片出来，随便看看吧。&lt;/p&gt;
&lt;p&gt;
&lt;a href='http://blog.solrex.org/articles/five-days-in-qingdao.html/img_2274' title='栈桥'&gt;&lt;img width=&quot;200&quot; height=&quot;133&quot; src=&quot;http://blog.solrex.org/wp-content/uploads/2011/10/IMG_2274-200x133.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;栈桥&quot; title=&quot;栈桥&quot; /&gt;&lt;/a&gt;
&lt;a href='http://blog.solrex.org/articles/five-days-in-qingdao.html/img_2199' title='青岛天主教堂'&gt;&lt;img width=&quot;200&quot; height=&quot;133&quot; src=&quot;http://blog.solrex.org/wp-content/uploads/2011/10/IMG_2199-200x133.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;青岛天主教堂&quot; title=&quot;青岛天主教堂&quot; /&gt;&lt;/a&gt;
&lt;a href='http://blog.solrex.org/articles/five-days-in-qingdao.html/img_2321' title='极地海洋世界，企鹅'&gt;&lt;img width=&quot;200&quot; height=&quot;133&quot; src=&quot;http://blog.solrex.org/wp-content/uploads/2011/10/IMG_2321-200x133.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;极地海洋世界，企鹅&quot; title=&quot;极地海洋世界，企鹅&quot; /&gt;&lt;/a&gt;
&lt;a href='http://blog.solrex.org/articles/five-days-in-qingdao.html/img_2381' title='极地海洋世界'&gt;&lt;img width=&quot;200&quot; height=&quot;133&quot; src=&quot;http://blog.solrex.org/wp-content/uploads/2011/10/IMG_2381-200x133.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;极地海洋世界&quot; title=&quot;极地海洋世界&quot; /&gt;&lt;/a&gt;
&lt;a href='http://blog.solrex.org/articles/five-days-in-qingdao.html/img_2409' title='极地海洋世界，吃奶鱼'&gt;&lt;img width=&quot;200&quot; height=&quot;133&quot; src=&quot;http://blog.solrex.org/wp-content/uploads/2011/10/IMG_2409-200x133.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;极地海洋世界，吃奶鱼&quot; title=&quot;极地海洋世界，吃奶鱼&quot; /&gt;&lt;/a&gt;
&lt;a href='http://blog.solrex.org/articles/five-days-in-qingdao.html/img_2457' title='极地海洋世界'&gt;&lt;img width=&quot;200&quot; height=&quot;133&quot; src=&quot;http://blog.solrex.org/wp-content/uploads/2011/10/IMG_2457-200x133.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;极地海洋世界&quot; title=&quot;极地海洋世界&quot; /&gt;&lt;/a&gt;
&lt;a href='http://blog.solrex.org/articles/five-days-in-qingdao.html/img_2536' title='奥帆中心，时间线'&gt;&lt;img width=&quot;200&quot; height=&quot;133&quot; src=&quot;http://blog.solrex.org/wp-content/uploads/2011/10/IMG_2536-200x133.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;奥帆中心，时间线&quot; title=&quot;奥帆中心，时间线&quot; /&gt;&lt;/a&gt;
&lt;a href='http://blog.solrex.org/articles/five-days-in-qingdao.html/img_2542' title='奥帆中心'&gt;&lt;img width=&quot;200&quot; height=&quot;133&quot; src=&quot;http://blog.solrex.org/wp-content/uploads/2011/10/IMG_2542-200x133.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;奥帆中心&quot; title=&quot;奥帆中心&quot; /&gt;&lt;/a&gt;
&lt;a href='http://blog.solrex.org/articles/five-days-in-qingdao.html/img_2548' title='奥帆中心'&gt;&lt;img width=&quot;200&quot; height=&quot;133&quot; src=&quot;http://blog.solrex.org/wp-content/uploads/2011/10/IMG_2548-200x133.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;奥帆中心&quot; title=&quot;奥帆中心&quot; /&gt;&lt;/a&gt;
&lt;a href='http://blog.solrex.org/articles/five-days-in-qingdao.html/img_2555' title='奥帆中心'&gt;&lt;img width=&quot;200&quot; height=&quot;133&quot; src=&quot;http://blog.solrex.org/wp-content/uploads/2011/10/IMG_2555-200x133.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;奥帆中心&quot; title=&quot;奥帆中心&quot; /&gt;&lt;/a&gt;
&lt;a href='http://blog.solrex.org/articles/five-days-in-qingdao.html/img_2651' title='改建自天文台的青年旅社'&gt;&lt;img width=&quot;200&quot; height=&quot;133&quot; src=&quot;http://blog.solrex.org/wp-content/uploads/2011/10/IMG_2651-200x133.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;改建自天文台的青年旅社&quot; title=&quot;改建自天文台的青年旅社&quot; /&gt;&lt;/a&gt;
&lt;a href='http://blog.solrex.org/articles/five-days-in-qingdao.html/img_2767' title='青岛基督教堂内景'&gt;&lt;img width=&quot;200&quot; height=&quot;133&quot; src=&quot;http://blog.solrex.org/wp-content/uploads/2011/10/IMG_2767-200x133.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;青岛基督教堂内景&quot; title=&quot;青岛基督教堂内景&quot; /&gt;&lt;/a&gt;
&lt;a href='http://blog.solrex.org/articles/five-days-in-qingdao.html/img_2823' title='青岛基督教堂外景'&gt;&lt;img width=&quot;200&quot; height=&quot;133&quot; src=&quot;http://blog.solrex.org/wp-content/uploads/2011/10/IMG_2823-200x133.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;青岛基督教堂外景&quot; title=&quot;青岛基督教堂外景&quot; /&gt;&lt;/a&gt;
&lt;a href='http://blog.solrex.org/articles/five-days-in-qingdao.html/img_2923' title='我媳妇儿'&gt;&lt;img width=&quot;200&quot; height=&quot;133&quot; src=&quot;http://blog.solrex.org/wp-content/uploads/2011/10/IMG_2923-200x133.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;我媳妇儿&quot; title=&quot;我媳妇儿&quot; /&gt;&lt;/a&gt;
&lt;a href='http://blog.solrex.org/articles/five-days-in-qingdao.html/img_3108' title='第二海水浴场'&gt;&lt;img width=&quot;200&quot; height=&quot;133&quot; src=&quot;http://blog.solrex.org/wp-content/uploads/2011/10/IMG_3108-200x133.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;第二海水浴场&quot; title=&quot;第二海水浴场&quot; /&gt;&lt;/a&gt;
&lt;a href='http://blog.solrex.org/articles/five-days-in-qingdao.html/img_3217' title='海岛渔村'&gt;&lt;img width=&quot;200&quot; height=&quot;133&quot; src=&quot;http://blog.solrex.org/wp-content/uploads/2011/10/IMG_3217-200x133.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;海岛渔村&quot; title=&quot;海岛渔村&quot; /&gt;&lt;/a&gt;
&lt;a href='http://blog.solrex.org/articles/five-days-in-qingdao.html/img_3222' title='无敌海景麦当劳'&gt;&lt;img width=&quot;200&quot; height=&quot;133&quot; src=&quot;http://blog.solrex.org/wp-content/uploads/2011/10/IMG_3222-200x133.jpg&quot; class=&quot;attachment-thumbnail&quot; alt=&quot;无敌海景麦当劳&quot; title=&quot;无敌海景麦当劳&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;h3&gt;您可能对这些感兴趣：&lt;/h3&gt;
&lt;ul class=&quot;related_post&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/two-days-in-chengde.html&quot; title=&quot;承德行记&quot;&gt;承德行记&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(5)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;来北京几年，周边去的地方也不多。今年大组 building 选择了承德，那么自然愿意去到彼一游了。由...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/the-passed-weekends.html&quot; title=&quot;逝去的周末&quot;&gt;逝去的周末&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(45)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;我觉得我越来越向居家男人的特质靠近了。虽然咱公司实行的是弹性工作制，不强制要求上班时间，但是我早上要...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/the-year-before-2012.html&quot; title=&quot;2012的前一年&quot;&gt;2012的前一年&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(2)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;回顾了一下我的 2011 年，做了下面这幅图：&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/xiangshan-the-first-time.html&quot; title=&quot;第一次香山&quot;&gt;第一次香山&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(0)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;下午在电视上看了个《李献计历险记》，直接没把我脑壳看坏掉。之后七荤八素地躺在床上，在似睡似醒中迷瞪了...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/road-test-passed.html&quot; title=&quot;通过科目三路考&quot;&gt;通过科目三路考&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(2)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;前天晚上通过科目三路考，我为期半年的驾校学习总算结束了。想起来这半年也是折腾不断。我是 2 月底参加...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.solrex.org/articles/some-household-affairs.html&quot; title=&quot;家居二三事&quot;&gt;家居二三事&lt;/a&gt; &lt;span class=&quot;count&quot;&gt;(3)&lt;/span&gt; - &lt;small class=&quot;excerpt&quot;&gt;以前曾经有过吐槽，租房住的一大缺憾就是没法按照自己的想法布置房子，即使看上了某样家具，也能负担得起，...&lt;/small&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601236027/solrex/feedsky/s.gif?r=http://blog.solrex.org/articles/five-days-in-qingdao.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.solrex.org/articles/five-days-in-qingdao.html/feed</wfw:commentRss><slash:comments>4</slash:comments><description>在种种客观、主观条件下，我和媳妇儿同时决定上周休假一周散散心。选在十一之后，主要是为了人少点儿、住店便宜点儿和玩的舒服点儿。玩的舒服点儿主要是指，十一我还得值班处理服务器告警，但十一之后别人都在上班，我就可以放心地玩了。 之所以选择去青岛，主要是因为某个人太懒，对爬山和走远路很抵触，只好到海边溜达。我在去哪儿上团购了个旅馆，一天才七十块，这样能够比较放心地多住几天。 在青岛的日子是比较闲适的，每天睡到中午才起床。起来后就背个小包去逛，逛到哪儿算哪儿。没有奢求逛完所有的地方，但是由于时间充裕，基本上有意思的地方也都去看了下，唯一没去的就是崂山... 上班以后，工作赚钱成了主要目的，即使是下班回到家，也时不时地要处理一些工作上的事情，因而平时感觉生活完全被工作给充斥了。真正抛开所有事情，手机调成静音，才回归到了比较简单的状态，心情畅快不少。 我从青岛回来之后，看了一个名为《硬汉2》的电影。整个故事是在青岛取景拍摄的，一开头就是青岛天主教堂，熟悉的画面让我感觉好生激动。想要休闲的话，在家里宅着也未尝不可。但到一个陌生的地方总是一个更优的选择。在那里，困扰你的不再是日常的琐碎小事，而是完全不同的问题域。除此之外，还有增长见闻的好处，这一点对我是颇有吸引力的。特别是在当地能够发生一些有趣的、甜蜜的、或者忧伤的故事，就再好不过了。 我不太善于描述旅行中的人和事，再加上到青岛玩纯粹是休息，没办法作为攻略分享。只好挑几张图片出来，随便看看吧。 您可能对这些感兴趣： 承德行记 &amp;#8230; &lt;a href=&quot;http://blog.solrex.org/articles/five-days-in-qingdao.html&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601236027/solrex/feedsky/s.gif?r=http://blog.solrex.org/articles/five-days-in-qingdao.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Photo</category><category>生活</category><category>爱情</category><category>Qingdao</category><category>旅行</category><pubDate>Thu, 27 Oct 2011 19:56:27 +0800</pubDate><author>Solrex Yang</author><comments>http://blog.solrex.org/articles/five-days-in-qingdao.html#comments</comments><guid isPermaLink="false">http://blog.solrex.org/?p=639711</guid><dc:creator>Solrex Yang</dc:creator><fs:srclink>http://blog.solrex.org/articles/five-days-in-qingdao.html</fs:srclink><fs:srcfeed>http://blog.solrex.org/feed/</fs:srcfeed><fs:itemid>feedsky/solrex/~7985859/601236027/4221199</fs:itemid></item></channel></rss>
