BLOG
Enjoy when you can, and endure when you must.
NOV 12, 2013/数据库
Redis学习:IP查询(二)
本文部分翻译自《Redis in Action》(Josiah L Carlson)。之前,我们利用ZSET建立了一张城市ID与起始IP地址的对应表。要查询一个IP,我们首先需要使用与之前一样的办法,即将IP转换为10进制整数。之后找到比该IP值相等或较小的最大起始IP。之前已经提到,之所以用到ZSET,就是方便这里的查询。即我们可以利用ZREVRANGEBYSCORE,通过传递START=0,NUM=1,从而实现预想的查询方法。正确获取城市ID后,我们再利用ID到城市ID与信息映射表(HASH)中查询到对应的城市信息。具体的实现代码如下:def find_city_by_ip...
NOV 12, 2013/数据库
Redis学习:IP查询(一)
本文部分翻译自《Redis in Action》(Josiah L Carlson)。利用IP定位用户以提供地方化的服务是目前Web的常用做法。使用Redis,我们可以很方便的实现该功能。对于开发,我们可以从http://dev.maxmind.com/geoip/geolite下载免费的IP数据库。这个数据库包含两个重要的文件:Geo-LiteCity-Blocks.csv和GeoLiteCity-Location.csv,分别为IP段与城市ID的映射以及ID所对应的城市信息(如市、区/周/省、国家名称等)。我们可以建立两张表,分别对应以上两个csv文件。第一张表,我们可以将其放入ZS...
NOV 10, 2013/心得与分享
DannySite v3.0 更新
又是一年一度的改版,虽然这一次的更新其实整整提前了好几个月。全新设计的UI回归浅色调,更清晰、简约。同时与时俱进,采用扁平化风格设计。更合理的结构取消了原来凌乱的“最近关注”板块,取而代之的是首页更简单、清晰的呈现。优化的服务端代码每一次重构,我相信都会有进步。当然,需要改进、升华的还有很多很多。进一步的优化这只是新版的开始,很多功能还不完善或者尚未完工,探索还在继续。欢迎各位访问我的Github并对我的代码提出改进意见。
让uWSGI选择使用不同版本的Python
uWSGI 可以使用 plugins 参数支持使用不同的 Python 版本,默认情况下其搜索路径是当前目录。这也许并不方便。指定一个固定的搜索路径可能是个好选择。下面我们将其路径指向 /usr/lib/uwsgi:首先下载 uWSGI 的源码包并解压:wget http://projects.unbit.it/downloads/uwsgi-1.4.10.tar.gz tar zxvf uwsgi-1.4.10.tar.gz进入到解压出来的文件夹,修改 buildconf/core.ini 文件,修改如下行:plugin_d...
OCT 16, 2013/Python
利用Python生成随机数
利用 Python 来实现一些小功能是很简单、快捷的,比如...生成随机数。这里我们会用到两个内置模块:1. string —— 包含许多有用的常量和类2. random —— 用于生成随机数现在有一个简单的需求,就是生成一个任意长度的随机数用作验证码。在 random 中有多种方法可以帮助我们实现随机数的生成,其中之一就是 random.random() ,它生成一个 [0.0, 1.0) 之间的随机数,我们可以利用它来实现:     def random_digits(length):     re...
OCT 16, 2013/Django
Django 时区设置与使用
打开 Django 工程的配置文件,可以看到如下配置项:# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name # although not all choices may be available on all operating systems. # In a Windows environment this must be s...
OCT 09, 2013/Python
Python shell中方向键“抽风”的解决办法
今天在Linux下使用Python Shell的时候,发现方向键不能正常使用,总是显示“^[[A^[[B^[[C^[[D”的奇怪字符,通过搜索后发现解决办法很简单,就是重新编译readline:easy_install readline不过在编译时就正好遇到上篇博客中提到的问题,正好一并解决!
cannot find -lncurses
今天尝试安装python的readline包时发生如下错误:/usr/bin/ld: cannot find -lncurses这是在Linux环境编译应用程序或lib的source code时因缺少库文件(命名方法:lib + 库名 + .so)而常出现的错误,其可能的原因如下:1. lib(.so档)的symbolic link 不正确,没有连结到正确的函式库文件(.so),针对这种情况,只要改成正确的链接目标即可解决问题;2. 系统没有安装相对应的lib或相对应的lib版本不对,这种情况则需要重新安装lib。而这里我遇到的情况就是未安装对应的lib,因...
AUG 29, 2013/Python
HTTPSHandle in Python2.7
今天重新安装了CentOS6.4,在搭建Python Django环境时,安装pip出现如下问题: ImportError: cannot import name HTTPSHandle这是因为没有安装相应的支持模块,于是yum安装openssl:yum install openssl openssl-devel重新编译安装Python2.7后,让我困惑的是问题依旧,通过搜索后发现,需要SSL编译支持是需要手动打开的:打开Models/Setup.dist,找到如下行并注意取消注释: # socket line a...
MAY 23, 2013/Python
Python字典的排序方法一则
今天需要对Python的字典进行排序,以获得有效的时间序列,采用了如下方法: 首先生成一个示例字典: >>> range_a = random.sample(range(0, 10), 10) >>> range_b = random.sample(range(10, 20), 10) >>> range_a [9, 1, 7, 6, 5, 0, ...
<< < 6 7 8 9 10 > >>