brunch

You can make anything
by writing

C.S.Lewis

by 마크 Oct 15. 2021

코딩은 정교한 작업이다

아주 작은 것이 큰 결과를 야기한다

며칠 전 카톡방에서 '티스워드'에 오류가 발생한다고 전해주었다. 이렇게 내 사이트를 이용해주는 분들이 사이트에 대한 상태를 확인해주고 알려주는 일은 감사한 일이다.


오류 내용을 봤더니 티스토리 글 목록을 보여주는 기능을 가진 '너의 티스토리'가 작동이 되지 않고 오류가 나고 있었다. 분명 그 전날에도 잘 되는 것이었는데 말이다. 알고 보니 티스토리에서 사이트 개편이 있었다.


이렇게 크롤링을 기반으로 돌아가는 프로그램은 크롤링되는 곳의 개편을 예의 주시해야 한다. 그곳이 바뀌면 내 코드도 바뀌어야 한다.


퇴근 후, 2시간을 낑낑대며 새로운 티스토리 사이트 코드에 맞춰 내 코드를 수정했다.


그런데 다음날 아침 사이트 점검을 하던 중 다시 오류가 나는 것이었다. 매번 오류가 나는 게 아니라 어떤 특정한 조건이 되면 오류가 생기는 것을 알게 되었다.

티스워드 중 '너의 티스토리'에서 발생하던 오류 알림

회사에서 오류가 나는 이유를 가만히 생각해 보았다. 티스워드의 코드를 잠시 들여다보고 있자니 뭐가 문제였는지 알 수 있었다. 이 오류를 고치기 위해 내가 했던 것은 단 두 글자만 추가한 것이다.


-1


특정 부위에 -1만 넣어주니 해결이 되었다. 이 오류는 1/10 확률로 발생하는 오류였다. -1을 넣음으로써 이 확률을 0으로 만들었다.


티스워드를 구성하는 수많은 코드 중 이 두 글자가 있고 없고에 따라 기능이 되고 되지 않고가 생기는 법이다. 사람들이 코딩을 어려워하는 것 중 하나가 이거다. 완벽하고 정교한 논리적 구조 만들기.


모든 조건을 다 생각해서 코드가 오류가 나지 않게 만들어줘야 한다. 하지만 이건 정말 어려운 일이다. 그래도 다행히 예외처리라는 게 있다.


php에서의 예외 처리는 try~catch~finally구문으로 한다.

python에서의 예외 처리는 try~except 구문으로 한다.


처음엔 이 구문이 꼭 필요할까 싶었지만 요즘은 가능하면 꼭 사용하려 한다. 내 머리로는 모든 상황에 대한 경우의 수를 다 알기 어렵기 때문이다. 예외 처리는 꼭 알아두었으면 한다.


여하튼, 나는 1/10 확률로 발생하는 저 오류를 -1을 입력함으로써 해결을 했다. 코딩은 까탈스러운 작업이다. 조금이라도 틀리면 얄짤없다. 프로그램이 멈춘다. 사소한 것이라고 봐주는 법이 없다. 아주 작은 것이 큰 결과를 야기한다. 그래서 코딩을 문제 해결 과정이라고 하나보다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari