​​


​​​​

1.前言

在数据分析工作中,使用最多的无疑就是各种函数、图表、代码和说明文档,这些复杂的内容不仅让使用的人头晕脑胀,也让普通的聊天工具一脸蒙圈。沟通工具不给力,就没法协同办公,可数据分析又离不开多人配合,所以Jupyter Notebook就成为大部分数据工作人员的必备工具。正如之前所说,Jupyter Notebook很适应复杂内容的沟通,因此现在也在机器学习、深度学习和教育工作中获得广泛应用。

但Jupyter Notebook也有缺陷,就是被局限在局域网范围。那有什么工具能让Jupyter Notebook在公共互联网下使用吗,答案自然是肯定的。现在我们就来看看,如何[cpolar](cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站)与Jupyter Notebook配合,实现在公共互联网使用数据分析工作的无缝配合。

2.Jupyter Notebook的安装

由于jupyter notebook来源于IPython,所以想要安装使用jupyter notebook,就要先安装Python环境。好在Python安装并不复杂,直接到Python官网下载合适版本安装即可。

20230310100101

20230310100102

在安装Python时需要注意的是,要记得在安装界面下方勾选Add python.exe to PATH选项,即将python加入环境变量中。

20230310100103

Python安装完成后,就可以进行jupyter notebook的安装。

2.1 Jupyter Notebook下载安装

要安装jupyter notebook,我们需要打开windows的命令行界面,在命令行界面输入命令

pip install jupyter

系统会自动进行安装程序

20230310100104

安装完成后,再输入命令

jupyter Notebook

就能启动jupyter notebook程序

20230310100105

程序启动后,会在最下方显示jupyter notebook的地址,只要在浏览器中贴入这个地址(或者直接输入端口地址)就能打开jupyter notebook。

20230310100106

2.2 Jupyter Notebook的配置

由于我们的jupyter notebook需要连入公共互联网使用,因此有必要加入一道密码防护,并允许互联网连接。

先关闭之前的命令行窗口,再新开一个命令行窗口,输入命令

jupyter notebook --generate-config

新建一个配置文件,此时程序会反馈这个配置文件的所在位置,需要记住这个位置方便之后的操作。

20230310100107

接着输入创建访问密码的命令

jupyter notebook password

系统会要求输入两次密码(确认密码)。输入新密码后,就会反馈密码已经加入配置文件中。

20230310100108

最后,依照之前显示的config文件存放位置,打开jupyter_notebook_config.json文件,将其中那一长串密文复制下来。

20230310100109

再打开jupyter_notebook_congfig.py配置文件,添加下面的参数并保存保存

c.NotebookApp.ip='*' #允许访问的IP地址,设置为*代表允许任何客户端访问
c.NotebookApp.password = u'argon2:$argon2id$v=19$m=10240,t=10,p=8$QcZlyMBu9icwhDDiUl+lZw$y4EP3WI4gZjc'#刚才生成密码时上面复制的密文
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888 #可自行指定一个端口, 访问时使用该端口
c.NotebookApp.allow_remote_access = True

20230310100110

保存所做的修改,退出修改界面,再回到命令行界面,启动jupyter notebook,就会发现在启动时出现了防火墙警报,点击允许访问即可。

20230310100111

同样的,jupyter notebook会出现一个带端口号的地址。

20230310100112

将这个地址粘贴到浏览器中,就会出现要求输入密码才能访问jupyter notebook的页面,就说明我们所做的配置已经生效。

20230310100113

完成了jupyter notebook的配置,我们就可以进行另一项必要工作,即安装cpolar,并使用cpolar为jupyter notebook生成一条专属的内网穿透数据隧道。

2.3 Cpolar下载安装

相较于jupyter notebook,cpolar的安装就无脑多了,只要在cpolar官网下载对应版本的cpolar安装程序即可。

20230310100114

笔者的操作系统为windows,因此选择windows的安装程序,双击.msi程序一路下一步即可。

20230310100115

20230310100116

需要注意的是,cpolar会为每个用户生成专属的数据隧道,并辅以复杂的token口令保证数据传输的安全,因此使用cpolar需要注册个人专属的账号,具体过程就不在此详述。

3.Cpolar端口设置

Cpolar在本地设备上安装完成后,就可以在客户端建立免费的数据隧道,连接jupyter notebook端口(具体过程参见3.2 cpolar本地设置)。不过免费的数据隧道每个24小时就会更新一次公共互联网地址,并不符合笔者的使用场景。因此笔者升级了cpolar的vip套餐,以便获得能长期稳定存在的内网穿透数据隧道。

3.1 Cpolar云端设置

要使用cpolar设立长期稳定数据隧道,需要先登录cpolar的官网,在cpolar主页面左侧找到预留按钮,进入预留数据隧道页面。在这个页面中,找到保留的二级子域名栏位。

20230310100117

