rein’s world

프로그래머, 독서가, 게이머 그리고 블로거

오늘의 유머: 초보 *nix 프로그래머가 Makefile을 써야하는 이유  

후배 Dish 군의 포스팅 “다섯 줄의 서사시”를 보고 떠오른 과거의 기억 3 개.

학부 1학년 꼬꼬마시절(…), 한 학번 위의 선배인 deisys 형이, (다른 선배였는지 모르겠다만…)

gcc -o hw1.c hw1.c

…를 했다고 절규했던 기억이 있다. orz
즉, 컴파일/링크한 바이너리 파일로 소스코드 덮어쓰기! (…) 

 

학부 2학년땐가 프로그래밍 쪽 진도가 좀 느렸던(…) 동기 한 명이,[1]

rm -f some_sourcefile.java

던가를 했다고 -_-;; 원래 하려고 했던 것은 class 파일의 제거. 한 마디로 새된 상황. 
소스 트리 전체에 대해서는 아니었고 파일 하난가 두갠가에 대한거였는데 여튼 -_-;;;; 

다행히도 소스코드를 decompiler로 복구할 수 있는 – 혹자는 이게 보안 문제라고도 하지만 딱히 그런 문제는 현대의 코드베이스 크기에서 문제가 될 소지는 없다고 생각함. 사실 버그를 찾는 눈이 많으면 버그가 줄기도하고… – 경우라서 좀 괜찮았다.

숙제 시한 마감에 맞춰서 일단 class만 보내고, 내가 나중에 디컴파일 한걸 줘서 그걸로 confirm을 받은 걸로 기억.

 

…하지만 여기서 반전

학부 3학년인가 4학년 수업 때, 누군가가 이런 Makefile을 만들었다.

# (전략)
clean:
    rm -f *.c

# 이하 생략 

그리고 그(그녀?)는 숙제 제출 전에 소스트리를 정리하기 위해 다음을 입력했다.

make clean

/애도 /묵념 /엉엉

 

…즉 소스코드 형상 관리 툴도 써야함. (SVN이나 CVS, git…)
+ 이 글을 읽고 웃은 당신은 이미 전산전공자(…)

  1. 즉 *nix-like system에도 약한 … 그래서 자동완성에 지나치게 의존한 결과 발생한 대참사(…) []
  Related Posts  

 

By rein

September 23rd, 2008 at 12:32 pm

Posted in Computer, 일상

Tags: ,

21 Responses to '오늘의 유머: 초보 *nix 프로그래머가 Makefile을 써야하는 이유'

Subscribe to comments with RSS or TrackBack to '오늘의 유머: 초보 *nix 프로그래머가 Makefile을 써야하는 이유'.

  1. svn 안 쓰면 눈물이 앞을 가리는 상황이…

    슈레인

    23 Sep 08 at 1:24 pm

  2. shurain / 하지만 난 SVN repository 가 있는 파일시스템이 깨지는걸 당해봤지[...]

    rein

    23 Sep 08 at 1:29 pm

  3. 꺄아아아아아아아아아아악

    (캐허접 프로그래머 고어핀드 군도 아직 경험하지 못한 삽질 -_-;)

    고어핀드

    23 Sep 08 at 1:47 pm

  4. 하지만 IRC 채널의 반응은,
    “이런 얘기 너무 많아 들었(보았)어요”
    정도인듯(…)

    rein

    23 Sep 08 at 1:55 pm

  5. deisys 형 맞음 (…)

    Rica

    23 Sep 08 at 1:55 pm

  6. svn 쓰고 아침마다 자동백업하는 학부생은 거의 없죠. 저도 병특 다녀오기 전까진 안습.

    최재훈

    23 Sep 08 at 2:15 pm

  7. 어.. 나 맞음.. -_-
    그리고 hw1.c 라는 바이너리는 정말 훌륭하게 잘 동작했다지..
    (크흑 ㅠㅠ)

    deisys

    23 Sep 08 at 2:25 pm

  8. Rica / 본인의 확인(?)을 받은듯

    최재훈 / 저는 어쩌다 들은 학부 수업에서 CVS를 가르쳐줘서 그 이후로 약간씩은 썼어요. 그게 3학년 2학기인게 문제지만; 하지만 그전까진(이하생략)

    deisys / 크흑(…)

    rein

    23 Sep 08 at 3:05 pm

  9. 학부 2학년때 DB 숙제 하다가 그 당시 make를 안 만들어놔서 rm *.o를 해야하는 걸 rm * .o하는 바람에 OTL…. 조교님께 메일 보내서 부디 제가 1차때 제출한 소스좀 주십쇼 굽신굽신… 했던 기억이 나네요

    doongk

    23 Sep 08 at 4:18 pm

  10. doongk / 그것도 좀 무섭구나;;;;

    rein

    23 Sep 08 at 6:22 pm

  11. 해왔던 짓을 돌이켜 보면 이런 종류의 삽질을 한두 번 쯤은 해봤을 법도 한데, 기억에 없네. 대신 리모트에서 ‘pkill -9 sshd’ 같은 사소한 실수를 많이 하지 ;;

    수원

    23 Sep 08 at 9:01 pm

  12. 첫 번째는 나도 해 본 듯. 그렇게 심각한 프로그램은 아니어서 다행이었음. 연구실에서 다른 사람이 저지르는 것도 본 듯하네. -_-

    일념

    24 Sep 08 at 1:07 am

  13. CVS나 SNV안쓸때, 백업해둔 소스 참고용으로 불러서 보다가, 워킹셋에 오버라이트 한 기억이 꽤나 있네요… [..]

    DarkAngel

    24 Sep 08 at 9:05 am

  14. 일념 / 역시 이런 사례가 도처에 깔려있는 거임(…)

    DarkAngel / 그거 좀 무서운듯(…)

    rein

    24 Sep 08 at 9:13 am

  15. 저는 a.out을 사랑해서 다행입니다 …

    피앙

    24 Sep 08 at 1:32 pm

  16. 피앙 / 쳇(?)

    rein

    24 Sep 08 at 1:51 pm

  17. 전 tar cvzf hw1.c hw1.h makefile
    하다가 피본적이 한두번이 아닌 orz

    최치선

    24 Sep 08 at 3:22 pm

  18. 최치선 / 그런 경우 많이 본듯(…)

    rein

    24 Sep 08 at 4:45 pm

  19. 그래서 아웃풋 파일을 직접 지정하면 안됨 (?!?!)

    everclear

    24 Sep 08 at 10:12 pm

  20. everclear //

    target_binary_name :
    g++ -o $@ $(OBJS) $(LIBS) $(LDFLAGS)

    추천(…)
    설마 타겟 바이너리 이름을 잘못쓰지야 않는다고 믿어야.
    + SVN을 쓰면(이하생략)

    rein

    25 Sep 08 at 9:22 am

  21. make clean 안습이군요. -_-;

    솔리드원

    7 Oct 08 at 12:34 am

Leave a Reply