2010年12月21日星期二

神秘常量复出!用0x077CB531计算末尾0的个数

神秘常量复出!用0x077CB531计算末尾0的个数
icon2 Brain Storm | icon4 2010-12-13 22:02| icon331 Comments | 本文内容遵从CC版权协议 转载请注明出自matrix67.com

    大家或许还记得 Quake III 里面的一段有如天书般的代码,其中用到的神秘常量 0x5F3759DF 究竟是怎么一回事,着实让不少人伤透了脑筋。今天,我见到了一段同样诡异的代码。
    下面这个位运算小技巧可以迅速给出一个数的二进制表达中末尾有多少个 0 。比如, 123 456 的二进制表达是 1 11100010 01000000 ,因此这个程序给出的结果就是 6 。

unsigned int v;  // find the number of trailing zeros in 32-bit v
int r;           // result goes here
static const int MultiplyDeBruijnBitPosition[32] =
{
  0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8,
  31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9
};
r = MultiplyDeBruijnBitPosition[((uint32_t)((v & -v) * 0x077CB531U)) >> 27];

    熟悉位运算的朋友们可以认出, v & -v 的作用就是取出右起连续的 0 以及首次出现的 1 。当 v = 123 456 时, v & -v 就等于 64 ,即二进制的 1000000 。怪就怪在,这个 0x077CB531 是怎么回事?数组 MultiplyDeBruijnBitPosition 又是什么玩意儿呢?


    这还得从 0x077CB531 本身的一个性质开始说起。把这个常数写成 32 位二进制,可以得到

00000111011111001011010100110001

    这个 01 串有一个无比牛 B 的地方:如果把它看作是循环的,它正好包含了全部 32 种可能的 5 位 01 串,既无重复,又无遗漏!其实,这样的 01 串并不稀奇,因为构造这样的 01 串完全等价于寻找一个有向图中的 Euler 回路。如下图,构造一个包含 16 个顶点的图,顶点分别命名为 0000, 0001, 0010, …, 1111 。如果某个点的后 3 位,正好等于另一个点的前 3 位,就画一条从前者出发指向后者的箭头。也就是说,只要两个顶点上的数满足 abcd 和 bcde 的关系( a 、 b 、 c 、 d 、 e 可能代表相同的数字),就从 abcd 出发,连一条到 bcde 的路,这条路就记作 abcde 。注意,有些点之间是可以相互到达的(比如 1010 和 0101 ),有些点甚至有一条到达自己的路(比如 0000 )。

  

    构造一个字符串使其包含所有可能的 5 位 01 子串,其实就相当于沿着箭头在上图中游走的过程。不妨假设字符串以 0000 开头。如果下一个数字是 1 ,那么 00001 这个子串就被包含了,同时最新的 4 位数就变成了 0001 ;但若下一个数字还是 0 ,那么 00000 就被包含了进来,最新的 4 个数仍然是 0000 。从图上看,这无非是一个从 0000 点出发走了哪条路的问题:你是选择了沿 00001 这条路走到了 0001 这个点,还是沿着 00000 这条路走回了 0000 这个点。同理,每添加一个数字,就相当于沿着某条路走到了一个新的点,路上所写的 5 位数就是刚被考虑到的 5 位数。我们的目的便是既无重复又无遗漏地遍历所有的路。显然图中的每个顶点入度和出度都是 2 ,因此这个图一定存在 Euler 回路,我们便能轻易构造出一个满足要求的 01 串了。这样的 01 串就叫做 De Bruijn 序列。

    De Bruijn 序列在这里究竟有什么用呢?它的用途其实很简单,就是为 32 种不同的情况提供了一个唯一索引。比方说, 1000000 后面有 6 个 0 ,将 1000000 乘以 0x077CB531 ,就得到

   00000111011111001011010100110001
-> 11011111001011010100110001000000

    相当于把 De Bruijn 序列左移了 6 位。再把这个数右移 27 位,就相当于提取出了这个数的头 5 位:

   11011111001011010100110001000000
->                            11011

    由于 De Bruijn 序列的性质,因此当输入数字的末尾 0 个数不同时,最后得到的这个 5 位数也不同。而数组 MultiplyDeBruijnBitPosition 则相当于一个字典的功能。 11011 转回十进制是 27 ,于是我们查一查 MultiplyDeBruijnBitPosition[27] ,程序即返回 6 。
    注意到当输入数字的末尾 0 个数超过 27 个时,程序也是正确的,因为左移时低位正好是用 0 填充的。

    这段神一般的代码取自 http://graphics.stanford.edu/~seander/bithacks.html ,欢迎大家前去围观。

2010年12月20日星期一

中国妈妈该怎么去教育孩子(曹仁超)

发信人: bloodflower (面条), 信区: ChildEducation
标  题: 中国妈妈该怎么去教育孩子(曹仁超)
发信站: 水木社区 (Thu Dec 16 14:42:47 2010), 站内


网友襄阳Wilson:您书中有篇文章提到千金难买少年穷,那么您会为子女买“穷”或
者创造一种“穷”的环境吗!这样的创富是否更加坚固一些?

曹仁超:在第三本书《论性》中,本人引述一个真人真事。1992年一位离婚后带着3
个月生活费及三个孩子的中国与犹太混血的上海女子移居以色列的故事,说出中国人
与犹太人思想上的不同。中国母亲认为“再苦也不能苦孩子”,结果是慈母多败儿。
犹太人认为孩子应帮母亲做事包括赚钱养家,因为“天下没有免费午餐”。结果三个
孩子从上海到特拉维夫后,未长大已学会赚钱,今天已成为小富。

网友:千金难买少年穷,在你的生活里面你是不是有意制造这种穷的环境?

曹仁超:我是很不高兴中国的母亲常常说,再穷也不要穷孩子,再苦也不要苦孩子,
这个想法是不对的。我还是赞成我的母亲,她说,穷嘛,所以我的孩子应该苦的,犹
太人常常叫小孩子去洗碗,或者是赚钱帮自己家里。今天刚刚改革开放30多年,中国
人富起来了。我看到,中国的母亲对孩子太好了。这个我在香港看到的,很不顺眼,
12岁的孩子,要菲佣帮助穿鞋,吃饭,样样母亲弄好了,吃饭之后,碗也不洗。这个
不是对孩子好,是对孩子差。无论你有钱没有钱,千万不要对孩子太好,爱在心里面
,不要纵容他。因为他老把这些认为你是对他好的。不要父亲母亲给他太多的钱,慢
慢他养成赚钱的习惯的话,比你今天对他好,更加好。母亲不能够照顾他一生一世的
,你不希望你的孩子一生一世是靠你去养的吧。所以我很反对再穷也不应该穷在孩子
身上,再苦也都不应该苦在孩子身上这种说法。我主张让孩子从小开始明白什么是穷
,你父亲有钱是你父亲的事,不要将他太多钱给孩子,让他早一点吃一点苦,吃饭都
是饭来张口,这都是不好的。

