2021-11-30

레노버 노트북 우클릭을 두손가락 탭으로

출처: https://www.clien.net/service/board/lecture/15376896

 

레노버 노트북은 시냅틱 드라이버를 사용하는데, 희안하게도 '두 손가락으로 터치'했을 때 우클릭으로 작동하도록 만드는 옵션을 아무리 찾아도 찾을 수가 없었다. 그래서 검색하다가 나의 문제도 해결한 방법이 있어 공유해두려 한다.

 

1. Win + S 키조합으로 검색창을 연 뒤, regedit 을 입력해 레지스트리 편집기를 연다.

2. HKEY_LOCAL_MACHINE\SOFTWARE\Synaptics\SynTP\Win10 경로를 찾아가서,
Win10
폴더 아래에 있는 2FingerTabAction의 값을 0에서 2로 바꿔준다.

3. 컴퓨터를 재부팅한다.

 

위의 과정만으로도 이미 목적은 달성했으나, 혹시 위의 조치로도 해결되지 않았다면 아래의 과정을 시도해볼 수 있다.

 

1. HKEY_CURRENT_USER\SOFTWARE\Synaptics\SynTP 경로로 찾아가서,
SynTP
우클릭 후 키 생성으로 TouchPadPS2 폴더를 만들고,
그 폴더 안에 우클릭해 DWORD 값을 값 이름 2FingerTabAction, 값 데이터를 2로 만들어준다.

2. 같은 방식으로 SynTPWin10 키 생성 후, DWORD 값을 이름 2FingerTabAction 데이터 2로 만들어준다.

3. 재부팅한다.

 


2021-11-24

VSCode “Visual Studio Code is unable to watch for file changes in this large workspace.” 알림이 뜰 때


l  원인

VSCode에서 위와 같은 알림이 떴다는 것은 프로젝트 내의 파일 개수가 VSCode의 파일 감시자가 핸들링 할 수 있는 파일 개수만큼 많다는 것을 의미한다. 플랫폼의 리미트를 조정하기 전에 잠재적으로 개수가 많아질 수 밖에 없는 폴더들(예를 들어 파이썬의 .venv)files.watcherExclude 설정을 통해 추가시킬 수 있다. 현재 핸들링 가능한 파일 개수의 최대 값은 아래의 명령어로 확인할 수 있다.

cat /proc/sys/fs/inotify/max_user_watches

 

l  해결 방법 1: files.watcherExclude에 추가시키기

워크스페이스의 특정 디렉토리를 VSCode 파일 감시 영역에서 제외한다. 아래의 코드를 setting에 추가하면 된다.

"files.watcherExclude": {

    "**/.git/objects/**": true,

    "**/.git/subtree-cache/**": true,

    "**/node_modules/*/**": true

  }

 

l  해결 방법 2: max_user_watches limit 증가시키기

/etc/sysctl.conf 파일을 수정해서 최대값을 변경하는 방법이다. 아래의 라인을 추가하면 된다.

fs.inotify.max_user_watches=524288

감시할 수 있는 파일 개수의 최대값은 524,288개로, 1개의 파일이 1080 bytes 정도의 메모리를 차지하므로, 위와 같이 설정할 시 최대 540 MiB의 메모리를 차지할 수 있다.

 

 

 

출처: https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc


2021-11-02

파이썬 리스트 원하는 크기대로 세로로 자르기

l = [i for i in range(1, 11)]

s = 3

tt = [l[i:len(l):s] for i in range(s)]

--> [[1, 4, 7, 10], [2, 5, 8], [3, 6, 9]]


리스트인 l에 1부터 10까지의 숫자를 넣었다.

몇 개의 덩어리로 나눌 것인지를 s로 지정.



2021-10-20

Clinical trial endpoints: 당신이 알아야 할 4가지 용어

1.     Overall Survival (OS)

