Python:minidom 解析 GBK 编码的 XML 字符串

Python 语言里 minidom 只能解析 UTF-8 编码的XML文件或串,我解析其它的编码的方法修改 XML 标记的 encoding 属性,转换编码。

<?xml version="1.0" encoding="GBK" ?>
<test>
    <name>test</name>
</test>
buffer = xml_string.decode("gbk").encode("utf-8")[37:]
xml_string = '''<?xml version="1.0" encoding="UTF-8" ?>''' + buffer

这样就可以 minidom 正确解析了。

Over!

在 Linux 系统中清除 Windows 用户密码

不论你由于什么原因丢失了正确的 Windows NT/2000/XP/Vista 的用户密码,导致不能正常登录用户。你都可以使用下面的方法清除了硬盘中 Windows 系统的用户密码。

此方法是使用一位德国高手的程序 chntpw,这个程序是完全开放源代码的,如果你有兴趣去研究 Windows SAM 文件的格式,这个程序是一个很好的参考。

1. 制作 Linux Live CD
如果你已经有一张可以直接引导且包含NTFS-3G模块的 Live CD,那么就可以略过一个步骤。否则建议你下载一个 Ubuntu Live CD并刻录成盘。

2. 下载 chntpw
下载 chntpw 最新版本的源代码(其中包含已经静态编译好的 i386 版本的二进制程序)到 U盘中。
下载地址:chntpw-source-080526.zip

3. 清除密码
使用 Live CD 启动计算机,插入保存了 chntpw 程序的U盘。挂载安装了 Windows 系统和U盘的分区。解压缩 chntpw 源代码包。运行 chntpw 程序清除密码。(chntpw 的详细使用方法在源代码中的 README.txt 文件中有详细的解释)

Over!

WordPress 评论数学验证的简单实现

谈到 WordPress 的垃圾评论,我已经无语了。下面给出一个 WordPress 评论数学验证的简单实现方法。希望能够解决由垃圾评论给你带来的烦恼。

1. 编辑 WordPress 安装目录的 wp-comments-post.php 文件,修改下面列出的两处:

$comment_author       = ( isset($_POST['author']) )  ? trim(strip_tags($_POST['author'])) : null;
$comment_author_email = ( isset($_POST['email']) )   ? trim($_POST['email']) : null;
$comment_author_url   = ( isset($_POST['url']) )     ? trim($_POST['url']) : null;
$comment_content      = ( isset($_POST['comment']) ) ? trim($_POST['comment']) : null;
// 在其后加入如下代码
/* Comment Math Checker
 * Heihaier - admin@heiher.info 
 */
$comment_numa	= (isset($_POST['numa'])) ? trim($_POST['numa']) : null;
$comment_numb	= (isset($_POST['numb'])) ? trim($_POST['numb']) : null;
$comment_sumab	= (isset($_POST['sumab'])) ? trim($_POST['sumab']) : null;
if ( get_option('require_name_email') && !$user->ID ) {
	if ( 6 > strlen($comment_author_email) || '' == $comment_author )
		wp_die( __('Error: please fill the required fields (name, email).') );
	elseif ( !is_email($comment_author_email))
		wp_die( __('Error: please enter a valid email address.') );
}
// 在其后加入如下代码
/* Comment Math Checker
 * Heihaier - admin@heiher.info 
 */
if(!$user->ID)		// guest user only
{
	if((($comment_numa + $comment_numb) != $comment_sumab) || empty($comment_sumab))
		wp_die(__('Error: please type the correct results of the math problems.'));
}

Continue reading WordPress 评论数学验证的简单实现

Debian 连接电信3G网络

现在没有开放的 Wifi 用了,但是网络还得使用,只能自费弄了个电信的 3G 上网卡。数据终端设备是华为EC1260。下面我们记录一下如何在 Debian 系统中拨号连接网络。

我的机器是龙梦逸珑8089B笔记本,操作系统是 Debian Squeeze,内核是 2.6.30.4,使用 NetworkManager Applet 0.7.1 连接网络。
1. 插入数据终端设备后,通过查检 /dev/ttyUSB{0,1,2} 是否存在以确定设备有没有被成功驱动。我的内核是包含了驱动程序的。
2. 华为EC1260能够被 NetworkManager Applet 0.7.1 支持,将会自动增加一个名为“Auto Mobile Broadband (CDMA) connection”的连接。右击 nm-applet ,选择 edit connections,编辑 “Auto Mobile Broadband (CDMA) connection”,填写 Username: ctnet@mycdma.net Password: vnet.mobi
3. 修改比特率,打开 gconf-editor,转到 /system/networking/connections/2/ppp/,增加一个key,名字为 baud, 类型为 integer,值为 460800
4. 单击 nm-applet,选择”Auto Mobile Broadband (CDMA) connection“ 连接网络。

如果网络连接失败,原因可能是:
1. 当前用户不隶属于 dialout, dip
2. synaptic 程序正在运行中
3. 设备初始化中

Over!