在Ubuntu18.04上安装TensorFlow GPU版本(cuda10.0)

 

注:此文主要用于记录我自己的安装过程,不建议在生产环境下使用,为了自己省心,请使用那些已经非常成熟的方法

 

首先请确认安装了64位版本的python,TensorFlow不支持32位版本

 

1,升级更新系统

sudo apt-get update 
sudo apt-get upgrade

2,验证你的GPU是否支持CUDA

lspci | grep -i nvidia

请结合Nvidia官网自行验证

3,验证你的Linux版本是否受支持

uname -m && cat /etc/*release

查看x86_64一行,表示支持cuda 9.1

4,安装依赖环境

sudo apt-get install build-essential 
sudo apt-get install cmake git unzip zip
sudo apt-get install python-dev python3-dev python-pip python3-pip

5,安装Linux内核头文件

sudo apt-get install linux-headers-$(uname -r)

6,安装 CUDA 10.0

如果之前安装过cuda,先执行卸载

sudo apt-get purge nvidia*
sudo apt-get autoremove
sudo apt-get autoclean
sudo rm -rf /usr/local/cuda*

之后进行安装

安装cuda推荐参考Nvidia官网的安装方式

官方安装:网页 (推荐使用的是deb(network)方式,也可以自行选择)

懒得看官网:

对于Ubuntu 16.04:

sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
echo "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64 /" | sudo tee /etc/apt/sources.list.d/cuda.list

对于Ubuntu 18.04

sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
echo "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 /" | sudo tee /etc/apt/sources.list.d/cuda.list

两者皆可

sudo apt-get update 
sudo apt-get -o Dpkg::Options::="--force-overwrite" install cuda-10-0 cuda-drivers

 

7,重启系统载入驱动

8,打开终端

echo 'export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashr
source ~/.bashrc
sudo ldconfig
nvidia-smi

检查驱动版本,可能为:396.26

 

如果nvidia-smi无效可能说明你的内核不受支持

你可以通过以下示例检查cuda的安装

cuda-install-samples-10.0.sh ~
cd ~/NVIDIA_CUDA-10.0_Samples/5_Simulations/nbody
make
./nbody

9,安装cuDNN

前往https://developer.nvidia.com/cudnn登录账号后下载相应版本,我写此文时下载的版本是

cuDNN v7.4.2 Library for Linux [ cuda 10.0]

打开终端,前往相应的下载路径

tar -xf cudnn-10.0-linux-x64-v7.4.2.20.tgz #此处自行修改对应文件名
sudo cp -R cuda/include/* /usr/local/cuda-10.0/include
sudo cp -R cuda/lib64/* /usr/local/cuda-10.0/lib64

10,安装NCCL 2.3.5

前往https://developer.nvidia.com/nccl/nccl-download登录账号后下载相应版本

打开终端,前往相应的下载路径

tar -xf nccl_2.3.5-2+cuda10.0_x86_64.txz
cd nccl_2.3.5-2+cuda10.0_x86_64
sudo cp -R * /usr/local/cuda-10.0/targets/x86_64-linux/
sudo ldconfig

11,安装依赖环境
对于未使用虚拟环境

pip install -U --user pip six numpy wheel mock

pip3 install -U --user pip six numpy wheel mock
pip install -U --user keras_applications==1.0.5 --no-deps

pip3 install -U --user keras_applications==1.0.5 --no-deps
pip install -U --user keras_preprocessing==1.0.3 --no-deps

pip3 install -U --user keras_preprocessing==1.0.3 --no-deps

对于使用虚拟环境

pip install -U pip six numpy wheel mock
pip install -U keras_applications==1.0.5 --no-deps
pip install -U keras_preprocessing==1.0.3 --no-deps
12,配置TensorFlow

下载 bazel:

cd ~/
wget https://github.com/bazelbuild/bazel/releases/download/0.17.2/bazel-0.17.2-installer-linux-x86_64.sh
chmod +x bazel-0.17.2-installer-linux-x86_64.sh
./bazel-0.17.2-installer-linux-x86_64.sh --user
echo 'export PATH="$PATH:$HOME/bin"' >> ~/.bashrc

此处排雷:在我的环境下,只有0.17.2版本工作正常,其他更新版本出错,请自行斟酌

刷新环境变量
source ~/.bashrc
sudo ldconfig
开始编译 TensorFlow
cd ~/
git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow
git checkout r1.12
./configure
输入python路径
Please specify the location of python. [Default is /usr/bin/python]: /usr/bin/python3
Do you wish to build TensorFlow with Apache Ignite support? [Y/n]: Y

Do you wish to build TensorFlow with XLA JIT support? [Y/n]: Y

Do you wish to build TensorFlow with OpenCL SYCL support? [y/N]: N

Do you wish to build TensorFlow with ROCm support? [y/N]: N

Do you wish to build TensorFlow with CUDA support? [y/N]: Y

Please specify the CUDA SDK version you want to use. [Leave empty to default to CUDA 9.0]: 10.0
Please specify the location where CUDA 10.0 toolkit is installed. Refer to README.md for more details. [Default is /usr/local/cuda]: /usr/local/cuda-10.0
Please specify the cuDNN version you want to use. [Leave empty to default to cuDNN 7]: 7.4.2
Please specify the location where cuDNN 7 library is installed. Refer to README.md for more details. [Default is /usr/local/cuda-10.0]: /usr/local/cuda-10.0
Do you wish to build TensorFlow with TensorRT support? [y/N]: N
Please specify the NCCL version you want to use. If NCCL 2.2 is not installed, then you can use version 1.3 that can be fetched automatically but it may have worse performance with multiple GPUs. [Default is 2.2]: 2.3.5
Please note that each additional compute capability significantly increases your build time and binary size. [Default is: 5.0] 5.0
Do you want to use clang as CUDA compiler? [y/N]: N
Please specify which gcc should be used by nvcc as the host compiler. [Default is /usr/bin/gcc]: /usr/bin/gcc
Do you wish to build TensorFlow with MPI support? [y/N]: N
Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native]: -march=native
Would you like to interactively configure ./WORKSPACE for Android builds? [y/N]:N

13,通过buzel编译 TensorFlow

bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package

此处会耗费相当长一段时间,大概3-4小时,同时最初对于网络环境有要求,请自行解决并多次尝试

bazel-bin/tensorflow/tools/pip_package/build_pip_package tensorflow_pkg
安装TensorFlow
cd tensorflow_pkg

对于处在虚拟环境中

pip install tensorflow*.whl

否则重建一个新的虚拟环境
请对应好python版本

14,验证TensorFlow安装

python

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
参考How to install Tensorflow GPU with CUDA 10.0 for python on Ubuntu

在macOS Mojave (10.14) 上通过anaconda安装TensorFlow(仅CPU) 与 Keras

根据官网建议,通过anaconda进行安装,踩雷不少,略作记录

1,安装anaconda

通过官网下载直接安装,非常简单,没有太多需要注意的

 

2,通过anaconda创建虚拟环境进行安装

根据TensorFlow官网步骤,定位至 Create a virtual environment (recommended) ,选择第3项 conda

conda create -n venv pip python=3.6 # select python version

(此处可以省去pip python=3.6,因为已经有支持anaconda默认的3.7的版本了)

source activate venv

pip install –ignore-installed –upgrade packageURL

(关于此处的packageURL,可以使用此处版本),对应即可修改为:

pip install https://github.com/lakshayg/tensorflow-build/releases/download/tf1.12.0-macOS-mojave-ubuntu16.04-py2-py3/tensorflow-1.12.0-cp37-cp37m-macosx_10_13_x86_64.whl

以上即安装成功,可以在python环境下进行测试

 

3,安装keras

pip install keras

没有发现坑

 

完。

 

新的水印

比之前的简洁不少吧…

关于CDN

此站建立之初,也就是网站空间还是Ali之时,曾短暂使用过Ali的CDN服务(Wikipedia, 百度百科)。毕竟Ali的广告永远不停,基本什么业务都尝试过,自去年起国内网络实名制实施,又因Ali一系列令人厌恶之恶习,便将所有相关服务迁至了海外,然尴尬之处在于由于国内网络的特殊情况即使是使用距离很近的亚洲机房响应时间基本也会在200ms以上,很自然地想到使用CDN服务来优化访问,很快就又有了新的问题,如果要使用国内的CDN服务,则必须在国内对网站进行备案,并且(当时)域名只能使用HTTP。开倒车的同时还顺便把自己套住,那我当初干嘛搬走。所以考虑国外CDN服务,又很有意思的是,同样因为国内网络的特殊性,国外CDN没有一家存在mainland地区节点,或者是与国内服务商进行合作提供节点,而要使用这些节点则必须备案… 而这些CDN的亚洲节点与我本身机房直连的响应时间也相差不多,故就放弃了使用CDN的想法。

最近与人聊天谈起访问速度的问题,故还是考虑着套一层免费的cdn,聊胜于无,何况能够一定程度上提升网站自身的安全性。套上cdn后检测各地响应速度,国外地区的速度明显提升不少,基本响应时间不会超过5ms,最慢的悉尼也仅仅是10ms左右。意料之外的国内尽管还是很慢,响应大多在150ms左右,但比起之前大概也有几十ms的提升。

关于GDPR

一般资料保护规范(GDPR)(规则 2016/679 ) 是在欧盟法律中对所有欧盟个人关于资料保护和隐私的规范。 他涉及了欧洲境外的个人资料出口。 GDPR 主要目标为取回公民以及住民对于个人资料的控制,以及为了国际商务而简化在欧盟内的统一规范。

在2016年4月27日通过。 两年的缓冲期后,在2018年5月25日强制执行。 GDPR取代了1995年的数据保护指令。

GDPR是个规范,不是指令,不需要各国政府立法授权,并且直接适用。

 

最近各大公司频繁更新隐私政策,想必也是这个原因了

并不是科幻的现实

距离“棱镜门”已过去近5年,惯常健忘的大家除了记得当年铺天盖地的新闻外早已不再关心“棱镜门”所反映的事实,甚至于即使是在5年前大肆报道“棱镜门”之时的大家也基本没觉得跟自己有多少关系吧,斯诺登努力向记者强调的要表现事件的核心是信息泄漏,而非他本人。但事实也正如他所担心的那样,大众的猎奇心理远远超出了对于事件本身的关注,斯诺登的本人显然受到了比事件本身更高得多的关注度,“斯诺登很帅”,“斯诺登是卖国者吗?”,“斯诺登近况”…

管理者牵头,媒体渲染包装,科技企业实施,各种新名词层出不穷,大数据,互联网+,物联网,云…社会的精英阶层在向大家绘制一番美好未来的同时一步步挖下大坑。在这里的大多数人对于信息泄漏抱有的是一种破罐子破摔的态度-“我知道我的信息早就泄漏了,又怎么了?”,对于个人隐私如此漠视,对于个人信息如此冷淡。大肆地享受着“便捷”,吹嘘着独步全球的“移动支付”,被权势者毫无顾忌大肆吞噬着个人信息。

为什么大家对信息泄漏如此冷漠,除了多数人缺乏相关技术常识外,恐怕更是因为根本就没有想象信息泄漏有多严重。

设想一个企业职员的一天,一早出门使用微信或支付宝购买早餐,用滴滴打车或者百度高德导航开车去单位,在途中用Qtunes或网易云听音乐,把车停在pr停车场,搭乘地铁,在地铁上用支付宝充值了地铁卡,从地铁口出来找了辆摩拜或是ofo去办公楼,使用钉钉签到,到了办公室先打开邮箱收一遍邮件,在百度上搜索工作相关内容,使用美团或了么订了午餐,其间用QQ,微信与家人朋友闲扯,下午使用Office,WPS,Pages写文章做报告,快下班时打开豆瓣查查最近上映了什么电影,下班后用淘票票或格瓦拉订了一张电影票,看完电影用支付宝付了商场停车费后回家,回家后打开手机在优酷b站找点视频看了看,在手机上设定好第二天的闹钟睡觉,手上还戴着手环监测睡眠质量。

也许不是每个人都会遇到跟上面一模一样的所有场景,但几乎每个人都会遇到其中几个乃至十几个相似场景,那么对于有能力接触到这些信息的人来说,他能知道这个人多少信息?毫不夸张地说,除了不知道你做了什么梦以外(其实甚至可以通过手环检测的心率再结合你的人际关系进行推断你的梦)几乎你的所有信息他都知道。你一整天的行程,你一整天接触的人,你的性格,你的爱好,你的工作,你的小心思,你的小念头,他都知道,并且不止这一天,是每天,每月,每年。同时,人是社会性动物,人于社会必然与其他人产生联系,而当与其他人的联系反馈回此本体,便形成了信息的连结,知悉这个人的长相,性格,健康状况,工作情况,学识水平,社会关系,人际关系,兴趣爱好,禁忌,人生观,价值观…他是最了解你的人,他可以接触到你最底层的内心,你在想什么,你在关注着什么,你在害怕着什么…

如果信息泄漏仅限于互联网已经很可怕,但根据当年棱镜门的报道来看,信息泄漏远非单单互联网这么简单。根据棱镜门的相关报道,NSA有能力有资源收集所有美国电信企业的用户电话,短信数据,不只是接收方和发送方这样一个简单记录,更包含了里面所有内容,同时对于互联网服务提供商,可以直接抓取元数据,简单地讲,事实上或许除了对讲机一类简易的短距离通信装置(我还没觉得科幻到如此地步),所有的电子通讯都已经被监控或是泄漏。并且NSA开发了一系列系统对于这样庞大的数据进行处理,同时开发出了大量的使用工具,管理者可以很轻松地通过关键字进行关联检索,可以进行历史搜索,实时搜索,甚至未来搜索(当该关键词在未来被提及时发出警告或执行响应操作),知晓计算机皮毛知识的我在棱镜门之前曾强烈怀疑管理者是否有如此强大的运力和存储空间来处理如此庞大的数据,这真的很像科幻电影,但却是事实。

而千里之外的这个地方,由于我前文提到的大众对于信息泄漏持破罐子破摔,听之任之的态度,管理者悄然在进行着一项又一项看似无大影响实则影响巨大的举动,2015年,《网络安全法》,2016年,《郭嘉网络空间安全战略》,2017年,网络实名制,2018年…不可说
同时,作为全球计算机实力绝对靠前之地,如果有足够的人力物力(放心,有的),完全可以做到NSA能够做到的绝大多数事情。明面上的墙都已经无需掩藏,暗地里的探头自不会少了。

那么,为什么要对网络监听反感,为什么对信息泄漏反感,我认为原因大体可以分为两部分。
第一部分是大多数人能够切实感受到的,即自身财产名誉受到威胁,或是正常生活遭受纷扰常见如电话骚扰,精准广告,邮件诈骗等,更高一级别或许与社会工程学有不少联系,对于受害者是毁灭性的,精准而无情。以上也仅仅只是当下可能发生的现象,而对于未来当那些现时的时髦词汇-人工智能,自动驾驶,物联网…真正成为现实走入社会之时我也想象不到会发生什么,我只知道依靠现行的存储技术将此时的关键信息存储至那时是完全没有任何问题的,何况“那时”并不遥远

而更高一层次的影响在于,信息泄漏,网络监听侵害着人作为独立个体的隐私。
何谓隐私, “隐私权的价值在于个人自由和尊严的本质,体现于个人自主,不受他人的操纵及支配。对个人内心领域的侵入构成对其自我存在的严重危害。一个人若可以被任意监视,窃听或干涉,他将无法对自己事务 保有最终决定的权利,势必听命于他人,不再是自己的主宰,丧失其作为独立个体的地位。”(王泽鉴)

No one shall be subjected to arbitrary interference with his privacy, family, home or correspondence, nor to attacks upon his honor and reputation. Everyone has the right to the protection of the law against such interference or attacks(UNIVERSAL DECLARATION OF HUMAN RIGHTS  Article 12.

隐私权应是现代社会的基本人权,在网络高度发达的当下,隐私权实则又与自由有千丝万缕的关系。

对于自己不曾了解的领域,切不要依照自己的主观经验进行判断,至少不要随意发表观点,我不是在讲神话故事,也不是在危言耸听,网络安全的共识是,产品的功能越少,业务越简单,越利于网络安全。只是无奈这个地方的管理者把世界上还仅存的那些有良心的技术人员开发的可以一定程度上保护你隐私的东西(如Tor,如Telegram,如DuckDuckGo…)都跟你用墙隔开了,顺便再让这里的企业开发出了一大堆臃肿不堪的软件,生活于这个网络已逐渐不再是新兴事物的当下,个人的确是没有足够的力量去对抗一整个庞大的信息收集体系的,同样也不可能不去使用互联网世界带来的便利,那么至少个人能够做到的是尽量减少信息的连结,尽量减少自己在互联网上留下的足迹,也许我们终究抵抗不过来自于郭嘉暴力机构的视奸,至少能够让本领不高的信息贩子多绕点弯,赤身裸体行走于肮脏与美好共存的互联网实在是太不雅观了。

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.

2017勒芒24小时耐力赛

最近实在是太多事情,很多事情想写写,实在是时间不够,勒芒也都是10天前的事情了,现在才来说说也实在是有些迟了。

说勒芒之前先说说WEC-World Endurance Championship 世界耐力锦标赛,作为FIA重要赛事之一的WEC近年来越来越颓疲,直接原因当然是奥迪的退出,根本原因则是赛车运动对各国年轻人的吸引力在逐步下滑。

今年WEC的最高组别原型车一组(LMP1)仅有保时捷和丰田两个厂商参赛。由于丰田和保时捷签订了君子协定,2019年之前两支车队都不会对赛车底盘做出任何改动,今年丰田的赛车竞争力很强。值得关注的是丰田日本籍赛车手小林可梦伟在排位赛做出“神之一圈”打破了沉寂多年的勒芒圈速记录。

暂时无法播放,可回源网站播放

今年勒芒丰田派出三个车组,保时捷两个车组,排位赛阶段丰田8号车组,9号车位列1,2,保时捷1号和2号车组位列3,4,丰田9号车组排在第五发车。丰田今年竞争力非常强,保时捷的技术总监也坦言想要取得胜利非常困难。

勒芒是一个十分特别的比赛,24小时连续不断驾驶,每个车组配备3位车手,对于车与车手都是一场巨大的考验,近几年的勒芒都十分精彩,去年更是可以载入史册地戏剧性(参阅此处)。

比赛于第一天下午3点开始,发车后不久保时捷2号车组即出现机械故障,赛车抖动严重,悬挂出现故障,回到维修区维修。保时捷1号车与丰田的7,8两车在第一集团。丰田9号车组圈速不太理想。

维修一个小时后保时捷2号车组重返赛道,此时距离最高组别LMP1-H里最慢的9号车组也已有着10圈以上的差距,对于此时的2号车组来说,完赛即是胜利。全场领跑的丰田7号车组此时已经拉开第二40s差距左右,优势十分明显。保时捷1号车组仍在和丰田8号车组争夺第二的位置。

比赛进入到夜晚,部分观众开始休息,赛道上超车逐渐减少,缠斗也不那么激烈。小林可梦伟驾驶着丰田7号赛车,圈速很快很稳定,不断扩大着优势。不过却因一次常规的进站,丰田7号赛车突发机械故障,离合器出现问题,发动机失去动力。按照比赛规则,出现故障的赛车必须自己开回维修区维修,否则只能退赛。最终丰田7号赛车戏剧性地停在了“保时捷弯”,退出比赛,小林可梦伟走出赛车向车迷挥手致谢。

暂时无法播放,可回源网站播放

不巧的是没多久丰田8号赛车也遭遇事故回到维修区修理,此时LMP1组别赛车排序为1-9-2,保时捷首次取得了领先。

也许是丰田今年的运气依旧很不好,9号车不久后也与一辆低组别赛车相撞,轮胎爆胎,最终也是退出了比赛。

至此,保时捷1号车组遥遥领先,比第二领先10圈有余,2号车组还处于全场第十几名的位置,丰田8号车组仍在维修区维修。

上天不只对丰田开了玩笑,保时捷同样也被戏弄。比赛进入最后4个小时,1号车组悠闲地“养生跑法”时却突发机械故障,失去油压,汽油机无法启动,靠着电动机艰难前行,最终停在了赛道上,退出了比赛。

此时全场第一居然是一台低组别的LMP2赛车,对于中国人来说更有意思的是这个车队是由成龙和车手程飞共同赞助的Jackie Chan DC Racing,此时保时捷2号车组距离全场第一有10圈,丰田9号车距离保时捷2号车组10圈。

LMP1-H组赛车每圈可以比LMP2组赛车快上10s,每圈大概需要3:30s,差10圈就是差了35分钟,要追上就需要210分钟即三个半小时,这是在什么突发状况都没有的情况下,距离比赛结束只剩4个小时,如果2号不能追上那台LMP2赛车,那么全场冠军就会是一台低组别赛车。不过最终比赛并没有出现奇迹,2号车组顺利超过了LMP2赛车成为全场冠军。

比赛末段,阿斯顿马丁和雪佛兰两家一直缠斗到了最后两圈,雪佛兰领先,但没有更换轮胎,意味着过弯会更加吃力,紧随其后的阿斯顿马丁在每个弯角都试图超越雪佛兰,雪佛兰只要稳住这最后一圈不被超越就是最终的胜利者。勒芒赛道的最后几个弯是需要走切线,最后一个弯需要先全刹车,然后进入直道冲线,也就是这个弯,雪佛兰因为轮胎原因刹车还是十分吃力,阿斯顿马丁趁此机会成功超过,在距离终点线100m的地方成功完成逆转。

暂时无法播放,可回源网站播放

保时捷2号车组最终以全场第一的身份冲线,领先第二的Jackie Chan DC车队仅5分钟。

通过OpenWrt固件实现路由器智能代理及建立访客网络流量控制

网件的固件功能实在是过于简陋,折腾了一下午总算是把想要的功能全折腾好了,留作记录

本文环境基于网件路由器R6300 V2,不保证其他环境下可行性,请酌情参考

 

一、刷写OpenWrt固件

访问OpenWrt项目官网查找相关固件

如图可以查看路由器详细参数ow1

在其下方可以找到相关固件

ow2

下载好固件后登入路由器管理页面,依次选择“高级”-“管理”-“固件升级”,上传固件确定后等待5分钟左右即可刷写成功

此处说明,OpenWrt 15.05.1之后固件多是支持5G的,但R6300 V2 5G驱动闭源故无法支持5G网络

固件装好后,进入路由器管理页面Network-Interfaces,修改WAN参数设置宽带连接互联网,其他无线设置在Network-Wifi选项下,不再赘述。

ow3

 

二、配置代理实现路由器只能科学行走

主体思路是现在路由器上安装相关代理,然后根据白名单判断该网页是否需要通过代理,从而达到智能行走的目的。

通过SSH连接路由器,安装以下软件(以下代码中包含软件版本以R6300 V2硬件为基准,请根据自己路由器自行修改)

1,shadowsocks-libev for OpenWrt

  • wget https://dl.bintray.com/aa65535/opkg/shadowsocks-libev/3.0.6/OpenWrt/bcm53xx/:shadowsocks-libev_3.0.6-1_bcm53xx.ipk
  • opkg install  shadowsocks-libev_3.0.6-1_bcm53xx.ipk

2,luci-app-shadowsocks

用于提供管理代理可视化界面

  • wget https://github.com/shadowsocks/luci-app-shadowsocks/releases/download/v1.6.3/luci-app-shadowsocks_1.6.3-1_all.ipk
  • opkg install luci-app-shadowsocks_1.6.3-1_all.ipk

3,ChinaDNS for OpenWrt

用于实现白名单功能

  • wget https://github.com/aa65535/openwrt-chinadns/releases/download/v1.3.2-4/ChinaDNS_1.3.2-4_bcm53xx.ipk
  • opkg install ChinaDNS_1.3.2-4_bcm53xx.ipk

4,luci-app-chinadns

用于提供ChinaDNS可视化管理界面

  • wget https://jaist.dl.sourceforge.net/project/openwrt-dist/luci-app/chinadns/luci-app-chinadns_1.4.0-1_all.ipk
  • opkg install luci-app-chinadns_1.4.0-1_all.ipk

5,openwrt-dns-forwarder

  • wget https://dl.bintray.com/aa65535/openwrt/dns-forwarder/1.2.0/OpenWrt/bcm53xx/:dns-forwarder_1.2.0-1_bcm53xx.ipk
  • opkg install dns-forwarder_1.2.0-1_bcm53xx.ipk

6,luciappdnsforwarder

  • wget https://github.com/aa65535/openwrt-dist-luci/releases/download/v1.6.1/luci-app-dns-forwarder_1.6.1-1_all.ipk
  • opkg install luci-app-dns-forwarder_1.6.1-1_all.ipk

 

安装好上述软件后即可开始配置,如若出错,请根据相关错误描述安装相应依赖环境

配置如下:

1,配置ss

打开路由器管理页面,Services-ShadowSocks-Servers Manage-Add

此处填写相关服务器信息,其中服务器地址(Server Address)一项只可填实际ip地址,不可填域名

 

填好后save&apply,进入Access Control选项

 

Zone WAN下

 

Bypassed IP List选择ChinaDNS CHNRoute,其他按需填写

 

Zone LAN下

 

设置代理模式,正常,全局,或直连(Direct)

其他按需填写

 

LAN Hosts下

 

对特定IP指定特定代理方式

 

同样save&apply,然后进入General Settings

 

Transparent Proxy下

 

选择填写的服务器,其他按需配置,最后启用ss

 

2,配置DNS

打开路由器管理页面,Services-DNSForwarder

如图填写

ow6

然后Services-ChinaDNS

如图填写

ow7

再Network – DHCP/DNS

 

General Settings下

 

DNS forwardings处填写:127.0.0.1#5353

 

Resolv and Hosts Files下

 

勾选Ignore resolve file

ow8

 

回到Services-ShadowSocks下,检查SS是否启用,如果没有启用尝试通过SSH手动启用,否则查看配置文件是否有误

 

ow9

此时就应该基本完成代理了

 

三,配置访客网络,并对其带宽进行限制

所需package

luci-app-sqm

sqm-scripts

均可直接在luci里找到

ow11

安装好后配置访客网络

 

新建一个接口

 

打开路由器管理界面-Network-Interfaces-Add new interface

我命名为’GUEST’

更改协议为静态地址

Protocol-Static address

子网掩码填写

ipv4-netmask:255.255.255.0

ow12

页面底部开启DHCP服务

ow13

防火墙设置勾选LAN

ow14

其他按需填写

 

为访客网络配置无线

 

Network-wifi

选择合适的频段Add

网络勾选’Guest’,其他按需填写

ow15

 

限制访客网络带宽

Network-SQM QoS

interface name下选择对应的访客网络名称

 

此处软件Bug特别注意

 

Download speed对应的其实是上行限速

Upload speed对应的是下行限速

配置好后启用

 

最后前往Network-Wifi开启访客网络即可

 

 

 

关于Android N

谷歌在今年发布了Android N (7.0) ,首批除了Pixel外,最快的是索尼的z3,可以使用开发者预览版。

 

 

2

按照官方的方式刷写失败,PCC(索尼的软件)连接奇慢

3

索尼官方的教程

说说几个显而易见的变化。

首先是很漂亮的下拉菜单,可定制性高,也极易操作。跟5.0和6.0一样,下拉菜单分两级,第一级会展示各种通知以及在顶部根据使用频率展现五个开关。通知则跟5.0或6.0有明显不同,分割线变得更细,内容也显示得更多,个人觉得也更美观了。继续下拉第二级下拉菜单会出现所有共9个开关,当然你可以定制你所需要的开关。6.0时如wifi连接可以直接在下拉菜单中设置,到了7.0所有功能都可以在下拉菜单中设置,短按即在下拉菜单中设置,长按进入“设置”中进行设置,非常方便。

7.0一个重大更新就是提供了分屏操作,不过在z3并不算大的屏幕上显得并不是很有用,部分程序也并不支持

7.0一个非常人性化的地方是在点击后台任务按钮时会把当前应用排到最下方,把之前的应用排到前方,双击后台任务按钮可快速切换刚才的任务

Screenshot_20160715-230907

把当前应用排到最下方

 

Screenshot_20160715-231129

Xperia的启动器

Screenshot_20160715-231038

 

23小时57分钟的冠军

勒芒(Le Mans)位于法国巴黎西南约 200km处,是一个人口约 20万的商业城市。这个小城市能够闻名于世界,主要是因为自1923年开始(1936年、1940~1948年除外),每年6月举行的被称为最辛苦的单项赛事———“勒芒24小时耐力赛”。3位车手为一个车组,驾驶一台赛车,完成连续24个小时的竞赛(法文为24 HEURES DU MANS)。

勒芒24小时耐力赛同世界一级方程式锦标赛(F1)、世界汽车拉力锦标赛(WRC)并称为世界最著名和最艰苦的三大汽车赛事。自从首届比赛于1923年举行以来,除了二战前后的几年以外(1936年,1940-1948年未举行),勒芒耐力赛从未间断过。

2016年6月18日,第84届勒芒24小时耐力赛如期举行,比赛分四个组别,最高组别的lmp1组有三个厂商车队参加,奥迪,保时捷,丰田。排位赛保时捷1号发挥出色拿到杆位,正赛开始后一直保持领先,但在赛程接近四分之一时出现机械故障进站维修,维修花费两个小时,此时作为车队主力的1号已无竞争力,之后丰田极佳的燃油经济性让其逐渐取得优势。比赛进入最后一个小时,丰田五号排在第一位,保时捷二号排在第二位,丰田仍然领先保时捷三十秒左右,几乎很难有机会反超。比赛进行到最后二十分钟,丰田依然领先保时捷30s,如果丰田夺冠将是继马自达后亚洲品牌第二次夺得勒芒冠军。比赛进行到最后七分钟,保时捷进站最后一次加油,丰田仍保持29s优势,最后五分钟,丰田的TEAMRADIO 忽然传出车手中嶋一贵的声音:I have no power! I have no power.丰田动力丧失,10多秒后停在赛道一旁,在比赛的最后3分钟,保时捷成功反超丰田。

5

丰田PIT

8

车队老板之一的老爷子

9

丰田的官方推特在比赛结束后只发了一个词——心碎

耐力赛的魅力显露无疑,当大家都认为丰田必胜无疑之时,在丰田胜利了23小时55分钟时,丰田输掉了比赛。

ClZHdcVUgAAwUgU

赛后丰田车队互相拥抱在一起

 

10

保时捷对对手表示尊重

11

丰田董事丰田章男表示丰田不会放弃

 

暂时无法播放,可回源网站播放