
이번 주차는 특별하게 과제를 진행했던 레포지토리를 첨부해본다.👉 내 레포지토리 바로가기이 안에는 용어 개념 정리도 해놓았고, 회고글도 작성해두었기 때문이다. 이번 주차 목표 (인프라 관점의 성능 최적화)(1) 프론트엔드 프로젝트 배포 프로세스를 이해한다.(2) 인프라 레벨 최적화 개념을 이해한다.(3) CDN 및 캐싱 전략을 수립할 수 있다. 1. 고민했던 문제- 다이어그램 툴 선택배포 파이프라인을 다이어그램으로 표현해야 했는데, 뭘로 그릴지 고민했다.처음에는 diagrams를 썼는데, 뭔가 허전하게 느껴졌다. - S3와 CloudFront의 CDN 측정S3와 CloudFront를 사용했을 때의 효과를 비교하려고 했는데, 처음에는 캐싱 상태로 측정하다 보니 결과가 잘 안 나왔다.과제 제출 전에 다시 검..
🎯 이번 챕터를 시작하며 꼭 해내고 싶었던 목표 테스트코드 작성에 대한 두려움 극복TDD 개발론 적용다양한 기능 테스트 시도MSW 고수가 되기 🏆 이번 챕터를 마무리하며 가장 기억에 남는 성취사실 기능이 대부분 구현된 상태에서 "추가 기능을 구현하면서 테스트 코드를 작성할 수 있을까?"라는 고민이 있었는데, 8주차 과제를 통해 그 부분이 많이 해소된 것 같아요. TDD를 활용하면서 수많은 오류를 보며 통과시켰던 경험이 유익했습니다.또한, MSW를 처음부터 직접 적용해볼 기회를 가졌던 것도 좋았습니다. 기능 구현뿐 아니라 테스트코드 작성에서도 MSW를 활용해 mocking을 해볼 수 있었고, utils나 커스텀 훅 단위 테스트도 자연스럽게 진행할 수 있었습니다. 덕분에 이제는 "MSW, 두렵지 않아!"..
이번 주차 목표 (프런트엔드 테스트 코드)(1) 테스트의 필요성을 이해한다.(2) 기본적인 테스트를 작성할 수 있다. 1. 고민했던 문제- 통합 테스트를 진행하면서 mock 데이터를 생성하고 리스트에 반영하는 흐름이 자연스럽게 연결되었는지 판단하기 어려웠고, 실제로 테스트가 여러 번 실패하면서 디버깅에 시간을 많이 썼다.하지만 그 과정에서 비동기 렌더링 타이밍, 상태 반영 시점 등을 파악하게 되면서 테스트에 대한 이해도가 확실히 높아졌다. 2. 시도 및 해결- 이전에는 렌더링 안정화를 위해 waitFor를 사용했지만, 비동기 로직이 없는 경우에는 await act(() => null)처럼 최소한의 act 호출만으로도 충분하다는 점을 멘토링을 통해 알게 되었고, 이를 코드에 반영해 개선했다.// 개선..
이번 주차 목표 (관심사 분리와 폴더구조)(1) 단일책임원칙이 적용된 좋은 폴더 구조를 안다. 1. 문제 (과제, 프로젝트를 진행하면서 부딪혔던 기술적인 문제)- Jotai와 Tanstack query를 함께 사용할 때의 일관성TanStack Query가 “요청 → 캐싱 → 로딩/에러 관리”의 역할을 해준다는 점은 이해했지만, 기존 상태 관리의 actions 역할을 어디까지 위임할 수 있는지가 애매하게 느껴졌다.예를 들어 기존에는 addComment, updatePost 등의 상태 변경 로직을 Jotai 기반으로 직접 관리했는데, 이런 동작들을 이제는 mutation으로 옮겨야 하나? 아니면 여전히 Jotai로 관리해야 하나?로컬 상태와 서버 상태의 책임 분리가 뚜렷하지 않아서 혼란스러웠다. 2. 시..
이번 주차 목표 (디자인 패턴과 함수형 프로그래밍)(1) 값 함수 액션을 구분할 수 있다. 1. 문제 (과제, 프로젝트를 진행하면서 부딪혔던 기술적인 문제)- ProductManager 추상화현재 새 상품 추가는 ProductForm 컴포넌트로 분리했지만, 기존 상품 수정 영역은 핸들러 함수가 많아져 UI와 로직을 분리하지 못했다.특히 setEditingProduct를 직접 다루는 handleProductNameUpdate, handlePriceUpdate, handleStockUpdate처럼 필드별로 상태를 갱신하는 로직이 반복되면서 코드가 점점 길어지고 중복되는 느낌이 들었다. - 액션과 순수함수 분리에 대한 고민로직을 어디까지 hook 안에 두고, 어떤 계산을 utils 또는 models로 분리해..

