普通视图

发现新文章,点击刷新页面。
昨天以前首页

如果你想使用这套 WordPress 主题

2025年5月6日 23:14

我目前使用的 WordPress 主题是 Blocksy

该主题和 WordPress 的 Gutenberg 编辑器完美集成,且支持 Elementor 等主流页面编辑器。提供直观的自定义界面,无需编写代码即可调整网站的布局、颜色、字体等。

如用于搭建个人博客,免费版完全足够。我因长期使用,有付费支持,但似乎仅使用了一个付费功能:「自定义字体」(该功能也可用插件实现)。

CleanShot 2025-05-06 at 15.34.58@2x

最近有几位读者咨询过如何使用 Blocksy,本文介绍一下如何配置本主题。

设置

安装 Blocksy 主题后,安装 Blocksy Companion 插件,然后点击「自定义」。

CleanShot 2025-05-06 at 15.59.29@2x

然后点击 General → Customizer Import/Export

Blocksy import export options

下载该压缩包,解压缩,并将 .dat 后缀的文件拖拽到 Import Options 中。

CleanShot 2025-05-06 at 16.01.58@2x

这里可以全选.

然后就能使用我调整后的 Blocksy 主题了!

目前使用的插件可见这篇博客:目前使用的 WordPress 插件

另外,还有两个自制插件,推荐大家试试:Bearblog 风格点赞按钮NeoDB Integration 书影音展示页面

本博客目前使用的字体是「霞鹜文楷」。

祝大家使用愉快,

Dayu

一点点展开我的 macOS

2025年4月26日 03:31

Core

Alfred 是我的应用启动器,感兴趣的朋友可参考配置:2024 Alfred 5 基础设置和 Worklfow 推荐Shortcutie 可以利用私有 API 为 Shortcuts 提供丰富的系统级扩展动作,配合 Alfred 使用更佳,我最常用的是「通知清理」。

我长期订阅 Setapp,这是一个软件打包订阅服务,所有在该服务内软件后会加一个星号*

DEVONthink 是资料管理的核心,大部分内容使用 Typora 编辑(PicGO 为图床),其他资料的格式主要为 PDF、Doc、Markdown 和 Html。浏览器插件 Obsidian Web Clipper(AI 总结) 和 SingleFile(HTML) 可以快速收集信息,然后使用 Hazel 自动转入 DEVONthink 中。Obsidian 自带的 Html 剪藏工具不是很好用。数据库中尽量储存复述和重新理解过的资料,少储存源文件,这样能减少数据库的大小,也让内容更聚焦。Apple mail 中的邮件可以直接拖拽到 DEVONthink Inbox 中归档。数据库通过 Dropbox 同步。

Voicenotes 用于记录语音笔记,自动转文字并总结,并建立数据库,易用且好用。我是早期买断制用户,现在好像只能订阅。东西是好东西,但性价比没以前那么高。喜欢语音笔记的朋友可以试试这种用 shortcuts 实现的方式: 语音iOS 音频转文字并导入 Obsidian

我使用 PDF Expert 阅读 PDF 文件,MarginNote* 阅读需要记笔记的 epub 文件,高亮和笔记可直接导入 DEVONthink。不需要笔记的 epub,则用 Calibre 阅读。

Apple Calender 和 Things 3 用于日程和项目管理,配合 Dato* 在 Menu bar 中快速查看信息。Things 中的项目可以直接拖拽到 Apple calendar 中。

进入工作状态后,我会用 QSpace 替代 Finder 管理项目,用 Bookends 管理文献。以前一直用 Zotero,DEVONthink 4.0 加强了和 Bookends 的联动,我便转而尝试了它。Setapp 里虽然包括了 Commaner One,但界面稍微臃肿了一些,没有 QSpace 美观舒适。

使用 Sublime Text 查看代码,用 RStudio 和 VSCode 进行数据分析。TablePlus* 和 Delimited 可以更方便的查看数据。

根据老板的喜好选择论文撰写软件,以前用 Microsoft word,目前则使用 Texifier

使用 Librewolf 一年多,还是回到了Chromium 内核。目前,Brave 是我的主力浏览器,从浏览器级别构建广告拦截功能,目前不依赖 Manifest V3,使用 1Password 管理密码。作为 Kagi 的忠实用户,我一直对 Orion Browser 有很高期待,每隔半年会试用一次,但至今没优化到能做主力浏览器的程度。近期最喜欢的浏览器插件是 Sider,结合了 POE 的 AI 对话功能,和双语翻译、Youtube 字幕翻译、网页总结、PDF 翻译总结… 另外,Sider 挺适合 1-3 人合租,价格不错。

我习惯使用 RSS 订阅内容,FreshRSS 是我的 RSS 管理器。Reeder 则是我的阅读器,可以直接订阅 FreshRSS 中的内容。

WordPress 被用于搭建博客。每隔三个月,会用 SiteSucker 为博客做二次备份,能够异步下载网站的网页、图片、PDF、样式表等文件并重建站点目录结构。其他自托管服务可见这篇 Blog

Menu Bar

我使用 Bartender 管理 Menu Bar,将其折叠成三个层级,「常驻可见」、「隐藏」和「后台常驻」

常驻可见:

  • DEVONthink Extra:用于快速记录笔记。
  • Dropbox:云盘同步中枢。
  • Trickster*:可以查看近期使用的软件和文件,并支持查看 DEVONthink 内最近查看的文件,和 Alfred 联动。
  • LookAway:非常漂亮的休息提醒 App,有干眼和坐姿提醒,能设置一些场景下不启用,如游戏、视频和会议。各方面都比我之前使用的 Time Out* 要好些。
  • Dato*:快速查看日历信息,有全屏的会议提醒。
  • Squirrel: 输入法。
  • DisplayBuddy*:研究所的电脑是 1080P 的,这个软件能启用 HiDPI 分辨率,略微提升显示效果。
  • AIDente Pro*:电池健康管理工具。Apple 官方的电池管理工具被我隐藏了。
  • Alcove:最接近 macOS 原生的动态岛功能,简单舒适,没有多余的功能。
  • One Switch*(偶尔):仅使用它的「屏幕键盘清洁模式」。
  • 如果想保持屏幕常亮,会使用 Lungo*。Amphetamine 也不错,但我更喜欢咖啡图标。
  • Gestimer 2(偶尔):交互很舒服的番茄钟应用,通过拖拽设定时间。我不是番茄钟的重度用户,仅心情好的时候,会用一段时间。

隐藏(点击 menu bar 可显示):

  • Bettermouse:用于替代罗技的鼠标管理软件,兼容我目前使用的两款鼠标,可设置快捷键。
  • PicGO:图床工具,接入 Typora。
  • Copy ‘Em:非常棒的剪切板软件,交互合理且流畅,工作中需要的小功能它基本都有,细节很多。
  • Supercharge*:系统增强工具,提供数十种可选功能,用户可按需开启,无需额外脚本或插件。
  • MagicQuit:自动关闭长时间未使用过的软件。
  • 1Password:交互体验最好的密码管理软件。
  • PopClip*:选中文本即显工具条,可以快速检索和翻译内容。安装插件后,只要能选中文本的内容,都可以剪藏到 DEVONthink。
  • ScreenMemory:通过定期截屏,保留用户的操作记录。与 Rewind 有一些相似,交互没有 Rewind 舒适,但功能够用,价格实惠。

后台常驻(完全隐藏):

  • Mission Control Plus*:为 Mission Control 设计的增强工具。
  • Hazel:完成各种自动化文件管理,将文字自动化的导入 Devonthink。
  • Codepiper:自动复制短信中的验证码。不要买 App store 版,功能不全。
  • Bob:macOS 上现阶段体验最好的翻译 & OCR 软件。
  • CleanShot X*:截图软件。
  • Magnet:窗口管理器。
  • Shareful:优化系统共享菜单。
  • iPreview:增强 macOS 的 Quick Look 浏览功能。
  • Mounty:将 NTFS 分区重新挂载为读写模式,实现在 macOS 下对 NTFS 卷的写入支持。
  • Key Maestro:大的macOS自动化工具,很多 Supercharge 的功能都可以用它实现。
  • New File Menu:优化 Finder 菜单栏,快速创建新文件。
  • OpenInTerminal:允许用户从 Finder 一键在终端或编辑器中打开当前文件夹或文件,无需手动导航。

其他

线上会议之前,我习惯用 Hand Mirror 检查一下摄像头状态。会议中,Presentify 能帮助我在屏幕上做标注,KeyCastr 则能显示实时使用的按键。

比较简单的思维导图,会用 MindNode* 绘制,复杂的则使用 Kinopio

BetterZip* 是我最喜欢的压缩文件管理器,它可以在不解压缩的情况下查看压缩文件的内容。

Clean My Mac*:垃圾清理、恶意软件扫描、应用管理… 确实比 OnyX 体验更好,但如果不在 Setapp 中我也不会购买。

FoxTrot Search:很好用的本地全文检索工具。

Chatwise 是我觉得目前最好用的第三方 AI 聊天软件,功能添加的很克制,没有变的很臃肿。另外,我最近尝试使用指纹浏览器(AdsPower),拼车订阅 ChatGPT Pro,效果还不错,能畅用 Deep Research 和 o3。

Renamer* 是批量重命名软件,稳定,清晰。

最近开始用 Mela 记录菜谱,用 Tripsy* 规划旅行计划。

Darkroom:不知不觉用了 10 年的修图软件,Snapseed 之后最喜欢的一个。

Picture View:一款轻巧快速的 macOS 图片浏览应用。 体积小巧,方便快速的查看图片,不产生缓存,适合作为默认看图应用。

我使用 Squash* 和 PDF Squeezer* 压缩图片和 PDF 文件。

Permute* 转换音频图片格式,用 Downie* 下载视频,使用 Elmedia Player* 观看视频。

Affinity 系列软件:制图三件套,便宜管饱。

Steam:最近喜欢玩电脑上的桌游,比如展翅翱翔、猫与花毯等。还因为买二手桌游在英国认识了新朋友。

Spotify:听音乐,最近很喜欢这四张专辑。

Manifest V3 之后如何屏蔽广告:NextDNS

2025年4月9日 05:48

谷歌更新 Chrome Manifest V3 之后,很多广告拦截浏览器插件都渐渐无法正常使用,包括之前提过的 uBlock Origin

如果想要正常使用有以下几个方式:

  • 更换 Firefox 内核的浏览器,继续使用 uBlock Origin 等插件;
  • Chromium 内核的浏览器中,Brave 从浏览器级别构建广告拦截功能,目前不依赖 Manifest V3;
  • 使用 DNS 服务进行隐私保护和广告拦截,如 NextDNS、Pi-hole 和 AdGuard DNS。

NextDNS

本文想聊 NextDNS,一款注重隐私和安全的现代 DNS 服务,提供广告和跟踪器拦截、恶意软件防护、家长控制以及高度可定制的过滤功能,支持所有设备和加密协议(如 DoH 和 DoT),保护用户免受恶意软件、网络钓鱼、挖矿病毒等威胁。

与其他同类服务相比,它有丰富的过滤和设置,不需要复杂的安装和配置,操作界面简单直接,很适合个人使用。免费版(300,000 queries/month)已经足够日常。付费版为 £1.79/month,定价也很合理。

首先要明确的是,NexDNS 并不能完全替代广告拦截插件,两者的定位相似又不同。比如,DNS 屏蔽广告的过程中有时候会使得网页出现一些空白的块,广告拦截器插件则会清理这些元素,让页面更舒服。

另外,NextDNS 无法阻止 YouTube 的广告,所以仍需要好的浏览器插件来屏蔽 Youtube 广告。

设置

Techlore 对 NextDNS 介绍得很详细,以下是我的笔记。

Al-Driven Threat Detection 是一个新功能,不影响日常使用,所以我选择开启。

CleanShot 2025-04-07 at 18.00.21@2x

黑名单(Blocklist)不是越全面越好,太多黑名单有可能会让网页加载变慢。Techlore 推荐了 HaGeZi,简洁够用,分为5个版本,高级版本的效果更好但有可能太过激进,导致误报。

我选择了相对基础 HaGeZi – Multi NORMAL。

