SF
日升_rs
日升_rs
注册登录
关注博客
注册登录
主页
关于
RSS
手把手带你掌握Zustand:轻量级React状态管理利器
月恒
4 月 10 日
阅读 9 分钟
296
一个小巧、快速且可扩展的极简状态管理解决方案。Zustand 提供了一个基于 Hooks 的舒适 API,它不啰嗦、不强加架构约束,但有足够的约定性,使其语义明确,风格类似 Flux。
时区转换工具+PWA离线网页
月恒
4 月 9 日
阅读 17 分钟
376
时区转换工具+PWA离线网页一、时区转换工具对比工具说明Date原生 JS API,有限的时区支持,无法指定时区,仅使用本地时区。Intl.DateTimeFormat原生格式化显示,可指定时区,但不能修改时区逻辑。luxon强烈推荐,现代、轻量、功能强,原生支持时区、时间戳、格式化等。dayjs + timezone 插件类似 moment,更现代,但时区...
Chrome 135 版本开发者工具(DevTools)更新内容
月恒
4 月 8 日
阅读 3 分钟
415
Performance > Summary(性能 > 概览)选项卡现在会显示配置分析(profile)和函数调用相关的脚本及来源链接,这样就不需要再将鼠标悬停在 Main 轨道上的事件上来查看这些信息了。
Chrome 135 版本浏览器更新
月恒
4 月 8 日
阅读 6 分钟
375
Chrome 135 将账户注册的登录页面从营销网站迁移到动态网站,同时也将 OpenID Connect (OIDC) 的隐式流程迁移到授权码流程。这样做的目的是进一步提升第三方托管账户的安全性和用户体验。
Browser-use:基于 Python 的智能浏览器自动化 AI 工具调研与实战
月恒
4 月 7 日
阅读 36 分钟
381
Browser-use 是一个旨在将 AI “智能体”(Agents)与真实浏览器进行交互的 Python 库,可以轻松实现浏览器自动化。在配合 LLM(如 GPT 系列)使用时,浏览器-use 能够让你的智能体发起对网页的访问、操作页面元素、收集信息、执行脚本等,从而扩展 AI 应用的落地场景。
Electron 开发:获取当前客户端 IP
月恒
3 月 28 日
阅读 6 分钟
382
Electron 开发:获取当前客户端 IP一、背景与需求1. 项目背景客户端会自启动一个服务,Web/后端服务通过 IP + port 请求以操作客户端接口2. 初始方案与问题2.1. 初始方案:通过代码获取本机 IP {代码...} 2.2. 遇到的问题如果设备开启了代理,可能获取的是代理 IP,导致后端请求失败二、解决方案设计1. 总体思路获取本机...
Vite CVE-2025-30208 安全漏洞
月恒
3 月 27 日
阅读 2 分钟
788
CVE-2025-30208 是 Vite(一个前端开发工具提供商)在特定版本中存在的安全漏洞。此漏洞允许攻击者通过特殊的 URL 参数绕过对文件系统的访问限制,从而获取任意文件内容(包括非 Vite 服务目录范围外的文件)。
Electron 客户端项目自启动
月恒
3 月 26 日
阅读 3 分钟
440
app.setLoginItemSettings 与 auto-launch 对比分析一、稳定性对比1. app.setLoginItemSettings优点:作为Electron官方API,有官方维护和支持缺点:在某些Windows版本上存在已知问题部分Windows 10/11更新后可能失效在macOS权限更严格的版本上可能需要额外授权不支持Linux2. auto-launch优点:针对各平台做了特殊适配(W...
NextJS CVE-2025-29927 安全漏洞
月恒
3 月 25 日
阅读 3 分钟
593
CVE-2025-29927 是一个存在于 Next.js 框架中的关键安全漏洞。该漏洞允许攻击者通过伪造或篡改 x-middleware-subrequest 请求头,绕过中间件(Middleware)的安全检查,从而访问到原本受保护的路由或 API,进而导致授权绕过(Authorization Bypass)以及潜在的更深层次安全风险。本篇文章将对漏洞成因、受影响范围、修复...
Chrome 134 版本开发者工具(DevTools)更新内容
月恒
3 月 24 日
阅读 4 分钟
457
Chrome 134 版本开发者工具(DevTools)更新内容一、隐私与安全面板旧的 Security 面板已演变为隐私与安全面板,并新增了一个专注于隐私的部分。在该部分中,可以:在 DevTools 打开时,临时限制第三方 Cookie(可带或不带例外),并测试网站在此情况下的表现。查看一张表格,其中包含有关第三方 Cookie 的信息,包括它...
Chrome 133 版本开发者工具(DevTools)更新内容
月恒
3 月 24 日
阅读 3 分钟
327
Performance > Insights 选项卡可以突出显示文件大小可进一步优化的图像。单击洞察中的图像,即可在 Network track 中查看它的高亮显示。
ChromeOS 134 版本更新
月恒
3 月 13 日
阅读 3 分钟
479
从 ChromeOS 134 开始,自助终端(Kiosk)模式支持 隔离 Web 应用(Isolated Web Apps,IWA),提供 更安全、更强大 的应用解决方案,并可 深度集成系统功能。
ChromeOS 133 版本更新
月恒
3 月 13 日
阅读 3 分钟
344
从 ChromeOS 133 开始,托管用户 现在可以 无缝打开和编辑 Microsoft Office 文件(Word、PowerPoint、Excel),无论他们使用的是 Microsoft 365(Office for the web) 还是 Google Workspace。
Chrome 浏览器 134 版本新特性
月恒
3 月 11 日
阅读 4 分钟
596
从 Chrome 134 开始,开发者可以在 Chrome DevTools(开发者工具) 中使用全新的 “安全与隐私”(Security & Privacy) 面板,测试当 第三方 Cookie 受限 时,网站的行为表现。
Chrome 浏览器 133 版本新特性
月恒
3 月 11 日
阅读 4 分钟
442
为了使搜索能够结合用户当前浏览的文档或网站的上下文,PDF 文件的字节数据或网站 HTML 也会被发送到 Google 服务器,但同样不会与任何 ID 或账户关联,不会被任何人查看,且其内容数据或生成的数据不会被记录。
Cron 表达式用法
月恒
2 月 14 日
阅读 2 分钟
674
Cron 表达式 是一种用于定义定时任务调度的标准语法,广泛应用于 Linux 系统中的定时任务管理器 cron。它通过一组字段指定任务的执行时间,灵活地控制任务在特定时间点的运行。
Electron 客户端心跳定时任务调度库调研文档 - Node.js 任务调度库技术调研文档
月恒
2 月 14 日
阅读 9 分钟
578
本文将对七个流行的定时任务调度库:node-cron、rxjs、bull、node-schedule、agenda、bree、cron。这些库都可以用来处理定时任务,但它们的特点和适用场景有所不同。我们将从以下几个方面进行详细对比:功能优缺点使用场景简易度下载使用量
Electron 主进程和渲染进程通信方法总结
月恒
2 月 12 日
阅读 9 分钟
676
Electron 主进程和渲染进程通信一、主进程(IPCMain)方法名称参数类型作用典型使用场景配套的渲染进程方法或说明on(channel, listener)channel:string listener:回调函数 + Event + 参数监听方法监听渲染进程发送的异步消息;通过 event 参数可对消息做回复接收渲染进程通过 send、sendSync 等发送的消息,如指令、通...
CSS 小技巧 —— CSS 实现 ... 的 loading 加载中动画
月恒
2 月 11 日
阅读 1 分钟
924
CSS 小技巧 —— CSS 实现 ... 的 loading 加载中动画1. 前言需求中想做出个这种效果,这个页面又是一个单独的 html 页面,没必要再单独引入其他模块了就想着用 CSS 动画来实现2. 实现效果3. 实现思路3.1. 项目要求... 不能使所在的 dom 元素宽度变化,不然加个 . 变宽,少个点变窄,不好看需要使用 animation 动画的 infi...
CSS 小技巧 —— CSS 实现 Tooltip 功能-鼠标 hover 之后出现弹层
月恒
2 月 11 日
阅读 6 分钟
478
CSS 小技巧 —— CSS 实现 Tooltip 功能-鼠标 hover 之后出现弹层1. 两个元素实现 {代码...} 2. 通过 ::after 和 ::before 实现 {代码...} 3. 实现 Tooltip 上下左右四个位置展示 {代码...}
Vue Vite 项目增加 eslint 和 prettier
月恒
2 月 10 日
阅读 9 分钟
662
Vue Vite 项目增加 eslint 和 prettierEslint 版本为 8.X1. 安装 8.X 版本的 eslint {代码...} 2. 安装 eslint 以及 prettier 以及一堆依赖 {代码...} 3. 安装 TS 依赖 {代码...} 4. 初始化 eslint {代码...} 4.1. 选择 eslint 的校验模式选择第三个4.2. 选择项目类型选择第一个 ESM 规范4.3. 选择项目框架我们是 vue,...
React Vite 项目增加 eslint 和 prettier
月恒
2 月 10 日
阅读 7 分钟
630
React Vite 项目增加 eslint 和 prettierEslint 版本为 8.X1. 安装 8.X 版本的 eslint {代码...} 2. 安装其他包 {代码...} 3. 初始化 eslint {代码...} 3.1. 选择 eslint 的校验模式选择第三个3.2. 选择项目类型选择第一个 ESM 规范3.3. 选择项目框架我们是 React,选择第一个3.4. 是否使用 TS项目中建议使用 TS3.5. 运...
Chrome 130 版本新特性& Chrome 130 版本发行说明
月恒
2024-11-04
阅读 6 分钟
503
当用户执行某个操作时,Toast 会在屏幕上短暂弹出,确认操作成功或提供快捷链接。 例如,当将某项内容添加到阅读列表时,Toast 会确认项目已添加,并提供一个快速链接以打开阅读列表侧边栏。Toast 以小型提示的形式显示,部分覆盖网页内容,部分覆盖浏览器顶部工具栏。
Chrome 130 版本开发者工具(DevTools)更新内容
月恒
2024-11-04
阅读 4 分钟
590
Chrome 130 版本开发者工具(DevTools)更新内容一、网络(Network)面板更新1. 重新定义网络过滤器网络面板获新增了一些过滤条件,这些过滤条件是根据反馈重新设计的,特定于类型的过滤条件保持不变,即在简洁的多选栏中显示一组标记。可以通过 Cmd/Ctrl 键 + 点击来多选类型过滤条件。为了简化界面,我们将与隐藏、屏...
使用 CRXJS 构建 Chrome 插件在 Chrome 浏览器升级到 130xxx 版本之后,出现CSP错误
月恒
2024-10-16
阅读 6 分钟
1.1k
使用 CRXJS 构建 Chrome 插件在 Chrome 浏览器升级到 130xxx 版本之后,出现 Content Security Policy 错误一、前言之前有个老哥找我写了插件,到现在几个月过去了,今天早上和我说 Chrome 浏览器报错运行不起来了,但是 edge 浏览器没问题。就帮忙定位了下问题,发现是 Content Security Policy 的问题导致的报错;老哥...
JS 中 structuredClone 和 JSON.parse(JSON.stringify()) 克隆对象的区别
月恒
2024-09-06
阅读 5 分钟
690
structuredClone 是在 ECMAScript 2021(ES12)标准中引入的,ECMAScript 2021 规范正式发布于 2021 年 6 月
Rust 操作符及示例
月恒
2024-09-06
阅读 3 分钟
510
Rust 操作符Rust 提供了一系列操作符(operators),每种操作符都有特定的功能和应用场景。1. 算术操作符这些操作符用于基本的数学运算:+ : 加法,用于两个数相加。示例: let sum = 5 + 10;- : 减法,用于两个数相减。示例: let difference = 10 - 5;* : 乘法,用于两个数相乘。示例: let product = 4 * 3;/ : 除法,用...
Rust 中的关键字以及示例
月恒
2024-09-05
阅读 4 分钟
631
1. 常见关键字as: 用于类型转换,例如将一个值从一种类型转换为另一种类型。 {代码...} break: 用于提前退出循环。 {代码...} const: 定义一个常量,常量的值在编译时就确定,不会在运行时改变。 {代码...} continue: 跳过当前循环中的剩余部分,直接进入下一次循环迭代。 {代码...} crate: 表示当前包或库的根模块,通...
Chrome 浏览器插件获取网页 window 对象(方案三)
月恒
2024-09-05
阅读 5 分钟
739
最近有个需求,是在浏览器插件中获取 window 对象下的某个数据,当时觉得很简单,和 document 一样,直接通过嵌入 content_scripts 直接获取,然后使用 sendMessage 发送数据到插件就行了,结果发现不是这样滴...
Chrome 浏览器插件获取网页 window 对象(方案二)
月恒
2024-09-04
阅读 5 分钟
566
最近有个需求,是在浏览器插件中获取 window 对象下的某个数据,当时觉得很简单,和 document 一样,直接通过嵌入 content_scripts 直接获取,然后使用 sendMessage 发送数据到插件就行了,结果发现不是这样滴...
1
(current)
2
下一页
1
(current)
下一页