Recent Posts
自架 Overleaf (2)
[TOC]
前言 這篇是接續著前一篇「自架 Overleaf (1)」,要帶大家來幫自架的 Overleaf 加一些好料的。
(這個部落格現在真的是很醜,反正未來的某個時間一定會改善的,請眾讀者原諒。)
正文 先幫大家複習一下 Overleaf community edition 有哪些不方便的地方:
註冊新使用者很不方便 admin panel 資訊和功能很少 project 新增協作者時不會顯示「接受邀請的連結」 接下來將以這些不便之處為出發點,帶大家來 patch 這些功能。啊因為寫的當下有些東西我也還沒想過要怎麼改,所以沒有保證每個提出來的問題都會解決(不負責任的人)
本篇我所修改過的 code 都可以在 我的 repo 找到。
「首次登入即自動註冊」的功能 既然要加新功能,那我們就得要直接挖進 Overleaf server 的 source code 了。把 Overleaf 的 repo clone 下來,發揮一點逆向工程的精神(其實就只是讀別人 source code 而已講那麼高級),可以發現幾個我們有興趣的檔案:
services/web/app/src/Features/Authentication/AuthenticationManager.js authenticate() 函數負責處理使用者的登入請求,會呼叫 _checkUserPassword() 來檢查帳密 _checkUserPassword() 試圖從 mongodb 裡找到該使用者的登入資訊並比對 services/web/app/src/Features/User/UserRegistrationHandler.js 這個檔案提供了註冊新使用者的 registerNewUser() 函數 所以看起來,我們只要在 AuthenticationManager._checkUserPassword() 裡面加上「找不到使用者的話就呼叫 UserRegistrationHandler.registerNewUser() 幫他註冊」的功能就解決了。
仔細讀了一下 AuthenticationManager.js,發現在這個檔案裡完全沒有 async/await 或 Promise 的存在,全部都是 callback 地獄。我們要對 AuthenticationManager.
read more
自架 Overleaf (1)
[TOC]
前言 感謝吾友 James Hsu 頻頻 掛念 鄙人的部落格,期望以此文感謝他對我的重視。
在此也先為了這施工中的醜醜部落格道歉。
正文 Overleaf 是一個線上的 LaTeX 編輯器,不需要自己搞複雜的環境就可以寫 LaTeX,而且還支援像 HackMD 或是 Google Docs 那種多人同時連線編輯的功能,但 Overleaf 免費版的功能有一定的限制,我自己最明顯感受到的限制是同一個 project 只能加一位協作者,不然就是得要開啟 sharing link。試想大部分的課程 project 都要求 3 人一組,如果要用 overleaf 的話就只能開 sharing link,一想到如果連結不小心外流的話東西就有可能被刪光光,緊張到都睡不著了(才沒有)。自架的 overleaf 就沒有這種人數上限,有多少朋友就加多少協作者,沒問題的。
本篇我所修改過的 code 都可以在 我的 repo 找到。
做功課:Overleaf Community Edition Overleaf 的 GitHub 上有兩個 repo:
overleaf: Overleaf 整個服務的 source code overleaf-toolkit: 自架 Overleaf 的便利工具 在 Overleaf 的 Wiki 上有關於硬體設備的建議:
最低要求 2 core 和 3 GB memory … 大約支援 5 個使用者同時在線 每 5~10 個使用者大約需要 1 core 和 1 GB memory,「大約」而已 LaTeX 是一個 single threaded program,所以編譯 PDF 的速度取決於單一 cpu 的強度 … 還是存在著一種可能性是自架的 Overleaf 的編譯速度比 overleaf.
read more
My First Post
First Post This website is still work in progress …
Big thanks to James Hsu for keeping pushing me to work on my personal website.
read more