Archives

又遇SNMP

差点被SNMP给整疯了……

先是要从QoS中提取指定信息,要导出到SNMP。这看似简单但做起来相当麻烦,基本上就是左手拿着表格查对应的行和列,右手拿着QoS输出对比,然后脑子里要思考如何提取正则表达式。总共50多项,我是一项一项对出来的,哎,没办法,这根本不可能由机器完成(瞧瞧计算机有多笨!!不过它要是聪明到这种程度我们这些程序员就该失业啦~!)。

然后要考虑整个程序的构架,看似一个简单的程序,如果什么都不考虑直接去写肯定也可以,50多个函数嘛,可问题是怎么把代码组织得更和逻辑?这确实得下一番功夫。一开始我想出一个颇为简洁的构架,后来发现不行,经过修改最后居然保持住了简洁,纯属侥幸~~最后再看看整个程序的构架,依然简洁而又合理,先得意一下。;-)

最后测试时又出问题了,因为我几乎把SNMP忘干净了(Dr. Chen,我对不起你啊~~~!),然后翻怎么才能查询到对应的表项,满头大汗……不过最后终于完成了,还好,挑了几个经典的项放进去测试了一下,一切正常。不过,上头要求把50多项全部放进SNMP里测,我晕,难道我还得一个一个把它们手工输入到snmp配置文件里???岂有此理!我怒了,端出如下一行命令搞定一切:

sed -ne ‘/cmd_map/,/#EOF/ p’ qosscript | grep ‘=>’ | awk -F’=>’ ‘{print $1}’ | while read EN; do echo exec $EN /eos/qosscript $EN; done | sed -e ‘s/‘“‘“‘//g’ >> /etc/snmp/snmpd.conf

任务结束,世界安静了许多。:-)

另外记一下在写这个脚本时用到的一个技巧——用Perl正则表达式匹配多行文本:

local $/;
$output = <$fd> ;

然后就可以这么匹配了:

$output =~ m/class htb . root rate ([0-9]+)Kbit .nsSent ([0-9]+) bytes ([0-9]+) pkt (dropped ([0-9]+).ns*rate ([0-9]+)bit/m

美丽中国

英国BBC拍的一部记录中国自然风景和野生动物的纪录片,相当美,里面的一些画面美得简直震撼人心!印象最深刻的是蝙蝠在水面上拍打的画面,太美了……我们的祖国真的很美!

第2集提到了香格里拉——我心中那个向往已久的胜地,回国一定去那里看看!!另外还有西藏,丝绸之路,内蒙古大草原……

强烈推荐此片,给每个人。:-)

陆止于此,海始于斯!

Cabo da Roca是欧洲大陆的最西端,有着非常壮阔的风景。这里天很蓝,风很大,站在悬崖边上望去是一片蔚蓝的大海,非常迷人。在卡罗角的纪念碑下,你终于可以感慨:我站在欧洲大陆最西端了!

500年前,葡萄牙诗人卡蒙斯在此写下一行诗:

AQUI … ONDE A TERRA SE ACABA E O MAR COMECA …

翻译成英文是:

Here… Where the land ends and the sea begins…

中文的翻译是本文的标题。“天涯海角”的含义在这一刻你能更深刻地体会到!

500年前的葡萄牙应该是航海英雄的时代,不知道500年前的他站在此处时又是怎样的心情?对于真正的水手来说,或许真的是“天无涯,海无角”……

fakeroot vs sudo

1. sudo是一个setuid程序,而fakeroot不是。

2. sudo真正地给与root权限,而fakeroot不会,它只会欺骗程序看起来像是以root身份执行得到的效果。

3. fakeroot最初是为了创建debian包使用的,Fedora上也有fakeroot包,但不知为何找不到其man手册……

4. fakeroot的文档中提到:

fakeroot works by replacing the file manipulation library functions
(chmod(2), stat(2) etc.) by ones that simulate the effect the real
library functions would have had, had the user really been root. These
wrapper functions are in a shared library /usr/lib/libfakeroot.so*
which is loaded through the LD_PRELOAD mechanism of the dynamic loader.
[…]
Internally, faked keeps track of all files which have had operations
done on them that the user would not normally be able to do, in order to
fake the effect later.

For example, if you create a device node, faked will actually create an
empty file, but remember that it was a device node (along with the
relevant details) so that if you subsequently do an “ls -l”, you’ll see
it as a device node.
所以fakeroot并不会对静态链接的程序起作用。

