Allen Hua 的网络博客 - 2023年4月
type: channel
link: https://hellodk.cn/2023/04/
description: Allen Hua 的网络笔记
items: 部署一个 memos 作为个人微博站点和备忘录
items: 我的听歌软件 Spotify 和网易云的故事 | 导出网易云的歌单再导入到 Spotify
items: 我问 ChatGPT 为何印度人痔疮发病率低
items: 使用 immich 来管理家庭照片 | 升级 immich 1.52.0 添加 typesense 容器
items: 在 OpenWrt 上搭建 nfs server

部署一个 memos 作为个人微博站点和备忘录
type: item
date: 2023-04-08T09:46:00+08:00
description: 我在 pve-debian11 的机器上部署了一个 memos，这是一个最近很流行的 flomo 开源版，完全免费和开源，还有很多社区驱动的第三方应用，比如 iOS/Android 客户端、Chrome 插件、Telegram Bot 等，它开源在 https://github.com/usememos/memos 。我也部署一个玩玩。 直接 docker run docker run -d --name memos -p 5230:5230 -v /mnt/seagateFour/dockerdata/memos:/var/opt/memos neosmemo/memos:0.11.2 更新 memos 的方法 停止现有容器 docker stop memos # 或者 docker container stop memos 删除现有容器 docker container rm memos 拉取最新镜像 (2023-04-05) # 我喜欢拉取具体版本的镜像，不喜欢拉取 tag 是 latest 的镜像 docker pull neosmemo/memos:0.12.0 启动容器 docker run -d --name memos --restart unless-stopped -p 5230:5230 -v /mnt/seagateFour/dockerdata/memos:/var/opt/memos neosmemo/memos:0.12.0 上面删除现有容器是最啰嗦的写法了，直接 rm 也可以，但是这样每个步骤都是最具体的。 通过 OpenWrt 暴露了一个端口为其服务，在软路由 nginx 侧做了反向代理。现在服务地址是 https://emby.940304.xyz:15230 而后我又为其加上了另一层反向代理，主要是想干掉端口号。新的服务地址 https://m.xkkkx.com 但是这个地址通过 Cloudflare 代理并转发了，所以会有些慢，个人还是直接使用 15230 的地址使用，也欢迎大家注册。 2023-08-22 23:16:49 补充：因为 memos 更新的比较频繁，故新增了一个 shell 脚本用于更新 memos 生成文件 /home/dk/scripts_dir/update_memos.sh，内容如下 #!/bin/bash # 从命令行获取版本号参数 version=$1 # 检查版本号是否为空 if [ -z "$version" ]; then echo "version variable required." exit 1 fi # 执行命令 docker pull neosmemo/memos:$version docker stop memos docker container rm memos docker run -d --name memos --restart unless-stopped -p 5230:5230 -v /mnt/seagateFour/dockerdata/memos:/var/opt/memos neosmemo/memos:$version 添加可执行权限之后，以后需要更新时就直接执行 shell 脚本并传入最新版本号就行。比如 ./update_memos.sh 0.14.4 回车即可。

