# 问题记录

记录在目前使用 JupyterLab 过程中的一些问题：

1. 安装了中文语言包后 启用页 （Launcher）不显示任何内容，包括`console`,`notebook`,`terminal` 这些选项都看不见了
2. 海峰部署的版本(http://34.81.136.50/) 这个版本的启动页确是 OK的，包括 `drawIO` 这种插件的都能够显示，但是海峰这个版本的无法安装中文语言包，不知道为啥
3. CODE CHINA 不支持 .ipynb 中二进制的图片内容显示，但在 GitHub / Gitlab 上是可以的

修改 Domain Host

# 一些有意思的功能

### 使用 terminal 进行 git 操作

当在本机使用了 JupyterLab 服务时，可以同时打开 `terminal`，然后在 terminal 中完成相关的 Git 操作，commit / push 等；

### 快捷键

- 像 复制、粘贴、剪切、撤销等常用操作， JupyterLab 使用时是没有 `ctrl/command` 键的；
- 像 关闭 某个标签页，为了避免和 浏览器的 `ctrl/command + w` 冲突，使用的是 `alt/option + w` 的方式

### 运行结果

.ipynb 的运行结果在点击运行之后，是会存储在 .ipynb 文件中的，并且这个文件可以被 `nbview` 查看。

### 插件支持

Jupyter 还支持插件的安装，进一步提升 Jupyter 的易用性。

### 右侧窗口的收起

单击（窗口已激活）/双击（窗口未激活）右侧菜单按钮 button ，就可以 toggle 窗口的显示/隐藏


### 论坛关于为什么没有开始使用 JuypterLab 的原因

参考链接 <https://discourse.jupyter.org/t/benefits-of-the-classic-ui-and-use-cases-for-classic-over-jupyterlab-was-why-is-tim-not-moving-to-lab/2419>

- 基于以上讨论形成的一个 wishlist <https://github.com/jupyterlab/jupyterlab/issues/7468>


### DrawIO 插件

在安装了 [DrawIO](https://github.com/QuantStack/jupyterlab-drawio) 插件后，JupyterLab 就是一个完全免费的 processon 工具，非常的牛批！


# 与 CODE CHINA 结合的点

一些可以通过 CODE CHINA 来结合的点可以有：

### 版本管理

这个是比较基础的，将一个 Notebook 存放在仓库中，并通过 Git 来进行版本管理，比如现在这个仓库就是这么用的。


### 协作

通过 Fork + MR 的方式对 .ipynb 进行协作，可以对用户的项目（前期以官方项目为主）进行 Fork，并通过 MR 提交自己的修改，项目的所有者可以对 MR 进行审查& 合并，同时，被接受 MR 的用户也会作为共享者出现在该项目/文件中。

### 讨论

讨论的方式可以有：

1. 参考课程的反馈，为每个 `.ipynb` 文件新建一个 issue 作为讨论用的 issue ，相关的讨论都在该 issue 中进行；
2. 提交了 MR 的用户可以与项目作者在 MR 中进行讨论；

### 展现形式

可以对特定的 项目 生成类似 pages 的页面，在对外宣传、推广的时候也是这种页面（比如 问答、博客中的链接），在这个页面上提供一些常用功能的入口，支持用户通过 CODE CHINA + Jupyter 的方式来使用这些内容：

- 练习（ Fork+ Jupyter）
- 查看源项目 （CODE CHINA）
- 修改 （Fork + Jupyter + MR）
- 运行 （Jupyter）
- 讨论
- 分享

### 流程图

允许用户非常方便的绘制（通过 DrawIO 插件）流程图，并且进行分享（分享的是源文件），官方有个 导出 的 [issue](https://github.com/QuantStack/jupyterlab-drawio/issues/93)，到时候可以参考一下

补充资料：


[用JupyterLab-drawio画模型图](https://zhuanlan.zhihu.com/p/70908238)

> 注：在知乎这篇文章中的导出界面与目前安装的版本导出界面不一样，没有那么多的导出选项，只能导出为 svg，且导出的 svg 还是 zero byte。

### JupyterLab 插件

除了通过 `binderhub` 的机制来与仓库 Repo 进行协同工作外，可否使用 `JupyterLab` 插件/扩展 的形式来与 CODE CHINA 进行协作？这个也可以尝试


### 更新 Repo

目前，已知的可以从 JupyterLab 更新 Repo 的方式就是通过 `terminal` 来运行 Git 命令，进行仓库的更新，这个能否做成类似 VScode 中的 Git 类的体验？

> Jupyter 提供了一个 [jupyterlab-git](https://github.com/jupyterlab/jupyterlab-git) 的插件，Git 的功能已经完备，不过该插件界面全部为英文，可以考虑进行汉化并接入
> 
> 翻译部分可参考 <https://codechina.csdn.net/mirrors/jupyterlab/jupyterlab-translate>
> 该插件在 Crowdin 的翻译工作已经完成，其开发者表示目前还没有发布相关的 release，不过打算近期发布（没有具体日期），更多信息可参考 <https://github.com/jupyterlab/jupyterlab-git/issues/987>


#### 关于 Jupyterlab-git

Jupyterlab-git 用的过程中有以下几个问题：

1. Git 菜单中的 `Open Git Repository in Terminal` 命令无法正确进入文件目录
2. Upstream 无法正常获取，需要重新设置，否则无法正常 push
3. Push 之后 History 里面显示  origin/master 还是落后本地 master 分支（存在5~6 分钟的延迟）
4. 包括 Changed 的内容进行 `add` 操作添加到 Staged 里面的时候，也存在明显的延迟

<!-- 这是一条通过 http://35.194.215.230/ 推送的 commit -->

### RISE 插件

[RISE](https://rise.readthedocs.io/en/stable/index.html) 是一个挺有意思的 Jupyter 插件，允许将一个 Notebook(`.ipynb`) 文件转成一个可以演示的 Demo，eg：

![RISE Demo](https://rise.readthedocs.io/en/stable/_images/basic_usage.gif)

> 这个插件仅支持 `Jupyter Notebook`，不支持 `Lab`
> 
> 虽然在 `Lab` 的右侧菜单栏中还能够看到可以对 cell 设置 幻灯片属性，但无法像在 `Notebook` 中一样通过 button（默认主题）/ `alt + r` 快捷键 进入 SlideShow 演示页面

### 用户数据

目前发现的是，每次 luanch Repo 之后，用户设置的部分都会丢失，用户设置这部分数据是否能够实现保留？期望保留的数据包括：

1. `Layout`，上一次打开这个项目的布局；
2. `extensions`，用户已经安装的插件（更进一步包括用户插件的设置）/ 或者是我们将一些我们认为有用的插件内置到 image 中（比如 语言包、Git、历史记录等插件）
3. `用户凭证`，用户的 SSH key 或者是 user/pwd 的凭证（用于 git）
4. `git config`，用户给 git 配置的 username & email 信息（用于 git）


### Binder & FilePath

`https://mybinder.org/v2/gh/xiongjiamu/juypter-101/master?filepath=008-%E5%A4%9A%E5%86%85%E6%A0%B8.ipynb`

binder 除了与仓库直接关联使用外，还可以直接打开仓库中的某个文件 或者 某个 Gist ，具体语法参考上方。