使用 Beancount 开启硬核记账之路
作者:nunumick 发布时间:04 Jan 2025 分类: life
早期记账历史
俗话说“你不理财,财不理你”,理财要从财务管理开始,如果对自己的财务状况都不清楚,理财投资也无从谈起。我个人的记账习惯始于 2010 年,正因为自己在那一年组建了小家庭,也算得上是对家庭的责任感驱使 ^_^。最初的记账需求很简单,仅仅是想记录下自己的消费,设置消费预算,不要超支。那时候的账目也简单,个人使用的是随手记 Pro 这个 APP,加上配套的卡牛账单导入也能实现多账户记账的自动化,对家庭总体的财务情况有一定了解。

基于 Jellyfin 搭建家庭影视平台
作者:nunumick 发布时间:21 Dec 2024 分类: life
Why Jellyfin?
至于为什么使用 Jellyfin,于我而言最主要的因素就是开源和免费吧。在此之前我也进行了多方面的比较,用过 Plex 和 Emby 这两款付费软件,产品力确实在很多方面要吊打 Jellyfin,不过综合考虑如下:
- 要获得完整体验就最好成为付费用户,那我想有这个钱我为啥不去购买爱奇艺会员?
- 我还是想尽量基于自己的 NAS 服务器搭建一套所有权 100% 属于自己的本地化的多媒体系统
- 实测我的 NAS 性能比较拉(J4025),无法完全享用 Plex 付费的硬件加速功能,所以选择什么方案还是应该因人而异
- 我觉得多折腾可以让人学到一些奇奇怪怪的知识并得到实践,结果不重要,重要的是过程
Jellyfin 可以满足个人使用的绝大多数需求,有比较完善的账号管理、媒体库管理、插件体系、移动客户端、TV客户端,可以搭配的媒体软件也比较多,有 Kodi add-on,可以把 Jellyfin 仅作为媒体资源管理和推流软件,再选择其他更好用的客户端实现媒体播放。
免费 SSL 证书申请与续签
作者:nunumick 发布时间:15 Oct 2024 分类: developer
目前市面上绝大多数的免费 SSL 证书有效期都在 3 个月左右,网站原来一年一续的免费 SSL 证书不再可用,个人因此经历了一段时间的证书手动申领、更新与部署,其最大的问题是容易遗忘并导致网站证书失效。
经同事提醒可以使用脚本自动申请免费的证书并定期续签,实践经过确实比较简单和自动化,脚本配置后再也不用担心证书失效,应该是个人网站证书方案首选。
ACME 协议
证书的自动申领和续签有多种方案可选,个人所采用的是 ACME.sh 脚本,其作为在网站服务器安装运行的 SSL 证书客户端,与证书机构服务器以 ACME 协议交互实现端到端的证书自动更新、验证、签发、分发和部署。
在使用 ACME.sh 脚本之前可以先了解什么是 ACME 协议。
巧用 FFmpeg 支持米家摄像头接入 HomeKit
作者:nunumick 发布时间:13 Apr 2024 分类: life
家里使用的小米摄像头买的时间比较早,官方不支持接入到 HomeKit,在上一篇智能家居建设所述在设置小米摄像头影像接入 Apple Home 时需要另辟蹊径,本篇将详述整体思路与实施过程。
背景补充
截止到当前时间,无论是通过 HomeAssistant 小米集成还是 HomeBridge 小米插件都没能将小米摄像头的视频流画面稳定接入到 HomeKit,个人判断后续也不太会有通用解,因为后期小米设备一般都官方支持 HomeKit,问题不存在了。另外一个因素是小米摄像头是套闭源系统,无法拿到视频流地址,不过据说可以刷破解固件,怕影响官方特性,没有进一步尝试。
总结一句话问题是:摄像头版本老旧并且不支持刷三方固件(非侵入),如何将视频流画面接入到 Apple Home?
使用 Google 代码和 GTM 衡量网站效果
作者:nunumick 发布时间:05 Apr 2024 分类: blog
博客网站用一套代码分别在国内站点和 Github站点进行部署,为了观测不同渠道的用户效果,需要在效果跟踪上进行区分。
关于网站效果分析,一直以来用的都是 Google Analytics,经历过早期的从 UA(Universal Analytics)到 GA4 的产品升级与迁移。埋点方法使用最新的 gtag.js,现已更名为 Google 代码(Google Tag)。
Google 代码工作原理
Google 代码 (gtag.js) 是可添加到网站中的一段代码,添加这一段代码后您即可使用各种 Google 产品和服务(例如,Google Ads、Google Analytics [分析]、Campaign Manager、Display & Video 360、Search Ads 360)。您可以在整个网站中使用该 Google 代码并将该代码关联到多个目标账号,而无需针对不同的 Google 产品账号管理多个代码。
GA4 的衡量 ID 本质上就是一个 gtag(格式:G-XXXX),每有一个需衡量的对象,就需要一个 gtag 与之匹配。
GA4 gtag 埋点部署代码片段:
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=TAG_ID"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'TAG_ID');
</script>
gtag() 方法负责注册衡量 ID,并将网站信息和行为事件传递给 GA4 服务进行分析。