原文链接:https://icloudnative.io/posts/anki-sync-server/

Anki 介绍

Anki 是一个辅助记忆软件,其本质是一个卡片排序工具--即依据使用者对卡片上的自定义内容进行主动测试、自我评判后,其内部算法根据评判结果更改每张卡片下次测试时间的排序工具。

所谓的卡片,专业说法叫 Flash Card(抽认卡或闪卡),是一小块纸片,分为正反两面,将问题和提示写在一面,将答案写在另一面。使用方法就是先看正面的问题与提示,在脑中回想答案,然后翻出反面进行对照验证。

闪卡的核心制作原则就是:一个知识点一张卡。因此非常适合用来学习英文,也可以用来记忆历史事件时间、公式等等。给大家看下我制作的闪卡:

每张卡片只有一个英文单词,与之配套的是该单词的音标、发音、图片、英文解释、例句。所有的版块都是英文,绝对不要出现中文! 卡片的核心是图片和例句,通过图片可以猜到这个单词大概是什么意思,通过例句可以验证自己对单词意思的猜测是否正确,如果还不放心,可以看下英文解释,这一套流程下来绝对可以正确理解单词的意思,完全不需要中文的干涉,这才是学习英文单词最完美的方式

即便如此,大家在熟悉单词的过程中可能还会有一个误区,比如上面这个单词,你在学习的过程中可能会忍不住去想这个单词在中文里究竟是什么意思,甚至可能会在心里默念它的中文意思,即使你看了图片和英文解释,你心里可能还会忍不住去想:哦,这是转瞬即逝的意思。建议大家最好不要这么做,要想做到这一点,记住一句名言:只可意会,不可言传。你去看这张图片,然后用心去体会:哦,大概就是这么一种感觉,对对对。你能 get 到这个单词所表达的那种感觉就行了,不要再去思考如何用中文来描述它,那样反而吃力不讨好。


下面言归正传,相信有很多小伙伴和我一样在使用 Anki 来学习英文单词或者其他的知识,但是 Anki 的同步服务器在国外,还是一个个人项目,带宽很小,同步速度很慢,如果我们想在多个客户端之间同步学习进度和新增的知识点,那将非常痛苦。

为了解决这个问题,我们需要部署一个自定义的同步服务器,然后让客户端去使用这个同步服务器。

Anki 同步服务器部署

自从 2023 年 2 月份,Anki 发布了 PC 端 2.1.57 版本以后,Anki 的 PC 端,安卓端,iOS 端用户都可以自定义同步服务器了,并且不再需要安装插件。从此 Anki 小伙伴再也不用担心 Anki 同步的问题了,困扰 Anki 用户多年的同步问题终于得到彻底解决。

自 PC 端 2.1.57 版本以后,Anki 官方退出了镶嵌在 Anki 客户端的同步服务端和通过 Python 安装的同步服务端。

但是我并不想用官方的这个破玩意,人生苦短,我不用 Python

我选择用社区的高大上同步服务端,目前只有 anki-sync-server-rs 这个项目支持最新的 Anki 版本,其他的同步服务器项目基本上都失效了。这个项目是用 Rust 写的,追踪 Anki 官方 同步服务端的进度,它们都是基于sqlite c 作为数据存储后端。最重要的是:它有 Docker 镜像!

有了镜像,部署起来就简单了,不就是 Docker 一把梭嘛!

不懂 Docker 也没关系,不就是 Sealos 一把梭嘛!楼下的老奶奶都会用 Sealos 一把梭

你把我下面的步骤教给你家楼下的老奶奶,如果她不会你来找我,我现场给你表演大便活人

首先在浏览器地址栏输入网址 https://cloud.sealos.io/ 进入 Sealos 桌面。然后打开「应用管理」:

点击「新建应用」:

依次输入应用名和镜像名,容器暴露端口是 27701,并开启外网访问:

继续向下,展开「高级配置」,点击「编辑环境变量」:

将以下内容粘贴到环境变量输入框中:

ANKISYNCD_USERNAME=<USERNAME>
ANKISYNCD_PASSWORD=<PASSWD>

请将 <USERNAME> 替换为你自己的用户名,将 <PASSWD> 替换为你自己的密码。

