探讨下Javascript中的Promise模式

Javascript最令人称道的就是它的事件回调模式,因此即使只有一个执行线程,它也能支持异步高并发。不过回调写多了,代码就会非常复杂难懂,因为回调不像同步代码,执行顺序是从上至下,读回调代码必须跳来跳去,思考什么情况下到底跳到了什么地方,很辛苦,这种情况俗称”Callback Hell”回调地狱。Promise模式是一种异步编程模式,很早就有,随着ES6的正式发布,Promise成为了Javascript原生支持的对象。所以我就顺便学习了下Promise对象的使用,体会下它的作用。

Flask补充系列–将应用部署在Heroku上

之前曾经介绍过如何将Flask应用部署在自己的服务器上,对于手头并不宽裕的程序员来说,购置一台托管服务器还是一笔不小的开销。即便现在有公有云服务器可以买,不过如果你只是以学习为目的,这笔开销还是能省则省了。另外,如果你的应用中需要访问国外被河蟹掉的资源,在服务器上翻墙也是件麻烦事,所以这里我们补充一篇如何将Flask应用部署在Heroku上。

云平台及OpenStack简介

贴上一篇两年前写的文章,为了后面写云相关主题服务。曾几何时,“云”还是指天上飘的那一朵朵白色的雾团,现在互联网上家家都说自己是”xx云”。 “云”这个词,已经被赋上了新的含义。其实真正在做”云”的企业没几家。这篇文章会告诉大家,究竟什么是”云“?并采用现在最火的开源云平台OpenStack来给大家介绍“云”的架构。

Flask扩展系列–自定义扩展

介绍了那么多Flask扩展,该讲下如何写自己的扩展了。你可以写个扩展给自己的项目用,也可以发起审核申请,审核通过的扩展会显示在官方扩展列表中。本篇中,让我们创建一个为视图访问加日志的扩展Flask-Logging,并从中了解到写Flask扩展的规范。

Flask扩展系列(九)–HTTP认证

上一篇中,我们介绍了用户会话管理和登录验证,那么对于HTTP请求上的认证,比如Restful API请求的认证要怎么做呢?因为Restful API不保存状态,无法依赖Cookie及Session来保存用户信息,自然也无法使用Flask-Login扩展来实现用户认证。所以这里,我们就要介绍另一个扩展,Flask-HTTPAuth。

Flask扩展系列(七)–表单

表单Form,在Web应用中无处不在。在介绍Flask入门时,我们曾经做过一个非常简单的用户登录表单。其实所有的表单项都有共性,比如有文字输入框,单选框,密码输入框等;此外表单的验证也有共性,比如有非空验证,长度限制,类型验证等。如果有个框架,能把这些共性抽象出来,那就能大量简化我们的工作。Python的WTForms就提供了这些功能,这里我们就要结合Flask的WTForms扩展,Flask-WTF,来介绍如何在Web应用中制作表单。

Flask扩展系列(六)–缓存

如果同一个请求会被多次调用,每次调用都会消耗很多资源,并且每次返回的内容都相同,大家第一个反应就是该使用缓存了。的确对于大规模互联网应用,缓存是必不可少的,一个好的缓存设计可以使得应用的性能几何级数地上升。本篇我们将阐述如何缓存Flask的请求,并同时介绍一个缓存扩展,Flask-Cache。

Flask扩展系列(五)–MongoDB

MongoDB是一个文档型数据库,它灵活的Schema,多层次的数据结构和JSON格式的文档使得其已经成为了NoSQL阵营的领头羊。Flask的MongoDB扩展有很多,比如Flask-MongoAlchemy,基于MongoAlchemy实现,非常类似于上一篇所介绍的SQLAlchemy;Flask-MongoKit,基于MongoKit实现,同MongoAlchemy类似,需要预先定义数据模型。不过MongoDB的一大优势就是数据模型,即Collection,是灵活的,如果可以不限制数据模型的字段,将会更大程度的发挥MongoDB的优势,Python的PyMongo框架就可以做到这个。本篇我们就要介绍基于PyMongo实现的Flask扩展,Flask-PyMongo。