<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0" xml:base="http://www.kzeng.info">
<channel>
 <title>寱语</title>
 <link>http://www.kzeng.info</link>
 <description>aa doruri omoi kokoro hikizuute karadada kewa joufu nanode kyou mo waraateiyou </description>
 <language>en</language>
<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/kzeng_stupid_words" /><feedburner:info uri="kzeng_stupid_words" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item>
 <title>eDiary 3.0: 跨越八年的更新</title>
 <link>http://feedproxy.google.com/~r/kzeng_stupid_words/~3/lSlHPVm27kE/1842</link>
 <description>&lt;p&gt;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.kzeng.info/files/4f55d7171219_139C2/camel-leather-diary-47.jpg"&gt;&lt;img style="margin: 0px 10px 0px 0px; display: inline; float: left" title="camel-leather-diary-47" alt="camel-leather-diary-47" align="left" src="http://www.kzeng.info/files/4f55d7171219_139C2/camel-leather-diary-47_thumb.jpg" width="150" height="150" /&gt;&lt;/a&gt; 1999年，有了我的第一台笔记本电脑。在某一期《大众软件》或者类似刊物附送的光盘里，发现了 &lt;a href="http://www.haoxg.net/ediary/index.html"&gt;eDiary&lt;/a&gt; ，一个免费的写日记的软件。那个时候网络还不算发达，web 2.0 的概念还很遥远，所以开始把原来用纸笔写的日记，改在电脑上敲出。这是使用 eDiary 的开始。&lt;/p&gt;
&lt;p&gt;因为那个时代自己建网站还不是很方便，所以也不能及时从网络上得到一款软件的更新，最多只能等待附送光盘的杂志或者去那时很有名气的“华军软件园”里看一看，所以最初的这个 1.0 的版本用了很久。&lt;/p&gt;
&lt;p&gt;刚开始的时候，没有备份数据的习惯，那个时代没有网络云备份，一般电脑也不能刻录 CD ，更别说 DVD，流行的只有 2.5 寸软盘。所以早先的日记也零零散散丢过一些，还有一些存在软盘里，不知道搁在那里了。现在电脑上 eDiary 里可以追溯的最早一片日记是 2001年1月31日。这一日，日记的内容是空白。第一篇有文字的日记是 2001年2月7日，这一天除了琐事以外还记录了：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;离考试还有36天。这36天要做的事情：完成国内题第二遍，北美题的第三遍（以复习总结为主），坚持背单词，做ETS的POWERPRE，还有LSAT的逻辑题，顺便读一读GMAT的阅读。记住要不断的总结。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;考试说的是 GRE，从这里推断，原定的考试时间是 2001年3月15日。但是认真往后看去，真正的考试时间是 2001年4月20日 ——往后足足拖了一个月，看日记就像看镜子里的自己。&lt;/p&gt;
&lt;p&gt;2003年11月29日, eDiary 发布了 v 2.53。然后这个作者就神秘的消失了，仿佛离开了地球。那时他已经有了一个在网易申请的免费空间，还有一个免费的域名自动转向服务。多亏了这个域名自动转向服务，从那里知道了作者最新的网站。作者有了自己的域名。不过还是沉寂。&lt;/p&gt;
&lt;!--break--&gt;&lt;!--break--&gt;&lt;p&gt;意外的是，这个最初运行在 Windows 98 上的软件，在后来的岁月里，可以稳定的运行在 Windows 2000， Windows XP，Windows Vista 一直到 Windows 7。并且这个软件一开始就是“绿色”的，不需要安装。&lt;/p&gt;
&lt;p&gt;所以尽管时间已经到了2011年底，却仍然使用着这个 2003 年发布的软件。好的软件是独立于时间的。&lt;/p&gt;
&lt;p&gt;然后到了2011年12月底的某天，无意点开了软件作者的网页，居然发现他更新了！推出了 v3.0 beta 1，距离上次更新已经有了 8 年多！&lt;/p&gt;
&lt;p&gt;一个 decade 差不多就这么过去了，外面的世界发生了翻天覆地的变化，萨达姆倒台了，拉登被杀了，苏丹分裂了，然后作者竟然更新软件了！：）&lt;/p&gt;
&lt;p&gt;前不久在 Virtual Box 上装 Windows 8，做的第一件事就是确认 eDiary 是否能运行，总担心某一天它无法再适应新的操作系统，看到作者又重返地球，心里踏实了很多，至少不用再担心软件陈旧，无法使用。&lt;/p&gt;
&lt;p&gt;又能安心的写日记了。“以铜为鉴，可正衣冠；以古为鉴，可知兴替；以人为鉴，可明得失。”日记里的自己就是“古”“人” 。&lt;/p&gt;
&lt;p&gt;再次跳跃回1999年，新浪提供电子邮件服务，注册了 kzeng # sina.com 的邮件，但是没怎么用过，那时主要是是 263 ，然后是 hotmail，gmail。再跳回到2012年，终于开通了新浪的微博 —— 没写过一条微博，只有一个关注， &lt;a href="http://weibo.com/ediary365"&gt;eDiary&lt;/a&gt; 。 &lt;/p&gt;

</description>
 <comments>http://www.kzeng.info/node/1842#comments</comments>
 <category domain="http://www.kzeng.info/taxonomy/term/1233">eDiary</category>
 <category domain="http://www.kzeng.info/taxonomy/term/359">日记</category>
 <category domain="http://www.kzeng.info/taxonomy/term/8">生活</category>
 <category domain="http://www.kzeng.info/taxonomy/term/52">趣物</category>
 <pubDate>Mon, 06 Feb 2012 03:58:07 +0000</pubDate>
 <dc:creator>kzeng</dc:creator>
 <guid isPermaLink="false">1842 at http://www.kzeng.info</guid>
<feedburner:origLink>http://www.kzeng.info/node/1842</feedburner:origLink></item>
<item>
 <title>(-1)^(1/3)：从 C++ 到傅立叶变换</title>
 <link>http://feedproxy.google.com/~r/kzeng_stupid_words/~3/FeGBgZcz0Xo/1841</link>
 <description>&lt;p&gt;&lt;a href="http://www.kzeng.info/files/-113_A955/image.png"&gt;&lt;img style="margin: 0px 10px 0px 0px; display: inline; float: left" title="image" alt="image" align="left" src="http://www.kzeng.info/files/-113_A955/image_thumb.png" width="150" height="151" /&gt;&lt;/a&gt; 一直好奇一个关于 power function 算法的问题，直到自己动手写 power function。&lt;/p&gt;
