종료코드 1
3주차는 오타와 각종 에러의 향연이었다. 파이썬을 이용한 데이터 크롤링과 mongoDB를 이용한 데이터베이스 등록/추출을 배우는 과정에서 강의자와 세팅이 조금이라도 다르면 무조건 오류가 발생했다. 종료코드 0으로 이쁘게 나타나는 강의영상과 다르게 종료코드 1과 함께 빨간줄들이 계속 나타날때면 스트레스가 이만저만이 아니었다.

이제는 에러코드를 해석하고 문제를 직접 해결해야 할 때
처음에 빨간 줄들이 좌라락 그어졌을때는 에러코드는 읽지도 않고 그저 세팅이 문제겠거니 다양한 세팅방법을 시도했다. 파이참을 다시깔아도 보고, 경로지정도 새로해봤지만 문제가 전혀 해결될 기미가 보이지 않자 나는 결국 주어진 운명을 마주하고 에러코드를 하나하나 읽기 시작했다.




결국 답을 찾아냈을 때의 쾌감
여러번 구글검색을 시도한 결과 나와 비슷한 원인으로 고통받는 사람을 발견했고 답변에 적힌 내용을 그대로 따라했더니 문제가 해결되었다. 대충 사이트의 인증서가 원인이 된 문제고 인증서를 다시 등록해주는 방법을 알려주는 것 같았다.


결국 빨간줄을 보고, 해결방법을 찾는게 코딩인가보다.

이번주 코딩 수업에서 강의록을 벗어난 에러는 위의 certification문제를 제외하고는 없었다. 전부 오타가 있거나, 따옴표(:)를 빼먹거나, 찾는대상을 상위에 넣거나 하는 방식의 에러가 대부분이었다.

위에는 내 코드이고 아래는 강의록의 정답코드이다. 코드의 구조는 맞았으나 실행이 안되어서 에러의 원인을 찾는데 시간의 대부분을 보냈다. 사실상 틀린그림 찾기에 가까운 코딩수업이었다. 참고로 위의 사진에서는 첫줄에 fine_one이 아니라 find_one이라고 적어야 해서 오류가 있었다.
3주차 최종 과제
songs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for song in songs:
rank = song.select_one('td.number').text[0:2]
cleanrank = rank.strip()
title = song.select_one('td.info > a.title.ellipsis').text
cleantitle = title.strip()
artist = song.select_one('td.info > a.artist.ellipsis').text
print(cleanrank,cleantitle,artist)

복잡하고 까다로운 mongoDB를 사용하는 과제가 아직 나오지 않아서 다행이라는 생각이 들었다.
강의에서 알려준 배도 .strip()도 쓰고 .text[0:2]도 써서 그럴싸한 결과물이 나왔다. 그러나 마지막까지 해결하지 못한 부분은 저스틴비버의 peaches 앞에 붙은 19금 딱지가 혼자서 엄청난 공백을 만들어내고있는걸 없애지 못한 부분이다.



마치며
결국 마지막 과제의 답안을 찾지 못한채 3주차 과제물을 마무리하게 되었다. 다양한 에러와 문제를 회피하려는 나의 사고방식이 강의 수강을 미루는 결과를 낳았고, 일요일 12시 전에 부랴부랴 강의를 다 듣고 개발일지를 작성하게 되었다.
결국 코딩은 디버깅이 전부라는 말을 어디선가 들은 적이있다. 이번주에 얻은 최대의 수확은, 에러가 나면 재설치나 재부팅의 우회경로보다 결국 에러코드를 읽고 정면승부해야 문제가 해결된다는 점을 깨달은 것이다.
다음주부터는 3주간 배운 Html / Javascript / Jquery / Ajax / 파이썬 / mongoDB를 모두 활용하여 실제 웹페이지 작업에 들어간다고 한다. 이제 진짜 개발에 들어가는구나. 벌써부터 무수한 에러코드가 눈에 선하지만, 문제를 해결해나가면서 얻는 즐거움이 한편으로 또 기대가 된다.