3 分钟为英语学习神器 Anki 部署一个专属同步服务器

news2024/9/21 14:32:29

原文链接: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 版:

  • https://github.com/ankidroid/Anki-Android/releases

建议下载 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,即可获取我的卡片+模板。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/690773.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

将win上的文件传输到Ubuntu虚拟机

首先获取Ubuntu系统的ip地址&#xff0c;在Ubuntu的Terminal中输入ifconfig&#xff0c;可以看到Ubuntu的ip地址 可以看到我电脑的ip地址是10.0.2.15。更改虚拟机的网络连接 这里以VirtualBox为例&#xff0c;打开VirtualBox设置&#xff0c;选择网络&#xff0c;将连接方式改…

React.JS实战项目(三):图书购物网站

React.JS实战项目(三):图书购物网站 1、菜单 首页图书新书购物车2、首页 首页视频预览 首页预览 首页主要展示了友情链接、图书分类、好书推荐、新书广场等等信息。 首页部分代码展示 <Row><Col

SpringSecurity整合ssm

SpringSecurity 1. SpringSecurity 框架简介 Spring 是非常流行和成功的 Java 应用开发框架&#xff0c;Spring Security 正是 Spring 家族中的成员。Spring Security 基于 Spring 框架&#xff0c;提供了一套 Web 应用安全性的完整解决方 案。 正如你可能知道的关于安全方面…

nexus 配置pypi代理

在研发环境中由于网络限制&#xff0c;无法访问外网&#xff0c;但经常使用npm、maven、pip等工具&#xff0c;这种场景中使用nexus 做代理是一个比较好的解决办法。 在配置pypi代理时&#xff0c;和配置npm、maven代理有所不同&#xff0c;在配置远程地址时&#xff0c;需要将…

我的IDEA插件

文章目录 前言一、.ignore二、Adapter for Eclipse Code Formatter三、Convert YAML and Properties File四、EasyCode五、Free MyBatis Tool六、Maven Helper七、Rainbow Brackets 前言 目前使用比较顺手的插件&#xff0c;具体使用方法自行查阅 一、.ignore git 忽略文件&…

【算法与数据结构】344、LeetCode反转字符串

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;关于变量交换有两种办法&#xff0c;一种是最常见的引入一个临时变量方法&#xff0c;另一种是使用位运…

【Java面试题】Java基础——集合

文章目录 集合的形式List和Set的区别ArrayList和LinkedList的区别ArrayList和数组的区别ArrayList的扩容机制是什么&#xff1f;ArrayList有哪些特点List和Map的区别如何让map存储有序数据如何创建Map?常用的Map有哪些?如何在HashMap中插入一个数据遍历一个 List 有哪些不同的…

高清音频文件如何压缩?分享轻松压缩音频文件的方法!

如何进行音频压缩&#xff1f;在我们日常生活中&#xff0c;音频文件扮演着重要的角色&#xff0c;我们可以通过它们享受音乐、收听播客或处理语音录音等。然而&#xff0c;有时候这些音频文件的大小可能会成为问题&#xff0c;特别是当我们需要在有限的存储空间中存储更多的文…

深入浅出设计模式 - 原型模式

博主介绍&#xff1a; ✌博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家✌ Java知识图谱点击链接&#xff1a;体系化学习Java&#xff08;Java面试专题&#xff09; &#x1f495;&#x1f495; 感兴趣的同学可以收…

STM32模拟I2C获取TCS34725光学颜色传感器数据

STM32模拟I2C获取TCS34725光学颜色传感器数据 TCS34725是RGB三色颜色传感器&#xff0c;和TCS34727都属于TCS3472系列&#xff0c;在电气特性上略有差别&#xff0c;TCS34727相比TCS34725在I2C总线的访问电平上可以更低&#xff0c;而在I2C软件访问地址方面则一致。 TCS3472内…

leetcode:1431. 拥有最多糖果的孩子(python3解法)

