分类目录归档:佳佳酱教程

Windows下挂载目录为驱动器

曾经我的电脑使用一块128G的SSD来放系统,程序和其他文件都在另一块机械硬盘里,后来换上了960G的SSD之后光是放了个系统和装了一些软件依然还空着500多G,所以想着还是把原本的80多G软件全都移到SSD里去吧。

那么问题来了,这些软件的安装位置全是D盘,如果直接把程序移走那会出很多问题,这就意味着我必须要确保把它们移到SSD后依然属于D盘,然后就想到了两个常规方案:分区,挂vhd。

首先是分区,在我用了macos和一些linux后越来越觉得分区这个操作很多余,完全可以使用文件夹来取代分区。主要问题在于分区会产生额外的空间限制,所以慢慢地我开始不再给自己的硬盘分区了,于是这个方案排除,但如果没有其它选择,这个方案还是优于vhd的。

然后是vhd,考虑到性能损耗和文件碎片问题,直接就排除了,我也不想看到一个几十G大的vhd。

由于当时我已经把所有软件移到了 C:\files\Drivers\D ,所以直接开始寻找是否有办法直接把目录挂在为一个驱动器。一查果然有,一般都是说用subst命令直接把目录挂在为驱动器,如 subst p: c:\poi 就可以把c盘的poi目录挂在为p盘。但是这个方案在win10似乎有些bug,需要一些曲折的操作来实现,所以不太好使。然后继续找办法。

最后在某一篇文章里发现可以在注册表里直接加驱动器,位置是 \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices ,打开到这个位置可以看到已经有一些映射设置了。

那篇文章里写了一个注册表文件,内容类似

但是我试了一下发现并没有用,重启之后挂载出来了一个打了问号的驱动器,那么说明这个映射源并不存在,所以我这里的值不能这么写。

然后我参考了一下这个列表里的其它条目,感觉也许可以从 \DosDevices\ 下面直接进入驱动器号,所以改成了 \DosDevices\C:\files\Drivers\D ,重启了一下果然挂载上了,现在这个目录会在开机时被挂载为D盘,并且由于属于同一个盘所以会和C盘显示同样的空间使用情况,有一个小问题就是这个盘没法修改卷标,所以也会和C盘显示一样的名字。挂载后的样子如下:

名字什么的无所谓了,好用就行。

另外这样挂载的驱动器没有回收站,但是可以去原始目录里删除文件,其实问题不大。

PHP并行cURL中socks代理问题

这是一篇被坑记录。关键字: CURLOPT_PROXY, CURLPROXY_SOCKS5, curl, curl_multi_init, curl_multi_add_handle, curl_multi_exec, curl_getinfo, socks5.

我的友链状态是通过cron任务定时调用php脚本来检查的,并且这个脚本通过curl走socks5代理出去请求网站和对应的logo。

本来这个脚本是遍历json中的友链一个个去请求然后设置状态的,逻辑上没有任何问题,也可以顺利完成检测,问题是这样的检测时间太长了,如果我手动请求检测脚本的地址那么一定会执行超时,而且我会看不见结果。于是我想把这个脚本里的请求改成并行的,一次性请求所有网站。然后问题来了,按照php手册上 curl_multi系列的函数改好了脚本之后无论怎么运行怎么修改一定会执行失败。无论怎么修改,curl multi组一定会超时,所有请求都会失败,浪费了我六七个小时研究这个问题。

 

直到我偶然间看到了这个页面上的这段话

10.1 SOCKS proxy connections are done blocking

Both SOCKS5 and SOCKS4 proxy connections are done blocking, which is very bad when used with the multi interface.

我记得曾经我就尝试过把这个脚本改成并行请求,但也是因为无论如何都会请求失败后来直接放弃了。这个影响那么大的bug几年过去了依然没有修好,不愧是世界上最好的语言。

也就是说现在php的并行cURL不能设置socsk代理,否则一定会阻塞住然后请求失败,要解决这个问题只能改用http代理。

解决Macbook休眠异常 待机掉电过快

请先确认apple官方给出的方法都没有用之后再尝试此文方法!

