Yibai's Blog


  • Startseite

  • Archiv

windows 10上安装spark 2.2

Veröffentlicht am 2017-11-29

spark不仅可以运行在安装了Hadoop的集群上,同样可以安装在我们的笔记本电脑上。那要怎样安装到最新的Windows 10上呢?

目前最新版的spark是2.2版本,使用的Scala 2.11编译。

  1. 安装java8 JDK,设置好环境变量,确保java -version和Javac -version都好用
  2. 安装Scala 2.11的版本,设置好环境变量,不要安装官网最新版的2.12。确保scala -version和scalac -version都好用
  3. 现在下载最新版spark,我现在的版本是spark-2.2.0-bin-hadoop2.7.tgz。
  4. 解压到C盘中
  5. 设置SPARK_HOME环境变量,C:\spark-2.2.0-bin-hadoop2.7
  6. 添加%SPARK_HOME%\bin到Path
  7. 下载winutils的Hadoop 2.7版本
  8. 把hadoop-2.7.1文件夹复制到C盘
  9. 设置HADOOP_HOME环境变量,C:\hadoop-2.7.1
  10. 添加%HADOOP_HOME%\bin到Path
  11. 打开控制台,输入spark-shell检查安装是否成功。

Windows10上安装OpenAI的universe

Veröffentlicht am 2017-11-21

最近人工智能在各种游戏战胜人类。前有Deep Mind的Alphago战胜所有顶尖围棋选手。后有OpenAI的人工智能在1v1的data2游戏中完胜顶尖人类玩家。OpenAI开源了他的这一部分工作-universe,希望更多的人学习人工智能,用这个系统训练玩各种不同的游戏。

但可惜的是目前universe官方还没有支持Windows,只支持Linux和Mac。但我们知道微软在Windows10的年度升级版里面增加了一个Linux子系统,我们是不是可以利用这个子系统来安装呢?

安装Linux子系统

我目前的系统版本为Windows 10 Home 1079 16299.64。安装子系统已经不许要切换到开发者权限。只需要直接到Microsoft store中安装Ubuntu,参考官方文档安装,Windows 10 Installation Guide。

  1. 启动powershell,开启功能,Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  2. 安装Ubuntu,注意只能安装在C盘
  3. 打开Ubuntu的终端,完成。

之后我又参考这篇文章,How to Run Graphical Linux Desktop Applications from Windows 10’s Bash Shell。使得Linux可以运行图形化界面的程序。

下面是简化步骤。

  1. 安装X Server,Xming
  2. 安装一个窗口程序,sudo apt-get install vim-gtk
  3. 设置显示环境变量,export DISPLAY=:0。每次运行之前都需要执行。

配置python

Linux子系统是Ubuntu 16.04。安装universe之前我们先配置好python。系统默认安装了python2.7,虽然universe支持2.7,我还是安装了anaconda,升级到了3.6。

  1. 卸载python2.7,sudo apt purge python2.7-minimal
  2. 安装anaconda,官网下载64位版本,执行Anaconda3-5.0.1-Linux-x86_64.sh,按照提示安装
  3. 安装程序最后会在~/.bashrc中添加export PATH="/home/michael/anaconda3/bin:$PATH"
  4. 更改pip的硬链接ln /home/username/anaconda3/bin/pip /home/username/.local/bin/pip

安装universe

Ubuntu 16.04使用以下命令安装。

1
2
3
4
5
sudo apt-get update
sudo apt-get install golang libjpeg-turbo8-dev make
git clone https://github.com/openai/universe.git
cd universe
pip install -e .

大功告成

用OpenAI的universe玩游戏

Veröffentlicht am 2017-11-20

【Python自动驾驶GTA5】2-边缘检测

Veröffentlicht am 2017-11-19

紧接上一步,现在我们对获得的图像进行一些处理,RGB转换为灰度图像并做边缘检测。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
from PIL import ImageGrab

import numpy as np
import cv2
import time
import mss

def process_img(image):
original_image = image
# convert to gray
processed_img = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# edge detection
processed_img = cv2.Canny(processed_img, threshold1 = 200, threshold2=300)
return processed_img


