올 초에 atom을 쓰기 시작했는데, 처음 설치하게 된 계기는 Julia를 보다 편리하게 실행하기 위해서... 였다.

python이야 anaconda를 이용했고, 당시에 c는 Xcode나 윈도우 PC로 Visual Studio를 썼다.

(맥북을 올 초에 구매했다. 그 전까지는 윈도우에서 Visual Studio로만 c를 썼다)

그래서 그 때는 command line으로 gcc, clang, icc 등을 통해 컴파일을 할 줄도 몰랐고, 해본 적도 없었지...;


처음에는 오직 Julia를 위해서만 쓰다가 atom이랑 텍스트 에디터에 대해 알아보고 찾아보기도 하다 보니 자연스럽게 atom으로 c도 쓰고 있더라.

시간이 지나다 보니 텍스트 에디터의 필요성을 많이 느끼기도 했고, IDE보다 편리한 점들도 많아 코딩할 때 주로 쓰고 있다.


어쨌든, 그렇게 시간이 지나면서 현재까지 내가 사용하고 있는 패키지들을 소개하고자 한다.

거창한 건 아니고, 난 이런 패키지 쓰고 있다 정도의 글이다.


2016. 11. 22. expose 추가

2016. 11. 23. language-cuda 추가

2017. 01. 09. atom-clock, file-icons, project-manager tool-bar-atom 추가, tool-bar-main 삭제

2017. 01. 19. minimap-codeglance, minimap-linter 추가

2017. 01. 24. highlight-line 추가, language-matlab 삭제

2017. 02. 15. minimap-codeglance 삭제

2017. 02. 17. git-plus, git-control, markdown-preview-plus 추가








일반




1. activate-power-mode

파워 타이핑(?)이 가능해지는 패키지.

파티클 모드만 쓰다가 콤보 모드가 추가되었는데, 동시에 작동하지도 않고 콤보 모드가 별로 마음에 안들어서 파티클 모드만 사용하고 있다.


2. highlight-selected

단어를 더블 클릭하면 하이라이트해서 같은 단어들도 지정해주는 패키지.


3. minimap

우측에 코드에 대한 미니맵이 나오는 패키지다.

크기나 위치도 바꿀 수 있는데 디폴트가 마음에 들어서 그대로 두고 쓰고 있다.


3-1. minimap-cursorline

minimap에서 내 커서의 위치를 나타내주는 패키지.

코드가 길어질 때 현재 내 커서의 위치를 찾기가 쉽다.


3-2. minimap-find-and-replace

find/replace에 대응되는 걸 minimap에 나타나게 해주는 패키지.


3-3. minimap-highlight-selected

highlight-selected를 minimap에 나타내주는 패키지.

highlight-selected는 minimap에서 더 효과적으로 쓸 수 있다.


3-4. minimap-codeglance

minimap 상에 있는 코드를 보여주는 패키지.

코드가 길어질 때 minimap을 통해 간략하게 확인할 수 있다.

생각보다 활용도가 낮아서 삭제.


3-5. minimap-linter

linter를 통한 에러가 뜰 때 그 위치를 minimap에 나타내주는 패키지.


4. open-recent

atom에서는 이유를 모르겠지만 최근 파일을 여는 기능이 없다. 이에 대응되는 패키지.


5. linter

문법 오류를 나타내주는 패키지. 필요한 언어에 맞게 추가적으로 더 설치하면 된다.

아래에도 소개되어 있지만, 난 linter-gcc를 추가로 설치했다.


6. set-syntax

Plain text에서 언어 지정할 때 command palette(ctrl + shift + P / cmd + shift + P)로 쉽게 지정할 수 있는 패키지.


7. simple-drag-drop-text

atom 내에서 선택한 단어를 마우스로 끌어서 이동시킬 수 있는 패키지.


8. tool-bar

atom 상에 툴바 아이콘을 만들어주는 패키지.

해당 패키지만 설치하면 empty 버전이라 아무 것도 뜨지 않는다. tool-bar에 대응되는 하위 패키지들을 추가로 설치해야 한다.


8-1. tool-bar-main

기본적인 툴바만 지원해준다.


8-2. tool-bar-atom

project-manager, expose, platform-ide-terminal 등 tool-bar-main보다 다양한 툴바를 지원한다.


9. platformio-ide-terminal

atom에서 터미널을 불러오는 패키지. 윈도우에서는 디폴트로 PowerShell과 연결된다.

원래 terminal-plus를 사용하려고 했는데 제대로 실행되지 않아 이걸로 대체했다.

terminal-plus를 fork한 거라 설명도 되어 있고, 내 PC에서도 잘 작동한다.


이 패키지는 PlatformIO이라 하는 atom에 적용시킬 수 있는 IDE에 포함되어 있는 패키지 같은데,

c와 c++에 초점을 두어 나온 IDE 같으니 나중에 한 번 설치해서 사용해보는 걸로.


10. expose

atom에서 띄워놓은 창들을 한 눈에 보기 쉽게 나타낼 수 있는 패키지.

개인적으로 비주얼이 마음에 든다.


11. atom-clock

atom 우측 하단에 시간을 띄워주는 패키지.

자신이 원하는 포맷으로 설정할 수 있다.


12. file-icons

파일의 확장자 아이콘을 지원해주는 패키지.

테마에서 아이콘이 지원되지 않을 경우 이걸 사용하면 좋다.


13. project-manager

프로젝트를 관리할 수 있는 패키지.

경로와 이름을 지정해두면 해당 패키지를 통해 언제든지 프로젝트를 다시 불러올 수 있다.


14. highlight-line

현재 라인 혹은 블록을 강조해주는 패키지.

밑줄 추가도 가능하고, 코드를 수정해서 밑줄이나 블록 색상도 변경이 가능하다.








C언어 관련




1. gpp-compiler

간단하게 사용할 수 있는 gcc 컴파일러다.

컴파일 옵션도 변경할 수 있어서 터미널 없이 실행할 때 좋다.


2. linter-gcc

c와 c++에서 gcc 문법 오류를 나타내주는 패키지. linter가 설치되어 있어야 한다.


3. docblockr

C언어에서 주석 처리를 좀 더 효율적으로 해주는 패키지다.

C언어 뿐만 아니라 Java, PHP 등에서도 같이 사용할 수 있지만 나는 C만 쓰기에...








Julia 관련




1. uber-juno

Juno라 하는 Julia IDE를 atom에 설치해주는 패키지.

julia-client, ink, latex-completions 이 3가지 패키지가 uber-juno를 통해 설치되고, 추가적인 세팅도 알아서 해준다.

만약 uber-juno를 통해 설치하지 않고 위의 3가지 패키지를 따로 설치한다면 일일히 설정을 자기가 다 해줘야 한다.


julia-client가 메인이라 보면 되고, ink가 툴킷으로 보면 된다.

latex-completions은 특수문자들은 latex으로 입력할 때처럼 해주는 건데 Julia를 사용하는데 있어 필수는 아니지만 요긴하다.

오히려 나는 latex-completions을 c에서 주석 다는 용도로 자주 쓴다.


2+2 예제까지 해본 뒤 설치가 완료되면 uber-juno는 삭제해도 괜찮다. 








Github 관련




1. git-plus

터미널 열 필요 없이 git을 쓸 수 있는 패키지.

간단한 처리를 하거나 커밋할 때 유용하게 쓸 수 있다.


2. git-control

atom 내에서 실행되는 git 관련 GUI 패키지.

sourcetree를 따로 쓰고 있긴 하지만 위의 git-plus와 같은 이유와 atom 내에서 다 가능하다는 점에서 괜찮은 패키지다.


3. markdown-preview-plus

기존의 markdown-preview에서 MathJax까지 구현할 수 있는 패키지.

(그 외의 기능들도 있는 거 같지만 저 MathJax 기능 하나만 보고 다운받은 거라)

사용하려면 markdown-preview를 disable로 변경해야 한다.








기타




1. language-matlab

matlab은 matlab 내에서 쓰는 게 가장 좋지만, 정말 가끔 atom으로 m 파일을 편집할 때가 있다.

그럴 때 m 파일을 Matlab으로 지정해주기 위해 해당 패키지를 설치했다.

matlab은 matlab에서만 돌리는 걸로...


2. language-cuda

cuda도 사용해야 할 일이 생겨서 설치.






gcc 6.2.1을 사용하고 있고, Homebrew로 Open MPI를 설치(brew install openmpi)했다는 가정 하에 진행한다.

OS X에서는 Open MPI가 clang이 기본 설정으로 되어 있다.

그걸 gcc로 수정하는 과정이다.


터미널에서 /usr/local 내에 mpicc-wrapper-data.txt라는 파일이 어디에 있는지 다음의 명령어로 찾아낸다.


$ find /usr/local -name mpicc-wrapper-data.txt


그 위치를 따라가 텍스트 파일을 연다.

그러고 나서 compiler= 라고 되어 있는 곳을 찾아 clang 대신 gcc-6 혹은 gcc(gcc-6을 gcc로 연동시켜 놓았다면)로 수정한다.


위와 같은 방법으로 mpic++-wrapper-data.txt라는 파일을 찾아 g++-6 혹은 g++로 수정한다.








Reference)

http://stackoverflow.com/questions/26812780/linking-homebrew-compiled-openmpi-or-mpich2-to-homebrews-gcc




gcc로 C언어를 컴파일하던 중에 다음과 같은 에러가 뜨며 실행되지 않은 적이 있었다.


'for' loop initial declarations are only allowed in c99 mode use option -std=c99


for loop initial declaration을 할 경우 발생하는 에러다.

ex. for (int i = 0; i < 10; i++)

c99에서만 지원하기 때문에 -std=c99라는 옵션을 추가해서 c99로 바꿔서 컴파일을 하라는 말인데,

이렇게 하는 것보단 for loop 안에 들어가는 변수의 declaration을 loop 밖에서, 전에 미리 해두는 게 차라리 낫다.








Reference)

http://www.dreamincode.net/forums/topic/232288-codeblocks-for-loop-initial-declarations-are-only-allowed-in-c99-mode/

'Programming > C' 카테고리의 다른 글

Intel MKL 설정하기  (0) 2016.11.28
OS X에서 gcc로 Open MPI 설행하기  (0) 2016.11.15
OS X에서 OpenMP 실행하기  (0) 2016.11.09
OS X에서 gnuplot 설치하기  (0) 2016.11.08
Linux에서 #include <math.h> 사용하기  (0) 2016.11.08

+ Recent posts