曾经我的mbp拔掉电源合上盖子以后一天过去几乎都不怎么掉电,基本上会少个百分之一到三。但是最近一年不知道怎么回事,待机一天过去电量会掉一半多(并不是因为电池老化)。我也不清楚是从什么时候开始这样的了,也许是某次系统升级后吧,毕竟我也没有特别去动过电源设置。

原本我也一直想找到导致这个问题最根本的原因,不过试了很多次都没找到。最近买了mbp的sea也有同样的问题,于是想着干脆把这个问题强行解决掉算了。

继续阅读解决Macbook休眠异常 待机掉电过快

Rust 基本数据类型

之前就有点感兴趣,现在又仔细看了以下,并做个笔记。(并不是表示我要学会,只是稍作了解。这种编译型静态类型语言我还是更倾向用c++)

下面变量全都加了下划线前缀是因为变量定义了不使用的话编译器会给出警告,除非加了_前缀。

 

npm多用户

npm的用户登录信息写在用户目录的 .npmrc 文件里,所以同一时间只能登录一个账号,要切换账号的话就要重新用 npm login 登录,比较麻烦。

于是写了个切换.npmrc文件来直接切换用户的shell脚本

分别login到对应的用户,然后查看用户目录里的.npmrc文件内容,复制出来,填到下面对应的地方

保存成比如 npmuser 文件放在某个PATH目录里,然后用 npmuser user1 这样的命令就可以直接切换用户而不用再登录了。

让Windows在高DPI显示屏上正确显示

我在macbook上虚拟机里装了个Win10,装好了之后发现,一切都是那么的小,小的几乎看不清。因为这个macbook是Retina屏的,所以dpi比较高,于是东西都变小了。

我的标题里不直接写win10是因为我也不知道自定义项目大小是从哪个系统开始有的,没有这个功能的系统很简单,就是把分辨率按比例调低即可。

继续阅读让Windows在高DPI显示屏上正确显示

Error: Cannot find module ‘npmlog’

手动安装node的时候一不注意就会出现这个错误,装好了之后使用命令 npm 测试一下出来了这个错误: Error: Cannot find module 'npmlog' 。

 

这一般是放在/bin里的链接不对导致的。

可能情况1

链接指向的不是 node_modules/npm/bin/npm-cli.js ,初次手动安装难免会搞不清要链接哪个文件,把链接指向正确的位置即可。

情况2

使用的不是软链接,由于npm-cli.js中使用的是相对路径,要是你一不小心链了个硬链接,那么npm就会从/bin解析相对路径,所以就找不到npmlog模块了。要使用软链接,在ln命令后加上 -s 选项: ln -s node_modules/npm/bin/npm-cli.js /bin/npm

 

解决node无法调用全局模块的问题

刚刚我把SPDY装到全局, npm -g install spdy ,

可以看到这个模块被装到/usr/local/lib/node_modules里了

 

 

 

然后开个环境测试一下,结果

吓得我满脑子都是doge!!!这是为什么?

继续阅读解决node无法调用全局模块的问题

【node】用ws模块创建加密的ws服务(wss)

node的ws模块可以很方便地创建一个单纯的标准websocket服务,但是对于创建wss服务并没有提供一个独立的方法,还是使用创建ws服务的方法,在传入参数对象里加了个自定义的https服务。

 

也不知道是我找错了文档还是官方文档就那么简洁,不过readme文件写的文档的确是这个→doc/ws.md,然后我研究了好几天还翻了遍它的源码和examples才终于理解了这个文档。

继续阅读【node】用ws模块创建加密的ws服务(wss)

[Javascript]使用Generator函数创建你自己的异步函数

欢迎来到佳佳doubi小课堂~在这里你可以学到实用又错误的知识×。

好久没写正经的博文了,让我来正经一下。

使用Generator函数来创建你的异步函数,先说明一下原理。

Generator函数是ES6里的新函数类型,函数定义写作这样

看到没,在函数名和function之间多了一个*号,这不是我写错了,是Generator函数的标志,这个*号其实也可以贴着函数名写 function *a(){},也可以不加空格 function*a(){},不过还是推荐把它贴着function写,这样既不会影响一些编辑器里的高亮,也不会降低代码可读性。 继续阅读[Javascript]使用Generator函数创建你自己的异步函数