我的听歌软件 Spotify 和网易云的故事 | 导出网易云的歌单再导入到 Spotify
type: item
date: 2023-04-03T20:37:00+08:00
description: 14年那会，我第一次使用网易云，当时的网易云真是同类软件中用户体验最好的，当时也没有多大的曲库问题。那时我在很多歌曲的评论区还挺活跃的，还有几首（十几首？）歌的评论在热评上?。 网易云一直用到了19年，我毕业工作了，19年下半年果断切换到了 Spotify 上，从此国内音乐平台是路人。主要是年纪大了没有各种社交需求了，就听听歌而已，没必要整得花里胡哨，而且Spotify （我美区）的曲库全，多个设备之间的同步、接力功能很好用。 当时是从淘宝上上车的，Spotify Premium 家庭版，我是家庭成员，并非家庭主人。很有趣的是，当时只交了一年的费用，直到现在还没有下车…… ?️ 真的离谱啊，被我白嫖到了。 最近几个月在比亚迪的车机上听我 Spotify 上标红心的 500 首歌听腻了，有时候也会听一听 podcast 和电台，电台的话主要收听小时候爱听的音乐之声 MusicRadio。 前些天打开了网易云，听到了一首大学时很喜欢的歌曲，金魚花火 - (金鱼花火) - 大塚愛，很久没听觉得好好听！ document.getElementById("huahuo").style.height=document.getElementById("huahuo").scrollWidth*0.9+"px"; 官方的网易云客户端限制很多，于是我找到了一个漂亮的第三方网易云播放程序， https://github.com/qier222/YesPlayMusic 界面非常简洁，程序也很好用。 但是他没有提供 android 和 ios 移动客户端。我在车机上使用 alook 和 x浏览器测试都无法使用 web 版程序。后面作罢。然后打算把网易云我标记红心的那个歌单导出来，然后导入到 Spotify，于是就有了本文。 导出网易云歌单以及突破1000首歌的限制 搜索到了两个项目 source1 source2 执行了 source1 发现可行，但是网易云 web 页面限制了歌单最大显示的歌曲数量是 1000，而我标记的一共有 1623 首，于是又寻找解决方案。不一会搜到一个油猴脚本，可以突破1000的限制，于是安装测试果然解决了问题。 网易云音乐显示完整歌单 解除歌单歌曲展示数量限制 & 播放列表 1000 首上限 https://greasyfork.org/zh-CN/scripts/406054-%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90%E6%98%BE%E7%A4%BA%E5%AE%8C%E6%95%B4%E6%AD%8C%E5%8D%95 安装好之后再次执行 source1 中的 js 脚本，但是这次不凑效了，无法打印出 歌曲 - 歌手 信息，于是我就研究了一下，修改了 js 代码，最终成功运行。 source1 中的脚本 (function () { let iframeDocument = document.getElementById("g_iframe").contentDocument; let tempElement = iframeDocument.createElement("div"); function getSinger(trNode) { tempElement.innerHTML = trNode.innerHTML; return tempElement.getElementsByTagName("span")[0].title; } function getSongName(trNode) { tempElement.innerHTML = trNode.innerHTML; return tempElement.getElementsByTagName("b")[0].title; } let allSongsTRNode = iframeDocument.querySelectorAll('table.m-table > tbody > tr') var songsStr = ""; allSongsTRNode.forEach(songTR => { songsStr += (getSongName(songTR.childNodes[1]) + " - " + getSinger(songTR.childNodes[3])); songsStr += "\n"; }); console.log(songsStr); })(); 我修改后的脚本，部分逻辑重写了，好使（而且逻辑更简单了） (function () { function getSinger(trNode) { return trNode.getElementsByClassName("t…

我问 ChatGPT 为何印度人痔疮发病率低
type: item
date: 2023-04-01T15:53:41+08:00
description: 为什么印度人的痔疮发病率低？ 据研究，印度人的饮食习惯可能是低发病率的原因之一。印度菜以素食为主，喜欢吃大量蔬菜、水果和谷类，膳食中含有丰富的纤维素，这有助于促进肠道蠕动，保持肠道通畅，从而减少便秘的发生，降低患上痔疮的风险。 此外，印度人还会广泛应用古老的医学系统，如阿育吠陀医学，这种传统医学体系强调预防疾病，通过通过控制饮食、生活方式和草药治疗等方式，维持身体的平衡和健康。 印度人的饮食和生活习惯可能不同于西方，有助于预防许多疾病的发生，从而降低患上痔疮的风险。但是，这并不意味着印度人不会患痔疮，只是发病率较低。在实际生活中，还应注意保持良好的生活习惯，定期锻炼身体，注意饮食健康等方面，以预防痔疮的发生。 这不是主要原因吧？印度人拉屎不是用水冲洗吗？我看过视频，这个也是他们发病率低的主要原因，因为他们普遍比较贫穷，擦屁股的纸巾可能也不是什么好的柔软的纸巾或者湿纸巾，用水擦屁股是个更节省的方法。 您所提到的用水清洗臀部比使用纸巾可能更卫生的做法确实也是印度人痔疮发病率较低的一个因素之一。 在印度，使用水来清洗屁股和肛门区域被广泛应用，因为印度人相信这是一种更有效的清洁方法，比使用厕纸更卫生。 例如，在印度，许多家庭使用所谓的“洗屁器”或“洗屁壶”等设备，将水从一个容器中倒入器皿中再用水冲洗臀部，这种做法在印度很普遍。 尽管痔疮的发病率受诸多因素的影响，而饮食和生活习惯确实是其中一项重要的因素，但是印度人坚持使用水清洗屁股也可能是印度痔疮发病率较低的一个因素之一。 有一说一，我注意到这个现象有几年了，最近这两年我一直在践行使用水冲洗 pp 的方法，感觉效果非常好，拉完?️ 心情也会更好（哈哈哈哈 但是你有钱可以选择更好的智能马桶盖之类的，我就是用的淋浴?️喷头，还有热水供应！效果蛮好…… 欢迎效仿 :)