5. fakeroot使用了很多trick,不信的话查看其源代码(看看里面那个awk脚本!)。

bash变量作用域

bash的变量作用域其实很简单,不过有些时候可能看起来很奇怪。下面简单总结一下。

在默认的情况下,bash的变量都是全局的,除非你使用了local或者typeset命令来改变,那样就可以变成局部的了。

export改变的是变量是否对其子进程可见,并不会影响父进程,如果想要改变父进程中的变量可以用source(或者“.”)。需要额外说明的是,source后面的脚本不能有exit,否者父进程就跟着一起退出了。

在subshell中,对变量的改变不会影响到外面的shell。这似乎很容易理解,不过需要注意的是,一些管道(比如管道的一端是while循环时)也是通过subshell传递的,比如下面这个例子

  1. foo=123
  2. echo 456 | while read line ; do
  3. foo=$line
  4. done
  5. echo $foo


这时就不那么容易觉察了。解决方法是,用重定向去替换管道。

城堡

葡萄牙有很多城堡,在Coimbra附近的有三个地方的城堡比较有名,这几个星期利用周末把这几个地方都转了一遍。

Leiria:山顶上有个城堡,这个城堡是唯一一个收费的,不过不贵,里面可以看到不错的风景,很值得一去。

Montemor-o-Velho:离Coimbra最近,不过坐火车无法直接到,需要在Alfarelos下车后打个的才能到,车站旁边那个出租车司机很nice的说~~!这个城堡独特的地方是里面有个教堂,还有个草坪。

Pombal:这个城堡不那么出名,去的人似乎很少,我到那里的时候里面就我自己~~可以自己随便逛,站到最高出远望感觉挺不错的~~

这个周末打算去传说中的Cabo da Roca——欧洲大陆的最西端。:-)

Lapa do Lobo

上周末过得非常充实,周五不光有beer lifting,而且还赶上了聚餐,于是周五晚上直到一点多才回到公寓。第二天Marco带着我去他家玩,于是我们驱车四五十分钟到了他的老家Lapa do Lobo,一个安静的小镇。

我们先去的是他岳母家,在那里喝了杯咖啡吃了点儿东西(葡萄牙人习惯在午饭和晚饭之间加一顿小吃,他们称其为lanche),之后才到了他家。他家的房子很大,而且有三层,房子后面还有个院子,院子里除了有花花草草之外还有个小的游泳池;家里养了一只很大的狗。看样子应该是一个典型的葡萄牙人的房子,非常惬意~~

他家里有四口人,还有个妹妹,全家人基本上都能说英语。他爸爸是个警察,非常热情好客,告诉我在这里要感觉像在中国一样。:-) 晚饭由他妈妈和妹妹做的,非常可口的火鸡。吃完饭我们去镇上的酒吧看足球比赛,那里聚集了很多人,都在边和啤酒边看足球。酒吧的女老板很有意思,英语说得不错,见了我就跟我开玩笑,给我印象最深的是她说了句:喝啤酒总比喝牛奶好!唉,真是坏事传千里,连她都知道中国最近闹得沸沸扬扬的奶粉事件!看完比赛我们回去继续上网,结果直到两点多才睡觉。第二天快十点才起来。起来本来不想吃早饭的,结果他爸爸看不惯,硬是塞给我牛奶和面包吃。午饭尝到了一种葡萄牙风格的土豆,感觉有点儿奇特,不过还是比较好吃的。

这是我来到这里头一次体会到葡萄牙的乡村生活:邻里之间见面问好,互相串门;自行车放到外面不用锁;晚上睡觉也不用锁门……哎,再看看城市里面:墙越来越高了,锁越来越多了,见面打招呼的越来越少了,真是一种悲哀~~!

赶紧逃离城市!:-)

买了辆车。。。。。。。。。自行的

这里的自行车不是一般的贵,那可是相当贵!最便宜的也得70多E,不过那只能在超市里找到,要是从那里买了坏了没地方修。所以不得不去专门卖自行车的地方去买,那里最便宜的也要129E……更夸张的是还有辆1500E的自行车。。。我估计那是黄金做成的~

这里的车子和国内差别很大,基本都是用来休闲的,所以如果你需要后座之类的东西你得自己另买……所以整个下来花费实在不小。

