共 32 页, « 第一页 ... « 11 12 13 [14] 15 16 17 » ... 最后一页 »
前两天在smalldust的blog上看到了关于扑克牌验证码 的想法。觉得这个想法甚是有趣。 想起了以前在一个网站看到一个猫验证码的想法,基本上就是随机出九张图片, 让评论者选出哪几张图是猫,以此来防止垃圾评论。 而smalldust的扑克牌验证码则是一个更有趣的主意。
与smalldust交涉之后做了这个插件,可以在评论页面上显示扑克牌验证码。 版权采用GPL。截图如下:

另外,我的空间因为有广告,无法使用这个有趣的插件了,遗憾啊。
忙了一天做幻灯片,累死了。看来就算是自己熟悉的东西,想要给别人讲明白也不是件容易的事儿。 好在工作中发现了一个有用的命令:fc,使得今天总算有点乐趣。fc是bash的一个内部命令, 作用是修改命令历史中的命令。man bash然后搜索fc即可看到用法。
顺便总结一下bash命令行历史的用法:
- history
- 命令查看以前用过的命令行列表。
- !123
- 执行命令历史中编号为123的命令。
- !cat
- 执行最后一条以cat开头的命令。
- !!
- 执行上一条命令。
- fc
- 打开编辑器(vim)编辑上一条命令。
- fc 123
- 编辑命令历史中编号为123的命令。
- fc 123 130
- 编辑命令历史中123-130的八条命令,退出后依次执行
- fc ls
- 编辑最后一条以ls开头的命令。
- fc -s ls=cat ls
- 将最后一条以ls开头的命令中的ls替换成cat,然后执行
ActivePerl是Windows下最常用的Perl版本,它使用一个名为ppm的工具来管理模块。 安装Perl模块最简单的方法就是利用 ppm,search之后再install。但由于某些原因(比如ppm不能上网)导致不能直接 使用ppm安装模块时,可以利用下面的方法。
用浏览器打开ActiveState的Perl模块发布站, 然后选择相应的版本(一般是选择8xx的Windows目录)。注意模块列表页面比较大,须耐心等待。 模块列表打开后选择自己需要的zip包下载,例如我下载了 DBD-Oracle-1.17.zip。
下载之后将其解压到C:\下(不一定是C盘,但一定要解压到根目录下),出现两个文件:DBD-Oracle-1.17.tar.gz和 DBD-Oracle-1.17.ppd。然后打开命令行,切换路径到到 C:\,然后输入 ppm-shell 启动 ppm,输入以下命令即可安装。
install C:\DBD-Oracle-1.17.ppd
最近公司启用了域,并且代理服务器加上了NTLM认证,只有加入域的电脑才能够使用。 这样一来,虽然IE和Firefox能够正常通过代理上网,但是像FlashGet等不支持NTLM代理认证的 下载工具就没法使用了。
不过今天发现了APS这个工具,它能够帮你进行NTLM代理认证, 使得不支持NTLM认证的工具也能正常使用代理。其方法就是在本地机器上再架设一个不需要认证的代理, FlashGet使用这个代理上网,而APS接收到FlashGet的请求之后,将其加上认证信息,再转发给 真正的代理服务器。
目前最新版为 0.9.9.0.1,下载最新版解压缩即可。它用python写成,需要先安装Python才能正常使用, 推荐使用2.4以上版本。
解压之后修改里面的server.cfg文件,进行以下设置。
# 本地代理的监听端口 LISTEN_PORT:5865 # 实际的代理地址 PARENT_PROXY:172.28.14.3 # 实际的代理端口 PARENT_PROXY_PORT:8080 # 你的机器在域上的机器名 NT_HOSTNAME:<机器名> # 你的机器加入的域的名称 NT_DOMAIN:<域名称> # 域用户名 USER:<用户名> # 域密码 PASSWORD:<密码>
之后打开runserver.bat,修改其中的python路径指向正确的python解释器即可。
运行runserver.bat,APS即在本机的5865端口架设一个代理,然后令FlashGet使用127.0.0.1:5865作为代理即可正常使用。
最近好多人都在问我GoDaddy的域名转向设置方法。其实我没用过GoDaddy的域名转向, 而且据说在中国国内无法访问域名转发服务。幸好GoDaddy对每个域名都提供了免费的虚拟主机, 虽然是带广告的,不过我们可以用它来做自己的域名重定向。 方法么,自然是用mod_rewrite了。
阅读全文 »关于Trac的介绍请参见前一篇文章。
这里我们要构建一个基于Trac的项目管理系统。代码管理使用subversion,项目管理使用Trac。所需要的软件包如下:
- Trac 0.10,Trac程序
- Apache 2.0.59,Web服务器
- subversion 1.4.3,代码版本管理工具
- Python 2.4.4,Python解释器
- mod_python,Python的Apache模块
- ClearSilver 0.9.4,Python的模版工具
- mxDateTime 2.0.3,Python必须库文件
- PostgreSQL 8.2.3,数据库服务器
- pyPgSQL 2.5.1,Python访问PostgreSQL数据库的模块
很遗憾subversion现在仍然不支持最新的Apache 2.2系列,因此我们只能使用Apache 2.0系列。 而pyPgSQL 2.5.1版和ClearSilver 0.9.4不支持Python 2.5,因此只能用 Python 2.4。
另外,虽然Trac支持SQLite,但SQLite支持的SQL语法有限,实际应用中会有诸多不便, 因此我们选择了PostgreSQL作为后台数据库。
阅读全文 »今天介绍一下Trac,一个基于Web的bug管理系统。
Trac拥有强大的bug管理功能,并集成了Wiki用于 文档管理。它还支持代码管理工具Subversion,这样可以在 bug管理和Wiki中方便地参考程序源代码。
bug管理
在Trac中,项目中出现的问题称为ticket。像bug、功能改进、 TODO等都可以写成一个ticket。
- 可设置ticket的优先级别。
- 可以设置ticket的里程碑,表明这个ticket应在何时完成,并能够通过条形图方式显示里程碑的完成度。
- 可以自定义条件生成bug报告,并可以通过SQL语句自定义报告的格式。
Subversion集成
通过Subversion集成,开发者可在Trac中以Web方式浏览代码库中各个版本的代码 和代码的修改历史,并可方便地比较各个版本间的差别。
Wiki
支持常用的Wiki语法。同时增加了许多bug管理的专用标记, 可以方便地创建到ticket、代码行甚至修改历史的链接。
Trac使用Python写成,后台使用SQLite或PostgreSQL数据库, 因此构筑一个完整的Trac系统需要安装以下软件:
- Apache
- Python
- Subversion
- PostgreSQL(可选)
下回继续介绍Trac的安装方法。
Excel默认不支持Unix格式时间戳,这在导入数据时十分不便。可以用以下公式将时间戳转换成Excel格式的时间:
=(x+8*3600)/86400+70*365+19
其中x为时间戳的单元格,8*3600中的8为中国的时区。然后将公式单元格设置为日期时间格式即可。转换结果如下图:

