自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(116)
  • 资源 (5)
  • 收藏
  • 关注

原创 Linux过于复杂的机制带来的安全问题

Linux 的 capabilities 与 ext4 隐藏属性是两套独立机制:前者无法通过常规编译选项禁用,后者虽无全局开关,但可通过裁剪内核驱动实现部分关闭。现代恶意软件正利用这些复杂机制隐蔽存在,而系统越复杂,审计越难。即便受训管理员也难以掌握所有角落——这正是 KISS 原则的深层价值:简化系统,降低攻击面,提升可审计性。

2026-11-01 11:04:46 70

原创 关于suid设计漏洞的讨论

SUID标志位本身非漏洞,但其模型易引发提权风险。更安全的做法是采用特权daemon机制:普通用户通过Unix套接字向独立守护进程请求特定操作,由daemon基于内核提供的peer credentials进行权限校验,实现权限分离与最小权限原则。此设计避免将root权限交予用户进程,降低攻击面,符合现代安全架构理念。

2026-11-01 10:00:46 162

原创 Linux Purification Plan - Make Linux portable

本文提出一种简化二进制加载机制的方案:仅依赖文件路径(非当前目录)和PATH环境变量。通过修改musl libc的动态链接器,实现对共享库的灵活定位,并利用内核参数ld=覆盖PT_INTERP,使动态可执行文件可移植。最终构建出完全自包含、无需依赖外部环境的最小化系统,成功在虚拟机中启动。

2026-10-31 06:58:27 202

原创 Linux Purification Plan - Direct Boot tools for VirtualBox

作者摒弃QEMU与initrd,追求简洁稳定,采用VirtualBox实现直接启动内核。自研FAT16文件系统工具raw.c,生成符合8.3命名规范的.raw镜像,嵌入修改版boot.s引导代码与静态编译的init程序,通过make.bat自动化构建。使用4.19.325内核(兼容纯C编译)及VBoxManage转换为VDI,最终在64位Linux虚拟机中成功启动,实现轻量级、可复用的最小化系统部署。

2026-10-31 06:56:06 212

原创 树形控件可用性优化

本文通过六张图片展示了某技术方案的实现过程与效果对比,涵盖设计原理、关键步骤、优化策略及最终成果。图像清晰呈现了从初始状态到优化后的变化,突出系统在性能提升、稳定性增强方面的显著改进,体现了该方法在实际应用中的有效性与可行性。

2026-10-27 17:04:00 165

原创 Linux Purification Plan - Preface

该项目(linux-purification-plan)旨在简化Linux系统,消除冗余与复杂性。主张摒弃绝对路径、分层依赖和繁琐安装,实现“即解即用”的纯净体验:从Live CD启动后,仅需提取核心系统至单一目录并配置引导即可运行;用户软件以ZIP包形式存在,解压即用,无需安装或路径配置。目标是回归简洁、可控的系统本质,让Linux真正属于使用者。

2026-10-24 12:18:15 144

原创 xterm自带的绘图功能,有趣

Tektronix

2026-10-16 10:44:26 57

原创 linux比windows死板的地方

Linux架构源于老旧Unix,依赖绝对路径与僵化设计,难以实现多系统共存或灵活安装。其ELF格式缺乏PE式内置数字签名,安全机制形同虚设。所谓“自由”实为技术妥协,硬链接滥用、PT_INTERP不可修改等缺陷暴露其根本局限。讽刺的是,用户沉迷装机却无视底层缺陷,徒有热情而无真知。KISS原则早已抛弃,系统架构陈腐不堪,堪称现代计算中的裱糊之作。

2026-10-15 19:04:29 68

原创 用时间函数生成真随机的方法

2026-09-25 23:39:07 190

原创 SJX Script,纯C实现的类JS语法的极简引擎,Version 2.0

本文介绍了 sjx-script 脚本语言的语法规则和特性。该语言支持变量、数据类型(包括空值、布尔值、数字、字符串、数组、对象和函数)、表达式运算符、控制语句(条件、循环)和错误处理。变量作用域遵循局部原则,函数支持闭包和默认/剩余参数。采用引用计数垃圾回收机制,并提供gc()函数处理循环引用。内置函数库提供常用功能,如输入输出和文件操作。语法设计强调简洁性和明确性,避免隐式转换和复杂特性。代码可从GitHub下载,包含Windows和Linux版本。

2026-06-04 22:10:25 190

原创 SJX Make,纯C实现的智能make程序,无需makefile脚本,全自动,适合c项目

摘要:作者开发了一个名为sjx-make的智能编译系统,仅用400行代码实现自动分析头文件依赖和增量并行编译。系统采用约定式目录结构,支持调试/发布模式、静态/动态链接,兼容Windows和POSIX系统。通过简单配置文件即可自定义编译选项,如链接库、主函数匹配模式等。默认生成与项目同名的库文件及带main函数的可执行程序,输出到bin和tmp目录。系统已提供Windows可执行版本,支持clean、debug等命令行参数,简化了C项目的构建流程。(149字)

