mirror of
https://github.com/Mabbs/mabbs.github.io
synced 2026-06-18 05:49:24 +02:00
Compare commits
7 Commits
71d493c2a8
..
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 5f2a3a99ee | |||
| 36cf19d4aa | |||
| 9c769e4ab2 | |||
| fd5f1703dd | |||
| 2a512a487d | |||
| 556e27c9ad | |||
| 5a4baf5f4b |
+2
-1
@@ -177,5 +177,6 @@
|
||||
"/2026/02/08/xslt.html": "这篇文章讲述了Google计划弃用XSLT技术,以及作者对这一决定的调查和应对方案。Google基于XSLT用户占比低、库存在漏洞等原因,建议将其从Web标准中删除。作者发现许多用户依赖XSLT进行博客订阅美化,甚至将其作为博客框架。为了对抗这一趋势,有人创建了网站https://xslt.rip,并开发了Polyfill库,通过WASM方式保持XSLT功能。虽然Polyfill库需要额外引用JS代码,但作者已将其提交至CDNJS。随后,作者探讨了替代方案,包括使用纯CSS美化订阅源(由AI生成feed.css),以及混合XHTML的方式,通过添加XHTML命名空间来实现链接等功能,但这种方法会产生“不纯粹”的警告。文章最后总结,技术可能会消失,但总有其他技术可以解决问题,并强调了适应浏览器厂商决策的重要性。",
|
||||
"/2026/03/01/llm3.html": "这篇文章介绍了作者近期在LLM部署和应用方面的经历,主要包括以下几个方面:\n\n首先,作者升级硬件,从单张RTX4090 48GiB升级到双路RTX4090 48GiB,并购买了TRX40+TR 3960X的主板套装,用于运行GPT-OSS模型。随后,作者尝试使用vLLM框架替换Ollama,并成功配置了GPT-OSS模型,达到了接近190Tps的性能。\n\n其次,作者体验了DeepSeek 1M上下文模型,发现其在处理长上下文任务时表现出色,能够展现摘要无法捕捉的细节,并成功生成简历、分析人格等。\n\n此外,作者还尝试使用DeepSeek重构Mabbs,并发现DeepSeek能够识别作者的博客信息,这表明训练样本中包含了作者的信息。\n\n最后,作者在8GiB内存的MacBook Pro上运行了LFM2.5-1.2B-Thinking模型,并使用了Apollo软件,体验了其快速的推理速度和良好的思考能力。作者总结认为,AI的发展令人惊叹,软件优化使其在有限硬件环境下也能运行。",
|
||||
"/2026/04/14/ai-agent.html": "这篇文章介绍了“AI个人助理”Agent的发展现状和各种尝试。作者体验了OpenClaw、QClaw、WorkBuddy、Cline、LuckClaw和ApkClaw等不同的Agent项目,发现它们在功能、易用性和性能上各有优劣。OpenClaw安装和使用存在困难,国内大厂的QClaw和WorkBuddy则更易于上手,但免费额度有限。作者认为,开发任务更适合在编辑器集成AI中进行,如GitHub Copilot。LuckClaw在微型开发板上运行表现出色,ApkClaw则利用手机的优势操作移动应用。尽管Agent技术仍存在诸多问题,但其应用场景不断拓展,有望吸引更多人参与其中,推动AI应用化进程。",
|
||||
"/2026/05/01/virtual-net.html": "这篇文章介绍了作者在尝试异地组网搭建虚拟局域网时,对多种组网工具的探索和体验。作者首先尝试了n2n,但由于其项目停止更新且在NAT后的机器间存在掉线问题,最终选择了WireGuard作为主要方案。文章详细描述了WireGuard的配置过程,包括在Linux、OpenWrt和openEuler系统上的安装和配置,并遇到了各种各样的挑战,例如在红米AX3000路由器上找不到内核模块,以及在openEuler上缺少WireGuard相关包。此外,文章还提到了Netmaker和Headscale等WireGuard的控制平面,以及VNT和EasyTier等其他组网工具,并总结了最终选择WireGuard的原因:简单、够用、可靠性不错,且已经投入了大量配置。"
|
||||
"/2026/05/01/virtual-net.html": "这篇文章介绍了作者在尝试异地组网搭建虚拟局域网时,对多种组网工具的探索和体验。作者首先尝试了n2n,但由于其项目停止更新且在NAT后的机器间存在掉线问题,最终选择了WireGuard作为主要方案。文章详细描述了WireGuard的配置过程,包括在Linux、OpenWrt和openEuler系统上的安装和配置,并遇到了各种各样的挑战,例如在红米AX3000路由器上找不到内核模块,以及在openEuler上缺少WireGuard相关包。此外,文章还提到了Netmaker和Headscale等WireGuard的控制平面,以及VNT和EasyTier等其他组网工具,并总结了最终选择WireGuard的原因:简单、够用、可靠性不错,且已经投入了大量配置。",
|
||||
"/2026/06/01/dedupe.html": "这篇文章介绍了如何通过优化游戏资源文件来节约游戏占用的硬盘空间。作者由于Mac只有256GiB的硬盘存储空间,在下载了几十部游戏后空间不足,于是寻找解决方法。文章主要介绍了以下几点:\n\n1. 使用jdupes工具去除重复素材:作者发现许多游戏使用相同的引擎和素材,导致硬盘空间浪费。通过使用jdupes工具进行硬链接,可以有效去除重复文件,节约空间。\n\n2. 不同引擎的处理方式:\n - 对于RPG制作大师MV/MZ,作者使用RPG Maker Decrypter工具解密资源文件,并将图片转换为WebP格式以压缩空间。\n - 对于RPG制作大师XP/VX/VA,作者使用mkxp-z工具跨平台运行游戏,并通过RPG Maker Decrypter解包资源文件,与RTP素材合并后进行去重。\n - 对于Ren'Py游戏,作者使用unrpa工具解包rpa文件,但由于公共资源不多,仅在系列游戏情况下进行解包。\n\n3. 最终效果:通过以上优化,作者成功将游戏文件夹大小从47G降至33G,节约了大量硬盘空间。"
|
||||
}
|
||||
+3
-2
@@ -18,7 +18,8 @@ Lanke's blog,https://blog.blueke.top/,https://blog.blueke.top/rss.xml,请为一
|
||||
寒士杰克,https://www.hansjack.com/,https://www.hansjack.com/feed/,喜欢捣鼓,不断进步!
|
||||
Pinpe 的云端,https://pinpe.top/,https://pinpe.top/rss.xml,一个属于自己的云朵。
|
||||
Chise Hachiroku,https://chise.hachiroku.com/zh/,https://chise.hachiroku.com/zh/feed/,向明日的辉迹,干杯!
|
||||
映屿,https://www.glowisle.me/,https://www.glowisle.me/atom.xml,关于互联网、书籍、生活琐事以及那些一闪而过的念头
|
||||
映屿,https://blog.verdant.ee/,https://blog.verdant.ee/atom.xml,关于互联网、书籍、生活琐事以及那些一闪而过的念头
|
||||
Restent's Notebook,https://blog.gxres.net/,https://blog.gxres.net/atom.xml,不前沿技术分享
|
||||
Coseroom,https://coseroom.com,,
|
||||
RavelloH's Blog,https://ravelloh.com,https://ravelloh.com/feed.xml,Beginning of meditation.
|
||||
初然忆,https://www.imcry.vip,https://www.imcry.vip/index.xml,初心如初见,然忆似流年。
|
||||
姓王者,https://xingwangzhe.fun/,https://xingwangzhe.fun/rss.xml,探索、学习、进步、创造无限可能!
|
||||
|
||||
|
+21
-15
@@ -28,7 +28,6 @@ http://162.215.134.149:4000/mayx/blog
|
||||
http://durfee.mycrestron.com:3000/mayx/blog
|
||||
https://gitea.nongnghiepso.com/mayx/blog
|
||||
https://codes.tools.asitavsen.com/mayx/blog
|
||||
http://50.19.111.193:3000/mayx/blog
|
||||
https://git.zeroplay.io/mayx/blog
|
||||
http://45.33.87.87/mayx/blog
|
||||
http://168.126.28.36:3000/mayx/blog
|
||||
@@ -56,7 +55,6 @@ http://27.124.12.222:3000/mayx/blog
|
||||
https://gitea.hintsight.com/mayx/blog
|
||||
http://blackobelisk.xyz:3000/mayx/blog
|
||||
https://git.the-kn.com/mayx/blog
|
||||
https://gitea.shirom.me/mayx/blog
|
||||
https://git.wangxinlei.cn/mayx/blog
|
||||
http://123.56.193.182:3000/mayx/blog
|
||||
http://167.172.7.198:8081/mayx/blog
|
||||
@@ -81,7 +79,6 @@ https://git.nusaerp.com/mayx/blog
|
||||
http://35.207.205.18:3000/mayx/blog
|
||||
http://git.zjsciot.com:3000/mayx/blog
|
||||
https://gitea.ontoast.uk/mayx/blog
|
||||
http://112.124.40.88:5510/mayx/blog
|
||||
http://121.36.37.70:15501/mayx/blog
|
||||
http://187.216.152.151:9999/mayx/blog
|
||||
http://116.63.173.179:8001/mayx/blog
|
||||
@@ -126,7 +123,6 @@ http://202.65.194.19:3000/mayx/blog
|
||||
http://101.201.34.43:3000/mayx/blog
|
||||
https://git.gloje-rinchen-dorjee-rinpoche-buddhist-monastery.org/mayx/blog
|
||||
http://101.35.227.2:3000/mayx/blog
|
||||
http://175.126.123.163:3000/mayx/blog
|
||||
http://209.141.47.52:3000/mayx/blog
|
||||
http://60.204.158.188:3000/mayx/blog
|
||||
http://60.204.156.211:3000/mayx/blog
|
||||
@@ -159,7 +155,6 @@ http://210.245.20.73:3333/mayx/blog
|
||||
http://43.248.97.109:3000/mayx/blog
|
||||
http://113.207.86.104:3080/mayx/blog
|
||||
http://39.96.195.72:10082/mayx/blog
|
||||
https://221.219.181.35:30000/mayx/blog
|
||||
http://172.172.102.93:3000/mayx/blog
|
||||
http://115.120.245.164:3000/mayx/blog
|
||||
http://35.194.179.90:3000/mayx/blog
|
||||
@@ -184,7 +179,6 @@ http://120.46.23.215:3000/mayx/blog
|
||||
http://121.41.2.71:3000/mayx/blog
|
||||
http://110.41.177.80:5000/mayx/blog
|
||||
https://gitea.dsmaster.myds.me/mayx/blog
|
||||
https://gitea.primecontrols-dev.com/mayx/blog
|
||||
http://www.scserverddns.top:13000/mayx/blog
|
||||
https://git.lucas-michel.fr/mayx/blog
|
||||
https://git.imvictor.tech:2/mayx/blog
|
||||
@@ -207,7 +201,6 @@ https://Repo.gusdya.net/mayx/blog
|
||||
https://git.m.ctf.arrobe.fr/mayx/blog
|
||||
http://69.62.64.52:3333/mayx/blog
|
||||
https://git.flymiracle.com/mayx/blog
|
||||
https://gitea.manekenbrand.com/mayx/blog
|
||||
http://106.14.138.181:3000/mayx/blog
|
||||
https://git.yyuu.xyz/mayx/blog
|
||||
http://39.107.70.124:3000/mayx/blog
|
||||
@@ -224,7 +217,6 @@ http://101.37.69.204:3000/mayx/blog
|
||||
https://gitea.tecamino.com/mayx/blog
|
||||
http://39.99.175.172:8000/mayx/blog
|
||||
http://8.138.13.251:3000/mayx/blog
|
||||
http://47.115.223.229:8888/mayx/blog
|
||||
http://104.254.131.244:3000/mayx/blog
|
||||
https://gitea.alacloud.de/mayx/blog
|
||||
https://git.tobiasweise.dev/mayx/blog
|
||||
@@ -235,7 +227,6 @@ http://8.130.128.130:3000/mayx/blog
|
||||
https://repos.fbpx.io/mayx/blog
|
||||
https://git.cavemanon.xyz/mayx/blog
|
||||
http://svn.rivastudio.cn/mayx/blog
|
||||
https://kamtk.ru:4000/mayx/blog
|
||||
http://39.98.126.115:8080/mayx/blog
|
||||
http://46.202.189.66:3000/mayx/blog
|
||||
http://82.26.157.11:3001/mayx/blog
|
||||
@@ -258,7 +249,6 @@ http://113.44.218.8:3000/mayx/blog
|
||||
https://git.cenoq.com/mayx/blog
|
||||
http://8.152.205.35:3000/mayx/blog
|
||||
http://120.210.80.160:3000/mayx/blog
|
||||
http://1.95.192.200:59300/mayx/blog
|
||||
http://194.5.152.156:3000/mayx/blog
|
||||
http://8.155.172.147:3001/mayx/blog
|
||||
https://git.erfmann.dev/mayx/blog
|
||||
@@ -279,7 +269,6 @@ http://221.203.14.217:3000/mayx/blog
|
||||
https://git.sophiagwen.au/mayx/blog
|
||||
http://139.196.96.28:13000/mayx/blog
|
||||
https://dev.kiramtech.com/mayx/blog
|
||||
https://git.ihatemen.uk/mayx/blog
|
||||
https://git.123doit.com/mayx/blog
|
||||
http://62.43.207.91:8889/mayx/blog
|
||||
https://git.johntsai.online/mayx/blog
|
||||
@@ -354,7 +343,6 @@ https://git.automathon.org/mayx/blog
|
||||
https://git.esen.gay/mayx/blog
|
||||
https://git.webtims.ru/mayx/blog
|
||||
https://gitea.personalsoftware.space/mayx/blog
|
||||
http://gitea.yiban.com.tw:3030/mayx/blog
|
||||
https://gitlab.iplusus.com/mayx/blog
|
||||
https://gitea.zachl.tech/mayx/blog
|
||||
https://git.miasma-os.com/mayx/blog
|
||||
@@ -403,7 +391,6 @@ http://82.156.249.211:3000/mayx/blog_cn
|
||||
http://36.133.248.69:3088/mayx/blog_cn
|
||||
http://220.205.16.27:18081/mayx/blog_cn
|
||||
http://81.69.221.216:3000/mayx/blog_cn
|
||||
http://115.159.194.75:4000/mayx/blog_cn
|
||||
http://183.204.60.122:10081/mayx/blog_cn
|
||||
http://43.139.240.37:17000/mayx/blog_cn
|
||||
http://159.75.27.114:3000/mayx/blog_cn
|
||||
@@ -424,7 +411,6 @@ http://35.175.189.8/mayx/blog
|
||||
http://meowug.com:8418/mayx/blog_cn
|
||||
http://36.138.125.206:3000/mayx/blog_cn
|
||||
https://git.4lcap.com/mayx/blog_cn
|
||||
http://101.43.238.71:3000/mayx/blog_cn
|
||||
http://59.110.175.62:4322/mayx/blog_cn
|
||||
https://www.luluvip.cn:8419/mayx/blog_cn
|
||||
http://xianyuhome.cn:11013/mayx/blog_cn
|
||||
@@ -434,7 +420,6 @@ https://git.crystalyx.net/mayx/blog
|
||||
https://gittea.dev/mayx/blog
|
||||
https://git.newnaturalphilosophy.org/mayx/blog
|
||||
https://code.infininov.com/mayx/blog
|
||||
https://git.apt142.ru/mayx/blog
|
||||
http://gitea.mcelwain.net/mayx/blog
|
||||
https://chunkks.com/mayx/blog
|
||||
https://gitea.earthmanrpg.me/mayx/blog
|
||||
@@ -520,3 +505,24 @@ https://git.heartnn.com/mayx/blog
|
||||
https://git.joinplu.me/mayx/blog
|
||||
https://git.research.dezeeuw.ca/mayx/blog
|
||||
http://149.104.29.239:8081/mayx/blog
|
||||
http://ysx.myds.me:3005/mayx/blog
|
||||
http://124.71.169.183:3000/mayx/blog
|
||||
https://git.csi-kjsce.org/mayx/blog
|
||||
https://hiwifi.denq.us:8418/mayx/blog
|
||||
http://39.108.124.198:3000/mayx/blog
|
||||
http://1090391-twk8saas.tmweb.ru/mayx/blog
|
||||
https://git.msoucy.me/mayx/blog
|
||||
https://git.niisse.net/mayx/blog
|
||||
http://139.224.24.61:3000/mayx/blog
|
||||
http://140.120.108.238:49308/mayx/blog
|
||||
http://220.132.16.87:3000/mayx/blog
|
||||
http://git.chilidoginteractive.com:3000/mayx/blog_cn
|
||||
https://git.thunder-data.cn/mayx/blog_cn
|
||||
https://git.cukak.com/mayx/blog_cn
|
||||
https://git.ixu.me/mayx/blog_cn
|
||||
http://git.uhfdemo.com/mayx/blog_cn
|
||||
http://43.143.142.38:7001/mayx/blog_cn
|
||||
http://111.230.243.127:3000/mayx/blog_cn
|
||||
http://git.qniao.cn/mayx/blog_cn
|
||||
https://gitea.smartechouse.com/mayx/blog_cn
|
||||
http://git.feashow.cn/mayx/blog_cn
|
||||
|
||||
|
+2
-2
@@ -162,7 +162,7 @@ $.get(BlogAPI + "/suggest?id={{ page.url }}&update=" + lastUpdated.valueOf(), fu
|
||||
<div id="gitalk-container" data-page-id="{{ page.id }}"></div>
|
||||
|
||||
<script>
|
||||
var gitalk = new Gitalk(Object.assign({ id: '{{ page.id }}' }, GitalkConfig))
|
||||
gitalk.render('gitalk-container')
|
||||
var gitalk = new Gitalk($.extend({ id: '{{ page.id }}' }, GitalkConfig));
|
||||
gitalk.render('gitalk-container');
|
||||
</script>
|
||||
<!-- <![endif]-->
|
||||
Vendored
+5
-4
File diff suppressed because one or more lines are too long
+14
-44
@@ -1,51 +1,21 @@
|
||||
/**
|
||||
* 根据 URL ?kw= 参数高亮页面内匹配的关键词。
|
||||
* 提取为全局函数,供 pjax.js 在页面切换后复用,避免重复实现。
|
||||
*/
|
||||
function highlightKeyword() {
|
||||
const urlParams = new URLSearchParams(window.location.search);
|
||||
const keyword = urlParams.get('kw')?.trim();
|
||||
var match = location.search.match(/[?&]kw=([^&]+)/);
|
||||
var kw = match ? $.trim(decodeURIComponent(match[1].replace(/\+/g, ' '))) : '';
|
||||
if (!kw) return;
|
||||
|
||||
if (!keyword) return;
|
||||
var reg = new RegExp('(' + kw.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + ')', 'gi');
|
||||
var escapeMap = { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' };
|
||||
|
||||
// 转义正则表达式特殊字符,避免安全问题
|
||||
const escapedKeyword = keyword.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
||||
// 创建不区分大小写的正则表达式(全局匹配)
|
||||
const regex = new RegExp(`(${escapedKeyword})`, 'gi');
|
||||
|
||||
// 递归遍历并高亮文本节点
|
||||
const escapeHTML = str => str.replace(/[&<>"']/g,
|
||||
tag => ({
|
||||
'&': '&',
|
||||
'<': '<',
|
||||
'>': '>',
|
||||
'"': '"',
|
||||
"'": '''
|
||||
}[tag] || tag));
|
||||
function highlightTextNodes(element) {
|
||||
$(element).contents().each(function () {
|
||||
if (this.nodeType === Node.TEXT_NODE) {
|
||||
const $this = $(this);
|
||||
const text = escapeHTML($this.text());
|
||||
|
||||
// 使用正则替换并保留原始大小写
|
||||
if (regex.test(text)) {
|
||||
const replaced = text.replace(regex, '<mark>$1</mark>');
|
||||
$this.replaceWith(replaced);
|
||||
}
|
||||
} else if (
|
||||
this.nodeType === Node.ELEMENT_NODE &&
|
||||
!$(this).is('script, style, noscript, textarea')
|
||||
) {
|
||||
highlightTextNodes(this);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$('section').each(function () {
|
||||
highlightTextNodes(this);
|
||||
$('section, section *').not('script, style, textarea').contents().filter(function() {
|
||||
return this.nodeType === 3;
|
||||
}).each(function() {
|
||||
var escapedText = this.nodeValue.replace(/[&<>"']/g, function(m) { return escapeMap[m]; });
|
||||
var highlighted = escapedText.replace(reg, '<mark>$1</mark>');
|
||||
if (escapedText !== highlighted) {
|
||||
$(this).replaceWith(highlighted);
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
function initCopyButtons() {
|
||||
$('.copy').remove();
|
||||
|
||||
+1
-12
@@ -10,19 +10,12 @@
|
||||
var PJAX_OPTS = {
|
||||
container: CONTAINER,
|
||||
fragment: CONTAINER,
|
||||
timeout: 8000,
|
||||
timeout: 5000,
|
||||
scrollTo: false
|
||||
};
|
||||
|
||||
// ========== 各组件重初始化 ==========
|
||||
|
||||
/** AI 摘要(post.html 内联脚本,pjax 后由 executeScripts 触发) */
|
||||
function reinitAISummary() {
|
||||
if (typeof ai_gen === 'function' && $('#ai-output').length) {
|
||||
try { ai_gen(); } catch (e) { /* ignore */ }
|
||||
}
|
||||
}
|
||||
|
||||
/** Google Analytics 页面浏览事件 */
|
||||
function trackPageView() {
|
||||
if (typeof gtag === 'function') {
|
||||
@@ -114,7 +107,6 @@
|
||||
initVisitors();
|
||||
initCopyButtons();
|
||||
highlightKeyword();
|
||||
reinitAISummary();
|
||||
reinitLive2d();
|
||||
trackPageView();
|
||||
scrollToAnchor();
|
||||
@@ -134,9 +126,6 @@
|
||||
$('body').addClass('pjax-loading');
|
||||
});
|
||||
$(document).on('pjax:complete', doPjaxComplete);
|
||||
$(document).on('pjax:error', function (xhr, textStatus, error) {
|
||||
console.warn('[pjax] error, fallback:', error);
|
||||
});
|
||||
$(document).on('pjax:end', function (event, xhr, options) {
|
||||
var $container = $(options.container || PJAX_OPTS.container);
|
||||
|
||||
|
||||
+2
-2
@@ -12,7 +12,7 @@ image: https://screenshot.mayx.eu.org/
|
||||
<!-- 遍历分页后的文章 -->
|
||||
<table class="entry-content h-feed">
|
||||
{% for post in paginator.posts %}
|
||||
<tr><td class="h-entry" data-url="{{ post.url }}">
|
||||
<tr><td class="h-entry post-row" data-url="{{ post.url }}">
|
||||
<h2 class="p-name"><a class="post-link u-url" href="{{ post.url }}">{{ post.title }}{% if post.layout == "encrypt" %} [加密] {% endif %}</a></h2>
|
||||
<p>
|
||||
<time class="date dt-published" datetime="{{ post.date | date_to_xmlschema }}">{{ post.date | date: "%-d %B %Y" }}</time>
|
||||
@@ -79,7 +79,7 @@ image: https://screenshot.mayx.eu.org/
|
||||
<a href="https://xn--sr8hvo.ws/next">→</a><br /><a href="https://icp.gov.moe/?keyword=20218888" target="_blank">萌ICP备 20218888号</a></small>
|
||||
<input name="live2dBGM" value="https://music.163.com/song/media/outer/url?id=523658881.mp3" type="hidden" />
|
||||
<script>
|
||||
$(document).on('click', '.h-entry', function(e) {
|
||||
$(document).on('click', '.post-row', function(e) {
|
||||
if ($(e.target).closest('.p-category').length === 0) {
|
||||
go($(this).attr('data-url'));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user