————————————————————————
文/(以色列国家钻石公司驻中国首席代表 莎拉)

我的父亲是犹太人,二战时逃亡到上海,并在那生下我。母亲在我很小的时候就抛弃
了我们,12岁那年父亲去世,我就成了孤儿。长大后,我在上海铜厂当体力女工。结
婚生下3个孩子后,丈夫离我们而去。正好那时中以正式建交,我成为了第一批回到
以色列的犹太后裔。初到以色列的日子,比想象中要困难许多。我不懂得那语言(父
亲教的古希伯莱语早已不在以色列使用),不懂得移民优惠政策(新移民可以有一笔安
家费)。

在特拉维夫的大街上,我从上海带去的积蓄只能维持3个月的生活开支,我必须找到
赚钱的办法。我苦攻希伯莱语,学最基本的生活语言,然后,我在路边摆了个投资最
小的小摊卖春卷。以色列的官方货币是谢克尔,1谢克尔兑换人民币2块钱,更小的币
值是雅戈洛,1谢克尔=100雅戈洛。我的春卷小摊,每天能赚到十来个谢克尔。1993
年5月,我把3个孩子都接到了以色列,受到了不少邻居们的责难。以前在国内时,我
一直秉承再苦不能苦孩子的原则,到了以色列以后,我依旧做着我合格的中国式妈妈


一天,邻居过来训斥老大:”你已经是大孩子了,你应该学会去帮助你的母亲,而不
是在这看着母亲忙碌,自己就像废物一样。”然后,邻居转过头训斥我:”别以为生
了孩子你就是母亲……”邻居的话很伤人,可是,老大说:”也许,她说得没错。妈
妈,让我试着去照顾弟弟妹妹吧……”第二天放学后,老大坐在我旁边,学着我的样
子把打好的春卷皮包上馅,卷成成品,然后入油锅去炸。他的动作一开始有些笨拙,
但是后来越来越熟练……老大身上的转变大得连我自己都想不到,除了帮我做春卷,
他还提出由他们带做好的春卷去学校卖给同学。每天早上,他和弟弟妹妹每人带20个
春卷(每个卖50雅格洛)去学校,放学回来,会把每人10谢克尔的卖春卷收入全部上
交给我。我觉得很心酸,让他们小小年龄就要担起生活的担子。可是,他们没有表现
出我想象的那种委屈,他们说他们慢慢开始喜欢这种赚钱的感觉了。邻居太太经常来
跟我聊天,告诉我正规的犹太家庭应该如何运作,应该如何教育孩子:犹太人从来不
觉得赚钱是一个需要到达一定年龄才能开展的活动,与中国的”教育从娃娃抓起”一
样,他们始终觉得”赚钱从娃娃抓起”才是最好的教育方式。

她告诉我,在犹太家庭没有免费的食物和照顾,任何东西都是有价格的,每个孩子都
必须学会赚钱,才能获得自己需要的一切。我觉得这样的教育手段比较残酷。但是,
孩子们在学校也被灌输着这样的理念。他们比我更容易地接受这种犹太法则。于是,
我决定改变以前在国内对孩子们的习惯,试着培养他们成为犹太人。

首先,我们家确立了有偿生活机制,家里的任何东西都不再无偿使用,包括我这个母
亲提供的餐食和服务。在家吃一顿饭,需要支付给我100雅戈洛的成本费用,洗一次
衣服需要支付50雅戈洛……在收取费用的同时,我给予他们赚钱的机会,我以每个春
卷30雅戈洛的价钱批发给他们,他们带到学校后,可以自行加价出售,利润部分可自
由支配。

第一天下午回来以后,我得知3个孩子卖春卷的方式是:

老三 50雅戈洛一个零售,赚400雅戈洛(20个春卷,成本600雅戈洛,销售1000雅戈洛
) 。
老二 40雅戈洛一个批发 赚200雅戈洛 以后每天送100个去(销售800雅戈洛)。
老大 举办讲座,他精心把每个春卷分割成了10份,每份10雅戈洛,接待了200个听众
。上缴学校500雅戈洛场地费用,赚900雅戈洛(销售2000雅戈洛,去场地500雅戈洛
,成本600雅戈洛)。

我真的没有料到,只在短短数日之间,以前只会黏着我撒娇的孩子就摇身一变成了精
明的小犹太商人。他们的学业并没有因此受到任何影响,为了琢磨出更多更新颖的赚
钱方法,他们很努力地去学习和思考——老师授课的内容很对他们胃口,因为没有奉
献精神之类的说教。

当老大在法律课上学习了移民法后,他告诉我像我们这样的家庭应该可以去移民局领
取安家费。我半信半疑去了,结果一下领回了6000谢克尔的安家费。老大说因为他给
我提供了信息,我应该付给他10%的酬金。我犹豫很久,终于决定把600谢克尔这笔
大钱给他,他拿到钱后,给我和弟弟妹妹都买了很漂亮的礼物,剩下的钱,他说他会
拿去变成更多的钱。老大用这笔酬金邮购了一批在(中国)国内很便宜的文具,然后
去学校进行售卖,利润再投入继续进货,1年以后他户头上的金额就已经超过了2000
谢克尔。

尽管老大很会赚钱,老二比他更领会犹太法则的精髓——犹太人共同的一点是,从事
那些不用投入本钱的行业,从事其它人不做的、无须花钱和投资的工作。干我感兴趣
的事情,让别人来付钱。他赚的是不需要成本的精神领域的利润——老二以他14岁的
年龄和文笔,竟然在报纸上开设了自己的专栏,专门介绍上海的风土人情,每周交稿
2篇,每篇1000字,每月8000雅戈洛。

老三是女孩子,因为比较矜持,也没有展露出赚钱方面的才能,但是我在她身上欣慰
地看到了犹太人对生活的乐观和优雅。她学会了煮茶和做点心,每天晚上,她会精心
煮一壶红茶,配上她自创的口味不同的点心,一家人围坐下来边吃边聊天——老三的
点心有点中西合璧的味道,两个哥哥都很喜欢。

不过,这些点心不是免费的,两个哥哥支付的点心费用,刨开成本和每天需要交给我
的费用外,老三也能活得很滋润。

