ElasticSearch的安装与踩坑记录

00:00-00:00

00:00-00:00

本以为很快能搞定的,结果折腾一个小时,最后还是用docker去。

国际线路太慢了,还是直接在VPS上实验了,不放在VirtualBox里。

1
2
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.6.1
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.6.1

文档

推荐一些常用的开源软件

编辑器/IDE

写这个博客的时候,我全程都使用VSCode,配上SFTP同步插件。

与其类似的还有Atom和Brackets

比较结果 VSCode > Atom > Brackets

JetBrains系列呢?

  • 配置复杂,比如上次打算不用VSCode转回WebStorm,但WebStorm怎么设置都不给Nodejs自动补全提示。
  • 界面丑,字体大小不匀。
  • 没有用Electron,框架太古老。
  • WebStorm不开源。

因此,我用VSCode。

终端/远程

下列是我用过/见过的终端软件:

  • Terminus - 目前在用,比较满意
  • mRemoteNG - 界面奇丑
  • Hyper - Bug多,没人维护
  • MobaXTerm - 商业软件,直接排除

至于远程文件管理,WinScp,这个没仔细选过。

Bisq设置Tor代理

添加这行到%UserProfile%\AppData\Local\Bisq\app\desktop-0.9.4-all.jar(压缩文件)中的torrc

1
Socks5Proxy 127.0.0.1:1080

时常检查邮件垃圾箱的好处

你,对就是你,快看看垃圾箱里有没有我发的邮件。

特别是用疼讯qq邮箱的你。


第一次写水文,好激动啊,朋友硬要我写,否则我才不写呢。

我的博客全是干货,不可能会有这种玩意儿的。

哇,读者超200了,好激动啊。


以上纯属讽刺。但邮箱你得看。

SSH Tunnel连接Mongo

为确保数据库安全,我把mongo的监听地址设置为了localhost,因此不能使用外部工具连接。

此时,咱就需要SSH Tunnel了。

废话少说

1
ssh -L 2000:127.1:27017 root@108.61.197.44

就跟平常登ssh一样,不过多了-L参数,意为本地端口:远程地址:远程端口

实现了把远程监听在127.0.0.1:27017的mongo转发到本机的2000端口上。

至于Nosql的客户端软件,我推荐nosqlclient,electron写的。

Sql客户端推荐DBeaver。

IPFS与ZeroNet对比和原理浅析

P2P

前言

IPFS^1和零网^2是在同一年创立的,而如今IPFS已超零网2K star,生态系统也更加茁壮。

显然,缘于IPFS的模块化,将网络分层,才吸引了更多的开发者。

零网与IPFS有很多相似之处,比如同时基于BitTorrent。但实际上,看似相似,一些深层的技术还是不一样的。

深层机制

DHT

DHT即分布式散列表,用于存储节点信息,可以理解为,每个节点都是一个tracker

Tracker就是中心化的服务器,节点告诉tracker自己所有的资源,其他节点通过tracker找资源

IPFS支持DHT,可以实现完全去中心化。但ZeroNet尚不支持,只有tracker交换

Tracker交换相当于弱化的DHT,只有部分节点参与路由,抗封锁能力略弱。

VSCode重置并保留插件(Windows)

解决方案

VSCode正常重装并不能完全重置,需要手动删除相关文件。

用户设置位于%AppData%/Code - Insiders,直接删除目录即可重置。
插件在%USERPROFILE%\.vscode-insiders文件夹,建议保留。

为啥我要重装

简单地说,作死。

几个月用下来,还是发现很多bug,也提交了很多信息不完善被闪Close的issue。
然后出现各种CPU占用高,内存抽风等问题。

所以设置还是不要多改,乱七八糟插件少装,毕竟单元测试覆盖不到。

Javascript之异步

Promise

1
2
3
4
5
6
7
8
9
10
function startPromise() {
console.log(arguments)
return new Promise((res, rej) => {
console.log('Promise started') // new出Promise之后,这几条语句会立即执行
setTimeout(() => res("Done"), 2000)
})
}


startPromise().then(startPromise).then(startPromise)

Python还是NodeJS

对比下列代码

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

def cb():
global some_var
print("Hi")
some_var += 1

def do_sth(callback):
# Stuff
callback(1024)

do_sth(cb)
1
2
3
4
5
6
7
8
9
function do_sth(callback) {
// Something
callback()
}

do_sth(() => {
cconsole.log("Hi");
global.some_var++;
})

显然Js更简洁。

This page is a snapshot of ZeroNet. Start your own ZeroNet for complete experience. Learn More