潇湘夜雨

分类

  • 源代码阅读 (20)
  • 设计模式 (3)
  • 科研 (6)
  • 思想 (2)
  • 技术 (18)
  • 工具 (4)
  • 虚拟机 (1)
  • java (11)
  • c语言 (4)
  • 读书 (1)
  • 操作系统 (1)
  • 英语 (10)
  • 计算机系统 (3)
  • 生活 (1)

归档

  • 2014-08 (1)
  • 2014-07 (5)
  • 2014-05 (12)
  • 2014-04 (3)
  • 2014-03 (11)
  • 2014-02 (6)
  • 2014-01 (3)
  • 2013-11 (10)
  • 2013-10 (3)
  • 2010-09 (1)
  • 不要做无谓的坚持和幻想的努力
    1. 2014-02-21
    2. 生活

    不要做无谓的坚持和幻想的努力

    有时候,你觉得自己一直在坚持和努力,可是从没问问自己这样的坚持和努力有用吗?

    其实你就是一只温水里的青蛙,还觉得自己一直都在坚持游泳呢。

    最近我有了一个非常明确和重要的启发,就是不要做无谓的坚持和幻想的努力。

    我在一个背单词的网站上背了471天单词,不长,不短,再坚持下去我也完全没有问题。但是,这真的就叫坚持,就叫努力吗?

    Read More ...
  • 读《MacTalk 人生元编程》
    1. 2014-02-20
    2. 读书

    读 《MacTalk 人生元编程》

    今天看了一本书,叫《MacTalk 人生元编程》,讲述了Mac,编程,科技与人文还有职场等内容,书是在作者的微信公众号基础上写成的,挺有趣的,感兴趣的可以买来看看。

    我记得小时候不管是读书,看电影,还是春游,老师都要求写读后感,当时的感觉已经忘了,不过小孩子谁愿意写这种玩意?而现在看着书就不断地会有感慨,这就叫有感而发吧。

    先说读书

    从书中可以明显看出,作者虽然是一个70后的老程序员,但是是非常喜欢读书的。我是非常喜欢热爱读书的人的,阅读量大的人明显与其它人拉开一个档次,无论是知识面还是对事物的看法。我这么多年没什么悔恨的事,唯一有一点悔恨的事就是年少的时候没有意识到读书的重要性。

    读一本书给我一种什么感觉呢?

    Read More ...
  • 使用 GitHub, Jekyll, Markdown 打造自己的博客
    1. 2014-02-15
    2. 工具

    使用 GitHub, Jekyll 打造自己的独立博客

    GitHub是一个代码托管网站,现在很多开源项目都放在GitHub上。 利用GitHub,可以让全球各地的程序员们一起协作开发。GitHub 提供了一种功能,叫 GitHub Pages, 利用这个功能,我 们可以为项目建立网站,当然,这也意味着我们可以通过 GitHub Pages 建立自己的网站。

    Jekyll是一个简单的,针对博客设计的静态网站生成器。使用 GitHub 和 Jekyll,我们可以打造自己的独立博客,你可以自由地定制网站的风格,并且这 一切都是免费的。

    这是我在GitHub上自己建立的博客 及源代码 (两个分支),在下文的讲解中,你可以随时查看博客的源代码,以便有直观的认识。

    网站截图:

    blog_snapshot

    Read More ...
  • WSGI 简介
    1. 2014-01-26
    2. 技术

    WSGI 简介

    背景

    Python Web 开发中,服务端程序可以分为两个部分,一是服务器程序,二是应用程序。前者负责把客户端请求接收,整理,后者负责具体的逻辑处理。为了方便应用程序的开发,我们把常用的功能封装起来,成为各种Web开发框架,例如 Django, Flask, Tornado。不同的框架有不同的开发方式,但是无论如何,开发出的应用程序都要和服务器程序配合,才能为用户提供服务。这样,服务器程序就需要为不同的框架提供不同的支持。这样混乱的局面无论对于服务器还是框架,都是不好的。对服务器来说,需要支持各种不同框架,对框架来说,只有支持它的服务器才能被开发出的应用使用。

    这时候,标准化就变得尤为重要。我们可以设立一个标准,只要服务器程序支持这个标准,框架也支持这个标准,那么他们就可以配合使用。一旦标准确定,双方各自实现。这样,服务器可以支持更多支持标准的框架,框架也可以使用更多支持标准的服务器。

    Python Web开发中,这个标准就是 The Web Server Gateway Interface, 即 WSGI. 这个标准在PEP 333中描述,后来,为了支持 Python 3.x, 并且修正一些问题,新的版本在PEP 3333中描述。

    WSGI 是什么

    WSGI 是服务器程序与应用程序的一个约定,它规定了双方各自需要实现什么接口,提供什么功能,以便二者能够配合使用。

    WSGI 不能规定的太复杂,否则对已有的服务器来说,实现起来会困难,不利于WSGI的普及。同时WSGI也不能规定的太多,例如cookie处理就没有在WSGI中规定,这是为了给框架最大的灵活性。要知道WSGI最终的目的是为了方便服务器与应用程序配合使用,而不是成为一个Web框架的标准。

    另一方面,WSGI需要使得middleware(是中间件么?)易于实现。middleware处于服务器程序与应用程序之间,对服务器程序来说,它相当于应用程序,对应用程序来说,它相当于服务器程序。这样,对用户请求的处理,可以变成多个 middleware 叠加在一起,每个middleware实现不同的功能。请求从服务器来的时候,依次通过middleware,响应从应用程序返回的时候,反向通过层层middleware。我们可以方便地添加,替换middleware,以便对用户请求作出不同的处理。

    Read More ...
  • wsgiref 源代码分析
    1. 2014-01-24
    2. 源代码阅读

    wsgiref 源代码分析

    wsgiref

    wsgiref 是Python标准库给出的 WSGI 的参考实现。

    WSGI是Python Web 开发中为服务器程序和应用程序设定的标准,满足这一标准的服务器程序和应用程序可以配合使用。我在上一篇博文《WSGI简介》中对此有详细的介绍。在阅读wsgiref源代码之前,一定要对WSGI有一定了解。

    WSGI 在 PEP 333 中描述,但是只靠阅读PEP 333 可能在理解上还是不够深入,所以阅读官方给出的参考实现是很有必要的。阅读完这份源代码后,不仅有利于对WSGI的理解。而且会让你对服务端程序如何对客户端请求有一个直观的理解,从相对底层的socket监听请求,到上层对HTTP请求的处理。

    当然,这只是对WSGI的参考实现,目的是为了描述清楚WSGI,而不是真正用在产品中。如果想对Python Web开发中服务器端的实现有更广泛,更深入的理解,需要进一步阅读Python常用框架的源代码。

    wsgiref 源代码分析

    wsgiref 源代码可以在 pypi wsgiref 0.1.2 下载。另外,我在阅读的过程中作了大量注释,包含模块介绍,调用层次关系,demo的运行结果,等 等,还包含了阅读过程中制作的思维导图。GitHub地址注释版wsgiref。

    结构

    wsgiref

    上图描述了wsgiref的所有模块及模块间的调用关系,可以看出,wsgiref有以下模块:

    • simple_server
      这一模块实现了一个简单的 HTTP 服务器,并给出了一个简单的 demo,运行:

      python simple_server.py
      

    会启动这个demo,运行一次请求,并把这次请求中涉及到的环境变量在浏览器中显示出来。

    • handlers
      simple_server模块将HTTP服务器分成了 Server 部分和Handler部分,前者负责接收请求,后者负责具体的处理, 其中Handler部分主要在handlers中实现。
    • headers
      这一模块主要是为HTTP协议中header部分建立数据结构。
    • util
      这一模块包含了一些工具函数,主要用于对环境变量,URL的处理。
    • validate
      这一模块提供了一个验证工具,可以用于验证你的实现是否符合WSGI标准。

    simple_server

    Read More ...
« Prev 1 2 3 4 5 6 7 8 9 10 11 Next »
Copyright (c) minixalpha 2014