AppKit의 스크롤뷰, NSScrollView 사용법

iOS에서 화면에 표시할 수 있는 뷰 영역보다 큰 콘텐츠를 표시하기 위해서는 UIScrollView를 사용해서 스크롤 및 확대/축소에 대한 지원을 손쉽게 구현할 수 있음을 우리는 알고 있다. 그렇다면 macOS 환경에서 스크롤뷰는 어떤식으로 구현될 수 있고, 또 그만큼 손쉽게 사용할 수 있을까? 비슷한 스크롤 서비스를 제공한다는 공통점에도 불구하고 데스크톱 환경은 우리가 생각하는 것보다 훨씬 더 복잡하고 많은 요소가

(연재) 파이썬은 처음이라 – 문법은 처음이라

이번 시간에는 파이썬의 문법에 대해서 알아볼 생각인데, 가능하면 딱딱하지 않은 내용으로 소개하고 싶었지만 그래도 문법의 구조에 대해서는 잠깐 언급하고 넘어가는게 좋겠다. 아마 교과서 같은 책이라든지 파이썬 공식 문서에서도 이런 식의 문법 구조 설명은 나올텐데, 대부분 “너무 빤한 이야기라서 왜 써있는지도 모르겠고 그냥 대충 몰라도 아는 이야기라 넘어간다”며 읽지 않는 것이 대부분이다. 절대로 재밌는 내용이 아닌데,

async with : 비동기 컨텍스트 매니저

파이썬의 컨텍스트 매니저는 with 블럭을 적용할 수 있는 객체를 말한다. with 문에서 쓰이는 컨텍스트 매니저 객체는 코드 블럭에 대한 데코레이터처럼 동작한다. 가장 흔한 예가 open() 함수로 생성하는 파일 디스크립터이다. with open(‘data.txt’) as f:   for line in f:     print(line) 컨텍스트 매니저 객체는 __enter__(), __exit__() 두 개의 내장 메소드를 가지고 있는 것으로 간주된다. 위 코드에서는 with 다음에 나오는 open(‘data.txt’) 라는 코드는 파일 디스크립터를 반환한다. 그런데,

(연재) 파이썬은 처음이라 – IDLE은 처음이라

아주 당연한 이야기지만 어떤 프로그래밍 언어도 책으로만 공부할 수는 없다. 프로그래밍 언어에서 가장 중요한 것은 직접 코드를 타이핑해서 쳐보고, 그것을 실행해보는 경험이다. 이것은 단순히 책에 쓰여있는 글자를 그대로 타이핑해서 실행해보고 “아 이 코드는 되네”라는 경험을 말하는 것이 아니라, 책에 쓰여진 코드에서 어떤 부분을 바꿔보고 그것은 동작하는지를 예상한 후 확인해보는 것을 포함해야 한다. 제대로 실행이 되지

파이썬의 스레드 사용법

멀티스레드를 사용한 병렬처리는 concurrent.futures의 ThreadPoolExecutor를 사용하면 스레드 풀 관리에서부터, 처리 결과들의 동기화에 이르기까지의 여러 작업을 간단한 API를 통해서 처리할 수 있다. 특히 이 API의 경우 멀티스레드와 멀티프로세스에서 동일한 형태로 디자인되어 있고, 실제 사용시에는 어떤 구현을 선택할 것인지에 따라 Pool관리자의 클래스만 변경하면 되기 때문에 편리하게 사용할 수 있다. 하지만 이 API는 특정한 시점에 데이터를 나누어 처리하고