[컴][파이썬] VSCode 에서 library 까지 break point 를 지정할 수 있는 python debugger 설정

vscode python debugger 설정 / configuration / how to config / 파이썬 디버거 사용 / site-package 어떻게 접근 / 내비 / 네비게이트 / traverse / break point 를 library 에


vscode python debugger tips

python debugger 의 option 이 많이 추가됐다. 그래서 정리가 필요해서 글을 적는다.

libray 까지 code navigation

"python.analysis.cacheFolderPath": ".vscode",
"python.analysis.memory.keepLibraryLocalVariables": false,
"python.venvPath": "c:\\\\a\\\\envs",
"python.analysis.cachingLevel": "Library",
"python.analysis.memory.keepLibraryAst": true,

그리고 cachingLevel 을 Library 까지 해주면 code navigation 을 할 때 잘된다. 그렇지 않으면 제대로 source 를 찾지 못한다.


library 까지 debugger 로 동작하도록 하기

아래처럼 settings.json 에 debugJustMyCode 를 false 로 두는 것으로는 debugging 이 동작하지 않는다. launch.json 에 justMyCode 를 넣어줘야 된다.

이렇게 해주지 않으면 step into를 해도 library code 로 debugger 가 옮겨가지 않는다.

// settings.json

// "python.dataScience.debugJustMyCode": false,


// launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "justMyCode": false,
        }
    ]
}





[컴][툴] github issue 를 활용하는 방법

github issue / github 사용법 / github 로 개발하는 방법 / github 로 collaborator 로 이슈 해결 / 협업 툴 / 그룹 웨어 / vscode 에서 github 를 사용하는 방법 /triaging / triage / 깃헙 / 깃허브 사용법 / 깃허브 이슈 사용법 / github 이슈 / 활용법


github issue 를 활용하는 방법

vscode team 의 github 활용방법

vscode Wiki를 읽으면 vscode team 이 어떻게 github 를 사용하는지 알 수 있다.

  • https://github.com/microsoft/vscode/wiki/Issues-Triaging
    • close 할 때 이유를 label 로 달아준다.(예를 드려면 duplicate)등
    • 모든 issue는 type label 을 갖는다. issue 를 분류할때 type label 을 사용한다. type label 에 특정 색으로 통일. (vscode team 은 grey 를 사용, bug 같이 특정 의미가 들어가면 grey+red 등으로 만듦)
    • feature area 라는 것을 둬서, 기능에 따른 분류를 하고, 그에 따라 label 을 배정했다. 그리고 이것도 마찬가지로 색을 통일했다.
    • iteration 이나 release 를 표현하기 위해 milestone 을 사용한다.
      • iteration 은 대체로 1개월 주기이다.(참고)
      • 주로 Backlog milestone 에 있는 issue 들이 바로 iteration milestone 으로 가게 된다. (iteration milestone 은 November 2019 처럼 날짜를 사용)
      • Backlog 에 있는 것중 Roadmap 에 부합하는 녀석들이 iteration 으로 넘어간다.
      • 만약 Backlog 에 있는 것이 Roadmap 과 전혀 관련없는 것이 명확하다면 close 한다.
      • Backlog Candidate 는 community 가 원하는 기능중에 vscode team 이 작업하지 않으려 한것들에 대한 투표를 진행한다. upvote 가 20개 이상이면 이것은 Backlog 로 옮겨진다.
    • important issue 에 대한 정의를 적어놓고, 부합되면 important label 을 붙인다.
    • 도움을 요청하는 label 도 있다.
      • investigation-wanted 는 재현을 할 수 없거나, 세팅등이 너무 오래걸려서 재현할 시간이 없거나 하면 이 label 을 사용한다.
      • help-wanted 는 community 에 도움을 요청하기 위한 용도
    • bug 를 wont-fix label 을 붙이고 close 하는 경우
      • 비용대비 효용이 없을때 wont-fix 를 사용한다.
    • upstream issue
      • 이슈가 package 나 library 에 연관돼서 생기고, 이것만 고쳐서는 안되는 이슈인 경우 `upstream` 을 붙인다. 그래서 package 나 library 가 이슈를 인지해서 이것을 issue 로 처리하면 close 한다. 또는 이것이 고쳐질 가능성이 없어도 close 한다.
  • https://github.com/microsoft/vscode/labels
  • https://github.com/microsoft/vscode/milestones
    • `On Deck` milestone: 다가올 milestone 에 고려해야 할 이슈들을 모아놓는다. vscode 에서는 On Deck 의 issue 개수를 항상 100개 이하로 관리하려 한다.
    • `Backlog` milstone : 아직 수정을 고려하고 있지 않은 issue 들을 모아놓는다.
    • 각 iteration 마다 milestone 을 만들어서 사용한다.
  • https://github.com/microsoft/vscode/projects
  • https://github.com/microsoft/vscode/wiki/Roadmap
    • Roadmap wiki 를 계속해서 update 해 나간다. 그래서 그 해에 골들을 세운다.
    • 최소 1달에 1번 roadmap 을 review 하고 update 한다.
  • https://github.com/microsoft/vscode/wiki/Development-Process
    • 매 iteration 전에, 이번 iteration 에서 어떤 기능에 우선순위를 둘 것인지를 정하고, 어떤 버그를 고칠 것인지 정한다.
    • 고치려고 하는 bug 에는 milestone 을 붙인다.
    • 새로운 기능에는 issue 를 새로 만든다.
      • 그리고 plan-item 이라는 label 을 붙인다.
      • plan-item 에는 자세한 checklist 를 넣게 된다.(예시)
    • 이렇게 bug, plan-item, feature-request 에 milestone 을 할당한다.
    • iteration
      • 첫주차 : 이전 iteration의 결과를 지켜보고, critical issue 들을 해결한다.
      • 2주차: 개발
      • 3주차: 개발
      • 4주차: 마무리
        • 기능테스트등을 하고, 문서를 update 한다.
        • insider channel 에서 가능한 pre-release 를 만든다. 그리고 user 에게 test 를 요청한다.
        • pre-release 에 아무런 변경이 없고 24시간이 지나면, release 를 게시한다. 때로는 주중에 게시하기도 한다.
    • iteration milestone 이 할당된 후에 우선순위와 관련된 label 을 추가한다.
      • importatant 가 가장 먼저 해결된다.
    • iteration plan : iteration 마다 iteration plan 이라는 이슈를 하나 만들고, 그 안에서 issue 들을 모아서 checklist 로 관리한다. 각각의 item 들은 하나의 issue 이다. 이것은 관리자가 처리해야 하는 issue 같은 느낌이다.
  • Issue Tracking · microsoft/vscode Wiki · GitHub
    • 여러 repository 에 대한 label 을 일괄적으로 관리하기 위해Github Label Manager를 사용한다.

See Also

  1. gatsby: https://www.gatsbyjs.org/contributing/triaging-github-issues/
  2. gitlab: https://docs.gitlab.com/ee/development/contributing/issue_workflow.html
  3. 쿠…sal: [컴][툴] github 와 slack 의 연동
  4. github 용 extension: GitHub - stefanbuck/awesome-browser-extensions-for-github: A collection of awesome browser extensions for GitHub.
  5. https://github.com/super-greate-org/issues/issues/5
  6. https://github.com/microsoft/vscode-python/issues/19299 : vscode python extension 의 release 절차를 확인할 수 있다.
  7. GitHub - microsoft/vscode-github-issue-notebooks: GitHub Issues Notebooks for VS Code : vscode 에서 extension 을 사용해서, github issue notebooks 를 사용할 수 있다.
  8. Searching issues and pull requests - GitHub Docs : github issue 와 pull request 의 검색 방법

[컴] Windows 에서 여러개의 git credential 을 사용하는 방법

useHttpPath option / 여러개의 계정 사용 방법 / 윈도우10 윈도우에서  / 어떻게 여러개의 git 계정을 사용하는 가

Windows 에서 여러개의 git credential 을 사용하는 방법

credential.github.com.useHttpPath

기본적으로 Git 이 path 를 고려하지 않는데,
https://example.com/foo.git 에서 사용한 credential 을 https://example.com/bar.git 에서도 사용하게 된다.
이것을 구분하게 사용하게 하려면 이 옵션을 on 하면 된다.
git config --global credential.github.com.useHttpPath true

기존의 git credential 삭제하기

이것이 필요한지는 모르지만, 일단 필자는 기본적으로 이것을 지우고 위의 command 를 실행했다.
제어판 --> 자격 증명 관리자 --> 일반 자격 증명(general credentials) --> git 관련 credential 삭제

Reference

  1. useHttpPath option, Git - gitcredentials Documentation


[컴] local 에서 git init 후 remote git repository 연결

git 에 연결 / 원격 repository 에 연결하는 방법 / command line 연결 / git 사용법 /git 연결 / git init

local 에서 git init 후 remote git repository 연결

local 에 empty git repository 생성

C:\ptt>git init
Initialized empty Git repository in C:/ptt/.git/

remote(origin) git repository 를 연결

C:\ptt>git remote add origin https://github.com/mygitid/pytorchtest
...
C:\ptt>git flow init
...

origin 에 new branch 반영

# origin(remote) 에 develop branch 에 대한 upstream reference 를 만들어라.
C:\ptt>git push --set-upstream origin develop

See Also

  1. [컴] git-lfs 사용하기
  2. [컴] git flow 자료들
  3. [컴] git rebase 설명
  4. [컴][툴] GitLab Flow



[컴] VSCode 를 이용해서 WSL 사용하기

vscode 로 원격으로 작업하기 / vscode 로 리눅스 환경사용하기 / vscode 로 wsl 작업 / 윈도우에서 리눅스 작업하기 / vscode

Update 2021-06

remote container 를 제공한다. 이제는 docker container를 하나만들고, 그 안에서 작업하는 것도 가능하게 됐다.

VSCode 를 이용해서 WSL 사용하기

순서

  1. WSL 의 설치가 필요하다. 여기를 참고하자.
  2. Windows 에 VSCode 설치
    • 하나 주의할 것은 VSCodium 은 지원하지 않는다.
  3. Remote Development Extension 을 설치

그림1: 구성도

Remote-WSL: New Window

wsl 에 source codes 를 넣고, vscode 에서 열어보자. 아래 2개의 command 중 하나를 이용하면 된다.

  • Remote-WSL: New Window
  • Remote-WSL: New Window using Distro

Remote-WSL: New Window using Distro 를 실행한 이후에 약 8분정도 기다렸다.


그림2-1

그림2-2: 열고 있는 중


그림2-3: 최종

Open Folder

하단에 WSL:Ubuntu-16.04가 보이면 이제, folder 를 열자. wsl 의 filesystem 을 navigate 하게 된다.
  • File > Open Folder

\\wsl$ vs Remote-SSH

그냥 vscode 에서 네트워크 file path 를 입력해서 열 수도 있다. 하지만 이 경우는 환경이 windows 이다. 그래서 만약 terminal 을 vscode 내에서 열면, cmd.exe 가 보여진다.

하지만 Remote-SSH 를 이용하면, terminal 도 bash 로 변경되고, 만약 build script 등을 수행해도 bash 상태로 수행된다. "그림1" 을 보면 이해가 쉬울 듯 하다.

아직 불완전

아직 여러가지 면에서 문제가 있는듯 하다. "알려진 이슈"는 아래 링크를 참고하자.

개인적인 생각

이것의 이점은 wsl 의 이점과 비슷하다.
  • application 이 windows 에서 실행되지 않거나
  • windows 에서 개발환경을 구축할 수 없는 경우(compile 이 안되는등)
  • linux 와 windows 에서 다른 coding을 줘야 하는 경우(systemcall 등)
  • 여러 곳에서 windows vscode 를 통해 하나의 source 를 접속해서 사용하는 경우
    • 예를 들면, 개인서버 하나에 repository를 유지하고, 어디서든 접근을 해서 coding 을 할 수도 있을 것이다.
    • 이것도, 차라리 vm 을 띄우는 것이 더 나을듯도 하다.
에 사용을 고려해 볼 수 있을 듯 하다. 기본적으로 windows 에서 구축할 수 있는 환경이고, windows 에 더 익숙한 user 라면, 굳이 wsl 을 이용해서 vscode 를 사용할 필요는 없어보인다.

References

  1. Developing in the Windows Subsystem for Linux with Visual Studio Code


[컴] windows10 에서 최대 절전모드에서 깨어나지 않을때

hibernate 최대 절전 모드 / 컴퓨터 안켜질 때 / 왜 안켜지지 / 윈도우 10  /


windows10 에서 최대 절전모드에서 깨어나지 않을때

일단 현재 깨어나지 않는 것은 어쩔 수 없다. 다시 강제로 재부팅을 하자.(전원 버튼 사용)

전원 관리 옵션 변경

  • 제어판 --> 전원 옵션 --> 고급 전원 관리 옵션 설정 변경 
  • --> 절전 --> 절전모드 해제 타이머 허용 
  • --> 설정 : '사용 안 함' 으로 변경 --> 
  • --> USB 설정 --> USB 선택적 절전 모드 설정 --> 설정: '사용 안 함'


절전모드 해제장치 확인

아래 command 로 절전모드 해제하는 장치들로 어떤 장치를 인식하는지를 확인할 수 있다.
cmd 를 열고

powercfg -devicequery wake_armed


만약 해제장치를 추가하려면

  1. 장치관리자
  2. --> 원하는 장치 선택
  3. --> 오른쪽 마우스 버튼(context menu) --> 속성
  4. --> 전원관리 tab
  5. --> "이 장치를 사용하여 컴퓨터의 대기 보드를 종료할 수 있음" 을 체크



최대절전모드 on/off

참고로, 최대절전모드를 끄면, hiberfil.sys 이 지워진다.
powercfg /h off

powercfg /h on


See Also


  1. 윈도우즈에서 '절전모드' / '최대 절전 모드' 바로가기 만들기




[컴] Windows Subsystem Linux (WSL) 설치

윈도우에서 리눅스 / 리눅서 서브시스템 / 서브 시스템 리눅스 설치 방법 / sshd

Windows Subsystem Linux (WSL) 설치

최신 version 의 wsl 설치

WSL 설치

설치 후 재부팅을 해야 한다.

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Linux distro 다운받기 및 설치

설치하기전에 wsl2 를 사용할 생각이라면, 아래 command 를 먼저 실행하자.

wsl --set-default-version 2

linux 배포판을 다운로드 한다. 가능한 목록은 여기서 확인할 수 있다.

최신 Ubuntu 는 Microsoft Store 를 이용하면 된다.(참고) store 에서는 다운로드 후 '실행' 버튼을 누르면 설치가 시작 된다.

# 다운로드 후 설치
Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1604 -OutFile Ubuntu.appx -UseBasicParsing;Add-AppxPackage .\Ubuntu.appx
Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1604 -OutFile Ubuntu.appx -UseBasicParsing
Add-AppxPackage .\Ubuntu.appx

삭제 방법

wsl -l -v
wsl --unregister <DistributionName>

app package 삭제

PS C:\Users\user> Get-AppxPackage *ubuntu* | Remove-AppxPackage

시작메뉴에서 Ubuntu 16.04 실행

시작메뉴로 가면, 방금 설치된 Ubuntu 에 대한 '바로가기'가 보인다. click 하면 약간의 설치를 더 하고, 바로 계정을 생성하는 화면을 보여준다.

이제 WSL 에서 windows command 를 실행할 수 있고, cmd 에서도 WSL command 를 실행할 수 있다.

wsl 에서 cmd.exe 를 치면, cmd 로 넘어가고, cmd 에서 wsl(또는 bash) 을 치면 wsl 로 넘어가게 된다.