CleanShot 2025-04-07 at 17.57.08@2x

Native Tracking Protection 可以阻止系统级的数据收集,选择自己常用的设备即可。

CleanShot 2025-04-07 at 17.57.40@2x

NextDNS 的 Parental Control 设置还挺丰富的,我屏蔽了两个分类。

CleanShot 2025-04-07 at 17.57.56@2x

Setting 中可以设置数据储存区域,我选了欧洲。

CleanShot 2025-04-07 at 18.01.41@2x

NextDNS 可解析基于区块链的域名,例如 Ethereum Name Service (ENS) 和 Handshake 域名,使用户能够访问 Web3 特定的顶级域名(如 .eth.rloc

CleanShot 2025-04-07 at 18.03.02@2x

在浏览器中使用 NextDNS 非常简单,以 Brave 为例,仅需要将 DNS 改为自定义,并输入 NextDNS 提供的网址即可。

更多设置可参考:yokoffing/NextDNS-Config: Setup guide for NextDNS

高亮、总结、剪藏-本地优先的浏览器插件

2025年3月15日 07:06

Obsidian Web Clipper 是一个最初为 Obsidian 设计的网页剪藏工具,它允许用户快速保存网页内容到 Obsidian 笔记库中。

今天快下班的时候看到 @kepano 发布了新功能,不再限制导出路径,可以保存到电脑中。

所以,现在任何本地优先的笔记软件都能使用 Web Clipper 了

不用 Obsidian 之后,一直眼馋 Web Clipper 的功能,可太开心了!

Web Clipper 适合哪些内容?

我平时储存的内容主要有以下几类:

  • 自己完成的内容,如博客、论文。
  • 高亮的内容和笔记 – 尽量不储存全文。没有重新梳理的内容,大多没必要储存。
  • 值得收藏的内容和链接,.pdf.html

Web Clipper 支持 Markdown 格式导出全文,但偶尔会有排版问题。个人更喜欢 .pdf.html

储存 .html 推荐使用 SingleFile,导出时能够保留双语翻译的结果。储存 .pdf 推荐使用 Just-One-Page-PDF

Web Clipper 很适合收藏「链接」和「高亮内容」。

链接大多为工具性的,配合 AI 总结内容,方便日后检索。

配置 Web Clipper

首先,激活 Interpreter(解释器),绑定大模型 API,并选择自己喜欢的模型。

我试用了 Deepseek Chat 和 GPT-4o mini,GPT-4o mini 的速度要快一倍左右,推荐。

然后,在「常规设置-高级」,将保存行为改为「保存文件」。我还开启了「保存笔记但不打开」。

CleanShot 2025-03-14 at 21.05.38@2x

最后编辑模板,「文件名称」改为了 :

{{ date | date:YYYY-MM-DD}}-{{title}}

「笔记内容」部分的设置如下。一切为日后检索服务,添加了中英两种语言的总结。

### Summary
{{"a summary of the page"}}

{{"Three keywords"}}

{{"a summary of the page, translated to Chinese"}}

{{"a three bullet point summary, translated to Chinese"}}

### Highlights
{{highlights|map: item => item.text|join:"\n\n"}}

解释器上下文:

{{fullHtml}}  

效果如下:

CleanShot 2025-03-14 at 22.27.52@2x

Markdown 文件会默认保存到浏览器默认的 download 文件夹。

我平时会使用 Hazel 配置规则,将 download 中的.md文件自动移动到 DEVONthink 的 Inbox 中。

虽然从 Obsidian 彻底转到了 DEVONthink,但我依旧认可和喜欢 kepano 的理念,也佩服他的很多决策,有舍才有得。

比起用功能绑住用户,Obsidian 更注重插件生态和社群活力,以此增强自己的不可替代性,也是我觉得比较可持续的发展路径。

WordPress Newsletter 插件

2025年3月3日 23:11

前几天看到 拾月 开发了一个 RSS to Email 的服务,可以让读者订阅网站的 RSS feeds,0.002 元 / 封。

目前有 5 人民币的免费额度,对大部分博客来说,已经够用很久。

个人感觉这个服务很棒,不用花费额外精力配置,也不用再编辑一遍文本,都是自动化的,特别适合静态博客。

以此为契机,我搜了搜 WordPress 的插件商店,发现了 Newsletter

比起其他类似功能的插件,这个插件的优势是不需要注册,如果我保持 WordPress 版本不变,即使这个插件不更新维护,我依旧能使用。

设置很简单,如果 WordPress 配置过 SMTP 邮件转发,则可以直接下载使用该插件。

我目前使用的是免费版。可以展示近期的多篇博客,也可以每封邮件展示一篇博客全文。

CleanShot 2025-03-03 at 14.50.50@2x

Note: @JeffreyCalm 补充了一下非自建邮件服务(比如Gmail、Outlook)一天用 SMTP 发 200 封左右会被封停,自建的应该没有该限制。

自建邮箱则会有触达率的问题,目前大部分邮件服务商是白名单模式,新且小的 STMP 转发有可能被退信。

编程辅助工具 Roo Code

2025年2月27日 00:37

这两个月试了一些 AI 编程辅助工具,比如 Cursor、Windsurf、新版 Github Copilot、Cline 和 Roo Code等。

个人感受:

  • 注重效率:VScode + Roo Code + Claude 3.7 Sonnet 用起来比较舒服,但高频使用价格高。Reddit 里有朋友提到,Windsurf 这类订阅制的软件,为了节省 Token,做了一些优化,没有强制访问整库。Roo Code 和 Cline 则会强制访问,效果更好,但价格也昂贵一些。
  • 不喜欢折腾Windsurf 价格适中,性价比不错。Cursor 效果稍好,但也更贵。
  • 轻度使用CopilotGemini Code Assist 的免费版够用。

我平时仅会用代码完成数据分析项目,偶尔做个小插件。项目的代码量都不大,很少高频编程。

Roo Code 已经很够用。

小技巧

【1】Roo Code 是基于 VS Code 的插件,额外安装 Copilot 后,只需在 API Provider 中选择 VS Code LM API,即可在 Roo Code 中调用 Copilot。如果你拥有 GitHub Student Developer Pack,那么这一套设置将是免费的。

注意:Reddit 的一个帖子 提到这样有账号被关闭的风险。该账号最终恢复了,但风险仍旧存在。

【2】Code、Architect 和 Ask 三个模式可以选择不同的模型,Architect 我选择的是 Deepseek R1,其他两个是 Claude 3.7 Sonnet。

【3】关闭 Roo Code 的 MCP Servers 服务,能减少很多引导词,节省日常使用的 Token。

【4】在 OpenRouter 中开启「Compress prompts and message chains to the context size」,能节省 Token。

【5】Gemini 系列目前不算热门,但性价比不错,效果也挺好。

Source:

Bearblog 风格点赞按钮

2025年2月8日 17:27

** 本文基于 第三夏尔Booooombenji 的 Hugo 插件代码,修改为 WordPress 插件:DayuGuo/bear-style-like-button

功能

在 WordPress 的文章类型页面下方添加两个按钮:「点赞」和「支持」。

  • 「点赞」:参考 Bearblog 点赞风格,以简洁版向上箭头为图标,配上一个轻柔的跳动动画。设置界面支持导出点赞数据。
  • 「支持」:可在 WordPress 插件设置中修改链接,跳转到特定页面。

效果见本文下方,大家可以试试。

安装

本插件可在 Github Releases 中 下载:DayuGuo/bear-style-like-button ,并在 WordPress 后台上传安装。

如有任何疑问可在评论区留言。

宝塔面板降级

2024年12月21日 10:41

回退

自从换服务器后,这新装的宝塔9.x版本某些地方是真难用,功能是多了,但很多用不上,以下是 v8.1.0 回退教程(7.4.5之前是不需要绑定手机号的)

// (可选)安装 curl 依赖
yum install curl
// 下载面板离线包(LinuxPanel-*版本号)
curl -L https://github.com/xijoe/baota_release/blob/main/LinuxPanel/LinuxPanel-8.1.0.zip\?raw\=true > LinuxPanel-8.1.0.zip
// 解压离线包
unzip LinuxPanel-*
// 定位离线包位置
cd panel
// 执行安装(若执行 bash update.sh 遇到 Permission denied 时,使用 sudo 权限)
sudo bash update.sh
// (可选)删除降级包
cd .. && rm -f LinuxPanel-*.zip && rm -rf panel

注意事项

覆盖安装后如果宝塔老版本出现登录用户名、密码错误无法登陆时,可以使用以下命令重置密码

cd /www/server/panel && python tools.py panel yourpasswd

参考

https://www.cnblogs.com/yigeyunwei/p/18349184

https://shaniao.net/yingyong/302.html

WordPress 插件-NeoDB Integration 书影音展示页面

2024年12月20日 10:59

将 NeoDB 书影音记录整合到 WordPress 中 实现了将 NeoDB 观影记录添加到 WordPress 页面中,展示页面:NeoDB 书影音

但流程较为复杂,本文将 Cloudflare worker 和 functions.php 整合成了 WordPress 插件,进一步简化流程。

本人无相关代码经验,插件由 ChatGPT 协助生成,时代真的变了。

使用方法

NeoDB API Developer Console 中点击Test Access Token,并 Generate 一个 NeoDB Bearer Token,示例:Th2121_qs-8agMAlSrkE_tzBbcvjsdkjtlCtr9QHX321312312Ytzo8_YmOxjxg

在终端(Terminal)或命令提示符(Command Prompt)中输入以下代码,将 YOUR_TOKEN 替换为 NeoDB Bearer Token。

curl -H "Authorization: Bearer YOUR_TOKEN" https://neodb.social/api/me

下载 NeoDB Integration 插件: https://github.com/DayuGuo/NeoDB-wordpress-Integration/releases/tag/gotest

在 WordPress 中安装并激活该插件。

在 Settings-NeoDB Settings 中输入 NeoDB Bearer Token。

在 WordPress 页面或文章中,使用以下短代码来显示数据:{neodb_page},使用时请将{}符号,换成[]。

Settings-NeoDB Settings 中可调整显示的内容、手动更新和清理数据库。

效果示例

https://anotherdayu.com/neodb/

另,附上我的 NeoDB主页:https://neodb.social/users/anotherdayu/,和 mastodon 账号:https://mastodon.social/@anotherdayu

新版本

1.2 – Jack,NeoDB WordPress 插件优化

1.3 – 皮小辛,WordPress 插件-NeoDB Integration优化(1.3版本)

参考资料

将 NeoDB 书影音记录整合到 WordPress 中

2024年12月20日 00:08

朋友们,已将该功能整合成一个WordPress插件,可直接看这篇 WordPress 插件-NeoDB Integration 书影音展示页面,更简单易用。

这两篇文章合在一起,是我第一次使用 ChatGPT 协助制作 WordPress 插件的心路历程。

NeoDB 是一个开源免费的书影音收藏社区平台,详情见:NeoDB | 书影音标记 – 豆瓣、GoodReads 和 Google Book 的替代品

本文参考 hcplantern 的 将 NeoDB 记录整合到 Hugo 中 ,实现了将 NeoDB 观影记录添加到 WordPress 页面中,展示页面:NeoDB 书影音

获取 NeoDB Bearer Token

NeoDB API Developer Console 中点击Test Access Token,并 Generate 一个 NeoDB Bearer Token,示例:Th2121_qs-8agMAlSrkE_tzBbcvjsdkjtlCtr9QHX321312312Ytzo8_YmOxjxg

在终端(Terminal)或命令提示符(Command Prompt)中输入以下代码,将 YOUR_TOKEN 替换为 NeoDB Bearer Token。

curl -H "Authorization: Bearer YOUR_TOKEN" https://neodb.social/api/me

设置 Cloudflare worker

注册 Cloudflare worker,点击 Create,创建一个 worker。

最初会展示一个 Hello World 基础案例,点击 Continue to project – Settings – Variables and Secrets。

添加一个环境变量(Environment Variables):

  • Type:text
  • Variable name:NEODB_TOKEN
  • Value:NeoDB Bearer Token,示例:H13121_qs-8agMAlSrkE_tzBbcvjsdkjtlCtr9QHX321312312Ytzo8_YmOxjxg

点击右上角的 Edit code,删除 worker.js 中全部代码,并将 hcplantern 提供的代码(如下)复制黏贴进去。

const myBearer = NEODB_TOKEN; // Assuming 'NEODB_TOKEN' is set in your Cloudflare Worker's environment variables

addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})

async function handleRequest(request) {
try {
console.log(myBearer)
const url = new URL(request.url);
const category = url.pathname.substring(1);

// Optionally, handle query parameters (e.g., page number)
const page = url.searchParams.get('page') || '1';
// Available values : wishlist, progress, complete
const type = url.searchParams.get('type') || 'complete';

let dbApiUrl = `https://neodb.social/api/me/shelf/${type}?category=${category}&page=${page}`;
const response = await fetch(dbApiUrl, {
method: 'get',
headers: {
'Accept': 'application/json',
'Authorization': `Bearer ${myBearer}`
}
});

// Check if the response from the API is OK (status code 200-299)
if (!response.ok) {
throw new Error(`API returned status ${response.status}`);
}

// Optionally, modify or just forward the API's response
const data = await response.json();
return new Response(JSON.stringify(data), {
headers: { 'Content-Type': 'application/json' },
status: response.status
});

} catch (error) {
// Handle any errors that occurred during the fetch
return new Response(error.message, { status: 500 });
}
}const myBearer = NEODB_TOKEN; // Assuming 'NEODB_TOKEN' is set in your Cloudflare Worker's environment variables

addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})

async function handleRequest(request) {
try {
console.log(myBearer)
const url = new URL(request.url);
const category = url.pathname.substring(1);

// Optionally, handle query parameters (e.g., page number)
const page = url.searchParams.get('page') || '1';
// Available values : wishlist, progress, complete
const type = url.searchParams.get('type') || 'complete';

let dbApiUrl = `https://neodb.social/api/me/shelf/${type}?category=${category}&page=${page}`;
const response = await fetch(dbApiUrl, {
method: 'get',
headers: {
'Accept': 'application/json',
'Authorization': `Bearer ${myBearer}`
}
});

// Check if the response from the API is OK (status code 200-299)
if (!response.ok) {
throw new Error(`API returned status ${response.status}`);
}

// Optionally, modify or just forward the API's response
const data = await response.json();
return new Response(JSON.stringify(data), {
headers: { 'Content-Type': 'application/json' },
status: response.status
});

} catch (error) {
// Handle any errors that occurred during the fetch
return new Response(error.message, { status: 500 });
}
}

