眼看 GPT-4 系列正式开放(general available),OpenAI 还为流式(stream)输出增加 token 统计字段,我决定更新我的 GPT 网页。我一直用 chatgpt-web,自己修改代码加上的按量计费、版本切换(按量计费的 token 数还是估计的,对 GPT-4o 会高估),这时想再支持图片上传。想了几个方案,不是很妥:前端交互复杂,后端还依赖于 chatgpt-api 底层库。换一套“皮”是更好的选择。搜索 GitHub,就 ChatGPT Next Web 吧。
本来我没打算大改 ChatGPT Next Web。每个聊天对话能独立切换模型,它有了。我想要加上的图片输入,也有。我只需要加上计费。然而最终我还是动了很多地方,可以说是“魔改”吧,包括功能和外观的。我 fork 一份,提交了一个 bug 修复到上游,至今没有被合并。既然如此,我也没有后续提交的兴致。索性在这里稍微记录一下。
我用 Chanzhaoyu/chatgpt-web 搭了一个 GPT 的网页端,小范围交流共享。本来这个项目没有计费功能,我也懒得加,GPT-3.5 价格不高,我都自己承担。GPT-4 公开开放以后,眼看费用骤增,于是我琢磨怎么计费。原作者实际上在推一个收费版,但我以成本价共享还是作罢。最终,我设计实现一套分用户、按量计费的简单方案。然后趁热打铁,顺势编写切换模型版本的功能,这样想便宜可以用 3.5,想有高质量用 4。
因为我仍然很懒,同时无意与前述收费版本竞争,所以也没编写用户管理。HTTP Basic Auth 够用了,用 Nginx 即可方便实现访问认证。需要添加用户的时候用 htpasswd 添加。本文预设前提即是这个。当然这只影响获取用户名,其他设计代码可以通用。假设有人用我改好的 fork,请注意这一点。
在 V2EX 看到帖子,知乎在网页等全端加上隐写水印,水印信息包括用户 ID 及时间戳;肉眼很难察觉,几乎只能通过专业分析还原。截至本文发布,知乎似乎已经下线水印。帖子下面一些回复很有价值,网友给出各种分析与应对方式:在网页端,包括用 uBlock Origin 等插件以去广告方式去除,提醒网友对截图进行二值化处理等等。其中一个方法是用油猴脚本检测。
本文假定你已经了解 HTML、CSS、JavaScript 以及油猴脚本。油猴脚本是用于 GreaseMonkey 等浏览器扩展组件的脚本,本质是用户附加在网页上的一段 JavaScript 代码。用油猴脚本检测,即是用 JavaScript 检测。
花密是我介绍过的一款可记忆的独立密码解决方案。不同于随机生成密码然后存储起来管理的方案,花密不需要用户储存管理,也能为每个账户提供高强度的独立密码。
当初介绍花密的时候,我还是个初中生,只觉得花密好厉害,但没有查阅其算法的能力。如今,我已学过一些算法,也算是懂得一点密码学的知识。在建立自己的花密镜像后,觉得花密还有提升空间。于是斗胆试着改进一下。
今天总算解决了网站的两个 BUG。症状表现都是,用 iOS 上的手机 QQ 内置浏览器,AJAX(通过 jQuery 或是原生 XMLHttpRequest 使用)出现错误。如果不用手机 QQ 内置浏览器,用 iOS 系统自带 Safari,甚至微信内置浏览器,都能正常工作。一个是 GET 请求,另一个是带数据(请求体)的 POST 请求。
后来研究发现,理论上在别的环境下也可能有错,尤其是旧版本的 Safari 等,这是后话了。我们进入正题。
在几年前我发布了《多语言判断用户是否启用了请勿追踪(Do Not Track)》一文,介绍了“请勿追踪”的功能,并引用资料给出了多种语言的代码,判断用户是否启用了该功能。在我洋洋得意给出 PHP 优化版的代码后,又介绍了 JavaScript 的方法,但并未实际给出代码,只是说非常麻烦,不建议使用。
今天,我在给这个博客加入统计代码时考虑了这个功能:当访客开启 DNT 时,本站不会插入统计代码;否则会有第三方统计脚本载入。于是又看了 DNT 的一些现状,回顾了那篇文章。我发现,尽管我那么说,但用 JavaScript 其实也是可以写的。当然,我的立场是一贯的:优先使用 HTTP 头(header)判断是最好的。JavaScript 的相关特性仍处于实验阶段。
网页设计是个充满活力以及时刻更新迭代的行业,变化和发展非常之快,就像时尚圈的宠儿,人们总是还来不及适应这这种设计,马上就会有新的设计更新出来。回顾 2014 年的网页设计,扁平化设计逐步走向成熟,卡片化、瀑布流、时间轴设计方式层出不穷。在此,笔者想斗胆分析及揣测一下网页设计的现状和 2015 年网页设计的趋势,如若有不足之处,还望大家勇敢地批评与指正。
请勿追踪(英语:Do Not Track,简称 DNT,又译为“请勿跟踪”)是一项被提名的 HTTP 头。当用户提出启用“请勿追踪”功能后,具有“请勿追踪”功能的浏览器会在 http 数据传输中添加一个“头信息”(headers),这个头信息向商业网站的服务器表明用户不希望被追踪。这样,遵守该规则的网站就不会追踪用户的个人信息来用于更精准的在线广告。
自 Firefox 浏览器成为世界上首个支持“请勿追踪”功能的浏览器后,Internet Explorer(9及以上)、Safari 和 Opera 浏览器也相继添加了对“请勿追踪”功能的支持。最后 Chrome 23 浏览器也宣布支持此功能。当前,国内许多浏览器也已经支持了“请勿追踪”功能,甚至一些浏览器设置成默认启用。
(大家应该有了解过 Windows 8 与 Internet Explorer 10 的革命性改变吧?尤其是浏览器支持触控操作了。去年呢,微软撰文来指引我们如何“讨好”触控用户。那关于微软撰写的这篇文章呢,似乎只有一个概括版的中文版本,于是我运用我极不专业的英语水平给大家翻译全文过来了。欢迎批评指正!——译者注)
这篇文章提供了四个简单的指引,以确保您的触控用户可以最有效地使用您的网站。前两个确保触控用户可以访问您网站的全部功能,最后两个则使得触控更容易。
嗯,之前在 Visual Basic 上写过一个“解一元二次方程”的程序——虽然没有发表。之后也写了个 PHP 的,也没有发表。那么今天就发个 jQuery 版的“解一元二次方程”。
jQuery 版有什么优点呢?因为是网页程序,所以是跨系统的,只需浏览器就能执行;因为是采用 jQuery 技术,所以是实时计算的哦。话不多说,放出代码: