摘要: 最初看到这个问题是初中的时候买了一本有关数学谜题的书里面概率论的一张的课后拓展就是说到三门问题,当时作为一个扩展阅读看了一下,里面说到了一个世界智商最高的女人秒杀了美国一大群的数学高材生的精彩故事(比较夸张),当时对这个问题也是似懂非懂。 阅读全文
posted @ 2015-05-18 12:10 若晨辰 阅读(2379) 评论(6) 推荐(10) 编辑

摘要: 阅读全文
posted @ 2013-05-18 18:20 若晨辰 阅读(12975) 评论(1) 推荐(2) 编辑

摘要: 阅读全文
posted @ 2013-01-03 20:02 若晨辰 阅读(11578) 评论(15) 推荐(9) 编辑

2015年6月8日

docker

本文的部署环境是Ubuntu 14.04

  • Docker

Docker 详细概念可以去search,简单来说就是把应用打包到一个容器里的轻量级系统虚拟化服务

  • IPython Notebook

IPython Notebook 既是一个交互计算平台,又是一个记录计算过程的「笔记本」。它由服务端和客户端两部分组成,其中服务端负责代码的解释与计算,而客户端负责与用户进行交互。 服务端可以运行在本机也可以运行在远程服务器,包含负责运算的 IPython kernel (与 QT Console 的 kernel 相同) 以及一个 HTTP/S 服务器 (Tornado)。 而客户端则是一个指向服务端地址的浏览器页面,负责接受用户的输入并负责渲染输出。

本文主要记录使用Docker 在服务器部署IPython Note 应用的过程。比传统的部署方案果然简单轻松不少。

知识点

  1. Docker 的基本概念
  2. 部署IPython 容器
  3. 使用Nginx 容器反向代理IPython

Docker 的基本概念

下文的操作主要涉及Docker的一下几个知识点:

  • Docker 的镜像(image)、容器(container)、仓库(registerie)
  • Docker 的安装
  • Docker 的基础用法
  • Docker的端口映射
  • Docker 数据卷
  • 链接容器

详细的信息可以自行搜索

部署IPython

下载IPython 的镜像

官方Docker镜像地址,里面包含5个镜像:

  • notebook
  • ipython
  • scipyserver
  • scipystack
  • nbvierer

简单说一下这几个镜像的区别 ipython 是以上几个镜像的共同的根镜像。notebook 提供了一个web的前端。scipystackipython的基础上安装了许多科学计算的包(cython,h5py,matplotlib,numpy,pandas,patsy,scikit-learn,scipy,seaborn,sympy,yt),而scipyserver则在scipystack的基础上提供了web的前端。nbviewer则是nbviewer.ipython.org的实现
更多详细信息请到GitHub上的docker-notebook 查看
选择scipystack镜像最省事,但是需要下载的东西也越多。下文选择的也是scipystack

$ sudo docker pull ipython/scipyserver

运行IPython 容器

sudo docker run -d --name IPythonApp -p 8888:8888 -e "PASSWORD=your password" -e "USE_HTTP=1" -v /home/zhiyue/repos/ipython-notebook:/notebooks ipython/scipyserver

解析一下参数-d 是以后台的方式运行,--name 是容器的别名,-p 是端口映射,-e 是设置环境变量,这里的环境变量PASSWORD设置成你自己的密码就可以了,USE_HTTP=1 意思是使用http,-v 是设置数据卷,把宿主机的目录挂载到容器里,即使容器被删除,数据也可以保留下来

Nginx 反向代理 IPython

有两种方式,一种是使用官方的Nginx,另一种是使用jwilder / nginx-proxy,后一种方法更加简单和方便

方式1:nginx

  • 使用Nginx的官方镜像nginx

  • Nginx 配置文件
    ipython-server.conf


 map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
 }

server{
        listen 80;
        server_name note.everforget.com;
        location / {
                proxy_pass http://ipython:8888;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
	            proxy_set_header X-Real-IP $remote_addr;
	            proxy_set_header Host $host;
	            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

这里面要注意一点是,ipython要使用websock因此要配置websocket,之前在这个问题查了好久。
proxy_pass http://ipython:8888; ipython和后面容器连接时的别名有关。

  • 运行Nginx容器
$ sudo docker run -d -p 80:80 --name nginx --link IPythonApp:ipython  -v `pwd`/config:/etc/nginx/conf.d  -v `pwd`/logs:/var/log/nginx nginx

方式2:nginx-proxy

docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy
  • 运行ipython 容器
sudo docker run -d -e "VIRTUAL_HOST=ipython.everforget.com" --name IPython -p 8888:8888 -e "PASSWORD=xxxxxx" -e "USE_HTTP=1" -v /home/zhiyue/repos/ipython-notebook:/notebooks ipython/scipyserver

最后放一张图:

这样就可以随时通过web来使用python了。

参考


更新日志:

  • 2015-6-8 添加配图
  • 2015-6-6 第一次撰写
posted @ 2015-06-08 16:17 若晨辰 阅读(1597) 评论(0) 推荐(1) 编辑

2013年8月15日

摘要: 1.查看Git日志:命令:git log 默认不加参数,git日志会按照最新的日期从上往下显示 参数:-p 显示版本间的代码差异-数字 显示部分的提交-哈希值 显示指定的版本2.指定查找范围:--since="5 hours" 显示最近5小时内的提交 --since="5 hours" -1 显示5小时内的最后一个提交 --before 用法和--since的用法差不多,显示的是在某个时间点之前的提交 版本1..版本2 说明:版本1之后到版本2的所有提交,版本2可以用HEAD(要注意大写)表示当前的最新版本 版本^ 回溯一个版本 注意:在windows下 阅读全文
posted @ 2013-08-15 20:11 若晨辰 阅读(593) 评论(0) 推荐(0) 编辑

2012年11月15日

摘要: floyd 也就是弗洛伊德算法,是图论中用来计算任意两点间最短路径的算法。算法的过程是:1.把图转换成一个带权重的n阶邻接矩阵。2.依次把1-n的节点当作桥梁,也就是中间点,例如结点u,v和中间结点k,u和v在不经过k结点的时候存在最短路径x,u经过k结点到达v的时候最短路径为y那么min{x,y}就是在增加k桥梁的时候u和v的最短路径。代码实现:void floyd(){ for(k=0;k<n;k++) for(i=0;i<n;i++) for(j=0;j<n;j++) A[i][j]=min(A[i][j],A[i]... 阅读全文
posted @ 2012-11-15 00:37 若晨辰 阅读(2389) 评论(0) 推荐(1) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5
点击右上角即可分享
微信分享提示