전체 글 242

[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

Prefill Google Form Input Dynamically : 구글폼 설문 답변 미리 채우기(동적으로)

아래와 같은 구글폼을 작성하여 대상자들에게 링크를 공유할 때, 특정 답변은 미리 채워놓은채로 공유하고 싶을 때가 있다. 예를 들어 "안다희"라는 사람이 이 구글폼을 들어오면, 이름 란에 "안다희"가 미리 채워넣어져 있어야 한다. 우선 아래링크 대로 따라해서 미리 채워진 답변의 링크를 얻는다. https://support.google.com/a/users/answer/9308781?hl=ko 미리 채워진 답변의 링크 얻기 짠! 👇 https://docs.google.com/forms/d/e/1FAIpQLSdCm49VsH0-8GqkhE6rBKPkD3B0o_Ai5djyBxbVnZ7SWgUsow/viewform?usp=pp_url&entry.2005620554=%EC%95%88%EB%8B%A4%ED%9D%AC ..

카테고리 없음 2023.01.25

[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..

중첩된 Promise<Promise<T>>를 조심해!

async await 을 함수에서 리턴을 할 때 주의할 점이 있다. Bad 사례처럼, 이미 async가 붙은 함수에서는 리턴값 가장 바깥에 Promise가 붙기 때문에, 리턴값은 Promise가 붙으면 안된다. updateUserGoalVisible = async ( goalId: number, visible: boolean, ): Promise => { /* 👎 Bad 이미 async가 붙었기 때문에 리턴값은 순수한 Goal이어야 하는데, this.prisma.goal.update({}) 를 리턴함으로써 리턴값은 Promise이 되어버린다. 그래서 이 함수의 최종 리턴값은 Promise 이 되는 것이다. */ return this.prisma.goal.update({ where: { id: goalId..

Apollo Client query 시 주의점 (variables)

상황 query에 요구되는 variables가 있는데, 항상 같은 값으로 보내면 refetch되지 않는다. 같은 값으로 보냈던 이유: readQuery로 캐시 사용 위해 -> 캐시 사용을 포기하고 variables를 항상 다른 값으로 보낸다. 1️⃣ : 값이 항상 동일해서 refetch해도 query call 처리가 안된다? 2️⃣ : 값이 항상 달라지기 때문에 refetch하면 query call 처리가 잘 된다. 원인 1. apollo 라이브러리의 결함 또는 2. 프로젝트 내 apollo 설정 문제? (cache도 가끔 제대로 업데이트되지 않는데, 다른 프로젝트에서는 cache가 잘만 동작한다.) 어쨌든, 2️⃣로 하니까 해결됐음! const [query, { loading, data }] = use..

[Error] NDK at ~/Library/Android/sdk/ndk~~~~ did not have a source.properties file

react-native-vision-camera 라이브러리에서 요구하는 ndk가 깔려있지 않아도 yarn install 하면서 깔리는데, 만약 해당 ndk 가 로컬에서 꼬여있거나 손상되어 있으면 빌드에 문제를 줌. -> 해당 ndk 폴더 삭제하면 됨. [파인더 - cmd+shift+. 숨김 폴더 보기 - ~/root/라이브러리/Android/sdk/ndk/ - 문제있는 버전 폴더 삭제] 참고) https://stackoverflow.com/questions/64372383/ndk-at-library-android-sdk-ndk-bundle-did-not-have-a-source-properties-file