Overall survival은 특정 치료 요법을 받는 환자가 대조군(위약) 투여자에 비해 얼마나 오래 생존했는지를 나타낸다. 임상 시험에서 overall survival이 길어졌다는 것은, 해당 약물이 암 환자의 생명을 연장시킨다는 것을 의미한다. Overall survival은 다른 clinical trial endpoint에 비해 더 많은 환자와 더 긴 추적 관찰이 필요하기 때문에, 신뢰성과 정확도가 높은 endpoint이다.

 

2.     Progression-Free Survival (PFS)

질병이 악화되지 않고 얼마나 오래 생존했는지를 나타낸다. Cancer drugs의 효과를 측정하기 위한 또 다른 중요한 매개변수이기도 한 PFS는 일반적으론 위의 overall survival 데이터보다 더 일찍 산출할 수 있으며, 질병통제 및 안정화의 지표로 간주된다.

 

3.     Overall Response Rate (ORR)

Overall response rate는 전체 환자 수 중에서 종양이 약물에 의해 파괴되었거나 혹은 현저하게 감소한 것이 확인된 환자의 비율이다. Overall response rate는 특정 기간 동안에 종양을 검출 가능한 증거가 없는완전 반응(complete response), ‘종양 크기가 감소한부분 반응(partial response)의 합으로 정의한다. Overall response rate가 개선되었다(높아졌다)는 것은 약물의 효과가 있다는 증거가 된다.

 

4.     Duration of Response (DoR)

암이 자라거나 퍼지지 않고 종양이 치료에 계속 반응하는 시간의 길이를 의미한다. ‘Durable’이라는 형용사가 오래가는, 튼튼한, 영속성 있는이란 뜻으로 쓰인다는 것을 상상하면 이해하기 쉽다. 암의 진행(progression)을 지연시키고, 암의 생장(growing)과 전파(spreading; metastasis가 아님에 주의)를 억제하는 기간이 길어질수록 약물의 DoR이 높아진다.

 

 

참고문헌

-       https://www.astrazeneca-us.com/media/astrazeneca-us-blog/2018/clinical-trial-endpoints-in-cancer-research-four-terms-you-should-know-09242018.html#!

2021-08-24

G-Technology G-Drive Windows 10 드라이브 표시가 안 될 때 해결 방법


0.     증상

G-TechnologyG-Drive가 윈도우10에 연결해도 내 컴퓨터에서 나타나지 않는 현상.


1.     시작 버튼 우클릭 - 컴퓨터 관리 열기

글쓴이의 컴퓨터 기본 언어가 영어로 되어 있어서 정확한 명칭이 아닐 수 있습니다. 명칭보다는 과정을 따라가시기 바랍니다.

 

  


2.     저장소 디스크 관리자 클릭

혹은 시작 버튼 우클릭 디스크 관리자로 바로 접근할 수도 있다.

이 과정은 시간이 좀 걸리니 느긋하게 기다려야 한다.

 


3.     디스크 번호 기억하기

이 과정은 매우매우 중요하다. 여기에서 기억하는 디스크 번호를 포맷할 것이기 때문에 혼동하지 않도록 주의한다.

위의 사진에서는 디스크 번호가 1번이다.

  


4.     CMD 실행

시작 버튼을 누르고 키보드로 ‘cmd’를 누르면 검색되는 앱이 나타난다.

관리자 권한으로 실행시킨다.

 

 

5.     diskpart 명령어

diskpart

select disk [위에서 지정한 디스크 번호]

clean

exit

를 차례대로 입력한다.

 

 

6.     디스크 관리자에서 디스크 포맷

위의 팝업이 나타나지 않는다면 디스크 관리자를 껐다가 다시 들어오면 된다.

OK 버튼을 눌러서 진행

 

디스크를 우클릭해서 새 볼륨을 만들어준다.

 

사용할 볼륨의 사이즈를 지정한다.

 

드라이브 알파벳을 정해주었다. 위 사진은 순서대로 배정된 D드라이브.

 

볼륨 라벨을 원하는 이름으로 지어주었다.

 

포맷이 완료되면 정상적으로 설정된 것을 볼 수 있다.

 


