PIL的报错之“The _imagingft C module is not installed”
:Python    :kukei    :2013-02-25 09:27:35
:评论(2)

现在sae上的python版本是2.7的准确说应该是2.73,这个版本是python官方在2版本上支持的最新版。而我本机的版本是2.6,在使用上会发现一些本地可以正常运行,而sae上报错的情况,我怀疑是python版本的问题就更新了本地版本到2.73,升级中出现了PIL的错误,解决方法如下:

首先PIL是一个python的图片类库,使用方便,功能强大,但是从官方http://www.pythonware.com/products/pil/下载的2.7的最新版本在使用中报错The _imagingft C module is not installed,具体的说就是如果在程序中引用这几个包时import Image, ImageDraw, ImageFont,会报错,因为官方的包中没包含freetype的原因。

如果是linux系统,解决这个问题就要重新安装freetype,而window平台需要带上freetype重新编译PIL,我.....

老罗的Smartisan Rom来了
:Android    :kukei    :2013-02-21 16:54:59
:评论(0)

老罗在2012年夏季演讲中说年底要出锤子rom了,是基于Android的深度定制版本,走的MIUI的路子,据说是靠特别优秀的用户体验来制胜,声称可以秒杀MIUI,FlyMe等rom。

昨天老罗在微博上放出风声说锤子rom确实出来了,名字叫Smartisan OS。这个名字是什么意思呢,难道真的是Smart is an OS?抑或是SM Artisan?

给张图片看看

那3月27日19点30分我们拭目以待了。

python中使用minidom来处理xml(一)
:Python    :kukei    :2013-02-19 16:13:39
:评论(1)

python中用来处理的xml的方法很多,处理简单的xml我们用python自带的xml.dom.minidom即可,下面我们看看如何用minidom来简单的生成和读取xml。

先看如何生成一个xml:

Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
 
    ****************************************************************
    Personal firewall software may warn about the connection IDLE
    makes to its subprocess.....
GHS又活了么了?
:Google    :kukei    :2013-02-18 10:54:53
:评论(1)

离开gae已经有两三年了,原因就是没有可用的ghs了,google放出的所有ghs都被封了,就是无法在中国大陆通过国际互联网访问这个地址。我愤怒过,伤心过,失望过,无奈之余还是选择了国内的云计算平台。  

前一段发现一个新的ghs地址ghs.googlehosted.com,我将我的域名gae.quke.org指了过去,没想过了年了还能使用,我就纳闷了,是gfw的人过年放假还没回了呢?怎么还没封呢,难道准备放ghs一马?

python字符串格式化以及转义的一些说明
:Python    :kukei    :2013-02-17 10:34:32
:评论(0)

python字符串格式的方法有多种,使用起来也很方便,举例如下:

#%方式
>>> 'a = %s' % (1, )
'a = 1'
#format方式1,注意序列从0开始
>>> 'a = {1} + {2}'.format(1,2,3)
'a = 2 + 3'
#format方式2
>>> 'a = {b1} + {b2}'.format(b1=2,b2=3)
'a = 2 + 3'

其中%方式中有个情况需要注意,字符串中如果要输出‘%’本身就需要转移否则报错,转移方式为‘%%’,看具体测试代码:

>>> 'a = %s' % (1, )
'a = 1'
>>> 'a =% %s' % (1, )
  
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    'a =% %s' % (1, )
T.....
python中取上个月当天的函数
:Python    :kukei    :2013-01-31 08:51:23
:评论(0)

在项目中需要一个取上个月当天的函数,无非就是月数减一,如果是1月就年数也减一,然后转换为日期格式返回,前几天用的一直没问题,今天突然开始报错“day is out of range for month”,仔细一看发现原来是小月没有31日的问题,赶紧改了。

新函数代码如下:

def lastMonth(date):
    year = date.year
    month = date.month
    day = date.day
    if month == 1 :
        month = 12
        year -= 1
    else :
        month -= 1
       
    if day == 31 and month in (4,6,9,11):
        day = 30
    if day > 28 and month == 2:
  .....
