2009年4月10日星期五
Mobile Broadband --- 上网本风暴接近中
今天在某移动运营商处见到两台用来做测试的上网本,一台是Dell的,型号好象是Mini 9,另一台是方正的,没记着型号。方正的外形比较憨厚,键盘却又很娇小,敲打起来不是很舒服;而Dell的外观和手感还不错。
在两台上网本的键盘手托处都贴有一个“mobile broadband”以及运营商自己的3G标记。据说该本本卖3千多块,包括2500的预付上网费用,折算下本本只需要900元左右。
上网本本身除了都带有RJ45的有线网卡和WIFI无线网卡外,还内置了3G HSDPA高速上网卡。
2009年4月8日星期三
2009年3月10日星期二
收集Cisco交换机配置的小工具
前段时间做care的同事提出,在平时维护时发现以前安装调测的交换机上有很多不规范或错误的配置。这大概都是由于验收时无法去很仔细地看配置造成的。由此想到有没有一个工具可以提取交换机的配置,生成一个易读的报告?在网上用Cisco Configuration parser做keyword搜了一下,只找到一个用perl写的只能分析出交换机接口的脚本,用处不大。于是自己用Python写了一个sw_confparser,目前基本上能达到当初的目的,就差完善相关的配置模板了。
脚本上传到google code的net-mon-man项目里了,下载在这里
sw_confparser.py使用说明
sw_confparser可以将交换机的配置提取出来,导入到excel或数据库里去。
sw_confparser需要两个文件:
- cisco交换机的show running config命令的输出文本
- 以yaml格式编写的交换机配置模板。例子如下:
#more c6509.yml
Hostname:
configname: [Hostname]
pattern: hostname (.*)
hardware:
configname: [Name,description,PID,VID,SN]
pattern: |
NAME: "(.*)", DESCR: "(.*)"
PID: (.*), VID: (.*), SN: (.*)
Memory:
configname: [Free memory,Used memory]
pattern: cisco WS-C6509-E \(R7000\) processor \(revision 1.2\) with (.*)/(.*) bytes of memory
IOS Version:
configname: [IOS version]
pattern: IOS \(tm\) s3223_rp Software \(s3223_rp-IPBASEK9-M\), Version (.*), RELEASE SOFTWARE \(fc3\)
ROM version:
configname: [Rom version]
pattern: "ROM: System Bootstrap, Version (.*), RELEASE SOFTWARE"
System Image:
configname: [Image file]
pattern: System image file is "(.*)"
System Register:
configname: [Register]
pattern: Configuration register is (.*)
Timezone:
configname: [Timezone]
pattern: clock timezone (.*)
STP Mode:
configname: [STP Mode]
pattern: spanning-tree mode (.*)
Log Server:
configname: [Log Server]
pattern: logging (\d+.\d+.\d+.\d+)
Snmp Agent:
configname: [RO string, RW string, trap-source]
pattern: |
snmp-server community (\w+) RO
snmp-server community (\w+) RW
snmp-server trap-source (\w+)
SNMP Trap Server:
configname: [server address,server string]
pattern: snmp-server host (\d+.\d+.\d+.\d+) (\w+)
NTP server:
configname: [server]
pattern: ntp server (\d+.\d+.\d+.\d+)
Static Route:
configname: [dest, netmark, gateway,description]
pattern: |
ip route (\d+.\d+.\d+.\d+) (\d+.\d+.\d+.\d+) (\d+.\d+.\d+.\d+) name (.*)
将以上两个文件作为脚本的参数执行,就可以啦。如不加任何参数则会打印出帮助信息。
输出例子:
python sw_confparser.py log/dgswtest1.log c6509.yml -c这是帮助信息:
///// Parsing schema:c6509.yml...
Log Server|None
System Image|sup-bootdisk:s3223-ipbasek9-mz.122-18.SXF5.bin
ROM version|12.2(17r)SX3
IOS Version|12.2(18)SXF5
Hostname|SW301
STP Mode|pvst
NTP server|21.17.1.15
Timezone|Beijing 8
System Register|0x2102
Snmp Agent|RO string|RW string|trap-source
Static Route|dest|netmark|gateway|description
Static Route|0.0.0.0|0.0.0.0|121.17.70.136|TO_GnFW_Gn7_VRRP
Static Route|10.201.55.192|255.255.255.192|10.201.147.34|TO_GZOSS
Static Route|10.201.57.64|255.255.255.192|10.201.147.34|TO_GZWANGWEI
Static Route|10.201.62.0|255.255.255.0|10.201.147.34|TO_ANQUANWANGGUAN
Static Route|10.243.163.128|255.255.255.192|10.201.147.34|TO_GZOM
Static Route|10.245.107.0|255.255.255.128|10.201.147.34|TO_SZOM
Static Route|10.245.108.0|255.255.255.192|10.201.147.34|TO_DGSGSN_GA
Static Route|10.245.111.0|255.255.255.192|10.201.147.34|TO-DGLAN1_LAN2-OM
Static Route|132.119.19.0|255.255.255.0|10.201.147.34|TO_DGOM
hardware|Name|description|PID|VID|SN
hardware|WS-C6509-E|Cisco Systems Catalyst 6500 9-slot Chassis System|WS-C6509-E|V02|SMG1015NEF3
hardware|WS-C6K-VTT-E 1|VTT-E FRU 1|WS-C6K-VTT-E||SMT1008J988
hardware|WS-C6K-VTT-E 2|VTT-E FRU 2|WS-C6K-VTT-E||SMT1008A415
hardware|WS-C6K-VTT-E 3|VTT-E FRU 3|WS-C6K-VTT-E||SMT1008J807
hardware|CLK-7600 1|OSR-7600 Clock FRU 1|CLK-7600||SMT1005B110
hardware|CLK-7600 2|OSR-7600 Clock FRU 2|CLK-7600||SMT1005B110
hardware|1|WS-X6148A-GE-TX 48-port 10/100/1000 RJ45 EtherModule Rev. 1.6|WS-X6148A-GE-TX|V03|SAL1221RF94
hardware|2|WS-X6148-RJ-45 48-port 10/100 mb RJ45 Rev. 5.1|WS-X6148-RJ-45|V01|SAL1012H0KA
hardware|3|WS-X6148A-GE-TX 48-port 10/100/1000 RJ45 EtherModule Rev. 1.6|WS-X6148A-GE-TX|V03|SAL1221RF7G
hardware|5|WS-SUP32-GE-3B 9 ports Supervisor Engine 32 8GE Rev. 4.2|WS-SUP32-GE-3B|V02|SAL1014HYEZ
hardware|msfc sub-module of 5|WS-F6K-MSFC2A Cat6k MSFC 2A daughterboard Rev. 3.0|WS-F6K-MSFC2A||SAL1014HXYT
hardware|switching engine sub-module of 5|WS-F6K-PFC3B Policy Feature Card 3 Rev. 2.1|WS-F6K-PFC3B||SAL1013H7Q1
hardware|6|WS-SUP32-GE-3B 9 ports Supervisor Engine 32 8GE Rev. 4.2|WS-SUP32-GE-3B|V02|SAL1014J1DR
hardware|msfc sub-module of 6|WS-F6K-MSFC2A Cat6k MSFC 2A daughterboard Rev. 3.0|WS-F6K-MSFC2A||SAL1014HXXF
hardware|switching engine sub-module of 6|WS-F6K-PFC3B Policy Feature Card 3 Rev. 2.1|WS-F6K-PFC3B||SAL1014HX56
hardware|WS-C6509-E-FAN 1|Enhanced 9-slot Fan Tray 1|WS-C6509-E-FAN|V02|DCH10091210
hardware|PS 1 WS-CAC-3000W|AC power supply, 3000 watt 1|WS-CAC-3000W|V01|AZS10521F0T
hardware|PS 2 WS-CAC-3000W|AC power supply, 3000 watt 2|WS-CAC-3000W|V01|AZS10100ASN
Memory|Free memory|Used memory
Memory|227328K|34816K
SNMP Trap Server|server address|server string
# python sw_confparser.py
Usage: sw_confparser.py logfile schema1 schema2 ... [options]
example: sw_confparser.py switch.log c6509.yml -vs
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-d, --debug print the debug information
-v, --verbose output the records and table infomation
-s, --single output the single records only
-t, --table output the table records only
-c, --csv output the records with csv formation
2008年12月25日星期四
Sphinx---Python文档生成器
看了一下,似乎还可以用来做网站嘛. html都不用写了...
INET6: 試玩 Sphinx 之 2
2008年12月11日星期四
Zabbix研究
一起工作的同事原来弄过Cacti,但觉得Cacti功能不能满足我们的需要,于是建议用Nagios或Zabbix,虽然我比较prefer Nagios(两年前试过Zabbix,当时问题还是挺多,在SQLite3环境下编译都过不了),但经过在网上查资料对比,最终还是选用了Zabbix。(目前Zabbix的版本为1.6.1)
zabbix的主要优点:
1. Web前端做的非常好(Nagios的硬伤)
2. 支持分布式,与Nagios部份上下
3. Zabbix的Agent功能非常强大,与Nagios有的一拼
4. 自带多种绘图功能,不用象Nagios那样还要集成第三方发plugin,方便!(Nagios的绘图plugin有好几个,选择太多有时候也不是好事)
5. 支持将几种指标做运算的功能。Nagios也能实现,但没Zabbix那么直观
6. Trigger/Action做的比较好,能发短信、邮件。Nagios也有。
6. 还有其它一些什么Trend,等功能,暂时还用不上。
2008年10月29日星期三
抛弃Apache吧,Rock n roll with Cherokee!
Why Cherokee?
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.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 cherokee-admin 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.
2008年8月23日星期六
轻量级的BBS: PunBB
PunBB 是什么?
有必要先将 PunBB 简要介绍一下。在官方的文档中是这样介绍的:PunBB 是一个用 php 语言开发的非常快速并且轻量级的论坛程序,遵照 GNU 通用公共许可发行。
开发 PunBB 的初衷就是要得到一个速度最快的论坛程序,这一点已经实现了。PunBB 最大的特点就是快,几乎很少有论坛程序的速度能超过它。为了达到“快”的目的,PunBB很少使用图片按钮,尽可能使用文字链接。同时,它的功能也没有 phpBB 等大型论坛程序那么丰富。
为什么选用 PunBB?
Agora 的开发者选择 PunBB 的理由与其他 PunBB fans 是一样的:快速、简洁。因为功能相对简单,因此管理界面也很清晰,容易掌握;同时 PunBB 从一开始就做到输出符合 W3C 标准的 HTML 代码。
PunBB的安装
在PunBB的主页上下载,安装包只有163KB!我喜欢简单的东西!PunBB的安装非常简单,以下是具体的步骤(假设你系统上已装好了LAMP):
- 下载punbb的安装包
- 解压
- 将upload目录拷贝到apache 的文档目录下并更名为forums。(/var/www/forums)
- 在MySQL里为PunBB设置数据库名,用户名及密码
- 修改PunBB以下目录的owner以便于数据的修改
- 重启Apache
- 访问http://localhost/forums,点击index.php进行初始设置
- 设置完成后,将系统提供的config.php脚本upload到论坛的根目录下(/var/www/forums)
- 大功告成!请访问http://localhost/forums开始使用你的论坛吧!
Joomla跟Mambo有什么区别 (ZT)
1、界面:Joomla比Mambo更精细、美观,后台管理也更方便一些。
2、功能:Mambo的组件商业化既有组织又有步骤,但Joomla似乎更灵活、快捷。
3、扩展性:Joomla会继续坚持开源原则,因此更有利于创新思想的消化和吸收;但Mambo的商业化管理应该会使其内核更为健壮一些。
4、内核特征:由于管理模式不一样,同样是开源软件,但两者会因追求个性化而逐渐分歧,最终会导致目前的兼容组件分化和分裂。
从现在来看,两者外表上还是孪生姊妹,但是主导思想的不同会最终导致界面和功能的差异,并最终导致应用群体的分化。我个人的观点和判断是Mambo的主核最终会确定固定的用户目标并迎合商业化,而Joomla会一如既往地迎合品位型大众。
5、更新速度:Joomla的初期开发速度令人咂舌,但其稳定性较差。个人觉得1.5是个考验,既考验其稳定性,也考验其性能和健壮度。
6、未来:最令人关注的是Joomla1.5是否能把CMS与OS拉得更近,这决定Joomla能否在Mambo的CMS界面与功能已经几乎臻于完美时, 以开源技术将CMS点化为WEB-OS,赋予CMS更慎密的安全之门与更强壮地接纳第三方组件的能力。Mambo自Joomla诞生后的各个版本中,似乎 雷声大、雨点小,与Joomla的快速成长相比,显得逶迤不前。
两者之间,更愿意选择Joomla,因为其OS思想更能迎合WEB的发展,面向对象似乎也更突出,有利于第三方组件的进入。只是更期待其API、Group和Communities性能的加强。
7、用户:就像你和我,我们都被迫在Mambo和Joomla中作出选择。因此最希望两者能维持现在的共生与兼容状况。目前很多用户在根据组件选择M还是J?不太清楚,反正我是这样,界面、速度和组件,这是首先要考虑的。
8、组件商:不妙的是,Joomla的组件商们似乎并不愿意这样做,我们逐渐发现很多Joomla的组件在微笑着和Mambo说再见,从css和 index.php开始,步行渐远。一旦Joomla的API成熟,不敢说这些组件商的立场会站在那一边。倒是希望他们中立,呵呵,那样我们便可以多点儿 选择的自由。
9、风险:从1.10看起来Joomla已经度过稳定期,因此使用的风险已经不大。
更多的不同之处,请参考Joomla论坛:
接触M/J时间不长,与其说是回答问题,倒不如说是整理、回顾了一下学习过程。请大家指正。
Joomla的安装
- 在/var/www/下为Joomla建的目录需要将其owner改为www-data,否则在安装完后需要手动将configuration.php文件上传到server上。并且在对一些系统配置进行设置时会因为没有write权限而出错。(比如修改模板等)
- 在安装完成后一定要将installation目录删除!否则别人正好访问你的网站就可以进行修改!
- 网站管理员的用户名是admin。开始我以为是输入在安装时输入的email地址,试了半天总是出错!:(
2008年8月8日星期五
一行命令统计你使用频率最高的十个命令(Linux)
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
Cool吧?!Linux/Unix就是这么奥妙无穷!;)
2008年8月5日星期二
各种编程软件介绍(ZT)
本文将介绍10多种不同的程序设计语言,以及如何下载它们的免费的编译器。
20年后,我们用什么样的语言?也许现 在谁都不好 回答,20年前的程序员们会告诉你用汇编吧,今天人们也许会告诉你用c语言(c++?)吧。那么20年后呢,也许不是c语言了吧。下面都是所谓的非主流语 言,不过它们的设计思想、所能够完成的功能,绝对不比c语言差。也许将来它们会成为主流,也许不会,可是不管怎样,它们都有自己的闪光之处。
Prolog
人工智能领域常用的语言,开发自然语言分析,专家系统,以及所有和智能有关的程序,都非常拿手。可以到我的主页来学习这门语言 http://cdtzx.swiki.net
----visual prolog
www.visual-prolog.com
顾名思义,这是一个可以制作界面的Prolog,有试用版本下载,大概20M左右。这个prolog版本需要对谓词以及数据进行声明,就像C语言一样。因此在使用的时候比较复杂,不过更加适合编制较大的程序。编译出来的程序可以直接运行。----amzi prolog
www.amzi.com
这 个prolog版本包含解释器、编译器,不过编译出来的程序不能够直接运行,需要运行器运行。可以很方便的和其它语言(例如visual basic,java,C,CGI)连接,开发智能程序。解释器的运行效率较低。它所说使用的语法体系和visual prolog不同,程序需要进行适当的修改才能够在visual prolog中运行。----SWI-Prolog
http://www.swi.psy.uva.nl/projects/SWI-Prolog/
我 没有怎么使用过这个版本的prolog解释器,不过它的运行速度要比amzi prolog的解释器快,和amzi的编译之后的程序差不多快,如果下载图形软件包XPCE的话,还可以开发有界面的程序。它的语法和amzi prolog相同,程序可以通用,不过内部谓词有些不同,有时候需要修改一下。----Turbo prolog
http://magicpage.myetang.com/
Dos版本的prolog,有开发界面,可以编译成可执行文件,语法和visual-prolog相同,不过内部谓词有许多出入。----B prolog
http://www.cad.mse.kyutech.ac.jp/people/zhou/index.html
好 像是中国人开发的prolog软件,据说比其它的prolog运算速度都要快,我曾经在linux下面使用过这个prolog,也有window版的,不 过没有什么集成开发环境。语法和其它的几个都不太相同,需要适当的修改程序才能够在此环境下运行。此prolog提供了许多测试速度的解谜题的程序,这个 版本的prolog支持constraint程序设计。----strawberry prolog
http://www.dobrev.com
1兆的容量,包括完整的开发界面,帮助,例程,提供了几个棋类游戏的源程序。可以直接开发有界面的prolog程序,共享版不能够编译,就解释执行吧----Sicstus Prolog
http://www.sics.se/sicstus/
Sicstus Prolog无疑是Prolog版本中最出色的,虽然它并不是免费软件,但是可以下载到有时间限制的试用版本,而且只要修改时间也可以无限期的使用下去 (过期之后修改时间也不会有问题)。它语法与amzi prolog类似,都属于ISO标准,内部胃词丰富,提供了丰富的库,例如集合、图、带权图等等。支持unix和windows等各种操作系统平台。支持 constraint程序设计。---EZY Prolog
http://www.ezy-software.com/
visual prolog开发的一个有趣的prolog解释器,和visual prolog一样,可以直观的设计界面,并且有支持老trubo prolog程序的模式,如果你手头上有很老的turbo prolog源程序,又不想修改的话,可以看看。Lisp
人工智能语言的老大哥。语言格式只有一个形式:列表,所以也叫做表处理语言,这可不是一般的表,是可以包容任意结构的表,有了它,你还用c语言来写链表,二叉树的程序么?学习数据结构不妨使用lisp,让你更加关心算法,而不是数据如何在计算机内部表达。
----xemacs
www.xemacs.org
与著名的guns emacs编辑器的起名,并且界面更加友善,内带emacs lisp, 和许多使用lisp编写的工具软件,例如calc, 是一个功能强大的计算器,支持符号运算,有全部的源程序,如果能够好好研究这些源程序,收获一定不小。----Allegro CL
common lisp
http://www.franz.com, windows下的common lisp集成开发环境, 60天试用。----lisp work
common lisp
http://www.xanalys.com/ 无限期使用,没有任何功能限制----corman lisp
http://www.cormanlisp.com
完全免费Scheme
这是lisp的一种方言,比lisp更加标准化。
http://mitpress.mit.edu/sicp/
这里有一本非常好的介绍编程技术的书,使用的语言是lisp/scheme。在这里还可以下载到Scheme的解释器,基本上是模仿emacs作的。
http://www.drscheme.org/
DrScheme是一个Scheme语言的交互式的集成开发环境。非常适合于教学使用。支持多种语言级别(初级、中级、高级等等),有丰富的界面库,支持TCP/IP。内带详细的帮助和教程。functional language
这 是一类语言,叫做函数型程序设计语言。是一种非常高级的语言。一种基于λ演算和在70年代后期才发展起来的新语言类型。大多数程序设计语言明显地规定要执 行操作的次序。次序的详细规定是很需要的,因为语言的语句对程序的变量有"作用",如果改变这些作用的次序,就可以改变产生的最后值。但是函数型语言却没 有这种性质。在这个意义上,函数型语言能建立可计算性的数学公式模型。让我们来看一个简单的例子:
qsort :: [a] -> [a] | Ord a
qsort [] = []
qsort [a:xs] = qsort [x \\ x<-xs | x=a]
这段程序就是快速排序的代码,你看有多么简洁,并且它的这个qsort可以对任何类型的数据进行排序(只要这种数据可以比较大小)。想读懂上面的程序么?那么下载下面的clean, 或者haskell,好好研究吧,祝你有新的发现。
----clean
http://www.cs.kun.nl/~clean/
并行的函数型语言,可以把源程序编译成exe文件,带有丰富的库,从tcp/ip, 到界面设计,到游戏开发,无一不全。----haskell
http://www.haskell.org/hugs/
hugs是haskell的免费编译器,语法和clean相似,不过是解释执行,因此易于学习。---caml
http://caml.inria.fr/
又一个函数型语言。mozart oz
mozart oz 是具有魔力的语言。它融合了目前几种流行的程序设计思想,我们叫它多范式语言。它是面向对象的语言,它是函数型的语言,它是约束逻辑 (constraint)的语言,它是并发式的语言,它还是分布式的语言,几句话很难概括它的功能。最好去它的网站看看吧,下载一个慢慢研究?
他使用emacs作为开发界面,因此如果你想在windows下使用本语言,首先需要安装emacs for windows(也可以在mozart的网上找到,也可以去www.gnus.org去找,也可以安装xemacs), 如果你安装了emacs 那么你也就同时获得了emacs lisp, 呵呵,收获不小。
为了提起您的兴趣,请思考如下的问题如何编程解决,然后你可以在mozart中找到惊人简单的解决方案。
15个人每天出去玩,每天分为5组,每组3人,玩一个星期,使得任何两个人都曾经在一组中玩过,你如何安排?J
不 要和java搞混淆了。它是一种面向阵列的语言,也就是说矢量,矩阵,以及高次数组都是它的最基本的数据类型,J中引入了大批量的运算符,以及独特的算式 分析方法,大幅度的扩展了数学算式的表达能力。 例如如果你要算从1加到100, 用c怎么做? J的程序是:+/i.100 对,就这么短,一个表达式解决了问题,事实上,使用表达式编写出来的程序异常简洁,虽然初看上去很难读懂,一旦掌握了J语言,你就会发现,原来你可以用只 有c语言1/20的字符表达同样的功能。forth
http://www.forth.org/compilers.html
forth是一种可扩展的,交互式的语言。最初为小型的嵌入式电脑设计的,现在它几乎可以在任何主流的芯片上运行。 在电子表格,专家系统, 多用户数据库,和分布式实时控制系统中有广泛的应用。
表 面来看,forth是一种基于堆栈的概念机。例如如果要计算 (3+4)*5 ,我们的程序就是:3 4 + 5 * . 首先把3和4入堆栈,然后调用+子程序,+把堆栈的最顶上两个元素取出(也就是3和4)进行加法运算,然后把结果入堆栈,然后把5入堆栈,然后调用*子程 序,把最顶的2个元素,也就是7和5取出,并进行乘法运算,然后把结果入堆栈,最后的.把结果从堆栈中取出。 事实上这是一种简单有效的概念机。当然forth远远不止这些,它有什么样的功能,就由你去发掘了。Logo
被称为最佳的启蒙语言,事实上它的功能远远不止启蒙这么简单。一切别的语言能够完成的它也能够完成,只是更加简洁一些,通常logo是使用lisp编写的,我们就可以想象它的高度灵活性了。
----MSWlogo
http://www.softronix.com/
这个网站还有个逻辑数字电路模拟的软件,很有意思,再也不用为什么触发器 门电路之类的发愁了。----StarLogo
http://www.media.mit.edu/starlogo
starlogo的网站如是说:
StarLogo是一个可以编程的建模环境,用来研究分散系统的运行机制。所谓分散系统是指:没有组织者而组织,没有协调者而协调的系统。使用StarLogo你可以对许多现实世界中的现象进行建模并且观察研究,例如鸟群、交通、蚂蚁以及市场经济。
StarLogo是一种特殊的Logo语言,和传统的Logo语言一样,你可以通过向海龟发命令来作图。除此之外,Starlogo容许你并行的控制上千个海龟,并且为这些海龟设定不同的行为模式。StarLogo非常适合于研究人工生命。---NetLogo
http://ccl.northwestern.edu/netlogo/
和starLogo属于同种软件,不过感觉用起来更加方便一点,自带的模型实例就有近百个,内容包括生物、化学、物理、社会、热力学等众多方面。另外它的网站上有许多实际的模型可供下载研究,还能把你编写的模型制作成applet,这样就可以在线运行了。python
python 是一种解释型、交互式、面向对象的语言,我们经常拿它来和Tcl Perl Scheme Java来比较。它有非常清晰的语法,有模块,有类,异常处理,高级的动态数据结构。它比perl更加易学,功能更加强大。python采用动态数据结 构,也就是说变量没有数据类型,这一点和Lisp十分相似,在python中所有事物都是对象(object),字符串、函数以至于类和模块。这种面向对 象的概念和smalltalk很相似。并且自带了丰产丰富的模块库。对于初学者,python很适合于学习编程思想,而不会让读者为了繁杂的语法而头痛。 对于高级用户,python是最出色的脚本语言,它可以很容易的内嵌某个软件中,作为那个软件的扩充,例如著名的3D设计软件blender就可以使用内 嵌的python脚本语言来设计复杂动画。ruby
http://www.ruby-lang.org/en/日本人发明的类似于python的语言,不过据说它的设计上比python更加先进,纯面向对象,吸收了java, smalltalk,perl等语言的长处,可能是最新的语言之一。
smalltalk
面 向对象的程序设计语言的鼻祖,并且正在蓬勃的发展,没有过时。它是纯面向对象的语言,就连整数也是对象。开放环境也非常集成,如果感兴趣可以到一下网站下 载,绝对有耳目一新的感觉。举个例子,循环语句在smalltalk中是向一个整数对象发送消息:10 timesRepeat: [ teresa moveRight: 10 ].其中timesRepeat:为消息名称,10为接受消息的整数对象,[ teresa moveRight: 10 ].是消息的参数,这又是smalltalk强大的地方,它可以把一段程序作为参数传递给某个对象!!!
http://www.squeak.org/ 这是一个非常有趣的smalltalk版本,看上去就像在你的电脑上模拟了另外一套完成的窗口系统,这里面的窗口更加利害,你甚至可以旋转它,不看不知道,看了才发现还有这么奇妙的语言,这么奇妙的开发环境。10M左右
http://www.cincom.com/scripts/smalltalk.dll/home.ssp,这个版本比较实用,有详细的帮助,可以开发真正的windows程序。30M左右
http://www.object-arts.com/ 这里提供的免费smalltalk版本只有3M不到,如果你想先尝试一下这种语言的话,可以下载这个。
Icon
这个语言和图标没有什么关系,不要误解了。这是一种很神奇的语言,虽然目前已经有几年没有更新版本了,不过我觉得它的许多思想都是很先进的。
http://www.cs.arizona.edu/icon/
在语法形式上与c,pascal很相似,但是功能却更加强大,以下是它的一些特点:
Icon的表达式可以产生一系列的值,而不是一个值。
面向目标的求值方式,可以自动的搜索正确的解答(这一点和prolog很像)
强大的字符串处理功能
当然,至于链表、集合、甚至词典(dictionary,也可以叫做hash表)都是它的基本数据类型。内存也是自动管理的,无需担心内存泄漏或者溢出等琐碎的问题。
他特别适合于文本分析、文本编辑、数据格式化、人工智能、专家系统、符号运算的方面的编程。
下面给几个简单的例子:
every f(i to j) ---Icon
for(k=i;k<=j;k++) f(k); ---C every write(find("or",sentence)) ---输出sentence中所有子字符串or的位置Graphical programming language
这类语言很有趣,因为用它写程序不是打字,而是绘图。最著名的应该是Labview所使用的G语言了吧,不过它无法免费使用。
http://vvvv.meso.net/tiki-index.php
vvvv主要应用在实时视频合成方面,它提供了一个绘图式编程环境,很有趣,而且个人使用是免费的。C
最 后我们还是回到c语言,毕竟这是目前最流行的语言,如果你不想用盗版,不想安装100多兆的垃圾(大多数初学者不可能完全使用borland c++ builder 或者visual c++的全部功能,而只是用来学习c语言本身),也不想在dos的edit样子的面孔下,使用Tc编程序,那么try下面的东东吧。3M的大小绝对值的下 载。
http://www.cs.virginia.edu/~lcc-win32/index.html如果想下载C++的编译器,去http://www.bloodshed.net/devcpp.html看看,这个集成开发环境使用Delphi编写,C++编译器是Mingw编译系统。
Storm, SQLAlchemy, and Geniusql性能测试
Storm, SQLAlchemy, and Geniusql
Revisiting Storm, SQLAlchemy, and Geniusql
ssh客户端软件的选择 (一)
Putty
putty大概是用的最广泛的一款免费开源的ssh客户端了。
优点:小巧,简单,功能齐全
缺点:不支持多Tabber方式,并且对session的管理只是一个简单的列表,如果你平时需要登录的设备比较多的花,就得花时间在长长的list里面找到它。
SSH Secure Shell
这个大概是最早的免费的ssh客户端。不过在3.2.9版本之后就不免费了。同putty一样,不支持tab,对session的管理要比putty好一点(在SSH secure shell里叫profile),可以以树型目录的方式来管理你的登录profile。
TeraTerm Pro
这是一个日本人写的免费软件。
优点:- 自带了一个基本的marco语言,可以编写marco完成一些自动化的工作
- 集成了cygwin console
- 有人为TeraTerm写了个Session 管理器叫LogmeTT, 运行后缩小到task tray里面, 用右键点击图标就可以选择分层次的session, 系统资源占用又小, 挺好用的.
缺点:- 同以上一样,没有tab!
- 另外, 还有一个让我不爽的地方是每次连接一断开,窗口就会自动关闭, 有时候连接意外断开时就没办法查看当时有些什么出错信息了.
2008.12.3 更新, 最近发现其实TeraTerm Pro自带有一个叫collect的小应用就是模拟tab的, 还算好用.以下是截图:

