목록전체 글 (86)
eatthefrog
1. 역할의 차이- Jest/ Vitest (Test Runner) : 테스트를 실행주는 환경이다. 테스트 파일을 찾고, 실행하고, 성공/실패 여부를 알려준다.- RTL (Tesing Utility) : 리액트 컴포넌트를 조작하는 도구다. 버튼을 클릭하거나, 화면에 글자가 있는지 확인하는 기느을 제공한다. 2. Test Runner 비교: Jest VS VitestJest 특징: Meta(페이스북)에서 만들었으며, 오랫동안 리액트 생태계의 표준이었습니다. 'Create React App'의 기본 설정이기도 했습니다.장점: 레퍼런스가 방대하고 안정적입니다. 거의 모든 상황에 대한 문서가 존재합니다.단점: 설정이 다소 복잡할 수 있으며, 최신 빌드 도구인 Vite와 함께 쓸 때 속도가 느리고 설정 충돌이 날..
1. Vitest + @testing-library/react-hooks (renderHook)장점Vite 프로젝트와 통합 용이빠른 실행 속도 (ESM 네이티브)설정 최소화TypeScript 지원 우수renderHook으로 hooks 격리 테스트 가능모킹 API가 Jest와 유사단점생태계가 Jest보다 작음일부 Jest 플러그인 미지원 가능 2. Jest + @testing-library/react-hooks장점넓은 생태계와 문서많은 플러그인/예제팀 내 익숙함 가능성단점Vite와 설정 복잡도 증가ESM 변환 오버헤드실행 속도가 Vitest보다 느릴 수 있음Vite 프로젝트에서 설정 비용3. React Testing Library (최신 버전의 renderHook)장점별도 패키지 불필요 (RTL 내장)컴포..
Manual Testing : Error-prone: It’s hard to test all posiible combiniations and scenariosAutomated Testing: Very techinincal but allows you to test ALL building blocks at once 유닛 테스트: The most common / important kind of testTest the inidivisual building blocks (funtions, components) in isolationProjects typically contain doaens or hundereds of unit testes통합 테스트: Also imporant, but focus on unit t..
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 등)에 확보된 여유 공간을 의미한다.: 운영..