87.5%爱你

跑步无聊又诞生一个很geek的想法,用来度量爱。

背景是这样的,你喜欢上一个人,可是他出于种种原因不能马上跟你在一起。但是你太爱他不甘心只好说“那我可以等你”。于是你面临一个问题,等他多久?你也希望是一万年,可是你也知道那就是个台词。于是这里有个关于风险收益的trade-off,这从某种角度度量了你对他的爱,至少在做这个决策时候。当然你需要认真作答,不能说大话。

让我们再把问题具体化便于操作。基于这样的事实——你等他100年跟101年的差异并没有等1年和等2年的差异大(经济学上所谓“边际效用递减”)。所以不妨假设,每等1年你的投入是前一年的一半。构造一个投入的数列,一个最平凡的等比级数,{1/2, 1/4, 1/8, ... },这个级数的和极限是1,也就是,如果你能等他无限年,说明你爱他100%,他是不可替代的。如果能等1年,表明在50%的显著程度上的爱,等上2年就是75%,合理吗?

于是,我有87.5%爱你。

炒香肠问题

炒香肠问题 2010-08-03 05:34

我做炒饭经常放香肠,但有一个问题一直困扰着我:怎么翻炒才能尽快将散落的众多香肠片的两个面都炒焦但又不至于糊掉呢?

今天边炒香肠边想了一个模型。假设香肠的每个面的完美加热时间为1,即一个面的累计加热时间为1是最好吃的香肠,大于1就糊了。每次翻炒,将会有一半的香肠被翻过来。翻炒的时刻间隔记为t0,t1,t2,...

假设有足够大量的香肠片,怎么设计合适的翻炒间隔才能省力并尽快炒出好吃的香肠,但又不尽量不糊呢?即在某个置信度下,用尽量少的翻炒次数,有足够比例的香肠两侧加热时间尽量高,但又能把糊的香肠比例控制在足够低。

初步想法:直观上应该是越翻越快的。那么选择一个收敛速度合适的极限为2的无穷级数(显然收敛太快容易糊锅),用它的每一项作为翻炒间隔就行了。有没有这种级数随机抽取的理论呢?

另,每个香肠的状态是一个马尔可夫链啊,但好像没什么用= =

炒香肠问题后续 2010-08-05 05:59

问题叙述见上篇日志。最后提到了用级数作为翻炒间隔的想法,此文叙述此炒香肠法的计算机模拟结果。

我尝试了几何级数(或者说等比数列)和p级数(例如p=2时1,1/4,1/9,1/16)。p级数效果不理想,主要是由于其第一项过大,导致香肠的两侧加热极不均匀。下面是等比数列的模拟结果:

q	a0	mu-100	sigma-100	mu-5  	sigma-5
0.5	1.0	1.0038	0.5786		0.9362	0.5754
0.6	0.8	0.9943	0.4218		0.8629	0.4968
0.7	0.6	1.0001	0.4210		0.7640	0.4075
0.8	0.4	1.0049	0.3312		0.5923	0.3042
0.9	0.2	0.9994	0.2299		0.3412	0.1725

q 是等比数列公比,a0是其对应的首项(第一次翻炒间隔)。mu-100, sigma-100分别是100次翻炒后累计加热时间的均值和标准差,mu-5, sigma-5是5次翻炒的结果。我们希望mu尽量接近1(即香肠平均加热水平良好),并且sigma越小越好(即香肠加热越均匀)。以上实验均有一万片香肠参与测试~

100次翻炒的结果说明,短时快速翻炒可以很好的保证香肠受热均匀,但是前提是你需要勤劳的翻N次(这简直是废话。。。)请注意,下面的不是废话:如果你只想翻4,5次,那么表中倒数2,3行是不错的选择——选择第一次间隔在0.4~0.6,即让一侧的香肠大概半熟,以后以0.7~0.8的倍率缩短翻炒间隔炒上4,5回出锅就行啦。

最后,请牢记此法名为“几何级数炒香肠法”!

Empty Google Friend Connect Bar in WordPress

[English]
It confused me a lot. Now I found the reason, in short, there is some conflict between Google Friend Connect (GFC) and prototype.js (some plugins of WP used this JS lib).
Workaround - add the code below just before the generated gadget code.

