Skip to main content

Posts

winlib .dll查杀

最近天网老报winlogon.exe要访问网络,这显然是中招了。 在c:\windows\system32\下按时间排序发现了winlib .dll, winlib0.dll等可疑文件,用icesword+unlocker可以删除,不过重启后“死灰复燃” 用autoruns发现了c:\windows\system32\drivers下有cdnprot.sys和acpidisk.sys(也可能叫acpidisks.sys,记不清了),很可疑啊,用U盘启动把它们删掉 最后一处是临时文件夹下有个~my1.tmp(也可能是~my6.tmp),delete it! 总算是斩草除根了,至少看上去是这样。

与 Flash 通信的问题

我一直希望能用Flash做我程序的界面,主程序当然还是用VC写,这就需要网络通信. 查了半天help,发现了XMLSocket可以用,然后开个nc当server,用Flash连,发现可以连接,Flash也可以给nc发消息,但是nc发过来的就不行了。 帮助里关于onData隐约地说明了Flash接受到的消息一定要以一个\0结尾,我一开始就是这么想的,nc似乎发不了\0,于是我就弄了个简单的VC程序,不过一开始总不行,因为我用的是std::string("some words\0"),似乎std::string会自动切掉尾部\0,于是改为std::string("haha\0",5), 啊,终于看到Flash有反应了。不错。 还有,Flash导出swf后,connect好像只会连接80端口,再转为exe就正常了,这有点好像调用外部exe的情况,估计也是为了安全吧。不过我用别的播放器,比如KMPlayer或Sothink SWF Decompiler就没这问题。 另外,据说Flash9的AS3已经没有这个问题了,我没试过,不知道是不是真的。

数学趣题:看电影

问题:有N个人去看电影,其中有一个是疯子。每个人各有一张票,电影院恰有N个座位。N个人依次入场,疯子最先冲了进去。 疯子首先在N座位中随机(等可能)挑一个坐下,以后每个人进去后,如果自己的座位没有被占,则就对号入座,否则在现有的空座位上随机(等可能)挑一个坐下。 问最后一个人对号入座的概率 解法1 设所求为P(n),现将N个人按入场顺序编号为1-N,则1号为疯子。再把他们各自对应(按手中的票计)的座位也相应标为1-N。现考查1号 如果1坐到自己的座位上,这有1/N可能,则以后每人都回对号入座 如果1坐到N号最为上,则N不可能对号入座 如果1坐到i(1<i<N)号座位,这也是1/N的可能,则以后2至i-1号都会对号入座,此时把1号座位对应于i,这时就转化为了N-i+1个人的看电影问题,因此最后一个人对号入座的概率为P(N-i+1) 综上可知P(N)=(1 + sum(i from 2 to N-1) P(N-i+1) ) /N 可算得P(N)=P(N-1)=...=P(2),而对于两个人的情况显然所求为1/2,所以这就是最终结果 解法2 编号同上,对每一种N个人都坐下后的结果,我们把1-N号座位上的人的序号依次排开成一个数组,则如果都对号入座,应该是(1,2,...N) 容易看出N不是在最后一个就是在第一个,否则,设N在第i(1< i<N)个,则由于i比N先入场,i进场时他的座位一定是空的,这就矛盾了。 把所有的数组按照N的位置分为两组,并构造一个双射 对一个N对号入座(即N在最后一个)的数组,我们考察第一个数,设为i,那么我们说i+1至N这些人都对号入座了。如果这样不好理解,我们换种说法,即找 到“按进场顺序,最后一个坐错的人”,或不在自己座位上的序号最大的人,如果所有人都对号入座了,则把1号挑出来。这样,类似上面的分析,可知这个人一定 是坐在了1号座位上。 现在我们把这个数组中首尾对调一下,即最后一个坐错的人和N。得到了一个N没有对号入座的数组。把这个数组与原来的对应起来,易知这是一个双射,而且出现 它们的概率相同。因为1至i-1(i为与N交换的那个数)的座位在两边都一样,则出现概率也一样,i-2至N-1应该都是对号入座,是确定的。不同之处在 于i是坐了1号还是N号,根据题意,这时等概率的。 这样就知道了N对...

数学趣题:区分好人与坏人

问题:现有n个人,多于一半是好人,其余为坏人。你并不不知道他们具体谁是好人谁是坏人,然而他们彼此很清楚。 现在你每次可以挑两个人互相指认对方是好人还是坏人,好人总说实话,而坏人则会胡说(不一定是假话)。 请找到一个算法区分所有好人与坏人,并给出所需次数(大致数量级即可) 解答:(以下为大致阐述,对于细节,如是否严格大于或大于等于之类请自行讨论) 对于n较小的情况,如2,3,可以指定一个人T,让他与其余所有人互相指认,因为好人多于坏人,所以看结果是说T是好人的多还是坏人的多,那个多T就是哪个,如果一样多,T是好人。此时虽然是n平方数量级,但也可看作线性。 对n较大的情况,我们希望尽快找到一个好人以便指认出其余人的情况 把n个人两两分组(如有多余暂不考虑,放到下一轮处理),让他们互相指认。结果有如下几种情况: a.至少一个人说对方是坏人 b.都说对方是好人 对于a, 组里至少一个人是坏人,我们把所有这样的组全部“淘汰” 对于b, 组里两个人必同为好人或同为坏人,我们在这样的组中每组任选一个淘汰。 这样一轮下来,可以知道淘汰掉的坏人不少于淘汰掉的好人,仔细分析还可知道剩下的人当中一定还是好人比坏人严格多。 这样下去直至剩下小于4人的情况,就可以用最开始的方法找到一个好人。 此时所花的次数约为N/2 + N/4 + ..., 大约等于N,然后再用至多N-1次指认就可以分辨所有好人与坏人了。 所以最后的数量级为2N

D-player

以前在一些论坛上看到了这个头像gif: 觉得很可爱,但是不知道是怎么做的,因为看上去像真人“抓”出来的(或者是一个很厉害很厉害的人画出来的,但那也肯定是3d动画),但是只为这么个gif肯定不值得。 后来查到了有个软件D-player,是韩国人做的街舞软件,也知道了这个gif是用它截出来的。我一开始下了1.83和2.0,后来觉得不过瘾,又去emule下了一个“目前最完整的版本”,四百多兆呢,下了好几个小时。但是运行之后发现还是挺值得的。我发现自己越来越喜欢它了,而且也越来越喜欢街舞了。看着这个软件中的跳舞娃娃,自己的身体都会不由自主地动起来。 挺佩服作者的创意和想象力。 现在的一个小遗憾是不知道上面的gif是哪种舞步,虽然我现在这个版本舞步很多,但是我试了很多个都不是这个。唉,再查查吧。

金山词霸重装错误

参见 http://hi.baidu.com/zhenyanzi/blog/item/bf8be4cd5871a1510eb3450d.html 应该是金山词霸2006卸载时卸不干净的缘故吧,重装显示"无法打开键UNKNOWN\XFavHist.XHistory.1\CLSID.请验证您对该键拥有足够的访问权限,或者与您的技术支持人员联系。" 解决方法,在注册表中搜索所有含XFavHist.XHistory的项或值,全部删除,重装即可