7.     출처

https://www.youtube.com/watch?v=V8LPcjyBAxw

 

2021-07-29

Heptad repeat

 Heptad repeat



  1. 정의


헵타드 반복구간(Heptad repeat)은 구조적 모티프(structural motif)의 일종으로, 7개의 아미노산 잔기가 반복해서 나타나는 패턴을 일컫는다.



  1. 모양새


헵타드 반복구간은 아래와 같이 7개의 염기 서열이 반복적으로 나타나는 구조이다.


H P P H C P C

a b c d e f g


각각의 염기 서열이 나타내는 아미노산 잔기는 다음과 같다.


H: 소수성(hydrophobic) 잔기

P: 극성(polar), 친수성(hydrophilic) 잔기

C: 전하를 띤(charged) 잔기


7개의 위치를 소문자 a부터 g를 이용해서 표기하는 것이 일반적이라고 한다.



  1. 이러한 구조가 왜 중요한가


이러한 모티프들은 대다수의 coiled coils에서 기본적으로 나타나는 양상을 보인다. 특히 류신 지퍼(leucine zippers)와 같은 구조에서는 헵타드 반복구간의 d 위치에 류신(leucine)이 대부분을 차지할 정도로 많이 등장한다. 

Coiled coil은 alpha-helices 처럼 꼬인 구조를 가진 아미노산 서열이 다른 alpha-helice와 다시 더 큰 축으로 꼬인 모습을 일컫는다. 이 구조는 gene expression의 조절에서 매우 중요한 생물학적 기능을 담당한다.


2021-06-28

WinSCP 삭제 취소


winscp 삭제 취소

 

0.     이미 지웠다면 되돌릴 수 없다.

안타깝게도 이미 파일을 delete 했다면 이것을 되돌릴 수 있는 방법은 없다. 리눅스에서 rm 명령어를 신중하게 사용하라는 격언이 있는 것처럼, WinSCP에서도 무지성으로 Delete 키를 눌렀다간 피를 볼 수 있다. 그러므로 아래의 과정을 통해 이러한 실수를 하더라도 되돌릴 수 있는 방안을 마련해두는 것이 좋을 것 같다.

 

1.     WinSCP의 휴지통 기능을 활성화하기

WinSCP는 원격 휴지통 기능이 기본적으로 비활성화 되어있다. 이것을 활성화시키려면 다음의 과정을 수행하면 된다.

 

이미 WinSCP를 실행 중이라면 Session – Sites – Site Manager… 를 클릭한다.

 

작업 공간을 클릭하고 Edit – Advanced… 를 클릭한다.

 

Environment – Recycle bin 에서 두 옵션에 모두 체크해준다.

첫번째 체크는 삭제되는 파일을 휴지통에 보관하는 것이고, 두번째 체크는 덮어쓰여진 파일을 휴지통에 보관하는 옵션이다.

휴지통의 경로는 알아두면 도움이 된다.

 

 

2021-05-06

‘숫자 of 숫자’, ‘숫자 in 숫자’의 쓰임새

 

2 in 10 prisoners

“10명 중에 2명 꼴로

총 몇 명의 수감자가 있는지 모른다. 그러나 무작위로 10명을 골랐을 때 그 중 2명을 의미한다. , 20%라는 뜻.

2 of those 10 prisoners

10명 중 특정 두 명

수감자의 수가 총 10명이다. 그 중에서 특정한 두 수감자를 칭할 때의 느낌을 준다.

2 of the 10 prisoners

“10명의 수감자 중에 랜덤 2

수감자가 총 10명이다. 그러나 특정 수감자를 지칭하는 것이 아니라 단지 10명 중에 아무나 두 명을 의미한다.

2 of 10 prisoners

틀린 표현이다. ‘the’가 없으면 어색한 문장이다.

 



2021-02-09

importlib.metadata.PackageNotFoundError: pdb4amber 에러 조치

  

 

1       원인 및 상황

