肇鑫的日常博客

日常

将MWeb的代码加亮从highlightjs替换为prismjs

我一直使用MWeb来维护我的网站。MWeb应用内的预览可以显示代码的行号。但是生成的网页不行。一年前我将这个问题提交给了MWeb的作者,他也承诺会尽快解决。但是一年过去了,完全没修。今天,我决定自己看看能不能弄好。

作者虽然没有修,但是提供了思路,说是需要将highlightjs改为prismjs。于是我来到了两者的网站,通过比较MWeb生成的网页代码,以及综合我之前修改MWeb主题的经验,我总结出了正确的替换步骤。

替换步骤

  1. 来到prism的下载页,选择你需要的语言和代码风格。此外,还要把插件Plugins功能中的行号Line Numbers选上。

  2. 点击网页最下放的下载,分别下载js文件和css文件。

  3. 在MWeb中,右键点击你网站对应的分类,点编辑。

    MWeb menu

  4. 在你选择的主题右侧,点击编辑。

    MWeb dialog

  5. MWeb会在Finder中显示主题所在的文件夹。

    theme folde

  6. 在asset文件夹中创建文件夹,命名为prism。

  7. 将之前下好的js和css放到上面新建的prism文件夹。

  8. 用文本编辑器打开header.html,将第27,28行注释掉或删除,内容类似下方

<script src="asset/highlightjs/highlight.pack.js"></script>
<link href="asset/highlightjs/styles/xcode.css" media="screen, projection" rel="stylesheet" type="text/css">

并新增

<link href="asset/prism/prism.css" rel="stylesheet" type="text/css" />
<script src="asset/prism/prism.js" type="text/javascript">

最后保存这个文件。

现在你可以在MWeb中选择“清空并重新生成网站”,新的网站是会显示行号的了。

修改代码显示的字体

代码显示出来了,但是我觉得字体比较大。于是我打算修改字体。打开之前保存的prism.css文件。

  1. 找到第15行,font-size: 1em;,将它改为font-size: .88em;
  2. 如果你此时重新生成网站,你会发现行号和代码的位置不对应,存在错位。这是因为,行号是单独生成的,它和代码之间的距离是需要计算的,而非直接对应。
  3. 修改第21行,line-height: 1.5;line-height: 1.32;
  4. 修改第142行,font-size: 100%;font-size: 113.64%;

这个规律是这样的:15行的默认值为1,如果你将其修改为a。那么21行,就是1.5*a,第142行就是1÷a*100%

保存好这个文件。之后在MWeb中重新生成网站就可以了。

Dart Web的安装

安装Dart

> brew tap dart-lang/dart
> brew install dart

命令行环境

> pub global activate webdev
> pub global activate stagehand

创建首个应用

> mkdir quickstart
> cd quickstart
> stagehand web-simple
> pub get

运行该应用

> webdev serve

访问该应用

打开Safari,输入localhost:8080,回车。

环境变量

需要将下面的环境变量加入到~/.bashrc

# for dart command line
export PATH="$PATH":"$HOME/.pub-cache/bin"

# dart pub get mirror
export PUB_HOSTED_URL="https://mirrors.tuna.tsinghua.edu.cn/dart-pub/"

第一个环境变量是缓存,这个都需要。第二个是将dart的包的源换成清华的,因为国外的访问特别慢。这个可选,如果你直连很快的话就可以去掉。

使用IDE编辑

可以使用IDE来进行编辑。但是运行和调试还是需要使用命令行。比如你用Android Studio编辑,可以享受的好处是命令行补全等。但是当你需要调试时,还是需要使用pub get来获得依赖。通过webdev serve来运行,之后你编辑的新内容,会时时进行检测,遇到错误,会在webdev serve的终端上进行提示。要停止运行,在终端按cmd+c

参考

https://dart.dev/tutorials/web/get-started

随笔20180808,安利一下MWeb和咕唧

最近,两个大厂接连出现安全事故。

一个是腾讯,号称及其安全的腾讯云,搞丢了用户的数据。调查之后的原因竟然是号称的系统自动备份,其实是腾讯的工作人员手动备份的。而且他因为嫌时间长,关闭了备份的校验功能。之后又为了节省空间,没有启用规定的额外24小时缓存。

另一家大厂是台积电,苹果和高通的处理器芯片都是它代工。它位于3个不同位置的基地里的电脑同时中了病毒,生产线不得不关闭。

事后寻找原因,竟然是采用的Windows电脑没有及时打补丁。要知道,这个病毒流行的时间是2017年。

人人都承认自己出过错。但是几乎没人承认自己出错会比别人多。大多数人,都觉得自己是一大群人中,出错较少的那一小群人里的。这其实,就是一种盲目的自信,是一种侥幸心里。

因此,要解决安全问题,最好的办法就是尽量消除人的因素,先将人为失误的可能降到最低。

我的网站也没有启用备份。备份收费的确是一方面,另一方面是因为,我的网站不需要备份。

我的网站都是采用MWeb编写的Markdown文件,然后自动生成html文件,之后执行我自己写的rsync脚本,上传到虚拟主机上的。无论网站出了任何问题,我都可以新建一个虚拟主机,然后同步一下就可以了。

咕唧也是一样,咕唧只发送内容,没有在网站上保存任何用户信息。因此也不必担心泄露用户的任何数据。认定了自己在安全方面投入有限的情况下,提前干预才是对的。