&lt;p&gt;在不同的编程语言里，遇到过同一个问题：(-1)^(1/3) 是多少。 很显然，在实数集里，这个表达式是有意义的，正如右图 Google Calculator 给的结果，在实数集里，它等于 -1。但是在很多编程语言的&lt;strong&gt;实数集&lt;/strong&gt;运算中，这个表达式是无意义的。&lt;/p&gt;
&lt;p&gt;譬如在 &lt;strong&gt;C++ &lt;/strong&gt;里，用 &lt;strong&gt;cmath&lt;/strong&gt; library, 当你计算 (-1)^(1/3) 时，你得到输出结果是：&lt;/p&gt;
&lt;pre class="alt"&gt; -1.#IND &lt;/pre&gt;&lt;p&gt;在 &lt;strong&gt;C#&lt;/strong&gt;里，用 &lt;strong&gt;System.Math&lt;/strong&gt;, 作同样的计算，得到的输出结果：&lt;/p&gt;
&lt;pre class="alt"&gt;NaN&lt;/pre&gt;&lt;p&gt;在 &lt;strong&gt;R &lt;/strong&gt;里，不使用复数集，得到的结果也是一样的：&lt;/p&gt;
&lt;pre class="csharpcode"&gt;[1] NaN&lt;/pre&gt;&lt;p&gt;同样的在 &lt;strong&gt;VBA&lt;/strong&gt; 里，如果不 call Excel的 power function ( i.e. &lt;strong&gt;&lt;font face="Courier New"&gt;Application.WorksheetFunction.Power&lt;/font&gt;&lt;/strong&gt;) ，而是直接使用 ^, 得到的结果仍然是 run-time error. 其它的编程语言也类似。&lt;/p&gt;
&lt;p&gt;在&lt;strong&gt;复数集&lt;/strong&gt;中，如果用 &lt;strong&gt;MATLAB&lt;/strong&gt;, 得到的结果：&lt;/p&gt;
&lt;pre&gt; 0.5000 + 0.8660i&lt;/pre&gt;&lt;p&gt;用 &lt;strong&gt;Maple&lt;/strong&gt;，结果： &lt;/p&gt;
&lt;pre class="csharpcode"&gt;.5000000001+.8660254037*I&lt;/pre&gt;&lt;p&gt;用 &lt;strong&gt;R &lt;/strong&gt;的复数集(i.e. &lt;font face="Courier New"&gt;as.complex(-1)^(1/3)&lt;/font&gt;)，得到的结果： &lt;/p&gt;
&lt;pre class="csharpcode"&gt;[1] 0.5+0.8660254i&lt;/pre&gt;&lt;p&gt;很显然，所有的语言的 power function 用的是同一种算法。这种算法无法得到实数解，而复数解得到是同一个数值。因为 power function 太基本，虽然有疑问，但是也没有过多的想这个问题，直到后来用 &lt;strong&gt;Q&lt;/strong&gt;。&lt;/p&gt;
&lt;!--break--&gt;&lt;!--break--&gt;&lt;p&gt;&lt;strong&gt;Q&lt;/strong&gt; 的语法和 C++/C#/JAVA，或者 MATLAB/R/MAPLE 都不太一样，&amp;quot;&lt;strong&gt;^&lt;/strong&gt;&amp;quot; 符号的定义和 C++/C# 相同，不是 power function。刚开始用的时候，不知道 &lt;strong&gt;Q&lt;/strong&gt;&amp;#160; 的 power function 是 &lt;font face="Courier New"&gt;&lt;strong&gt;xexp&lt;/strong&gt;&lt;/font&gt;，觉得 power function 又不难，自己写一个吧，但是真正开始写，却又卡壳了：(int，int) 的函数好写，那 (double, double) 的呢？&lt;/p&gt;
&lt;p&gt;拿出算法圣经《 Numerical Recipe 》（第三版），但是却发现它没有给出 power function 的算法，大概是太基础了吧，所以自己又想了一下，幸亏 &lt;strong&gt;Q&lt;/strong&gt;&amp;#160; 里的 log 和 exp 还是 &lt;strong&gt;&lt;font face="Courier New"&gt;log&lt;/font&gt;&lt;/strong&gt; 和 &lt;strong&gt;&lt;font face="Courier New"&gt;exp&lt;/font&gt;&lt;/strong&gt;，后来就想到用&lt;/p&gt;
&lt;pre class="csharpcode"&gt;exp(y*log(x)) = exp(log(x^y)) = x^y&lt;/pre&gt;&lt;p&gt;来定义 power function，解决非整数的问题。这样的以来，一般的问题都解决了，但是因为用到了 log(x) , x 的值必须非负（0 的问题可以很简单的处理），所以一旦 x&amp;lt;0，这个算法就不适用了 —— 这时才突然的想到莫非上面的那些问题的症结正在此？实数集的问题是由于 log(x), x&amp;lt;0 在实数集里无定义，那复数集呢？在 &lt;strong&gt;MATLAB&lt;/strong&gt; 里试了 &lt;/p&gt;
&lt;pre class="csharpcode"&gt;&amp;gt;&amp;gt; exp(1/3*log(-1))
ans =
   0.5000 + 0.8660i&lt;/pre&gt;&lt;p&gt;果然是这样的。所有的算法都依赖于 log 函数来获得 power 函数的值，这导致了上述问题在实数集无定义，而在复数集因为 log（-1)&amp;#160; =&amp;#160; 3.1416i&amp;#160; 这个默认值，导致了 0.5000 + 0.8660i&amp;#160; 这个结果。&lt;/p&gt;
&lt;p&gt;但是问题还没有结束。看到 log（-1），自然想到了 2*log(i), 然后自然而然的想到傅立叶变换里常用的 trick 可以解出 log（-1）的一般表达式（为了省事儿，下面用 LaTex写了）：&lt;/p&gt;
&lt;p align="center"&gt;&lt;img style="display: inline" title="image" alt="image" src="http://www.kzeng.info/files/-113_A955/image_3.png" width="275" height="209" /&gt;&lt;/p&gt;
&lt;p&gt;有了 log（-1）的通解，我们可以让 power function 获得任意 x^y, x&amp;lt;0 的所有解。譬如 (-1)^(1/3)简单测试一下，在 MATLAB 里，&lt;/p&gt;
&lt;pre class="csharpcode"&gt;x=2*i*(pi/2+2*(-3:3)*pi)
exp(1/3*x)&lt;/pre&gt;&lt;p&gt;得到：&lt;/p&gt;
&lt;pre class="csharpcode"&gt;x =
        0 -34.5575i        0 -21.9911i        0 - 9.4248i        0 + 3.1416i        0 +15.7080i        0 +28.2743i        0 +40.8407i
