Develop 197

구글 플레이스토어 주문 ID 해석하기 (.. 뒤에 붙은 숫자의 비밀!)

구글 플레이스토어 구독상품을 유저가 구독하면 GPA.1111-1111-1111-11111 이런식으로 주문 ID가 생긴다. 22.02.15에 처음 구독하고 그 다음에는 갱신을 한다고 해보자. 그러면 주문ID는 매번 새롭게 생성될까? 아니다. 자세히 살펴보니 일련의 규칙이 있었다. 위 케이스를 보면, 동일한 주문ID 뒤에 붙는 숫자만 1씩 늘어나는 것을 볼 수 있다. 사진에는 나와있지 않지만, 최초 구독은 GPA.1111-1111-1111-11111 만 붙고, 1회차 갱신은 GPA.1111-1111-1111-11111..0 이 된다. 따라서, GPA.1111-1111-1111-11111..10 을 해석하면 이건 11회차 갱신이 되는 것이다! 총 12번을 결제한 유저인 것이다. (고마운 유저분이다!) 이렇게 ..

Develop 2023.02.23

암호 입력 없이 git push 하기

이미 깃헙에 ssh 올려져 있는데도, 로컬 터미널에서는 git push 시 암호 입력해야하는 경우가 있다. 그런 경우에는, 로컬 ssh-agent에 암호가 등록되어있지 않은 경우다. ssh-agent: SSH 키를 관리하고 키를 사용할 때마다 암호를 입력하지 않도록 도와주는 프로그램. eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa 이렇게 하면 등록 완료! 이제 로컬에서 git push 마다 암호를 입력하지 않아도 된다. 출처: Chat GPT (고마워 gpt.....)

Develop/Git 2023.02.21

dayjs.tz() 사용 시 주의할 점: timezone 등록 (Android Hermes)

react native에서 날짜 관련 코드를 다룰 때, dayjs 라이브러리를 사용하고 있다. 등록되지 않은 timezone 한국 시간으로 고정시켜주고 싶어서 다음 코드를 사용했는데, import dayjs from 'dayjs'; import DayJSUtc from 'dayjs/plugin/utc'; import DayJSTimezone from 'dayjs/plugin/timezone'; dayjs.extend(DayJSUtc); dayjs.extend(DayJSTimezone); const time = dayjs.tz("2023-02-17 09:00:00", "Asia/Seoul"); RangeError: com.facebook.hermes.intl.JSRangeErrorException: Inv..

Develop 2023.02.17

🎨아스키 아트를 아시나요? :: 텍스트와 특수문자만으로 사진,그림 흉내내기

아스키 아트 : 텍스트와 특수문자만을 조합하여 사진,그림,텍스트를 흉내내는 것을 말한다. : 이모티콘도 문자로 그림을 표현하는 점에서 아스키 아트의 일종이다. ex) -__- , :) 알아두면 재밌는 아스키 아트! 적절한 곳에 이용해보자.. 우리 회사에서 일하셨던 서버 개발자님은 로컬 서버를 켤 때 이 아스키 아트를 이용하셨다. 서버 켤 때마다 괜히 기분 좋음~😁😁 그렇다면 어떻게 만들까? 아래 사이트에서 다양한 폰트로 만나볼 수 있다. 아스키 아트 생성기 사이트👇 https://textkool.com/ko/test-ascii-art-generator?text=Your%20text%20here%20 Test ~330 fonts Ascii 아트 생성기 | TextKool 복사 및 붙여 넣기 Ascii 아트..

Develop 2023.02.09

Github Action 오류 해결 : InvalidParameterValue

첫번째 InvalidParameterValue 오류 An error occurred (InvalidParameterValue) when calling the UpdateEnvironment operation: Environment named xxx is in an invalid state for this operation. Must be Ready. 환경 상태가 ok가 아닌 다른 상태면 github action 도중 오류가 나는 것 같다. 사진처럼 ok 상태일 때 배포를 다시 진행해보자! 두번째 InvalidParameterValue 오류 An error occurred (InvalidParameterValue) when calling the UpdateEnvironment operation: No Ap..

Develop/서버 2023.02.08

에러해결: PayloadTooLargeError: request entity too large

AWS 로그를 뜯어보던 중... 다음 에러를 발견했다. PayloadTooLargeError: request entity too large 그대로 구글링하니 해결법은 쉬웠다. 파싱하려는 데이터의 크기가 너무 크기 때문에 생기는 에러이며, 파싱할 수 있는 최대치를 늘려주면 해결된다. 기본은 100kb인데, 50mb까지 늘려주었다. import { urlencoded, json } from 'body-parser'; app.use(json({ limit: '50mb' })); app.use(urlencoded({ limit: '50mb', extended: true })); body-parser란? - 요청의 본문을 해석해주는 미들웨어다. - post, put 요청 메소드의 request.body를 읽어올 ..

Develop/서버 2023.02.06

[ReactNative] KeyboardAvoidingView 안에 여러 TextInput을 사용할 때 offset 맞지 않는 문제 해결

[ReactNative] KeyboardAvoidingView 안에 여러 TextInput을 사용할 때 offset 맞지 않는 문제 해결 하나의 KeyboardAvoidingView 안에서 여러 TextInput을 사용하면 keyboardVerticalOffset이 첫 TextInput에 맞춰 세팅되어, 키보드 높이가 다른 TextInput을 만나게 되면 KeyboardAvoidingView 본래의 목적을 충족시키지 못하는 현상이 발생한다. 코드는 이렇고, {isStep1 && ( )} {isStep2 && ( )} {isStep3 && ( )} 현상은 이렇다. 분명 공식문서 에는

RDBMS와 NoSQL의 차이점

RDBMS 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고 관리해주는 소프트웨어 R: Relational - 관계형 데이터 모델을 기초로 두고, 모든 데이터를 2차원 테이블 형태로 표현한다. 장점: 명확한 데이터 구조 보장 단점: 복잡한 쿼리, Scale-up으로만 가능한 성능향상, 유연하지 못한 스키마 NoSQL RDBMS와는 달리 테이블 간 관계를 정의하지 않는다. 단 하나의 데이터 테이블만 있어, Join의 개념도 없다. 장점: 자유로운 데이터 구조, 데이터 분산 용이, Scale-up 뿐만 아니라 Scale-out도 가능 단점: 데이터 중복이 발생할 수 있음, 데이터 구조 결정이 어려움 종류 Key-Value Database key와 value의 쌍으로 저장된다. 값에는 어떠..

Develop 2023.01.27

[React Native] 가로의 길이가 바뀌는 디바이스(폴드) 대응: Dimensions -> useDimensions

루빗(루틴 관리 서비스 어플) 유저중에는 당연히 갤럭시 폴드 사용자도 있다. 종종 해당 유저들로부터 버그제보가 들어온다. 디바이스를 접거나 펴면 화면이 그에 맞게 대응되지 않는다는 것. 직접 버그를 재현해보았다. 정말이었다. 접은 상태: A / 편 상태: B 라고 하겠다. A에서 B로 바뀌었는데, 하단 탭바는 여전히 A에 맞게 대응되어 있다. 이유가 무엇일까? 바로 Dimensions에 있다. /* 👎 Bad */ import { Dimensions, View } from 'react-native'; const width = Dimensions.get('screen').width; const TabContainer = () => { return ( ... ) } 이렇게 사용하면 A에서 B 또는 B에서 A..