2026-05-21 10:32:14 52

原创 一种比操作系统更加抽象的,可以裸跑的库

本文提出一种轻量级解决方案:将CPU架构统一抽象,通过C标准库封装保护模式和内存管理功能,使编译后的二进制程序可直接在裸机上运行,无需完整操作系统。该方法适用于服务程序直接部署场景,由boot loader加载即可运行。同时支持可选功能模块(网络、文件系统、外设驱动等),可基于Linux驱动构建适配层。这种标准化库设计在嵌入式等特定场景具有实用价值。

2025-10-08 12:05:16 136

原创 窗口系统(windowing system)的架构思考

摘要:文章探讨了实现通用窗口系统时存储优化的方案。作者发现采用三块32位色的1000x1000存储区需要12MB内存过大,决定改为按需取用像素。创新性地提出使用函数指针实现类似duck typing的get_pixel机制,为不同UI对象类型(如位图、文本框)预置特定实现,通过函数指针动态调用。相比传统继承多态,这种方法更灵活,无需严格分类,只需函数签名匹配即可。这种设计避免了类型判断开销,同时保持了扩展性。

2025-08-16 10:17:35 264

原创 try catch throw的本质

本文揭示了异常处理机制的本质:try/catch相当于结构化goto,throw本质是带有错误标记的return。作者通过C语言错误处理、goto优化、setjmp/longjmp到最终try/catch的演进过程,说明不同语言异常处理只是实现方式的差异。关键在于函数返回值中嵌入成功标记,失败时携带错误信息。不同语言(C/Go/C++/Java)的处理方式差异仅在于实现细节,本质上都是通过某种形式的错误传递和跳转机制完成异常处理。

2025-08-06 19:48:56 384

原创 历史版本的vscode下载地址

作者因不满VSCode日益臃肿的体积,尝试寻找历史版本。通过修改URL找到1.10版下载页,并发现从1.13.1开始提供zip便携版。经测试验证:1.13.1已支持--user-data-dir参数,1.25.1开始支持data目录便携模式。作者还发现GitHub存档包含所有历史版本的发布说明。最终确认1.25.1版本完全满足需求,既轻量又支持便携功能。

2025-07-28 21:58:02 2149

原创 debian bookworm virtualbox xorg xinit segment fault

摘要:解决虚拟机显卡显示问题只需将默认的"VMSVGA"显卡类型更改为"VBoxSVGA"即可。这一简单的设置变更能够有效改善虚拟机的图形显示性能,适用于VirtualBox等虚拟化环境中的显示优化需求。

2025-07-27 22:01:10 287

原创 ES7的绑定运算符::太复杂,我给它改简单点

摘要:作者提出JavaScript的面向对象特性过于复杂,于是在自创的Banana脚本语言中设计了::运算符作为语法糖,将值::函数(...参数)等价转换为函数(值,...参数)。这种设计既避开了面向对象的复杂性,又保留了类方法的调用风格,支持链式语法。文中展示了从简单的字符串打印到复杂对象方法调用的示例,验证了该运算符在与其他成员访问运算符组合时的正确性。

2025-07-27 13:03:20 292

原创 好的编程语言设计是用简洁清晰的原语组合复杂功能

文章摘要: 本文探讨了编程语言中函数命名的优化策略和功能整合方法。作者建议采用input、print、read、write四个通用函数名,并通过函数重载实现多种功能。以read函数为例,展示了6种不同参数组合的用法,包括文件指针操作、直接读取文件、命令行读取等。同时介绍了如何结合正则表达式匹配(match)和格式化输出(format)实现复杂字符串处理。这种设计既保持了接口简洁性,又提供了灵活的编程方式。

2025-07-26 21:34:33 193

原创 小于200行C代码实现具有捕获、转义、字符类、量词功能的正则表达式匹配

文章摘要:本文介绍了一个正则表达式匹配器的实现方法,采用递归下降结构,避免了Rob Pike经典实现中的递归爆栈问题。文章详细阐述了实现步骤:基本匹配结构、嵌套括号处理、字符匹配函数以及量词支持。代码使用了C语言实现,通过结构体re_capture记录匹配结果,并提供了捕获组处理和打印功能。实现中特别注意了字符类、转义序列和量词的处理逻辑,既保持了代码简洁性又增强了功能性。

2025-07-26 19:59:36 267

原创 删除debian xdm自启动ibus的配置项

