1. 一个小需求经常遇到一些小的需求,但是实现起来并不简单。这里就有一个文件上传的简单需求,分为下面几个步骤:用户在页面上传一个大文件大文件会被暂存在内网的 Ceph后台任务,将 Ceph 中的大文件,下载到 Docker 内后台任务,将 Docker 中的大文件,上传到外网的 COS后台使用的是
主要记录最近遇到的一些开发问题,解决方法。1. Python 中的序列化与反序列化序列化,将内存对象转化为可存储或传输序列的过程。反序列化,把序列化序列重新转化为内存对象的过程。Json 和 Pickle 是 Python 中常用的两个序列化处理模块。Json VS Pickle:Json 实现的是
主要记录最近遇到的一些开发问题,解决方法。1. Python 的日志模块Python 的 logging 模块主要由四个部分组成:Loggers: 可供程序直接调用的接口Handlers: 将日志记录输出至合适的位置Filters: 提供更细粒度的日志是否输出判断Formatters: 定制最终记录
1. 什么是 frpfrp 是一个高性能的反向代理应用,提供的功能有:利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务对于 http、https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个 80 端口利用处于内网或防火墙后的机器,对外网环境提供
主要记录最近遇到的一些开发问题,解决方法。1. WhiteNoise 转发静态文件Django 内置的静态文件服务器效率很低,而 WhiteNoise 是一个不错的替代品。具有如下特点:通常用于 PaaS 服务支持 wsgi 应用程序,针对 Django 进行了特殊适配配合 CDN 使用,更佳在 G
本人所在的团队正在打造一款 ToB 产品,在垂直领域颇有影响力。此文是对团队关键事件的梳理,同时也包含了一些个人思考。1. 在熟悉的场景中做到最好互联网上,粗制滥造的内容太多,能获得广泛关注和影响力的产品屈指可数。只有基于对用户痛点的深入了解,才能够提出优秀的解决方案。而这些痛点就在身边,在我们最熟
由于数据量剧增,系统响应很慢。对应用系统进行了一系列的优化工作,系统响应时间得到了数量级级别的优化效果。总体看,在压缩文件、加快网络访问方面的优化,对前端性能有显著提升效果。在存储过程、缓存、逻辑代码方面的优化,对后端性能提升有显著效果。本文整理了优化思路和方法。1. 梳理链路在优化之前,梳理整个链
1. Django 中的 View Class首先回忆一下,Django 对请求的处理逻辑。收到一次请求之后,Django 会生成一个 WSGIHandler 类型的 handler,由 handler 控制整个处理流程。那么,请求的 URL 与 View 是如何关联的呢?Django 首先根据 R
1. Serializer1.1 数据校验在反序列化数据时,需要对数据的合法性进行校验。这时,可以调用 is_valid() 进行验证,如果发生验证错误,可以在 .errors 属性获取错误提示信息。例如:1 2 3 4 serializer.is_valid() # False serialize
主要记录最近遇到的一些开发问题,解决方法。1. Python 内存分析方法主要涉及四个工具:memory_profile:分析每一行代码的内存使用量objgraph:跟踪内存中的对象的关系guppy:在运行时跟踪堆的使用情况pyrasite:向进程中注入代码分为两步:模拟线上环境,使用 pyrasi
大公司的程序员,容易产生的错觉之一就是,误将平台能力当作自己的能力。在大团队,我们不应仅关注自己的一亩三分地,更需要了解平台的各个环节。一方面,有助于更好地利用平台相关特性,另一方面,也为了自我技术更好地成长。本文,介绍了如何使用 Jekins、Docker、GitLab 搭建 Django 自动化
主要记录最近遇到的一些开发问题,解决方法。1. Python3 连接数据库Python3 主要有两个数据库连接客户端: mysqlclient 和 PyMySQL 。mysqlclient 是由 C 语言实现的PyMySQL 是由 Python 实现的在性能上, mysqlclient 比 PyMy
Pytest 测试框架使用简单、插件丰富、功能强大,被广泛用于 Python 自动化测试。本文主要介绍一些 Pytest 的基本概念和使用方法。1. 运行机制第一步,Pytest 从命令行或文件中读取配置第二步,在指定目录下查找并导入 conftest.py 文件第三步,查找满足匹配条件的测试文件,
1. 我在思考什么在大公司,有更多机会了解行业动态,参与行业变革。大平台的运行,不是依靠某一个人或几个人。如果这样真的能实现,那也就不能称之为大的平台。一个萝卜一个坑,各自分工,相互协同,才是现代的管理方式。平台做得好,有影响力,个人也会有加持。但常常会陷入一种认知误区:将平台的能力当作自己的能力。
1. 常用环境变量1.1 GOROOT$GOROOT 是安装 Go 程序包的本地目录。1 2 3 4 cd /c/Go ls AUTHORS CONTRIBUTORS PATENTS VERSION bin favicon.ico misc robots.txt
最近在学习 Go ,而常用的内部 PaaS 平台正好也支持 Go 以及相关 Web 框架。一套 PaaS 系统支持多种语言,其中就离不开 buildpack 机制。虽然 PaaS 平台不断在升级,但是 buildpack 机制却一直保留。本文主要是一些 buildpack 资料的整理和实践。1. P
1. 为什么需要 Mock在做单元测试时,被测试函数有时并不是一个可执行的独立单元。被测试函数依赖于一些外部资源,比如另外一个函数的返回值、数据库中某一条数据值等。为了屏蔽外部依赖的干扰,我们会采用 Mock 技术。通过模拟测试资源的方式,满足依赖条件。从设计模式的角度看,对于满足单一职责原则的函数
主要记录最近遇到的一些开发问题,解决方法。1. Python2 和 Python3 中的异常处理Python2,Python3 都支持的两种方式:带参数1 2 except (ExceptionType) as Argument: # 访问 Argument 不带参数1 except Exc
1. 认知一致在大的组织中,我们可以将小团队理解为一个微服务。早在 1967 年,康威提出了微服务的概念。康威认为任何组织在设计一套系统时,所交付的设计方案在结构上都与该组织的沟通结构保持一致。在开发复杂系统时,我们通常会对系统进行模块拆分。一方面,个体能解决的问题难度有限,另一方面,个体之间具有一
1. 敏捷开发是什么在传统的软件研发模型中,从提出需求到最后交付,时间周期较长。瀑布模型遵循需求分析、设计、编码、集成、测试、维护六个步骤进行。一旦需求发生变化,不仅浪费前期投入,还不易于调整。敏捷开发是一种应对快速变化的需求的软件开发能力。特别是互联网软件,前期设计不可能十分完美,在研发的过程中,