Pulpcode

捕获,搅碎,拼接,吞咽

0%

身为一个屌丝的你,是不是想学习把妹基础?这里就来通过uml告诉你把妹原理。

你和高富帅的区别(用例图)

用例图

阅读全文 »

久仰nginx大名,今天来初探一下。

编译安装

我的机器是ubuntu,编译安装nginx,不同的模块都要依赖库:

gzip模块需要 zlib 库

rewrite模块需要 pcre 库

ssl 功能需要openssl库

分别去官网下载然后进行编译安装即可,套路都是:

1
2
3
./configure
make
make install

最后下载并安装nginx,注意在./configure的时候,会提示以上需要的那几个库是否找到。

启动nginx之后,在浏览器输入http://localhost就可以访问到nginx的欢迎界面。

阅读全文 »

今天看了《恐怖游轮》,此片甚是精彩,感受颇多,所以打算写篇博客,发表些自己的看法。

Triangle

陈旧的时空轮回

首先,此篇使用的“轮回穿越时空,线索都是自己留下的”这一叙事风格早已陈旧。我不知道是哪部电影,或者哪部小说,首先使用了这种叙事风格,但在我印象中,使用此故事的片子简直太多了。

我记得《十二只猴子》有这个话题。哈利波特的某一集中,波特以为是父亲救了他,结果一次一次的穿越发现是自己救了自己。我国抄袭喜剧大王《爱情公寓》,第二季的最后一集,未来的自己跑来告诉自己该选什么答案(好像是B)。我甚至记得《机器猫》中有一集,大雄找砸掉花瓶凶手时发现就是未来的自己干的。

阅读全文 »

最近一直在从设计到编码,一直在想什么是一个好的设计,以下是开发中的一些心得。

几类接口

一开始我觉得我的服务有很多的接口,但是在后来我才发现,我的接口基本上就是三类(实际上应该有四类,但是目前只有三类,本文后面的部分会介绍还有哪三类)。

我的服务

我的服务基本上有这样几个功能,我可以接收一笔订单,我的后台负责处理这笔订单。我还可以接收一个查询,返回一笔订单的状态, 还可以接收别的系统发来的通知,算是其它系统告诉我我对其它系统发出请求后的处理结果。这就是我指的三类接口。(以下的描述中,“我”是服务商,“你”就是请求方)

阅读全文 »

基础:

匹配字符元字符:

1
2
3
4
5
6
7
8
9
10
11
. 匹配除了换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\W 匹配不是字母或数字或下划线或汉字
\s 匹配任意的空白符,包括空格,制表符,换行符,中文全角空格
\S 匹配任意的不是空白符,包括空格,制表符,换行符,中文全角空格
\d 匹配数字
\D 匹配不是数字
\b 匹配单词的开始或结束
\B 匹配不是单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
阅读全文 »

之前看过一些别人写的python项目目录结构,自己其实也一直尝试把python项目结构做好,规范的项目结构,能为代码带来很多方便。

import

规范的项目结构是使用标准import的前提,我之前的一篇博客,提到过这点,对于三种引用方式,implicit relative import,explicit relative import,absolute import

实际上只有第三种,才是官方推荐的,第一种是官方强烈不推荐的,python3中已经不可以使用了,我们的from future import absolute_import也就是为了禁用这种方式。参见我之前的一篇博客:详解python import

就像我说的那样,你要把主控main.py放到最外层,将其它模块都构造成完整的包。

就是你test目录下的单测,也要在主控的目录下负责调用才行。我想说的是如果你的代码中出现了其它两种方式,比如这种写法:

1
2
import sys
sys.path.append('..')

你要想想,是不是,你一开始设计的就有问题。

我现在的python目录结构大概是这样,平时用的python框架主要是flask和tornado,
实际上flask的项目偏业务重些,所以代码量也非常多,但是一般而言,flask的项目都比较规范,
因为一些文档已经在告诉你如何构建项目结构,如何使用它的一系列插件。

到是tornado的项目,因为其本身就用来写些接口和微服务,更偏基础服务,所以很多开发者很少注意其项目结构。

我比较中意的python项目结构,大概是这样的(这算是我的标配了):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
README.md
manage.py : 管理server的启动,停止,载入预制数据,运行单测,命令行管理文件
requirements.txt : 需要文件导入包(但是我觉得,这个算是载入的)
fabfile.py: 管理和发布程序
config.py:配置文件,一般里面会有三个类,develop(开发),test(测试),product(生产)
const.py:类似于数据字典,常量配置,避免魔数
logic : 些被封装起来的业务函数和业务类
app: 后台服务,前端api,里面一般会包含,handler,等文件夹
batch: 定时任务
orm:用来存放orm和一些封装起来的数据库操作函数
doc: 文档
sample: 实例程序
test: 所有的单元测试
utils:自定义工具类,可以放一些自己写的函数,比如我自己写过一个好用的时间类
static:静态文件夹
sql: sql文件

注意不要log文件目录放在项目文件目录里。

Introduction

有朋友想学python,但不知如何学起,想要一个python的学习列表,我想了一下,决定写一篇博客。

首先我写的不是“如何成为python高手”,而是作为一个已经入门的初学者,如何继续下一步提高,一是因为我的朋友很明显没有想成为一个python高手,二是因为我不是python高手,所以我也不知道如何才能成为python高手。

所以我这篇博客完全是私人定制.

我还要强调一点的是,学习技术绝对不是随便闭关几天就能学成的。我算写了6年代码了,但是依旧觉得自己什么都不知道。

why python?

python是一个动态,解释型语言,相比于java和c++,它更加灵活,更容易拥抱“变化”,互联网行业的兴起使得python在这两年越来越火,(将来可能还会更火)。

但同时要注意的是,由于它过于灵活,所以在很多比较“正规”的领域很少使用python,这些领域只有c++,java,c#这样的静态语言才能胜任。别听那些所谓google的许多项目是用python实现的,或者豆瓣这么大的网站就是用python实现的
之类的言论。实际上,python在大型项目上也就做做胶水语言,写个业务逻辑。项目做大了,python这种没有静态类型检查的,效率又低的动态语言,简直是噩梦。

说这些的目的是为了说明,一定要理解python的优势是什么,如何去用它为你带来收获,避免走过多不必要的弯路。

阅读全文 »