emacs로 go언어 개발환경 구축하기 (1)

Posted by 뭐든지 열심히 잘하는 곰도리네
2017.11.08 14:01 Computing&IT/프로그래밍 - golang


1. 들어가며


Go언어는 C언어 만큼이나 개발자의 customizing을 지원하면서도 java만큼이나 다양한 플랫폼에서 개발이 가능합니다.


하지만 C언어나 C++만큼 괴랄한 수준의 불편함을 제거했습니다.


배울수록 어려운 객체지향이라는 개념도 언어 자체에서 제거하고 대신 유사하게 구현하게 해줍니다.


특히 web based app 개발에 있어서 별도의 apache나 nginx서버 구축없이도 자체적으로 요청을 처리하게 해줍니다.


개인적으로 java나 C++, C#등도 go언어로 대체되지 않을까 싶네요.


go언어를 배우는 방법은 책이나 web 상의 강좌등이 있겠지만 저의 경우는 udemy 강의를 추천합니다.


(사실 저도 책으로는 읽어봤지만 udemy 강좌를 아직 전부 들어보지는 않았는데요, 추후 관련 포스팅 예정입니다.)



go언어를 사용하는데 있어서 불편한 점이 하나 있다면 통합개발환경이 아직 부족하다는 점입니다.


개인적으로 eclipse에 go언어 플러그인, atom+goplus, gogland, visual studio code + goplugin을 사용해보았는데


셋다 장단점이 있습니다.


eclipse의 경우에는 익숙함이 장점인데 go언어 지원이 조금 미흡합니다. eclipse 자체의 무게감도 상당하구요. 매우 느리죠. 


atom의 경우에는 minimap과 관련하여 자꾸 atom 자체가 죽어버리는 오류가 있어서 사용하다 그만뒀습니다. (윈도우 기준)


리눅스 버전에서의 atom은 빠르고 안정적이긴 했지만 리눅스 자체가 주는 압박감이 심해서... 


visual studio code가 그나마 괜찮았지만 이 또한 go언어 컴파일 및 디버깅이 느립니다.


그래서 찾은 대안이 emacs였습니다. 


예전부터 emacs를 사용하고 싶기도 했고 생각보다 안정적이라는 의견들이 많아서 사용해보고자 했습니다.


이 글은 emacs + go언어의 삽질을 기록하는 글입니다.



2. emacs 설치 (윈도우10 64bit 기준)


emacs를 설치해서 쓰겠다는 것은 기존 에디터들이 뭔가 마음에 들지 않는다는 뜻입니다.


기능이 방대한만큼 배울것도 많습니다. 특히 elisp까지 쓰겠다는 자세가 필요합니다.


저의 경우는 시간이 부족해서 lisp언어는 학부때 배운 정도로 그냥 읽기만 가능한데요,


그럭저럭 사용하는 수준에서는 쓸만합니다.


공식 emacs 홈페이지에서 윈도우용을 다운받으면 emacs 추가기능들을 지원하는 MELPA사용이 어렵습니다. 


gnuTLS가 포함되서 컴파일되지 않았기 때문인데


이 문제는 gnuTLS를 따로 컴파일 해주시거나 아니면 공식아닌 비공식 emacs를 설치하시면 해결됩니다.


개인적으로 아래의 링크에서 emacs를 다운받으시길 권합니다.


emacs-w64 | 64bit emacs for windows with optimization


위의 배포버전은 emacs에서 주로쓰이는 라이브러리를 모두 통합해서 컴파일한 버전입니다.


설치는 간단합니다. C:\에 바로 압축풀어서 실행하면됩니다.


실행파일은 아래의 경로에 존재하게 됩니다.


 C:\emacs\bin\runemacs.exe

위 파일의 바로가기를 하나 만들어두면 됩니다.


이로써 설치는 끝납니다.




3. MELPA 패키지 사용 설정


기본적으로 emacs에서 추가기능을 가져오는 ELPA보다 MELPA를 사용하시는게 좋습니다.


MELPA 서버는 https로 접속하게되는데 공식 emacs 배포판은 윈도우용에서 gnuTLS를 제거한탓에 접속하기 어렵다는 점을 이미 설명드렸구요,


이제 MELPA 패키지를 이용하기위해 init 파일을 작성합니다.


초기 emacs 설치한 상태에는 init.el이 없습니다.


init.el은 사용자가 emacs를 커스터마이징 하기 위한 파일인데요


emacs가 처음 구동될 때에 init.el 파일을 찾게됩니다. 


사용자가 이맥스를 커스터마이징할 사항들은 모두 init.el에 작성됩니다. 


el이라는 확장자가 알려주듯 이 또한 lisp언어로 작성됩니다.


단순히 사용만할 것이라면 단순하게 복붙하면 됩니다. 


문법이 궁금하다면 lisp언어를 공부하면 됩니다.


emacs 윈도우 버전에서 init파일 설정하는 방법은 여기를 참조하시면 됩니다.


저의 경우에는 아래 경로에 작성하였습니다.


 C:\Users\Kim\AppData\Roaming\.emacs.d\init.el


메모장열고 init.el 작성하시면 됩니다.


emacs에서 파일작성하고 저장하는 방법은 추후에 포스팅하겠습니다.


파일에는 아래의 사항을 포함시키도록 합니다.


 ; MELPA Package Settings.
(require 'package) 
(add-to-list 'package-archives
             '("melpa" . "https://melpa.org/packages/"))


대충 눈썰미로 파악되겠지만 세미콜론으로 시작하는 줄은 주석입니다.


melpa라는 이름의 https 서버주소를 package-archives 리스트에 추가시키는 함수입니다.


init.el파일을 저장하고 emacs를 실행합니다.


별다른 오류메세지가 없다면 정상적으로 init.el 파일이 로드된 겁니다.


Alt+x를 누르고 package-refresh-contents를 입력합니다. 


emacs 명령어 입력시에 리눅스에서 지원하는 것처럼 Tab키 눌러서 가능한 함수 불러오는 기능이 있으니 사용해보시구요.


어쨌건, package-refresh-contents 하게되면 위의 MELPA서버에서 패키지 리스트를 가져오게됩니다.


이제 emacs설치 및 추가기능을 사용하게 되었습니다.



이 댓글을 비밀 댓글로

티스토리 툴바