跬步 On Coding

Elasticsearch 数据索引操作

开始一系列的搜索相关的学习,包括并不限于
Django
Haystack
Elasticsearch
IK中文分词
分词字典

简单搜索

Gunicorn运行Django时静态文件处理

问题

在用Gunicorn跑Django的时候,比较郁闷的是静态文件的处理,即使在settings设置DEBUG=True,静态文件也不会正常显示.生产环境下一般不会裸跑Gunicorn,一般都会在前面放一个Nginx反代到Gunicorn,而静态文件直接交给Nginx处理.

但是如heroku,coding.net的演示平台这种PaaS就不能自己配置反向代理,怎么样设置wsgi才能正常处理静态文件呢.这里总结下处理这个问题的经验.

方法1

强制使用Django的静态文件处理器,通过python manage.py runserver的时候,如果DEBUG=True,Django会自动加载自带的静态文件处理器,但是在Gunicorn下,这个设置会失效,我们可以强制使用Django自带的静态文件处理器.

IFWechat使用说明

ifwechat

①.IFWechat能做什么

IFWechat是一个能把微信连接到IFTTT的微信公众号,如果你还不知道IFTTT是什么,可以看看这里:ifttt 是一个什么样的网站?.
IFTTT = if this then that, IFWechat通过微信公众号实现了IFTTT中this的功能,通过微信发送到IFWechat的消息都会触发用户定义的IFTTT Recipes.

flask jinja2 i18n国际化简单实现

前两个星期,公司有需求要实现APP内嵌网页的英文版,因为要急着上线,所有就没有折腾i18n国际化,直接出了英文的模板,在view函数里面判断语言选择模板来实现.这周有空下来重新整了一下项目的国际化,使用通用的gettext来实现.

flask使用的是jinja2模板,jinja2自带了i18n扩展支持,但是需要Flask-Babel扩展的支持,有学习成本,所以没有使用,直接用了python内置的gettext来实现,而且jinja2引擎也提供了gettext的钩子来处理不同的语言.

gettext

gettext是*nix下的标准i18n实现,Python的标准库内置gettext,简单的理解一下,就是通过已有的字典映射文件,然后获取环境的语言信息来判断当前使用哪一个语言映射,最终渲染出不同的语言文本,这里就不详细研究gettext了,提供我的参考文档:

http://underthehood.blog.51cto.com/2531780/1663604

Docker初探

听闻Docker很久了,一直也没有动手玩一下,只知道是Linux的新的虚拟技术容器,比以往的虚拟机轻量很多,能最大化利用硬件资源.

最近RSS Factory因为使用量太大,又一次被搜狗反爬虫机制封杀,不少人来问我如果要自己搭建RSS服务怎么操作,也有自己动手的小伙伴遇到各种问题来问我,鉴于现在市面上有一些免费Docker CaaS提供商,所以考虑自己搭建一个RSS Factory的Docker image来分享给小伙伴来使用.顺便探索一下Docker的使用方法.

概念

  1. Docker repository: 可以理解为Docker的GIT库,Docker的官方的repository就叫Docker hub,可用想见Github之于GIT,上面世界各地的开发者分享的Docker镜像或者Dockerfile;

  2. Docker image: Docker镜像,Docker容器实例是通过Docker镜像来构建的,Docker镜像可用看做是一个没有跑起来的Docker环境,存储了Docker环境的所有变更与配置;