0%

electron支持自定义协议,如下是我从electron文档中摘抄的一段:

1
2
3
4
5
6
7
8
9
10
11
12

const {app, protocol} = require('electron')
const path = require('path')

app.on('ready', () => {
protocol.registerFileProtocol('atom', (request, callback) => {
const url = request.url.substr(7)
callback({path: path.normalize(`${__dirname}/${url}`)})
}, (error) => {
if (error) console.error('Failed to register protocol')
})
})

假设在项目根目录下有文件one.js,并且one.js中使用了localStorage:

1
localStorage.setItem('key', 'value')

这时候,你发起一个请求:atom://one.js那么你将会得到以下报错:

1
Uncaught (in promise) DOMException: Failed to read the 'localStorage.setItem(key, value);' property from 'Window': Access is denied for this document.

你也许觉得疑问,百度搜索出来都是这么写的呀,为什么我的就错了,接下来就是开始怀疑人生了。

其实在electron的文档中明确的说明:

image

如果你需要使用Web Storage Apis,那么请这样写:

1
2
3
4
5
6
7
8
9
10
11
12
const {app, protocol} = require('electron')
const path = require('path')

protocol.registerStandardSchemes(['atom'])
app.on('ready', () => {
protocol.registerFileProtocol('atom', (request, callback) => {
const url = request.url.substr(7)
callback({path: path.normalize(`${__dirname}/${url}`)})
}, (error) => {
if (error) console.error('Failed to register protocol')
})
})

背景

image

准备工作

Ubuntu
Version: Ubuntu 16.04.2 LTS
服务提供商: DigitalOcean(从此进入并注册将会获得服务商提供10$额度),支持信用卡和paypal

安装

1
2
apt install python-pip
pip install shadowsocks

或

1
2
3
4
wget https://github.com/shadowsocks/shadowsocks/archive/2.9.1.tar.gz
tar -xzvf 2.9.1.tar.gz
cd shadowsocks-2.9.1/
python setup.py

配置

1
2
3
4
5
6
7
8
9
10
11
vi /etc/shadowsocks.json
{
"server":"0.0.0.0",
"server_port":xxxxx,
"local_address": "127.0.0.1",
"local_port":1080,
"password":"xxxxx",
"timeout":300,
"method":"aes-256-cfb",
"fast_open": false
}

server_port和password根据你的实际需求增加

运行

1
ssserver -c /etc/shadowsocks.json -d start

之前登陆服务器的组合是windows+putty,现在想利用mac+ssh实现相同的功能。但是呢,之前使用的私钥文件格式为ppk,而ssh所支持的是格式为pem的文件,于是便有了此文,将ppk转换为pem。

安装putty

1
brew install putty

转换文件

1
puttygen privatekey.ppk -O private-openssh -o privatekey.pem

添加key到ssh

1
ssh-add -k private.pem

登陆

1
ssh username@destination(ip or domain)