普通视图

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

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

作者 Dayu
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

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

作者 Dayu
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 插件

作者 Dayu
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

作者 Dayu
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 风格点赞按钮

作者 Dayu
2025年2月8日 17:27

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

功能

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

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

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

安装

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

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

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

作者 Dayu
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 中

作者 Dayu
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

目前使用的自托管服务

作者 Dayu
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 问题

作者 Dayu
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年的付费墙

作者 Dayu
2024年11月25日 11:55

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

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

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

目前使用的 WordPress 插件

作者 Dayu
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

作者 Dayu
2024年11月17日 22:48

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

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

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

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

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

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

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

作者 Dayu
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插件

作者 Dayu
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 ,跟踪项目进展。

公告:网站被攻击了

作者 Dayu
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次。

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

❌
❌