def screen_record():
with mss.mss() as sct:
# Part of the screen to capture
monitor = {'top': 40, 'left': 0, 'width': 800, 'height': 640}

while 'Screen capturing':
last_time = time.time()

# Get raw pixels from the screen, save it to a Numpy array
img = np.array(sct.grab(monitor))

# Display the picture in grayscale and detect edge
cv2.imshow('OpenCV/Numpy grayscale', process_img(img))

print('fps: {0}'.format(1 / (time.time()-last_time)))

# Press "q" to quit
if cv2.waitKey(25) & 0xFF == ord('q'):
cv2.destroyAllWindows()
break

screen_record()process_img

增加了一个process_img函数,保留原始图像再做转换。Canny Edge Detector是常用的边缘检测器。

控制游戏

这里用到了pyautogui来控制鼠标和键盘。先安装pip install pyautogui.

刘慈欣作品集

Veröffentlicht am 2017-11-19
  • 镜子 (本篇第十六届银河奖)
  • 山(网友票选人气最高中篇作品)
  • 诗云(本篇获第十五届银河奖读者提名奖)
  • 流浪地球(本篇第十二届银河奖 已投拍电影 刘慈欣本人改编剧本)
  • 中国太阳(本篇获第十四届银河奖)
  • 带上她的眼睛(本篇获第十一届银河奖)
  • 地球大炮(本篇获第十五届年银河奖)
  • 思想者(大刘少有的暖心文字)
  • 朝闻道(本篇一于《科幻世界》发表,便引来读者巨大反响)
  • 乡村教师(刘慈欣唯一自评特别的作品,已投拍电影,并入选中学编写教材)
  • 混沌蝴蝶 (个人命运的诗化悲剧)
  • 吞食者(第十四届银河奖读者提名奖,本篇被誉为《三体》前传)
  • 全频带阻塞干扰((俄罗斯特别版)获第十三届银河奖)
  • 地火(奇妙科幻与沉重现实相结合的神来之笔)
  • 梦之海(本篇获第十五届银河奖,超技术的极致描写)
  • 赡养上帝(“疯狂的外星人”《赡养人类》姊妹篇本篇获第一届柔石小说奖)
  • 赡养人类(“疯狂的外星人” 《赡养上帝》姊妹篇本篇获第十七届银河奖)
  • 微纪元(告别宏人时代,已确定又大刘本人担纲改编电影)
  • 天使时代(原名《波斯湾飞马》探讨基因技术可能带来的生存危机)
  • 超新星纪元(独家奉献短篇版,获赵树理文学奖,已确定将搬上大银幕)
  • 信使 (时空跃迁的暖心之作——“人类是有未来的”)
  • 坍缩(“所有的生活都是合理的”)
  • 纤维(“宇宙一分为二,我看到的是另一种可能的纤维世界。”)
  • 西洋(“这又是新大陆多梦的一夜。”)
  • 微观尽头(“没有任何预兆,比眨眼的速度更快,宇宙再次被反转……”)
  • 2018年(“不管好坏,我们将是第一批真正触摸永恒的人。”)
  • 命运(“我们就是这样误入了一个时间蛀洞。”)
  • 光荣与梦想(“轰然一声,光荣与梦想熊熊燃烧起来。”)
  • 鲸歌(“这是大海的灵魂在歌唱。”)
  • 太原诅咒(“晨曦初露时,操作开始……”)
  • 圆圆的肥皂泡(“天空成了梦的天空”)
  • 白垩纪往事(独家奉献短篇版,“没有人知道,在这宁静的一刻,地球的历史已被扭向另外一个方向……”)

其他

  • 人生:记忆遗传

开始健身后身体的一些变化

Veröffentlicht am 2017-11-19

开始健身已经有将近1个月的时间了,肌肉线条确实能看到有明显变化,特别是胸肌和手臂的变化还是比较明显的。但上周的一天夜间突然降温,早上起来就感觉嗓子不舒服。之后几天嗓子开始疼,慢慢出现感冒症状。