当我们家的资金越来越丰富的时候,我们一家4口合资开办了我们家的中国餐厅。我
占40%股份、老大30%、老二20%、老三10%。当我们家的餐厅越来越有名的时候,
我也引起了很多关注。当我获得拉宾的接见后,我成了以色列的名人。此时的我已经
完全掌握了希伯莱文,再加上我的母语中文,我最后被以色列国家钻石公司邀请担任
驻中国首席代表。

当我回国任职的时候,孩子们也跟随我一起回到了中国,有了中国孩子作为比较对象
之后,我方才发觉我的孩子成长得比我想象的还要优秀——在回国之前,每个孩子都
去购买了很多以色列产的物品。

回国之后,老师来找我了,她说我的孩子在校园推销来自以色列的商品,从饰品到民
族服装甚至到子弹壳无所不有,她建议我好好管教一下孩子。我告诉她,我无权干涉
我孩子的行为,这是他赚取他们学费的方式——因为,我已经不再负责他们的所有学
习费用。老师的眼睛顿时瞪得大大的,她理解不了像我这样月薪5000美元的母亲竟然
会不给孩子学费。我请她品尝一下女儿做的在家售价2块钱一个的小点心,微笑着告
诉她:“这是我的孩子在以色列生活几年以来,学会犹太法则的产物,我相信他们将
来都会成为优秀的人才……

在随后的高考中,老大进入了旅游高等专科学校,他说他要成为专业的旅游人才,然
后去以色列开办自己的旅游公司,垄断经营中国游;第二年,老二考入上海外国语学
院,他说他的理想是当一个作家,在不需任何投资和奉献的前提下赚取利润;老三说
她会去学中国厨艺,当一个顶级的糕点师,然后去开办全以色列最好的糕点店……

犹太人用敲击金币的声音迎接孩子的出世,赚钱是他们人生的终极目标,至于教育、
学习都是为了达到这个目标必须经历的过程——而中国的父母,哪怕心中憧憬无比,
但却从来不肯挑明这个话题。这句话很难说吗?其实只是简单的一句:“孩子,我想
当一个富豪的妈妈……” 

   







--

※ 来源:・水木社区 newsmth.net・[FROM: 119.145.41.*]

2010年12月14日星期二

GoDaddy Domain + DynDNS

GoDaddy Domain + DynDNS

I host a number of servers and applications, including this blog, on my home network.  I had a static IP address through my cable provider and my domain name,bunkerhollow.com, was registered with GoDaddy.  I use GoDaddy's TotalDNS Control to point my Root ARecord (@) to my static IP.  This directs all traffic on any port, using any protocol, to my home network.  I then configure my mail MX records and setup various subdomains to use as shortcuts (blog.bunkerhollow.com redirects tohttp://www.bunkerhollow.com/blogs/matt/).

The problem is I'm moving to a new area at the end of the month and the local ISP only offers static IP addresses at the "Business Plan" level.  So instead of paying twice what I'm paying now, I've figured out how to achieve the same result using a dynamic DNS service.

Register with a Dynamic DNS Service

  1. I registered with DynDNS, for free, and acquired a hostname of mddubs.getmyip.com.
  2. I then setup my network to automatically update my dynamic hostname when my IP address changes.  Most routers and firewalls have this functionality built-in and/or most dynamic DNS services provide a Windows Service utility which will run on a desktop and accomplish the same task.
Now I've got a domain name which will always take me where I want to go, regardless of how often my system's IP address changes.  The next step is to associate my GoDaddy DNS settings with this new dynamic hostname.  If I could just set the Root ARecord (@) to mddubs.getmyip.com I'd be done but, of course, life isn't that easy.  The TotalDNS Control only allows you to assign ARecords to IP addresses.  You are, however, allowed to assign CNAME Aliases to other hostnames.

Assign CNAME Aliases in GoDaddy's TotalDNS Control

  1. In my case, I created some new CNAME Aliases named wwwmailroot, and assigned them all tomddubs.getmyip.com.
  2. Once the changes have been processed, browsing to http://www.bunkerhollow.com will take me to the correct IP address.

After setting up my CNAMES I'm in pretty good shape.  There's just one caveat, I must always use a CNAME!  This turned out to be a major hassle since I used my domain root (bunkerhollow.com) for just about everything.  I had to change all my systems to use new CNAMES (www.bunkerhollow.com, mail.bunkerhollow.com, root.bunkerhollow.com, etc) which all point to the same place, mddubs.getmyip.com.

Once that was straightened out only a single problem remained, browsing to http://bunkerhollow.com failed.  And so it should, it's still set to a static IP address which I no longer own.  This isn't critical, but I think it's best practice to have http://domain.com and http://www.domain.com always take you to the same place.  I accomplished this using a bit of a hack:

Redirect a Root Web Request to the Correct Location

  1. I setup a free hosting plan for my domain.  During setup, I was given the choice to leave my DNS settings unchanged, which I did.
  2. Once setup was complete, I went to the GoDaddy Hosting Control Panel to obtain the IP address of where my website is located and I set my Root ARecord (@) to this IP.
  3. Then I uploaded a small index.html file which redirects to the correct website:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <title>Redirecting...</title>
    <meta http-equiv="REFRESH" content="0;url=http://www.bunkerhollow.com">
    </head>
    </html>
And it all works as it should!

2010年12月8日星期三

Alpha-Beta搜索 - 国际象棋中的人工智能

Alpha-Beta搜索
 
Bruce Moreland / 
 
最小-最大的问题
 
  Alpha-Beta 同“最小-最大”非常相似,事实上只多了一条额外的语句。最小最大运行时要检查整个博弈树,然后尽可能选择最好的线路。这是非常好理解的,但效率非常低。每次搜索更深一层时,树的大小就呈指数式增长。
  通常一个国际象棋局面都有35个左右的合理着法,所以用最小-最大搜索来搜索一层深度,就有35个局面要检查,如果用这个函数来搜索两层,就有352个局面要搜索。这就已经上千了,看上去还不怎样,但是数字增长得非常迅速,例如六层的搜索就接近是二十亿,而十层的搜索就超过两千万亿了。
  要想通过检查搜索树的前面几层,并且在叶子结点上用启发式的评价,那么做尽可能深的搜索是很重要的。最小-最大搜索无法做到很深的搜索,因为有效的分枝因子实在太大了。
 
口袋的例子
 
  幸运的是我们有办法来减小分枝因子,这个办法非常可靠,实际上这样做绝对没有坏处,纯粹是个有益的办法。这个方法是建立在一个思想上的,如果你已经有一个不太坏的选择了,那么当你要作别的选择并知道它不会更好时,你没有必要确切地知道它有多坏。有了最好的选择,任何不比它更好的选择就是足够坏的,因此你可以撇开它而不需要完全了解它。只要你能证明它不比最好的选择更好,你就可以完全抛弃它。
  你可能仍旧不明白,那么我就举个例子。比如你的死敌面前有很多口袋,他和你打赌赌输了,因此他必须从中给你一样东西,而挑选规则却非常奇怪:
  每个口袋里有几件物品,你能取其中的一件,你来挑这件物品所在的口袋,而他来挑这个口袋里的物品。你要赶紧挑出口袋并离开,因为你不愿意一直做在那里翻口袋而让你的死敌盯着你。
  假设你一次只能找一只口袋,在找口袋时一次只能从里面摸出一样东西。
  很显然,当你挑出口袋时,你的死敌会把口袋里最糟糕的物品给你,因此你的目标是挑出“诸多最糟的物品当中是最好的”那个口袋。
  你很容易把最小-最大原理运用到这个问题上。你是最大一方棋手,你将挑出最好的口袋。而你的死敌是最小一方棋手,他将挑出最好的口袋里尽可能差的物品。运用最小-最大原理,你需要做的就是挑一个有“最好的最差的”物品的口袋。
  假设你可以估计口袋里每个物品的准确价值的话,最小-最大原理可以让你作出正确的选择。我们讨论的话题中,准确评价并不重要,因为它同最小-最大或Alpha-Beta的工作原理没有关系。现在我们假设你可以正确地评价物品。
  最小-最大原理刚才讨论过,它的问题是效率太低。你必须看每个口袋里的每件物品,这就需要花很多时间。
  那么怎样才能做得比最小-最大更高效呢?
  我们从第一个口袋开始,看每一件物品,并对口袋作出评价。比方说口袋里有一只花生黄油三明治和一辆新汽车的钥匙。你知道三明治更糟,因此如果你挑了这只口袋就会得到三明治。事实上只要我们假设对手也会跟我们一样正确评价物品,那么口袋里的汽车钥匙就是无关紧要的了。
  现在你开始翻第二个口袋,这次你采取的方案就和最小-最大方案不同了。你每次看一件物品,并跟你能得到的最好的那件物品(三明治)去比较。只要物品比三明治更好,那么你就按照最小-最大方案来办——去找最糟的,或许最糟的要比三明治更好,那么你就可以挑这个口袋,它比装有三明治的那个口袋好。
  比方这个口袋里的第一件物品是一张20美元的钞票,它比三明治好。如果包里其他东西都没比这个更糟了,那么如果你选了这个口袋,它就是对手必须给你的物品,这个口袋就成了你的选择。
  这个口袋里的下一件物品是六合装的流行唱片。你认为它比三明治好,但比20美元差,那么这个口袋仍旧可以选择。再下一件物品是一条烂鱼,这回比三明治差了。于是你就说“不谢了”,把口袋放回去,不再考虑它了。
  无论口袋里还有什么东西,或许还有另一辆汽车的钥匙,也没有用了,因为你会得到那条烂鱼。或许还有比烂鱼更糟的东西(那么你看着办吧)。无论如何烂鱼已经够糟的了,而你知道挑那个有三明治的口袋肯定会更好。
 
算法
 
  Alpha-Beta就是这么工作的,并且只能用递归来实现。稍后我们再来谈最小一方的策略,我希望这样可以更明白些。
  这个思想是在搜索中传递两个值,第一个值是Alpha,即搜索到的最好值,任何比它更小的值就没用了,因为策略就是知道Alpha的值,任何小于或等于Alpha的值都不会有所提高。
  第二个值是Beta,即对于对手来说最坏的值。这是对手所能承受的最坏的结果,因为我们知道在对手看来,他总是会找到一个对策不比Beta更坏的。如果搜索过程中返回Beta或比Beta更好的值,那就够好的了,走棋的一方就没有机会使用这种策略了。
  在搜索着法时,每个搜索过的着法都返回跟AlphaBeta有关的值,它们之间的关系非常重要,或许意味着搜索可以停止并返回。
  如果某个着法的结果小于或等于Alpha,那么它就是很差的着法,因此可以抛弃。因为我前面说过,在这个策略中,局面对走棋的一方来说是以Alpha为评价的。
  如果某个着法的结果大于或等于Beta,那么整个结点就作废了,因为对手不希望走到这个局面,而它有别的着法可以避免到达这个局面。因此如果我们找到的评价大于或等于Beta,就证明了这个结点是不会发生的,因此剩下的合理着法没有必要再搜索。
  如果某个着法的结果大于Alpha但小于Beta,那么这个着法就是走棋一方可以考虑走的,除非以后有所变化。因此Alpha会不断增加以反映新的情况。有时候可能一个合理着法也不超过Alpha,这在实战中是经常发生的,此时这种局面是不予考虑的,因此为了避免这样的局面,我们必须在博弈树的上一个层局面选择另外一个着法。
  在第二个口袋里找到烂鱼就相当于超过了Beta,如果口袋里没有烂鱼,那么考虑六盒装流行唱片的口袋会比三明治的口袋好,这就相当于超过了Alpha(在上一层)。算法如下,醒目的部分是在最小-最大算法上改过的:
 
int AlphaBeta(int depth, int alpha, int beta) {
 if (depth == 0) {
  return Evaluate();
 }
 GenerateLegalMoves();
 while (MovesLeft()) {
  MakeNextMove();
  val = -AlphaBeta(depth - 1, -beta, -alpha);
  UnmakeMove();
  if (val >= beta) {
   return beta;
  }
  if (val > alpha) {
   alpha = val;
  }
 }
 return alpha;
}
 
  把醒目的部分去掉,剩下的就是最小-最大函数。可以看出现在的算法没有太多的改变。
  这个函数需要传递的参数有:需要搜索的深度,负无穷大即Alpha,以及正无穷大即Beta
 
val = AlphaBeta(5, -INFINITY, INFINITY);
 
  这样就完成了5层的搜索。我在写最小-最大函数时,用了一个诀窍来避免用了“Min”还用“Max”函数。在那个算法中,我从递归中返回时简单地对返回值取了负数。这样就使函数值在每一次递归中改变评价的角度,以反映双方棋手的交替着子,并且它们的目标是对立的。
  在Alpha-Beta函数中我们做了同样的处理。唯一使算法感到复杂的是,AlphaBeta是不断互换的。当函数递归时,AlphaBeta不但取负数而且位置交换了,这就使得情况比口袋的例子复杂,但是可以证明它只是比最小-最大算法更好而已。
  最终出现的情况是,在搜索树的很多地方,Beta是很容易超过的,因此很多工作都免去了。
 
可能的弱点
 
  这个算法严重依赖于着法的寻找顺序。如果你总是先去搜索最坏的着法,那么Beta截断就不会发生,因此该算法就如同最小-最大一样,效率非常低。该算法最终会找遍整个博弈树,就像最小-最大算法一样。
  如果程序总是能挑最好的着法来首先搜索,那么数学上有效分枝因子就接近于实际分枝因子的平方根。这是Alpha-Beta算法可能达到的最好的情况。
  由于国际象棋的分枝因子在35左右,这就意味着Alpha-Beta算法能使国际象棋搜索树的分枝因子变成6
  这是很大的改进,在搜索结点数一样的情况下,可以使你的搜索深度达到原来的两倍。这就是为什么使用Alpha-Beta搜索时,着法顺序至关重要的原因。
 
  原文:http://www.seanet.com/~brucemo/topics/alphabeta.htm

2010年12月7日星期二

蔡定剑的背影

蔡定剑的背影

来源:21世纪网-《21世纪经济报道》 作者:陈季冰
2010年12月03日01:24
  11月26日上午,中国政法大学教授、著名宪政专家蔡定剑先生遗体告别仪式在北京八宝山革命公墓举行。几个到场的朋友后来告诉我,那天去为蔡老师送行的人很多。

  过去一周里,蔡先生逝世(11月22日)的噩耗是圈内及媒体人士间唏嘘不已的主要话题。我们也看到,从广州的《南方都市报》到北京的《新京报》,从上海的《东方早报》到昆明的《云南信息报》……国内数十家市场化报纸持续发表了大篇幅的纪念文字,讲述这位“理想的践行者”和“诚贯天地的君子”的种种令人感佩的事迹,以及宣扬他执着追索的民主宪政理想。

  说起来,蔡定剑大概不能算是一个家喻户晓的学术大师或舆论明星。这个在法学理论和实践中默默耕耘的朴素学人,能够被那么多人惦记着,显然更多地寄托着当前社会舆论对蔡老师生前孜孜以求的民主宪政理想的普遍吁求。或许正如我的一位编辑朋友在MSN上留言给我的一段话:在当前这样令人心灰意冷的时局中,人们悼念蔡定剑,其实是包团取暖、相互激励而已。

  蔡定剑远去的孤独背影让我很容易联想起几年前同样被癌症夺去生命的澳大利亚华裔经济学家杨小凯,同样的英年早逝,他们对在中国实现自由、民主、法治、宪政怀抱着同样的理想主义情怀。再往前追溯半个世纪,在这条曲折坎坷的思想小径上,我们还能与另一个筚路蓝缕的背影不期而遇,他就是著名的湖北籍在台思想家殷海光先生51年前,他在与今天蔡定剑差不多的盛年死于蔡定剑罹患的相同的胃癌……与哈耶克、弗里德曼这些长寿的20世纪西方自由主义思想家相比,上天对中国自由主义者似乎格外薄情寡义,这也仿佛从一个侧面象征着自由主义事业在神州大地上的惨淡命运。

  不过说实在的,我眼睛里所能看见的蔡定剑、杨小凯、殷海光……这一串悲剧人物身上最闪光的地方,并不是民主或宪政这些西方泊来的现代理念,而恰恰是历史上中国知识分子(或者更准确地应该称“士大夫”)与生俱来的“以天下为己任”的崇高人格。它的精神资源归根结底来自传统的儒家价值体系,与原汁原味的西方自由主义并无必然的血缘关系。

  不惟中国,实际上所有的非西方社会在追求现代转型的道路上,占主导地位的推动力都是一部分精英知识分子的先知先觉。他们在将自己的文明同更加“先进”的西方进行比较之后发现了宪政民主的巨大优越性,于是便不懈地呼号奔走,企图说服当局者并唤醒人民大众,或通过改良,或通过革命,最终在自己的社会里建立起西方式的政治制度。我猜想,今天那么多纪念蔡定剑老师的人,内心最牵肠挂肚的也莫不是如此。

  但就我个人的阅读而言,这种思维模式却并不符合西方社会本身从中世纪走向现代民主政治的真实路径。换言之,并不是一部分先知先觉的欧洲思想家发现民主宪政是多么多么好,或劝说当权者、或唤醒大众,进而通过自觉的改良或革命,最终“建构”起一套民主法治的政治制度的。更加符合历史实际的是:中世纪以后欧洲各自治城市中不断涌现和壮大的各类新兴利益团体通过不懈的博弈,经过点滴积累,最终“演进”出一套民主制度来的。而其中至为根本、也令人惊诧地总是让非西方知识精英视而不见的一点还在于,这些利益阶层在复杂多变的博弈格局中所追求的,其实仅仅是一些说不上多么高尚甚至是斤斤计较的现实利益而已。

  在真实的人类历史中,行之有效的民主与法治,都是无意间“谈判”出来的,而绝不是有意识“设计”出来的。事实上从没有存在过什么一劳永逸的“一揽子”或“框架”协议,每一个具体谈判的指向,很可能都与民主理想本身毫无关系。

  诚然,近代西方也横空出世了无数像孟德斯鸠、康德、洛克、穆勒这样光照千秋的启蒙思想家。但在我看来,他们对西方现代化的贡献,并不是描绘了多么完美的理想,更不是规划了多么完美的蓝图,进而呼唤民众去动手落实;他们只是敏锐地洞察了社会演进中出现的新趋势及其可能性,并加以梳理总结,以指导人们在现实中尽量少走弯路而已。

  当然,民主宪政最终一定会体现为一整套完备的制度文本,但那是“积跬步以致千里、积小流以成江河”的水到渠成之作,而不是“在白纸上勾画出来的最美图卷”。

  正是基于这种认识,我个人老实说几乎从不对自上而下的所谓政治体制改革寄托过多的热情与期待。100多年来,中国怀有相似的满腔理想、甚至不惜为此献身的先驱难道不是太多了吗?他们的努力又换来了多少切实成果呢?要是让我来解释的话,这一贯穿一个多世纪的伟大悲剧的核心就在于,他们以及他们的狂热信奉者和追随者始终没有真正明白,要在一个公共空间逼仄、民间势力稀薄的集权社会里落实民主和法治,真正需要的远不仅是变革上层政治的意愿及知识,而恰恰是对政治施以有效制衡的博弈力量。而在我看来,他们一心追求政治改造的不少宏大努力,从客观效果上说非但无助于民主的坐实,反而进一步连根拔除了传统社会中原本就十分孱弱的民间力量,例如,传统乡村社会自治或半自治所极端依赖的中坚力量士绅阶层。而这些,本来完全可以转化为保障宪政民主的重要社会资源。

  因此,假如我们今天纪念蔡定剑先生,是为了激励自己继续前行,完成他的未竟之业的话,我倒是更想冷静地提醒:我们也许未必要接过他留下的话筒,一再地重复先辈们呼喊了无数遍的那些抽象的民主理念。我们更正确的做法应该是多学学蔡老师不遗余力地为社会上的各种人群尤其是弱势的利益群体争取权利的那种具体入微的身体力行,比方说在我自己看来最具价值的他为推动各级政府预算公开所作的种种艰辛但卓有成效的努力。如果有一天,当每一个个人、每一个集团都有机会在一个透明的平台上基于一种可预见的共同规则为自身的各种利益(哪怕是许许多多卑微的蝇头小利)进行公开协商谈判的时候,我们会恍然发现,真实意义上的民主法治已经到来。毫无疑问,这一天绝不会自动降临,依然需要前赴后继地奋斗,我本人对此也一点都不乐观。但可以肯定地说,经过100多年来的奋斗与挫折,今天的中国早就应该跨过了为争取“民主是个好东西”这句口号获得承认而战斗的阶段。不然,我们实在是太没长进了!

  在此意义上,我虽然完全理解和同情有些人将蔡定剑老师形容为“这个物欲横流的年代里一位高洁的理想主义斗士”时的那种赤诚的内心写照,但我是怀着复杂的心情看待这种情感的,因为它很可能蕴涵着某种在我看来对民主法治实现路径的偏差理解。

  我这么说,绝没有贬低精神力量和理想主义的意思。相反,如我在本文开头就表明的,我一向对中国儒家传统中那种“先天下之忧而忧、后天下之乐而乐”的士大夫责任伦理充满敬意,并且认为这是中华文明千百年来赖以绵延发扬的无价的精神遗产。从蔡定剑、杨小凯和殷海光身上,我们又一次看见了它在我们这个“三千年未有之大变局”的时代依旧顽强传承的熠熠光辉。然而,正如孟子形容的“贫贱不能移、富贵不能淫、威武不能屈”,理想的最宝贵价值体现在它能够在最险恶的关头依然支撑着我们的信念,永不放弃希望和追求,并在任何条件下令我们保持独立与良知。但历史还告诉我们,在涉及人类合作的社会事务中,理想几乎很少能通过它本身的善而直接实现。更常见的情况是:无数个体的平庸(甚至是恶)的初衷经由社会承认的合适手段在分散的共同作用下最终促进了善的群体目标。这一吊诡的“大自然的隐蔽设计”,早在伟大的启蒙思想家康德关于“战争与商业促进永久和平”及亚当・斯密关于“市场这只看不见的手自动调节”的深刻论述中一览无余。

  以一种一尘不染的出世精神去追求一个本当极为入世有时甚至可以说入世到几近庸俗的目标,是非西方社会政治现代化过程中的一个共同特点。在我的视野中,这也是非西方世界的民主化之路之所以走得如此艰难的思想根源。把一个谈不上什么善的工具性的东西(虽然其结果可能是最不坏的)当作善的目的本身去不惜一切代价地追求,最后收获的每每是一声声叹息。

  据说,蔡老师临终之时留下了一句近来在媒体上广为流传的遗言“宪政民主是我们这一代人的使命”。这确乎是感人至深且具有无穷激励的,但我还是要再一次指出,在实现使命的路途中,崇高的使命感并不能替代平庸乃至鄙琐的务实操作,那就是:重建和培育有助于制约政治的各种社会博弈力量(它们中的绝大多数是因赤裸裸的利益而非理想结成的),逐渐发展出公开透明的博弈平台及明晰可预期的游戏规则,取代目前普遍的暗箱操作和规则变幻莫测的状态。

  大约三、四个月前,我曾为一个法治方面的问题跟蔡定剑通过电话,他在那头很耐心地回答了我。不过我同他不算熟悉,并不知道他其实身患癌症已有一阵了,所以还相当执拗地缠着他就那个问题为我的报纸写一篇评论文章。我至今还清晰地记得,蔡老师当时一点也没有不耐烦的表示,他只是客气而委婉以个人原因拒绝了我的约稿,并且一句也没提到自己的身体状况。如今回想起来,真是惭愧得很!我现在写下这些,也算是一个晚辈后学对他的另一种纪念。惟望蔡定剑先生的在天之灵不致因我在本文中的莽撞之论而不悦,在通往真理的道路上,所有的跋涉者都是兄弟姐妹。

PerformanceOptimizationForMulticorePlatforms


搜索引擎技术简介


2010年12月5日星期日

我们为何而唱

发信人: wisdompeak (四年如梦,梦醒遁空), 信区: DEEAET.THU
标  题: 清华学子们,联合起来,抵制已经变质的“一二九”合唱,捍卫属
发信站: 水木社区 (Mon Dec  6 01:34:04 2010), 站内

师弟的又一大作啊

【 以下文字转载自 TsinghuaCent 讨论区 】
发信人: Marpher (Mark), 信区: TsinghuaCent
标  题: 清华学子们,联合起来,抵制已经变质的“一二九”合唱,捍卫属
发信站: 水木社区 (Tue Nov 30 15:03:19 2010), 站内

by  黄昆

我记得我曾写过这样一首诗:我们为何而唱

谁问过,
我们为何而唱?
当自由唱歌的快乐
  在不得不唱中湮没
当歌唱祖国的热情
  筑起竞相攀比的舞台
当缅怀纪念的意义
  只剩下节奏音调的计较
当渐次响亮的歌声
  盖过了本该朗朗的读书声
谁记得,那句话——
  清华之大
    今已容不下一张平静的课桌!

当时,我很谨慎地设置了只有我好友才能观看的权限。我也曾希望,我这首诗是一个“愤青”的矫揉造作,我也曾希望,我们的“一二九”合唱排练会有迷途知返的那一天,我也曾希望,我在某一天能够心甘情愿地删掉这首诗,永远忘掉这件事。可在今晚,这些所有的美好的愿望在一瞬间化为了泡影。

就在今晚,通过同寝大鹏的言语表现,我已经对整件事有所耳闻了;再亲自查看了研会发来的关于“一二九”比赛——对,他们已经直言不讳地直接称之为“比赛”了——当天安排的邮件,更加证实了我心中对于这一切的最坏的猜测。

已经为了这次“比赛”排练了近十次的我们,还将为了最后的“比赛”被占用整整一个周日,从早上7点到晚上6点,没有丝毫的间断!我们的穿着,精确都袜子和毛衣的颜色,都被严格地规定了。我诗中所写的每一句话都成为了血淋淋的现实,自由唱歌的快乐和歌唱祖国的热情就这样被无情地蹂躏践踏了,缅怀纪念的意义以及何为研究生的本质工作就这样被活生生地遗忘了。属于自习的时间没了,属于休息的时间没了,属于自己兴趣爱好的时间更加彻底没了。

虽然现在已是凌晨2点,虽然隔日早上8点还早早地有课,但我丝毫没有睡意,在看了那封令人作呕的邮件以后,在看了大鹏那篇令人热血沸腾的日志以后,我决定,我必须做些什么,因为不仅是我,而是“我们”,广大的清华学子,我们已经不能再忍耐了!

为了所谓的“大局”,为了所谓的“集体荣誉”,为了所谓的“换位思考”,我们已经忍耐了很久了!而我们的一再忍耐只会换来学校,换来比赛举办方,换来各院系领导对我们更加猖狂的强迫。而如今,我们就是如同被资本家雇佣的工人,我们卖力的训练和表演只是给资本家们博得了更多的荣誉和地位,让他们人前台上更加光彩亮丽——只有这,才是我们的剩余价值。什么“一二九”运动的意义,什么清华精神的传承,都比不上一个实实在在的合唱比赛的名次!

任何冠冕堂皇的理由都掩盖不了这一场本该用以纪念“一二九”的活动已经变质的事实。真正的缅怀和纪念,无需通过整齐划一训练有素的合唱来体现;真正的爱国主义教育,更无需要通过剥夺奖学金评比权力的威胁来强迫。

同学们,我们已经沉默太久了。而我们的沉默,只会让这样的闹剧一年又一年地在这个校园里发生。

是时候结束这一切了!是时候对这一个疯狂而可笑的比赛说“不”了!是时候反抗学校和院系以各种名义强加在我们身上的无意义的活动了!是时候捍卫我们自己的权利了!

即使今年我们不能成功,但我们的行动并不是毫无意义的。我们深信,如果我们的学弟学妹能够踏着我们足迹,参与到一年又一年的斗争中来,最后的胜利必将属于我们!

我们清华前辈们在反动警察的枪口下高声呐喊“北平之大,今已容不下一张平静的课桌”,抛头颅洒热血才为我们换来的自由和安静求学的环境岂能再容他人侵占!

清华学子们,联合起来,抵制已经变质的“一二九”合唱比赛,捍卫属于我们的周末,保卫属于我们的平静的课桌!

让我们再次高喊革命前辈们的那句话:

清华之大,

今已容不下一张平静的课桌!




 邮件原文:

各位同学:

首先感谢大家近一个月来积极地参加一二九合唱排练。研究生阶段同学之间见面机会很少,一二九虽然很辛苦很费时间,但至少让大家聚到了一起,每一次排练其实都有欢声笑语,都有实验室没有聊过的话题。

大家都非常优秀非常有集体荣誉感。以前会认为争第一是个口号,但根据了解的情况,我们系希望非常大,目前各方面的成绩都非常好,比如上次的通讯我们系就排在了全校的榜首。当然这些和每个人的努力都是分不开的。相信只要我们把激情一直保持到最后,一定可以创造奇迹。

当然成绩并不是那么重要,更重要的是那些个大家一起高歌的青春洋溢的日日夜夜和那种一起努力共同拼搏的过程。再次对大家牺牲了自己学习和休息的时间表示深深的感谢。

下面,向大家介绍一下12月 5日比赛当天的安排。请大家仔细阅读,尤其是标记颜色的部分,有些物品可能需要大家克服困难,提前准备。

 

我们早上集合的时间是7:00西主楼,下午正式入场的时间是12:40,比赛结束的时间是17:30。从7:00到17:30都有安排,详细见后面的时间表,请大家仔细阅读,做好准备,再接再厉!

注意事项:

1.     整个白天大家都将统一行动,所以请将需要的物品一开始即准备好

2.     因为室外较冷,请大家外边一定要穿厚一点的大衣、羽绒服之类的防寒衣物;

3.     女生要准备黑色皮鞋,肉色丝袜,由于有长裙,里边可以穿厚些,但上衣要满足第4条

4.     女生上衣领不能太高,最好为肉色或米色,否则外罩裙子效果不好。

5.     男生要准备黑色皮鞋,至少是黑色鞋子,要不上台后颜色不搭调非常明显。

6.     男生上身内衣领子不能太高,如果有毛衣,也要是矮领或是鸡心领,到时候穿在我们统一租借的衬衣里边。

7.     排练时请大家带一个大一点的袋子用于换装时装自己的衣服和钥匙等。

8.     当天下午如无必须,手机钱包等贵重物品最好放在实验室,即使携带,也要放在有拉索的衣服口袋中,并拉好拉索。

9.     由于比赛开始和结束之前要两次清点观众人数,同时计入总成绩,所以要提醒大家演出前后务必不要离场。缺一人扣0.1分,相当于我们请一个老师参加比赛所加分数。

 

 

 

 

具体时间安排

 

 

时间
        

内容
        

地点
        

人员
        

负责单位
        

备注

7:00
        

集合
        

西主楼3-102
        

所有参演师生及工作人员
        

体育部
        

研会负责早餐

7:30
        

入场彩排
        

综体西门
        

所有参演师生及工作人员
        

文化部
         

7:30-8:30
        

彩排
        

综体
        

所有参演师生及工作人员
        

文化部
        

综体南门出

8:30-9:30
        

换服装
        

西主楼3-102
        

所有参演师生及工作人员
        

文化部
         

9:30-10:00
        

化妆
        

所有参演师生及工作人员
        

文化部
        

女生先化妆,然后给男生化妆

10:00-11:30
        

小排练+交代注意事项
        

所有参演师生及工作人员
        

教练、文化部
        

热身

11:30-12:00
        

午饭
        

所有参演师生及工作人员
        

体育部
        

吃完饭后注意清理教室

12:00-12:30
        

补妆
        

所有参演师生及工作人员
        

文化部
        

主要是口红

12:30-13:00
        

进场
        

综体
        

所有参演师生及工作人员
        

校研会
        

校研会会有专人引导至座位区

13:30-17:30
        

正式演出
        

综体
        

所有参演师生及工作人员
        

文化部
         

18:00
        

同学退场完毕
        

综体
        

所有参演师生及工作人员
        

文化部
        

正式结束前按规定不得离场
--
求mm勾引~


※ 修改:・wisdompeak 于 Dec  6 01:34:21 2010 修改本文・[FROM: 166.111.72.12]
※ 来源:・水木社区 newsmth.net・[FROM: 211.99.222.*]

2010年12月2日星期四

SSD 的用法

发信人: mumford (YRP), 信区: Notebook
标  题: Re: Intel的40G固态硬盘村里今天报价610
发信站: 水木社区 (Fri Dec  3 11:06:30 2010), 站内

不仅如此,为了有效延长SSD的使用寿命,可以去掉各种log,把临时文件放到内存盘上。对于内存和硬盘频繁交换的例如IM程序,查病毒程序,最好能让他们少交流一点。对于长期不更新的大体积数据文件和流媒体文件,可以考虑装在移动硬盘上,以便更有效地利用SSD的剩余空间和读写速度优势。

【 在 mumford (YRP) 的大作中提到: 】
: 因为对于NAND闪存来说,页面是最小的写入单位,区块是最小的擦除单位。目前的NAND闪存一个页面是4KB,128个页面组成一个区块,一个区块大小是512KB。
: NAND闪存只能在空页面上写入。对于更新文件,SSD会首先采用第一种方法,把当前页面标记成无效,然后把修改后的页面写到另一个空页面上。所以空页面会越来越少。一旦空页面用完了,SSD就必须采用第二种方法,先把一些区块删除,然后再写入。这些都是在空余空间上进行的。显然当剩余空间不足的时候,SSD不得不频繁地采用第二种方法。例如剩余空间只有10%的时候,可能要比剩余空间有50%的时候多出400%的擦除。
: 问题是NAND闪存的擦写次数是有限的,目前的34nm 2x MLC技术,每个区块可以经历5000次擦除。因此一个只有10%剩余空间的SSD,使用寿命可能只有一个有50%剩余空间的SSD 1/4都不到。

MultiDesk

MultiDesk

什么是 MultiDesk?

MultiDesk 是一个选项卡(TAB标签)方式的远程桌面连接客户端(terminal services client)。

功能特性

  • 绿色软件,只有一个很小的可执行文件(360KB),采用C++编写,运行速度快!
  • 针对固态硬盘(SSD),闪存盘专门优化设计,最大限度减少写盘
  • 新风格:状态栏和带有边界的适应窗口
  • 使用分组模式进行管理
  • 支持对分组、服务器拖放操作
  • 选项卡(TAB标签)方式
  • 支持连接到控制台
  • 支持设置连接端口
  • 支持从分组属性继承用户名和密码
  • 支持导入 MSTSC 的连接
  • 支持重定向指定的驱动器 (需要 RDP 6)

系统要求

Microsoft 远程桌面连接 (Terminal Services Client) 6.0 或更高版本 (可选)
Windows XP/2003 或更高版本

已知问题

MultiDesk 把配置文件存放在自己的目录。由于64位 Windows 的目录"Program Files (x86)"不可写,所以不要把 MultiDesk 放在这个目录。
Admin 模式暂时还不支持,Windows 7 SP1 发布之后将支持。

最新版本:1.0.8 下载

有任何建议?
Blog: http://t.sina.com.cn/hoowi
E-mail: support@hoowi.com
 

屏幕截图

分组和服务器

Groups and Servers

重定向指定的驱动器

Redirect specified drives

适应窗口

Fit Window

带有边界的适应窗口 
使用状态栏,可以避免混淆本地的任务栏和远程服务器上的任务栏。

Fit Window with Margin

显示/隐藏状态栏 
点击系统菜单,再点击 "Status Bar" 隐藏状态栏可以获得更大的窗口空间。

Hide Status Bar 

FAQ

  1. 什么是 "Insert a copy"?
    A: "Insert a copy" 会使用当前选中的连接设置作为模板来创建新的连接。

  2. 为什么密码在另外一台电脑上不起作用?
    A: 解密密码的密钥单独存放在注册表中,而不是配置文件中。这样做的目的是,如果你的 MultiDesk 安装在闪存盘上,即使盘丢失或者被盗,你的密码也不会泄露。如果要在另外一台电脑上使用,导出注册表 HKEY_CURRENT_USER\Software\MultiDesk 到一个文件,然后在另外一台电脑上导入即可。

Changelog

Version 1.0.8
2010-12-03
+ Improved compatibility of importing MSTSC connections
+ Fixed restore window position issue when minimized
+ Fixed redirect specified drive issue on RDP 6.1 or above
+ Thanks to: Roger Chen, LiuFeifei

Version 1.0.7
2010-11-12
+ Fixed a bug when importing MSTSC connections
+ Fixed some minor bugs
+ Thanks to: ZhouXH, Fris

Version 1.0.6
2010-11-09
+ Add feature "Insert a copy"
+ User can choose to hide or show status bar
+ Group and server tree collapse state will be saved
+ Thanks to: John James, SONG XUE QIANG

Version 1.0.5
+ Fixed Right Win + L key misbehavior issue
+ Add "connect to non-console" to context menu

Version 1.0.4
+ Add support to import cached MSTSC connections
+ Add "connect to console" to context menu
+ Fixed RDP5 support issue
+ Thanks to: cangelzz, dennes.wang, fr3dy

© 2010 - Hoowi Software

2010年11月29日星期一

Fwd: 散乱,街景,学生游行和其他[20P]

发信 人: RedMorning (麻烦你,鱼丸粗面), 信区: DSLR
标  题: 散乱,街景,学生游行和其他[20P]
发信站: 水木社区 (Mon Nov 29 05:33:26 2010), 站内

开始重新对50MM有感觉了。
--

※ 来源:・水木社区 http://newsmth.net・[FROM: 129.11.113.*]


此主题相关图片如下:不知道啥题目.jpg (140KB)
 
此主题相关图片如下:城市色彩.jpg (125KB)
 
此主题相关图片如下:大街上.jpg (64KB)
 
此主题相关图片如下:都憋不住了.jpg (123KB)
 
此主题相关图片如下:都死了.jpg (185KB)
 
此主题相关图片如下:鸽子.jpg (75KB)
 
此主题相关图片如下:各玩各的.jpg (124KB)
 
此主题相关图片如下:会长大_会老去.jpg (168KB)
 
此主题相关图片如下:剑桥明信片.jpg (121KB)
 
此主题相关图片如下:街道.jpg (111KB)
 
此主题相关图片如下:每天的景色.jpg (52KB)
 
此主题相关图片如下:那天捡到了钱.jpg (97KB)
 
此主题相关图片如下:你想不到我这是在哪拍的.jpg (37KB)
 
此主题相关图片如下:围观游行.jpg (102KB)
 
此主题相关图片如下:我的猫看不见.jpg (86KB)
 
此主题相关图片如下:下边这货吃不成了.jpg (138KB)
 
此主题相关图片如下:鸭子.jpg (82KB)
 
此主题相关图片如下:一个人的江湖.jpg (105KB)
 
此主题相关图片如下:丫的_坚决不给钱.jpg (132KB)
 
此主题相关图片如下:占领教学楼.jpg (83KB)