2009年6月11日 | 标签: , ,

开发环境windowns python 2.5 发布环境centos5 python 2.4 ,在发布代码的过程中发现了些区别,记录下来,拒绝犯错。

一、strptime

2.5、datetime.datetime.strptime("2009-06-08", "%Y-%m-%d")

2.4、datetime.date(*time.strptime(’2009-06-08′, ‘%Y-%m-%d’)[:3])

二、try….except….finally

2.5支持:

try:

except:

finally:

2.4不支持,2.4需要分开写

try:

      try:

      except:

finally

2009年6月9日 | 标签: ,

ChartDirector是个商业的图标工具,功能强大,使用简单,看看运行效果:

下载地址:http://www.advsofteng.com/download_archive.html

下面根据例子说下python和chartDirector的整合和开发。

1、ChartDirector安装:

windows:

下载得到: chartdir_python_win32_v4.zip

解压得到目录,ChartDir没有提供install脚本,我们需要手动将chartdirector的类库添加到python的lib中去。

打开python安装目录,我本地安装目录在:

C:\Python25\Lib\site-packages

  1. 新建ChartDirector目录
  2. 将下载文件的chartdir_python_win32_v4\ChartDirector\lib目录下的所有文件拷贝到ChartDirector目录下
  3. 在C:\Python25\Lib\site-packages目录下新建ChartDirector.pth文件,文件内容为ChartDirector

执行下example代码,可以正常运行。

linux:

使用python -c "import sys;print sys.path"命令查看python的软件安装目录。

我得到的是’/usr/lib64/python2.4/site-packages/MySQL_python-1.2.2-py2.4-linux-x86_64.egg’, ‘/usr/lib/python2.4/site-packages/setuptools-0.6c6-py2.4.egg’,……

使用和windows类似的方式将ChartDirector安装在/usr/lib64/python2.4/site-packages/目前下,进入下载文件的demo目录测试下运行python xyline.py。

如果出现如下错误:

Python代码
  1. Traceback (most recent call last):  
  2.   File "stepline.py", line 2in ?  
  3.     from pychartdir import *  
  4. ImportError: No module named pychartdir  

表示ChartDirector安装的有问题,如果没有提示生成图表表示正常了。

 Linux下中文字体问题:很简单,直接将windows的simsun.ttc字体拷贝到linux的ChartDirector安装目录/usr/lib64/python2.4/site-packages/ChartDirector/fonts/

2、运行ChartDirector:

具体的各种图表代码,在下载文件的doc目录下有详细的帮助文档,这里就不一一说了,说下破解和中文:

  1. ChartDirector是个商业软件,但可以免费使用,免费使用的时候在底部会有ChartDirector公司的域名,网上有些免费的序列号,只要大家细心就会发现。由于5.0的没有找到破解,我这里用的是4.0的破解序列号。在C:\Python25\Lib\site-packages\ChartDirector目录下建立文件chartdir.lic,文件内容为注册号码
  2. 中文问题:在代码中设置宋体就可以  c.setDefaultFonts("simsun.ttc")     
2009年6月8日 | 标签:

str = "比例:%s%"%("20")

print str 错误:

ValueError: incomplete format

有时候在输出字符串的时候需要输出%,但%是特殊支付,直接这样输出有incomplete的错误,设置%%就可以输出

正确的输出:

str = "比例:%s%%"%("20")

print str      比例:20%

2009年6月5日 | 标签: , ,

nginx+(1…n)tomcat集群部署时,后端tomcat需要取得用户的IP,这时通过 request.getRemoteAddr()取得的始终是127.0.0.1.

由于用户请求经过nginx,ngigx转发了请求到tomcat后,tomcat取得的始终是nginx的Ip,如果需要取得真实用户IP,只需要在ngix上做些配置。

location / 下设置
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header Host $host;
 

测试配置:./sbin/nginx -t -c conf/nginx.conf  正确后重启nginx.

Java代码修改如下

out.println("X-Real-IP : " + request.getHeader("X-Real-IP") + "<br>"); 

其中X-Real-IP即用户真实IP

2009年6月5日 | 标签: , , , ,

Django提供了logger功能,但是呢,这个logger看起来很美好,用起来很恶心,反正我一直在linux上没用起来。

用法:

Python代码
  1. import logging  
  2. logging.basicConfig(  
  3.     level = logging.DEBUG,  
  4.     format = ‘%(asctime)s %(levelname)s %(module)s.%(funcName)s Line:%(lineno)d %(message)s’,  
  5.     filename = ‘c:/filelog.log’,  
  6. )  
  7.   
  8. logging.debug("test")  

windows上运行输出

2009-06-05 14:37:45,296 DEBUG views.players Line:39 test

部署在Linux上就不行,我的部署环境是nginx+django+fastcgi,屡试不爽,最后查资料还是使用runfastcgi的参数(outlogerrlog)成功输出日志,虽然没有logger功能强大,但也算挺好用。

python /usr/local/app/test/manage.py runfcgi method=threaded host=127.0.0.1 port=9000 outlog=/root/a.log errlog=/root/b.log

print输出的日志在a.log

cgi运行的错误日志在b.log

2009年5月7日 | 标签: , ,

安装步骤

1、安装MyEclipse 6.0

2、安装WTK。

下载WTK2.5.2地址:WTK2.5.2

执行安装选择JDK路径,必须要JDK1.5以上。

3、继承 EclipseMe

下载EclipseMe地址:http://sourceforge.net/project/showfiles.php?group_id=86829&package_id=90314&release_id=588298

下载后解压拷贝到MyEclipse目录:C:\Program Files\MyEclipse 6.0\eclipse下。

重启Eclipse,就可以看到windows–>preferences看到j2me选项,打开Device manangement,选择wtk的目录,完成后一切OK.

 

创建个J2ME项目:

Java代码
  1. package test;  
  2.   
  3. import javax.microedition.lcdui.Display;  
  4. import javax.microedition.lcdui.Form;  
  5. import javax.microedition.midlet.MIDlet;  
  6. import javax.microedition.midlet.MIDletStateChangeException;  
  7.   
  8. public class HelloWorld extends MIDlet {  
  9.       
  10.     private Display display;  
  11.       
  12.     public HelloWorld() {  
  13.         display = Display.getDisplay(this);  
  14.         System.out.println("Constructor");  
  15.     }  
  16.   
  17.     protected void destroyApp(boolean arg0) throws MIDletStateChangeException {  
  18.         System.out.println("destroyApp.");  
  19.     }  
  20.   
  21.     protected void pauseApp() {  
  22.         System.out.println("pauseApp.");  
  23.     }  
  24.   
  25.     protected void startApp() throws MIDletStateChangeException {  
  26.         System.out.println("startApp.");  
  27.         Form f = new Form("HelloWorld");  
  28.         display.setCurrent(f);  
  29.     }  
  30.   
  31. }  

 

2009年5月6日 | 标签: , , , ,

使用SimpleCaptcha可以方便灵活的生成各种验证码。

下载SimpleCaptcha : http://sourceforge.net/project/platformdownload.php?group_id=147810&sel_platform=13579

添加到ClassPath中,在web.xml中的设置:

XML/HTML代码
  1.      <servlet>  
  2.     <servlet-name>Captcha</servlet-name>  
  3.     <servlet-class>nl.captcha.servlet.CaptchaServlet</servlet-class>  
  4.     <init-param>  
  5.         <param-name>cap.font.color</param-name>  
  6.         <param-value>0,0,255</param-value>  
  7.     </init-param>  
  8.     <init-param>  
  9.         <param-name>cap.char.arr</param-name>  
  10.         <param-value>1,2,3,4,5,6,7,8,9,0</param-value>  
  11.     </init-param>  
  12.     <init-param>  
  13.         <param-name>cap.border</param-name>  
  14.         <param-value>yes</param-value>  
  15.     </init-param>          
  16.     <init-param>  
  17.         <param-name>cap.border.c</param-name>  
  18.         <param-value>black</param-value>  
  19.     </init-param>          
  20.     <init-param>  
  21.         <param-name>cap.border.th</param-name>  
  22.         <param-value>1</param-value>  
  23.     </init-param>      
  24.     <init-param>  
  25.         <param-name>cap.background.c.to</param-name>  
  26.         <param-value>255,255,255</param-value>  
  27.     </init-param>  
  28.     <init-param>  
  29.         <param-name>cap.background.c.from</param-name>  
  30.         <param-value>255,255,255</param-value>  
  31.     </init-param>              
  32. </servlet>  
  33. <servlet-mapping>  
  34.     <servlet-name>Captcha</servlet-name>  
  35.     <url-pattern>/servlet/Captcha.jpg</url-pattern>  
  36. </servlet-mapping>  

html中增加<img style="border:0;" id="captchaImg" src="/servlet/Captcha.jpg" border="0"/>

验证码效果图片:

Java代码中可以通过req.getSession().getAttribute("SIMPLE_CAPCHA_SESSION_KEY")来取得验证码的值。

注意:

LINUX操作系统没有装x11的情况下,需要注释nl.captcha.text.imp.DefaultWordRenderer类的

XML/HTML代码
  1. /*   
  2. GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();   
  3.                
  4.   GraphicsDevice gd = ge.getDefaultScreenDevice();   
  5.   GraphicsConfiguration gc = gd.getDefaultConfiguration();   
  6. */  

不然会有错误。

2009年4月26日 | 标签: , ,

在Flex中使用http请求其它服务器的json格式的数据,单独访问URL正常,在Flex中调用报如下错误:

[RPC Fault faultString="Security error accessing url" faultCode="Channel.Security.Error" faultDetail="Destination: DefaultHTTP"]

问题由于Flex的跨域请求引起,解决解决办法:

在访问域下的根目录增加crossdomain.xml文件,文件内容如下:

XML/HTML代码
  1. <?xml version="1.0"?>  
  2. <cross-domain-policy>  
  3.     <allow-access-from domain="*" />  
  4. </cross-domain-policy>  

domain为设置可以访问的域,*为全部。

2009年4月23日 | 标签: , ,

Apache下整合的SVN,由于自己需要加modules,就重新./configure,make make install后启动apache出现如下错误:

httpd: Syntax error on line 53 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/modules/mod_dav_svn.so into server: /usr/local/apache/modules/mod_dav_svn.so: undefined symbol: dav_register_provider

解决办法:

重新./configure 增加参数

./configure –prefix=/usr/local/apache –enable-dav –enable-so –enable-maintainer-mode –enable-rewrite

2009年4月22日 | 标签: ,

iptables是Linux上自带的防火墙,用来限制外部对主机的访问,常用设置:

添加访问许可:

vi /etc/sysconfig/iptables

增加 外部访问8080端口的许可:

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 8080 -j ACCEPT

重启iptables

/etc/rc.d/init.d/iptables restart