为什么每次感冒都是先嗓子疼然后才会流鼻涕打喷嚏呢?

感冒前的嗓子痛是因为扁桃体(因为长得像扁扁的桃子😂)发炎所致。扁桃体是人体免疫系统的第一道防线,多个扁桃体环绕在咽部四周。感冒前的嗓子疼就是他们在消灭病毒和细菌的过程中引起的炎症反应。

经常运动的人为什么感觉免疫力并没有提高?

健身和运动对于免疫力的增强一定有帮助,但增加训练量可能在初期还会降低免疫力。这和肌肉的超量恢复相似,刚训练完肌肉纤维被部分破环,力量一定是下降的。长期规律的中小强度的运动,对人的免疫机能肯定是有积极作用,但首先还是要保护好自己,免疫系统再强也是可能感冒的。

感冒了应不应该吃抗生素?

抗生素只对细菌具有杀伤作用,对病毒是无效的。所以如果是病毒性感冒,抗生素是无效的。为什么很多人说能不用抗生素就尽量不用?因为细菌都是有抗药性的,总会有少部分细菌存活下来。抗生素相当于对细菌做了一次人为的自然选择,那些存活下来的细菌在下次你感冒的时候就不怕抗生素了,就只能用另外一种或者更高级的抗生素。如果吃了抗生素,就要一次吃完一个疗程,一般至少3天。

因此:

  1. 尽可能不使用抗生素,避免细菌产生抗药性。
  2. 尽可能不更换抗生素,避免细菌产生超级抗药性。
  3. 如果不得不用抗生素,宁可多吃,也决不能少吃。

Reference

健身和提高免疫力到底有怎样的关系?

怎么样能提高免疫力?

健身训练与增强体质和抵抗力相关性大吗?

为什么感冒前总是先嗓子疼,两三天后才会有感冒的症状?每次都这样?

The witness - 禅境解谜

Veröffentlicht am 2017-11-17

花了超过3天时间才终于把这部IGN评分10分满分的作品完全通关。已经很久没有这么奇妙的游戏体验了。游戏出了划线解密还在环境中充满各种脑洞大开的场景谜题,玩完真的是让人在有点走火入魔,到处寻找画点成线的可能。

整个游戏一共有3个结局。打通所有谜题后的正统结局是在一个笼子中飞越全岛,所有曾经的已经完成的谜题都回归原位,我们也最终返回初始的地方。我想是表达一种,“所有的成就都将随风而去,但生命又会从头开始”的意境。生命本就没有意义,60多亿年前地球形成,40多亿年前生命出现,一代又一代,生生不息,每一代的延续都是为了后代的延续。消失了的,又有多少能被记起。

第二个结局是在起始的花园中,开启一个以太阳为起点的环境谜题,进入一个时空混乱的空间。巨大的房间中散落着一些录音,记录了游戏制作人员的名单。在最后的时空走廊尽头,我们的视角回到了一个躺在沙发上的男人身上。他缓缓从沙发上起来,拔掉身上的管子,晃晃悠悠的站起来,已经不太会走路。开起来是在游戏世界中呆了太久。他走到哪都会指指画画,还没有从虚幻的世界中走出来哈哈。

最后一个结局和第二个结局相似,在完成所有的环境谜题,找到所有录音以后,再从那个时空隧道出来,就会从另外一个地点醒来。应该都是这个游戏的开发工作室。最后男主跌跌撞撞的摔下楼梯,尿罐里的尿撒了一脸。。

游戏的环境设计充满了各种色彩,花园也都设计的很美,让人感到一种宁静。

游戏开发者Jonathan Blow此前开发过著名的iPhone游戏Braid,当年在iPhone上玩也感觉甚是惊叹。期待他的下一部作品。

希望多一些这样的精品独立游戏,毕竟太多的3A大作空有壮观的大场面,缺少了一些引起玩家好奇的游戏性。游戏也不只是打打杀杀,而是真的可以成为第九艺术。

Reference

