목록2025/11 (17)
eatthefrog
AppNavigation 컴포넌트는 네비게이션 컨테이너 역할을 하면서 동시에 모달 제어, 화면 체류 시간 추적 등 여러 책임을 가지고 있었다. 이 구조는 점차 복잡도가 높아지고 유지보수가 어려워지는 문제를 만들었다.베스트 프랙티스상태 + 로직 = 커스텀 훅UI와 직접 관계 없는 기능은 훅으로 분리해 재사용성과 테스트 용이성을 확보한다.컴포넌트는 렌더링에 집중AppNavigation은 오직 "네비게이션"이라는 단일 책임만 수행하도록 유지한다.비즈니스 로직은 서비스/훅 계층으로 이동네비게이션 레벨에서 복잡한 로직을 제거하면 전체 구조가 훨씬 명확해진다.
Condition업데이트 모달을 구현하고, 링크 이동 테스트 중에 올바른 링크임에도 불구하고, 주소를 찾지 못하는 이슈 발생 WHY? 시뮬레이터에서 테스트 하는 경우, ios 시뮬레이터에는 App Store이 없기 때문에, https://apps.apple.com/링크를 열 수 없어 Safari가 경고를 표시한다.Options1. Xcode를 사용하여 실제 기기에서 테스트 하기2. Info.plist에 Ap Store 스킴 추가하기itms-apps //App Store 앱을 직접 열 때 사용itms // Itunes Store 관련 스킵 Info.plist에 App Store 스킴 추가 시 효과1. `Linking.canOpenURL()` 정확도 향상- 추가 전: `itms-apps://` 스킴을 확..
1. MongoDB 도입 역사 (왜 등장했나?)2007년 웹서비스가 갑자기 확 커지던 시기기존 RDBMS(MySQL, Oracle)가스키마 고정수평 확장 어려움JSON 같은 유연한 데이터 받기 불편이런 약점들을 드러냄그 시점에 등장한 MongoDB는👉 “빠르게 변하는 데이터를 더 자유롭게 저장하고 확장하고 싶다!”이런 개발자들의 욕망(?)을 충족시킨 NoSQL 솔루션당시 개발자들 반응:“헉, 조인도 안 쓰고 이렇게 편하게 저장해도 되나…? 와 개꿀!”2. MongoDB 주요 개념① Document ModelJSON과 거의 똑같이 생긴 Document 기반테이블-행 구조가 아니라 컬렉션-문서(Document) 구조구조가 달라도 같은 컬렉션에 넣을 수 있어 유연함즉,👉 “급하게 필드 하나 넣고 싶을 때 ..
MCP...? 그게 몬데?AI 앱과 데이터 소스를 연결하는 USB-C 같은 표준 프로토콜이다. 즉, AI 시스템(특히 대형 언어 모델)이 외부 도구, 시스템 및 데이터 소스와 통합하고 데이터를 공유하는 방식들이 다양하면 다양할 수록 개발자가 힘드니, 이걸 해결하기 위해 등장한 오픈 소스 표준 프로토콜이다. AI 앱 M개 × 데이터 소스 N개 = M×N개의 커스텀 연결 필요예시:- 3개 AI 앱 (Claude, ChatGPT, Copilot)- 5개 데이터 소스 (Slack, GitHub, DB, Drive, Email)= 15개의 개별 통합 작업 필요 ❌MCP 도입 후:- 3개 MCP 클라이언트 + 5개 MCP 서버= 8개만 구축하면 됨 ✅ 그래서 언제 쓰면 좋은데 이거..?1. AI 코딩 어시스턴트 ..
요구사항 정리분석 요건은 앱 전반의 UX 개선과 비즈니스 지표 분석에 직접적으로 연관된 기능이다.1. 광고 수입 발생 시 해당 수익을 어떤 사용자가 만들었는지 매칭2. 각 화면에서 사용자가 얼마나 머무르는지 측정 구현 전략1. 광고 수익 이벤트 발생 -> 회원 정보와 결합 -> Firebase Analytics로 로깅2. 네비게이션컨테이너 레벨에서 전역 화면 전환을 감지하고, 진입/이탈 시각을 기록해 체류시간을 계산한 뒤 Firebase에 로깅 1. 패키지 설치 : @react-native-firebase/analytics고려되었던 후보군1. Sentry : it’s mainly for error tracking, it may not meet our marketing needs for user beha..
MongoDB Node.js Developer Path2025.11.181. OT 수강 완료 ✅2. Start Here - Intro to MongoDB 수강 완료 ✅3. Getting Started with MongoDB Atlas 수강 완료 ✅ 2025.11.204. MongoDB and the Document Model 수강 완료 ✅5. Connecting to a MongoDB Database Using the MongoDB Shell 수강 완료 ✅6. MongoDB Compass 수강 완료 ✅7. Connecting to MongoDB in Node.js 수강 완료 ✅8. MongoDB CRUD Operations: Insert and Find Documents 수강 완료 ✅9. MongoD..
Automatic failover : 자동 장애 조치* failover(continue operating): 시스템이나 서버에 장애가 발생했을 때 자동으로 예비 시스템으로 전환하여 서비스를 계속 유지하는 기능이다. scalability (확장성): 데이터베이스가 증가하는 데이터량과 사용자 트래픽을 처리하기 위해 수평적(서버 추가) 또는 수직적(서버 성능 향상) 방식으로 용량을 확장할 수 있는 능력이다. Shrading (샤딩): 대용량 데이터를 여러 서버(샤드)에 분산 저장하여 각 서버가 전체 데이터의 일부만 처리하도록 하는 수평적 확장 기법으로, MongoDB의 핵심 확장성 전략이다. Space on disk : 컴퓨터의 저장 장치 (하드 디스크, SSD 등)에 확보된 여유 공간을 의미한다.: 운영..
개요MongoDB는 NoSQL 데이터베이스로, 유연한 JSON 형식의 문서(BSON)로 데이터를 저장하는 오픈소스 데이터베이스입니다. 관계형 데이터베이스의 테이블과 행 대신 컬렉션과 문서를 사용하여 데이터를 관리합니다. 확장성과 성능이 뛰어나 현대적인 애플리케이션 개발에 널리 사용됩니다. 스키마가 유연하여 애플리케이션 요구사항 변화에 빠르게 대응할 수 있고, 개발 속도가 향상됩니다. 수평적 확장(샤딩)이 용이하여 대용량 데이터와 높은 트래픽을 효과적으로 처리할 수 있습니다. 강력한 쿼리 언어와 집계 파이프라인을 제공하여 복잡한 데이터 분석 및 처리가 가능합니다. 1. A document database stores data in JSON-like documents(not in tables) which c..
스키마와 Resolver의 타입이 어긋나는 문제는 생각보다 자주 발생합니다. 특히 날짜, 통계 데이터, 복합 구조를 다룰 때 더 빈번합니다. 아래는 동일한 문제를 예방하기 위한 실전 전략들입니다.1. 스키마 설계 시 고려해야 할 기준1) 필드의 최종 형태(Serialized Form)를 먼저 정의하기GraphQL 스키마는 클라이언트가 받게 되는 최종 데이터 형태를 기준으로 설계해야 합니다.예를 들어 날짜 관련 데이터를 API 내부에서는 { year, month } 형태로 계산하더라도,클라이언트가 문자열 "2025-11"을 받는 것이 더 직관적이라면 스키마도 String!으로 정의해야 합니다.반대로 { year: number; month: number } 구조가 더 설명적이라면 스키마도 객체 타입으로 정의..
이번 문제는 GraphQL 스키마에 선언된 타입과 Resolver가 실제로 반환하는 값의 타입이 서로 다를 때 발생하는 전형적인 타입 불일치(Type Mismatch) 이슈였습니다.1. 스키마(Schema) 정의GraphQL SDL에서 특정 필드를 다음과 같이 선언했다고 가정해 보겠습니다.type ExampleType { date: String!}스키마의 의도는 명확합니다.date 필드는 반드시 문자열(String) 이여야 하며, null도 허용하지 않습니다.2. 문제의 원인: Resolver가 다른 타입을 반환문제는 Resolver에서 스키마와 다른 형태의 값을 반환할 때 발생합니다.예를 들어:// ❌ 문제를 일으킨 예시date: { year: 2025, month: 11 }스키마는 String을 기..