我的項目開發系統

本期介紹我的項目開發系統的建立,見下。

我的項目開發系統建立的原則:All in One2/3 Backups

本期主推:JupyterLab——一個好用到爆炸的可視化交互開發神器

本期涉及的主要軟體/工具:JupyterLab | GitHub | GitHub Desktop | Git | iTerm2 | MobaXterm | Terminal | Git Bash | CMD | Typora | uPic | PicGo | TinyPNG4Mac | 移動硬碟 | U盤 | Notion | 印象筆記 | iCloud | Google Drive | 百度網盤 | EndNote 20 | MarginNote 3 | Books | Notes | GoodNotes | Notability | Prodrafts | Google Chrome | Safari | Microsoft Edge | XMind

以下是一個以問題/需求為導向,以系統性為原則的工具分享。如果你也感興趣這些軟體/工具是怎麼應用到我的項目開發系統的,那就請繼續往下看吧!

項目開發環境

  • Windows 系統
  • MacOS 系統
  • Linux CentOS 系統

下面來說說我為什麼要同時使用這3個作業系統呢?那可不就是因為我富有么哈哈哈!開個玩笑啦haa。同時使用這3個系統,是因為我自己的電腦是MacBook Pro,課題組給配的電腦是戴爾台式機,還有我們做數據分析必備的——實驗室的Linux伺服器。

不用說,Linux伺服器肯定是用得最多的,畢竟一周7天都在搞科研嘛~~其次就是我的小蘋果,辦公、碼字、敲程式碼、跑程式都不在話下,但它有一個「小小的「缺點,就是不能同時開很多個軟體,我也是恨鐵不成鋼啊。。所以我在同時做多個任務時,就需要同時用到實驗室的電腦。

但,這就有一個問題了,我想把幾個設備就當一個設備來用。換句話說,就是讓這三個設備協同工作,彼時的我,就像在一台電腦上工作。

那怎麼讓這三個設備協同工作呢?你想知道嗎?那就跟著小編繼續往下看吧~

JupyterLab

首先從JupyterLab說起。我為什麼選擇JupyterLab作為我的項目開發系統的核心軟體呢?其實我之前基本不知道Jupyter,是前段時間外導在面試我的時候,給我推薦的這個軟體,我當時還執著地認為VSCode大法無敵。事實上,我在很長一段時間都是把VSCode、GitHub、GitHub Desktop作為我的項目開發系統的核心工具的,可是自從嘗試了JupyterLab,我便再也不想打開VSCode了。只想說,Jupyter真香!

為什麼放棄了VSCode,轉向JupyterLab呢?
首先,VSCode確實有很多吸引我的點:
  1. 高大上、顏值派。暗黑色的背景,布滿五顏六色的程式碼,一眼看上去就逼格滿滿;並且有不同的程式碼主題可選,可以按照自己的審美DIY出一幅「大作」哈哈。
  2. 優秀的寫作工具。在安裝markdown相關插件後,你可以使用markdown語句寫稿子,並且實時預覽markdown文件。這不稀奇,稀奇的是它可以內裝PicGo插件,你只需用快捷鍵粘貼一下你的圖片,它就可以直接被上傳到你的圖床比如GitHub,並即時生成圖片鏈接,你說神不神奇~
  3. 強大的插件系統。基本上是要啥有啥,我用的最多的是自動補全和程式碼高亮的插件。

