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

Panda Home

用 Python 代码生成视频的缩略图

发布于 # 聊聊技术
标签: # Python # Reddit # FFmpeg
用 Python 代码生成视频的缩略图
Photo by Kit Junglist on Unsplash

最近写了个 Reddit 发帖辅助工具,因为涉及视频的上传及标注出处来源,所以一个简单的脚本可以大大减轻我的工作量,出于糙快猛的考虑,自然而然就是 Python 了。 Reddit 上目前充斥着各种机器人账号,官方也非常支持这种行为,只要不是无意义的发言,机器人多了还能增加活跃度,吸引真人用户一起来各抒己见,比如说在“旧金山湾区”板块上每周都有一个题为“烦人的星期二”的帖子,就是大伙儿吐槽生活中种种烦心事的好地方。因此 Reddit 提供了一整套开发者 API ,同时 SDK 也不难找,这里有一个详尽的列表,大家可以根据自己的语言喜好随意取用。 脚本很简单,真正的困难在于视频上传, Reddit 的要求很特殊,有了帖子标题和视频路径还不够,还需要提供一张缩略图, SDK 的文档也说了,如果不提供,就会自动上传一张他们的 Logo 作为视频的缩略图。这个时候,就需要祭出 FFmpeg 了。

Java 在 MacOS 环境下的安装与卸载

发布于 # 聊聊技术
标签: # Java # MacOS
Java 在 MacOS 环境下的安装与卸载
Photo by wu yi on Unsplash

如题所言,这个操作看起来很无聊,但实施起来还是挺繁琐的,避免每次去谷歌上搜,摘抄过来留作自己的笔记。 卸载 这个步骤很重要,比如说误装了 Oracle 提供的 jdk ,要是没细看使用条款,分分钟律师函就过来了。我在 StackOverflow 上发现了一个答案,抄录过来。 运行如下命令删除 jdk sudo rm -rf /Library/Java/JavaVirtualMachines/jdk<version>.jdk 如果想删除插件的话,运行下面的一堆命令 sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane sudo rm -rf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin sudo rm -rf /Library/LaunchAgent

如何给 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