快充协议笔记

中文里面的快充,其实对应着很多个英文单次,Quick Charge, fast charge, dash charge, USB PD(USB Power Delivery), Dual charge, 这些许许多多的名词,在中文的语境中都被叫做快充其实是不太准确的。虽然都叫快充,但是其实各个设备厂商都有各自自己的实现,目前市场上比较常见的快充实现是 QC,PD。

快充区别和历史

追溯快充的历史,可以追到高通的芯片,一般被用来给移动设备芯片供电。通常意义上所讲的快充是指的,通过 USB 标准,提供 5V,2A 的充电技术。

不过不同厂家都有自己的专有技术,比如联科发的 Pump Express, OPPO 的 VOOC 以及华为的 SuperCharge.

QC

我们通常所讲的 QC 快充其实是高通的一套快充解决方案,一般搭载高通处理芯片的移动设备会用到该快充技术。

Quick Charge 也有其自身的发展,从 Quick Charge 2.0,到 3.0,到随着 Snapdragon 835 发布的 4.0,再到目前的 4+,维基百科有非常完整 QC 快充发展历史 1

qc history

PD

这里的 PD 快充指的是 USB 联盟制定的快充规范,不仅可以用于手机,还可以用于 PC,相机,显示器等等设备。PD 协议的出现也是一定程度上缓解市面上的各种不同快充协议。不过 PD 快充一定需要通过 USB Type-C 接口。使用 PD 快充,最高可达到 100W (20V * 2A). 充电装置和充电器会自动判断用多大的电流充电。高通在 QC4.0 后使用了 USB PD 规则,理论上 QC4.0 快充装置也能支持 USB PD 快充。

VOOC

这是 OPPO 的快充专有技术,授权给 OnePlus 叫做 Dash Charge,或者又叫做 Warp Charge. OPPO 算是市面上研究充电技术比较早的公司,14 年推出 VOOC 闪充,18 年商用 SuperVOOC 超级闪充,而后者是目前最快的手机充电技术。

SuperVOOC 充电规格,通过 10V/5A 高电压,大电流方式,充电功率可以达到 50W,充电 10 分钟可以得到 40% 电量。

而一加的 Warp 充电,使用 5V/6A 大电流。

SuperCharge

这是华为用来给麒麟芯片提供快充的技术。

快充实现原理

不同厂家的快充技术听名字可能会非常困惑,但追溯到原理无非就是:

  • 提高充电电压
  • 加大电流
  • 或者同时提高电压和电流

具体的实现原理,本人也不是硬件设计出身,所以具体内容也就不好展开了。

充电头和充电线

对于快充技术,一般情况下都是需要电源适配器和充电线搭配使用才能发挥最佳,使用普通充电线可能并不能达到快充效果。

这里有个小技巧,在电源适配上,除了一般的电压和电流标识,如果支持 QC 快充,一般在适配器 LOGO 中会显示一个 QC 的 LOGO(上面图中右上角的标识),一般也会标注快充的版本。

所以最理想的状态就是等 N 年过去,大家可以不再纠结什么快充协议,一个 PD 充电适配器,适配所有的设备,不管是手机,电脑,相机还是显示器。但显然要等待的时间还有些漫长。

reference


2019-11-08 quick-charge , android , usb , type-c , phone , ios , iphone

Boox Note 2 使用感受及小技巧

作为 Kindle 的用户,很早就开始注意电子墨水屏,然而 Amazon 久久不推出大屏的电子墨水阅读器,这就使得阅读 PDF 变得困难,所以最开始的时候注意到了 Sony 出的两款电子墨水屏,但是无奈价格一直非常坚挺,所以在综合一番搜索之后,首先是 YouTube 上推荐了 Boox 这个品牌,再然后就是一番搜索,发现原来国内厂商一致在做着自己的努力,Boox,iReader,LikeBook 等等,台湾的厂商读墨今年也发布了 mooInk 阅读器,电子墨水屏渐渐进入了大众的视线,经过这么多年的发展,技术也有了进步。所以综合考虑,我终于入手了这款 Boox Note 2, 原来考虑的是 Note Pro,但是看在新发布 Note 2, 系统较新,性能也更好一些,所以还是买了新发布的 Note 2.