昨天晚上和今天早上都是骑车上下班,因为不太熟悉路,所以路上犯了不少错误,不过还好,最终还是能到达目的地。现在好了,彻底把路线搞清楚了~~我最大的感受是:这里的公路设计得相当“艺术”,有数不清的转弯不说,还经常有上坡下坡,所以骑车上下班还是比较累的。恩,就当作锻炼身体了。:-)

在这里,自行车的另一个用途是可以放到火车上带着出去旅游,应该很爽,有机会试试。

关于mount的两个错误

1. mount: could not find any free loop device

解决方法:losetup -d /dev/loop7

2. umount: device is busy

解决方法一:

kill $(``/sbin/fuser -m /dev/sda3 2&gt;/dev/null)

解决方法二:

umount -f /dev/sda3

umount -l /dev/sda3

无人能续的科幻巨著

我花了好几个月地时间才终于断断续续地把阿西莫夫的《基地》系列全部读完(其中有几个月根本就是一点儿都没读),说实话,读完之后最大的感觉是痛苦,不是因为它太长(它再长都是非常值得的!),而是因为它远远没有写完!阿西莫夫老先生给我们留下的疑问太多太多……估计除了阿西莫夫本人之外无人能完美地续好这部宏伟的科幻巨著!

读完后疑问有无数,因为时间间隔长,我无法一一历数全部,只能把我最关心的大问题列举一下:

1. 机器人的命运最终如何?
2. 丹尼尔的另一个计划是什么?辞去宰相后他又去做了什么?
3. 第一基地和第二基地的命运最终会如何?盖亚模式真的是人类最后的选择?
4. 第二帝国是如何建立的?建立后何去何从?

这还不包括那些和机器人相关的问题,因为我还没有读机器人系列,我估计我的这部分疑问会在里面找到答案。

任何想续写的人都必须处理好上面这几个大问题,在这里,“好”的定义是:是否符合阿西莫夫的方式。而且叙述也要有阿西莫夫的风格才能服众!这看起来像是不可能完成的任务,毕竟没人能知道阿西莫夫究竟是怎么想的!

整个基地系列看似年代跨越不大,实则不然,因为它的起点本身就很高,基地系列的起点是谢顿刚发表第一篇心理史学的论文,而那个时候地球这个名词几乎就快被遗忘了,只有在传说中才提到!可见阿西莫夫描述的未来到底有多么未来!!而且如果你按照阿西莫夫的写作顺序来读的话,越到最后你越会发现,基地系列和机器人系列有着千丝万缕的关系,而机器人系列的故事无疑是发生在基地之前很久,如果把这个算上的话整个基地系列的时间跨越至少在数万年!如果把地球也算上的话那就有数百万年!!如此大手笔的巨著恐怕只有阿西莫夫才能写得出来!

基地系列绝对是不折不扣的阿式科幻!它继承了阿西莫夫的光荣传统。;-) 说到这里,不得不说一下阿式科幻的另一个特色:阿西莫夫的科幻有些甚至是对未来的准确预言,比如“机器人三定律”(基地系列中也有提到),现在已经被公认。而基地系列的核心无疑是“心理史学”,如果将来我们真的会有这门学科我并不会感到奇怪,因为这个想象大胆而又合理。

附注:

1. 阿西莫夫写作的顺序:

《基地》《基地与帝国》《第二基地》

《基地边缘》《基地与地球》

《基地前奏》《迈向基地》

2. 时间顺序:

《基地前奏》《迈向基地》《基地》《基地与帝国》《第二基地》《基地边缘》《基地与地球》

3. 我是按照阿西莫夫的写作顺序读的,不过我认为按时间顺序读可能更好。

4. 机器人系列和基地系列密切相关,机器人系列的故事发生在基地之前很久。你如果没读过机器人系列就读基地,基本上不会受任何影响,不必担心。机器人系列是:

《我,机器人》:
http://book.kanunu.cn/html/2005/0629/193.html
《钢穴》:
http://book.kanunu.cn/html/2005/0711/286.html
《裸阳》:
http://book.kanunu.cn/html/2005/0711/285.html
《机器人与帝国》:
http://book.kanunu.cn/html/2005/0711/284.html
《曙光中的机器人》:
http://book.kanunu.cn/html/2005/0711/283.html

5. 根据《基地的胜利》一书中的总结推断,机器人系列的时间顺序是:

《我,机器人》
《钢穴》
《裸阳》
《曙光中的机器人》
《机器人与帝国》