但是,為什麼顏狗的我,放棄了它呢?那還不是因為我變了(不是

在我這麼久的親身踐行下,我很遺憾地,把VSCode這麼強大的一個開發工具,用成了一個平平無奇的程式碼編輯器。。我對不起它🤦‍♀️

為什麼我放棄了VSCode?
  1. 遠程Linux伺服器不穩定。VSCode是有本地終端和遠程Linux伺服器功能的,我最初的時候也用過幾次,但遺憾的是,在遠程Linux伺服器的時候,經常連不上或者斷掉,反覆幾次之後,我也就不勉強它了。
  2. Git平時用得不多。雖然它有Git功能,我也配置好了,但這個功能,我自始至終也就只用了一次。。
  3. 它的Markdown比不上Typora。每當我打開一個markdown文件時,它總會自動彈出預覽窗口,瞬間佔據我一半螢幕,每次都給我氣個半死。。我其實想跟它說,我讓你出現的時候你再出現OK?另外,它並不能實現Typora的「所見即所得」的「即時渲染」效果。事實上,我更想兩步並作一步(帶格式書寫和格式轉換變作一步)地使用markdown,就像直接在白紙上寫字一樣。
  4. 體系過於龐大,啟動較慢,佔用記憶體較大。插件系統強大,這是VSCode的優勢,但也是它的劣勢。龐大的插件系統,讓它只在VSCode就能實現各種各樣的功能,但在實現各種各樣功能的同時,也讓VSCode這個體系變得愈發龐大,拖慢了它的速度,也佔用了更大的記憶體。
  5. 最後,我很遺憾地,把VSCode用成了一個平平無奇的程式碼編輯器,因此它不能幫我遠程管理Linux伺服器上的數據和文件。當我想要預覽、查看或編輯Linux伺服器上的PDF、CSV、JPG等文件時,我只能先從Linux伺服器把文件下載到本地,再用本地對應的軟體打開相應的文件,而我想要的是一個不用下載文件,可以直接在Linux伺服器上預覽和查看的可視化交互工具。

所以整體說來,VSCode對我來說,功能過剩,體系過於龐大,且不能真正實現「All in One」的功能。我需要的,是一個儘可能簡潔、輕便、「All in One」可視化交互工具,而這,就是我選擇JupyterLab的原因。

JupyterLab——一個好用到爆炸的可視化交互開發神器
安裝
########## Linux伺服器上安裝JupyterLab
####### 方法一
##### 01 安裝 Miniconda(此處省略詳細步驟)
##### 02 安裝 Python 3
### 安裝 openssl
cd ./Softwares 
tar xzvf openssl-3.0.0-alpha17.tar.gz
cd openssl-3.0.0-alpha17
./config --prefix=/zs32/home/chxia/local/openssl shared
make
make install
# 查看是否安裝成功
openssl version
### 安裝 libressl
cd ./Softwares
tar xzvf libressl-3.3.3.tar.gz
cd libressl-3.3.3
./config
make
make install
### 安裝 Python3
# 關於ssl出錯解決辦法的重要參考:
# //blog.csdn.net/jeryjeryjery/article/details/77880227
# //zhang-jc.github.io/2018/11/27/CentOS-6-8-%E5%AE%89%E8%A3%85-Python3-Could-not-build-the-ssl-module/
# //blog.csdn.net/Aidam_Bo/article/details/112919330
# 下載及解壓
wget //www.python.org/ftp/python/3.9.5/Python-3.9.5
cd ./Softwares
tar -xzf Python-3.9.5.tgz
cd /zs32/home/chxia/Softwares/Python-3.9.5
# 編譯及安裝
./configure --prefix='/zs32/home/chxia/Softwares/Python-3.9.5' --with-ssl
make
make install
# 配置環境
vim ~/.bashrc
# 使用vim打開.bashrc文件,並添加python的環境
export PATH=/zs32/home/chxia/Softwares/Python-3.9.5:$PATH
export PATH=/zs32/home/chxia/Softwares/Python-3.9.5/bin:$PATH
# 使生效
source ~/.bashrc
# 查看python版本
python
##### 03 安裝JupyterLab
# Installation with conda
conda install -c conda-forge jupyterlab
# Run JupyterLab
jupyter-lab

####### 方法二
##### 01 安裝 Anaconda
# 如果安裝 Anaconda,就已經安裝了jupyter,可以直接使用。只是版本可能會舊些,需要升級。
# 下載:從官網 //www.anaconda.com/products/individual 下載 Anaconda3-2021.05-Linux-x86_64.sh
# 安裝
cd ./Softwares
bash Anaconda3-2021.05-Linux-x86_64.sh
# 然後一路確認,等待安裝完成即可
##### 02 升級 JupyterLab 到最新版本
jupyter lab --version
pip3 install --upgrade pip  # 先升級 pip
pip install -U jupyterlab

####### 配置 jupyter lab
##### 01 生成jupyter密碼密文
### 進入 python,輸入
from notebook.auth import passwd
passwd()
### 會提示輸入密碼,此時即設置密碼
### 生成密碼密文,將其記錄保存備用
##### 02 生成配置文件
jupyter notebook --generate-config
##### 03 修改配置文件
vi ~/.jupyter/jupyter_notebook_config.py
### 在配置文件中添加下述內容:
c.LabApp.open_browser = False #  禁止打開瀏覽器
c.ServerApp.allow_remote_access = True
c.ServerApp.ip = '*' # 表示所有ip皆可訪問
c.ServerApp.open_browser = False
c.ServerApp.password = 'sha1:XXX' # 前面生成的密碼哈希值
c.ServerApp.port = 8889 # 瀏覽器連接jupyter需要的埠號,可隨便指定一個埠,默認為8888
### 退出保存即可


########## Mac上安裝JupyterLab
### 方法1: 使用 Anaconda 安裝 JupyterLab
# 01 官網(//www.anaconda.com/products/individual)下載並本地安裝 Anaconda
# 02 直接運行JupyterLab(Anaconda會自帶jupyter notebook和jupyter lab): 打開終端,輸入 jupyter lab,就會自動打開網頁 //localhost:8888/lab 
# 03 然後就可以開始玩了~
### 方法2: 使用 Miniconda 安裝 JupyterLab
# 01 官網(//docs.conda.io/en/latest/miniconda.html)下載並本地安裝 Miniconda
# 02 使用 conda 安裝 jupyter lab: 打開終端,輸入: 
conda install -c conda-forge jupyterlab
# 02 使用 pip 安裝 jupyter lab: 打開終端,輸入: 
pip3 install --upgrade pip  # 先升級 pip
pip3 install jupyter jupyterlab
# 03 運行JupyterLab: 在終端輸入 jupyter lab,就會自動打開網頁 //localhost:8888/lab 
# 04 然後就可以開始遨遊太空了~


########## Windows上安裝JupyterLab(使用 Anaconda 安裝 JupyterLab)
# 01 官網(//www.anaconda.com/products/individual)下載並本地安裝 Anaconda
# 02 設定 jupyter lab 啟動目錄
# 打開 Anaconda Powershell Prompt 終端,輸入 jupyter notebook --generate-config,生成 C:\Users\Dell18\.jupyter\jupyter_notebook_config.py 文件
# 打開上述文件,添加 c.NotebookApp.notebook_dir = 'D:\GitHubDesktop'
# 保存退出即可
# 03 運行JupyterLab(Anaconda會自帶jupyter notebook和jupyter lab): 打開 Anaconda Powershell Prompt 終端,輸入 jupyter lab,就會自動打開網頁 //localhost:8888/lab 
# 04 然後就可以開心地玩耍啦!


########## Windows、Mac、Linux 後台運行 JupyterLab
# 每次打開網頁版 jupyter lab 時都要打開相應的終端,並在相應的終端輸入 jupyter lab 來重啟,很不方便,所以我直接設置後台運行,這樣也不用時刻開著終端窗口。
# 01 在 Windows Git Bash 本地終端 或 Mac iTerm2/Terminal 本地或遠程終端 或 Windows MobaXterm 遠程終端輸入:
nohup jupyter lab > jupyterlab.log 2>&1 &
# & 讓命令後台運行,並把標準輸出寫入jupyterlab.log中;nohup 表示no hang up ,就是不掛起,這個命令執行後即使終端退出,jupyter 也不會停止運行。
# 02 從本地瀏覽器打開網址 localhost:8888 即可後台運行 本地 jupyter lab
# Mac和Windows本地的 jupyter lab 在後台運行,只要上面一句命令即可。
# 03 但遠程Linux伺服器在本地瀏覽器後台運行,還需要一個步驟,即在本地終端(Mac iTerm2/Terminal 終端; Windows Win+R 輸入 cmd,在 CMD 終端)輸入:
ssh -N -f -L localhost:8891:localhost:8889 -p Linux伺服器外網埠 用戶名@Linux伺服器外網IP地址
# 04 方便起見,將 ssh -N -f -L localhost:8891:localhost:8889 -p Linux伺服器外網埠 用戶名@Linux伺服器外網IP地址 寫入根目錄下文件 j.sh
# Mac的根目錄在 /Users/xia/j.sh
# Window的根目錄在:
# 001 先找到 Git Bash 的根目錄:
Win + R 輸入 cmd 打開命令窗口,然後在命令行輸入 where git ,就會顯示 Git 的安裝路徑在 C:\Program Files\Git\cmd\git.exe
# 002 將文件 j.sh 拷貝並放在 Git Bash 的安裝路徑下(訪問 Git 根目錄需要使用管理員許可權,所以需要手動操作)
# 05 以後只需在本地終端(Mac Terminal/iTerm2;Windows Git Bash)輸入:
bash j.sh 
# 運行完 bash j.sh 命令即可關閉終端,不影響後續 jupyter lab 的運行
# 06 從本地瀏覽器打開網址 localhost:8891 即可後台運行 遠程Linux伺服器 jupyter lab


########## 殺掉後台程式://blog.csdn.net/qq_34385263/article/details/82080575
# 發現有錯誤時也不要緊,後台運行的jupyter lab也可以隨時關掉~
# 只需在運行後台程式的終端運行下述命令:
ps -axu xia(用戶名) | grep jupyter
kill -9 501(PID)
運行
##### Windows
# 我在Windows下暫不使用後台運行 本地jupyter lab,但也可以設置為後台運行,參考:
# //blog.csdn.net/weixin_44051608/article/details/109532922
# //www.jianshu.com/p/46c9a235793f

### Windows下 即時運行 本地 jupyter lab
# 01 在 Anaconda Powershell Prompt 終端輸入:
jupyter lab
# 02 從本地瀏覽器打開網址 localhost:8888 即可即時運行 本地jupyter lab

### Windows下 後台運行 遠程Linux伺服器 jupyter lab
# 01 在 Windows MobaXterm 遠程終端輸入:
nohup jupyter lab > jupyterlab.log 2>&1 &
# 02 在 Windows Git Bash 終端輸入:
bash j.sh 
# 03 從本地瀏覽器打開網址 localhost:8891 即可後台運行 遠程Linux伺服器 jupyter lab

##### Mac
### Mac 後台運行 本地 jupyter lab
# 01 在 Mac iTerm2/Terminal 終端輸入:
nohup jupyter lab > jupyterlab.log 2>&1 &
# 02 從本地瀏覽器打開網址 localhost:8888 即可後台運行 本地jupyter lab

### Mac 後台運行 遠程Linux伺服器 jupyter lab
# 01 在 Mac iTerm2 遠程終端輸入:
nohup jupyter lab > jupyterlab.log 2>&1 &
# 02 在 Mac Terminal/iTerm2 本地終端輸入:
bash j.sh 
# 03 從本地瀏覽器打開網址 localhost:8891 即可後台運行 遠程Linux伺服器 jupyter lab
日常運行
##### 不同作業系統下,日常運行 jupyter lab
### Mac 運行 本地 jupyter lab
# 直接從本地瀏覽器打開網址 localhost:8888 即可後台運行 本地jupyter lab

### Windows 運行 本地 jupyter lab
# 01 Anaconda Powershell Prompt 終端輸入:jupyter lab
# 02 從本地瀏覽器打開網址 localhost:8888 即可即時運行 本地jupyter lab

### Mac 和 Windows 運行 遠程Linux伺服器 jupyter lab
# 01 在本地終端(Mac Terminal/iTerm2;Windows Git Bash)輸入:
bash j.sh 
# 02 從本地瀏覽器打開網址 localhost:8891 即可後台運行 遠程Linux伺服器 jupyter lab

JupyterLab 是我項目開發系統的核心軟體,它具有「All in One」的功能,我平時敲程式碼、運行程式碼/數據處理、查看PDF、CSV、JPG等格式的結果文件、上傳和下載數據時,都是用它。簡單來說,在配合 GitHub、GitHubDesktop、Typora、uPic/PicGo 使用時,它對於我來說,就是一個把基於Windows、MacOS、Linux CentOS 三個作業系統的三台伺服器同時集成到一個工作空間的可視化交互開發工具。

Git/Git Bash

Git 是目前世界上最先進的分散式版本控制系統

我安裝 Git 首先是因為我要用GitHub Desktop,而它安裝和運行的前提是系統已經安裝了Git;另一個原因,是為了提交更新我的個人部落格網站 touchumind.com ,因為這個網站是基於GitHub Pages靜態網站託管服務進行搭建的,換句話說,這個網站是通過GitHub Pages直接託管在 GitHub 的伺服器上的。

不管是基於 GitHub Desktop 將本地程式碼提交更新到 GitHub,還是個人部落格網站內容的提交更新,都需要用到 Git,原因就是 GitHub 使用的版本控制系統是 Git。

Git Bash 是 Git 自帶的,它在你安裝 Git 的時候也會被同時安裝。可以把 Git Bash 當作類似於 Mac Terminal 終端的 Windows 系統的終端。我用 Git Bash 終端主要做兩件事,第一是執行 Git 命令,第二是在Windows下使用 linux 命令,比如 pwd, ls, ls -l, vi, vim 等。

GitHub/GitHub Desktop

下面就來說說多次提到的 GitHub 和 GitHub Desktop 吧。

簡言之,GitHub 和 GitHub Desktop 是我的程式碼管理系統臨時筆記系統個人部落格網站託管平台和備份系統個人部落格的免費圖床

我的程式碼管理系統
程式碼編輯器

本地JupyterLab

程式碼備份平台
  1. 本地 GitHub Desktop 文件夾
  2. GitHub 網站
程式碼提交更新工具

GitHub Desktop

我的臨時筆記系統

臨時筆記包括臨時會議記錄、臨時提醒事項、臨時思路和想法、臨時素材等各種臨時文字。

我的臨時筆記空間

/Users/xia/Documents/GitHub/Notebook

我的臨時筆記備份
  1. 本地 /Users/xia/Documents/GitHub/Notebook

  2. GitHub:將 Mac 本地臨時筆記空間文件夾 /Users/xia/Documents/GitHub/Notebook 通過 GitHub Desktop 及時備份到 GitHub

個人部落格網站託管平台和備份系統
個人部落格網站託管平台

//github.com/CuihuaXia/cuihuaxia.github.io

個人部落格網站備份系統

將 Mac 本地的個人部落格網站源文件夾 /Users/xia/Documents/MyBlog 通過 GitHub Desktop 定期備份到 GitHub

個人部落格的免費圖床

圖床是專門用來存放圖片(包括動圖),同時允許你把圖片對外連接的網上空間。

圖床是我們在發布帶圖片在線部落格時所必須的存儲空間和流量平台。

在 GitHub 網站,新建一個公共倉庫,名為 images,然後獲取個人 token 並保存(這個 token 只會顯示一次所以需要及時保存),後面在設置圖床客戶端的時候需要這個token。

此時,位於 GitHub 上的 images 公共倉庫,就是我所說的圖床。

iTerm2/Terminal/CMD/MobaXterm

Terminal

Mac 本地終端

CMD

Windows 本地命令行工具

iTerm2

Mac 本地終端運行和遠程連接 Linux 伺服器工具

MobaXterm

Windows 遠程連接 Linux 伺服器工具

Typora——最好的Markdown工具

《論語》有言:「吾日三省吾身」。我們很多人可能做不到「日三省」,但「周一省」」月一省「甚至「年一省」還是沒有太大難度的。

在一段時間的工作後,我們確實很有必要,回頭對前一段時間的工作和學習,甚至是生活,進行一個系統的總結和復盤,讓我們更加清楚自己這段時間收穫了什麼、收穫了多少,有哪些進步,又有哪些不足,為下一階段的工作和生活做出階段目標指導和方向確定/調整。

那麼,Typora 就作為了我的正式碼字——各種嚴肅的科研、學習、工作總結復盤工具。

Markdown工具如今已經層出不窮,但我認為Typora之所以能「獨領風騷」「一騎絕塵」,就在於它的極簡主義和「所見即所得」的「即時渲染」效果。當然它還有很多其他優秀「才藝」的加持,比如插入公式、插入圖片的方式等。

我為什麼選擇 Typora 作為我的碼字工具呢?最主要是因為它能通過圖床客戶端 uPic 等,自動上傳圖片到圖床,同時將本地的圖片路徑轉換成在線 URL。我不需要做任何特殊操作,不管來自哪裡的圖片,只要它在剪貼板上,我只需要執行正常的 Command + V 操作,就能一步實現粘貼圖片、上傳圖片、轉換 URL。另外,Typora 輕量級、簡潔大方、所見即所得、即時渲染的特點,也是我選擇它的原因。

我的碼字工具

Typora

我的碼字空間

/Users/xia/Documents/GitHub/Drafts

即在 GitHub 網站建立一個私人倉庫 Drafts,然後通過本地 GitHub Desktop 克隆這個倉庫到本地路徑 /Users/xia/Documents/GitHub/Drafts

我的碼字文章備份
  1. 本地 /Users/xia/Documents/GitHub/Drafts

  2. GitHub:將 Mac 本地碼字空間文件夾 /Users/xia/Documents/GitHub/Drafts 通過 GitHub Desktop 及時備份到 GitHub

個人部落格網站文章發布/更新
# 01 使用本地 JupyterLab 打開 Mac 本地終端
# 02 將本地 /Users/xia/Documents/GitHub/Drafts 中寫好的文章(該markdown文件),拷貝到 Documents/MyBlog/source/_posts/ 文件夾下
cp Documents/GitHub/Drafts/我的項目開發系統.md Documents/MyBlog/source/_posts/
# 03 vim 打開該文件
vim Documents/MyBlog/source/_posts/我的項目開發系統.md
# 04 添加如下開頭,然後退出保存
---
title: 我的項目開發系統(文章名稱)
mathjax: false
show_copyright: true
date: 
tags: 科研工具
categories: 實用工具
description:
img:
top:
cover:
coverImg:
password:
toc:
summary:
---

> 更新於 XXXX-XX-XX XX:XX
# 05 在終端執行:
cd /Users/xia/Documents/MyBlog
hexo cl && hexo g && hexo d

uPic——一個簡潔的Mac圖床客戶端

uPic 是我為了搭配 Mac Typora 使用而安裝的(Windows Typora 使用的是 PicGo),是為了配合實現 Typora 的上傳圖片功能。

在 Typora 設置里選擇 Image,然後修改第一項為「Upload image」,然後只勾選前兩個複選框,最後「Image Uploader」那裡選擇」uPic「。

下載安裝好 uPic 之後,在 uPic 設置里添加 GitHub 為圖床,然後將用戶名、倉庫名、分支名以及Token填好並保存。

分別在 Typora 和 uPic 點擊驗證或測試按鈕,如果圖片上傳測試成功,會有成功提示。

TinyPNG4Mac

為了減少部落格文章的負載,在上傳圖片之前,通常需要在保證圖片品質的前提下把圖片文件壓縮為更小。而 TinyPNG4Mac 就是同時滿足這兩個條件的輕量級圖片壓縮軟體。

移動硬碟

用來做項目重要數據(比如原始數據)的第3個備份。項目的非重要數據只做本地和Linux伺服器兩個位置的備份。

U盤

用來臨時存放要臨時使用(如列印、不同設備之間拷貝等)的文件。

項目進度管理系統

Notion

輕量級文件備份系統

1. 印象筆記
2. iCloud
3. Google Drive
4. 百度網盤

文獻/PDF文件管理系統

1. EndNote 20
2. MarginNote 3

電子書管理系統

Apple Books

日常筆記管理系統

1. 印象筆記
2. Apple Notes
3. Apple GoodNotes
4. Apple Notability
5. Apple Prodrafts

瀏覽器系統

1. Google Chrome
2. Safari
3. Microsoft Edge

思路整理系統

1. XMind
2. Prodrafts

目前已淘汰軟體

FileZilla,WinSCP,VSCode,Transmit

總結

最後用一張思維導圖總結我平時開發課題項目的流程:

image-20210621222906080

本文章首發於個人微信公眾號 TouchUMind 和個人嗶哩嗶哩帳號 iTouchUMind,備份(終稿)於個人部落格網站 touchumind.com,歡迎關注和支援!