SQLite 环境 Django 1.6 使用老版本代码出现事务异常的临时解决办法

SQLite对事务机制的支持是不完整的,Django 1.6 开始对事物的支持迁移到了有数据库直接支持。

手上正好有个项目是很久以前的,部分开发调整环境还行想继续使用 SQLite ;一旦遇到有事务处理的代码就提示

Your database backend doesn't behave properly when
autocommit is off. Turn it on before using 'atomic'.

在数据库配置中添加设置均无效。最终还是用强行 hack 的方式暂时解决。希望 Django 团队能在新版本中提供配置允许 SQLite 环境忽略这个异常。方法如下:

修改文件 site-packages\django\db\transaction.py 242 行

if connection.features.autocommits_when_autocommit_is_off:
    pass
    #raise …
Continue Reading →

在 Debian 虚拟机中安装 VMware Tools

VMware 虚拟机在没有安装 VMware Tools 之前是不支持在 vSphere Client 自动关闭操作系统(只能关闭虚拟机电源)、查看网卡 IP 地址等信息。安装步骤如下:

在 VMware 官网搜索 VMware Tools CD image for Linux Guest Oses 下载光盘 ISO 文件。可能需要注册一个帐号(免费的)

1.启动 Debian 虚拟机,在 vSphere Client 中设置挂载光盘镜像文件

2.Debian 中挂载光盘

mount /dev/cdrom /mnt

3.将光盘中的 VMwareTools-xxxxxxxxxx.tar.gz 解出到 …

Continue Reading →

python 2.x 中文编码格式转换

#!/usr/bin/env python
#coding=utf-8

uuu = u'中文'
print type(uuu), uuu

sss = uuu.encode('gbk')
print type(sss), sss

nnn = unicode(sss, 'gbk')
print type(nnn), nnn

输出为

<type 'unicode'> 中文
<type 'str'> 中文
<type 'unicode'> 中文
Continue Reading →

Nokia 6500s(S40) 手机使用 Google Sync 服务同步联系人

因为要启用备用机(诺基亚的N6500s),特地的去搜索了下相关的资料。发现还是不少人对此还是颇有研究,结合他人经验和实际操作的方案如下:

首先

将S40手机升级到最新版本(我的老机器是07年的产物,直接设置下来有问题;升级后是v10.0)。至于升级的方式很简单,下载 Nokia PC Suite,然后将手机用USB链接到PC使用这个套件自动下载软件然后升级即可

第二步是手机设置同步

  1. 设置–>配置设置->个人配置设置–>新增–>同步
  2. 同步设置->帐号名称: Google #这个可以随便设置,主要目的是便于识别
  3. 同步设置->服务器地址: https://m.google.com/syncml
  4. 同步设置->用户名: 无论是普通Gmail用户还是App用户均填写完整的邮箱地址
  5. 同步设置->密码: 邮箱的密码,如果开了二次认证,需要去创建一个专门的应用密码,这里就不累述了
  6. 同步设置->通讯录数据库->数据库地址: contacts #这个是Google默认的联系人组名称,如果自己有特别设置 …
Continue Reading →

使用 Django 的 TEMPLATE_CONTEXT_PROCESSORS 在模板中优雅的高亮当前页面对应的菜单项

整体思路是

  1. 使用 TEMPLATE_CONTEXT_PROCESSORS 在模板中激活全局上下文
  2. 使用 bootstrap 库实现 CSS 效果
  3. 在模板文件中调用全局变量完成实现

在 settings.py 中添加相应设置激活全局上下文

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.core.context_processors.request",#添加此项后才能在模板上访问 request 相关的信息

    #'django.core.context_processors.auth',
    #"django.contrib.auth.context_processors.auth",
    #"django.core.context_processors.debug",
    #"django.core.context_processors.i18n",
    #"django.core.context_processors.media",
    "django.core.context_processors.static",#在全局变量中添加 {{ STATIC_URL }}
    #"django …
Continue Reading →

iOS 5.1.1 不重装程序、不丢失设置及数据的升级越狱办法

一般来说越狱一个 iOS 设备的标准做法:将设备恢复到出厂状态,然后越狱,最后重新安装自己需要的软件。但这样做的最大困境是:每次 iOS 升级并再次重新越狱后,无数的软件需要重装,所有软件都需要再度手工设置一遍,本地游戏进度直接丢失

