콘텐츠로 건너뛰기

vim에서 설정파일을 메뉴로 열기

개인적으로 vim 설정을 하나의 vimrc 파일에 몰아서 만들기 보다는 여러 개의 파일로 쪼개어 사용자 설정 폴더 내에 배치해두고 사용하고 있다. 그러다보니 특정한 설정을 수정하려 할 때, 해당 파일을 빨리 찾아서 여는 기능이 필요했다. 사용자 정의 Ex 명령으로 만드는 방법이 있지만, Vim8의 팝업 기능을 사용하면 메뉴에서 원하는 파일을 선택해서 여는 기능을 구현할 수 있다.

더 보기 »vim에서 설정파일을 메뉴로 열기

정적/공유 라이브러리 만드는 법

정적 라이브러리 정적 라이브러리는 컴파일된 코드, 즉 오브젝트들의 모음이라고 이해할 수 있다. 컴파일러로 생성한 오브젝트 파일을 ar 명령을 사용해서 하나의 파일로 아카이브를 만들면 정적 라이브러리를 생성할 수 있다. 정적 라이브러리를 사용할 때에는 -L ./ -lmylib 과 같은 식으로 -L, -l 스위치를 사용해서 라이브러리 경로와 파일을 지정하여 컴파일하면 된다. 이렇게 컴파일한 프로그램에는 라이브러리가 실행파일에 통째로 포함되기 때문에 라이브러를 함께 배포할 필요가 없다. (대신 그만큼 실행파일의 크기가 그만큼 커진다.) sqlite3 소스를 받아서 아래와 같은 식으로 정적 라이브러리를 만든 후 실행파일을 만들 수… 더 보기 »정적/공유 라이브러리 만드는 법

Pandas 기초 사용법 – Series

파이썬에서 통계 및 데이터 분석을 위해 사용하는 대표적인 패키지로 pandas를 꼽을 수 있다. 사실 pandas말고 다른 통계용 패키지는 뭐가 있나 잘 모르겠… 통계 분석을 위해서 pandas를 사용하기 위해 파이썬을 배우는 입장이 아니라면 기존의 파이썬 자료 구조와는 사용법이 살짝 다르기 때문에 약간 위화감이 들 수 있다. 이 글에서는 기존 파이썬 자료 구조에 익숙한 사용자가 pandas를 익히기 위해 필요한 내용과 그 사용법을 정리하고자 한다.

Pandas에서는 Series와 DataFrame이라는 두 가지 형식의 데이터 타입이 존재한다. Series는 특정한 기준에 따른 계열 데이터로 파이썬의 리스트와 비슷하다. DataFrame은 Series를 합친 형태로 2차원의 표 형식의 데이터를 다룰 때 사용한다.

더 보기 »Pandas 기초 사용법 – Series

NU Shell에서 여러 인자를 외부 명령에 전달하기

컴파일러 명령과 같이 많은 양의 인자를 전달해야 하는 명령을 Nu shell 스크립트에서 호출할 때, 명령들을 변수에 저장하여 호출하면 하나의 변수가 하나의 인자로 취급되어 예상했던 대로 작동하지 않는 문제가 있다. 예를 들어 vim을 빌드할 때 명령줄에서는 다음과 같이 실행한다. 이 때 각 인자를 하나의 변수에 넣고 실행하면? $build_opt 의 값이 따옴표로 묶인 것처럼 하나의 인자로 전달되어 제대로 컴파일이 되지 않는다. 이 경우에는 문자열 변수를 split row 명령으로 분해하여 파이프를 통해 넘겨준다. $in 은 파이프라인으로 넘겨받은 값을 가리키는 변수로 위와 같은 경우외에… 더 보기 »NU Shell에서 여러 인자를 외부 명령에 전달하기

Ex명령을 반복하기

vim 에서 Ex명령(콜론(:)으로 명령모드로 진입해 실행하는 명령)을 노멀모드에서 반복하려면 @: 을 사용합니다. 한 번 반복한 후에는 @@ 를 사용해서 반복할 수 있습니다. 참고로 변경이나 치환, 삭제등의 편집 명령은 노멀모드에서 . 명령을 통해 반복할 수 있어요. 이러한 반복 명령은 모두 앞에 숫자를 붙여서 한 번에 원하는 횟수만큼 자동으로 반복할 수 있습니다. @는 원래 특정한 레지스터에 들어있는 내용을 자동으로 실행해주는 명령이에요. 보통 q 를 사용해서 매크로를 녹화한 후에 매크로를 실행할 때 사용합니다. 이전 명령을 실행하는 다른 방법으로는 : 키로 명령모드로 전환한 후에… 더 보기 »Ex명령을 반복하기

vim9script 로 autoload 함수 작성하기

