用KNN来进行验证码识别


前言

之前做了一个校园交友的APP,其中一个逻辑是通过用户的教务系统来确认用户是一名在校大学生,基本的想法是通过用户的账号和密码,用爬虫的方法来确认信息,但是许多教务系统都有验证码,当时是通过本地服务器去下载验证码,然后分发给客户端,然后让用户自己填写验证码,与账号密码一并提交给服务器,然后服务器再去模拟登录教务系统以确认用户能否登录该教务系统。验证码无疑让我们想使得用户快速认证的想法破灭了,但是当时也没办法,最近看了一些机器学习的内容,觉得对于大多数学校的那些极简单的验证码应该是可以用KNN这种方法来破解的,于是整理了一下思绪,撸起袖子做起来!

分析

我们学校的验证码是这样的:请输入图片描述


面向对象与设计模式


前言

大一的时候学校就开了C语言这门课,最开始糊里糊涂无从下手,后来慢慢写了几个几百行的小程序就逐渐明白编程是怎么一回事了,还以为自己都懂了(too young 啊),可是后来蹭了一节java公选课,才知道还有面向对象编程这么一回事。老师说C是面向过程的,代码超过十万行就不好组织管理了,还得要面向对象的语言才能解决这个问题。我当时仿佛发现了一个新大陆,于是就开启了自学java面向对象编程的路程。


用Nginx+Redis实现session共享的均衡负载


前言

大学三年多,也做个几个网站和APP后端,老是被人问到,如果用户多了服务器会不会挂,总是很尴尬的回答:“哈哈,我们的用户还少,到了服务器撑不住的时候,估计都上市了吧”。说是这么说,但是对于有强迫症的我,这个问题一直回响在我脑海里,久久不散啊。如今大四下了,终于有时间来深入了解一下这个问题了。

貌似解决大访问量的方案有硬件和软件两个大类的方法,硬件一般比较贵,学生党就不去考虑了。还是想想怎么用软件解决吧。于是乎,Google,Baidu,balabala... 搜到最多的词就是“均衡负载”,搭配的一般都是Nginx。找到了方向,那就撸起袖子干活吧。


【译】Ngnix实现一个缓存和缩略处理的反向代理服务器


一两个月前,我决定从我的站点中移除Varnish ,并用Nginx内置的缓存系统替代它。我本来已经在我的python站点上用了nginx来反向代理,所以摆脱Varnish意味着少了一个麻烦。我花了好几天时间阅读怎样配置nginx的缓存,翻遍了我的python站点的不同的配置文件(是的,很讽刺)。在阅读过程中我标记了一些有趣的nginx的模块,这中间就有 Image Filter module(图像过滤处理模块)。

我觉得结合nginx的反向代理,缓存和图像过滤处理三大模块来为我托管在S3上的图片来创建一个缩略图服务器会很优雅。如果你仔细的查看下面的(甚至整个站点的)标签,你就可以看到nginx实战了。

请输入图片描述


PHP项目中CodeIgniter使用的一些建议


最近再给一个APP写API,同时还要写相应的后台管理网站。为了便于开发和代码组织与管理,我决定采用一个现有的框架。Codeigniter由于其轻量容易自定制的特点吸引了我,一路开发过来也有大半年时间了,写下一些自己在开发过程中的一些体会来与大家共勉。

开发工具

开发工具有好多,每个人的习惯也不同。Eclipse一直是我的最爱,那么怎么让Eclipse支持codeigniter呢?

首先这是个PHP项目,所以得让Eclipse支持PHP。假设你的计算机已经安装了PHP,那么最简单的做法就是在Eclipse的market space中搜索PDT并安装。具体操作:Help -> Eclipse Marketplace。在输入框中输入PDT,点击find,如图: