May
28
2004
很久没有试过Linux了,最近试着用了Knoppix, 却给我极大的惊喜. 完全不同于以往的Red-hat, Mandrake给我的感觉, Knoppix无需安装(光盘引导), 自动硬件识别能力非常好, 在我的PC上可以识别几乎所有的硬件, 甚至是网通宽带上网的PPPoE, 非常漂亮的界面. 极丰富的软件. 看来是我落伍了.
可惜没有中文版。
更棒的是, 在VmWare下(一个虚拟PC软件), Knoppix可以流畅的运行(我的计算机只有256M内存), 可以光盘引导的方式运行, 也可以用iso虚拟的方式运行, 这样我就可以在Win2000和Linux下实时切换, 多么美好!
Knoppix 可以定制, 不过很麻烦, 原因之一是因为Knoppix采用了cloop压缩技术将2G的软件压缩到700M的文件中, 这样在重新定制时就需要大量内存,硬盘来做压缩,解压缩. 不过网上有很多别人做好的版本, 通常成为remaster版本, 就看是否符合你的需求了.
no comments | posted in tech|软件、开源、业界
May
21
2004
SQL语句的功能非常强大, 以下两个方面可以体现,
1) 字符串搜索
在数据库中做字符串搜索可以使用SQL支持的正规表达式匹配方法. 这里会介绍相关的使用,这样可以将一些搜索简化为一条SQL语句, 提高搜索的速度.
2) GROUP字句
使用GROUP和一些SQL函数可以做很强的搜索结果.
no comments | posted in code|编程
May
17
2004
大部分情况下,两者几乎完全相同, 性能上看起来也差不多, 但实际上精确的测试表明两者的性能有大约5%的差异, echo要快于print. 具体的可以看
http://dynacker.dotgeek.org/printvsecho/ 这是一个动态测试的页面, 每次刷新都可以看到实时测试的结果.
no comments | posted in code|编程
May
14
2004
在桌面应用程序中, 经常可以看到ToolTip(弹出的提示), 在Web中就不太好实现了, 对于图片, alt属性可以实现弹出的ToolTip, 而对于普通文本, 则需要通过DHTML来实现, 可以参考www.dyn-web.com, 这里的DHTML中有ToolTip的很Cool的源码.
no comments | posted in design|设计、涂鸦
May
11
2004
WorkFlow是什么? WorkFlow是回答这样一个问题的系统: Who must do what, when and how?
WorkFlow(工作流/电子流)通常可以分两种, 基于Entity和基于Activity. 通常基于Entity的WorkFlow较易理解, 如文档评审流程, 这里Entity就是待评审的文档, 文档的多种状态决定WorkFlow的走向. 基于Activity的WorkFlow要复杂一些, 相应的描述能力也更强(也就是说基于Activity的WorkFlow更灵活).
WorkFlow的一个好的平台是Zope(基于对象的应用服务器).
no comments | posted in tech|软件、开源、业界
Apr
30
2004
win2000下有些进程不能用任务管理器杀死,可以用这个命令来做到:
ntsd -p pid -c "q"
PHP中的函数str_pos用来查找子串, 找不到时返回false, 找到的话返回子串的位置, 但如果用下面的语句判断是否没有找到是错误的:
if (!str_pos($a, $b))
因为如果子串位置恰好为0, 那么上面的if语句依然成立, 正确的做法是:
if (str_pos($a, $b) === false)
注意要用三个等于号!
no comments | posted in code|编程
Apr
25
2004
php在文件处理和字符串处理方面是非常方便的, 看下面的这个例子, 可以将html文件内容全部读入,并剥除其中所有的与内容无关的HTML标签, 再将结果放入一个字符串, 使用php一句话就可以做到了:
$file_text = strip_tags(join('',file($filename)))
这时再做文件内容搜索应该很简单了...
no comments | posted in code|编程
Apr
23
2004
php的代码是很难调试的,我以前就是用EditPlus+IE来做php代码的编写与调试(相信很多人都是这么用的), 可毕竟只能对付一些小程序,或者用来稍微修改一下OpenSource的代码,如果是需要开发较多的功能,相信只用IE来调试是极其低效的。
有一些php的调试器甚至是集成开发环境可用,可惜的是IDE大多不是Free的,我用过PhpEd,PhpEd是一个PHP的集成开发环境,目前的版本是3.3,可以很好的支持php的开发,集成有智能编辑器,GUI调试器,帮助系统,完善的界面看起来像是Visual studio的PHP版。
PhpEd支持三种php程序的调试方式,Local CGI mode最简单,相当于直接调试php.exe,与web server无关,那么这只能应付一些最简单的php script,HTTP mode (SRV local WEB server)使用phpEd自带的web server进行调试,通常这种方式可以应付绝大多数的script,设置简单,并且效果很好。但有些script对server端环境要求"极其苛刻 ", 这时只能使用最后一种调试方式-HTTP mode (remote WEB server),由于使用了真正的web server,这是一种完全仿真的调试,几乎可以应付所有的php程序,但需要事先建立工程,并设置script的路径映射关系,还需要在web server的php设置(通常在php.ini)中,打开debug extension的支持,并根据php版本将合适的php_dbg.dll拷贝的windows目录下。
对我来说,PhpEd有个致命的缺点: 不支持中文, 不只是它的编辑器不能很好的编辑中文, 在用PhpEd调试时, 如果某个字符串变量或数组的值含有中文, 你就不能看到这个变量,数组的确切内容. 
no comments | posted in code|编程
Apr
21
2004
apache的设置中有一项ServerName的设置,用来设置server的名字,通常如果你的web server只是自己测试用,这里可以使用127.0.0.1,或者localhost等,都可以工作正常。但如果这个server要被LAN中的其它机器访问,显然127.0.0.1和localhost就不行了,这时可以用这台计算机的windows名字,但有一个缺陷,如果用windows名字作为 ServerName,那么一般web网页可以访问,使用cookie的web页则可能存在问题,最佳的方法是将ServerName设置为计算机的 DNS名字,可惜LAN中的很多server并没有DNS名字,这时替代的方法是用web server的真实ip地址,当设置ServerName为ip地址时,使用cookie的网页不会有问题了,但问题是这样的名字很难记,而且不方便使用 DHCP了(ip地址一变,ServerName也要跟着改). 你仍然可以使用http://windowsname的方式方式server,apache会自动将URL转成http://ipaddress,这样就不用记住那长长的ip地址了。
no comments | posted in tech|软件、开源、业界
Apr
16
2004
在应用ccache时,发现一个问题,在某些人的PC上,ccache的编译结果居然是错误的!开始我怀疑是不是在用ccache前后所调用的编译器不同所致,后来用objdum来查看ccache编译的.o文件,推翻了我的猜测,因为ccache编译出的.o文件格式都不对,显然不是正常编译器编译出来的结果,但在某些PC上使用ccache编译却又是正确的。
偶然的发现ccache放在缓存里的hash文件全部是正确的!而这些hash文件正是ccache调用真正的编译器编译出来的,可见编译器这个环节都没有问题,接下来问题会出在哪里?
下载了ccache的源码,分析源码,可以看出,ccache在调用编译器时会把编译结果直接定位到cache目录,而在编译前后都会试着从cache目录拷贝对应的hash文件到最终的目标文件,难道拷贝出错了? 拷贝是用的一个简单的函数,非常的简单,循环拷贝10K数据放到目标文件,直至结束。
既然问题出在拷贝上,我开始比较两个不同的目标文件,一个是用ccache编译出的,一个是直接用编译器编译出的,很直观的看出,真正编译出的目标文件中的所有0A到了ccache的结果中变成了0D 0A, 问题非常清楚了,就是因为Dos文件到Unix文件转换在作鬼,而这个转换一定是cygwin的内核cygwin1.dll做的,但是问题又来了,不同的 PC上,我用的都是同一个版本的cygwin1.dll,怎么会有不同的转换效果呢?
上网去查询了一下,终于明白,cygwin1.dll会在注册表里搜索关于磁盘mount的一些选项,其中非常重要的一个选项是按text还是 binary方式mount文件系统,不同之处就在这里,我把ccache工作正常的机器上的HKLMsoftwarecygnus SolutionsCygwinmounts v2和HKCUsoftwarecygnus SolutionsCygwinmounts v2两个分支导出到其他PC,所有PC上的ccache都工作正常了。实际上控制mount方式的KEY就是上述分支中的cygdrive flags选项,如果是0x22就是binary方式,0x20则是text方式。
1 comment | posted in code|编程