Vim에서 팝업 사용하기

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

더 보기 »Vim에서 팝업 사용하기

중심극한정리

어떤 집단의 특성을 정확하게 알고 싶을 때, 가장 이상적인 해결 방법은 해당 집단의 전체 구성원을 조사해보는 것이다. 어떤 선거 후보에 대한 실제 지지율을 알고 싶다면 모든 유권자들을 만나서 지지여부를 조사하는 것이 가장 정확한 답에 가까울 것이며, 남자 고등학생들의 키를 알고 싶다면 모든 남자 고등학생들의 키를 조사하면 될 일이다. 하지만 이런 전수조사는 현실적으로 비용과 시간의 한계 때문에 실제로 진행하는 것은 불가능에 가깝다. 그래서 사람들은 전체 모집단의 일부를 표본으로 뽑아, 표본조사를 수행한다. 그리고는 통계학의 힘을 빌려서 표본 조사의 결과를 바탕으로 모집단의 특성을… 더 보기 »중심극한정리

순열과 조합 – itertools (python)

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

더 보기 »순열과 조합 – itertools (python)

파이썬 패턴매칭

파이썬 3.10에서는 구조적 패턴 매칭이라는 새로운 문법이 도입된다. 패턴매칭은 match 문이라는 새로운 구문에 적용된며, 스칼라 같은 다른 언어들에서 영향을 받았다고 한다. match 문은 어떤 값(subject)을 여러 다른 형태(pattern)들과 들어맞을 때 까지 비교한다. 이는 C와 같은 언어의 switch 문과 같은 것이 아니냐고 할 수 있겠지만, switch 문이 여러 케이스의 값을 비교하는 것과 달리, match 문은 값에 대해서 패턴에 들어맞는지를 보는 것이 차이라 하겠다.

더 보기 »파이썬 패턴매칭

오일러 프로젝트 87번

어떤 소수의 제곱, 세제곱, 네제곱의 합으로 표현할 수 있는 수를 찾는 문제. 소수의 제곱 + 소수의 3제곱 + 소수의 4제곱)으로 나타낼 수 있는 가장 작은 수는 28입니다. 28 = 22 + 23 + 2433 = 32 + 23 + 2449 = 52 + 23 + 2447 = 22 + 33 + 24 50 미만에 이런 수는 모두 네 개 있습니다. 5천만 미만에 이렇게 나타낼 수 있는 수는 모두 몇 개나 됩니까? 보다 영리하게 푸는 방법은 여전히 모르겠고, 현재로서는 brute-force로 푸는… 더 보기 »오일러 프로젝트 87번

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

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

더 보기 »vim 플러그인의 키맵과 함수 이름

ASCIIMATICS 101 – 2

지난 글에서 ASCIIMATICS로 기본적인 애니메이션 효과를 구현하는 방법에 대해 살펴보았다. 이번에는 텍스트 기반 UI를 구성하는 방법에 대해 다뤄보려고 한다. 텍스트 기반 UI는 여느 GUI와 마찬가지로 기본적인 UI 컴포넌트인 위젯을 조합하는 형태로 만들어진다. 대신에 일반적인 애니메이션 재생과 달리 이러한 위젯들은 사용자와의 상호작용을 전제로 디자인되어 있으며, 화면 뒤에 존재하는 데이터를 표시하고 변경하는 동작을 수반한다.

더 보기 »ASCIIMATICS 101 – 2

ASCIIMATIC 101

파이썬으로 가장 GUI를 구현하는 방법으로는 여러 가지가 있다. 기본으로 내장된 Tkinter 도 있고, wxPython 이나 pyQt 같은 것까지. 개인적으로 매우 간단한 UI를 갖춘 프로그램을 작성하려고 했지만 이래 저래 복잡해서 뭐 좀 없을까 하고 하다가 asciimatics를 알게되었다. asciimatics는 기본적으로 아스키문자를 사용해서 콘솔 화면에 애니메이션을 구현하는 라이브러리인데, 이 중에서 입출력과 관련된 기능도 있고, 간단한 TUI를 구현하는 기능 역시 존재한다. 이를 사용하면 간단한 폼이나 대화상자 등을 시각적으로 구현할 수 있고, 그외 이것 저것 재미난 것들을 화면에 구현해볼 수 있다. (이미지를 텍스트로 변환해서 표시한다던지…)… 더 보기 »ASCIIMATIC 101