전체 글

    [Node.js, MySQL] Pool.getConnection() 속도 문제

    회사에선 cafe24와 AWS 두 개의 호스팅을 사용한다. 모두 3계층 아키텍쳐를 사용하여, 프레젠테이션 / 애플리케이션 / 데이터베이스의 구조다. 데이터베이스는 기존 쇼핑몰 쪽의 cafe24와 내가 만든 AWS Aurora가 있다. AWS Aurora는 Pool연결이 빠른데, cafe24쪽 db의 첫 연결이 굉장히 느렸다.. 처음 mysql2/promise의 pool연결이 느리고 그 후부턴 빨랐다. 그래서 생기는 문제가 첫로그인시 6초나 걸리는 기현상이 일어났다.. 처음 연결에만 5초가 걸렸다. 끔찍 레퍼런스도 없고 고통받았다. pool을 어플을 켜자마자 한번 강제로 연결시켜버리고, 로그인이 끝나면 Pool을 해제시키니까 시간이 많이 단축됐다. exports.mysqlShopStart = async (..

    [Node.Js, ReactNative] FCM Notification firebase-admin 전체 유저에게 푸쉬알람 보내기

    파이어베이스 콘솔에서 메시지를 푸시할 수도 있겠지만, 여러 이유들로 서버에서 전체메시지를 직접 보내기로했다.. 애널리틱스등 유저활동을 감지했으면 좋겠을 경우에는 그냥 콘솔에서 보내면 되는데, 보내야 할 전체 알람의 기능적 성격과 실무자들의 편의를 위해 서버에서 직접 보내기로 했다. npm install firebase-admin firebase-admin을 설치해준다. firebase-admin Firebase admin SDK for Node.js. Latest version: 10.0.2, last published: 21 days ago. Start using firebase-admin in your project by running `npm i firebase-admin`. There are 19..

    [ReactNative] FCM Android Head Up Push Alarm (react-native-firebase/messaging) 특정 유저에게 푸쉬알람 보내기

    안드로이드 푸쉬 알람.. Expo로 개발할 땐 expo-notifications을 사용해서 푸쉬알람을 했다. 그땐 분명 잘 된거야.. 안드로이드 헤드업 푸쉬알람 (알람이 위에 뜨는 것) cli로 바꾸고, 헤드업 알람이 안되기 시작했다. 씨게 고통을 받았다. 씨게.. react-native-firebase/messaging 을 사용하면서 셋팅 다 했는데, 안드로이드에서 헤드업 알람이 안되는 나같은 사람들을 위해 글을 남긴다.. 결론적으로 자바단을 작업해줘야한다. FCM API은 head-up을 아직 지원안한다는 말을 들었고 (2020년 기준) nodejs에서 firebase-admin도 지원안한다는 결과를 얻었다. 진짜 별별짓을 다했는데.. 여기서 해결했다...ㅠ 슨상님... Android Heads up..

    [ReactNative] KaKaoLogin Android Key Hash Error Expo -> ReactNative Cli

    Expo에서 발급받은 jks 파일의 해쉬키를 뽑아도 뽑아도 계속 카카오 로그인에 문제가 생겼다. 굉장히 고통받았다. restapi로는 앱내에선 간편로그인을 시킬 수 없다. (카카오 공식문서에서도 못을 박았다 못시킨다고.. 어떻게든 방법을 찾아내보려 하긴했는데..) 일단 sdk를 붙이고 해쉬키를 붙여야했다. keytool -exportcert -alias -keystore | openssl sha1 -binary | openssl base64 이 방법으로 뽑아낸 키는 일단 안먹히고.. 안드로이드 스튜디오에서 자바로 직접 뽑아낸 키도 먹히지 않았다. 그래서 jks 파일의 인증서 지문을 뽑아냈다. echo sha1인증서지문 | xxd -r -p | openssl base64 응 그래도 안돼~^^ 성질이 뻗치다..

    [ReactNative] Expo -> ReactNative Cli 전환 및 안드로이드 배포

    프론트 인프라를 Expo -> ReactNative Cli로 교체하기로 했다.. 빠르게 배포하려고 한 Expo가 한계점이 꽤 많았기 때문이다. 생산성은 높았지만, 마케터나 기획자가 요구하는 각종 정보를 제공하는데 기존엔 Api를 직접 만들어내 엇비슷하게나마 통계를 내고 했지만, 더 정확한 정보를 위해 여러 SDK를 붙이기로 했다. (RestApi 소셜로그인 방식은 간편로그인을 할 수 없다는 치명적인 약점이 결정에 한몫했다.) 일단 어플 생태계 자체를 잘 모르다보니까 막 만들었어서, 이번엔 좀 제대로 구축하고 만들려했다. 그러기 위해선 Expo에서 자동으로 발급한 각종 인증과 키들을 cli환경에 맞게 바꾸는 일이 필요했는데, 레퍼런스도 부족하고 굉장히 고통을 겪었다. 특히 맥북에서 안드로이드 환경설정 진짜..

    [ReactNative] 푸쉬 알람 설정 Expo-notifications FCM

    부랴부랴 앱을 만드는 중 강한 생산성이 필요했기에, Expo의 노예가 됐다. 앱 생태계를 잘 모르니까 답답쓰 백엔드만 주구장창 하다가 어플 급하게 만드려니 아휴ㅠ.. 그래도 오늘 앱스토어, 구글스토어 모두 승인이 났다 오예~~ 일단 푸쉬 알람같은 경우는 IOS는 nodejs랑 expo-notifications 활용해서 잘 가는데, 안드로이드는... 안드로이드는..... 안됐다.... 이 문제로 삼일 내내 고통받다가, 알고보니 안드로이드는 expo-notifications말고 FCM도 따로 설정해줘야 한다는 충격적인 비밀을 알았다. 이거 expo-notifications 공식문서에도 제대로 설명 안되어 있었는데, 으으 일단 공식문서를 살펴보자.. Using FCM for Push Notifications ..

    [Node.js] Apple Login Passport 애플 로그인

    애플스토어에 앱을 만들어서 제출해야 했다. 회사의 경쟁 업체도 앱을 준비중이라 팀 모두가 속도있게 작업했다. 앱 생태계는 모두 처음이라, 팀원들은 디자인과 마케팅 준비를 하고 나는 법인 DUNS 번호 발급부터 웹뷰 제작과 배포까지 하루정도 공부하고(ㅠ), 다음날 제출했다. 정신없는 일주일이 후루룩 지나갔다. 애플 심사는 하루만에 이뤄졌는데, 리젝을 당했다..ㅎㅎ.. 요약 - 카카오, 네이버 소셜로그인은 있는데 왜 애플로그인은 없냐 근데, 이런걸 대비해서 일반로그인까지 만들어서 넣었는데.. 정말..ㅠ 까라면 까야지.. 소셜로그인은 라이브러리가 많았는데, 기존 네이버와 카카오 로그인을 만들 때 사용한 passport를 사용하기로 했다. 익숙해서.. Apple Developer Apple 플랫폼에서 개발할 절..

    [Linux Ubuntu Nginx] net::ERR_FAILED 413 CORS ERROR

    실서버에서 잘되던 업로드가.. 개발서버에서 안되기 시작했다. 신경이 개복치마냥 예민해져서는 왜 잘되던게 안될까 뭘까 날까 일까 눌라라라라하다가, 알고보니 환경셋팅이 똑같지 않았었다.. 파일업로드의 용량문제로 인한 cors 오류였다. 예전에 해결한 문제였는데, 같은걸 겪고도 기억 못하다니.. 이게 다 정신력의 문제다 아하하하 NodeJs Multer-AWS-S3, React Axios formdata 형식으로 자료를 주고 받았다. sudo vi /etc/nginx/nginx.conf 들어가서 http { client_max_body_size 15M; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 20..