ans =
   0.5000 + 0.8660i   0.5000 - 0.8660i  -1.0000 - 0.0000i   0.5000 + 0.8660i   0.5000 - 0.8660i  -1.0000 + 0.0000i   0.5000 + 0.8660i&lt;/pre&gt;&lt;p&gt;结果里面包含了它的所有三个解。因为当 x&amp;lt;0, x^y = (-1)^y*(|x|)^y，所以只要有 (-1)^y ，就可以得到任何负数的 power function ( exp(a+bi）也可以用上面的方法转化成三角函数来解）。&lt;/p&gt;
&lt;p&gt;上面的长篇累牍都起源于一开始的时候不知道 &lt;strong&gt;Q &lt;/strong&gt;的 power function 是 &lt;font face="Courier New"&gt;&lt;strong&gt;xexp&lt;/strong&gt;&lt;/font&gt;，但是如果不是自己去写 power function，恐怕也没有机会搞明白 (-1)^(1/3) 这个简单的问题，俗谚云：“看人挑担不吃力，事非经过不知难。”诚哉：）&lt;/p&gt;
</description>
 <comments>http://www.kzeng.info/node/1841#comments</comments>
 <category domain="http://www.kzeng.info/taxonomy/term/1219">C#</category>
 <category domain="http://www.kzeng.info/taxonomy/term/1187">C++</category>
 <category domain="http://www.kzeng.info/taxonomy/term/1230">Kdb+</category>
 <category domain="http://www.kzeng.info/taxonomy/term/661">maple</category>
 <category domain="http://www.kzeng.info/taxonomy/term/1186">matlab</category>
 <category domain="http://www.kzeng.info/taxonomy/term/1229">Q</category>
 <category domain="http://www.kzeng.info/taxonomy/term/1050">R</category>
 <category domain="http://www.kzeng.info/taxonomy/term/1042">vba</category>
 <category domain="http://www.kzeng.info/taxonomy/term/1231">傅立叶变换</category>
 <category domain="http://www.kzeng.info/taxonomy/term/1232">算法</category>
 <category domain="http://www.kzeng.info/taxonomy/term/1188">编程</category>
 <category domain="http://www.kzeng.info/taxonomy/term/52">趣物</category>
 <pubDate>Tue, 17 Jan 2012 19:17:27 +0000</pubDate>
 <dc:creator>kzeng</dc:creator>
 <guid isPermaLink="false">1841 at http://www.kzeng.info</guid>
<feedburner:origLink>http://www.kzeng.info/node/1841</feedburner:origLink></item>
<item>
 <title>How Blue Taiwan Is: 台湾的选举地图</title>
 <link>http://feedproxy.google.com/~r/kzeng_stupid_words/~3/TR582C2OKT8/1840</link>
 <description>&lt;p align="center"&gt;&lt;a href="http://www.kzeng.info/files/POW_133E1/Rplot.png"&gt;&lt;img style="display: inline" title="Rplot" alt="Rplot" src="http://www.kzeng.info/files/POW_133E1/Rplot_thumb.png" width="400" height="302" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="left"&gt;台湾2012年选举结束，国民党胜出，在 &lt;a href="http://zh.wikipedia.org/wiki/2012%E5%B9%B4%E4%B8%AD%E8%8F%AF%E6%B0%91%E5%9C%8B%E7%B8%BD%E7%B5%B1%E9%81%B8%E8%88%89"&gt;维基百科上看到了投票的结果&lt;/a&gt;，很好奇蓝绿投票的地理分布，于是用维基百科上给的投票数据，又从网上找来了&lt;a href="http://www.diva-gis.org/gData"&gt;免费的台湾 GIS 数据&lt;/a&gt;，在 R 里自己画了一下。这个 GIS 数据比较古老，和现在台湾的行政区划略有不同，譬如嘉义县和嘉义市、新竹县和新竹市还没有分开，而高雄市和高雄县、台南市和台南县、台东市和台东县却是分开的，还有没有新北市，只有台北县（所以上图的 Taipei 图例其实是新北市，忘记改了，呵呵）。好在边界的坐标没有大变，所以手动的作了调整，毕竟是免费的 GIS。arcGIS要更精确些（包括边界的 polygon ），但是那个要钱的：）&lt;/p&gt;
&lt;p align="left"&gt;每个投票区域的“蓝”度由 蓝票/(绿票+蓝票) 的比例来决定，按照这个简单的算法，台湾版图上最蓝的是花莲，其次是台东和苗栗。最不“蓝”的是云林，嘉义和台南。图例的括号里的数字就是这个地区的“蓝”度。&lt;/p&gt;
&lt;p align="left"&gt;从这个得票的地理分布和最终国民党和民进党最终 51.6% 比 45.6% 的得票率来看，民进党的竞选纲领有问题，明显的没有获得中间选民的支持，而是过于政策导向 (policy-oriented) 了。蔡英文的竞选过于侧重 base 选民，忽略了 swing 选民，失败也是在情理之中。不过有时候这确实也是一个很艰难的问题，如果不能得到 base 选民的支持，就无法从党内初选中胜出，参加最终的角逐。党内的 median voter 的 preference 如果和全部选民中的 median voter 的 preference 相差太远，不是一件好事。 同样的，就即将到来的美国大选而言，如果 Romney 能赢得初选，他对于 Obama 的威胁时最大的，但是正是因为他能和 Obama 争夺中间选民，反而使共和党内铁杆选民对他的支持减弱了，因为他会被认为不是真正的 conservative 。&lt;/p&gt;
&lt;p align="left"&gt;下面是生成这副地图的 R&amp;#160; codes：&lt;/p&gt;
&lt;!--break--&gt;&lt;!--break--&gt;&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;library(maptools)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;library(RColorBrewer)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;tw.map &amp;lt;- readShapePoly(&lt;span class="str"&gt;'taiwan/TWN_adm2.shp'&lt;/span&gt;)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;mcol=brewer.pal(9, &lt;span class="str"&gt;'Blues'&lt;/span&gt;)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;votes = read.table(&lt;span class="str"&gt;'votes.csv'&lt;/span&gt;,sep=&lt;span class="str"&gt;&amp;quot;,&amp;quot;&lt;/span&gt;)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;votes = votes[ ,2:5]&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;votes=votes[votes[,1]!=&lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;,]&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;votes&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;names(votes)&amp;lt;-c(&lt;span class="str"&gt;&amp;quot;loc&amp;quot;&lt;/span&gt;,&lt;span class="str"&gt;&amp;quot;total&amp;quot;&lt;/span&gt;,&lt;span class="str"&gt;&amp;quot;green&amp;quot;&lt;/span&gt;,&lt;span class="str"&gt;&amp;quot;blue&amp;quot;&lt;/span&gt;)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;votes$bratio &amp;lt;- votes$blue/(votes$green+votes$blue)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;votes$col &amp;lt;-floor(((votes$bratio-min(votes$bratio))/(max(votes$bratio)-min(votes$bratio)))*8)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;provname=votes[,1]&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;f=function(x,y) ifelse(x %&lt;span class="kwrd"&gt;in&lt;/span&gt;% y,votes[votes$loc==x,6],-1);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;colIndex=sapply(&lt;span class="kwrd"&gt;as&lt;/span&gt;.character(tw.map$NAME_2),f,&lt;span class="kwrd"&gt;as&lt;/span&gt;.character(provname));&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;colIndex[c(1,15,17)] = colIndex[c(8,14,16)]&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;fg=mcol[colIndex+1]&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;votes = votes[order(votes$bratio,decreasing = T),]&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;bkp=paste(&lt;span class="kwrd"&gt;as&lt;/span&gt;.character(votes$loc),&lt;span class="str"&gt;&amp;quot; (&amp;quot;&lt;/span&gt;,&lt;span class="kwrd"&gt;as&lt;/span&gt;.character(round(votes$bratio,2)),&lt;span class="str"&gt;&amp;quot;)&amp;quot;&lt;/span&gt;,sep=&lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;plot(tw.map,col=fg)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;legend(&lt;span class="str"&gt;&amp;quot;topleft&amp;quot;&lt;/span&gt;, bkp,fill=mcol[votes$col+1], bty=&lt;span class="str"&gt;&amp;quot;o&amp;quot;&lt;/span&gt;, cex= 0.75, pt.lwd=3)&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;</description>
 <comments>http://www.kzeng.info/node/1840#comments</comments>
 <category domain="http://www.kzeng.info/taxonomy/term/1050">R</category>
 <category domain="http://www.kzeng.info/taxonomy/term/61">台湾</category>
 <category domain="http://www.kzeng.info/taxonomy/term/1228">地图</category>
 <category domain="http://www.kzeng.info/taxonomy/term/1171">实证政治理论</category>
 <category domain="http://www.kzeng.info/taxonomy/term/60">选举</category>
 <category domain="http://www.kzeng.info/taxonomy/term/3">政治</category>
 <pubDate>Sat, 14 Jan 2012 23:07:12 +0000</pubDate>
 <dc:creator>kzeng</dc:creator>
 <guid isPermaLink="false">1840 at http://www.kzeng.info</guid>
<feedburner:origLink>http://www.kzeng.info/node/1840</feedburner:origLink></item>
<item>
 <title>舞剧《牡丹亭》</title>
 <link>http://feedproxy.google.com/~r/kzeng_stupid_words/~3/l6d5E0JWHrM/1839</link>
 <description>&lt;p&gt;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.kzeng.info/files/55a442db9a6f_C309/img_111.jpg"&gt;&lt;img style="margin: 0px 14px 0px 0px; display: inline; float: left" title="img_111" alt="img_111" align="left" src="http://www.kzeng.info/files/55a442db9a6f_C309/img_111_thumb.jpg" width="181" height="240" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;昨天在林肯中心看了金陵艺术团的舞剧《牡丹亭》，很震撼。从头到尾没有对白的演绎这样一个复杂的爱情故事，并且能让我这样的舞蹈门外汉能够马上意识到舞剧的每一幕对应的是原剧的哪一出，在结尾的时候还被深深感动，我觉得这个舞剧改编得很成功。（文科博士的一个通病就是过于 critical ，这都是当年被逼读 N 多 paper，写 N 多 review 留下的后遗症，如果不 critical 到 cynical, 便无法体现所谓独立思考之精神 -_-）。这部舞剧是我今年看多的最好的演出，没有之一。&lt;/p&gt;
&lt;p&gt;金陵艺术团这个名字可能有些陌生，其实它就是南京军区政治部前线文工团，大概是对外演出的需要，所以有了这个艺名，否则 Battlefront Culture Troupe of the Political Department of Nanjing Military Area of the Chinese People's Liberation Army 听起来太斯大林了。 07年春晚深受好评的舞蹈《小城雨巷》就是前线文工团的作品，那时的领舞胡琴心就是现在《牡丹亭》的杜丽娘。 &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;第三幕《魂游&amp;#160;&amp;#160;&amp;#160; 冥誓》，是对原作的大改。杜丽娘离魂之后并没有去冥司受判，也未魂游于旧花园中，而是游荡在集市上看到了赴京赶考的柳梦梅，而柳梦梅也并未拾画于山石之下，而是意外的购得丽娘的画像于市井之中。然后他回梅花观歇息，对着画茶饭不思，丽娘也从集市中随画而至，接上原作《幽媾》，《欢挠》，而后《冥誓》，丽娘和柳梦梅私结百年之好；&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;!--break--&gt;&lt;!--break--&gt;
</description>
 <comments>http://www.kzeng.info/node/1839#comments</comments>
 <category domain="http://www.kzeng.info/taxonomy/term/1225">前线文工团</category>
 <category domain="http://www.kzeng.info/taxonomy/term/73">明朝</category>
 <category domain="http://www.kzeng.info/taxonomy/term/1227">汤显祖</category>
 <category domain="http://www.kzeng.info/taxonomy/term/1224">牡丹亭</category>
 <category domain="http://www.kzeng.info/taxonomy/term/1226">金陵艺术团</category>
 <category domain="http://www.kzeng.info/taxonomy/term/8">生活</category>
 <category domain="http://www.kzeng.info/taxonomy/term/9">子集</category>
 <pubDate>Sat, 07 Jan 2012 22:57:49 +0000</pubDate>
 <dc:creator>kzeng</dc:creator>
 <guid isPermaLink="false">1839 at http://www.kzeng.info</guid>
<feedburner:origLink>http://www.kzeng.info/node/1839</feedburner:origLink></item>
<item>
 <title>辫子、胡桃夹子和黄道周</title>
 <link>http://feedproxy.google.com/~r/kzeng_stupid_words/~3/FgWcyRczbq8/1838</link>
 <description>&lt;p&gt;
&lt;/p&gt;&lt;p&gt;&lt;img style="margin: 0px 10px 0px 0px; display: inline; float: left" title="SAMSUNG            " alt="SAMSUNG            " align="left" src="http://www.kzeng.info/files/d8471b22a6e6_A190/IMG_20111202_161208.jpg" width="150" height="155" /&gt;上周周末晚上去林肯中心看芭蕾舞《胡桃夹子》，本来是圣诞节的剧目，图个热闹高兴，但是第二幕在 Land of Sweets 中出现的三个中国人模样的角色确实让人觉得怪异。一男两女。男的戴着斗笠留着辫子，让人想到晚清时西方人对于中国人的 stereotype —— 又想到，在京剧的剧目中，但凡是牵扯到西方或者北方的“番邦”角色，他们的打扮也多是一副满人的辫子装束，譬如《大登殿》、《四郎探母》等等，所以犹为觉得辫子刺眼 —— 我们用来戏谑番邦的装束却又被被人强加在了我们自己身上，不舒服之余，又觉得有些 ironic ...&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;有时历史也挺 ironic 的，让人忍不住想，明朝的这些完臣到底是对于明朝有怎样的影响，譬如和黄道周写入同一列传的刘宗周，在南明风雨飘摇之际，一会儿上奏说要斩这个，斩那个，似乎能不能斩、该不该斩都不必要，只要“可斩也”三个字便足以昭显自己的正气凛然。读书至此，总让人觉得似乎大敌压前，当务之急不是任何实际的御敌之道，而是如何才能成就个人的完美与道德 …… 不知道这算不算不道德。&lt;/p&gt;
&lt;p&gt;而对于黄道周，最后一个 ironic 之处在于尽管他坦言要效仿魏征：“臣愿为良臣，毋为忠臣”，但是最终他却成了忠臣而不是良臣。&lt;/p&gt;
&lt;!--break--&gt;&lt;!--break--&gt;
</description>
 <comments>http://www.kzeng.info/node/1838#comments</comments>
 <category domain="http://www.kzeng.info/taxonomy/term/619">博物馆</category>
 <category domain="http://www.kzeng.info/taxonomy/term/73">明朝</category>
 <category domain="http://www.kzeng.info/taxonomy/term/108">清朝</category>
 <category domain="http://www.kzeng.info/taxonomy/term/1223">芭蕾舞</category>
 <category domain="http://www.kzeng.info/taxonomy/term/1222">黄道周</category>
 <category domain="http://www.kzeng.info/taxonomy/term/6">历史</category>
 <category domain="http://www.kzeng.info/taxonomy/term/9">子集</category>
 <pubDate>Wed, 07 Dec 2011 16:38:32 +0000</pubDate>
 <dc:creator>kzeng</dc:creator>
 <guid isPermaLink="false">1838 at http://www.kzeng.info</guid>
<feedburner:origLink>http://www.kzeng.info/node/1838</feedburner:origLink></item>
<item>
 <title>数据挖掘：eBay上的Galaxy Note</title>
 <link>http://feedproxy.google.com/~r/kzeng_stupid_words/~3/SHyfF-YI478/1837</link>
 <description>&lt;p align="center"&gt;&lt;a href="http://www.kzeng.info/files/915d21f2b677_F75F/Rplot01.png"&gt;&lt;img style="display: inline" title="Rplot01" alt="Rplot01" src="http://www.kzeng.info/files/915d21f2b677_F75F/Rplot01_thumb.png" width="520" height="260" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;从有Samsung&amp;#160; Galaxy Note 的消息开始，就很期待这款 5.3 寸屏的手机（5.3 寸啊！5.3 寸啊！5.3 寸啊！），但是不出所料，这款手机要很迟才能在北美上市（甚至连会不会上市都还是一个未知数），所以当 Galaxy Note 在欧洲和亚洲发布之后，就只能关注 eBay，等待它从亚欧流入北美。&lt;/p&gt;
&lt;p&gt;当欧洲刚刚发布这款手机的时候，eBay 也同步有人开始售卖，一开始的价格大约在 $1000 左右，并且数量很少。等了一段时间，香港的发布会过后，随着大量香港卖家的加入，价钱开始迅速下跌，很快跌倒了$800左右。作为以数字为生的人，当然会“萌”任何时间序列的漂移、扩散和跳跃（不负责的翻译 drift,&amp;#160; diffusion, &amp;amp; jump），但是不断的刷新去查看eBay页面是在令人厌恶，于是就写了一个简单的 C# 程序，定时去“挖掘”eBay 页面上的价格。&lt;/p&gt;
&lt;p&gt;但凡提及买卖/价格，就不能不考虑风险（风险也是钱啊），特别是在 eBay 这样高风险的地方。eBay 正好在推出一个新的 beta 产品页面，在 &lt;a href="http://www.ebay.com/ctg/Samsung-Galaxy-Note-32GB-Black-Unlocked-Smartphone-/110509414"&gt;这个页面&lt;/a&gt;上 eBay 已经利用自己的算法选出了风险和价格最优的产品，这样一来，挖数据就简单多了，就像附在后面的 C# codes 里显示的那样，只要 request 页面数据，把数据转化成 string，然后利用 C# 自己的 string search/index method，找到相关数据 CSS class， 读入数据即可（数据量很小，所以任何优化都不用做）。然后把数据不断存入 txt 文本。&lt;/p&gt;
&lt;p&gt;开始测试时是每两个小时 quote 一次，后来改成一个小时 quote 一次。屏幕上跳出的数字，很像交易所的证券，所以就干脆把它用 chartSeries （R 的 quantmod package）画出来，然后就从数据里发现了很有趣的规律：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;首先总的价格趋势是下跌的，因为开始的高价格完全是因为 supply 的不足，再加上消费类电子产品本身的贬值以及与之相竞争的 HTC，Samsung Android 手机的推出（譬如在北美正式销售的 Galaxy SII skyRocket）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;其次从 Nov 11 到 Nov 14 之间，在微观结构上是两个卖家相互竞争导致价格下跌。为了拿到 eBay 页面上的产品推荐，风险相同的卖家不得不通过降价来相互竞争，但是降价的幅度一般都比较小，特别是从 Nov 13 开始，基本上就是几毛几毛的降；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nov 15 左右出现了一段价格的稳定期，大约是一家放弃了价格的竞争；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nov 16 其中一家的货卖完了，剩下的一家觉得自己暂时处在低风险卖家的垄断地位，所以遽然的开始升价，我们看到了一个大大的 jump；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;但是 jump 过后显然市场的反应冷淡，并且我们在上面说过价格的总体趋势是下跌的，如果不能及时卖出，卖家始终有一个 negative carry （也就说价格对于时间的一阶导数是负的），还有最重要的是差不多这个时候，Apple 开始 ship unlock 的 iPhone 4S ，价格大约在 $649 ，对于 Galaxy Note 的价格也是一个打击；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;所以过了 Nov 17 同一卖家又开始降回比原来更低的价格水平&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;然后 Nov 18， 价格又开始大幅度的下调，因为有一个新的竞争者出现，而现在手里还攒有大量货的早期卖家基于自己的进货成本，不得不加大降价的力度， theta bleeds :)&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;当然数据有限，很多只是我的猜测，不过数据本身挺有趣的，不仅本身是一个很 behavior economics的测试，如果数据点足够的多，还能 fit 出一个 term structure 模型来。。。&lt;/p&gt;
&lt;!--break--&gt;&lt;!--break--&gt;&lt;p&gt;。。。 所以到后来忘了，&lt;strong&gt;我只是来买手机的&lt;/strong&gt;。。。&lt;/p&gt;
&lt;p align="center"&gt;&lt;img style="display: inline" title="image" alt="image" src="http://www.kzeng.info/files/915d21f2b677_F75F/image.png" width="400" height="218" /&gt;&lt;/p&gt;
&lt;p&gt;附 C# codes:&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Net;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text.RegularExpressions;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Threading;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;/// Fetch eBay Price &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; WebFetch&lt;/pre&gt;&lt;pre class="alt"&gt;{&lt;/pre&gt;&lt;pre&gt;    &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;&lt;pre class="alt"&gt;    {&lt;/pre&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;while&lt;/span&gt; (&lt;span class="kwrd"&gt;true&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="alt"&gt;        {&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;// used to build entire input&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        StringBuilder sb = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringBuilder();&lt;/pre&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;// used on each read operation&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] buf = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[8192];&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;// prepare the web page we will be asking for&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        HttpWebRequest request = (HttpWebRequest)&lt;/pre&gt;&lt;pre&gt;            WebRequest.Create(&lt;span class="str"&gt;&amp;quot;http://www.ebay.com/ctg/Samsung-Galaxy-Note-32GB-Black-Unlocked-Smartphone-/110509414&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;// execute the request&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        HttpWebResponse response = (HttpWebResponse)request.GetResponse();&lt;/pre&gt;&lt;pre&gt;        &lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="rem"&gt;// we will read data via the response stream&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;            Stream resStream = response.GetResponseStream();&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;&lt;pre&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; tempString = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; count = 0;&lt;/pre&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;do&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;            {&lt;/pre&gt;&lt;pre class="alt"&gt;                &lt;span class="rem"&gt;// fill the buffer with data&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;                count = resStream.Read(buf, 0, buf.Length);&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;&lt;pre&gt;                &lt;span class="rem"&gt;// make sure we read some data&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (count != 0)&lt;/pre&gt;&lt;pre&gt;                {&lt;/pre&gt;&lt;pre class="alt"&gt;                    &lt;span class="rem"&gt;// translate from bytes to ASCII text&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;                    tempString = Encoding.ASCII.GetString(buf, 0, count);&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;&lt;pre&gt;                    &lt;span class="rem"&gt;// continue building the string&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;                    sb.Append(tempString);&lt;/pre&gt;&lt;pre&gt;                }&lt;/pre&gt;&lt;pre class="alt"&gt;            }&lt;/pre&gt;&lt;pre&gt;            &lt;span class="kwrd"&gt;while&lt;/span&gt; (count &amp;gt; 0);&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;&lt;pre&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; page = sb.ToString();&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;&lt;pre&gt;            &lt;span class="rem"&gt;//page = Regex.Replace(page, @&amp;quot;&amp;lt;(.|\n)*?&amp;gt;&amp;quot;, &amp;quot;&amp;quot;);&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;&lt;pre&gt;            &lt;span class="rem"&gt;// print out page source&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; targetString = &lt;span class="str"&gt;&amp;quot;bbx2-pv&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; first = page.IndexOf(targetString);&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; price = page.Substring(first + targetString.Length + 2, 7);&lt;/pre&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;pre class="alt"&gt;            targetString = &lt;span class="str"&gt;&amp;quot;ship tfsp bbx2-s&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;            first = page.IndexOf(targetString);&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; temp = page.Substring(first + targetString.Length + 2, 20);&lt;/pre&gt;&lt;pre&gt;            targetString = &lt;span class="str"&gt;&amp;quot;&amp;lt;/s&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;            first = temp.IndexOf(targetString);&lt;/pre&gt;&lt;pre&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; shipping = temp.Substring(0, first);&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;&lt;pre&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (shipping == &lt;span class="str"&gt;&amp;quot;Free shipping&amp;quot;&lt;/span&gt;) shipping = &lt;span class="str"&gt;&amp;quot;$0&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;&lt;pre&gt;            DateTime time = DateTime.Now;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;&lt;pre&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; path = &lt;span class="str"&gt;@&amp;quot;C:\Users\Kai\Dropbox\Mis\Android App\GalaxyNote.txt&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;&lt;pre&gt;            &lt;span class="kwrd"&gt;using&lt;/span&gt; (StreamWriter sw = File.AppendText(path))&lt;/pre&gt;&lt;pre class="alt"&gt;            {&lt;/pre&gt;&lt;pre&gt;                sw.WriteLine(&lt;span class="str"&gt;&amp;quot;{0}\t{1}\t{2}&amp;quot;&lt;/span&gt;, time.ToString(), price, shipping);&lt;/pre&gt;&lt;pre class="alt"&gt;            }&lt;/pre&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;pre class="alt"&gt;            Console.WriteLine(&lt;span class="str"&gt;&amp;quot;{0}\t{1}\t{2}&amp;quot;&lt;/span&gt;, time.ToString(), price, shipping);&lt;/pre&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;pre class="alt"&gt;           Thread.Sleep(1000 * 60 * 60);&lt;/pre&gt;&lt;pre&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;/pre&gt;&lt;pre&gt;    }&lt;/pre&gt;&lt;pre class="alt"&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;</description>
 <comments>http://www.kzeng.info/node/1837#comments</comments>
 <category domain="http://www.kzeng.info/taxonomy/term/1220">android</category>
 <category domain="http://www.kzeng.info/taxonomy/term/1219">C#</category>
 <category domain="http://www.kzeng.info/taxonomy/term/1218">eBay</category>
 <category domain="http://www.kzeng.info/taxonomy/term/1221">Galaxy Note</category>
 <category domain="http://www.kzeng.info/taxonomy/term/1027">智能手机</category>
 <category domain="http://www.kzeng.info/taxonomy/term/810">统计数据</category>
 <category domain="http://www.kzeng.info/taxonomy/term/8">生活</category>
 <category domain="http://www.kzeng.info/taxonomy/term/52">趣物</category>
 <pubDate>Fri, 18 Nov 2011 23:38:23 +0000</pubDate>
 <dc:creator>kzeng</dc:creator>
 <guid isPermaLink="false">1837 at http://www.kzeng.info</guid>
<feedburner:origLink>http://www.kzeng.info/node/1837</feedburner:origLink></item>
<item>
 <title>办公室的威士忌</title>
 <link>http://feedproxy.google.com/~r/kzeng_stupid_words/~3/3xFk-bDtHsE/1836</link>
 <description>&lt;p&gt;
&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://www.kzeng.info/files/e7959805384c_17E0/PIC-0106.jpg"&gt;&lt;img style="display: inline" title="PIC-0106" alt="PIC-0106" src="http://www.kzeng.info/files/e7959805384c_17E0/PIC-0106_thumb.jpg" width="240" height="185" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://www.kzeng.info/files/e7959805384c_17E0/PIC-0107.jpg"&gt;&lt;img style="display: inline" title="PIC-0107" alt="PIC-0107" src="http://www.kzeng.info/files/e7959805384c_17E0/PIC-0107_thumb.jpg" width="240" height="185" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="left"&gt;备份手机上的文件，发现了这两张挺“古老”照片。看拍摄时间，第一张是 2008 年 7 月 4 日凌晨 11:48:36， 第二张是 2008 年 7 月 6 日 凌晨 12:07:20，两张照片相差差不多24 小时，地点是念研究生时的办公室。&lt;/p&gt;
&lt;p&gt;那时办公室总放有烈酒，Jim Beam 的肯塔基波本威士忌或者 Jack Deniel's 的田纳西威士忌，没有冰，也不用 mixer，只有一次性塑料杯，半杯入腹，挑灯夜读，精神百倍，感觉就像肯塔基或者田纳西的庄稼汉喝罢了酒，兴致高昂的扛着锄头下地 —— 当然这只是我那时的想法，肯塔基和田纳西并不一定要种庄稼，他们下地也不一定扛锄头。&lt;/p&gt;
&lt;p&gt;也喝苏格兰威士忌，在看《1Q84》，书中又提到 Cutty Sark，记得村上春树在《发条鸟编年史》就提到过 Cutty Sark —— 价钱、味道和作用都和 Jim Beam 差不多，只是无法满足我关于庄稼汉锄地的遐想，苏格兰的威士忌总让人想起临死前喊着 freedom 不想锄地的庄稼汉，不符合我熬夜看书写论文的意境 —— 想过在答辩之后，跑到校长住的钟楼前大喊 freedom，但是这个想法在清醒的时候总记不起来。（其实校长不住在钟楼里，但是因为学校有一个很高的钟楼，从一开始看见它，我们就假设校长住在里面。一位金融界的前辈说过：“if it acts like a duck, it is ok to assume it is a duck.” 既然我们不知道校长住在什么地方，那么假设他住在钟楼里也无妨。）&lt;/p&gt;
&lt;p&gt;后来酒被研究所的老板发现了，说我这样在办公室放烈酒不好。所以思考了一下，就把威士忌放在樱桃可乐瓶子里了，于是总在案头放一瓶樱桃可乐。&lt;/p&gt;
&lt;p&gt;现在看来，被教授发现酒瓶应该是 2008年 7 月 4日或者5 日白天的事情。 这就是图片的奇妙之处，仿佛把一切时空都固定下来，而两张图片又让时空动了起来 —— &lt;/p&gt;
&lt;p&gt;譬如我的纸杯都扔了，因为喝樱桃可乐不需要纸杯；&lt;/p&gt;
&lt;p&gt;譬如我当时还在教一门《国际关系》的课，因为我的桌子上还放着本《Essentials of International Relations》（第一张照片杯子后面那本花皮的）；&lt;/p&gt;
&lt;p&gt;譬如我当时还在读芝加哥警察局的机密档案（书架上成堆的大信封），因为要作一个关于芝加哥犯罪率的研究；&lt;/p&gt;
&lt;p&gt;酒瓶下面始终压着两本书，白皮的是 《Stochastic Games and Applications》，红皮的是《十一届三中全会以来 重要文件汇编 （机密）》（记得本科学公文时学过，我国的文件分密、机密、绝密三等），是当时主要在钻研的两本书。&lt;/p&gt;
&lt;p&gt;没想到是若干年后，会一直跟 stochastic 打交道了（ game也在玩，现在在玩一个叫做 Dragon of Atlantis 的网页游戏，只是不再搞 stochastic game 了）；还有就是不再看我国的机密文件了：）&lt;/p&gt;
&lt;p&gt;还有就是不喝酒了。。。&lt;/p&gt;
&lt;!--break--&gt;&lt;!--break--&gt;
</description>
 <comments>http://www.kzeng.info/node/1836#comments</comments>
 <category domain="http://www.kzeng.info/taxonomy/term/1216">威士忌</category>
 <category domain="http://www.kzeng.info/taxonomy/term/1217">政策研究所</category>
 <category domain="http://www.kzeng.info/taxonomy/term/195">西北大学</category>
 <category domain="http://www.kzeng.info/taxonomy/term/428">酒</category>
 <category domain="http://www.kzeng.info/taxonomy/term/8">生活</category>
 <pubDate>Fri, 11 Nov 2011 07:52:58 +0000</pubDate>
 <dc:creator>kzeng</dc:creator>
 <guid isPermaLink="false">1836 at http://www.kzeng.info</guid>
<feedburner:origLink>http://www.kzeng.info/node/1836</feedburner:origLink></item>
<item>
 <title>1Q84</title>
 <link>http://feedproxy.google.com/~r/kzeng_stupid_words/~3/k-2GtJn1724/1834</link>
 <description>&lt;p&gt;
&lt;/p&gt;&lt;p align="justify"&gt;&lt;img style="margin: 0px 10px 0px 0px; display: inline; float: left" title="519RHf5fmYL._SS500_" alt="519RHf5fmYL._SS500_" align="left" src="http://www.kzeng.info/files/1Q84_1062D/519RHf5fmYL._SS500_.jpg" width="150" height="151" /&gt; 好久没有没有读过小说了。上次读小说还是去年冬天看的刘慈欣的《三体 III》。《三体 III》刚出来的时候北美这边买不到，只有很粗糙很费眼的扫描版，放进 Kindle 之后，即便是用了“多看”系统，调节了对比度，还是看得艰难。但是即便是如此，还是一览为快——并且还是在波多黎各读的，因为当时正赶上去波多黎各旅行，还记得在一间叫做 Rio Mar Beach&amp;#160; Resort 旅馆的窗边听着蛙鸣，对着漆黑的夜空读三体人入侵地球：）赶巧的是第二天有一家 hedge fund 突然打电话来面试，只是一些闲聊的问题，被问道现在正在读什么书，我回答说&amp;#160; a book about three - body problem，电话那边突然来了兴趣，于是聊了会儿数学，不过忽略了外星人入侵地球的那部分：）&lt;/p&gt;
&lt;p align="justify"&gt;其实前阵子和别人聊起，《三体》的作者刘慈欣或许看过国际关系的入门教材，特别是 Waltz 的理论，因为他对宇宙社会学的公理化总结和 Waltz 试图作的国际关系的公理化总结非常相似，而刘慈欣《三体II》里的理论核心其实是国际关系里 Walt（不是 Waltz） 的 balance of threat 理论（有别于经典的 balance of power），所以《三体》读起来才有一种亲切感，呵呵。&lt;/p&gt;
&lt;p align="justify"&gt;然后这大概有一年的时间，基本没看过一本小说，读的都是非小说类的读物，历史、政治、经济、人物传记之类的，新书和旧书都有，最近的一本是刚出版的 Vogel 的&lt;a href="http://books.google.com/books?id=3IaR-FxlA6AC"&gt;Deng Xiaoping and the Transformation of China&lt;/a&gt;。挺喜欢读这种退了休的老先生的书，因为写书多半是出自个人的兴趣，而不是为了评 tenure，因此可读性要更强一些 —— 虽然就纯粹社会科学研究而言，我是坚决支持量化分析的，但是就个人兴趣而言，我很厌恶在读书的时候看到大量的回归表格，更厌恶看到significance level 的星星 -_-&lt;/p&gt;
&lt;p align="justify"&gt;昨天打开 Android 手机的 Market 时，发现了村上春树 1Q84 的英译版，前两卷是 Jay Rubin&amp;#160; 翻译的，在 Android 的 Google Book 上看了一个开头，然后决定从 Amazon 购买放入 Kindle。 &lt;/p&gt;
&lt;p align="justify"&gt;看翻译小说，其实更多看得是译者，所以年初 1Q84 的中文版出来的时候，并没有特别在意，因为译者是一个没有听说过的人。如果只是本格侦探小说譬如东野圭吾，其实也就罢了，字幕组翻译的都可以忍耐（其实有些字幕君还是很不错的），村上春树的小说还是等信赖的译者吧——当时就这么想。&lt;/p&gt;
&lt;p align="justify"&gt;不过我并不知道 Jay Rubin 会翻译这部书，也不知道这部书会在五天前十月二十五日上架，是个惊喜，所以，一年之后，又开始看小说了：）&lt;/p&gt;
&lt;!--break--&gt;&lt;!--break--&gt;
</description>
 <comments>http://www.kzeng.info/node/1834#comments</comments>
 <category domain="http://www.kzeng.info/taxonomy/term/1213">1Q84</category>
 <category domain="http://www.kzeng.info/taxonomy/term/1214">三体</category>
 <category domain="http://www.kzeng.info/taxonomy/term/1215">刘慈欣</category>
 <category domain="http://www.kzeng.info/taxonomy/term/744">小说</category>
 <category domain="http://www.kzeng.info/taxonomy/term/1135">村上春树</category>
 <category domain="http://www.kzeng.info/taxonomy/term/7">闲趣</category>
 <pubDate>Mon, 31 Oct 2011 01:35:57 +0000</pubDate>
 <dc:creator>kzeng</dc:creator>
 <guid isPermaLink="false">1834 at http://www.kzeng.info</guid>
<feedburner:origLink>http://www.kzeng.info/node/1834</feedburner:origLink></item>
<item>
 <title>大登殿</title>
 <link>http://feedproxy.google.com/~r/kzeng_stupid_words/~3/PvJCaVcDSTg/1832</link>
 <description>&lt;p&gt;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.kzeng.info/files/1b41f3b69239_CB36/1166672953.jpg"&gt;&lt;img style="margin: 0px 9px 0px 0px; display: inline; float: left" title="1166672953" alt="1166672953" align="left" src="http://www.kzeng.info/files/1b41f3b69239_CB36/1166672953_thumb.jpg" width="150" height="150" /&gt;&lt;/a&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;而说起中原女子行礼（万福礼），紧上加紧，代战公主很天然呆的说：&lt;/p&gt;
&lt;blockquote&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;/blockquote&gt;
&lt;p&gt;这不正是把代战公主比作了兔子么？-_-||| 《大登殿》这戏来自于清代乱弹《红鬃烈马》，清末应该就有了吧，京剧早期和程长庚、余三胜齐名老生张二奎就唱过薛平贵。&lt;/p&gt;
&lt;p&gt;其实不只《大登殿》，《四郎探母》、《雁门关》里的辽人也是满人打扮（譬如铁镜公主），并且番邦女子一贯的耍宝逗趣。&lt;/p&gt;
&lt;p&gt;呵呵，所以晚清真是变了啊，想雍正那会儿，翰林徐骏因为在奏章上笔误，把陛下，误写为“狴”下，又在诗中有“清风不识字,何得乱翻书”一语，就被雍正帝认为是讥讽满人不识字而就掉了脑袋。到了清末， 满人“不捣碓，八月十五不给您月饼吃”也无妨了，呵呵。&lt;/p&gt;
&lt;!--break--&gt;&lt;!--break--&gt;
</description>
 <comments>http://www.kzeng.info/node/1832#comments</comments>
 <category domain="http://www.kzeng.info/taxonomy/term/1212">京剧</category>
 <category domain="http://www.kzeng.info/taxonomy/term/1118">戏剧</category>
 <category domain="http://www.kzeng.info/taxonomy/term/108">清朝</category>
 <category domain="http://www.kzeng.info/taxonomy/term/6">历史</category>
 <category domain="http://www.kzeng.info/taxonomy/term/9">子集</category>
 <pubDate>Wed, 19 Oct 2011 19:04:11 +0000</pubDate>
 <dc:creator>kzeng</dc:creator>
 <guid isPermaLink="false">1832 at http://www.kzeng.info</guid>
<feedburner:origLink>http://www.kzeng.info/node/1832</feedburner:origLink></item>
<item>
 <title>降级回 Drupal 6.22</title>
 <link>http://feedproxy.google.com/~r/kzeng_stupid_words/~3/ZOmAPPYu4vM/1828</link>
 <description>&lt;p&gt;
&lt;/p&gt;&lt;p&gt;&lt;img style="margin: 0px 5px 5px 0px; display: inline; float: left" title="image" alt="image" align="left" src="http://kzeng.info/files/dr.png" width="150" height="149" /&gt;&lt;/p&gt;
&lt;p&gt;前几天升级到了 Drupal 7.8，正如预料的那样，问题成堆，每抓住一条虫子，就会发现这条虫子背后还有 N 条虫子，杀死了这条虫子，又发现产生了更多的虫子 。。。当然最好是治标而非治本，如果能系统的更新以前做过的 PHP 和 MySQL codes 的更改，自然是最好的，但是这又必须要求去钻研 Druapl 7 浩繁的 API 手册，现在的 Drupal 已经不是当年的 Drupal 了。所以，最后还是决定 roll back 会 Drupal 6.22。如果没有太多的时间就不打算在升级了。&lt;/p&gt;
&lt;p&gt;呵呵，突然想到中国历史上的改革，为什么大多数情况下改良的尝试最后都以向保守势力妥协而告终？大概和我升级 blog 是差不多的道理吧。其实重新建设比修改补丁更容易，之所以要修改补丁，是以前积累下来的东西太多：）&lt;/p&gt;
&lt;p&gt;顺便附上上次升级完写的 blog，因为数据库重新 dump 了升级前的备份，所以这篇 blog 消失了：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Drupal 7 今年一月就已经正式发布了，但是一直在用着陈旧的 Drupal 6。按照以前的习惯，Drupal 在 pre-alpha 阶段的时候，就该兴冲冲的从 CVS 里check out （不知道现在 Drupal 的 version control system 还是不是 CVS 了，好久没有登陆了），安装测试，然后去报告 bug。但是现在一想到升级，想到要写无穷尽的 PHP，MySQL, CSS, HTML 代码 （原来自己手动更改过很多 Drupal 的代码和数据库），就懒得升级 —— 倒不是因为难或者麻烦 —— 现在每天都要写 N 多的&amp;#160; C#, R, C++, Matlab, VBA, etc ，PHP 和 MySQL 相对要简单许多，而是因为没有乐趣了 –__-&amp;#160; &lt;/p&gt;
&lt;p&gt;从经济学的角度讲，大概这是边际效用递减，每天埋头读大部头的康德、黑格尔、沃尔茨、基欧汉之余有个把儿钟头可以忙一会儿毫不相关的 PHP coding 带来的乐趣要远远大于现在花几个钟头 debugging C++ 或者一行一行看 implementation 研究为什么 R 的 Gauss–Kronrod quadrature 算法要比 Matlab 慢几十倍的原因之后再来改 PHP 的乐趣；或者从很哲学的角度讲，世界总是一座 besieged fortress， 再或者简单用俗语说，就是 “贝戈戈”：）&lt;/p&gt;
&lt;p&gt;不管怎样，总算突然有了兴趣，把 blog 升级到了 Drupal 7.8。久违了，Drupal ：）&lt;/p&gt;
&lt;/blockquote&gt;
</description>
 <comments>http://www.kzeng.info/node/1828#comments</comments>
 <category domain="http://www.kzeng.info/taxonomy/term/1211">drupal 7</category>
 <category domain="http://www.kzeng.info/taxonomy/term/231">升级</category>
 <category domain="http://www.kzeng.info/taxonomy/term/2">Drupal</category>
 <pubDate>Sat, 08 Oct 2011 04:05:00 +0000</pubDate>
 <dc:creator>kzeng</dc:creator>
 <guid isPermaLink="false">1828 at http://www.kzeng.info</guid>
<feedburner:origLink>http://www.kzeng.info/node/1828</feedburner:origLink></item>
</channel>
</rss>

