使用Travis CI自动部署Hexo

前两天了解到了一个有趣的概念叫持续集成: > 持续集成是一种软件开发实践。在持续集成中,团队成员频繁集成他们的工作成果,一般每人每天至少集成一次,也可以多次。每次集成会经过自动构建(包括自动测试)的检验,以尽快发现集成错误。许多团队发现这种方法可以显著减少集成引起的问题,并可以加快团队合作软件开发的速度。这篇文章简要介绍了持续集成的技巧和它最新的应用。 然后想到我的博客也恰好满足这样的需求,因为我的博客一旦有了修改,就必须要重新build并且部署,那么能不能用持续集成的思想来改造我部署博客的流程呢?

在这样的指导思想下,我完成了上一篇文章:VPS搭配Github Webhook实现Hexo自动发布,而今天我要介绍一下,在没有VPS的情况下,如何更方便的配置自己的持续集成的博客。

好处

  • 方便:只需要一次配置,便省去了每一次编辑文档后,都需要进行hexo d -g的麻烦,更不必说文章增多之后渲染时间还会增长。
  • 稳定:这个是最近才发现的,Github被搞了之后,很多人反映不能更新博客了,使用Travis CI,你只要想办法提交一个小md文档,就能进行构建。如果自己手动构建,只要一个文件上传失败,前面的工作都白费了。
  • 快捷:即使是出差在外,只要能编辑Markdown,就可以撰写博客,使得Hexo拥有类似于WP一致的体验~
  • 协作:博客的构建完全交由Travis CI进行,所以完全可以通过Hexo+git构建一个多人协作的博客平台。实际上,Hexo的官网正是这样构建的。

Read More

VPS搭配Github Webhook实现Hexo自动发布

自从买了VPS之后,我的人生就多了一个需要思考的问题——我的VPS还能用来干嘛?然后想到Github有一个Webhook的功能,可以在每一次提交之后发送一个POST到指定的URL。那么,只要找一个办法获取这个POST,再执行指定的命令,可以实现Hexo的自动发布功能了。从此以后,不管在哪里,我只要修改我的md文件,push之后我的服务器就能自动进行编译并且部署了。

Read More

超星学术视频下载处理一条龙

我妹纸最近开始通过看超星学术视频来复习预习课程了,所以我必须搞到对应课程的所有视频(不管是收费还是免费),而且我妹纸还是一个有强迫症的萌妹纸,所有的视频都必须按照顺序拍的好好的,要不然她就会不舒服。 根据以上描述,我需要解决以下需求:

  1. 破解超星学术视频的加密链接,找到真实的下载链接。
  2. 重命名下载下来的视频文件。

还是跟以往一样,直接把最终的解决方案放出来,要是对具体的实现感兴趣的可以接着往下面看。

Read More

CF拉练第七场

比赛地址 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=63852#overview 比赛总结 这场比赛做的很渣,第一题卡了很久,还WA了两发。第二题一个裸的最短路模板题还折腾了半天。第三题是一个比较简单的数论题,用到了GCD。然后D和E都没有敲出来,其实D是一个要用到一点技巧的裸Nim。而E题。。。正面解法思绪繁杂,没有捋出来,而从结果入手开开脑洞倒是可以有点思路= =。 分题讲解 A题(暴力) 从前后分别入手求出和,然后对应进行判断即可。 http://xuanwo.org/2014/11/26/CF-18C/ B题(最短路) 模板题,注意路径的输出。 http://xuanwo.org/2014/11/26/CF-20C/ C题(数论) 用到了GCD,只要找出原来的最简比例就可以了。 http://xuanwo.org/2014/11/26/CF-16C/ D题(Nim博弈) 用到了很多异或的性质,位运算果然是一门大学问。 http://xuanwo.org/2014/11/26/CF-15C/ E题(DP,构造) 这个题= =,还没有办法证明。 http://xuanwo.org/2014/11/23/CF-15E/ 更新日志 2014年11月26日 完成题解。

Read More

Codeforces Beta Round 15 C Industrial Nim

题目

源地址:

http://codeforces.com/problemset/problem/15/C

理解

有n个矿场,第i个矿场有mi辆矿车,第一辆矿车有xi颗石头,第二辆xi+1颗,如此递推,直到第mi辆有mi+xi-1颗。然后有两个人轮流取石头(金矿?),他们可以选择任意一个矿场任意一辆矿车取走任意非0数量的石头,直到第一个不能再取的人认输。 实际上,这就是一个裸的Nim博弈问题,只要直接运用结论就能完成解答。但是问题在于,数据太多,导致每一个全都异或起来的话耗时太长。所以需要采用一些手段处理一下。我们需要用到两个结论:第一,从1异或到n的答案存在着这样一个特性:n%4==1时,答案为1;n%4==2时,答案为x+1;n%4==3时,答案为0;n%4==4时,答案为x。第二,从x异或到y的值等于nim(x-1)^nim(y)。 经过上述的处理,最后的结果就出来了~

Read More

Codeforces Beta Round 16 C Monitor (Div. 2 Only)

题目

源地址:

http://codeforces.com/problemset/problem/16/C

理解

一道关于分辨率转化的问题。要求将一个大分辨率按照指定的宽高比进行转化,如果宽高比不符,则进行切割。首先,我们来求一个x和y的最大公约数d,然后分别令x=x/d,y=y/d,这样就得到了x和y之间最简的比例形式。然后a和b分别去除以x和y,得到的两个背书中去掉小数部分较小的那个,就是切割之后的倍数比。最后得到的结果就是符合要求的结果。

Read More

Codeforces Alpha Round 20 C Dijkstra? (Codeforces format)

题目

源地址:

http://codeforces.com/problemset/problem/20/C

理解

实际上题目不难,但是我们都捣鼓了很久。原因是我们根本就没有掌握这种算法,导致连一个输出路径都搞得这么蛋疼。使用邻接表来存储每一个节点,每一个节点都自带一个指针指向下一个节点(可以自己使用数组模拟),最后的结果倒过来输出即可。

Read More