<?xml version="1.0" encoding="utf-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
<title>Zhiqiang::He</title>
<link rel="alternate" type="text/html" href="http://www.hzqbbc.com/blog/" />
<modified>2006-11-15T00:45:40Z</modified>
<tagline>Happy + Health = Life^2</tagline>
<id>tag:www.hzqbbc.com,2007:/blog/1</id>
<generator url="http://www.movabletype.org/" version="3.15">Movable Type</generator>
<copyright>Copyright (c) 2006, hzqbbc</copyright>
<entry>
<title>清理scuttle 的垃圾书签</title>
<link rel="alternate" type="text/html" href="http://www.hzqbbc.com/blog/arch/2006/11/cscuttle_caec.html" />
<modified>2006-11-15T00:45:40Z</modified>
<issued>2006-11-15T00:39:38Z</issued>
<id>tag:www.hzqbbc.com,2006:/blog/1.100</id>
<created>2006-11-15T00:39:38Z</created>
<summary type="text/plain">无论是blog系统，还是论坛，经常都充斥着要命的spam，各种类型都有。extmail.org上的scuttle很早前就已经开始遭殃。后来发现这些注册的家伙可能是通过程序注册的，所以加了个安全认证码的东西，注册要输入认证码，后来好了一段时间，最近又跑来一大堆spam信息。无奈！ 于是花了半小时写了个垃圾脚本（无奈啊，连接到服务器好慢，网通与电信之间的距离永远是那么遥远...）干掉这些spam。...</summary>
<author>
<name>hzqbbc</name>
<url>http://www.hzqbbc.com</url>
<email>hzqbbc@hzqbbc.com</email>
</author>
<dc:subject>Works</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hzqbbc.com/blog/">
<![CDATA[<p>无论是blog系统，还是论坛，经常都充斥着要命的spam，各种类型都有。extmail.org上的scuttle很早前就已经开始遭殃。后来发现这些注册的家伙可能是通过程序注册的，所以加了个安全认证码的东西，注册要输入认证码，后来好了一段时间，最近又跑来一大堆spam信息。无奈！</p>

<p>于是花了半小时写了个垃圾脚本（无奈啊，连接到服务器好慢，网通与电信之间的距离永远是那么遥远...）干掉这些spam。</p>]]>
<![CDATA[<p>详细的脚本：</p>

<p>run.sh:</p>


<pre>
#!/bin/sh
MYSQL=&quot;mysql -u root -pyourpassword&quot;

die() {
        echo &quot;Usage: $0 user_id&quot;
        exit 255
}

[ -z &quot;$1&quot; ] &amp;&amp; die &amp;&amp; return 1

./get_bookID.sh $1|$MYSQL|grep -P &quot;\d+&quot; &gt; &quot;$1&quot;_bID.txt
./list_cateID.sh $1|$MYSQL|grep -P &quot;\d+&quot; &gt; &quot;$1&quot;_id.txt
./del_id.sh $1|$MYSQL
rm -rf $1*.txt
</pre>



<p>get_bookID.sh:</p>


<pre>
#!/bin/sh
echo &quot;use app_bookmark; SELECT bID from scBookmarks WHERE uID='$1';&quot;
</pre>



<p>list_cateID.sh:</p>


<pre>
#!/bin/sh
echo &quot;use app_bookmark;&quot;

for bid in `cat $1_bID.txt`;do
        echo &quot;SELECT id FROM scCategories WHERE bId='$bid';&quot;
done
</pre>



<p>del_id.sh:</p>


<pre>
#!/bin/sh
echo &quot;use app_bookmark;&quot;
for bid in `cat $1_bID.txt`;do
        echo &quot;DELETE FROM scCategories WHERE bId='$bid';&quot;
        echo &quot;DELETE FROM scBookmarks WHERE bId='$bid';&quot;
done
</pre>



<p>其实可以合并写在一起，不过无所谓，反正能用就拉倒了。没空折腾。反正有了这个烂得掉渣的小脚本，以后看见谁不顺眼干掉谁。哦，忘记了，还得禁止这些家伙的id。实在以后要再泛滥，发书签时也得加认证码？！</p>]]>
</content>
</entry>
<entry>
<title>解决IBM thinkpad笔记本恢复系统时报“Product Recovery 无法恢复系统”之类的错误</title>
<link rel="alternate" type="text/html" href="http://www.hzqbbc.com/blog/arch/2006/10/eibm_thinkpadce.html" />
<modified>2006-10-08T00:36:58Z</modified>
<issued>2006-10-08T00:29:39Z</issued>
<id>tag:www.hzqbbc.com,2006:/blog/1.99</id>
<created>2006-10-08T00:29:39Z</created>
<summary type="text/plain">昨天我的IBM 本子无缘无故在改了系统内存偏重于系统缓存后，就报“lsass.exe 终结点格式无效“的错误，无论如何都修复不了。于是只好进入一键恢复（Thinkpad rescue and recovery）里恢复，可是到了最后要format c盘的步骤时，居然提示”Product Recovery 无法恢复系统”之类的错误，晕倒！ 上网查了不少论坛的帖子，其他人都是can&apos;t not find xxx module，引起的原因大多是因为分区超过3个。而我的机器分区没超过3个（不算隐藏分区），如何是好？...</summary>
<author>
<name>hzqbbc</name>
<url>http://www.hzqbbc.com</url>
<email>hzqbbc@hzqbbc.com</email>
</author>
<dc:subject>Works</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hzqbbc.com/blog/">
<![CDATA[<p>昨天我的IBM 本子无缘无故在改了系统内存偏重于系统缓存后，就报“lsass.exe 终结点格式无效“的错误，无论如何都修复不了。于是只好进入一键恢复（Thinkpad rescue and recovery）里恢复，可是到了最后要format c盘的步骤时，居然提示”Product Recovery 无法恢复系统”之类的错误，晕倒！</p>

<p>上网查了不少论坛的帖子，其他人都是can't not find xxx module，引起的原因大多是因为分区超过3个。而我的机器分区没超过3个（不算隐藏分区），如何是好？</p>]]>
<![CDATA[<p>回忆了一下，昨天自己曾经做过的事情，就是用ghost 备份过系统，难道因此就有问题？那IBM这个RnR软件就太糟糕了吧，后来又想起在做ghost前，我将c盘根目录下的IBMtools及IBMshare等目录都删除了，会不会这个RnR系统需要检测这些文件？</p>

<p>为了证实这个猜测，我进入winxp里，将做好backup的这些目录（一共1.5GB+之多！）复制到c盘，然后再重新启动，进入RnR里，重新进行系统恢复，这次居然没有报错！看来真的是这个问题哦！</p>

<p>但是为什么它需要扫描这些文件呢？那如果我的系统都烂了，文件都丢失了，检测不到这些目录就不许恢复系统，那还要这个一键恢复有何意义？难道要先format掉c盘再进入RnR就可以恢复系统了吗？这个方法还没测试过。。找个时间测试吧。郁闷...</p>]]>
</content>
</entry>
<entry>
<title>Acrobat + MS word + HyperSnap = 文档利器</title>
<link rel="alternate" type="text/html" href="http://www.hzqbbc.com/blog/arch/2006/09/acrobat_ms_word.html" />
<modified>2006-10-08T00:24:47Z</modified>
<issued>2006-09-17T07:01:16Z</issued>
<id>tag:www.hzqbbc.com,2006:/blog/1.97</id>
<created>2006-09-17T07:01:16Z</created>
<summary type="text/plain">昨天下载了Mantis 中文手册（西西辛苦所著pdf版，感谢！），高兴之余发现里面的图分辨率实在很低，很难看清楚，顿生重新做一次这个手册的念头。于是凑齐HyperSnap和Acrobat 5.0 及ms word，测试了一下截图、生成pdf等功能，为重做手册准备。 但是做下来发现了几个问题： PDF生成后，里面的图片分辨率低，和西西所做一样，看不清，痛苦 不知道如何截取需要滚屏的网页或应用程序，对于大篇幅的图毫无办法 后来经过摸索，并得到了bdwy的帮助后，解决了问题。方法也很简单：...</summary>
<author>
<name>hzqbbc</name>
<url>http://www.hzqbbc.com</url>
<email>hzqbbc@hzqbbc.com</email>
</author>
<dc:subject>Works</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hzqbbc.com/blog/">
<![CDATA[<p>昨天下载了Mantis 中文手册（西西辛苦所著pdf版，感谢！），高兴之余发现里面的图分辨率实在很低，很难看清楚，顿生重新做一次这个手册的念头。于是凑齐HyperSnap和Acrobat 5.0 及ms word，测试了一下截图、生成pdf等功能，为重做手册准备。</p>

<p>但是做下来发现了几个问题：</p>

<p>PDF生成后，里面的图片分辨率低，和西西所做一样，看不清，痛苦<br />
不知道如何截取需要滚屏的网页或应用程序，对于大篇幅的图毫无办法</p>

<p>后来经过摸索，并得到了bdwy的帮助后，解决了问题。方法也很简单：</p>]]>
<![CDATA[<h4>PDF图象清晰度问题</h4>

<p>在word里要输出pdf，可以选择打印==> Acrobat Distiller，然后点Distiller的属性==>Adobe PDF设置==>转换设置那，将默认的CJKScreen换成Press，那么页面分辨率就从可怜的600dpi改为2400dpi，输出的pdf图象质量将大为改善。</p>

<h4>截滚屏图形的方法</h4>

<p>在HyperSnap ==> 捕捉==>捕捉设置==>捕捉==>窗口捕捉时自动滚屏（勾上即可）</p>

<p>然后保存，选一个需要滚屏的网页，然后按ctrl+shift+w，此时点一下鼠标左键，然后HyperSnap就会自动的滚屏，一直滚到底。到底后再点一次左键即可完成捕捉。回到HyperSnap的界面里，图象就全部抓下来了，至于需要取部分内容者，只需要进行裁减即可，非常方便。</p>

<p>以后做ExtMail的使用手册时，都可以用这几个软件搭配了！:-)</p>]]>
</content>
</entry>
<entry>
<title>Acrobat + MS word + HyperSnap = 文档利器</title>
<link rel="alternate" type="text/html" href="http://www.hzqbbc.com/blog/arch/2006/09/acrobat_ms_word.html" />
<modified>2006-09-17T07:10:45Z</modified>
<issued>2006-09-17T07:01:16Z</issued>
<id>tag:www.hzqbbc.com,2006:/blog/1.98</id>
<created>2006-09-17T07:01:16Z</created>
<summary type="text/plain">昨天下载了Mantis 中文手册（西西辛苦所著pdf版，感谢！），高兴之余发现里面的图分辨率实在很低，很难看清楚，顿生重新做一次这个手册的念头。于是凑齐HyperSnap和Acrobat 5.0 及ms word，测试了一下截图、生成pdf等功能，为重做手册准备。 但是做下来发现了几个问题： PDF生成后，里面的图片分辨率低，和西西所做一样，看不清，痛苦 不知道如何截取需要滚屏的网页或应用程序，对于大篇幅的图毫无办法 后来经过摸索，并得到了bdwy的帮助后，解决了问题。方法也很简单：...</summary>
<author>
<name>hzqbbc</name>
<url>http://www.hzqbbc.com</url>
<email>hzqbbc@hzqbbc.com</email>
</author>
<dc:subject>Works</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hzqbbc.com/blog/">
<![CDATA[<p>昨天下载了Mantis 中文手册（西西辛苦所著pdf版，感谢！），高兴之余发现里面的图分辨率实在很低，很难看清楚，顿生重新做一次这个手册的念头。于是凑齐HyperSnap和Acrobat 5.0 及ms word，测试了一下截图、生成pdf等功能，为重做手册准备。</p>

<p>但是做下来发现了几个问题：</p>

<p>PDF生成后，里面的图片分辨率低，和西西所做一样，看不清，痛苦<br />
不知道如何截取需要滚屏的网页或应用程序，对于大篇幅的图毫无办法</p>

<p>后来经过摸索，并得到了bdwy的帮助后，解决了问题。方法也很简单：</p>]]>
<![CDATA[<h4>PDF图象清晰度问题</h4>

<p>在word里要输出pdf，可以选择打印==> Acrobat Distiller，然后点Distiller的属性==>Adobe PDF设置==>转换设置那，将默认的CJKScreen换成Press，那么页面分辨率就从可怜的600dpi改为2400dpi，输出的pdf图象质量将大为改善。</p>

<h4>截滚屏图形的方法</h4>

<p>在HyperSnap ==> 捕捉==>捕捉设置==>捕捉==>窗口捕捉时自动滚屏（勾上即可）</p>

<p>然后保存，选一个需要滚屏的网页，然后按ctrl+shift+w，此时点一下鼠标左键，然后HyperSnap就会自动的滚屏，一直滚到底。到底后再点一次左键即可完成捕捉。回到HyperSnap的界面里，图象就全部抓下来了，至于需要取部分内容者，只需要进行裁减即可，非常方便。</p>

<p>以后做ExtMail的使用手册时，都可以用这几个软件搭配了！:-)</p>]]>
</content>
</entry>
<entry>
<title>配置Mediawiki支持短URL</title>
<link rel="alternate" type="text/html" href="http://www.hzqbbc.com/blog/arch/2006/08/ecmediawikicurl.html" />
<modified>2006-10-08T00:23:32Z</modified>
<issued>2006-08-20T09:02:58Z</issued>
<id>tag:www.hzqbbc.com,2006:/blog/1.96</id>
<created>2006-08-20T09:02:58Z</created>
<summary type="text/plain">为了美化URL，今天花了巨多时间在这个看似简单又讨厌的问题上面。中午觉也没有睡。首先来个惯例的Step by step 安装步骤吧。 1.下载mediawiki 由于测试机是php4.3.9，为了不麻烦，偷懒用了个1.6.8的版本，支持php4.x 2.解包 tar xfz mediawiki-1.6.8.tar.gz mv mediawiki-1.6.8 /var/www/extsuite/mediawiki...</summary>
<author>
<name>hzqbbc</name>
<url>http://www.hzqbbc.com</url>
<email>hzqbbc@hzqbbc.com</email>
</author>
<dc:subject>Works</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hzqbbc.com/blog/">
<![CDATA[<p>为了美化URL，今天花了巨多时间在这个看似简单又讨厌的问题上面。中午觉也没有睡。首先来个惯例的Step by step 安装步骤吧。</p>

<p>1.下载mediawiki</p>

<p>由于测试机是php4.3.9，为了不麻烦，偷懒用了个1.6.8的版本，支持php4.x</p>

<p>2.解包</p>

<p>tar xfz mediawiki-1.6.8.tar.gz<br />
mv mediawiki-1.6.8 /var/www/extsuite/mediawiki</p>]]>
<![CDATA[<p>3.设计站点URL</p>

<p>计划要用http://wiki.extmail.org来访问整个wiki，因此所有的http://wiki.extmail.org/index.php?title=article_title 需要影射成为http://wiki.extmail.org/article_title</p>

<p>4.参考<br />
http://meta.wikimedia.org/wiki/Using_a_very_short_URL</p>

<p>注意这个链接访问不了，必须使用代理才能访问，在这里，感叹一下我们的自由是多么脆弱。一点小小信息都不能看，Damn it :-(</p>

<p>5.实施<br />
Apache的虚拟主机配置:</p>

<p><VirtualHost *:80><br />
ServerName wiki.extmail.org<br />
DocumentRoot /var/www/extsuite/mediawiki</p>

<p><Directory /var/www/extsuite/mediawiki><br />
  Options MultiViews<br />
  AllowOverride None<br />
  Order allow,deny<br />
  Allow from all<br />
  Options FollowSymLinks<br />
  RewriteEngine On<br />
  RewriteCond %{REQUEST_FILENAME} !-f<br />
  RewriteCond %{REQUEST_FILENAME} !-d<br />
  RewriteRule ^(.+)$ /index.php?title=$1 [L,QSA]<br />
</Directory></p>

<p><Directory /var/www/extsuite/mediawiki/images><br />
  Options MultiViews<br />
  AllowOverride None<br />
  Order allow,deny<br />
  Allow from all<br />
  # avoid execution of PHP scripts in upload directory<br />
  AddType text/plain .php<br />
  AddType text/plain .phps<br />
</Directory><br />
</VirtualHost></p>

<p>chmod a+w config<br />
然后访问http://wiki.extmail.org/config/<br />
配置完毕，生成数据库后：<br />
mv config/LocalSettings.php .</p>

<p>配置LocalSettings.php</p>

<p>正常默认就是下面：<br />
$wgScriptPath       = "";<br />
$wgScript           = "$wgScriptPath/";<br />
$wgRedirectScript   = "$wgScriptPath/redirect";</p>

<p>然后修改下面:<br />
$wgArticlePath      = "$wgScriptPath/$1";</p>

<p>include "extensions/GeshiHighlight.php";</p>

<p>6.配置使用/wiki/的方法</p>

<p>希望访问wiki 的url为http://www.extmail.org/wiki/xxx</p>

<p>1-5的步骤略去。给出apache 的配置:</p>

<p><VirtualHost *:80><br />
ServerName www2.extmail.org<br />
DocumentRoot /var/www/extsuite/html<br />
Alias /mediawiki        /var/www/extsuite/mediawiki<br />
Alias /wiki             /var/www/extsuite/mediawiki/index.php</p>

<p><Directory /var/www/extsuite/mediawiki><br />
  Options MultiViews<br />
  AllowOverride None<br />
  Order allow,deny<br />
  Allow from all<br />
  Options FollowSymLinks<br />
  RewriteEngine On<br />
  RewriteCond %{REQUEST_FILENAME} !-f<br />
  RewriteCond %{REQUEST_FILENAME} !-d<br />
  RewriteRule ^(.+)$ /index.php?title=$1 [L,QSA]<br />
</Directory><br />
</VirtualHost></p>

<p>LocalSettings.php:</p>

<p>$wgScriptPath       = "/mediawiki";<br />
$wgScript           = "/wiki";<br />
$wgRedirectScript   = "/wiki/redirect";</p>

<p>$wgArticlePath      = "$wgScript/$1";<br />
include_once("extensions/GeshiHighlight.php");</p>

<p>唯一的缺点是在登陆或退出时，URL是http://www2.extmail.org/wiki?title=xxx&xxxx=xxx</p>

<p>因为apache配置里将/wiki => index.php了，所以wiki?参数就和index.php?参数一致了。嘿嘿。<br />
</p>]]>
</content>
</entry>
<entry>
<title>IPtables 规则错误导致DNS查询失败之解决办法</title>
<link rel="alternate" type="text/html" href="http://www.hzqbbc.com/blog/arch/2006/08/iptables_eeeedn.html" />
<modified>2006-08-06T04:12:39Z</modified>
<issued>2006-08-06T04:01:10Z</issued>
<id>tag:www.hzqbbc.com,2006:/blog/1.95</id>
<created>2006-08-06T04:01:10Z</created>
<summary type="text/plain">受朋友之托，检查其主机上的iptables规则引起的dns问题。主要现象是打开了如下的规则后，squid就不能正常的查找主机的ip地址，dns解析试销。 # Generated by iptables-save v1.3.4 on Sun Aug 6 11:28:42 2006 *nat :PREROUTING ACCEPT [293:39183] :POSTROUTING ACCEPT [5:299] :OUTPUT ACCEPT [5:299] COMMIT # Completed on Sun Aug 6 11:28:42 2006 # Generated by iptables-save v1.3.4 on Sun Aug 6 11:28:42 2006 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [949:834012] -A INPUT -p tcp -m multiport --dports 21,25,80,81,110,143,3128 -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT -A INPUT -p udp -m udp --dport 53 -j ACCEPT #-A INPUT -p udp -m udp -j ACCEPT -A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec --limit-burst 10 -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p...</summary>
<author>
<name>hzqbbc</name>
<url>http://www.hzqbbc.com</url>
<email>hzqbbc@hzqbbc.com</email>
</author>
<dc:subject>Works</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hzqbbc.com/blog/">
<![CDATA[<p>受朋友之托，检查其主机上的iptables规则引起的dns问题。主要现象是打开了如下的规则后，squid就不能正常的查找主机的ip地址，dns解析试销。</p>

<pre>
# Generated by iptables-save v1.3.4 on Sun Aug  6 11:28:42 2006
*nat
:PREROUTING ACCEPT [293:39183]
:POSTROUTING ACCEPT [5:299]
:OUTPUT ACCEPT [5:299]
COMMIT
# Completed on Sun Aug  6 11:28:42 2006
# Generated by iptables-save v1.3.4 on Sun Aug  6 11:28:42 2006
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [949:834012]
-A INPUT -p tcp -m multiport --dports 21,25,80,81,110,143,3128 -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT     
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
#-A INPUT -p udp -m udp -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec --limit-burst 10 -j ACCEPT      
-A INPUT -i lo -j ACCEPT        
-A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT             
-A INPUT -p tcp -m state --state INVALID,NEW -j DROP        
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j DROP      
-A INPUT -p udp -m udp -j DROP
COMMIT
# Completed on Sun Aug  6 11:28:42 2006
</pre>]]>
<![CDATA[<p>当屏蔽了上述规则中#-A INPUT -p udp -m udp -j ACCEPT 的规则后，squid就无法正常工作了。在机器上用nslookup 查询主机名 + 外部dns ip，发现timeout，应该是udp包无法发送到对方的dns服务器53端口。</p>

<p>后来man了一下iptables，发现可以用LOG来记录ip包的情况，于是打开log，增加了如下的规则集：</p>

<pre>
-A INPUT -j LOG -p udp -m udp --log-prefix "DNS monitor: "
</pre>

<p>重新启动iptables，在/var/log/message里看到如下信息：</p>

<div>
Aug  6 12:00:12 hostname DNS monitor: IN=eth0 OUT= MAC=00:14:5e:41:e0:16:00:0d:65:98:f7:80:08:00 SRC=w.x.y.z DST=a.b.c.d LEN=124 TOS=0x00 PREC=0x00 TTL=47 ID=38895 DF PROTO=UDP SPT=53 DPT=33036 LEN=104 
</div>

<p>注意这里的<b>SPT=53 DPT=33036</b>，检查一下规则发现放行的是目的地53口，没有发行源端口（即sport），估计问题在这里，于是增加一条记录：</p>

<pre>
-A INPUT -p udp -m udp --sport 53 -j ACCEPT
</pre>

<p>重新启动后，正常了。看来，没有log的帮助还一时搞不明白为什么。也怪平时没仔细研究iptables，嘿嘿，通过这次也受到教训了:-)</p>]]>
</content>
</entry>
<entry>
<title>Server Push blocked by Compress - 压缩模式不能实现Server Push</title>
<link rel="alternate" type="text/html" href="http://www.hzqbbc.com/blog/arch/2006/02/server_push_blo.html" />
<modified>2006-02-25T11:38:39Z</modified>
<issued>2006-02-25T10:37:47Z</issued>
<id>tag:www.hzqbbc.com,2006:/blog/1.94</id>
<created>2006-02-25T10:37:47Z</created>
<summary type="text/plain">Server Push并不是什么新技术，而是一种老技术。早年Netscape就提出了Server Push的技术，通过HTTP 内容类型 multipart/x-mixed-replace 来标识。 但由于Netscape被迫退出市场后，IE一直没有支持这样的特性，所以想基于真正的Server Push 技术开发web 即时通信软件的梦想一直不能获得完美实现。 目前一般的Server Push实现大多是由一个长效执行的cgi程序，将变更的信息发送到客户端浏览器，此时需要此cgi程序及web server支持unbuffer，即能在任意时刻在与客户端建立的连接这个流中传递信息，并不进行缓冲。这样客户端可以即时收到信息。 过去在DMS（Damail System）中实现的无刷新进度条就是使用类似的技术。 最近重新收拾了一下过去的实现，发现居然不能用了！什么原因？...</summary>
<author>
<name>hzqbbc</name>
<url>http://www.hzqbbc.com</url>
<email>hzqbbc@hzqbbc.com</email>
</author>
<dc:subject>Works</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hzqbbc.com/blog/">
<![CDATA[<p>Server Push并不是什么新技术，而是一种老技术。早年Netscape就提出了Server Push的技术，通过HTTP 内容类型 multipart/x-mixed-replace 来标识。</p>

<p>但由于Netscape被迫退出市场后，IE一直没有支持这样的特性，所以想基于真正的Server Push 技术开发web 即时通信软件的梦想一直不能获得完美实现。</p>

<p>目前一般的Server Push实现大多是由一个长效执行的cgi程序，将变更的信息发送到客户端浏览器，此时需要此cgi程序及web server支持unbuffer，即能在任意时刻在与客户端建立的连接这个流中传递信息，并不进行缓冲。这样客户端可以即时收到信息。</p>

<p>过去在DMS（Damail System）中实现的无刷新进度条就是使用类似的技术。</p>

<p>最近重新收拾了一下过去的实现，发现居然不能用了！什么原因？</p>]]>
<![CDATA[<p>经过检查和对比，才忽然发现，原来自己的web server 打开了内容压缩（gzip，deflate）的功能，难怪怎么都无法即时获得server端的输出。</p>

<p>由于deflate/gzip输出必须事先获得全部的输出信息，因此web server强制性的等待cgi程序执行完毕之后，才将cgi的输出结果进行压缩，并发送到客户端。</p>

<p>因此客户端将一直处于“阻塞”状态，得不到任何数据。</p>

<p>以后得小心这个问题，或者利用apache的deflate模块里提供的功能，对于特定的后缀才进行压缩，对于cgi程序不压缩。否则Server Push就被Blocked 了 :-)</p>

<p>相关的一些Link:</p>

<p><a href="http://home.netscape.com/assist/net_sites/pushpull.html"><br />
http://home.netscape.com/assist/net_sites/pushpull.html</a></p>]]>
</content>
</entry>
<entry>
<title>google top 10 principle - Google 10大黄金法则</title>
<link rel="alternate" type="text/html" href="http://www.hzqbbc.com/blog/arch/2006/01/google_top_10_p.html" />
<modified>2006-01-23T04:35:46Z</modified>
<issued>2006-01-23T04:26:49Z</issued>
<id>tag:www.hzqbbc.com,2006:/blog/1.93</id>
<created>2006-01-23T04:26:49Z</created>
<summary type="text/plain"> 美东时间12月2日消息，在与加州大学伯克利分校信息管理学院院长哈里•瓦里安（Hal Varian）的一次讨论中，Google公司CEO Eric Schmidt讲述了这家搜索巨头公司在产生和保留知识型员工方面遵循的几条原则。该文被美国《新闻周刊》（Newsweek）刊登，以下是Schmidt的观点摘录。 　　抓住知识型员工将是未来四分之一世纪企业成功的关键。下面就是Google在这方面的做法。 　　在Google，我们认为商业管理学的宗师彼得•德鲁克对于如何管理“知识型员工”的理解最为深刻。毕竟，这个词是由德鲁克于1959年发明。德鲁克说知识型员工相信自己拿工资是为了出效率，而不是为了完成朝九晚五的呆板工作，而聪明的企业会“排除任何影响‘知识型员工’工作的障碍”。这些成功经验将吸引最好的员工，并且保证“未来25年竞争优势的唯一且最大的因素。” 　　在Google，我们寻求这种优势。当前关于大型企业是否对于知识型员工处置失当的争论是我们慎重对待的问题之一，这是因为无法正确处理该问题的企业将被出局。我们从其他地方以及内部讨论得出得到很多好的想法。以下七条就是我们在最大化知识化员工效率方面所采用的关键原则。与大多数技术公司一样，我们的许多员工都是工程师级别的，因此我们将以这个特殊群体为主，但其中很多原则对于所有知识型员工均适用。 　　组织委员会，严格招聘 　　实质上每个参加Google面试的人至少与六位面试官交谈过，后者均是公司管理层面或潜在同事组成的。每个人的观点都算数，从而使招聘程序更加公平，标准更高。当然，花费的时间会长一些，但我们认为值得。如果希望招到优秀的员工，那么经过严格的招聘程序，你会得到更加优秀的员工。公司创立之初我们就开始构建这种积极的反馈循环，直到现在已经从中获得了巨大回报。 　　满足员工的所有需要 　　正如德鲁克所说，管理目标是“排除任何影响他们工作的障碍。”我们为他们提供了一整套标准的额外利益，但首先是一流的餐饮设施、体育馆、洗衣房、按摩室、理发厅、洗车房、干洗房、接送班车等，几乎任何一位勤奋工作的工程师所需的一切。我们可以这样分析：程序师乐意开发程序，他们不喜欢洗衣服。那么我们就让这两件事情变得同时简单起来。 　　拉近员工距离 　　Google的几乎每个项目都是小组项目，每个小组之间都必须进行交流合作。最好的让交流变得简单的方式就是让每个小组成员都近在咫尺。因此实质上Google的所有员工分享一间办公室。这样，当某位程序师需要与一位同事协商时，就能马上找到对方：没有电话号码标签、没有电子邮件拖延、不用等待答复。当然，Google还有很多会议室供人们进行详细讨论，从而不会打扰各自的办公助手。即使是公司CEO，在来到Google后数月才得到一间办公室。和一个学识丰富的员工比邻而居，委实是一种高效的培训经验。...</summary>
<author>
<name>hzqbbc</name>
<url>http://www.hzqbbc.com</url>
<email>hzqbbc@hzqbbc.com</email>
</author>
<dc:subject>BizInfo</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hzqbbc.com/blog/">
<![CDATA[<p> 美东时间12月2日消息，在与加州大学伯克利分校信息管理学院院长哈里•瓦里安（Hal Varian）的一次讨论中，Google公司CEO Eric Schmidt讲述了这家搜索巨头公司在产生和保留知识型员工方面遵循的几条原则。该文被美国《新闻周刊》（Newsweek）刊登，以下是Schmidt的观点摘录。 <br />
　　抓住知识型员工将是未来四分之一世纪企业成功的关键。下面就是Google在这方面的做法。</p>

<p>　　在Google，我们认为商业管理学的宗师彼得•德鲁克对于如何管理“知识型员工”的理解最为深刻。毕竟，这个词是由德鲁克于1959年发明。德鲁克说知识型员工相信自己拿工资是为了出效率，而不是为了完成朝九晚五的呆板工作，而聪明的企业会“排除任何影响‘知识型员工’工作的障碍”。这些成功经验将吸引最好的员工，并且保证“未来25年竞争优势的唯一且最大的因素。”</p>

<p>　　在Google，我们寻求这种优势。当前关于大型企业是否对于知识型员工处置失当的争论是我们慎重对待的问题之一，这是因为无法正确处理该问题的企业将被出局。我们从其他地方以及内部讨论得出得到很多好的想法。以下七条就是我们在最大化知识化员工效率方面所采用的关键原则。与大多数技术公司一样，我们的许多员工都是工程师级别的，因此我们将以这个特殊群体为主，但其中很多原则对于所有知识型员工均适用。</p>

<p>　　<strong>组织委员会，严格招聘</strong></p>

<p>　　实质上每个参加Google面试的人至少与六位面试官交谈过，后者均是公司管理层面或潜在同事组成的。每个人的观点都算数，从而使招聘程序更加公平，标准更高。当然，花费的时间会长一些，但我们认为值得。如果希望招到优秀的员工，那么经过严格的招聘程序，你会得到更加优秀的员工。公司创立之初我们就开始构建这种积极的反馈循环，直到现在已经从中获得了巨大回报。</p>

<p>　　<strong>满足员工的所有需要</strong></p>

<p>　　正如德鲁克所说，管理目标是“排除任何影响他们工作的障碍。”我们为他们提供了一整套标准的额外利益，但首先是一流的餐饮设施、体育馆、洗衣房、按摩室、理发厅、洗车房、干洗房、接送班车等，几乎任何一位勤奋工作的工程师所需的一切。我们可以这样分析：程序师乐意开发程序，他们不喜欢洗衣服。那么我们就让这两件事情变得同时简单起来。</p>

<p>　　<strong>拉近员工距离</strong></p>

<p>　　Google的几乎每个项目都是小组项目，每个小组之间都必须进行交流合作。最好的让交流变得简单的方式就是让每个小组成员都近在咫尺。因此实质上Google的所有员工分享一间办公室。这样，当某位程序师需要与一位同事协商时，就能马上找到对方：没有电话号码标签、没有电子邮件拖延、不用等待答复。当然，Google还有很多会议室供人们进行详细讨论，从而不会打扰各自的办公助手。即使是公司CEO，在来到Google后数月才得到一间办公室。和一个学识丰富的员工比邻而居，委实是一种高效的培训经验。</p>]]>
<![CDATA[<p> </p>

<p>　　<strong>使合作简单协调</strong></p>

<p>　　由于一个小组的所有成员都近在咫尺，因此在协调项目开展方面就相对容易些。除了身体保持近距离外，每位Google员工每周还向其所在工作组发送电子邮件回报上周的工作成绩。这样就能让每个人都能简单地跟踪其他成员的工作进度，更加容易地监控工作进程，并同步工作流程。</p>

<p>　　<strong>身体力行，使用自己的产品</strong></p>

<p>　　Google员工都很频繁地使用公司开发的各种工具。最常见的就是为所有项目和任务而建内部网页组成的网络。这些网页都被索引并以按需访问的策略向项目参与者开放。我们对其他信息管理工具的用户进行了扩展，其中某些将最终以产品的形式对外推出。譬如Gmail成功的原因之一就是它曾在公司内部测试达数月之久。电子邮件主要用于组织信息，所以Gmail被不断改进，直至满足最大需求的消费者――我们的知识型员工的需要。</p>

<p>    <strong>鼓励创新</strong></p>

<p>　　Google工程师们可把20％的工作时间放在自选项目开发上。当然其中必须有一个批准过程以及某些失败，但基本上我们希望让所有富有创意的人们发挥创意。我们有一个公开的秘密武器，就是创意邮件目录：一个全公司共用的建议箱。任何人都可以把自己的创意发送到这里，从停车程序 到下一代应用程序等等。在这里所有人都可以对创意发表评论、进行评价，从而促使最佳创意浮出水面。</p>

<p>　　<strong>尽可能统一意见</strong></p>

<p>　　现代企业神话中都有一个英雄般的独特决议制订者。我们坚信“群众的智慧”这一理念，并希望在确定任何决议之前收集广泛的观点作为分析基础。在Google，管理者的角色是一个观点的收集者，而不是决策的独裁者。统一大多数人的意见有时要花费较长时间，但通常可以组成一个更加忠诚的工作组和更为明智的决策。</p>

<p>　　<strong>不作恶</strong></p>

<p>　　很多人曾经对Google的这一口号做过描写，但我们确实试图以此为工作指导，尤其在管理方面。就像任何组织的成员都对他们的观点充满热情一样。但在Google，不会有人反对这一原则，不想其他某些知名技术公司管理习惯那样。我们努力创建一种充满宽容和尊重的工作氛围，而不是让公司里充满满嘴只会说是的人。</p>

<p>　　<strong>数据决定决策</strong></p>

<p>　　在Google，几乎所有决策都是基于大量分析后得出。我们创建了多种管理信息的系统，不止是大方面的互联网，还有内部联网。我们有很多分析师专门研究数据，分析各种执行标准然后总结出发展趋势，从而使我们尽可能地跟上时代的步伐。我们为每个研究项目都建立了大量在线“仪表板”，从中获得最新的状态现状。</p>

<p>　　<strong>有效地交流</strong></p>

<p>　　每周五公司所有员工都集合在一起，共同获得公司公告，业务介绍，解决各种问题（还有一些食物和饮料）。通过这种方式，管理层能够密切接触并及时了解知识型员工的所想，员工也能对管理层的想法有所了解。Google对组织内的信息分发进行了极大的扩展，并重点弥补了少数严重疏漏。与某些外界想法不同，我们认为值得信赖的劳动力才是忠实的工作团队是所有结果的第一真理。</p>

<p>　　<strong>发展道路上的潜在障碍</strong></p>

<p>　　当然，我们公司不止遵守以上规则，其中许多在硅谷非常普遍。同时，我们意识到随着公司的发展，我们必须不断改进自己的管理技术。我们（以及其他类似于我们的公司）还面临很多问题。</p>

<p>　　第一就是“技术自大”问题。工程师们之间的竞争是自然的，并且他们难以容忍那些积极性或学识不如自己的人。但几乎所有工程项目都是小组项目，因此小组中出现头脑聪明但顽固不化的人对于整个工作都是致命的。如果我们在一封推荐信中看到“我所见过的最聪明的人”以及“我再也不想跟他们一起工作”的字眼，那么我们绝对不会通过他们的提议。普及同级人员面试的原因之一就是为了确保小组成员热情欢迎新成员的加入。我们的很多优秀员工在小组创建等方面都是楷模，因此我们希望继续保持这种方式。</p>

<p>　　与之相关的就是NIH症候群（not-invented-here syndrome，“与我无关综合症”）。一个好的工程师通常坚信自己能够开发一套比现有系统更加完善的系统，并且以“创建而不购买”为信念。当然，他们或许是正确的，但我们却必须以极大的代价关注这些项目。有时这也意味着超出了公司的产品和服务界限。</p>

<p>　　还有一个问题也是我们未来几年将要面对，即公司、产业及内部劳动力将最终成熟起来。不止是我们，连同业内其他公司目前都处于一个告诉发展阶段，但这个阶段不会成为永久。我们中的很多员工都是刚走出校园的大学毕业生；其他的都有家庭以及丰富的工作经验。他们有着不同的兴趣和需求，因此我们必须提供可吸引所有年龄段员工的福利和工作环境。</p>

<p>　　最后的问题是确保Google成长过程中，通讯程序能够跟的上公司的扩展。周五例会对于山景镇的工作小组非常适用，但是现在的Google已经成为一个全球组织。</p>

<p>　　我们一直注重创新和改革，但这并不是Google的唯一。我们还必须管理日常运作，这也不是一项简单的任务。我们将建造比历史上已存的，更加庞大、复杂和要求更加严格的技术基础设施。这些系统必须持续发展不断满足不断增加的一系列要求，因此计划、执行并维护这些系统的人还必须具有强烈的积极性。在Google，日常运作不是简单的事后三思：它们对于公司的成功有着至关重要的作用，同时我们希望在新产品开发中，能够取得像现在的统治领域一样的成绩和发明。</p>]]>
</content>
</entry>
<entry>
<title>openSSH + SecureCRT HOWTO - 如何整合openSSH和SCRT</title>
<link rel="alternate" type="text/html" href="http://www.hzqbbc.com/blog/arch/2005/12/openssh_securec.html" />
<modified>2005-12-14T05:48:04Z</modified>
<issued>2005-12-14T05:13:42Z</issued>
<id>tag:www.hzqbbc.com,2005:/blog/1.92</id>
<created>2005-12-14T05:13:42Z</created>
<summary type="text/plain">openSSH/openSSL 是现在最流行的开源软件，保护着数百万的Linux, BSD, Unix主机。而历来商业的SSH server/Client 对openSSH/openSSL的支持都不是太好，在windows下的客户端SecureCRT要支持openSSH总是有这样或那样的不足。 要么，用SecureCRT（简称SCRT）生成的公钥/密钥，然后将公钥放到openSSH Server上去，可以支持SCRT利用证书登陆到openSSH server上，但如果从另一台使用openSSH client的机器要登陆到这个openSSH server，却死活都通不过。 要么，用openSSH 生成的公钥/密钥，则安装openSSH client的机器要连接过来毫无问题，但SCRT却通不过。 为了这个问题琢磨了很久，后来在SecureCRT的官方论坛里，有人提到SecureCRT自4.0以来，已经可以支持openSSH的key了。于是怀着试试看的心情，将SCRT升级到4.1，重新做了一下配置，成功了！ 实现了openSSH server + SCRT/openSSH Client 的组合，以后无论是win平台还是*nix平台，都可以方便的使用证书登陆了，实在解决了一个大问题。 How to implement? 以下简单描述一下如何配置与实现的。 配置openSSH server 以下是/etc/ssh/sshd_config的内容： Port 22 Protocol 2 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key KeyRegenerationInterval 1h SyslogFacility AUTHPRIV LoginGraceTime 5m PermitRootLogin yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys IgnoreRhosts yes HostbasedAuthentication no PasswordAuthentication yes PermitEmptyPasswords no ChallengeResponseAuthentication no Subsystem sftp /usr/libexec/openssh/sftp-server 该配置允许使用证书或密码登陆，对于出差到外地但没带证书的情况就很有用了，如果想只使用证书，则将： PasswordAuthentication yes 改为： PasswordAuthentication no 利用ssh-keygen生成公钥/密钥 例如要生成用户hzqbbc的公钥/密钥，则先su 到hzqbbc用户，然后输入： ssh-keygen -t dsa ssh-keygen会提示文件的存放位置及密钥的加密字，按要求输入即可。以下是样例： [hzqbbc@p4 .ssh]$ ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home/hzqbbc/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/hzqbbc/.ssh/id_dsa. Your public key has been saved in /home/hzqbbc/.ssh/id_dsa.pub. The key...</summary>
<author>
<name>hzqbbc</name>
<url>http://www.hzqbbc.com</url>
<email>hzqbbc@hzqbbc.com</email>
</author>
<dc:subject>Works</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hzqbbc.com/blog/">
<![CDATA[<p>openSSH/openSSL 是现在最流行的开源软件，保护着数百万的Linux, <span class="caps">BSD,</span> Unix主机。而历来商业的SSH server/Client 对openSSH/openSSL的支持都不是太好，在windows下的客户端SecureCRT要支持openSSH总是有这样或那样的不足。</p>

<p>要么，用SecureCRT（简称SCRT）生成的公钥/密钥，然后将公钥放到openSSH Server上去，可以支持SCRT利用证书登陆到openSSH server上，但如果从另一台使用openSSH client的机器要登陆到这个openSSH server，却死活都通不过。</p>

<p>要么，用openSSH 生成的公钥/密钥，则安装openSSH client的机器要连接过来毫无问题，但SCRT却通不过。</p>

<p>为了这个问题琢磨了很久，后来在SecureCRT的官方论坛里，有人提到SecureCRT自4.0以来，已经可以支持openSSH的key了。于是怀着试试看的心情，将SCRT升级到4.1，重新做了一下配置，成功了！</p>

<p>实现了openSSH server + <span class="caps">SCRT</span>/openSSH Client 的组合，以后无论是win平台还是*nix平台，都可以方便的使用证书登陆了，实在解决了一个大问题。</p>

<h4>How to implement?</h4>

<p>以下简单描述一下如何配置与实现的。</p>

<p><b>配置openSSH server</b><br />
以下是/etc/ssh/sshd_config的内容：</p>



<pre>
Port                            22
Protocol                        2
HostKey                         /etc/ssh/ssh_host_rsa_key
HostKey                         /etc/ssh/ssh_host_dsa_key
KeyRegenerationInterval         1h
SyslogFacility                  AUTHPRIV
LoginGraceTime                  5m
PermitRootLogin                 yes
PubkeyAuthentication            yes
AuthorizedKeysFile              .ssh/authorized_keys
IgnoreRhosts                    yes
HostbasedAuthentication         no
PasswordAuthentication          yes
PermitEmptyPasswords            no
ChallengeResponseAuthentication no
Subsystem        sftp    /usr/libexec/openssh/sftp-server
</pre>



<p>该配置允许使用证书或密码登陆，对于出差到外地但没带证书的情况就很有用了，如果想只使用证书，则将：</p>


<pre>
PasswordAuthentication          yes
</pre>


<p>改为：</p>


<pre>
PasswordAuthentication          no
</pre>



<p><b>利用ssh-keygen生成公钥/密钥</b></p>

<p>例如要生成用户hzqbbc的公钥/密钥，则先su 到hzqbbc用户，然后输入：</p>



<pre>
ssh-keygen -t dsa
</pre>



<p>ssh-keygen会提示文件的存放位置及密钥的加密字，按要求输入即可。以下是样例：</p>




<pre>
[hzqbbc@p4 .ssh]$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/hzqbbc/.ssh/id_dsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/hzqbbc/.ssh/id_dsa.
Your public key has been saved in /home/hzqbbc/.ssh/id_dsa.pub.
The key fingerprint is:
aa:0a:3c:be:7f:35:9b:4f:82:bf:1d:ca:0b:dc:bc:cc hzqbbc@p4
</pre>




<p><b>将id_dsa和id_dsa.pub复制到windows系统</b></p>

<p>在windows客户机上，建立C:\SSH目录，然后将id_dsa和id_dsa.pub<b>原封不动</b>的复制到C:\SSH里，确保文件名为id_dsa和id_dsa.pub</p>]]>
<![CDATA[<p><b>配置SCRT</b></p>

<p>请确认SecureCRT安装或升级到<b>4.0以上</b>，我目前使用的是4.1，然后开始配置。</p>

<p><img src="/images/openssh_scrt_howto/step1.gif" border=1 /></p>

<p>第一步：打开要配置证书的主机名记录，选中主机名后，点图中红色方框的图标，进入该主机的详细配置界面。</p>

<p><img src="/images/openssh_scrt_howto/step2.gif" border=1 /></p>

<p>第二步，Connection页中，Username填写要登陆的用户，该用户就是刚才创建证书的用户，这个必须注意。然后在Connection --&gt; Authentication 中，Primary认证方法选PublicKey，并点开“Properties”。</p>

<p><img src="/images/openssh_scrt_howto/step3.gif" border=1 /></p>

<p>第三步，选Use session public key ，意思是每个不同会话使用不同的证书，这对于管理大量主机的系统管理员较为有用。如果只是维护少量机器，可以考虑使用同一套证书。</p>

<p><img src="/images/openssh_scrt_howto/step4.gif" border=1 /></p>

<p>Use identity file那里，打开“...”按钮，浏览我的电脑，找到C:\SSH目录，然后看到id_dsa和id_dsa.pub文件，选中id_dsa文件，然后确定，就可以看到路径为C:\SSH\id_dsa 了。</p>

<p><img src="/images/openssh_scrt_howto/step5.gif" border=1 /></p>

<p>保存好配置，关闭SecureCRT，然后打开配置了证书的主机，正常情况下将提示要输入密钥的加密字，输入后就应该可以登陆进系统了。</p>

<p>同时再打开另一个SCRT窗口。登陆同样的主机，由于SCRT已缓存了证书及加密字，因此不再需要输入用户名密码，使用就很方便了！</p>]]>
</content>
</entry>
<entry>
<title>Too busy to write - 自己CPU满负荷，没“空”了！</title>
<link rel="alternate" type="text/html" href="http://www.hzqbbc.com/blog/arch/2005/12/too_busy_to_wri.html" />
<modified>2005-12-11T14:53:03Z</modified>
<issued>2005-12-11T14:20:06Z</issued>
<id>tag:www.hzqbbc.com,2005:/blog/1.91</id>
<created>2005-12-11T14:20:06Z</created>
<summary type="text/plain">最近一个月都没有更新blog，原计划要将openSSH+证书+SCRT的howto放出来，还要写一下关于APF server的发展问题，还有更多要写...... 可如今一篇都没有。检讨下来，只有一个字：“忙”。 自己的CPU时间片几乎全部都被事情占满了。心想如果自己能分身该多好！ 琐碎的事太多了，现在开始怀疑一件事：是不是自己的“系统”装太多“程序”了。:-) 该清理清理，make tidy 之。...</summary>
<author>
<name>hzqbbc</name>
<url>http://www.hzqbbc.com</url>
<email>hzqbbc@hzqbbc.com</email>
</author>
<dc:subject>Misc</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hzqbbc.com/blog/">
<![CDATA[<p>最近一个月都没有更新blog，原计划要将openSSH+证书+SCRT的howto放出来，还要写一下关于APF server的发展问题，还有更多要写......</p>

<p>可如今一篇都没有。检讨下来，只有一个字：“忙”。</p>

<p>自己的CPU时间片几乎全部都被事情占满了。心想如果自己能分身该多好！</p>

<p>琐碎的事太多了，现在开始怀疑一件事：是不是自己的“系统”装太多“程序”了。:-)</p>

<p>该清理清理，make tidy 之。</p>]]>
<![CDATA[<p>仔细总结下来，事情不少，规划不好；时间不够，效率太臭。</p>

<p><b>事情不少，规划不好</b></p>

<p>最近1个来月，需要做不少时间，例如Extmail开发，ExtMan更新，extmail社区维护，qq群回答问题，论坛里发帖子，协调CORE team的工作，基础应用的架设，谈几个email的服务和系统单子，给客户写方案书，qq里谈单子，家里要做书柜，到处联系，谈价钱，材料，还要去各种地方交费，家里杂事，还有一些小开发的事要谈，还有。。。</p>

<p>真有点晕了。</p>

<p>办事讲求效率和按部就班，很多时候，应该是多进程，并行的做一件事的。但往往都是一件完了才做第二件，白白消耗了CPU时间片，这是最近1个来月CPU满负荷原因之一。</p>

<p>其次嘛，规划不好，本来有些事应该错开来做，或者找人帮忙就可以减轻不少负担。例如extmail社区的维护，本来就应该发动Extmail <span class="caps">CORE TEAM</span>来做，最开始一直都是自己在发帖，回答问题。实在耗费了不少时间。</p>

<p>再次，QQ群里的问题解答，这个是最耗时间的事情。8点多上线，没聊几句，一看表，11点多要吃饭了！一天最有价值的时间基本上就完蛋了。下午接些电话，处理些事，谈一下项目，写点方案，就过了，晚上吃饭后又要忙一些家务事，看看新闻没两下该睡觉了。</p>

<p>其实，QQ群里有不少热心的好人，他们也乐意解答问题，于是请了1，2位好同志做管理员，果然又解决了不少时间上的问题。</p>

<p>不过最深刻的感受是：<b>QQ等即时通信软件极耗时间！</b> 大好时光都会被消磨一干二净，还是Email好，可以集中处理，使时间的利用律提高很多。强烈建议有问题要讨论，或者要问问题的朋友，通过email交流，这样既节约自己的时间，也节约他人的生命。</p>

<p>因为很多东西，自己多花时间去学习研究，是百益而无一害的。国外都喜欢邮件列表或news，就是因为可以节约时间，使处理交流的事务能集中处理，效率更高。</p>

<p><b>时间不够，效率太臭</b></p>

<p>虽然事情很多，但说时间不够也是一个托词。仔细算下来，我的时间利用律太低了，效率不足。如何提高效率？Damn it, easy !</p>

<p>回想起来，正因为时间片分得太细，穿插于各种工作/任务之间，因此切换的开销很大，到最后开销大到足以影响事情的进行了。而且没有预先计划好，前松后紧，自然也是造成利用律低的一个原因。</p>

怎么办？<br />
<li>减少使用IM（QQ/MSN）的时间</li>
<li>尽量使用Email/电话通信，电话注意言简意赅</li>
<li>尽量在前一天就安排好第二天工作，做好简单计划</li>
<li>注意时间复用，比如上qq聊天可同时维护社区</li>
<li>放弃掉一些不是非常必要的工作</li>
<li>指定好合理的开发计划，强迫自己立刻动手</li>
<li>多做少想，培养更强的紧迫感，<b>Just do it!</b></li>

<p>暂时就想到这些......</p>]]>
</content>
</entry>
<entry>
<title>linux world 2005 at guangzhou - 广州Linuxworld见闻</title>
<link rel="alternate" type="text/html" href="http://www.hzqbbc.com/blog/arch/2005/11/linux_world_200.html" />
<modified>2005-11-11T09:52:37Z</modified>
<issued>2005-11-11T09:27:14Z</issued>
<id>tag:www.hzqbbc.com,2005:/blog/1.89</id>
<created>2005-11-11T09:27:14Z</created>
<summary type="text/plain">著名的Linux world 2005居然要在广州召开，心里有一丝兴奋。早早就联系了广东省linux中心的朋友，了解了一下情况，并报了名。 11月10日一早兴冲冲的带上照相机直奔会场。可惜广州的交通总是那么让人难受，还是晚了一点到，不过幸好是9：30开始。 linux world 2005 guangzhou 在亚洲大酒店举行，地方倒是够豪华了，不知道实际的效果如何。 以下是随便照的一些照片。 几个主持人在台上商量些什么？9点多，大人物还没出场。 会议厅两边有2个大投影屏幕，屏幕前的ppmm好象是大会人员，招待宾客，可惜按快门时她动了一下，模糊了。:P...</summary>
<author>
<name>hzqbbc</name>
<url>http://www.hzqbbc.com</url>
<email>hzqbbc@hzqbbc.com</email>
</author>
<dc:subject>Misc</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hzqbbc.com/blog/">
<![CDATA[<p>著名的Linux world 2005居然要在广州召开，心里有一丝兴奋。早早就联系了广东省linux中心的朋友，了解了一下情况，并报了名。</p>

<p>11月10日一早兴冲冲的带上照相机直奔会场。可惜广州的交通总是那么让人难受，还是晚了一点到，不过幸好是9：30开始。</p>

<p>linux world 2005 guangzhou 在亚洲大酒店举行，地方倒是够豪华了，不知道实际的效果如何。</p>

<p>以下是随便照的一些照片。</p>

<p><img src="/images/linux_world2005/P1040487.jpg" /></p>

<p>几个主持人在台上商量些什么？9点多，大人物还没出场。</p>

<p><img src="/images/linux_world2005/P1040490.jpg" /></p>

<p>会议厅两边有2个大投影屏幕，屏幕前的ppmm好象是大会人员，招待宾客，可惜按快门时她动了一下，模糊了。:P</p>]]>
<![CDATA[<p><img src="/images/linux_world2005/P1040493.jpg" /></p>

<p>这个是进入大厅的签到处，人头涌涌的，而且还挺正规的，入场卡还得扫条形码</p>

<p><img src="/images/linux_world2005/P1040495.jpg" /></p>

<p>会议大厅一角，人不算多。</p>

<p><img src="/images/linux_world2005/P1040503.jpg" /></p>

<p>嘉宾的位置还是那么空空如也</p>

<p><img src="/images/linux_world2005/P1040508.jpg" /></p>

<p>linux world 的大logo，来个近照。</p>

<p><img src="/images/linux_world2005/P1040509.jpg" /></p>

<p><span class="caps">IDG </span>expo 副总裁 致辞</p>

<p><img src="/images/linux_world2005/P1040513.jpg" /></p>

<p>著名的Asia Linux，运行在IBM openpowered服务器，感觉速度很快</p>

<p><img src="/images/linux_world2005/P1040514.jpg" /></p>

<p>RedFlag的<acronym title="Data Center">DC</acronym> Server 5.0，不过感觉就是模仿win</p>

<p><img src="/images/linux_world2005/P1040515.jpg" /></p>

<p>RedFlag开发的图形化oracle安装程序，要上ora的朋友有福了，不必折腾，据说还支持ora免费版</p>

<p><img src="/images/linux_world2005/P1040516.jpg" /></p>

<p><span class="caps">IBM</span> 710 OpenPowered 2U服务器感觉就是不一样。</p>

<p><img src="/images/linux_world2005/P1040517.jpg" /></p>

<p>来个大图，支持4个scsi 热插拔，感觉少了点。</p>

<p><img src="/images/linux_world2005/P1040519.jpg" /></p>

<p>这个是这台2U机器的配置，原来配置那么强，难怪asia linux跑得飞快</p>

<p><img src="/images/linux_world2005/P1040522.jpg" /></p>

<p><span class="caps">IBM</span> 710 2U openpowered 服务器去掉外壳后的样子</p>

<p><img src="/images/linux_world2005/P1040524.jpg" /></p>

<p>尾部，带冗余电源</p>

<p><img src="/images/linux_world2005/P1040521.jpg" /></p>

<p><span class="caps">SAS </span>的展览现场</p>

<p><img src="/images/linux_world2005/P1040526.jpg" /></p>

<p>Elphel 开源的一个基于以太网监视器，感觉非常强</p>

<p><img src="/images/linux_world2005/P1040529.jpg" /></p>

<p>老外在弄现场演示，他们好象是欧洲人</p>]]>
</content>
</entry>
<entry>
<title>Bookmark system - 几个不错的书签系统</title>
<link rel="alternate" type="text/html" href="http://www.hzqbbc.com/blog/arch/2005/11/bookmark_system.html" />
<modified>2005-11-05T17:15:49Z</modified>
<issued>2005-11-05T04:29:13Z</issued>
<id>tag:www.hzqbbc.com,2005:/blog/1.88</id>
<created>2005-11-05T04:29:13Z</created>
<summary type="text/plain">作为一个严重依赖Internet和Computer的工作人员，尤其是开发者，有几个工具实在是必不可少的： Blog | 博客/网志 用于记录生活，感情，开发的日记，经验等，借用老虎庙的一句话：Blog是个人杂志 BookMark | 在线书签 用于记录各种有趣，有意义，有用的链接，信息，相当于记事本。但比记事本又功能简单一些。对于常上网的人，太有意义了。 Email Box | 邮箱/邮件系统 没有电子邮件，难以想象今天的网络沟通会是怎样。至少一个稳定可靠，速度快容量大的免费邮箱是标配，奢侈点的话可以架自己的邮件系统。 Album | 电子相册 除非不使用计算机，否则一定有大量的图片，包括自己的照片要管理，必须有一个好的电子相册来管理这些资源。 暂时就想到这些。...</summary>
<author>
<name>hzqbbc</name>
<url>http://www.hzqbbc.com</url>
<email>hzqbbc@hzqbbc.com</email>
</author>
<dc:subject>NewTech</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hzqbbc.com/blog/">
<![CDATA[<p>作为一个严重依赖Internet和Computer的工作人员，尤其是开发者，有几个工具实在是必不可少的：</p>

<ul>
<li><strong>Blog | 博客/网志 </strong></br>
用于记录生活，感情，开发的日记，经验等，借用老虎庙的一句话：Blog是个人杂志</li>
<li><strong>BookMark | 在线书签 </strong></br>
用于记录各种有趣，有意义，有用的链接，信息，相当于记事本。但比记事本又功能简单一些。对于常上网的人，太有意义了。</li>
<li><strong>Email Box | 邮箱/邮件系统 </strong></br>
没有电子邮件，难以想象今天的网络沟通会是怎样。至少一个稳定可靠，速度快容量大的免费邮箱是标配，奢侈点的话可以架自己的邮件系统。</li>
<li><strong>Album | 电子相册</strong></br>
除非不使用计算机，否则一定有大量的图片，包括自己的照片要管理，必须有一个好的电子相册来管理这些资源。</li>
</ul>

<p>暂时就想到这些。</p>]]>
<![CDATA[<p>Blog系统目前使用的是<a href="http://www.movabletype.org">MovableType (MT)</a> ，觉得足够用了。暂时没有更换的意思。</p>

<p>Mailbox，邮箱目前使用了hotmail/163.com的免费邮箱，以及自己的私人邮箱（hzqbbc.com）。前者是作为一般用途，如果私人邮箱挂了，就转用免费邮箱。私人邮箱优点就是100%自己控制，要多大有多大，不会随便拒收邮件。当然，得花时间管理。</p>

<p>Album，原来用的是一个perl写的简单个人相册系统，感觉还可以。不过迁移新机器后，没空装ImageMagic，而且觉得还是有不少缺陷，所以暂时没在使用，等待新的更好的。</p>

<p>说了那么多，这最后的书签就是今天的主角。</p>

<p>最流行的书签莫过于美味书签：<a href="http://del.icio.us">del.icio.us</a> 了，其域名就是delicious的分解。而使用del.icio.us是非常方便，很多网站都支持它，甚至浏览器也有相关的插件，甚是方便。</p>

<p>但作为自己，什么都想自己造，所以自然希望有一个可以自己建立的书签系统。到google搜索了一下，发现了几个不错的实现。</p>

<p><a href="http://sourceforge.net/projects/frassle/">http://sourceforge.net/projects/frassle/</a><br />
<a href="http://sourceforge.net/projects/scuttle">http://sourceforge.net/projects/scuttle/</a></p>

<p>前者是基于perl的实现，包含了书签和blog功能，而后者则是单纯的一个php书签系统。</p>

<p>有时间，打算装来玩玩，看哪个更好些。感觉现在创新的东西太多，新知识新信息太多，连了解都没时间，试问何来研究的时间？确实是有点郁闷了。</p>

<h4>相关链接</h4>
<a href="http://www.360doc.com/">http://www.360doc.com/</a><br />
<a href="http://del.icio.us">http://del.icio.us/&lt;?a&gt;<br />
<a href="http://www.duduwolf.com/post/183.asp">http://www.duduwolf.com/post/183.asp</a><br />
<a href="https://www.chipmark.com/">https://www.chipmark.com/ (IE/firefox 插件)</a>]]>
</content>
</entry>
<entry>
<title>SetEnv fail in Suexec - Suexec下setenv失效</title>
<link rel="alternate" type="text/html" href="http://www.hzqbbc.com/blog/arch/2005/10/setenv_fail_in.html" />
<modified>2005-10-21T06:51:42Z</modified>
<issued>2005-10-21T06:32:20Z</issued>
<id>tag:www.hzqbbc.com,2005:/blog/1.86</id>
<created>2005-10-21T06:32:20Z</created>
<summary type="text/plain"><![CDATA[有时候，最不起眼的问题却最耗时间。 早上10点多想起还没完成ExtMail的0.19 release中计划要增加的功能：per domain template ， 于是开始动手。 本来是一个非常简单的功能，几行code就搞定，利用的是Apache等webserver的SetEnv，将特定信息导入环境变量中，谁知道怪事发生了。 在httpd.conf中，有如下的配置： SetEnv EXTMAIL_TEMPLDIR &quot;/var/www/extmail/newhtml&quot; 可是在perl代码里，却死活没办法通过访问$ENV{'EXTMAIL_TEMPLDIR'}来获得这个值。...]]></summary>
<author>
<name>hzqbbc</name>
<url>http://www.hzqbbc.com</url>
<email>hzqbbc@hzqbbc.com</email>
</author>
<dc:subject>Works</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hzqbbc.com/blog/">
<![CDATA[<p>有时候，最不起眼的问题却最耗时间。</p>

<p>早上10点多想起还没完成<a href="http://extmail.org">ExtMail</a>的0.19 release中计划要增加的功能：per domain template ， 于是开始动手。</p>

<p>本来是一个非常简单的功能，几行code就搞定，利用的是Apache等webserver的SetEnv，将特定信息导入环境变量中，谁知道怪事发生了。</p>

<p>在httpd.conf中，有如下的配置：</p>



<pre>
SetEnv EXTMAIL_TEMPLDIR &quot;/var/www/extmail/newhtml&quot;
</pre>



<p>可是在perl代码里，却死活没办法通过访问$ENV{'EXTMAIL_TEMPLDIR'}来获得这个值。</p>]]>
<![CDATA[<p>开始有点怀疑是不是自己写错了，查了一下Apache的docs，看看配置指令有没问题，可又没发现问题。又在google上到处搜索，甚至搜索到了perl的beginner 的邮件列表，可是所有有关的问题都几乎是一样的答案，通过SetEnv传递环境变量。</p>

<p>后来，忽然想起自己的extmail是工作在SuExec+SELinux双重保护的环境里，会不会因为这个原因导致了自定义的环境变量被屏蔽掉？</p>

<p>于是做了一个试验，关闭了Suexec，结果就成功了。于是还是老老实实的仔细看Apache手册的env模块，才发现了根源：</p>

<p><strong>Some Caveats</strong></p>

<p>It is not possible to override or change the standard <span class="caps">CGI </span>variables using the environment manipulation directives. </p>

<p>When suexec is used to launch <span class="caps">CGI </span>scripts, the environment will be cleaned down to a set of safe variables before <span class="caps">CGI </span>scripts are launched. The list of safe variables is defined at compile-time in suexec.c. </p>

<p>For portability reasons, the names of environment variables may contain only letters, numbers, and the underscore character. In addition, the first character may not be a number. Characters which do not match this restriction will be replaced by an underscore when passed to <span class="caps">CGI </span>scripts and <span class="caps">SSI </span>pages. </p>

<p>第二段就写得很清晰，“<strong>the environment will be cleaned down to a set of safe variables before <span class="caps">CGI </span>scripts are launched.</strong>”。</p>

<p>只怪当时心切没耐着性子看，当时也没联想到Suexec的问题。</p>

<p>知道这个问题的根源以后，设计又可以继续下去</p>]]>
</content>
</entry>
<entry>
<title>Email threads algorithm - 邮件线索排序算法</title>
<link rel="alternate" type="text/html" href="http://www.hzqbbc.com/blog/arch/2005/10/email_threads_a.html" />
<modified>2005-10-20T10:42:40Z</modified>
<issued>2005-10-20T10:31:16Z</issued>
<id>tag:www.hzqbbc.com,2005:/blog/1.85</id>
<created>2005-10-20T10:31:16Z</created>
<summary type="text/plain">很早以前,一些邮件客户端,例如Netscape 等就支持邮件的线索模式，在线索模式下，可以很有条理的阅读邮件. 邮件客户端becky我曾经使用了相当长的一段时间，原因之一就是因为它支持线索模式，这样可以很方便的查看与某些朋友的邮件来往,尤其是订阅了邮件列表后，每个话题及回复都看得很清晰。 不少线索排序都是使用jwz算法. 地址: message threading...</summary>
<author>
<name>hzqbbc</name>
<url>http://www.hzqbbc.com</url>
<email>hzqbbc@hzqbbc.com</email>
</author>
<dc:subject>Works</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hzqbbc.com/blog/">
<![CDATA[<p>很早以前,一些邮件客户端,例如Netscape 等就支持邮件的线索模式，在线索模式下，可以很有条理的阅读邮件.</p>

<p>邮件客户端becky我曾经使用了相当长的一段时间，原因之一就是因为它支持线索模式，这样可以很方便的查看与某些朋友的邮件来往,尤其是订阅了邮件列表后，每个话题及回复都看得很清晰。</p>

<p>不少线索排序都是使用jwz算法. 地址: <a href="http://www.jwz.org/doc/threading.html">message threading</a></p>]]>
<![CDATA[<p>根据jwz的介绍，jwz算法相当可靠，也许在不久的将来，邮件线索排序技术将用于Extmail :-)</p>

<h4>相关的链接</h4>

<ul>
<li><a href="http://search.cpan.org/~rclamp/Mail-Thread/Thread.pm">Mail::Thread</a></li>
<li><a href="http://search.cpan.org/~spoon/Email-Thread-0.68/lib/Email/Thread.pm">Email::Thread</a></li>]]>
</content>
</entry>
<entry>
<title>Comment Spam flood - 遭遇MT Spam洪水</title>
<link rel="alternate" type="text/html" href="http://www.hzqbbc.com/blog/arch/2005/10/comment_spam_fl.html" />
<modified>2005-12-01T00:55:25Z</modified>
<issued>2005-10-09T06:37:46Z</issued>
<id>tag:www.hzqbbc.com,2005:/blog/1.83</id>
<created>2005-10-09T06:37:46Z</created>
<summary type="text/plain">有整一周没上blog里看消息了，一登陆，吓了一跳，136个comments！ 第一感觉就是Spam！ 打开评论管理一看，果然都是一些外国的留言，实质都是一些广告。 气愤之余，只好一条一条删除，但删除前，留一张截图吧，立此存照： 看样子，迟点还是得装SCode模块。...</summary>
<author>
<name>hzqbbc</name>
<url>http://www.hzqbbc.com</url>
<email>hzqbbc@hzqbbc.com</email>
</author>
<dc:subject>MovableType</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hzqbbc.com/blog/">
<![CDATA[<p>有整一周没上blog里看消息了，一登陆，吓了一跳，136个comments！ 第一感觉就是Spam！ 打开评论管理一看，果然都是一些外国的留言，实质都是一些广告。</p>

<p>气愤之余，只好一条一条删除，但删除前，留一张截图吧，立此存照：</p>

<p><img alt="mt_comment_spam.PNG" src="/blog/images/mt_comment_spam.png" width="476" height="156" border=1/></p>

<p>看样子，迟点还是得装SCode模块。</p>]]>

</content>
</entry>

</feed>