회고

삽질 경험 회고 | 어디서부터 무엇이 잘못되었는가....

개발자R 2023. 10. 22. 15:13
반응형

분명 안될게 아닌데 계속 안되고 있는 상황.

무엇이 문제였는지 알게된 순간 눈물이 앞을 가리던...어디에서 부터 잘못된건지는 도무지 알 수 없었던...그런 날이 있다.

 

 

의미없었던 삽질 경험을 남겨보려고 한다.

 

 

1. 내가 보고 있는 그 화면, 정녕 localhost인가...

    버그를 고치려고 한참 테스트를 한다. 정말 별거 아닌 버그인데 희한하게 고쳐지질 않는다.

너무 명확한 버그인데 왜그럴까 하며 이것저것 시도해본다.

변화가 없다.

너무 이상한 나머지... 콘솔로그를 찍어본다.

콘솔도 안찍힌다.

 

OMG...

코드를 바꾸면서 계속 테스트한 화면은 dev 환경이었다.

한숨만 나오는 상황....

 

내가 보고 있는 그 화면이 localhost 인지 꼭... 한 번쯤 확인해보자...

 

정말 별거 아닌데 의외로 30분을 허비시키는 바보같은 실수다.

 

 

2. console.log의 함정. 그것도 내가 판.

    디버깅을 하려면 디버거를 쓰는게 좋다곤 하지만, 프론트에서는 그런 방식으로는 시간이 너무 오래걸릴 때가 있다.

콘솔로그를 찍고 후루룩 어디에서 값이 바뀌는지만 캐치해서 그 부분만 상세히 보곤 한다.

그런데 희한하게 내가 5개정도 찍어놓은 콘솔로그중에 3개가 자꾸 증발을 하는 것이다.

정말정말 이상했다. 절대 그럴게 아닌데...

 

매우 복잡한 화면이라 1시간정도 허비하면서, 개발 방식을 이렇게도 바꾸어보고, 저렇게도 바꾸어보고, 캐시를 날려보기도 하고 별 짓을 다했다. 거의 포기할 무렵... 

콘솔에 필터가 걸려있는걸 발견했다.

와....

필터를 쓴 적이 없었는데 무슨 키를 잘못 눌러서 필터에 글자가 들어갔나보다.

근데 심지어 전체가 안나왔으면 이렇게까지 삽질을 하지 않았을텐데,

어떤거에는 포함된 글자였고, 어떤거엔 포함되지 않는 글자여서 무슨 짓을 해도 안나오는 콘솔로그가 있었던 것이다.

 

이렇게 나의 소중한 1시간이 순식간에 사라졌다.

 

 

그래도 의미 있던 삽질

새로 배운 것이 있는 삽질도 있었다.

 

1. Event Listeners 에서는 react의 useState로 셋팅한 값을 가져올 수 없다.

https://medium.com/geographit/accessing-react-state-in-event-listeners-with-usestate-and-useref-hooks-8cceee73c559

 

Accessing React State in Event Listeners with useState and useRef hooks

If you’re using React hooks in a component with an event listener, your event listener callback cannot access the latest state. We can…

medium.com

    전혀 몰랐던 사실이다. 지금까지 Event Listener를 쓸 일이 별로 없었기 때문에 몰랐다. 

알아내는 데에 꽤 오랜 시간이 걸렸는데 위에서 말한 삽질도 같이 포함되어있었기 때문이다.

각각 삽질을 하는 데에 1시간씩 걸리는 일이었다면 삽질 * 삽질이 콜라보되어서 반나절이 날아갔다.

이럴 때 나의 총명함이 줄어든게 느껴진다. 

하지만 가만히 생각해보면 어이없는 삽질은 주니어때 더 많이 했던 것 같기도 하고...

 

2. @Getter 를 설정하지 않아서 나온 버그, 그런데 흡수된...

    디버깅을 했을 때 분명 Dto에 값이 제대로 나오는데 프론트에서 Response가 이상하게 제대로 안나오는 현상이 있었다. 삽질의 첫 번째 이유는 내가 어노테이션의 역할, Jackson의 역할을 제대로 몰랐기 때문이고, 두 번째로는 프로젝트에서 Exeption이 제대로 찍히지 않고 어딘가에서 흡수되기 때문이었다. 결국 심도있는 디버깅 끝에 익셉션이 흡수되는 지점을 찾았고, 메시지를 찍어보니 Dto -> Json으로 변환이 제대로 안되는 게 원인이었다. 찾고찾다보니 @Getter 이 빠져있어서 나는 문제였다.

 

 

이 대 환장의 삽질 콜라보가 localhost를 제외하고 나머지 세 가지가 반나절동안 일어난 일이었다. 

한 번에 한가지만 있으면 좋을텐데, 이것저것 해보다가 여러 가지가 섞여있는걸 알게되고 나서는 도대체 언제부터 되었던거고 언제부터 안되었던거지 도무지 알 수가 없다.^^

그냥 처음부터 해보는게 낫다.

실제로 안되던 지점 처음부터 다시 짜니까 금방 구현할 수 있었다.

하하하...

 

 

쓸데 없는 삽질도 언젠가 쓸모가 있길 ....

 

 

반응형