Ping 07/02/2019

Posted on Feb 7, 2019

Golang 사랑

회사일로 Golang을 다시 잡고 쓰게됐다.

예전에도 잠깐 썼었는데1, 이번엔 그냥 더 오래 진지하게 필요에 의해서 쓰게됐다.

지금 일터에서도 필요에 의해서 작은 프로그램을 작성하고 할 일이 있어서 쓰다가 아예 서비스 코드에 적용을 하려 일하고있다.

많은걸 더 깊이 생각하고 익히는 좋은 계기로 꾸준하게 사용하고 있고, 만족스럽다. 대부분의 경우에. 그리고 Emacs와 연동도 좋고 언어 자체의 설계나 그런점들도 너무 좋은거 같다.

GC이 있는 언어를 최근에는 꺼리다가 다시 사용하니까 좋은것 같아. 그냥 문법적은 모호함이 없고 단순함, 머리에 쉽게 기억할만한 규칙들, 혹은 아예 어떤 규칙도 기억할 필요가 없도록 만들거나 하는게 얼마나 설계에 좋은지 깨닫는다.

진지한 커다란 애플리케이션에서 작은 커맨드라인 도구까지 그냥 만들기 참 좋은 언어인거 같다.

단순히 코딩을 하고 실행하고, 테스트케이스를 돌려보고, 그런 각 싸이클이 너무 복잡하거나 느리지 않고 밸런스가 정말 잘 맞는 언어와 툴링인거 같아서 사랑스럽다.

최근에는 유일하게 Go언어에서 싫어하던 $GOPATHgo111-module으로 해결되고 하는거 같아서 더 좋아졌다.

Perl, C++, Golang, 커먼리습 같은 언어들이 점점 더 좋아지는거 같다. 공통점은 딱히 Functional하지도, 그런걸 병적으로 추구하지도 않으면서 잘 동작하고, 그렇게 예쁜 코드를 짤 수 있도록 해주지도 않지만, 정말 잘 동작하고 튼튼하고 그래서 가장 생산적인거 같아서.

이맥스, Helm에서 Ivy+Counsel으로

오랬동안 개인 이맥스 설정을 Helm을 중심으로 설정해놓고 잘 쓰다가, 이번에 Counsel/Ivy 기반으로 모두 바꿨다.2

좋은점들만 적어보면,

  1. Helm에서 Swoop등의 내용을 Occur형태의 버퍼로 저장할때, 지원여부가 검색에 따라 잘 안될때가 더 많았었는데, Ivy에서는 무조건 된다.
    • ivy-occur 기능이 무조건 동작이라 정말 편하다.3
  2. ivy-occur에서 또 wgrep으로 바로 수정도 편안하다.4
  3. 가볍다. 그리고 별거 아니지만 훨씬 탄탄한 느낌이다. (에러 없이 동작하고, 설정도 깔끔하고)
  4. Ripgrep이랑 out-of-box으로 연동되어서 편하다.5

그냥 만족하고 오랬동안 쓸만한거 같아. 거기에 find-file이나 swiper등에서 regexp으로 입력이 되거나, fuzzy-matching이 되거나 하는것들도 내가 익숙한쪽으로 설정이 다 가능해서 편안하다.6

새로 알게된 모르는것들

그냥 그간 내가 잘 안다고 생각했지만, 사실은 잘 모르는것들에 대해서 생각하기 시작했다.

예를 들어, SQLite3이라던가 하는걸 이용해서 커맨드라인에서 활용하기, GNU Parallel, Awk, Perl, jq 등의 도구들을 잘 활용하는것들을 얼마나 게으르게 익혀왔었던가 생각해본다.

문서도 충분히 많고7, 충분히 커맨드라인이나 스크립팅으로 할 수 있는 일들이 강력하게 많은데, 그런것들을 읽거나 깊이 생각하고 중요하게 여기지도 않았었던거 같다.

결과적으로 내가 매일의 무언가 작업을 할때마다 힘들고 더 안좋은 방법을 선택하게 되는것도 내 탓이었었던거 같다.

그냥 조금만 그런것들이 그냥 멍청한 과거의 유산이 아니라, 내 오늘과 내일을 더 편안하고 낫게 만들어줄 방법이라는걸 생각하고 대했더라면 후회스러웠다.

도구에 집착하는 사람이 도구의 노예인가, 아니면 도구에 집착하지도 않아서 도구를 제대로 쓰지도 못하고, 도구를 활용하지 못한채 힘들게 지내거나, 도구를 어떻게 쓸까 전전긍긍하는쪽들이 도구의 노예인가?

진짜 도구를 다루는 일은 그걸 직면하고 잘 익히고 그 가치를 잘 이해하고 사용하는쪽인것 같다.



  1. https://github.com/pazuzu-io/pazuzu 잘란도 온보딩 마지막에 회사내 프로젝트 인큐베이터에서 Golang으로 작업할일이 있었었다. ↩︎

  2. 새로운 설정 파일=https://github.com/ageldama/configs/blob/master/emacs/dot-emacs-2019 / 예전 설정파일=https://github.com/ageldama/configs/blob/master/emacs/dot-emacs-2018 ↩︎

  3. https://oremacs.com/swiper/#saving-the-current-completion-session-to-a-buffer ↩︎

  4. https://github.com/mhayashi1120/Emacs-wgrep ↩︎

  5. Helm은 다른 플러그인을 더 깔거나 해야 했고, 그나마도 Projectile등이랑 또 궁합이 막 안맞는거 같고 그래서 힘들었었다. ↩︎

  6. 앞으로 이맥스에 내가 사용하는 프로그래밍 언어나 기본 키 바인딩, 창-버퍼 조작 방법, 파일 검색이나 프로젝트 검색 같은 워크플로우 같은것들을 정리해서 포스팅하고 공유할까 생각중. ↩︎

  7. 대부분의 시스템에 Bash이나 jq, GNU Parallel, Awk 같은것들의 Manpage이나 Info문서들이 기본적으로 설치되어있을텐데. ↩︎