Normal view

There are new articles available, click to refresh the page.
Before yesterdayMain stream

各国明信片邮资

By: fivestone
18 January 2025 at 15:12

整理了一些国家,邮寄明信片,需要的当地邮资,和换算成美元的金额(2025.1.18 当日汇率)。比较一下,哪个国家的明信片邮资最贵/最便宜?

  • 大部分数据来自 postcrossing 论坛,和一些本人的经历。非洲和南美的数据并不完整,懒得完美搜集了;
  • 大多数国家都根据明信片的距离,分出不同的价格档位。这里选取的都是最远、最贵的距离,通常是寄往地球的对角线;
  • 一些国家还会区分航空明信片、和更慢的陆运/海运明信片,前者的价格更贵一点。为了统一标准,这里选取的都是略贵一点的航空明信片价格。

比较各国的明信片价格——

  • 全球最贵的是…阿根廷,10.38 美元!在全球明信片爱好者群里,都是著名的离谱。
  • 第二贵的是丹麦 6.90,以及同样用丹麦克朗的格陵兰岛 4.70,比后面的第三梯队(瑞典 3.94、奥兰 3.81、以色列 3.76……),贵出一大截。
  • 最便宜的是…印度,15 卢比 = 0.17 美元,而且印度还有更便宜的非航空价格,只要 12 卢比 = 0.14 美元 = 人民币 1 块钱!当时在印度都惊呆了,问了了很多遍,才确定自己没弄错。
  • 最便宜的国家都集中在南亚到东亚一带,韩国和台湾都便宜得让人吃惊。除了中东土豪外,亚洲整体上要比其它地区,便宜一个价位。
Countries Currency Price USD
Asia
China CNY 5 0.68
Hong Kong HKD 5.5 0.71
Macau MOP 6 0.75
Japan JPY 100 0.64
Korea KRW 430 0.29
Taiwan TWD 12 0.36
Mongolia MNT 3000 0.87
Vietnam VND 34400 1.36
Cambodia KHR 3800 0.94
Thailand THB 50 1.44
Laos LAK 40000 1.83
Myanmar MMK 1000 0.48
Indonesia IDR 15000 0.92
Malaysia MYR 0.9 0.20
Singapore SGD 0.85 0.62
Philippines PHP 15 0.26
Nepal NPR 40 0.29
Bhutan BTN 35 0.41
India INR 15 0.17
Sri Lanka LKR 70 0.24
Bangladesh BDT 80 0.66
Maldives MVR 15 0.97
Kyrgyzstan KGS 67 0.77
Armenia AMD 400 1.00
Azerbaijan AZN 2 1.18
Iran IRR 117000 2.78
Israel ILS 13.7 3.76
United Arab Emirates AED 3 0.82
Bahrain BHD 0.61 1.62
Turkey TRY 58 1.63
Euro Zone
Åland Islands EUR 3.70 3.81
Austria EUR 2.10 2.16
Belgium EUR 3.00 3.09
Cyprus EUR 0.75 0.77
Estonia EUR 2.60 2.68
Finland EUR 2.75 2.83
France EUR 2.10 2.16
Germany EUR 1.25 1.29
Greece EUR 2.00 2.06
Ireland EUR 2.20 2.27
Italy EUR 3.20 3.30
Luxembourg EUR 2.40 2.47
Kosovo EUR 0.50 0.52
Malta EUR 1.50 1.55
Montenegro EUR 1.05 1.08
Netherlands EUR 1.90 1.96
Portugal EUR 1.30 1.34
Slovakia EUR 2.60 2.68
Slovenia EUR 3.26 3.36
Spain EUR 2.10 2.16
Europe Non-Euro
Albania ALL 100 1.05
Czechia CZK 50 2.04
Denmark DKK 50 6.90
Greenland DKK 34 4.70
Hungary HUF 1270 3.19
Iceland ISK 420 2.99
Norway NOK 39 3.43
Poland PLN 13 3.14
Russia RUB 120 1.17
Serbia RSD 136 1.20
Sweden SEK 44 3.94
Switzerland CHF 2.5 2.74
United Kingdom GBP 2.8 3.42
Ukraine USD 1 1.00
Africa
Egypt EGP 90 1.78
Benin XOF 1100 1.73
Kenya KES 180 1.39
South Africa ZAR 12.75 0.68
Madagascar MGA 8800 1.87
Oceania
Australia AUD 4.55 2.82
New Zealand NZD 3.6 2.02
America
United States USD 1.65 1.65
Canada CAD 3.65 2.54
Mexico MXN 15 0.73
Bahamas BSD 0.65 0.65
Cuba CUP 31.65 1.32
Colombia COP 10500 2.45
Brazil BRL 6.3 1.04
Argentina ARS 10800 10.38
Falkland Islands FKP 0.7 0.86

在 github 架设 hugo blog(纯浏览器操作)

By: fivestone
11 November 2024 at 21:12

我其实对 Hugo 不熟,不知道这算不算重新发明了一遍轮子。但我搜索「如何在 github 上,用 hugo 架设自己的 blog?」时,搜到的教程,都需要用户在自己的电脑上,安装运行各种 git 和 hugo 的相关命令,感觉对新手并不友好。所以,我试着写了一个流程,让新人完全只需要在网页浏览器上操作,就能快速生成自己的 blog 网站。

所有操作都在 Github 这个项目上进行:
https://github.com/fivestone/hugo-papermod-beginning

这个项目本质上,就是搭了一个空白的 hugo 网站,让用户 fork 到自己的账户下,设置一下就能直接使用。对功能和界面有什么额外要求的话,请自行学习 hugo 的进阶教程。——然后你们就不是需要用这个项目的新人啦~

  • 本项目基于 hugo 博客引擎,和流行的 PaperMod 主题
  • 在 github 上建立的 blog,在墙内是不能直接访问的,需注意

1. 创建 github 账号

首先,注册自己的 github 账号,过程略。注册过程中,你设置的账户名 username,通常就是最终的网站地址 username.github.io,当然以后也可以把自己的域名映射到上面。

2. 架设自己的 blog 项目

注意,这一步,有两种方法

  • 第一种方法:你建一个全新的项目,下载我提供的 .zip 文件,解压后,再手动上传到你的项目。和第二种相比,稍微繁琐一点。但还是希望大家,有条件的话,使用这种方法。
  • 第二种方法,把我的这个项目,fork 到你的项目。这种方法对新人更简便,完全不需要在本地操作文件,只用手机或 pad 就可以完成。但这种 fork 在一起的项目,在进行自动发布 blog 的操作时,是共享同一个操作额度的。如果 fork 的人数非常多,未来可能会被 Github 限制。——要达到这种规模,大概要几千人同时用吧……所以也不需要很在意。
2.1. 第一种方法

注册并登入账号后,新建自己的项目(Repository)。

项目的名称,决定了最终 blog 的网址。假设你的 github 用户名为 username

  • 如果把项目命名为 username.github.io ,则最终的网站地址为
    https://username.github.io/
  • 如果把项目设置成其它名字,如 new-name,则最终的网站地址为
    https://username.github.io/new-name

确认项目为 Public。其它设置都不需要更改,点击绿色按钮创建。

创建项目后,点击「上传已有的文件」

我的 github 项目,下载已经设置好的 hugo 文件包,在本地解压缩 .zip 文件。然后,把里面的所有文件,拖拽上传到你的项目里。

等到 80 多个文件都被上传后,别忘了点击页面底部的 Commit changes 提交。

2.2. 第二种方法

注册并登入账号后,进入项目:
https://github.com/fivestone/hugo-papermod-beginning
点击 Fork,将这个模板复制到你自己的账号下。

和第一种方法一样,这里需要设置你自己的项目名称,假设你的 github 用户名为 username

  • 如果把项目命名为 username.github.io ,则最终的网站地址为
    https://username.github.io/
  • 如果把项目设置成其它名字,如 new-name,则最终的网站地址为
    https://username.github.io/new-name

然后点击 Create fork 创建项目。


3. 配置自动发布 blog

创建新项目后,进入项目的 Settings – Pages 页面,把 Build and deployment – Source,改为 GitHub Actions。

把 Source 从 Deploy from a branch,改为 GitHub Actions 后,进入上方的 Actions 页面。

初次进入 Actions 页面后,会显示 Github 预设的各种配置方案,通过搜索框找到 hugo,然后点击 hugo 方案中的 Configure

系统会自动生成配置文件,不需要做任何改动,点击绿色的 Commit changes 提交。

此时自动发布的 action / workflow 就已经开始运行了,大约 1~2 分钟后,就可以在
https://username.github.io 看到 blog 最初的页面了。

以后,每次对项目里文章或配置文件的更改,都会触发这个 action / workflow,重新生成一遍网站。可以在 Actions 页面,查看 workflow 每次运行的情况。


4. 更改网站基本信息

在 Code 页面,点击编辑 config.yml 页面,把一些预设的网站信息,改成你自己的信息。

对新人来说,需要在 config.yml 文件里更改的,大概有以下几项:

baseURL: https://username.github.io/ # 改成你自己的网址
title: 网站名称
params:
  author: somebody # 作者的署名

  homeInfoParams:
    Title: 网站标题,只显示在首页上
    Content: >
      显示在首页标题下方的一些文字。</br>
      支持一些简单的 html 和 markdown。

更改后,点击绿色的 Commit Changes… 在弹出的页面中,再一次点击绿色的 Commit Changes,保存文件后 1~2 分钟,就可以在 blog 页面上,看到更改后的内容了。


5. 添加、管理文章

所有的 blog 文章,都在 content / posts 目录中。在 Code 页面,进入 content / posts 目录。点击右上角,创建新文件。

所有的文章,均为 .md 结尾的 markdown 文件。文件名对应着这篇文章的网址,譬如,post-20241111.md 文章链接,就是
https://username.github.io/posts/post-20241111/

在文件的开头,如图所示,写入用 — 隔开的,文章的标题和发布日期。

---
title: "新文章的标题"
date: "2024-11-11"
---
然后开始写正文,markdown 格式。

同样,点击绿色的 Commit changes… 保存提交。1~2 分钟后,就可以在 blog 页面上看到新文章了。

content / posts 目录里的所有文件,都可以随意地新增、删除、修改、重命名文件。对应着 blog 文章的增删改、和改变 url 链接。

文章内嵌的图片,建议放在 static 目录下,然后在文章中用 markdown 格式引用。譬如 static / aa.jpg 文件,相应地在 markdown 文件中插入的代码为:

![](https://username.github.io/aa.jpg)

有经验的用户,也可以使用其它更有效的组织方式。


6. 其它注意事项

  • 生成的 blog 对应的 rss 订阅地址为
https://username.github.io/index.xml
  • 如果是用第二种方法,直接 fork 的项目,以后在这个 blog 项目里,会一直看到,图片里这样的消息,提示要把你对项目的更改,反馈给原本的我的项目。——不用理会就是了。

简繁字库

By: fivestone
29 September 2024 at 18:52

偶然发现,思源字体的繁体字库文件,无法显示一些简体字。而思源的简体文件,似乎可以显示全部的繁体字?于是把常用的字体文件拆开,看看分别都能涵盖多少简繁汉字。

直接说结论:

  • 简体字的字体,如「思源简体」,包含了中国大陆 GB18030-2000 编码标准的全部汉字,是能够同时显示几乎所有的常用繁体字的,因为这个 GB18030 标准,也涵盖了所有的早期台湾 big5 编码的繁体字;
  • 反之,通常专门的「繁體 / 正體」字体,如「思源繁體」,很多简体字是不能显示的。因为相关的台湾汉字编码 CNS11643-1986(第 1 & 2 版面),只能覆盖 70% 的常用简体字。

首先,在最常用的几个字体中,

  • 微软雅黑 和 思源简体 基本一致
  • 思源繁体 和 思源香港 基本一致

两两之间的差别,只是少许生僻字、异体字、以及历史遗留的制作中文编码时的重复或疏忽。具体差别的内容,放在文末了。所以,这里主要对比「思源简体」和「思源繁体」,就可以了。

在思源字体 CJK 的说明文件里,写出了不同国家字体文件的字符数量,和需要支持的标准。可以看到,简中字体文件打包的字符,比繁中多了一万多个(这里的 Glyphs 不仅是中文,也包括西文、特殊符号、甚至一些 emoji)。

简中字体需要支持的标准,主要是

  • 大陆 2000 年颁布的《GB18030 标准简体中文字符集》,包含 27,533 个汉字。当然,是否能做到 100% 符合,思源的设计方也表示,编码标准比较复杂,不好说……
  • 2013 年颁布的《通用规范汉字表》,包含 8105 个汉字。其中有 199 个,不在 GB18030 的范围内。

繁体字体需要支持的标准,主要包括

  • 台湾 1986 年颁布的《CNS11643 通用汉字标准交换码》,包括 13051 个汉字,和早年的「big5 大五码」相同。最初只有 1 2 两个字面(Panel),后来逐渐扩展,现在 1~7 字面都已经被 ISO 纳入 Unicode 体系,但思源繁体里,只支持 1 2 字面。
  • HKSCS 香港增补字符集》,是香港从 1995 年开始,对台湾 big5 编码的补充,到 2016 年,收录汉字 5033 个。

从台湾的官网上,可以下载到目前最新的 CNS11643 – Unicode 之间的对应情况;大陆这边没有找到类似的官网资料,搜到的几个 GB18030 – Unicode 编码表,都是 PDF 格式(掀桌……)。但可以在 python 里把字符 encode,得到相应的编码,也可以变相确认,某个字符是否在某个编码里。

>>> print('劍'.encode('gb18030'))
b'\x84\xa6'
>>> print('劍'.encode('gb2312'))
报错
>>> print('劍'.encode('big5'))
b'\xbcC'
>>> print('劍'.encode('raw_unicode_escape'))
b'\\u528d'

实测结果,所有的 13053 个繁体 big5 汉字,也就是台湾最初规定的,最常用的繁体字,都包含在大陆的 GB18030 编码,也包含在思源简体的字体文件里。包含在思源繁体,而不在思源简体中的汉字,只有 1711 个(详见文末,——如果你觉得其中哪个字不够生僻,那么通常是历史遗留下来的编码重复、或者异体字。譬如,现在 Unicode 里,至少有 10 个各种形态的「龟」字了。

  • 简体「龟」 – U+9F9F、U+2EF2、U+2EF3
  • 繁体「龜」 – U+9F9C、U+2EF1、U+2FD4、U+F907、U+F908、U+FACE
  • 日文「亀」 – U+4E80
  • 还有 emoji 的 🐢 U+1F422 、埃及象形文的 𓆉 U+13189

相对的,包含在思源简体,而不在思源繁体中的汉字,有 11856 个之多。这其中,包括了非常多的常用简体字。以大陆最常用的 6763 个汉字(也就是 1980 年大陆发布的 GB2132 汉字编码集)为例。在这些汉字当中:

  • 包含在 1986 年台湾 big5 编码中的汉字:4383 个
  • 没有被 big5 收录,但是包含在「思源繁体」中的:482 个
  • 「思源繁体」中也不存在的:1898 个

具体字符清单见文末。可以看到,思源繁体字库中,不能显示的常用简体字,接近 30%,尤其是部首本身就有简繁体之分的,如:讠纟艹饣钅车马鱼鸟页……使用了这些简体字部首的字,有很大概率,在繁体字库里无法显示。

当然,这样的差异,不一定代表着台湾那边的汉字编码工作不力、或者对简体字的傲慢。无论是 GB18030 还是 CNS11643,都早已有了更新更全面的版本,在 CNS11643 2004 年的版本中,包含了 GB2312 的全部 6763 个汉字,而整个思源简体的三万多字符,也只有 500 多个不在其中。所以,还是一些神秘的历史差异,导致——

  • 简体字体支持大陆 2000 年的标准,而
  • 繁体字体只支持台湾 1986 年的标准

但目前我们在网上浏览,或者文字排版时,如果用统一的字体,且需要考虑简繁体的兼容性的话,还是使用满足 GB18030 的 “简体” 字库吧。


思源字体(黑体宋体)在 github 上的原始下载版本,分成了

  • Variable OTCs – 五个地区的合集(中国、台湾、香港、日本、韩国)
  • Language-specific Variable Fonts – 不同语言的合集
  • Region-specific Subset Variable Fonts – 适配不同地区的版本

本文之前分析的,都是 Region-specific 版本之间的区别。而更大一级的 Language-specific 的中文字体,无论是简体繁体,都收录了四万多个字符,大约是大陆和台湾编码标准的合集,甚至更多,推荐大家去使用这个。但 Github 的界面流程,对于非专业人士来说,还是过于复杂了。而 Google Fonts 上提供的下载版本,就只有 Region-specific 的版本。


附——

同时出现在 GB2312,和台湾 big5 编码中的汉字:4383 个

一丁七万丈三上下丌不与丐丑且丕世丘丙丞丫中丰串丸丹主乃久乇么之乍乎乏乒乓乖乘乙乜九乞也乩乳乾了予事二亍于云互亓五井些亟亡亢交亥亦亨享京亭亮亳人什仁仂仃仄仆仇仉今介仍仔仕他仗付仙仝仞仟仡代令以仨仰仲仳仵件价任份仿企伉伊伍伎伏伐休优伙伢伯估伴伶伸伺似伽佃但位低住佐佑体何佗佘余佚佛作佝佞佟你佣佤佧佩佬佯佰佳佴佶佻佼佾使侃侄侈侉例侍侏侑侔侗供依侮侯侵便促俄俅俊俎俏俐俑俗俘俚俜保俞俟信修俯俱俳俸俺俾倌倍倏倒倔倘候倚倜借倡倥倦倨倩倪倬倭值偃假偈偌偎偏偕做停健偶偷傀傅傍傣催傲傺傻像僖僚僦僧僬僭僮僳僵僻儆儇儋儒儡儿兀允元兄充兆先光克免兔兕党兜兢入全八公六兮共兵其具典兼冀冉再冒冕冗冠冢冤冥冬冰冱冶冷冼冽凄准凋凌凝几凡凰凳凵凶凸凹出函刀刁刃分切刈刊刎刑划刖列初判刨利刮到刳制刷券刺刻剁剃削剌前剔剖剜剞剡剩剪副割剽剿劁劂劈劓力功加劣助努劫劬劭劾勃勇勉勒勖勘募勤勰勺勾勿包匆匈匍匏匐匕化北匙匚匝匠匡匣匪匹匾匿十千卅升午卉半卑卒卓南博卜卞占卡卣卦卮卯印危即卵卷卸卿厂厄厘厚厝原厥去又叉及友反叔取受叛叟口古句另叨叩只叫召叭叮可台叱史右叵司叻叼吁吃各吆合吉吊同名后吏吐向吒君吝吞吟吠否吧吨吩含听吭吮吱吵吸吹吻吼吾呀呃呆呈告呔呢呤呦周呱呲味呵呶呷呸呻呼命咀咂咄咆咋和咎咐咒咕咖咚咦咧咨咩咪咫咬咭咯咱咳咸咻咽咿哀品哂哄哆哇哈哉哎哏哞哥哦哧哨哩哪哭哮哲哳哺哼哽哿唁唆唇唉唏唐唑唔唧唪唬售唯唰唱唳唷唼唾啁啃啄商啊啐啕啖啜啡啤啥啦啪啵啶啷啻啼啾喀喁喂喃善喇喈喉喊喋喏喑喔喘喙喜喝喟喧喱喳喵喻嗄嗅嗉嗌嗍嗑嗒嗓嗔嗖嗜嗝嗟嗡嗣嗤嗥嗦嗨嗯嗲嗷嗽嗾嘀嘁嘈嘉嘌嘎嘏嘛嘟嘧嘬嘲嘴嘶嘹嘻嘿噌噎噗噘噙噢噤器噩噪噫噬噱噶嚅嚆嚎嚏嚓嚷嚼囊囔囗囚四囝回囟因囡囤囫困囹固囿圃圄圈圉圊圜土圣在圩圪圬圭圮圯地圳圻圾址均坊坌坍坎坏坐坑坡坤坦坨坩坪坫坭坯坳坶坷坻坼垂垃型垌垓垛垠垢垣垤垮垸埂埃埋城埏埒埔埕域埠埤埭埴埸培基埽堀堂堆堇堋堍堙堞堠堡堤堪堰堵塌塍塑塔塘塞塥填塾墀墁境墅墉墓增墟墨墩墼壁壅壑壕壤士壬壹复夏夔夕外夙多夜夤夥大天太夫夭央夯失夷夸夼奄奇奈奉奎奏契奔奕套奘奚奠奢女奴奶奸她好妁如妃妄妊妍妒妓妖妗妙妞妣妤妥妨妮妯妲妹妻妾姆姊始姐姑姒姓委姘姚姜姝姣姥姨姬姻姿威娃娉娌娑娓娘娜娟娠娣娥娩娶娼婀婆婉婊婕婚婢婧婪婷婺婿媒媚媛媲媳媵媸媾嫁嫂嫉嫌嫖嫘嫜嫠嫡嫣嫦嫩嫫嬉嬖嬗嬲嬴孀子孑孓孔孕字存孚孛孜孝孟孢季孤孥孩孬孰孱孳孵孺孽宁它宄宅宇守安宋完宏宓宕宗官宙定宛宜客宣室宥宦宰害宴宵家宸容宿寂寄寅密寇富寐寒寓寞察寡寤寥寨寮寰寸寺封射尉尊小少尕尖尚尢尤尥尬就尸尹尺尻尼尾尿局屁居屈屋屎屏屐屑展屙屠屣履屮屯山屹屺岈岌岍岐岑岔岢岣岩岫岬岭岱岳岵岷岸峋峒峙峨峪峭峰峻崆崇崎崔崖崛崞崤崦崧崩崮崴崽嵇嵊嵋嵌嵩嵫嵬嵯嶂嶙嶝嶷巍川州巡巢工左巧巨巫差己已巳巴巷巽巾市布帆希帑帔帕帖帘帙帚帛帝席帷常帽幄幅幌幔幕幛幡幢干平年并幸幻幼幽庀庄庇床庋序底庖店庚府庠庥度座庭庳庵庶康庸庹庾廉廊廑廒廓廖廛廨延廷建廾廿弁异弄弈弊弋式弓引弗弘弛弟弦弧弩弭弱弼彀彖彗彘彝形彤彩彪彬彭彰影彳彷役彼往征徂待徇很徉徊律後徐徒得徘徙徜御徨循徭微徵德徼徽心必忉忌忍忏忐忑忒忖志忘忙忝忠忡忤忪快忭忮忱念忸忻忽忿怀怊怍怎怏怒怔怕怖怙怛怜思怠怡急怦性怨怩怪怫怯怵恁恂恃恍恐恕恙恚恝恢恣恤恧恨恩恪恫恬恭息恰恿悃悄悉悌悍悒悔悖悚悛悝悟悠患您悱悲悴悸悻悼情惆惊惋惑惕惘惚惜惝惟惠惦惰想惴惶惹惺愀愁愆愈愉愍愎意愕愚感愣愧愫愿慈慊慌慎慕慝慢慧慨慰慵慷憋憎憔憝憧憨憩憬憾懂懈懊懋懦懵懿戈戊戌戍戎成我戒戕或戚戛戟戡戢戤戥截戮戳戴戽戾房所扁扃扇扈扉手才扎扑扒打扔托扛扣扦扭扮扯扰扳扶批扼找承技抄抉把抑抒抓投抖抗折抨披抬抱抵抹抻押抽抿拂拄拆拇拈拉拊拌拍拎拐拒拓拔拖拗拘拙拚招拜括拭拮拯拱拳拴拶拷拼拽拾拿持挂指挈按挎挑挖挨挪挫振挲挹挺挽捂捃捅捆捉捋捌捍捎捏捐捕捧捩捭据捱捶捷捺捻掀掂掇授掉掊掌掎掏掐排掖掘掠探掣接控推掩措掬掭掮掰掾揄揆揉揍揎描提插揖揠握揣揩揪揭揲援揶搋搌搏搐搓搔搛搜搞搠搡搦搪搬搭搴搽搿摁摒摔摘摞摧摩摭摸摹摺撂撅撇撒撕撖撙撞撤撩撬播撮撰撼擂擅操擎擐擒擗擘擢擤擦攀攉攘攥攫攮支收攸改攻放政故效敉敏救敕敖教敝敞敢散敦敬敲整敷文斌斐斑斗料斛斜斟斡斤斥斧斫斯新方於施旁旃旄旅旆旋旌旎族旒旖旗既日旦旨早旬旭旮旯旰旱旺昀昂昃昆昊昌明昏易昔昕昝星映春昧昨昭是昱昴昵昶晁晃晌晏晒晚晟晡晤晦晨普景晰晴晶晷智晾暄暇暌暑暖暗暝暨暮暴暹暾曙曛曜曝曦曩曰曲曳更曷曹曼曾替最月有朊朋服朐朔朕朗望朝期朦木未末本札朱朴朵机朽杆杈杉杌李杏材村杓杖杜杞束杠杪杭杯杰杲杳杵杷杼松板极构枇枉枋析枕林枘枚果枝枯枰枳枵架枷枸柁柃柄柏某柑柒染柔柘柙柚柜柝柞柢查柩柬柯柰柱柳柴柿栓栖栗栝校栩株栲栳核根格栽桀桁桂桃桄桅框案桉桌桎桐桑桓桔桫桴桶桷梁梃梅梆梏梓梗梢梧梨梭梯械梳梵棉棋棍棒棕棘棚棠棣森棰棱棵棹棺棼椅椋植椎椐椒椰椴椹椽椿楂楔楗楚楝楞楠楣楦楫楮楱楷楸楹概榆榍榔榕榛榜榧榨榫榭榱榴榷榻槁槊槌槎槐槔槭槲槽槿樊樗樘樟模樨樵樽樾橄橇橐橘橙橛橡檀檄檎檐檑檗檠檬欠次欣欲欷欹欺款歃歆歇歉歌歙止正此步武歧歪歹死殂殃殄殆殉殊殍殖殛殪殳段殷殿毅毋母每毒毓比毖毗毛毫毯毳毹毽氅氆氍氏氐民氓气氕氖氘氙氚氛氟氡氤氦氧氨氪氮氯氰水永汀汁求汆汊汐汔汕汗汛汜汝汞江池污汨汩汪汰汲汴汶汽汾沁沂沃沅沆沈沉沌沏沐沓沔沙沛沫沭沮沱河沸油治沼沽沾沿泄泅泉泊泌泐泓泔法泖泗泛泞泠泡波泣泥注泫泮泯泰泱泳泵洁洄洇洋洌洎洒洗洙洚洛洞津洧洪洫洮洱洲洳洵洹活洼洽派流浙浚浞浠浣浦浩浪浮浯浴海浸浼涂涅消涉涌涎涑涓涔涕涪涫涮涯液涵涸涿淀淄淅淆淇淋淌淑淖淘淙淝淞淠淡淤淦淫淬淮深淳混淹添淼清渚渝渠渡渣渤渥渫渭港渲渴游渺湃湄湍湎湓湔湖湘湛湟湫湮溉溏源溘溜溟溢溥溧溪溯溱溲溴溶溷溺溽滁滂滇滋滏滑滓滔滕滴滹漂漆漉漏漓演漕漠漩漪漫漭漯漱漳漶漾潘潞潢潦潭潮潲潸潺潼澄澈澉澌澍澎澡澧澳澶澹激濂濉濞濠濡濮濯瀑瀚瀛瀣瀵瀹灌灞火灰灶灸灼炅炊炎炒炔炕炖炙炫炬炭炮炯炱炳炷炸烈烊烘烙烤烯烷烹烽焉焊焐焓焙焚焦焯焰焱然煌煎煜煞煤煦照煨煮煲煸煽熄熊熏熔熙熟熠熨熬熳熵熹燃燎燔燕燠燥燧燮燹爆爝爨爪爬爰爵父爸爹爻爽爿片版牌牒牖牙牛牝牟牡牢牧物牮牯牲特牾牿犀犁犄犋犍犒犬犯犰犴狁狂狃狄狎狐狒狗狙狠狡狨狩狳狴狷狸狺狻狼猁猊猓猖猗猛猜猝猞猢猥猩猱猴猷猾猿獍獐獒獗獠獬獯獾玄率玉王玎玖玟玢玩玫玲玳玷玻珀珂珈珊珍珙珞珠珥珧珩班球琅理琉琊琚琛琢琥琦琨琪琬琮琰琳琴琵琶瑁瑕瑗瑙瑚瑛瑜瑞瑟瑭瑰瑾璀璁璃璇璋璐璜璞璧璨璩璺瓜瓞瓠瓢瓣瓤瓦瓮瓴瓶瓷瓿甄甍甏甑甓甘甚甜生甥用甩甫甬甭甯田由甲申男甸町甾畀畈畋界畎畏畔留畚畛畜略畦番畸畹畿疆疋疏疑疔疙疚疝疣疤疥疫疰疲疳疵疸疹疼疽疾痂痄病症痊痍痒痔痕痘痛痞痢痣痤痦痧痰痱痴痹痼痿瘀瘁瘃瘊瘌瘐瘕瘙瘛瘟瘠瘢瘤瘥瘦瘩瘭瘰瘳瘴瘵瘸瘼癃癌癖癜癸登白百皂的皆皇皈皋皎皓皖皙皤皮皴皿盂盅盆盈益盍盎盒盔盛盟盥目盯盱盲直相盹盼盾省眄眇眈眉看眙眚真眠眢眨眩眭眯眵眶眷眸眺眼睇睚睛睡睢督睥睦睨睫睬睹睽睾睿瞀瞄瞅瞌瞍瞎瞑瞟瞠瞢瞥瞧瞪瞬瞰瞳瞵瞻瞽瞿矍矗矛矜矢矣知矧矩矬短矮石矸矽砂砉砌砍砑砒研砝砟砣砥砦砧砩砬砭砰破砷砸硅硌硎硐硒硝硪硫硬硭确硼碇碉碌碎碑碓碗碘碚碟碡碣碥碧碰碲碳碴碾磁磅磉磊磋磐磔磕磨磬磲磴磷磺礁礅礓礞礤示社祀祁祆祈祉祓祖祗祚祛祜祝神祟祠祥祧票祭祺禁禊福禚禧禳禹禺离禽禾秀私秉秋种科秒秕秘租秣秤秦秧秩秫秭秸移稀稂稃程稍稔稗稚稞稠稷稹稻稼稽稿穆穗穰穴究穸穹空穿窀突窄窆窈窒窕窖窗窘窟窠窨窬窳窿立站竟章竣童竦竭端竹竺竽竿笄笆笈笊笏笑笙笛笞笠笤笥符笨笪笫第笮笱笳笸筅筇等筋筌筏筐筑筒答策筘筠筮筱筲筵筷箅箍箐箔箕算箜箝管箬箭箱箴箸篁篆篇篌篙篚篝篡篥篦篪篱篷篾簇簋簌簏簟簦簧簪簸簿籀籍米籽粉粑粒粕粗粘粞粟粢粥粱粲粳粹粼粽精糅糈糊糌糕糖糗糙糜糟糠糨糯糸系紊素索紫累絮綦綮縻繁繇纂纛缶缸缺罄罅罐网罔罕罘罟罡罨罩罪置署罹罾羊羌美羔羚羝羞羡群羧羯羰羲羸羹羼羽羿翁翅翊翌翎翔翕翟翠翡翥翦翩翮翰翱翳翻翼耀老考耄者耆耋而耍耐耒耔耕耖耗耘耙耜耦耨耩耪耳耵耶耷耽耿聃聆聊聒聘聚聱聿肄肆肇肉肋肌肓肖肘肚肛肜肝股肢肥肩肪肫肭肮肯肱育肴肺胂胃胄背胍胎胖胗胙胚胛胜胝胞胡胤胥胭胯胰胱胲胳胴胸胺胼能脂脆脊脖脘脞脬脯脾腆腊腋腌腐腑腓腔腕腠腥腧腩腮腰腱腴腹腺腿膀膂膈膊膏膘膛膜膝膣膦膨膳膺膻臀臂臃臆臊臌臣臧自臬臭至致臻臼臾舀舁舂舄舅舌舍舐舒舔舛舜舞舟舡舢舨航舫般舯舳舴舵舶舷舸船艄艇艉艋艏艘艚艟艨艮良色艴艽艾艿芄芊芋芍芎芏芑芒芘芙芝芟芡芤芥芨芩芫芬芭芮芯芰花芳芴芷芸芹芽芾苑苒苓苔苕苗苛苜苞苟苠苡苣苤若苦苫苯英苴苹苻茁茂范茄茅茆茇茈茉茌茗茛茜茧茨茫茬茭茯茱茳茴茵茶茸茹茺茼荀荃荇草荏荐荑荒荔荷荸荻荼荽莆莉莎莒莓莘莛莞莠莨莩莪莫莰莽菀菁菅菇菊菌菏菔菖菘菜菝菟菠菡菥菩菪菰菱菲菸菹菽萁萃萄萆萋萌萍萎萏萑萱萸萼落葆葑著葙葚葛葡董葩葫葬葭葳葵葶葸葺蒂蒎蒗蒙蒜蒡蒯蒲蒴蒸蒹蒺蒿蓁蓄蓉蓊蓍蓐蓑蓓蓖蓬蓰蓼蓿蔌蔑蔓蔗蔚蔟蔡蔫蔬蔻蔽蕃蕈蕉蕊蕖蕙蕞蕤蕨蕹蕺蕻蕾薄薅薇薏薛薜薤薨薪薯薰薷薹藉藏藐藕藜藤藩藻藿蘅蘑蘧蘩蘸蘼虍虎虐虔虞虢虫虮虱虹虺虻虼蚊蚋蚌蚍蚓蚕蚜蚝蚣蚤蚧蚨蚩蚪蚯蚰蚱蚴蚵蚶蚺蛀蛄蛆蛇蛉蛋蛐蛑蛔蛘蛙蛛蛞蛟蛤蛩蛭蛸蛹蛾蜀蜂蜃蜇蜈蜉蜊蜍蜒蜓蜘蜚蜜蜞蜡蜢蜣蜥蜩蜮蜱蜴蜷蜻蜾蜿蝌蝎蝓蝗蝙蝠蝣蝤蝥蝮蝴蝶蝻螂螃螅螈融螓螗螟螫螬螭螯螳螵螺螽蟀蟆蟊蟋蟑蟒蟓蟛蟠蟥蟪蟹蟾蠃蠊蠓蠕蠖蠛蠡蠢蠲蠹蠼血衄行衍街衙衡衢衣表衩衫衰衲衷衽衾衿袁袂袈袋袍袒袖袢袤被袱袷袼裁裂裉裎裒裔裕裘裙裟裨裰裱裳裴裸裹裼裾褂褊褐褒褓褙褚褡褥褪褫褰褶襁襄襞襟襦襻西要覃覆角觖觚觜解觥触觫觳言訇訾詈詹誓謇謦警譬谷豁豆豇豉豌豕豚象豢豪豫豳豸豹豺貂貅貉貊貌貔貘赤赦赧赫赭走赳赴赶起趁趄超越趑趔趟趣足趴趵趺趼趾趿跆跋跌跎跏跑跖跗跚跛距跟跣跤跨跪跫跬路跳跺跽踅踉踊踏踔踝踞踟踢踣踩踮踱踵踹踽蹀蹁蹂蹄蹇蹈蹉蹊蹋蹙蹦蹩蹬蹭蹯蹲蹴蹶蹼躁躅躇躐躔躞身躬躲躺辛辜辟辣辨辰辱迂迄迅迎近迓返迕迢迤迥迦迨迪迫迭迮述迷迸追退送适逃逄逅逆逋逍透逐逑途逖逗通逛逝逞速造逡逢逭逮逯逵逶逸逼逾遁遂遄遇遍遏遐遑遒道遘遛遢遣遨遭遮遴遵遽避邀邂邃邈邋邑邕邗邙邛邡邢那邦邪邯邰邱邳邴邵邶邸邾郁郅郇郊郎郗郛郜郝郡郢部郫郭郯郴都郾鄂鄄鄙鄞鄢鄣鄯鄱鄹酃酆酉酊酋酌配酎酏酐酒酗酚酡酢酣酤酥酩酪酬酮酯酲酴酵酷酸酹醅醇醉醋醍醐醑醒醚醛醢醣醪醭醮醯醴醵醺采釉里重野量金釜銎鋈鍪鎏鏊鏖鑫阜阡阢阪阮阱防阻阼阽阿陀陂附陋陌降限陔陛陟陡院除陪陬陲陴陵陶陷隅隆隈隋隍隔隗隘隙障隧隰隳隹隼雀雁雄雅集雇雉雌雍雎雒雕雨雩雪雯零雷雹需霄霆震霈霉霍霎霏霓霖霜霞霪霰露霸霹霾青靖靛非靠靡面革靳靴靶靼鞅鞋鞍鞔鞘鞠鞣鞫鞭韭音韶食飧餐餮饔饕首馗馘香馥馨骨骰骱骷骸骼髀髁髂髑髓高髟髡髦髫髭髯髹髻鬃鬈鬟鬣鬯鬲鬻鬼魁魂魃魄魅魈魍魏魑魔鹿麂麇麈麋麒麓麝麟麴麻麾黍黎黏黑黔默黛黜黝黟黠黥黧黯黹黻黼鼎鼐鼓鼙鼠鼢鼬鼯鼷鼻鼽鼾龠

出现在 GB2312,没有被 big5 收录,但是包含在「思源繁体」中的:482 个

业东丢两丨个丬丶丽丿义争亘亚亠亻亿从仪仫众会伲侨倮偬傈兑兖兴兹冂冈冖农冫冲决况凇凉减凑凛凤凭凼刂删劐务动勐勹医华卟卤卧卩却厢厦厨厩厮厶叁参双发变叙叠叶号吓吖吡吣启吲吴呋咏咔咣咤咴哌响哐哚唣唿啉喹嗪嗬嗵嘞嘣嘭噍噔噻噼嚯团园囱国坂块坛坟垡垧垴埝埯塄塬墒墙墚声壳夂处备够头奥姹媪学宀宝实宪寿尔尜屉届属岙岚岜峁峥崾嵛嵴巛帮幂幞幺广庆庙廴弥强彐彡彻忄总恋恒悦惧惨惩愠憷戬户扌护担拟拥揞揸携撑擀攴攵敫斋无晋晓晗条栀样栾桊桕桥梦椁榀榘橥橱檫殁毁毡毪氲氵氽汉汹沟沪沲泪济浜涤渊温溆溻滚滢滨滩漤潜潴灬灯灵灾灿炉点炻炼炽烀烟煅煊煳煺熘牦犏犟犭狍猪猫猬献猸猹玺珉珏珐琼瑶甙电画畲疃疒疱疴痃痈癀癍癔癯盖眦着睃矾砘砜砹砼硇碍碱碹礴礻礼祢禀秆稆税窃窑笋笔筢筻箢篼籴类籼粜粮糇糍纟纤纬纺织经统缆罱耠耥耱耻联肀肟肷肼肽胆胩胬胶脉脎脒脔脚脱脲腈腙腚腭腼腽膪臁舭舾艹艺芦芪苄苊苏苘苷茚荣荦药莅莜莹萘萜萤萦葜葱蒈蒽蓥蔸藁蘖虬虾蜕蝰蝽螋蟮衅衤补衮袄袜装见视讠设询贝跃踪踺軎车轧轮输辶边达迁运迹递邮邻郄酞酰酶醌銮鐾钅钟钢铁铃铜银锭镇长门间阝阳际险随隶隽鞲鞴韦韵页风飞饣马骏骶骺鬏鱼鸟麦麽黄黢黾鼗鼹齄齐齿龙龟

出现在 GB2312,但「思源繁体」中不存在的常用简体字:1898 个

专丛丝严丧临为举乌乐乔习乡书买乱亏产亩亲亵仅仑仓们伛伞伟传伤伥伦伧伪伫佥侠侣侥侦侧侩侪侬俣俦俨俩俪俭债倾偻偾偿傥傧储傩兰关养兽冁内册写军冯冻净凫凯击凿刍刘则刚创别刭刹刽刿剀剂剐剑剥剧劝办劢励劲劳势勋匀匦匮区协单卖卢卫卺厅历厉压厌厍厕厣县叹叽吕吗呐呒呓呕呖呗员呙呛呜咙咛咝哑哒哓哔哕哗哙哜哝哟唛唠唢唤啧啬啭啮啸喷喽喾嗫嗳嘘嘤嘱噜嚣围囵图圆圹场坚坜坝坞坠垄垅垆垒垦垩垫垭垲埘埙埚堑堕壮壶夹夺奁奂奋奖妆妇妈妩妪妫姗娄娅娆娇娈娱娲娴婴婵婶嫒嫔嫱嬷孙孪宠审宫宽宾寝对寻导将尘尝尧尴尽层屡屦屿岁岂岖岗岘岛岽岿峄峡峤峦崂崃崭嵘嵝巅巩巯币帅师帏帐帜带帧帱帻帼庐庑库应庞废廪开弃弑张弪弯弹归当录彦径徕忆忧忾态怂怃怄怅怆怼怿恳恶恸恹恺恻恼恽悫悬悭悯惫惬惭惮惯愤愦慑懑懒懔戆戋戏戗战执扩扪扫扬抚抛抟抠抡抢报拢拣拦拧拨择挚挛挝挞挟挠挡挢挣挤挥捞损捡换捣掳掴掷掸掺掼揽揿搀搁搂搅摄摅摆摇摈摊撄撵撷撸撺擞攒敌敛数斓斩断旧时旷昙昼显晔晕晖暂暧术杀杂权来杨杩枞枢枣枥枧枨枪枫枭柠柽栅标栈栉栊栋栌栎栏树桠桡桢档桤桦桧桨桩检棂椟椠椤椭楼榄榇榈榉槛槟槠横樯樱橹橼檩欢欤欧歼殇残殒殓殚殡殴毂毕毙毵氇氢氩汇汤没沣沤沥沦沧沩泶泷泸泺泻泼泽泾浃浅浆浇浈浊测浍浏浑浒浓浔涛涝涞涟涠涡涣润涧涨涩渌渍渎渐渑渔渖渗湾湿溃溅滗滞滟滠满滤滥滦潆潇潋潍澜濑濒灏灭炀炜炝烁烂烃烛烦烧烨烩烫烬热焕焖焘爱爷牍牵牺犊状犷犸犹狈狞独狭狮狯狰狱狲猃猎猕猡獭玑玛玮环现珑珲琏琐瑷璎瓒瓯畅畴疖疗疟疠疡疬疮疯痉痖痨痪痫瘅瘗瘘瘪瘫瘾瘿癞癣癫皑皱皲盏盐监盗盘眍睁睐睑瞒瞩矫矶矿砀码砖砗砚砺砻砾础硕硖硗硷碛碜磙祯祷祸禄禅秃积称秽稣稳穑穷窍窜窝窥窦窭竖竞笃笕笺笼笾筚筛筝筹签简箦箧箨箩箪箫篑篓篮簖籁粝粤粪糁紧絷纠纡红纣纥约级纨纩纪纫纭纯纰纱纲纳纵纶纷纸纹纽纾线绀绁绂练组绅细终绉绊绋绌绍绎绐绑绒结绔绕绗绘给绚绛络绝绞绠绡绢绣绥绦继绨绩绪绫续绮绯绰绱绲绳维绵绶绷绸绺绻综绽绾绿缀缁缂缃缄缅缇缈缉缋缌缍缎缏缑缒缓缔缕编缗缘缙缚缛缜缝缟缠缡缢缣缤缥缦缧缨缩缪缫缬缭缮缯缰缱缲缳缴缵罂罗罚罢罴羁羟翘耢耧耸聂聋职聍聩聪肃肠肤肾肿胀胁胧胨胪胫脍脏脐脑脓脶脸腻腾膑舆舣舰舱舻艰艳节芈芗芜苁苇苈苋苌苍苎茎茏茑茔茕荆荚荛荜荞荟荠荡荤荥荧荨荩荪荫荬荭荮莱莲莳莴莶获莸莺莼萝营萧萨蒇蒉蒋蒌蓝蓟蓠蓣蓦蔷蔹蔺蔼蕲蕴薮藓虏虑虚虽虿蚀蚁蚂蚬蛊蛎蛏蛮蛰蛱蛲蛳蛴蜗蝇蝈蝉蝼蝾螨衔衬袅袭裆裢裣裤裥褛褴观规觅觇览觉觊觋觌觎觏觐觑觞觯誉誊计订讣认讥讦讧讨让讪讫训议讯记讲讳讴讵讶讷许讹论讼讽访诀证诂诃评诅识诈诉诊诋诌词诎诏译诒诓诔试诖诗诘诙诚诛诜话诞诟诠诡诣诤该详诧诨诩诫诬语诮误诰诱诲诳说诵诶请诸诹诺读诼诽课诿谀谁谂调谄谅谆谇谈谊谋谌谍谎谏谐谑谒谓谔谕谖谗谘谙谚谛谜谝谟谠谡谢谣谤谥谦谧谨谩谪谫谬谭谮谯谰谱谲谳谴谵谶贞负贡财责贤败账货质贩贪贫贬购贮贯贰贱贲贳贴贵贶贷贸费贺贻贼贽贾贿赀赁赂赃资赅赆赇赈赉赊赋赌赍赎赏赐赓赔赕赖赘赙赚赛赜赝赞赠赡赢赣赵趋趱趸跄跞践跷跸跹跻踌踬踯蹑蹒蹰蹿躏躜躯轨轩轫转轭软轰轱轲轳轴轵轶轷轸轹轺轻轼载轾轿辁辂较辄辅辆辇辈辉辊辋辍辎辏辐辑辔辕辖辗辘辙辚辞辩辫辽过迈还这进远违连迟迩迳选逊逦逻遗遥邓邝邬邹邺郏郐郑郓郦郧郸酝酱酽酾酿释鉴錾钆钇针钉钊钋钌钍钎钏钐钒钓钔钕钗钙钚钛钜钝钞钠钡钣钤钥钦钧钨钩钪钫钬钭钮钯钰钱钲钳钴钵钶钷钸钹钺钻钼钽钾钿铀铂铄铅铆铈铉铊铋铌铍铎铐铑铒铕铖铗铘铙铛铝铞铟铠铡铢铣铤铥铧铨铩铪铫铬铭铮铯铰铱铲铳铴铵铷铸铹铺铼铽链铿销锁锂锃锄锅锆锇锈锉锊锋锌锍锎锏锐锑锒锓锔锕锖锗锘错锚锛锝锞锟锡锢锣锤锥锦锨锩锪锫锬键锯锰锱锲锴锵锶锷锸锹锺锻锼锾锿镀镁镂镄镅镆镉镊镌镍镎镏镐镑镒镓镔镖镗镘镙镛镜镝镞镟镡镢镣镤镥镦镧镨镩镪镫镬镭镯镰镱镲镳镶闩闪闫闭问闯闰闱闲闳闵闶闷闸闹闺闻闼闽闾阀阁阂阃阄阅阆阈阉阊阋阌阍阎阏阐阑阒阔阕阖阗阙阚队阴阵阶陆陇陈陉陕陧陨隐难雏雠雳雾霁霭靓静靥鞑鞒鞯韧韩韪韫韬顶顷顸项顺须顼顽顾顿颀颁颂颃预颅领颇颈颉颊颌颍颏颐频颓颔颖颗题颚颛颜额颞颟颠颡颢颤颥颦颧飑飒飓飕飘飙飚飨餍饥饧饨饩饪饫饬饭饮饯饰饱饲饴饵饶饷饺饼饽饿馀馁馄馅馆馇馈馊馋馍馏馐馑馒馓馔馕驭驮驯驰驱驳驴驵驶驷驸驹驺驻驼驽驾驿骀骁骂骄骅骆骇骈骊骋验骐骑骒骓骖骗骘骚骛骜骝骞骟骠骡骢骣骤骥骧髅髋髌鬓魇魉鱿鲁鲂鲅鲆鲇鲈鲋鲍鲎鲐鲑鲒鲔鲕鲚鲛鲜鲞鲟鲠鲡鲢鲣鲤鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲸鲺鲻鲼鲽鳃鳄鳅鳆鳇鳊鳋鳌鳍鳎鳏鳐鳓鳔鳕鳖鳗鳘鳙鳜鳝鳞鳟鳢鸠鸡鸢鸣鸥鸦鸨鸩鸪鸫鸬鸭鸯鸱鸲鸳鸵鸶鸷鸸鸹鸺鸽鸾鸿鹁鹂鹃鹄鹅鹆鹇鹈鹉鹊鹋鹌鹎鹏鹑鹕鹗鹘鹚鹛鹜鹞鹣鹤鹦鹧鹨鹩鹪鹫鹬鹭鹰鹱鹳鹾麸黉黩黪鼋鼍齑龀龃龄龅龆龇龈龉龊龋龌龚龛

思源繁體 比 思源简体 多的中文字符,1711 个

龜懶濫兩閭列烈例杻𠀡𠀾𠁆𠁎𠁨𠂆𠂊𠂔𠃊𠃋𠃍𠃑𠃮𠄌𠄎𠄘𠆤𠆩𠆫𠇁𠇔𠇲𠈄𠈌𠈔𠈹𠉛𠉴𠉵𠊙𠊞𠊠𠊷𠊿𠋀𠋥𠌊𠌥𠍁𠍅𠍆𠍇𠍾𠍿𠎀𠎠𠎧𠎵𠏉𠏋𠏵𠏼𠐓𠐔𠐟𠑥𠒇𠒎𠒑𠒒𠒣𠓗𠓼𠓾𠕇𠖎𠖥𠖳𠗃𠗊𠗐𠗕𠗟𠗠𠗫𠘑𠘕𠘙𠘚𠘰𠙖𠜎𠜱𠝹𠠬𠡳𠣕𠤖𠤣𠥔𠥹𠧧𠨑𠩐𠩯𠪊𠪴𠫂𠫍𠬍𠮏𠮟𠮨𠮩𠮿𠯆𠯋𠯢𠯫𠯻𠯿𠰋𠰍𠰠𠰴𠰺𠰻𠱁𠱂𠱃𠱓𠱥𠱷𠱸𠱼𠲍𠲖𠲜𠲵𠲸𠳏𠳓𠳔𠳕𠳖𠳝𠳭𠳿𠴕𠴨𠴱𠴲𠵆𠵇𠵈𠵉𠵌𠵍𠵎𠵯𠵱𠵴𠵼𠵾𠵿𠶖𠶜𠶧𠶲𠷈𠸄𠸉𠸊𠸍𠸎𠸏𠸐𠸑𠸖𠸝𠹌𠹭𠹳𠹵𠹶𠹷𠹸𠹹𠹺𠹻𠺌𠺖𠺘𠺝𠺢𠺪𠺫𠺬𠺶𠻗𠻘𠻝𠻸𠻹𠻺𠻻𠼝𠼦𠼭𠼮𠼰𠼱𠼻𠽌𠽤𠾍𠾐𠾭𠾴𠾵𠾶𠾼𠿟𠿪𠿫𠿬𠿭𡀔𡀝𡀞𡁏𡁜𡁯𡁵𡁶𡁷𡁸𡁻𡂈𡂖𡂝𡂴𡂿𡃀𡃁𡃇𡃈𡃉𡃏𡃓𡃤𡃴𡃵𡃶𡄯𡄻𡄽𡅅𡅈𡅏𡆀𡆇𡇙𡈼𡉏𡉼𡊨𡊩𡊰𡋣𡋾𡌂𡌃𡌄𡌅𡌶𡌺𡍵𡍶𡎎𡎘𡎜𡏅𡏆𡏭𡏾𡐖𡐤𡐿𡑒𡑔𡑕𡒊𡒗𡒶𡓨𡓽𡕷𡖂𡖖𡘊𡘓𡘙𡘾𡙡𡚒𡚸𡚺𡛀𡛁𡛂𡛓𡛕𡛟𡛦𡛧𡛨𡛺𡛻𡛼𡛾𡜍𡜐𡜦𡜺𡜻𡜼𡝗𡝬𡝭𡝮𡝯𡝰𡝱𡝳𡝴𡞫𡞰𡞱𡞲𡞳𡞴𡞵𡟃𡟇𡟙𡟚𡟛𡟜𡟟𡟯𡟵𡟶𡟸𡟹𡟺𡟻𡟼𡠠𡠨𡠩𡠪𡠭𡠹𡠺𡠻𡡀𡡅𡡒𡡞𡡡𡡢𡡣𡡤𡡷𡡻𡢃𡢄𡢅𡢞𡢟𡢠𡢡𡢢𡢾𡢿𡣑𡣖𡣗𡣘𡣙𡣺𡤃𡤄𡤅𡤐𡤑𡤒𡤕𡤜𡤢𡤧𡤻𡥄𡥘𡥪𡥼𡦀𡦃𡦈𡦖𡧛𡧳𡨭𡨴𡩅𡩋𡩣𡭄𡯁𡯂𡰪𡱰𡲢𡲥𡲬𡵆𡵓𡵞𡶐𡶶𡶺𡷊𡷑𡷫𡷹𡸜𡸣𡸷𡸽𡺉𡺤𡺨𡻈𡻕𡼏𡼕𡽪𡾞𡾡𡿨𢁅𢁉𢁾𢂚𢃇𢃼𢄪𢅛𢅳𢅺𢆡𢇁𢇃𢈈𢉼𢌡𢌥𢎽𢏐𢏗𢏺𢑥𢑱𢒋𢒑𢒰𢒼𢓁𢓉𢓌𢓭𢔓𢔛𢔰𢕔𢖍𢖯𢖾𢘛𢘜𢘫𢙨𢙺𢚖𢚘𢛴𢛵𢛶𢜒𢜔𢜛𢜟𢜪𢝵𢞁𢞖𢞴𢞵𢟍𢠃𢡟𢡠𢡱𢢭𢣁𢣷𢤦𢤹𢥏𢥧𢥫𢦀𢦓𢩦𢫏𢫕𢫦𢫨𢬎𢬢𢬿𢭃𢭪𢯊𢯎𢰦𢰧𢰸𢱌𢱑𢱕𢱢𢲈𢲛𢲡𢲩𢲲𢲷𢳂𢳆𢳉𢴇𢴈𢴒𢵄𢵌𢵧𢶍𢶕𢶠𢶣𢶤𢶷𢷮𢸍𢸶𢹂𢹸𢺋𢺳𢻯𢽴𢿌𢿣𣀳𣁄𣁋𣁦𣁽𣁾𣂎𣂷𣂼𣃚𣄃𣄽𣅽𣆂𣆤𣆥𣆳𣇈𣇉𣇪𣇷𣇸𣇹𣈏𣈥𣈯𣈱𣈲𣈳𣈴𣉖𣉞𣉢𣊁𣊉𣊊𣊫𣊬𣊭𣋒𣋠𣋡𣌀𣌊𣌟𣎴𣏌𣏞𣏦𣏴𣏵𣏹𣏺𣏾𣐀𣐿𣑐𣑯𣑲𣓥𣔙𣔰𣕑𣕚𣕧𣖕𣖙𣖜𣖻𣗍𣗎𣗏𣗳𣘀𣘗𣘚𣘼𣙀𣙙𣙟𣙷𣚎𣚞𣚦𣚭𣚺𣛟𣛮𣜃𣜖𣜠𣜭𣜯𣜿𣝦𣞁𣞢𣞼𣟂𣟕𣟖𣟗𣠺𣧂𣪧𣫛𣫮𣫺𣬚𣭚𣱣𣲙𣲚𣲛𣲵𣲷𣳇𣳈𣳉𣳼𣳽𣳾𣳿𣵀𣵛𣵾𣶏𣶶𣶷𣶸𣶹𣶺𣶻𣶼𣶽𣷣𣷸𣸆𣸑𣸬𣸭𣸮𣸯𣸰𣸱𣸹𣺈𣺉𣺊𣺋𣺹𣺿𣻗𣻷𣻸𣻹𣻺𣻻𣻼𣼵𣽁𣽊𣽡𣽿𣾀𣾁𣾂𣾏𣾴𣾷𣿀𣿅𣿫𣿬𣿭𣿮𣿯𣿰𤀑𤀹𤀺𤀻𤀼𤀽𤁗𤂅𤂋𤂌𤂍𤂑𤃉𤃡𤃬𤄄𤄏𤄙𤄿𤅀𤅄𤅎𤅕𤅖𤅗𤅜𤅟𤅡𤅷𤅺𤆣𤆤𤆥𤆬𤆵𤇍𤇢𤇼𤈛𤉋𤉖𤉙𤉶𤉷𤉸𤊄𤊓𤊕𤊥𤊿𤋁𤋉𤋊𤋮𤋺𤌍𤌚𤌴𤍈𤍢𤍣𤍤𤍥𤎌𤎖𤎜𤎽𤏁𤏩𤏪𤏲𤏸𤐄𤐵𤐶𤑚𤑛𤑳𤒇𤒈𤒹𤒼𤓎𤓓𤓖𤔅𤔡𤕸𤗈𤘘𤘪𤙥𤙴𤚗𤛔𤜆𤜥𤜯𤞏𤟠𤠒𤠣𤢂𤣰𤣱𤣲𤣳𤣻𤣿𤤀𤤁𤤌𤤖𤤗𤤙𤤯𤤳𤤴𤤾𤤿𤥀𤥁𤥂𤥃𤥢𤥣𤥴𤥵𤥶𤥻𤥿𤦂𤦈𤦉𤦊𤦋𤦌𤦍𤦎𤦏𤦔𤦤𤦧𤦩𤦫𤦬𤦭𤦷𤦸𤦹𤦺𤦻𤧅𤧐𤧚𤧞𤧟𤧣𤧥𤧬𤧭𤧶𤧷𤧸𤧹𤧻𤨎𤨒𤨓𤨕𤨡𤨢𤨣𤨤𤨥𤨦𤨧𤨨𤨩𤨪𤨾𤩂𤩅𤩊𤩎𤩏𤩐𤩑𤩝𤩥𤩦𤩧𤩱𤩷𤩸𤩹𤩺𤪌𤪓𤪔𤪕𤪖𤪤𤪥𤪦𤪧𤪱𤪲𤪳𤪺𤪻𤪼𤫀𤫇𤫊𤫑𤫟𤫢𤫩𤬏𤭮𤯵𤰉𤲞𤲟𤳉𤳙𤴆𤴓𤶸𤷪𤷫𤸻𤹐𤺥𤺧𤼎𤽜𤾂𤾆𤾗𤾚𤾩𤾸𤿂𥀬𥁒𥂝𥄫𥅈𥅽𥅾𥇍𥇣𥇦𥇧𥈠𥈡𥉐𥊙𥋇𥋘𥌎𥌑𥌓𥐙𥐥𥐯𥐰𥑆𥑬𥑮𥒚𥔱𥔵𥔿𥕛𥕜𥕝𥕞𥕥𥕦𥖁𥖄𥖏𥖹𥗕𥗛𥗠𥘅𥘵𥙑𥚃𥚕𥛣𥛶𥜆𥜝𥜥𥜽𥝲𥟇𥟟𥟠𥟡𥡗𥡝𥡲𥣈𥣞𥣡𥤃𥥆𥥖𥦬𥧌𥩔𥪕𥪜𥪮𥪯𥫩𥭴𥮉𥮳𥮴𥯆𥯤𥯨𥰁𥰆𥰡𥱊𥱥𥲑𥲤𥳀𥳁𥳾𥴠𥴰𥵃𥶙𥶹𥸎𥹉𥺁𥺂𥺃𥺦𥺼𥻘𥼚𥽋𥿡𥿢𦀡𦀩𦁈𦁤𦂃𦂗𦂤𦂥𦄂𦄡𦅙𦅚𦅛𦅜𦆭𦆮𦆲𦇝𦉘𦉡𦉪𦉫𦋐𦌵𦍋𦍌𦍑𦎾𦏵𦏸𦐂𦐐𦐑𦐒𦑊𦑩𦒄𦒈𦒉𦒘𦔒𦕲𦖠𦖭𦖿𦘒𦘦𦚯𦚱𦚵𦛚𦛨𦛼𦜖𦝁𦞙𦞳𦞴𦟌𦠜𦡆𦡞𦡮𦢈𦢊𦢓𦣇𦤎𦤑𦤦𦤹𦦨𦦵𦧲𦧺𦨭𦨮𦨴𦩂𦩑𦩒𦬅𦬊𦬓𦬕𦬣𦬨𦭐𦭑𦭒𦭓𦭛𦭵𦮂𦮖𦮗𦮝𦮳𦯀𦯷𦱀𦱁𦱆𦱾𦱿𦲀𦲁𦲂𦲤𦲷𦲸𦲽𦳀𦳃𦳑𦴢𦴣𦴤𦴥𦴦𦴧𦴨𦴩𦴪𦵑𦵴𦶠𦶡𦶢𦶣𦶤𦶥𦶦𦶧𦶮𦷜𦷪𦷫𦷰𦸀𦸅𦸇𦸒𦹂𦹃𦹄𦹅𦹮𦹲𦹷𦺄𦺈𦺋𦺙𦻐𦻑𦻒𦻓𦻔𦻕𦻖𦻗𦼦𦽳𦽴𦾟𦾡𦾾𦿞𦿟𧀎𧁋𧁒𧁓𧂈𧂭𧂮𧂯𧃍𧃒𧃰𧃸𧄉𧄌𧄍𧄦𧄧𧅤𧅥𧅵𧇍𧈛𧉧𧊀𧊅𧊋𧊲𧊶𧋦𧍒𧎚𧏿𧐢𧑐𧒄𧒆𧕴𧖣𧗠𧗤𧗽𧗾𧘇𧘌𧘲𧘹𧙕𧙖𧙗𧚔𧜏𧜵𧜶𧝁𧝞𧞄𧞅𧟌𧡘𧡰𧢝𧣈𧤤𧥧𧥺𧦠𧧝𧧽𧨊𧨎𧨾𧩓𧩙𧩹𧪄𧪽𧪾𧫴𧬆𧬋𧬘𧬸𧬹𧬺𧭈𧭥𧯯𧯴𧰒𧱬𧲱𧳅𧴯𧵓𧵔𧵦𧵳𧶄𧶏𧶘𧶽𧷜𧹍𧹏𧼮𨀂𨀉𨀞𨀣𨀤𨁈𨂃𨂐𨂽𨂾𨃨𨃩𨃴𨄮𨅏𨅝𨅯𨆉𨆯𨆼𨈇𨈘𨈚𨉖𨉼𨊛𨋍𨋢𨌆𨌘𨌯𨌺𨍥𨍭𨍽𨎊𨐒𨑨𨑬𨑳𨒂𨔁𨔼𨔽𨕬𨗨𨗴𨘀𨘋𨘥𨘻𨚪𨚫𨚲𨚼𨛘𨛦𨜏𨜓𨠄𨠫𨤍𨤳𨥈𨥉𨥖𨥤𨥨𨥬𨥭𨥾𨦉𨦨𨦪𨦫𨦸𨦼𨧀𨧜𨧞𨧡𨧣𨧤𨧧𨧨𨧹𨧺𨧻𨧼𨨏𨨖𨨥𨨩𨨲𨨶𨩄𨩅𨩆𨩇𨩈𨩉𨩊𨩋𨩙𨩚𨪁𨪂𨪃𨪚𨪛𨪜𨫀𨫆𨫋𨫌𨫎𨫞𨫟𨫠𨫡𨫢𨫣𨫥𨫪𨫼𨬌𨬓𨬡𨬢𨬫𨬬𨬭𨬯𨭆𨭌𨭎𨭐𨭣𨭤𨭥𨭦𨭬𨮏𨮙𨮜𨮝𨮹𨯂𨯅𨯔𨯗𨯙𨯚𨯧𨯨𨯩𨯪𨯫𨯬𨯵𨯿𨰃𨰉𨰜𨰝𨰣𨰦𨰫𨰰𨰹𨰻𨳊𨳍𨳒𨴴𨶙𨶹𨸶𨸹𨹥𨹦𨺗𨺬𨺲𨺳𨻙𨻧𨿅𩁹𩂈𩂋𩂓𩂯𩂰𩂱𩃀𩃤𩃥𩃬𩃭𩄍𩄐𩄼𩅍𩅛𩅞𩅰𩆜𩆨𩇕𩇫𩐝𩐠𩐳𩐿𩑈𩓐𩓙𩓚𩓥𩓧𩖞𩖰𩖸𩗗𩗩𩗴𩜠𩜲𩟔𩡗𩢤𩣑𩣪𩣱𩣺𩤃𩤅𩤯𩥅𩥇𩥈𩥉𩥝𩥪𩦝𩧃𩧉𩨨𩩍𩬅𩬎𩯕𩱳𩲭𩴾𩵚𩵼𩶘𩶛𩷶𩸆𩸭𩹨𩺬𩺰𩻃𩻸𩼣𩼰𩾷𩿞𪀔𪂇𪂹𪃡𪃭𪃳𪃸𪃾𪄇𪄣𪄳𪄴𪅐𪆒𪆓𪆫𪆴𪆵𪇟𪇵𪈠𪈳𪊓𪊟𪊲𪊴𪊶𪊺𪊽𪋟𪋿𪍑𪎩𪏭𪐴𪑛𪗆𪗋𪘁𪘲𪙊𪙛𪚩𪷿勇吆咢屮弢慈晉杞芳䕫蜨貫

思源繁體(台灣) 比 思源香港 多的中文字符,3 个

㫚櫓魯

思源香港 比 思源繁體 多的中文字符,13 个

岃滑龜奈老省糧劣料類慄梨泥

微软雅黑 比 思源简体 多的中文字符,26 个

䶶䶷䶸䶹䶺䶻䶼䶽䶾䶿鿰鿱鿲鿳鿴鿵鿶鿷鿸鿹鿺鿻鿼鿽鿾鿿

思源简体 比 微软雅黑 多的中文字符,125 个

豈更車賈串句喇奈洛珞落酪駱嵐來勞櫓爐盧老蘆路露魯鷺弄磊賂雷壘漏勒肋丹異北磻便復不葉沈若略梁糧量勵呂濾礪力曆歷年煉輦瑩靈醴僚尿料燎暈阮類律慄隆利吏履易梨泥理里林淋狀什刺拓洞暴輻行見隷勉勤卑嘆器墨漢爫碑艹艹𠂇𠂉𠃌𠘨𡗗𢦏𤇾𤈎𤣩𤨁𥫗𦥑𧢲𧺯𧾷𨸏𩙿𩠐𭕄巽拔𰻝𰻞𱁬

寻找适合的自建聊天工具

By: fivestone
3 July 2024 at 22:07

到现在为止,并没有找到最合适的解决方案(目前最靠谱的是 Nextcloud Talk 和 Voce Chat)。先把过程中考虑到的一些因素,记录下来,作为借鉴。

我的目的,是如何更便捷地,和墙内小范围的朋友、家人,保持联系,在对话中不受信息审查。现有的聊天软件,能够不翻墙使用的,几乎没有了,即使有,也不是长久之计。所以最靠谱的方式,大概只有通过一台海外的 vps,自建服务,供小范围的人使用。如果传播范围不大,除非 gfw 变成白名单,否则应该都可以长期使用。

下面是选择各种自建聊天工具时,会考虑到的因素。这些因素之间,有些是互相冲突的。对不同需求的人,在这些因素之间考虑的权重,也不一样。对于我上述的需求来说,

  • 不需要考虑的因素,用黑色显示;
  • 希望能有,但没有也无所谓的因素,用蓝色显示;
  • 非常希望能满足的因素,用绿色显示。

首先,我希望这是一个可以挂机的聊天工具,可以在收到信息时,从手机接收到通知;而不仅仅是个网页聊天室,只能在专门打开网站时,才能聊天:

  • 可以持续挂机,通过 app 或者「Chrome 把网站添加到桌面」的功能,实时接收来信通知
  • 除了手机外,也能在 pc 的浏览器里使用

要联系的人,并不擅长电脑技术和操作,因此

  • 不需要翻墙使用
  • 操作简便
  • 有中文界面

这些人,可能并不属于同一个群体。所以,需要为不同的人群,架设不同的服务地址,互相分开。

  • 在一台 vps 上,同时部署多个聊天服务。一些功能更加完善的聊天服务如 xmpp,因为需要独占端口,并不能满足这一点;

安全性方面:

  • 信息加密
  • 开源
  • 不和中央服务器连接,一些 self-host 的服务,会经常连接开发者的服务器,虽然只是检查升级或校验程序完整性,但还是看着心虚;
  • 完全通过域名交互,不向其它服务器暴露 ip 地址
  • 用户之间的私信,对管理员也不可见,否则,其实开个 fediverse 实例,可以满足这里很多条要求;
  • 用户之间不会互相暴露信息,譬如很多协同工作平台,可以互相看到所有用户的名单、email……

架设系统的便利程度:

  • 支持 docker + nginx 部署,或者直接放进 php 目录就能运行
  • 系统开销小,内存上 G 的那种就算了吧;
  • 不需要 mysql 等专门数据库,因为规模不大,sqlite 就足够了;
  • 能部署在网站的子目录下,不需要独占一个子域名;

对聊天功能的需求:

  • 是否要加入去中心化网络,和其它服务器的用户交流?对我来说,这不是必须的。而且这在部署的便利性、轻量级、安全性、同时部署多个服务……等方面,都会造成冲突;
  • 可以群聊,也可以一对一私聊
  • 可以传输文件;
  • 支持语音
  • 支持视频;
  • 注册过程简洁,可以由管理员直接生成账户;
  • 可以关闭对外注册

……………还有什么要补充的吗?


已经考察过的工具

其实最理想的,应该是一个 php 的聊天室……能通过 chrome 在手机桌面接收消息通知就可以。轻量化、可以塞到任何目录下、没有中文我自己汉化也可以。但是,真的没找到靠谱的…………求推荐!!!

ps,如果联系人有一定电脑常识,也懂英文的话,用 mycryptochat 做临时沟通,蛮好用的。

目前最合适的,是 Nextcloud Talk,用 docker + sqlite + nginx,是可以做到快速部署的;占用内存不到 300MB,勉强可以接受(所以开销更高的方案,基本不考虑了);而 nextcloud 作为一个庞大的办公平台,其 web 界面对于非技术人士,未免有些眼花缭乱。

xmpp 和 matrix 服务器,可以做到开销更小,但也在 100MB 以上,还涉及独占端口的调整,部署起来繁琐很多。似乎也可以把跨实例通信的功能关掉,做成封闭社区,配置和开销会简单一些。但还没仔细研究。

各种协同平台类,如 Mattermost、Rocket.Chat,系统开销过大,就算了。

这两年有个国人开发的 VoceChat 工具,评价很不错。可以 docker + nginx 部署,内存 30MB,有 web 界面和自己的 app。推荐大家可以试试。目前发现的一些问题:

  • 免费 license 有 20 个用户的限制。 问题不大;
  • nginx 不能反代到子目录,只能独占域名的根目录;
  • 可以看到其它用户的 email,但用邀请码注册的话,可以填假的,不用验证;
  • 最大的问题:VoceChat 的语音聊天模块,是外挂的 agora.io,——是著名的大陆运营商,当年 clubhouse 因此遭受很大质疑。所以,不要用它的语音功能谈关键的信息。进而,这个软件的文字聊天的安全性,虽然是开源,但使用官方 docker 时,也让人有些嘀咕了。

把日常阅读的网页,用 RSS 推荐给好友

By: fivestone
8 March 2024 at 22:10

虽然大家写 blog 的频率都没那么勤了,但是,RSS 还是有其它可以玩的方式的!

很多人都有用各种 read it later、或者书签类工具,把有意思的网页保存下来。在这些工具里,可以通过某些手法,把一些想要分享的网页,生成 rss。其他好友订阅这个 rss 地址,就可以自动刷新,看到你推荐的文章啦!

下面介绍一些,常见的书签网站,生成 rss 的方式。但首先——

  • 这些生成的 rss 地址里,大多都内嵌着网站的验证码,容易泄密,也冗长而不简洁。强烈建议:得到 rss 后,先用 Feedburner 之类的网站,转成新的 rss,再分享出来,可以去掉原先网址里的隐私信息。
  • 很多网站,并没有专门用来 share 的分类,只能通过曲线手段,把已经 archive 或者 star 的类别分享出来。这可能会影响你原本的使用习惯。
  • 一些网站生成的 rss,并没有全文,甚至只有标题和链接地址。没关系,能看到大家的推荐,就已经很好了,自己点开就可以啦。
  • 大多数 rss 订阅工具里,也都有发送给 read it later 的功能,可以辗转着,把自己订阅的文章分享给他人。

我的 RSS 分享地址是:

https://feed.fivest.one/readings
或者
https://feeds.feedburner.com/fivestone/readings

有兴趣和我分享的,欢迎留言或私信交换!!


Instapaper 免费版

感觉 Instapaper 生成 RSS 的功能是最好用的,可以把特定的文件夹设为公开,直接得到它的 rss,形如:

https://instapaper.com/folder/1234567/rss/123456/Vciysdfsd7mod9B
  • 在左边栏创建新的 Folder,存放想要分享的文章;
  • 进入这个 Folder,在页面上方选择 Edit,设置成 Public;
  • 点击页面右上角的下拉菜单,选择 Download;
  • 下载为 RSS Feed,就得到 RSS 地址了。

Pocket 免费版

好像 Pocket 的免费用户,内容都只能是公开的(无语…),只要知道了用户名,就可以通过 RSS 查看全部的内容(所以生成的 rss 需要转录才安全)。而且不能自定义分类,只有默认的:

https://getpocket.com/users/USERNAME/feed/all
https://getpocket.com/users/USERNAME/feed/unread
https://getpocket.com/users/USERNAME/feed/read

最后一条 …/read 会返回所有 Archived 了的文章,可以勉强用它作为分类的手段。

Readwise

这个只有收费版,我就不去试了。有它家的用户,可以帮忙把生成 rss 的方法分享一下?

Wallabag

我在用 Wallabag,可以自建,也有收费的服务可用。生成的 rss 是全文输出,效果很好。在 Config – Feed 里,生成一个 token,然后点开任何一个 tag,点击列表上方的 rss 图标,就可以得到这个 tag 的 rss 订阅(生成的地址里带着统一的 token,所以需要转录才安全):

https://wallabag.your.domain/feed/USERNAME/asdfghjkl/tags/t:share

在外置硬盘上,加密安装 ubuntu

By: fivestone
13 February 2024 at 19:27

需求:

  1. 在便携硬盘盒(M.2 SATA/NVME)安装 Linux(Ubuntu/Zorin),以便在不同的电脑上都可以启动使用。
  2. root 级别的系统分区加密(使用 LUKS & LVM)。
  3. 不要把整块硬盘都加密,而是在硬盘上保留一个未加密分区。这样也可以作为普通的移动硬盘使用。

——这篇攻略和是否外置硬盘盒,没多大关系。普通内置硬盘也可以这样加密安装。

最新的 Ubuntu 22.04 之后的版本,在安装界面里自带了 LVM 全盘加密安装的选项。但是并不能满足第 3 条需求。所以还需要一些复杂的手动操作。

安装过程尽量围绕 ubuntu 的图形安装界面,对新人友好。参考并验证了这篇教程。但原文连同 /boot 引导分区也一起加密了,于是在配置上略显繁琐。我觉得加密 /boot 并不是很有必要,做了一些改动。最终的硬盘分区结构为(以 512GB 硬盘为例):

  • 大约 800MB,EFI 引导分区
  • 大约 300GB,LUKS 加密分区。在其中配置 LVM 逻辑分区:
    • 2GB,swap 交换分区
    • 大约 300GB,Ubuntu 系统分区 root /
  • 大约 200GB,普通移动硬盘分区

操作步骤:

下载 Ubuntu,制作 USB 安装盘(过程略)。——然后,强烈建议在整个安装过程之前,在电脑的 BIOS 里,把内置的其它硬盘暂时卸载。

插上移动硬盘和 USB 启动盘。从 U 盘启动电脑,选择 Try Ubuntu。最新的 Ubuntu 22.04 安装程序里,已经内置了所需的 cryptsetup 和 cryptsetup-initramfs 软件包。因此,整个安装过程中,应该不需要连接互联网。

首先,把硬盘预分区。分区软件有很多种,可以用原文的 sgdidk,也可以直接用图形界面下的 Disk 或者 Gparted。在硬盘上创建 GPT 分区表,然后分成:

  • 大约 800MB,EFI 引导分区
  • 大约 300GB,要加密的系统分区
  • 余下的约 200GB 移动硬盘

这些分区都先不用格式化。记住第二个分区的名字,本文假定为 /dev/sda2。

分区成功后,关闭分区软件,打开 Terminal 命令界面,执行 root 权限

sudo -i

将系统分区加密。按提示输入密码,——这个密码,就是以后每次启动时,挂在硬盘用的密码。和安装 Ubuntu 时的用户密码,并不是一回事。

cryptsetup luksFormat --type=luks1 /dev/sda2

解锁刚刚加密的分区:

cryptsetup open /dev/sda2 hd2_crypt

创建逻辑卷组(LVM),然后在其中创建 2GB 的 swap 交换分区,再把剩余的空间创建为系统分区(这两个分区的大小,大家自行调整):

pvcreate /dev/mapper/hd2_crypt

vgcreate ubuntu--vg /dev/mapper/hd2_crypt

lvcreate -L 2G -n swap_1 ubuntu--vg

lvcreate -l 100%FREE -n root ubuntu--vg

然后,运行桌面上的 Ubuntu 安装程序(Terminal 先不要关),在磁盘分区页面,选择 Something else,进行手动分区。

  • 把 /dev/mapper/ubuntu—-vg-root 格式化成 ext4,挂载为系统根目录 /
  • 把 /dev/mapper/ubuntu—-vg-swap_1 设为 swap 交换分区
  • 把 /dev/sda1 设为 EFI 引导分区

点击 Install Now,确认对分区的设置。注意,到了下一步创建用户的界面时,先不要继续。切换回 Terminal 命令行界面,正式安装前,在 GRUB 中启用加密(能看懂下面这些命令的话,也可以直接去编辑相应的文件):

while [ ! -d /target/etc/default/grub.d ]; do sleep 1; done; echo "GRUB_ENABLE_CRYPTODISK=y" > /target/etc/default/grub.d/local.cfg

然后回到创建用户的页面,点击继续,开始安装系统。安装结束后,先不要 restart。而是点击 Continue Testing。

回到 Terminal 命令行界面,chroot 到新装的系统:

mount /dev/mapper/ubuntu----vg-root /target

for n in proc sys dev etc/resolv.conf; do mount --rbind /$n /target/$n; done

chroot /target

mount -a

原文说此时需要(联网)安装 apt install cryptsetup-initramfs;但我用的 ubuntu 安装程序已经自带了,并不需要联网安装软件包。

添加密钥文件相关设置:

echo "KEYFILE_PATTERN=/etc/luks/*.keyfile" >> /etc/cryptsetup-initramfs/conf-hook

echo "UMASK=0077" >> /etc/initramfs-tools/initramfs.conf

创建密钥文件并将其添加到 LUKS

mkdir /etc/luks

dd if=/dev/urandom of=/etc/luks/boot_os.keyfile bs=512 count=1

chmod u=rx,go-rwx /etc/luks

chmod u=r,go-rwx /etc/luks/boot_os.keyfile

将密钥添加到 boot_os.file 和 Crypttab

cryptsetup luksAddKey /dev/sda2 /etc/luks/boot_os.keyfile

echo "hd2_crypt UUID=$(blkid -s UUID -o value /dev/sda2) /etc/luks/boot_os.keyfile luks,discard" >> /etc/crypttab

更新 Initialramfs 内核映像

update-initramfs -u -k all

此时全部结束。可以重启系统啦。


关于这个硬盘密码:

  • 是用来防止,别人拿到这块硬盘时,无法查看硬盘的文件;
  • 并不能防止,当你登入系统后,因为系统漏洞或操作失误,而造成的入侵;
  • 这个密码,如果忘记了,硬盘里的文件,就再也无法看到了!!(有添加 recovery 的操作,但我觉得没必要);
  • 每次开机启动时,都要输入一次这个密码。所以,虽然密码需要足够复杂,但最好选一个,自己能方便记住,日常使用的方式。

如何修改硬盘密码:

最简单的方式,是在已经启动的移动硬盘系统里,先通过 disk 等分区软件,确认加密分区的名字(这里假设仍然是 /dev/sda2,但实际上不一定了),打开 Terminal 界面,

sudo -i

cryptsetup luksChangeKey /dev/sda2

按照提示,输入旧密码,再输入两遍新密码。最后,更新 initramfs,

update-initramfs -u -k all

就可以了。

安卓上的记账软件:Gnucash Pocket

By: fivestone
12 January 2024 at 20:25

最近又试了一圈 Android 上的记账软件。各种时兴的记账 app 里,仍然没有靠谱的。最终的选择,是停更了五年的:Gnucash Pocket,——Gnucash 的非官方手机版。Google Play 上早就没有了,只能自己编译,或者下载 2018 年的 apk(还很好用 😛


个人需求,并非面面俱到的记账;而是针对一些小项目(譬如一次多人旅行、入门一个兴趣领域时的投入……),记录相关的开销。所以,我的核心需求,是能够在多个项目间,方便进行切换,这一点,是市面上很多记账软件,无法做到的。

一些记账软件里常见的,但我并不需要,甚至会反感的功能:

  • 和其它 app、乃至和你的银行账户,对接数据
  • 繁复的报表(我可以导出到 pc 后自己整理
  • 实时汇率
  • 多设备、多用户,实时同步信息(这个还是想要的,但不是必需
  • 需要注册网站用户

很多年前我找过这样的 app,并没有找到合适的,也就放弃了。如今又把 app store 里的常见记账软件,试了一圈,仍然没找到靠谱的(一些上来就要手机号注册的,我就不试了…)。最终还是投奔鼎鼎大名的 Gnucash。——这是从上个世纪就已经存在的老牌开源记账软件了,支持 Win / Linux / Mac 平台,我在 pc 上也很常用;但是并没有官方的手机版本。官网的 wiki 介绍了一些第三方开发的手机版本。感觉最好用的,是 Gnucash Pocket,原作者从 2014 维持到 2018 年,就停更了,后来被人 fork 了继续维护,但 fork 版不提供现成的 apk。原版 2018 年的最终版本的 apk,我用起来挺好的,没什么大问题。

注意:我说的是 Gnucash Pocket,而不是 Google Play 里的 Gnucash Mobile。Gnucash 的 wiki 官网对这两个 app 都有介绍。这些都是第三方开发的项目,和 Gnucash 官网没有关系。Gnucash Mobile 感觉很难用:不支持多项目,而且似乎先要导入一个在桌面 Gnucash 建好的账户模板……以及,那几个 ios 上的版本,我没有试过,并不知道是否好用。


Gnucash Pocket 的优点:

  • 完备的复式记账功能,——很多记账软件里眼花缭乱的功能,譬如 AA 账单之类,其实都可以通过设计合适的账目结构来实现
  • 在多个项目切换
  • 不依赖网络,可离线使用
  • 数据可导出到 Gnucash 桌面版
  • 支持多币种
  • 免费,开源
  • 无广告,不需要注册用户

缺点:

  • 不能实时多设备/多用户同步
  • 菜单里通往各个功能的入口不全,譬如缺一个一键回到首页的功能……

具体用法就不多介绍了。这里只是向那些,有类似需求和记账知识的人,介绍有这么个东西。具体用法应该很好摸索。


Gnucash Pocket 和 Gnucash 桌面版的数据迁移

记账的项目告一段落后,可以把数据从 app 导出,再导出到桌面版的 Gnucash,进行归档或进一步的处理。注意,如果账目里只有一种货币,那么选择 .csv .qif 格式,都可以顺利地迁移数据;但是,如果账目里有多种货币,这两种格式都会出现问题,就只能导出成 xml 格式。导出的文件有个看着很怪的 .gnca 扩展名,没关系,在桌面版的 Gnucash 里,直接 file – open – 打开这个 .gnca 文件,就可以了。桌面版的 Gnucash 项目,选择 save as 成 xml 文件,传到手机里,也可以用 app 打开继续记账。

❌
❌