摘要:作者在排查dbus-daemon和dbus-x11进程问题时,误删/etc/X11/xdm目录导致登录界面异常。尝试重装xdm无效后,通过虚拟机打包原始配置并恢复,成功修复界面问题。但发现进程用户身份发生变化,推测可能读取了用户目录的配置文件。整个过程展示了系统配置文件的敏感性,以及通过虚拟机备份恢复的有效解决方案。

2025-07-19 22:38:57 408

原创 debian的pulseaudio删掉也没事

Linux系统原生支持ALSA音频架构,通过安装alsa-utils工具包即可使用命令行控制音频设备。Mplayer和Chromium浏览器都直接兼容ALSA,但Firefox自51版本后仅支持PulseAudio,需借助apulse进行兼容转换。文中配图展示了相关音频设置界面。(92字)

2025-07-19 22:22:25 289

原创 移除debian升级后没用的垃圾

快速清理Debian系统启动项:通过最小安装虚拟机与实机对比,用service --status-all找出多余启动项,再用apt remove卸载相关包(如可疑的initscripts)。最后执行apt autoremove和apt autoclean彻底清理。图中对比显示实机存在大量冗余服务,精简后可显著提升启动速度。

2025-07-19 22:19:48 346

原创 posix/unix/linux有很多恶心的设计

摘要:ANSI转义序列的设计导致ESC键与方向键识别困难,需要复杂的判断逻辑。由于ESC键和方向键都以0x1B开头,程序必须通过临时修改终端设置、添加延迟和缓冲区检查来区分二者。文中代码展示了如何处理这种歧义,包括设置非规范模式、读取后续字符等技巧。这种设计缺陷迫使开发者编写大量冗余代码来解决本应简单的按键识别问题,体现了某些标准设计中存在的逻辑缺陷。

2025-07-19 22:18:10 262

原创 无需外部硬件引入噪声的真随机发生器

返回值相同啊,那么短期内温度之类的硬件噪声也可能相同啊,对不对?只要满足无法预测行就行,毕竟真随机的定义就是无法预测。原理很简单,就是利用程序执行时间的不确定性,那么就无法预测下一次。也不用精确到纳秒级之类的,秒级都行,有人可能会说短期内。

2024-05-21 09:24:29 316

原创 clang-format单独运行版本(standalone)的下载

一句话,python有,

2024-05-07 11:07:38 710

原创 突然想到史上最简单的字典树(Trie Tree)省内存方法

传统的,节点如果是ASCII字符,8位的,那么必须256字节数组,最差情况,空间浪费接近99.6%,所以网上很多把节点合并的压缩算法,我总觉得太繁琐,避而远之的,之前也想过比如稀疏数组,但时间复杂度就不是O(1)了。刚才突发奇想,一个8位的ASCII我可以拆成2个4位的,那么不就是2个长度16字节的数组?再进一步,我可以拆成8个二进制位啊,每位只有0和1,对应2字节数组,不就解决了吗?不是B树,两码事,我愿称之为两个字符的字典树。

2024-05-05 11:42:01 290

原创 windows环境一个命令更新python所有的包

以前linux环境写过一个纯python调用pip函数的版本,现在懒得找了,而网上查了半天未果,还不如自己动手丰衣足食。,因为需要与服务器端比对,而upgrade反正都是需要比对的。即可,非常简洁,非常完美。,如果要写到批处理中,把。

2024-04-21 16:39:33 328 1

原创 一个极简鲁棒的C语言的动态数据类型扩展,取代诸如C++/Rust那些愚蠢的东西

对动态变量的操作都是指针方式,也就是struct var *,指针本身也是变量,分两类:一类是栈变量,就是源代码里直接命名的,称之为引用,同样是托管的,使用结构体struct ref记录信息,挂在全局链表prefroot上,另一类是堆变量,是动态创建的,匿名的,比如array/object里面的指向子变量的指针。将a变量赋值给b变量,实际传递的是地址;后缀_s表示安全版本的函数,比如包含字符数组参数的函数,如果是字符串字面量,可以使用不安全函数,别的情况建议用安全函数,也就是必须指定字符串长度的。

2024-04-13 15:46:07 1114

原创 偶然发现一个平均分布得不可思议的伪随机函数

却非常神奇地完美覆盖了数组的每一个位置,也就是循环len次,数组每个位置都是完美的1,如果把循环次数减少,也会发现分布足够均匀,而且我测试了不同的2的次方的数组长度,发现没有例外。起因是我在构思哈希表的结构,不想用链表处理冲突,那么就必须找一个伪随机函数,如果哈希值n对应的数组位置有值了,那么循环执行。显然不合适,也必须是“伪”的,也就是同样的输入值,算出的结果必须一样。,直到n对应位置为空,函数必须足够“分散”,也就是每次调用结果“激烈跳动”,比如。我数学不好,这个现象能从数学上证明吗?

2024-04-06 17:37:51 405 2

