Python单元测试PyUnit用法总结

2018年4月15日 Python, 编程语言 2 comments

1、PyUnit 用法

先来个简单计算器的示例:my_calculator.py

如果被测试代码文件名为xxx.py,那么测试代码文件应该被命名为xxx_test.py,那么这里单测文件命名my_calculator_test.py,下面撰写单测文件,

首先引入unittest模块,编写一个测试类,继承至unittest.TestCase,

测试方法必须以 test开头,这样会在运行单测时被执行,否则不会被执行,但内置的setUp与tearDown两个方法除外,

setUp和tearDown方法在每个单测前后都会执行一遍,可以将抽象的公共的前置和后置操作写到这两个方法中去。

运行方式:

  • 将unittest.main添加到main函数中
  • 利用”python -m unittest 参数”的形式执行,参数为MyCalculatorTestCase则运行全部单测,参数为MyCalculatorTestCase.test_XXX则指定特定的单元测试进行。

常用的方法有:

2、参考文档

http://pyunit.sourceforge.net/pyunit_cn.html

https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00140137128705556022982c[……]

Read more

Vim配置探索

2018年4月15日 Linux, Vim, 工具 No comments

1、常用设置

编辑~/.vimrc

设置执行代码

2、插件

janus:https://github.com/carlhuda/janus

python 插件:https://github.com/rkulla/pydiction/archive/master.zip

Python 代码自动折叠:http://www.vim.org/scripts/script.php?script_id=515

插件管理工具vundle.vim:https://github.com/gmarik/vundle.git

nerdtree:https://github.com/scrooloose/nerdtree.git

youcompleteme插件

bufexplorer.zip

利用vim习惯使用 chrome的神器:Vimium

3、参考文档

https://www.zhihu.com/topic/19570193/hot

https://www.zhihu.com/question/20151659

https://www.cnblogs.com/linxiyue/p/7834817.html

http://www.jb51.net/article/58009.htm

http://www.cppblog.com/deercoder/archive/2011/10/22/158886.html

Kubernetes资料汇总

2018年1月28日 Kubernetes No comments

注明:

FTP地址:ftp://ftp1.linuxidc.com

用户名:ftp1.linuxidc.com

密码:www.linuxidc.com

在 2017年LinuxIDC.com//11月/Kubernetes权威指南:从Docker到Kubernetes实践全接触(第2版) 清晰PDF/

 

 

Openstack云平台脚本部署之Nagios监控(十九)

2017年11月28日 Openstack, Shell, 云计算, 分布式管理, 集群管理 No comments , , ,

一、简介

Nagios是一款开源分布式监控软件,能够有效监控节点状态,交换机、路由器等网络设置。有关Nagios的监控框架、实现原理及配置文档,详细可阅读这边文章

Nagios功能:

  • 监控网络服务(SMTP、POP3、HTTP、FTP、PING 等);
  • 监控本机及远程主机资源(CPU 负荷、磁盘利用率、进程 等);
  • 允许用户编写自己的插件来监控特定的服务,方便地扩展自己服务的检测方法,支持多种开发语言(Shell、Perl、Python、PHP 等)
  • 具备定义网络分层结构的能力,用”parent”主机定义来表达网络主机间的关系,这种关系可被用来发现和明晰主机宕机或不可达状态;
  • 当服务或主机问题产生与解决时将告警发送给联系人(通过 EMail、短信、用户定义方式);
  • 可以支持并实现对主机的冗余监控;
  • 可用 WEB 界面用于查看当前的网络状态、通知和故障历史、日志文件等;

在这里,Nagios用于监控Openstack集群每个物理节点上的所运行的基础服务。

二、部署脚本

安装部署顺序:

  • 在controller01上安装nagios及其插件,并将所有待监控的物理节点添加到/etc/nagios/objects/hosts.cfg中,然后再将所有节点上所有服务添加到nagios的服务列表/etc/nagios/objects/services.cfg中,然后检查controller01上nagios配置项是否正确,如果正确,启动nagios服务并设置帐号密码。
  • 在所有节点上,安装nagios远程插件执行器nrpe,并根据不同节点上所监听的不同服务,配置各自的nrpe.cfg,最后启动所有的nrpe服务,完成对服务的监控。

部署完成后,浏览器访问:http://192.168.2.11/nagio[……]

Read more

Openstack云平台脚本部署之Ganglia监控(十八)

2017年11月28日 Openstack, Shell, 分布式管理, 集群管理 No comments , , ,

一、简介

Ganglia是源于UC Berkeley的一个开源分布式监控工具,能够实现对CPU、内存、网络、磁盘I/O等信息的监控,支持Linux、Unix、Windows等多种操作系统,可支持2000左右的节点的网络监控。

Ganglia主要组件包括以下部分:

  • gmetad: ganglia metadata daemon,Ganglia的数据收集器,通过轮询收集gmond的数据,并聚合簇的各类信息,然后保存在本地rrdtool的数据库中,每个集群最好部署一个gmetad,可以构建多层级的监控网络,如下图。
  • gmond: ganglia monitor daemon,位于每个节点上的监控服务守护进程,能够监控当前节点上的性能信息。
  • ganglia-web: 基于PHP、Appache2实现的监控可视化系统,提供 Web 前端,用于显示监控系统的历史数据和图形。

这里我们仅部署Ganglia-gmond模块,用于每个监控节点上的性能信息收集,通过定期访问主节点的单播端口,获取各物理节点上的性能信息。

二、部署脚本

Ganglia-gmond在Openstack集群上的部署非常简单,选取controller01作为gmond的中心节点,设置数据接收通道udp_recv_channel,如下:

aa所有节点配置gmond,设置数据发送通道udp_send_channel ,如下:

一键部署脚本如下install-configure-ganglia.sh:

部署完成后可以访问中心节点的单播端口查看性能监控数据:
[crayo[……]

Read more

Dockerfile构建镜像学习总结

2017年10月21日 Docker No comments

1 概述

Dockerfile基于DSL(Domain  Specific Language)语法的指令来构建镜像,利用Dockerfile构建镜像具备可重复性和幂等性,比利用docker commit的方式更具优势。

2 指令介绍

每个Dockerfile指令必须大写

(1)FROM:指定基础镜像,FROM是必备的指令,并且必须是第一条指令。

(2)RUN:用来执行命令,有shell格式和exec格式两种方式来执行命令。

每执行一个命令就会构建一层镜像,为避免不必要的commit,建议使用&&将命令连接起来。为了增加可读性,利用#进行注释,利用\进行换行,并增加相应缩进。

注意这里的清理操作,执行rm清理不必要的临时文件,–auto-remove清理临时变量,避免镜像臃肿。

(3)COPY:文件的复制,可用于将一些本地文件复制进镜像。

格式:

COPY <源路径>… <目标路径>
COPY [“<源路径1>”,… “<目标路径>”]

<目标路径> 可以是容器内的绝对路径,也可以是相对于工作目录的相对路径(工作目录可以用 WORKDIR 指令来指定)。

注意:COPY 指令会保留源文件的rwx等权限、变更时间等信息。

(4)ADD:同COPY,但源文件路径可以是URL,Docker 引擎会先下载,然后再拷贝到目标路径中。通常情况下如果需要对文件进行解压并变更权限,建议直接[……]

Read more

Python玩转语音聊天机器人–菜鸟演绎版

2017年10月19日 Python No comments

1 前言

最近比较闲,简单了解了一下微信小程序开发,想着空闲时自己动手也写一个可以陪人聊天的小程序,后来发现类似的小程序已经有好几款了,而且做的都还不错。聊天机器人的好几年前就有了,但最近貌似又开始火热起来了,上次在车库咖啡听百度UNIT分享时,分享嘉宾说目前语音需求远大于图像处理,当时还有点不敢相信,但下面的常见场景大家都不陌生,可见语音到底有多火:

  • 百度AI发布了DuerOS,”小度小度”的唤醒语火遍了朋友圈
  • 微信和输入法中语音输入真是方便,再也不用担心妈妈不会打字了
  • 龙泉寺的贤二机器人居然会跟大师探讨佛法、诵读经文,惊!
  • 好友群中多了一个聊天机器人,比如QQ小冰(2854196306),@她后可以陪聊,天知道未来哪天我是在跟谁聊天
  • DevOps方兴未艾,ChatOps产品却开始崭露头角,运维人员真是越来越懒了,命令都懒得敲了
  • ……

大牛们总是敢为人先,好几年前都已经DIY出来一个能够红外识别人的聊天机器人,电梯直达。汗~,原来自己已经早早落伍啦,现在也利用Python玩玩大神的山寨版聊天机器人。

拼装一个聊天机器人竟然如次简单,你只需要:

语音交互的典型流程:用户说话–>录音–>百度语音识别为文字–>发送文字给图灵机器人–>处理图灵机器人回复文字结果–>将结果文字合成语音–>播放语音给用户。

2 服务调用

(1) 百度语音

百度语音可以调用REST服务,也可以本地安装一个客户端,具体参考开发文档。

https://ai.baidu.com/docs#/ASR-API/top

https://ai.baidu.com/docs#/TTS-[……]

Read more

Oracle数据库服务的启动与停止总结

2017年10月19日 数据库 No comments

1 正常启停流程

切换oracle帐号

执行启动操作,并查看数据库状态

启动监听器

查看监听状态

关闭监听

关闭监听

关闭数据库服务

2 主机名或IP变更相关

如果数据库所在虚拟机或物理机的主机名发生变更后,无法通过ping通之前的主机名称,这时启动数据库会报错:

无法ping通主机名

解决方法:修改hosts文件,追加当前IP和主机名

这时就可以启动数据库服务了。

但是启动监听还会报错:

解决方法:更新/opt/oracle/product/10.2.0.1/network/admin/listener.ora中的主机名:

保存后就可以启动监听了:

3 归档模式开启

什么是Oracle归档模式?

Oracle数据库有联机重做日志,这个日志是记录对数据库所[……]

Read more

Python实现简单网页爬虫及自动告警

2017年9月24日 Python, 编程语言 1 comment

一、概述

Python是一个高效的脚本语言,用python撰写爬虫具有很大的优势,很多大牛已经分享了爬虫经验,各种花式爬,贴子、图片、视频(舅服爬了1.8PB视频的 beaston02),最近由于刚需驱动,也简单学习了下python爬虫,写了一个能够干活的小爬虫,在这里总结下,希望能给后来者提供一点帮助。

这里的爬虫的场景适合监控某个网站上公告信息,等感兴趣的信息发布出来后,爬虫能够自动监控到,然后可以发邮件或短信自动提醒,这个过程涉及系统登录,验证码识别,网页解析和定时任务。爬虫场景比较简单,这里重点介绍下整个过程所用到的工具,方便后来者可以根据自己需求进行扩展:

  • 邮件提醒:利用smtplib进行邮件发送,利用MIME定义图片、HTML等不同类型的邮件内容;
  • 短信提醒:利用Twilio的试用版本,进行实时短信通知;
  • 模拟登录:利用Selenium+WebDriver进行系统登录,对于无图形化界面操作系统环境,利用PhantomJS进行登录;
  • 网页解析:利用BeautifulSoup解析HTML,分析语法,找到感兴趣内容;
  • 验证码识别:利用PIL图片库,进行图片裁剪,利用百度OCR开发API进行识别;
  • 定时任务: BlockingScheduler自定义定时任务。

二、相关工具

2.1 Selenium2

Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架。 Selenium 能够在一个或多个浏览器中执行测试,WebDriver 由Google的Simon Stewart创建的一个类似的项目,Selenium 1 和 WebDriver 合并成一款性能更佳的产品 Selenium 2。Selenium 2 具有来自 WebDriver 的清晰面向对象 API,并能以最佳的方式与浏览器进行交互[……]

Read more

Openstack高级虚拟机创建

2017年9月19日 Openstack, 云计算 No comments

1 连接临时或交换磁盘到实例

创建虚拟机类型,指定512MB的交换分区和2G的临时卷。

查看类型

创建虚拟机

查看磁盘情况

发现多了512M的交换空间以及2G的临时磁盘大小。

2 多网卡设备和指定IP

(1)创建多网卡设备,指定两个网络ID即可创建

查看虚拟机状态,会发现比通常创建的虚拟机多出一个网段信息:

 进入到查看网络设备,发现具有两块网卡设备,
 测试联通性:

(2)指定IP

在网络参数中指定v4-fixed-ip的值即可

3 参考文档

https://docs.openstack.org/zh_CN/user-guide/cli-nova-launch-instance-from-volume.html

http://docs.ocselected.org/openstack-manuals/kilo/admin-guide-cloud/content/advanced_vm_creation.html