프로그래밍하다보면 부드럽게 달리다가 턱에 퍽하고 걸린다고 느낄 때가 있다.
- 유닛 테스트(혹은 기능 테스트)를 돌렸는데 끝이 안난다거나
- 컴파일러 메시지가 쭉 뜨고있거나 혹은 링커/코드 생성 메시지에서 끝이 안나고 있다거나
- 빌드 서버에서 끝없이 노란 불(=빌드 중)이 들어가 있거나
- 안티바이러스 스캐닝이 하드 디스크를 긁고 있거나 ((물론 이 경우에는 정말 아무 것도 할 수 없기 때문에, 수단과 방법을 가리지 않고 안티 바이러스를 종료한다. 안 꺼지면 파워 버튼을 연타))
여하튼 이런 일에 신경이 쓰이면 뭔가 발이 잡힌 것 같고, 집중이 퍽하고 깨진다.
개인적으로는 이거에 대해 약간의 우회책을 넣어 대처하고 있다(=성격 나빠지고 있다).
우선 빌드 속도와 테스트 케이스 실행 속도.
google test 를 써서 작성한 테스트인 경우 실행 파일 생성 시간이 바뀌면 자동으로 테스트를 실행하고 실패하면 화면 오른쪽 아래에 커다란 빨간 팝업을 뜨게 했다. 클릭하기 전에는 안 사라지는 그런 팝업임.
대충 여기 화면 오른쪽 아래에 나오는 식. ((화면 오른쪽 아래 좀 탁하게 찍힌 화면이 그것. 화면 해상도가 2048 by 1152 임을 감안하고 보실 듯)) 반대로 모든 테스트가 성공하면 쬐끄마한 녹색 팝업을 수 초쯤 띄우고 사라지게 했다. 이전에 빨간 팝업이 있었으면 그것도 지우고…
상대적으로 좀 덜 기다리고 (문제가 생기면 알려주고) 다른 작업을 할 수 있게;
이전 포스팅에서 말했던 원래 문제(긴 테스트 시간)도 약간은 견딜만한 문제정도로 바꿨다. 다만 이 방법도 항상 통하는건 아니다. 코드 작성 -> 빌드 -> 실행 -> 보고의 한 싸이클이 너무 길면 큰 도움이 안된다. 테스트가 다 돌기도 전에 다음 싸이클의 코드 작업이 끝나고 빌드 버튼을 누르면 이미 실패. 엄한 링크 오류나 보게 된다.
그덕에 직전 포스팅에 나온 작업에 착수. 테스트 실행시간을 줄이고나니 어지간해선 — 멍청한 안티바이러스라거나가 빌드 시간을 잡아먹지 않는다면 — 견딜 수 있는 범위 내로 어떻게 어떻게 되더라.
빌드 서버 결과기다리는 것도 예전엔 상태 보면서 기다렸는데, 요즘은 신경 끄고 딴 일하다 실패 팝업 뜨면 그 때 보기는 방식으로 가고 있다. 문제는 내가 고친 프로젝트 말고 다른 사람 프로젝트 깨지면 그것도 신경쓰게 된다는 거지만;
하지만 이런 짓하면 성공적으로 전진하는 경우야 좋지만 실패했을 때의 페널티가 크다. 내가 뭘 생각하고 있었나도 돌아봐야하고, 문제를 풀고나서도 다시 원래있던 곳으로 사고를 돌려야하니…
여하튼 세 줄 요약
- 작업 싸이클에 드는 시간이 짧아야 집중해서 일할 수 있다
- 특정 단계가 너무 길다 싶으면 비동기로 바꾸고, 보고할만한 내용이 있으면 눈에 잘 띄게 알려주자(소리나 불빛 덜 방해되는 영역의 팝업)
- 이래도 안되면 ((사실이게 제일 싼 방법 같은데)) 하드웨어에 투자해야. 뭐 난 그게 안되서 테스트 코드를 최적화했다만(…)
사실 집에서 코딩할 땐 제가 제일 큰 장애물이라거나…
ㅠㅠ
헐 아내님은 버프!
사실 빌드서버 노란불은 괜찮아.. 빨간불만 아니면…
빨간불도. 이해할만한 실수로 인한 (add를 빼먹은 새 source 추가 commit 정도) 면 괜찮지…
뭔가 모를 빌드 서버에서만 나는 오류라거나… 뭔가 테스트만 fail나는 상황이면 -0-!!
노란 불도 신경쓰이긴 마찬가지라…
그리고 그 테스트 fail을 누군가가 고쳐줘야 한다면! -ㅁ-
ㅋㅋㅋ(…)
“성격 나빠지고 있다.” → 이제 곧 알현하러 입궁한 가신에게 짜증을 퍼넘기신다던가…
“헐 아내님은 버프!” → (으르릉)
…네가 지금 디버프가 되려하는게냐?
그런 시도를 했다간… 바로 역적으로 몰릴 듯. ;ㅅ;
너 원래 (사실은 역적이자 간신인) 충신이자너.. ㅋㅋ
안티바이러스 정책이 완전 고정인가요?
소스 파일들 확장자 또는 소스 폴더 전체를 exclude 해두면 좀 덜 버벅이더군요. ㅎㅎ
엔터프라이즈 솔루션(…)이랍시고 내가 exclude 디렉터리 지정할 수 없음. 무조건 중앙 서버에서 정책 내려주는 걸로 동작함.
그래서 그냥 끈다니까 -_-; (정확히는 하드디스크 풀 스캔하는 순간 정지를 걸 수는 있음. 안티바이러스 자체를 정지하는건 불가)