About neohope

一直在努力,还没想过要放弃...

MacOS编译ipfs

1、安装go等必须的软件

brew install go

2、设置gopaht环境变量

export gopath=PAHT_TO_GOPATH

#然后在gopath下创建下面的目录
PAHT_TO_GOPATH/src/github.com/ipfs/

#设置必要的代理信息
export http_proxy=xxxx:xx
export https_proxy=xxxx:xx
export no_proxy="localhost, 127.0.0.1, 192.168.99.100, 根据你自己的实际情况进行处理"

3、下载源码

cd PAHT_TO_GOPATH/src/github.com/ipfs/
git clone https://github.com/ipfs/go-ipfs.git

4、编译go-ipfs

cd go-ipfs
make

会发现,gx无法获取所需的文件,原来是gx不会默认读取代理配置

5、下载gx代码

#然后在gopath下创建下面的目录
PAHT_TO_GOPATH/src/github.com/whyrusleeping/
cd PAHT_TO_GOPATH/src/github.com/whyrusleeping/
git clone https://github.com/whyrusleeping/gx.git
git clone https://github.com/whyrusleeping/gx-go.git

cd PAHT_TO_GOPATH/src/github.com/ipfs/
git clone https://github.com/ipfs/go-ipfs-api.git

6、修改go-ipfs-api代码,在文件shell.go中,增加一行代码

func NewShell(url string) *Shell {
        c := &gohttp.Client{
                Transport: &gohttp.Transport{
                        Proxy: gohttp.ProxyFromEnvironment, //请增加这一行
                        DisableKeepAlives: true,
                },
        }

        return NewShellWithClient(url, c)
}

7、编译gx及gx-go

cd PAHT_TO_GOPATH/src/github.com/whyrusleeping/gx
make
cd PAHT_TO_GOPATH/src/github.com/whyrusleeping/gx-go
make

8、用编译好的go及go-gx替换PAHT_TO_GOPATH/src/github.com/ipfs/go-ipfs/bin目录下对应的文件

9、编译ipfs

cd PAHT_TO_GOPATH/src/github.com/ipfs/go-ipfs
make

MacOS编译ethereum

1、安装go等必须的软件

brew install go

2、设置gopaht环境变量

export gopath=PAHT_TO_GOPATH

#然后在gopath下创建下面的目录
PAHT_TO_GOPATH/src/github.com/ethereum/

#设置必要的代理信息
export http_proxy=xxxx:xx
export https_proxy=xxxx:xx
export no_proxy="localhost, 127.0.0.1, 192.168.99.100, 根据你自己的实际情况进行处理"

3、下载源码

cd PAHT_TO_GOPATH/src/github.com/ethereum/
git clone https://github.com/ethereum/go-ethereum.git

4、编译

cd go-ethereum
make geth

MacOS编译fabric

1、安装docker、go等必须的软件

brew install docker dokcer-machine go
brew install gnu-tar --with-default-names
brew install libtool

2、开启dokcer deamon环境

docker-machine create forfabric
eval $(docker-machine env forfabric)

3、设置gopaht环境变量

export gopath=PAHT_TO_GOPATH

#然后在gopath下创建下面的目录
PAHT_TO_GOPATH/src/github.com/hyperledger/

#设置必要的代理信息
export http_proxy=xxxx:xx
export https_proxy=xxxx:xx
export no_proxy="localhost, 127.0.0.1, 192.168.99.100, 根据你自己的实际情况进行处理"

4、下载源码

cd PAHT_TO_GOPATH/src/github.com/hyperledger/
git clone https://github.com/hyperledger/fabric.git

5、编译gotolls

cd fabric
make gotools

6、编译native

make native

SonarQube集成单元测试结果

对于Java来说,最简单的就是用maven进行构建

#surefire-report:report -Daggregate=true要求多个模块的报告合成一个
#可以用site作为替代,比这个更简单
mvn clean install javadoc:aggregate -Dadditionalparam=-Xdoclint:none surefire-report:report -Daggregate=true

#-Dsonar.host.url指定SonarQube地址
#-Dsonar.scm.disabled要求SonarQube不要自己去更新SVN或GIT
#-Dsonar.junit.reportPaths是单元测试报告的路径
mvn sonar:sonar -Dsonar.host.url=http://IP:9000 -Dsonar.scm.disabled=True -Dsonar.junit.reportPaths=Path_To_Surefire_Report

对于CSharp项目来说,用VS自带的CodeCoverage最方便了

#准备
#我一般只指定项目key就好了,多数情况下就是Solution名称
#d:sonar.cs.vscoveragexml.reportsPath一定要指定到正确位置
MSBuild.SonarQube.Runner.exe begin /k:"项目Key" /n:"项目名称" /v:"项目版本" /d:sonar.cs.vscoveragexml.reportsPaths="%CD%\MyProject.coverage.xml"

#构建Solution
msbuild 项目名称

#生成coverage报告
"%VSINSTALLDIR%\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe" collect /output:"%CD%\MyProject.coverage" "PATH_TO_TEST_DLL1" "PATH_TO_TEST_DLL2" "PATH_TO_TEST_DLL3"

#coverage报告转为XML版本
"%VSINSTALLDIR%\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe" analyze /output:"%CD%\MyProject.coverage.xml" "%CD%\MyProject.coverage"

#完成
MSBuild.SonarQube.Runner.exe end

Linux常用命令14后台进程

1、后台运行命令

somecmd &
nohup somecmd &

2、查看当前后台运行的命令

