Django 的 vim 自动补全

Vim 的补全分很多种:

基于上下文的补全, 例如 vim 自带的, 用ctrl+n触发

基于编程语言的语法补全, 例如 YouCompleteMe

基于代码段的补全, 例如SnipMate和UltiSnip

第一种太弱, 而且自带, 就不讨论.

第二种, YouCompleteMe很强大, 用上了之后就离不开了. 例如, 当你导入模块, 输入名字和点后, 子模块就自动列出来了. 函数名, 类名, 变量名也都能自动补全, 是 Visual Studio 那样的自动触发, 很方便, 几乎......

Keep reading...

使用 Django 内置的组件实现修改和重置用户密码

Django 项目中, 如果要支持用户修改和重置密码, 要自己写的话, 其实是无趣和琐碎的. 此时, 可以使用内置的组件. 要做的事也很简单:

urls

在你的 urls.py 下面增加如下内容:

urlpatterns += patterns('django.contrib.auth.views',

url(r'^password/change/$', 'password_change', name="password_change"),

url(r'^password/......

Keep reading...

Sublime Text 3 上手日志

作为一名 Python/Django Web 开发人员, 使用 Vim 有4年多了, 花了很多时间在配置上. 但是依然有很多地方不尽如人意. 因此最近打算尝试下 Sublime Text. 把一些基本的配置记录在这里.

配置文件

ST 的默认配置在 Preference -> Settings - Default, 格式是 JSON. 不过这个文件是只读的, 你需要参考这个文件, 然后在 Settings - User 里面覆盖对应选项, 来达到自定义配置的目的.

开启 Vim 模式......

Keep reading...

iOS 8 体验

今天把我的古董4s 升级到 iOS 8 了. 把玩了半天, 比预期的要好. 流畅度和 iOS 7 相当, 也没发现重要的 bug.

iOS8的OTA升级需要多达4.7G的空余空间, 对于很多人可能要删除大量 app 才行. 不过你也可以自己下载固件后, 在电脑上通过 iTunes 来升级.

一些还不错的新功能记录如下:

支持第三方输入法了, 不过目前百度和搜狗都只能在中国区下载.

支持农历了.

陌生号码来电归属地

双击 home, 顶部显示最近联系人

相机可以定时拍照了

通知栏......

Keep reading...

在 Django 中实现用 email 登录

问题描述

Django 默认是通过 username 登录. 而在实际的项目中, 往往通过 email 登录更合理.

Django 1.5 以后, 提供了自定义 AUTH_USER_MODEL 的方法. 理论上, 你可以自定义 User 来实现 email 登录. 不过, 在实际使用中我发现, User 是 Django 框架中最核心的 Model, 一旦自定义, 会带来一系列问题.

例如在 Admin 里管理 User 时, 密码居然是直接显示的, 新建 User 也是明文密码. ......

Keep reading...

跨主机mysql自动备份

以下内容基于ubuntu.

问题

假设你的mysql服务运行在 192.168.1.2(下称A), 你想自动备份到 192.168.1.3(下称B).

创建账号

登录到A,进入mysql的shell,然后执行:

grant usage, select, lock tables, show view, event on *.* to 'backup'@'192.168.1.3' identified by '1234';

这个命令会在A主机上创建一个mysql用户backup, 密码1......

Keep reading...

技术移民到新西兰的三个途径

我2012年底决定移民新西兰时, 做了三个计划, 打算依次尝试. 没想到第一个就成功了.

这里简单介绍一下这三个途径, 给有心移民NZ的同学们一个大致的攻略.

银蕨签证(SFV)

银蕨是新西兰的常见植物, 国徽就是银蕨. 它代表友好, 和平, 类似于橄榄枝的意思.

银蕨签证可以认为是新西兰技术移民的快捷方式. 每年面向全球只有300个名额, 抢到后可以拿到一个9个月有效期的签证, 直接入境求职. 如果找到跟自己专业对口的技术类工作, 就可以在线EOI申请绿卡(PR).

这个方法最大的困难就......

Keep reading...

Ubuntu 上"unable to resolve host"问题解决办法

通常,在linux上, 你可以使用hostname命令来修改主机名. 假如你期望的主机名是xxx:

hostname xxx

在ubuntu上,执行完这条命令之后,终端上显示的主机名确实变了.

但是,很不幸,每次你试图使用sudo执行命令时,就会遇到如下错误:

sudo: unable to resolve host xxx

解决方案是:

编辑/etc/hosts文件, 把这一行

127.0.0.1 localhost

修改为:

127.0.0.1 localhost xxx

......

Keep reading...

电子书阅读以及推送知识扫盲

常见文件格式

mobi/azw/azw3

mobi是亚马逊早期使用的私有的电子书格式,Kindle阅读器早期的标准格式,随着亚马逊电子书平台的壮大而十分普及. 由于这种历史原因,网络上流传的大量电子书都是mobi格式,包括本站.

亚马逊在mobi的基础上又开发出azw以及azw3格式,用以取代mobi. 主要的改变是加强了数字版权保护(DRM). 现在在亚马逊购买的电子书通常是azw或azw3. 当使用亚马逊的推送服务时,亚马逊也会尝试将其它格式(主要是mobi)转换为azw/azw3再推......

Keep reading...

Javascript中的Date真是坑爹啊!

最近在用Phonegap开发一款app,需要用到JS中的Date对象. 发现了几个坑.

通过字符串初始化Date

假如你有一个日期字符串s, 你可以使用parse函数来得到日期:

var d = Date.parse(s);

或者,直接使用构造函数:

var d = new Date(s);

它其实使用的也是parse函数.

到目前为止一切似乎正常, 但是等等, 为何我没有地方传入s的format信息?

日期格式那么多, 我要怎么写呢?

或许js足够聪明, 能够自动识别常见的日期格......

Keep reading...