轶哥

📚 Having fun with AI Agent. Always learning.

对接ChatGPT3.5/4的API实现打字机效果
  •   更新:2023-05-08 10:29:52
  •   首发:2023-03-13 23:52:44
  •   Node.js
  •   6451

回一个完整的对话文本。我们将介绍一个 Node.js 服务器和一个 HTML 页面的示例代码,这两个组件通过 HTTP 请求和 SSE(Server-Sent Events)协议连接,并实现了基于流式 API 的长时间运行的聊天功能。

对接ChatGPT3.5/4接口本身很简单,但是实现stream以打字机效果展示并且实现自动长回复,不少小伙伴遇到问题,特整理了一份3.5接口开放当天用于临时验证的示例代码供学习参考(千万不要用于生产环境)。

解决pnpm (ERR_INVALID_THIS)异常 Node.js 20
  •   更新:2023-05-05 14:12:45
  •   首发:2023-05-04 17:13:09
  •   Node.js
  •   8847

在Node.js 20版本中,你可能会遇到如下异常:

 WARN  GET https://registry.npmjs.org/chatgpt/-/chatgpt-5.0.10.tgz error (ERR_INVALID_THIS). Will retry in 10 seconds. 2 retries left.

为了解决这个问题,你只需要升级到pnpm v8.3.1或更高版本。可以通过以下命令安装并激活指定版本的pnpm:

corepack prepare pnpm@8.3.1 --activate
CDN加载失败自动切换为加载本地静态资源
  •   更新:2023-04-30 23:50:01
  •   首发:2023-04-30 23:50:01
  •   Node.js
  •   1211

在Web开发中,我们通常使用CDN(内容分发网络)来加速网站的静态资源(如CSS和JavaScript文件)加载。然而,CDN有时可能会失效,导致网站加载速度变慢或者无法正常运行。本文将介绍一种优化方案,当HTML中引入的style或JavaScript静态资源CDN失效时,自动切换为加载本地js/css。我们还将介绍一个名为 "CDN to Local Fallback for HTML Files" 的VSCode插件的开发和测试过程,以帮助您更轻松地实现这个方案。

前端静态资源CDN加载失败的优化方案

要实现这个优化方案,我们需要在HTML文件中添加一个特殊的<script>标签,当CDN资源加载失败时,该脚本将自动切换到使用本地资源。具体实现方法如下:

  1. 遍历HTML文件中所有引用外部CSS和JavaScript资源的<link><script>标签。
  2. 下载这些标签所指向的CDN资源,并将其保存到本地目录。
  3. 在每个<link><script>标签中添加一个onerror属性,该属性指向一个名为loadFallbackResource的函数。
  4. 在HTML文件中添加一个<script>标签,该标签包含loadFallbackResource函数的实现,以及一个在页面加载完成后遍历所有带有onerror属性的元素并调用loadFallbackResource的事件监听器。
Windows客户端EV证书代码签名踩坑
  •   更新:2023-03-21 17:20:27
  •   首发:2023-03-21 16:20:24
  •   Node.js
  •   1945

在现今的数字时代,软件安全日益受到重视。对于Windows客户端开发者来说,使用EV(Extended Validation)证书对软件进行代码签名是确保用户信任和防止恶意攻击的关键一环。本文将探讨在Windows下的桌面软件开发过程中进行EV证书代码签名的必要性,未签名可能存在的问题,以及在签名过程中可能遇到的问题和解决方法。

Node.js 网页截图服务 - 网页快照API
  •   更新:2023-03-12 12:17:03
  •   首发:2019-01-13 19:02:22
  •   Node.js
  •   10813

Puppeteer 是 Headless Chrome Node API。也就是谷歌将Chrome无头浏览模式的接口封装成Node.js的API。利用Puppeteer实现网页截图/网页快照服务是非常容易的。

webpage-capture是基于Puppeteer实现带权限认证(多APP授权)、配备消息队列管理的网页快照API。

源代码:https://github.com/yi-ge/webpage-capture.

功能: 可对百万级网页数据进行截图采集的API服务。

无刷新微信扫码登陆解决方案
  •   更新:2023-03-12 11:59:03
  •   首发:2018-09-02 22:22:10
  •   Node.js
  •   11032

数天前,为解决微信二维码扫码登陆在Electorn跳转处理繁琐的问题,写一个微信开放平台扫码登陆解析处理工具😊,将frame数据处理为图片或Base64图片数据返回客户端进行扫码。解决Chrome70中open.weixin.qq.com腾讯SSL证书不被信任的问题(微信官方于2018年8月23日更换了域名证书),解决Chrome68中frame跨域被拦截的问题。

此方案最大特点扫码登录无跳转🤠。

Node.js 版本 Demohttps://weixin.openapi.site/demo

PHP 版本 Demohttps://apio.xyz/weixin-login-php/

须知

  此方案仅适用于微信开放平台-网站应用

MySQL批量重命名表名和列名
  •   更新:2022-02-23 20:16:12
  •   首发:2022-02-23 20:16:12
  •   Node.js
  •   2246

MySQL批量重命名表名和列名,修改表名为大驼峰,列名为小驼峰。

最近公司项目重构,为了适应Prisma的习惯,保持数据库字段命名方式和代码模式一致,特地编写此脚本实现批量重命名已存在的表名和列名。

Auto.js 小米MIUI自动解锁屏幕脚本
  •   更新:2022-02-22 17:28:41
  •   首发:2022-02-21 22:53:16
  •   Node.js
  •   5525

使用Auto.js解锁MIUI13的密码锁屏,不能直接滑动屏幕,会因为防误触功能导致解锁失败,关闭防误触也没用。只需要滑动的时候不那么直接即可。

if (!device.isScreenOn()) {        //从息屏状态  将屏幕唤醒
    device.wakeUp()//唤醒设备
    sleep(2000) // 等待屏幕亮起

    swipe(random(device.width / 3, device.width / 2), random(device.height * 8 / 10, device.height * 7 / 10), random(device.width / 3, device.width / 2), random(device.height * 2 / 10, device.height / 10), random(500, 1000))
    sleep(1000)

    //解锁
    desc(1).findOne().click()
    desc(2).findOne().click()
    desc(3).findOne().click()
    desc(4).findOne().click()
}

通过下拉再点击时间的方式在MIUI13行不通了,但实现也不复杂,核心实现是上述第四行代码。

  上一页 下一页