sooop

sooop

popup

Vim에서 팝업 사용하기

vim8부터 popup 기능이 새롭게 도입되었다. 이제 vim script에서 팝업을 만들어서 대화 상자나 메뉴 혹은 그외의 UI들을 팝업 레이어로 만들어서 편집기 위로 띄울 수 있게 되었다. 특히 비동기로 외부 job을 실행하는 함수를 작성하는 경우에 그 결과를 사용자에게 알려주는 용도로 사용하기에 용이하다. 이 기능을 어떻게 사용하는지 살펴보도록 하자. 먼저 팝업의 종류와 구조를

By sooop

중심극한정리

어떤 집단의 특성을 정확하게 알고 싶을 때, 가장 이상적인 해결 방법은 해당 집단의 전체 구성원을 조사해보는 것이다. 어떤 선거 후보에 대한 실제 지지율을 알고 싶다면 모든 유권자들을 만나서 지지여부를 조사하는 것이 가장 정확한 답에 가까울 것이며, 남자 고등학생들의 키를 알고 싶다면 모든 남자 고등학생들의 키를 조사하면 될 일이다. 하지만 이런

By sooop

combinations

순열과 조합 - itertools (python)

알려져 있는 원소들로 구성되는 가능한 모드 조합 및 순열을 구하려 할 때, 이를 직접 구현해보는 것도 좋지만 itertools 모듈에 있는 함수를 사용하는 것을 추천한다. 이 함수들은 기본적으로 제너레이터 함수이기 때문에 한번에 리스트 등으로 만들기 전까지는 메모리에 큰 부담을 주지 않으며 성능도 적절한 편이다. 오늘은 itertools의 함수 중에서 순열과 조합에 관련된

By sooop

<Plug>

vim 플러그인의 키맵과 함수 이름

vim 플러그인을 작성하는 것을 간단히 요약하면 어떤 기능을 수행하는 함수를 작성하고, 이 함수를 호출할 수 있는 방법을 제공해주는 것이라 할 수 있다. 이 때 고려해야하는 중요한 요소 중 하나는 사용자는 내가 작성하는 플러그인 말고도 엄청나게 많은 다른 플러그인을 사용하고 있을 것이라는 것이다. 따라서 함수의 이름이나 사용자 정의 명령의 이름, 키

By sooop

asciimatics

asciimatics - 텍스트 기반 애니메이션 라이브러리

간단한 UI를 가진 앱을 파이썬으로 구현하는 가장 기본적인 방법은 내장되어 있는 라이브러리인 Tkinter를 사용하는 것일 것입니다. 그 외에도 wxPython이나 PyQt, PySide 같은 것들이 있습니다. 하지만 정말 단순한 UI를 구현하기만 하면 되는 상황이라면 꼭 GUI일 필요는 없을 수도 있습니다. 터미널 상에서 텍스트로 UI를 표현할 수 있는 라이브러리도 있죠. TUI 라고하는 이런

By sooop

dict-functions

vimscript의 리스트와 사전

vimscript에서 사전과 리스트를 조작하는 여러 함수들이 있다. 리스트(배열)나 사전을 지원하는 여느 프로그래밍 언어와 개념상 비슷한 도구들을 제공해주고 있다. 차이가 있다면 주류 언어들과는 달리 대부분의 조작이 객체 내부를 변경하는 구성으로 되어 있다는 점이다. 리스트 관련 연산과 함수 :h list-functions를 통해서 전체 목록을 확인할 수 있다. * list[i], list[s:

By sooop
Pillow 기본 사용법

bitmap mask

Pillow 기본 사용법

PIL은 (아마 짐작이 가능하겠지만) Python Imaging Library의 약자로, 파이썬에서 여러 포맷의 이미지를 읽고 조작할 수 있게 하는 라이브러리이다. GUI 관련 라이브러리/프레임워크들이 일부 이미지 조작과 관련한 기능을 제공하긴 했지만, 2000년대 초반에 ‘파이썬스럽게’ 이미지를 처리할 수 있고, 가장 많은 기능을 사용할 수 있었다. 그러나 행복한 나날은 오래가지 못했는데, 2009년쯤해서 PIL은 더이상

By sooop

prompt toolkit

prompt toolkit을 사용하는 비동기 입력 프롬프트

prompt_toolkit은 asyncio를 지원하는 prompt_async()를 제공한다. input() 함수나 보통의 prompt() 함수는 입력을 받는 중에는 스레드 전체를 블럭하기 때문에 다른 동작이 모두 멈추게 된다. prompt_async()는 이러한 문제를 해결할 수 있는 대안이다. 참고로 patch_stdout()을 사용하면 입력을 기다리는 중에 다른 코루틴이 출력을 할 수 있게 하면서, 입력

By sooop

multipart

PUB-SUB 패턴에서 멀티파트 데이터를 사용하기

PUB-SUB 소켓은 데이터를 발송하는 복수의 Publisher와 이를 수신하는 역시 복수의 Subscriber들이 연결되어 데이터를 분산하는 ZMQ 패턴에 사용된다. 이들은 REQ-REP 패턴과 다르게 PUB쪽에서 SUB쪽으로 단방향으로 데이터가 전송되며, PUSH-PULL과 다르게 하나의 메시지를 모든 Subscriber가 수신한다는 특징이 있다. 이 때, SUB쪽 소켓은 자신에게 맞는 데이터만을 수신하도록 필터를 설정하는데, 보통 PUB-SUB 패턴의 예제에서는 이

By sooop