我的專案開發系統

TouchUMind發表於2021-06-24

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

我的專案開發系統建立的原則: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出錯解決辦法的重要參考:
# https://blog.csdn.net/jeryjeryjery/article/details/77880227
# http://zhang-jc.github.io/2018/11/27/CentOS-6-8-%E5%AE%89%E8%A3%85-Python3-Could-not-build-the-ssl-module/
# https://blog.csdn.net/Aidam_Bo/article/details/112919330
# 下載及解壓
wget https://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,可以直接使用。只是版本可能會舊些,需要升級。
# 下載:從官網 https://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 官網(https://www.anaconda.com/products/individual)下載並本地安裝 Anaconda
# 02 直接執行JupyterLab(Anaconda會自帶jupyter notebook和jupyter lab): 開啟終端,輸入 jupyter lab,就會自動開啟網頁 http://localhost:8888/lab 
# 03 然後就可以開始玩了~
### 方法2: 使用 Miniconda 安裝 JupyterLab
# 01 官網(https://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,就會自動開啟網頁 http://localhost:8888/lab 
# 04 然後就可以開始遨遊太空了~


########## Windows上安裝JupyterLab(使用 Anaconda 安裝 JupyterLab)
# 01 官網(https://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,就會自動開啟網頁 http://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


########## 殺掉後臺程式:https://blog.csdn.net/qq_34385263/article/details/82080575
# 發現有錯誤時也不要緊,後臺執行的jupyter lab也可以隨時關掉~
# 只需在執行後臺程式的終端執行下述命令:
ps -axu xia(使用者名稱) | grep jupyter
kill -9 501(PID)
執行
##### Windows
# 我在Windows下暫不使用後臺執行 本地jupyter lab,但也可以設定為後臺執行,參考:
# https://blog.csdn.net/weixin_44051608/article/details/109532922
# https://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

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

https://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,歡迎關注和支援!

相關文章