博文

目前显示的是 九月, 2008的博文

多环芳烃(PAH)污染

今天在台湾的《科学人》杂志上看见一篇译文在讲PAH对遗传的影响。PAH中文全称“多环芳香烃”,是油、煤、脂肪等有机物不完全燃烧时产生的一种有机物。该文中称,四川的小火电厂在燃烧煤炭的时候释放出很多PAH污染空气,然后PAH可与DNA结合,使得小孩在尚未出腹时便受到损伤。该文用统计结果说PAH影响了新生儿的头围。
在我们平时的食物中,烤肉、烟熏食品、煎炸食品中均含有较高的PAH值。为了安全饮食,专家(非蛤蟆)提出了以下建议:
1、烤肉时尽量不要吃肥肉。尽量烤瘦肉、鱼。脂肪少的肉类。
2、不要让食品和火焰直接接触。(例如对比下中式烤肉和韩式烤肉)
3、最好是低温长时间烤。
4、不要像路边的新疆羊肉串那样把肉水平放置在炭火上,而改成巴西烤肉那样垂直烤
5、油滴在炭火上产生的油烟含有高浓度的PAH,所以尽量避免这样的滴油。
6、坚决不要吃焦了东西。扔掉它,否则你是没浪费食物,但是你在尝试浪费公共医疗资源。

UTF-8的BOM竟然是unicode标准

windows很多编辑器在编辑utf-8文件的时候都喜欢在前面加个efbbbf的BOM。utf-8本来就是无字节序的,何苦呢。
今天在http://unicode.org/faq/utf_bom.html上看见,这个竟然是unicode标准。
“An initial BOM is only used as a signature — an indication that an otherwise unmarked text file is in UTF-8. ”假如我就打开一个文档里面写abc三个字符然后保存,你偏要再给加个efbbbf,然后害得很多程序解析不出来,何苦呢?不要这个BOM的话,理解成ascii也好,utf-8也好,iso8859-1也好,都可以啊。不知道改天谁会不会再发明一个GB18030的BOM出来。以后给每个编码格式搞个BOM,然后混战。

写了个打印质数的小程序

如果需要打印1亿以下的质数的话,那么这个程序的计算是很快的,10秒左右。10亿就慢很多了。如果再往上,那么就会因为存储的问题而溢出了(内存不够以及int的上限是21亿)。
如何改进这个程序让它的内存占有率在一个合理的范围内(而不是随着n线形增长)。
另外,这段程序需要大量的IO写操作。貌似应该赶紧把printf替换成fwrite。另外,要不要用write自己来管理缓存,或者用mmap?#include <iostream>#include <stdlib.h>#include <locale.h>#include <sstream>staticvoidusage(){ printf("usage:%s <num>\n",getprogname()); } staticinlineintnextPrime(int s[],size_t slen,uint8_t* mask,size_t maskLen,int max){ return0; } staticintcomp(constvoid* left,constvoid* right){ return *(uint8_t*)left-*(uint8_t*)right; } staticconstuint8_t checkPoint[]={1,7,11,13,17,19,23,29}; staticvoidsetbitmask(int pv,uint8_t* mask,int num,int per){ int base=pv/per; int v; if(pv<per) v=per+pv-per%pv; else v=pv; for(;v<num;v+=pv){ uint8_t q=(uint8_t)(v%per); //0<=q<=peruint8_t* found=(uint8_t*)bsearch(&q,checkPoint,sizeof(checkPoint)/sizeof(checkPoint[0]), sizeof(checkPoint[0]),comp); if…

2008.9.18 the death of wallop

玥玥告诉我wallop要关了,这次是彻底的关闭了。 我打开wallop的主页一看,真是如此。 "Wallop beta period will end on Sept 18th, 2008Dear Wallop.com Member,Thank you for being part of the Wallop beta social networking site. We really appreciate your feedback and support. The beta period will end on September 18th, 2008 – after that date you will no longer be able to access your account.Please check out our apps Cool Cards and Party On! On Facebook.Thanks again, The Wallop.com Team"facebook真是无敌啊。 wallop再次验证了那句话,"很美很短暂"

谁熟悉暴雪的mpq文件的格式?

我在用mangos的ad.exe解压wow的2.4.3版的地图的时候,总是在41%的时候开始报错,然后到44%左右的时候死在memcpy中。
我把libmpq/commom.cpp中的/* Get current block length */if (mpq_f->mpq_b->flags & LIBMPQ_FILE_COMPRESSED) { blocksize = mpq_f->blockpos[index + 1] - mpq_f->blockpos[index]; } 改为: /* Get current block length */if (mpq_f->mpq_b->flags & LIBMPQ_FILE_COMPRESSED) { size_t newblocksize = mpq_f->blockpos[index + 1] - mpq_f->blockpos[index]; assert(newblocksize<0x80000000); blocksize=newblocksize; } 结果遇到assert,发现newblocksize = 0xbcc06384,blocksize = 0x00001000
也就是说,尽管设置了LIBMPQ_FILE_COMPRESSED,但是并不是压缩的,导致后面用memcpy复制一个大小为0xbcc06384的块。
新版本的libmpq(0.4.2)和mangos中相差很大。我在试图把0.4.2的libmpq移植到win下。