肇鑫的日常博客

日常

将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

Ubuntu 16.04 服务器安装

缘起

由于美区应用商店买错了礼品卡要怎么办?的缘故,还没能用上HyperApp。于是先钻研一下手工要如何做。

选取虚拟主机

首先是在虚拟主机列表中选择64位的Ubuntu 16.04。我其实是Debian的拥护者。我自己使用的虚拟主机,一般都会用Debian。但是由于我之后会用到Swift。而官方支持的是Ubuntu,所以我这次就选它了。另外,HyperApp的文档建议的是64位。

配置用户

主机选择好之后。等待安装完成,就可以进入系统了。

进入系统之后,我们首先要创建一个普通用户。今后我们就用它登入,然后禁用root用户通过密码登录。因为有很多无聊的菜鸟黑客,会尝试使用破解root密码的方式来入侵你的电脑。

创建新用户

# adduser sammy

#是root账户的提示符,sammy是演示用的用户名。你只需要输入密码,其它按照默认就可以。

为新用户添加sudo权限

# usermod -aG sudo sammy

为新用户添加远程登录的证书

生成生成证书

这个证书是在本地机器生成的。不是在服务器。

$ ssh-keygen

生成后,查看公开密钥。

$ cat ~/.ssh/id_rsa.pub

配置服务器端

将内容复制。在服务器,输入

# su - sammy
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ nano ~/.ssh/authorized_keys

粘贴之前复制的公开密钥,按ctrl+x退出,按y保存,按回车确认。之后输入

$ chmod 600 ~/.ssh/authorized_keys
$ exit

回到本机,你现在可以通过证书访问服务器了。

禁用密码登录

$ sudo nano /etc/ssh/sshd_config

找到PasswordAuthentication,取消它的注释,将它的内容改成PasswordAuthentication no

另外,文件中有这两行。

PubkeyAuthentication yes
ChallengeResponseAuthentication no

保存退出后,执行

$ sudo systemctl reload sshd

这样通过密码登录的方式就被禁用了。

开启防火墙

$ sudo ufw allow OpenSSH
$ sudo ufw enable

参考文献