摘要: 标准化了指针分配前检查NULL、释放后置NULL、新分配的内存初始化为0的动作。唯一的缺陷是,指针声明时候必须初始化为NULL,这个无法用宏优雅地写出来。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <tim 阅读全文
posted @ 2025-06-13 10:08 沙老师 阅读(2) 评论(0) 推荐(0)
摘要: 虽然即使Visual Studio生成工具也必须要安装,但是实际上命令行编译器完全可以独立运行,所以你可以在任何临时位置(比如虚拟机里)安装,然后使用以下批处理脚本提取出来,注意目录、版本号等需要按你的实际情况修改: @echo off cd /d %~dp0 robocopy /mir "C:\P 阅读全文
posted @ 2025-05-20 12:44 沙老师 阅读(118) 评论(0) 推荐(0)
摘要: 本文使用 CC BY-NC-ND 4.0 许可。 项目地址:https://github.com/shajunxing/banana-nomake 我不喜欢那些构建系统,我认为他们带头违反了他们自己制定的“机制优于策略”和“KISS”原则。为什么要学习那些丑陋死板的规则?图灵完备的编程语言不更好吗? 阅读全文
posted @ 2025-05-15 21:25 沙老师 阅读(10) 评论(0) 推荐(0)
摘要: 脑抽升级,其实完全没必要,跑得好好的,升级啥。更改源,apt update,apt full-upgrade,弹出蓝色界面提示什么“xdm”需要重启,是否继续,因为是在图形界面下,我没敢点继续,怕xterm连带被关掉,然后就悲剧了,apt无法再执行,提示glibc版本找不到,估计是apt升级了但是l 阅读全文
posted @ 2025-05-08 23:34 沙老师 阅读(6) 评论(0) 推荐(0)
摘要: 参考 https://stackoverflow.com/questions/2124339/c-preprocessor-va-args-number-of-arguments 我原先用的是: #define _expand(x) x #define _numargs(_0, _1, _2, _3 阅读全文
posted @ 2025-05-03 07:37 沙老师 阅读(1) 评论(0) 推荐(0)
摘要: 比如你想加某人好友,又不愿意自己或对方帐号打在公屏上让所有人都看到,可以这样做:弄个临时或垃圾邮箱,让对方把帐号发到这个邮箱,同时附上一段随机字串,你收到后,把随机字串发在公屏上,问是他发的吗,如此确认即可。 当然了,也可以用非对称密钥。 阅读全文
posted @ 2025-05-01 04:56 沙老师 阅读(3) 评论(0) 推荐(0)
摘要: 比如你的手机开了ftp,或者别的电脑开了什么服务,你懒得再过去翻看ip地址,就用这个脚本,自动从你电脑获取ip地址和掩码计算需要扫描的子网地址,然后自动扫描,需要扫哪些端口自己改一下就是了。 let net = require("net"); let os = require("os"); func 阅读全文
posted @ 2025-04-29 21:46 沙老师 阅读(14) 评论(0) 推荐(0)
摘要: Banana Script更新 经过大量代码重构,从引入令牌缓存到使用`js_value`代替`js_value *`以减少大量内存分配操作(结构赋值比内存分配快约10倍),再到引入字节码,性能与Python的比较从十几降至约5,现在性能问题主要集中在哈希映射操作上,例如`js_variable_get`。也许在未来,变量访问可以优化为数组操作。 阅读全文
posted @ 2025-02-10 15:29 沙老师 阅读(7) 评论(0) 推荐(0)
摘要: Banana Script,一个严格子集 JavaScript 的解释器 我的目标是剔除我在实践中总结的JavaScript语言的没用的和模棱两可的部分,只保留我喜欢和需要的,创建一个最小的语法解释器。只支持 JSON 兼容的数据类型和函数,函数是第一类值,函数支持闭包。我不喜欢面向对象编程,所以所有与类相关的内容都不支持。没有任何内置不可删除的全局变量、全局函数或对象成员,哪怕解释器初始化的时候加入的内容都可以在任何时候轻松删除,恢复到空空如也的状态。 阅读全文
posted @ 2025-02-01 21:51 沙老师 阅读(21) 评论(0) 推荐(0)