做了一个小服务,以一条微博的价格出售你的产品。
主页: http://weibopay.ftao.dotcloud.com/
测试产品:
用微博购买 “The Big Secret”
主要是为了演示ezEngage API 的使用,微博登录和发表微博都是调用ezEngage 的API实现的。
做了一个小服务,以一条微博的价格出售你的产品。
主页: http://weibopay.ftao.dotcloud.com/
测试产品:
用微博购买 “The Big Secret”
主要是为了演示ezEngage API 的使用,微博登录和发表微博都是调用ezEngage 的API实现的。
最近玩了一下dotcloud (http://dotcloud.com) , 非常喜欢。
之前在公司的时候,有一位IT同学负责发布代码,有一阵非常苦恼。因为系统有很多模块,那几天每天都有很多次发布,每次都需要他SSH到服务器上去敲命令。 (后来这位同学就写了个Web界面的发布系统…)
发布和部署代码应该是一件简单,愉快的事情,不应该那么痛苦。。
前几年,开始玩GAE 的时候,GAE 的代码上传,发布方式让我第一次觉得可以发布代码可以这么简单。
做ezEngage 的时候,自己写fabric 的脚本来发布代码,也能做到一个命令搞定,但是写了很多额外的代码来到达这个目的。 另外mysql/nginx 等等还是手工配置的。
这次尝试用dotcloud, 非常简单,我将之前的火车票API的那个小项目拿过来尝试部署到dotcloud 上面,按照教程一步成功。 更好的是包括mysql 等等的常用的组件也可以一个命令部署。
我很喜欢dotcloud 的一个原因是这是个开发者给开发者创造的产品。
界面很简单,主要的功能通过一个(命令行)客户端 来操作API来实现。网站很简单,没有复杂的管理后台。
而我做的ezEngage有一个很大的问题,产品的主要的客户和我完全不是同类的人。
如果有下一次,我一定做一些给自己用,给开发者用的东西。
最近写了一些Django 项目,尝试了一些部署方式。写一下各种方式的优点和缺点。
Apache + mod_wsgi
这个方式是Django 推荐的部署方式,优点是比较简单。但是有两个比较大的缺点
1. 和virtualenv 的结合比较麻烦
2. mod_wsgi 会关闭标准输出。如果你的代码里面不小心写了一个 print , 就会出现500错误了。和开发环境的区别比较大。
Apache + mod_fcgid + mod_rewrite
这个方式是对服务器环境要求最低的方式,很多虚拟主机都支持这个方式。
另外有一个优点 fcgi 进程可以由apache 启动,不需要额外的进程管理工具。
Nginx + fcgi
这个方式的好处是Nginx 比较轻量级,适合内存比较小的 VPS。
确定是Django 的FCGI 进程需要自己管理。
我在Github 上建立了一个工程,提供了这几种部署方式的模版。
https://github.com/ftao/django-deploy-template
当然我们还有其他的选择,比如nginx + mod_wsgi 之类的。
我没有尝试,主要是我使用的Linux 发行版里面没有对应的包,不想自己编译。
前几天,将ezEngage 的帮助文档重新写了一遍。这么做的原因是原来的文档直接用HTML写的,并且和主站放在一起。
发布不方便,只是修改一点东西也要和主站一起发布。并且原始文件就是HTML,写起来很麻烦。
我用reStructuredText + Sphinx + github pages 重新编写,部署和发布了一份帮助文档。
reStructuredText 是一种轻量级的标记语言,特点是原始文件可读性很好。
Python 以及很多Python著名的开源项目(比如Django) 都使用该格式的来编写文档和手册。
Sphinx 的一个将reStructuredText 文件转换成各种格式(比如HTML,LeTex,PDF 等)的工具。
GitHub Pages 是一个GitHub 提供的托管静态页面的服务,只要内容通过git 推送到github 上面,就很可以方便发布内容了。
步骤如下:
1. 在github 上面建立一个仓库,开通github pages 功能
2. 将master 和 gh-pages 两个分支checkout 到本地的两个目录 (比如说 example-master , example-gh-pages)
3. 在master branch 里面正常写 reStructuredText ,
4. 符号链接 example-master/_build/html 到 example-gh-pages
5. make html , 生成html
6. push gh-pages 分支到 github , 发布完成。
这个方案的好处:
1. 源文件可读性好
2. 有版本管理
3. github pages 发布很方便
4. 服务器都省了….
链接:
1. 这份文档对应的仓库: https://github.com/ezengage/ezengage-site/
2. GitHub Pages http://pages.github.com/
3. Sphinx http://sphinx.pocoo.org
ps: reStructuredText 和 RESTful 这两个拼写上都和 rest 相近, Sphinx (文档生成工具, http://sphinx.pocoo.org) 以及 Sphinx (全文搜索引擎, http://sphinxsearch.com/) 都叫Sphinx 。搜索的时候很容易混淆。
前几天出去玩, 做了几次火车。用来几次 12306.cn 。 余票查询还是挺有用的。 作为API控,花一点时间写了个查询余票的Web API 。
用法: http://trans.labs.ftao.org/api/yupiao.json?date={date}&start={start_station}&arrive={arrive_station}
比如4.29日上海到南京的余票
curl "http://train.labs.ftao.org/api/yupiao.html?date=2011-04-29&start=%E4%B8%8A%E6%B5%B7&arrive=%E5%8D%97%E4%BA%AC"
存在的问题:很慢,数据不稳定(同一个查询会有短时间内会有不同的结果)。不过这都是 12306.cn 的问题。
简单的界面: http://train.labs.ftao.org/ui/
有空用JQuery Mobile 写一个适合移动设备的界面。 (这个才是我真正的需求)
最近评论