2020/4/5
1. 缘由
- 很久之前做课程项目用过vs(不是vscode),然后交完报告马上卸载了(好无情,但是太大了)。我这次尝试抛弃pycharm重新学习vscode是出于以下两点考虑:
- pycharm社区版不支持远程操作。以往我远程写代码都是进行jupyter notebook端口转移,但debug起来非常不方便,所以时常先在本地写好代码,然后文件传输…
- 对自己的职业规划是希望走开发的,刚开始学大前端,vscode当然必不可少啦。早晚要跟pycharm say goodbye。
2. 记录
- 在官网下载和安装,过程非常简单,next的时候默认添加环境路径,所以也不用操心。安装完就能直接上手。
- 在extension找到python安装。后来看到有博主推荐code runner,可以支持多种语言,也很不错。
- 配置theme和icon theme,不多说。
- 安装了必备的(所有教程都在推荐安装但我第一次听说的)两个包:flake8和yapf。前者是静态检查工具(pylint更严格),后者用于格式化。装的时候也在报错,有些依赖包的版本不匹配,anyway,ignore之后就通过了。还有一个包也很不错,可以给出在光标处的函数信息。安装后要在setting里把这几个包配置好。
安装语法:
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
进入command palette,搜索一下setting进入设置。 - user是全局的,workspace是当前。
- 搜索一下json,打个对勾,点击下面的Edit in settings json,这样就能在json中修改配置了,而且是双栏,能选择可修改的参数。
-
-
非常bug我的事情就是,一点点小事就报错,直接红色error。跟pycharm相比差距太大了,pycharm不同情况都区分得很好,如果是格式不好(比如逗号后没空格)只会给你条灰色波浪线。哎但是查不到好的解决方案,于是通通ignore掉奇怪的错误吧。
通通ignore - extension中找到jupyter,添加代码
# %%
,就可以run cell了 - 又看了一些debug的方法,breakpoint原来这么高级,不仅能print log信息(log messege,又称poor man's debugger,如
print('name: '+{name})
),而且能在special case下停止(expression,又称conditional debug,如name==‘Jack’
)
3. 远程
- 远程配置对我来说好难,因为涉及到内网穿透,要借助跳板机(jumpbox)。Anyway,折腾一整天后,终于配好了。网上的教程五花八门,但对于小白来说,不清楚每一步是干嘛用的。在这里总结一下吧。
3.1 目标
这篇文章介绍了为什么要跳板。
如果公司的服务器在外网,一般会设置一个跳板机,访问公司其他服务器都需要从跳板机做一个ssh跳转,外网的服务器基本都要通过证书登录的。于是我们面临一个情况,本机ssh->跳板机->目标机器。如果直接在跳板机上放置公私钥对,并将跳板机上的公钥放到目标机器上,这样可以直接登录。但这样会有一个问题,跳板机上的root权限的用户可以获取普通用户的公私钥对,就算对私钥设置了密码,但是从安全角度来看,这样还是失去了保障,失去了服务器的一部分安全性。如何来解决这个问题呢,其实ssh协议本身是支持秘钥转发的,不需要再跳板机上放置公私钥。
总而言之,我们的目标是从本地->跳板机->目标机器。
3.2 试验
- 在不清楚原理的情况下,找到了官网给的解答。试图直接copy代码,果然失败了:代码里的identityFile指什么呢?该怎么用呢?
官网
3.3 公钥和私钥
我花了大把的时间学公钥和私钥,最后还没怎么看懂,单从网上的代码来看,尤其是这个视频(带着我们配了一遍,但是没用跳板机)和这篇文章(是我想要的答案,但是按照这个代码依旧报错),首先要生成公钥和私钥,然后把公钥传到目标机器,这样就免输密码了。
所以我也搞了好久,首先通过ssh-keygen -t rsa -b 4096
生成钥对,在 C:\Users\cold\.ssh
文件里。下面需要上传啊,一开始我不敢动服务器的~/.ssh
文件夹,差点就想问学长们了,后来又去filezilla看了看服务器的文档结构,估计这个文件应该是user私有的,于是就放心的添加我的公钥。一波操作过后,尝试打开远程,没啥帮助,该报错还是报错。所以合着只是为了不输密码…
中间我还下载了nmap…不过回头看,它应该没任何帮助…
3.4 核心
其实重点不在公钥私钥,在于proxy command。以前我都是先后两条语句:
ssh -L -p xxxxx username@jumpbox_ip
ssh -L -p xxxxx username@target_ip
其实借助proxy command,一条语句就能搞定。
ssh -o ProxyCommand='ssh -p xxxxx username@jumpbox_ip -W %h:%p' -p xxxxx username@target_ip
直接搬移到config文件里,然后又疯狂报错。我觉得我之所以耗了一天,就是因为不知道报错在哪一步,所以就来回各种试,一直以为是我密钥的问题。最后才发现是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 调试
这时候是不能调试的,需要在远程服务器上再安装一次python等插件……
3.6 后续
我历尽千辛万苦安装好,结果发现实验室服务器gpu特别特别挤,我还总断线。摔!
哎,为啥啊。
2020/4/7
4. 避坑
4.1 extension安装目录
这几天发现C盘越来越满,哪怕内存占用很少时也红色警告了,于是猜测vscode占用了c盘(其实不是vscode的错呜呜呜呜,啊我稍后解释)。又立刻联想到extension会不会安装时自动保存在c盘了。一查,还真的是,安装在了C:\Users\%USERPROFILE%\.vscode
目录。
该怎么设定安装路径呢,setting里貌似没有。在知乎找到了解决方案。
cd $vscode的目录$
code --extensions-dir "你放置的位置"
就好啦。打开vscode,发现…omg,竟然没有extension。好不人性化一软件。犹记得前几天重新设置微信缓存路径时,都自动帮我搬家了。没事,我们手动搬运,心平气和复制一下~~~
ps. 然后我发现c盘依旧很满,作为有许多小问号的小朋友,我又求助了知乎,找到了排查是什么占用了磁盘的方法,如下图,然后我才意识到是因为我最近录屏太多,都存在了c盘…vscode我错怪你了呜呜呜
windows系统的设置真是宝藏移走部分视频后,腾出了30多GB的空间~
当当当当
2020.5.14
- 配置c++
参考教程,答主超良心。
网友评论