那个熟悉的罗马不见了


一转眼,这个赛季的意甲又要结束了。罗马在经历了一个赛季的动荡之后,最终排名第六,无缘下赛季的欧冠联赛。然而,相比于无缘欧冠,大师兄的离队对于我来说,是一段青春的结束,只能剩下追忆了。

第一次与罗马结缘还是在01年的夏天,当时站在一堆球衣前犹豫好久不知道买哪个。最后还是小伙伴推荐说买罗马的吧,刚拿了冠军,特别厉害。从那个夏天开始,我最喜欢的球队这个问题有了一个新的答案,就是罗马队。虽然它不是第一个答案,却是到目前为止的唯一一个。如果不出意外,也应该是最后一个了。这么多年来,经历了老森西对罗马的爱,也经历了因为拮据不得不卖掉葵花的伤感;见证了村长的一人一城,也等到了大师兄的最后一场比赛。曾经...

Read more

使用Python的unittest框架编写测试用例


unittest是Python语言中的xUnit测试框架实现。也是在开发中最常用的用来写单元测试的框架。本文将介绍一下什么是unittest以及如何使用unittest开发单元测试。

找到需要测试的目标

要写测试用例,首先需要知道我们要测试的目标是什么,在本文中,我们以一个简单的乘法函数作为待测试对象,这个函数的实现如下:

def multiply(x, y):
    """
    将2个给定的参数相乘,并返回结果

    Args:
        :param x: 乘法算子x
        :param y: 乘法算子y
    Returns:
        x * y...

Read more

搭建主从复制的PostgreSQL集群


背景

由于项目需要使用PostgreSQL作为持久化数据库,但是在公司内部并没有一个稳定公共的PostgreSQL数据库集群服务来用,因此需要自己搭建一套高可用的PostgreSQL服务。 在这里将搭建的过程记录下来,方便后续查阅。

安装

资源

操作系统

本文中安装Postgres数据库的操作系统为CentOS7.2

机器和IP地址

本文是在2台CentOS7.2的机器上部署主从复制的PostgreSQL,这2台机器的IP为:

主节点: 192.168.0.2
复制节点: 192.168.0.3

数据库用户名和密码

user: xxx
password: xxx

数据目录

/data/p...

Read more

搭建基于spiped代理的加密Redis Master/Slave服务


背景

由于业务的需求,线上的Redis服务需要部署到公网上。考虑到数据的敏感性,因此不希望数据在公网上是明文传输的。

所以需要引入SSL/TLS来加密传输的数据,从而保证数据在一定程度上的安全性。

鉴于目前的Redis并没有官方支持的ssl/tls通信功能。所以只能通过SSL代理来实现。在这里选择了Spiped作为SSL的代理工具。

Spiped的项目地址是:https://github.com/Tarsnap/spiped

官方地址是:http://www.tarsnap.com/spiped.html

部署

Redis2台机器,IP、端口分别为:

1. 192.168.1.100:3...

Read more

MySQL忘记ROOT密码怎么办


背景

最近有一个网站使用了MySQL作为数据库,但是由于是很久之前部署的数据库,结果忘记了admin的密码。 经过一番折腾,发现可以通过修改mysql的配置来绕过权限验证,之后再修改mysql root用户的密码,所以记录一下,方便后续查阅。 具体流程如下:

流程

1. 修改my.conf

在[mysqld]的section中加上一行配置: skip-grant-tables 例如:

[mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    skip-name-resolve
    skip...

Read more

K8S-CheatSheet


kubernetes 常用操作

查看帮助和集群基本信息

kubectl --help                                 ## 查看帮助
kubectl --version                            ## 查看k8s版本信息
kubectl cluster-info                       ## 查看k8s集群信息,master和服务地址
kubectl cluster-info dump            ## 将集群状态信息输出到stdout
kubectl cluster-info dump --out...

Read more

HTTP学习笔记08 - 如何申请HTTPS证书


根据签发证书的CA的不同,证书可以分为2种:

  1. 由自己创建的CA签发的证书,通常叫做自签名证书;
  2. 由PKI的CA签发的证书,具有普遍可信的证书。

自签名证书

之前12306的证书就是一个自签名证书,所以浏览器第一次打开12306的官网时,会被提示不安全。但是现在已经改为由PKI签发的证书,可以正确通过浏览器的证书检查了。 但是,这并不意味着自签名证书就没有用。比如在内网中,为了测试或者部署内部服务,为了成本考虑,可以签发一些自签名证书,由于时内网环境,我们已经100%确认对方的身份,所以就不需要PKI来帮助我们校验证书是否正确。

使用openssl创建自签名证书:

制作CA证书:

1....

Read more

HTTP学习笔记07 - HTTPS证书介绍


什么是TLS/SSL证书

SSL证书跟驾照有点类似。在驾照里,关键信息有几点:

  1. 我是谁
  2. 驾照是谁颁发的
  3. 驾照是否过期

在SSL证书里也是类似的:

  1. 我是谁(域名、实体是谁)
  2. 证书是由谁签发的
  3. 证书是否过期

所以,一个SSL证书可以这么定义:由无条件信任的机构颁发给实际使用者来提供身份认证的一段数据编码。

证书的编码

X.690定义了ASN.1用到的几种编码格式:

  1. Basic Encoding Rules(BER)
  2. Canonical Encoding Rules(CER)
  3. Distinguished Encoding Rules(DER)

其中: BER是最基本的编码格式。CE...

Read more

HTTP学习笔记06 - 安全的HTTP的好帮手


SSL协议背景

在互联网设计之初,设计者并没有太过于考虑安全方面的问题,因此,在网络上传输的数据都是明文的,也就意味着,任何一个恶意的攻击者都可以得到我们提交的任何数据,这会带来3类风险:

  1. 数据窃听(eavesdropping): 第三方可以获知信息内容
  2. 数据篡改(tampering): 第三方可以修改通信内容
  3. 身份冒充(pretending): 第三方可以冒充他人身份参与通信

SSL&TLS协议的出现正是为了解决这3类问题,希望可以达到:

  1. 所有信息都是加密传输,第三方无法窃听
  2. 具有校验机制,一旦被篡改,通信双方会立刻发现
  3. 具备身份证书,防止身份被冒充 从而实现在“不安全”...

Read more

HTTP学习笔记05 - 安全的HTTP


为什么HTTP不安全

HTTP作为互联网上应用最为广泛的一种网络协议,目前最常见的版本有HTTP1.0, HTTP1.1和HTTP2。其中HTTP1.0和1.1版本传输为Text,也就是明文传输。而HTTP2传输的是二进制数据。但是如果不对数据进行加密处理的话,不管是二进制还是明文,都会存在很多安全风险,比如:数据篡改,身份伪造,中间人窃听等。

HTTPS (Secure Hypertext Transfer Protocol)

即安全超文本传输协议,它是在基于TLS/SSL的HTTP协议,可以理解为HTTP的安全版。HTTPS的主要作用是:

  1. 对数据进行加密,并建立一个安全信道来保证传...

Read more