2020/4/5
1. 緣由
- 很久之前做課程項(xiàng)目用過vs(不是vscode),然后交完報(bào)告馬上卸載了(好無情,但是太大了)。我這次嘗試拋棄pycharm重新學(xué)習(xí)vscode是出于以下兩點(diǎn)考慮:
- pycharm社區(qū)版不支持遠(yuǎn)程操作。以往我遠(yuǎn)程寫代碼都是進(jìn)行jupyter notebook端口轉(zhuǎn)移,但debug起來非常不方便,所以時(shí)常先在本地寫好代碼,然后文件傳輸…
- 對自己的職業(yè)規(guī)劃是希望走開發(fā)的,剛開始學(xué)大前端,vscode當(dāng)然必不可少啦。早晚要跟pycharm say goodbye。
2. 記錄
- 在官網(wǎng)下載和安裝,過程非常簡單,next的時(shí)候默認(rèn)添加環(huán)境路徑,所以也不用操心。安裝完就能直接上手。
- 在extension找到python安裝。后來看到有博主推薦code runner,可以支持多種語言,也很不錯(cuò)。
- 配置theme和icon theme,不多說。
- 安裝了必備的(所有教程都在推薦安裝但我第一次聽說的)兩個(gè)包:flake8和yapf。前者是靜態(tài)檢查工具(pylint更嚴(yán)格),后者用于格式化。裝的時(shí)候也在報(bào)錯(cuò),有些依賴包的版本不匹配,anyway,ignore之后就通過了。還有一個(gè)包也很不錯(cuò),可以給出在光標(biāo)處的函數(shù)信息。安裝后要在setting里把這幾個(gè)包配置好。
安裝語法:
python -m pip install -U flake8
python -m pip install -U yapf
python -m pip install -U pydocstyle
配置語句:
"python.linting.flake8Enabled": true,
"python.formatting.provider": "yapf",
"python.linting.pydocstyleEnabled": true,
- 在setting中修改(tweak):
-
ctrl+3進(jìn)入command palette,搜索一下setting進(jìn)入設(shè)置。 - user是全局的,workspace是當(dāng)前。
- 搜索一下json,打個(gè)對勾,點(diǎn)擊下面的Edit in settings json,這樣就能在json中修改配置了,而且是雙欄,能選擇可修改的參數(shù)。
-

-
非常bug我的事情就是,一點(diǎn)點(diǎn)小事就報(bào)錯(cuò),直接紅色error。跟pycharm相比差距太大了,pycharm不同情況都區(qū)分得很好,如果是格式不好(比如逗號后沒空格)只會(huì)給你條灰色波浪線。哎但是查不到好的解決方案,于是通通ignore掉奇怪的錯(cuò)誤吧。
通通ignore - extension中找到j(luò)upyter,添加代碼
# %%,就可以run cell了 - 又看了一些debug的方法,breakpoint原來這么高級,不僅能print log信息(log messege,又稱poor man's debugger,如
print('name: '+{name})),而且能在special case下停止(expression,又稱conditional debug,如name==‘Jack’)
3. 遠(yuǎn)程
- 遠(yuǎn)程配置對我來說好難,因?yàn)樯婕暗絻?nèi)網(wǎng)穿透,要借助跳板機(jī)(jumpbox)。Anyway,折騰一整天后,終于配好了。網(wǎng)上的教程五花八門,但對于小白來說,不清楚每一步是干嘛用的。在這里總結(jié)一下吧。
3.1 目標(biāo)
這篇文章介紹了為什么要跳板。
如果公司的服務(wù)器在外網(wǎng),一般會(huì)設(shè)置一個(gè)跳板機(jī),訪問公司其他服務(wù)器都需要從跳板機(jī)做一個(gè)ssh跳轉(zhuǎn),外網(wǎng)的服務(wù)器基本都要通過證書登錄的。于是我們面臨一個(gè)情況,本機(jī)ssh->跳板機(jī)->目標(biāo)機(jī)器。如果直接在跳板機(jī)上放置公私鑰對,并將跳板機(jī)上的公鑰放到目標(biāo)機(jī)器上,這樣可以直接登錄。但這樣會(huì)有一個(gè)問題,跳板機(jī)上的root權(quán)限的用戶可以獲取普通用戶的公私鑰對,就算對私鑰設(shè)置了密碼,但是從安全角度來看,這樣還是失去了保障,失去了服務(wù)器的一部分安全性。如何來解決這個(gè)問題呢,其實(shí)ssh協(xié)議本身是支持秘鑰轉(zhuǎn)發(fā)的,不需要再跳板機(jī)上放置公私鑰。
總而言之,我們的目標(biāo)是從本地->跳板機(jī)->目標(biāo)機(jī)器。
3.2 試驗(yàn)
- 在不清楚原理的情況下,找到了官網(wǎng)給的解答。試圖直接copy代碼,果然失敗了:代碼里的identityFile指什么呢?該怎么用呢?
官網(wǎng)
3.3 公鑰和私鑰
我花了大把的時(shí)間學(xué)公鑰和私鑰,最后還沒怎么看懂,單從網(wǎng)上的代碼來看,尤其是這個(gè)視頻(帶著我們配了一遍,但是沒用跳板機(jī))和這篇文章(是我想要的答案,但是按照這個(gè)代碼依舊報(bào)錯(cuò)),首先要生成公鑰和私鑰,然后把公鑰傳到目標(biāo)機(jī)器,這樣就免輸密碼了。
所以我也搞了好久,首先通過ssh-keygen -t rsa -b 4096生成鑰對,在 C:\Users\cold\.ssh文件里。下面需要上傳啊,一開始我不敢動(dòng)服務(wù)器的~/.ssh文件夾,差點(diǎn)就想問學(xué)長們了,后來又去filezilla看了看服務(wù)器的文檔結(jié)構(gòu),估計(jì)這個(gè)文件應(yīng)該是user私有的,于是就放心的添加我的公鑰。一波操作過后,嘗試打開遠(yuǎn)程,沒啥幫助,該報(bào)錯(cuò)還是報(bào)錯(cuò)。所以合著只是為了不輸密碼…
中間我還下載了nmap…不過回頭看,它應(yīng)該沒任何幫助…
3.4 核心
其實(shí)重點(diǎn)不在公鑰私鑰,在于proxy command。以前我都是先后兩條語句:
ssh -L -p xxxxx username@jumpbox_ip
ssh -L -p xxxxx username@target_ip
其實(shí)借助proxy command,一條語句就能搞定。
ssh -o ProxyCommand='ssh -p xxxxx username@jumpbox_ip -W %h:%p' -p xxxxx username@target_ip
直接搬移到config文件里,然后又瘋狂報(bào)錯(cuò)。我覺得我之所以耗了一天,就是因?yàn)椴恢缊?bào)錯(cuò)在哪一步,所以就來回各種試,一直以為是我密鑰的問題。最后才發(fā)現(xiàn)是ssh路徑要specify一下。修改成下面的樣子,就成功了。
Host jumpbox
HostName jumpbox_ip
User username
Port xxxxx
Host target
HostName target_ip
User username
ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -p xxxxx username@jumpbox_ip -W %h:%p
至于-W之類的啥意思, 至于密鑰怎么玩,至于IdentityFile怎么寫,勞資先不管了。能用就行。
3.5 調(diào)試
這時(shí)候是不能調(diào)試的,需要在遠(yuǎn)程服務(wù)器上再安裝一次python等插件……
3.6 后續(xù)
我歷盡千辛萬苦安裝好,結(jié)果發(fā)現(xiàn)實(shí)驗(yàn)室服務(wù)器gpu特別特別擠,我還總斷線。摔!
哎,為啥啊。
2020/4/7
4. 避坑
4.1 extension安裝目錄
這幾天發(fā)現(xiàn)C盤越來越滿,哪怕內(nèi)存占用很少時(shí)也紅色警告了,于是猜測vscode占用了c盤(其實(shí)不是vscode的錯(cuò)嗚嗚嗚嗚,啊我稍后解釋)。又立刻聯(lián)想到extension會(huì)不會(huì)安裝時(shí)自動(dòng)保存在c盤了。一查,還真的是,安裝在了C:\Users\%USERPROFILE%\.vscode目錄。
該怎么設(shè)定安裝路徑呢,setting里貌似沒有。在知乎找到了解決方案。
cd $vscode的目錄$
code --extensions-dir "你放置的位置"
就好啦。打開vscode,發(fā)現(xiàn)…omg,竟然沒有extension。好不人性化一軟件。猶記得前幾天重新設(shè)置微信緩存路徑時(shí),都自動(dòng)幫我搬家了。沒事,我們手動(dòng)搬運(yùn),心平氣和復(fù)制一下~~~
ps. 然后我發(fā)現(xiàn)c盤依舊很滿,作為有許多小問號的小朋友,我又求助了知乎,找到了排查是什么占用了磁盤的方法,如下圖,然后我才意識到是因?yàn)槲易罱浧撂?,都存在了c盤…vscode我錯(cuò)怪你了嗚嗚嗚

移走部分視頻后,騰出了30多GB的空間~

2020.5.14
- 配置c++
參考教程,答主超良心。

