Bryan Blog

个人分享 但愿各位看官喜欢

logging入门

logging in python

基本概念 logging是python中功能强大的日志系统,可以方便地格式化日志信息,对于python programmer来说,logging就是线上定位bug的神兵利器。本文部分内容参考自 Mario Corchero的演讲,有兴趣可以自备梯子观看。 logging包含的基本结构包括logger, handler, filter, formatter,基本结构关系如下所示: ...

代码重构

Code refactor

代码重构 重构一直是一项写出可靠代码的重要手段,一般情况下,很难一次写出可靠到完全没有重构空间的代码,即使当前情况下完全没有重构空间,但是之后随着业务的发展,代码质量可能会慢慢下降,或者原先的设计无法满足新的需求,这时候,重构就相当必要了。最近刚好有空重新阅读了大作《重构,改善既有代码的设计》,整理一下相关内容 两顶帽子 很多时候,我们重构代码是在添加功能的时候发现原有代码无法支持新的功能...

Promise 异步调用

Promise in javascript

Promise 介绍 Promise是ES6提供的语法,可以将回调函数的写法变得更优雅,避免写出Callback Hell。如果不了解回调地狱可以阅读此文档,简单来说,就是一层嵌套另一层的回调,出现多层回调时,代码就惨不忍睹了。按照之前老式的写法,为了执行回调可能会写出如下所示的代码: function successCallback(result) { console.log("Au...

Oh my zsh 配置与插件

Configurations of oh my zsh

Oh my zsh 介绍 按照 oh my zsh 官方的介绍,oh my zsh 是一种你用了其他人就会追着喊着叫你天才的工具,听起来是某种装逼利器,而且效率成倍提升。那么oh my zsh 到底是什么呢?在我看来,可以理解为: 装逼的主题皮肤 + 提升效率的插件。可以将你的终端效率成倍提升,简直懒人神器。那还等什么,赶紧用起来 安装 oh my zsh 是为zsh终端准备的,如果没有z...

Python虚拟环境管理

Virtual environment in python

Python 虚拟环境管理 Why 管理过多个项目都知道,每个项目会有不同的依赖关系,将这些依赖关系全部保存在全局环境是不切实际的,而且不同项目的依赖关系可能会冲突,比如有些项目依赖python2,有些项目依赖的是python3。因此比较好的方案就是,为每个项目设置隔离的虚拟环境,所需的依赖关系都保存在各自的虚拟环境中,避免互相冲突。这就是为什么我们需要虚拟环境管理的原因。 How 早期的...

Flask 0.1 源码解析

Dive into flask 0.1

理解 Flask 0.1 为什么会挑选flask 0.1作为源码阅读的目标,主要原因在于简洁,可以比较清晰看到完整逻辑。还有一部分原因在于:整体的框架与思路与最新的代码都是一致的。因此,此次就以flask 0.1 源码作为介绍的目标,看看flask是如何实现优雅实现一个服务器的,具体注释的源码可以查看Flask 0.1 理解flask的源码需要一些基础,首先是需要python的基础,fla...

Python上下文管理

Context managers in python

上下文管理 python的上下文管理可以方便用于管理资源的分配与回收。一般通过with进行使用,比如经常可见的文件操作: with open("path_to_file", "r") as f: f.read() 在这样的上下文管理下,用户可以打开文件后,可以不用关心的文件的释放,甚至在文件打开成功打开,但是执行出错时,也会正确释放文件资源。事实上这样的代码对应的等价代码为: f ...

Local,localStack,localProxy深入解析

Local, localStack, localProxy in flask and werkzeug

Local Local 是什么 根据 官方文档 的介绍,local是提供了线程隔离的数据访问方式,类似于python中的 thread locals。可以理解为存在一个全局的数据,不同线程可以读取和修改它。不同线程之间是彼此隔离的。比如存在一个thread local的数组arr,在线程1往数组arr添加了一个数据,在线程1中读取时可以看到数组中存在一个数据,但是在线程2中读取时看到的数组a...

Python优雅迭代器实现

Elegant iterator in python

简单迭代器 在python中,为了让类可以迭代访问,需要满足如下所示条件: 在类中需要实现__ iter__()方法,此方法需要返回一个迭代器; 为了类成为迭代器,可通过实现next()方法,此方法可以返回下一个可用的数据,直到没有可用数据,此时抛出StopIteration异常 按照上面的理论,可以实现一个简单的迭代器如下所示: class IterableServer:...

Python字符编码介绍

Encoding in python

字符编码 字符的编码一直是一个令人头疼的问题,如果没有完全理解它,那么总有一天会踩进字符编码的坑里的。最近正好有空,梳理了编码相关的知识,来一篇博客,整理相关的细节。 ASCII 从计算机发明的时候起,字符的编码就是一个令人困扰的问题。众所周知,计算机只能存储二进制的数据,但是现实生活中的数据都不是二进制,比如我想在计算机中存储一个’hello world’的字符串,那么如何存储呢,肯定是...