技术是第一生产力
现在是最好的时代,也是最坏的时代。
在技术宅的眼中,除了知识本身,其他的都应该免费,这将会是多么美好的时代。
很久以前,我们需要做数据分析,需要有自己的计算机资源,需要学习各种安装包准备环境,为了能随处展示还要做成各种格式的ppt。这些慢慢都可以成为历史了。
现在你只需要专心在技术本身,Python、Jupyter、Numpy、Pandas等等,对于不依赖大规模数据计算,对计算机依赖不高的部分工作。只要你有一根网线一个终端就可以在任何地方做数据分析,随时展示给目标人群。
解决方案 Github + JupyterNote + Binder
GitHub仓库
GitHub作为代码和资源池仓库,保存所有数据(连接)、源码、以及分析结果。
JupyterNote
数据分析,最方便的工具还是Jupyter NoteBook。实时交互,文档和代码统一,所见即所得。
选用JupyterNoteBook,对于在线的互动计算资源,可以选用官方的Binder
Binder
Binder 项目是官方提供的,为Github上托管的代码提供动态的计算资源的项目。
简单的说,只需要你在GitHub上托管JupyterNotebook项目库,你就能在Binder上动态创建一个Docker环境,环境中有包含运行代码所必须的软件及硬件资源。
Binder怎么能知道我们项目需要哪些软件环境了,其实就是在普通给的GitHub项目中添加了一个Configure文件。配置文件的格式及功能有很多,如果使用功能不复杂的话,简单了解一下## environment.yml
就好了,简单的说就是个Conda环境的配置文件,加载的时候自动在Conda里面安装配置的软件。
environment.yml
- Install a Python environmentrequirements.txt
- Install a Python environmentsetup.py
- Install Python packagesProject.toml
- Install a Julia environmentREQUIRE
- Install a Julia environment (legacy)install.R
- Install an R/RStudio environmentapt.txt
- Install packages with apt-getDESCRIPTION
- Install an R packagemanifest.xml
- Install StencilapostBuild
- Run code after installing the environmentstart
- Run code before the user sessions startsruntime.txt
- Specifying runtimesdefault.nix
- the nix package managerDockerfile
- Advanced environments
应用实例
创建GitHub项目
新建的GitHub项目必须是Public的,因为Binder目前不提供用户登录,只是单纯按照提供的连接动态部署计算环境。
- 新建工程BinderOne。
- 新建配置文件(在根目录上直接添加,或者放在新建的binder目录下)。
有了Binder的配置文件,Binder启东时就可以根据配置文件,自动下载所有需要的安装包,并同步仓库内的所有源代码文件。是不是有点太。。。方便了,飞机都备好了,下面就可以起飞了。- environment.yml
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
26name: yutianc-data-environment
channels:
- damianavila82
- conda-forge
dependencies:
# Jupyter
- jupyterlab
- nodejs
- notebook
- tornado
- nbconvert
- widgetsnbextension
- jupyter_contrib_nbextensions
#Python
- python=3.7
- ipywidgets
- numpy
- scipy
- matplotlib
- pandas
- bokeh
- plotly
- rise
- appmode
- jieba
- wordcloud
- environment.yml
启动Binder计算环境
- 将新建的GitHub仓库连接,复制到Binder中,点Lunch就能发射了。
- 项目启动之后,可以看见JupyterNoteBook环境已经启动正常启动,仓库中项目的文件都可以通过notebook正常访问。
如果需要切换到JupyterLab
,可以在不重新编译的情况下,直接将URL的tree改成lab即可。JupyterLab支持客户端,可以测试一下pip安装以及其他和Linux相关的操作。- GitHub仓库在加载成功之后,如果仓库没有修改,用上图中同样的URLhttps://gke.mybinder.org/v2/gh/leichong2019/BinderOne/master可以重复访问,此时因为不需要重新下载安装依赖包,加载的速度会快很多。
- 如果GitHub仓库在上次加载之后,有commit修改过,也可以直接用上图同样的URL访问啊,Binder会自动重建计算环境。。。对啊,就是那么智能。Binder会重下依赖包,准备依赖环境,重新同步仓库代码。简直就是梦寐以求的大管家啊。 现在唯一的问题就是速度了,期待以后Binder推出付费版的快速通道。有钱的金主们走fast pass,支持Private仓库,一键走起部署,算力无上限。
运用实例
想想对于做数据分析项目的童鞋,处理好所有问题提交仓库,剩下的就是在任何能上网的环境修改展示。结合JupyterNoteBook的slider插件,互动的ppt都是及时可得,随时修改随时出实时结果。