苟利国家生死以,岂因祸福避趋之

Panda Home

如何给 WordPress 站启用 HTTP/2

发布于 # 聊聊技术
标签: # 运维 # Apache # http2 # WordPress
如何给 WordPress 站启用 HTTP/2
Photo by Jonathan on Unsplash

早在 2015 年, HTTP/2 标准正式制定完成,同年也出现了很多浏览器支持这种新一代的 HTTP 标准。关于 HTTP/2 的详细介绍可以在维基百科中找到,这篇知乎专栏也是一篇不错的讲解。对于用户来说,一个最直接的印象就是启用了 HTTP/2 的网站打开速度快了许多,这是因为 HTTP/2 协议支持在同一个 TCP 连接中同时发起多个请求,这样服务器同时返回多个资源,比如说 JavaScript 代码文件,图片、视频资源等。 这篇记录文字假设 WordPress 站已经启用了 HTTPS ,详细过程可以参考之前写的一篇短文。因为用的是 DigitalOcean 一键安装的 WordPress ,所以代理服务器用的是 Apache 。 Apache 从 2.4.17 版本开始支持 HTTP/2 , Ubuntu 16.04 默认安装的是 2.4.18 ,按说没问题,但一旦执行 sudo

深入浅出 Python 装饰器

发布于 # 聊聊技术
标签: # Decorator # Python # 装饰器 # 源码阅读
深入浅出 Python 装饰器
Photo by Megan Hodges on Unsplash

问题 上回书我们说到,当给一个生成器函数加上 @context.contextmanager 时,这个函数就可以用上下文管理器的语法( with )来调用,其中 yield 返回的变量即为我们在 with 区块中使用的值。我们已经知道,要用上下文管理器调用一个函数或者变量,该变量需要是一个实现了 __enter__ 和 __exit__ 方法的类的实例,那么不禁好奇,为什么加上 @context.contextmanager 之后,一个函数就能用作上下文管理器? 还是从 Python 源码入手,不难发现, @context.contextmanager 实际上是一个普通的 Python 高阶函数,它返回的是一个定义在它里面的函数 helper ,而 helper 返回的则是类 _GeneratorContextManager 的实例。通过阅读 _GeneratorContextManage

理解 Python 的上下文管理器

发布于 # 聊聊技术
标签: # Context Manager # Python # with # 上下文管理器
理解 Python 的上下文管理器
Photo by Beatriz Pérez Moya on Unsplash

任何 Python 教程,必然会讲解如何打开一个文件。而任何提到打开文件的地方,都必然会推荐用 with 来操作文件的读写。比如说这里有一篇非常优秀的教程,文中提到 在 Python 中,文件读写是通过 open() 函数打开的文件对象完成的。使用 with 语句操作文件 IO 是个好习惯。 并且给出了详细的代码示例。但为什么 with 关键字能在结束这个 block 的时候自动调用 close() 呢?让我们去一探究竟。 知 首先来看一下 with 是怎么来的。 with 在提案 PEP 343 中首次被提出,其中有段对于 with 操作的详细说明。用下面的一小段代码来说明就是,要求 EXPR 的类实现了 __enter__ 和 __exit__ 方法。 with EXPR as VAR: BLOCK 进入 with 代码块之后,第一件事就是把 __enter__ 的返回值

会说话的数据—— D3.js 折腾小记

我一个写后端代码运维服务器的,怎么就去搞前端数据可视化了呢? 接触 D3.js 纯属机缘巧合,但既然现在的工作跟数据打交道,数据的可视化总是不可避免的,学了总没什么坏处。由于是前端小白,所以不可避免的会掉入一些看起来很可乐的坑,因此随便写一篇小文章,记录一下自己折腾的过程。 起 D3 的名字由来从它的官网就能看出来, Data-Driven Documents ,三个 D ,不愿意发那么多音,所以这帮老外就简称 D3 。这套可视化工具还是挺流行的,比如说我最近在搞的 Airflow 就利用 D3 来进行一个 DAG 运行状态的可视化。具体举例来说, Airflow 利用 D3 进行一个 DAG 中每个任务运行时间的表示,代码可以参见这里。我也从官网上找到了一个示例图片,画出来还是很直观很漂亮的。 <figure> <figcaption> Task Durat

我的 2018

发布于 # 随便聊聊
标签: # 2018 # 年终总结 # 谈笑风生
我的 2018
Photo by Charles Deluvio 🇵🇭🇨🇦 on Unsplash

谈笑风生又一年 又到了一年一总结的时候了,过去干了这一年也没有什么别的,大概三件事 年初回国过年期间,拜读了名人传记,学习到了很多人生经验,也更加理解了何为“苟利国家生死以,岂因祸福避趋之” 年中回来开始筹备,于八月份顺利再就业,跳槽到了一家钱多离家近的公司。不敢说事少,因为入职以来三个月确实忙了不少,但相应的也算身经百战了 跳槽期间搬了个家,到了阳谷县火车站附近,离人气更近了一些,更有生活的感觉,便利程度自然不用多说,到哪里,做什么事情都很方便。没想到美帝大村也可以有这种便利程度不输国内的地段 当然三月份开发的浏览器插件也是很大的,得到了几百个用户的一致好评,但后续的开发支持也随着跳槽日程的推进而荒废了。刚刚去开发者后台上看了看,惊喜的发现今天还有几个新的安装,或者是得想办法稍微完善一下了。 其他的无非就是多了一年的人生经验,搬了一年砖,手头比去年这个时候稍微充裕了些