2008年7月4日星期五
在blogspot上如何使用Google analytic?
Analytics很好用,可是好像在blogspot.com上用不了。:(
我将Analytic的代码加入到“布局”-》模板修改的html代码里面,一按保存键,系统就自动将所用的双引号转换为"e;,因此导致代码就变了。 不知道如何能解决这个问题?
2008年6月18日星期三
EtherChannel Configuration
(config)# interface range fa0/21 - 24 ,or fa0/21 , fa0/23
2. before config the new setting, the old setting in those interfaces must be remove firstly. (with command 'no')
3. there are 3 options for the channel-protocol: pagp, lacp, none
the channel mode is depended by protocol:
pagp: 'auto' or 'desirable'
lacp: 'active' or 'passive'
None: 'on'
Note: the port-channel interfaces with channel mode marked as 'on' will always up.
4. commands for checking etherChannel:
- show etherchannel summary
SwitchC#show etherchannel summary
Flags: D - down P - in port-channel
I - stand-alone s - suspended
H - Hot-standby (LACP only)
R - Layer3 S - Layer2
u - unsuitable for bundling
U - in use f - failed to allocate aggregator
d - default port
Number of channel-groups in use: 4
Number of aggregators: 4
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) LACP Fa0/22(Pd) Fa0/24(P)
2 Po2(SU) - Fa0/21(Pd) Fa0/23(P)
3 Po3(SD) -
5 Po5(SD) -
- show interface portchannel 1
SwitchC#show interfaces port-channel 1 etherchannel
Port-channel1 (Primary aggregator)
Age of the Port-channel = 0d:03h:45m:04s
Logical slot/port = 1/0 Number of ports = 2
HotStandBy port = null
Port state = Port-channel Ag-Inuse
Protocol = LACP
Ports in the Port-channel:
Index Load Port EC state No of bits
------+------+------+------------------+-----------
0 00 Fa0/22 Active 0
0 00 Fa0/24 Active 0
Time since last port bundled: 0d:00h:54m:00s Fa0/24
Time since last port Un-bundled: 0d:01h:21m:08s Fa0/24
--
Just do it!
Posted by Gmail on E61
2008年6月17日星期二
Python与Hadoop
以上转贴Hadoop研究,一个研究讨论hadoop的中文平台。
Hadoop原来是Apache Lucene下的一个子项目,它最初是从Nutch项目中分离出来的专门负责分布式存储以及分布式运算的项目。简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。不过Hadoop是基于Java语言的,要想让Python也能用上Hadoop,有两种方法:一是利用Jpython将python编译为java代码,另一种方式则是使用Hadoop Streaming帮 助我们用非Java的编程语言使用MapReduce,Streaming用STDIN (标准输入)和STDOUT (标准输出)来和我们编写的Map和Reduce进行数据的交换数据。任何能够使用STDIN和STDOUT都可以用来编写MapReduce程序,比如 用Python的sys.stdin和sys.stdout。
这篇文章详细介绍了使用Hadoop streaming的方法。
.jpg)

.jpg)