然后点击 Deploy 部署即可。

注意在这一步中,需要复制保留左侧 Preview 下方的网址,示例 https://xyz-hall-ohxu.user.workers.dev/

WordPress Shortcode

在 WordPress 管理后台,导航到“外观” -> “主题编辑器”。

找到并编辑当前主题的 functions.php 文件。

将以下代码添加到 functions.php 文件中。这段代码创建了一个名为 neodb 的短代码。

注意:将代码中的 https://your-worker-url/ 替换为 Cloudflare worker 中的 https://xyz-hall-ohxu.user.workers.dev/

function neodb_shortcode($atts) {
$atts = shortcode_atts(
array(
'category' => 'book',
'type' => 'complete',
),
$atts,
'neodb'
);

$category = $atts['category'];
$type = $atts['type'];

$url = sprintf('https://your-worker-url/%s?type=%s', $category, $type);

$response = wp_remote_get($url);
if (is_wp_error($response)) {
return '数据获取失败';
}

$body = wp_remote_retrieve_body($response);
$data = json_decode($body, true);

if (empty($data['data'])) {
return '没有找到相关数据';
}

ob_start();
?>
<div class="item-gallery">
<?php foreach (array_slice($data['data'], 0, 10) as $value): ?>
<?php $item = $value['item']; ?>
<div class="item-card">
<a class="item-card-upper" href="<?php echo esc_url($item['id']); ?>" target="_blank" rel="noreferrer">
<img class="item-cover" src="<?php echo esc_url($item['cover_image_url']); ?>" alt="<?php echo esc_attr($item['display_title']); ?>">
</a>
<div class="rate">
<?php if (!empty($item['rating'])): ?>
<span><b><?php echo esc_html($item['rating']); ?></b>🌟</span>
<br>
<span class="rating-count"><?php echo esc_html($item['rating_count']); ?>人评分</span>
<?php else: ?>
<span>暂无🌟</span>
<br>
<span class="rating-count"><?php echo esc_html($item['rating_count']); ?>人评分</span>
<?php endif; ?>
</div>
<h3 class="item-title"><?php echo esc_html($item['display_title']); ?></h3>
</div>
<?php endforeach; ?>
</div>
<style>
.item-gallery {
display: flex;
padding: 0 1rem;
overflow-x: scroll;
align-items: baseline;
}
.item-card {
display: flex;
flex-direction: column;
flex: 0 0 17%;
margin: 0 0.5rem 1rem;
border-radius: 5px;
transition: transform 0.2s;
width: 8rem;
}
.item-card:hover {
transform: translateY(-5px);
}
.rate {
text-align: center;
}
.rating-count {
font-size: 0.8rem;
color: grey;
}
.item-cover {
width: 100%;
min-height: 3rem;
border: 2px solid transparent;
}
.item-title {
font-size: 1rem;
text-align: center;
margin: 0;
}
</style>
<?php
return ob_get_clean();
}
add_shortcode('neodb', 'neodb_shortcode');

使用代码

在 WordPress 页面或文章中,使用以下短代码来显示数据:

CleanShot 2024-12-20 at 00.09.10@2x.png

book 可以替换为 movie, tv, podcast, music, game, performance,展示更多数据。

type 可选 wishlist 和 complete,展示想看和看过的内容。

效果示例:https://anotherdayu.com/neodb/

CleanShot 2024-12-19 at 23.56.56@2x.png

另,附上我的 NeoDB主页:https://neodb.social/users/anotherdayu/,和 mastodon 账号:https://mastodon.social/@anotherdayu

目前使用的自托管服务

2024年12月6日 09:52

趁着黑五,新购置了配置高些的 VPS。折腾一番后,整理了目前自托管的服务。

第一个 VPS (Bandwagon)托管了 2 个项目 wordpress(建站) 和 Umami(数据统计),保持全球稳定的线路,和博客的稳定性:

第二个 VPS(Racknerd) 托管了 11 个项目:

  • Freshrss,RSS 阅读器,目前还安装了两个扩展:TranslateTitlesCN(谷歌翻译标题) 和 Auto Refresh(自动刷新)。日常我会使用 Reeder 登录 freshrss 账号阅读。Freshrss 因是网页端的,所以也很适合配合 immersive translate 使用。
  • wewe-rss,生成微信公众号订阅源,实际使用还挺稳定的,最后订阅了 27 个微信公众号。
  • rsshub,为其他网站生成RSS源,自建的更稳定些。
  • RSS-Bridge,订阅部分 rsshub 无法订阅的内容。本想用来订阅 instagram,但不稳定。不过功能确实挺强,便留下观察。与rsshub有很多互补之处,比如 rsshub 如果要订阅 telegram channel 比较复杂,RSS-Bridge 目前则比较简单。经费充裕的话,可以尝试 thefeedreaderbot,使用 webshare 的动态代理 ip,能够躲过 Block.
  • AdGuardHome,DNS 去广告服务,配合浏览器插件uBlock Origin,效果很好。
  • n8n,工作流自动化平台。
  • calibre-web,在线电子书库管理系统。
  • laber,跨越付费墙。
  • FileCodeBox,文件分享。
  • qBittorrent Web UI,BT 下载客户端的 Web 界面,可以远程管理和控制BT下载任务。
  • NextChat,以前叫 ChatGPT-Next-Web,ChatGPT 网页端界面,专门部署给家人使用。

更多自部署软件可参考:awesome-selfhostedTop 3 BEST applications you’ve decided to self-host? 。想轻量级省心的可以试试 YunoHost

个人倾向于将关键的非隐私类文件托管于信誉较好的大平台,如 Dropbox 和 1Password,所以没有使用自托管云盘和密码软件。

Calibre-web 数据库路径和下载权限 500 Internal Server Error 问题

2024年11月25日 14:23

最近用 Docker 搭建了 Calibre-Web(书籍管理阅读平台),出现了一些问题,以下是解决方案。

Calibre 数据库路径

先是进入网页界面中,需要填写 Calibre 数据库路径,该路径需要进入 Docker 容器内部,创建数据库,并添加写入权限。

先查看容器内目录结构,并进入 bin。

docker exec -it calibre-web sh

ls /

cd bin

创建一个空的数据库。

calibredb add --empty --with-library /books

如果上面的命令成功,则设置正确的权限。

chmod -R 777 /books

初始化数据库。

calibredb add --empty --with-library /books

退出容器。

exit

OPDS

支持 OPDS 的阅读器,能更方便的下载和阅读 Calibre-web 中的书籍。

OPDS link 的正确格式是:http(s)://username:password@ip/hostname:port/opds

ip/hostname:port,也可以是网站域名。

iOS 中推荐 Cantook

CleanShot 2024-11-25 at 14.15.29@2x.png

下载权限问题

在绑定 OPDS 阅读器的时候,我发现无法正常下载书籍,网页版也有相同问题,但仍可以阅读。报错:500 Internal Server Error。

这部分报错是比较新的问题,在 Github issue 中找到了解决方案。与 PUID/PGID 相关,应使用运行 Docker 的用户的 ID,这样可以确保容器内外的权限一致。

重新回到 docker-compose.yml 中,将这两者都设为 1000,再重启 docker 即可解决。

services:  
  calibre-web:    
    environment:      
      - PUID=1000      
      - PGID=1000

2024年的付费墙

2024年11月25日 11:55

免责声明:本文仅用于教育目的。作者不认可或鼓励任何不道德或非法活动。使用此工具的风险由您自行承担。

12ft 是一个帮助用户绕过在线付费墙的插件,2023年被投诉下线之后,这些可以作为替代品:

考虑到工具的稳定性和长期性,我日常使用的是 Webpage archive 、自托管的 Ladder 和 Ublock origin(Firefox版)。

目前使用的 WordPress 插件

2024年11月24日 15:59

以下是我目前使用的WordPress插件,共 11 个:

  • UpdraftPlus,核心备份插件,免费版支持定期备份到 Google Drive。近期迁移了一次,安装好WordPress和该插件,再关联一下 Google 账号即可备份成功,体验很好。
  • Blocksy 主题 + 插件,目前在使用的主题,免费版够用,可自定义选项多,颜值高。
  • Polylang,多语言插件,免费版功能齐全,中英文界面可同时 SEO 索引,增强博客覆盖面。
  • Antispam Bee,屏蔽广告评论。
  • Post SMTP,邮件发送插件,更简单的配置 SMTP。
  • Wenprise Better Emails,提供邮件模板,美化邮件。
  • WP Super Cache,网站缓存插件,提升网站加载速度。
  • WPS Hide Login,安全插件,可以自定义WordPress登录页面URL。
  • Rank Math SEO,SEO 优化插件,增强搜索引擎可见度。
  • Meow Gallery,图片画廊插件。
  • Juicer,社交媒体聚合插件,能为国内用户展示 Twitter 时间线。

目前已有足够的舒适度,之后会偏重稳定性,于是关闭了插件和主题的自动更新。除了安全性更新,尽量不动。

除了 Blocksy,都用的免费版。但 Blocksy 其实也没用到几个付费功能,只是比较喜欢,且长期使用,支持一下。

在 Jack 的帮助下,最近管理面板换成了 1Panel,舒适度比 AMH 要高一些,操作也更简单。

截图留念!

CleanShot 2024-11-24 at 15.52.48@2x.png

多语言博客WordPress 插件 Polylang

2024年11月17日 22:48

我对多语言博客 WordPress 插件有以下几个需求:

  • 保持长期更新;
  • 免费或者不贵的买断制;
  • 中英文界面可同时 SEO 索引;
  • 操作简单易于多语言用户理解;
  • 中英文 RSS Feed 可以分开。

尝试多款插件之后,决定使用 Polylang,需求都能满足,且免费功能就够用。虽然内容需要自己翻译,但我也不是每篇都想翻译成英文,且借助 ChatGPT 并不费劲。

Pro 版(99欧元)可以和 DeepL 深度整合,并支持更多自定义功能。

基础设置跟着 Setup 流程即可。之后每翻译一篇,就会在英文界面展示一篇。

设置完成后的效果:https://anotherdayu.com/en/

戴尔显示屏(U2720QM)屏闪问题

2024年11月16日 16:21

目前我使用的显示屏是 Dell U2720QM,偶尔有屏闪问题(4 年间出现过 3 次)。

过去一直以为是电压不稳或接触不良,关机一段时间重启就好了,但昨晚反复重启多次也没有恢复。

于是查了些资料,发现屏闪似乎是 Apple M 系列芯片的通病,尤其是 M1 和 M2 芯片,且 BenQ 也会出现该问题。

解决方法千奇百怪,大家各有各的道理:

  • 弃用 Type-C,改用 HDMI;
  • 关闭 freesync;
  • 关闭 True Tone 和 Auto Adjust Brightness;
  • 使用 Colour LCD 色彩文件;
  • 下载 Dell Display and Peripheral Manager Application(可能是我的显示器太旧了,该软件不适配);
  • 将分辨率锁定为60;
  • 等等。

这些方法都不适用于我的情况。最终激活显示器硬件设置中的 LCD Conditioning 后,解决了屏闪问题。

另外,也有网友表示开源软件 aiaf/Stillcolor 可以通过禁用时间抖动(Temporal Dithering)永久解决该问题,我目前已安装,有备无患。

向国内用户展示Twitter X和Instagram-WordPress插件

2024年11月16日 15:07

Twitter 在 WordPress 上的常规展示方式是 嵌入时间轴,缺点是仍基于 Twitter 数据库,所以国内用户无法查看。

近期我使用的是 juicer.io,这个网站可以将 Twitter、instagram、RSS 等时间轴聚合,展示在一个网页中。

而且支持 WordPress 插件,将嵌入时间轴。优点是经过 juicer.io 的转存后,国内用户也能访问该页面:https://anotherdayu.com/timeline/

小遗憾是数据没有储存在本地,所以无法进行 SEO 索引。胜在轻量级,不折腾,

CleanShot 2024-11-16 at 09.44.35@2x.png

流程如下:


另外,昨天和评论尸交流了一下,他开发的插件可以通过 RSS 为 WordPress 载入即刻的时间轴,并且有可能为 twitter 实现类似的效果。因为是通过 RSS 实现的,数据会保存在服务器中,并可以被 SEO 索引。

目前还在测试阶段,感兴趣的朋友可以关注他的 Twitter :@JeffreyCalm ,跟踪项目进展。

公告:网站被攻击了

2024年11月5日 13:42

今早起床发现博客网站宕机了,最初以为是小 bug,就重启了服务器。

网站加载速度依旧很慢,艰难的进入了控制面板。记录显示从昨晚 11点 左右开始服务器 CPU 满载,且提示已开启 CSRF 攻击防护。CSRF(Cross-Site Request Forgery)的中文名为跨站请求伪造,是一种常见的 web 安全攻击方式。

在群友的建议下,开启了 Cloudflare 代理服务(橙色小云)。没立即见效。然后开启了 Cloudflare 五秒盾(Security—settings—Security Level —I’m Under Attack!),并再次重启服务器,能够勉强进入博客页面,但 CPU 依旧满载。

半小时后,安装了 fail2ban,依旧没有缓解问题。

有些头疼,就干了会其他工作,再回来看,网站已恢复正常。回顾之前的操作,已经搞不清楚是哪步起了作用,也可能是 DNS 服务生效比较慢,生效后就解决问题了。

又或是攻击者觉得累了,恰好暂停攻击,让我喘口气。

无论是哪种,都让我有些心有余悸。

我选用的服务器网络比较好,兼容外网和国内网络,所以溢价较高。如果一直使用 Cloudflare 代理,可以增加稳定性,但抹去了这些优势。

陷入了两难的境地。

听朋友说 1panel 自带了防火墙(ModSecurity),易用性高一些,之后考虑试一试。

最后,感谢群友们的帮助。

并求求别攻击我这个小博客了。

telegram-cloud-photo-size-5-6145471324785590530-y.jpg

记录一下:

11月05日,被攻击第1次。

11月11日,被攻击第2次。

11月12日,被攻击第3次。

11月13日,被攻击第4次。

朋友们,如果访问不了我的网站,记得提醒我一下。

Apple Watch Terminal 风格表盘

2024年5月13日 20:57

最近网上冲浪的时候关注到了 TermiWatch,这是一个 Terminal 风格 Apple watch 表盘的软件。看上去非常不错,但这个项目最后维护时间是 19 年,且配置较复杂,我尝试了一下,确实如 Github issue 中大家反馈的已经无法正常使用。

之后找到了 Drag0nV3n0m231 在 reddit 上分享的方案,该方法基于 Clockology(第三方表盘软件),流程简单,且可以自己添加和设计内容。

不过,在 Clockology 中使用 Weather 模块需要付费。

于是我基于他的风格,重新改了一个版本(如下图所示),删除了需要付费解锁的内容,添加了最大摄氧量信息(Vo2max)。

VO2 Max(最大摄氧量)是指人体在剧烈运动时单位时间内吸收利用氧气的最大值,反映心肺功能和耐力运动能力。25-30 岁健康男性应在 40-50 ml/kg/min 之间。我最近生活不规律,所以 VO2 Max 低于健康区间,平时可以加强有氧锻炼如慢跑、游泳等,提升心肺功能。

下图是我现在使用的界面。
IMG_8837.jpeg

安装设置

App store 中安装 Clockology 软件,并打开,第一次启动会加载一段时间。打开 iOS 上的 watch 软件,在 Apple watch 上安装 Clockology。

点击 Clockology 设置中的权限管理,允许健康权限。

Watch 软件 – General – Return to clock,在 Clockology 的设置中选择自定义(After 1 hour)。另外,通用设置中的后台 app 刷新要开启。

CleanShot 2024-05-13 at 20.21.52@2x.png

GIthub 中下载:DigitalTerminal.clock2_EnableBeta.clock,并将这两个文件发送到手机中。

_EnableBeta.clock 保存到 iOS 本地文件中的 Clockology 文件夹中,然后点击该文件,即可启动 Clockology 的 beta 版本。

回到 Clockology,点击 Workspace,选择 Import,在本地中找到刚刚下载的 DigitalTerminal.clock2

点击刚刚安装的表盘,Apple watch 上也打开 Clockology,点击下图中的 Sync 即同步。然后,手表上即可显示新表盘。

其中,VO2M 是 VO2 Max(最大摄氧量),BATT 是电池电量,RING 是 Apple Health 的 Fintness 圆环,STEP 是每日步数,HTRT 是心跳。
CleanShot 2024-05-13 at 20.39.00@2x.png

表盘上的每个内容都可以自定义,Layer Settings 中可以调整图层的位置。

这个表盘虽好,但不如官方表盘稳定,希望未来苹果可以对自定义表盘更开放。

我平时常用的以下三个表盘,最喜欢的是 Aritst,美术风格很简约。每点一下屏幕,表盘上就会换一张人脸,适合发呆走神的时候玩一会。

如果想使用天气信息,可以尝试 gianlishun 的 Terminal Watch Widget 项目。去年才维护过,应该能正常使用,但配置流程比较复杂。

IMG_8849.jpg

有朋友对 Infograph 这个表盘比较感兴趣,这里也简单介绍一下:

  • 先在 watch 软件的 Clock 选项中,将 Monogram 设置为 (这个苹果 Logo 需要复制过去);
  • 选择 Ingograph(图文)表盘,然后将所有的 Complications(复杂功能)设置为 Off;
  • 仅启用 Sub-dial Top,设置为 Monogram(这个选项只有在第一步设置完成后才会出现)。

语音笔记 Shortcuts:iOS 音频转文字并导入 Obsidian

2024年5月2日 10:26

语音笔记是一场与自己的对话,很喜欢这种记录碎片化信息的方式。

曾关注过一些语言笔记软件,其中 VoicenotesWhisper Memos 比较有趣。Voicenotes 的设计风格简约,识别速度快,作者是 Buy me a coffee 的创始人。Whisper Memos 则默认将每条笔记发送到用户邮箱中,能直接在电脑中归档和整理内容。

这两个软件都有各自的优点,但我还是习惯最终将内容转到 Obsidian,用这些软件都会多一个步骤。

然后我找到了这个基于苹果录音软件和 Shortcuts 的工作流(原文发布在 Obsidian 论坛中,作者是 benjaminshafii)。

设置

原工作流适合英文音频,但会默认把中文音频也翻译成英文,本文优化了这一部分。

先下载 Shortcut:音频导入 Obsidian(Share)

然后,如下图所示,在 Text 部分输入 OpenAI API,并在 File 部分选择 iOS 中 Obsidian 库合适的文件夹(比如 Daily Note 文件夹)。
CleanShot 2024-05-02 at 09.49.29@2x.png

使用

在苹果录音软件(Voice Memos)中录制音频。

点击菜单,激活 Shortcuts(第一次使用时 Shortcuts 在菜单较后的部分)。

IMG_CBC365994EE7-1.jpeg

Shortcuts 基于 OpenAI Whisper API 自动解析音频,并基于 GPT-3.5 总结音频内容。

将所有文本内容导入 Obsidian 的指定文件夹。

进度条走完后,即可在 Obsidian 中查看笔记。

最终会显示两个版本的内容,第一部分是摘要,使用 GPT-3.5 总结全文内容的总结版信息;第二部分是格式化文本,即完整内容。

演示视频:Share your iPhone memo to Obsidian

IMG_8703.PNG

整体体验挺顺畅的,识别速度略逊于 VoicenotesWhisper Memos,但差别不大。建议音频录制长度为 2-3min。

Voicenotes 的缺点是对中文的适配目前还太差,没有本文的效果好。

祝大家使用愉快!

5月12日更新:Voicenotes 现在也有和 Obsidian 同步的插件了,Obsidian 的社区氛围真好:https://github.com/mysticcoders/voicenotes-sync

使用 Telegram、邮件和 Alfred 记录 Obsidian 中的 Daily note

2024年4月27日 13:55

之前发布过一篇笔记,介绍如何使用 Drafts 在 Obsidian 中记录每日笔记(Daily Note)。至今,这套工具已使用近半年,非常好用。

但 Drafts 仅有 iOS 和 macOS 版,今天介绍一个更具泛用性的方法,使用 Telegram Bot 在 Obsidian 中记录笔记。

Phone to note 可以使用短信、邮件、Telegram、Alfred 等发送笔记到 Obsidian、Logseq 和 roam 中,目前免费

教程

本文以 Telegram 为例,介绍如何使用这款插件。

首先,需要注册 Phone to note,然后在设置面板中找到 ptn key,复制备用。

CleanShot 2024-04-27 at 13.25.16@2x.png

第二步,下载 Obsidian 插件:Phone to Note,将 ptn key 黏贴到设置界面中。

第三步,点击 Phone to Note 设置面板中的 Telegram Bot 链接,跳转到 Telegram 中。将 ptn key 黏贴到聊天窗口中发送,即可完成 Telegram 部分的绑定。

CleanShot 2024-04-27 at 13.27.54@2x.png

然后,在 Telegram 聊天窗口中发送信息,即可推送到 Obsidian 的 Daily note 文件中。

经测试,Phone to Note 无法推送图片,无法正常推送 Telagram markdown 格式,仅能推送纯文本。这部分体验与 Drafts 一致。

Phone to Note 有 35s-50s 的延迟,可能是定时(1 分钟)刷新一次 Phone to Note 数据库,获取信息。

不过,Phone to Note 不会为每条消息生成时间戳,内容多了会有点乱,只能在编辑文本的时候自己加上。

Alfred 插件的下载地址: https://ptn.gumroad.com/l/ptn-alfred ,也是黏贴 ptn key 即可使用,体验很好。

Chrome 插件的体验很奇怪,只新建了双向链接,没有将内容同步过来,目前不推荐。未来如果能实现 OneTab 的功能就很实用了。

❌
❌