| Subcribe via RSS

JS,CSS压缩工具-jsMinifier

7月 30th, 2008 | 3 Comments | Posted in JavaScript < by Johnny Woo >

最近在优化网站内容
其中一个部分就是压缩JS以及CSS程序
比较常见的就是DOJO的ShrinkSafe
以及jsmin,ESC
不过taobao团队使用yuicompressor作为底层开发了windows下的jsMinifier
jsminifier.rar下载
目前版本2.0
使用yuicompressor+native2ascii
对于YAHOO的工具
我还是比较信任的
毕竟他们的performance团队的工作成果
是世人皆知的

阅读内文 Tags: , ,

Solarwinds实现短信报警

7月 30th, 2008 | 2 Comments | Posted in 系统监控 < by John.Lv >

最近在Field的帮助下完成了fetion短信报警,下面以磁盘空间报警为例(采用的是Solarwinds报警后自动执行VbScript调用飞信机器人发送短信报警)

  • 一、 软件环境(Windows 2003为例)

Solarwinds+飞信机器人

  • 二、 安装过程

飞信机器人下载包地址:

WINDOWS(2000/XP/VISTA):支持库??最新程序fetion20080618002-win32.rar??

其中支持库和安装包如下:

fetion20080618002-win32.rar解压缩你指定的目录,支持库?的内容解压缩后复制至和fetion.exe同一目录即可

  • 三、 配置过程
  • 1. Solarwinds报警配置磁盘空间监控

在上图中的Configure Alerts中新建报警DiskStatus,按照你的需要配置监控的服务器,报警的条件,监控的周期等,然后按照下图配置满足报警要求后的Action

?

按照上图添加2个Alert Action

Alert Action 1:log the alert to a file将报警保存为alter.log(可随意指定文件名和目录)

Alert Action 2:Execute an external VBScript指定要执行的VbScript,请将VbScript放在fetion的安装目录下,因为下面的VbScript指定的路径是相对路径

备注:请一定要先设置报警保存的log,然后在设置要执行的VbScript,因为只有先生成log,然后在执行VbScript读取log中的短信报警信息,设置好后如下图:

?

?

配置生效后应该先生成log然后执行VBScript发送短信

  • 2.Log样本如下:

Alert: Percent Space Used of 100.121-D:\ is now 84 %

Alert: Percent Space Used of 100.102-C:\ is now 82 %

  • 3.?VBScript如下:
logfile="G:\LibFetion\install\alert.log"?? '定义报警log请输入Solarwinds中的log设置
fetion_exec="G:\LibFetion\install\fetion" '定义fetion.exe所在位置
fetion_user="135xxxxxxxx"? '定义飞信的登陆用户名或手机号
fetion_passwd="123456"?? '定义飞信的登陆密码
send_buddy="13512345678" '定义短信的接收人,需在你飞信好友列表中
Set objFS = CreateObject ("Scripting.FileSystemObject")
objFS.CreateTextFile("mess.txt")
Set objNF = objFS.OpenTextFile("mess.txt",8) '所发送的报警信息存放在mess.txt

Dim arrFileLines()
i = 0
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(logfile, 1)? '读取报警log全部信息

Do Until objFile.AtEndOfStream
???? Redim Preserve arrFileLines(i)
???? arrFileLines(i) = objFile.ReadLine
???? i = i + 1
Loop
objFile.Close
l = Ubound(arrFileLines) '读取报警log最后一行,因为最近的报警信息永远是最后一行
objNF.writeline "sms? "&send_buddy&" "&arrFileLines(l) '把报警log最后一行信息写入mess.txt
objNF.writeline "exit"? '退出飞信机器人
objNF.close????????? 'close mess.txt
Set objShell = CreateObject("Wscript.Shell")
if objFS.fileExists("mess.txt")=True then? '判断mess.txt是否存在
objShell.run "cmd /C "&fetion_exec&" -u "&fetion_user&" -p "&fetion_passwd&" -b mess.txt",4,True? '执行飞信机器人程序使用fetion_user&fetion_passwd登陆后发送mess.txt中的信息
objFS.DeleteFile("mess.txt")? '删除mess.txt,可以不要
end if

以上内容保存为alter.vbs放在fetion.exe同一目录即可

备注:由于监控的机器不多,而且报警的条件也比较高,所有报警次数比较少,生成的log就比较小,如果每天生成的log很大,建议log每天生成,增加日期变量即可

阅读内文 Tags:

BLOG增加了WAP支持

7月 30th, 2008 | 2 Comments | Posted in 生活随笔 < by Johnny Woo >

直接访问
http://www.hiadmin.com/wap/
使用了WP-T-WAP插件
不仅能够通过WAP访问
还能够通过WAP登录后台并且进行文章管理以及留言管理

自从有了黑莓之后
发现手机上网的好处还是很多的
而这个市场.也有待于成熟
今后手机互联游戏的市场
也是非常大的一个潜在增长点

