JIGGAG

4월 한달동안 로그

2020년 5월 4일

4/27 - 5/2

  • 요즘 뭐하니

리팩터링

  • 리팩터링 2판이 새로 나와서 서점에서 찾아 읽었다
  • 레거시 코드를 단계를 거쳐 리팩터링 하는 과정
  • 리팩터링 - 테스트 - 커밋
  • 한번에 모든것을 처리하려고 하지 말고 변수명을 바꾸고 함수를 나누고 하나씩 테스트를 거쳐서 완성
  • 가장 궁금했던 점은 하나의 값을 리턴하는 함수를 또 다른 변수에 설정하지 않고 필요한 부분에서 매번 함수를 호출하여 값을 가져오는 점이였다
  • 매번 호출하는 것보다 변수로 지정해서 사용하는게 낫지 않을까 생각했는데
  • 어제 읽었던 Objective C에서 메모리를 관리하는걸 생각해보면 하나의 변수에 저장하면서 메모리를 점유하는 것보다 필요할때마다 만들어서 사용하고 끝내는게 더 좋은 방법!?

Objective C

  • 자바랑 비슷한데 하나도 안똑같네
  • interface로 선언하고 implementation으로 구현
  • 포인터랑 메모리 정리를 이해할 수 없었다...

Job Scheduler

  • 노드 서버에서 스케줄러를 등록해서 알림을 받고 싶었다
  • 근데 왠지 서버가 재시작되는 일이 있고 그런 경우 등록되어있던 스케줄이 사라져버린다
  • 그래서 디비에 저장시켜두고 서버가 시작될때면 그 정보를 가져와서 다시 스케줄에 등록하도록 변경하였다
  • 문제는 디비에 저장되는 스케줄러 콜백 형태
  • 콜백함수를 문자열로 디비에 저장해두고 이를 꺼내와서 호출하려는데 단순하게 func[param]으로 될 줄 알았는데 안된다
  • 찾아보니 eval로 문자로된 함수를 실행 할 수 있었다

논리연산자

  • 디폴트값을 지정할때 ||를 사용하고 있다
  • A || B -> A 또는 B가 출력된다
  • 이때 망각하고 있던 사실
  • 리턴되는 값은 Boolean이 아니라 숫자, 문자가 될 수 있다...
  • 잠재되어있던 버그: A && <코드~~~ />
  • A가 true이면 코드가 출력되도록 하고 싶었다 -> 그러나 A가 출력되면서 에러를 뱉어내고 있었다! 아니 왜?
  • || 에서는 A가 true이면 A, B가 true이면 B가 출력된다 -> OR 조건이니깐 둘중 true인거 아무거나
  • && 에서는 A가 true이면 B, A가 false이면 A를 출력한다 -> AND이니깐 둘다 true를 가져야 하는데, 그렇지 않은 경우에는 false가 리턴되며 그 false를 갖고 있는 A가 리턴되는 것이다
  • 당연한 연산이라고 생각하고 있었는데 그 당연함에 잊고 있는 사실

4/19 - 4/26

bugsnag

  • sourcemap 등록하고 오류 발생한 위치를 알아보기 편하도록 개선

biometrics

  • 지문, 얼굴인식이 필요해서
  • iOS는 디바이스 자체에서 둘 중 한가지만 지원하므로 간단하게 해결
  • 그러나 안드로이드는 디바이스에 등록된 생체인식을 전부 사용할 수 있다
  • FingerprintManager가 deprecated 되고 BiometricManager가 새로 나왔는데... -> 지문인식만 사용하려 입장에서 오히려 난감한 상황
  • 필요한 내용만 골라쓰고자 react-native-biometrics 라이브러리를 수정하기로 하였다 -> 하다보니 과연 이게 맞는걸까 또 다시 의문에 빠졌다
  • 업데이트된 내용을 사용하지 않고 deprecated된 API를 사용하며 누군가가 사용하기 편하라고 개발해둔 라이브러리를 펼쳐놓고 입맛대로 수정하는건 과연 효율적인 걸까
  • 내 입맛대로 수정하고 다시 오픈하면 이게 또 새로운 라이브러리가 되는거잖아 좋아
  • 라이브러리 수정하다보니 iOS objective-c를 알아둬야겠다고 생각

4/12 - 4/18

  • 코드만을 생각하는게 맞는걸까? 전체를 보지 못하고 있는건 아닐까?
  • 지금 진행 중인 프로젝트를 어떻게 하면 좋을지 고민하고 공부하는게 좋을까 아니면 하고 싶은 공부를 하는게 좋을까 -> 둘 다 하면 좋겠지만 아무것도 하지 않는 방법을 선택하지 않으려 노력중이다
  • 컴포넌트를 조건에 따라 다르게 구성하여 화면을 그린다 -> 더 좋은 방법이 없을까?
  • 이런 저런 고민이 많아지는데 뻥 뚫리는 무언가를 찾지 못했다

4/5 - 4/11

why did you render

  • rerender마다 콘솔 로그 찍어주는데...
  • Memoization 적용이 얼마나 안되어있는지 키자마자 맥북 비행중
  • 컴포넌트에는 적용했지만 textinput 같은 이벤트에서 엄청난 렌더링 발생 이걸 어쩌지
  • 갑자기 든 생각 react-navigation으로 화면을 스택 쌓아뒀는대 아래 스택에서 바라보고 있던 redux 또는 navigate에 따라 리렌더되는 컴포넌트가 있었다면?
  • 그럼 상위 스택에서 변경되는 리덕스로 인해 하위 스택이 불필요하게 렌더링을 하고 있을 수 있겠다는 생각이 들었다 -> 화면을 쌓아놓고 사용하려면 그럼 계속 현재 화면인지 확인하는 조건을 갖고 있어야하는건가?
  • 대체 어디까지 최적화를 해야하는건가

stylelint

  • eslint만 있는게 아니였다

bugsnag

  • 에러 트래킹하고 코드 리뷰하고
  • 업무 외적으로 무언가 이슈를 분석하는게 이렇게 재밋는 일이였다
  • 간단한 일이라도 이유를 찾아보고 생각해보는게 보람차네