好久没写博客了,快要荒废了。也许是之前从Hexo静态博客迁移到typecho博客花了不少精力吧,说实话还是挺折腾的,静态博客其实也挺好的。秉承着对于之前静态博客的怀念,写一篇关于静态博客搭建的文章吧。

Hexo

以Hexo静态博客为例,首先需要安装Node.js,Mac/Linux的话推荐先安装nvm,一个Node.js的版本管理工具,详见:nvm-sh/nvm: Node Version Manager,然后安装Node.js。

阅读全文

有时需要在程序里将网页转为图片。虽然使用Chrome或Firefox的headless模式可以做到(不过有时也未必可以),但是,它们比较占用资源。这时,可以用cutycapt这个命令行小工具,它基于QT,非常小巧。

安装

在Ubuntu上安装比较简单,直接安装即可:

$ sudo apt install cutycapt

阅读全文

hexo博客同步至csdn - 木然轩一文中,我提到了prismjs在尝试渲染C++代码块时不能正确加载node_modules/prismjs/components/prism-cpp.js。于是,我在prismjs的GitHub项目上提交了Pull Request:cpp extend clike by jlice · Pull Request #1914 · PrismJS/prism。不过,prismjs的项目维护者却告诉我,这锅prismjs不背,是markdown-it-prism自己的问题。

其实在提交这个Pull Request时我也觉得奇怪,prismjs的用户基数那么大,而C++也是非常常见的语言,要是出现这种问题早就解决了。不过,我的确是在一顿Debug后找到了出错的位置,但这个出错的位置是错误的果,未必是错误的因。

阅读全文

使用百度搜索,CSDN上的文章经常排在前面,可是,我并不喜欢在CSDN上写博客。而且,如果使用GitHub Pages搭建个人博客,由于GitHub屏蔽了百度的蜘蛛,百度会抓取失败,网站也就没有索引和流量了。虽然Google对于个人博客的收录比较快,也没那么麻烦,但国内使用百度搜索的还是比较多的。除了考虑不用GitHub Pages搭建,还可以考虑把文章同步到CSDN,使用CSDN来进行导流。

上网一查基本都是CSDN文章导出Markdown到Hexo,却没有Hexo博客同步到CSDN的,在GitHub上也没有找到相关的开源程序,无奈之下,只好自己搞一个了。本文就记录一下其中踩到的坑以及解决方案。

Markdown渲染

阅读全文

对于内网服务器,如果我们想从外网访问,可以借助一台拥有外网IP的云服务器,通过建立SSH反向隧道来实现访问内网服务器。

SSH隧道

首先,修改云服务器的/etc/ssh/sshd_config,在该文件的最后添加:

GatewayPorts yes

然后重启云服务器的sshd服务使上述配置生效:

$ sudo systemctl restart sshd

阅读全文

Survivor的作用

当没有Survivor时,如果增加老年代空间,需要更多存活对象才能填满老年代,这样可以降低Full GC的频率;但是,随着老年代空间加大,一旦发生Full GC,执行所需要的时间更长。

如果减少老年代空间,虽然Full GC所需时间减少;但是,老年代很快被存活对象填满,Full GC频率增加。

因此,Survivor的存在意义,就是减少被送到老年代的对象,进而减少Full GC的发生。

阅读全文

前言

做久了LeetCode,感觉快被LeetCode给惯坏了。LeetCode体验很好,不用处理输入输出,可以在线调试代码,出错时给出用例数据和正确结果。但是,很多OJ(比如HDOJ、ZOJ等)就只有极其有限的反馈。当好不容易写完代码,结果提交上去Wrong Answer,努力找代码中的错误也找不出来,这时该怎么办?

如果能找到AC的代码,那么,可以写一个测试用例数据生成器,然后将自己写的代码的运行结果与AC的代码的运行结果进行对比,这个过程叫“对拍”。对拍是在做OJ时很常用的手段,不过,往往需要进行多次的对拍,如果每次都手动执行对拍,无疑是件很繁琐的事情。如果一件事做起来很繁琐,那么就很难坚持下去,也难以享受其中的乐趣。所以,可以编写对拍器来自动进行对拍。

阅读全文