vscode初探

2020/4/5

1. 緣由

  • 很久之前做課程項(xiàng)目用過vs(不是vscode),然后交完報(bào)告馬上卸載了(好無情,但是太大了)。我這次嘗試拋棄pycharm重新學(xué)習(xí)vscode是出于以下兩點(diǎn)考慮:
    1. pycharm社區(qū)版不支持遠(yuǎn)程操作。以往我遠(yuǎn)程寫代碼都是進(jìn)行jupyter notebook端口轉(zhuǎn)移,但debug起來非常不方便,所以時(shí)常先在本地寫好代碼,然后文件傳輸…
    2. 對自己的職業(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ò)怪你了嗚嗚嗚

windows系統(tǒng)的設(shè)置真是寶藏

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


當(dāng)當(dāng)當(dāng)當(dāng)

2020.5.14

  1. 配置c++
    參考教程,答主超良心。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容