函数装饰器和闭包


装饰器基础知识

装饰器是可调用对象,其参数是另一个函数(被装饰的函数)。装饰器可能会处理被装饰的函数,然后把它返回,或者将其替换成另一个函数或可调用对象。 假如有一个名为decorate的装饰器:

@decorate
def target():
    print('running target()')

上述代码的效果与下述写法一样:

def target():
    print('running target()')
target = decorate(target)

两种写法的最终结果一样:上述两个代码片段执行完毕后得到的target不一定是原来...

Read more

为你的Django项目保驾护航


保证你的站点安全至关重要,如果你的站点被入侵,后果可能不仅仅是你的服务器被黑,更严重的可能是你的用户隐私数据被盗,造成严重的后果。 Django框架现在已经非常成熟,大多数常见的安全问题框架本身都有提供解决方案,下面大致介绍下一些常见的防御措施。

Https

现在的网站https基本都是标配了吧,如果你的网站还没有支持https,那么就要考虑是不是需要尽快为你的网站加上https,这里推荐使用免费的Let's Encrypt。本站使用的就是他们颁发的证书。可以参考该文章:
申请Let's Encrypt通配符证书有大致的介绍。 如果你的站点已经支持了https访问的话,建议在setti...

Read more

使用Docker部署Ngrok实现内网穿透


以前写过一篇文章, ubuntu安装ngrok并使用nginx代理,介绍了在ubuntu上安装ngrok,但是是需要在系统中安装gvm等依赖,而且过程还是挺麻烦的,正好今天有时间,于是试着使用Docker来部署下,下面介绍下如何部署。

准备工作

域名解析

首先,需要在你的域名提供商处增加两条A记录解析到你的服务器,比如我的是 ngrok.lylinux.net*.ngrok.lylinux.net。这样你可以使用subdomain的方式,来实现穿透。

配置

目录结构如下图所示, 目录结构

可以看到,有必须的Dockerfile文件,build.sh是编译ngrok的脚本,config.yml是...

Read more

openssl使用rsa加解密


生成公钥私钥

使用命令生成私钥:

openssl genrsa -out rsa_private_key.pem 1024

参数:genrsa 生成密钥 -out 输出到文件 rsa_private_key.pem 文件名 1024 长度

从私钥中提取公钥:

openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

参数: rsa 提取公钥 -in 从文件中读入 rsa_private_key.pem 文件名 -pubout 输出 -out 到文件 rsa_public_key.pem ...

Read more

php无法连接mysql解决办法


前段时间把我的阿里云机器上面跑的服务修改成了docker部署,但是在升级了mysql容器之后发现另一个wordpress的站一直无法打开,提示无法连接数据库,这个很奇怪,只是升级了下mysql容器,用户名密码等都没有修改,为什么会无法连接呢? 打开了下wordpressdebug模式,发现如下错误信息:

Warning: mysqli_real_connect(): Unexpected server respose while doing caching_sha2 auth: 109 in /wordpress/wp-includes/wp-db.php on line 1531
W...

Read more

python学习笔记系列


摘录《流畅的python》书中前言部分作为本篇文章开头:

受其他语言的影响,你大概能猜出python会支持正则表达式,然后就回去查阅文档。但如果你从来没有见过元组拆包,也没有听过描述符这个概念,那么估计你也不会特地去搜索它们,然后就永远失去了使用这些python独有的特性的机会。

使用python也有好一段时间了,正如上面那段话所说,对于python只是了解其中的基本用法,对于一些高级的语法很不熟悉,正好最近事情都趋于稳定,也可以静下心来从头到尾真正的学习下python这门语言了。从开始看《流畅的python》这本书之后,深感自己以前对python认知的浅薄,写出来的代码很不Pytho...

Read more