点击「新增存储卷」:

挂载路径填入 /app,然后点击确认:

最后点击右上角的部署应用即可。

部署完成后点击「详情」进入应用详情界面。

这里可以看到实例的运行状态,一定要等到状态是 running 才算是部署成功。如果一段时间以后状态还不是 running,可以点击「详情」查看故障原因:

部署成功后,可以看到应用的运行情况,包括 CPU 占用、内存占用等。点击外网地址即可通过外网域名直接打开同步服务器的 Web 界面。

如果出现以下的界面,则表示部署成功:

查看日志的方法也很简单,直接点击实例右侧的「三个点」,然后点击「日志」即可查看日志:

客户端设置

桌面端

桌面客户端(macOS/Windows/Linux)配置方法如下:

  1. 先打开「首选项」

  2. 点击「网络」,往下看,可以看到标有 self-hosted sync server(自定义同步服务器) 的方框,在里面填写您的服务端的地址:

  3. 重启 Anki,然后点击「同步」:

  4. 这时候会弹出一个输入框让你输入用户名和密码,你需要将你之前设置的用户名和密码输入进去:

  5. 点击确认后,就会开始同步了。

安卓端

安卓端也是直接配置即可,我的 AnkiDroid 版本是 2.15.6。你可以通过「设置 -> 高级设置 -> 自定义同步服务器」找到配置页面。

再填写用户名和密码:

设置 -> 常用设置 -> AnkiWeb账户

这样就算配置完成了,所有的牌组都同步过来了。

官方的版本实在是太老了,如果你想使用更激进的社区版本,可以到这个页面下载最新的 Beta 版:

建议下载 arm64-v8a 版本。

安装完成后,可以通过「设置 -> 同步 -> 自定义同步服务器」找到配置页面:

再填写用户名和密码:

设置 -> 同步 -> AnkiWeb账户

iOS 端

AnkiMobile 也已经支持和自建的同步服务器同步了。至少对于版本 Ankimobile 2.0.90(20090.2) 来说,似乎是可行的,这是一位 iOS 系统用户在 Anki 论坛报告的

如果设置完成后发现不能同步可以参考下面的内容再试一次:

If you're using AnkiMobile and are unable to connect to a server on your local network, please go into the iOS settings, locate Anki near the bottom, and toggle "Allow Anki to access local network" off and then on again.

上面的内容摘自 ANki tutorial

题外话

大家如果对我的卡片模板比较感兴趣,可以扫码关注公众号:

后台聊天框发送暗号 anki,即可获取我的卡片+模板。

