JavaScript

共 6 篇文章。

给博客做个站内全文搜索:纯前端离线倒排索引的设计与取舍

• Development

最近给本站正在使用的Chaos主题 增加并逐步完善了一套在客户端进行的全文检索功能。

早年本站使用的是Google站内搜索,不过换成Hugo以后模板中的这个搜索框也就去掉了,毕竟现在也没什么人看blog了,写下去除了给自己留点记录之外,或多或少其实是一种行为艺术,而本站的读者基本上也都知道如何使用搜索引擎。

不过,有时我自己也会希望在blog里找一些以前的文章,虽然本站在Google搜索中的覆盖率还相当高,但有些时候新的文章会搜索不到,或是其实内容已经过时但仍然被索引。虽然在大语言模型的帮助下我整体重建了分类和标签的标注,但这些对于定位有时还是不太方便。

Hugo作为一个静态站点生成器,其实已经有了不少成熟的本地搜索方案。不过,今年都已经2026年了,vibe一个本地搜索并不困难。这里记录一下这个本地搜索的演化过程,以及在这个过程中的一些工程取舍。

阅读全文… ( 本文约 4441 字,阅读大致需要 9 分钟 )

polyxslt:给浏览器补上一个轻量级 XSLT 处理器

• Development

我给本站的 RSS 和 Atom feed 加了一个纯 JavaScript 实现的 XSLT 处理器,为浏览器移除内建 XSLT 支持做准备。

本站在2021年2月5日为RSS feed和sitemap添加了XSLT样式,后来重新设计本站主题 chaos-theme 时也沿用了这一做法。

这些 XML 文档便于程序读取,但直接给人看就不太直观;XSLT 可以把它们转换成 HTML,让同一份内容同时服务于程序和人类读者。

阅读全文… ( 本文约 3613 字,阅读大致需要 8 分钟 )

如何:不借助第三方服务粗略检测访客是否来自中国大陆

• Development

作为一个平时基本不怎么碰前端代码的开发者,以前偶尔遇到需要折腾前端的需求时,我总有一种「摸着石头过河」的感觉。

最近我就碰到了这样一个棘手的场景:我的某个网站上需要调用的一些服务,在中国大陆的网络环境下访问时经常会出现加载失败或极度缓慢的问题。为了保证用户的浏览体验,比较理想的做法是:检测到访客来自中国大陆时,默认将他们重定向到支持大陆访问的同类型备用服务上。

阅读全文… ( 本文约 1223 字,阅读大致需要 3 分钟 )

一个简单的密码生成器

• Security

我个人比较喜欢复杂的随机生成的密码。这是一个JavaScript的密码生成器,完全裸奔的界面,可以自行设定字母、数字和特殊符号出现的概率(默认是字母=3×52,数字=7×10,特殊符号2×27,或者78:35:27的关系)。

使用方法很简单,设置参数之后按Generate按钮,系统会随机生成希望数量的随机密码。然后从里面挑一个自己觉得容易记住的就可以了。

阅读全文… ( 本文约 241 字,阅读大致需要 1 分钟 )

Bug fixed in rss.js

• Development

It turns out that just doing a substring “invalid” search within the XML DOM’s responseText is silly and I have replaced it with an explicit compare. This is still imperfect, though, but fairly bullet-proof as I added an “invalid” in recent blog which caused the RSS reader to consider the feed itself is invalid :-(

参与评论