direnv + direnv-mode 이맥스 지원 + C/C++/Python등 프로젝트 설정 적용하기


프로젝트의 빌드 디렉토리, virtualenv와 같은 경로의 설정, 경로 설정에 따른 빌드/실행/테스팅/스크립트을 편하게 하려고 만든 moonshot.el 와 유사한걸 검색해봤다.

몇 가지

이런 비슷한게 몇 가지 있는데, 내 상황에 쓸만한 것은 direnv

NPM: dotenv

https://www.npmjs.com/package/dotenv

Node.js에서 Unix environment variable으로 .env 파일을 로딩해주는 역할인 듯.

Shell에서 Hook 걸어서 사용하기엔 별로 인거 같았다.

그리고 Node.js 이외의 프로젝트에 적용하려면 매번 JS으로 wrapper을 짜주고 하기 싫었고,

.env 파일이 그냥 정적인 key-value 문자열의 나열이라, 파일시스템에서 경로를 조립하고 하는데 별로라는 생각이 들었다. 항상 절대 경로만 표기하거나, getenv 해서 문자열을 가져와서 상대 경로 등으로 지정된 값을 매번 절대 경로로 만드는 작업을 해야할테니까.

moonshot.el 최초 릴리즈


moonshot.el 을 만들어서 공개했다.

이맥스를 써오면서 불편하다고 생각한걸 간단히 하고 싶었었다:

불편함들

빌드 디렉토리

Projectile을 사용하니까 프로젝트 디렉토리는 관리가 쉬운데, 빌드 디렉토리는 관리가 어려웠다.

  1. 아예 Projectile이 추론하는 디렉토리 바깥에 빌드 디렉토리는 위치하는 경우도 있으니까.

    • 예) GNU Autotools configure 이나 CMake으로 작업할 때, 소스트리 바깥에 빌드 디렉토리를 걸어놓아서 정리를 깔끔하게 할 수 있으니까.
  2. 그런데 이 '빌드 디렉토리'가 중요한게,

    • 말그대로 컴파일한 .o 파일이나 최종 결과 실행파일 등이 여기에 쌓이니까
    • 디버깅, 테스트를 위해서 실행파일을 실행하거나,
    • 심지어 make 이나 ninja 같은 빌드 커맨드를 실행하기 위해서도 빌드 디렉토리를 지정하거나 이동해서 실행해야 하니까 귀찮다.

compilation-mode, realgud: 실행 파일 찾아서 실행하기, 디버깅하기

예전에 만들어 써오던 이맥스를 위한 C/C++ 설정 처럼,

2018, 2019년을 돌아보며


"일의 기쁨과 슬픔"

2018년은 정말 바쁘게 회사에 시간을 쏟으며 보낸거 같다. 그렇다고 개인적인 발전이나 성과를 얻을만한 일은 아니었다. 오히려 알던 것들을 소비하고 엔지니어링 이외의 분야에 많은 흥미로운 경험과 성장을 했던거 같다. 그리고 한국을 떠날때 싫었던 점들을 역시 그대로 느낄 수 밖에 없었던거 같다.

그리고 2019년에는 한국에서 다시 시작했었던, 내겐 그다지 만족스럽지 못했던 회사생활을 정리했다. 정리하는데 반년 정도가 걸렸다. 나도 우유부단하게 괜한, 그리고 헛된 기대를 했었기 때문에 시간을 오래 끌었었는데, 문제를 경험하고 처음 받았던 인상과 결정이 맞았다.