博文
Nginx 配置问题记录
· ☕ 1 分钟
1. server_name 无效 现象:Nginx 反向代理了两个应用,配置详情如下。发现访问 b.chenshaowen.com 和 a.chenshaowen.com 时,返回的都是 A 服务的请求。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 server { listen 80; server_name a.chenshaowen.com; location / { proxy_pass http://A; } } server { listen 8080; server_name b.chenshaowen.com; location / { proxy_pass http://B; } } 原因:当所有 server 的规则都不匹配时,Nginx 会采用第一条

如何使用 Docker 开发个人项目
· ☕ 4 分钟
1. 关于个人项目 为什么强调是个人项目?商业项目对代码托管、开发、运维部署等环节有着冗长的流程。而对于个人开发者,这样的流程成本过高,不利于快速项目迭代。 个人项目可能是一次学习的 Demo。完成一个领域 Demo 是很好的技术学习思路。从零开始搭建一个完整

基于 Git 的前后端开发工作流
· ☕ 4 分钟
最近参与了一个多人协作开发的项目,在开发过程中遇到不少问题。例如,前端提交冲掉后端代码、代码冲突无法解决直接返工、A 提交 B 分支、直接提交 Master 分支等。本文是记录,也是思考如何更高质量地管理项目、进行多人合作项目的开发。 1. 版本管理的需求 1.1 版本标记

Django 开发中常用命令
· ☕ 1 分钟
创建 Django 工程 1 django-admin startproject your_project_name 创建应用 1 2 3 django-admin.py startapp your_app_name # 或者 python manage.py startapp your_app_name python manage.py 和 django-admin 的功能基本一样。不同的是 python manage.py 还设置了 DJANGO_SETTINGS_MODULE 环境变量、将项目的路径加入了 sys.path 中。建议除了创建项目使用 django-admin,其他情况使用 python manage.py。 初始化数据 1 python manage.py migrate 创建缓存表

Python2 源码学习之字典和列表实现
· ☕ 6 分钟
1. 为什么字典比列表查询快 首先,请看下面这段代码 1 2 3 4 5 6 7 8 9 10 11 12 13 from time import time t = time() data = [chr(i) for i in range(97, 123)] # data = dict.fromkeys(data,True) print data for i in range(9999999): after_filter = [] for find in ['aa', 'b', 'cc', 'd', 'ee']: if find not in data: after_filter.append(find) print after_filter print time() - t 直接运行: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] ['aa', 'cc', 'ee'] 24.5699999332 去