jobs -l
# 展示当前终端的后台任务,+号表示当前任务,-号表示后一个任务。

ps -aux | grep somecmd
# a:显示所有程序,u:以用户为主的格式来显示,x:显示所有程序,不以终端机来区分

3、关闭当前后台运行的命令

# 通过jobs命令查看jobnum,然后执行
kill %jobnum

# 通过ps命令查看进程号PID,然后执行
kill %PID

4、前后台进程的切换与控制

#后台切换至前台
#fg命令:将后台中的命令调至前台继续运行
fg %jobnum

#前台切换至后台
#快捷键,将一个正在前台执行的命令放到后台,并且处于暂停状态
#[ctrl]+ z

#bg命令:将一个在后台暂停的命令,变成在后台继续执行
bg %jobnum

5、后台服务状态

service --status-all

编译guetzli

#1.下载并安装配置vcpkg
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
bootstrap-vcpkg.bat
vcpkg integrate install
vcpkg install libpng

# 如果用CMake,记录下面的输出路径
CMake projects should use:
"-DCMAKE_TOOLCHAIN_FILE=D:/Build/vcpkg/scripts/buildsystems/vcpkg.cmake"

#2.下载guetzli
git clone https://github.com/google/guetzli.git

#3.用VS2017进行编译

#4.测试效果
整体上压缩比率还是很不错的,但这个压缩速度,还是放弃吧。

Update:
如果是图像压缩的话,现在webp格式还是很不错的,可以直接下载工具:
https://developers.google.com/speed/webp/download
https://chromium.googlesource.com/webm/libwebp/

Linux常用命令13文件查找

1、查找大于500M的文件

find . -type f -size +500M  -print0 | xargs -0 ls -l
find . -type f -size +500M  -print0 | xargs -0 du -h

2、统计文件个数

#统计文件夹下文件个数,包括子文件夹中的文件
ls -lR | grep "^-"| wc -l

#统计文件夹下文件夹个数,包括子文件夹中的文件夹
ls -lR | grep "^d"| wc -l

3、删除文件夹

find . -name __MACOSX | xargs rm -rf

利用Speech Recognition进行语音识别

首先说明一下,我用的是MacOS,多数命令Linux可用,但部分相关命令要进行调整。不建议用Windows。

1、安装环境

#安装pyaudio
brew install portaudio
pip install pyaudio

#安装Sphinx
pip install PocketSphinx

#安装tensorflow
pip install tensorflow

#安装SpeechRecognition
pip install SpeechRecognition

2、测试

#提示你进行语音输入
#默认用Google Speech Recognition
#所以需要梯子,才能用这个命令哦
python -m speech_recognition

3、建议大家看一下自带例子
https://github.com/Uberi/speech_recognition/tree/master/examples
这个库,可以支持多种语音引擎,只有PocketSphinx是离线的,其余都是在线的。
而PocketSphinx的识别率,实在是有些差,需要一些辅助才能达到较好的效果。

PS:
tensorflow需要2018年(3.8.1以后,不包括3.8.1)以后的版本才支持。

利用Face Recognition进行人脸识别

首先说明一下,我用的是MacOS,多数命令Linux可用,但部分相关命令要进行调整。不建议用Windows。

1、安装环境

#安装cmake
brew install cmake
#安装boost
brew install boost-python
#设置boost环境
export CMAKE_PREFIX_PATH="/usr/local:/usr/local/Cellar/boost/1.61.0:$PATH"
#安装pip
sudo easy_install pip
#安装fc
pip install face_recognition
#安装opencv
pip install opencv-python

2、测试

#将已知单人照片,放到iknow文件夹中,而且照片名称就是人名,比如zhangsan.jpg等
#将需要识别的照片,放到unknown文件夹中,照片可以是多人的
#tolerance是精确度,感觉默认的库是以欧美人标准进行训练的,不太适用于亚洲人,建议将tolerance设置到0.5-0.6之间
#命令行会通过iknow的照片,识别unknown中的图片,并输入每幅图片中有哪些人
face_recognition --tolerance 0.56 ./iknow/ ./unknown/

3、建议大家去看一下项目自带的example
https://github.com/ageitgey/face_recognition/tree/master/examples

4、建议大家去看一下作者写的文章,真的写的很通俗易懂
https://medium.com/@ageitgey

可能遇到的问题:
1、如果安装环境时,遇到下面的问题

OSError: [Errno 1] Operation not permitted: '/PATH/XXX-info'

解决步骤如下:
1.1、重启电脑,按command+R进入恢复模式
1.2、点击菜单【实用工具】,打开【终端】,输入csrutil disable,关闭System Integrity Protection
1.3、重启电脑,正常开机
1.4、打开【终端】输入csrutil status,验证配置已生效

如何通俗的解释MD5加盐

MD5自身是不可逆的,但是目前网路上有很多数据库支持反查询。如果用户密码数据库不小心被泄露黑客就可以通过反查询方式获得用户密码或者对于数据库中出现频率较高的hash码(即很多人使用的)进行暴力破解(因为它通常都是弱口令)。

盐值就是在密码hash过程中添加的额外的随机值,比如我的id是abc,密码是123456,存在数据库中的时候就可以对字符串123456idabc进行hash,而验证密码的时候也以字符串(要验证的密码)+idabc进行验证。

这样有另外一个用户密码是123456的时候,依然能构造出不同的hash值,并且能成功的验证,但这时候我的id就作为盐值为密码进行复杂hash了。

可见,盐值最大的作用之一就是减少数据库泄露带来的损失。