Kerwen Blog

Stay Hungry Stay Foolish

Use pkg to package 32 bit node project and enable /SafeSEH

PKG Build Process pkg has so called “base binaries” - they are actually same node executables but with some patches applied. They are used as a base for every executable pkg creates. pkg downloads...

Dynamic import ESModules in CommonJS

今天在升级第三方module到最新,升完就发现问题了。我们的project用的是CommonJs,但一些第三方的module最新版本用了ESModule。比如del。 del 6.0还是用的CommonJs,之前的调用是这么写的: 1 2 del = require('del') del('path') 从7.0开始,del开始用ESModule。官方例子变成了这样 1 2 impo...

c++里int和long的区别

在C语言和C++中,int 和 long 的大小是由编译器和操作系统的组合决定的,而不是直接取决于操作系统的位数。 在通常的情况下,int 表示整数,而 long 表示较大的整数。在32位系统上,int 通常是32位,而 long 通常也是32位。在64位系统上,int 通常是32位,而 long 通常是64位。 不同编译编译模型所占的位数 Datetyp...

读书笔记-被讨厌的勇气

过去与现在 如果一味地关注过去的原因,企图仅仅靠原因去解释事物,那就会陷入“决定论”。也就是说,最终会得出这样的结论:我们的现在甚至末来全部都由过去的事情所决定,而且根本无法改变 决定我们自身的不是过去的经历,而是我们自己赋予经历的意义 无论过去发生了什么样的事情,现在的状态取决于你赋予既有事件的意义 我们既不能乘坐时光机器回到过去,也不能让时针倒...

node-gyp 指定C++ standard

最近给产品升级Nodejs版本,从Node 18升级到Node22,升级完之后发现Addon project编译不过去了,编译的时候会报很多语法错误,很多是跟C++的隐式转换有关。比如以下代码 1 const LPSTR testStr = "Server-Group"; 在老版本Node18的时候不会报错,但Node环境切到22,就会有error报出来,而且是静态error。...

怎么检查exe是否enable了SAFESEH

克隆这个repo PESecurity 开一个powershell窗口,导入该模块 1 Import-Module .\Get-PESecurity.psm1 在Powershell里调用该模块检查文件PE属性 1 2 Get-PESecurity -file C:\Windows\System32\kernel32....

JavaScript socket编程

Socket编程是一种网络通信的编程范式,它允许程序通过网络发送和接收数据。在Web开发中,尤其是在JavaScript中,Socket编程通常指的是使用WebSocket协议进行实时通信。WebSocket提供了一种在单个TCP连接上进行全双工通信的方式,使得客户端和服务器之间可以实时交换数据。 在JavaScript中,通过HTML5引入的WebSocket API,开发者可以轻松地...

JavaScript 大数值的比较

最近使用JavaScript的时候遇到一个奇怪的现象。UI上一个输入数值的控件给定了一个超大的范围,从0 到3.40282347E+38即340282000000000000000000000000000000000。测试在最大最小值时,输入了340282000000000000000000000000000000001,即最大值+1,结果没有报错。 调查发现这跟JavaScript本身的...

pnpm 关掉 syslink

相比于npm,pnpm 能显著提高包的下载速度。但如果查看node module文件夹,会发现很多module文件夹都带了link图标。这是因为pnpm使用了syslink,不管你有多少个project使用了这个module,pnpm只下载一份,然后用syslink将其连接到所需要的project中。 可以使用命令pnpm store path来查看pnpm的缓存文件夹。 使用以下命令来...

Node SEA

官方文档 官方的文档直接机翻成汉语不像人话,尝试以自己理解的方式翻译了一下。 生成单执行程序 Node.js 支持创建单个可执行应用程序,方法是注入由 Node.js 准备的 blob,其中可以包含捆绑脚本, 将js文件转为二进制文件。在启动过程中,程序会检查是否有任何内容注入。如果找到 blob,它将执行 blob 中的脚本。否则 Node.js 像往常一样运行。 blob 关于什么是...