Category: FYI

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

    我其实对 Hugo 不熟,不知道这算不算重新发明了一遍轮子。但我搜索「如何在 github 上,用 hugo 架设自己的 blog?」时,搜到的教程,都需要用户在自己的电脑上,安装运行各种 git 和 hugo 的相关命令,感觉对新手并不友好。所以,我试着写了一个流程,让新人完全只需要在网页浏览器上操作,就能快速生成自己的 blog 网站。 所有操作都在 Github 这个项目上进行:https://github.com/fivestone/hugo-papermod-beginning 这个项目本质上,就是搭了一个空白的 hugo 网站,让用户 fork 到自己的账户下,设置一下就能直接使用。对功能和界面有什么额外要求的话,请自行学习 hugo 的进阶教程。——然后你们就不是需要用这个项目的新人啦~ 1. 创建 github 账号 首先,注册自己的 github 账号,过程略。注册过程中,你设置的账户名 username,通常就是最终的网站地址 username.github.io,当然以后也可以把自己的域名映射到上面。 2. 架设自己的 blog 项目 注意,这一步,有两种方法: 2.1. 第一种方法 注册并登入账号后,新建自己的项目(Repository)。 项目的名称,决定了最终 blog 的网址。假设你的 github 用户名为 username 确认项目为 Public。其它设置都不需要更改,点击绿色按钮创建。 创建项目后,点击「上传已有的文件」 从我的 github 项目,下载已经设置好的 hugo 文件包,在本地解压缩…

  • 简繁字库

    偶然发现,思源字体的繁体字库文件,无法显示一些简体字。而思源的简体文件,似乎可以显示全部的繁体字?于是把常用的字体文件拆开,看看分别都能涵盖多少简繁汉字。 直接说结论: 首先,在最常用的几个字体中, 两两之间的差别,只是少许生僻字、异体字、以及历史遗留的制作中文编码时的重复或疏忽。具体差别的内容,放在文末了。所以,这里主要对比「思源简体」和「思源繁体」,就可以了。 在思源字体 CJK 的说明文件里,写出了不同国家字体文件的字符数量,和需要支持的标准。可以看到,简中字体文件打包的字符,比繁中多了一万多个(这里的 Glyphs 不仅是中文,也包括西文、特殊符号、甚至一些 emoji)。 简中字体需要支持的标准,主要是 繁体字体需要支持的标准,主要包括 从台湾的官网上,可以下载到目前最新的 CNS11643 – Unicode 之间的对应情况;大陆这边没有找到类似的官网资料,搜到的几个 GB18030 – Unicode 编码表,都是 PDF 格式(掀桌……)。但可以在 python 里把字符 encode,得到相应的编码,也可以变相确认,某个字符是否在某个编码里。 实测结果,所有的 13053 个繁体 big5 汉字,也就是台湾最初规定的,最常用的繁体字,都包含在大陆的 GB18030 编码,也包含在思源简体的字体文件里。包含在思源繁体,而不在思源简体中的汉字,只有 1711 个(详见文末,——如果你觉得其中哪个字不够生僻,那么通常是历史遗留下来的编码重复、或者异体字。譬如,现在 Unicode 里,至少有 10 个各种形态的「龟」字了。 相对的,包含在思源简体,而不在思源繁体中的汉字,有 11856 个之多。这其中,包括了非常多的常用简体字。以大陆最常用的 6763 个汉字(也就是 1980 年大陆发布的 GB2132 汉字编码集)为例。在这些汉字当中: 具体字符清单见文末。可以看到,思源繁体字库中,不能显示的常用简体字,接近 30%,尤其是部首本身就有简繁体之分的,如:讠纟艹饣钅车马鱼鸟页……使用了这些简体字部首的字,有很大概率,在繁体字库里无法显示。 当然,这样的差异,不一定代表着台湾那边的汉字编码工作不力、或者对简体字的傲慢。无论是 GB18030 还是 CNS11643,都早已有了更新更全面的版本,在 CNS11643…

  • 寻找适合的自建聊天工具

    到现在为止,并没有找到最合适的解决方案(目前最靠谱的是 Nextcloud Talk 和 Voce Chat)。先把过程中考虑到的一些因素,记录下来,作为借鉴。 我的目的,是如何更便捷地,和墙内小范围的朋友、家人,保持联系,在对话中不受信息审查。现有的聊天软件,能够不翻墙使用的,几乎没有了,即使有,也不是长久之计。所以最靠谱的方式,大概只有通过一台海外的 vps,自建服务,供小范围的人使用。如果传播范围不大,除非 gfw 变成白名单,否则应该都可以长期使用。 下面是选择各种自建聊天工具时,会考虑到的因素。这些因素之间,有些是互相冲突的。对不同需求的人,在这些因素之间考虑的权重,也不一样。对于我上述的需求来说, 首先,我希望这是一个可以挂机的聊天工具,可以在收到信息时,从手机接收到通知;而不仅仅是个网页聊天室,只能在专门打开网站时,才能聊天: 要联系的人,并不擅长电脑技术和操作,因此 这些人,可能并不属于同一个群体。所以,需要为不同的人群,架设不同的服务地址,互相分开。 安全性方面: 架设系统的便利程度: 对聊天功能的需求: ……………还有什么要补充的吗? 已经考察过的工具 其实最理想的,应该是一个 php 的聊天室……能通过 chrome 在手机桌面接收消息通知就可以。轻量化、可以塞到任何目录下、没有中文我自己汉化也可以。但是,真的没找到靠谱的…………求推荐!!! ps,如果联系人有一定电脑常识,也懂英文的话,用 mycryptochat 做临时沟通,蛮好用的。 目前最合适的,是 Nextcloud Talk,用 docker + sqlite + nginx,是可以做到快速部署的;占用内存不到 300MB,勉强可以接受(所以开销更高的方案,基本不考虑了);而 nextcloud 作为一个庞大的办公平台,其 web 界面对于非技术人士,未免有些眼花缭乱。 xmpp 和 matrix 服务器,可以做到开销更小,但也在 100MB 以上,还涉及独占端口的调整,部署起来繁琐很多。似乎也可以把跨实例通信的功能关掉,做成封闭社区,配置和开销会简单一些。但还没仔细研究。 各种协同平台类,如 Mattermost、Rocket.Chat,系统开销过大,就算了。 这两年有个国人开发的 VoceChat 工具,评价很不错。可以 docker + nginx 部署,内存…

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

    虽然大家写 blog 的频率都没那么勤了,但是,RSS 还是有其它可以玩的方式的! 很多人都有用各种 read it later、或者书签类工具,把有意思的网页保存下来。在这些工具里,可以通过某些手法,把一些想要分享的网页,生成 rss。其他好友订阅这个 rss 地址,就可以自动刷新,看到你推荐的文章啦! 下面介绍一些,常见的书签网站,生成 rss 的方式。但首先—— 我的 RSS 分享地址是: 有兴趣和我分享的,欢迎留言或私信交换!! Instapaper 免费版 感觉 Instapaper 生成 RSS 的功能是最好用的,可以把特定的文件夹设为公开,直接得到它的 rss,形如: Pocket 免费版 好像 Pocket 的免费用户,内容都只能是公开的(无语…),只要知道了用户名,就可以通过 RSS 查看全部的内容(所以生成的 rss 需要转录才安全)。而且不能自定义分类,只有默认的: 最后一条 …/read 会返回所有 Archived 了的文章,可以勉强用它作为分类的手段。 Readwise 这个只有收费版,我就不去试了。有它家的用户,可以帮忙把生成 rss 的方法分享一下? Wallabag 我在用 Wallabag,可以自建,也有收费的服务可用。生成的 rss 是全文输出,效果很好。在 Config – Feed 里,生成一个 token,然后点开任何一个 tag,点击列表上方的…

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

    需求: ——这篇攻略和是否外置硬盘盒,没多大关系。普通内置硬盘也可以这样加密安装。 最新的 Ubuntu 22.04 之后的版本,在安装界面里自带了 LVM 全盘加密安装的选项。但是并不能满足第 3 条需求。所以还需要一些复杂的手动操作。 安装过程尽量围绕 ubuntu 的图形安装界面,对新人友好。参考并验证了这篇教程。但原文连同 /boot 引导分区也一起加密了,于是在配置上略显繁琐。我觉得加密 /boot 并不是很有必要,做了一些改动。最终的硬盘分区结构为(以 512GB 硬盘为例): 操作步骤: 下载 Ubuntu,制作 USB 安装盘(过程略)。——然后,强烈建议在整个安装过程之前,在电脑的 BIOS 里,把内置的其它硬盘暂时卸载。 插上移动硬盘和 USB 启动盘。从 U 盘启动电脑,选择 Try Ubuntu。最新的 Ubuntu 22.04 安装程序里,已经内置了所需的 cryptsetup 和 cryptsetup-initramfs 软件包。因此,整个安装过程中,应该不需要连接互联网。 首先,把硬盘预分区。分区软件有很多种,可以用原文的 sgdidk,也可以直接用图形界面下的 Disk 或者 Gparted。在硬盘上创建 GPT 分区表,然后分成: 这些分区都先不用格式化。记住第二个分区的名字,本文假定为 /dev/sda2。 分区成功后,关闭分区软件,打开 Terminal 命令界面,执行 root 权限 将系统分区加密。按提示输入密码,——这个密码,就是以后每次启动时,挂在硬盘用的密码。和安装…

  • 安卓上的记账软件:Gnucash Pocket

    最近又试了一圈 Android 上的记账软件。各种时兴的记账 app 里,仍然没有靠谱的。最终的选择,是停更了五年的:Gnucash Pocket,——Gnucash 的非官方手机版。Google Play 上早就没有了,只能自己编译,或者下载 2018 年的 apk(还很好用 😛 个人需求,并非面面俱到的记账;而是针对一些小项目(譬如一次多人旅行、入门一个兴趣领域时的投入……),记录相关的开销。所以,我的核心需求,是能够在多个项目间,方便进行切换,这一点,是市面上很多记账软件,无法做到的。 一些记账软件里常见的,但我并不需要,甚至会反感的功能: 很多年前我找过这样的 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…

  • 雾化与安瓿

    先说结论:为了避免安瓿的玻璃碎屑,在雾化时被吸入肺部,个人找到的最靠谱方案,是两毛多一个,套在针筒上的过滤膜。 疫情期间,家里和一些亲友,买了制氧机,以及配送的雾化装置。于是开始关注一些雾化类药物。譬如布地奈德(Budesonide)、或者针对痰咳的乙酰半胱氨酸(Acetylcysteine),有条件的话,使用吸入的方式,效果会好一些。 下单买药……等等,为什么是玻璃安瓿??! 找了一圈,国外的同类产品,多为塑胶瓶塞;而国内四、五款吸入式的乙酰半胱氨酸,全都是玻璃安瓿的包装。大概是因为国内生产工艺的药品,在光照下容易分解,以及会和塑料发生反应,所以要用棕色玻璃瓶装? 这就有点可怕了……掰开玻璃安瓿时,玻璃碎屑会落入药液,从而有可能进入人体,造成伤害。这在如今已经是常识了。很多医疗事故也与此有关。现代的医疗设备,已经尽量避免这种玻璃安瓿包装,或者在注射和输液的设备里,添加过滤装置。 卖药的医师: 不会吸入的呢,亲。雾化吸入是水蒸汽,不小心倒进很小的玻璃渣,是不会被人体吸入肺内的。 ——这就扯淡了。首先,雾化根本就不是「水蒸汽」,而是利用气体射流原理,将药液喷射成微小的雾滴。而且,有些雾化药物是不溶于水的,而是微小颗粒,和雾滴混在一起,被吸入肺部吸收。而玻璃碎屑的大小,和这些药粒接近,当然也会被一起吸到肺里…… 于是只好自行寻找解决方案。国外有内嵌滤网或滤纸的针头(filter needle);国内没找到类似的产品,却发现了实验室移液时,用于过滤颗粒的滤膜。 滤膜孔径最小到 0.22µm,可以直接拧在通用的针筒上。打开玻璃安瓿后,把药液倒入针筒,再推送针筒,让药液经过滤膜注入雾化杯里。这样就能有效地过滤,药液中可能存在的各种微粒。淘宝 100 个 22 元,实测效果很好。 要注意的是,这样的过滤方式,只适用于药品已经完全溶解在水中的溶液型药剂。对于悬浮型药剂,则会把药液中悬浮的有效成分,一起过滤掉。——然而,市场上的悬浮型药剂,如布地奈德(Budesonide),也并不是用玻璃安瓿,所以,并不需要过滤的步骤。 所以,厂商在选择如何包装药品时,也是考虑了这些因素的?悬浮液会用(成本更高的?)塑料包装;而水溶液就无所谓用玻璃安瓿?感觉其中的逻辑很微妙呢。

  • 藏文学习笔记:2 – 微软藏文输入法

    如何在电脑上输入藏文呢?——其实这篇写的迟了。刚刚翻到几年前整理的笔记,顺手发上来。如今输入藏文最简便的方法,是在手机或平板电脑上,用可视化键盘。安卓和苹果系统中,多语言的输入支持,已经做的很好了。我用的 Google Gboard 中的藏文输入法,有两种键盘布局,还支持手写识别。 但终归要把键盘上的输入法布局介绍一下。网上只有键盘布局对应的藏文字母,却没有找到按照藏文字母表顺序对应的键位。我整理了一份,感觉这样更好用。 以前 Windows 没有内置的藏文输入法,需要专门安装。当时有很多个版本的输入法,键盘的布局都不相同:喜马拉雅、宗卡、莫兰、桑布扎、威利、班智达……其中喜马拉雅输入法,采用的是 2006 年制定的【中国国家标准藏文键盘布局】,渐渐地成为流传最广的藏文键盘布局之一。而如今 Windows 10 内置可以添加的藏文键盘,也只剩下喜马拉雅(Tibetan – PRC)和宗卡两种。这个过程中,多少有些文化霸权的痕迹。而我日常用的也是这一种。 在 yalasoo 网站上,对这个“标准”输入法的布局,有详细的介绍(中文、英文、藏文)。输入法包含 5 个虚拟键盘,日常使用只需要记住主键盘,以及用 m 键,在同一个字符内添加【上加字】和【下加字】。 这里是按照藏文字母表顺序,整理的每个字母对应的键盘按键: 在没有上加字的时候,输入顺序为: 主字 ( + m + 下加字 )( + m + 元音) 存在上加字时,输入顺序为: 上加字 + m + 主字 ( + m + 下加字 )( + m + 元音) 举例: པོ = b…

  • 关于 RSS 订阅器,以及推荐自建 tt-rss

    RSS 订阅器,大致上分三种: 现有的网络服务,如当年的 Google Reader 单机版的订阅器 自建网络服务 从 Google Reader 停止服务,到现在快 10 年了。之后的所谓「老牌」订阅服务,如 feedly、inoreader,都限制了免费用户的订阅数量,不能超过 100 或 150 条。倒不是非要坚持用免费的,只是: 首先,这些服务并没有如当年大家期望的,在用户与用户之间,发展出推荐阅读之类的社区功能; 其次,如果有一天,它们也像 Google Reader 那样倒闭了,在这些订阅器里镜像的 blog 文章也全都消失,才是最大的损失。 单机版的订阅软件有很多,一些邮件客户端甚至手机浏览器,也有这方面功能。所以问题还是 抓取的文章能不能长久保存?哪怕重新装机,原来的文章也还在?有很多免安装的 RSS 订阅器,但其中大部分都是十几年前 blog 时代的作品,早已停止更新,对新的操作系统以及新的 rss atom 协议,支持都不好。Windows 下我在用 QuiteRSS,感觉不错。免安装,数据保存在 sqlite 文件里,似乎也有 Mac 版本。 以及,这类本地订阅器,有没有可能,通过网盘同步数据,从而实现多台机器或手机同时使用?我还没有见过这方面靠谱的方案。 自建 RSS 服务里,很多人推荐界面简洁的 Miniflux,我以前试过,感觉还行,但似乎有因为过于简化而不适的地方,忘了具体是什么了。/ 最终选择了 tt-rss (Tiny Tiny RSS),界面确实要比 Miniflux 臃肿一些,响应慢一些,但是它有一个非常亮眼的功能:你在 tt-rss 订阅器里,可以选择「发布」某些喜爱的文章,而这些发布出来的文章,是能够生成一个新的 RSS…

  • [php] 将多个 RSS 地址合并成一个

    弄了个 php 程序,可以把自己的(or 别人的)多个 blog 的 RSS 订阅地址,合并成一个,供人订阅。例如,现在本站的几个 blog 的统一订阅地址为: https://feed.fivest.one/ 程序基于 DigitalFreelancing 的代码,略作修改,调用了 SimplePie 处理 RSS 的项目库,为每个原始的 RSS 地址生成缓存,避免了频繁读取。我修改后的版本,可以从【这里】下载。 使用说明 配置支持 PHP 的网络服务器,过程略; 下载源文件后,解压到新的 RSS 地址相应的文件夹里; 编辑 index.php,修改如下部分: 根据你的网络服务器的权限配置方式,可能需要把 cache 文件夹设为群组或全部可写 也可以把 index.php 改名,或者复制到其它位置,分别配置,生成多个这样的聚合 RSS。注意要调整文件中的相对路径:

  • Draw Force Curve of Some Recurve Limbs

    做了一套简陋的系统,可以测量手头几副弓片的拉力曲线,再由此算出弓片的拉力升值曲线。 拉力曲线(DFC,Draw Force Curve),根据每个人的实际拉距,找到对应拉距时,需要的拉力。以及拉弓过程中积蓄的能量(曲线下方的面积)。 拉力升值曲线(Smoothness Graph / Weight Change / First Derivative of DFC),每个拉距时,拉到下一个英寸,所需要增加的力量。拉弓的过程中,肌肉的配合发力方式,在不断地变化。不同拉距处,力量的突然增加、减少、或者平稳,都会对发力产生影响。打猎和竞技射准,需要的弓片曲线不一样;直线发力的韩式拉弓,和曲线发力的 KSL 拉弓,需要的弓片曲线不一样。高手是要根据自己的拉距和发力方式,挑选不同弓片的。我们非土豪玩家的杂牌弓片,不能挑的那么精细,但知道自己手上弓片的发力曲线,也有助于思考和调整自己的动作。 我是用超市购物车做的测量架子……弓把拴在购物车上,利用车库两侧的墙,一侧墙上系根绳子拴住购物车,另一侧墙上系一个滑轮,手里的绳子通过滑轮,连在钩住弓弦的行李秤上。这样我就可以站在弓把旁边,一边拉动绳子,一边观察弓被拉开的距离(在箭上做了标记)。 看起来很粗糙,但由此带来的数据偏差,应该不会超过换弓把、调整 ILF 卡口、甚至换一副同款弓片,带来的数据差异。而且这类数据,重要的是看拉力的变化,对拉力本身的精度要求不高。 实际操作中,这套系统表现得很稳定。每个拉距都会测 2~3 次,取平均值,且数值波动通常不超过 0.1 磅。 另外, 关于同一副弓片,在不同长度的弓把上的拉力变化。网上常见的说法是:弓把每缩短一英寸,拉力增加一磅。按这个算法,弓片在 19“ 猎弓弓把上的拉力,应该比在 25” 标准竞技弓把上,多出 6 磅。但从下面的数据可以看出,同样的弓片在这两个弓把上的拉力差异,和 6 磅相差很多。这个差异的数值,似乎是和弓片本身的磅数成正比,同时和各人的拉距成正比。那个一寸一磅的说法,应该只是比赛常用的 30~40 磅弓片区间的近似值。具体情况,等测试更多弓片后,再来确认。 测量时,不小心把 68″ 弓用的弦,装在了 66” 的弓上,导致原本 8.75″ 的弦距(brace height)只有 7.25″。于是把装错弦的数据也拿来对比一下。发现弦过长的弓,虽然在初期每个拉距上的拉力更高(因为要拉开更多距离),但最终会被弦长更短的弓反超。 Risers: Hoyt Satori 19″, Gillo G1 25″ Unit: pounds (lb) / inches All data are measured with TRUE draw length. Cartel Fantom EDGE, 41″ short, marked as 66″ 20lbs 匠博火星片,Jumbo Mars, 43″ medium, marked as 68″ 26lbs 三利达圣迹X7,Sanlida Miracle X7, 41″ short, marked as 66″ 14lbs Hoyt Dorado /…

  • WordPress 使用 SQLite 数据库

    之前写了一半的,如何在轻量级个人 VPS 上搭建各种服务的帖子。一时懒得去把坑填完了。但前几天突然发现自己落入了思维误区:为了配合 Mastodon 或 Pleroma,总想着如何把 WordPress 从 MySQL 迁移到 PostgreSQL。——但是,其实完全可以用 SQLite 啊!对于偶尔才更新一篇的个人 blog 用户,把数据库放在一个 SQLite 文件里,不需要另外安装数据库服务,完全是可行的。 用 Docker 观察内存开销。对于新建的 wordpress 站点,wordpress 本身(包括 php-fpm、nginx)占用内存大约是 40-100M(使用缓存插件后会减少);MySQL 数据库占用内存 200M,随着渐渐使用,有着近千篇文章和评论的 blog 站点,MySQL 占用内存会达到 500M 甚至更多。 ——数据库的这部分内存,使用 SQLite 后,完全是可以省下的。 可以通过 SQLite Integration 插件,安装基于 SQLite 的 WordPress。 WordPress 官网的插件页面,因为作者失联而停更。但隐藏的插件下载链接,一直都还有效: UPDATE:上面这个原作者已经停更了的代码,只支持到 php 7.4,在 php 8 里已经失效了。大家可以继续用,但要注意 wordpress 的 php 环境版本。推荐使用 Github…