<script>
window.JSON = {
 parse: function(st){
   return st.evalJSON();
 },
 stringify: function(obj){
   return Object.toJSON(obj);
 }
};
</script>

For more detail, see this.

[Chinese]
发现Google Friend Connect (GFC) 小工具在Wordpress显示空白的解决办法,希望对别人有用。
GFC的JS代码和prototype.js相冲突(很多WP插件使用这个JS库),解决办法:在生成的gadget代码前加入以下代码即可。

<script>
window.JSON = {
 parse: function(st){
   return st.evalJSON();
 },
 stringify: function(obj){
   return Object.toJSON(obj);
 }
};
</script>

详情:看这里

概率问题

看到一个有趣的概率题,分享一下。

有这样一个游戏,在三扇关闭的门中,奖品藏在其中的一个后面,其余的门后面都是假的奖品。参加游戏的观众从三扇门中选择一个,并站在这个门的前面。主持人(知道奖品藏在哪里)打开其他两扇门中的一个,向该观众显示一个假的奖品,并且问他足否想改变其最初的选择。问:为了使选中奖品的概率达到最大,这位观众应该坚持最初的选择,还是选择另外一扇门,还是这两者根本没有区别?

不要google噢,大家回复发表观点哈。

blog搬家

蓄谋已久的blog搬家行动胜利完成!
请大家使用新域名[http://nonleaf.net],原来域名目前仍旧可以访问,会自动转向新域名。

本以为很轻松的搬家工作,还是遇到了不少困难,大概清楚了从域名解析到Apache mod_rewrite。

问题记录如下,以飨后人:

1.将备份的数据库用文本编辑器打开,将原来的URL批量替换为新的,然后导入新数据库。随后发现wordpress的侧边拦没法载入,报错总是在wp-includes/widgets.php里面的一些语句。Google未果,研究发现问题出在数据库上,有些表(如wp_options)的文本数据有类似这样的格式:s:6:"string",6表明后面的string的长度,我没仔细看代码,估计这么做是为了快速定位,但是如果string里面含有URL,都被我批量替换掉了,替换前后长度必然不相等,所以造成wp读出奇怪的数据down掉。

解决办法:
自己写个程序改一下备份的数据库文件,将s后面的数字数出来替换。或者对原来数据库只改关键地方--wp_options表里option_name='siteurl'的那一行,其余的通过在旧服务器上写.htaccess重定向解决,前提是原来服务器apache有mod_rewrite。
编辑旧服务器的wordpress目录下的.htaccess文件——
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ http://nonleaf.net/wordpress/$1 [L,R=301]

2.cPanel暂时不支持域名绑定在深层目录下,但是这个对于一个虚拟主机多个人共享是需要的。可以通过mod_rewrite达到目的(写.htaccess)。

解决办法:
例如要从test.nonleaf.net对应到到主机的根目录(/home/user/public_html/)下的一个深层目录/home/user/public_html/nonleaf/test/。
首先在域名商那里将test添加如A记录,IP指向主机(当然你也可以添加CNAME),同时将这个域名加入到cPanel的域名中,让主机能接受来自这个域名的请求。然后在public_html下面创建.htaccess文件——
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/nonleaf/test/.*$ [NC] #防止反复rewrite造成死循环
RewriteCond %{HTTP_HOST} ^test.nonleaf.net$ [NC] #识别出test.nonleaf.net域名
RewriteRule ^(.*)$ nonleaf/test/$1 [L,NC] #rewrite到子目录

当然,如果在test目录下的.htaccess中还有rewrite,需要考虑加上RewriteBase。总之mod_rewrite的功能很好很强大,可是实现机制有些复杂,要多看manual才行。

Sun to Acquire MySQL

重大新闻啊,希望SUN坚守Open Source精神,发扬光大哈。我一直觉得SUN是技术至上,不大会赚钱。

http://www.sun.com/aboutsun/media/presskits/2008-0116/index.jsp?intcmp=hp2008jan16_mysql_learn

2008年1月16日这天,忘记 Macbook Air 吧,IT界最大的新闻是SUN收购了MySQL。
Sun to Acquire MySQL
Sun announced an agreement to acquire MySQL AB, an open source icon and developer of one of the world's fastest growing open source databases. This acquisition accelerates Sun's position in enterprise IT to now include the $15 billion database market and reaffirms Sun's position as the leading provider of platforms for the Web economy and its role as the largest commercial open source contributor.

[转载]新浪网友

这个笑死我了,很强大。。。
其实我也挺讨厌新浪的,blog没有trackback也就不说了,非注册用户留言都不能留URL,这还是blog么?鼠目寸光,没啥前途了。

来做做Web概论考试最后一题吧:
List the three fundamental changes that Blog bring to Web.
1.From Readable to Writable
2.From Pull to Push
3.Form one-way link to two-way reference

http://ddqiang.yculblog.com/post.2890519.html
去你妈的,就你事儿多
东东枪 @ 2007-12-27 12:18

刚才在一人的博客上回复了一句。
是新浪博客。
留言内容写好,发现默认的昵称是“新浪网友”。

别你大爷了。改。
把昵称改成“你他妈才新浪网友呢”。点提交。
蹦出一对话框,上头写——

发表评论失败:很抱歉,昵称不能超过8个中文字符,且只能输入中文、英文、数字以及下划线,不支持空格,请重新输入:)

