Madoko Local本地使用的问题

关于 Madoko

Madoko 是微软研究院之前推出的一款在线 Markdown 编辑器,只不过更加偏向学术使用,主要亮点在于 Madoko 可以和 LaTeX 结合,支持 LaTeX 一些语法和功能。

LaTeX 是一种基于 TEX 的排版系统,功能非常强大,不少写学术论文的研究者们应该都用过,但其比较底层,学习曲线和难度也挺大。Madoko 可以将 LaTeX 与简单的 Markdown 语法相结合,大部分的文档格式和结构可以使用现有的 Markdown 语法,用户也可以使用 LaTeX 的语法和命令进行扩展,可以很轻松地生成 LaTeX 排版效果的文档,默认也支持输出 HTML 和 PDF 文档。

Madoko 官方的在线编辑器 Madoko Editor 网站是:

https://www.madoko.net/

最近 Madoko Editor 网站访问有点问题,不过我之前也已经把 Madoko Editor 网站备份过了,能够自行部署运行,编辑器的界面和默认的示例文档如下:

Madoko Editor

可以看到 Madoko 文档的扩展名是 mdk,而且 mdk 文档基本都是使用现有的 Markdown 语法加上一点 LaTeX 语法,即使不使用 Madoko Editor,也可以用其它 Markdown 编辑器打开进行编辑。

Madoko Local

mdk 文档在 Madoko Editor 中编辑修改之后,支持保存到 Dropbox、GitHub、OneDrive 以及 Local Disk 本地:

Madoko Local Disk 保存

由于众所周知的原因,前面三个存储目标国内用起来都不太稳定,而且之前我使用 Madoko 的时候就发现用这些云存储进行文档编辑似乎也容易出问题,可能就用微软自己的 OneDrive 做存储稳定一些。

另外考虑到数据放在自己手里才是最安全的,因此我一般都是用 Local Disk 本地保存方式。

Madoko 的本地磁盘访问则需要 Madoko Local 这个程序的配合,另外如果想要本地生成 PDF 也需要使用 Madoko Local。

Madoko Local 是用 Node.js 编写的,本机安装完 Node.js 环境后,运行命令完成安装之后就可以使用 madoko-local 命令了:

~# npm install -g madoko-local

madoko-local 命令使用起来也非常简单:

~# madoko-local -r -l .
listening on           : http://localhost:8080
connecting securely to : https://www.madoko.net
serving files under    : /home/zzm/Documents

---------------------------------------------------------------
access server at       : http://localhost:8080#secret=XXX
---------------------------------------------------------------

最后一个参数就是 Madoko 能够访问的本地目录,. 就表示只导出当前的目录。

Madoko Local 启动之后就会输出绑定的端口(默认为 8080)、导出的本地目录路径,最重要的是包含密码的访问地址,浏览器通过这个访问地址就可以打开 Madoko Editor 界面。

Madoko Local 程序的其它参数可以通过 madoko-local -h 命令来查询,另外也可以使用 config.json 配置文件来配置端口等参数,这里我把 Madoko Local 的监听端口改为了 18080,也可以使用 mountdir 来配置导出的本地目录:

~$ cat > ~/.madoko/config.json
{
  "port":18080,
  "secret":"XXX",
  "origin":"http://XXX",
  "mountdir":"/home/zzm/Documents"
}

配置文件所在的 .madoko 目录默认位于当前用户的主目录下,这个主目录的路径也可以通过 madoko-local 命令的 --homedir 参数进行自定义。

如果对应目录下存在有效的 config.json 配置文件,后续就可以直接 madoko-local 命令启动程序而不需要加任何参数了。

Madoko Local 问题

不过我在使用 Madoko Local 时也发现一些问题:

  1. 通过 madoko-local 命令来指定端口、密码等各种参数可能存在问题;
  2. 如果 madoko-local 程序默认绑定了本地 IPv6 的 ::1 地址(也就是 localhost 地址),会报 only serving localhost 错误。

为此我稍微修改了一下 Madoko Local Node.js 程序源码,生成了 Madoko Local 最新 0.9.4 版本的 patch 文件,有需要的朋友可以从下面任选一个下载:

  1. Pastebin 分享链接
  2. GitHub 提交

下载了 patch 文件之后,就可以进入 Madoko Local 的安装目录运行命令进行合并了(假设下载保存的文件名是 madoko-local-npm-v0.9.4.patch):

~# cd /usr/lib/node_modules/
~# patch -p2 madoko-local-npm-v0.9.4.patch

上面命令使用的是 Linux 系统下 npm 默认的全局安装路径 /usr/lib/node_modules,其他系统可以使用 npm list -g | head -n 1 命令来确认。

为了方便,我也直接 fork 了 Madoko 的源仓库,还把自己做的其它的一些修改也提交了:

https://github.com/zohead/madoko

Madoko Local 程序的代码在 support/madoko-local 子目录下供大家参考。

最后祝跨过三年疫情的朋友们都能玩得开心 ^_^。





*