Amber는 분자동역학 시뮬레이션에서 자주 사용되는 소프트웨어 패키지이다. 그런데 요번에 Amber 20 버전으로 업데이트했는데 발생한 버그가 있다. 그것은 바로 pdb4amber의 임포트 에러.

원인을 정확히 이해하진 못했지만, 아마도 소스코드의 문제로 인해 컴파일할 때 pdb4amber의 경로를 제대로 잡아주지 못한 것 같다.

 

2       해결 방법

해당 이슈로 고생하신 분들이 남긴 깃허브 이슈트래커를 참조하였다. 이 글에서 제시된 해결책은 다음과 같다:

l  pdb4amberegg-info 및 패키지 위치 조정하기
mv /opt/amber/lib/python3.8/site-packages/pdb4amber-1.7.dev0-py3.8.egg/EGG-INFO /opt/amber/lib/python3.8/site-packages/pdb4amber-1.7.dev0-py3.8.egg-info
mv /opt/amber/lib/python3.8/site-packages/pdb4amber-1.7.dev0-py3.8.egg/pdb4amber /opt/amber/lib/python3.8/site-packages/pdb4amber

l  setuptools 버전을 다운그레이드하기
그런데 이 방법은 run_cmake로 설치했다면 실행하지 않아도 된다. Amber 메일링 리스트에 의하면 run_cmake로 설치할 경우엔 업데이트가 자동으로 진행되어 지금 이 이슈가 발생하지 않을 것이기 때문이다. 다만, 사용자가 자체적인 파이썬을 가지고 있는 경우엔 여전히 문제가 발생할 수 있다. 필자의 경우도 $AMBERHOME/update_amber 를 실행시켰을 때 /usr/bin/env: ‘python’: No such file or directory 에러를 뱉어냈다.
amber.python -m pip install setuptools=47.3.1

l  $PYTHONPATH 변수에 pdb4amber 패키지만 따로 추가하기 (해결)
Amber
를 설치하고 나서 source amber.sh 등을 실행해줄텐데, 해당 파일을 source 하기 전과 후에 각각 echo $PYTHONPATH 를 비교해보면 쉽게 알 수 있다(아래의 사진을 참고하면 좋다).
export PYTHONPATH=$PYTHONPATH:$AMBERHOME/lib/python3.8/site-packages/pdb4amber-1.7.dev0-py3.8.egg/



2021-01-26

MSS 사용 중 에러 mss.exception.ScreenShotError: XGetImage() failed


1       원인 및 상황

원격으로 vnc server를 켜고 :0 display에서 작업을 하고 있었기에 혹시 원격에서만 나타나는 현상일까?’싶어서 부팅 시 run level을 여러 단계로 조작해보며 시도해보기도 하고 직접 모니터를 연결해 시도해보았지만 결과는 똑같았다. 문제는 여기에 있지 않았던 셈.

이라고 원인을 잘못 짚고 있었다. 나흘이 넘는 시간 동안에 온 웹사이트를 다 뒤지고 다니다가사사롭게 넘겼던 에서 얻은 조언을 응용하다가 결국 원인을 찾아내고야 말았다. 원인은 화면의 크기보다 더 큰 사이즈를 grab하려 할 때 발생한 에러이다.

현재 실행되고 있는 데스크톱의 display resolution이 철저하게 1920x1080이라고 믿고 있었다. 그런데 으로 얻은 이미지 파일의 크기는 1900x1200이었다. 설마 싶어서 grab()을 할 때 잘라낼 영역을 1000x1000으로 설정해보았더니 너무나도 잘 작동하는 것이었다.

 

2       해결 방법

를 따라 실행하되, 드시 거라 를 입력해보길 바란다. 예를 들자면
sct.grab({"top": 10, "left": 20, "width": 100, "height": 200})
와 같은 코드를 실행해본다.

만약 위의 방법이 통하지 않는다면 니터 을 시도해보거나, x11 을 고려해보는 것도 좋다.

 

3       잡설