去你妈的,就你事儿多。
好歹咱是copywriter,专业添字儿去字儿的,怕你这个?再改。
改成“你丫才新浪网友呢”,数了数,8个没错。
再提交。又蹦出一对话框——

发表评论失败:很抱歉,您的昵称输入无效,请更名后重新输入:)

操。什么叫他妈输入无效啊?难道连“丫”都是敏感词了?
怎么那么敏感啊您?您连腿肚子上都是G点了。

那就接着改。改成“非新浪网友”。
提交。还是那对话框——

发表评论失败:很抱歉,您的昵称输入无效,请更名后重新输入:)

再试几个——“傻逼新浪网友”、“不是新浪网友”……
都不成。都是昵称无效。
有你们丫这么欺负人的么?我连“不是新浪网友”的权利都没有了?

哎,我他妈豁出去了,试验一下——把昵称改成“傻逼”。
又不是没傻逼过。反正“傻逼”也比“新浪网友”强。而且,留言内容咱可以再找补回来啊。
(枪:在这里再次向那博客主人隆重道歉,委屈您了。当时一时没措好词,本来不必的。确实也是我一时犯傻逼了。)

再提交。“恭喜您!您的评论发表成功!”
操。

我确实一直讨厌新浪。平时看新闻从不去新浪看,讨厌新浪博客,甚至还很偏见地有点瞧不上用新浪博客的人。
原因很多。反正也是冰冻三尺非一日之寒了。
但这次,确实让我对新浪的本质有了更深刻的认识——

什么叫新浪?
新浪就是:你是个傻逼都没事儿,但不许你不是新浪网友。

Linus vs C++

大牛Linus在骂C++,这人脾气也太火爆了...如此看来回去把C++仍了吧...
我觉得C++ STL挺好用的啊...OK, I am a substandard programmer...
http://thread.gmane.org/gmane.comp.version-control.git/57643/focus=57918

From: Linus Torvalds linux-foundation.org>
Subject: Re: [RFC] Convert builin-mailinfo.c to use The Better String Library.
Newsgroups: gmane.comp.version-control.git
Date: 2007-09-06 17:50:28 GMT (16 weeks, 12 hours and 4 minutes ago)

On Wed, 5 Sep 2007, Dmitry Kakurin wrote:
>
> When I first looked at Git source code two things struck me as odd:
> 1. Pure C as opposed to C++. No idea why. Please don't talk about portability,
> it's BS.

*YOU* are full of bullshit.

C++ is a horrible language. It's made more horrible by the fact that a lot
of substandard programmers use it, to the point where it's much much
easier to generate total and utter crap with it. Quite frankly, even if
the choice of C were to do *nothing* but keep the C++ programmers out,
that in itself would be a huge reason to use C.
继续阅读

[转载]P=?NP

interview的那个NPC问题,学习一下。
http://zhiqiang.org/blog/posts/preliminary-computer-theory-p-vs-np-an-overview-of-the-problem.html

理论计算机初步:P vs NP - 问题概述

P = NP?

这个问题,作为理论计算机科学的核心问题,其声名早已经超越了这个领域。它是Clay研究所的七个百万美元大奖问题之一,在2006国际数学家大会上,它是某个1小时讲座的主题。
继续阅读