이번 주차 목표 (클린코드와 리팩토링)(1) 내가 작성한 코드가 클린코드임을 설명할 수 있다.(2) 클린하지않은 코드를 클린하게 만들 수 있다. 1. 문제 (과제, 프로젝트를 진행하면서 부딪혔던 기술적인 문제)- 화요일에 대한 테스트코드 실패할인과 포인트 계산에 대한 테스트 코드가 계속 실패해서 calcCart 함수의 로직을 여러 번 수정했다. 알고 보니 로직이 틀린 게 아니라, 테스트 시점의 날짜가 실제로 화요일이라 할인 로직이 정상 작동한 것이 원인이었다. 테스트에 실패하자 일부러 수요일로 바꾸고 흐린눈으로 넘겼던 기억도 있다... 😭 - React 마이그레이션 시 코드 작성과 구조 분리의 어려움Basic 코드에서 사용하던 로직을 그대로 React로 옮긴 뒤 개선을 시도했지만, "React에서는 ..

🙋♀️ 간단한 자기소개 저는 AI-OCR 문서 자동화 시스템을 개발하고 있는 4년 차 프론트엔드 개발자 김유빈입니다. Vue와 Typescript를 주로 사용해왔고, 최근에는 Javascript 딥다이브와 React 생태계를 공부하고 있습니다.벌써 항해를 시작한지 3주가 지났네요. 1챕터는 JS & React 딥다이브였는데요! 그동안의 경험을 돌아보며 회고해봅니다. 🎯 이번 챕터를 시작하며 꼭 해내고 싶었던 목표 여러 목표가 있었지만, 가장 중요하게 생각한 건 공부하는 습관을 들이는 것이였습니다. 퇴근하고 앉아서 공부하는 거 힘들잖아요?기술적인 목표로는 두 가지를 세웠습니다.Vanilla JavaScript 코드에 대한 두려움 없애기React의 동작 원리를 이해하고 사용하는 개발자 되기 🏆 이번..
이번 주차 목표 (프레임워크 없이 SPA 만들기)(1) 가상 DOM을 정의하고 사용할 수 있다.(2) 가상 DOM을 이용하여 이벤트 관리를 최적화할 수 있다.(3) diff 알고리즘을 이용하여 불필요한 렌더링을 최소화할 수 있다. 1. 문제 (과제, 프로젝트를 진행하면서 부딪혔던 기술적인 문제)- 전체적인 가상 DOM 구현가상돔 개념은 Vue와 React가 이를 기반으로 만들어진 프레임워크라서 익숙했다. 아무래도 기술면접에서도 자주 나오는 질문 사항이니깐.직접적으로 구현하는 건 처음이었는데, 개념적으로 이해하는 것과 실제로 구현하는 것의 차이를 실감했다... 진짜 어려웠다. - 이벤트 핸들러 구현createElement와 updateElement 내부에서 이벤트 핸들러를 다루는 부분이 까다로웠다. 가능..
- Total
- Today
- Yesterday
- 심층신경망
- 프론트엔드개발자
- 항해플러스
- 이직
- 항해99
- 하이퍼파라미터
- 항해플러스후기
- 모두를위한머신러닝딥러닝
- 프론트엔드
- SungKim
- 최적화알고리즘
- edwith
- 가상돔
- 프론트엔드기술면접
- 브라우저 렌더링
- 기술면접
- 5기
- 최적화문제
- 항해솔직후기
- 항해플러스5기
- 딥러닝2단계
- 경력
- 딥러닝
- 자바스크립트개념
- virtual dom
- 머신러닝
- 배치정규화
- 경력기술면접
- 항해플러스프론트엔드
- 개발자
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |