Alan He

终端下光标移动到文件路径上,⌘+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配置

  1. 为了支持njs需要模块加载
  2. 具体使用js业务模块,需要使用js相关指令
  3. 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请求,自行签发证书,因此可以解决。

  1. 配置whistle及Chrome插件,确保可以拦截请求
  2. 步骤如下,具体可查看whistle官方文档
  3. whistle开启HTTPS
  4. rootCA证书安装且信任
  5. 安装插件比如SwitchyOmega,解决Chrome走whistle代理
  6. 增加并开启rule,解决HTTPS到HTTP的转换,使whistle代理后,最终还是发起http请求
  • # NAS服务链接 /https(://110.100.176.222:50098.+)/ http$1

如上配置后,将地址贴到下载插件下,即可正常联通使用。

写在最后

当然这个问题的解决也可以在NAS服务端,开启HTTPS解决。这里仅介绍如何客户端解决,原理是代理。

相关文档

--

--

准备工作

  1. 下载Tuxera NTFS for Mac软件,有15天试用,因此够用
  • 选择该软件是因为Mac系统磁盘工具没有提供NTFS格式化选项
  • NTFS默认为只读,利用该软件改为读写支持
  1. 格式化移动硬盘/U盘
  • 如果盘里有数据,使用工具,格式化磁盘,格式为Microsoft NTFS
  • 不要选择FAT格式,ExFAT不能正常引导,FAT要求文件大小小于4GB,超过了Windows10文件大小
  1. 下载Windows镜像
  1. 挂载系统镜像到Mac上
  • 双击ISO镜像文件即可
  1. 打开终端,输入如下命令,前者为挂载的镜像文件路径,后者为挂载的硬盘/U盘路径,执行该命令
  • cp -rp /Volumes/CCCOMA_X64FRE_ZH-CN_DV9/* /Volumes/THINK_DISK

OK后系统盘即制作完成

Thinkpad重装系统

  1. 开机-连续敲击F12进入引导盘选择页面
  2. 选择上面制作的USB启动盘,回车
  3. 按照提示安装即可

补充

  • F1进入BIOS设置页面
  • Windows做下制作系统启动盘,推荐老毛桃,免费/简单。

--

--

不能谷歌,不能正常访问GitHub,不能刷油管,我想信息获取会很闭塞,身为一个程序员,更严重。于是在如何翻墙这条道路上,一直也在摸索,毕竟墙也越来越高。但办法总比问题多,还是可以一一克服的。

以下为我目前的手段

服务

  1. 走朋友的私服 朋友的私服好处是只有自己用,而且IP因为是动态的,所以真被封了,一般重启机器即可。目前走的是澳门的私服,延迟百毫秒,还可以。
  2. Vultr搭建日本节点
  • v2ray+https+websocket,稳定性可以,延迟一般,500ms以上,不算多快,但好歹可以解决日常的谷歌资料查询
  • 如何搭建,可以参考我的docker部署脚本,可以快速解决
  • 资费:一个月6刀,按小时计费
  1. 购买ShadowSocks

关于自建还是机场的观点

  • 自建或者机场各有利弊,实际上都可以,但对于自建,除非你买好点的VPS,比如香港的,否则延迟还是很大,比如油管高清就无法满足,所以翻墙方式基于稳定性,资费两者考虑即可,如果确实不确定又想省事,推荐上述的第三种方式,便宜,尝试一年即可,在实际使用中寻找最合适自己的才是正解。
  • 受外部环境不确定影响,没有说绝对的稳定,但一般是OK,以上推荐的机场也是个人一直在使用的,所以稳定性还不错
  • 以上机场链接均有aff推荐码,一旦你支付我也会收到一点回馈,毕竟码字不易,谢谢理解

客户端

  1. Mac
  1. iPhone
  1. Windows
  1. Android

以上这些兴许可以帮助些朋友

--

--