blueyi's notes

Follow Excellence,Success will chase you!

0%

有些场景下需要为系统设置代理,比如OpenCV3在进行cmake编译时需要在线从amazon下载一些第三方包。现在多数同学采用的代理方案应该都是基于socks5协议,而默认的终端工具支持的代理类型都是http或https,所以这里需要socks协议到http协议的转换,转换之后采用终端的代理变量设置http代理即可。

Read more »

python 2.7.13中采用print输出内容后,通过terminal的管道重定向到文件时出错:

1
UnicodeEncodeError: 'ascii' codec can't encode characters in position 19-20: ordinal not in range(128)

应该是编码的问题,然后就搜索发现python处理的代码文件的编码,系统默认编码都不一样,虽然可以通过对str进行decode(‘gbk’)的方式将中文正常输出,但重定向时,由于系统编码不一致,导致上述错误。可以通过设置系统编码来解决:

1
reload(sys).setdefaultencoding("utf8")

使用场景,通过requests获取中文网页,为了方便日常分析使用,会考虑将内容正常输出到标准输出,然后需要输出到文件时再进行重定向,而且还希望文件编码格式统一采用utf-8,代码如下:

1
2
3
# ...
reload(sys).setdefaultencoding("utf8")
print(re.search(regex, requests.get('http://example.com').content).group(0).decode('gbk'))

这样即可以正常输出中文到标准输出,也可以将其正常重定向到文件,而且不需要修改系统的默认文件编码

参考:
1.http://stackoverflow.com/questions/15530635/why-is-sys-getdefaultencoding-different-from-sys-stdout-encoding-and-how-does
2.http://stackoverflow.com/questions/11741574/how-to-print-utf-8-encoded-text-to-the-console-in-python-3

系统环境为Ubuntu 16.04.2 x86_64,已经配置好了Hadoop 2.7。配置Hadoop集群环境可以参考这里

约定将spark安装在/usr/spark,之前安装的Hadoop在路径/usr/hadoop,这里直接在已经配置好的三台hadoop上配置spark,依然将master节点做为master及worker,其他2个节点做为worker。
Spark官方下载地址:http://spark.apache.org/downloads.html

Read more »

为了Spark使用HDFS,所以先配置Hadoop集群,系统参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.2 LTS"
NAME="Ubuntu"
VERSION="16.04.2 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.2 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

Hadoop版本为官方当前最新的2.7.3:http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz

Read more »

SSH的免密钥登录原理其实就是SSH认证时将自己的公钥提前存储在需要被访问主机(可以是本主机,也可以是远程主机)的认证文件中,默认该文件路径为:~/.ssh/authorized_keys。该文件中存储了哪台主机的公钥,那么那台主机就可以通过SSH免密钥登录本主机。
所以过程就是首先生成本机公钥和私钥,然后将公钥插入到需要免密码访问的主机的~/.ssh/authorized_keys文件中

Read more »

Python可以使用pyenv管理并切换同一系统下的多个python解释器版本,pyenv支持非常多的python版本,也包括各大知名python的衍生版,如anaconda。而virtualenv可以为每个文件夹指定一个特定的python环境,各文件夹的python环境独立,共用一个统一的python基础版本,可以用于隔离不同项目的包环境,及包版本。当然pyenv也支持为不同的文件夹指定不同的python版本,但不同文件夹下的同一个python版本共用环境,所以pyenv与virtualenv结合使用,便可以实现任意版本下的环境隔离随意切换,pyenv自带virtualenv插件。
可以简单理解如下:

  • pyenv 实现Python版本管理
  • virtualenv 实现Python环境隔离
Read more »

由于virtualbox和vagrant最近升级win10之后总是出各种状况,所以想换成vmware来进行跨平台linux开发环境的搭建。但在windows下的VMware添加共享文件夹之后在Linux系统中总是无法找到挂载后的目录,手动挂载后会出现protocol error等错误。其实解决方法很简单。

Read more »

FFmpeg可以用来处理音视频的编解码,通过对GPU硬解码的支持,可以加速编解码,但需要手动编译FFmpeg时加入对GPU的支持。这里参考Nvidia官网和FFmpeg官网文档进行编译FFmpeg的编译。 编译ffmpeg时启用CUVID,其中包括NVENCODE API和NVDECODE API,ffmpeg中通过nvenc来来提供对Nvidia显卡的支持,同时添加NPP支持来增强编解码性能。

Read more »