购前调查

就如上面所说,最终锁定 Boox,经过了非常复杂的心路历程。而在 Boox 复杂的机型中,也是经过了一番比较才锁定 Note2。首先要明确自己的需求,可能对于某些人来说电子墨水并不是最佳的选择,同价格档位的选择已经可以买一台入门的 iPad Air,甚至一台不错的笔记本了。而对于我,我得主要目的是用来读 PDF,硬盘中积累了非常多的 PDF 文件,因为电脑上看起来比较费劲,而且常常容易被打断,所以我想要一台沉浸能看 PDF 的设备,另外一点就是电子笔记,iPad 的笔记手写笔记体验使得整个行业重视起手写笔记的体验,手写笔记,不仅包括阅读时的批注,也包括完全的手写笔记本。我之前有一个非常迫切的需求就是将手上的纸质笔记本电子化,纸质内容占用体积,又比较难索引,所以长久以来就只能依靠网络笔记本 WizNote 之类来整理。

所以总结来看,有两点:

  • 沉浸式的 PDF 阅读体验
  • 手写笔记

实际上这两点,要想达到倒也不是很难,关掉通知的 iPad 就能做到,但是结合我自身的情况,我并没有完整的苹果生态,我的主力笔记本是 Linux Mint,我的主力手机是 Android,我也并没有在 iOS 生态上花过钱,反而是在 Play Store 中买过很多应用,包括我想着可能在电子墨水屏上会很好用的 moon reader pro。所以最后还是选择了开放生态系统的 Boox . 并且还知道它可以支持 Google Play Store.

而选择 Boox 机型的过程也是经过了一番考虑,Boox 的机型数量非常庞大,覆盖了 7 寸到 13 寸所有常见尺寸。首先我肯定不会选择 7 存的机型了,因为我已经有 Kindle,在阅读 mobi, epub 格式的文件的时候并不会有任何的问题,再者 13 寸,我觉得有点大,虽然还是看到很多人非常喜欢 Max 的超大屏幕,但是我还是忍住了,一是价格,二是便携程度。

boox history

Size

参数 Note Pro Note 2 iPad Pro
处理器 1.6GHz 4 核处理器 Qualcomm Octa-core 2.0 GHz 8 core A53 processor A12X
内存 4G 4G 4G
存储 64G 64G 64G 起不同
重量 325g 378g 469g
厚度 6.8mm 7.1mm 5.9mm
系统 Android 6.0 Android 9.0 iOS
屏幕 10.3 10.3 iOS
分辨率 10.3 1872*1404(227PPI) 2388*1668(264PPI)
电池 4100 4300 毫安  
接口 Type-C Type-C Type-C

First impression

等商家即来已经是第三天,拿到手拆开包装,第一感觉就是大,相比较 Kindle,可显示面积大太多了,10.3 寸确实是阅读 PDF 的最佳尺寸了。开机进入界面非常简洁,我的 Boox Note2 开机后甚至什么书籍内容都没有,侧边几个选择清晰的表明了几大功能,快速浏览了一遍设置,更新一下固件,修改一下休眠时间,设置 PIN 和指纹,开启 Google Play Store,登录 Google 账号同步一切都非常满意。

然后就是连上 USB 快速的导入了几本测试书籍。

Boox Note Pro 开启 Google Play

倒没有我想象得麻烦,直接在设置中开启,认证之后就能够直接使用了,如果登录失败,重启一次就成功了。

Font

Oreader 路径,本地存储 fonts 文件夹。

Onyx Neo Reader : 路径 adobe/resources/fonts 放入 TTF 文件

Dictionary

系统自带字典文件,指定目录是:sdcard\dicts\xxx,每个字典都以文件夹形式保存。

最多支持同时查阅 5 本字典。

支持的字典格式:stardict\bgl\mdict 等格式。

Wifi 传书

同一局域网中,可以使用浏览器访问 Boox 中显示的地址。默认的存储路径为 \WifiTransfer

推送图书,推送网址:http://send2boox.com,支持 Onyx 账号绑定多个设备,支持单文件 200M 以内推送。

Tips

使用过程中感觉需要总结的一些使用小技巧,对于一些显而易见的技巧就不在多说,比如手写笔上中间加入的擦除按钮,稍微使用一下就知道使用方式。这里主要总结一些不看说明可能摸索不出来的小技巧。

Screenshot

截图是一个说常用也不是很常用,但是要用起来不得不用的一个功能。我们都知道 Android 的截图快捷键是电源键加音量下键,但是 Boox 并没有音量键,所以 Boox 学习了 Kindle 的做法,同时按下屏幕左上角和右下角,这时屏幕就会出现截屏选项,保存分享都随意了。截图文件会存放在存储空间的 Screenshots 目录下。

App Freezer

Boox 使用 Android 系统,优点是开放,可以一下子拥抱 Android 世界许许多多的优质应用,但是缺点也是有些应用会滥用权限,无形中消耗电量,所以 Boox 在应用界面加入了应用冻结,可以将不常用的应用冻结起来。和我平时用的 icebox 有些相似。

Go back to HOME

Android 上返回到桌面是比较常见的操作,而在 Boox 回到桌面有这样几种方式:

  • 用实体按键
  • 双击 navigation ball
  • 或者在任何应用内返回,退出

Custom Note Template

Note2 的笔记应用已经自带很多笔记模板,但是你也可以自定义笔记模板,只要将模板图片放到根目录下 /noteTemplate 即可。

一些可用的应用

阅读类

阅读任何格式,自带的阅读器就能够满足,当然如果追求 PDF 裁边,重排可以试试 KOReader

其他应用,比如微信读书,多看,掌阅,网易蜗牛,kindle,不过个人倒是不是很喜欢在 Boox 上用这些为手机而设计的应用。

漫画

平时不怎么看漫画,不过这几个似乎不错:

  • 快看漫画
  • 漫画人
  • 哔哩哔哩漫画

另外很多人用电子墨水屏来看新闻,我是觉得非常不妥的,任何带滑动列表的应用都是不推荐的。

Q&A

使用过程中发现了一些小问题,有些有临时性的解决方案,有些暂时还无解。

PDF 导出

Boox 支持在 PDF 文件阅读时直接批注,但是有一个问题就是,当想要批注和原文件一起导出时,就能够在菜单中一页一页导出,如果 Boox 能够将批注和文件一次性导出成一个新文件就好了。

手写笔侧边栏问题

在使用过程中已经知道电磁笔的侧边按钮是擦除功能,但是使用过程中非常不灵敏,时灵时不灵,并且需要非常用力按下去才能够起到作用。官方有说明是能直接使用的,但是做工也太糙了。

boox note 2 pen eraser

当然解决办法是有的,就是使用笔帽的橡皮擦功能,不过这样就需要每次将笔倒过来再使用。

reference


2019-10-31 boox , e-ink , reader , e-reader , kindle , boox-note2

Joplin 至今为止用过的最好的 Evernote 代替品

Joplin 是一个开源的笔记应用,曾经在调查 Evernote 代替品 的时候简单的看到过,但是当时也只是观望的态度,因为当时发现 Joplin 的插件有些不完美,有些网页 HTML 格式无法保证。

但是时隔一些时间过来看,Joplin 发展已经超出我想象,不仅提供了各个平台的版本,还提供了命令行版本。虽然日常用 Vim, aag,fzf,git 来记录一些笔记,倒也还可以,但是毕竟有些管理上的问题,尤其是当笔记数量已经达到数百数千条的时候。

Installation

各个客户端的安装直接参考官方网站:

Client

桌面客户端没有什么可说的,从最早只支持 Markdown,到如今可以看网页原始 HTML,客户端也在进步。和大部分的笔记应用一样,左侧是笔记本,点开笔记本能查看笔记本中的内容,右侧主要部分就是笔记内容。

笔记本的层级关系支持树形结构,可以嵌套很多子目录,所以非常适合用来归类

更多内容可以查看我的笔记整理法则

在桌面版中,可以按下 Ctrl + G 然后输入笔记的标题来快速跳转到该笔记。或者可以使用 # 跟着 Tag 或者使用 @ 跟着笔记本标题来跳转。

External Editor