아래는 에러를 해결해가며 알게 된 소소한(?) 내용을 함께 적어둔 것이다..

 

Ubuntu 20.04 LTS 버전에서 파이썬의 mss 라이브러리가 작동하지 않는 상태이다. 이에 관한 문제를 스택오버로우에서 확인할 수 있었고, 이에 관한 해결책을 따라해보며 기록해보았다.

이 원인은 아마도 mssxWayland 대신에 x11을 사용하고 있는 것 같다. xWayland는 페도라의 기본값이고, mss는 화면을 캡쳐하는 데에 x11을 사용하는 것 같다고 한다.

그래서 이를 해결하기 위해 링크에서 제시하는 방법을 따라보았다. sudo nano /etc/gdm3/custom.conf 를 연다. 참고로 우분투 20.04 버전에서는 gdm 대신 gdm3로 들어가야 한다.

#WaylandEnable=false

WaylandEnable=false
로 주석 해제한 다음

[daemon] 섹션에 아래의 문장을 추가했다.

DefaultSession=gnome-xorg.desktop

저장.

 

그런데 이 방법은 앞선 상황에서 전혀 빛을 보지 못했다고 전해진다.

 

nvcc와 nvidia-smi 명령어가 보여주는 CUDA 버전이 다를 때


1       말하자면 아래와 같은 희안한 상황


nvcc --version 명령어는 10.1을 보여주는 데에 반해, nvidia-smi11.2를 보여주고 있는 상황.

 

2       원인

이는 CUDA가 두 개의 기본 API를 가지고 있기 때문이다. CUDA는 런타임 API와 드라이버 API를 가지고 있는데, 각각의 버전이 서로 상이할 수 있다.

예를 들어서 리눅스의 libcuda.so같은 드라이버 API에 필수적인 것들은 GPU driver installer에 의해 설치된다. 한편 libcudart.sonvcc같은 런타임 API들은 CUDA toolkit installer에 의해 설치된다.

항상 모든 경우에 있어서 driver API 버전과 runtime API 버전이 같아야만 하는 것은 아니다. nvidia-smi 명령어는 GPU driver installer에 의해 설치된 정보를 반환하며, CUDA toolkit installer에 의해 설치된 정보는 일체 반환하지 않는다.

이보다 더 상세한 내용은 로우 게시물 및 NVIDIA 에서 확인할 수 있다.

  

3       영향은

nvidia-smincvv --version보다 같거나 더 높은 CUDA 버전을 표시하는 것은 대수롭게 여기지 않아도 된다. 이는 CUDA에 정의된 호환성 경로 때문이다. 예를 들어서 위의 사진처럼 nvidia-smiCUDA 11.2를 보여주고 있고, nvcc --versionCUDA 10.1을 표시하고 있더라도 더 최신의 드라이버가 구형의 CUDA toolkit runtime API를 지원하기 때문에 문제가 되지 않는다.

다만 Command ‘nvcc’ not found가 출력되는 경우엔 CUDA 설치가 정상적으로 이루어지지 않은 것이므로 CUDA 11 linux install guide를 적절히 수행하여 해결해야 한다.

 

2021-01-22

파이썬 import tkinter 에러 ModuleNotFoundError: No module named '_tkinter'


1       원인

이번엔 사용 환경이 독특하다. 시스템 기본 파이썬이 존재하지만, 별도로 파이썬 소스 코드로부터 컴파일해서 파이썬 바이너리 파일을 생성한 경우에 import tkinter 시 에러가 발생한다. tkinter를 사용하지 않더라도 Matplotlib이나 OpenCV 등 많은 라이브러리에서 tkinter를 임포트하기 때문에, 해당 라이브러리를 사용하다가도 같은 문제를 만나게 될 수 있다.

