通过demo学习OpenStack开发所需的基础知识 -- 单元测试

2016-03-13
阅读 8 分钟
6.9k
这个图说明了,会单元测试对于提高Python生产力的重要性,这主要是因为Python是个动态语言,很多问题都无法通过静态编译检查来发现,因此单元测试就成了一个重要的确保质量的手段。OpenStack的核心项目都对单元测试有极高的要求,以保证项目的高质量。

通过demo学习OpenStack开发所需的基础知识 -- 数据库(2)

2016-02-21
阅读 11 分钟
6.9k
在上一篇文章,我们介绍了SQLAlchemy的基本概念,也介绍了基本的使用流程。本文我们结合webdemo这个项目来介绍如何在项目中使用SQLAlchemy。另外,我们还会介绍数据库版本管理的概念和实践,这也是OpenStack每个项目都需要做的事情。

通过demo学习OpenStack开发所需的基础知识 -- 数据库(1)

2016-01-06
阅读 9 分钟
7.8k
OpenStack中的数据库应用主要是关系型数据库,主要使用的是MySQL数据库。当然也有一些NoSQL的应用,比如Ceilometer项目。就SQL数据库本身的应用而言,OpenStack的项目和其他项目并没有什么区别,也是采用ORM技术对数据进行增删改查而已。

通过demo学习OpenStack开发所需的基础知识 -- API服务(4)

2015-11-17
阅读 11 分钟
11.7k
要开发REST API服务,我们首先需要设计一下这个服务。设计包括要实现的功能,以及接口的具体规范。我们这里要实现的是一个简单的用户管理接口,包括增删改查等功能。如果读者对REST API不熟悉,可以先从Wiki页面了解一下。

通过demo学习OpenStack开发所需的基础知识 -- API服务(3)

2015-09-30
阅读 13 分钟
15.1k
上一篇文章我们了解了一个巨啰嗦的框架:Paste + PasteDeploy + Routes + WebOb。后来OpenStack社区的人受不了这么啰嗦的代码了,决定换一个框架,他们最终选中了Pecan。Pecan框架相比上一篇文章的啰嗦框架有如下好处:

通过demo学习OpenStack开发所需的基础知识 -- API服务(2)

2015-09-08
阅读 11 分钟
8.2k
本文会重点讲解OpenStack中使用的API开发框架的使用。但是本文的目的并不是覆盖这些框架的使用细节,而是通过说明重要的部分,降低初学者的入门的门槛。框架的使用细节都可以从文档中找到。说明一下,除非特殊说明,本文中的相对路径都是相对于项目源码目录的相对路径。

通过demo学习OpenStack开发所需的基础知识 -- API服务(1)

2015-09-08
阅读 3 分钟
13.8k
通过命令行,也就是通过keystone, nova, neutron等命令,或者通过最新的openstack命令来使用各个服务的功能(社区目前的发展目标是使用一个单一的openstack命令替代过去的每个项目一个命令的方式,以后会只存在一个openstack命令)。

WSGI简介

2015-08-09
阅读 6 分钟
35.3k
WSGI的全称是Web Server Gateway Interface,翻译过来就是Web服务器网关接口。具体的来说,WSGI是一个规范,定义了Web服务器如何与Python应用程序进行交互,使得使用Python写的Web应用程序可以和Web服务器对接起来。WSGI一开始是在PEP-0333中定义的,最新版本是在Python的PEP-3333定义的。

shell的set命令

2015-07-20
阅读 3 分钟
16.8k
set命令是shell中初学者比较少接触,但是却很有用的一个命令(这里我们说的shell指的是bash)。set命令是shell解释器的一个内置命令,用来设置shell解释器的属性,从而能够控制shell解释器的一些行为。

Git全局忽略和Vim Session的结合

2015-07-07
阅读 1 分钟
3.7k
我知道这个功能也是通过Google来的,Stack Overflow上的一个回答给出了方案,地址是:[链接]。我这里就当做是翻译一下了。这里的全局忽略是只git的global级,也就是一个用户的范围内有效,不是系统范围内有效。

Python Mock的入门

2015-07-06
阅读 5 分钟
56k
Mock这个词在英语中有模拟的这个意思,因此我们可以猜测出这个库的主要功能是模拟一些东西。准确的说,Mock是Python中一个用于支持单元测试的库,它的主要功能是使用mock对象替代掉指定的Python对象,以达到模拟对象的行为。简单的说,mock库用于如下的场景:

通过demo学习OpenStack开发所需的基础知识 -- 软件包管理

2015-06-28
阅读 13 分钟
10.8k
OpenStack是目前我所知的最大最复杂的基于Python项目。整个OpenStack项目包含了数十个主要的子项目,每个子项目所用到的库也不尽相同。因此,对于Python初学者和未接触过OpenStack项目的人来说,入门的难度相当大。

web.py中实现类似Django中的ORM的查询效果

2015-03-09
阅读 4 分钟
4.7k
Question.objects.all()Question.objects.get(pk=1) 从例子可以看出,objects.all和objects.get这些功能都不是在class Question中定义的,可能在其父类models.Model中定义,也可能不是。那么我们在web.py中如何实现这样的功能呢?(如果你选择使用SQLAlchemy就不需要自己实现了)。

web.py源码分析: application(1)

2015-03-09
阅读 11 分钟
6.6k
本文主要分析的是web.py库的application.py这个模块中的代码。总的来说,这个模块主要实现了WSGI兼容的接口,以便应用程序能够被WSGI应用服务器调用。WSGI是Web Server Gateway Interface的缩写,具体细节可以查看WSGI的WIKI页面

uWSGI定时器导致web.py的内存泄露问题

2015-02-12
阅读 6 分钟
7.8k
近期开发了一个小型Web应用,使用了uWSGI和web.py,遇到了一个内存泄露问题折腾了好久,记录一下,希望可以帮助别人少踩坑。 P.S. 公司项目,我不能把完整代码贴上来,所以大部分是文字说明,以下配置文件中的路径也是虚构的。 环境说明 Ubuntu 13.10 uWSGI 1.9.13 web.py 0.37 sqlite3 3.7.17 2013-05-20 nginx 1.4.7 n...

web.py源码分析: 模板(3)

2015-02-07
阅读 10 分钟
5.4k
前两篇文章主要说明了web.py的模板系统将模板文件处理后得到的结果:__template__()函数。本文主要讲述模板文件是如何变成__template__()函数的。

web.py源码分析: 模板(2)

2015-02-02
阅读 7 分钟
4.3k
上一篇文章web.py源码分析: 模板(1)说明了web.py的模板的大致工作原理。本文重点讲述web.py模板支持的语法是如何转换生成__template__函数的。 web.py模板语法和__template__()函数的对应关系 本章会列出模板内容以及转换之后的__template__()函数的内容,以及必要的文字说明。模板的名称统一是hello.html。 纯字符串 模...

web.py源码分析: 模板(1)

2015-02-01
阅读 5 分钟
6.3k
web.py的模板实现利用了Python的可执行对象的动态特性:根据模板内容和渲染函数的参数创建一个函数,该函数执行的时候会返回一个TemplateResult类实例,该实例的字符串化就是模板对应的HTML内容。

Python Logging库HTTPHandler的消息格式化的方法

2015-01-27
阅读 3 分钟
8.5k
Python的logging库是标准库中用来实现日志的库,功能强大,而且使用起来也算是方便。该库提供了很多个不同的Handler,用来对日志进行不同的处理。例如FileHandler用来将日志记录到文件,RotateFileHandler用来将日志记录到文件而且支持日志文件滚动备份,还有本文中所说的HttpHandler,可以将日志通过HTTP请求发送到服务...

tmux中的choose-buffer和delete-buffer

2015-01-17
阅读 1 分钟
3.1k
Tmux的buffer是一个非常使用的功能,我们可以通过bind-key [进入copy-mode来选择要保存到buffer中的数据,随后再通过bind-key ]来粘贴一个buffer。

通过deb包安装Python库时怎么生成pyc文件?

2014-12-17
阅读 2 分钟
4.4k
使用Ubuntu系统或者其他基于deb包管理器系统的人,经常通过apt-get install命令来安装Python的库。不知道你们是否注意到,通过这个命令安装Python库后,也会自动生成对应的.pyc文件。但是通过synaptic程序或者dpkg -L package-name显示安装已安装文件就会发现,deb包中只包含了.py文件,并没有包含.pyc文件。那么这些.py...

Java I/O简介

2014-10-25
阅读 5 分钟
4.4k
相对于Python和 C来说,Java的I/O操作API比较复杂,因此本文打算做个简单的介绍。 1. I/O分类 总的来说Java的I/O按照处理数据的粒度和方向来划分,一共可以分为4类: 基于字节 输入 InputStream 输出 OutputStream 基于字符 输入 Reader 输出 Writer 使用原则:要读写二进制数据时,使用基于字节的API;要读写文本数据时...

Shell替换上一条命令中的字符串

2014-09-18
阅读 1 分钟
6.6k
今天学到了一个shell技巧:替换上一条执行过的命令中的字符串。 示例如下 {代码...} 解释一下: 首先执行ls d.cpio 然后输入^cpio^tar把ls d.cpio中的cpio替换成tar,然后执行替换后的命令。

Linux dd和cpio命令

2014-08-06
阅读 4 分钟
5k
最近经常遇到dd和cpio两个命令,觉得很有必要写篇文章强化下记忆。 dd命令 用途和命名 dd命令的用途是拷贝和转换文件。这个可以通过man dd知道: dd - convert and copy a file 通过info dd命令可以得到一段不同的说明: `dd' copies a file (from standard input to standard output, by default) with a changeable I/...

GNU global索引非常见文件扩展名

2014-08-02
阅读 2 分钟
7.6k
以前一直用cscope进行代码索引,最近想尝试一下gtags,也就是GNU Global,却遇到一个问题:就是公司的项目中,有的C代码的文件的扩展名并不是.h或者.c(例如.hbc和.hbh),在这种情况下,gtags的默认配置无法索引到这些文件中的定义。

C99的Designated Initializers特性

2014-08-02
阅读 1 分钟
2.7k
C99标准引入了Designated Initializers特性使得数组、结构体和联合体的初始化更加灵活和方便。 对于一个数组: {代码...} 这样可以只初始化a[1], a[8], a[9]三个元素,其他元素的值为0,相当于: {代码...} 对于一个结构体: {代码...} 这相当于: {代码...} struct的特性也可以用于union。这里的[index]和 .fieldname称...

RobotFramework quickstart demo的文本格式(in plaintext)

2014-05-06
阅读 5 分钟
3.1k
RobotFramework Quickstart是RobotFramework(下面简称为RF)提供的一个Demo,可以直接运行,用来体验RF。为了嵌入文字说明,该demo使用的HTML格式,因此在新手看来,比较难以区分HTML文件中哪些是定义用例,哪些是demo的说明。因此,我将该用例转换成了纯文本格式(robot后缀),以方便大家。

Ubuntu Server apt-get出现'Failed to fetch'问题

2014-05-04
阅读 1 分钟
11.4k
最近安装了一台Ubuntu Server 14.04服务器,正确设置接口的地址后,发现执行apt-get update出错,无法从服务器下载软件包信息,出错提示信息如下:

Ubuntu nm-tool命令

2014-05-04
阅读 1 分钟
5.3k
今天才发现安装了NetworkManager的Linux上都有这么一个命令:nm-tool。这个命令是用来输出NetworkManager程序的状态和设备的,可以方便的查看当前连接的一些状态,包括IP地址、网关、DNS服务器、WLAN关联的BSSID等,非常方便,输出大概如下:

Hello, world

2014-04-15
阅读 1 分钟
2.4k
测试一下SegmentFault的blog撰写体验,程序员习惯,写个hello, world 先来个C语言版的: {代码...} 再来个Go语言版的: {代码...} 结论:Markdown编辑器体验很不错。