#!/usr/bin/env python
# -*- coding: utf-8 -*-

#ip转化为long型格式
def iptolong(ipaddr):
    data = 0L
    ip = ipaddr.split('.')
    for i in range(0,len(ip)):
        if 0 <= long(ip[i]) < 256:
            data = data+long(ip[i])*(256**(3-i))
        else:
            data = 0L
            break
    return data

#long型转化成ip格式
def longtoip(iplong):
    i_4 = iplong % 256
    i_3 = (iplong - i_4)/256 % 256
    i_2 = (iplong - i_3*256 - i_4)/256**2 % 256
    i_1 = (iplong - i_2*256*256 - i_3*256 - i_4)/256**3 % 256
    ip = str(i_1)+'.'+str(i_2)+'.'+str(i_3)+'.'+str(i_4)
    return ip



| | Comments (0) | TrackBacks (0)

说明:
本文是在apache2+resin3(开源版)环境下的配置,主要是对resin3配置进行了分析,详细调试请见caucho-doc ,apache2的调优见apache的man文档。实践总结,如转载请注明出处--2hei.net 谢谢.

  Using Resin(R)  under the GNU Public License (GPL).
  See
http://www.caucho.com for information on Resin Professional,
  including caching, clustering, JNI acceleration, and OpenSSL integration.

resin配置文件:  resin.conf

1、dependency-check-interval 参数调整
resin检查系统配置及java、jsp、resin.conf等文件的时间间隔。
默认值为2秒,适合开发及调试环境,如果是正式环境尽量把参数调大或者直接改为-1,不允许检查,也就是禁止了热部署。
<dependency-check-interval>-1s</dependency-check-interval>

2、缓存
改变cache-mapping的值:
      <cache-mapping url-pattern="/" expires="5s"/>
      <cache-mapping url-pattern="*.gif" expires="60s"/>
      <cache-mapping url-pattern="*.jpg" expires="60s"/>
      <cache-mapping url-pattern="*.png" expires="60s"/>
3、jvm优化
jvm需要根据你的系统配置及应用来调整。

JVM OPTION PASSED TO RESIN     MEANING
-Xms                           initial java heap size
-Xmx                           maximum java heap size
-Xmn                           the size of the heap for the young generation

将-Xms和-Xmx设置为一样大小是不错的选择。
如: bin/httpd.sh -Xms500M -Xmx500M -Xmn100M

更多的关于jvm优化参数如:young generation、Eden generation、older generation可见
Sun documentation on garbage collection

jvm的监控,google一下有很多的工具,如:jconsole jstat jstack

jconsole的使用见我的另外一篇文章 《使用Jconsole对java的内存使用情况(JVM)进行监控

$jps
1229 Jps
1003 Resin
973 resin.jar

$jmap 973
Attaching to process ID 973, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 1.5.0_16-b02
0x0000000040000000      64K     /home/jdk1.5.0_16/bin/java
0x00000030b2a00000      127K    /lib64/ld-2.5.so
0x00000030b2e00000      1647K   /lib64/libc-2.5.so
0x00000030b3200000      22K     /lib64/libdl-2.5.so
0x00000030b3600000      600K    /lib64/libm-2.5.so
0x00000030b3a00000      138K    /lib64/libpthread-2.5.so
0x00000030b5a00000      111K    /lib64/libnsl-2.5.so
0x00002aaab46ad000      26K     /home/jdk1.5.0_16/jre/lib/amd64/libmanagement.so
0x00002aaab49de000      79K     /home/jdk1.5.0_16/jre/lib/amd64/libnet.so
0x00002aeeac3c1000      9933K   /home/jdk1.5.0_16/jre/lib/amd64/server/libjvm.so
0x00002aeeacd46000      43K     /home/jdk1.5.0_16/jre/lib/amd64/native_threads/libhpi.so
0x00002aeeace61000      52K     /lib64/libnss_files-2.5.so
0x00002aeead06c000      58K     /home/jdk1.5.0_16/jre/lib/amd64/libverify.so
0x00002aeead17b000      171K    /home/jdk1.5.0_16/jre/lib/amd64/libjava.so
0x00002aeead2a5000      78K     /home/jdk1.5.0_16/jre/lib/amd64/libzip.so

