<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7419050675938962040</id><updated>2012-02-17T01:48:37.402+08:00</updated><category term='cisco configuration parser'/><category term='mobile broadband'/><category term='google app engine'/><category term='分布式计算'/><category term='系统管理'/><category term='Joomla'/><category term='python'/><category term='web'/><category term='tenjin'/><category term='template system'/><category term='Hadoop'/><category term='orm'/><category term='webpy'/><category term='ssh client'/><category term='编程'/><category term='TeraTerm Pro'/><category term='其它'/><category term='putty'/><category term='ubuntu'/><category term='监控平台 zabbix nagios'/><category term='google anylytic'/><title type='text'>NuMoOne</title><subtitle type='html'>牛魔王的Blog
Bring network to live</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://numoone.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://numoone.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>牛魔王</name><uri>http://www.blogger.com/profile/07160687335477459045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp3.blogger.com/_xLIhNmVKXbM/SD-HycyFu3I/AAAAAAAAADw/qzlpobOOhxg/S220/gnu-head-sm.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>24</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7419050675938962040.post-1083858046065433012</id><published>2009-04-10T22:56:00.003+08:00</published><updated>2009-04-10T23:14:07.129+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile broadband'/><title type='text'>Mobile Broadband --- 上网本风暴接近中</title><content type='html'>&lt;script type="text/javascript"&gt;j仅&lt;br /&gt;var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");&lt;br /&gt;document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));&lt;br /&gt;&lt;/script&gt;在国外正在流行的无线上网本风暴，很快就要在国内登录了。&lt;br /&gt;今天在某移动运营商处见到两台用来做测试的上网本，一台是Dell的，型号好象是Mini 9，另一台是方正的，没记着型号。方正的外形比较憨厚，键盘却又很娇小，敲打起来不是很舒服；而Dell的外观和手感还不错。&lt;br /&gt;在两台上网本的键盘手托处都贴有一个“mobile broadband”以及运营商自己的3G标记。据说该本本卖3千多块，包括2500的预付上网费用，折算下本本只需要900元左右。&lt;br /&gt;&lt;br /&gt;上网本本身除了都带有RJ45的有线网卡和WIFI无线网卡外，还内置了3G HSDPA高速上网卡。&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;var pageTracker = _gat._getTracker("UA-2972135-2");&lt;br /&gt;pageTracker._initData();&lt;br /&gt;pageTracker._trackPageview();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-2972135-2");
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7419050675938962040-1083858046065433012?l=numoone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://numoone.blogspot.com/feeds/1083858046065433012/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7419050675938962040&amp;postID=1083858046065433012' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/1083858046065433012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/1083858046065433012'/><link rel='alternate' type='text/html' href='http://numoone.blogspot.com/2009/04/mobile-broadband.html' title='Mobile Broadband --- 上网本风暴接近中'/><author><name>牛魔王</name><uri>http://www.blogger.com/profile/07160687335477459045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp3.blogger.com/_xLIhNmVKXbM/SD-HycyFu3I/AAAAAAAAADw/qzlpobOOhxg/S220/gnu-head-sm.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419050675938962040.post-8171902237112125444</id><published>2009-04-08T15:09:00.001+08:00</published><updated>2009-04-08T15:16:53.691+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='编程'/><category scheme='http://www.blogger.com/atom/ns#' term='系统管理'/><title type='text'>一輩子受用的 Regular Expressions -- 兼談另類的電腦學習態度 （更新）</title><content type='html'>&lt;script type="text/javascript"&gt;&lt;br /&gt;var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");&lt;br /&gt;document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));&lt;br /&gt;&lt;/script&gt;&lt;a href="http://people.ofset.org/%7Eckhung/b/gnu/regexp.php"&gt;一輩子受用的 Regular Expressions -- 兼談另類的電腦學習態度 &lt;/a&gt;是一位台湾同胞关于RE的文章，最近再次温习，发现又有&lt;a href="http://people.ofset.org/%7Eckhung/b/re/"&gt;更新&lt;/a&gt;了。&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;var pageTracker = _gat._getTracker("UA-2972135-2");&lt;br /&gt;pageTracker._initData();&lt;br /&gt;pageTracker._trackPageview();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-2972135-2");
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7419050675938962040-8171902237112125444?l=numoone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://numoone.blogspot.com/feeds/8171902237112125444/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7419050675938962040&amp;postID=8171902237112125444' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/8171902237112125444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/8171902237112125444'/><link rel='alternate' type='text/html' href='http://numoone.blogspot.com/2009/04/regular-expressions.html' title='一輩子受用的 Regular Expressions -- 兼談另類的電腦學習態度 （更新）'/><author><name>牛魔王</name><uri>http://www.blogger.com/profile/07160687335477459045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp3.blogger.com/_xLIhNmVKXbM/SD-HycyFu3I/AAAAAAAAADw/qzlpobOOhxg/S220/gnu-head-sm.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419050675938962040.post-4667221403106888348</id><published>2009-03-10T12:14:00.007+08:00</published><updated>2009-03-11T21:46:03.585+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cisco configuration parser'/><title type='text'>收集Cisco交换机配置的小工具</title><content type='html'>&lt;script type="text/javascript"&gt;由于&lt;br /&gt;var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");&lt;br /&gt;document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));&lt;/script&gt;&lt;br /&gt;前段时间做care的同事提出，在平时维护时发现以前安装调测的交换机上有很多不规范或错误的配置。这大概都是由于验收时无法去很仔细地看配置造成的。由此想到有没有一个工具可以提取交换机的配置，生成一个易读的报告？在网上用Cisco Configuration parser做keyword搜了一下，只找到一个用perl写的只能分析出交换机接口的脚本，用处不大。于是自己用Python写了一个sw_confparser，目前基本上能达到当初的目的，就差完善相关的配置模板了。&lt;br /&gt;&lt;br /&gt;脚本上传到google code的&lt;a href="http://net-mon-man.googlecode.com/"&gt;net-mon-man&lt;/a&gt;项目里了，下载在&lt;a href="http://net-mon-man.googlecode.com/files/sw_confparser-0.7.zip"&gt;这里&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;sw_confparser.py使用说明&lt;br /&gt;sw_confparser可以将交换机的配置提取出来，导入到excel或数据库里去。&lt;br /&gt;sw_confparser需要两个文件：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;cisco交换机的show running config命令的输出文本&lt;/li&gt;&lt;li&gt;以yaml格式编写的交换机配置模板。例子如下：&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt; &lt;blockquote&gt;#more c6509.yml&lt;br /&gt;&lt;br /&gt;Hostname:&lt;br /&gt; configname: [Hostname]&lt;br /&gt; pattern: hostname (.*)&lt;br /&gt;&lt;br /&gt;hardware:&lt;br /&gt; configname: [Name,description,PID,VID,SN]&lt;br /&gt; pattern: |&lt;br /&gt;     NAME: "(.*)", DESCR: "(.*)"&lt;br /&gt;     PID: (.*), VID: (.*), SN: (.*)&lt;br /&gt;&lt;br /&gt;Memory:&lt;br /&gt; configname: [Free memory,Used memory]&lt;br /&gt; pattern: cisco WS-C6509-E \(R7000\) processor \(revision 1.2\) with (.*)/(.*) bytes of memory&lt;br /&gt;&lt;br /&gt;IOS Version:&lt;br /&gt; configname: [IOS version]&lt;br /&gt; pattern: IOS \(tm\) s3223_rp Software \(s3223_rp-IPBASEK9-M\), Version (.*), RELEASE SOFTWARE \(fc3\)&lt;br /&gt;&lt;br /&gt;ROM version:&lt;br /&gt; configname: [Rom version]&lt;br /&gt; pattern: "ROM: System Bootstrap, Version (.*), RELEASE SOFTWARE"&lt;br /&gt;&lt;br /&gt;System Image:&lt;br /&gt; configname: [Image file]&lt;br /&gt; pattern: System image file is "(.*)"&lt;br /&gt;&lt;br /&gt;System Register:&lt;br /&gt; configname: [Register]&lt;br /&gt; pattern: Configuration register is (.*)&lt;br /&gt;&lt;br /&gt;Timezone:&lt;br /&gt; configname: [Timezone]&lt;br /&gt; pattern: clock timezone (.*)&lt;br /&gt;&lt;br /&gt;STP Mode:&lt;br /&gt; configname: [STP Mode]&lt;br /&gt; pattern: spanning-tree mode (.*)&lt;br /&gt;&lt;br /&gt;Log Server:&lt;br /&gt; configname: [Log Server]&lt;br /&gt; pattern: logging (\d+.\d+.\d+.\d+)&lt;br /&gt;&lt;br /&gt;Snmp Agent:&lt;br /&gt; configname: [RO string, RW string, trap-source]&lt;br /&gt; pattern: |&lt;br /&gt;     snmp-server community (\w+) RO&lt;br /&gt;     snmp-server community (\w+) RW&lt;br /&gt;     snmp-server trap-source (\w+)&lt;br /&gt;SNMP Trap Server:&lt;br /&gt; configname: [server address,server string]&lt;br /&gt; pattern: snmp-server host (\d+.\d+.\d+.\d+) (\w+)&lt;br /&gt;&lt;br /&gt;NTP server:&lt;br /&gt; configname: [server]&lt;br /&gt; pattern: ntp server (\d+.\d+.\d+.\d+)&lt;br /&gt;&lt;br /&gt;Static Route:&lt;br /&gt; configname: [dest, netmark, gateway,description]&lt;br /&gt; pattern: |&lt;br /&gt;     ip route (\d+.\d+.\d+.\d+) (\d+.\d+.\d+.\d+) (\d+.\d+.\d+.\d+) name (.*)&lt;/blockquote&gt;&lt;br /&gt;将以上两个文件作为脚本的参数执行，就可以啦。如不加任何参数则会打印出帮助信息。&lt;br /&gt;&lt;br /&gt;输出例子：&lt;br /&gt;&lt;blockquote&gt; python sw_confparser.py log/dgswtest1.log c6509.yml -c&lt;br /&gt;&lt;br /&gt;///// Parsing schema:c6509.yml...&lt;br /&gt;&lt;br /&gt;Log Server|None&lt;br /&gt;System Image|sup-bootdisk:s3223-ipbasek9-mz.122-18.SXF5.bin&lt;br /&gt;ROM version|12.2(17r)SX3&lt;br /&gt;IOS Version|12.2(18)SXF5&lt;br /&gt;Hostname|SW301&lt;br /&gt;STP Mode|pvst&lt;br /&gt;NTP server|21.17.1.15&lt;br /&gt;Timezone|Beijing 8&lt;br /&gt;System Register|0x2102&lt;br /&gt;Snmp Agent|RO string|RW string|trap-source&lt;br /&gt;Static Route|dest|netmark|gateway|description&lt;br /&gt;Static Route|0.0.0.0|0.0.0.0|121.17.70.136|TO_GnFW_Gn7_VRRP&lt;br /&gt;Static Route|10.201.55.192|255.255.255.192|10.201.147.34|TO_GZOSS&lt;br /&gt;Static Route|10.201.57.64|255.255.255.192|10.201.147.34|TO_GZWANGWEI&lt;br /&gt;Static Route|10.201.62.0|255.255.255.0|10.201.147.34|TO_ANQUANWANGGUAN&lt;br /&gt;Static Route|10.243.163.128|255.255.255.192|10.201.147.34|TO_GZOM&lt;br /&gt;Static Route|10.245.107.0|255.255.255.128|10.201.147.34|TO_SZOM&lt;br /&gt;Static Route|10.245.108.0|255.255.255.192|10.201.147.34|TO_DGSGSN_GA&lt;br /&gt;Static Route|10.245.111.0|255.255.255.192|10.201.147.34|TO-DGLAN1_LAN2-OM&lt;br /&gt;Static Route|132.119.19.0|255.255.255.0|10.201.147.34|TO_DGOM&lt;br /&gt;hardware|Name|description|PID|VID|SN&lt;br /&gt;hardware|WS-C6509-E|Cisco Systems Catalyst 6500 9-slot Chassis System|WS-C6509-E|V02|SMG1015NEF3&lt;br /&gt;hardware|WS-C6K-VTT-E 1|VTT-E FRU 1|WS-C6K-VTT-E||SMT1008J988&lt;br /&gt;hardware|WS-C6K-VTT-E 2|VTT-E FRU 2|WS-C6K-VTT-E||SMT1008A415&lt;br /&gt;hardware|WS-C6K-VTT-E 3|VTT-E FRU 3|WS-C6K-VTT-E||SMT1008J807&lt;br /&gt;hardware|CLK-7600 1|OSR-7600 Clock FRU 1|CLK-7600||SMT1005B110&lt;br /&gt;hardware|CLK-7600 2|OSR-7600 Clock FRU 2|CLK-7600||SMT1005B110&lt;br /&gt;hardware|1|WS-X6148A-GE-TX 48-port 10/100/1000 RJ45 EtherModule Rev. 1.6|WS-X6148A-GE-TX|V03|SAL1221RF94&lt;br /&gt;hardware|2|WS-X6148-RJ-45 48-port 10/100 mb RJ45 Rev. 5.1|WS-X6148-RJ-45|V01|SAL1012H0KA&lt;br /&gt;hardware|3|WS-X6148A-GE-TX 48-port 10/100/1000 RJ45 EtherModule Rev. 1.6|WS-X6148A-GE-TX|V03|SAL1221RF7G&lt;br /&gt;hardware|5|WS-SUP32-GE-3B 9 ports Supervisor Engine 32 8GE Rev. 4.2|WS-SUP32-GE-3B|V02|SAL1014HYEZ&lt;br /&gt;hardware|msfc sub-module of 5|WS-F6K-MSFC2A Cat6k MSFC 2A daughterboard Rev. 3.0|WS-F6K-MSFC2A||SAL1014HXYT&lt;br /&gt;hardware|switching engine sub-module of 5|WS-F6K-PFC3B Policy Feature Card 3 Rev. 2.1|WS-F6K-PFC3B||SAL1013H7Q1&lt;br /&gt;hardware|6|WS-SUP32-GE-3B 9 ports Supervisor Engine 32 8GE Rev. 4.2|WS-SUP32-GE-3B|V02|SAL1014J1DR&lt;br /&gt;hardware|msfc sub-module of 6|WS-F6K-MSFC2A Cat6k MSFC 2A daughterboard Rev. 3.0|WS-F6K-MSFC2A||SAL1014HXXF&lt;br /&gt;hardware|switching engine sub-module of 6|WS-F6K-PFC3B Policy Feature Card 3 Rev. 2.1|WS-F6K-PFC3B||SAL1014HX56&lt;br /&gt;hardware|WS-C6509-E-FAN 1|Enhanced 9-slot Fan Tray 1|WS-C6509-E-FAN|V02|DCH10091210&lt;br /&gt;hardware|PS 1 WS-CAC-3000W|AC power supply, 3000 watt 1|WS-CAC-3000W|V01|AZS10521F0T&lt;br /&gt;hardware|PS 2 WS-CAC-3000W|AC power supply, 3000 watt 2|WS-CAC-3000W|V01|AZS10100ASN&lt;br /&gt;Memory|Free memory|Used memory&lt;br /&gt;Memory|227328K|34816K&lt;br /&gt;SNMP Trap Server|server address|server string&lt;/blockquote&gt;这是帮助信息：&lt;br /&gt;&lt;blockquote&gt;# python sw_confparser.py&lt;br /&gt;Usage: sw_confparser.py logfile schema1 schema2 ... [options]&lt;br /&gt;&lt;br /&gt;   example: sw_confparser.py switch.log c6509.yml -vs&lt;br /&gt;&lt;br /&gt;Options:&lt;br /&gt;--version      show program's version number and exit&lt;br /&gt;-h, --help     show this help message and exit&lt;br /&gt;-d, --debug    print the debug information&lt;br /&gt;-v, --verbose  output the records and table infomation&lt;br /&gt;-s, --single   output the single records only&lt;br /&gt;-t, --table    output the table records only&lt;br /&gt;-c, --csv      output the records with csv formation&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;var pageTracker = _gat._getTracker("UA-2972135-2");pageTracker._initData();pageTracker._trackPageview();&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-2972135-2");
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7419050675938962040-4667221403106888348?l=numoone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://numoone.blogspot.com/feeds/4667221403106888348/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7419050675938962040&amp;postID=4667221403106888348' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/4667221403106888348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/4667221403106888348'/><link rel='alternate' type='text/html' href='http://numoone.blogspot.com/2009/03/cisco.html' title='收集Cisco交换机配置的小工具'/><author><name>牛魔王</name><uri>http://www.blogger.com/profile/07160687335477459045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp3.blogger.com/_xLIhNmVKXbM/SD-HycyFu3I/AAAAAAAAADw/qzlpobOOhxg/S220/gnu-head-sm.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419050675938962040.post-1528940457774802860</id><published>2008-12-25T12:03:00.002+08:00</published><updated>2008-12-25T12:09:47.805+08:00</updated><title type='text'>Sphinx---Python文档生成器</title><content type='html'>&lt;script type="text/javascript"&gt;在在&lt;br /&gt;var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");&lt;br /&gt;document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));&lt;br /&gt;&lt;/script&gt; Sphinx 是 Python 2.6 新採用的 rst 文件生成系統. 似乎非常好用. 下面是台湾的gasolin写的几篇介绍文章.&lt;br /&gt;看了一下,似乎还可以用来做网站嘛. html都不用写了...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://inet6.blogspot.com/2008/03/sphinx-2.html#links"&gt;INET6: 試玩 Sphinx 之 2&lt;/a&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;var pageTracker = _gat._getTracker("UA-2972135-2");&lt;br /&gt;pageTracker._initData();&lt;br /&gt;pageTracker._trackPageview();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-2972135-2");
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7419050675938962040-1528940457774802860?l=numoone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://numoone.blogspot.com/feeds/1528940457774802860/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7419050675938962040&amp;postID=1528940457774802860' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/1528940457774802860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/1528940457774802860'/><link rel='alternate' type='text/html' href='http://numoone.blogspot.com/2008/12/sphinx-python.html' title='Sphinx---Python文档生成器'/><author><name>牛魔王</name><uri>http://www.blogger.com/profile/07160687335477459045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp3.blogger.com/_xLIhNmVKXbM/SD-HycyFu3I/AAAAAAAAADw/qzlpobOOhxg/S220/gnu-head-sm.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419050675938962040.post-4913121982551292805</id><published>2008-12-11T21:47:00.002+08:00</published><updated>2008-12-11T22:04:34.930+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='监控平台 zabbix nagios'/><title type='text'>Zabbix研究</title><content type='html'>&lt;script type="text/javascript"&gt;最近&lt;br /&gt;var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");&lt;br /&gt;document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));&lt;br /&gt;&lt;/script&gt;最近工作上要搞一套监控系统，所以终于可以名正言顺地花时间在Nagios、Zabbix等开源监控软件上了；）&lt;br /&gt;&lt;br /&gt;一起工作的同事原来弄过Cacti，但觉得Cacti功能不能满足我们的需要，于是建议用Nagios或Zabbix，虽然我比较prefer Nagios（两年前试过Zabbix，当时问题还是挺多，在SQLite3环境下编译都过不了），但经过在网上查资料对比，最终还是选用了Zabbix。(目前Zabbix的版本为1.6.1)&lt;br /&gt;&lt;br /&gt;zabbix的主要优点：&lt;br /&gt;1. Web前端做的非常好（Nagios的硬伤）&lt;br /&gt;2. 支持分布式，与Nagios部份上下&lt;br /&gt;3. Zabbix的Agent功能非常强大，与Nagios有的一拼&lt;br /&gt;4. 自带多种绘图功能，不用象Nagios那样还要集成第三方发plugin，方便！（Nagios的绘图plugin有好几个，选择太多有时候也不是好事）&lt;br /&gt;5. 支持将几种指标做运算的功能。Nagios也能实现，但没Zabbix那么直观&lt;br /&gt;6. Trigger/Action做的比较好，能发短信、邮件。Nagios也有。&lt;br /&gt;6. 还有其它一些什么Trend，等功能，暂时还用不上。&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;var pageTracker = _gat._getTracker("UA-2972135-2");&lt;br /&gt;pageTracker._initData();&lt;br /&gt;pageTracker._trackPageview();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-2972135-2");
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7419050675938962040-4913121982551292805?l=numoone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://numoone.blogspot.com/feeds/4913121982551292805/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7419050675938962040&amp;postID=4913121982551292805' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/4913121982551292805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/4913121982551292805'/><link rel='alternate' type='text/html' href='http://numoone.blogspot.com/2008/12/zabbix.html' title='Zabbix研究'/><author><name>牛魔王</name><uri>http://www.blogger.com/profile/07160687335477459045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp3.blogger.com/_xLIhNmVKXbM/SD-HycyFu3I/AAAAAAAAADw/qzlpobOOhxg/S220/gnu-head-sm.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419050675938962040.post-4996259389005114929</id><published>2008-10-29T23:14:00.004+08:00</published><updated>2008-10-29T23:28:00.230+08:00</updated><title type='text'>抛弃Apache吧，Rock n roll with Cherokee!</title><content type='html'>&lt;script type="text/javascript"&gt;&lt;br /&gt;var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");&lt;br /&gt;document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));&lt;br /&gt;&lt;/script&gt;今天在&lt;a href="http://groups.google.com/group/web2py/browse_thread/thread/923156e75f40f397?hl=en"&gt;web2py的论坛&lt;/a&gt;上看到有人在介绍一个新的web server：&lt;a href="http://www.cherokee-project.com/"&gt;Cherokee&lt;/a&gt; 稍微看了一下，似乎真的挺不错的，除了短小精悍，无需额外的软件包，支持广泛，速度快外，最突出的就是web管理界面（用python写的）了。你可以抛开复杂难懂的conf文件啦！&lt;br /&gt;&lt;br /&gt;&lt;h2 style="font-weight: normal;" id="_why_cherokee"&gt;&lt;span style="font-size:85%;"&gt;Why Cherokee?&lt;/span&gt;&lt;/h2&gt;&lt;span style="font-size:85%;"&gt;Cherokee is high-performance web server. It is very fast, flexible and easy to configure. It offers support for the widespread technologies nowadays: FastCGI, SCGI, PHP, CGI, X-Sendfile, TLS and SSL encrypted connections, Virtual hosts, Authentication, on the fly encoding, Load balancing, Apache compatible log files, zero downtime updates and much more.&lt;/span&gt;&lt;div class="para"  style="font-family:trebuchet ms;"&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;It is highly efficient, extremely lightweight and provides rock solid stability. Among its many features there is one that deserves special credit: a user friendly interface called &lt;a href="http://www.cherokee-project.com/doc/bundle_cherokee-admin.html"&gt;cherokee-admin&lt;/a&gt; that is provided for a no-hassle configuration of every single feature of the server. This administration interface allows you to configure the web server without having to worry about editing a text file written with a certain syntax.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;var pageTracker = _gat._getTracker("UA-2972135-2");&lt;br /&gt;pageTracker._initData();&lt;br /&gt;pageTracker._trackPageview();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-2972135-2");
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7419050675938962040-4996259389005114929?l=numoone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://numoone.blogspot.com/feeds/4996259389005114929/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7419050675938962040&amp;postID=4996259389005114929' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/4996259389005114929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/4996259389005114929'/><link rel='alternate' type='text/html' href='http://numoone.blogspot.com/2008/10/apacherock-n-roll-with-cherokee.html' title='抛弃Apache吧，Rock n roll with Cherokee!'/><author><name>牛魔王</name><uri>http://www.blogger.com/profile/07160687335477459045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp3.blogger.com/_xLIhNmVKXbM/SD-HycyFu3I/AAAAAAAAADw/qzlpobOOhxg/S220/gnu-head-sm.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419050675938962040.post-2447238254088208932</id><published>2008-08-23T23:40:00.002+08:00</published><updated>2008-08-24T00:50:05.349+08:00</updated><title type='text'>轻量级的BBS: PunBB</title><content type='html'>&lt;h3&gt;PunBB 是什么？&lt;/h3&gt; &lt;p&gt; 有必要先将 PunBB 简要介绍一下。在&lt;a href="http://punbb.informer.com/docs/about.html" title="Official PunBB documentation" target="_blank" rel="nofollow"&gt;官方的文档&lt;/a&gt;中是这样介绍的：PunBB 是一个用 php 语言开发的非常快速并且轻量级的论坛程序，遵照 GNU &lt;a href="http://www.gnu.org/licenses/gpl.html" title="read the fulltext of GNU General Public License" target="_blank" rel="nofollow"&gt;通用公共许可&lt;/a&gt;发行。&lt;/p&gt; &lt;p align="center"&gt;&lt;img style="margin: 0px;" src="http://www.joomlagate.com/images/stories/article/newbie/2008newbie/PunBB-logo.png" alt="PunBB is  a fast and lightweight PHP powered discussion board" title="PunBB is  a fast and lightweight PHP powered discussion board" align="absbottom" height="112" width="226" /&gt; &lt;/p&gt; &lt;p&gt;开发 PunBB 的初衷就是要得到一个速度最快的论坛程序，这一点已经实现了。PunBB 最大的特点就是快,几乎很少有论坛程序的速度能超过它。为了达到“快”的目的，PunBB很少使用图片按钮，尽可能使用文字链接。同时，它的功能也没有 &lt;a href="http://www.phpbb.com/" target="_blank" title="visit homepage of open source forum program phpBB" rel="nofollow"&gt;phpBB&lt;/a&gt; 等大型论坛程序那么丰富。&lt;/p&gt;&lt;h3&gt;为什么选用 PunBB?&lt;/h3&gt; &lt;p&gt; Agora 的开发者选择 PunBB 的理由与其他 PunBB fans 是一样的：快速、简洁。因为功能相对简单，因此管理界面也很清晰，容易掌握；同时 PunBB 从一开始就做到输出符合 &lt;a href="http://www.w3.org/" title="The World Wide Web Consortium (W3C) " target="_blank" rel="nofollow"&gt;W3C&lt;/a&gt; 标准的 HTML 代码。&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;PunBB的安装&lt;/h3&gt;在PunBB的主页上下载，安装包只有163KB！我喜欢简单的东西！&lt;br /&gt;PunBB的安装非常简单，以下是具体的步骤（假设你系统上已装好了LAMP）：&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;下载punbb的安装包&lt;/li&gt;&lt;li&gt;解压&lt;/li&gt;&lt;li&gt;将upload目录拷贝到apache 的文档目录下并更名为forums。(/var/www/forums)&lt;/li&gt;&lt;li&gt;在MySQL里为PunBB设置数据库名，用户名及密码&lt;/li&gt;&lt;li&gt;修改PunBB以下目录的owner以便于数据的修改&lt;/li&gt;&lt;li&gt;重启Apache&lt;/li&gt;&lt;li&gt;访问&lt;a href="http://localhost/forums" class="external free" title="http://localhost/forums" rel="nofollow"&gt;http://localhost/forums&lt;/a&gt;，点击index.php进行初始设置&lt;/li&gt;&lt;li&gt;设置完成后，将系统提供的config.php脚本upload到论坛的根目录下(/var/www/forums)&lt;/li&gt;&lt;li&gt;大功告成！请访问&lt;a href="http://localhost/forums" class="external free" title="http://localhost/forums" rel="nofollow"&gt;http://localhost/forums&lt;/a&gt;开始使用你的论坛吧！&lt;/li&gt;&lt;/ol&gt;&lt;a href="http://wiki.ubuntu.org.cn/UbuntuHelp:PunBB"&gt;这里&lt;/a&gt;是ubuntu wiki上一篇关于PunBB安装的指引。&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-2972135-2");
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7419050675938962040-2447238254088208932?l=numoone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://numoone.blogspot.com/feeds/2447238254088208932/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7419050675938962040&amp;postID=2447238254088208932' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/2447238254088208932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/2447238254088208932'/><link rel='alternate' type='text/html' href='http://numoone.blogspot.com/2008/08/bbs-punbb.html' title='轻量级的BBS: PunBB'/><author><name>牛魔王</name><uri>http://www.blogger.com/profile/07160687335477459045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp3.blogger.com/_xLIhNmVKXbM/SD-HycyFu3I/AAAAAAAAADw/qzlpobOOhxg/S220/gnu-head-sm.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419050675938962040.post-8711890630618141586</id><published>2008-08-23T23:00:00.002+08:00</published><updated>2008-08-23T23:04:59.685+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Joomla'/><title type='text'>关于Joomla的一些资源</title><content type='html'>&lt;a href="http://www.joomlagate.com"&gt;Joomla!之门&lt;/a&gt;，中文Joomla!用户的门户网站。有很多讲基本知识的文章，很好！&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.autoit.cn"&gt;AutoIT&lt;/a&gt;，开始我还以为是关于如何使用autoit这个软件。这个网站本身很明显就是用Joomla建的，有很多关于使用Joomla的技巧。&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-2972135-2");
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7419050675938962040-8711890630618141586?l=numoone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://numoone.blogspot.com/feeds/8711890630618141586/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7419050675938962040&amp;postID=8711890630618141586' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/8711890630618141586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/8711890630618141586'/><link rel='alternate' type='text/html' href='http://numoone.blogspot.com/2008/08/joomla_23.html' title='关于Joomla的一些资源'/><author><name>牛魔王</name><uri>http://www.blogger.com/profile/07160687335477459045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp3.blogger.com/_xLIhNmVKXbM/SD-HycyFu3I/AAAAAAAAADw/qzlpobOOhxg/S220/gnu-head-sm.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419050675938962040.post-475216416868840912</id><published>2008-08-23T22:22:00.000+08:00</published><updated>2008-08-23T22:24:07.068+08:00</updated><title type='text'>Joomla跟Mambo有什么区别 (ZT)</title><content type='html'>在mambo中国社区(http://bbs.mambochina.net)的&lt;a href="http://bbs.mambochina.net/viewthread.php?tid=11828"&gt;一篇帖子&lt;/a&gt;看到的：&lt;br /&gt;&lt;br /&gt;1、界面：Joomla比Mambo更精细、美观，后台管理也更方便一些。&lt;br /&gt;&lt;br /&gt;2、功能：Mambo的组件商业化既有组织又有步骤，但Joomla似乎更灵活、快捷。&lt;br /&gt;&lt;br /&gt;3、扩展性：Joomla会继续坚持开源原则，因此更有利于创新思想的消化和吸收；但Mambo的商业化管理应该会使其内核更为健壮一些。&lt;br /&gt;&lt;br /&gt;4、内核特征：由于管理模式不一样，同样是开源软件，但两者会因追求个性化而逐渐分歧，最终会导致目前的兼容组件分化和分裂。&lt;br /&gt;&lt;br /&gt;从现在来看，两者外表上还是孪生姊妹，但是主导思想的不同会最终导致界面和功能的差异，并最终导致应用群体的分化。我个人的观点和判断是Mambo的主核最终会确定固定的用户目标并迎合商业化，而Joomla会一如既往地迎合品位型大众。&lt;br /&gt;&lt;br /&gt;5、更新速度：Joomla的初期开发速度令人咂舌，但其稳定性较差。个人觉得1.5是个考验，既考验其稳定性，也考验其性能和健壮度。&lt;br /&gt;&lt;br /&gt;6、未来：最令人关注的是Joomla1.5是否能把CMS与OS拉得更近，这决定Joomla能否在Mambo的CMS界面与功能已经几乎臻于完美时， 以开源技术将CMS点化为WEB-OS，赋予CMS更慎密的安全之门与更强壮地接纳第三方组件的能力。Mambo自Joomla诞生后的各个版本中，似乎 雷声大、雨点小，与Joomla的快速成长相比，显得逶迤不前。&lt;br /&gt;&lt;br /&gt;两者之间，更愿意选择Joomla，因为其OS思想更能迎合WEB的发展，面向对象似乎也更突出，有利于第三方组件的进入。只是更期待其API、Group和Communities性能的加强。&lt;br /&gt;&lt;br /&gt;7、用户：就像你和我，我们都被迫在Mambo和Joomla中作出选择。因此最希望两者能维持现在的共生与兼容状况。目前很多用户在根据组件选择M还是J？不太清楚，反正我是这样，界面、速度和组件，这是首先要考虑的。&lt;br /&gt;&lt;br /&gt;8、组件商：不妙的是，Joomla的组件商们似乎并不愿意这样做，我们逐渐发现很多Joomla的组件在微笑着和Mambo说再见，从css和 index.php开始，步行渐远。一旦Joomla的API成熟，不敢说这些组件商的立场会站在那一边。倒是希望他们中立，呵呵，那样我们便可以多点儿 选择的自由。&lt;br /&gt;&lt;br /&gt;9、风险：从1.10看起来Joomla已经度过稳定期，因此使用的风险已经不大。&lt;br /&gt;&lt;br /&gt;更多的不同之处，请参考Joomla论坛：&lt;br /&gt;&lt;br /&gt;接触M/J时间不长，与其说是回答问题，倒不如说是整理、回顾了一下学习过程。请大家指正。&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-2972135-2");
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7419050675938962040-475216416868840912?l=numoone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://numoone.blogspot.com/feeds/475216416868840912/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7419050675938962040&amp;postID=475216416868840912' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/475216416868840912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/475216416868840912'/><link rel='alternate' type='text/html' href='http://numoone.blogspot.com/2008/08/joomlamambo-zt.html' title='Joomla跟Mambo有什么区别 (ZT)'/><author><name>牛魔王</name><uri>http://www.blogger.com/profile/07160687335477459045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp3.blogger.com/_xLIhNmVKXbM/SD-HycyFu3I/AAAAAAAAADw/qzlpobOOhxg/S220/gnu-head-sm.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419050675938962040.post-5713320679038109356</id><published>2008-08-23T21:54:00.003+08:00</published><updated>2008-08-23T22:19:59.455+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Joomla'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Joomla的安装</title><content type='html'>Joomla的安装非常容易，Ubuntu wiki的一篇文章&lt;a href="http://wiki.ubuntu.org.cn/Joomla#Joomla.21"&gt;Joomla&lt;/a&gt;讲的比较详细，可以参考。在我的6.06上花了约20分钟就安装好了。（我的系统上LAMP在之前已经安装过了）。以下是需要注意的几个地方：&lt;br /&gt;&lt;br /&gt;- 在/var/www/下为Joomla建的目录需要将其owner改为www-data，否则在安装完后需要手动将configuration.php文件上传到server上。并且在对一些系统配置进行设置时会因为没有write权限而出错。（比如修改模板等）&lt;br /&gt;- 在安装完成后一定要将installation目录删除！否则别人正好访问你的网站就可以进行修改！&lt;br /&gt;- 网站管理员的用户名是admin。开始我以为是输入在安装时输入的email地址，试了半天总是出错！：（&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-2972135-2");
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7419050675938962040-5713320679038109356?l=numoone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://numoone.blogspot.com/feeds/5713320679038109356/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7419050675938962040&amp;postID=5713320679038109356' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/5713320679038109356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/5713320679038109356'/><link rel='alternate' type='text/html' href='http://numoone.blogspot.com/2008/08/joomla.html' title='Joomla的安装'/><author><name>牛魔王</name><uri>http://www.blogger.com/profile/07160687335477459045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp3.blogger.com/_xLIhNmVKXbM/SD-HycyFu3I/AAAAAAAAADw/qzlpobOOhxg/S220/gnu-head-sm.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419050675938962040.post-3712949743690546106</id><published>2008-08-08T16:43:00.003+08:00</published><updated>2008-12-25T12:11:59.946+08:00</updated><title type='text'>一行命令统计你使用频率最高的十个命令(Linux)</title><content type='html'>&lt;span class="postbody"&gt;&lt;blockquote&gt;history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10&lt;/blockquote&gt;&lt;br /&gt;Cool吧？！Linux/Unix就是这么奥妙无穷！；）&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");&lt;br /&gt;document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;var pageTracker = _gat._getTracker("UA-2972135-2");&lt;br /&gt;pageTracker._initData();&lt;br /&gt;pageTracker._trackPageview();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-2972135-2");
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7419050675938962040-3712949743690546106?l=numoone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://numoone.blogspot.com/feeds/3712949743690546106/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7419050675938962040&amp;postID=3712949743690546106' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/3712949743690546106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/3712949743690546106'/><link rel='alternate' type='text/html' href='http://numoone.blogspot.com/2008/08/linux.html' title='一行命令统计你使用频率最高的十个命令(Linux)'/><author><name>牛魔王</name><uri>http://www.blogger.com/profile/07160687335477459045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp3.blogger.com/_xLIhNmVKXbM/SD-HycyFu3I/AAAAAAAAADw/qzlpobOOhxg/S220/gnu-head-sm.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419050675938962040.post-6222870475369480498</id><published>2008-08-05T18:17:00.002+08:00</published><updated>2009-04-08T15:17:50.535+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='编程'/><title type='text'>各种编程软件介绍（ZT）</title><content type='html'>&lt;script type="text/javascript"&gt;&lt;br /&gt;var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");&lt;br /&gt;document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));&lt;br /&gt;&lt;/script&gt;以下文章来自 &lt;a href="http://hyry.dip.jp/blogt.py"&gt;HYRY Blog&lt;/a&gt;。&lt;br /&gt;&lt;div&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;本文将介绍10多种不同的程序设计语言，以及如何下载它们的免费的编译器。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;20年后，我们用什么样的语言？也许现 在谁都不好 回答，20年前的程序员们会告诉你用汇编吧，今天人们也许会告诉你用c语言（c++?)吧。那么20年后呢，也许不是c语言了吧。下面都是所谓的非主流语 言，不过它们的设计思想、所能够完成的功能，绝对不比c语言差。也许将来它们会成为主流，也许不会，可是不管怎样，它们都有自己的闪光之处。&lt;/p&gt;&lt;h3&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;Prolog&lt;/strong&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;人工智能领域常用的语言，开发自然语言分析，专家系统，以及所有和智能有关的程序，都非常拿手。可以到我的主页来学习这门语言 http://cdtzx.swiki.net&lt;/p&gt; &lt;p&gt;----visual prolog&lt;br /&gt;&lt;a href="http://www.visual-prolog.com/"&gt;www.visual-prolog.com&lt;/a&gt;&lt;br /&gt;顾名思义，这是一个可以制作界面的Prolog，有试用版本下载，大概20M左右。这个prolog版本需要对谓词以及数据进行声明，就像C语言一样。因此在使用的时候比较复杂，不过更加适合编制较大的程序。编译出来的程序可以直接运行。&lt;/p&gt;&lt;p&gt;----amzi prolog&lt;br /&gt;&lt;a href="http://www.amzi.com/"&gt;www.amzi.com&lt;/a&gt;&lt;br /&gt;这 个prolog版本包含解释器、编译器，不过编译出来的程序不能够直接运行，需要运行器运行。可以很方便的和其它语言（例如visual basic，java，C，CGI）连接，开发智能程序。解释器的运行效率较低。它所说使用的语法体系和visual prolog不同，程序需要进行适当的修改才能够在visual prolog中运行。&lt;/p&gt;&lt;p&gt;----SWI-Prolog&lt;br /&gt;&lt;a href="http://www.swi.psy.uva.nl/projects/SWI-Prolog/"&gt;http://www.swi.psy.uva.nl/projects/SWI-Prolog/&lt;/a&gt;&lt;br /&gt;我 没有怎么使用过这个版本的prolog解释器，不过它的运行速度要比amzi prolog的解释器快，和amzi的编译之后的程序差不多快，如果下载图形软件包XPCE的话，还可以开发有界面的程序。它的语法和amzi prolog相同，程序可以通用，不过内部谓词有些不同，有时候需要修改一下。&lt;/p&gt;&lt;p&gt;----Turbo prolog&lt;br /&gt;&lt;a href="http://magicpage.myetang.com/"&gt;http://magicpage.myetang.com/&lt;/a&gt;&lt;br /&gt;Dos版本的prolog，有开发界面，可以编译成可执行文件，语法和visual-prolog相同，不过内部谓词有许多出入。&lt;/p&gt;&lt;p&gt;----B prolog&lt;br /&gt;&lt;a href="http://www.cad.mse.kyutech.ac.jp/people/zhou/index.html"&gt;http://www.cad.mse.kyutech.ac.jp/people/zhou/index.html&lt;/a&gt;&lt;br /&gt;好 像是中国人开发的prolog软件，据说比其它的prolog运算速度都要快，我曾经在linux下面使用过这个prolog，也有window版的，不 过没有什么集成开发环境。语法和其它的几个都不太相同，需要适当的修改程序才能够在此环境下运行。此prolog提供了许多测试速度的解谜题的程序,这个 版本的prolog支持constraint程序设计。&lt;/p&gt;&lt;p&gt;----strawberry prolog&lt;br /&gt;&lt;a href="http://www.dobrev.com/"&gt;http://www.dobrev.com&lt;/a&gt;&lt;br /&gt;1兆的容量，包括完整的开发界面，帮助，例程，提供了几个棋类游戏的源程序。可以直接开发有界面的prolog程序，共享版不能够编译，就解释执行吧&lt;/p&gt;&lt;p&gt;----Sicstus Prolog&lt;br /&gt;&lt;a href="http://www.sics.se/sicstus/"&gt;http://www.sics.se/sicstus/&lt;/a&gt;&lt;br /&gt;Sicstus Prolog无疑是Prolog版本中最出色的，虽然它并不是免费软件，但是可以下载到有时间限制的试用版本，而且只要修改时间也可以无限期的使用下去 （过期之后修改时间也不会有问题）。它语法与amzi prolog类似，都属于ISO标准，内部胃词丰富，提供了丰富的库，例如集合、图、带权图等等。支持unix和windows等各种操作系统平台。支持 constraint程序设计。&lt;/p&gt;&lt;p&gt;---EZY Prolog&lt;br /&gt;&lt;a href="http://www.ezy-software.com/"&gt;http://www.ezy-software.com/&lt;/a&gt;&lt;br /&gt;visual prolog开发的一个有趣的prolog解释器，和visual prolog一样，可以直观的设计界面，并且有支持老trubo prolog程序的模式，如果你手头上有很老的turbo prolog源程序，又不想修改的话，可以看看。&lt;/p&gt;&lt;h3&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;Lisp&lt;/strong&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;人工智能语言的老大哥。语言格式只有一个形式：列表，所以也叫做表处理语言，这可不是一般的表，是可以包容任意结构的表，有了它，你还用c语言来写链表，二叉树的程序么？学习数据结构不妨使用lisp，让你更加关心算法，而不是数据如何在计算机内部表达。 &lt;/p&gt;&lt;p&gt;----xemacs&lt;br /&gt;&lt;a href="http://www.xemacs.org/"&gt;www.xemacs.org&lt;/a&gt;&lt;br /&gt;与著名的guns emacs编辑器的起名，并且界面更加友善，内带emacs lisp, 和许多使用lisp编写的工具软件，例如calc, 是一个功能强大的计算器，支持符号运算，有全部的源程序，如果能够好好研究这些源程序，收获一定不小。&lt;/p&gt;&lt;p&gt;----Allegro CL&lt;br /&gt;common lisp&lt;br /&gt;&lt;a href="http://www.franz.com/"&gt;http://www.franz.com&lt;/a&gt;, windows下的common lisp集成开发环境， 60天试用。&lt;/p&gt;&lt;p&gt;----lisp work&lt;br /&gt;common lisp&lt;br /&gt;&lt;a href="http://www.xanalys.com/"&gt;http://www.xanalys.com/&lt;/a&gt; 无限期使用，没有任何功能限制&lt;/p&gt;&lt;p&gt;----corman lisp&lt;br /&gt;&lt;a href="http://www.cormanlisp.com/"&gt;http://www.cormanlisp.com&lt;/a&gt;&lt;br /&gt;完全免费&lt;/p&gt;&lt;h3&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;Scheme&lt;/strong&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;这是lisp的一种方言，比lisp更加标准化。&lt;br /&gt;&lt;/p&gt;&lt;a href="http://mitpress.mit.edu/sicp/"&gt;http://mitpress.mit.edu/sicp/&lt;/a&gt;&lt;br /&gt;这里有一本非常好的介绍编程技术的书，使用的语言是lisp/scheme。在这里还可以下载到Scheme的解释器，基本上是模仿emacs作的。 &lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.drscheme.org/"&gt;http://www.drscheme.org/&lt;/a&gt;&lt;br /&gt;DrScheme是一个Scheme语言的交互式的集成开发环境。非常适合于教学使用。支持多种语言级别（初级、中级、高级等等），有丰富的界面库，支持TCP/IP。内带详细的帮助和教程。&lt;/p&gt;&lt;h3&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;functional language&lt;/strong&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;这 是一类语言，叫做函数型程序设计语言。是一种非常高级的语言。一种基于λ演算和在70年代后期才发展起来的新语言类型。大多数程序设计语言明显地规定要执 行操作的次序。次序的详细规定是很需要的,因为语言的语句对程序的变量有"作用",如果改变这些作用的次序,就可以改变产生的最后值。但是函数型语言却没 有这种性质。在这个意义上,函数型语言能建立可计算性的数学公式模型。让我们来看一个简单的例子：&lt;br /&gt;&lt;/p&gt;qsort :: [a] -&gt; [a] | Ord a&lt;br /&gt;qsort [] = []&lt;br /&gt;qsort [a:xs] = qsort [x \\ x&lt;-xs | x=a] &lt;p&gt; &lt;/p&gt;&lt;p&gt;这段程序就是快速排序的代码，你看有多么简洁，并且它的这个qsort可以对任何类型的数据进行排序（只要这种数据可以比较大小）。想读懂上面的程序么？那么下载下面的clean, 或者haskell，好好研究吧，祝你有新的发现。&lt;/p&gt;&lt;p&gt;----clean&lt;br /&gt;&lt;a href="http://www.cs.kun.nl/%7Eclean/"&gt;http://www.cs.kun.nl/~clean/&lt;/a&gt;&lt;br /&gt;并行的函数型语言，可以把源程序编译成exe文件，带有丰富的库，从tcp/ip, 到界面设计，到游戏开发，无一不全。&lt;/p&gt;&lt;p&gt;----haskell&lt;br /&gt;&lt;a href="http://www.haskell.org/hugs/"&gt;http://www.haskell.org/hugs/&lt;/a&gt;&lt;br /&gt;hugs是haskell的免费编译器，语法和clean相似，不过是解释执行，因此易于学习。&lt;/p&gt;&lt;p&gt;---caml&lt;br /&gt;&lt;a href="http://caml.inria.fr/"&gt;http://caml.inria.fr/&lt;/a&gt;&lt;br /&gt;又一个函数型语言。&lt;/p&gt;&lt;h3&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;mozart oz&lt;/strong&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;a href="http://www.mozart-oz.org/"&gt;www.mozart-oz.org&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;mozart oz 是具有魔力的语言。它融合了目前几种流行的程序设计思想，我们叫它多范式语言。它是面向对象的语言，它是函数型的语言，它是约束逻辑 (constraint)的语言，它是并发式的语言，它还是分布式的语言，几句话很难概括它的功能。最好去它的网站看看吧，下载一个慢慢研究？&lt;br /&gt;他使用emacs作为开发界面，因此如果你想在windows下使用本语言，首先需要安装emacs for windows（也可以在mozart的网上找到，也可以去&lt;a href="http://www.gnus.org/"&gt;www.gnus.org&lt;/a&gt;去找，也可以安装xemacs）, 如果你安装了emacs 那么你也就同时获得了emacs lisp, 呵呵，收获不小。&lt;br /&gt;为了提起您的兴趣，请思考如下的问题如何编程解决，然后你可以在mozart中找到惊人简单的解决方案。&lt;br /&gt;15个人每天出去玩，每天分为5组，每组3人，玩一个星期，使得任何两个人都曾经在一组中玩过，你如何安排？ &lt;h3&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;J&lt;/strong&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;a href="http://www.jsoftware.com/"&gt;www.jsoftware.com&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;不 要和java搞混淆了。它是一种面向阵列的语言，也就是说矢量，矩阵，以及高次数组都是它的最基本的数据类型，J中引入了大批量的运算符，以及独特的算式 分析方法，大幅度的扩展了数学算式的表达能力。 例如如果你要算从1加到100， 用c怎么做？ J的程序是：+/i.100 对，就这么短，一个表达式解决了问题，事实上，使用表达式编写出来的程序异常简洁，虽然初看上去很难读懂，一旦掌握了J语言，你就会发现，原来你可以用只 有c语言1/20的字符表达同样的功能。 &lt;h3&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;forth&lt;/strong&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;a href="http://www.forth.org/compilers.html"&gt;http://www.forth.org/compilers.html&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;forth是一种可扩展的，交互式的语言。最初为小型的嵌入式电脑设计的，现在它几乎可以在任何主流的芯片上运行。 在电子表格，专家系统， 多用户数据库，和分布式实时控制系统中有广泛的应用。&lt;br /&gt;表 面来看，forth是一种基于堆栈的概念机。例如如果要计算 (3+4)*5 ,我们的程序就是：3 4 + 5 * . 首先把3和4入堆栈，然后调用+子程序，+把堆栈的最顶上两个元素取出（也就是3和4）进行加法运算，然后把结果入堆栈，然后把5入堆栈，然后调用*子程 序，把最顶的2个元素，也就是7和5取出，并进行乘法运算，然后把结果入堆栈，最后的.把结果从堆栈中取出。 事实上这是一种简单有效的概念机。当然forth远远不止这些，它有什么样的功能，就由你去发掘了。 &lt;h3&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;Logo&lt;/strong&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;被称为最佳的启蒙语言，事实上它的功能远远不止启蒙这么简单。一切别的语言能够完成的它也能够完成，只是更加简洁一些，通常logo是使用lisp编写的，我们就可以想象它的高度灵活性了。&lt;br /&gt;&lt;/p&gt;----MSWlogo&lt;br /&gt;&lt;a href="http://www.softronix.com/"&gt;http://www.softronix.com/&lt;/a&gt;&lt;br /&gt;这个网站还有个逻辑数字电路模拟的软件，很有意思，再也不用为什么触发器 门电路之类的发愁了。 &lt;p&gt;----StarLogo&lt;br /&gt;&lt;a href="http://www.media.mit.edu/starlogo"&gt;http://www.media.mit.edu/starlogo&lt;/a&gt;&lt;br /&gt;starlogo的网站如是说：&lt;br /&gt;StarLogo是一个可以编程的建模环境，用来研究分散系统的运行机制。所谓分散系统是指：没有组织者而组织，没有协调者而协调的系统。使用StarLogo你可以对许多现实世界中的现象进行建模并且观察研究，例如鸟群、交通、蚂蚁以及市场经济。&lt;br /&gt;StarLogo是一种特殊的Logo语言，和传统的Logo语言一样，你可以通过向海龟发命令来作图。除此之外，Starlogo容许你并行的控制上千个海龟，并且为这些海龟设定不同的行为模式。StarLogo非常适合于研究人工生命。&lt;/p&gt;&lt;p&gt;---NetLogo&lt;br /&gt;&lt;a href="http://ccl.northwestern.edu/netlogo/"&gt;http://ccl.northwestern.edu/netlogo/&lt;/a&gt;&lt;br /&gt;和starLogo属于同种软件，不过感觉用起来更加方便一点，自带的模型实例就有近百个，内容包括生物、化学、物理、社会、热力学等众多方面。另外它的网站上有许多实际的模型可供下载研究，还能把你编写的模型制作成applet，这样就可以在线运行了。&lt;/p&gt;&lt;h3&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;python&lt;/strong&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;a href="http://www.python.org/"&gt;www.python.org&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;python 是一种解释型、交互式、面向对象的语言，我们经常拿它来和Tcl Perl Scheme Java来比较。它有非常清晰的语法，有模块，有类，异常处理，高级的动态数据结构。它比perl更加易学，功能更加强大。python采用动态数据结 构，也就是说变量没有数据类型，这一点和Lisp十分相似，在python中所有事物都是对象（object),字符串、函数以至于类和模块。这种面向对 象的概念和smalltalk很相似。并且自带了丰产丰富的模块库。对于初学者，python很适合于学习编程思想，而不会让读者为了繁杂的语法而头痛。 对于高级用户，python是最出色的脚本语言，它可以很容易的内嵌某个软件中，作为那个软件的扩充，例如著名的3D设计软件blender就可以使用内 嵌的python脚本语言来设计复杂动画。 &lt;h3&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;ruby&lt;/strong&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;a href="http://www.ruby-lang.org/en/"&gt;http://www.ruby-lang.org/en/&lt;/a&gt;日本人发明的类似于python的语言，不过据说它的设计上比python更加先进，纯面向对象，吸收了java, smalltalk，perl等语言的长处，可能是最新的语言之一。 &lt;/p&gt;&lt;h3&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;smalltalk&lt;/strong&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;面 向对象的程序设计语言的鼻祖，并且正在蓬勃的发展，没有过时。它是纯面向对象的语言，就连整数也是对象。开放环境也非常集成，如果感兴趣可以到一下网站下 载，绝对有耳目一新的感觉。举个例子，循环语句在smalltalk中是向一个整数对象发送消息：10 timesRepeat: [ teresa moveRight: 10 ].其中timesRepeat:为消息名称，10为接受消息的整数对象，[ teresa moveRight: 10 ].是消息的参数，这又是smalltalk强大的地方，它可以把一段程序作为参数传递给某个对象！！！ &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.squeak.org/"&gt;http://www.squeak.org/&lt;/a&gt; 这是一个非常有趣的smalltalk版本，看上去就像在你的电脑上模拟了另外一套完成的窗口系统，这里面的窗口更加利害，你甚至可以旋转它，不看不知道，看了才发现还有这么奇妙的语言，这么奇妙的开发环境。10M左右 &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cincom.com/scripts/smalltalk.dll/home.ssp"&gt;http://www.cincom.com/scripts/smalltalk.dll/home.ssp&lt;/a&gt;，这个版本比较实用，有详细的帮助，可以开发真正的windows程序。30M左右 &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.object-arts.com/"&gt;http://www.object-arts.com/&lt;/a&gt; 这里提供的免费smalltalk版本只有3M不到，如果你想先尝试一下这种语言的话，可以下载这个。 &lt;/p&gt;&lt;h3&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;Icon&lt;/strong&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;这个语言和图标没有什么关系，不要误解了。这是一种很神奇的语言，虽然目前已经有几年没有更新版本了，不过我觉得它的许多思想都是很先进的。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cs.arizona.edu/icon/"&gt;http://www.cs.arizona.edu/icon/&lt;/a&gt;&lt;br /&gt;在语法形式上与c，pascal很相似，但是功能却更加强大，以下是它的一些特点：&lt;br /&gt;Icon的表达式可以产生一系列的值，而不是一个值。&lt;br /&gt;面向目标的求值方式，可以自动的搜索正确的解答（这一点和prolog很像）&lt;br /&gt;强大的字符串处理功能&lt;br /&gt;当然，至于链表、集合、甚至词典（dictionary，也可以叫做hash表）都是它的基本数据类型。内存也是自动管理的，无需担心内存泄漏或者溢出等琐碎的问题。&lt;br /&gt;他特别适合于文本分析、文本编辑、数据格式化、人工智能、专家系统、符号运算的方面的编程。&lt;br /&gt;下面给几个简单的例子：&lt;br /&gt;every f(i to j) ---Icon&lt;br /&gt;for(k=i;k&lt;=j;k++) f(k); ---C every write(find("or",sentence)) ---输出sentence中所有子字符串or的位置&lt;/p&gt;&lt;h3&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;Graphical programming language&lt;/strong&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;这类语言很有趣，因为用它写程序不是打字，而是绘图。最著名的应该是Labview所使用的G语言了吧，不过它无法免费使用。&lt;/p&gt;&lt;p&gt;http://vvvv.meso.net/tiki-index.php&lt;br /&gt;vvvv主要应用在实时视频合成方面，它提供了一个绘图式编程环境，很有趣，而且个人使用是免费的。&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;C&lt;/strong&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;最 后我们还是回到c语言，毕竟这是目前最流行的语言，如果你不想用盗版，不想安装100多兆的垃圾（大多数初学者不可能完全使用borland c++ builder 或者visual c++的全部功能，而只是用来学习c语言本身），也不想在dos的edit样子的面孔下，使用Tc编程序，那么try下面的东东吧。3M的大小绝对值的下 载。&lt;br /&gt;&lt;/p&gt;&lt;a href="http://www.cs.virginia.edu/%7Elcc-win32/index.html"&gt;http://www.cs.virginia.edu/~lcc-win32/index.html&lt;/a&gt; &lt;p&gt;如果想下载C++的编译器，去&lt;a href="http://www.bloodshed.net/devcpp.html"&gt;http://www.bloodshed.net/devcpp.html&lt;/a&gt;看看，这个集成开发环境使用Delphi编写，C++编译器是Mingw编译系统。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;var pageTracker = _gat._getTracker("UA-2972135-2");&lt;br /&gt;pageTracker._initData();&lt;br /&gt;pageTracker._trackPageview();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-2972135-2");
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7419050675938962040-6222870475369480498?l=numoone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://numoone.blogspot.com/feeds/6222870475369480498/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7419050675938962040&amp;postID=6222870475369480498' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/6222870475369480498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/6222870475369480498'/><link rel='alternate' type='text/html' href='http://numoone.blogspot.com/2008/08/zt.html' title='各种编程软件介绍（ZT）'/><author><name>牛魔王</name><uri>http://www.blogger.com/profile/07160687335477459045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp3.blogger.com/_xLIhNmVKXbM/SD-HycyFu3I/AAAAAAAAADw/qzlpobOOhxg/S220/gnu-head-sm.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419050675938962040.post-2748375063023415917</id><published>2008-08-05T17:25:00.000+08:00</published><updated>2008-08-05T17:32:03.905+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='orm'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Storm, SQLAlchemy, and Geniusql性能测试</title><content type='html'>&lt;script type="text/javascript"&gt;&lt;br /&gt;var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");&lt;br /&gt;document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));&lt;br /&gt;&lt;/script&gt;Python orm的选择太多了，选哪个也令人头痛。在网上找到两个老外对Storm, SQLAlchemy, and Geniusql进行了很详细的性能测试。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.aminus.org/blogs/index.php/2007/08/18/storm_sqlalchemy_and_geniusql?blog=2"&gt;Storm, SQLAlchemy, and Geniusql&lt;/a&gt;&lt;br /&gt;&lt;a href="http://techspot.zzzeek.org/?p=17"&gt;Revisiting Storm, SQLAlchemy, and Geniusql&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;var pageTracker = _gat._getTracker("UA-2972135-2");&lt;br /&gt;pageTracker._initData();&lt;br /&gt;pageTracker._trackPageview();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-2972135-2");
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7419050675938962040-2748375063023415917?l=numoone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://numoone.blogspot.com/feeds/2748375063023415917/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7419050675938962040&amp;postID=2748375063023415917' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/2748375063023415917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/2748375063023415917'/><link rel='alternate' type='text/html' href='http://numoone.blogspot.com/2008/08/storm-sqlalchemy-and-geniusql.html' title='Storm, SQLAlchemy, and Geniusql性能测试'/><author><name>牛魔王</name><uri>http://www.blogger.com/profile/07160687335477459045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp3.blogger.com/_xLIhNmVKXbM/SD-HycyFu3I/AAAAAAAAADw/qzlpobOOhxg/S220/gnu-head-sm.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419050675938962040.post-6687294379496485682</id><published>2008-08-05T09:44:00.003+08:00</published><updated>2008-12-25T15:21:59.033+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TeraTerm Pro'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh client'/><category scheme='http://www.blogger.com/atom/ns#' term='putty'/><title type='text'>ssh客户端软件的选择 (一)</title><content type='html'>&lt;script type="text/javascript"&gt;&lt;br /&gt;var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");&lt;br /&gt;document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));&lt;br /&gt;&lt;/script&gt;说到Telnet/SSH的客户端，当然最好用的就是SecurtCRT，不过是商业软件，在国内大多数人用的都是cracked过的。自从下决心将一切cracked软件从我的PC上清除之后，就基本上没用过它了。因此也花了我不少时间去寻找一款好用的Free或Open source的软件。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Putty&lt;br /&gt;&lt;/span&gt;putty大概是用的最广泛的一款免费开源的ssh客户端了。&lt;br /&gt;优点：小巧，简单，功能齐全&lt;br /&gt;缺点：不支持多Tabber方式，并且对session的管理只是一个简单的列表，如果你平时需要登录的设备比较多的花，就得花时间在长长的list里面找到它。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SSH Secure Shell&lt;/span&gt;&lt;br /&gt;这个大概是最早的免费的ssh客户端。不过在3.2.9版本之后就不免费了。同putty一样，不支持tab，对session的管理要比putty好一点（在SSH secure shell里叫profile），可以以树型目录的方式来管理你的登录profile。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TeraTerm Pro&lt;/span&gt;&lt;br /&gt;这是一个日本人写的免费软件。&lt;br /&gt;优点：- 自带了一个基本的marco语言，可以编写marco完成一些自动化的工作&lt;br /&gt;             - 集成了cygwin console&lt;br /&gt;           -  有人为TeraTerm写了个Session 管理器叫LogmeTT, 运行后缩小到task tray里面, 用右键点击图标就可以选择分层次的session, 系统资源占用又小, 挺好用的.&lt;br /&gt;缺点：- 同以上一样，没有tab！&lt;br /&gt;                   - 另外, 还有一个让我不爽的地方是每次连接一断开,窗口就会自动关闭, 有时候连接意外断开时就没办法查看当时有些什么出错信息了.&lt;br /&gt;&lt;br /&gt;2008.12.3 更新, 最近发现其实TeraTerm Pro自带有一个叫collect的小应用就是模拟tab的, 还算好用.以下是截图:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xLIhNmVKXbM/SVMxx2oH6uI/AAAAAAAAAF4/65Id_K5MRY0/s1600-h/tera_collector.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 172px;" src="http://4.bp.blogspot.com/_xLIhNmVKXbM/SVMxx2oH6uI/AAAAAAAAAF4/65Id_K5MRY0/s320/tera_collector.png" alt="" id="BLOGGER_PHOTO_ID_5283621520382880482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;var pageTracker = _gat._getTracker("UA-2972135-2");&lt;br /&gt;pageTracker._initData();&lt;br /&gt;pageTracker._trackPageview();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-2972135-2");
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7419050675938962040-6687294379496485682?l=numoone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://numoone.blogspot.com/feeds/6687294379496485682/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7419050675938962040&amp;postID=6687294379496485682' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/6687294379496485682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/6687294379496485682'/><link rel='alternate' type='text/html' href='http://numoone.blogspot.com/2008/08/ssh.html' title='ssh客户端软件的选择 (一)'/><author><name>牛魔王</name><uri>http://www.blogger.com/profile/07160687335477459045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp3.blogger.com/_xLIhNmVKXbM/SD-HycyFu3I/AAAAAAAAADw/qzlpobOOhxg/S220/gnu-head-sm.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_xLIhNmVKXbM/SVMxx2oH6uI/AAAAAAAAAF4/65Id_K5MRY0/s72-c/tera_collector.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419050675938962040.post-4358233247278462984</id><published>2008-08-05T09:23:00.000+08:00</published><updated>2008-08-05T09:28:22.720+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='其它'/><title type='text'></title><content type='html'>上周下了雨之后，北京的天气好了两天，气温下降，空气清新，还可以看到蓝天白云。可今天开始，空气又变会灰蒙蒙的，城市象笼罩着在一层薄纱下面。看来北京的污染跟广州差不多了。&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");&lt;br /&gt;document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;var pageTracker = _gat._getTracker("UA-2972135-2");&lt;br /&gt;pageTracker._initData();&lt;br /&gt;pageTracker._trackPageview();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-2972135-2");
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7419050675938962040-4358233247278462984?l=numoone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://numoone.blogspot.com/feeds/4358233247278462984/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7419050675938962040&amp;postID=4358233247278462984' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/4358233247278462984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/4358233247278462984'/><link rel='alternate' type='text/html' href='http://numoone.blogspot.com/2008/08/var-gajshost-https-document.html' title=''/><author><name>牛魔王</name><uri>http://www.blogger.com/profile/07160687335477459045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp3.blogger.com/_xLIhNmVKXbM/SD-HycyFu3I/AAAAAAAAADw/qzlpobOOhxg/S220/gnu-head-sm.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419050675938962040.post-5943746039378212617</id><published>2008-07-04T13:01:00.000+08:00</published><updated>2008-07-04T14:17:08.034+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google anylytic'/><title type='text'>在blogspot上如何使用Google analytic？</title><content type='html'>&lt;p&gt;Analytics很好用，可是好像在blogspot.com上用不了。：（&lt;br /&gt;我将Analytic的代码加入到“布局”－》模板修改的html代码里面，一按保存键，系统就自动将所用的双引号转换为&amp;quote;，因此导致代码就变了。 不知道如何能解决这个问题？&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");&lt;br /&gt;document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;var pageTracker = _gat._getTracker("UA-2972135-2");&lt;br /&gt;pageTracker._initData();&lt;br /&gt;pageTracker._trackPageview();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-2972135-2");
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7419050675938962040-5943746039378212617?l=numoone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://numoone.blogspot.com/feeds/5943746039378212617/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7419050675938962040&amp;postID=5943746039378212617' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/5943746039378212617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/5943746039378212617'/><link rel='alternate' type='text/html' href='http://numoone.blogspot.com/2008/07/s-var-gajshost-https-document.html' title='在blogspot上如何使用Google analytic？'/><author><name>牛魔王</name><uri>http://www.blogger.com/profile/07160687335477459045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp3.blogger.com/_xLIhNmVKXbM/SD-HycyFu3I/AAAAAAAAADw/qzlpobOOhxg/S220/gnu-head-sm.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419050675938962040.post-3756543487858287420</id><published>2008-06-18T15:26:00.001+08:00</published><updated>2008-06-18T15:26:10.158+08:00</updated><title type='text'>EtherChannel Configuration</title><content type='html'>1. config multi interfaces at same time&lt;br&gt;&amp;nbsp; (config)# interface range fa0/21 - 24&amp;nbsp;&amp;nbsp;&amp;nbsp; ,or&amp;nbsp; fa0/21 , fa0/23&lt;br&gt;&lt;br&gt;2. before config the new setting, the old setting in those interfaces must be remove firstly. (with command &amp;#39;no&amp;#39;)&lt;br&gt; &lt;br&gt;3. there are 3 options for the channel-protocol: pagp, lacp, none&lt;br&gt;&amp;nbsp; the channel mode is depended by protocol:&lt;br&gt;&amp;nbsp;&amp;nbsp; pagp:&amp;nbsp; &amp;#39;auto&amp;#39; or &amp;#39;desirable&amp;#39;&lt;br&gt;&amp;nbsp;&amp;nbsp; lacp:&amp;nbsp; &amp;#39;active&amp;#39; or &amp;#39;passive&amp;#39;&lt;br&gt; &amp;nbsp;&amp;nbsp; None: &amp;#39;on&amp;#39;&lt;br&gt;&lt;br&gt;&amp;nbsp;Note: the port-channel interfaces with channel mode marked as &amp;#39;on&amp;#39;&amp;nbsp; will always up. &lt;br&gt;&lt;br&gt;4. commands for checking etherChannel:&lt;br&gt;&amp;nbsp;- show etherchannel summary&lt;br&gt;SwitchC#show etherchannel summary&lt;br&gt; Flags:&amp;nbsp; D - down&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; P - in port-channel&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I - stand-alone s - suspended&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; H - Hot-standby (LACP only)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; R - Layer3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; S - Layer2&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; u - unsuitable for bundling&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; U - in use&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f - failed to allocate aggregator&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d - default port&lt;br&gt;&lt;br&gt;Number of channel-groups in use: 4&lt;br&gt;Number of aggregators:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;br&gt;&lt;br&gt;Group&amp;nbsp; Port-channel&amp;nbsp; Protocol&amp;nbsp;&amp;nbsp;&amp;nbsp; Ports&lt;br&gt;------+-------------+-----------+-----------------------------------------------&lt;br&gt; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Po1(SU)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LACP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Fa0/22(Pd)&amp;nbsp; Fa0/24(P)&lt;br&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Po2(SU)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Fa0/21(Pd)&amp;nbsp; Fa0/23(P)&lt;br&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Po3(SD)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&lt;br&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Po5(SD)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&lt;br&gt;&lt;br&gt;&lt;br&gt;- show interface portchannel 1 &lt;br&gt;SwitchC#show interfaces port-channel 1 etherchannel&lt;br&gt; Port-channel1&amp;nbsp;&amp;nbsp; (Primary aggregator)&lt;br&gt;&lt;br&gt;Age of the Port-channel&amp;nbsp;&amp;nbsp; = 0d:03h:45m:04s&lt;br&gt;Logical slot/port&amp;nbsp;&amp;nbsp; = 1/0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Number of ports = 2&lt;br&gt;HotStandBy port = null&lt;br&gt;Port state&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = Port-channel Ag-Inuse&lt;br&gt; Protocol&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; LACP&lt;br&gt;&lt;br&gt;Ports in the Port-channel:&lt;br&gt;&lt;br&gt;Index&amp;nbsp;&amp;nbsp; Load&amp;nbsp;&amp;nbsp; Port&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EC state&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; No of bits&lt;br&gt;------+------+------+------------------+-----------&lt;br&gt;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Fa0/22&amp;nbsp;&amp;nbsp; Active&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;br&gt; &amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Fa0/24&amp;nbsp;&amp;nbsp; Active&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;br&gt;&lt;br&gt;Time since last port bundled:&amp;nbsp;&amp;nbsp;&amp;nbsp; 0d:00h:54m:00s&amp;nbsp;&amp;nbsp;&amp;nbsp; Fa0/24&lt;br&gt;Time since last port Un-bundled: 0d:01h:21m:08s&amp;nbsp;&amp;nbsp;&amp;nbsp; Fa0/24&lt;br&gt;&lt;br&gt;-- &lt;br&gt;Just do it!&lt;br&gt;Posted by Gmail on E61 &lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-2972135-2");
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7419050675938962040-3756543487858287420?l=numoone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://numoone.blogspot.com/feeds/3756543487858287420/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7419050675938962040&amp;postID=3756543487858287420' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/3756543487858287420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/3756543487858287420'/><link rel='alternate' type='text/html' href='http://numoone.blogspot.com/2008/06/etherchannel-configuration.html' title='EtherChannel Configuration'/><author><name>牛魔王</name><uri>http://www.blogger.com/profile/07160687335477459045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp3.blogger.com/_xLIhNmVKXbM/SD-HycyFu3I/AAAAAAAAADw/qzlpobOOhxg/S220/gnu-head-sm.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419050675938962040.post-7286658609364169385</id><published>2008-06-17T13:51:00.001+08:00</published><updated>2008-06-27T14:32:29.731+08:00</updated><title type='text'>北京第一家埃塞俄比亚餐厅</title><content type='html'>在北京兆维工业园上课,中午找饭吃的时候发现了这家餐厅，在酒仙桥将台路上。&lt;br /&gt;Have no idea if the photo can be attached..:(&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xLIhNmVKXbM/SGSJSO5KW6I/AAAAAAAAAEs/rHt19UhSTSE/s1600-h/20080617%28008%29.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_xLIhNmVKXbM/SGSJSO5KW6I/AAAAAAAAAEs/rHt19UhSTSE/s320/20080617%28008%29.jpg" alt="" id="BLOGGER_PHOTO_ID_5216445214730378146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xLIhNmVKXbM/SGSJHDn1idI/AAAAAAAAAEk/7gwX8E_OyRY/s1600-h/20080617050-1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_xLIhNmVKXbM/SGSJHDn1idI/AAAAAAAAAEk/7gwX8E_OyRY/s320/20080617050-1.jpg" alt="" id="BLOGGER_PHOTO_ID_5216445022726359506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="gmail_quote"&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xLIhNmVKXbM/SGSIE-F5huI/AAAAAAAAAEU/xkijS7rCrLU/s1600-h/20080617%28004%29.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_xLIhNmVKXbM/SGSIE-F5huI/AAAAAAAAAEU/xkijS7rCrLU/s320/20080617%28004%29.jpg" alt="" id="BLOGGER_PHOTO_ID_5216443887370471138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(136, 136, 136);"&gt;&lt;br /&gt;--&lt;br /&gt;Just do it!&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-2972135-2");
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7419050675938962040-7286658609364169385?l=numoone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://numoone.blogspot.com/feeds/7286658609364169385/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7419050675938962040&amp;postID=7286658609364169385' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/7286658609364169385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/7286658609364169385'/><link rel='alternate' type='text/html' href='http://numoone.blogspot.com/2008/06/blog-post.html' title='北京第一家埃塞俄比亚餐厅'/><author><name>牛魔王</name><uri>http://www.blogger.com/profile/07160687335477459045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp3.blogger.com/_xLIhNmVKXbM/SD-HycyFu3I/AAAAAAAAADw/qzlpobOOhxg/S220/gnu-head-sm.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_xLIhNmVKXbM/SGSJSO5KW6I/AAAAAAAAAEs/rHt19UhSTSE/s72-c/20080617%28008%29.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419050675938962040.post-4534053437482908534</id><published>2008-06-17T01:25:00.001+08:00</published><updated>2008-06-17T11:07:43.354+08:00</updated><title type='text'>mobile blog test</title><content type='html'>Hi, I post this by gmail on my Nokia E61!&lt;br /&gt;--&lt;br /&gt;Just do it!&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-2972135-2");
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7419050675938962040-4534053437482908534?l=numoone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://numoone.blogspot.com/feeds/4534053437482908534/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7419050675938962040&amp;postID=4534053437482908534' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/4534053437482908534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/4534053437482908534'/><link rel='alternate' type='text/html' href='http://numoone.blogspot.com/2008/06/mobile-blog-test.html' title='mobile blog test'/><author><name>牛魔王</name><uri>http://www.blogger.com/profile/07160687335477459045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp3.blogger.com/_xLIhNmVKXbM/SD-HycyFu3I/AAAAAAAAADw/qzlpobOOhxg/S220/gnu-head-sm.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419050675938962040.post-2067714276933915618</id><published>2008-06-17T00:21:00.000+08:00</published><updated>2008-06-17T00:35:57.337+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='分布式计算'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='Hadoop'/><title type='text'>Python与Hadoop</title><content type='html'>“Hadoop，一个全世界都在&lt;a href="http://www.hadoop.org.cn/hadoop/yahoo-hadoop-summit/" mce_href="http://www.hadoop.org.cn/hadoop/yahoo-hadoop-summit/"&gt;关注的项目&lt;/a&gt;。包括&lt;a href="http://www.google.com/intl/en/press/pressrel/20071008_ibm_univ.html" mce_href="http://www.google.com/intl/en/press/pressrel/20071008_ibm_univ.html"&gt;Google和IBM&lt;/a&gt;,&lt;a href="http://research.yahoo.com/node/1879" mce_href="http://research.yahoo.com/node/1879"&gt;Yahoo&lt;/a&gt;用Hadoop让大学来培训分布式计算的学生。IBM用其来做&lt;a href="http://www-03.ibm.com/press/us/en/pressrelease/22613.wss" mce_href="http://www-03.ibm.com/press/us/en/pressrelease/22613.wss"&gt;Cloud Computing&lt;/a&gt; 。Yahoo用它来做&lt;a href="http://developer.yahoo.com/blogs/hadoop/" mce_href="http://developer.yahoo.com/blogs/hadoop/"&gt;基础结构&lt;/a&gt;和&lt;a href="http://developer.yahoo.com/blogs/hadoop/2008/02/yahoo-worlds-largest-production-hadoop.html" mce_href="http://developer.yahoo.com/blogs/hadoop/2008/02/yahoo-worlds-largest-production-hadoop.html"&gt;Yahoo搜索&lt;/a&gt;等。”&lt;br /&gt;&lt;br /&gt;以上转贴&lt;a href="http://www.hadoop.org.cn/about/"&gt;Hadoop研究&lt;/a&gt;，一个研究讨论hadoop的中文平台。&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;&lt;a href="http://lucene.apache.org/hadoop/"&gt;Hadoop&lt;/a&gt;&lt;/span&gt;&lt;span&gt;原来是&lt;/span&gt;&lt;span&gt;Apache &lt;a href="http://lucene.apache.org/"&gt;Lucene&lt;/a&gt;&lt;/span&gt;&lt;span&gt;下的一个子项目，它最初是从&lt;/span&gt;&lt;span&gt;&lt;a href="http://lucene.apache.org/nutch/"&gt;Nutch&lt;/a&gt;&lt;/span&gt;&lt;span&gt;项目中分离出来的专门负责分布式存储以及分布式运算的项目。简单地说来，&lt;/span&gt;&lt;span&gt;Hadoop&lt;/span&gt;&lt;span&gt;是一个可以更容易开发和运行处理大规模数据的软件平台。不过Hadoop是基于Java语言的，要想让Python也能用上Hadoop，有两种方法：一是利用Jpython将python编译为java代码，另一种方式则是使用&lt;/span&gt;&lt;a href="http://hadoop.apache.org/core/docs/r0.16.0/streaming.html" mce_href="http://hadoop.apache.org/core/docs/r0.16.0/streaming.html"&gt;Hadoop Streaming&lt;/a&gt;帮 助我们用非Java的编程语言使用MapReduce，Streaming用STDIN (标准输入)和STDOUT (标准输出)来和我们编写的Map和Reduce进行数据的交换数据。任何能够使用STDIN和STDOUT都可以用来编写MapReduce程序，比如 用Python的sys.stdin和sys.stdout。&lt;/p&gt;&lt;p&gt;这篇&lt;a href="http://www.hadoop.org.cn/hadoop/hadoop-streaming/"&gt;文章&lt;/a&gt;详细介绍了使用Hadoop streaming的方法。&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-2972135-2");
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7419050675938962040-2067714276933915618?l=numoone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://numoone.blogspot.com/feeds/2067714276933915618/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7419050675938962040&amp;postID=2067714276933915618' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/2067714276933915618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/2067714276933915618'/><link rel='alternate' type='text/html' href='http://numoone.blogspot.com/2008/06/pythonhadoop.html' title='Python与Hadoop'/><author><name>牛魔王</name><uri>http://www.blogger.com/profile/07160687335477459045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp3.blogger.com/_xLIhNmVKXbM/SD-HycyFu3I/AAAAAAAAADw/qzlpobOOhxg/S220/gnu-head-sm.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419050675938962040.post-1142531740959312373</id><published>2008-06-17T00:18:00.000+08:00</published><updated>2008-06-17T01:19:32.462+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='webpy'/><category scheme='http://www.blogger.com/atom/ns#' term='template system'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Web.py模板系统的tips [2008-6-12]</title><content type='html'>在webpy的模板系统里，仅能使用由程序传过来的变量和类，以及一些基本的itorator语句，不直接支持在模板里使用python的语句。如下面webpy的模板里的range和len会被系统报错，称“range”和“len”没有被定义。对于这种情况，有人说不好，不方便；也有人说就是应该这样，表现逻辑应该和呈现逻辑就是要区分开来，不应该允许在模板中直接调用python代码。&lt;br /&gt;&lt;blockquote&gt;&amp;lt;h1&gt;$title&amp;lt;/h1&gt;&lt;br /&gt;$ for x in range(len(itemlist)): &lt;br /&gt;&amp;lt;li&gt; $x &amp;lt;/li&gt;&lt;br /&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;但是，如果以上例子能使用range和len将会带来很大的便利而并不会mix up所谓的表现逻辑和呈现逻辑。该怎么办？在webpy的论坛了，我找到了答案；）&lt;br /&gt;只要在“表现逻辑”里增加以下语句，你的“呈现逻辑”模板就再也不会报错啦！&lt;br /&gt;web.template.Template.globals['len'] = len&lt;br /&gt;web.template.Template.globals['range'] = range&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;后来又找到一个更强的用法：&lt;br /&gt;&lt;br /&gt;web.template.Template.globals['py'] = web.storify(__builtins__)&lt;br /&gt;&lt;br /&gt;这样，你就可以使用py.xxx的方式，使用python所有的语句和函数啦！&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-2972135-2");
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7419050675938962040-1142531740959312373?l=numoone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://numoone.blogspot.com/feeds/1142531740959312373/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7419050675938962040&amp;postID=1142531740959312373' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/1142531740959312373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/1142531740959312373'/><link rel='alternate' type='text/html' href='http://numoone.blogspot.com/2008/06/webpytips-2008-6-12.html' title='Web.py模板系统的tips [2008-6-12]'/><author><name>牛魔王</name><uri>http://www.blogger.com/profile/07160687335477459045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp3.blogger.com/_xLIhNmVKXbM/SD-HycyFu3I/AAAAAAAAADw/qzlpobOOhxg/S220/gnu-head-sm.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419050675938962040.post-185518434485447742</id><published>2008-06-06T10:24:00.000+08:00</published><updated>2008-06-06T10:42:58.567+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='template system'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='tenjin'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>又一个模板系统: Tenjin</title><content type='html'>在webpy的论坛上看到一个叫makoto kuwata的日本人， 介绍被他成为世界上最快的模板引擎(the fastest template engine in the world..），Tenjin。他的网站在&lt;a href="http://www.kuwata-lab.com/tenjin/"&gt;这儿&lt;/a&gt;。&lt;br /&gt;根据介绍，该引擎有多个语言版本，java，php，ruby，当然也包括python。其速度比我常用的cheetach要快大约三倍，比Django的模板系统要快9倍等，详细的测试结果可以看下面：&lt;br /&gt;&lt;br /&gt;&lt;table class="table1" summary="MacOS X 10.4 Tiger, Intel CoreDuo 1.83GHz, Memory 2GB" border="1" cellspacing="0"&gt;&lt;caption class="caption1"&gt;  MacOS X 10.4 Tiger, Intel CoreDuo 1.83GHz, Memory 2GB  &lt;/caption&gt;  &lt;tbody&gt;&lt;tr class="tr1"&gt;   &lt;th class="th1"&gt;Language&lt;/th&gt;   &lt;th class="th1"&gt;Template Engine&lt;/th&gt;   &lt;th class="th1"&gt;Test#1(sec)&lt;/th&gt;   &lt;th class="th1"&gt;Test#2(sec)&lt;/th&gt;  &lt;/tr&gt;  &lt;tr class="tr1"&gt;   &lt;td class="td1" rowspan="8"&gt;Python(2.5.1)&lt;/td&gt;   &lt;td class="td1"&gt;&lt;strong&gt;pyTenjin&lt;/strong&gt; (0.6.1)&lt;/td&gt;   &lt;td class="td1" align="right"&gt;&lt;strong&gt;6.96&lt;/strong&gt;&lt;/td&gt;   &lt;td class="td1" align="right"&gt;&lt;strong&gt;5.61&lt;/strong&gt;&lt;/td&gt;  &lt;/tr&gt;  &lt;tr class="tr1"&gt;   &lt;td class="td1"&gt;&lt;a href="http://www.cheetahtemplate.org/"&gt;Cheetah&lt;/a&gt; (2.0)&lt;/td&gt;   &lt;td class="td1" align="right"&gt;20.36&lt;/td&gt;   &lt;td class="td1" align="right"&gt;19.82&lt;/td&gt;  &lt;/tr&gt;  &lt;tr class="tr1"&gt;   &lt;td class="td1"&gt;&lt;a href="http://www.djangoproject.com/documentation/templates/"&gt;Django&lt;/a&gt; (0.9.5)&lt;/td&gt;   &lt;td class="td1" align="right"&gt;71.33&lt;/td&gt;   &lt;td class="td1" align="right"&gt;59.80&lt;/td&gt;  &lt;/tr&gt;  &lt;tr class="tr1"&gt;   &lt;td class="td1"&gt;&lt;a href="http://www.djangoproject.com/documentation/templates/"&gt;Myghty&lt;/a&gt; (1.1)&lt;/td&gt;   &lt;td class="td1" align="right"&gt;107.88&lt;/td&gt;   &lt;td class="td1" align="right"&gt;19.30&lt;/td&gt;  &lt;/tr&gt;  &lt;tr class="tr1"&gt;   &lt;td class="td1"&gt;&lt;a href="http://www.kid-templating.org/"&gt;Kid&lt;/a&gt; (0.9.6)&lt;/td&gt;   &lt;td class="td1" align="right"&gt;380.24&lt;/td&gt;   &lt;td class="td1" align="right"&gt;378.96&lt;/td&gt;  &lt;/tr&gt;  &lt;tr class="tr1"&gt;   &lt;td class="td1"&gt;&lt;a href="http://genshi.edgewall.org/"&gt;Genshi&lt;/a&gt; (0.4.4)&lt;/td&gt;   &lt;td class="td1" align="right"&gt;560.30&lt;/td&gt;   &lt;td class="td1" align="right"&gt;271.69&lt;/td&gt;  &lt;/tr&gt;  &lt;tr class="tr1"&gt;   &lt;td class="td1"&gt;&lt;a href="http://www.makotemplates.org/"&gt;Mako&lt;/a&gt; (0.1.9)&lt;/td&gt;   &lt;td class="td1" align="right"&gt;17.78&lt;/td&gt;   &lt;td class="td1" align="right"&gt;13.49&lt;/td&gt;  &lt;/tr&gt;  &lt;tr class="tr1"&gt;   &lt;td class="td1"&gt;&lt;a href="http://webpy.org/templetor"&gt;Templetor&lt;/a&gt; (web.py 0.22)&lt;/td&gt;   &lt;td class="td1" align="right"&gt;428.19&lt;/td&gt;   &lt;td class="td1" align="right"&gt;61.53&lt;/td&gt;  &lt;/tr&gt;  &lt;tr class="tr1"&gt;   &lt;td class="td1" rowspan="3"&gt;Ruby(1.8.6)&lt;/td&gt;   &lt;td class="td1"&gt;&lt;strong&gt;rbTenjin&lt;/strong&gt; (0.6.0)&lt;/td&gt;   &lt;td class="td1" align="right"&gt;&lt;strong&gt;7.34&lt;/strong&gt;&lt;/td&gt;   &lt;td class="td1" align="right"&gt;&lt;strong&gt;4.52&lt;/strong&gt;&lt;/td&gt;  &lt;/tr&gt;  &lt;tr class="tr1"&gt;   &lt;td class="td1"&gt;&lt;a href="http://modruby.net/en/index.rbx/eruby/whatis.html"&gt;eruby&lt;/a&gt; (1.0.5)&lt;/td&gt;   &lt;td class="td1" align="right"&gt;12.29&lt;/td&gt;   &lt;td class="td1" align="right"&gt;11.53&lt;/td&gt;  &lt;/tr&gt;  &lt;tr class="tr1"&gt;   &lt;td class="td1"&gt;&lt;a href="http://www.ruby-doc.org/stdlib/libdoc/erb/rdoc/"&gt;ERB&lt;/a&gt;(def_method) (Ruby1.8.6)&lt;/td&gt;   &lt;td class="td1" align="right"&gt;36.73&lt;/td&gt;   &lt;td class="td1" align="right"&gt;5.85&lt;/td&gt;  &lt;/tr&gt;  &lt;tr class="tr1"&gt;   &lt;td class="td1" rowspan="2"&gt;PHP(5.2.0)&lt;/td&gt;   &lt;td class="td1"&gt;&lt;strong&gt;phpTenjin&lt;/strong&gt; (0.0.1)&lt;/td&gt;   &lt;td class="td1" align="right"&gt;&lt;strong&gt;5.39&lt;/strong&gt;&lt;/td&gt;   &lt;td class="td1" align="right"&gt;&lt;strong&gt;3.64&lt;/strong&gt;&lt;/td&gt;  &lt;/tr&gt;  &lt;tr class="tr1"&gt;   &lt;td class="td1"&gt;&lt;a href="http://smarty.php.net/"&gt;Smarty&lt;/a&gt; (2.6.18)&lt;/td&gt;   &lt;td class="td1" align="right"&gt;10.84&lt;/td&gt;   &lt;td class="td1" align="right"&gt;10.21&lt;/td&gt;  &lt;/tr&gt;  &lt;tr class="tr1"&gt;   &lt;td class="td1" rowspan="3"&gt;Perl(5.8.8)&lt;/td&gt;   &lt;td class="td1"&gt;&lt;strong&gt;plTenjin&lt;/strong&gt; (0.0.1)&lt;/td&gt;   &lt;td class="td1" align="right"&gt;&lt;strong&gt;10.42&lt;/strong&gt;&lt;/td&gt;   &lt;td class="td1" align="right"&gt;&lt;strong&gt;5.72&lt;/strong&gt;&lt;/td&gt;  &lt;/tr&gt;  &lt;tr class="tr1"&gt;   &lt;td class="td1"&gt;&lt;a href="http://template-toolkit.org/"&gt;Template-Toolkit&lt;/a&gt;(XS) (2.18)&lt;/td&gt;   &lt;td class="td1" align="right"&gt;103.58&lt;/td&gt;   &lt;td class="td1" align="right"&gt;26.30&lt;/td&gt;  &lt;/tr&gt;  &lt;tr class="tr1"&gt;   &lt;td class="td1"&gt;&lt;a href="http://html-template.sourceforge.net/"&gt;HTML::Template&lt;/a&gt; (2.9)&lt;/td&gt;   &lt;td class="td1" align="right"&gt;46.70&lt;/td&gt;   &lt;td class="td1" align="right"&gt;30.21&lt;/td&gt;  &lt;/tr&gt;  &lt;tr class="tr1"&gt;   &lt;td class="td1"&gt;JS(spidermonkey)&lt;/td&gt;   &lt;td class="td1"&gt;&lt;strong&gt;jsTenjin&lt;/strong&gt; (0.0.1)&lt;/td&gt;   &lt;td class="td1" align="right"&gt;&lt;strong&gt;19.00&lt;/strong&gt;&lt;/td&gt;   &lt;td class="td1" align="right"&gt;&lt;strong&gt;12.98&lt;/strong&gt;&lt;/td&gt;  &lt;/tr&gt;  &lt;tr class="tr1"&gt;   &lt;td class="td1"&gt;JS(Rhino, JDK5)&lt;/td&gt;   &lt;td class="td1"&gt;&lt;strong&gt;jsTenjin&lt;/strong&gt; (0.0.1)&lt;/td&gt;   &lt;td class="td1" align="right"&gt;&lt;strong&gt;24.29&lt;/strong&gt;&lt;/td&gt;   &lt;td class="td1" align="right"&gt;&lt;strong&gt;19.15&lt;/strong&gt;&lt;/td&gt;  &lt;/tr&gt;  &lt;tr class="tr1"&gt;   &lt;td class="td1" rowspan="2"&gt;Java(JDK5)&lt;/td&gt;   &lt;td class="td1"&gt;&lt;a href="http://velocity.apache.org/"&gt;Velocity&lt;/a&gt; (1.4)&lt;/td&gt;   &lt;td class="td1" align="right"&gt;22.80&lt;/td&gt;   &lt;td class="td1" align="right"&gt;11.41&lt;/td&gt;  &lt;/tr&gt;  &lt;tr class="tr1"&gt;   &lt;td class="td1"&gt;&lt;a href="http://velocity.apache.org/"&gt;Velocity&lt;/a&gt; (1.5)&lt;/td&gt;   &lt;td class="td1" align="right"&gt;20.01&lt;/td&gt;   &lt;td class="td1" align="right"&gt;8.42&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.kuwata-lab.com/tenjin/img/fig01.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 556px; height: 483px;" src="http://www.kuwata-lab.com/tenjin/img/fig01.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-2972135-2");
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7419050675938962040-185518434485447742?l=numoone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://numoone.blogspot.com/feeds/185518434485447742/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7419050675938962040&amp;postID=185518434485447742' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/185518434485447742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/185518434485447742'/><link rel='alternate' type='text/html' href='http://numoone.blogspot.com/2008/06/tenjin.html' title='又一个模板系统: Tenjin'/><author><name>牛魔王</name><uri>http://www.blogger.com/profile/07160687335477459045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp3.blogger.com/_xLIhNmVKXbM/SD-HycyFu3I/AAAAAAAAADw/qzlpobOOhxg/S220/gnu-head-sm.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419050675938962040.post-993925895769625019</id><published>2008-06-02T14:04:00.001+08:00</published><updated>2009-04-08T15:18:37.066+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='webpy'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>简单易用的python WEB框架：web.py</title><content type='html'>正在做一个管理GPRS网元配置的小工具，打算用web来做界面。也许是用python太容易实现web应用了，用python的web框架有好多，因为只是做为界面使用，因此找一个轻量级的就可以。目前轻量级的有Karrigell和web.py。Karrigell试用了一下，还算挺方便的，但由于它可以使用多答四种类型的脚本语言，有时反而让人无所适从。后来决定用web.py。&lt;br /&gt;&lt;br /&gt;web.py用起来真是非常地简单：&lt;br /&gt;1. 首先按web.py的helloworld程序的基础架构写几行引用web的语句&lt;br /&gt;2. 列出需要用到的url与对应的处理函数名&lt;br /&gt;3. 根据以上列出的列表，编写实现相应功能的的class&lt;br /&gt;4. 运行你的程序！&lt;br /&gt;&lt;br /&gt;以下是我尝试的第一个例子：&lt;br /&gt;&lt;blockquote&gt;import web&lt;br /&gt;&lt;br /&gt;urls = ('/', 'index')&lt;br /&gt;&lt;br /&gt;class index:&lt;br /&gt; def GET(self):&lt;br /&gt;     print "Hello, world!"&lt;br /&gt;         &lt;br /&gt;if __name__ == "__main__":&lt;br /&gt; web.run(urls, globals())&lt;/blockquote&gt;&lt;br /&gt;运行后，在命令窗口会出现以下信息：&lt;br /&gt;http://0.0.0.0:8080/&lt;br /&gt;&lt;br /&gt;这时候，你打开浏览器，输入以上地址，就可以看到你的第一个web页面了！&lt;br /&gt;&lt;br /&gt;web.py的官方网站上还提供了&lt;a href="http://www.dup2.org/files/web.py%200.2%20tutorial.html"&gt;中文版的Tutorial&lt;/a&gt;，想了解更多的信息可以参考一下。&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-2972135-2");
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7419050675938962040-993925895769625019?l=numoone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://numoone.blogspot.com/feeds/993925895769625019/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7419050675938962040&amp;postID=993925895769625019' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/993925895769625019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/993925895769625019'/><link rel='alternate' type='text/html' href='http://numoone.blogspot.com/2008/06/webpyurl.html' title='简单易用的python WEB框架：web.py'/><author><name>牛魔王</name><uri>http://www.blogger.com/profile/07160687335477459045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp3.blogger.com/_xLIhNmVKXbM/SD-HycyFu3I/AAAAAAAAADw/qzlpobOOhxg/S220/gnu-head-sm.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419050675938962040.post-7389936365943357462</id><published>2008-05-30T12:24:00.000+08:00</published><updated>2008-05-30T12:39:56.745+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google app engine'/><title type='text'>Google正在朝他自己的目标一步步地前进</title><content type='html'>Google 在前阵子发布了他们最新的产品：&lt;a href="http://code.google.com/appengine/"&gt;Google App Engine&lt;/a&gt;。这是一个基于所谓“云”计算的基础平台，用户只需要专心致志在google提供的基础平台上搭建自己的网站，而无需为建设及管理服务器烦恼。&lt;br /&gt;&lt;br /&gt;Google正在朝他自己的目标一步步地前进。。&lt;br /&gt;&lt;br /&gt;Network is computing..&lt;br /&gt;&lt;br /&gt;想象一下，将来计算能力（computing）就像电力一样成为基础设施，房间里再也没有主机这个东西，取而代之的仅是一台显示器，只要插上电，就能上网写报告，买东西。。。google到时候就成为一个类似于现在电力公司的“计算力公司”。。。&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-2972135-2");
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7419050675938962040-7389936365943357462?l=numoone.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://numoone.blogspot.com/feeds/7389936365943357462/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7419050675938962040&amp;postID=7389936365943357462' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/7389936365943357462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419050675938962040/posts/default/7389936365943357462'/><link rel='alternate' type='text/html' href='http://numoone.blogspot.com/2008/05/google.html' title='Google正在朝他自己的目标一步步地前进'/><author><name>牛魔王</name><uri>http://www.blogger.com/profile/07160687335477459045</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp3.blogger.com/_xLIhNmVKXbM/SD-HycyFu3I/AAAAAAAAADw/qzlpobOOhxg/S220/gnu-head-sm.png'/></author><thr:total>0</thr:total></entry></feed>