阅读内文

系统监控:linux命令行-飞信客户端发送免费报警短信

7月 29th, 2008 | 6 Comments | Posted in 短信 < by Michael Field >

一、软件环境(centos 5为例)
这里向大家推荐的是飞信机器人的软件,支持linux、命令行下的飞信、完全免费(目前为止);
官网地址:http://www.it-adv.net/
支持库安装:
需要Glibc2.4以上的版本;centos5默认安装的Glibc2.5,所不需要额外升级;
目前网上的安装文档只有ubuntu的,至于redhat、fedora、centos都没有相关安装文档,我在安装的过程中遇到很多库的问题,所以在这里一并给大家进行介绍;

二、安装过程
下载包地址 LINUX X86/32(REDHAT ES4X32):支持库 最新程序fetion20080522004-linrh4.tar.gz
其中支持库和安装包内容如下:

# tar zxvf libraryrh4x32.tar.gz
libACE-5.6.5.so
libACE_SSL-5.6.5.so
libcrypto.so.0.9.7a
libssl.so.0.9.7a

# tar zxvf fetion20080522004-linrh4.tar.gz
./install/
./install/www/
./install/www/index.html
./install/www/css/
./install/www/css/scheme.css
./install/www/css/main.css
./install/www/css/print.css
./install/www/css/main-msie.css
./install/www/images/
./install/www/js/
./install/www/js/jquery.js
./install/socket_interface/
./install/socket_interface/socket_demo.php
./install/Readme.txt
./install/sound/
./install/sound/smile8.wav
./install/sound/message.wav
./install/sound/smile1.wav
./install/sound/login.wav
./install/sound/openchatwin.wav
./install/sound/closechatwin.wav
./install/fetion
./install/plugins/
./install/plugins/plugin_contact_update
./install/plugins/plugin_buddy_application
./install/plugins/plugin_message
./install/plugins/plugin_invite
./install/plugins/plugin_timer
./install/conf/

把支持库复制到/usr/lib/目录下,并作软链接如下:

cp lib*so* /usr/lib/
ln -s /usr/lib/libcrypto.so.0.9.7a /usr/lib/libcrypto.so.4
ln -s /usr/lib/libssl.so.0.9.7a /usr/lib/libssl.so.4

设定lib库配置文件

#vi /etc/ld.so.conf
#增加一条
/usr/lib/
#保存退出后,执行
#ldconfig

fetion的目录结构:
.\Readme.txt: 本说明文件
.\fetion:主程序
.\sound\*.wav:各种音效文件,您可以用自己喜欢的文件替换
.\plugins\plugin_*: 插件程序,您可以修改插件以达到自己的各性化需求

我在安装中遇到缺少krb5的库问题,这里写一下解决方法:
错误如下:
./fetion: error while loading shared libraries: libgssapi_krb5.so.2: cannot open shared object file: No such file or directory
安装一下krb5-libs包就可以解决啦:

yum install krb5-libs

完成之后测试,安装是否成功;执行

#cd install
# ./fetion -h
 Usage:
    fetion -h
        -h: help
    fetion -u mobile -p pwd [-b batchfile] [-EN] [-d]
    fetion -u mobile -p pwd [-b batchfile] [-EN] [-d]
        -u: Fetion user account(only supports mobile phone No.)
        -p: Account password
        -b: Batch file name
        -d: Debug on and write logs to [mobile]-debug.log
        -EN: English

三、实际测试
登录飞信默认是中文utf8的,如果linux系统不支持utf8会出现乱码:我使用english的方式来登录啦。
测试帐号:13713718888
密码:123456 (如果密码中含有特殊字符,请使用单引号)

./fetion -u 13713718888 -p 123456 -EN

登录后输入?获得帮助

****************************************************************
指令                    指令说明
list                     好友列表: list
sms                    发送短信: sms 飞信号/手机号/编号 短信内容(换行请用\n代替)
chat                   在线消息: chat 飞信号/手机号/编号 短信内容(换行请用\n代替)
status                 在线状态: status online/busy/away/hidden [个性化信息]
add                    添加好友: add 飞信号/手机号 申请信息 本地呢称
del                     删除好友: del 飞信号/手机号/编号
invite                 邀请好友: invite 手机号 您的姓名(邀请好友开通飞信)
autoaccept         自动接受: autoaccept on/off/status 自动接受加为好友申请
myinfo                修改资料: myinfo nickname/impresa 内容(呢称/心情)
help                   帮助菜单: help/?
exit                   退出系统: quit/exit
****************************************************************

sms 137******** "this is test message" # 这个就是我们需要的发送短信的指令啦!

脚本测试:
可以使用fetion的-b参数来实现p处理;
举例如下:

# vi p.sh
sms 13712312311 “msyqlserver is down”
sms 13712312312 “db1 is not running”
sms 13712312313 “warning db2 disk3 is full”
保存后执行:
./fetion -u 13713718888 -p 123456 -b p.sh
就是一次给3个admin发出报警信息。

还有许多插件的功能,我会在下次实际应用中写出日志和大家一起研究;
在初步接触中,发现可以实现一些交互信息的查询,比如直接向短信机器人发指令得到某台服务器的运行状态等。

阅读内文 Tags: , , , , , , ,

PERL正则 思维导图

7月 29th, 2008 | 1 Comment | Posted in Perl, 思维导图 < by Johnny Woo >

虽然不是很全.但是使用其中的内容
有80%的工作可以处理了

preg

阅读内文 Tags: , ,

监控系统报警的新选择

7月 29th, 2008 | 2 Comments | Posted in 系统监控 < by Johnny Woo >

上次Michael在MSN监控客户端的留言中提到了使用飞信来发送报警信息
而今天在一篇新闻中.提到了飞信的第三方库

LibFetion是一款支持多操作系统,使用C/C++语言,针对中国移动IM飞信通信协议开发的第三方应用程序库。(支持Windows、Linux、Mac三平台)
LibFetion 封装了飞信通信协议并存储相关数据,给开发者提供简洁、丰富的API接口。使用LibFetion飞信客户端的开发者只需专注于 GUI(图形用户界面)的设计开发,因此大大提高飞信客户端的开发速度和降低开发难度。使得飞信在多个操作系统平台上运行,达到“fetion anywhere“。
LibFetion是针对嵌入式设备系统设计的,它只使用了C库,提供平台线程库接口(缺省使用posix线程库)和网络接口(缺省使用socket)因此具有较强的可移植性。目前 LibFetion已在Linux,Mac OS X,Windows,ucLinux,Ecos操作系统上成功运行。
当前最新版本为 v0.8.0。

透过使用这个库
可以轻松的给监控系统加上手机短信发送功能
http://www.libfetion.cn/

阅读内文

JAVA -Xms与-Xmx区别

7月 28th, 2008 | No Comments | Posted in Java < by Johnny Woo >

在JDK 1.6.0_03下
-Xms应该是达到此值.jvm开始进行垃圾回收,而且此值应该是jvm的初始大小
而实际上在1.6下.jvm一启动.就会分配-Xmx大小的内存
所以在jdk 1.6下
xms应该是控制何时进行内存垃圾回收的参数
xmx应该是jvm的初始大小.同时也是jvm可用heap的最大值.

阅读内文 Tags: , ,

OpenFire增加使用内存

7月 28th, 2008 | No Comments | Posted in OpenFire < by Johnny Woo >

OpenFire的JVM默认情况下使用64M内存
这在将OpenFire作为服务运行的情况下肯定不够用
我们需要修改参数.使其能够占用服务器的更多内存资源

Windows:
在openfire的bin目录下建立openfired.vmoptions(作为应用程序运行)或者openfire-service.vmoptions(作为服务运行)
内容添加
-Xms512m
-Xmx512m

Linux:
修改/etc/sysconfig/opfire文件
去掉注释
OPENFIRE_OPTS=”-Xmx512m”

阅读内文 Tags: , ,

RHEL5 使用 CentOS5 yum

7月 25th, 2008 | 2 Comments | Posted in Linux < by Martian Guo >
for file in `rpm -qa |grep yum`; do rpm -e $file --nodeps ; done
rpm -ivh http://mirror.be10.com/centos/5.2/os/i386/CentOS/yum-metadata-parser-1.1.2-2.el5.i386.rpm
rpm -ivh http://mirror.be10.com/centos/5.2/os/i386/CentOS/python-iniparse-0.2.3-4.el5.noarch.rpm
rpm -ivh http://mirror.be10.com/centos/5.2/os/i386/CentOS/yum-3.2.8-9.el5.centos.1.noarch.rpm
rpm -ivh http://mirror.be10.com/centos/5.2/os/i386/CentOS/yum-updatesd-0.9-2.el5.noarch.rpm
rpm --import http://mirror.be10.com/centos/RPM-GPG-KEY-CentOS-5
wget http://www.hiadmin.com/wp-content/uploads/2008/07/Centos-Base.repo -P /etc/yum.repos.d/
yum update
阅读内文 Tags: , ,

PHP 正则表达式 思维导图

7月 25th, 2008 | 3 Comments | Posted in PHP, 思维导图 < by Martian Guo >

源文件下载

阅读内文 Tags: , ,

系统监控:msn在线机器人实时报警

7月 23rd, 2008 | 20 Comments | Posted in 系统监控 < by Michael Field >

一、实际需求
在应用各种监控软件(比如:cacti、nagios、sitescope等)的时候,我一般都会用到它的email阀值报警功能。如果这时候再加上一个msn在线监控机器人为你把关,第一时间给你发出msn报警信息,是不是能让你更快的处理问题呢。以下我为大家介绍一个msn command line 的小程序来实现这个功能。
软件下载地址:sendMsg