jstat -gc 1489 1000 3
 S0C    S1C    S0U    S1U      EC       EU        OC         OU         PC     PU        YGC     YGCT  FGC     FGCT     GCT  
43648.0 43648.0  0.0    0.0   262208.0 101390.5  699072.0   18545.6   28032.0 15756.6      1    0.055   1      0.115    0.170
43648.0 43648.0  0.0    0.0   262208.0 101390.5  699072.0   18545.6   28032.0 15756.6      1    0.055   1      0.115    0.170
43648.0 43648.0  0.0    0.0   262208.0 101390.5  699072.0   18545.6   28032.0 15756.6      1    0.055   1      0.115    0.170

jstack 1489
Thread 1495: (state = BLOCKED)
 - java.lang.Object.wait(long) @bci=0 (Interpreted frame)
 - java.lang.Object.wait() @bci=2, line=474 (Interpreted frame)
 - java.lang.ref.Reference$ReferenceHandler.run() @bci=46, line=116 (Interpreted frame)

Thread 1489: (state = IN_NATIVE)
 - java.net.SocketInputStream.socketRead0(java.io.FileDescriptor, byte[], int, int, int) @bci=0 (Interpreted frame)
 - java.net.SocketInputStream.read(byte[], int, int) @bci=84, line=129 (Interpreted frame)
 - java.net.SocketInputStream.read() @bci=23, line=182 (Interpreted frame)
 - com.caucho.server.resin.Resin.waitForExit() @bci=304, line=1265 (Interpreted frame)
 - com.caucho.server.resin.Resin.main(java.lang.String[]) @bci=42, line=1367 (Interpreted frame)
 

4、JNI加速
resin不使用NIO而是使用了JNI的方式使用本地码的方式来提升效率,经验证,resin使用JNI的效率要高于使用NIO,
使用JNI是需要对resin进行编译,在./configure时把jni编译进去,

./configure --enable-jni      美中不足的是Resin Professional版本才提供此项功能。

下面是resin-doc的说明:
Resin does not use NIO - it uses JNI to handle low-level I/O calls with native code. The performance using this method was found to be much better than nio.

5、jsp第一次编译的处理
一般来讲,第一次访问jsp会自动进行编译,如果更新了过多的jsp、且系统访问很大的话,重启resin容易造成负载过高。

下面配置是启动app-server时,对所有的jsp进行编译,编译完毕后启动监听,这样启动时间会长一些,但是可以防止第一次访问编译造成系统负载大。
      <listener>
        <listener-class>com.caucho.jsp.JspPrecompileListener</listener-class>
        <init>
          <extension>jsp</extension>
          <extension>jspx</extension>
        </init>
      </listener>
6、resin 与apache 性能的比较
resin3单独使用时性能也是不错,当然也可以跟apache配合使用。下面是resin-doc中的说法:
For JSP and Servlets, Resin standalone is certainly faster than Resin/Apache. Because of the extra overhead of the Resin/Apache connection, the Resin/Apache configuration is necessarily slower than Resin standalone.
可以看出各有优劣,
apache对于静态页面来说比较快。如果使用了SSL,apache+resin要比resin单独使用快一些,更为重要的是resin3的开源版本不支持ssl。

7resin-server TIME_WAIT 过多的处理
thread-max指定了最大连接数,socket-timeout是socket超时时间
keepalive-max指定了长连接的数量,这是可以重复使用的连接,netstat -an时系统可以看到响应数量的ESTABLISHED状态
设定keepalive-max和把keepalive-timeout调小可以减少TIME_WAIT的数量。
      <thread-max>256</thread-max>
      <socket-timeout>65s</socket-timeout>
      <keepalive-max>128</keepalive-max>
      <keepalive-timeout>120s</keepalive-timeout>
一般来讲如果是Resin standalone方式,调整timeout并不是很重要,如果是apache+resin的方式,而且apache压力很大的情况下,需要调小timeout的值。
load-balance-idle-time是用来设置load-balance和分布式session的关闭时间,默认时间为keepalive-timeout - 1s
<load-balance-idle-time>100s</load-balance-idle-time>

8、关于watchdog
resin3启动是多了一个watchdog的进程。可以单独启动也可以跟随resin.jar一起启动,主要是用来监控resin jvm实例,在必要的时候重启。

<watchdog-jvm-arg>-Dcom.sun.management.jmxremote</watchdog-jvm-arg>
<watchdog-port>6600</watchdog-port>

查看  watchdog  状态   
java -jar lib/resin.jar status
Resin/3.1.6 status for watchdog at 127.0.0.1:6600

server '' : active
  password: missing
  user: root
  root: /home/resin/
  conf: /home/resin/conf/resin.conf

| | Comments (0) | TrackBacks (0)
今天遇到这样一个问题,mysql无法登陆,日志提示如下:
[Wed Nov 12 14:15:38 CST 2008][MysqlDb.connectDB]java.sql.SQLException: Client does not support authentication protocol requested by server; consider upgrading MySQL client

搜了一下,好多人遇到此问题,大致是mysql版本不通造成的,以下是解决办法:
mysql>UPDATE mysql.user SET Password = OLD_PASSWORD('yourpass') WHERE Host = 'localhost' AND User = 'username';
mysql>FLUSH PRIVILEGES;

这里是mysql官方的解释!
http://dev.mysql.com/doc/refman/5.0/en/old-client.html
| | Comments (0) | TrackBacks (0)
cat /var/log/messages
 i meet such logs:
 kernel: mptbase: ioc0: LogInfo(0x31120401): Originator={PL}, Code={Abort}, SubCode(0x0401)
 
#modinfo mptbase
filename:       /lib/modules/2.6.18-53.1.13.el5/kernel/drivers/message/fusion/mptbase.ko
version:        3.04.04
license:        GPL
description:    Fusion MPT base driver
author:         LSI Logic Corporation
srcversion:     DEE575D01207DC868D4D69B
depends:       
vermagic:       2.6.18-53.1.13.el5 SMP mod_unload gcc-4.1
parm:           mpt_msi_enable: MSI Support Enable (default=0) (int)
parm:           mpt_channel_mapping: Mapping id's to channels (default=0) (int)

#lsmod
Module                  Size  Used by
ipv6                  411425  16
dm_mirror              60105  0
dm_mod                 96017  1 dm_mirror
video                  51273  0
sbs                    49921  0
backlight              39873  0
i2c_ec                 38593  1 sbs
button                 40545  0
battery                43849  0
asus_acpi              50917  0
acpi_memhotplug        40133  0
ac                     38729  0
parport_pc             62313  0
lp                     47121  0
parport                73165  2 parport_pc,lp
sg                     69865  0
shpchp                 70765  0
ata_piix               49861  0
i2c_i801               41429  0
tg3                   141381  0
i2c_core               56129  2 i2c_ec,i2c_i801
libata                160977  1 ata_piix
pcspkr                 36289  0
mptsas                 62545  6
mptscsih               56513  1 mptsas
mptbase                92640  2 mptsas,mptscsih
scsi_transport_sas     66753  1 mptsas
sd_mod                 56257  7
scsi_mod              186361  6 sg,libata,mptsas,mptscsih,scsi_transport_sas,sd_mod
ext3                  166993  5
jbd                    93873  1 ext3
ehci_hcd               65229  0
ohci_hcd               54493  0
uhci_hcd               57433  0

cat /proc/mdstat
Personalities :
unused devices: <none>

google and google, no answer!
~ who can help me ? ~ 

| | Comments (0) | TrackBacks (0)
教程列表地址:
http://www.youku.com/playlist_show/id_2566735_ascending_1_page_1.html


下面是第26讲,ip协议
| | Comments (0) | TrackBacks (0)
I install php5.2.6 with apache2.x, I meet this error!

Installing PHP SAPI module:       apache2handler
/home/apache2/build/instdso.sh SH_LIBTOOL='/home/apache2/build/libtool' libphp5.la /home/apache2/modules
/home/apache2/build/libtool --mode=install cp libphp5.la /home/apache2/modules/
cp .libs/libphp5.lai /home/apache2/modules/libphp5.la
cp .libs/libphp5.a /home/apache2/modules/libphp5.a
chmod 644 /home/apache2/modules/libphp5.a
ranlib /home/apache2/modules/libphp5.a
libtool: install: warning: remember to run `libtool --finish /home/yujingtao/soft/php-5.2.6/libs'
Warning!  dlname not found in /home/apache2/modules/libphp5.la.
Assuming installing a .so rather than a libtool archive.
chmod 755 /home/apache2/modules/libphp5.so
chmod: cannot access `/home/apache2/modules/libphp5.so': No such file or directory
apxs:Error: Command failed with rc=65536
.
make: *** [install-sapi] Error 1

my configure script is below:
./configure --with-apxs2=/home/apache2/bin/apxs --with-mysql-sock=/tmp/mysql.sock LDFLAGS='-L/usr/lib64'

google for a along time , still have this error, Can anybody help me??
| | Comments (0) | TrackBacks (0)
经过连续几天加班后,可怜的破本终于向我示威了,先是发烧,温度高达摄氏70多度,然后变得迟钝,糊涂起来,打开记事本都需要想上半天,而且听见硬盘灯狅闪、还伴随卡拉卡拉的声响,风扇就跟抽风机似的,那叫一个吵!
垃圾本也真是往死里折腾啊,今天早上终于挂掉了,开机后居然蓝屏,蔚蓝的屏幕看着真是让人轻松,只是那两行醒目的英文着实有些扎眼: 
c000021a unknown hard error
凭借多年的经验,我断定重新启动一下应该可以恢复,试了几次,可惜都不管用! Xp启动时的进度条闪过去后,还是迅速地转为蓝屏的,好喝的,充足的,我呸呸!
试过了安全模式居然也无法进入。。。
无语了

去其他电脑google了一番,发现怎么解释的都有,不过都不靠谱、再说不靠谱的事也并不适合我,
回想起来最近的操作,最令我感到怀疑的就是昨晚勤劳勇敢的卡巴曾经提示有个dll文件是木马,问我是否删除,哎!想都没想就点击了删除。工作到深夜,合上本就睡了。

早上,忙,很多事情堆到了一起,没有电脑,工作真是没法进行啊!
赶紧把破本还给了IT去检查,先借了一个更破的本本用先,可惜是个裸奔,嘛软件也木有,麻烦死了,我的n多环境的安装啊,不过也没有办法,凑合先用着吧。。

中午过后,IT大哥下山,结果出炉,本本重装,C盘格掉,其他保留!

不错的结果,我很满意!想想如果是硬盘挂掉,等着哭吧就。

送各位一句金玉良言:卡巴虽好,也不尽可信,备份麻烦,真的重要啊!
| | Comments (0) | TrackBacks (0)

荒废了几年的足球,如今捡就算起来了,坚持了将近1个多月,
one week one time !
但是踢球的感觉明显不一样了,位置明显靠后,
昔日的前锋到现在的后卫,甚至门将。。。
岁月的磨砺终于显示出它的力量,
每况愈下的体力成就了现在只能靠意识踢球的“懒人”。

遥想当年皮肤黝黑、浑身臭汗的疯狂少年,
也曾是个整天天泡在在绿荫场,不知疲惫的小小球星;
那个当年龙江通信杯身披10号战袍的优秀年轻人,如今也已不再年轻,
对于足球的热爱或许只能通过品头论足来体现吧!

如今,每周一次的足球运动对于我来讲是如此的难得,也是如此的珍惜,
现在不需要多么的表现自己的华丽脚法,
也无需一次次体验进球后的快感,
只要能够跑在那柔软的草坪上,
尽情享受足球的乐趣就是那么的让我心满意足!

3年后,终于又可以踢上了大场,3年后也终于又参加正式的比赛,
兄弟,拿出激情来吧,
哪怕是只有疯狂的呐喊!
第四届中国网络媒体足球精英赛》必将留下俺闪耀的身影!
| | Comments (0) | TrackBacks (0)

路上,一对情侣与俺对面坐

男小伙帅呆了,野人花园出来的,头发都立着;女娃子也真漂亮,一脸的青春还有些红豆豆!

亲亲我我,腻腻歪歪,眉来眼去的好不黏糊,令人好生羡慕啊!!

稍许,那兄弟掏出超级大手机,对着女人深情地说了一句:啊!哥们功能就是强!

我吃了一惊,心里暗暗赞许,这才是真爷们,有胆量、敢表白,众目睽睽之下居然如此这般、这般如此!

那手机也真是油品味,衰呆了、呕像!

手机闪着七彩的光芒,还伴随着美妙的音乐 --- 亲爱的,你慢慢飞,小心前面带刺的玫瑰!(让我想起了小品里说的,瞎啊!往刺上撞?)