使用 immich 来管理家庭照片 | 升级 immich 1.52.0 添加 typesense 容器
type: item
date: 2023-04-01T15:43:00+08:00
description: 我于 2022-10-18 选择并部署了 immich 作为家庭的照片管理程序，项目 GitHub 主页 https://github.com/immich-app/immich 这个应用对我来说真的很方便，我很喜欢能通过 web 直接浏览照片和视频，而且整个应用的架构设计也非常棒，乃至性能和功能方面个人感觉比起 PhotoPrism 等产品都要更好。 部署也很简单，编辑官方的 docker-compose.yml 以及 .env 两个文件，设置好各个变量，就可以直接部署了。 上次升级直接使用 docker-compose pull && docker-compose up -d ，各个镜像使用的是 docker hub 上的 release 标签所指镜像。 但是升级完发现应用无法启动，页面报错我不记得了，查看 stack 里 container 日志，发现是 TYPESENSE_API_KEY is required，于是寻找官方 release。 v1.51.0 版本带有重大变更，新增了一个容器 typesense，官方链接 https://github.com/immich-app/immich/releases/tag/v1.51.0 我在修改 docker-compose.yml 以及 .env 的过程中尝试了几遍才使得应用启动。讲几点注意细节 TYPESENSE_API_KEY 变量必须写在 .env 文件里，然后在 docker-compose.yml 中引用，我直接写在 compose 文件里没有生效…… 如果使用 vim 等编辑器，注意换行时默认的缩进是 tab 还是空格，如果是 tab 则会报 yaml 格式错误，建议使用 vim 的语法 :set expandtab 把tab转换成对应数量的空格 然后我的应用就正常了。 可以看到整个 stack 中具备的容器分服务运行，架构设计的应该挺不错的 服务端现在的状态 现在我主要开放给了我哥使用，两个人已经托管了近 110GB 的照片和视频了 今天登录提示又双叒叕新版本（这谁受得了?） 看了一下该版本没有提供移动端的更新，暂时不会更新。目前的功能足够使用。 对了还想提一嘴，之前使用这个应用有几次我哥反馈他无法登录，后来知道是他那边更新了 App Store 里的应用，导致客户端版本超前了服务端导致的无法登录。这个程序在使用时最好保持客户端和服务端的版本一致，而且他们也在积极热烈的开发中，感谢这个应用，非常 nice。

在 OpenWrt 上搭建 nfs server
type: item
date: 2023-04-01T15:07:22+08:00
description: # cat /etc/openwrt_version 08.28.2022 # cat /etc/openwrt_release DISTRIB_ID='512' DISTRIB_RELEASE='22.03.0-rc6' DISTRIB_REVISION='08.28.2022' DISTRIB_TARGET='x86/64' DISTRIB_ARCH='x86_64' DISTRIB_DESCRIPTION="dk-router 08.28.2022 by Kiddin'" DISTRIB_TAINTS='busybox override' # opkg list-installed |grep nfs kmod-fs-nfs - 5.15.58-1 kmod-fs-nfs-common - 5.15.58-1 kmod-fs-nfs-common-rpcsec - 5.15.58-1 kmod-fs-nfs-v4 - 5.15.58-1 kmod-fs-nfsd - 5.15.58-1 luci-app-nfs - git-22.240.61616-a97e7f2 nfs-kernel-server - 2.5.4-4 nfs-kernel-server-utils - 2.5.4-4 nfs-utils - 2.5.4-4 nfs-utils-libs - 2.5.4-4 由于我的两块 3TB 和一块 4TB 硬盘都接在软路由上，软路由跑着 OpenWrt 系统。2022年搭建了 home-server, 使用 pve 虚拟了 debian11 运行。要在 debian11 使用 nfs 挂载 OpenWrt 上挂载出来的几块硬盘。前几天发现在 debian11 上无法查看 /mnt/ 目录下的文件，后面才意识到是 nfs server 端挂了。 我的 OpenWrt 环境如上，安装的 nfs 版本以及各个依赖情况也如上，ssh 进入 OpenWrt，执行 /etc/init.d/nfsd restart 然后 debian11 这边就能重新查看文件了。 OpenWrt 上 nfs 的配置如下 # cat /etc/config/nfs config share option enabled '1' option path '/mnt/four' option clients '10.10.10.0/24' option options 'rw,all_squash,insecure,sync,no_subtree_check' config share option enabled '1' option path '/mnt/ThreeTB' option clients '10.10.10.0/24' option options 'rw,all_squash,insecure,sync,no_subtree_check' config share option enabled '1' option path '/mnt/FiveOO' option clients '10.10.10.0/24' option options 'rw,all_squash,insecure,sync,no_subtree_check' config share option enabled '1' option path '/mnt/ThreeTB2' option clients '10.10.10.0/24' option options 'rw,all_squash,insecure,sync,no_subtree_check'