<<刻意练习>> 读书笔记



本书最触动的地方, 在第六章的小节 “专注和投入至关重要”, 回想自己打球多年, 进步始终缓慢, 就是缺少了动作定型练习, 摘要如下:

"贾斯丁, 你在做什么?"
"我在为参加锦标赛练习球技."
"不, 你不是在练习, 你只是在击球而已, 你并没有刻意的向特定的技巧有目的的训练"

阅读全文 »


<<码农翻身>> 读书笔记



读书笔记

本书用了一个个幽默的小故事, 讲解了操作系统/Java/网络等多方面知识, 其实对读者要求知识水平有比较高的要求, 不然只能是走马观花.

《码农翻身》分为6章。

第1章讲述计算机的基础知识;
第2章侧重讲解Java的基础知识;
第3章偏重Web后端编程;
第4章讲解代码管理的本质;
第5章讲述了JavaScript的历史、Node.js的原理、程序的链接、命令式和声明式编程的区别,以及作者十多年来使用各种编程语言的感受;
第6章是作者的经验总结和心得体会,包括职场发展的注意事项、作为架构师的感想、写作的好处等。

挑部分故事中涉及的知识点, 做一下笔记.

阅读全文 »


Bottle 源码阅读(六) -- Python Web 服务基础



1. Python socket 模块使用

Python Socket 编程详细介绍 这篇文章讲解的非常好.

先看下面一段代码:

阅读全文 »


Bottle 源码阅读(五)-- WSGI 服务封装, 热部署原理



1. WSGI 服务

Python 内置了一个 WSGI 服务 wsgiref, 借用 simple_server.py 中的例子, 看下简单的使用, :

from wsgiref.simple_server import make_server


def demo_app(environ, start_response):
    from io import StringIO
    stdout = StringIO()
    print("Hello world!", file=stdout)
    print(file=stdout)
    h = sorted(environ.items())
    for k, v in h:
        print(k, '=', repr(v), file=stdout)
    start_response("200 OK", [('Content-Type', 'text/plain; charset=utf-8')])
    return [stdout.getvalue().encode("utf-8")]


def start_wsgi():
    httpd = make_server('', 8000, demo_app)
    sa = httpd.socket.getsockname()
    print("Serving HTTP on", sa[0], "port", sa[1], "...")
    httpd.serve_forever()

demo_app() 函数就是符合WSGI标准的一个HTTP处理函数,它接收两个参数:

environ:一个包含所有HTTP请求信息的dict对象, 从截图可以看出来包含的信息非常多
start_response:一个发送HTTP响应的函数

阅读全文 »


Bottle 源码阅读(四) -- 注解, functools, yield, inspect



1. Python 注解使用

高阶函数, 指的是能将函数当成入参来操作, Python 注解也是这么做的, 使用 @ 符号, 让代码更简洁.

示例

def logger(fn):
    def wrapper():
        print('%s starts to executing' % fn.__name__)
        fn()
        print('%s finished executing' % fn.__name__)
    return wrapper


@logger
def hello():
    print('Hello world!')
##
hello starts to executing
Hello world!
hello finished executing

阅读全文 »