那音响效果超赞,绝对立体声,如果再接个功放,那是相当有感觉,绝对可以达到院线效果。

我们一路走,丫的一路放,我的这个心啊,都碎了!

我无语,我崩溃,那些歌曲真的让我听的好累!

丫丫个呸的,这就是所谓的MTK!

这一路翻来覆去的《无所谓》整我直反胃!

终于到站,俺要下车了,机会终于来了,

憋了50分钟的我终于有了表达自己心意的机会了,

俺深情地望了一下这对神仙般摇头晃脑的鸳鸯,

还有那部超牛B的泛着神的光芒的山寨机,

我咬了咬嘴唇,浑身战栗着,

思绪万千,化作无言的泪水,

最后终于在汽车将近关门的一刹那,俺直挺挺、恶狠狠的抛出一句话:

大哥,你的山寨机很好,很弓虽大,哪儿买地?

 

 

| | Comments (0) | TrackBacks (0)

#!/bin/bash
#得到1970年到今天的累计天数

get_day()
{
  Begin_Year=1970
  TO_Year=`date +%Y`
  L=`expr $TO_Year - $Begin_Year`
  To_Mon=`date +m%d`
  To_day=`date +%j`
  nu=1
  all_day=0
  while [ $nu -le $L ]
  do
    Y=`expr $Begin_Year + $nu`
    is_runnian=`expr $Y \% 4`
    if [ $is_runnian -eq 0 ]
    then
      day_nu=366
    else
      day_nu=365
    fi
    nu=`expr $nu + 1`
    all_day=`expr $all_day + $day_nu`
  done
  echo `expr $To_day + $all_day`
}

| | Comments (0) | TrackBacks (0)
http://liba52.sourceforge.net/
http://liba52.sourceforge.net/files/a52dec-0.7.4.tar.gz

liba52 is a free library for decoding ATSC A/52 streams. It is released under the terms of the GPL license.
The A/52 standard is used in a variety of applications, including digital television and DVD. It is also known as AC-3.

./configure
make
/usr/bin/ld: .libs/imdct.o: relocation R_X86_64_32S against `a local symbol' can not be used when making a shared object; recompile with -fPIC
.libs/imdct.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[1]: *** [liba52.la] Error 1
make[1]: Leaving directory `/home/buynintw/src/a52dec-0.7.4/liba52'
make: *** [install-recursive] Error 1

This trouble me for a week!!!
Finally I resolve it!

Just do below:
./configure --prefix=/usr  --enable-shared 'CFLAGS=-fPIC'
make && make install

| | Comments (0) | TrackBacks (0)
nagios的一些辅助工具很有用处,如check_ping,check_tcp等等,这里介绍一下check_ping的用法:

nagios的check_ping命令:
源码可见 nagios插件: nagios-plugins-1.4.12/plugins/check_ping.c
 
用法:
./check_ping 
Usage: check_ping -H <host_address> -w <wrta>,<wpl>% -c <crta>,<cpl>%
                     [-p packets] [-t timeout] [-L] [-4|-6]
具体如下:
-H    主机地址
-w    WARNING 状态:  响应时间(毫秒),丢包率 (%)   阀值
-c    CRITICAL状态:    响应时间(毫秒),丢包率 (%)   阀值
-p    发送的包数           默认5个包
-t     超时时间             默认10秒
-4|-6                        使用ipv4|ipv6 地址      默认ipv4
 
如:
1、正常:
./check_ping -H www.google.com -w 100.0,20% -c 200.0,50% -p 3 -t 2
PING OK - Packet loss = 0%, RTA = 1.49 ms
命令执行结果返回: echo $?   为 0
2、WARNING :
./check_ping -H www.google.com -w 0.1,20% -c 200.0,50% -p 3 -t 2
PING WARNING - Packet loss = 0%, RTA = 1.71 ms
命令执行结果返回: echo $?   为 1
3、CRITICAL
./check_ping -H www.google.com -w 0.1,20% -c 0.9,50% -p 3 -t 2
PING CRITICAL - Packet loss = 0%, RTA = 1.60 ms
命令执行结果返回: echo $?   为 2
 
返回结果为:状态  丢包率 ping响应时间
因为check_ping的返回值非常清晰,
可以在其他程序中调用check_ping命令,作为辅助的网络检测工具。
| | Comments (0) | TrackBacks (0)