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

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

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

gcc -o hw1.c hw1.c

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

 

학부 2학년땐가 프로그래밍 쪽 진도가 좀 느렸던(…) 동기 한 명이, ((즉 *nix-like system에도 약한 … 그래서 자동완성에 지나치게 의존한 결과 발생한 대참사(…) ))

rm -f some_sourcefile.java

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

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

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

 

…하지만 여기서 반전

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

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

# 이하 생략 

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

make clean

/애도 /묵념 /엉엉

 

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

Jinuk Kim
Jinuk Kim

SW Engineer / gamer / bookworm / atheist / feminist

Articles: 935

25 Comments

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

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

    deisys / 크흑(…)

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

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

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

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

    • everclear //

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

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

Leave a Reply