编程开发与计算机科学

让 FastRoute 支持 URL 反向解析

FastRoute 是一款高性能路由组件,需要运行于 PHP 7.1 及以上版本。很多 PHP Web 框架都用它作为默认路由。然而这款路由组件不支持 URL 反向解析。Hyperf 框架也采用了这款路由组件,以下代码可以让 Hyperf 支持 URL 反向解析

Swoole 框架最佳实践

Swoole 是一种常驻内存进程 Reactor 模式的框架。

支持 Swoole 的 Web 框架:

  1. Laravel-Swoole
  2. Laravel-S
  3. Swoft
  4. Hyperf
  5. One
  6. EasySwoole

1 和 2 可以让 Swoole 支持 Laravel 框架;个人更倾向于 Hyperf;Swoft 很好,但也很重,如果要使用Swoft,不如考虑换个技术栈,比如 Java 或 Python。

……

CQRS/Event Sourcing 模式实践

如果还不清楚什么是 CQRS 和 Event Sourcing 模式,可以先阅读下面的两篇文章:

Event Sourcing 模式,即事件溯源模式。该模式使用只可追加的存储来记录对数据所进行的所有操作,而不是存储领域数据的当前状态。其中,存储 Event 记录的介质称作 Event Store

CQRS(Command Query Responsibility Segregation),即命令和查询责任分离。该模式使用单独的接口来隔离更新数据(命令)的操和读取数据(查询)的操作。这意味着用于查询和更新的数据模型是不同的。

……

Python Web 框架选型

Python Web 框架有如下几种部署方式:

  • WSGI
  • ASGI
  • 独立部署
  • CGI/FastCGI

WSGI是最常见的接口,由PEP333和PEP3333规范定义,获得了最广泛的支持。

WSGI接口的上游是HTTP Server,下游是WSGI应用,而提供WSGI服务的程序被称为WSGI容器。生产环境中常见的WSGI容器有Gunicorn、uWSGI、Apache mod_wsgi等。另外,很多框架本身也提供了WSGI容器,比如:Gevent、Tornado、Twisted。其中,Gunicorn可以通过自定义worker_class搭载其他异步框架来提高性能,比如:Gevent、Tornado、Meinheld等,且容器中运行的也不一定是标准的WSGI应用,比如Gunicorn+Sanic。

……

ES6 中 Proxy 和 EventTarget 的 Mixin 模式

Javascript 不支持多重继承,也不支持原生类的 mixin。想实现一个具备 Proxy 和 EventTarget 多重功能的混合类

Gandi.net Simple Hosting 踩坑记录

Gandi.net 的廉价虚拟主机服务 Simple Hosting 支持PHP / Python / MySQL / Postgresql。 Gandi.net 建站全家桶性价比超级高。买域名送免费邮箱和SSL证书。Simple Hosting 服务的最低配,算上折扣,一年只要300多元。不过由于配置的问题,在实际运行中有很多坑要避开。

……

    编译安装 Python 时发生“Missing the OpenSSL lib”错误

    使用pyenv在ubuntu18上安装多个python版本。按照文档,先安装编译依赖库:

    shellsudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
    libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
    xz-utils tk-dev libffi-dev liblzma-dev python-openssl

    使用 pyenv install -v x.x.x 命令来安装指定版本的python。在安装3.4及以下版本时会报错:

    ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

    原因是ubuntu默认安装的libssl-dev版本是1.1,旧版本的python只支持1.0版本。

    ……

    编写兼容 python 2.7 和 3.5+ 的代码

    编写新的代码最好不要再兼容 Python 2.6 及以下版本了,坑太多。兼容 2.7 就足够了。同样地,Python 3.5 及以下版本的坑也很多,Python 3 最好从 3.5 开始兼容。

    ……

    Windows 下安装 Scrapy

    Scrapy 依赖的某些组件需要编译,所以需要安装 Visual C++ Build Tools(http://landinghub.visualstudio.com/visual-cpp-build-tools)。

    另外可以在这里(https://www.lfd.uci.edu/~gohlke/pythonlibs/)找到第三方编译好的扩展包。

    之前在别的电脑上安装都是成功的。然而今天在某电脑上按装到 Twisted 组件时就出错了。看错误提示是 Unicode 字符转换失败报错,而且好像和命令行的字符编码有关。尝试了 cmd 和 cmder 都不行。用 chcp 命令切换 charset 也不行。最后用 cygwin64 的命令行给安装成功了。

    npm 安装 electron 出错的解决方法

    问题

    使用命令 npm install -g electron 安装 electronjs 时报错:

    出错信息

    ……