存档

2008年12月 的存档

svn: Can’t convert string from native encoding to UTF-8

2008年12月22日 1 条评论

项目需要用到ant和svn结合使用,在使用ant svnup时,系统提示:
svn: Can’t convert string from native encoding to ‘UTF-8’:
大概意思是:
不能把字符串从本地编码转换为“UTF-8”编码
google了半天,都说是修改本地环境变量。
$locale

$LANG=en_US.UTF-8
$LC_CTYPE=”en_US.UTF-8″
$LC_NUMERIC=”en_US.UTF-8″
$LC_TIME=”en_US.UTF-8″
$LC_COLLATE=”en_US.UTF-8″
$LC_MONETARY=”en_US.UTF-8″
$LC_MESSAGES=”en_US.UTF-8″
$LC_PAPER=”en_US.UTF-8″
$LC_NAME=”en_US.UTF-8″
$LC_ADDRESS=”en_US.UTF-8″
$LC_TELEPHONE=”en_US.UTF-8″
$LC_MEASUREMENT=”en_US.UTF-8″
$LC_IDENTIFICATION=”en_US.UTF-8″
$LC_ALL=en_US.UTF-8

试过了网上提供的所有方法:
把本地的字符试了个遍,
$export LC_CTYPE=en_US.UTF-8
$export LC_ALL=en_US.UTF-8
$export LC_ALL=zh_CN.UTF-8
$export LC_ALL=zh_CN.utf8
可惜问题始终没有解决。
其中一个不解的现象是单独使用svn up是可以的,单独使用ant compile也是可以的,二者结合起来就出现了问题。
于是想到了是不是svnant.jar的版本的问题呢,我现在使用的svn版本是
最新版的
svn1.5.4
看了一下原来的svnant版本是1.0真的是没有办法了死马当成活马医不管怎样,先试试吧于是替换了svnant.jar等,升级到了1.2,再次执行ant,哈哈,问题解决了。
如果你也在使用svn的比较新版本,并且需要使用ant和svn结合使用的话,不妨升级一下你的svnant吧。

分类: OpenSource 标签:

java.net.SocketException: Broken pipe 是否也在困扰你呢?

2008年12月16日 1 条评论

#cat stdout.log
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:
 java.net.SocketException: Broken pipe
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
    at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:66)
    at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:124)
    at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2690)
    at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2619)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1552)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:2978)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:2902)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:933)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1162)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1079)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1064)
    
   
线上跑的java应用中的stderr.log中偶尔会有这样的日志出现,出现问题时系统负载并不高,并且系统可以自己恢复正常。google了很久,也困扰俺多日,今天对这个问题做一个了断。

产生这个问题的原因可能有以下几个:
1、mysql的驱动的问题,我的驱动是mysql-connector-java-3.1.11-bin.jar
如果有兴趣测试话,可以使用其他新版本的mysql驱动来试试吧。

2、防火墙和网络上的问题
,或者服务器发生了crash(有意或无意导致)
同学们可以检查产生”java.net.SocketException: Broken pipe” 错误的时候服务器、网络是否有异常?

3、应用系统的数据库连接池导致,
最大的可能就是程序上写的不严谨  吼吼!
新手在开发过程中都难避免的失误:忘记数据库连接的关闭(纯jdbc的操作中常见,不过这个还好找啦,压力测试中如果看到数据库连接数多或者干脆挂掉可以找出原因的);
另外就是提交事物时,在对数据操作中没有做明确的commit或者rollback,如果忘记了提交commit,在你尝试使用类似的resultset去操作或者做其他的操作时就有可以能出现这样的问题,这样的悬挂着连接一直要等到超时mysql将其kill掉。仔细检查你应用的事物中是否都做了明确的提交操作呢?或者干错使用Hibernate,试试C3P0、Proxool这样的连接池吧。
 

分类: java 标签:

kernel: mptscsih: ioc0: task abort: SUCCESS

2008年12月9日 评论已被关闭

收到服务器报警,查看/var/log/messages 中很多类似下面的日志:
Dec  9 00:03:22 kernel: mptscsih: ioc0: attempting task abort! (sc=ffff81007ec8bb00)
Dec  9 00:03:22 kernel: sd 0:0:0:0:
Dec  9 00:03:22 kernel:         command: Read(10): 28 00 05 4c 03 6a 00 01 00 00
Dec  9 00:03:23 kernel: mptbase: ioc0: LogInfo(0x31140000): Originator={PL}, Code={IO Executed}, SubCode(0x0000)
Dec  9 00:03:23 kernel: mptscsih: ioc0: task abort: SUCCESS (sc=ffff81007ec8bb00)
Dec  9 00:03:33 kernel: mptscsih: ioc0: attempting task abort! (sc=ffff81007ec8bb00)
Dec  9 00:03:33 kernel: sd 0:0:0:0:
Dec  9 00:03:33 kernel:         command: Test Unit Ready: 00 00 00 00 00 00
Dec  9 00:03:33 kernel: mptbase: ioc0: LogInfo(0x31130000): Originator={PL}, Code={IO Not Yet Executed}, SubCode(0x0000)
Dec  9 00:03:33 kernel: mptscsih: ioc0: task abort: SUCCESS (sc=ffff81007ec8bb00)
Dec  9 00:03:33 kernel: mptscsih: ioc0: attempting task abort! (sc=ffff810077e51380)
Dec  9 00:03:33 kernel: sd 0:0:0:0:

系统状态:
uname -a
Linux 2.6.18-53.1.13.el5 #1 SMP Tue Feb 12 13:02:30 EST 2008 x86_64 x86_64 x86_64 GNU/Linux

cat /etc/redhat-release
CentOS release 5 (Final)

#smartctl -a /dev/sda
smartctl version 5.36 [x86_64-redhat-linux-gnu] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

Device: HP       DF072A9844       Version: HPD0
Serial number: DQA2P6B00GMC0648
Device type: disk
Transport protocol: SAS
Local Time is: Tue Dec  9 09:33:35 2008 CST
Device supports SMART and is Enabled
Temperature Warning Enabled
SMART Health Status: OK

Current Drive Temperature:     33 C
Drive Trip Temperature:        65 C
Manufactured in week 48 of year 2006
Current start stop count:      6 times
Recommended maximum start stop count:  10000 times
Elements in grown defect list: 0

Error counter log:
           Errors Corrected by           Total   Correction     Gigabytes    Total
               ECC          rereads/    errors   algorithm      processed    uncorrected
           fast | delayed   rewrites  corrected  invocations   [10^9 bytes]  errors
read:          0        0         0         0          0          0.000           0
write:         0        0         0         0          0          0.000           0

Non-medium error count:     2293
No self-tests have been logged
Long (extended) Self Test duration: 1815 seconds [30.2 minutes]

找了半天并没有看出有什么异常来,网上有些资料说是操作系统内核对SAS硬盘的支持不好,也有把责任归咎于dell服务器,但是我的机器可是HP滴!
HP官方站上找到了一点信息  是关于磁带备份操作中的注意事项。

再观察几天,也继续搜索一下解决方案,如果还没有结果的话,我准备重做系统了,降低内核版本,装回32bit再试试看。

分类: OpenSource 标签:

wndows下使用Python来修改文件时间戳

2008年12月7日 评论已被关闭

windows下的文件时间戳有三个属性,创建时间、修改时间、访问时间*nix下方便的多了,可以使用touch来进行修改,windows下也可以使用专门的工具来进行修改(别跟我说你是通过修改操作系统时间后再创建文件哟!)
本文使用python2.6来进行处理,代码很简单,美中不足的是python提供的模块中并没有可以修改文件创建时间的,而修改时间和访问时间均可以任意修改,代码具体如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os,sys,time
from stat import *
filename=’D:\\2hei.net\\test.txt’
#指定期望修改后的时间
TimeForChange = ‘2007-01-10 07:51:21’
#转换时间格式为long型
ConverTime = time.mktime(time.strptime( TimeForChange,’%Y-%m-%d %H:%M:%S’) )
print TimeForChange+’ 转换后:’+str(ConverTime)

print ‘————-修改前—————-‘
#创建时间
print ‘创建时间  ‘+time.ctime(os.path.getctime(filename))
#最后修改时间
print ‘修改时间  ‘+time.ctime(os.path.getmtime(filename))
#访问时间
print ‘访问时间  ‘+time.ctime(os.path.getatime(filename))

#修改文件时间戳
times=(ConverTime,ConverTime)
#进行修改
os.utime(filename, times)

print ‘————-修改后—————-‘
#创建时间
print ‘创建时间  ‘+time.ctime(os.path.getctime(filename))
#最后修改时间
print ‘修改时间  ‘+time.ctime(os.path.getmtime(filename))
#访问时间
print ‘访问时间  ‘+time.ctime(os.path.getatime(filename))

首先在本地创建一个test.txt的文件(文件夹类似),先右键点击查看属性:
2008-12-07_184152.png

可以看到文件的三个基本属性,时间都是2008年12月7日,
程序运行的输出结果:

2007-01-10 07:51:21 转换后:1168386681.0
————-修改前—————-
创建时间  Sun Dec 07 18:16:56 2008
修改时间  Sun Dec 07 18:41:38 2008
访问时间  Sun Dec 07 00:00:00 2008
————-修改后—————-
创建时间  Sun Dec 07 18:16:56 2008
修改时间  Wed Jan 10 07:51:22 2007
访问时间  Wed Jan 10 00:00:00 2007

在右键点击查看文件属性,可以看到已经变成如下图:
2008-12-07_184427.png

可以看到文件的修改时间已经变成了2007年的1月10日,时间属性修改成功。

分类: python 标签:

redhat9使用vnc安装oracle9i

2008年12月6日 评论已被关闭

需求来了:一台老机器,系统是redhat9,上面需要安装oracle9i,呵呵,开始折腾!
生活就是在折腾来折腾去,最后也没弄清楚到底在折腾啥,完事后对这镜子哈哈大笑,至少我还折腾过!
废话少说,步入正题。

好久没有装过oracle9了,以往的笔记都是在rhel4下面使用vnc来操作的。
据说oracle9i也可以在字符界面下安装,
./runInstaller –silent –responseFile /opt/oracle/product/responfile
responfile是参数文件,oracle在安装时读取相关参数。
oralogo_small.gif

不过有人说oracle9i不能完全自动安装,还需要手动指定一些参数和执行相关脚本,这个具体没有试过,所以还是想到了以往的经验使用vnc来安装。

#uname -a
Linux 2.4.25 #2 SMP Wed Apr 28 13:10:52 CST 2004 i686 i686 i386 GNU/Linux
系统版本 redhat9,很老的版本
使用 rpm -qa | grep vnc 查看后并没有安装vnc。
redhat9从2004年就不更新了,好些包都已经不好找,还好我们可以使用CentOS3的安装包。
理由有下面两点:
1、rhel 3 与redhat 9 最后更新后的软件版本绝大部分相同
2、CentOS 3是从Redhat Enterprise Linux 3源代码重新编译的,与rhel 3完全兼容。
centos_logo_45.png

http://isoredirect.centos.org/centos/3/os/i386/RedHat/RPMS/
下面有好多rpm包,可以尽情享用了。

有些郁闷的是在安装vnc的时候发现系统也没有安装Xwindows,导致vnc无法运行,原因是相互依赖的很多包都没有,哎,开始郁闷了。

经过多次的尝试和努力,一个包一个包的下载和安装,如下:
rpm -ivh vnc-3.3.3r2-47.i386.rpm
rpm -ivh vnc-server-3.3.3r2-47.i386.rpm
rpm -ivh XFree86-xauth-4.3.0-122.EL.i386.rpm
rpm -ivh xterm-179-6.EL3.i386.rpm
rpm -ivh XFree86-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-75dpi-fonts-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-twm-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-libs-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-libs-data-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-libs-data-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-libs-data-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-libs-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-libs-data-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-twm-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-libs-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-twm-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-100dpi-fonts-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-base-fonts-4.3.0-122.EL.i386.rpm

呵呵,你说我容易吗,最后终于我的vnc可以运行了
vncserver已经可以监听端口和配置登陆密码了!
赶快切到oracle用户,启动vnc,
2008-12-06_093556.png
客户端vnc登陆后,

在解开的Disk1下,运行./runInstaller,呵呵呵,久违的oracle GUI安装界面映入眼帘,(具体9204的补丁及安装设置略,请见相关文档)
一路安装下去颇为顺利,很快装完。
最后要感谢铁岭电视台、感谢cctv、也要感谢提供软件的centos …

分类: database, OpenSource 标签: ,

试试明年的运气如何?

2008年12月4日 评论已被关闭
分类: live 标签:

resin3 resin-admin管理后台的配置

2008年12月4日 评论已被关闭

resin3自带caucho-status页面,不过页面显示内容不是很详细,其提供的admin页面更能够详细的记录resin的运行状况。
在resin.conf中添加如下配置:

  <management path=”/home/resin3/php/admin”>
    <user name=”admin” password=””/>
  </management>

另外添加  
    <web-app id=”/resin-admin” root-directory=”/home/resin3/php/admin”>
     <prologue>
        <resin:set var=”resin_admin_user” value=”admin”/>  
        <resin:set var=”resin_admin_password” value=””/>  
        <resin:set var=”resin_admin_external” value=”true”/>  

     </prologue>
  </web-app>
注意<resin:set var=”resin_admin_external” value=”true”/>  的设置是允许外部进行管理,可以添加ip访问限制,否则可能存在安全隐患。
配置好以后使用 https://ip/resin-admin/login.php登陆
2008-12-04_140732.png
  

这里可以输入用户名、密码来生成你需要的md5加密后的口令,然后添加到resin.conf中。
2008-12-04_140836.png

登陆以后的页面如下:
2008-12-04_140443.png

可以看到summary、config、threads等,可惜的是heap、cache、cluster等功能都是professional版本才可以。
2008-12-04_140530.png

可以看到数据库连接池、TCP连接数及使用的内存等数据,还是比较直观的一个工具哟!

分类: resin 标签: