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



读书笔记

本书用了一个个幽默的小故事, 讲解了操作系统/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

阅读全文 »


Bottle 源码阅读(三) -- ArgumentParser, __slots__, __call__, templefile, @property 使用



1. Python 命令行解析工具

(pycharm_env) ➜  six_web git:(six_20171018) ✗ ifconfig --help
ifconfig: illegal option -- -
usage: ifconfig [-C] [-L] interface address_family [address [dest_address]]
                [parameters]
       ifconfig interface create
       ifconfig -a [-C] [-L] [-d] [-m] [-u] [-v] [address_family]
       ifconfig -l [-d] [-u] [address_family]
       ifconfig [-C] [-L] [-d] [-m] [-u] [-v]

类似在 Linux 系统上执行 command -help 命令, C 语言使用的 getopt() 进行命令行交互. Python 标准库中自带的 argparse 的用法几乎一样.

阅读全文 »