使用快捷键 Ctrl + E 或者直接点击工具栏的 External Editor 可以打开外部编辑器。个人推荐 Haroopad.

Chrome Extension

离不开 WizNote 和 Evernote 很重要的一点就是 Chrome 插件,在日常使用过程中,在 Chrome 下浏览咨询,工作的时间占用非常高,也经常需要收藏剪切一些资料。这个时候 WizNote 就成为了一个非常重要的资料保存箱。

在很早之前使用 Joplin 的时候,Chrome 插件不是完善,只能够将 HTML 剪切成 Markdown,并且很简陋,不能够满足我的日常使用。而这一次体验,发现 Chrome Extension 已经足够用,能够剪切选中内容,整个网页,截图保存,剪切网址等等,完全的覆盖了日常使用需求。不过有一点需要注意的是,Joplin 的 Chrome 插件是需要本地将 Joplin 开启一个服务的,并不是像 WizNote 先收藏到云端服务器,然后要使用时再从服务器中拉取的。

Terminal

命令行版本的安装也非常简单,界面布局和 GUI 版本相差不大。但是需要注意的是命令行版本和桌面版并不是共用的一套数据集,他们相互是独立的,在桌面版修改,并没有在命令行版本中。

Sync

关于同步是我最想说的,官方提供了 NextCloud,Dropbox,WebDav 等等同步方式,但是我个人推荐 Syncthing,在不同机器上都安装上,在服务器上也安装上,就完美的实现了 Dropbox,NextCloud 单点的问题,即使中心服务器挂了,也能够有多个备份能同步。

Conclusing

如今的 Joplin 已经能够满足日常使用了,所以我会渐渐的将 WizNote 笔记中的内容迁移到 Joplin 中。又将一个闭源产品迁移到开源工具,开心。


2019-10-28 evernote , notebook , joplin , note , note-taking

记一次修复安装 Magisk 模块后的 bootloop

昨天看到系统通知有 Android 10 的 OTA,就顺手把系统升级了,也知道可能有些 Magisk Module 不兼容,所以把所有的 Module 都先关闭了,升级的过程倒是非常顺利。所以也就没有多想就依次想试试 Magisk 模块能不能启用,尤其是 EdXposed。可是就是没有想到这个启用让手机停留在了 OnePlus 的开机 Logo 无限开机中。这个问题倒也不是很大,之前也就遇到过,只要刷入一个 uninstall 的包就可以了。所以就想要进入 recovery。

这里插入一下一加的几个组合按键。

  • 在开机状态下 Volume Up + Boot 按键长按可以强制关机
  • 在关机状态下 Volumn Down + Boot 按键长按可以进入 recovery 模式
  • 在关机状态下 Volumn Up + Volumn Down + Boot 三个按键同时按住可以进入 fastboot 模式

因为之前就刷入了 TWRP 的 recovery 所以也不是很怕,但是当我进入 TWRP 的 recovery 的时候,我发现 TWRP 没有要求我输入 PIN 密码,并且进入后也无法加载 data 分区,所以手机内部的所有内容都无法读取,这一下就有点慌了,因为我不想丢失数据。经过一番搜索,尝试了重新刷 boot.img,后来发现 Android 10 的 TWRP recovery 可能需要升级,所以在 xda 上找到了 unofficial 的 Android 10 的 recovery,刷入后果然能够解锁了。

然后再把 Magisk 的 uninstall 的包刷入,开机果然就没事了。然后不甘心,从头开始,重刷了最新的 TWRP 3.3.1-xx Unified Unofficial by mauronofrio,然后刷入 Magisk,不过没有启用任何 Module,然后一个个尝试启用 Module,果然 EdXposed 启用之后还是会卡在 Logo,但是这个时候我就不需要重新刷入 uninstall magisk 的包了,我只需要进入 recovery.

  • 进入 TWRP
  • Advanced > File Manager > data > adb > modules
  • 然后找到对应新安装的 module,进入文件夹,然后点击右下角的勾
  • 在弹出的对话框中选择 Delete

再重启进入系统即可。

reference


2019-10-20 magisk , oneplus-7-pro , android , recovery , root

Java 类加载器

虚拟机把描述类的数据从 Class 文件加载到内存中,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是 Java 虚拟机的类加载机制。

类加载的时机,整个生命周期包括:

  • Loading
  • Verifacation
  • Preparation
  • Resolution
  • Initialization 初始化
  • Using
  • Unloading

其中 Verifacation, Preparation, Resolution 三个部分称为 Linking。

四种情况必须对类进行“初始化”。

  • 遇到 new, getstatic, putstatic 或者 invokestatic 四条字节码指令时
  • 使用 java.lang.reflect 包方法对类进行反射调用时
  • 初始化类时,如果发现其父类没有初始化,则需要先触发其父类的初始化 auto
  • 当虚拟机启动时,用户需要指定一个执行的主类(包含 main 方法的那个类),虚拟机会初始化这个类

Loading

虚拟机会:

  • 通过一个类的全限定名获取定义此类的二进制字节流偶 iu
  • 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构
  • Java 堆中生成一个代表这个类的 java.lang.Class 对象,作为方法区这些数据的访问入口

Verifacation

Linking 的第一步,为了确保 Class 文件字节流中包含的信息符合当前虚拟机的要求,并且不会危害到虚拟机自身的安全。

文件格式验证

验证字节流是否符合 Class 文件格式规划。

元数据验证

字节码描述的信息进行语义分析,以保证符合 Java 语言规范。

字节码验证

进行数据流和控制流分析。

符号应用验证

符号引用验证的目的是确保解析动作能正常执行,如果无法通过符号引用验证,会抛出一个 java.lang.IncompatibleClassChangeError 异常的子类,比如 java.lang.IllegalAccessError, java.lang.NoSuchFieldError, java.lang.NoSuchMethodError 等等。

Preparation

准备阶段正式为变量分配内存并设置类变量初始值的阶段,这些内存都将在方法区中进行分配。这个阶段中有两个容易产生混淆的概念,这个时候进行内存分配的仅仅包括类变量(被 static 修饰的变量),不包括实例变量。实例变量将会在对象实例化时随着对象一起分配在 Java 堆中。其次初始值“通常”指的是数据类型的零值。

public static int value = 123;

那么变量 value 在准备阶段后,初始化为 0 而不是 123. 但是

public static final int value = 123;

编译时 Javac 将会为 value 生成 ConstantValue 属性,在准备阶段虚拟机就会根据 ConstantValue 设置,将 value 值设置为 123.

Resolution

虚拟机将常量池内的符号引用替换为直接应用的过程。

初始化

到初始化阶段,才真正开始执行类中定义的 Java 程序代码。

初始化阶段是执行类构造器 clinit() 方法的过程。

双亲委派模型

Java 虚拟机角度,只存在两种不同的类加载器:

  • 启动类加载器 Bootstrap ClassLoader , C++ 实现
  • 其他类加载器,Java 实现,独立于虚拟机之外,继承抽象类 java.lang.ClassLoader.

工作过程,如果一个类加载器收到类加载的请求,将这个请求委派给父类加载器完成,每一个层次的类加载器都如此,因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父加载器反馈无法完成这个加载请求时,子加载器才会尝试自己去加载。 实现双亲委派的代码都在 java.lang.ClassLoader 的 loadClass() 方法中。


2019-10-16 java , class , class-loader , jvm

解压和打包 jar 并手动上传到 Nexus 记录

解压和打包 jar 包,使用如下的方式。

unpack

jar xf filename.jar

pack

jar cf filename.jar path/to/dir

手动上传到 nexus

将打包好的 jar 包上传到 Nexus

mvn deploy:deploy-file -DgroupId=my.group.id \
	-DartifactId=my-artifact-id \
	-Dversion=1.0.1 \
	-Dpackaging=jar \
	-Dfile=realfilename.jar \
	-DgeneratePom=true \
	-DrepositoryId=my-repo \
	-Durl=http://my-nexus-server.com:8081/repository/maven-releases/

记住这里的 repositoryId 一定是 ~/.m2/settings.xml 文件中的 ID, 另外 url 也要区分一下 releases 和 snapshots.

<servers>
  <server>
	<id>my-repo</id>
	<username>admin</username>
	<password>admin123</password>
  </server>