恩。。。废话了这么多,反正现在找到办法了(虽然过程是血泪的,但是结果是美好的)。简单的说就是:利用iTunes 的恢复备份功能、并在恢复备份的中途插入越狱这么一个操作

另,iPad2(WCDMA) 和 iPhone4(GSM) 均已成功 我的大致流程如下

  1. 将设备升级到最新可越狱的 iOS 版本,这里的范例是 5.1.1
  2. 使用 iTunes 同步并在电脑上做备份
  3. 使用恢复到指定 iOS 版本的方法恢复设备
  4. 在完成 iOS 系统恢复后,设备设置数据恢复前;中断恢复
  5. 使用越狱软件越狱,这里的范例是 …
Continue Reading →

创建、合并 Hg 分支

创建分支

Hg 的分支相对于 Git 没那么随意,如果要实现偏 Git 风格分支可以使用 bookmark 也就是书签功能 创建需要两步:

  1. 设置新的分支名称
  2. commit

命令行方式如下(其中的 release 为将要创建的新分支名称):

hg branch release
hg commit

hg branch release hg commit [/code]

如果使用 TortoiseHg 来实现的话:直接点击提交界面的『分支按钮』创建新的分支名称,然后『commit』即可

如要将本地新建的分支推送到远端的代码托管服务器上可以使用命令(使用 TortoiseHg Push 时其会自动代劳):

hg push --new-branch

合并分支

根据 Hg 的设计特征, Hg …

Continue Reading →

Django 使用 Cache 机制提升性能

Django 的缓存机制支持多种缓存介质和缓存范围的组合。以 v1.4 版为例;

缓存介质(backends)支持 :

  • Memcached
  • 数据库(支持多库模式)
  • 文件系统
  • 本地内存

缓存范围 :

  • 全网站范围
  • 单个视图
  • URL规则与单个视图的组合

使用缓存机制分两个部分 :

  1. 配置要使用的缓存介质
  2. 对需要缓存的范围做配置

配置要使用的缓存介质,以使用数据库为例 :

在数据库内创建缓存专用表,其中 cache_eve_map_online 是自定义的表名

python eveMapOnline/manage.py createcachetable cache_eve_map_online --settings=eveMapOnline.settingsSgfansOrg

如果使用了自定义的 settings 文件要追加参数,不然可能会出现异常(比如没有正确的数据库接口设置)

修改 settings.py 文件,添加 CACHE 配置

CACHES = {
    'default …
Continue Reading →

添加系统允许的最大 loop 设备数量

今天在创建和加载 Xen 虚拟机时遇到一个错误

Error: Device 51714 (vbd) could not be connected. Failed to find an unused loop device

才意识到我的 Xen 客户机的磁盘都是以文件形式存在的。每个客户机需要使用两个磁盘分区(/ 和 swap);刚好 Linux 下面 loop 的默认最大值(max_loop)为 8 ,每挂载一个磁盘分区文件消耗一个 loop 设备;4个虚拟机刚好用光。

解决方法如下:

修改 /etc/modules 文件

loop max_loop=64

重启系统即可

一些参考命令:

losetup -a #显示所有当前使用中的 loop …
Continue Reading →

使用 apt-mirror 生成本地 Debian 源镜像

apt-mirror 是个不错的本地源镜像工具。它可以指定要下载的:发布版本、架构(源代码也视为一种架构类型)、包类型(授权种类、更新种类)。很适合做内部源解决流量、速度和可访问性问题(基本上每次debian做大的升级时,公共源都或多或少的会出些同步问题

安装

sudo aptitude install apt-mirror

修改配置文件

安装完成后,会创建一个叫 apt-mirror 的不可登录帐号,以及一个配置文件 /etc/apt/mirror.list

sudo nano /etc/apt/mirror.list

修改内容如下:

#镜像文件已经一些同步日志类的过程文件都会分子目录放在 /YourDebianMirrorPath 下面
set base_path /YourDebianMirrorPath

#我选择的镜像源为 ftp.us.debian.org ;发布版本 stable ;架构 amd64 …
Continue Reading →
“Stay hungry, Stay foolish.”