python的一个彩蛋
今天才知道python居然还有这样一个有意思的彩蛋,使用下面这一句python代码就可以看到。
import this
执行就可以看到一段关于python理念(禅?)的介绍。
计算字符串md5的几个方法
很多时候我们都需要计算md5用来做校验或者什么的,比如下了个iso,要做个校验看下到的文件是否没有损坏,从而刻盘啊什么的。
这样的需求很好办,直接使用linux提供的工具即可:
md5sum filename
但是有时候我们只需要计算一个字符串的md5,这时可能很自然的想把这个字符串放进一个文件中,再计算这个文件的md5不就行了么。其实这种方法有个问题,就是在文件中这个字符串的末尾有不可见字符,比如换行,这样算出来的就不是原来的字符串的md5了,而是加上这个换行后的,所以这种方法不可取。
让赛扬机器性能“赶上”四核
今天用 stumbleupon 在网上上乱逛,发现这么个有意思的东西 (这里是原贴)
有人在LKML(linux kernel mailing list)发贴
Hi, all I have two machines that show very different performance numbers. After digging a little I found out that the first machine has, in /proc/cpuinfo: model name : Intel(R) Celeron(R) M processor 1.00GHz while the other has: model name : Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz and that seems to be the main difference. Now the problem is that /proc/cpuinfo is read only. Would it be possible to make /proc/cpuinfo writable so that I could do: echo -n "model name : Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz" > /proc/cpuinfo in the first machine and get a performance similar to the second machine?
这人意思是说他有两个机器,一个赛扬,一个四核,因为/proc/cpuinfo是只读的,能不能让它可写然后他用这个命令
echo -n "model name : Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz" > /proc/cpuinfo
让第一台机器的性能直逼第二台。
很明显这是恶搞,但是有个人很配合的回了句
Good catch! 'chmod +w /proc/cpuinfo' should do the trick.
把/proc/cpuinfo文件权限改下即可。
楼主又来了句
Thanks, that did the trick. My first machine is much faster now and it even has 4 cores! :)
OMG,赛扬比四核还牛B。
呵呵,of course,这是个April Fool's Day 's joke!
测试堆的最大申请数量
看到说linux下的虚拟地址空间分给进程本身的是3GB(高址的1GB是内核空间,也就是0xc000000以上地址),所以有这样一个程序来测试用malloc最多能申请多少内存?
#include<stdio.h> #include unsigned max=0; int main(void) { int i,count; unsigned size[]={1024*1024,1024,1}; for(i=0;i<3;i++){ for(count=1;;count++){ void *p=malloc(max+count*size[i]); if(p){ max+=count*size[i]; free(p); } else{ break; } } } printf("The max memory i can alloc is %u\n",max); return 0; }
在我的linux机器上跑了后发现只有1.1G左右的空间,想一下应该是内存768M+swap400多M,所以到不了那么大吧!
使用wget做网站镜像
记得以前在网上看到一个好网站的时候,因为那时上网时间少,就想着把它整个抓下来,存到自己硬盘上,想什么时候看就什么时候看,那多爽。记忆中那时用的软件就是webzip了,但是这家伙是个共享版,如果你用的不是什么什么特殊版本的话,那么这个家伙是会有限制的,功能上的限制忘了,记得的是好像它会插广告在网页内容里面,这实在是极不爽的一件事。
现在虽然上网的时候多了,要查资料的话也能随时上网查,看到好的站也能随时打个书签收藏(比如好用的用tag管理书签的delicious,书签再多也不怕),免得以后要再来看。但是又发现了这样的问题,比如说我非常喜欢某个家伙的博客,但这个家伙的博客访问比较慢,每开个页面都要等好长时间,我就想把它全部弄到本地来;或者说遇到了这样的情况,看到这样一个网站(地址),就是一本书的html版。于是想把它整个保存到本地来,这样看起来就方便了,不用每次看书都跑到人家网站去,而且这个世界,没准今天网上还找得到的资源下一分钟就没了,所以想把看到的好东西就保存起来。
其实不用webzip这些看起来很强大的软件,我们有一个命令行下的软件,短小精悍,功能强大,工作稳定,它就是wget(一个linux下的软件,不过windows下装cygwin包的话也能使用),放心,不要以为它是命令行的就很挫,它还断点续传呢,这次跑了一半关机了,没关系下次还能接着干活,只要给它个 -c 参数就行了。
要做网站镜像用wget只要3个参数就搞定了,所以就只需要打这样一条命令:
wget -mkL $URL
其中参数意义:
m --mirror 做镜像的意思
k --convert-links 把链接变成适合本地阅读的形式
L --relative只抓取与本网站相关的链接,不会因为出现别的网站的链接而一直追踪抓下去。$URL 要抓取的网站的地址
这三个都是必要的参数,当然还有其它的参数可以实现相关功能,比如使用 -O 指定输出文件名字(默认是网站url命名),网络状况不好的话可以使用 -t NUMBER 或完整形式 --tries=NUMBER,其中NUMBER表示重试次数,0表示无限,这样就不怕网络不好异常中断了。
敲好命令,一回车,就看到wget在努力的干活了,默认是输出详细信息,可以看到每个文件的下载进度。