小站

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/ 下载客户端登录。 这就有点麻烦了 可是在墙里墙外徘徊穿梭这么多年的我是相信第一性原理的,方法论就是用来解决没有解决过的问题而存在的。
查看更多 >>