二、运行环境
一个支持php的系统环境就可以啦,当然要能上网,不然怎么发消息呢。
我的做法是和cacti监控服务器放一起,不需要额外的设备和资源投入。
注册一个msn的帐号用于监控机器人。比如:test@test.com 密码:123456
需要收到消息的msn帐号必须加监控帐号test@test.com为好友,不然收不到消息。

三、sendMsg用法
sendMsg.zip包中所有文件如下:

# ls -l sendMsg/
-
rw-r--r-- 1 root root 1213 Jul 29  2007 index.php //测试页面,web中打开开始测试;很容易做。
-
rw-r--r-- 1 root root 3894 Jul 29  2007 msnpauth-1.1.3.php
-
rw-r--r-- 1 root root 3372 Jul 29  2007 msnpauth.php
-
rw-r--r-- 1 root root 4586 Jul 29  2007 sendMsg.php
-
rw-r--r-- 1 root root  223 Jul 29  2007 simple.php
-
rw-r--r-- 1 root root 1424 Jul 29  2007 template.tpl

该程序也是通过登录msn服务器、建立IM会话,发送消息;
基本PHP语法如下:

$sendMsg = new sendMsg();
$sendMsg->login('test@test.com', '123456');
//刚才建立的用于举例的
msn监控机器人帐号
$sendMsg->createSession('recipient@hotmail.com');
//接受信息人的
msn帐号
$sendMsg->sendMessage('message', 'Times New Roman', 'FF0000');
//第一个是具体信息内容,后面可以设定字体和颜色;
$sendMsg->sendMessage(iconv("GBK", "UTF-8", 测试), 'Times New Roman', '008000');
//也利用
iconv转换gbkutf8来发送中文信息;

效果如下:

四、实际应用
这里是我自己写的一个应用发送msn信息的php脚本:仅供参考,如果大家有更好请和我交流。

#!/usr/bin/php
<?
if ($argc != 3) {
die("Usage: send_cndmonitor.php <msn-address> <messages>\n");
}
array_shift($argv);
$msnaddr = $argv[0];
$messages = $argv[1];
include('sendMsg.php');
$sendMsg = new sendMsg();
$sendMsg->login('test@test.com', '123456');
$sendMsg->createSession($msnaddr);
$sendMsg->sendMessage($messages, 'Times New Roman', '008000');
?>

主要是为了能被其他脚本调用,用于发送一个报警信息。缺点是不能判定错误,所以实际运用中存在故障,需要网络流畅的环境下使用。

我们的生产环境已经存在大量的监控系统,所以针对错误信息已经整理到数据库中,因此我只需要从数据库导出目前存在error信息的文本文件,然后根据节点位置发送给相关维护负责人即可。

为了能判定和确保发送正确,我利用sendMsg中的index.php的页面和shell脚本相结合来循环发送,实在抱歉本人PHP程度有限;
脚本如下:(这是我实例中使用的一个工作脚本,仅供大家借鉴)

#!/bin/sh
wget --user=monitor --password=123456 http://127.0.0.1/monitor/msn.txt -O /var/www/html/sendMsg/msn.txt.1 >/dev/null 2>&1
#下载msn要发送的信息,因为页面都是认证的所以用了wget的user和password;
now=`date +%Y-%m-%d-%H:%M`
[ -f /var/www/html/sendMsg/msn.txt ] && oldmd5=`md5sum var/www/html/sendMsg/msn.txt |awk '{print $1}' |tee /var/log/cdn_status_old.md5` || exit 0
[ -f /var/www/html/sendMsg/msn.txt.1 ] && newmd5=`md5sum var/www/html/sendMsg/msn.txt.1 |awk '{print $1}' |tee /var/log/cdn_status_new.md5` || exit 0
SA=(admin1 admin2 admin3 admin4)
# 相关负责人列表和下载的msn信息的中的名字对应;
msnaddr=(admin1@msn.com admin2@msn.com admin3@msn.com admin4@msn.com)
# 相关负责人的msn帐号和SA变量中的的名字顺序一一对应;
sendMsg()
{
num=0
while [ $num -lt 1 ];
do
wget --post-data "sender=test@test.com&password=123456&recipient=${1}&message=${2}" http://127.0.0.1/sendMsg/index.php -O /var/www/html/sendMsg/index.php.1 >/dev/null 2>&1
# 使用wget post-data发送post参数给index.php页面,用以发送msn信息。
if [ -f /var/www/html/sendMsg/index.php.1 ]; then
if cat /var/www/html/sendMsg/index.php.1 |grep -i successfully >/dev/null 2>&1;then
num=1 #判断信息发送成功
elif cat /var/www/html/sendMsg/index.php.1 |grep -i "The user appears to be offline" >/dev/null 2>&1;then
num=1 #判断msn接受人为是否在线状态
echo "The user is offline."
exit 0
elif cat /var/www/html/sendMsg/index.php.1 |grep -i "Something went wrong trying to connect to the server" >/dev/null 2>&1;then
num=1 #判断msn 服务器存在连接问题
echo "MSN server is wrong."
exit 0
else
num=0 #除了以上三种情况退出循环外,其他情况重试。
fi
rm -f /var/www/html/sendMsg/index.php.1
else
num=0
fi
done
}
 
