在Web应用中,API(Application Programming Interface 应用程序接口)的使用频率非常高,Google、推特、脸书,每天都会处理几十亿次的API调用请求。API接口一旦公布很难修改,所以设计要慎之又慎。本文主要归纳几种流行的Web应用API接口,总结它们的特点,供需要设计API的开发者作为参考。如果只需要RESTful的API模版建议参考Swagger。顺带介绍编写Python…
作者: Perchouli
二城
俗务缠身,一篇游记也能从清明拖到大暑… 因时间太长,潍坊十笏园美景已不记得,倒是济南鲁菜馆美食仍能回味,顺带忆起济南诸多琐事,故《二城》暂只记其一,待续(可能)。
从大明湖南门到东华街,若有游客说正要找一家鲁菜馆,当地人都知道,这位食客一定是在找“崔义清鲁菜馆”。店门脸不大,招牌不小,行楷四个大字——“鲁菜泰斗“,气势真不亚于古时公堂之上的正大光明,明镜高悬。店内布置简陋,十几米开外,八九张桌子,厨房对面两个包间,墙上挂着崔师傅的几张照片。我选了张靠墙的单人桌,背靠柜台,柜台上散放着一摞一摞的纸,也许是账单。当时已是下午2点,店内也就两三个客人,运气不错,点到了最后一份九转大肠,再点了清炒黄瓜片和银耳汤,主食是两个快要凉掉的馒头。这一荤一素都是招牌菜,传统做法,无可挑剔自然也不用多费笔墨,只说这汤。所谓唱戏靠腔,煮菜靠汤,汤最讲究食材味道的提炼,粤菜就以汤见长,有无汤不起镬的说法。吴中有酒名为“清若空”,这碗银耳汤很配这名字,真是有如茅台一般,不见一丝杂质。白色大号瓷碗,三朵银耳开在汤中,又不显空疏,《爱莲说》所谓“濯清涟而不妖”亦不过如此。红枣起画龙点睛的效果,既是红色,或者说是点绛唇更为恰当吧。味道自然是甜,形容甜味,世人总爱用“甜而不腻”,但真正能做到甜而不腻的实在罕见。《文选》写京家之子,增之一分则太长,减之一分则太短;著粉则太白,施朱则太赤。那这汤就是多甜一分则太腻,少甜一份则太淡了。…
用rsyslog处理日志
之前是用mysql数据库来保存用户的访问日志,现在已经超过2亿了,速度非常慢,还分了三张表,要换一种记录日志的方式。现在暂时没有时间做数据挖掘,要做的只是把日志先存起来,所以直接用linux自带的rsyslog来做。用户访问时,以UDP的方式,将访问信息封装成JSON发到rsyslog的端口,rsyslog会以文本的方式直接记录下来。以后就可以用syslog-ng之类的工具写到mongo或其他数据库。…
用Python登录正方系统获取课表
没想到毕业之后还会折腾这破玩意。大学时用RGSS语言完成过一个类似的功能(虽然最近才知道它和Ruby语言有关),但没用Python写过。其实代码完全没难度,但这套系统很讨厌,它用.NET语言写成,出现最多的是页面是“当前访问人数过多,请稍后访问”,系统开发者最擅长的是制作登录界面,一口气做了5个(这得多闲啊……)。其中的default3.aspx不需要验证码。登录时必须带一个叫__VIEWSTATE参数,推测是系统自动生成,每隔一段时间会更换。…
Ubuntu 12.04 安装scribe 的笔记
首先,如果你不是很熟悉C++,请放弃安装scribe。这个项目有年头没更新了,分布式日志写入可以考虑haodoop的flume或是支持MongoDB,能直接获取scribe输出的fluentd。其次,建议按照这篇笔记记录的版本,或者手动修改代码,让scribe支持高版本的filesystem以及各种库,否则必然会出现各种错误。而且这些问题虽然是同样的报错但在Google上有各种千奇百怪的解释。
scribe依赖Boost库,用thrift实现跨语言,还需要fb303来做监控。在CentOS上找到了rpm包,在Ubuntu上,apt-get…
Django托管在Github上的实践
Django1.4上个月发布了,有些模块换了名字,加密方式也变了,最明显的变动是目录的组织方式,manager.py和其他配置文件分开存放。这些改动导致之前的目录组织方案将不再适用。所以整理一下1.3之前在Github上的实践,今后开发的新项目再转到1.4。
requirements.txt, local_settings.py
把Django项目托管到Github上,README是给不熟悉项目的人看的,未必得能给自己省多少力气。但写requirements.txt绝对是双赢。Django项目肯定会用到一些模块(至少得装Django…),用一个txt文件列出所有会用到的模块,以换行分割:…
从Discuz中整合用户数据到Django
国内很多论坛使用的都是Discuz,Discuz为了满足各种需求,已经变得非常臃肿,很多新技术如果要在Discuz上应用成本很高。于是用Django重写了一个,只保留基本的发帖功能。
老论坛中有近10w的用户数据,有些是注册机注册的,也有一些已经不活跃的用户,因此不考虑直接导入用户数据。大致的思路是:当某个用户登录时,查询旧的Discuz数据库,如果用户名和密码都正确,则把这个用户写入新系统Django的用户表中。这部分逻辑我是写在forms里,登录仍然用Django自带的auth_view来处理。…
一折
高中语文老师说过,为文者绝不能用“很久没动笔了”这种折煞士气,又自曝其短的说法作为开头。如今虽颠沛于北京,投笔已久愧对师恩。教诲终归还记得,于是删掉俗烂的套话,重拟开头。
孟丽君其中一折,名为《探病》,孟夫人装病暗中认女,少华借画像以表思念之情,丽相欲说破又恐连累两人,这一折用婉转的越剧唱出来真是把个中纠结诠释得天衣无缝。如果换做其他场景,比如祝寿,效果必然大打折扣,所以生病是一个很不错的flag。…
从零开始搭建Django Solr的环境
本文介绍在Ubuntu系统中,用django-haystack处理Django搜索请求的方法。如果有涉及连词、多条件等较为复杂的搜索需求,这是一个很不错的解决方案。如果只需要基本的搜索功能,或是刚接触Django的用户则不推荐使用,这个模块功能强大相应的配置也很繁琐,稍有不慎就会出错。
安装tomcat, solr, django-haystack:
$
Django用uploadify实现图片批量上传
分享一下在Django中使用uploadify——一个jQuery批量上传插件——的方法。github上的django-uploadify使用的是2.1.4版本,上传button只能使用图片,不能很方便的修改样式。本文针对的是uploadify 3.0.0版本。
uploadify可以结合Django自身的ImageField,或是配合easy_thumbnails等第三方app来使用。比较稳定,我在几个项目中处理批量上传都是用它,没有出现什么问题。但因为是用flash上传,在开发工具中监控不到network的动作,只能通过函数返回的错误信息来调试,所以比较麻烦,但调通一次就一劳永逸了。…