</servers>

reference


2019-10-12 nexus , jar , maven , java

Syncthing 又一款同步工具

昨天在整理同步工具的时候接触到了 Syncthing,简直秒杀了我现在使用的任何同步工具,所以不得不花一些篇幅来记录一下。

在看到 Syncthing 的介绍时,就非常好奇它的同步原理。也幸亏它的官方文档也有非常详细的 QA

几个比较重要的点:

  • 和 BitTorrent/Resilio Sync 的区别在于,Syncthing 开放源代码,使用开放协议,避免 Resilio Sync 闭源协议的安全问题
  • Syncthing 的同步原理,和 BT 类似,会将文件分片传输,当越多设备在线,那么共享速度越快
  • Syncthing 依赖于一个全局发现服务器,用来通过 Device ID 来发现设备 IP 和 端口,任何人都可以自己架设全局 Discovery 服务器,然后将自己的节点指向该服务器,这样就不必共享全局的服务器了,更甚至不需要依赖与因特网就能够实现局域网内文件同步
  • 关于安全性的说明 已经列举的非常详细了,所有内容通过 TLS 加密传输

端口

Syncthing 有个端口需要注意一下

  • 8384 端口是网页 GUI 监听端口,默认监听 127.0.0.1
  • tcp://0.0.0.0:22000 服务监听地址
  • udp://0.0.0.0:21027 本地发现服务端口

配置文件

在 Unix 下在 $HOME/.config/syncthing

开机启动

如果熟悉 supervisord 可以使用官方提供的文档配置,如果在 Linux 下可以尝试使用 Systemd

sudo systemctl enable syncthing@yourname.service
sudo systemctl start syncthing@yourname.service

记得把 yourname 替换成用户名。

推荐理由

推荐的理由:

  • 无需额外的服务器资源,以前使用 NextCloud 的时候,有一个很不方便的便是需要保证服务器 24h 不停地在线,放在家里 NAS 如果遇到停电就很不方便
  • 同步速度非常快,使用中心化的同步服务,中心服务器的网速限制了同步的速度,如果客户端越多速度越慢,但是 Syncthing 做到了点对点传输,也就意味着客户端越多那么同步速度越快,因为这一个节点的文件内容可以并行分片的从不同的节点获取
  • 丰富的客户端,除了 iOS 没有官方支持,三大桌面端,Android,路由器,NAS 几乎都有支持,因为 Go 写的嘛
  • Syncthing 完美的替换了 Dropbox 等等服务

Syncthing 配置本地 Discovery 服务器

有一种情况是,加入只想要在本地局域网中传输数据,那么可以关闭全局 Discovery 服务器,然后在设置中手动指定某一态服务器的 IP 和 端口,而不是使用默认的 dynamic。这样所有的数据就会在本地传输。

reference


2019-10-11 syncthing , sync , tools , linux , cross-platform , application

同步工具整理总结

陆陆续续用过不少同步工具,资料备份,各个设备间同步文件,从商业化的工具到命令行工具,但总还是一直在寻找一款足于满足我所有需求的工具。这里就整理一下,顺便整理一下我自己的思路。不久前就一直在思考一个问题,数字文件的生命有多长,以前看到过一句话,几十年前父母写下的日记如今依然能从旧书柜中翻出,数十年前的胶卷照片依然还很清晰,但往往几年前的网络文章,或者数字照片可能如今随着网络服务的关闭,物理硬盘的损坏而无法恢复。有人尝试使用多地备份,有人尝试云服务备份,却都无法从根本上解决这个问题,当然现在的我依然没有办法完全的解决这个问题。

目前我从两个方面来规避这个问题,一方面物理备份一份,一方面网络存储一份。虽然可以从大部分情况下解决一些问题,不过并不能保证 100 % 数据安全。

中心化的同步工具

中心化的同步工具就像是那个时候的 SVN,使用体验完全依赖于中心服务器,网速,磁盘大小都决定了最后的使用体验。

Dropbox vs pCloud vs NextCloud

最早接触到同步工具应该就是 Dropbox 了,PC 上,手机上都是使用 Dropbox 来同步的,并且我的 Dropbox 利用率一直都还是很高。但是 Dropbox 因为网络问题原因,有些时候可能会比较慢。所以一直作为保留项目。

在 Dropbox 之后,也用过 pCloud 不过也并没有深度使用。

之后就是尝试在 VPS 上建了 NextCloud,然后买了 NAS 之后把内容备份到了 NAS 上,并且开始深度使用 NextCloud

不过以上这些工具都有一些问题,比如我都只用来同步一些相对比较小的文件,比如文件,图片,文档等等内容。因为受到同步服务器容量的限制,所以有些文件我会有意识的不同步。

去中心化的同步服务

去中心化的服务有很多,这些年陆陆续续也都用过很多。就我个人而言,如果使用命令行,我会用 rsync, 如果要有一个比较友好的界面,我会用 Syncthing。

Rsync

rsync 之前的文章 已经提到过,很多使用方法那篇文章中也有提及,这里就不赘述了。

unison

unison 没怎么用过,但是 unison 经常被用来和 rsync, syncthing 一起比较,想必也有他的过人之处。

Resilio Sync

曾经用过很长一段时间,说是去中心化的,但是国内把中心服务的节点屏蔽之后就很难连接上其他地址了,所以后来就放弃了。不过 NAS 上还一直留着,使用起来也非常不错。

如果想要分享只读大文件给很多人,不妨体验一下。

VerySync

之前也有写过一篇文章 威联通上使用 verySync,但是这个同步工具毕竟还是用的人少,并且还是国产闭源应用,可信度不高。作为 Resilio Sync 的国产代替品使用。

Syncthings

开源,跨平台,Go 语言编写,其他就不用多说了。这可能是这一次整理收获最大的一个工具。

添加 Linux 启动项,可以参考官方的文档,非常详细

这个工具足以代替 Dropbox 完成同步任务,支持增量备份,支持版本管理,各个平台都有完美的解决了同步的问题。

Other

insync 是一个可以将本地文件夹和 Google Drive 同步的工具,收费

GoodSync 又一款同步工具,支持很多平台,不过有些功能需要收费。

reference


2019-10-10 sync , tools , linux , rsync

lsb init scripts

I found someone submit a pull-request to redis, which modify the init.d script. The modification make me curious about the init script. So this is the research result.

LSB stand for Linux Standard Base.

LSB-compliant init scripts need to:

  • provide, at least, the following actions: start, stop, restart, force-reload, and status.
  • return proper exit status codes
  • document runtime dependencies
  • [optionally] Log messages using the Init.d functions: log_success_msg, log_failure_msg and log_warning_msg

    #!/bin/sh ### BEGIN INIT INFO # Provides: scriptname # Required-Start: $all # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start daemon at boot time # Description: Enable service provided by daemon. ### END INIT INFO

解释:

  • Provides 可识别名字
  • Required-Start 启动此程序前要先启动那个项目
  • Required-Stop 在哪一个项目前停止,可留白
  • Default-Start 在哪些 run level 下启动程序 ,比如 2 3 4 5
  • Default-Stop 在哪些 run level 下停止此程序,一般 0 1 6

几个虚设项目,以 $ 开头

  • $local_fs 本地文件系统被挂载,用到 /var 目录的启动项都需要依赖此
  • $network 网络被启用
  • $named 名称功能被启用
  • $remote_fs 所有文件系统被挂载,包含 /usr
  • $syslog 系统记录功能启用
  • $time 系统时间被设定
  • $all 所有项目

一般的 daemon 应该依赖 $remote_fs$syslog ,核心模块驱动程序等,需要依赖 $local_fs

Edit

/etc/init.d 目录下有一个 skeleton 文件,可以以此作为文件的基础来进行编辑。

Actions

一个脚本需要提供 start, stop, restart, force-reload, status 这几个动作。

reference


2019-10-09 lsb , init , debian , ubuntu , linux , startup , script

支持对象存储的开源存储系统

最近整理文档,想起来自己的腾讯云,和 Google 云,好几十 G 的对象存储都空着,虽然腾讯云填了一部分同步的书籍,但是还是没有好好利用起来,然后就突然想起来之前看到过有人自己写了一份网盘同步程序,将对象存储作为同步工具来使用,这么一想确实可以尝试一下,毕竟现在 Dropbox 容量渐渐不够用了,如果能作为一份扩充也倒是不错的选择。所以这里就整理一下目前可用的一些方案,然后再做一下决择。

Cloudreve

这是一款 PHP 所写的云盘系统,支持多家对象存储,设计采用 Material Design ,看起来也不错。

lsky-pro

又一款用 PHP 所写图片管理系统。

OneList

基于 Python 的 OneDrive 网盘目录列表

oneindex

又一款用来展示 One Drive 列表的项目,PHP

PyOne

基于 Python 的 onedrive 文件本地化浏览系统,使用 MongoDB 缓存文件

minio

用 Go 实现了一套对象存储的服务端,兼容 AWS S3。

Piwigo

一款在线相册

在调查的过程中,还发现了日本的一个云存储服务,TeraCLOUD,提供 10G 空间,还支持 WebDAV ,果断注册一个。如果你也想注册可以注册完之后,用我的 CODENDMSQ

支持 WebDAV ,那么我就可以直接在我的 nemo 文件管理器 中 connect 到这个服务,在 File -> Connect to Server 中选择 Secure WebDAV(HTTPS),然后输入 TeraCLOUD 提供的 WebDAV 地址,以及用户名和密码来登录该服务,既不用多安装一个客户端,也可以非常方便的映射到本地文件管理器中。简单的测试了一下,发现上传速度,在我这里竟然达到了惊人的 800 kB/s

tera cloud speed

其他桌面版,或者移动客户端,只要支持 WebDAV 协议,那么都可以非常方便的使用该服务。官方也提供了一系列的选择方案


2019-09-27 object-storage , cloud-drive , open-source

电子书

最近文章

  • 快充协议笔记 中文里面的快充,其实对应着很多个英文单次,Quick Charge, fast charge, dash charge, USB PD(USB Power Delivery), Dual charge, 这些许许多多的名词,在中文的语境中都被叫做快充其实是不太准确的。虽然都叫快充,但是其实各个设备厂商都有各自自己的实现,目前市场上比较常见的快充实现是 QC,PD。
  • Boox Note 2 使用感受及小技巧 作为 Kindle 的用户,很早就开始注意电子墨水屏,然而 Amazon 久久不推出大屏的电子墨水阅读器,这就使得阅读 PDF 变得困难,所以最开始的时候注意到了 Sony 出的两款电子墨水屏,但是无奈价格一直非常坚挺,所以在综合一番搜索之后,首先是 YouTube 上推荐了 Boox 这个品牌,再然后就是一番搜索,发现原来国内厂商一致在做着自己的努力,Boox,iReader,LikeBook 等等,台湾的厂商读墨今年也发布了 mooInk 阅读器,电子墨水屏渐渐进入了大众的视线,经过这么多年的发展,技术也有了进步。所以综合考虑,我终于入手了这款 Boox Note 2, 原来考虑的是 Note Pro,但是看在新发布 Note 2, 系统较新,性能也更好一些,所以还是买了新发布的 Note 2.
  • Joplin 至今为止用过的最好的 Evernote 代替品 Joplin 是一个开源的笔记应用,曾经在调查 Evernote 代替品 的时候简单的看到过,但是当时也只是观望的态度,因为当时发现 Joplin 的插件有些不完美,有些网页 HTML 格式无法保证。
  • 记一次修复安装 Magisk 模块后的 bootloop 昨天看到系统通知有 Android 10 的 OTA,就顺手把系统升级了,也知道可能有些 Magisk Module 不兼容,所以把所有的 Module 都先关闭了,升级的过程倒是非常顺利。所以也就没有多想就依次想试试 Magisk 模块能不能启用,尤其是 EdXposed。可是就是没有想到这个启用让手机停留在了 OnePlus 的开机 Logo 无限开机中。这个问题倒也不是很大,之前也就遇到过,只要刷入一个 uninstall 的包就可以了。所以就想要进入 recovery。
  • Java 类加载器 虚拟机把描述类的数据从 Class 文件加载到内存中,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是 Java 虚拟机的类加载机制。