if [[ $oldmd5 == $newmd5 ]];then #校验msn的信息是否是已经发送过的,主要是为了不重复发送错误信息。
rm -f /var/www/html/sendMsg/msn.txt.1
exit 0
else
mv /var/www/html/sendMsg/msn.txt /var/www/html/sendMsg/bak/msn$now.txt -f
mv /var/www/html/sendMsg/msn.txt.1 /var/www/html/sendMsg/msn.txt -f
#备份已发送的msn错误信息
 
fi
 
for i in `seq 0 1 3` #根据维护人员的数量进行判断和循环
do
if cat /var/www/html/sendMsg/msn.txt |grep -i ${SA[$i]}; then
messages=`cat /var/www/html/sendMsg/msn.txt |grep -i ${SA[$i]}`
sendMsg "${msnaddr[$i]}" "$messages"
else
continue
fi
done

加入到crontab每5分钟执行一次;考虑维护人员的上线时间(最好是24H值班msn,那就不存在这个问题)设定执行时间为每周1到5的9点到18点;

*/5 9-18 * * 1-5 /var/www/html/sendMsg/send_report.sh

实际应用大家可以根据自己的情况进行调整,我这里只是告诉大家怎么使用sendmsg,举了一个简单的实例帮助大家理解和应用。

如果懂php语言的可以把这个作为cacti的一个插件使用,那样效果就更棒啦~

阅读内文 Tags: , , , , ,

VBS-更改mstsc端口

7月 23rd, 2008 | 2 Comments | Posted in 3.开发, VBS < by John.Lv >

Set WshShell=CreateObject(”Wscript.Shell”)
Function Imput()

‘定义更改端口输入框
imputport=InputBox(”请输入一个端口号,注意:这个端口号目前不能被其它程序使用,否则会影响终端服务”,” 更改终端端口号”, “3389″, 100, 100)
If imputport<>”" Then ‘判断不为空
If IsNumeric(imputport) Then ‘判断输入端口为数字

‘更改注册表

WshShell.RegWrite “HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp\PortNumber”,imputport,”REG_DWORD”
WshShell.RegWrite “HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber”,imputport,”REG_DWORD”
wscript.echo “操作成功”
Else wscript.echo “输入出错,请重新输入”
Imput()
End If
Else wscript.echo “操作已经取消”
End If
End Function
Imput()
set WshShell=nothing

阅读内文

Cisco设备配置snmp

7月 23rd, 2008 | No Comments | Posted in Cisco < by John.Lv >

一、设置IOS设备(路由器)

config terminal 进入全局配置状态
Cdp run 启用CDP
snmp-server community gsunion ro 配置本路由器的只读字串为gsunion
snmp-server community gsunion rw 配置本路由器的读写字串为gsunion
snmp-server enable traps 允许路由器将所有类型SNMP Trap发送出去
snmp-server host IP-address-server traps trapcomm 指定路由器SNMP Trap的接收者为10.238.18.17,发送Trap时采用trapcomm作为字串
snmp-server trap-source loopback0 将loopback接口的IP地址作为SNMP Trap的发送源地址
logging on 起动log机制
logging IP-address-server 将log记录发送到10.238.18.17 (CW2K安装机器的IP地址)上的syslog server
logging facility local7 将记录事件类型定义为local7
logging trap warning 将记录事件严重级别定义为从warningl开始,一直到最紧急级别的事件全部记录到前边指定的syslog server.
logging source-interface loopback0 指定记录事件的发送源地址为loopback0的IP地址
service timestamps log datetime 发送记录事件的时候包含时间标记
enable password ******
copy running start或write terminal保存配置

1.启用SNMP:

configure terminal

snmp-server community rw/ro (example: snmp-server community public ro)
2.启用陷阱:

configure terminal

snmp-server enable traps snmp authentication

3.配置snmp
#conf t
#snmp-server community cisco ro(只读) ;配置只读通信字符串
#snmp-server community secret rw(读写) ;配置读写通信字符串
#snmp-server enable traps ;配置网关SNMP TRAP
#snmp-server host 10.254.190.1 rw ;配置网关工作站地址
二、设置CatOS设备(交换机)
在CatOS的Enable状态下,敲入
set interface sc0 VLAN ID IP address 配置交换机本地管理接口所在VLAN ID,IP地址,子网掩码
Set cdp enable all 启用CDP
set snmp community read-only gsunion 配置本交换机的只读字串为public
set snmp community read-write-all gsunion 配置本交换机的读写字串为private
set snmp trap server-ip gsunion

