安固途径

知识来源于感觉和经验

django 获得 object相邻的 object

2015-06-28, 星期日|
Django开发

在 django的 DetailView页面想要做到下一篇文章的链接,我的思路是获取当前 object的先一个object或后一个object。查了一下 django documentation,找到如下信息。

For every DateField and DateTimeField that does not have null=True, the object will have get_next_by_FOO() and get_previous_by_FOO() methods, where FOO is the name of the field. This returns the next and previous object with respect to the date field, raising a DoesNotExist exception when appropriate.

也就是说,当某 field为 DateField或 DateTimeField时,就可以查询其相邻的 object,假设这个 field的命名为foo, 那么查询下一个 obje

...
阅读全文

sqlite3 数据库dump到mysql

2015-06-28, 星期日|
数据库软件

在本地建了一个博客,用的是 sqlite3,而 sina app engine 只支持mysql数据库,要想在sae上面部署这个博客就要想办法将sqlite3的数据库转到mysql上来。

一般的思路就是先将 sqlite3的本地文件app_sql.db 导出成sql语句,再导入进 mysql中。

先导出到app.sql中:

sqlite3 app_sql.db .dump > app.sql

再导入mysql的blog数据库中:

mysql -uroot -p blog < app.sql

结果却提示语法错误,看来不能直接将sqlite3的sql文件直接导入到mysql的数据库中,必须先转化。幸好网上有高人已经有解决方案,要用过工具sqlite3-to-mysql.py

于是,

先删掉blog数据库再重新建立blog数据库

$ mysql -uroot -p
mysql> drop database blog;
mysql> create database blog;
mysql> exit

然后用 sqlite3-to-mysql.py 处理ap

...
阅读全文

sae 上部署django 1.8

2015-06-27, 星期六|
Django

原先在sina app engine部署django=1.8,真不是一件容易的事,主要是因为sae不直接支持最新版的django。要想使用django 1.8,只有使用 site-packages。而sae通常使用 svn 部署代码,而如果加上一个25M的 site-packages ,其代码部署速度可想而知。幸好部署代码的方式不只一种,sae 还为我们提供网页上传代码压缩包的方式。

上传代码压缩包的网页是 sae 应用的控制面板

1.先压缩

cd feat/2
tar -czf 2.tar.gz *

2.再上传

通过操作按钮上传对应版本的代码压缩包。需要注意的是压缩包中的内容须为本地版本号文件夹中的所有内容,不要将版本号根文件夹也上传了,否则上传后服务器中的代码将会多出一个版本号文件夹,文件结构就不对了。尽管上传完成后,sae 总是会提示上传失败,但是不用丧气,其实sae上面已经上传成功了,只需要稍等片刻上传的代码就会生效。

当然,sae 提供了工具 saecloud 部署代码(saecloud deploy)和安装第三方库(saecloud install package),但是

...
阅读全文

svn checkout 指定目录

2015-06-27, 星期六|
软件

svn有时只想检出指定目录,对于其他的大文件目录则不想检出,如不想检出python代码中的site-packages。可以用以下的方法。

1.检出feat/2中的所有文件(但不包括文件夹)到本地feat/2中,并在feat/2中建立.svn目录等相关配置。

svn checkout --depth files http://svn.sinaapp.com/feat/2 feat/2

2.检出需要的文件夹及其迭代的所有子文件夹及文件,如feat/2下的feat和blog,及其子文件夹和文件等。

svn update --depth infinity feat
svn update --depth infinity blog

3.检出不想包括文件的空目录,如site-packages

svn update --depth empty site-packages
...
阅读全文

linux 返回到历史目录

2015-06-22, 星期一|
linux

linux 经常会更改非上下级目录,有时又想返回,以前只知道先打印pwd,更改目录后返回则复制上次的目录再cd,这样用着多了也觉着不方便,应该有更方便的更换目录方式。于是查了一下命令的manual。

$ man cd

找到这么一句话:

An argument of - is equivalent to $OLDPWD.

于是尝试cd -

$ cd /opt/eclipse
$ cd -

果然返回了旧目录。 其实类似的使用场景还有,在当前目录登录到super user

$ su -

其它例如

~

表示当前用户目录也是经常用到,在此顺便一提。

...
阅读全文