近期将主力环境从macOS切换至Arch Linux,然后将博客从原环境迁移至现环境,本来以为过程会比较简单,结果却还是踩了几个坑,现在将配置过程中遇到的问题记录并且总结如下。

在Arch Linux中安装Git和Node.js

根据Hexo官方文档的说明,安装Hexo需要的依赖为Git和Node.js。
Git的安装比较简单,使用Arch Linux的默认包管理器pacman即可安装:

1
$ pacman -S git

Node.js官方文档推荐使用nvm安装,并且官方文档给出了安装脚本。
但是我的电脑使用的是伪fish——参考Arch Wiki,我通过的是通过给terminal emulator添加参数的方式进入fish的。
因此,我的默认shell仍然是bash。而该安装脚本在检测到我的默认shell之后直接将相关的导出环境变量的命令添加至了.bashrc,导致了进入fish之后由于相关的环境变量丢失无法找到nvm命令的问题。

  1. 第一种解决方法是采用Node.js的fish版安装脚本,该脚本托管在Github上,但是该脚本目前已不再被MAINTAINED,需要自行承担风险。
  2. 第二种解决方法是采用bass包装原始的nvm。

对于第二种解决方法,我们首先使用官方文档的安装脚本安装nvm:

1
$ wget -qO- https://raw.github.com/creationix/nvm/master/install.sh | sh

然后我们按照Github上的教程手动安装bass:
1
2
3
$ git clone https://github.com/edc/bass.git
$ cd bass
$ make install

最后我们建立如下的文件并重启终端,即可正常地在fish中使用nvm:
1
2
3
4
$ cat ~/.config/fish/functions/nvm.fish
function nvm
bass source ~/.nvm/nvm.sh --no-use ';' nvm $argv
end

使用nvm安装Node.js最新版本的命令如下:
1
$ nvm install v8.1.3

最后我们安装hexo:
1
$ npm install -g hexo-cli

hexo server报EMFILE错误

报错内容如下:

1
Error: EMFILE, too many open files

Hexo官网的问题解答中给出了如下描述:
虽然 Node.js 有非阻塞 I/O,同步 I/O 的数量仍被系统所限制,在生成大量静态文件的时候,您可能会碰到 EMFILE 错误,您可以尝试提高同步 I/O 的限制数量来解决此问题。
1
$ ulimit -n 10000

但是当我尝试使用ulimit的时候,却报了如下的错误:
1
Permission denied when changing resource of type 'Maximum number of open file descriptors'

在这之后进行了如下的尝试:

  1. 使用sudo无法运行ulimit,后su至root运行,虽然没有报错,但是使用ulimit -n查看发现修改失败。
  2. 尝试添加参数-S和-H,没有效果。
  3. 最后根据Arch Forum上的回答,修改了/etc/security/limits.conf文件并重启电脑,问题解决。

hexo server报ENOSPC错误

Hexo官网的问题解答中给出了如下描述:
它可以用过运行 $ npm dedupe 来解决,如果不起作用的话,可以尝试在 Linux 终端中运行下列命令:

1
$ echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

这将会提高你能监视的文件数量。
$ npm dedupe没有解决问题,最后使用上述的命令解决了问题。(注意在fish中,'&&'要用'COMMAND; and COMMAND'来替代)

评论和共享

寒假总结

发布在 杂谈

颓废的大二上之后感觉良好的一个寒假,可能是我自上学以来效率最高的一个寒假了。

学习

LeetCode

大二上刚开学的时候因为数据结构上到链表和树的缘故,在LeetCode上刷了20多道Tag是链表和树的题目。

寒假的时候决心开始刷LeetCode,至寒假结束时已经完成了126道题,其中包括了绝大部分Easy题,以及少部分Medium题,虽然和真正学好算法相差甚远,应该算是基本上入门了。

主要接触了分治法以及相关的复杂度分析,哈希表,随机化相关的算法(蓄水池抽样以及FisherYales洗牌算法),简单的动态规划等。

通过的题目以及解法托管在我的Github上。

Python爬虫入门

参考书是《Python网络数据解析》,目前看到了第三章,主要接触了urlopen以及BeautifulSoup库以及最基本的爬虫思想,原书第三章的最后也简单的提到了爬虫用的Scrapy框架。

学习时候练习的代码托管在我的Github上。

MIT的算法导论公开课

目前看到了“快速排序以及随机化算法”这一节,但是对于之前所重点介绍的分治法的主定理仍然有不清楚的地方,需要花时间巩固学习并且配合LeetCode一起食用。

