javascript的symbol

又学到了奇怪的知识。对sequelize的那个[Op.eq]之类的写法很好奇,比如:

{
   [Op.between]:[1,2]
}

看了下源代码,between这个就是个Symbol.for(“between”),这个symbol我从来没用过,就研究了下。

const test = Symbol.for("test");
let obj = {
    [test]: "for test"
};
console.log("obj==", obj); //{ [Symbol(test)]: 'for test' }
console.log(JSON.stringify(obj)); // {}
obj[test] = "replace test"; 
console.log(obj); //{ [Symbol(test)]: 'replace test' }
obj[Symbol("test")] = "aaabbb";
console.log(obj); //{ [Symbol(test)]: 'replace test', [Symbol(test)]: 'aaabbb' }
console.log(obj[test]); //replace tes
console.log(obj[Object(test)]); //replace tes
let symbols = Object.getOwnPropertySymbols(obj);
for(let i in symbols) {
    console.log(symbols[i],'=', obj[symbols[i]]); //Symbol(test) = replace test; Symbol(test) = aaabbb
}

snapraid 代码浏览

最近一直在折腾硬盘上的数据。就研究了下snapraid 的代码。

snapraid非常适合做数据备份使用。我其实很好奇btrfs的single模式为啥不加个类似的功能,这样相当于直接为single模式来了个带raid5功能的备份。

snapraid的校验非常的简单暴力,直接将文件数据按块读取到内存中,然后类似模拟拼接为一个raw的文件的数据结构,然后使用raid5的算法,计算之后,将校验写入校验盘的文件中。恢复的时候,也使用的是raid5的恢复方法。

因为是基于对文件进行的操作,所以与分区格式无关系。但这样一来,对于频繁的文件读写或者移动,或者实时的写入,就不太适合了。

win10 精简版安装windows defender

我之前将我的电脑使用精简版的win10安装了,一直以为自带杀毒软件了。不经意间,发现没有安全中心,打开 安全中心后,发现竟然没有杀毒软件,这就玩大发了。于是,想尽办法把自带的杀毒软件找回来了。

  1. 管理员权限打开powershell, 使用以下命令修复

    sfc /SCANNOW
    Dism /Online /Cleanup-Image /ScanHealth
    Dism /Online /Cleanup-Image /CheckHealth
    DISM /Online /Cleanup-image /RestoreHealth
    

    然后,重启, 更新。如果简化版不是做的太好的话,安全中心和杀毒软件应该就回来了。启动即可。 但我用的版本做的太好了。在系统盘的目录中可以看到已经有软件了,但就是启动不了。

  2. 如果启动不了,那就改注册表, 改策略

    修改注册表位置:

    计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender
    

    这里面有个DisableAntiSpyware的项, 修改为1。然后重启 然后安全中心中的defender就可以正常启动了。 如果安全中心的病毒检测部分的实时监控打不开,则需要修改策略:Win+r 然后输入gpedit.msc, 修改为以下内容 1.png

  3. 为什么不用第三方软件 在我这边第三方软件影响运行速度。。。占资源,我的win10运行在虚拟机中,只分配了4G的内存资源

杂事二三件

昨天做了几件事,主要是前天晚上的一些思路,成了几件,败了几件。

  1. obs推流到抖音

    无奈我的号是无粉丝的,然后使用tcpdump在网关抓包,抓推流地址,obs通过docker部署,最后推流成功。 但抖音这边会在软件里不断的检测心跳,于是主播暂时离开了。我主要是想试试在unraid中是否可以,算是成了, 无奈硬件不给力,推流的帧率只有几,作罢。其他软件只能在windows上,无法无人职守,不喜欢。

  2. seaf客户端docker化

    没啥特殊的,开干,基于ubuntu,一切顺利

  3. org文件导出时自动替换某些内容为制定的字符

    自己✍🏻️的内容还要对自己各种过滤,实在是对自己太残忍了。使用了个宏来帮自己哔掉。

    #+MACRO: hidden $2
    

    使用时,想要替换的字符可以这样✍🏻️:

    真的{{{hidden(fuck,*)}}}鬼了
    

    发布的时候,就会变成:

    真的*鬼了

  4. org组织代码结构

    真的很无聊的想法,我想用org来组织整个项目。。。代码啥的都写到org中,然后编译的时候, 直接执行键入的编译的代码,将整个org按照org中书写的指定内容,生成指定的文件或者文件夹, 然后再编译整个项目。

    简单的流程就是比如makefile内容写在org中,然后编译这个org,生成真正的makefile, 接着执行这个makefile,项目中的其他文件也是如此。

    于是,理所当然的失败了。我对org-babel还是一无所知

  5. emacs-lisp的语法树

    我想找emacs-lisp的范式,不过没有找到。算了