Apr 15 2004

留言本

随着留言的增多,我需要一个单独的留言php了,原先的留言是基于b2的commnet的,非常简陋,现在用的这个留言程序是xeobook,易用,感觉不错...


Apr 14 2004

减少编译时间

有两个非常有效的方法可以提高编译速度:
1) 不该编译的文件不要编译
2) 一定需要编译的文件通过分布式工具做编译

第一点看起来很简单,却非常非常有效,尤其对于大型的项目,在完全重编译时,其实很多文件并没有改动,这些文件的重编译会浪费很多时间,有效的方法是在每 次编译时计算源文件的hash值和编译结果,下次做重编译时则根据hash值来决定是否需要真正编译,这里hash算法非常重要,因为一旦发生hash冲 突,则可能返回错误的编译结果。所以这里的hash算法绝不能选用校验和这样的简单算法,可以选用MD5这样的高强度算法。

ccache就是这样的工具,在编译时它会用MD4算法计算hash 值,并和编译结果缓存在预先设置的目录下(可以通过环境变量来设置这个缓存目录),每次重编译时,都可以使用原先的缓存大幅提高编译速度,我测试的结果, 在win32平台和GNU的编译工具链下,使用cygwin编译的ccache后,在源文件没有改变的情况下,重编译时间缩短60%。

对于第二种方法,分布式编译,则是通过分布在网络中的多台计算机的分布计算,真正提高编译速度。这比上一种方法要复杂的多,相应的成熟的工具也比较少,GNU环境下有一个著名的软件distcc, 就是这样的分布式编译工具。我在win32平台下用过distcc,可惜比较复杂(因为distcc设计是在*nix环境下使用的)。 在服务器端(就是替其他编译者编译)需要运行distccd,在客户端(发起编译者)则需要通过gnu make的多任务特性(--jobs参数)和运行distcc来达到分布编译的目的。我测试的结果,使用4台计算机,可以将编译时间缩短一半左右。

上面两种手段可以联合使用,进一步提高编译速度。所以ccache和distcc通常会在一起运行,可谓黄金搭档。 :)


Apr 10 2004

将应用安装为NT服务

Windows NT(包括2000)中有服务功能,很多应用程序提供了将自己安装成系统服务的选项,比如MySql, 但有的应用程序(特别是一些服务程序)没有提供安装成系统服务的功能,这样用起来会不太方便,于是就是一些外壳程序可以完成将任意程序转换成系统服务的功能,比如cygrunsrv, 这实际上是cygwin的一个package,但在没有安装cygwin的环境下一样可以正常使用,可以用cygrunsrv将那些类服务的应用程序安装成windows服务。


Apr 8 2004

php代码索引

我通常会在HotScriptsThe PHP Resource Index来查找想要的PHP代码,这两个网站都按类别收集了大量的PHP应用,并且大部分是Free的。除了代码的基本特性外,两个网站都提供了很有价值的用户评价系统,可供参考。
不过虽然这样的网站提供了大量的可参考的代码索引(比如hotscripts可索引到7000多种PHP应用),但仍然不能包含所有有价值的PHP应用,仍然有很多PHP应用没有被索引,由此也可以看出PHP的开放与成功。


Mar 25 2004

win32下的64位整数运算

VC下内置有对64位整数运算的支持,使用__int64数据类型即可,常规运算都没有问题,在做printf,scanf输入输出时,64位整数需要使用%I64d这样的修饰符。不过C++的cin,cout对__int64就不管用了,或许重载一下<<,>>运算符可以解决。


Mar 24 2004

Java的反"汇编"

前面说到Java程序的反编译,那是指将Java的字节码反编译到源码,而今天我用IDA Pro试了一下,发现IDA居然可以非常好的将Java的class文件"反汇编"成字节码(相当于是Java虚拟机中的汇编语言了), 并且可读性非常好,使用IDA 4.1.5版本时,反汇编结果中的一些符号跳转不太正确,这应该是IDA的一个小问题,并不太影响使用。而使用IDA的高版本4.5.1时,跳转的功能都 正确了。

在看Java字节码的时候,必不可少需要一份参考手册,这里的不错http://mrl.nyu.edu/~meyer/jvmref/ref-Java.html, 不过还不够详细。


Mar 22 2004

Wiki

Wiki是什么?
Internet上最有名的Wiki应用要算Wiki百科全书了
Wiki's home
Wiki Engies list
常见的几个个WikiEngines是TikiWiki,MediaWiki,PhpWiki,tavi,Wakka以及Wakka的hacker版本CooCooWakka

为什么大部分Wiki Engines不使用HTML格式,这里有非常准确的回答


Mar 10 2004

Cygwin

我一直把Cygwin当成是GNU/Linux在Windows下的移植,虽然去年就在我的机器上安装了Cygwin,不过没有找到什么需要在Cygwin下跑的软件,所以也一直没有怎么用过。最近因为要用一个WORD文档到HTML的转换工具wvWare,而它正好是在Linux下编译的,没有提供Win32的二进制档案,只好试着在Cygwin下编译,结果居然很顺利的通过了,运行也很正常,让我着实高兴了好一会。
用了一会儿Cygwin的shell--Bash,让我想起了大学时代上机时用的Unix环境,那时unix shell的强大就让我感觉到Dos的差距,现在用Cygwin的Bash和win2000的console相比,还是觉得Bash要好用。而 Cygwin有个最大的好处是可以在Bash下直接调用win32 console程序,并且可以照样用上Bash的输入输出重定向以及管道机制,这样就可以用Bash来完成许多windows下原来靠Dos cmd来做的工作,比如用shell脚本来代替windows的bat命令。
Cygwin还在不断发展,好像现在已经可以在Cygwin下面跑KDE,GNome等GUI程序了,也就是说这些东西也可以和win32的GUI和平共处了,我没有用过,不过觉得满神奇的。


Mar 9 2004

Java的逆向工程

我不懂Java,不过却遇到一个需要做Java反编译的问题,Java的反编译器好像并不多,找到的这个Mocha居然是96年就实现了的。可能应该有些新的软件,我没有找到。
这里有一篇文章介绍三个Java反编译器的对比,不过这篇文章也很老了。


Mar 7 2004

jpg与反jpg

使用jpg可以达到很高的压缩率,我通常使用Photoshop的Save for web来存jpg文件,不过由于可选项不多,不方便在大小和质量间达到较好的平衡,我会用Ulead SmartSaver来做更多的优化。
反之,如果得到一个压缩率较高的jpg文件,在ps里放大,就会看到类似马赛克的"jpg特征", 使用ps除去这些可能要比较麻烦,可以用一个软件Jpeg enhancer,它可以全自动完成这些工作,并且做的不错。优化后的jpg可以重新Save为jpg文件,但要比之前的会大一些,不过个人觉得这种"反 jpg"的工作意义不是很大。