Search This Blog

Ubuntu ShadowsocksR (SSR)翻墙方法


近期考虑将工作环境转移至linux环境(Ubuntu 14.04)下,翻墙必不可少。由于使用的节点服务器端的配置已经全面放弃“SS”,转移至“SSR”,因此必须使用支持SSR的客户端。原本的SS-Qt5不再可用(无法设置协议与混淆)。

breakwa11的github主页中找到另一款支持SSR的客户端:shadowsocksr-libev。(链接已失效,建议在github中搜索“shadowsocksr-libev”获取备份)该客户端支持SSR,但是由于其说明文档未及时更新,实际上支持协议与混淆的配置但未给出设置方法。

安装

主页中给出了多种安装方式,而对于Ubuntu 14.04只能采用以下方式:
cd shadowsocks-libev
sudo apt-get install --no-install-recommends build-essential autoconf libtool libssl-dev \
    gawk debhelper dh-systemd init-system-helpers pkg-config asciidoc xmlto apg libpcre3-dev
dpkg-buildpackage -b -us -uc -i
cd ..
sudo dpkg -i shadowsocks-libev*.deb

使用

ss-[local|redir|server|tunnel]
   -s           host name or ip address of your remote server
   -p           port number of your remote server
   -l           port number of your local server
   -k           password of your remote server
   [-m ]        encrypt method: table, rc4, rc4-md5,
                                aes-128-cfb, aes-192-cfb, aes-256-cfb,
                                bf-cfb, camellia-128-cfb, camellia-192-cfb,
                                camellia-256-cfb, cast5-cfb, des-cfb, idea-cfb,
                                rc2-cfb, seed-cfb, salsa20 ,chacha20 and
                                chacha20-ietf
前5项是常规的设置选项,但是由于使用的节点同时设置了协议和混淆参数,属于必填选项,设置方法如下:
ss-local -o [obfs混淆协议] -O [protocol协议] -g [obfsparam混淆参数] -s [服务器地址] -p [服务器端口] -l [本地监听端口] -b [本地监听地址] -k [SS密码] -m [加密方式]

参考

1. shadowsocks-rss-libev使用方法

深度学习初步

平台

常见的深度学习平台包括 TensorflowCaffeKeras等。其中Tensorflow由Google Brain团队开发,是自由度较高的深度学习平台,而Keras由个人开发,基于Tensorflow平台(或Theano),对基本的操作封装较好,容易上手。Caffe由Berkeley Vision and Learning Center开发。以上三个平台的接口语言均支持Python,其中Keras仅支持Python,Caffe还支持Matlab,Tensorflow支持的语言更为广泛,包括:C/C++、Java以及Go语言。更为详细的深度学习平台对比可以参见wiki

经过两天的折腾,深感对于深度学习零基础的人而言Tensorflow不太好入门,官网教程不容易follow,尤其是涉及了Tensorboard可视化的工具,该工具的目的在于便于理解和调试神经网络,但是由于教程较为晦涩难懂,前期一直在上面栽跟头,迟迟调试不出来Tutorial中提及的简单结构图(Graph)(可能与windows版本有关),导致对Tensorflow迟迟摸不着头脑,转而使用Keras。主要参考了李宏毅博士的ppt。其中简单介绍了深度学习的基本概念,同时也介绍了Keras平台的时使用示例,浅显易懂。最终确定以该平台为基础进行后续的学习和研究。在未来,如果有更底层的需求,可以考虑转向Tensorflow。

这些深度学习的平台普遍是跨平台的(Linux、Windows、OS X),但是实际变现中对各个平台的兼容性还是有所不同的。起初,在windows平台下安装了Tensorflow,可以跑通基本的“Hello World”,但是设计到Tensorboard进行可视化的测试时遇到障碍,无法载入Graph。原因未知,可能与操作系统相关。此外,在Windows下安装Keras失败;遂转而采用Linux。Windows下的安装参见后文。

编译器

由于以上介绍的深度学习平台均采用Python作为接口语言,因此采用Python编译器。而Python的编译器种类繁多,例如:Pycharm、Ipython、VS Code等。起初在Windows上尝试采用VS Code作为Python编译器,但是由于环境配置后,Pylint的编辑纠错功能实在是不胜其烦,转而使用Pycharm。作为一款Python的专用IDE,还是比较方便。该软件分为收费版和社区版,使用社区版即可。

环境搭建

综上,在确定了平台和操作系统以及编译器之后,具体的深度学习环境搭建步骤如下:
1. 安装Tensorflow
pip install tensorflow
2. 安装Keras
pip install keras
3. 安装Pycharm
wget https://download.jetbrains.com/python/pycharm-community-2017.1.3.tar.gz
tar -xvzf pycharm-community-2017.1.3.tar.gz
4. 运行Pycharm
cd bin
./pycharm.sh

第一个深度学习程序

"""
     first_deep_learning.py
"""

from __future__ import print_function

from keras.models import Sequential
from keras.layers import Dense, Activation, Flatten
from keras.datasets import mnist
import keras

(x_train, y_train), (x_test, y_test) = mnist.load_data()

y_train = keras.utils.to_categorical(y_train, num_classes=10)
y_test = keras.utils.to_categorical(y_test, num_classes=10)

model = Sequential()
# layer 1
model.add(Dense(units=500, input_shape=(28, 28)))
model.add(Activation('relu'))
# layer 2
model.add(Dense(units=500, activation='sigmoid'))
# layer 3
model.add(Flatten())
# layer 4
model.add(Dense(units=10))
model.add(Activation('softmax'))

model.compile(loss='categorical_crossentropy',
              optimizer='sgd',
              metrics=['accuracy'])

model.fit(x_train, y_train, batch_size=100, epochs=2)

Windows下安装 Tensorflow + Keras

起初在Windows下安装Tensorflow+Keras环境未成功,原因在于Keras安装过程中出现问题。原因在于安装Keras的过程中会自动安装依赖项 scipy 而提示了如下的错误
Building wheels for collected packages: scipy
  Running setup.py bdist_wheel for scipy ... error
  ... # 省略
    File "scipy\linalg\setup.py", line 20, in configuration
      raise NotFoundError('no lapack/blas resources found')
  numpy.distutils.system_info.NotFoundError: no lapack/blas resources found
查阅资料后发现问题出现在 scipy 无法通过类似Linux下 pip install scipy 的方式直接安装,解决的方法就是下载预先编译好的 scipy 的包文件(根据Windows系统以及Python版本选择对应的包下载即可),然后通过以下命令安装
pip install SomePackage-1.0-py2.py3-none-any.whl
在解决 scipy 的安装问题后,重新安装Keras即可成功。完整的安装流程如下

依赖项

安装流程

1. 安装tensorflow
pip3 install tensorflow
2. 安装scipy
pip3 install SomePackage-1.0-py2.py3-none-any.whl
3. 安装Keras
pip3 install keras
注意,此处安装命令均采用了 pip3 原因在于如果系统下同时安装了Python 2.x 以及 3.x 可以保证调用 Python 3.x 从而在Python 3.x 环境下完成安装
4. 安装Pycharm
下载Pycharm Windows版本安装即可

遇到的问题

1. pip 安装tensorflow时提示:
Could not find a version that satisfies the requirement tensorflow
原因:pip版本太低 解决:升级pip
pip install --upgrade --user pip
注意其中的--user表示为当前用户执行pip命令

参考