SVN中修改本地账号和密码的方式
:网络    :kukei    :2012-10-18 15:37:13
:评论(2)

我的开发环境中需要连接到两个svn服务器,自然就需要两个密码,但是svn使用时默认密码是自动保存的,这样我再使用第二个svn服务的时候就一直报错如下:

    URL access forbidden for unknown reason
svn: access to 'https://svn.duapp.com/xxxxxx' forbidden

同样对于修改了密码的时候会遇到同样的问题,此时我们就要修改我们本地保存的密码了,方法如下:

1. 查看你的Eclipse中使用的是什么SVN Interface
查看方法:在eclipse中按菜单 windows > preference > Team > SVN #SVN Interface  查找

2. 如果是用的JavaHL, 找到以下目录并删除auth目录下的文件.
C:"Documents and Settings"[YourUserName]"Application Data".....

pydev的端口设置问题
:Python    :kukei    :2012-10-17 20:33:13
:评论(1)

最近在进行一些有关REST方式的基于第三方的服务的开发,比如新浪微博的open api,比如百度的PCS的open api等等都需要对访问域名或回调地址的域名都有限制,这样我们在本地开发的时候没法做这方便服务的调试了。

为了解决这个问题,我们要做两方面的准备。

第一,自己的域名绑定到本机。方法很简单,到目录C:\Windows\System32\drivers\etc下找到hosts文件加入如下内容:

127.0.0.1       test.quke.org

这样我们访问我们本地的服务时用我们自己的域名即可。

第二,调整调试服务的端口,比如我用pydev来开发,就调整端口到80上。

设置的方法如下图


启动脚本如下:

pydev debugger: warning: psyco not available for speedups (the debugger will still work correctly, but a bit slower.....
扩展python版SAE的storage的api函数
:Sina    :kukei    :2012-09-30 18:07:10
:评论(1)

参考php版本的源代码http://apidoc.sinaapp.com/__filesource/fsource_sae__saestorage.class.php.html ,扩展读取目录,按目录读取文件,分页读取文件等功能。

REST操作地址:#define( 'SAE_STOREHOST', 'http://stor.sae.sina.com.cn/storageApi.php' );

这个地址是从php版本的库中找的,python库的源代码还看不到。

post上传文件插件:

https://github.com/seisen/urllib2_file

经验证使用urllib2_file插件上传文件没问题,使用代码如下:

postData = {'destfile':destFileName, 'srcFile':{'fd':srcFile.file, 'filename': destFileName}}
 
def open.....
我离开GAE后在SAE和BAE之间徘徊
:开发    :kukei    :2012-09-30 17:44:42
:评论(5)

08年谷歌开始提供GAE服务,我就开始接触了云计算和python,开发出了sdblog程序,以及一些周边的小工具,但是gae逐渐上不去之后,我也忙了一段其他事情,今年开始重新关注国内的云计算平台,比较知名的也就算sae和bae了。

sae:

网络:较快(我的是联通网络);

云存储:支持系统自带的云存储,支持按目录,按前缀,查询,支持分页查询,但是没看到缩略图的处理。这些操作都是基于REST的,但是没有见到操作协议或操作说明。另外python的api极其简陋,还好我们可以查看php的源代码重写python的storage的api。

CDN:对企业用户开放,需要1万豆才能用。

交流:依靠自有论坛,邮件列表。不过论坛每天发贴不超过200,不活跃。

优点:稳定,未备案域名政策明确,收费策略明确。

缺点:storage不够强大,比bae差。mysql不支持事务。


bae:

网络:时而很快,时而超时(最近发现超时的原因是memcache的初始化问题,也可能是.....

Django中的多表关联方法select_related
:Python    :kukei    :2012-09-07 15:06:46
:评论(1)

以前看django文档时没有认真看这个函数,和当时看values一样都是一眼带过,没有真正弄懂这个函数是干用的,以至于我在使用django时也正抱怨,为什么django在取出一个对象时没把这个对象关联的外键对象也取出来,反而在用到这个外键的内容时再到数据库中去取,这样岂不是要两次连接数据库么?如果我一次取出多个对象,循环在界面上展示出来,它就要成倍的连接数据库,框架这样处理就太傻了吧,看到今天这个函数select_related,我算明白了,原来是否取出外键的值,控制权在自己手中,是我错怪django了。

看看网友提供的解释说明:

Django获取数据实体的时候,返回的对象一个实体或多个实体,也就是QuerySet,它是Django专有的东西,具体的理解,它是类似Python的字典的东西,但它并不实现字典的所有方法。今天讲解的是它其中的一个函数select_related()。


select_related()使用的场景,是获取实体的.....
SAE的storage服务本地调试方式
:Python    :kukei    :2012-08-31 20:36:24
:评论(1)

sae发布了本地开发环境,但是不知道是我不会用还是本来就不支持,一直没法进行调试,所以我还一直使用pydev进行调试,但是pydev又不支持sae的一些参数,比如storage的host_name,文件本地目录等参数。经过扒代码,原来将这些放在环境变量中即可。

准备工作:

1.本地要有一个web服务,我装了个phpnow,在htdocs目录下建立stor-stub目录作为storage目录;

2.在eclipse的调试服务器中配置环境变量

变量名称变量值
HTTP_HOST127.0.0.1
STORAGE_PATH
F:/MyFiles/Php/PHPnow1.5/htdocs/stor-stub

具体参数值依赖你的web服务器和目录地址。

配置eclipse的图片如下:


Django的模型中values函数的使用
:Python    :kukei    :2012-08-27 18:22:53
:评论(1)

django的数据库操作很简单,一个Model.objects.all()就能把数据取出来,但是取出来的是包含了所有的字段,而我的模型Posts中有个content字段特别大,我希望取列表是不取这个字段,因此将模型中加了个自定义的函数,模型如下:

class PostsManager(models.Manager):
    def getByIdorName(self, args):
        sql_str = 'select id,title,name,content,catalog_id,author,status,crtdate,moddate,crtip,readcnt,commentcnt,isComment from %s ' \
                    %(self.model._meta.db_table)
        if args.has_key('id'):
     .....
python设计模式之工厂模式
:Python    :kukei    :2012-08-27 14:08:48
:评论(1)

设计模式是java中常用的的东西,我在sdlog因为要用到百度和新浪的storage,因此也用了下简单工厂模式,代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#code:utf-8
#
# Copyright(C) 2011 SupDo.com
# Licensed under the GUN License, Version 3.0 (the "License");
# 
# File:        aefactory.py
# Author:      KuKei
# Create Date: 2012-09-03
# Description: 百度云计算工厂模块
# Modify Date: 2012-09-03
    
from sd import *
    
class CSFactory():
    @staticmeth.....
python序列化的问题
:Python    :kukei    :2012-08-20 18:37:28
:评论(1)
问题:

程序中有个数据需要保存到memcache中,因为再数据修改之前会有多次访问,在memcache中可以减少访问数据库的次数,但实际执行中报错,原因是:内容无法序列化。

内容是一个list,变量名为aList,list中存的数据为Post类实例化对象p,这个p中有个属性为list,变量名为cList,cList的内容也为Post。

调试发现将cList的内容清空就可以序列化保存了,看来是python的序列化不支持递归的包含的数据,但从网上的来的文档看pickle支持递归,我就郁闷了。


什么是序列化:

序列化的概念很简单。内存里面有一个数据结构,你希望将它保存下来,重用,或者发送给其他人。你会怎么做?嗯, 这取决于你想要怎么保存,怎么重用,发送给谁。很多游戏允许你在退出的时候保存进度,然后你再次启动的时候回到上次退出的地方。(实际上, 很多非游戏程序也会这么干。) 在这个情况下, 一个捕获了当前进度的数据结构需要在你退出的时候保存到磁盘.....

BAE上测试python遇到的问题
:Baidu    :kukei    :2012-08-08 14:35:42
:评论(5)

我前一段一直用python在做一个cms程序,基本功能已晚上,部署在我自己的vps上,当我申请到了bae的python测试环境后就将sdcms移植到了bae上。

说实话,移植起来还是很简单的,我用的django作为web框架,只需要修改settings的数据库连接和cache配置即可,上传程序,发布,ok,运行起来了。

不过问题也来了:

  1. bae预装的PIL库,在调用函数“ImageFont.truetype(‘ARIAL.TTF’,font_size)” 时报错如下“The _imagingft C module is not installed”,导致原来的生成验证码的程序无法工作。

  2. 同一页面偶尔几次打开很慢,最后报错:Execute request timeout.,现在已经变为cpu ran out的报错了,原因时cpu执行时间超过了15秒,但是服务器没多少操作,而且是偶尔发作的问题,而大多数时间是秒开的,我怀疑服务器在抽筋。


ps.....