原创 卷积核相当于小孔成像板

接上文,再举个例子,小孔成像,如果把小孔扩大成某个形状,那么它就是卷积核,所成的像旋转180度,就是卷积结果。由此引申,眼科疾病散光、动物的不同瞳孔形状,都可以看作卷积核。

2023-12-26 19:56:43 639

原创 卷积相当于散射投影

设想一个点光源,投射到银幕上形成某种形状的光斑,如果把图片的每个像素都看作点光源,投射的光斑形状一致,那么这个过程等同于卷积,这个光斑旋转180度,就是卷积核。

2023-12-26 12:52:18 534

原创 解决msvc编译luajit找不到ftelli64的问题

找到些许线索,用dependency walker检查msvcrt.dll,果然缺少_ftelli64(特么_fseeki64倒是有),搜索luajit项目目录,只有一处地方出现_ftelli64,于是按照线索在前面加上一行。为避免恶心的版本套版本的msvcxxx,我一直用的是wdk-7600.16385.1,执行msvcbuild.bat编译,报错。,网上搜索,问题出在_ftelli64函数,写测试代码test.c。失败,提示同样的错误,继续网上搜索,在。成功,静态链接没问题,但是。

2023-08-07 12:39:23 351

原创 解决在Linux下使用Firefox浏览Google搜索页面时,键盘方向键无法移动搜索框光标的问题

原以为是X Window键盘或者输入法的什么Bug,但是后来发现只有Firefox,只有Google页面里的搜索框有此问题。经过F12检查,发现删除元素的键盘事件监听程序后就正常了,那么如何用Greasemonkey做呢?DOM没有枚举元素绑定的事件监听程序的函数,不得不说是一大缺陷,除了Chrome调试控制台提供了一个。,但是Firefox没有,于是我想到在document-start之时hook。函数,但是发现并无作用,为什么没法改?有效,却依旧没有解释,不管了,Web的世界就是这么凌乱,无所谓了。

2023-04-16 12:28:21 394

原创 Windows环境下与POSIX兼容的strerror()函数的正确实现方法

输出的不同,以及用任务管理器可以看出没有内存泄漏。函数,但只是个样子货,与Windows的。经测试,没有内存泄漏和空指针问题。我的方式相比于别的烂大街文章,有。返回的错误码毫不相干,这里使用。

2023-03-24 15:21:03 636

原创 安全的malloc/realloc/free宏

已经释放过的指针等,此处规定所有指针定义的时候必须初始化为。根据ISO C标准,这几个函数的某些行为是未定义的,比如。,之后就能任意调用下面两个宏而不会产生内存泄漏等问题。

2023-03-01 21:32:16 404

原创 C语言编译期/运行期动态替换某些函数的实现

比如这些函数有缺省的实现,但是在不同环境下可以被替换成更优化的实现,那么可以使用函数指针,甚至在动态链接的情况下也是可以的,比如下面的例子,例子非常简陋,随手写的,没用到头文件宏之类的。

2023-02-26 20:51:23 514

原创 适用于老版本的魔兽世界登陆器编写指南

Windows批处理代码,放在WOW根目录下,没什么复杂的,多个服务器依样画葫芦改就是了。realmlist.wtf文件不同语言不用版本的位置不一样,我用的是3.3.5 enUS版,注意调整。密码自动进剪贴板,游戏启动后Ctrl-V粘贴即可。

2023-01-30 19:37:04 2140

原创 Lua数组下标从1开始的习惯导致容易犯的错误

不过其实#号取数组长度本身就有nil缺陷,所以最佳做法还是另外开个值存长度,把它看成类似c语言数组那种半成品就行了。首先说明,下标0完全没问题,只是习惯问题。写起来非常自然,但是注意,此时t的下标从3开始了,这就会导致。

2022-11-03 13:01:54 785

原创 Lua三元表达式的坑

但是,当b为false/nil的时候将失败,此时会一直返回c。

2022-10-14 18:48:51 308

原创 清空微博的油猴脚本

能完美应对页面弹出异常对话框、页面刷新等情况,证明了脚本是可以完美模拟浏览器操作的。

2022-09-23 07:45:14 800

Web Service介绍

Web Service介绍Web Service介绍Web Service介绍

2007-08-02

Base64编码

Base64编码Base64编码Base64编码

2007-08-02

PhoneGap文档

PhoneGap是跨平台移动开发的利器,这是我手工下载并打包的文档

2011-11-02

HTML5教程(无广告)

从W3C School抓取的HTML5教程,然后编译成了CHM文件,相比网上流传的那份带垃圾广告的教程,我的CHM是绝对纯净没有广告的。 第一次发资源,谢谢支持。

2011-05-17

JBPM 5.1官方文档

官方指南加+API文档,手工下载,手工打包CHM

2011-11-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除