timestamp存取差几小时? mysql timestamp的timezone问题以及如何在mysql2设置

在 Node.js 应用中使用 MySQL 时,时间戳(TIMESTAMP)字段出现的“8 小时差异”是一个经典难题。这个问题的根源并非单一因素,而是由 MySQL 自身的时区机制、mysql2 驱动的特定行为,以及一个极具迷惑性的默认配置共同造成的。

本文将澄清 MySQL TIMESTAMP 的存储与转换原理,并深入剖析 mysql2 驱动中 timezone 配置项的真正含义及其默认值'local'所带来的陷阱,最终提供两套清晰的最佳实践方案。

Read More

drizzle如何处理mysql的bit类型

mysql 的 boolean 类型其实是 tinyint(1)的别名,一些 ORM 工具无法识别把他识别到对应语言的 boolean 类型,日常实践有时候会选择用bit(1)这个类型,比如javaJOOQ,boolean 类型会变为 java 的Byte,而bit(1)则是 java 的Boolean

但是 drizzle 的 mysql 内置类型中没有bit(1)。你用他的drizzle-kit pull之后会返回这个结果:

1
2
// Warning: Can't parse bit(1) from database
// bit(1)Type: bit(1)("deleted").notNull(),

但是如果是已经建好的表,其他逻辑在用的话,把bit(1)改成boolean并不方便。

需要我们自己定义一个类型。

bit(1)这个类型不同驱动返回不同,有些可能是作为整数,有些可能是作为 Buffer。所以扩展一下就行:

Read More

Next.js 如何在客户端导航时获取上一页(referer)

想给之前上线的工具站做个博客数据统计: blogs

理所当然用到了document.referer,最方便的获取上一个页面的方式,结果发现获取到的都是第一次 load 的页面,而不是导航前的那个页面。

为什么会这样?

Next.js 在生产环境中默认采用前端导航(Client-side Navigation)的方式。这意味着页面加载完之后,在网站内部点击链接时,浏览器并不会执行一次完整的页面刷新。相反,Next.js 会在客户端通过 JavaScript 异步加载新页面的数据和组件,然后更新 DOM。

这种类似 单页应用(SPA) 的行为导致了一个关键问题:
document.referrer 的值在页面首次加载后保持不变。当通过内部链接从blog/zh/1导航到 blog/zh/post/[slug] 时,由于没有发生完整的页面重载,document.referrer 的值仍然会是最初访问网站的那个值,而不是blog/zh/1

Read More

Next.js RSC _rsc参数丢失的那些坑以及解决方案

最近在用 Next.js 的 RSC(React Server Component)时遇到了一个比较隐晦的问题,记录一下踩坑过程和应对方案。

如果你在项目里既使用了 CDN(并且缓存了 html),又使用了middleware的重定向(middleware 会处理 rsc 请求),又用了 RSC 特性(开启了 prefetch 等情况),如果你发现部分页面 html 变成了一大串“乱码”(其实是 rsc 请求的返回结果),可以仔细看看。

RSC 请求是怎么工作的?

Next.js 在请求 RSC 和 HTML 页面时,路径和方法其实是一样的,唯一的区别在于它会带上一个 _rsc 的参数和一些特定 header。

比如你访问页面 /about

  • HTML 请求
    GET /about
  • RSC 请求
    GET /about?_rsc=<随机字符串> 以及特定的 header

这里的 _rsc 参数是 Next.js 内部用来标识“这是一次 RSC 请求”,header 里也有类似 Next-Router-State-Tree, rsc 等用于数据请求和分割的内容。

Read More

[翻译]我如何使用 Claude Code

原文出处: https://spiess.dev/blog/how-i-use-claude-code

一个月前,我订阅了 Claude Max。在此之前,我已经使用包括 Claude Code 在内的 AI 代理一段时间了,但随着统一价格的推出,我的使用量猛增,它已成为我许多任务的日常驱动力。我发现自己现在去 VS Code 的次数少了很多。

由于 AI 代理目前对每个人来说都是新事物,我想分享一些我最近注意到模式可能会很有趣。以下是我如何使用 Claude code。

开始新对话 (Start New Threads)

如果说我希望你从这篇文章中学到一件事,那就是你应该更频繁地调用 /clear

AI 代理往往随着对话时间的延长而变得更不可预测。当你提出不同问题时尤其如此。我发现即使这意味着重复一些指令,创建一个新的提示通常会更有效。