시스템 기본 파이썬은 /usr/bin/python3 에 위치하고 있으며, 컴파일한 파이썬은 임의의 디렉토리(예를 들어서 ~/p/Python-3.9.1/ )에 위치하고 있다. 물론 컴파일 후에 sudo make install을 통해 /usr/local/bin/python3 으로 복사될 것이다. 그러므로 make install을 하기 전에 컴파일한 디렉토리에서 ./python 으로 실행을 시켜보고, 파이썬 인터프리터가 나타나면 import tkinter를 해서 제대로 컴파일이 되었는지를 확인하면 된다.

시스템 기본 파이썬을 실행시킨 후 인터프리터에 import tkinter를 입력하면 에러 없이 정상적으로 실행되지만, 컴파일한 파이썬에서는 제목과 같은 ModuleNotFoundError가 발생한다. 이는 컴파일 과정에서 tkinter가 포함되지 않은 것 같다.

 

2       사용 환경

와 동일한 환경이다. 해당 글을 참조하는 것으로 대체하였다.

 

3       해결 방법

(for deb)
sudo apt-get install python-tk python3-tk tk-dev

(for arch/manjaro)
sudo pacman -S tk

파이썬을 소스 코드로부터 컴파일 하기 전에 필요한 패키지가 있다. python-tkpython3-tk는 많이 언급이 되었는데 tk-dev는 언급이 별로 없었다. 특히 마지막 패키지를 설치해주어야 컴파일 시 파이썬이 tk를 정상적으로 포함하게 된다.

 

파이썬 pip install 에러 Could not fetch URL. There was a problem confirming the ssl certificate



1       원인

사용하고 있는 환경에서 SSL 모듈이 사용 불가능한 경우이다. 에러 메시지에서도 알 수 있듯이 SSLError라고 적혀 있다. 직접 컴파일한 파이썬을 사용하는 경우에는 파이썬을 빌드할 때 해당 컴퓨터에 SSL 모듈이 설치 되어있는지 꼭 확인하여야 한다.

 

 

2       사용 환경

l  OS: Ubuntu 20.04 LTS

l  Python 3.8.5가 기본적으로 설치되어 있는 상태에서 를 따라 수동으로 3.9.1을 설치한 상태
(
하지만 중간에 sudo apt install ~, ~, ~ 등을 생략하고 진행하였음. 문제의 원인)

l  직접 컴파일을 하는 경우엔 /usr/local/bin에 파이썬 바이너리 파일이 생성된다.
(
하지만 sudo make altinstall 대신에 install을 해버렸다. 문제의 원인 2)

l  PyCharm에서 프로젝트를 생성할 때 해당 바이너리 파일을 base interpreter로 설정하였다.

l  PyCharmTerminal에서 pip install ~를 입력하면 볼 수 있는 에러가 위의 에러이다.

 

 

3       해결 방법

sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev

위의 명령어로 파이썬 빌드에 필요한 패키지를 설치해준 다음에, 파이썬을 다시 컴파일하고 make install하면 문제가 해결된다. 물론 PyCharm의 프로젝트도 새로 생성하는 수고로움이 있었지만, 그래도 문제는 해결되었다.

위의 사용 환경에서 altinstall 대신에 install을 하면 시스템의 기본 python3 바이너리 파일을 덮어쓰게 된다! 여러 환경을 독립적으로 운용하고자 한다면 반드시 altinstall을 하도록 하자.

 

 

2021-01-21

에러 - gcc versions later than 8 are not supported in cmake

 

0.     선요약 및 원인

(20204)을 따라 문제를 해결하였다. 해당 게시물의 내용을 그대로 가져와 번역하였다.

문제는 해당 소프트웨어를 컴파일하기 위한 gcc의 버전이 너무 높다는 것이었다. 우분투 20.04 LTS 버전에서 현재 gcc를 설치하면 기본적으로 gcc 9를 설치해버린다. 이럴 때엔 gcc 하위 버전을 설치하고 컴파일하는 동안에만 해당 gcc로 업데이트해주면 된다.

이 과정은 Ubuntu 20.04 LTS Focal Fossa 버전에서 실행되었다. 하지만 다른 버전의 리눅스에서도 충분히 따라할 가치가 있으므로 참고하면 좋다.

 