指定交换机SNMP Trap的接收者为网管服务器,发送Trap时采用gsunion作为字串
set snmp trap enable all 将全部类型的SNMP Trap发送出去
set snmp rmon enable 激活交换机的SNMP RMON功能
set logging server IP-address-server 将log记录发送到网管服务器的IP (CW2K安装机器的IP地址)上的syslog server
set logging level 6 将记录事件严重级别定义为从informational开始,一直到最紧急级别的事件全部记录到前边指定的syslog server
set logging server facility local7 将记录事件类型定义为local7
set logging timestamp 发送记录事件的时候包含时间标记
set logging enable 起动log机制
write terminal 显示并检查配置
保存配置

感谢朋友兼同事李关提供资料

阅读内文

PHP5 OOP 学习 思维导图

7月 20th, 2008 | 3 Comments | Posted in PHP, 思维导图 < by Martian Guo >

学习PHP5 面向对象程序设计中的一些内容总结。
源文件下载:
php5_oop.mm

阅读内文 Tags: ,

BlackBerry查询版本

7月 17th, 2008 | 1 Comment | Posted in 生活随笔 < by Johnny Woo >

在BB的主画面, 同时按下ALT+CAP+H

部分代理BB的知名运营商的代号一览
100 美国T-Mobile
102 北美Cingular
107 加拿大Roger
114 丹麦/奥地利T-Mobile
116 香港3 (和记电讯)
119 法国Orange
120 英国Vodafone
123 英国T-Mobile
124 德国Vodafone
125 英国/爱尔兰的O2
128 新加坡StarHub
141 香港CSL
142 英国Orange
144 新加坡Singtel
146 澳大利亚 optus
167 新加坡MobileOne
176 香港数码通Smartone

完整的运营商ID编号
100 T-Mobile US
101 AWS
102 Cingular Wireless
103 Nextel
104 Sprint PCS
105 Verizon
106 Alltel
107 Rogers
109 BWA (Aliant/Sasktel)
111 MM02 DE
113 Telfort
114 T-Mobile DE/AU
115 TIM
116 Hutchison
117 Bouygues
118 SFR
119 Orange_France
120 VODAFONE (UK)
121 Telcel
122 Telstra
123 T-Mobile (UK)
124 Vodafone Germany
125 MM02 UK/IRL/NL
126 Telus
127 SMART
128 Starhub
129 Telefonica
130 Swisscom
131 Cable & Wireless
132 Vodafone (IT)
133 Vodafone (ES)
134 T-Mobile (NL)
135 Cincinnati Bell
136 Telefonica_LAM
137 Vodafone Austria
138 Vodafone Australia
139 Vodafone Ireland
140 Vodafone Sweden
141 CSL
142 Orange UK
143 Vodafone New Zealand
144 SingTel
145 Globe
146 Optus
147 Orange Mobistar
148 Vodafone_HU
149 Bharti
150 KPN
151 TIM_Greece
152 Proximus
153 Vodafone_Portugal
154 TIM_Brazil
155 BT_Mobile
156 Earthlink
158 E-Plus
159 BASE
160 Dobson
161 Vodafone_Egypt
162 Orange_Switzerland
164 Triton
165 Maxis
166 Vodafone_Denmark_(TDC)
167 MobileOne_(Voda_Singapore)
168 Vodacom
169 T-Mobile_PO
170 T-Mobile_CZ
171 T-Mobile_HU
173 MTN
174 Entel
175 Amena
176 SmarTone
177 TCS
178 Avea
179 F100
180 Turkcell
181 Partner
183 Orange_Global
186 Telkomsel
188 Vodafone_Greece
189 USCC
190 Mobilink
194 Voda_Luxembourg
195 Voda_Iceland
198 Vodafone_CZ
204 China_Mobile
205 Movilnet
209 Sympac
210 TIM_Argentina
212 Etisalat
214 AMX
215 Telefonica_Venezuela
217 Orange Romania
218 KTP
222 Mobitel Bulgaria
224 PCCW/Sunday
227 Mobily
229 Eurotel
230 Hutchison Essar

PS:用后感
1.铃声清脆响亮.除了山寨机.是最响的一款了.而且最大没有破音.高音低音音质都很好
2.信号好.通话清晰.办公室在40楼.信号非常差.NOKIA的都会断断续续.并且打一会儿就突然没信号.或者是放在桌上.不一会儿信号变成没有.黑莓就很稳定了.而且接听通话很清晰.
3.待机长.如果按照一款手机待机4天,那不算长,但是黑莓的超大宽屏还能做到待机4天.实在是NB
4.屏幕细腻,显示效果好.加上黑莓的抗日照的技术.即便是超大的太阳.还能够看得清.
5.辐射小.以前的NOKIA 6070.一来信号.屏幕就开始抖.所以我都能预知是来电话还是来短信.看屏幕的抖动就知道了.现在的黑莓放在旁边.来了电话和短信.一点反应都没有.

WAP上网设定
1.自带浏览器无法使用CMWAP上网
2.由于现在CMWAP/CMNET流量合并.所以建议使用CMNET方式.使用OPREA MINI.
3.选项->高级设置-> TCP -> APN 输入CMNET 保存即可.
4.8700 4.2.114ROM之后无需激活MDS.所以MDS可以不用去管.设置APN之后就可以了.

阅读内文

一个令我感动的人

7月 16th, 2008 | 2 Comments | Posted in 生活随笔 < by Johnny Woo >

Paul Potts
一个走在街上你都不会多看两眼的人
甚至连平凡都够不上的人
现实生活中的丑小鸭
“身材矮胖,长着一口烂牙的土豆”
当他走上舞台
评委都没有任何预期的时候
他给了所有人一个震惊
当你听到他的歌声的时候
你才会发现他是真正把歌唱当作生命
从心底来歌唱的人
他的歌声和所有的歌手不同
听到他的歌声,会有种莫名的感动
在他的初赛中.我们确实看到了一块宝石从石头中诞生的过程
http://v.youku.com/v_show/id_XNTY1NzU5Mg==.html
而在最终决赛的时候
他再一次感动了所有人
用他的真挚的演唱
http://v.youku.com/v_show/id_cf00XNTkwNjgzMg==.html
也许和simon说的一样
“我们看到了拥有才华却不自知的普通人,平常做着普通工作,然后你却看到了截然不同的光芒。我们发现了宝石,青蛙变成了王子”
我们每个人其实都拥有特定的才华
但是平凡的生活却掩盖了我们的闪光点
Paul让我感动在于
他的努力,让不可能变成可能.
让我看见最平凡人的闪光.
那种执着和真诚.

阅读内文

WordPress 2.6 正式版发布

7月 15th, 2008 | No Comments | Posted in 生活随笔 < by Johnny Woo >

经过了RC1,2之后
WordPress 2.6正式版发布
中文正式版可由此处下载
http://wpchina.org/downloads/
令我比较开心的是新版本之中
引入了类似版本控制的功能
能够比较新老版本文章之间的变化

自 WordPress 2.5 以来,WordPress 2.6 的主要更新包括:
# 文章版本管理功能,将保存你每次所修改的版本,允许你查看(不是编辑)每次修改的版本,可以对任何两个版本进行比较;
# 允许在文章和页面中显示图片的说明;
# 在管理面板的设计中,增加了主题分页功能;
# 在撰写和编辑文章的时候,自动统计字数;
# 增加里“快速发布”书签;
# 增加了相册排序功能;
# 导入/导出文章摘要;
# 增加了主题预览工具;
# TinyMCE 编辑器升级到 3.1;
# 允许两个分类有相同的子分类。

阅读内文 Tags: , ,

基于红帽RHEL5U2 GFS2+ISCSI+XEN+Cluster 的高可用性解决方案(转载)

7月 13th, 2008 | No Comments | Posted in 集中存储 < by Martian Guo >
作者:史应生 
红帽认证架构师 红帽认证安全专家
文章版权:GPL
联系方式:shiyingsheng@gmail.com

下载地址
http://blogimg.chinaunix.net/blog/upfile2/080704173852.rar

背景介绍:

本方案结合红帽公司当前的主流技术和各软件最高的发行版本:

· 并发文件系统技术 -GFS2,
· 基于IP协议的SAN技术 -ISCSI,
· 虚拟化与活迁移技术 -Virtualization(Xen)+Live Migration,
· 红帽集群套件 -RHCS(支持虚拟化服务,全新的基于web的conga配置界面)
在红帽企业版高级平台上,设计和搭架了一套高可用性解决方案。

适用读者:

1.中/高级Linux系统管理员
2.系统集成商
3.解决方案构架师
4.所有从事开源的爱好者

注:在本文章中,我只讲述了如何成功配置的步骤,对每个技术的原理和优点不做说明.

目录

第一章 系统结构图…. 5
第二章 物理机系统安装和配置…….. 8
2.1 安装和配置 iscsitarget机器………. 8
2.2 配置iscsitarget服务端.. 9
2.3 安装physical1物理机.. 10
2.4 配置physical1的iscsi-initiator客户端………. 11
2.5 安装physical2物理机.. 13
2.6 配置physical2的iscsi-initiator客户端………. 14
2.7 配置physical1和physical2支持clvm. 15
第三章 配置dom0-cluster…….. 16
3.1 在iscsitarget机器上配置luci……. 16
3.2 创建dom0-cluster基本框架………. 17
3.3 设置共享存储……… 22
3.4 安装虚拟机……….. 29
3.5 虚拟机的Live Migration 38
3.6 为dom0-cluster配置Failover domain.. 40
3.7 为dom0-cluster创建虚拟机服务…… 42
3.8 为dom0-cluster添加Fence设备…… 47
第四章 配置apache-cluster…… 53
4.1 创建apache-cluster基本框架…….. 53
4.2 为apache-cluster配置FAILOVER DOMAIN………. 54
4.3 为apache-cluster添加资源………. 56
4.4 为apache-cluster添加服务………. 59
4.5 为apache-cluster添加Fence设备….. 62
第五章 系统测试….. 68
5.1 physical1-virt1虚拟机宕机测试….. 68
5.2 physical1物理机宕机测试……….. 69

阅读内文 Tags: , , , , ,

用Expect实现命令行交互的自动化操作

7月 11th, 2008 | 1 Comment | Posted in shell < by Martian Guo >

Expect 是一个控制交互式程序的工具。你可以用它来编写一段脚本来处理一些交互式的操作,比如执行passwd、su 远程登录 ssh,远程命令操作等 ,如果你有多台服务器需要执行相同的操作命令,用Expect就比较适合。
下面这段文字描述了expect的一些概念。

* Expect 是一种特定的、高级的和通用的编程语言,其语法与 Tcl 相同,并增加了 Tcl 中所没有的一些特殊用途的命令。
    * Expect 是一种可执行程序,从它正确地处理用 Expect 语言编写的输入的角度来看,它实现了这种语言。
    * expect 命令是其中的一个命令,Expect 以此对 Tcl 进行了扩展。
    * Expect 是一个 Tcl 包。一般说来,这意味着任何 Tcl 应用程序都可以在运行时加载 Expect 功能。
    * Expect 是一个基于 C 源代码的库,而这些 C 源代码则深入到 Expect 可加载的包和 Expect 可执行程序。
    * Expect 是某种工具的抽象概念,该工具:
          o 实现终端交互的自动化,甚至在涉及到密码或者其他特殊项目的情况下
          o 实现了一种“对话”模型,通过它对消息和响应的简单规律进行编码

下面两篇文章详细介绍了Expect的使用
http://fanqiang.chinaunix.net/a4/b8/20010912/1000001278.html
http://www.ibm.com/developerworks/cn/aix/library/au-expect/index.html

当然,在学习Expect 之前你应当先学习一些Tcl编程的内容,请看这里 TclTk中文网,另外expect 的安装需要依赖Tcl,你必须首先安装 Tcl。

下面是我写的一段演示脚本,主要操作是从一个文本中批量读取ip地址,普通用户用户名和密码,超级用户密码,执行ssh登录,su root 操作 然后退出

pwd.txt

127.0.0.1       mars    1234        root            123456
192.168.0.3       mars    1234        root            123456

run.exp

#!/usr/bin/expect
set timeout 5
proc do_ssh_login {host username pass susername spass} {
    
set timeout_case 0
    
set done 1
 
    
send_user "\n"
    
spawn ssh $username@$host
    
send_user "正在连接主机 $host\n"
    
while {$done} {
 
    
expect {
            
timeout {
                  
switch -- $timeout_case {
                
0 { send "\n" }
                
1 {
                      
send_user "重试...\n"
                      
send "\n"
                  
}
                
2 {
                    
puts stderr "登录超时...\n"
            
close
            
set done 0
            
break
                  
}
              
}
              
incr timeout_case
              
}
 
        
"*(yes/no)?" {send "yes\n"}       
        
"?assword:"  {send "$pass\n"}
        
"*Permission denied*" {    send_user "登录受限\n"
                    
close
                    
set done 0
                    
break
                      
}
          
"*Connection refused*" { send_user "主机不可访问\n"
                    
close
                    
set done 0
                    
break
                      
}
        
"*$*" {send_user "\n登录成功...\n"
            
if {[string  equal $susername "NULL"] !=1} {
                    
send "export LC_ALL=en_US\r"
                    
send "su - $susername\r"
                      
expect "*Password:*"
                      
sleep 1
                      
send "$spass\n"
                
expect {
                    
"*Authentication failure*" {send_user "密码错误\n"
                                        
close
                                    
break
                                          
}
                          
"*Permission denied*" {send_user "登录受限\n"
                                      
close
                                  
break
                                          
}   
                        
}
            
}
              
}
        
"*#*" {
                
send_user  "超级用户登录成功\n"
                
send_user "\n*************************$host********************************\n"
                
send "cat /proc/cpuinfo |grep model\\ name\n"
                
expect "#"
                
send "df -T\n"
                
expect "#"
                
send "fdisk -l\n"
                
expect "#"
                
send "free\n"
                
expect "#"
                
send "lspci\n"
                
expect "#"
                
expect {
                
"#" {set done 0
                    
send_user "\n***************************************************************\n"
                    
send_user "\n"
                    
send "exit\n"
                  
}
                
}
          
}
        
}
    
}
 
}
 
set f [open "pwd.txt" r]
while { [gets $f line] >= 0 } {
set su [lindex $line 3]
set sp [lindex $line 4]
if { [string length $su] <=0 } {
    
set sp "NULL"
    
set su "NULL"
}
do_ssh_login [lindex $line 0] [lindex $line 1] [lindex $line 2]  $su