6/28 ~ 6/30
Map<String, Any>
- 코틀린 Post Body로
Map<String, List<Int>>
이런 형태로 보내고 싶은데
- 브릿지로 받아온 타입은
ReadableMap
이걸 toHashMap()
해주니깐 타입이 Map<String, Any>
이 된다
- API request 타입은
Map<String, List<Int>>
인데...
- 어쩔 수 없이 Any인가보다 했는데???
Parameter type must not include a type variable or wildcard
toHashMap
했는데 왜 request type을 Map
으로 했을까... HashMap
으로 하니깐 해결
retrofit2
- 코틀린 스터디 끝나고 RN + kotlin 사이드 프로젝트를 진행하는데 모든 로직을 코틀린으로 작성하다보니 장벽이 생각보다 높다
- REST API 호출을 위해
retrofit2
모듈을 사용하는데 잘 풀리다가 갑자기 오류
Expected BEGIN_ARRAY but was BEGIN_OBJECT
- 왜 갑자기? API가 바뀐건가? 아닌데?
- 그냥 잊고 하루 뒤에 다시 보니 아무래도 타입은 맞는데...
- 설마? API 인증 토큰을 임의로 알려준 값을 사용하고 있었는데 (100년짜리라 그랬는데.. 만료라니)
- 인증 실패로 리스트가 내려오리라 예상된 포맷에 이상하고 독특한 서블렛 메세지를 보내주고 있었다
바꿔주세요!
- 근데 타입 포맷을 너무 강하게 지키는 기분은 그냥 기분일뿐일까
6/21 ~ 6/27
kotlin DSL
build.gradle -> build.gradle.kts
- 맞는데 왜 안되는걸까
- cli가 문제인걸까 안드로이드 빌드하면 되는데... 정답!
cli
setting.gradle.kts
로 바꾸고 나서 autolinking
안되는 것과 같은 이슈겠지
metro
- RN을 하면서 metro에 대해 깊게 알아보지 않은듯
- 팩트
6/14 ~ 6/20
serialize
- 직렬화/역직렬화?
JSON.stringify
?
- 코틀린에서 RN브릿지로 list 데이터를 넘겨주고 싶은데
promise.resolve
에 안들어간다
string
으로 보내야할까
- 그럼 list를
JSON.stringify
해서 보내볼까?
- 그러기전에 찾아보는 직렬화
- ...이럴수가
- string이 아니라
WritableNativeMap
으로 넣으면 되는거였다
- 이제 build.gradle Groovy DSL을 build.gradle.kts kotlin DSL로 바꿔보려고 도전!
- 코틀린스터디하면서 DSL을 언제 쓰지 했는데 여기서 쓸줄이야... 마이그레이션 참고 블로그
RN kotlin
- 코틀린 스터디하면서
react-native-starter
에서 java를 kotlin으로 변경했다
- 그리고 스터디 파이널 프로젝트를 하려고 하는데...
- 라이브러리 linking이 iOS는 잘되는데 안드로이드는 실패하고 있다
- 오류메세지도 수상하게도 너무나도 linking 스럽다
- 혹시나 하는 마음으로
react-native link ...
- 정답입니다~ 에러가 나타났다
- autolinking, warning은 스킵하더라도 너무나도 딱 떠버린
Error
Error: ENOENT: no such file or directory, open '.../MainApplication.java'
- 당연한거 아닌가..? kotlin으로 바꿨는데 왜 아직도
MainApplication.java
를 찾고 있는걸까
MainApplication.kt
를 봐야하는거 아닌가?
- (++++++
react-native.config.js
에서 설정해주면 된다)
6/7 ~ 6/13
코틀린
- 라인개발실록 코틀린의 현재와 미래
- 코틀린을 선택한 이유 = 람다 + 적은 코드(코틀린 스터디 내내 익히 들어온)
안드로이의 자바와 진짜 자바랑 다르다
- 뭐!
- 자바와 비슷한 무언가 = 안드로이드의 자바 =>
Dalvik
- (dalvik 어디서 들어봤는데..? bugsnag에서 자주 본거같다)
- 어쨌든 안드로이드는 Dalvik을 실행하고 자바 API를 그대로 복제한 안드로이드 플랫폼 API
- 이게 오래된 버전의 자바를 기반으로 하고 있어서 최신 API를 사용하는데 어려움
- 그래서 코틀린을 도입했는데
- 어플리케이션 속도는 뭐 차이는 없지만 대용량 프로젝트에서의 컴파일 시간이 너무 느리다고 한다 ㅋㅋㅋ
앱이 삭제되다니
- 구글 플레이스토어에서 갑자기 메일이 날라왔다
- 앱이 리젝이라니!!!
- 안드로이드 너마저...
- 개인정보처리방침을 iOS만 까다롭게 처리하길래 조건으로 숨겨놨었다
- 리젝될만하다
- 근데 이게 아닌가?
JPA
- 코틀린 스터디 하다가 코드 리뷰 아니도 코드 소개 받으며 JPA 읽어보기
- 어노테이션이 너무 많았지만
- 어노테이션을 하나 달아서 보일러플레이트를 줄여주는 좋은 느낌
brownfield
브라운필드라는걸 배웠다!
- 항상 배울 점이 많은 친구가 문득 나에게 자랑하는데 나는 그게 뭔지 몰라..!
- 이번에도 나에게 알려주면 좋겠구나
- 그래서 공유 받은 링크
- 역시 콜스택 짱
- 아마도 브라운필드라는 것은 나의 선생님이였던 존경하는 팀장님이 이 친구에게 알려준 것 같다
- 그러나 이 글의 내용과는 다르게? RN에서 Native로 전환을 하기 위해 시도하고자 공유된 것으로 보인다
- 살짝 슬프지만...
- 어쨌든 새로운 무언가를 나도 알아가니 좋다!
- 기존 네이티브에서 멀티플랫폼으로 전환하는 과정
- 한번에 넘어가지 않고 공존하는 모양을 취하는 것
- 그린필드라는 것이 있는데 이것은 순수 멀티플랫폼으로 개발하는 것
- 쌩뚱맞게 갑자기 블루그린 배포법이 생각난다
onLoadEnd
- 이미지를 보여주는 애니메이션이 동작하지 않았다
- 처음에는 애니메이션이 동작하는 타이밍이 얽혀있구나하고 생각했다
- 하나씩 정리하면서 따라가는데 아무리 봐도
리렌더하는 시점
에 애니메이션이 동작하고 있었다
- 테스트해보려고 상태를 업데이트했는데
이번엔 동작하지 않았다
- 대체 왜? 어느 시점이 문제인걸까?
- 분명 이미지 소스는 제대로 들어왔고 확인도 되는데 동작하지 않는걸까?
- 애니메이션을 주는 함수를 이벤트를 줘서 직접 호출해보기로 했다
- 코드를 통해 유추해보기는 모든 이미지를 불러오는 시점에 애니메이션이 동작해야한다
이미지가 로드되는 시점
이 문제점이였다
- 처음에는 이미지 데이터가 존재하지 않았고
FastImage
는 친절하게도 불러올 수 없음 onError
- 그러나 우리가 핸들링하고 있는 이벤트는
onLoadEnd
였다
- 그냥 불러오는 과정이 성공, 실패 여부와 상관없이 정말
End
시점마다 호출되고 있었다
start -> onLoad -> onLoadEnd
, start -> onError -> onLoadEnd
- 그렇다면 처음 데이터가 없는 시점에 이미 한번
- 정상적으로 불러오고 나서 또 한번
- 두번씩 호출되고 있는 상황이였고 기존에 실제 이미지 수 보다 더 큰 값과 비교하고 있던 조건문은 우연하게도 자연스럽게 실행되고 있었던 것이다...
- 어쩌다 이런일이 발생했을까
onLoad
와 onLoadEnd
- 갑자기 의식의 흐름
역시 이름 짓는게 제일 어렵다
6/1 ~ 6/6
어쩌다보니
- 정말 오랜만에 주말동안 쭉 공부할 수 있는 시간을 갖게 되었다
- 근데 왜 이렇게 방이 지저분하지
- 시간이 여유있으니 미리 스터디 준비도 하고 다음 스터디도 한번 보고
- 이번주는 여유롭게 보낼 수 있을듯!