Python 源码保护的自动化构建方案

标签:Docker, Python

Python 源码保护的方案主要有代码混淆、修改解释器和编译成二进制这三种,其他方式基本没有保护效果。而这三种方案中,最安全的就是用 Cython 来编译 py 文件(但是需要注意兼容性)。

GitLab CI 使用 Docker in Docker 无法访问 services 的坑

标签:Docker

昨天在给一个新项目写 .gitlab-ci.yml 配置时,发现一个域名无法解析的问题,部分配置如下:

variables:
  MYSQL_DATABASE: test
  MYSQL_ROOT_PASSWORD: test

test:
  stage: test
  services:
    - mysql:5.7
    - redis:4
  script:
    - apk update && apk add mysql-client
    - mysql -h mysql -u root -ptest < init.sql
    - docker build -t test .
    - docker run -t test pytest tests

我的投资观

标签:无

在我看来,这个世界上最有用的知识其实都是很简单的,投资也是如此。不过简单的东西反而少有人懂,更甭提认可并去实践了,这大概就是余额宝的收益率就能长期持续稳定战胜 90% 以上的支付宝财友的原因吧。

造了个 Go 语言的日志轮子:golog

标签:Go

工作中用了半年多的 Go 语言,慢慢对这门语言熟悉起来了。虽然仍经常免不了要吐槽它的各种问题,但最令我意外的是一个发布 9 年多的语言,居然没有一款符合我心意的日志库。

我总结了一下我的需求:
  • 输出无结构的日志,方便人工读取。
  • 可同时输出到屏幕和文件。
  • 可输出日志的等级。
  • 可输出日志所在的源文件和行号。
  • 可订制日志样式。
  • 支持日志轮转。
  • 跨平台。
  • 高性能。
第一点基本能刷掉 Github 上前 3 页的日志库了,似乎都是格式化成 JSON 的。第四点也能干翻不少库,很少有支持的。所以一气之下只好自己造轮子了。

key / value 数据库的选型

标签:无

一直以来在我的观念中,key/value 数据库就三种选项:
  • 内存可存放:Redis
  • 单机磁盘可存放:RocksDB
  • 超过 TB 级:Cassandra、HBase……
然而在实际项目中使用 RocksDB 时,才发现了一堆问题,折腾许久才搞定。

Python 的多进程编程

标签:Python

在并发编程的时候,多线程和多进程是经常会被使用的两种模式(此外还有协程等)。由于 CPython 的 GIL 限制(Jython 和 IronPython 没有 GIL,PyPy 在尝试去掉 GIL),只有获取了 GIL 的线程才能使用 CPU,所以除了需要处理一些可能会阻塞的 IO(读写文件、访问网络等)之外,基本没人会去使用 CPython 的多线程。因此,本文就来说说更有用的 Python 多进程编程。

用 Python 3 的 async / await 做异步编程

标签:Python

前年我曾写过一篇《初探 Python 3 的异步 IO 编程》,当时只是初步接触了一下 yield from 语法和 asyncio 标准库。前些日子我在 V2EX 看到一篇《为什么只有基于生成器的协程可以真正的暂停执行并强制性返回给事件循环?》,激起了我再探 Python 3 异步编程的兴趣。然而看了很多文章和,才发现极少提到 asyncawait 实际意义的,绝大部分仅止步于对 asyncio 库的使用,真正有所帮助的只有《How the heck does async/await work in Python 3.5?》《A tale of event loops》这两篇。

用 kcptun 加速 Shadowsocks

标签:无

自从离职后,没有了流畅的 VPN,我上网就各种别扭。
虽然 DigitalOcean 的 VPS 也凑合能用,但是新加坡线路抽风严重,经常连 Gmail 都打不开,所以决定更换一个 CN2 线路的 VPS。
找了几家 VPS 后,虽然更中意 KVM 的,但是喜欢的几款都没货了,于是买了个 Bandwagon Host(搬瓦工) 的特价版 OpenVZ VPS,用优惠码后年付 19 美元(顺带一提,电脑上选择用支付宝没反应,手机上可正常打开),512 MB 内存,1000 GB 月流量,洛杉矶 CN2 线路,广东电信 160 ~ 170 ms 的 ping 值,基本不丢包,看上去应该够用了。然而看 Youtube 仍然很卡,只有 500Kbps 左右的速度,勉强能看 480P 吧。
于是又查了下有没有办法优化,然后发现了 kcptun 这个神奇的玩意。

Python 项目的配置管理

标签:Python

每次开始一个新的 Python 项目,我都会为怎么管理配置文件而头疼。不过在迁移我的博客时,终于有空花了点时间,把这件事想清楚。
一年多的时间过去了,一切似乎都很顺利,连我在知乎所做的新项目也沿用了该方案,于是决定把解决方案记录下来。

« 看看还有什么好玩意