Every man dies but not every man really lives.

2017-05-28
系统化健身三个月感受

这是一篇鸡汤文,不喜欢看鸡汤的可以退出了。

2016年11月开始,我就一直在以996的方式工作,工作结束的时间经常会超过12点。2017年2月的某一天,我站在体重秤上,发现体重没变化,但拎起腹部和腰部的赘肉,能感受到皮下脂肪的分量。我的肌肉正在萎缩,并逐渐被脂肪替代,该健身了。

阅读此文

2017-05-24
WordPress to Hexo(1)

大约两年多前,我写过一篇 博客静态化工作 ,当时是准备使用 Pelican 来做静态化。但由于静态化有一些工作量,就写了 WPCMD 来作为过渡工具。

现在终于有时间来做静态化了,但我选择的工具变成了 Hexo

在上次的静态化准备工作中,我的所有博客文章已经完全使用 Markdown 来撰写了,所以这次的静态化工作就会简单一些。下面是主要的工作: 阅读此文

2017-04-21
Flask 在 Debug 模式下初始化2次

Flask 在 Debug 模式下启动的时候,会被初始化两次。看下面的代码:

1
2
3
4
5
6
from app import app
import time
if __name__ == '__main__':
print(time.time())
app.run(port=5000, debug=True)

输出: 阅读此文

2017-04-13
uWSGI+rsyslog 实现 rotating logging

uWSGI 可以使用 --logto / --logto2 / --daemonize 这几个参数来指定把 log 写入普通文件。但普通文件管理起来比较麻烦,我们可以利用 Ubuntu/CentOS 中自带的 Rsyslog 来实现日志管理。本文以 Ubuntu 16.04 为例。 阅读此文

2017-04-12
uWSGI + Nginx 的 HTTPS 支持

有时我们在一台机器上部署多个 uWSGI 服务,并提供 HTTPS 支持。使用 proxy_pass 代替 uwsgi_pass 是很简单的方案: 阅读此文

2017-03-23
uWSGI 的编码问题解决

在把 Flask 写的应用通过 Supervisor+uWSGI 部署到正式服务器上时,出现了这样的错误:

Unable to print the message and arguments - possible formatting error.

或者

UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 24-25: ordinal not in range(128)

有趣的是,直接在 Python 环境下运行的时候,没有这样的错误。使用 uwsgi uwsgi.ini 这种方式来运行也正常。

由于对 unicode 的支持不够完善,这种报错经常会出现在 Python2 中,但我的所有程序都在 Python3 中写成,不应该再出现这样的错误。况且,所有的 python 文件都在首行设定了编码:

1
# -*- coding: utf-8 -*-

我的环境如下: 阅读此文

2017-02-27
SQLAlchemy and MySQL TIMESTAMP

SQLAlchemy 是一个功能强大的 ORM 。本篇介绍使用 SQLAlchemy 处理 MySQL 上的 TIMESTAMP 类型的一点小技巧,很冷门的知识点哦。 阅读此文

2017-02-12
使用 audacity/lame/ffmpeg 进行 mp3 文件瘦身

注意:这是一篇非常基础的工具使用文章。

虽然已经迈入了 4G 时代,但由于各种各样的原因,国内的手机用户(主要是安卓用户)依然偏爱比较小的安装包。同样偏爱小安装包的还有国内各种安卓野鸡市场。因此,对于移动游戏开发者来说,掌握素材瘦身技能是必要的。本文主要介绍如何对 mp3 音频文件进行瘦身。 阅读此文

2017-02-06
EOF occurred in violation of protocol

我在使用 requests 的时候频繁遇到下面的错误:

EOF occurred in violation of protocol (_ssl.c:600)

这个错误在 Python2 和 Python3,macOS 和 Ubuntu 下都有出现。从报错信息中可以看出该错误与 HTTPS 握手相关。

这个错误在 这个 issue 中讨论得最为充分。

通过分析,我找到了这个问题产生的原因:在安装 requests 库的时候,没有正确安装 security 包。

下面是解决方案(针对 Ubuntu): 阅读此文

2017-01-15
修改 Flask 的默认响应头实现跨域(CORS)支持

要提供一个 RESTful API ,就必须考虑 跨域请求(CORS) 问题。在 Flask 中,我们可以进行这样的简单处理: 阅读此文