|
|
# VSCode setting guide for desktop users
|
|
|
|
|
|
[VSCode](https://code.visualstudio.com/) is a hackable, new, fancy code editor for various languages. It contains many useful extensions, such as Jupyter, Python language server, git management, and GitLab. So, on this page, I will let you know the full usage of VSCode for using clusters easily.
|
|
|
|
|
|
Contents :
|
|
|
|
|
|
* [Hello VSCode](#hello-vscode)
|
|
|
* [Migration from JupyterHub to VSCode](#migration-from-jupyterhub-to-vscode)
|
|
|
* [Working on the cluster through VSCode via SSH](#working-on-the-cluster-through-vscode-via-ssh)
|
|
|
* [Jupyter extension for VSCode](#jupyter-extension-for-vscode)
|
|
|
* [Remote server connection](#remote-server-connection)
|
|
|
* [GitLab extension for VSCode](#gitlab-extension-for-vscode)
|
|
|
|
|
|
## Hello VSCode
|
|
|
|
|
|

|
|
|
**Fig. 1.** VSCode Page.
|
|
|
|
|
|
위에서 소개한 바와 같이 VSCode는 다양한 코드를 작성하기 위해 설계되어 있는 *텍스트 에디터* 이다.
|
|
|
특히, *코드를 작성하기 위한* 툴이기 때문에 코딩을 하는데 편리한 점들을 많이 찾아볼 수 있다.
|
|
|
코딩을 정리하는데 중요한 [깃](https://git-scm.com/)을 관리해주는 툴킷이 기본으로 내장되어 있고,
|
|
|
여러 익스텐션들을 이용하면 코딩을 하는데 필요한 다양한 기능들을 *추가해서* 사용할 수 있다.
|
|
|
아마 연구실에 처음 들어온 학생이라면, 기존에 본인이 사용하는 프로그래밍 언어가 있을 수도 있고 특히, 파이썬 유저의 경우,
|
|
|
[Jupyter](https://yheom.sscc.uos.ac.kr/jupyter)라고 하는 툴을 이용해 코딩을 해왔을 것이라고 생각한다.
|
|
|
물론, 주피터는 프로그래밍의 측면에서 굉장히 편리하고 쉬운 툴임에는 틀림없지만, *에디터* 라는 측면에서는 다양한 기능을 제공하지 못한다.
|
|
|
|
|
|
VSCode는 주피터 노트북 뿐만 아니라 C, C++, Julia, Go, CSS, HTML등 일반적인 코딩을 하기 위한 에디터이기 때문에
|
|
|
훨씬 다양한 에디팅 기능을 제공하고, 사용자의 입맛에 맞춰서 세팅할 수 있다는 장점이 있다.
|
|
|
이 가이드를 따라하다 보면, 기존 주피터 노트북의 장점은 그대로 유지하면서 다양한 기능이 들어있는 VSCode로의 성공적인 이주를 할 수 있을 것이라고 생각한다.
|
|
|
|
|
|
## Migration from JupyterHub to VSCode
|
|
|
|
|
|
주피터를 일반 컴퓨터 환경에서 작동시켜본 사람이라면 아래와 같은 화면에 익숙할 것이다.
|
|
|
|
|
|

|
|
|
**Fig. 2** `jupyter notebook`을 터미널에 입력했을 때의 사진.
|
|
|
|
|
|
추가로 인터넷 페이지가 켜지면서 우리가 흔히 아는 주피터 노트북의 모습이 나타난다.
|
|
|
주피터는 실제로는 가상의 주피터 서버(터미널에서 실행시킨 것)가 클라이어트(인터넷 페이지)와 서로 상호작용하면서,
|
|
|
인터넷페이지에 입력된 코드들을 컴퓨터의 커널에 전달해 주고 그 결과를 다시 인터넷 페이지에 표시하는 방법으로
|
|
|
상호작용 가능한 프로그래밍을 제공한다.
|
|
|
|
|
|
이러한 일반적인 경우와 달리, 하나의 컴퓨터에서 여러 사용자들을 위한 노트북을 제공하는 주피터 서버도 있는데,
|
|
|
이러한 서버를 [JupyterHub](https://jupyterhub.readthedocs.io/)이라고 한다.
|
|
|
주피터 허브는 각 사용자마다 고유의 아이디와 비밀번호를 이용해 독립적인 서버를 구동해서 제공하는 역할을 하는데,
|
|
|
주피터의 인터페이스가 인터넷 브라우저인 점을 생각하면 고성능 서버에 주피터 허브를 구성하여 여러 사용자에게
|
|
|
사용자의 환경과는 상관없이 좋은 성능의 컴퓨터를 동시에 제공하는 서비스가 가능하다.
|
|
|
|
|
|
우리 연구실에서도 학교에 있는 클러스터를 [서버](https://yheom.sscc.uos.ac.kr)로 활용하여 학생들이 사용하고 있고,
|
|
|
이러한 고성능 클러스터에 주피터 허브를 이용하여 쉽게 좋은 컴퓨팅 성능을 언제 어디서나 접근할 수 있도록 구성했다.
|
|
|
따라서 초기에 발급받은 아이디와 패스워드만 있으면, 그것을 통해 접속할 수 있기 때문에 어떤 컴퓨터에서도 접속이 가능하다.
|
|
|
|
|
|
하지만, 처음에 이야기했듯이, 주피터라는 환경은 에디팅을 하거나 다양한 작업을 수행하는데 있어서 뛰어나지는 않기 때문에
|
|
|
VSCode를 이용하여 클러스터에 접속하고 주피터 허브에 연결하고 작업하는 방법에 대해서 소개한다.
|
|
|
|
|
|
## Working on the cluster through VSCode via SSH
|
|
|
|
|
|
주피터를 세팅하기에 앞서 VSCode로 클러스터에 접속하는 방법에 대해 먼저 소개한다.
|
|
|
우리 연구실의 경우에는 다양하고 거대한 데이터들을 기반으로 자연현상을 분석하는 일들을 주로 하게 되는데,
|
|
|
수집된 데이터의 기간에 따라 데이터의 양이 굉장히 커질 수도 있고, 한번에 처리하기에 너무 거대한 데이터도 존재한다.
|
|
|
이러한 경우 이를 로컬에 옮겨서 작업하게 되면 굉장히 비효율적일 뿐 아니라 거대한 저장공간을 사용자가 마련해야한다는 단점이 있다.
|
|
|
|
|
|
모든 데이터는 이미 클러스터에 저장되어있기 때문에 클러스터에 직접 접속해서 계산할 수 있다면 이런 문제점들을
|
|
|
쉽게 극복할 수 있는데, 일반적으로 Linux시스템에 접속하는 방법은 [SSH](https://en.wikipedia.org/wiki/Secure_Shell)를 주로 이용한다.
|
|
|
|
|
|
VSCode에도 이러한 SSH연결을 통해 클러스터의 작업공간에서 작업할 수 있는 확장이 존재하는데 이는 아래와 같이 검색할 수 있다.
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
## Jupyter extension for VSCode
|
|
|
|
|
|
### Remote server connection
|
|
|
|
|
|
## GitLab extension for VSCode |