4 分钟阅读

十五周刊 - 96

2023 第 45 周周报

欢迎来到十五周刊,我们每周都会分享有价值的前端技术文章,让你随时掌握前端的最新动态。此外,我们还会介绍一些实用的软件工具,帮助你提升工作效率。同时,我们也会分享一些个人生活感悟,希望通过分享,能够给你的生活带来一些启示和思考。希望你会喜欢我们的内容。

Devv Search:面向开发者的 AI 搜索引擎

https://devv.ai/

Devv Search 旨在为中文开发者提供更精确、更快速的代码搜索体验。针对「编程 + 中文」的场景做了很多优化。

AI 会依据开发者常用的文档作为数据库回答开发者的问题,并给出相关文档链接。

LobeChat:一个 UI 非常棒的开源 ChatGPT 应用

https://github.com/lobehub/lobe-chat

这个项目的 UI 和交互真的很棒,第一眼感觉都不像是开源项目,并且有插件 SDK,支持插件系统,更新也很活跃,使用 Vercel 一键部署也很快,值得一试。

另外建议可以尝试下 cloudflare 的 ai gateway 服务,方便管理 ai 接口请求,他支持:

  • Cache, 在调试接口的时候这个很好用,相同的问题不会多次消耗 token
  • 访问频率限制
  • 数据分析
  • 实时日志

不过 ai gateway 不支持自定义域名,可以使用 cloudflare worker 代理一下。

vite define 与 env 的区别

  • vite define 用于定义全局变量,env 用于定义环境变量
  • env 定义的变量会追加到 nodejs process.env 上, 如果变量以 VITE_ 开头,则前端代码可以通过 import.meta.env.VITE_ 获取
  • define 定义的变量在编译时会作静态替换,并不是挂载到 window 对象上

系统代理、 Tun 代理与 Vpn 代理的区别

1. 系统代理

常见的有 http 代理,socks5 代理。位于应用层。

缺点是需要软件主动支持,而且无法代理 UDP 请求。

ping 命令位于网络层,所以也无法代理。

2. Tun 代理

位于网络层,原理是创建一张虚拟网卡,改写系统路由表,将所有请求转发到虚拟网卡上。这样就能接管绝大多数系统流量,不需要软件支持。

3. Vpn 代理

主流 vpn 在网络层或数据链路层,所以几乎可以接管系统所有流量。

S13 享受比赛

周末看比赛的时候想到非中韩地区的观众其实挺幸福的,他们更少地在意输赢,只要比赛精彩就好。周六看了 WBG 和 BLG 的比赛,很精彩看得也开心,看 LPL 和其他赛区的比赛我也应该丢掉 LPL 必须赢的观点,享受比赛、享受生活。

我做了什么

Agenda 发布 plugin 版本

在原有 plugin 版本的基础上新增一个工具栏 icon,点击新 icon 进入 Agenda3。

umami 要求日志上传必须有合法的 hostname, 而插件模式 location 是 file://xxx, 所以 hostname 是空字符串。

目前的解法是使用自定义事件,然后手动设置 hostname。

禁用 umami 的自动统计。

html
1<script 2 async 3 src="https://umami.com/script.js" 4 data-website-id="UMAMI_WEBSITE_ID" 5 data-auto-track="false" 6></script>

增加自定义 hostname

ts
1export const track = (name: string, data?: Record<string, number | string>) => { 2 if (!umami) return console.error("umami is not defined"); 3 if (import.meta.env.VITE_MODE === "plugin") { 4 // @ts-expect-error type correct 5 return umami.track(params => ({ 6 ...params, 7 hostname: "plugin", 8 name, 9 data, 10 })); 11 } 12 return umami.track(name, data); 13};

Agenda 支持 Plan 页面

Changelog