跬步 On Coding

Django验证码实现与登录验证码展示策略

Django实现验证码有很多现成可用的库,Google后选择Django Simple Captcha,需要做一些展示与表单验证方面的定制。

验证码展示

默认的验证码展示形式不是很适合我们网站的样式,所以在settings中做了一些定制。

# 验证码设置
CAPTCHA_FOREGROUND_COLOR = '#d83a46' # 验证码字体颜色
CAPTCHA_BACKGROUND_COLOR = '#f5f5f5' # 验证码背景颜色
CAPTCHA_NOISE_FUNCTIONS = ('captcha.helpers.noise_dots',) # 验证码混淆配置,这里设置的点点
CAPTCHA_CHALLENGE_FUNCT = 'random_char_challenge' # 验证码生成函数配置

为了提供验证码的识别率,定制了一个随机字符串生成函数来生成验证码。

# coding: utf-8

import random
from captcha.conf import settings
from six import u

def random_char_challenge():
    chars, ret = u('acefghkprtuvwxy34679'), u('')
    for i in range(settings.CAPTCHA_LENGTH):
        ret += random.choice(chars)
    return ret.upper(), ret

python玩转数据笔记:数据处理

时间索引

>>> import pandas as pd
>>> index = pd.date_range('20160503', periods=5)
>>> index
DatetimeIndex(['2016-05-03', '2016-05-04', '2016-05-05', '2016-05-06',
               '2016-05-07'],
              dtype='datetime64[ns]', freq='D')

python玩转数据笔记:数据结构

想储备点数据分析相关知识,所以抽了1天时间上了1门数据分析入门的公开课,记录一下学到的东西。

python玩转数据

ndarray 多维数组

>>> import numpy as np
>>> np.ones((3,4)) # 自动生成3*4的二维数组,全为1
array([[ 1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.]])
>>> np.array([[1,2], [3,4]])
array([[1, 2],
       [3, 4]])
>>> np.zeros((1,2)) # 生成全为0
array([[ 0.,  0.]])
>>> np.arange(1,10,1) # 类似于range生成列表
array([1, 2, 3, 4, 5, 6, 7, 8, 9])

网站账号绑定微信方案

一般面向用户的网站都会有一些通知用户的需求,传统的方式会通过email,短信等等方式,鉴于微信的流行,像拉勾会使用微信来做通知。通过微信通知就需要把网站内部的账户体系与微信关联起来,目前体验比较好的绑定方式是通过微信扫描二维码来绑定用户账号。
从用户的角度来看,扫一扫绑定,很简单的功能,但是在研究了微信开发文档后,从开发的角度来看,其实流程还是比较复杂的,所以这里整理一下实现思路。

博客迁移到github

为什么迁移

blog算是我正式的第一个Python项目,是我入门Python的基石,一直稳定的运行在SAE上,上个月我还进行过一次升级,但是SAE的MySQL服务收费来得太突然,每年大概要花200软妹币,对于一个PaaS平台来说,我认为是不划算的,鉴于静态博客的流行,所以痛下决心迁移到github pages上来。

静态博客生成器的选择

  • Jekyll
    Jekyll是静态博客生成器的鼻祖,拥有大量的模版,但是基于ruby导致文章较多的情况下会比较慢
  • pelican
    python是工作语言,所以本来是最可能选择的就是pelican,直到我找到hugo
  • hugo
    golang实现,最大的优点就是快,而且golang可以编译为二进制文件,所以安装起来非常方便