不使用第三方软件实现Obsidian多平台实时同步

这篇文章涉及服务器配置、docker 技术,当然都是很初级的使用 相信很多人跟我一样,不喜欢使用第三方软件来同步 Obsidian 。每次要打开两个软件,很麻烦。这种情况在手机上最为明显。 这也是我为什么从 9 月多就接触了 Obsidian 但是一没有最为主力的原因。虽然印象笔记已经非常的不好用,但是他的同步真的非常的方便。 直到最近在翻看 Obsidian 的插件的时候接触到了这个插件 Self-hosted LiveSync(虽然也有一款支持 WebDav 的插件,但是试了一下连不上服务器,作者说目前 WebDav 还在测试中)这个插件真的非常的棒 👍🏻。实现了无感同步,甚至可以多平台实时同步。 引用一张作者的图: 搭建服务器端 Self-hosted LiveSync 使用的是CouchDB数据库,这是一个开源的具有版本控制的文档数据库。 你可使用 IBM 提供的 CouchDB 数据库,这里有作者写的教程 https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/setup_cloudant.md 我们这里还是直接自己搭建,我是在家里的群辉 NAS 上搭建的,如果你没有 NAS 也可以在腾讯云、阿里云等云服务上搭建。优先推荐在 NAS 上搭建。 安装 docker 群辉直接再套件商店安装。云服务器用户使用下面的命令 docker version > /dev/null || curl -fsSL get.docker.com | bash service docker restart 安装数据库 首先创建配置文件 local.ini [couchdb] single_node=true [chttpd] require_valid_user = true [chttpd_auth] require_valid_user = true authentication_redirect = /_utils/session....

十二月 24, 2021 · 2 分钟 · LengYue

Vue watch中调用this时出现undefined问题

记录一下在 Vue 学习使用时候的遇到的问题 在watch侦听器中,想要调用methods中的方法 applicationId: (val)=> { if (val) { this.getAppConfig(val) } } 结果提示: Error in callback for watcher "applicationId": "TypeError: Cannot read property 'getAppConfig' of undefined" 查了官方的资料才知道。改成这样就可以了:

二月 24, 2021 · 1 分钟 · LengYue

搭建为知笔记Docker版,以及注意事项

好久没有关注为知笔记了,最近考虑迁移笔记的时候,看了一下各大笔记应用,开源笔记要么不支持全平台,要么客户端完善度或者同步问题不行。突然发现为知笔记支持docker版,可以自己部署,客户端还是使用官方客户端。 安装docker docker version > /dev/null || curl -fsSL get.docker.com | bash service docker restart 启动为知笔记docker 创建文件夹,跟官方保持一致,我们也在主目录创建文件 cd ~ mkdir wizdata 启动,如果你打算使用nginx,或者配置ssl,则需要把端口调整一下。比如我的6789 docker run --name wiz --restart=always -it -d -v ~/wizdata:/wiz/storage -v /etc/localtime:/etc/localtime -p 80:80 -p 9269:9269/udp wiznote/wizserver 接下来会自动下载并运行,喝杯咖啡,等一下就可以了。 或者,可以在这个时候配置Nginx 配置Nginx 开启SSL ssl_certificate XXX/fullchain.pem; #你的证书地址 ssl_certificate_key XXX/privkey.pem; #你的证书地址 ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5:!EXP; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; error_page 497 https://$host$request_uri; OK 配置完成之后,打开你的域名,或者你的IP:端口,比如 http://127.0.0.1:6789 ,默认管理员账号:admin@wiz.cn,密码:123456 配置云存储 默认笔记是保存在本地的,你可以使用本地+云同步的方式,或者像我一样直接使用云储存, 配置阿里OSS...

三月 13, 2020 · 1 分钟 · LengYue

解决 golang IDEA中不能debug问题

IDEA是2018-01版本,Golang是go-1.12.1,IDEA在Plugins中安裝的Go插件,我在运行go程序時是正常的,但是提示could not launch process: decoding dwarf section info at offset 0x0: too short 解決方案: 1:在终端运行 go get -u github.com/derekparker/delve/cmd/dlv。 2:运行上面的命令之后运行环境中就有dlv了。替换IDEA go 插件中的dlv macOS中的插件地址是:/Users/用户名 /Library/Application Support/IntelliJIdea2018.1/intellij-go/lib/dlv/mac 替换之后就正常了。

三月 26, 2019 · 1 分钟 · LengYue