数据结构课程设计

因为其他事情的原因,我选的是最简单的第三题“基于查找表的单词检索软件”,但是我并没有使用二叉搜索树而是使用了Trie树来实现动态查找表。

抱着既然要做课设就不要糊弄的想法,这次的课设还是浪费了自己不少时间,在完成了最基本的Trie树以及Hash表之后,自己又实现了Hash表的迭代器以及Hash表的序列化,了解到了C语言中命令行参数的处理 - getopt。虽然程序仍然有大量可以优化和改进的地方,但是考虑到今年寒假投入的时间不是特别多,我总体上来说还是很满意的。


虽然说了不立Flag,写寒假总结督促自己,但是实际上今年寒假还是有各种堕怠,想要做的事情还是有很多没做,想想还是有点遗憾,但毕竟还是比大二上和去年寒假要好很多了。


关于输入和输出:仅对于自己而言,我认为输入和输出都是必要的,如果只强调输入,而忽视输出,那么只知道知识本身而不会运用知识,于我而言会失去学习的兴趣,更何况在大多数时候,缺乏一定数量的练习的我们甚至还没有能真正的掌握知识;而如果是以为的强调输出,那么可能和大一的我一样,只能成为为一个劣质的API Caller而已。


想到了去年团队总结说过的话,同样送给今天的自己:身为一个本科生,在扎实自己计算机基础的同时我也愿意更多的接触不同的方向比如iOS,Web的前端、后台技术甚至是一些设计的规范(世界这么大,我想去看看)。未来自己还要更加努力才行啊(毕竟现在的基础还是很弱)。

生活

大二上因为种种原因而陷入了迷茫,加权没有刷上来,在自己想学的东西上也几乎没有花什么时间,一直在懒懒散散地混日子,生活更是一团糟,但是好在并没有做出让自己后悔的事。

寒假刚开始的时候想了很多,虽然前路漫漫,伤痛注定多余喜悦,但我也决定不再逃避过去的自己,正视现在的自己。假期的时候和很多曾经的同学交流过人生和发展,也终于鼓起勇气认识了更多的人,看到了更多不一样的人生。然后这样的自己,突然又获得了梦想。

每一个不曾起舞的日子都是对生命的辜负,以上。

评论和共享

博客上线

发布在 杂谈

折腾了2天半,总算是勉强能看了。

怎么说呢,最初我并不是很想现在搭个人博客的来着,因为截止到现在,已经是一月四日,很快就要期末考试了,这个时候不复习危机昏来花时间搭博客明显是一种作死行为。

但是由于内心的冲动,我还是这么做了。

记得大概五六年级的时候,我就曾经注册过一个discuz论坛。但是那个论坛终究也只是用的别人的域名,况且我并不认为那个时候我要论坛有什么用(当个版主,当个管理员)…所以后来就没有管了。

然后是初一初二的时候,那个时候用的是baidu的空间,当时baidu空间有各种各样的主题,各种各样的挂件,用着也还不错,我至今任然记得自己当时装X自己出了一道有关于魔兽的搜索题然后写了一篇文章大谈搜索算法还有剪枝策略的事(其实我当时连搜索是什么的不知道)

后来baidu空间关闭了,高中后由于住校+没有网,我也基本上放弃了写博客,偶尔写写说说,就当是自己还存在的证明。

然后到了大学,最终我下定了决心搭建这个博客,感觉可能有以下几个原因:

1.大学计算机基础的结课作业,我做了一个个人主页,我记得当时我提到,很多程序猿都有写博客、做个人主页的习惯。

2.安琪用WP搭的博客大大地刺激到了我…燃起了我搭博客的冲动;天哥花钱怒买阿里云的行为感染了我…激发了我的消费欲

3.这几个月学习iOS的过程中,从各种博客上学习到了很多,解决了很多问题。

…尽管我在昨天的时候还对linux一窍不通,买来的阿里云也完全不知道该怎么配置,经过了2天努力,我总算配置好了apache,mysql和php,装好了wp,回过头看看,虽然很简陋,虽然服务器还没有完全调好,但是我还是很开心的。

最后希望在这四年里,我能好好利用这个博客,做一些自己想做的事。

评论和共享

  • 第 1 页 共 1 页
作者的图片

码龙黑曜

iOS开发者/计算机科学/兽人控


华中科技大学 本科在读


Wuhan, China