$ cmd.exe
c:\> wsl
c:\> bash

ubuntu 에 기본적으로 python 이 깔려있어서, 아래처럼 하면 static server 를 띄울 수 있다.

$  python3 -m http.server

이렇게 하고나서, web browser 로 http://localhost:8000 에 접근하면 화면이 보인다.

windows 에서 wsl 파일 접근

\\wsl$를 사용해서 접근할 수 있다. (참고 : windows 에서 path 를 copy 한 path 를 wsl 에서 사용하기 위한 bash function)

실제로 linux file 에 대한 windows path 는 c:\Users\USERNAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs 이다. 이곳을 실제로 수정해선 안된다.

openssl server 설치

기본적으로 wsl 을 설치하면 openssl-server 가 설치되어 있다. 하지만 아래 글에서 그것이 완전한 package 가 아니라서, 지우고 다시 설치하라고 한다.

$sudo apt-get remove openssl-server

$sudo apt-get install openssl-server

이제 /etc/ssh/sshd_config 를 수정해주자. 위 글을 참고했다.

####################################################
# added or modified
AllowUsers userid

# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication yes

windows 가 실행될 때 자동으로 실행하도록 하기

A step by step tutorial on how to automatically start ssh server on boot on the Windows Subsystem for Linux running Ubuntu 18.04 · GitHub

그냥 windows 용 openssl 을 설치하는 것이 훨씬 나을 듯 하다.

VSCode 와 WSL을 이용한 개발

WSL2 vs WSL1

UX Changes between WSL 1 and WSL 2 | Microsoft Docs

WSL2 는 vm 으로 동작한다.

VHD(Virtual Hardware Disk) 를 사용한다. 최초 max size 는 256GB 이다. 넘어가면 수동으로 늘려줄 수 있다.

file system 으로 ext4 를 사용한다고 한다.

ip address 를 하나 할당 받게 된다.

Linux root file system 에 있는 파일에 대한 접근속도가 향상됐다.(cross OS 에 대한 이야기가 아니라, WSL내에서 WSL파일을 접근할 때를 이야기하는 듯 하다.)

WSL 2 가 가벼운 utility VM 을 Linux kernel 위에서 사용한다. 

  • 이 utility VM 이 "file system의 성능향상"과 "완전한 system call 호환"을 제공한다.
  • 이 utility VM 이  작은 메모리 흔적(footprint)을 갖는다.
  • 시작할 때 Virtual Address backed memory 를 할당할 것이다.

현재(2020-05-01)는 cross OS file speed 는 WSL1 보다 나쁘다.

hyper-v 를 사용한다.

그래서 vmbox 등의 다른 vt-x 를 사용하는 vm 과 사용하기 쉽지 않다.(windows 에서 hypervisor interface 를 제공하긴한다. 참고

virtual box 6.0 이상은 wsl2 와 같이 사용할 수 있긴 하지만, 아직 문제가 많아 보인다.

Update to WSL2

PS C:\Users\user> wsl --set-default-version 2
오류: 0x1bc
WSL 2와의 주요 차이점에 대한 자세한 내용은 https://aka.ms/wsl2를 참조하세요
PS C:\Users\user>

wsl1 에서 설치한 distro 는 자동으로 version 2 로 변경되지 않는다. 그래서 다시 설치했다.

install path 변경

See Also

  1. Learn About Windows Console & Windows Subsystem For Linux (WSL) | Windows Command Line
  2. How to Add Ubuntu Tab to Windows Terminal in Windows 10 : Windows Terminal 에 bash 추가하는 방법, 참고로, 가만히 있어도 자동으로 생성된다.
  3. WSL 에서 VM disk 위치
  4. Manual installation steps for older versions of WSL | Microsoft Learn : Error: 0x800701bc 인 경우 kernel update 로 해결이 될 수도 있다.(다른참고, Error: 0x800701bc)

Reference

  1. Get started with the Windows Subsystem for Linux - Learn | Microsoft Docs