That ‘Eureka’ moment: what The Witness is really about

未来简史2

Veröffentlicht am 2017-11-17

The Anthropocene 人类世

按照地质年代划分,现在是人类的纪元。其他的大型动物总量正在减少,人类和家畜欣欣向荣。人类世在地球历史中的独特性。人类打破了生物之间的地域隔离。古人消灭大型动物,因为它们的繁殖速率太低。

The Serpent’s Children 蛇的孩子

原始采集社会中的人类可能是泛灵论者,认为人只不过是一种动物。《圣经》中动物和人的唯一一次交谈:蛇诱惑夏娃偷吃知善恶树的果实。夏娃可能是来自蛇的隐喻。

Ancestral Needs 祖先的需求

《圣经》中阐述的人类是特别的理论开始于农业革命。畜牧业对于动物带来的精神伤害,深层次的原因是环境的变化速度过快,进化还不能跟上。

【Python自动驾驶GTA5】1-获取图像

Veröffentlicht am 2017-11-17

前期准备

  1. 准备去steam购买并安装GTA V
  2. 安装anaconda,我安装的版本是 conda 4.3.30 (python 3.6.1)
  3. 安装openCV,conda install -c conda-forge opencv。这里除了openCV其他的组件anaconda有默认安装
  4. 打开GTA V设置窗口大小为800*600,放置在左上角

获取游戏画面 - part-1-Getting-Visuals.py

使用的组件简介:

  • PIL:图像库,ImageGrab工具用来抓取画面
  • cv2:大名鼎鼎的openCV,最知名的一个computer vision库
  • numpy:著名的科学计算库
  • time:python自带的时间工具
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import numpy as np
from PIL import ImageGrab
import cv2
import time

def screen_record():
last_time = time.time()
while(True):
# 800x600 windowed mode for GTA 5, at the top left position of your main screen.
# 40 px accounts for title bar.
printscreen = np.array(ImageGrab.grab(bbox=(0,40,800,640)))
print('loop took {} seconds'.format(time.time()-last_time))
last_time = time.time()
cv2.imshow('window',cv2.cvtColor(printscreen, cv2.COLOR_BGR2RGB))
if cv2.waitKey(25) & 0xFF == ord('q'):
cv2.destroyAllWindows()
break

screen_record()
  1. screen_record这个函数就是用来获取游戏实时画面。在while循环直到手动推出
  2. cv2.imshow会打开一个新的程序窗口来显示内容

按照sentdex这个程序的方法我发现画面只有大概12帧,大大低于我的预期。于是自己搜索了一番,找到了更好的库,mss。同样是结合OpenCV和Numpy,帧数现在可以提升到40帧以上。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import numpy as np
import cv2
import time
import mss

def screen_record():
with mss.mss() as sct:
# Part of the screen to capture
monitor = {'top': 40, 'left': 0, 'width': 800, 'height': 640}

while 'Screen capturing':
last_time = time.time()

# Get raw pixels from the screen, save it to a Numpy array
img = numpy.array(sct.grab(monitor))

# Display the picture
cv2.imshow('OpenCV/Numpy normal', img)

# Display the picture in grayscale
# cv2.imshow('OpenCV/Numpy grayscale',
# cv2.cvtColor(img, cv2.COLOR_BGRA2GRAY))

print('fps: {0}'.format(1 / (time.time()-last_time)))

# Press "q" to quit
if cv2.waitKey(25) & 0xFF == ord('q'):
cv2.destroyAllWindows()
break

screen_record()

这个库可以这么快的原因应该是用了ctypes。

Reference

教程的内容大部分来自sentdex的Python plays Grand Theft Auto V系列

聊聊Python ctypes 模块

泛灵论-人与动物的关系

Veröffentlicht am 2017-11-16

古代中国人与动物的关系

原始人类对于自然的态度

农耕文明对于自然的态度,夏娃与蛇

泛灵论

12

Yibai Li

my blog

12 Artikel
© 2017 Yibai Li
Erstellt mit Hexo
|
Theme — NexT.Muse v5.1.3