본문 바로가기
컴퓨터/자질구레 팁

배워볼만한 프로그램들

by adnoctum 2010. 8. 26.
   컴퓨터로 하는 작업이 증가함에 따라 그 효율성을 위하여 배워볼만한 프로그램들이 있게 되는데, 역시 이럴 때 가장 중요한 것은 이 작업을 좀 더 쉽게 할 수 있는 방법이 있을까, 하는 의문을 가져보는 것이며, 두 번째로는, 어떤 프로그램이 있는지 아는 것이다.

1. 검색의 생활화.
2. 엑셀은 필수.
3. 메모장 대신 vim 이나 emacs
4. 여건이 된다면 프로그래밍 언어 하나 정도.


1. 검색의 생활화.
   무엇을 검색할 수 있을까? 간단하다. 궁금한 것은 모두. 프로그램 설치 중에 에러가 났다? 에러 메세지를 구글에 넣는다. Windows XP 에서는 잘 되던 프로그램이 Windows 7 에서 하니 잘 안 된다? 에러가 뜨겠지, 그 에러 메세지를 구글에 묻는다. 엑셀을 사용하다 '아, 이런 기능이 있으면 좋겠는데...', 하는 게 있으면 구글에 묻는다. 한글 파일이 pdf 로 안 바뀌는가? 구글에 묻는다. ms-word에서 표를 넣었는데 자꾸 이상하게 나오는가? 구글에 묻는다. 여하튼 모든 문제는 구글에 묻는다. 이 때, 검색어를 잘 선택해야 한다. 나는 사람들이 에러 메세지를 제대로 읽지 않는 것을 보며 놀라곤 하는데, 에러 메세지 정도는 읽어 주어야 한다. 바로 그 에러 메세지를 그대로 복사해서 구글에 물으면 답이 나온다.

여긴 이공계생을 위하여. matlab이나, spss, prism, origin, maple, mathematica, imageJ 등등을 사용하다가 문제가 생기는가? 특정 기능을 하는 함수를 찾고 싶거나, 원하는 그래프 형태를 어떻게 만드는지 모르겠거나, 원하는 통계분석방법을 어떻게 하는지 모르겠거나. 다 구글에 묻는다. 거기 답이 있다. 난 예전에는 도움말을 보곤 했는데, 차라리 구글이 낫다는 것을 알게 되었다.

   약간 아쉬운 점은 한글로 찾으면 많이 안 나온다는 점. 이럴 때, 차라리 문법에 안 맞을지 몰라도 영어로 묻는다. 예를 들면, how to make ms-words display invisible formatting marks? 라고 하면 조판부호를 어떻게 표시하는지에 대한 페이지들을 보여 준다. 가끔 영어 아닌 외국어가 검색 결과로 나올 때가 있는데, 대충 구글 번역을 이용하면 어느 정도 알아들을만 하기는 하다.


2. 엑셀은 필수.
    말이 필요 없다. 엑셀은 단순히 표딱지가 아니다. t-test 도 할 수 있고, 도수분포표(히스토그램)도 할 수 있고, 재미난 피벗 테이블도 만들어 사용할 수 있고, 난 가끔가다 사용하지만 ODBC 통해서 DB로 밀어 넣을 수도 있다. 간단히, 내가 자주 사용하는 엑셀 함수를 보면,

VLOOKUP : 키로 주어진 값에 해당하는 다른 값을 찾아 준다.
COUNTIF: 주어진 조건을 만족하는 값을 세어 준다.
COUNTIFS: 주어진 여러 조건을 동시에 만족하는 값을 세어 준다. 이것을 이용하면 도수분포표를 쉽게 만들 수 있다.

그 이외엔 딱히 없구나... z-값 계산해서 p-value 계산할 때 erf 같은 수학 함수를 쓰거나, sum, median, ttest, 같은 함수를 사용하는 것 이외에는. 하지만, 엑셀에는 이미 수많은 함수들이 구현되어 있고, 그것들과 필터, 피벗 테이블을 적당히 섞어 쓰면 그 기능의 무궁무진함에 놀랄 것이다. 내가 볼 때 전산계통이 아닌 사람이 유일하게 책 사서 공부해 볼 필요가 있는 프로그램이 엑셀이다.

3. 메모장 대신 vim 이나 emacs
    요건 약간 전산쪽에 치우칠지도 모르겠는데, 핵심은 '정규표현식'이 되느냐 안 되느냐. 윈도우즈에서도 gvim 과 같은 것을 사용할 수 있으니 적당히 사용하면 된다. 정규표현식이 되면 조건에 맞는 문자열들을 다른 것으로 일괄적으로 바꾸는 것이 가능해진다. editplus 같은 프로그램도 정규표현식을 지원하는 것으로 보이는데 그런 것도 괜찮을 것이다. 다음은 내가 실제로 했었던 치환 작업들의 예이다.

:%s/ \+/\t     \+ 앞에 공백이 1칸 있는 것인데, 이 명령어는 1개 이상의 연속된 공백을 1개의 tab 으로 바꾼다.
:%s/ = /\t/g    ' = ' 로 되어 있는 것을 tab 으로 바꾼다.
:%s/^/>/g         모든 줄의 가장 앞칸에 > 를 추가한다.
:%s/^ \+//g      줄 가장 앞에 있는 공백을 제거한다. trimleft와 같은 기능.
:%s/\.group\.config//g   어디에서 나타나든 모든 .group.config 라는 글자를 제거한다.
:%s/\d\+//g                숫자가 1개 이상 연속되는 것을 없애버린다.
:%s/Cluster\(\d\+\):/Cluster\1\t/g   Cluster11: 과 같이 가장 끝에 : 가 있는 것을 없애고 Cluster11<tab>으로 만들어 준다. 이 경우, 단순히 : 만을 없앨 수 없는 것이 다른 부분에도 : 이 있을 수 있기 때문이다. 따라서 Cluster 라는 문자열이 나오고 그 뒤에 숫자가 1개 이상 연속된 이후 나오는 : 만을 치환하기 위해 이렇게 했다.
:%s/\t/\n/g          tab을 줄바꿈으로 바꾼다. 이렇게 하면 a      b       c 이렇게 된 것이
a
b
c
로 바뀐다.
:%s/\d\+_//g   숫자가 연이어 나오고 바로 뒤에 _ 이 있는 것을 없앴다. 가령 Cluster933_ABC는 ClusterABC로 바뀌겠지.
:%s/^.\+\t//g   줄 앞에서부터 시작해서 아무 글자나 오다가 처음 만나는 탭까지를 없애버린다.



4. 여건이 된다면 프로그래밍 언어 하나 정도.
   독학으로 시작해서 주로 혼자 하긴 했지만 C/C++ 을 10년이 넘게 하고 있으며, STL의 축복 속에 90% 이상을 C/C++ 로 작업하는 사람으로써 일반인에게 프로그래밍 언어를 하나 추천하자면, 파이썬을 강력히 추천한다. ㅋㅋ 초보자들도 쉽게 익힐 수 있다고는 한다. 확실히, 쉽고, 써먹기 편하다.

어떤 일을 해야 하는데 똑같은 방식으로 클릭을 5번 이상 하고 있다면, 거의 반드시 그 일을 더 편리하게 할 수 있을 것이다.