美文网首页
vscode初探

vscode初探

作者: winter_sweetie | 来源:发表于2020-04-08 00:32 被阅读0次

2020/4/5

1. 缘由

  • 很久之前做课程项目用过vs(不是vscode),然后交完报告马上卸载了(好无情,但是太大了)。我这次尝试抛弃pycharm重新学习vscode是出于以下两点考虑:
    1. pycharm社区版不支持远程操作。以往我远程写代码都是进行jupyter notebook端口转移,但debug起来非常不方便,所以时常先在本地写好代码,然后文件传输…
    2. 对自己的职业规划是希望走开发的,刚开始学大前端,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

  1. 配置c++
    参考教程,答主超良心。

相关文章

网友评论

      本文标题:vscode初探

      本文链接:https://www.haomeiwen.com/subject/dezpphtx.html