跳到主要内容

解决markdown-it-prism未能正确加载Languages的BUG

· 阅读需 4 分钟

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后找到了出错的位置,但这个出错的位置是错误的果,未必是错误的因。

prismjs

prismjs是一个代码块高亮的库,其作用和highlight.js差不多,有点像Python里的Pygments。大致看了下prismjs的源码,感觉主要就是用正则表达式描述了各编程语言的文法,然后做词法分析,对各种类型的token应用相应的样式。下面是prismjs的目录结构:

Hexo博客同步至CSDN

· 阅读需 8 分钟

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

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

Markdown渲染

在CSDN上创建Markdown文章时,会发送一个POST请求,有markdowncontentcontent字段:前者是Markdown内容,在使用CSDN的Markdown编辑器时会使用这个字段;后者是渲染后的内容,在页面上显示博客会使用这个字段。这两个字段是独立的,也就是在页面上显示博客取决于content,和markdowncontent没有关系,反之亦然。

systemd-modules-load.service启动失败问题排查

· 阅读需 4 分钟

我的电脑在启动时总会提示“Failed to start Load Kernel Modules":

虽然不影响使用,可强迫症看了还是会觉得难受。所以,还是着手解决下,顺便总结下Linux下service启动失败时一般的排查方法。

这个问题是systemd-modules-load.service启动失败,因为 Failed to find module 'vfs_monitor',下面给出排查过程和解决方案。

SSH内网穿透

· 阅读需 9 分钟

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

SSH隧道

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

GatewayPorts yes
ClientAliveInterval 60
ClientAliveCountMax 3

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

$ sudo systemctl restart sshd

如果不进行上述配置,将只有登录云服务器才可以外网访问内网服务器。

然后,内网服务器向云服务器主动建立SSH连接,并将内网服务器的22号端口转发到转发端口(任一空闲端口即可):

$ ssh -NR 转发端口:localhost:22 云服务器用户名@云服务器IP -p 云服务器SSH端口

注意,需要在云服务器的控制台配置允许转发端口的访问

云服务器SSH端口默认是22号端口,如果你修改了SSH连接的默认端口号,需要使用-p参数指明端口号,否则可以省略-p 云服务器SSH端口

使用fail2ban防范Linux服务器SSH暴力登录尝试攻击

· 阅读需 5 分钟

今天偶然看了下服务器上的日志,结果发现有人在暴力尝试SSH登录:

因为服务器是实验室内部使用,只有校园网才能连接,所以在服务器的安全上就没怎么在意。见此状况,立刻用iptables禁掉了一些IP,比如说禁掉148.235.57.190: