"One of the nice things about getting older is that you come to understand that you can integrate multiple aspects of your life together. When you're young, you think everything has to be binary, as that's exactly how you feel at that age".
- Min Jin Lee

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

Hololog Perl/CLI 버젼


https://github.com/ageldama/hololog-perl-cli

한줄씩 메모를 하는걸 좋아하고, 그냥 데스크탑에서 PDF을 읽거나 웹페이지를 읽으면서 어딘가에 생각난거나 이해한걸 필기하면서 진행하고 싶어서 만들었다.

다음 트윗 타래에서 이야기한것처럼, 그냥 트위터 비밀계를 써도 괜찮지만, 그것도 너무 웹브라우져 열고 하다보면 산만해져서.

tweet 1206138361968070656

처음 시작은 Unix/GNU cat 을 간단하게 터미널에서 쓰면 된다는 생각이 들었다.

1
cat >> foo.txt

..그런데 유닉스가 아닌 사람들, 윈도를 쓰는 사람들은 어떻게 하지?

1
copy con foo.txt

..사실 위와 같이 cmd.exe 에서 실행해도 되겠지만, 뭔가 그래도 윈도 사용자들이나 터미널 화면을 무서워하는 사람들이 저런거 좋아할까.. 싶어서 조금 생각.

Org모드에서 스프레드시트 기능과 Babel 섞어쓰기


쩌는 Org-mode Spreadsheet 소개 를 읽고 감명 받아서 따라해봅니다.

다른 부분은 만족스러웠는데, 조금 복잡한 elisp식을 쓰기 귀찮으니, 미리 defun / defmacro 으로 정의해놓고 그걸 spreadsheet에서 불러 쓸 수 있을지가 궁금했습니다.

그래서 다음과 같이 해보면 가능할지를 실험:

  1. Org-Babel으로 원하는 함수를 정의한다.

    • 그리고 Org 파일이 로딩될 때 평가하도록 속성을 지정해놓는다.
  2. Spreadsheet에서 불러서 쓸 수 있는지 확인해본다.

우선 C-h a 을 눌러 vsum 을 검색해보니, defun calcFunc-vsum (&rest vecs) 으로 미리 선언되어 있는거 같았습니다. 이런 형태로 내가 정의하는 함수도 구현해보면 될까 싶습니다.