-
Notifications
You must be signed in to change notification settings - Fork 170
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #750 from BabyXinORZ/doc-md-tutorial-multiFileSync
添加md教程,介绍了Thino基于多文件保存的同步方案
- Loading branch information
Showing
1 changed file
with
118 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,118 @@ | ||
--- | ||
uid: 20240422070750 | ||
title: Thino 基于多文件保存的同步方案优化 | ||
tags: | ||
- 同步 | ||
- 配置 | ||
- 配置经验 | ||
- 💻教程 | ||
- 脚本 | ||
- dataview | ||
- lifeOS | ||
- Thino | ||
- Templater | ||
description: 对比三个Memos类应用,使用多文件存储改善Thino的同步体验 | ||
author: BabyXin | ||
type: other | ||
draft: false | ||
editable: false | ||
modified: 20240422174910 | ||
--- | ||
|
||
# Thino 基于多文件保存的同步方案优化 | ||
|
||
## Memos 类型解决方案对比 | ||
|
||
2024 年我接触的 Memos 类应用有三个,usememos,Flomo 和 Thino,代表了三个 Memos 的方向。我从代表性功能,使用条件和缺点几个方面进行评价。 | ||
|
||
[Flomo](https://flomoapp.com/) 起源于两位个人开发者的设计,我认为是目前开发最完善的 Memos 类应用了,标签管理和桌面便签功能狠狠切中我的痛点。支持微信输入,一些忽然的短暂的想法和文字可以通过微信来即时同步,会员年费 99 真的不贵。但缺点是作为一个软件太独立了,进行周期性归纳总结的时候需要手动切换和同步的体验着实不太好。 | ||
|
||
[Usememos](https://www.usememos.com/) 是一个开源 Self-hosting 方案,可以自建服务器并创立多个用户,用户可以在平台上编辑个人/工作/公开的 Memos。由于数据都在服务器上,所以手机电脑可以无缝同步。而且 [API文档](https://memos.apidocumentation.com/reference) 很全面,可以自主开发各种功能,拓展性很强,完全免费(需要自己有服务器)。缺点是 Web 前端以及其他开源客户端软件做的还有优化的空间,使用起来不太顺滑。[LifeOS插件](https://obsidian-life-os.netlify.app/zh/index.html) 可让 Obsidian 定时下载云端数据,但是使用体验比较差,云端和本地的修改都不能同步。 | ||
|
||
[Thino](https://thino.pkmer.net/) 是 PKMer 组织孵化下基于 [Usememos](https://www.usememos.com/) 开发的 Obsidian 插件,可以以基于 Obsidian 笔记的形式存储。因为是 Obsidian 插件,就可以使用其他插件组成自己想要的功能。比如结合 Tasks 插件来检索 Memo 中的任务统一管理,基于 Remotely Save 实现多平台同步,结合 Picgo 实现图床。目前 Thino Web 同步方案还在内测,不清楚具体同步体验。 | ||
|
||
| 应用名 | 代表性功能 | 使用条件 | 缺点 | 评价 | | ||
| ------------------------------------- | ------------------------------------------------------------------- | -------------------- | ------------------------------- | ----------------------------------- | | ||
| [Flomo](https://flomoapp.com/) | 桌面便签,可微信输入,Obsidian 手动下载(只读),Obsidian 快速上传 | 可免费使用,会员 99/年 | 与 Obsidian 交互体验不好,不便于统一的知识管理。 | 适合个人使用,开箱即用 | | ||
| [Usememos](https://www.usememos.com/) | Self-hosting,多人使用,拓展性强,线上同步,链接分享,Obsidian 定时下载(只读,基于 LifeOS 插件) | 需要服务器 | 配置需要一定的开发经验。 | 适合小集体使用,用作公共知识库或论坛。不能离线使用。 | | ||
| [Thino](https://thino.pkmer.net/) | 基于笔记文件的形式存储,可用多种视图阅览(日历,瀑布,对话),协同 Obsidian 其他插件实现多种功能(双向同步,任务管理,个人图床) | 可免费使用,会员 129 终身,同步需要云盘 | 协同其他插件需要折腾,Remotely Save 需要手动点击, | 适合喜欢 All-in-one 的用户,将知识在 Obsidian 统一管理。 | | ||
|
||
![800](https://image-host-1256452851.cos.ap-guangzhou.myqcloud.com/img/202404220342274.png) | ||
|
||
本质上,Memos 类应用是一种卡片笔记法的实现,主要用于知识管理。正如 [Flomo 101](https://help.flomoapp.com/thinking/write-card.html) 中少楠所提到的,我们零碎的记忆需要被收集,组织和使用。 | ||
|
||
> 从本质上讲,卡片笔记法不是一种「技巧」,而是一个「流程」,一种存储和组织知识、扩展记忆以及生成新连接和想法的方法。简单来说就是,把你感兴趣或者觉得自己未来会用到的知识收集起来;然后用一种标准化的方法处理这些笔记,确保颗粒度和标准统一;最后建立笔记之间的联系,供日后有需要的时候检索使用。 | ||
> by 少楠 | ||
一些应用致力于解决这些零碎记忆的收集,组织和使用的问题。 | ||
|
||
- [Flomo](https://flomoapp.com/) 解决了知识收集的问题,也实现了基于标签系统的组织,但是还不够,很多时候这些零碎的想法并没有建立起之间的联系。 | ||
- [LifeOS](https://obsidian-life-os.netlify.app/zh/index.html) 作者林大师基于 CODE 模型和 PARA 组织法给出了一个解决思路。 | ||
- 将 Memos 同步到日常的记录(周期笔记系统)中,作为思维的收集; | ||
- 使用 PARA 组织法管理这些笔记,实现知识的组织和连接 | ||
- 最后使用积累的 Memos 输出成文章。 | ||
但是 LifeOS 中基于 useMemos 的 Memos 同步方案有几个问题,在 Obsidian 中做的修改不能同步到服务器,服务器上的 Memos 修改了之后也不能在 Obsidian 中更新。 | ||
- [Thino](https://thino.pkmer.net/) 很大一部分解决了 Obsidian 的同步问题。基于 Remotely Save 插件,可以很方便的做到云端备份和多平台同步。但是也存在问题: | ||
- 但是非会员使用的日记文件存储方案会造成文件冲突,电脑端和安卓端添加 memo 都会对同一个日记文件造成修改,如果修改后没有及时同步,文件会互相覆盖,造成某一端的存储丢失。 | ||
- 使用会员提供的多文件存储方案可以避免文件覆盖的问题,但是 Memos 不会显示在对应的日记中,不利于以日为周期管理 Memo 文件。 | ||
|
||
结合既有的应用方案,我采用了 Thino 作为碎片知识的采集系统,使用 LifeOS 作为知识管理系统,使用 Remotely Save 作为同步方案。此外写了一些脚本放在日记模板中,使用 Templater 的 User Function 来自动化采集当日的 Memos。 | ||
|
||
## Thino 同步方案优化 | ||
|
||
1. 插件依赖:可以先使用 LifeOS 的模板,再安装 Thino 插件。必需的插件如下 | ||
- [Thino](https://thino.pkmer.net/) | ||
- [LifeOS](https://obsidian-life-os.netlify.app/zh/index.html) | ||
- [Dataview](https://blacksmithgu.github.io/obsidian-dataview/) | ||
- [Templater](https://silentvoid13.github.io/Templater/) | ||
- [Remotely Save](https://github.com/remotely-save/remotely-save) | ||
|
||
2. Thino 选择多文件存储并且配置你的存储文件夹 `<Memo Folder>`(需要充值 Thino 会员),我的路径是 `-1. Memos/Thino`。 | ||
![image.png](https://image-host-1256452851.cos.ap-guangzhou.myqcloud.com/img/202404220449796.png) | ||
|
||
3. Dataview 配置 | ||
为了支持 memos 收集脚本持续同步文件夹中的内容,需要设置 Dataview 的更新频率和时间日期。具体方法是设置 ->第三方插件 ->Dataview->General,配置如下图。设置之后可以实现一秒更新一次收集脚本。 | ||
|
||
![image.png](https://image-host-1256452851.cos.ap-guangzhou.myqcloud.com/img/202404220541217.png) | ||
|
||
4. 日记模板配置 | ||
为了实现当日的 Memos 在对应的日记中能够显示,我使用 Templater 的 User Function 来生成 Dataviewjs 收集脚本,自动化采集当日的 Memos。在日历模板 `0.周期笔记/Templates/Daily.md` 中添加如下脚本,注意修改脚本中的 `memo_folder` 为你的 Thino 多文件存储文件夹 `<Memo Folder>`。 | ||
|
||
~~~markdown | ||
%% Get the date of the diary file %% | ||
<%*let current=PeriodicPARA.Date.parse(app.workspace.getActiveFile().path.toString());%> | ||
|
||
%% Insert the dataviewjs script %% | ||
```dataviewjs | ||
// Filter out and sort the memos in the folder for the corresponding date | ||
let memo_folder = '"-1. Memos/Thino"' | ||
var pages = dv.pages(memo_folder).filter(b => b.file.ctime.toFormat("yyyy-MM-dd")=="<% PeriodicPARA.Date.days(current).from%>"); | ||
|
||
// Sort memos by created time | ||
pages.sort(b => b.file.frontmatter.createdAt) | ||
|
||
// display | ||
for (const page of pages) { | ||
let ctime = page.file.frontmatter.createdAt; | ||
let text = await dv.io.load(page.file.path); | ||
let content = text.substr(text.substr(3).search("---")+6); | ||
|
||
const blockRoot = dv.el("blockquote", ""); | ||
const title = dv.el("b",ctime, {container: blockRoot}); | ||
dv.el("div",content, {container: blockRoot}); | ||
|
||
title.onclick = function(){ | ||
app.workspace.openLinkText(page.file.path,"",true); | ||
}; | ||
title.style.cursor = "pointer"; | ||
} | ||
``` | ||
~~~ | ||
|
||
打开任意一天的日记,只要当天有记录,就会有显示。显示效果如下: | ||
|
||
![image.png](https://image-host-1256452851.cos.ap-guangzhou.myqcloud.com/img/202404220534375.png) | ||
|
||
## 总结 | ||
|
||
总的来说,Thino 因为与 Obsidian 高度集成的原因,在知识的组织上有无可替代的优势。但是知识的采集依赖于设备间的同步,而 Thino 数据是使用本地的文件,同步依赖于文件同步,总会发生文件冲突问题。本文使用多文件存储优化了 Thino 的存储体验,希望能弥补 Thino 在同步上的缺陷,同时给 Thino 之后的产品迭代提供一些参考。 |