保留二级子域名栏位中,我们需要对几个信息进行设置,以便cpolar生成一条我们定义的空白数据隧道,这条数据隧道最终会与jupyter notebook的端口连接起来。需要设置的信息为以下3项:

  • 地区:即服务器地址,就近选择就好;
  • 二级域名:即打算生成什么样的域名,这个二级域名会显示在最终域名中,因此需要注意输入的内容;
  • 描述:即这条数据隧道的说明,只要自己可以分辨即可。

20230310100118

完成设置后,就可以点击右侧的保留按钮,生成一条空白数据隧道。如果不打算再使用这条数据隧道,就可以点击右侧的小X,将这条数据隧道轻易删除。

20230310100119

3.2.Cpolar本地设置

在完成cpolar云端的空白数据隧道设置后,就可以回到本机的cpolar客户端,将空白数据隧道与本地jupyter notebook端口连接起来(如果没有cpolar的vip,可以直接在客户端设置临时隧道,而设置步骤都是一样的)。我们可以在开始菜单中找到cpolar的快捷方式,也可以在浏览器中输入localhost:9200,打开cpolar的Web-UI界面。

在cpolar客户端的主界面,点击左侧“隧道管理”项下的“创建隧道”按钮,进入本地隧道创建页面。与cpolar的云端设置一样,在cpolar客户端也需要进行几项设置。这些设置包括

  • 隧道名称:可以看做cpolar本地的隧道信息注释,只要方便分辨即可;
  • 协议:即以何种方式连接本地端口,这里我们选择http协议;
  • 本地地址:本地地址即为本地网站的输出端口号,在这里输入888;
  • 域名类型:由于我们已经在cpolar云端预留了二级子域名的固定隧道,因此勾选“二级子域名”(如果有自定义域名,则勾选自定义域名),并在下一行“Sub Domain”栏中填入预留的二级子域名,该例子中为“jupyterwork”。如果打算设置临时内网穿透数据隧道,这里则勾选“随机域名”;
  • 地区:与cpolar云端预留的信息一样,我们依照实际使用地填写即可;

完成这些设置后,就可以点击页面下方的“创建”按钮,生成能够穿透本地局域网的数据隧道。

20230310100120

本地隧道生成后,可以在隧道管理项下的隧道列表中看到,并且还可以在这里对这条隧道的开启、关闭、删除进行操作,当然,也能在编辑中对这条隧道的信息进行变更。

20230310100121

而这条隧道的公共互联网地址,则可以在状态项下的在线隧道列表中找到

20230310100122

4.公网访问测试

最后,我们将cpolar客户端显示的地址粘贴到位于本地局域网以外设备的浏览器中,就能打开本地的jupyter notebook。

20230310100123

5.结语

至此,我们就完成了使用cpolar生成的数据隧道,将内网的jupyter notebook发布到公共互联网的操作。虽然步骤看着很多,但实际操作起来非常快。只要注意对jupyter notebook配置时不要输入错误指令,应该能很轻松的完成。

相关文章

ubuntu20.04安装实时内核补丁PREEMPT_RT

下载实时内核补丁,我下载patch-5.15.148-rt74.patch.sign和patch-5.15.148-rt74.patch.xz。通过以下指令看具体报错并输出日志到make.log:make -j1 deb-pkg 2>&1 | tee ~/make.log。比较幸运没遇到问题,重启进入后,启动页面没有变化,还是进入ubuntu,但是查看内核版本已经自动变到5.15.148。我下载linux-5.15.148.tar.xz和linux-5.15.148.tar.sign。

C语言中关于#include的一些小知识

如果是你自己编写的头文件,那么如果没加唯一包含标识的话,那么编译器会编译报错的。如果是系统自带的头文件,由于其每个头文件都加了特殊标识,所以即使你包含两遍,也不会有问题。上面的代码片段会首先判断HEADER_FILE_NAME_H是否被定义,若未定义则进行后续操作;#ifndef HEADER_FILE_NAME_H // 定义了一个名为HEADER_FILE_NAME_H的标记符号。#define HEADER_FILE_NAME_H // 当第一次包含该头文件时,将此标记设置为已定义状态。

Go 是否有三元运算符?Rust 和 Python 是怎么做的?

本文主要就 Go 中三元运算符展开讨论,从简单if-else语句、到基于匿名函数的单行表达式、及泛型抽象 If 函数等方式来实现类似的功能。当然,我没有建议使用这些方式,在没有内置支持的情况下,if-else的写法就挺好的。Go 中如何实现三元运算符?Rust 和 Python 是怎么做的?

Linux 目录磁盘满了,怎么查找大文件

如果你不确定某个文件或目录的用途,最好先进行调查或咨询专业人士,而不是直接删除它们。,这是一个基于文本的磁盘使用分析器,非常适合于查找大文件。如果它没有预装,你可以通过你的包管理器安装它(例如,在Ubuntu上使用。会分析根目录的磁盘使用情况,并提供一个交互式界面来浏览最大的文件和目录。请注意,运行这些命令可能需要一些时间,因为它们会检查许多文件。)磁盘满了,你可以使用以下方法来查找占用空间最大的文件和目录。这个命令会搜索根目录下所有的文件,并显示它们的大小。为了找到最大的文件,你可以使用。