3 分钟为英语学习神器 Anki 部署一个专属同步服务器的更多相关文章

  1. 60分钟Python快速学习(给发哥一个交代)

    60分钟Python快速学习 之前和同事谈到Python,每次下班后跑步都是在听他说,例如Python属于“胶水语言啦”,属于“解释型语言啦!”,是“面向对象的语言啦!”,另外没有数据类型,逻辑全靠空 ...

  2. 60分钟Python快速学习(转)

    60分钟Python快速学习(给发哥一个交代) 阅读目录 第一步:开发环境搭建: 第一个Python功能:初识Python 02.Python中定义变量不需要数据类型 03.在Pythod中定义方法 ...

  3. 英语学习[ZZ]

    本文作者三年间从四级勉强及格到高级口译笔试210,口试232.找工作面试时给其口试的老外考官听了一分钟就说你的英语不用考了.虽不敢说方法一定是最好的,但从现在开始随便谁不要再去找学习资料,每天花两个钟 ...

  4. 雅思创始人Keith Taylor谈英语学习

    雅思创始人Keith Taylor谈英语学习 “要学的是信息,而不是语言” 我们要学习一个国家的语言就得知道这个国家的方方面面.要学习英语就得了解英美国家的社会.经济.人文.历史等各方面的信息. 大家 ...

  5. 个人作业二——英语学习APP 案例分析

    英语学习APP的案例分析 我们生活中很多时候要和软件打交道,大家上课开小差时候玩的手机游戏,买火车票的网站,互相联系用的微信.QQ,等等都是软件,都很值得分析.你为何成为它们的用户?它们的团队做对了什 ...

  6. 作业2——英语学习APP的案例分析

    英语学习APP的案例分析 很多同学有误解,软件工程课是否就是理论课?或者是几个牛人拼命写代码,其他人打酱油的课?要不然就是学习一个程序语言,搞一个职业培训的课?都不对,软件工程有理论,有实践,更重要的 ...

  7. 团队作业5——英语学习/词典App行业Top5

    来自权威研究机构易观智库的最新数据表明,国内几家主流词典类App市场的份额占比差异化分布进一步加剧. 对于156万安卓移动端活跃数字消费者的移动互联网行为监测结果显示,截至2014年8月底,有道词典A ...

  8. 英语学习/词典App分析-团队作业(五)

    英语学习/词典APP排行五排名: 1.网易有道词典(单词查询翻译类软件). 2.百词斩(单词记忆类软件). 3.沪江开心词场. 4.金山词霸. 5.流利说英语(英语口语APP). 个软件的分析: 1. ...

  9. 使用 Sealos 在 3 分钟内快速部署一个生产级别的 Kubernetes 高可用集群

    本文首发于:微信公众号「运维之美」,公众号 ID:Hi-Linux. 「运维之美」是一个有情怀.有态度,专注于 Linux 运维相关技术文章分享的公众号.公众号致力于为广大运维工作者分享各类技术文章和 ...

  10. Linux命令学习神器!命令看不懂直接给你解释!

    大家都知道,Linux 系统有非常多的命令,而且每个命令又有非常多的用法,想要全部记住所有命令的所有用法,恐怕是一件不可能完成的任务. 一般情况下,我们学习一个命令时,要么直接百度去搜索它的用法,要么 ...

随机推荐

  1. [Java SE]Unicode解码

    文由 将ASCII等其他非Unicode字符与Unicode混合的"脏的.不规范的"编码文本转为正常文本. 源码 unicodetoString(String unicodeTex ...

  2. CentOS 7 更改内网 IP

    打开网络配置文件 vim /etc/sysconfig/network-scripts/ifcfg-em2 修改配置文件如下 TYPE=Ethernet PROXY_METHOD=none BROWS ...

  3. 【LeetCode】3.19 对称二叉树

    101. 对称二叉树 ​ 给你一个二叉树的根节点 root , 检查它是否轴对称. 示例 1: 输入:root = [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root = [1 ...

  4. 23.04.06_为博客设置https

    title: 为博客设置https协议 categories: - 博客优化 date: 2023-04-06 url_dir: Blog_optimization url_name: setting ...

  5. PyG 图神经网络依赖环境安装(Anaconda)

    1.默认用户在Anaconda的虚拟环境中已安装Pytorch 2.打开anaconda prompt命令窗, activate "你的虚拟环境名称" 3.在激活后的虚拟环境下输入 ...

  6. AspectCore和MSDI 实现Name注册以及解析对象

    AspectCore 在注册服务这块比较简单,默认是无法根据Name去注册和解析对象,这边做一下这块的扩展 大致原理是根据自定义Name去生成对应的动态类型,然后使用委托或者对象的方式,进行注册 ti ...

  7. 【FAQ】关于JavaScript版本的华为地图服务Map的点击事件与Marker的点击事件存在冲突的解决方案

    一. 问题描述 创建地图对象,并添加marker标记,对map和marker均添加了点击事件: <body> <script> function initMap() { // ...

  8. 笔记:C++学习之旅---顺序容器

    笔记:C++学习之旅---顺序容器 STL = Standard Template Library   标准库模版 容器可以使用范围for输出或者迭代器进行输出 一个容器就是一些特定类型对象的集合.顺 ...

  9. async/await中的promise返回错误reject

    https://blog.csdn.net/qq_42543244/article/details/123423894 最近在学 node ,之前对 async/await 和 promise 略懂, ...

  10. 2023-03-17:使用Go语言和FFmpeg库实现音频重采样解码,并将其保存为PCM格式的文件。

    2023-03-17:使用Go语言和FFmpeg库实现音频重采样解码,并将其保存为PCM格式的文件. 答案2023-03-17: 在音视频处理领域,常常需要对音频进行重采样和解码,以便于后续的处理和分 ...