难度&#xff1a;简单 给你一个数组 candies 和一个整数 extraCandies &#xff0c;其中 candies[i] 代表第 i 个孩子拥有的糖果数目。 对每一个孩子&#xff0c;检查是否存在一种方案&#xff0c;将额外的 extraCandies 个糖果分配给孩子们之后&#xff0c;此孩子有 最多 的糖…

Spring Boot中的@RequestMapping注解,如何使用

Spring Boot中的RequestMapping注解 介绍 Spring Boot是一个流行的Java框架&#xff0c;它提供了许多方便的注解和工具&#xff0c;使得Web应用程序的开发变得更加容易。其中&#xff0c;RequestMapping注解是Spring Boot中最常用的注解之一&#xff0c;它可以帮助开发者定义…

django旅游推荐系统-计算机毕设 附源码82884

django旅游推荐系统 摘 要 随着社会的快速发展和人们生活水平的不断提高&#xff0c;旅游已逐渐成为人们生活的重要组成部分&#xff0c;用户能够获取旅游信息的渠道也随信息技术的广泛应用而增加。大量未经过滤的信息在展示给用户的同时&#xff0c;也淹没了用户真正感兴趣的信…

10个图像处理的Python库

在这篇文章中&#xff0c;我们将整理计算机视觉项目中常用的Python库&#xff0c;如果你想进入计算机视觉领域&#xff0c;可以先了解下本文介绍的库&#xff0c;这会对你的工作很有帮助。 1、PIL/Pillow Pillow是一个通用且用户友好的Python库&#xff0c;提供了丰富的函数集…

【MOOC 测验】第5章 链路层

1、局域网的协议结构一般不包括&#xff08; &#xff09; A. 数据链路层B. 网络层C. 物理层D. 介质访问控制层 逻辑链路控制子层、介质访问控制子层、物理层 2、下列关于二维奇偶校验的说法&#xff0c;正确的是&#xff08; &#xff09; A. 可以检测和纠正双比特差错B…

OV Image Sensor PLL设置

本文讨论OV的Image Sensor PLL的配置。 1.PLL的组成和功能 如图为OS08A10的框图&#xff0c;由图可知&#xff0c;Image Sensor其实是一个模数混合的电路&#xff0c;PLL提供了诸如ADC,gain control,MIPI,I2C等电路所用的时钟。 既然 Image Sensor的PLL是Image Senor非常重要…

详解Vue组件系统

Vue渲染的两大基础方式 new 一个Vue的实例 这个我们一般会使用在挂载根节点这一初始化操作上&#xff1a; new Vue({el: #app }) 复制 注册组件并使用 通过Vue.component&#xff08;&#xff09;去注册一个组件&#xff0c;你就可以全局地使用它了&#xff0c;具体体现在…

什么是信号槽机制,如何实现,有什么用?(Qt面试题)

1. 什么是信号槽机制&#xff1f; 信号槽机制&#xff08;Signal-Slot mechanism&#xff09;是一种在软件开发中常用的设计模式&#xff0c;用于实现对象间的通信和事件处理。该机制最初由Qt框架引入并广泛应用&#xff0c;后来也被其他编程框架和库所采用。 信号槽机制通过定…

这样做,轻松拿捏阻焊桥!

PCB表面的一层漆&#xff0c;称为阻焊油墨&#xff0c;也就是PCB线路板阻焊油墨。阻焊油墨是PCB线路板中非常常见、也是主要使用的油墨&#xff0c;一般90%都是绿色&#xff0c;但也有杂色油墨&#xff1a;红色、蓝色、黑色、白色、黄色等。 阻焊油墨的作用就是绝缘&#xff0…

postman持续集成-Jenkins手动构建

Jenkins启动 在jenkins.war文件所在的目录输入cmd打开终端输入: java -jar jenkins.war启动服务,启动后终端的窗口不要关闭 在浏览器地址栏输入:localhost:8080 准备工作 打开已完成并测试无误的postman项目脚本,再次执行测试 导出测试用例集和测试环境两个文件,注意全部…