Mayx的博客 Mayx's Home Page / Thu, 01 Jan 2026 00:00:18 +0800 zh-CN 年终总结 0 error(s), ∞ warning(s) Thu, 01 Jan 2026 00:00:00 +0800 /2026/01/01/summary.html 总结 /2026/01/01/summary.html 在浏览器中运行Linux的各种方法 这篇文章介绍了在浏览器中运行Linux的各种方法,从最初的纯JS虚拟机JSLinux,到后来的WASM虚拟机如v86、WebVM、WebCM,再到容器化方案container2wasm,以及直接将Linux内核编译为WASM的方案。作者详细对比了这些方案的优缺点,包括性能、兼容性、功能和开发难度。文章还提到了模仿Linux环境的WebContainers和JupyterLite,并最终认为虚拟机方案更靠谱,但对WASM的未来充满期待。作者最后表示,博客上添加类似功能的计划还在考虑中,目前主要分享了各种方法的探索过程。 Mon, 01 Dec 2025 00:00:00 +0800 /2025/12/01/linux.html 浏览器 Linux 虚拟机 WASM /2025/12/01/linux.html 让博客永恒的探索 这篇文章讲述了作者为了提高博客的可靠性,探索利用被滥用的Git平台进行博客镜像的想法和实践。作者发现一些Git实例存在大量空仓库和异常用户,怀疑是SEO公司滥用,因此决定利用这些平台进行博客镜像备份,以应对平台倒闭或数据丢失的风险。作者选择Gitea和Forgejo平台作为目标,编写脚本自动注册账号并导入博客仓库,实现了自动化镜像分发。作者也意识到此类平台的稳定性存在不确定性,并思考了“量”和“质”两种方式确保博客永恒性的优劣,最终认为建立一个活跃的、自动执行维护操作的网络可能更有效。文章最后展示了作者创建的Git镜像列表,并表达了对博客永恒性的思考。 Sat, 01 Nov 2025 00:00:00 +0800 /2025/11/01/mirrors.html Git Gitea 镜像 Forever /2025/11/01/mirrors.html 一次找回GitHub上被删除仓库的经历 这篇文章讲述了作者通过GitHub的Fork特性找回一个被删除的Brainfuck可视化演示仓库的经历。由于原仓库和作者主页都已消失,作者推测GitHub在Fork时会共享对象库,只要有任意一个Fork仓库存在,GitHub就会保留所有对象,从而可以通过找到一个Fork仓库的最新提交Hash值来还原目标仓库。作者通过Linux内核仓库的Fork进行验证,随后在互联网档案馆上找到目标仓库的Fork以及其Hash值,最终通过Git命令将本地仓库的HEAD指针指向目标提交,成功恢复了该仓库的代码,并将其部署到自己的GitHub Pages上。最后,作者发现Software Heritage组织会保存所有代码,因此在遇到类似情况时可以直接通过该平台进行查找。 Sun, 12 Oct 2025 00:00:00 +0800 /2025/10/12/recover.html GitHub Git 代码恢复 软件存档 /2025/10/12/recover.html 关于ZIP Quine与自产生程序的探索 这篇文章主要介绍了作者在博客部署过程中,对ZIP Quine(自包含压缩包)和自产生程序的探索过程。作者起初想利用压缩包实现离线浏览,但遇到了压缩包不包含自身的问题。随后,作者回顾了ZIP Quine的原理,如droste.zip,以及如何通过DEFLATE压缩算法的LZ77编码实现自包含。作者尝试了Russ Cox的方案,但发现由于压缩格式限制,实际操作中存在数据容量的限制,无法存下整个博客。尽管如此,作者还是研究了嵌套循环的ZIP Quine,如Ruben Van Mello的论文中所描述的,尽管空间仍然有限。探索过程中,作者还学习了自产生程序(Quine)的概念,包括其实现原理和各种编程语言中的例子。作者最后感慨,探索过程中的收获比原本的目标更重要。 Mon, 01 Sep 2025 00:00:00 +0800 /2025/09/01/quine.html 压缩包 Quine 自产生程序 Quine Relay /2025/09/01/quine.html 在Tilde社区的游玩体验 这篇文章介绍了作者在Tilde社区的体验,这是一类基于类Unix环境的公共服务器社区,类似于家目录,提供预装的软件、开发环境和公共服务,如聊天室、邮件、BBS论坛等,强调了社区的互动性和共享精神。作者通过申请、审核过程加入了几个社区,并详细描述了在这些社区中的个人主页、编程支持(如Gemini和Gopher协议)、博客发布、代码托管(Git支持)、CI/CD部署以及使用Git hooks自动化博客更新等功能。尽管作者受限于语言和工具使用体验,未能充分参与社区交流,但对社区学习新知识和丰富博客内容印象深刻。 Sun, 10 Aug 2025 00:00:00 +0800 /2025/08/10/tilde.html tilde 服务器 git 体验 /2025/08/10/tilde.html 用Service Worker实现一个反向代理 这篇文章介绍了作者如何利用Service Worker在现代浏览器中实现一个简单的反向代理功能,以提供博客的备份和离线访问。作者原本希望通过Service Worker在用户浏览器中运行一个Web服务器来存储博客副本,但发现 tar.gz 文件的处理需要第三方库且难以找到适用的解决方案,尤其是对于tar文件的处理。作者最终选择使用Service Worker作为反向代理,将请求转发到其他网站,如GeoCities风格的静态网站托管平台,实现了类似的效果。这个过程中,作者体验到了浏览器功能的强大,并认为Service Worker在离线场景中有更大的潜力,尽管在他的例子中并没有充分展示这种优势。 Fri, 01 Aug 2025 00:00:00 +0800 /2025/08/01/sw-proxy.html 浏览器 Service Worker Worker 反向代理 /2025/08/01/sw-proxy.html 使用Cloudflare制作自动更新的网站预览图 这篇文章介绍了如何利用Cloudflare的“浏览器呈现”功能,创建一个自动更新的网站预览图服务。作者发现这个新功能可以用来展示网站在不同设备上的显示效果,通过在Cloudflare Workers中使用iframe和CSS缩放技术,以及调用Cloudflare的接口抓取浏览器渲染的截图。虽然免费用户每天只有10分钟的使用时间,限制了实时更新,但作者通过缓存实现了每天自动更新一次的预览图,并分享了具体的实现代码和使用方法。作者赞赏Cloudflare提供的这项强大且免费的服务。 Thu, 24 Jul 2025 00:00:00 +0800 /2025/07/24/screenshot.html Cloudflare Workers 网站截图 自动化 /2025/07/24/screenshot.html 一次服务器被入侵的经历 这篇文章讲述了作者在登录一台闲置服务器时发现被入侵的经历。通过观察服务器负载和进程,作者意识到存在恶意软件。作者使用了netstat、lsof等工具进行调查,发现了一个名为gs-dbus的木马进程和libprocesshider.so文件,这隐藏了其他恶意工具。作者通过查找自启动服务、清理木马、修改密码等方式进行了应对,并分析了入侵者使用的工具,如Global Socket项目和logclean。作者认为这次入侵虽然造成了损失,但也学到了一些知识。 Sun, 13 Jul 2025 00:00:00 +0800 /2025/07/13/hacked.html Linux 安全 服务器 入侵 /2025/07/13/hacked.html 使用XSLT为博客XML文件编写主题一致的样式 这篇文章讲述了作者如何为博客的XML订阅文件添加一个与博客主题一致的XSLT样式,以提高整体风格的统一性。作者遇到的问题包括Jekyll引擎的限制、XML格式的规则、命名空间对输出的影响,以及如何解决样式问题。通过模仿现有样式、自定义XSLT布局和doctype-system设置,作者最终成功地为订阅文件和Sitemap创建了定制的XSLT样式。整个过程不仅提升了博客细节,也让作者学习到了关于XML和XSLT的新知识。 Tue, 01 Jul 2025 00:00:00 +0800 /2025/07/01/xslt.html XSLT 博客优化 XML Feed /2025/07/01/xslt.html