妈的,为这个问题浪费了好几个小时的时间

java 的DataOutputStream 的 writeBytes(String s) 方法在向输出流写入中文字符时会出现问题。该方法的源代码如下:

public final void writeBytes(String s) throws IOException { for (int i = 0 ; i < len ; i++) { out.write((byte)s.charAt(i)); } …

1、注意不要下错版本,我因为没注意在github上下了文件名为1.4但实际是1.5的开发版,后面出现了很多奇奇怪怪的问题,浪费好久的时间,还纳闷为什么1.4的老显示django 1.5呢?1.5不是还没发布吗?

2、目录结构发生改变,settings.py和urls.py移到一个跟项目同名的App里面,根目录下只留manage.py,并且这个文件的内容跟旧版内容也已经不一样,根据官方文档说明,旧的manage.py仍可使用,但在1.5里将出现不推荐使用的警告,而到1.6,将不再可用。如果是把别的1.4的manage.py复制到将要升级的项目里,记得修改: os.environ.setdefault("DJANGO_SETTINGS_MODULE", "laonan.settings") 里面的settings改为要升级的项目的名称。

3、settings.py在时区设置,App位置等有所改变,比如在1.3里,我的博客内App的设置如下: INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.flatpages', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.redirects', # Uncomment the next line to enable the admin: 'django.contrib.admin', …

安装很简单,下载:自己找合适的版本,一般Lion是64位的,这个注意一下。

到 /etc 目录找到 bashrc 这个文件在其中加入如下:

#mysql alias mysql='/usr/local/mysql/bin/mysql' alias mysqladmin='/usr/local/mysql/bin/mysqladmin'

方便以后全局调用mysql 与 mysqladmin , 不用记不住目录找半天.

 

一些常见命令: 修改用户密码:

mysqladmin -uroot password "mylovelypassword"

 

创建一个utf-8编码的数据库:

CREATE …

前面写过怎么利用suds来调用webservicePython调用基于https协议的SOAP WebService,这篇讲的是如何用soaplib开发SOAP WebService(最近发现国外开源社区里把json方式的别的Web服务也叫做WebService,叫法跟Java和.Net的约定叫法不太一样,这里加上SOAP以跟json格式的WebService区分开来)。

第一步,当然是安装问题了:

下载soaplib:

这是下载地址,我选了soaplib 2.0.0-beta2下载,因为接下来要用到一个djangosnippet是基于2.0的。

在开发环境(Mac OS X 10.7.4)上安装很顺利: $ python setup.py install 但在测试环境(CentOS)上却碰到了一点麻烦,执行上述安装时报错:error: Setup script exited with error: command …

参考链接(可能需翻墙):

https://groups.google.com/group/google-appengine-python/browse_thread/thread/fefdcd8d02fbee94/2944e0e179a46f29?pli=1

写给仍为这个问题纠结闹心的人(原文翻译,不够信达雅,将就看): 1. 卸载你的PIL (在"/Library/Python/2.7/site-packages/"目录找到PIL,连同PIL.pth一起删除之) 2. 在这下载最新的libjpeg: http://www.ijg.org/files/jpegsrc.v7.tar.gz

3.安装libjpeg $ tar zxvf jpegsrc.v7.tar.gz $ cd jpeg-7 $ ./configure --enable-shared --enable-static $ make $ sudo make install 4. …

下午无意发现一个小bug,一个TextView超长后没有折行,即使再硬添上一个android:singleLine="false"也没有用(其实这是典型的急病乱投医,明知不用加此属性,默认就是false,还要试。作为一中老年程序员还犯这急躁不理性的毛病,反省之)。

布局的结构是,先是Tablelayout,然后TableRow,再然后LinearLayout里面套有两个应该水平呈现的TextView,前者为label,后者为内容,超长应该折行显示。

后查到有人用设置Tablelayout的属性 android:shrinkColumns属性来解决,添加之,没用。

再后来,把TableRow内的LinearLayout换成RelativeLayout,搞定了。

但新问题又来了,这个TextView的内容跨过前面的TextView,重叠在一起了,去掉后一个android:layout_alignParentLeft, 最后搞定。

 之前碰到这种小问题懒得记,觉得没有技术含量,不够cool,不符合中老年程序员形象,但想想以后还是记一下,权当工作日志的一部份以及加深自己的印象。

近年的Web开发,很多接口数据交换通常倾向于使用json格式作为数据源,相对WebService来说,json有轻量,容易使用在Ajax程序和移动App中的优点。但是最近在开发一个对安全性要求相对较高的应用时,第三方的接口是基于https的WebService,并要求对提交的数据进行签名。对方使用的是java,一开始我想直接就使用java来开发这个功能,但后来考虑到这个应用接下来可能会跟不同的第三方接口打交道,并且会涉及不同的技术,最后还是决定用Python来实现(胶水语言的优势出来了嘛)。

这篇文章只谈Python调用https协议的WebService,不谈数据签名。

网上查了下,基本上无外乎以下几种思路: 1、把WebService视为普通的xml源,用httplib或pycurl来获取(urllib和lurllib2在python2.6后支持https,但不支持证书验证?),但这样一来,就得自己去分析WebService,太繁琐,这么普遍的应用,我猜应该有现成的库,不去“重复造轮子”了。 2、用PyXML, fpconst, SOAPpy一系统包来实现,但这些包04年05年左右就不再维护了,并且多数不再提供python2.5以上的版本的支持,现在我们用的是Python2.7,显然不合适。 3、http://stackoverflow.com/questions/206154/whats-the-best-soap-client-library-for-python-and-where-is-the-documentation-f 这里有一帮人在争论"What's the best SOAP client library for Python"(什么是最好的soap客户端),于是发现了SUDS,对英文有点头痛的同志可以点下这个链接http://www.cnblogs.com/walkerwang/archive/2011/07/27/2118401.html,就这样比较去比较来,最后决定使用SUDS了。

SUDS的安装(Mac OS X/CentOS): $ sudo easy_install -z suds …

年前调用客户的第三方开发方的Service的时候,一开始使用了urllib和urllib2性能不太理想,在stackoverflow上有人给出了pycurl的替代方案,实验之后发现比用urllib或urllib2来调用,性能提高了不少。

在桌面上发现这篇年前写的安装备忘,发出来作为存档。

本地开发环境,

1、Mac OS X(我用的是Mac OS X 10.7.3,也就是Lion): 必须要用64位 sudo env ARCHFLAGS="-arch x86_64" easy_install pycurl

2、?Windows: 没试,据说是有exe安装包

3、CentOS:可以对外连接Internet的服务器 sudo easy_install pycurl

4、CentOS:如果上面一步安装不成功,或者是服务器无法请求外网。 4.1 …

今天客户对前端的一个类似mega drop-down menu(panel)的地方提出两个要求, 1、能拖动。 2、可以加载iframe。

网上查了下,tooltip, drop-down menu一大堆,能同时满足这两个条件的可不多,自力更生吧,花了几小时仓促写成,随便命名为Bobblebox(2012-04-23注:妈的,后来发现有个小游戏网站用了这个名字,算了,下次写插件时先找个测字先生给命个名了),用法如下:

 

头部引用: <link href="/media/Bubblebox1.0/css/jQuery.Bubblebox.1.0.css" rel="stylesheet" type="text/css" media="screen" /> <script src="http://www.laonan.net/static/js/jquery-1.7.1.min.js" type="text/javascript"></script> <script type="text/javascript" src="/media/Bubblebox1.0/js/jQuery.Bubblebox.1.0.js"></script>

 

头部Javascript代码: <script type="text/javascript"> $(document).ready(function() { …

今天修改博客右边的slide的时候,呃,就是首页右边的那些滚动图片,原来是静态的,今天想花几分钟改成动态可维护的,本来觉得这个是十几分钟能搞定的事,不就在models里建一个class,然后syncdb之,再修改下模板就完事了嘛。

model如下: class Slide(models.Model): user = models.ForeignKey(User, unique=False) pic = models.URLField() url = models.CharField(u'链接:可以输入javascript代码片断', max_length=200, null=True, blank=True) desc = models.CharField(max_length=200, null=True, blank=True) datetime = models.DateTimeField(auto_now_add=True) def __str__(self): return self.pic.encode('utf-8') …