Java反射与动态代理

基本用法 Java 反射API的第一个主要作用是获取程序在运行时刻的内部结构。这对于程序的检查工具和调试器来说,是非常实用的功能。只需要短短的十几行代码,就可以遍历出来一个Java类的内部结构,包括其中的构造方法、声明的域和定义的方法等。这不得不说是一个很强大的能力。只要有了java.lang.Class类 的对象,就可以通过其中的方法来获取到该类中的构造方法、域和方法。对应的方法分别是getConstructor、getField和getMethod。这三个方法还有相应的getDeclaredXXX版本,区别在于getDeclaredXXX版本的方法只会获取该类自身所声明的元素,而不会考虑继承下来的。Constructor、Field和Method这三个类分别表示类中的构造方法、域和方法。这些类中的方法可以获取到所对应结构的元数据。 反射API的另外一个作用是在运行时刻对一个Java对象进行操作。 这些操作包括动态创建一个Java类的对象,获取某个域的值以及调用某个方法。在Java源代码中编写的对类和对象的操作,都可以在运行时刻通过反射API来实现。考虑下面一个简单的Java类。 class MyClass { public int count; public MyClass(int start) { count = start; } public void increase(int step) { count = count + step; } } 使用一般做法和反射API都非常简单。 MyClass myClass = new MyClass(0); //一般做法 myClass.increase(2); System.out.println("Normal -> " + myClass.count); try { Constructor constructor = MyClass.class.getConstructor(int.class); //获取构造方法 MyClass myClassReflect = constructor.newInstance(10); //创建对象 Method method = MyClass....

七月 5, 2018 · 2 分钟 · LengYue

【MongoDB for Java】Java操作MongoDB

一、准备工作 1、 首先,下载mongoDB对Java支持的驱动包 驱动包下载地址:https://github.com/mongodb/mongo-java-driver/downloads mongoDB对Java的相关支持、技术:http://www.mongodb.org/display/DOCS/Java+Language+Center 驱动源码下载:https://download.github.com/mongodb-mongo-java-driver-r2.6.1-7-g6037357.zip 在线查看源码:https://github.com/mongodb/mongo-java-driver ...

七月 1, 2018 · 4 分钟 · LengYue

清除目录下的SVN信息

在项目开发和日常文档管理时,用到了SVN,由于要把一些文档发给同事,这时想删除SVN版本信息文件,于是上网在SVN中文论坛找到了一份资料: 删除 .svn 文件 在linux下 删除这些目录是很简单的,命令如下 find . -type d -name “.svn”|xargs rm -rf 或者 find . -type d -iname “.svn” -exec rm -rf {} ; 在windows下用以下法子: 1、在项目平级的目录,执行dos命令: xcopy project_dir project_dir_1 /s /i project_dir 为你的项目目录 原理是复制可见文件 .svn是隐藏目录 不会复制 3、添加注册表(亲自动手测试过) 可以将“快速删除SVN版本信息”命名增加到资源管理器的右键上,这样,鼠标点两下就能把选中目录下的所有.svn目录干掉了。 代码为: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESOFTWAREClassesFoldershellDeleteSVN] @=”快速删除SVN版本信息” [HKEY_LOCAL_MACHINESOFTWAREClassesFoldershellDeleteSVNcommand] @=”cmd.exe /c D:工具批处理文件删除SVN版本信息.bat” 将这段代码保存为一个.reg文件,双击确认导入注册表中不完整,后来自己手工添加。注意:文件“批处理文件删除SVN版本信息.bat”不能放 在有空格的文件夹下,确认删除时请看一下当前目录不要删除不该删的目录下的SVN版本信息。不知道怎么改进“cmd.exe /c D:工具批处理文件删除SVN版本信息.bat”。 批处理文件删除SVN版本信息.bat文件内容如下: @echo off echo *********************************************************** echo 清除SVN版本信 息 echo *********************************************************** :start ::启动过程,切换目录 :set pwd=%cd% :cd %1 echo 工作目录是:& chdir :input ::获取输入,根据输入进行处理 set source=: set /p source=确定要清楚当前目录下的....

七月 1, 2018 · 1 分钟 · LengYue

Java中Timer类的简单应用

Timer的介绍: Timer是一种定时器工具,用来在一个后台线程计划执行指定任务。它可以计划执行一个任务一次或反复多次。 TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务。 Timer类常用的两个方法: ...

六月 27, 2018 · 1 分钟 · LengYue