1.     단계

여러 개의 C/C++ 컴파일러 버전을 설치해준다.

sudo apt install build-essential
sudo apt -y install gcc-7 g++-7 gcc-8 g++-8 gcc-9 g++-9

 

2.     단계

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 7
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 8
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 9
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 9

여러 버전의 GCCG++ 컴파일러를 사용할 수 있도록 update-alternatives 툴에 리스트를 추가한다.

 

3.     단계

sudo update-alternatives --config gcc

위의 명령어를 통해 사용 가능한 C/C++ 컴파일러를 확인한다. 반응형 선택지가 나오면 0~3 중에서 원하는 gcc 버전을 선택하면 된다.

 

4.     단계

gcc –version
g++ --version

위의 명령어로 gccg++의 버전이 임시적으로 변경되었는지 확인한다.

 

2021-01-05

PyCharm 디버거 기능(Step Over, Step Into, Step Into My Code)

 

 

(출처: JetBrains)

 

0.     PyCharm에서 디버깅을 할 필요성

간혹 코딩을 하다가 보면 한 줄씩 차례대로 실행시키고 싶을 때가 있다. 이를 Stepping이라고 하는데, PyCharm에서는 디버깅 툴을 통해 단계별로 코드를 실행시킬 수 있다.

해당 코드에서 더 깊숙이 들어가고 싶을 때도 있고, 관심이 별로 없는 코드라서 빠르게 훑고 싶을 때도 있다. 이렇게 상황에 따라 다른 조작을 지원하고 있으므로 프로그래머가 필요에 따라 선택할 수 있어 매우 편리하다.

 

1.     버튼 및 의미

A. Step Over (F8)

Step Over는 코드의 현재 라인에서 그 다음 라인으로 이동한다. 하이라이트 표시된 라인이 메서드를 호출하고 있다 하더라도 다음 줄로 넘어가게 된다. 호출되고 있는 메서드는 내부적으로 실행된다.

다만, 내부적으로 실행되는 메서드라 하더라도 해당 메서드에 breakpoints가 존재할 경우, 디버거는 해당 위치에서 정지하게 된다. 메서드에 breakpoints가 있더라도 강제로 skip하고 싶은 경우엔 Force Step Over를 사용하면 된다.

 

B. Step Into (F7)

Step Into는 메서드 내에서 무슨 일이 일어나고 있는지를 보여준다. 호출한 메서드가 올바른 결과를 반환하고 있는지 확신할 수 없을 때에 이 기능을 사용해서 메서드 내부를 관찰할 수 있다.

만약 여러 개의 메서드가 한 번에 호출되고 있다면 PyCharm은 당신에게 어느 메서드로 들어갈 것인지를 물어보게 된다. 이 기능을 Smart Step Into라고 부른다고 한다. Smart Step Into는 메서드 다중호출 시에 기본적으로 사용하도록 되어있지만, 이 기능을 끄고 싶다면 Settings/Preferences – Build, Execution, Deployment – Debugger – Stepping에 들어가서 Always do smart step into를 체크 해제한다. 이 설정창에서는 Step Into 시에 skip할 목록들도 원하는 대로 관리할 수 있다. 또한 라이브러리 스크립트는 skip하고 싶을 땐 Do not step into library scripts에 체크하면 된다.

 

C. Step Into My Code (Alt+Shift+F7)

나의 코드에 집중하고 싶을 때, 라이브러리 클래스로는 stepping하지 않고 Step Into를 수행하는 기능이다.

 

D. Force Step Into (Alt+Shift+F7)

일반적인 Step Into에서는 skip되어야 했을 메서드에 강제로 진입한다.

 

E.  Step Out (Shift+F8)

메서드를 호출하던 바깥 코드로 빠져나온다.

 

F.  Run to Cursor (Ctrl+Alt+F9)

커서 깜빡이가 위치한 곳까지 실행을 진행시킨다. 중간에 breakpoints를 만나더라도 모두 무시된다.