怎样用一行脚本美化/etc/my.cnf文件

原文地址:http://www.mysqlperformanceblog.com/2009/06/15/how-to-pretty-print-mycnf-with-a-one-liner/
当我在一台服务器上转悠时,我会经常想看看/etc/my.cnf文件格式,当然是想看格化美观,没有注释的。这样的一行Perl就能将美化输出文件:

1.perl -ne ‘m/^([^#][^s=]+)s*(=.*|)/ && printf(“%-35s%sn”, $1, $2)’ /etc/my.cnf
2.[client]
3.port = 3306
4.socket = /var/run/mysqld/mysqld.sock
5.[ mysqld_safe ]
6.socket = /var/run/mysqld/mysqld.sock
7.nice = 0
8.[ mysqld ]
9.user = mysql
10.pid-file = /var/run/mysqld/mysqld.pid
11.socket = /var/run/mysqld/mysqld.sock
12.port = 3306
13…..

Perl常见错误

最近在用perl+mdbm+spread做东西。
php是用了很久了,python和ruby与用过,经典脚本语言就perl没摸过,现在在像小学生一样抱着教科书啃。
发现perl果然有难度多了。别的东西没让我这么频繁地犯错误。
1.第一个常见的错误是:向文件输出内容。标准语法是:

print STDERR “this is an apple.”;

我一般都会写成

print STDERR,”this is an apple.”;

总是多打一个逗号。老实说,一般我很少重复地犯错误,但是这个地方我就是记不住。
2.第二个常见错误是:经常漏写Hash引用的箭头。
本来应该写成

print $hash->{$key};

我常常写成

print $hash{$key};

3.第三个常见错误是:字符串比较:
用php时间长了,老是用两个等号来比较字符串。这是错的。正确写法是

if($var eq “hello”) {
print “world”;
}

我经常写成:

if($var==”hello”) {
print “world”;
}

这会导致逻辑错误,很难觉查。
4.第四个常见错误:
if语句不带括号(都是php带坏的)
正确的写法是:

if($var)
{
print “yes”;
}

我经常写成

if($var)
print “yes”;

5.还有一个错误,不是从php中带过来的,一般人估计不会犯:漏写分号。

Spread 简介(试译)

项目网站:http://www.spread.org/

Spread 是一个开源工具,它提供高性能的的消息服务,这种服务在局域网和广域网上能有效地避够失效。它在分布式程序中充当一个统一的消息总线的角色,并且提供高调谐的应用级的消息多路播送、组通讯、点到点支持。Spread的应用范围既包括高可靠的消息传送,也包括有序消息的传输(有保证).
Spread可用在许多需要高可靠性,高性能,以及各种子集和成员之间健壮的消息传播的分布式程序中。这个工具封装了异步网络的复杂性,便于创建可高靠和可扩展性的分布式程序.
Spread包含:一些需要被用户程序包含的库文件,一个守护进程(它需要运行在这个一组应用的每台机器上),以及一些工具和演示程序。
Spread提供的功能和便利有:
可靠的、可扩展地消息传播和组通讯。
可以简化分布式程序架构的简单而功能强大的API
易于使用,开发和维护
从本地局域网到复杂的广域网的可扩展性
支持有不同数目的成员的上千个组
提供在机器失效、应用崩溃和网络划分、重组时的可靠的消息传送的能力
为消息传送提供了可靠和排序、稳定保证。
重视健壮性和高性能
完全的分布式算法,不会有中央节点失效风险

为什么使用Spread
* 功能强大而简单的API.只需要六个基本的调用就可以使用Spread了!
* Spread做了优先,在本地局域网中可以支撑每秒8000个1Kbytes的消息
* 在网络划分或系统某部分失效时的可靠性和可用性,不管系统是由几台电脑构成的cluster,或是一些cluster,还是分布于广域网的几千台电脑组成的系统。
* 允许系统无缝地增长扩容而不需要改变架构.
* Spread允许单播,多播,多组多播,scatter-gather calls,或是多路查询。
* Spread能处理网络和机器的重新划分并且能够安全地重新组合,能通知应用当前的状态.
* 跨平台:Spread 支持跨平台的操作:Unix( BSD,Linux,Solaris,Irix,AIX,Mac OS X,etc)和Windows(2000/NT/98/95)
* Spread当前有C/C++,C#,Java,Perl,Python和Ruby的编程接口.