小站

Umami 自建网页统计服务

背景 今天早上突然发现 不蒜子 - 极简网页计数器 服务挂了,我之所以使用这个服务也是因为懒。比如页脚用的统计服务就是不蒜子的. 既然使用了外部服务,那就也要接受偶尔的服务不稳定,毕竟在互联网没有能一直存在的服务。 思考 外部服务被卡脖子了,那还是得有自建的东西,自建的东西也许没有外部服务好,但是至少完成了从零到一的过程。 方案还是优先用开源的服务自行搭建,自己开发有点浪费时间,而且在有了 Docker 之后搭建一个服务就变得像开箱一样简单。 忽略了挑货的过程,在很多方案中我选择了 umami,不是因为它有多好,而是因为它的功能对我这种个人级别的服务契合度达到 90% 以上,页面视觉也符合我的审美。
查看更多 >>

快速搭建 AI 画图页面

案例 先看下效果吧 AI 图片生成 初步准备 要开始这个项目,首先需要: 注册并开通 Cloudflare 账户。 从域名 dashboard 页面获取必要的认证信息,包括 Account ID[1] , 和 用户 API 令牌
查看更多 >>

备用梯子 WARP+

这几年的机场越来越多了,干我们这行要是不能从兜里掏出几个梯子都不好意思说是会上网的。而且随着技术的进步机场的价格也在逐步下降,在众多的机场里面随便找个基本都能满足个人需求。至于性价比,那就是经典三色图。 我的用途主要还是冲浪,没有 4K 需求,所以我暂时还在紫色区域徘徊,适合自己的才是最好的。 但是机场总会随着一些特殊日子变得不稳定,这时候就必须要有一个备用的机场救急,这种一般都会选择买按量付费的套餐,平时静默,关键时刻用一把。 我也有自己的按量付费的备用梯子,但是那毕竟是要钱的,做为常年在互联网冲浪的一员免费的东西自然也要有,还是那句话,可以不用,但是不能没有。
查看更多 >>

Hugo 模板的基本语法

一些 Hugo 常用信息留存。 Hugo 使用的是 Go 语言自带的模板引擎, 模板的标签为{{}}, {{}}中包含的内容叫 动作 (action). 动作-action 动作分为两种类型 数据求值 控制结构 求值的结果会直接输出到模板中, 控制结构主要包含条件, 循环, 函数调用等. 点. {{.}} 点`.`代表传递给模板的数据, 表示当前模板的上下文, 他可以是go语言中的任何类型, 如: 字符串, 数组, 结构体等. 注释 {{/* comment */}} 空格处理 // 清除 pipeline 前后的空格 {{- pipeline -}} // 清除 pipeline 前面的空格 {{- pipeline }} // 清除 pipeline 后面的空格 {{ pipeline -}}
查看更多 >>

躲猫猫

这两天的新闻是小猫咪纷纷删库,Page not found · GitHub - Dreamacro/clash 我确实也在用,以前没当一回事,但是有经验的一旦看到我电脑状态栏就很容易知道我用了啥,于是我就打算给状态栏的小猫咪穿个马甲。 这次忽略过程直接说方案,首先找到这个目录下的这个文件 通过经验对比发现它就是状态栏的图标
查看更多 >>

TTS 文字转语音

最近我有个需求,想用家里的智能音箱推送播放一些语音,用来做一些定时提醒和新闻推送,设备支持的话还能做 ChatGPT 的语音助手。 家里现在用的是首发的天猫精灵,我查了下这玩意很难做到自定义一些推送播放,硬件不支持那就只能软件先行。 市面上大部分的 TTS 服务都不是完全免费的,即使个人用也是那种有时间限制的一年内免费,虽然会在一年后要重新切换服务调整代码,但至少先把这个功能做起来。 做的过程中又想了一些使用场景 语音播放新闻摘要 一些敏感怕被截图的文字可以生成语音再发送(做了音频下载功能) 适老化辅助 搞了大概半个晚上搞完了,这里记录下,怕自己忘了。代码不多,也不贴了,有需要的可以留言。也可以直接用,测试玩玩可以,但别依赖,因为不知道哪天服务就停了 。
查看更多 >>

临时网页剪贴板

最近我自己有个需求,经常需要将在多个设备间互相发送信息,在陌生的设备又不想登录,通过三方软件中转的还需要安装软件,于是就打算搞个临时网页剪贴板,一些临时的文字信息就可以很方便的共享。 产品需求也不复杂,个人用的东西只需要做到 MVP 就行。 网页版,联网的浏览器设备随时都可以访问,域名自己好记 一处保存,多处查看 页面干净简洁,只需要简单的输入区 既然需要存储,那就少不了数据库,之前在 Vercel 了解到有个 KV 数据库,简单又快速,于是这次的存储也选择了 KV 数据库。 域名就先随便选一个常用的,后面切换也方便。这次我没有选择 Vercel,而是选择了 Cloudflare,因为域名也在 Cloudflare 上,搞起来比较方便。
查看更多 >>

Hugo 增加评论功能

没有评论功能的小站是不完整的,可以没有人用,但是一定要有。 静态网站是没有数据库的,一些需要数据存储的功能只能依赖第三方服务,评论功能就是其中之一。 很久之前也用过一些第三方的评论服务,不知道是否还有人记得多说,当时很有名,但是这种开放模式的网络服务是无法在新时代活下去的,这也是关闭之后才逐渐明白的道理,只要是正确的道理,什么时候明白也不算太晚。 现在的处境是服务内求无果,只能向外求,恰恰和心学相反。
查看更多 >>

