본문 바로가기
공습경보/공습경보 개발일지

[공습경보 개발일지] 9. 드디어 완성 후 가동...

by 몬스터벨 2024. 3. 21.

 

 드디어 완성 후 가동이다... 내가 너무 게을러서 대충 3달, 제대로 한 것만 따지자면 1달이 걸렸지만, 어쨌든 완성이다. 이제 빠르게 홍보에 들어가야 될 듯 싶다.

 

참고로 해당 크롬 익스텐션의 다운로드 링크는 아래와 같다.

https://chromewebstore.google.com/detail/air-raid-warning/hhfjmeobondkhjhgbmeodlblbndcdfke

 

한 일

Promise.all로 된 코드 없애고 대기시간 추가

Promise.all을 이용하여 불러오니 한번에 너무 많은 트래픽이 생긴 나머지 디시인사이드 사이트에서 차단을 당했었다. 그래서 해당 코드를 없애고 크롤링 간 대기시간 추가를 해주었다.

 

추가로 대기시간을 넣고 보니 난잡하게 들어가 db에서 불러올 때도 대기를 해야되는 비효율이 생겼었다. 그래서 링크 스크랩을 할 때만 대기하도록 수정해주었다.

 

링크 없을 경우에도 좌표 url 긁어오게 하기

링크 url이 없는 경우에도 좌표 url을 긁어오도록 만들었다. 정규식으로 텍스트에 url이 있으면 뽑도록 하였다.

 

articleId: NaN이 들어가는 경우 수정

디시에서 딴지 링크를 걸어놓은 게시물에서 딴지 링크에서 건 좌표와 디시에서 건 좌표간의 차이가 있는 것을 확인할 수 있었다. 알고보니 텍스트로 url을 긁어올 때 링크 임베드 내에 있는 좌표 링크까지 모두 긁어오고, 끝부분에 링크가 짤린 경우에도 이를 링크로 따져서 생긴 문제였다. 그래서 말줄임표가 있을 경우에는 링크로 치지 않도록 수정해주었다.

 

그럼에도 해당 문제는 계속 생겼는데, 아직은 크게 문제될 정도는 아니니 나중에 테스트 케이스를 확인하면서 수정하자

  • https://gall.dcinside.com/mgallery/board/view/?id=ljm&no=233894
  • https://gall.dcinside.com/mgallery/board/view/?id=ljm&no=233861
  • https://gall.dcinside.com/mgallery/board/view/?id=ljm&no=228792
  • https://gall.dcinside.com/board/view/?id=drama_new3&no=14058327

 

TypeError: Cannot read properties of undefined (reading 'host')

url.host를 불러올 때 url이 없던 경우. a태그의 attribs.href가 없는 경우를 긁어왔을 때 발생. 있을 때만 하도록 수정시켜줌.

 

scrap 오류나도 계속 나머지는 돌아가게 하기

뒤에 catch를 넣어 오류문구를 띄우게 해두었다. 반복문으로 바꾸고, 스크랩 링크 하나 삑살났을 때 넘어가고 오류문구 다른 곳으로 전송 후 계속 스크랩하는 것도 나중에 만들어두자

 

링크 무한루프

재귀를 이용해 스크랩할 링크를 불러왔는데, 게시글 A에서 게시글 B의 링크를 달아놓고 게시글 B에서 게시글 A링크를 달아놓은 경우에는 계속 무한루프가 생기는 문제가 있었다. 스택으로 원본 게시글 링크를 넣어두는 방식으로 해결. 하지만 좌표 목록은 가장 처음에 검색한 곳에만 더 많이 추가되어서 아쉽다. 루프 안쪽의 모든 링크 목록을 동일하게 설정할 수 있는 법 없으려나

 

TypeError: Bind parameters must not contain undefined. To pass SQL NULL specify JS null

documentId값을 못 불러와서 생긴 문제인데, 딴지일보쪽 url 체계?가 자주 왔다갔다 거려서 생긴 문제. 조건을 추가해주었다.

 

앞으로 할 일

디시 트위터에 홍보글 작성하기. 트위터에 작성할 때는 영화 "댓글부대"를 언급할 것