终端下光标移动到文件路径上,⌘+click
可以触发执行某个命令,比如点击一个项目文件夹,触发WebStorm,但是有时我希望不同的文件类型,触发不同的动作,这样就需要自定义脚本进行拓展。
解决方案
实现方案如下,因为个人Shell渣渣,为了方便,实际打开IDElogic使用JS编写,只是在shell中执行nodejs
贴下完整代码
iterm2-trigger.js
const [, , file] = process.argv;
const { execSync } = require('child_process');
const fs = require('fs');
const commandMap = new Map();
/**
* 设置各种文件的默认打开程序
* key为条件,value为执行命令,缺省使用默认打开程序
*/
commandMap.set(
() => fs.lstatSync(file).isDirectory(),
`/usr/local/bin/webstorm ${file}`
);
(function () {
let commandStr = `open ${file}`;
for (const fn of commandMap.keys()) {
if (fn(file)) {
commandStr = commandMap.get(fn);
}
}
execSync(commandStr);
})();
iterm2-trigger.sh
#!/usr/bin/env bash
DIR="$(dirname $0)"
/usr/local/bin/node "$DIR/iterm2-trigger.js" $1
exit 0;
iTerm2下进入Preferences=>Profiles=>local Profile=>Advanced=>Semantic History,配置如下
$HOME/bin/iterm2-trigger.sh \1
最近nginx有需求实现上传feat,惊喜发现已经支持js了,因此尝试使用js实现上传。
nginx配置
- 为了支持njs需要模块加载
- 具体使用js业务模块,需要使用js相关指令
- load_module指令需要放在全局即
default.conf
下
例子如下
load_module modules/ngx_http_js_module.so;
events { }
http {
# 这里就不再限制了,nginx默认为1MB
client_max_body_size 0;
js_path "/etc/nginx/njs/";
js_import main from upload.js;
server {
...
location /upload-cert {
js_content main.resolve;
}
...
}
njs模块业务代码
- njs只是js子集,因此语法及功能也都是有限的
const fs = require('fs');
const crypto = require('crypto');
const dest = `/var/www/ssl`;
function writeFile(fileContent, fileSuffix) {
let fileName = `${crypto.createHash('md5').update(fileContent).digest("hex")}.${fileSuffix || 'crt'}`;
fs.writeFileSync(`${dest}/${fileName}`, fileContent);
return fileName;
}
function upload(r) {
let body = JSON.parse(r.requestBody);
r.return(200, JSON.stringify({
crtFileName: writeFile(body.crtFile), keyFileName: writeFile(body.keyFile, 'key'),
}));
}
function main(r) {
upload(r);
}
export default {resolve: main}
最近
NAS Download Manager (for Synology)
插件更新后发现只支持HTTPS地址,但是我的NAS下载服务目前仅支持HTTP,因此考虑在客户端解决该问题。
解决方案- whistle
whistle可以代理HTTPS请求,自行签发证书,因此可以解决。
- 配置whistle及Chrome插件,确保可以拦截请求
- 步骤如下,具体可查看whistle官方文档
- whistle开启HTTPS
- rootCA证书安装且信任
- 安装插件比如SwitchyOmega,解决Chrome走whistle代理
- 增加并开启rule,解决HTTPS到HTTP的转换,使whistle代理后,最终还是发起http请求
# NAS服务链接 /https(://110.100.176.222:50098.+)/ http$1
如上配置后,将地址贴到下载插件下,即可正常联通使用。
写在最后
当然这个问题的解决也可以在NAS服务端,开启HTTPS解决。这里仅介绍如何客户端解决,原理是代理。
相关文档
准备工作
- 下载Tuxera NTFS for Mac软件,有15天试用,因此够用
- 选择该软件是因为Mac系统磁盘工具没有提供NTFS格式化选项
- NTFS默认为只读,利用该软件改为读写支持
- 格式化移动硬盘/U盘
- 如果盘里有数据,使用工具,格式化磁盘,格式为
Microsoft NTFS
- 不要选择FAT格式,ExFAT不能正常引导,FAT要求文件大小小于4GB,超过了Windows10文件大小
- 下载Windows镜像
- 挂载系统镜像到Mac上
- 双击ISO镜像文件即可
- 打开终端,输入如下命令,前者为挂载的镜像文件路径,后者为挂载的硬盘/U盘路径,执行该命令
cp -rp /Volumes/CCCOMA_X64FRE_ZH-CN_DV9/* /Volumes/THINK_DISK
OK后系统盘即制作完成
Thinkpad重装系统
- 开机-连续敲击F12进入引导盘选择页面
- 选择上面制作的USB启动盘,回车
- 按照提示安装即可
补充
- F1进入BIOS设置页面
- Windows做下制作系统启动盘,推荐老毛桃,免费/简单。
不能谷歌,不能正常访问GitHub,不能刷油管,我想信息获取会很闭塞,身为一个程序员,更严重。于是在如何翻墙这条道路上,一直也在摸索,毕竟墙也越来越高。但办法总比问题多,还是可以一一克服的。
以下为我目前的手段
服务
- 走朋友的私服 朋友的私服好处是只有自己用,而且IP因为是动态的,所以真被封了,一般重启机器即可。目前走的是澳门的私服,延迟百毫秒,还可以。
- Vultr搭建日本节点
- v2ray+https+websocket,稳定性可以,延迟一般,500ms以上,不算多快,但好歹可以解决日常的谷歌资料查询
- 如何搭建,可以参考我的docker部署脚本,可以快速解决
- 资费:一个月6刀,按小时计费
- 购买ShadowSocks
- 推荐机场 — https://portal.shadowsocks.nz/aff.php?aff=27252
- 有香港,台湾节点,所以延迟低,300ms
- 资费:
20刀一年
关于自建还是机场的观点
- 自建或者机场各有利弊,实际上都可以,但对于自建,除非你买好点的VPS,比如香港的,否则延迟还是很大,比如油管高清就无法满足,所以翻墙方式基于稳定性,资费两者考虑即可,如果确实不确定又想省事,推荐上述的第三种方式,便宜,尝试一年即可,在实际使用中寻找最合适自己的才是正解。
- 受外部环境不确定影响,没有说绝对的稳定,但一般是OK,以上推荐的机场也是个人一直在使用的,所以稳定性还不错
- 以上机场链接均有aff推荐码,一旦你支付我也会收到一点回馈,毕竟码字不易,谢谢理解
客户端
- Mac
- iPhone
- Windows
- Clash
免费
- Android
- Clash
免费
以上这些兴许可以帮助些朋友