使用python上传图片生成缩略图保存云存储的方法
:Python    :kukei    :2013-01-27 15:56:09
:评论(0)

以前我们上传图片以后获得文件内容然后将文件内容写到指定的目录中,如果要生成缩略图就读取原图,生成缩略图再写到缩略图目录。现在出现了云存储之后这种做法就需要改变了,因为不能使用文件操作了,需要在内存中操作文件然后使用云储存的api来保存文件了。

如果用python语言来做这些操作的话就要使用到PIL这个图片处理的api了。今天我们要做的就是将上传的图片生成缩略图然后上传到云存储。本来是个很简单的程序(会做了之后),但是没做出来之前我的确苦恼了一段时间。原因是这个操作不能在本地调试,错误无法及时准确的定位,这个问题已经通过traceback写日志的方法解决了,见python异常处理及异常信息追踪。另外一个问题是云存储的api能上传的是File格式的对象,而生成的对象Image不是这个格式,后来发现了StringIO,这个对象原来就是内存文件格式的,这些问题就迎刃而解了。

下面是我具体实现的代码。

def upload(self, **ar.....
python异常处理及异常信息追踪
:Python    :kukei    :2013-01-26 22:03:57
:评论(1)

在进行异常处理时我们想得到更详细的信息,这样我们打印在log就能更好的解决问题了。比如我们想得到那个文件的第几行出错了,这些问题我在以前的异常处理中没有太注意,因为我们在调试时能一步一步的跟踪代码,但是如果你有一个服务是无法在本地调试的,你就需要得到更多的异常信息了。

方法1:traceback

在except中执行

info = traceback.format_exc()
print info
str: Traceback (most recent call last):
  File "D:\Program\python\quke\sd\log\views\imageView.py", line 48, in uedtUp
    thumbname = 'thumb/%s' % (filename.encode('utf-118'), )
LookupError: unknown encoding: utf-118

方法2.....

apache上配置独立进程python应用
:Python    :kukei    :2013-01-24 17:39:18
:评论(0)

之前一直使用nginx+uwsgi来做python应用的服务器环境,以前也写了相关的博客在nginx上配置python关于uwsgi以及安装方法;这些都是我以前在自己的vps上配置python环境的一些记录,当然后来使用sae后就不再搞这些了。今天是因为在公司开发了一个python应用需要部署到一个aix6的主机上,这个主机上已经部署好了apache+mod_uwsgi环境,而且已经有一个应用在正常执行了,但是我将新的应用部署上去时报错了,新老应用都出现了乱码,偶尔还报错。原因是两个应用的编码格式不一样,老应用是gb2312,新的是utf-8,而现在报错,我基本可以确认是因为两个应用共用了一个内存,这是我不愿意看到的。随后我将每个应用的入口文件中加入了强制修改编码格式的内容:

import os,sys
reload(sys)   
sys.setdefaultencoding('utf8')  
#sys.setdef.....
在Eclipse上使用GitHub来管理代码
:开发    :kukei    :2013-01-17 14:20:25
:评论(0)

从一开始进入公司进行正规的编程就接触了微软的版本管理工具VSS,后来自己用了Google的svn,说实话google的svn是不错的,但是在大陆大部分时间连不上,或者获取密码的页面连不上就把这个给废了。现在我用的是sae和bae的svn,这是因为平台上只支持这个,现在需要做一个本地的程序,但是也不得不进行版本管理,我就想到了github,这个我一直想用,但一直没开始正式使用的代码管理工具,我们先看看如何在我们的开发工具上集成github吧。

首先在Eclipse上集成Github。

  1. 按照github上的指南配置(http://help.github.com/win-set-up-git/基础的git环境。(留意ssh的pub key等保存到哪里了)

  2. 在github上创建一个Repository。

  3. 在Eclipse的help菜单里找“Eclipse Marketplaces”,在Market Places里面找egit,安装。

  4. (特别重要.....