Kerwen Blog

Stay Hungry Stay Foolish

JavaScript异步编程

异步编程是一种编程方式,它允许程序在等待某些操作完成的同时,继续执行其他任务。这种编程方式可以显著提高程序的执行效率,特别是在处理 I/O 密集型任务(如网络请求、文件读写等)时表现出色。 在 JavaScript 中,异步编程的实现主要依赖于事件循环(Event Loop)、回调函数(Callback Functions)、Promise 对象以及 async/await 语法糖等机制。...

xsd

XML Schema 描述XML文档的结构。 XML模式的目的是定义XML文档的合法构建块: 可以出现在文档中的元素和属性 子元素的数量(和顺序) 元素和属性的数据类型 元素和属性的默认值和固定值 下面是一个名为”note.xml”的简单XML文档: 1 2 3 4 5 6 7 <?xml version="1.0"?> <note> ...

Open file dialog in web page

Reference: Window: showOpenFilePicker() method

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,开发者可以轻松地...