7/26 ~ 7/31
마이크로 서비스
- 모놀리식 -> 마이크로서비스
- 8가지: 안정성, 신뢰성, 확장성, 내결합성, 성능, 모니터링, 문서화, 재난대비
- 엔드포인트를 통해 들어온 요청흐름과 이에 대한 종속성을 그림으로 그려서 장애 지점을 예측
- Node.js로 구현하는 마이크로서비스
- 마이크로서비스 구축과 운영을 읽고 나서
iOS 리젝
- 회원가입에 본인인증이 필수인 상황
- iOS 리뷰어는 본인인증 불가 =>
리젝
Q. 본인인증을 꼭 해야만 한다면 리뷰어가 인증번호 받을 수 있는 방법?
7/19 ~ 7/25
가벼운 마음으로
- 이번주가 너무 힘들었기에 가볍게 쉬어가자는 마음으로
점프 투 파이썬
을 빌려왔다
타입스크립트
를 이어가고 싶었는데 가볍게 읽어가면서 숨고르기가 필요할 것 같아 선택한 파이썬
- 지난번
Django
로 프로젝트를 진행했었는데 너무 맨땅에 헤딩하기였다고 생각
언어는 다르지만 하고자 하는건 똑같으니깐
- 가볍게 읽어갈 수 있는게 바로 파이썬의 장점이지 않을까
- 가볍게 읽은 만큼 가볍게 실습을 해보고 싶은데 무엇을
안드로이드
- iOS보다 수월했던 한가지
- 스토어 심사 과정
- 그러나 최근에 정책이 업데이트 되면서 안드로이드도 조금 까다로워진듯하다
- 우선 가장 크게 앱 액세스 권한을 기입해야한다는것
- iOS는 앱 심사 정보로 로그인이 필요하면 테스트 계정을 적어두지만 안드로이드는 이 과정이 없었는데 이번에 추가되었다
- 하필 이 타이밍에...
타입스크립트
- 본격적으로 공부한적이 없었나
- 최근에 주말마다 조금이라도 공부하러 가는게 재미
- 기본적인 타입만 알아가는데도 너무 많다
firebase
- Dynamic link: 앱 설치 유무에 따라 스토어 또는 앱 실행
- Push, Dynamic link, analytics 한곳에서 처리
7/12 ~ 7/18
ref
리팩터링 자바스크립트
UI UX
- 앱스토어 상위 앱
- 이번에 신규 프로젝트 진행하면서 비슷한 업종의 앱을 그냥 다운받았다
그리고 멍
- UI만으로도 충격
- 누군가가 구현한 화면
- 그럼 나도 할 수 있다
firebase v6
- react-native-firebase v5에서 v6으로 마이그레이션
- 공식문서에도 마이그레이션 방법이 친절하게 나와있다
- 사용하는건 analytics, messaging
- AOS부터 깔끔하게 해결
- debugView로 이벤트 로그도 확인하고 테스트 푸시도 완료
- 근데 지금 iOS podfile이 꼬인듯
Starter Pack
- RN 0.63 업데이트에 이어 typescript를 적용하려고하는데
- 에러, 왜? => babel plugin 무언가가 충돌나는것 같다
RN 0.63
- RN 버전 업데이트 진행
- 기본으로 지원하는 flipper 버전도 업데이트 되었고, 변경된 LogBox도 내장되었다
Push navigation
- 앱이 background/foreground/closed 상태에서 푸시를 받고
- 그리고 푸시를 통해 앱을 진입하는 경우 네비게이션
- navigation 분기가 없는 경우에는 이미 해당 화면이 navigation에 등록되어있어서 단순하게 호출하여 해결
- 그러나 문제는 인증 또는 타입별로 navigation이 다르게 구성되는 경우
- 이때 등록되어있지 않은 화면을 호출하게되면 당연히 오류
- 분기되어있는 navigation 초기 화면에서 푸시를 통해 들어온 경우 이벤트를 제어하고자 Context 사용
- Consumer와 useContext를 사용해 한번에 전달
7/5 ~ 7/11
채널톡
- RN 0.62 미지원 난감...
- flipper도 미지원… => 문서에는 flipper 삭제하면 된다고 하는데
- cocoapod 사용 하는데 pod install 하면 오류 발생 => 해당 pod을 따라 들어가보면
Images.xcassets
와 Assets.car
로 이름이 다르다
sed -i '' 's/Assets.car/Images.xcassets/' ios/omf.xcodeproj/project.pbxproj
로 해당 파일에 저 부분을 치환해주기는 했는데 임시방편일뿐
ld: Could not find or use auto-linked library 'swiftCoreMIDI'
ld: symbol(s) not found for architecture x86_64
- 처음보는 swift를 찾지못해 나타나는 에러로 RN은 objective-C로 되어있으니 당연히 swift파일이 없는대? => 있는척 swift파일을 하나 만들어만 주고 넘어가본다
- 채널톡 문서
- (알고보니 문서에 swift파일도 만들고 설정 변경도 써있다)
- 그리고 그냥 하는데… 왜되지? => flipper plugin를 위해 추가했던
react-native-flipper
라이브러리가 충돌이 나는것 같다
- 아닌데? flipper도 plugin도 모두 잘된다 속았다
복습 - 리팩터링 2판
- 비슷해 보이는 걸 중복되는 코드로 만들고 나서 분리
- 너무 분리하려고 하다가 이런 것도 분리해야하나 생각이 들면 원복 후 다시 생각
- 기능 추가를 하고 싶을때 리팩터링
- 함수 추출 + 인라인 변수 제거 => 지역변수 제거로 유효범위 감소
- 생성자를 한번 더 감싸는 팩토리 패턴으로 클래스 변환
- 리팩터링 전에 기존에 있던 버그도 그대로 두고 리팩터링만 작업 => 버그, 성능 개선은 다른 작업
- 필요하지 않는 주석도 리팩터링을 통해 코드로 내재
- 테스트 코드 작성 후 리팩터링
- 함수 의존성 분리 + 여러개의 매개변수 대신 객체 형태로 전달
- 플래그 별로 switch-case 하기보다는 각각의 플래그를 나타내는 함수를 만들어서 사용
7/1 - 7/4
복습
- let 로컬 스코프 => var 호이스팅 해결
- 쉐도우 DOM => 문서 DOM은 현재 페이지 DOM이라면 쉐도우 DOM은 웹페이지 실행 중 생성된 가상 DOM으로 외부와 분리되고 스타일, 이벤트가 적용되지 않고 캡슐화 되어있음
- 의존성 주입 DI => 내부에서 사용하려는 의존관계에 있는 특정값을 외부에서 전달해주어 사용하므로써 의존성을 낮추는 효과
- 싱글턴 패턴 => 인스턴스를 최초 한번만 생성
- 팩토리 패턴 => 인스턴스 생성을 캡슐화하여 사용
STAR 기법
- Situation
- Task
- A라는 기존 기능 유지보수
- B라는 새로운 기능 추가
- Action
- A를 효과적으로 하기 위해 메모이제이션
- B를 위해 RN버전 업
- Result
- A에서 발생하는 고객 문의 감소
- B로 신규 고객 유치 및 유료 결제 증가
- 처음 STAR 기법으로 작성해보았다
- 결국
기존 앱 고도화
라는 한줄에 모두 담을 수 있는 것 같은데?
- 그동안 스토리를 알고 있는 사람이 봤을때에는 그 한줄로도 이해할 수 있지만, 그렇지 않은 사람에게는 설명과 뒷받침 되는 수치가 전달되어야한다