Bryan Blog

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

基于 cookiecutter 的 python 项目模板

Python project template based on cookiecutter

Cookiecutter 介绍 使用 Python 这种动态语言进行 web 开发,团队中经常会遇到的问题就是代码的质量比较难控制。Python 语言本身灵活性比较高,不加控制的情况下代码质量可能最后很难维护。而且代码的各方面的标准,比如提示的 lint,代码格式化等等如果不加规范,不同开发者的协作也会比较困难。因此从公司角度来看,一个统一的代码规范是很有必要的。 在 Python 的开...

Python 中的时区问题

Timezone problem in python

问题背景 使用 Python 进行了许久的开发,一直没有踩到时区的坑,最近新的业务中引入了比较多的服务,而且使用 grpc 进行数据通讯,不幸踩到了时区的坑,果然偷的懒最终还是会有报应的,于是梳理下对应的时区问题,同时发现系统中之前的数据库 Mongo 中的时区问题,一起整理如下。 基础概念 几个时间概念 首先是几个常见的时间概念 GMT 时间:格林威治时间,基准时间 ...

Poetry 包管理

Python package management by poetry

背景介绍 在 Python 的包管理中,一直没有一个完善的包管理工具,很长一阵子,项目依赖都是通过 requirements.txt 定义必要的依赖,而使用 requirements.txt 不仅繁琐,而且比较不方便维护,甚至没有办法维护直接依赖和间接依赖,虽然后面有 pip-tools 去提供一些便利,但是包管理依旧不方便。 哪里有不便,哪里就有人提供解决方案。大佬 Kenneth R...

基于 FastAPI 与 MongoDB 的数据流梳理

Data flow base on FastApi and MongoDB

背景介绍 自从 Python 3.5 以来,Python 在类型注解上的功能越来越强大,在 Python 3.7 又提供了的 dataclass, 可以比较便利地提供结构化的数据类。 与此同时,各种第三方的库也在基于类型注解提供了更便利好用的服务,其中 FastAPI 便是一款提供类型注解的 Web 服务框架,在保证了极高的性能的同时,提供了便利的数据管理。可以大大提升 Python 开...

虚拟 DOM 与 diff 算法

Virtual DOM and diff algorithm

基础背景 目前在使用前端框架的程序员们,或多或少都会知道框架背后的虚拟 DOM与 diff 算法,但是并不一定深入了解过为什么虚拟 DOM 要存在,以及不同前端框架如何进行更高效地渲染,这篇文章尝试去梳理一下这个完整流程 虚拟 DOM 介绍 有一些前端知识的都知道,对于 Web 页面而言,客户端最终可以展示的内容都是 html 页面,因此不管技术如何发展,最终都需要转化为 html 页...

PWA 与 Github Page

PWA and Github page

基础介绍 在开始介绍 PWA 的具体应用前,我们可以先介绍下 PWA 是什么。 PWA 是一系列的技术能力,可以用户增强 Web 的功能,可以让传统的 Web 网站对移动端用户更加友好。最终期望传统的 Web 网站在移动端可以达到接近 APP 的能力 PWA 另一个特点是来自于其名字,Progressive web apps,从名字上可以看到相关的技术都是渐进式增强的,因此技术人员可以根...

Form 的优化与思考

Form optimization and thinking

初始背景 最近在接触到前端校验的问题,本来是准备只是单纯地调研一下前端的校验问题。刚好又接触到黄金思维圈的思想,因此索性从源头出发,从基础的 form 功能开始考虑,分析痛点,逐步分析优化前端 form 的体验; 现状分析 良好的 form 一个体验良好的前端 form 需要的基础功能: 可以正确输入数据; 每个输入部分违反限制可以尽早校验,正确提示,方便用户尽早修改; ...

Canvas 基础应用

Introduction to canvas

基础介绍 最近开始接触 Canvas, 看到不少使用 Canvas 实现的酷炫动画,包括 butterfly ,3d-planet ,以及 动态网布 ,看起来功能十分强大,而且交互性也十分不错,看起来可以实现强大的前端功能。刚好最近有一个圣诞帽的需求,于是阅读了 基础教程 之后进行了简单实践。 Canvas 基础入门 Canvas 是 HTML5 中引入的一个新元素,直译为画布,实际中...

React router 入门

Introduction to react router

背景介绍 react router 是一个强大的 react 组件,可以提供强大的前端路由功能,算是 react 全家桶中一个相当重要的组件。如果使用 react 技术栈实现 web 服务,那么 react router 是一个极好的选择。 在介绍 react router 之前,首先需要明确介绍的 react router 的版本。 react router 3.x 和 react ...

生成器与协程

Generator and Coroutine

背景介绍 在 Python 中由于 GIL 锁的存在,多线程的并发效率不高。为了比较高效地实现并发,在 Python 中一般的方案是采用多进程 + 协程的方案。 协程也被称为纤线程,是一种程序级别的并发控制,多个协程会执行在同一线程中。协程的思想是由程序自身指定中断点,在 IO 操作时,程序可以自行中断,主动放弃 CPU,此时调度另外的协程继续运行。当 IO 就绪后,再调度此程序从中断点...