今天在整社团的一些杂碎事务,其中需要打印若干个PDF文档,到打印店一个个文件来打印显然比较麻烦,所以我在思考,有没有把多个PDF合并为一个的操作呢?

想到 Unix 命令强大的数据处理能力,猜测大概也有类似的合并PDF文件的操作?随手 Google 了关键字 Linux PDF merge,发现 StackOverflow 的一篇帖子

41849-evm6cvoqsao.png

试着运行了一下 pdfunite,还真有!所以说生活在 Linux 的世界中常常可以遇到很多惊喜的嘛:D

发现我最近也记录了不少这样的 Linux 世界中的小惊喜,所以还是很推荐看到这篇碎碎念的你,学习一下 Unix 命令的,真的十分灵活和实用。

折腾服务器的时候常常会遇到一些将本地写的代码传上服务器的需求,利用 SFTP 工具(Filezilla、WinSCP 之类)较为麻烦,所以我通常的做法是先使用 Vim 编辑器打开目标的文件,再将本地的代码粘贴到终端,然后保存、运行。

但这种做法在某些特殊环境下会遇到问题。最近我常常通过 Docker 在服务器部署代码,容器技术是个好东西,可以让你随时可以切换代码的执行环境而不需要在重新配置机器以致于搞得乱七八糟。有时候希望基于服务器端的 Docker 容器的环境执行一些临时写的脚本代码,但许多 Docker 镜像的制作者为了减小镜像的体积,实际上并没有给它安装文本编辑器这种东西。什么 Vi、Vim、Nano 统统不存在的。

在没有文本编辑器的情况下,想把代码传进 Docker 容器,很容易想到的一个方案是,在宿主机打开 Vim,通过往常的方式粘贴代码保存,再用 Docker 本身提供的 docker cp 命令拷贝进去。这个方案固然可以实现,但还是依赖着我先前的习惯去操作。这也引起了我的一个思考,我能不能不依赖文本编辑器,直接快速完成这个操作呢?

阅读全文 »

自从高中有了这个博客开始,过去那个害怕语文、害怕表达、害怕写东西的我,也渐渐有了在网上写东西的习惯。到现在,常常一写就是一大段文字。过去的很多痕迹,都留在了这个博客里面。但到了大学以后,正如3月份时写的那篇博文所述,我大学以来的尝试与折腾,除了技术上的东西,这里并没有留下什么。

最近也在试着回忆过去曾经历过什么,惊恐地发现,我竟然想不起来一丁点儿东西,加之由于平时没怎么关注课堂内容导致在考试周各种考前预习所带来的巨大压力,整个人也陷入一阵莫名的焦虑之中无法自拔,直到这两天才慢慢缓和过来。

翻看过去发的朋友圈,才发现,虽然我不怎么刷朋友圈,但也在那儿留下了不少记录。上面记录了我的一些零碎想法,也分享了许许多多当时觉得不错的东西。有时候我也在里面写了许多长长的文字,但其实并没有怎么认真翻回去看过。思考背后可能的原因,大概和周围大大小小的各种事情一股脑儿都用微信有关,也就是那些脑残的所谓“微信办公”。越来越大的空间占用却不敢删除的卡顿、本应代表着私人的领地却频频被各种无关私人的东西侵入的无奈现状,也让我对这个 APP 产生了诸多抗拒。

阅读全文 »

期末复习之余,偶尔也在朋友们的博客上闲逛,看到大家生动形象的 ID 名,想到了自己曾经用过的一些奇奇怪怪的ID,打算写一写关于我取用户名的那些心路历程。

过去的我读的书少,想象力匮乏,怎么取一个喜欢的 ID 也是我纠结许久的问题。

ZGQ 是我的名字的缩写,所以最初我常用zgq作为我在网上活动的ID,博客的名字也是这么来的。

当然,如此短的用户名自然常常会遇到冲突。记得除 QQ 以外,我第一个注册的网站是百度,注册的时候,百度提示名字已被占用,当时下方有个备选的zgq354,从此它也成为了我的一个常用的ID。

阅读全文 »

引言

最近在尝试基于 PHP 做一个反向代理 HTTP 的程序,其中一个需求是将程序收到的HTTP请求还原回 RFC2616 的原始格式。

在处理的过程中遇到的问题主要在请求体的处理上。利用PHP的封装协议机制,我们可以通过读取 php://input 访问原始的POST信息。但这种方式有一个局限,对于 multipart/form-data 的请求来说,为了支持文件上传的操作,PHP会预先把请求体中的文件暂存到临时文件夹,并把参数解析到变量 $_POST$_FILES 中, php://input 获取原始请求的功能也随之失效。

Stack Overflow 上的相关问题给出的 解决办法 是修改服务器配置,把发到 PHP 脚本的 Content-Type: multipart/form-data; boundary=xxxx 修改为其它格式,使其不经过PHP的 form-data 解析;或是把 php.ini 配置关于POST数据解析的 enable_post_data_reading = Off 选项关闭。然而这两种方法并不非常具有普遍性,在某些PHP配置文件不可控的共享主机的环境下并不适用。

于是引出了本文讨论的话题 — 如何重新组装 multipart/form-data 格式的原始 POST 请求体。

阅读全文 »