如何在 Debian 12 上安装 Microsoft SQL Server?

在安装 Microsoft SQL Server 之前,我们需要确保系统是最新的,并安装一些必要的软件和依赖项。以下是详细的步骤:这将更新软件包列表并升级已安装的软件包。这将安装 curl 用于下载文件,gnupg 用于导入 GPG 密钥,以及 apt-transport-https 用于通过 HTTPS 访问软件包。

Python和Java的区别(不断更新)

运行效率:一般来说,Java的运行效率要高于Python,这主要是因为Java是编译型语言,其代码在执行前会进行预编译,而Python是解释型语言,边解释边执行。而Python没有类似的强大虚拟机,但它的核心是可以很方便地使用C语言函数或C++库,这使得Python可以轻松地与底层硬件进行交互。**类型系统:**Java是一种静态类型语言,所有变量需要先声明(类型)才能使用,且类型在编译时就已经确定。总的来说,Python和Java各有其优势和特点,选择哪种语言取决于具体的项目需求、开发环境以及个人偏好。

linux docker 部署mysql8以上版本时弹出Access denied for user root @ localhost (using password: YES)的解决方案

mysql8登录第一次遇到MYSQL_ROOT_PASSWORD时会自动把该密码尽兴登录,生成一个秘钥放在mysql的数据文件里面,命令里带的MYSQL_ROOT_PASSWORD密码是个参数,除了第一次运行mysql带上会设置密码生成秘钥,其他次启动而不是设置mysql的密码,而是作为参数去验证这个最初的秘钥是否核对正确,于是我进入挂载的data目录,发现我的猜想是对的。通过docker将服务部署完后,navicat连接报错,密码错误,于是我尝试进入mysql容器登录 发现也报错。

Linux 磁盘空间占用率100%的排查

max-size 最大数值 , max-file 最大日志数,但一两个容器还好,但是如果有很多容器需要管理,这样就很不方便了,最好还是可以统一管理(全局修改)结果显示多条如下数据,这里最关键的指标就是使用百分比,这个值较高一般需要处理,或者明确知道自己项目或工作目录是哪个,就只要找对应的位置去处理即可。/var/lib/docker/overlay2 【文件系统】基于容器文件系统保存的数据会写到本机的此目录下,进行限制,以减少日志文件对存储空间的占用,以下配置分别为日志文件最大容量、最大日志文件数。

chatchat部署在ubuntu上的坑

2. 安装后把代理关闭,全局的代理改为手动,重新打开一个新的控制台。1. 安装前要开代理,注意要下载很多东西,流量大。

C语言中的数组操作技巧:提升程序的效率和可读性

数组操作是C语言编程中常见的任务,有效地处理数组操作可以提高程序的效率和可读性。通过合理使用数组初始化、数组遍历和多维数组操作等方法,可以提升数组操作的效果。在进行数组操作时,需要注意数组长度计算、数组越界检查和数组作为函数参数等技巧。通过不断的实践和研究,可以提高对数组操作的理解和应用能力,编写更高效和可靠的程序。

解决Linux环境下gdal报错:ERROR 4: `/xxx.hdf‘ not recognized as a supported file format.

题外话:我发现linux系统和Windows系统下面,库的版本是有差异的。比如我的本机Windows上装的是gdal3.2.3和numpy1.19.1,linux服务器上装的却是gdal3.0.2和numpy1.21.5。这个是很常见的回复,网上许多回答都说低版本的 gdal 不支持 hdf5,让你重装高版本的gdal。我之前用pip安装了whl,暴力装上了,但用的时候就会有问题。安装了不冲突的gdal之后,就成功打开文件啦~一开始我是抱着试试的心态,用conda,不用pip,重新安装了一下我的gdal。

C语言常见面试题:什么是枚举,枚举的作用是什么?

首先,枚举是一种特殊的类,它的主要作用是封装一组常量,例如,一周的七天、月份、季节等。枚举在JDK1.5后被引入,相较于之前的常量定义方式,枚举具有更好的安全性和更好的性能。每个枚举常量都是该枚举类的一个实例,因此可以使用构造函数来初始化每个枚举常量的值。综上所述,枚举的常用用法包括常量定义、switch语句、添加新方法、覆盖枚举的方法、实现接口以及使用接口组织枚举等。枚举是一种特殊的数据类型,它是一组具命名的整型常量的集合。枚举是一种特殊的数据类型,它是一组具命名的整型常量的集合。

Linux 服务器 CPU 详细信息查看、物理 CPU 以及逻辑 CPU

当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续,因此超线程的性能并不等于两颗CPU的性能。超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,查看CPU详细得知,服务器共有16个核心,物理CPU个数为 4,证明单个物理CPU上集成了4个核心处理器。日常我们所说的CPU核数指的是物理CPU上存在几个核心处理器或者核心处理单元总和(排除超线程技术)Linux内核支持关闭超线程技术。
返回
顶部