有些场景下需要为系统设置代理,比如OpenCV3在进行cmake编译时需要在线从amazon下载一些第三方包。现在多数同学采用的代理方案应该都是基于socks5协议,而默认的终端工具支持的代理类型都是http或https,所以这里需要socks协议到http协议的转换,转换之后采用终端的代理变量设置http代理即可。
Ubuntu 16.04下编译OpenCV 3.2.0支持Java、FFmpeg以及CUDA8
Ubuntu 16.04下手动编译OpenCV 3.2.0,并提供对FFmpeg以及CUDA 8的支持来使用GPU加速视频图像处理。
考虑到大数据处理系统spark的需要,这里也同时加入opencv对java的支持。
python 2.7 UnicodeEncodError
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 | # ... |
这样即可以正常输出中文到标准输出,也可以将其正常重定向到文件,而且不需要修改系统的默认文件编码
参考:
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
Spark 2.1.0 On Hadoop 2.7集群配置过程
系统环境为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
Ubuntu 16.04下配置Hadoop 2.7.3集群
为了Spark使用HDFS,所以先配置Hadoop集群,系统参数:
1 | DISTRIB_ID=Ubuntu |
Hadoop版本为官方当前最新的2.7.3:http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz
Linux下配置SSH免密访问
SSH的免密钥登录原理其实就是SSH认证时将自己的公钥提前存储在需要被访问主机(可以是本主机,也可以是远程主机)的认证文件中,默认该文件路径为:~/.ssh/authorized_keys
。该文件中存储了哪台主机的公钥,那么那台主机就可以通过SSH免密钥登录本主机。
所以过程就是首先生成本机公钥和私钥,然后将公钥插入到需要免密码访问的主机的~/.ssh/authorized_keys
文件中
Python多版本管理工具pyenv及环境隔离工具virtualenv
Python可以使用pyenv管理并切换同一系统下的多个python解释器版本,pyenv支持非常多的python版本,也包括各大知名python的衍生版,如anaconda。而virtualenv可以为每个文件夹指定一个特定的python环境,各文件夹的python环境独立,共用一个统一的python基础版本,可以用于隔离不同项目的包环境,及包版本。当然pyenv也支持为不同的文件夹指定不同的python版本,但不同文件夹下的同一个python版本共用环境,所以pyenv与virtualenv结合使用,便可以实现任意版本下的环境隔离随意切换,pyenv自带virtualenv插件。
可以简单理解如下:
- pyenv 实现Python版本管理
- virtualenv 实现Python环境隔离
VMware配置linux guest中的shared folder
由于virtualbox和vagrant最近升级win10之后总是出各种状况,所以想换成vmware来进行跨平台linux开发环境的搭建。但在windows下的VMware添加共享文件夹之后在Linux系统中总是无法找到挂载后的目录,手动挂载后会出现protocol error等错误。其实解决方法很简单。
Ubuntu 16.04下编译ffmpeg支持CUDA下的cuvid vnenc和NPP
FFmpeg可以用来处理音视频的编解码,通过对GPU硬解码的支持,可以加速编解码,但需要手动编译FFmpeg时加入对GPU的支持。这里参考Nvidia官网和FFmpeg官网文档进行编译FFmpeg的编译。 编译ffmpeg时启用CUVID,其中包括NVENCODE API和NVDECODE API,ffmpeg中通过nvenc来来提供对Nvidia显卡的支持,同时添加NPP支持来增强编解码性能。
Ubuntu 16.04下编译OpenCV 2.4.13支持FFmpeg以及CUDA 8加速图像处理
Ubuntu 16.04下手动编译OpenCV 2.4.13,并提供对FFmpeg以及CUDA 8的支持来使用GPU加速视频图像处理。
考虑到大数据处理系统spark的需要,这里也同时加入opencv对java的支持。