图床搬家

搞过博客的应该都知道,文字版本的文章都很比较容易处理,而图片存储一直是一个难于抉择的问题。 如果是使用 WordPress 还好,可以直接后台上传。但是现在很多静态博客都是 Hexo 或者 Hugo 这种方式,没有独立的后台,如何上传图片就变成了一个不得不面对的问题。 刚迁移完小站的时候新图片我是放在了当前站点的 public 目录下,使用固定 images/ 的方式访问,如下↓ https://www.ppanda.com/images/3e04366b23d0490abb5dfdd6d1e8e5ca/Untitled%204.png 这会有个问题,一旦站点无法访问或者图片流量异常,就会导致整站任何资源都无法访问,而这又变成了一个风险。要有永远不要把鸡蛋放在一个笼子里的意识。 于是我打算把图片资源单独放在一个图床上,和小站的服务器资源分开,这样不但规避了高耦合的风险,还减少了图片有大量请求会拖垮源站的情况。 市面上的图床有很多,免费又好用的的却很少。我目前主要在用的是阿里云的 OSS 用来做静态资源存储,价格中庸品质还行,但是我现在还没有能备案的域名,阿里云 OSS 自动生成的域名看起来不太美观,所以阿里云暂时只能算是备选方案。 刚好最近在搞 Cloudflare,那么又到了薅 Cloudflare 羊毛的时候了。 Cloudflare R2 完全可以满足我的需求。要使用 R2,需要先绑定一种支付方式,因为我没有信用卡,所以付款方式我选择了 PayPal,在 paypal 里维护下借记卡就可以通过认证了。认证完毕之后需要配置下 bucket,起个好听的名字,让自己不会忘记。 先看下改革成果,本篇文章的图片都会来自 R2。 https://img.ppanda.com/y5.gif
查看更多 >>

获取所有微信好友头像组成「叹息之墙」

在很早以前小站中有一个留言板功能,存储了所有留过言访客的 Gravatar 头像,然后我把他们组成了一个照片墙,并中二的称之为叹息之墙。但是随着空间到期和域名没续费这个墙就坍塌了,虽然当时的代码还在,但是数据已经难以回溯,现在想想不免有些遗憾。 于是我就在想,如何能找到一些有关系的头像重新组成新的叹息之墙呢,微信好友头像应该是目前能利用的最好素材了。 我抱着伸手党的态度试着搜了下获取微信好友头像 - Google 搜索,发现大部分的方案都过期了,而且微信好像已经不再提供网页版,登录网页版就会出现以下提示: 为了保障你的账号安全,暂不支持使用网页版微信。你可以前往微信官网 https://weixin.qq.com/ 下载客户端登录。 这就有点麻烦了 可是在墙里墙外徘徊穿梭这么多年的我是相信第一性原理的,方法论就是用来解决没有解决过的问题而存在的。
查看更多 >>

修网绕墙记

十一回来同事反馈搭建的 ChatGPT 服务无法访问了,我自己试了一下我这边确实是好的,但是我电脑的网络环境比较复杂,不具备太多的参考性,于是就用手机扫码访问了下,好家伙,联通号直接给我干到了反诈中心 又换了移动的流量卡访问了下,直接显示无法访问,那么服务大概率是被 wall 了。 没有办法,修吧。 好在十一前就搞了 Cloudflare,这网修起来就稍微简单了些
查看更多 >>

读书笔记搬家

迁移完小站/域名/Notion/之后又打算顺便把之前的一些读书笔记也搬到小站来。 要做到这个需求 首先得有一份本地的读书笔记数据,最好是 markdown 其次要把这份本地数据原目录迁移到小站里 最后读书笔记的格式还要匹配小站的书写文章书写规则才能正确识别,包括时间排序和笔记展示形式 上面三个问题,单独看起来哪个都不是那么简单,但是好在我前期做了一些工作,无意间打通了需求的整个流程,有种善战者无赫赫之功的内心成就感。 我能较好整理的读书笔记几乎都在微信读书里,自从我开始用微信读书,大部分的读书笔记都选择微信读书这个平台来记录。这也直接造成了对平台有很大的依赖,这种依赖本身就是一种风险,对于个人是,对于国家也是。 那么来看看我是如何逐渐解除这个风险的
查看更多 >>

域名搬家

随着 Bircron 的到期,指向那里的域名也都跟着挂掉了,于是也不得不给它们找一个新的家。 很早之前同事有偿送了一个 [nanwang.de] 域名给我,之前也被我放到了 Bitcron 上,功能是
查看更多 >>

再次搬家

昨天发现 Bitcron 终于欠费导致页面无法访问了,这使我不得不再次考虑搬家的事情。 说起来小站已经搬家了好多次,除了以前在喜爱折腾的年纪会主动搬家,现在的每次搬家都是被动营业。随着个人时间成本的增加免费的服务远远不如稳定服务能给自己带来更多的安全感,这也是为了稳定和发展向这个世界妥协的一种方式。
查看更多 >>

Hello World!

闲来无事申请了个域名,也算是证明咱也在网络这个圈子混了几年了吧。 但当自己真正开始投入精力的时候才忽然发现本来以为很简单的事情并不是随手一挥敲
查看更多 >>