一旦我开始更积极地这样做,我的结果就显著改善了。而且我绝对不是唯一一个提出这个建议的人。

Read More

Next.js使用auth.js+dirzzle+postgresql报错分析

在自己的测试项目里想着做登录功能,看到authjs就接到项目里去,本身就使用的drizzle,在不配置 db adapter 的情况下运行正常,但只要配置就会报错:

1
2
3
4
5
6
7
8
⨯ Error [TypeError]: Cannot read properties of undefined (reading 'reduce')
at <unknown> (.next\server\edge\chunks\edge-wrapper_c7ecd8c0.js:709:27)
at runModuleExecutionHooks (.next\server\edge\chunks\edge-wrapper_c7ecd8c0.js:755:9)
at instantiateModule (.next\server\edge\chunks\edge-wrapper_c7ecd8c0.js:707:9)
at getOrInstantiateModuleFromParent (.next\server\edge\chunks\edge-wrapper_c7ecd8c0.js:640:12)
at esmImport (.next\server\edge\chunks\edge-wrapper_c7ecd8c0.js:143:20)
at [project]/src/db/db.ts [middleware-edge] (ecmascript) (.next\server\edge\chunks\[root of the server]__a687996d._.js:28:218)
at <unknown> (.next\server\edge\chunks\edge-wrapper_c7ecd8c0.js:709:27)

无法启动

Read More

显卡的TOPS AI算力比较

虽然自己没设备但喜欢聊 😀,和别人讨论的时候经常要反复查,查询一下汇总,有可能填错了。。。到时候发现错误再订正吧。

AMD 的没找到哪个表/文档里有算 TOPS 的…就不列了

N 卡

20 系到 40 系

GeForce RTX 20 系列

型号 架构 制程 (nm) 显存大小 显存类型 显存位宽 显存带宽 (GB/s) 峰值单精度 (FP32) TOPS (AI) TDP (W)
RTX 2080 Ti Turing 12 11GB GDDR6 352-bit 616 13.45 TFLOPS 114 TOPS 260
RTX 2080 Super Turing 12 8GB GDDR6 256-bit 496 11.15 TFLOPS 89 TOPS 250
RTX 2080 Turing 12 8GB GDDR6 256-bit 448 10.07 TFLOPS 81 TOPS 225
RTX 2070 Super Turing 12 8GB GDDR6 256-bit 448 9.06 TFLOPS 72 TOPS 215
RTX 2070 Turing 12 8GB GDDR6 256-bit 448 7.47 TFLOPS 65 TOPS 175
RTX 2060 Super Turing 12 8GB GDDR6 256-bit 448 7.19 TFLOPS 57 TOPS 175
RTX 2060 Turing 12 6GB GDDR6 192-bit 336 6.45 TFLOPS 52 TOPS 160

Read More

Jina ReaderLM v2 测试记录

jina 出了 ReaderLM v2 版本,这个版本的 ReaderLM 在处理文本数据时更加高效和准确。
之前简单测试了下 v1, 结论是:

  • 幻觉严重, 尤其特别喜欢造 url
  • 很容易触发无限生成 比如 example1 example2…. 一直生成下去

第一眼就是不可用就没继续了。
这次 v2 来了,测试了一下,幻觉问题好了很多,无限生成测试了几个也没遇到,但最为一个 html 转 markdown 的工具还是不够稳定。
这里的稳定性主要是指,与传统的基于语法树解析的工具相比,它在处理速度和结构识别的准确性上还有差距。他的确能生成不错的 markdown,但是很容易被正确结构但是内容文本里有特殊构造的/或者有一些语法错误的 html 页面所影响。

注意:这个博客里的测试只是为了列出 v2 的一些问题,针对问题进行特殊构造的测试,实际网页可能也遇不到文中提到的问题,具体以实际场景为准了。
顺道一提,这个模型是以 CC 协议发布的,所以商用场景需要遵守相关协议。

Read More

聊一聊AWS Route 53的托管区

AWS 坑爹啊

最近查看 AWS 的账单才发现,在 route53 买的每个域名每个月都会额外收 0.5 刀,并且还有解析费,一看是因为用了托管区(hosted zone),这个收费是托管区的。

这个托管区的作用其实就是 DNS 管理,emmmmm….那可不得不迁移到赛博大善人 Cloudflare 了。

这里记录一些遇到的问题吧,并把一些概念阐述下。

Read More