这个公式的原理:Excel的日期实际上是序列值,它以1900-1-1为1,每过一天序列值加1。 而Unix时间戳是从1970-1-1 0:00:00 UTC开始到现在经过的秒数。用x表示时间戳,可得到换算公式:
x+8*3600 当前时区的时间(秒) (x+8*3600)/86400 转换单位为天 (x+8*3600)/86400+70*365 加上1900到1970这七十年 (x+8*3600)/86400+70*365+19 闰年多出来的天数
细心的话你会发现,1900年到1970年共是17个闰年,考虑到Excel将1900-1-1当作1,那么公式最后应该加18才对, 为什么要加19?这是Excel中的一个bug——1900年也被当作闰年,因此应当再多加一天。
另外要注意,在Excel的工具->选项->重新计算中,有个1904年日期系统,如果勾选这个选项,上面的公式应当将70改为66,即
=(x+8*3600)/86400+66*365+19
今天在解决一个Excel问题时发现Excel中居然有1900年2月29日这一天。众所周知1900年是平年。没想到Excel中还会有这样的bug,真是开眼了。
来看看如何重现这个bug:首先新建一个工作表,在某个单元格输入1900/2/20,然后设置适当的日期格式,然后复制序列,即可发现序列中居然包含1900年2月29日这一天。这个问题会影响到1900/1/1到1900/3/1之间的日期计算和星期计算。

微软的官方说明中提到了这个bug,据说是为了某些程序的兼容性问题。可能这个问题是Lotus 1-2-3的bug,微软当年为了跟Lotus 1-2-3抢占市场就做了个完全兼容的Excel,从而把这个bug也一起继承了过来。
如何统计代码的修改规模?如果肯花钱,则能买到统计代码修改规模的专业工具。这里介绍一种利用subversion和grep组合的方法简单统计代码修改规模。下面假设程序代码中的注释有两种格式,一种以 // 开头,另一种是Javadoc格式,即
/**
* This is a function.
* @param {String} v str
*/
为清晰起见,下面的统计命令分成了几行来写。
svn diff -r4:320 # 获取rev4和rev320之间的差异
| sed -e 's/\r//g' # 删除行尾的换行符^M。Windows下必须
| grep "^+[^+]" # 取得修改部分
| grep -Ev "^+[[:space:]]*(\/\*)|(\*)|(\/\/)" # 删除注释
| grep -v "^+[[:space:]]*$" # 删除空行
| wc -l # 统计行数
