Happy Hacking!

Jun 1 2015
Speed Up the Rendering Process of hexo 3

    Speed Up the Rendering Process of hexo 3

    Hexo 3 自从放出更新到现在已经有很长一段时间了,相信很多人跟我一样都经历了一个非常曲折的升级过程。

    第一个问题是我所编写的主题和插件全都阵亡了,这个问题在我决定升级 Hexo 之前已经被很多用户轰炸过,于是我花了两个晚上的时间对所有的主题和插件进行了大幅修改和升级。

    另一个让我无比郁闷的问题是:官方虽然宣称 3.0 之后站点渲染速度更快了,但实际测试时我发现结果正好相反——全站 168 篇文章,在 Hexo 2.8.3 环境中渲染只需 3~4 秒时间,而更新到 Hexo 3.0 之后,网站的渲染居然花了一个多钟!

    为了找出导致这个问题的 bottleneck ,我通过二分的手段很快定位出了问题文章 《ArchLinux安装配置OpenGL》,这篇文章乍一看没啥特别之处,但问题就出在文中这段长长的目录结构图:

Read More

Feb 16 2015
Extempore: A Real-time Programming Language for Real-time Systems

    Extempore: A Real-time Programming Language for Real-time Systems

    Extempore 是一套实时编程语言和运行环境,它提供了一个机体编程 (Cyberphysical Programming)[1] 环境,以支持对多媒体和实时系统的实时编程(Live Coding)。所谓机体编程,就是允许编程者可以在任意时刻自由地修改程序并即时影响系统的运作,达到“即写即执行”。官方的介绍如下:

    Extempore is a programming language and runtime environment designed to support ‘cyberphysical programming’. Cyberphysical programming supports the notion of a human programmer operating as an active agent in a real-time distributed network of environmentally aware systems. The programmer interacts with the distributed real-time system procedurally by modifying code on-the-fly.

    Extempore 的前身是 Impromptu ,由 MOSO 公司的创始人 Andrew Sorensen 所设计和开发,并托管在 Github 上。

Read More

Jan 22 2015
SCNUThesis招募新的维护者

    SCNUThesis招募新的维护者

    缘起

    工作大半年,开始感觉不如以前可以花很多时间在业余小项目上了。

    读书的时候,虽然白天有很多课业上的压力,但到了晚上总有精力来做一些小东西。那个时候,熬夜的后果最多就是第二天到课室打下瞌睡。工作之后就完全不同了,白天的时候,需要一直聚精会神的工作,以保证每天的产出,到了晚上就感觉好累好累,不想再碰电脑。

    这半年的时间,如果说我有进步的地方,就是学会了如何保养自己的身体。每天回家,我几乎都是先看半小时书,然后做一会儿简单的运动,再洗个澡,泡个脚,喝杯牛奶去睡觉。周末的时间,由于不放心外面的食物,我学会了下厨,于是周末两天我的大部分时间都是在一堆锅碗瓢盆中度过的。

Read More

Jan 20 2015
Master Dissertation: Foreground-Constrained Eulerian Video Magnification

    Master Dissertation: Foreground-Constrained Eulerian Video Magnification

    前言

    10个月前,我写了一篇解读欧拉影像放大技术的文章 Eulerian Video Magnification,这篇文章自发布以来,点击率超过了1300次,评论数达到了29篇。如果你在 baidu 上搜索“Eulerian Video Magnification”,我的文章排在第二名(第一名是原论文的链接)。而如果你在 google 或 baidu 上搜索 “欧拉影像放大” ,那么第一名的位置就是我的文章。

    一个促使我写出这篇博文的原因是因为我的毕业课题就和 EVM 算法有关。当时想着既然一直在钻研这个算法,不如干脆写成博文,一来帮助自己思考,二来也能够通过与其他人交流,加深自己对这个算法的理解。我的论文的想法也很简单,EVM 对于存在大幅度移动物体的细微变化的放大效果并不理想,于是我想到通过与拉格朗日视角的框架相结合,先对感兴趣区域进行跟踪(拉格朗日视角),然后对跟踪结果进行局部的欧拉视角的动作放大,最后再进行多分辨率混合。整个算法框架我称之为“前景约束的欧拉影像放大算法”(Foreground-Constrained Eulerian Video Magnification, FCEVM)。

Read More

Jan 15 2015
Write a Tiny Shell-based Test Framework

    Write a Tiny Shell-based Test Framework

    参与过服务端的后台开发和测试的同学对服务器压力测试应该都不陌生了。为了对线上服务进行模拟测试,往往需要编写自动化的测试工具。一个常见的原型通常是这样的:

    1. 从指定地址下载待测的服务器程序,完成本地化配置和部署;
    2. 使用事先构造好的压力词表生成一系列的请求,并以指定的速率(QPS)向服务器发送这些请求;
    3. 解析服务器的日志,统计压力测试结果。

    当然,实际上的测试环境可能更加复杂。比如,有些服务还要防止同一个 ip 地址在短时间内发出大量请求,相应的就要通过伪造 ip 等手段覆盖这种 case 。但“万变不离其宗”,基本的流程不会有太大的改动。

    无需借助其他语言,以上的工作其实只需用 Linux 自带的 Shell 就可以实现了。这给大多数 Linux 服务器开发测试人员所带来的好处就是完全轻量级,省去了配置开发环境的环节。本文就围绕如何基于 Shell 编写一个简单的测试框架,完成上面的所有工作。

Read More

© 2017 Joseph Pan with help from Hexo and .