콘텐츠로 건너뛰기

:global 명령

:global 혹은 :g 명령은 Ex 명령인 [cmd]를 전체 혹은 지정한 range 사이의 모든 라인에 중에서 패턴이 일치하는 라인에 대해 실행한다. 의외로 놓치고 활용을 많이 안하는 명령인데, 반복적인 편집 뿐만 아니라 조금만 연습하면 강력한 편집 기능을 구현할 수 있다. 또한 일상적으로는 잘 쓰이지 않는 일부 명령들을 조합하여 유용하게 사용하게 되기 때문에 편집 명령에 대해서도 공부할 수 있는 좋은 출발점이 된다.

더 보기 »:global 명령

모평균의 추정

중심극한 정리에 따르면 모집단의 데이터의 분포에 무관하게, 표본의 크기가 충분히 크다면 표본 평균의 분포는 그 평균의 모평균과 같고, 분산이 모분산을 표본수로 나눈 값인 정규분포에 가까워진다. 이 말은 어떤 집단에서 표본을 추출하여 얻는 표본 평균이 모평균의 근처에 있을 가능성이 높다는 의미이다. 그리고 표본 평균의 분산은 모분산을 표본수로 나눈 값이므로 표본의 수가 충분히 크다면 더더욱 표본 평균은 모평균과 가까워질 것이다. 따라서 표본 조사를 통해 얻은 표본 평균을 통해 모평균을 추정하는 것은 너무 터무니 없는 것은 아닌 것이다. 그렇다면 표본 조사를 통한 모평균의 추정은 어떻게 할 수 있을까?

더 보기 »모평균의 추정

Python 101 : 맵, 필터와 반복문

지난 글에서는 리스트 및 그와 비슷한 집합 형태의 자료형을 살펴보면서 “반복 가능”이라는 개념에 대해서 소개했다. 반복 가능하다는 특성은 꼭 리스트가 아니어도 여러 개의 값을 포함하는 집합/모임(collection)의 성질을 갖는 다양한 자료형에서 나타나는 성질이며, 이러한 특성을 갖는 객체들은 그 내부 구현에 상관없이 for 루프나 comprehension 축약 문법에 적용될 수 있다.

더 보기 »Python 101 : 맵, 필터와 반복문

Python101 : 다른 집합 유형들

지난 글에서 리스트의 특징에 대해서 언급할 때나, 리스트 축약에 대해서 이야기하면서 “연속열”이나 “반복가능”이라는 단어를 사용한 적이 있다. 사실 파이썬에 연속열이나 반복객체 혹은 반복가능객체는 이제는 거의 공식적으로 사용되는 개념이다. 리스트는 이런 “연속열”과 “반복가능”에 공통적으로 속하는 유형의 데이터 타입인 것이다. 이번 글에서는 그럼 리스트 외에 어떤 다른 집합형 데이터 타입이 있는지 알아보고 그 면면을 좀 살펴보기로 하겠다. 값의 타입 일단 값의 타입을 확인하는 방법을 알아보자. 사실 여기서 말하는 타입들은 아주 “대표적인” 파이썬 타입들이며, 사실 파이썬에는 엄청나게 많은 데이터 유형이 존재한다. (사실 어떤… 더 보기 »Python101 : 다른 집합 유형들

Python 101 : 리스트

지난 글에서 파이썬에서 사용되는 가장 기본적인 값의 유형에 대해 살펴보았다. 오늘은 리스트에 대해서 이야기해보려고 한다. 리스트는 여러 개의 값이 연속적으로 배치된 일종의 집합이다. 다른 프로그래밍 언어에서는 배열(Array)이라고 하기도 한다. 사실 배열과 다른 리스트라는 자료 구조가 별도로 존재하기는 하는데 (연결 리스트 같은 걸 들어본 적이 있을지도 모르겠다.) 파이썬의 리스트는 C의 배열과 크게 다르지 않다고 생각하면 된다.

더 보기 »Python 101 : 리스트

vim에서 scss 파일을 컴파일하기

typescript나 scss 처럼 다른 언어로 컴파일하는 스크립트를 작성하고, 이 결과를 별도의 창에서 확인하는 기능을 vim에서 구현하는 방법을 알아보자. 기본적으로 vim에서는 :r 명령을 사용하면 쉘을 통해 실행한 외부 명령의 출력을 현재 버퍼로 가져오는 것을 수행할 수 있다. 그 외에도 job을 이용한 비동기 방식의 처리도 가능하고 아예 vim 내에 터미널 창을 만들어서 실행하는 방법등 여러 방법이 있다. 오늘은 이러한 방법을 사용해서 vim에서 scss를 컴파일한 결과를 보여주는 방법에 대해서 살펴보겠다.

더 보기 »vim에서 scss 파일을 컴파일하기
Pages: 1 2

vim script 함수 총정리

vim에서 자주 사용하는 간단한 매크로는 키 맵으로 정의해서 사용할 수 있다. 하지만 여러 명령을 결합하거나, 데이터를 조작하거나 상황에 따라서 분기해야하는 등의 좀 더 복잡한 동작을 구현하기 위해서는 함수가 필요하다. vim script에서도 함수를 지원하고 있어서 이를 활용할 수 있는데, 오늘은 함수를 정의하고 사용하는 여러 방법에 대해서 정리해보도록 하겠다. 가능하면 이 포스트 하나로 vim 스크립트에서 함수를 정의하고 사용하는 것과 관련된 내용은 모두 다뤘으면 한다. (그리고 이후에 vim script 관련 포스팅을 하더라도 참고용으로 긴 설명 글이 필요하기도 하고…)

더 보기 »vim script 함수 총정리

워드프레스에 jupyter notebook 삽입

워드프레스 포스트에 Jupyter notebook을 삽입하는 방법을 알아보겠습니다. 가장 손쉬운 방법은 Github Gist 에 정적 HTML로 변환한 파일을 업로드하고 해당 Gist를 포스트에 삽입하면 되는 것입니다. 로컬에서 작성한 ipynb 파일을 업로드해도 되지만, Google Colab을 사용하면 Gist로 저장하는 일을 좀 더 간편하게 할 수 있습니다.

더 보기 »워드프레스에 jupyter notebook 삽입

WP-cron을 시스템 cron으로 대체하기

워드프레스는 포스팅의 예약 발행과 같은 스케줄링을 지원하는데, 이는 WP-cron이라는 스케줄러를 통해 처리된다. wp-cron은 매 페이지가 호출될 때마다 로드되어 예약된 작업이 있으면 이를 처리해주는 방식으로 작동한다. 다만 이렇게하면 포스트 발행을 예약한 시점에 접속이 없다면 스케줄러가 실행되지 않거나, 그외 플러그인과의 충돌이나 워드프레스 자체의 버그로 인해서 작업이 누락되는 경우도 발생한다고 한다.

리눅스 서버를 사용한다면 시스템의 cron을 사용해서 이 wp-cron의 실행을 대체할 수 있다. 이 글은 아마존 라이트세일 인스턴스 (Bitnami – wordpress 서버)에서 wp-cron을 끄고 시스템 자체의 cron을 실행하게 하는 방법이다.

더 보기 »WP-cron을 시스템 cron으로 대체하기

ZMQ 소켓을 모니터링하기

zmq 소켓을 사용한 확장 패턴에서 zmq 프록시를 사용하는 경우, 일반적으로 두 개의 소켓을 사용하여 프론트엔드와 백엔드로 사용하는데, 세번째 소켓인 캡쳐를 추가할 수 있다. 캡쳐는 주로 publisher를 사용하는데, 이 소켓으로는 프록시 내부에서 흘러가는 모든 데이터가 캡쳐되어 발송된다. 이런 방식으로 우리는 zmq 프록시의 내용을 모니터링할 수 있다. 이와는 별도로 각각의 zmq 소켓은 그 자체로 모니터링 기능을 제공한다. 소켓은 프로그램과 네트워크 사이를 연결하는 인터페이스로, 소켓을 통과하는 데이터를 캡쳐링할 필요는 없다. 대신에 소켓의 모니터링 기능은 소켓이 네트워크에서 피어와 연결할 때 발생하는 이벤트를 감지한다. 소켓의… 더 보기 »ZMQ 소켓을 모니터링하기