网上有个牛人老外,用perl写了个匹配质数的正则表达式,就像这样:
perl -lne '(1x$_) =~ /^1?$|^(11+?)\1+$/ || print "$_ is prime"'
,这是个交互式的东东,运行后得你手工输入数值,脚本判断是否是质数,是就打印说啥啥是质数。这句简单的代码我仔细分析了下,终于大概弄懂了。首先,是把你输入的数,转换成输入数值个1的字串,然后进行匹配,匹配不上,则输入的数为质数。匹配的正则表达式又是两个表达式的合集(两个表达式是或的关系)。
第一个正则匹配表达式很简单:“
”,就是用来匹配0个或1个”1″,也就是这两个数(0和1不是质数),关键在于第二个正则表达式:
,显然3(字串是111)、5(字串是11111)匹配不了,是质数;4(爱传是1111)和6(字串是111111)能匹配上,是合数。至于其中寻找质数的逻辑,我也大概弄明白了,比如说,数字7,字串是1111111,匹配11(11)+匹配不了,尝试111(111)+也不行,1111(1111)+也不行,所以是质数;同理,数字9,字串是111111111,匹配11(11)+匹配不上,但是匹配111(111)+可以,所以9是质数。
官网在这里
或者是用来做各个idc之间打洞。
先mark一下,
以后有空应用时再来详细研究研究。
原文来自:http://climagic.org/coolstuff/let-it-snow.html
第一段脚本:
clear
while :
do
echo $LINES $COLUMNS $(($RANDOM%$COLUMNS))
sleep 0.1
done | gawk '{
a[$3]=0
for(x in a) {
o=a[x]
a[x]=a[x]+1
printf "\033[%s;%sH ",o,x
printf "\033[%s;%sH*\033[0;0H",a[x],x
}
}'
执行上面这段脚本之前,需要手工设置COLUMNS LINES或执行:
第二段脚本:
原文来自:http://climagic.org/coolstuff/let-it-snow.html
原文来自http://www.climagic.org/coolstuff/matrix-effect.html
echo -e "\e[1;40m"
clear
while :
do
echo $LINES $COLUMNS $(( $RANDOM % $COLUMNS)) $(( $RANDOM % 72 ))
sleep 0.05
done | gawk '{
letters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#$%^&*()"
c=$4
letter=substr(letters,c,1)
a[$3]=0
for (x in a) {
o=a[x]
a[x]=a[x]+1
printf "\033[%s;%sH\033[2;32m%s",o,x,letter;
printf "\033[%s;%sH\033[1;37m%s\033[0;0H",a[x],x,letter
if (a[x] >= $1) {
a[x]=0;
}
}
}'
这一段在我的Linux(centos5和centos6)上跑都没问题,但是在我的mbp(Macbook pro)上不行,因为没有gawk。
第二个脚本:
echo -e "\e[1;40m"
clear
characters=$( jot -c 94 33 | tr -d '\n' )
while :
do
echo $LINES $COLUMNS $(( $RANDOM % $COLUMNS)) $(( $RANDOM % 72 )) $characters
sleep 0.05
done | gawk '{
letters=$5
c=$4
letter=substr(letters,c,1)
a[$3]=0
for (x in a) {
o=a[x]
a[x]=a[x]+1
printf "\033[%s;%sH\033[2;32m%s",o,x,letter
printf "\033[%s;%sH\033[1;37m%s\033[0;0H",a[x],x,letter
if (a[x] >= $1) {
a[x]=0
}
}
}'
这一段在我的centos上跑不了,因为缺省没装jot;但在我的ubuntu上可以跑,因为我
apt-get install athena-jot
第三个脚本:
echo -e "\e[1;40m"
clear
while :
do
echo $LINES $COLUMNS $(($RANDOM % $COLUMNS)) $(printf "\U$(( $RANDOM % 500 ))")
sleep 0.05
done | gawk '{
c=$4
letter=$4
a[$3]=0
for (x in a) {
o=a[x]
a[x]=a[x]+1
printf "\033[%s;%sH\033[2;32m%s",o,x,letter
printf "\033[%s;%sH\033[1;37m%s\033[0;0H",a[x],x,letter
if (a[x] >= $1) {
a[x]=0
}
}
}'
原文来自http://www.climagic.org/coolstuff/matrix-effect.html
系统环境:centos6+cacti0.8.7g
用Aggregate做了几个聚合图,方法前面有提到。
在创建新的图的时候,在title里有中文字符,存取数据库都没有问题,但是在显示的图上,中文字符没有了,原本以为是rrdtool不支持中文导致,打开debug模式一看,才知道,原来在执行生成图的rrdtool的”–title”参数里,中文字符就没有了,这显然不是rrdtool的问题了,而应该是cacti的问题。翻了下cacti的代码,在文件lib/rrd.php里,有一句:
"--title=" . cacti_escapeshellarg($graph["title_cache"]) . RRD_NL .
,而在lib/functions.php里关于cacti_escapeshellarg函数的定义里,将其直接用函数escapeshellarg函数替代(因为
$config["cacti_server_os"] == "unix"
成立)
于是又着重找了找php函数escapeshellarg过滤中文字符的资料,果然有说法,说是LC_CTYPE是缺省值”C”导致,也提了解决方法,就是在文件lib/functions.php中的最前方,显式的将LC_CTYPE设置正确。具体的解决办法如下:
在文件lib/functions.php的最前面,添加一句代码:
setlocale(LC_CTYPE, "UTF8", "en_US.UTF-8");
保存,再一刷页面,OK了。
老早就下载了backtrack5的iso文件,今天终于刻盘在公司的台式机上安装了一下。具体怎么装我也不赘述,官方的安装文档在这里,我这里只说问题,按照文档第一步,我
的时候就出问题了。系统提示:
Warning: Type "ONE_LEVEL" has 1 levels, but has 2 symbols
,然后google了一下,原来这是64位版本的问题,官方早有解决方法,看这里。我再简单描述一下,解决起来很简单:
rm /root/.kde/cache-root/icon-cache.kcache
rm /root/.kde/cache-root/plasma_theme_Volatile.kcache
rm /root/.kde/cache-bt/icon-cache.kcache
rm /root/.kde/cache-bt/plasma_theme_Volatile.kcache
然后再startx,就没有问题了。
前面提到tracks for android在修改了内容或者提交一个新的action的时候,中文内容会乱码。最新消息,现在已经解决了。因为tracks for android的作者开放了源码,我直接取了一份,在会java的同事的提点下,最终找到了编码的地方,小改两行代码,问题解决。
编辑文件src/ca/xvx/tracks/util/HttpConnection.java,将其105行和118行的内容:
StringEntity ent = new StringEntity(content);
改成
StringEntity ent = new StringEntity(content, "UTF-8");
即可。
/tmp目录缺省用来保存php的session文件,某台机器这个目录下文件数过多,rm -rf *都会报“参数太长”的错误。用命令:
find . -type f -name "sess_*" -cmin +30 |xargs rm -f
删除之。注意:这里的sess_*要用引号引起来,否则,也会出“参数太长”的错误。
centos5的机器,openldap是2.3.x的;另外一台centos6的机器,openldap是2.4.x的,现在需要把数据从2.3.x上迁移到2.4.x上去(其实最初的需求是2.3.x和2.4.x之间主从同步的,后来需求才降低到数据迁移)。
折腾了一整天,终于搞好了,赶紧做个记录。
首先,在centos5(openldap2.3.x)上备份数据
然后,将centos5上的data.ldif和/etc/openldap/slapd.conf拷贝到centos6(openldap2.4.x)上
接着,重要的操作来了:
cp /usr/share/doc/openldap-servers-2.4.x/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap:ldap /var/lib/ldap/DB_CONFIG
slapadd -l data.ldif -f slapd_2.3.conf
slaptest -f slapd_2.3.conf -F /etc/openldap/slapd.d/
chown -R ldap:ldap /etc/openldap/slapd.d
chown -R ldap:ldap /var/lib/ldap/*
/etc/rc.d/init.d/slapd start
以上:第一步拷贝DB_CONFIG貌似不是必需的,不过没做的话会老报警告信息。这里假设复制过来的slapd.conf的文件名为slapd_2.3.conf
碰到个问题,某个跑mysql的服务器,经常报/区空间满(使用率大于阀值),但马上又会报好了。怀疑是mysql的临时文件把根区空间占满了导致的。于是查了查文档,知道如果没有DIRTMP这个环境变量的话,mysql会用/tmp来做自己的临时文件存储目录。于是我们直接改老php.ini,把tmpdir = /xxx/path加到mysqld的下面,重启mysql,这下解决了。
近期评论