vim의 플러그인 스크립트는 런타입 디렉토리 내 plugin 디렉토리 아래에 위치하며, vim이 시작될 때 해당 디렉토리 하위의 모든 vim 파일을 로딩하게 됩니다. 만약 라인 수가 많은 스크립트가 있거나 혹은 읽어들여야 하는 스크립트 파일이 많다면 vim의 초기 시작 시간에 영향을 주게 됩니다. 따라서 많은 플러그인들은 이러한 시작 성능의 영향을 최소화하기 위해서 스크립트의 로딩 시점을 최대한 뒤로 미루는 방법을 적용합니다.

  1. 특정한 타입의 파일을 편집하려할 때 필요한 기능이 있다면 ftplugin 디렉토리 내에 vim 파일을 위치 시킵니다. 여기에 있는 스크립트들은 그 이름과 동일한 타입의 버퍼가 열릴 때 로드됩니다.
  2. 공통적으로 사용하는 함수라면 autoload 디렉토리에 작성합니다. 이 디렉토리에 있는 파일은, 특별한 패턴의 이름으로 함수를 정의하며, 해당 함수가 실제로 호출되기 전까지는 파일이 로드되지 않습니다
더 보기 »vim9script 로 autoload 함수 작성하기

vim에서 여러 파일에 찾기/바꾸기

리눅스 쉘에서, 여러 텍스트 파일의 내용들 중 특정한 단어나 패턴을 찾는데 사용되는 유틸리티인 grep 이라는 프로그램이 있습니다. vim에서도 grep과 같이 여러 파일에서 단어나 패턴을 한꺼번에 찾을 수 있는 기능을 제공합니다. vim의 이러한 기능은 다시 두 가지로 나뉩니다. 첫째로 vim은 그 자체로 grep과 비슷한 기능을 제공하도록 구현되어 있어서 내장된 :vimgrep 이라는 명령을 사용합니다. 이 방식은 vim만 있으면 사용할 수 있고, 플랫폼마다 개행문자가 다르게 쓰이는 부분이나 파일 인코딩을 자동으로 처리해주는 장점이 있습니다만, 속도가 느리다는 단점이 있습니다. 두번째 방법으로는 아예 grep을 사용하여 텍스트를 탐색하고, 그 결과를 vim으로 가져오는 방식이 있습니다. 오늘은 vim에서 grep과 같이 여러 파일에서 텍스트를 검색하고 결과를 사용하는 방법에 대해서 살펴보겠습니다.

더 보기 »vim에서 여러 파일에 찾기/바꾸기

Requests를 사용해서 파일 다운로드 경과를 표시하기

Requests는 파이썬 사용자들이 가장 많이 사용하는 HTTP 통신용 라이브러리일 것이다. 비록 파이썬 표준 라이브러리에 포함되지는 않았지만, 공식 문서에서조차 ‘Requests를 쓰는게 편리하니 추천한다’고 언급할 정도이니… 사실, 파이썬의 역사는 우리의 생각보다 훨씬 오래되었고, 그 와중에 HTTP와 관련된 공식 라이브러리에도 몇 가지 변화가 계속 있어왔다. 최초로 HTTP를 사용하여 데이터를 가져오는 기능은 urllib 에서 구현된 urlopen() 함수였는데, 이 때의 urlopen()은 단순히 open() 함수를 HTTP 너머로 작동하게 하는 것 이상도 이하도 아닌 간단한 구현체였다. HTTP와 관련된 명세는 제법 방대하고 명세 중에서 쓸만한 기능을 제작하기 위해… 더 보기 »Requests를 사용해서 파일 다운로드 경과를 표시하기

텔레그램 API로 채널에 메시지 보내기

파이썬에서 텔레그램 API를 사용하여, 특정 채널에 메시지를 보내는 방법을 알아봅시다. API를 통해서 메시지를 게시하려는 채널이 있다면, 텔레그램에서 새로 봇 하나를 만들고, 이 텔레그램 봇을 해당 채널의 관리자로 추가해줍니다. 이렇게 해 두었다면 API를 사용하여 봇으로 하여금 채널에 메시지를 보낼 수 있게 됩니다. 채널 뿐만 아니라 대화 ID만 알고 있다면,1:1 대화나 그룹대화에도 메시지를 보낼 수 있습니다. 오늘은 이 과정을 하나씩 따라가면서 살펴보겠습니다. 봇 생성하기 봇의 생성은 텔레그램 앱에서 할 수 있습니다. 모바일 앱 외에 PC용 텔레그램에서도 똑같이 할 수 있습니다. 텔레그램에서 제작한… 더 보기 »텔레그램 API로 채널에 메시지 보내기

라이트세일 인스턴스 업그레이드 및 설정

월 5천원 정도 하던 국내 호스팅 서비스를 쓰다가, 저장 공간의 압박이 너무 커서 여기 저기로 옮겨 다니다 라이트세일에 정착한 것이 대략 2018년이다. (그 전에 해외 호스팅을 사용해봤는데, 얘들은 처음 1년 혹은 몇 달은 저렴하게 프로모션하지만, 그 이후로 요금은… 흠..) 처음 2년반 넘게 사용하는 동안에는 불편함이 없었는데, 워드프레스가 버전업이 되면서 무거워져서 그런지 점점 느려진다는 느낌이 들었다. 또, 번거롭게 설치하는 일 없이 사용하려고 bitnami 인스턴스를 사용했는데, 문제는 bitnami 스택에서 php만 업그레이드한다거나 하는 것이 어려웠다.

더 보기 »라이트세일 인스턴스 업그레이드 및 설정