노트북(Notebook)이라는 개념은 기존에 워크벤치 또는 터미널 환경에서의 작업에 익숙한 IDL 유저들에게는 다소 생소할 수 있습니다. 물론 이미 잘 알려져있듯이 파이썬(Python)의 경우는 주피터 노트북(Jupyter Notebook)이라는 방식이 파이썬 프로그래머들 사이에서 많이 애용되고 있습니다. 이것은 프로그래밍을 하는데 있어서, 프로그램의 내용 뿐 아니라 관련 설명 및 결과물들까지도 포함하여 전체적인 작업 흐름을 하나의 웹 기반 문서로 통합하는 개념이라고 보면 됩니다. 즉 프로그래밍 작업에 대한 전체적인 흐름과 스토리를 마치 그야말로 하나의 노트북처럼 정리하여 담아놓는 방식이라고 보면 될 것 같습니다. 물론 이러한 단편적인 설명만으로는 감이 잘 안올 수도 있습니다. 그러면 지금부터 IDL 노트북의 개념 및 사용 방법을 간략하게 살펴보도록 합시다.
앞서 이미 올렸던 IDL for VSCode 관련 게시물들에서 이미 언급하였듯이 IDL 노트북 기능은 IDL for VSCode에 포함되어 있습니다. 따라서 IDL 노트북 기능을 사용하기 위해서는 유저의 PC에 VSCode 및 IDL for VSCode 확장 모듈에 대한 설치가 완료되어야 할 뿐 아니라 IDL 9.0 또는 8.9 버전이 설치 및 라이센싱까지 완료된 상태여야 한다는 것도 다시 한번 유념해야 합니다. 먼저 VSCode 인터페이스의 맨 왼쪽에 있는 IDL 아이콘 버튼을 누르면 뜨는 세부기능 목록들을 보면 Notebooks 카테고리가 있습니다. 바로 여기서 IDL 노트북 관련 기능 버튼들이 보일 것입니다.
여기서는 Open IDL Notebook Example이라는 버튼이 보이는데, 이 버튼을 누르면 미리 준비된 IDL 노트북 예제가 뜰 것입니다. 이 예제를 보면 단순한 예제라기보다는 거의 IDL 노트북에 관한 기본적인 지식들이 잘 설명되어 있으므로 나중에 다시 참조하면 좋을 것입니다. 일단 지금은 우리가 직접 노트북 예제를 새롭게 만들어보기로 하겠습니다. 먼저 New IDL Notebook 버튼을 눌러서 새로운 노트북 문서를 열고, 문서의 이름을 입력하여 원하는 폴더에 이 문서가 파일로 저장되도록 합시다. 여기서는 문서의 이름을 다음과 같이 my_idl_nb_1이라고 명명하였습니다.
그러면 편집창에서 새로운 노트북의 편집을 시작할 수 있습니다. 처음에는 다음과 같이 간단한 내용이 프리셋으로 미리 입력되어 있으며 여기서부터 유저가 필요한 내용을 수정 및 추가하면 됩니다.
일단 프리셋으로 미리 입력된 내용을 먼저 보면, 매우 단순해보이지만 IDL 노트북을 구성하는 가장 중요한 요소들이 모두 포함되어 있습니다. 편집창에서 클릭을 해보면 확인할 수 있는데, 이 내용은 두 개의 셀(Cell)들로 구성되어 있습니다. 먼저 윗부분의 내용은 그냥 일반적인 텍스트로서 마치 주석문(Remark)과 비슷한 개념이라 할 수 있는데, IDL 노트북에서는 이 부분을 마크다운 셀(Markdown Cell)이라고 부릅니다.
마크다운 셀의 텍스트 상에서 아무 곳에서나 마우스 왼쪽 버튼을 더블 클릭을 하면 내용을 직접 편집할 수 있습니다. 즉 다음과 같이 셀의 내용을 편집할 수 있는 모드로 들어가게 되고, 편집이 다 끝난 후에는 우측 상단에 보이는 체크(V) 모양의 버튼을 누르면 변경된 내용이 반영됩니다.
그리고 하단의 PRINT 명령이 있는 부분은 실제로 작동되는 프로그램에 해당되는 내용으로서 코드 셀(Code Cell)이라고 부릅니다.
이 부분은 IDL 프로그램의 문법에 맞게 실제로 실행되어야 할 내용으로 작성하면 됩니다. 셀 위에서 마우스 왼쪽 버튼을 한번 클릭을 하여 내용을 편집할 수 있습니다. 그리고 이 셀의 내용을 바로 실행하여 결과를 얻을 수도 있습니다. 이 셀 위에 마우스 포인터를 올리면 왼쪽에 마치 우측으로 향하는 삼각형 모양의 버튼이 보이게 되는데, 이것이 바로 코드 셀의 내용을 바로 실행하는 버튼입니다. 실제로 이 버튼을 눌러서 이 셀의 내용을 실행해보면 다음과 같습니다.
그리고 여기서 계속 이어서 내용을 추가하는 것도 당연히 가능합니다. 추가될 내용은 마크다운 셀이 될 수도 있고 코드 셀이 될 수도 있습니다. 만약 하단에 내용을 더 추가하고자 한다면 편집창의 상단에 보이는 + Code 또는 + Markdown 버튼을 누르면 됩니다.
또는 내용을 추가하고자 하는 공간 위에 마우스 포인터를 올리면 다음과 같이 셀 추가를 위한 팝업 버튼들이 뜹니다. 이러한 팝업 버튼들을 이용해도 됩니다.
그러면 여기서 마크다운 및 코드 셀을 추가해봅시다. 먼저 마크다운 셀을 추가하여 뭔가 내용을 입력해봅시다. 이 때 마크다운 셀에서는 영문 뿐 아니라 한글 입력도 가능합니다. 즉 다음과 같은 내용의 마크다운 셀을 추가할 수 있습니다.
그리고 바로 밑에 코드 셀을 추가하여 다음과 같은 내용을 입력해봅시다. 물론 이 코드 셀의 내용은 왼쪽의 실행 버튼을 눌러서 바로 실행도 가능합니다. 코드 셀의 내용을 실행까지 해본 모습은 다음과 같습니다.
코드 셀에서는 이와 같이 단순한 내용 뿐 아니라 각종 구문들도 실행이 가능합니다. 예를 들면 다음과 같이 반복형 구문을 실행하여 결과를 바로 산출할 수도 있습니다.
여기서 코드 셀은 메인 레벨 프로그램(Main Level Program)의 개념이라고 보면 됩니다. 다만 우리가 기존의 IDL에서 프로그램을 작성하던 방식처럼 PRO ~~~ END로 감싸지 않는다는 것을 유의해야 합니다. 물론 여기서도 PRO ~~~ END로 감싸는 경우도 있는데 이러한 경우에는 하나의 부프로그램으로 인식되므로 실행을 해도 그냥 컴파일만 될 뿐 실제 결과가 출력되지는 않습니다. 즉 예를 들면 다음과 같습니다.
이것은 실제로 실행 버튼을 눌러서 실행을 한 모습입니다. 컴파일만 될 뿐 실행은 되지 않았으므로 어떤 내용도 출력되지 않습니다. 따라서 IDL 노트북에서는 메인 레벨의 프로그램 내용은 PRO ~~~ END 없이 그냥 작성하고, 다만 부프로그램들에 한하여 PRO ~~~ END 또는 FUNCTION ~~~ END 형태로 작성하여 활용하면 됩니다.
이번에는 그림을 표출하는 내용을 추가해봅시다. 다음과 같이 간단한 플롯을 표출하는 내용을 마크다운 및 코드 셀의 형태로 추가합니다.
이와 같은 내용의 코드 셀을 실행하면 그림이 표출될 것입니다. 다만 여기서는 그림이 노트북 내에 포함되는(embedded) 방식으로 표출된다는 것을 주목해야 합니다. 기존의 워크벤치 환경에서는 별도로 그래픽 창이 뜨는 방식이었던 것과는 완전히 다릅니다. 즉 실행 결과는 다음과 같습니다.
이러한 표출 방식은 그래픽 체계에 구애받지 않습니다. 즉 DG 체계의 그림을 표출할 경우에도 마찬가지입니다. 그러면 다음과 같이 동일한 그림을 DG 체계 기반으로 표출하는 내용도 추가하여 실행해보면 그 결과는 다음과 같습니다.
이와 같이 노트북에서는 주석문, 프로그램 내용, 산출 결과 등의 모든 요소들이 하나의 판 위에 모두 나열됩니다. 그래서 노트북 파일을 다른 유저에게 주면 그 흐름을 똑같이 재현할 수 있습니다. 그리고 노트북의 내용을 PDF 파일로 저장하는 것도 가능합니다. 즉 전체의 작업 흐름에 해당되는 내용이 모두 담긴 PDF 문서가 되는 것입니다. PDF 저장을 위해서는 편집창의 우측 상단에 있는 해당 기능의 버튼을 누르면 됩니다.
실제로 이와 같은 방식으로 저장된 PDF 파일을 아래에 첨부합니다. 물론 PDF 문서를 보면 전반적인 레이아웃이 약간 투박한 감은 있습니다. 아무래도 노트북 자체가 PDF 문서 편집 기능을 세세하게 담고 있지는 않기 때문에 어느 정도 한계는 있습니다. 물론 혹시라도 PDF 파일을 편집할 수 있는 별도의 어플리케이션을 사용할 수 있다면 추가적으로 다듬는 것도 가능은 할 것 같습니다.
그리고 PDF 저장 버튼의 바로 우측에 있는 버튼은 .pro 파일로의 변환 기능을 담당합니다. 즉 이 버튼을 누르면 노트북의 내용을 IDL 프로그램 파일인 .pro 파일로 옮겨줍니다.
실제로 이렇게 얻은 .pro 파일은 당연히 바로 IDL에서 실행이 가능합니다. 그리고 그 내용을 보면 원래 마크다운 셀에 있던 내용은 주석문으로 변환되고, 코드 셀의 내용은 그대로 IDL 프로그램의 내용으로 옮겨집니다. 실제로 위의 노트북의 내용이 그대로 옮겨진 .pro 파일을 보면 다음과 같습니다. 물론 여기서 맨 앞부분에 "PRO 제목"과 같은 문구도 추가해주면 좋을 것 같습니다. 어쨌든 이 내용을 기반으로 유저가 약간의 수정만 더 해주면 온전한 IDL 프로그램 파일이 될 것입니다.
그리고 앞서 노트북 내의 여러 코드 셀들을 실행할 때마다 하단에 0.2s, 0.3s와 같은 문구가 표시되는 것이 보였는데, 이것은 바로 그 셀의 내용을 실행하여 결과가 나오기까지 소요된 시간입니다. 이와 같이 각 코드 셀에 대하여 실행에 걸리는 시간을 체크할 수도 있다는 것도 참조해둘만 합니다.
IDL 노트북의 개념 및 구체적인 사용법에 관해서는 이 정도로 소개를 마치도록 하겠습니다. 그 외에도 IDL 노트북에 관해서는 지난 4월초에 NV5 Geospatial에서 개최했던 웨비나 자료 및 기타 동영상들도 참조해볼만 합니다(해당 링크).
'IDL > Miscellaneous' 카테고리의 다른 글
앱 스케일링(App Scaling) 대응 기능에 관하여 (1) | 2024.05.24 |
---|---|
IDLDE의 아이콘 버튼 크기 조절 (0) | 2024.05.21 |
IDL for VSCode의 설치 및 사용 [5] (0) | 2024.05.02 |
IDL for VSCode의 설치 및 사용 [4] (0) | 2024.04.30 |
IDL for VSCode의 설치 및 사용 [3] (1) | 2024.04.26 |