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了。

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

一对一会谈:清单对对碰



一对一会谈:清单对对碰

有关如何组织一对一会谈(即管理者与员工定期进行的面谈),比尔·坎贝尔曾经向我们推荐过一种比较独特的方法。管理者应当把最想在会谈中涉及的5件事写出来,员工也应该列一份这样的单子。把两张不同清单拿出来后,单子上十有八九会有几个条目是重复的。对于所有的一对一会谈而言,双方共同的目标都是为了解决问题,如果管理者和员工不能独立找出最需要两人共同解决的问题,那么摆在两人面前的问题就更不可忽视了。

除此之外,比尔还为我们推荐了一个好用的一对一会谈大纲,让我们在应用中受益匪浅。
1.工作表现
a.可以是销售数据
b.可以是产品交付情况或有关产品的重大进展
c.可以是消费者的意见或产品质量
d.可以是预算数目

2.与同事之间的关系(这对企业成员的团结一致非常关键)
a.产品人员和工程人员的关系
b.市场人员和产品人员的关系
c.销售人员和工程人员的关系

3.领导与管理
a.你有没有对你的人员起到指导和帮助的作用?
b.你有没有把“害群之马”清除出团队?
c.你有没有在人才招聘上下功夫?
d.你能否激励员工做出创举?

4.创新(最佳实践)
a.你是否一直在进步,是否一直思考着如何才能变得越来越好?
b.你是否经常对新的技术、新的产品及新的方案进行思考和评估?
c.你是否将业界或世界上最顶尖的人或企业作为对比标杆?

为何产品要聚焦用户

聚焦用户,赚钱便水到渠成。如果你的用户不是你的客户,而你的客户又不认同你“聚焦用户”的观念,那么就很难做到这一点。

谷歌于2012年收购摩托罗拉,而乔纳森最先参加的摩托罗拉会议之一,就是一场长达3个小时的产品评估会。

会上,摩托罗拉的经理把公司每一款机型的特征和功能展示了一遍。他们反复提及客户需求,实际上却与手机用户的真正需求相去甚远,因此他们的话乔纳森大多并不赞同。

在会后午餐时,一位摩托罗拉的高管告诉乔纳森,在摩托罗拉,“客户”所指的并不是手机使用者,而是指公司真正的客户,也就是威瑞森通信(Verizon)以及AT&T公司等手机运营商。

这些运营商并没有时时聚焦用户。摩托罗拉的焦点也没有放在用户身上,而是对准了合作伙伴。

而摩托罗拉的结果,你懂的。