공통 컴포넌트 BigModal, Modal 제작공통 컴포넌트를 만드는 도중 크기와 용도가 다른 모달을 하나로 합쳐야 하나 아니면 분리를 해야 하나 고민이 많았다. 괜히 하나의 주제로 여러 개를 만들면 괜한 리소스가 낭비되는 게 아닌가 싶었기 때문인데, 많은 구글링 끝에 이 글을 보고 분리하기로 결정했다.더 가치 있는 공통 컴포넌트 만들기: KAKAO 기술 블로그URL: https://fe-developers.kakaoent.com/2024/240116-common-component/'공통'이라는 말의 선입견 때문에 반드시 하나를 재사용성 높게 구현해야 한다고 생각했는데, 오히려 그 생각이 독이 된 케이스였다. 해당 공통 컴포넌트에서 지향하는 방향과 확장성에 대해 더 고민해 볼 수 있던 기회였고, 결과적으..
TIL
자바스크립트 딥다이브를 공부하며 공부하는 내용이 지난 알고리즘 심화반에서 한 내용과 연관 지어 기록해 두기 ※ 배열여러 개의 값을 순차적으로 나열한 자료 구조요소(element): 배열이 가지고 있는 값으로, 자바스크립트의 모든 값은 배열의 요소가 될 수 있음인덱스(index): 요소가 배열에서 자신의 위치를 나타내는 0 이상의 정수로, 배열의 요소에 접근할 때 사용 ※ 일반적인 자료구조 배열밀집 배열자료구조에서 말하는 배열은 동일한 크기의 메모리 공간이 빈틈없이 연속적으로 나열된 자료구조 ※ 자바스크립트의 배열희소 배열배열의 요소가 연속적으로 이어져 있지 않는 배열 배열의 요소를 위한 각각의 메모리 공간은 동일한 크기를 갖지 않아도 되며, 연속적으로 이어져 있지 않을 수도 있음 따라서 엄밀히 일반적인 ..
아웃소싱 프로젝트는 특정 업무나 프로젝트를 회사 내부의 팀이 아닌 외부의 전문 회사나 프리랜서에게 의뢰하여 수행하는 것을 의미하는 것으로, 외주를 할 때 많이 사용하는 api를 사용해 보는 의미를 가진다고 한다. 1. 어떤 주제를 선택할까?필수 구현 사항 중에 지도 api, 유튜브 api, 설문조사 중 하나의 주제를 정해서 팀 프로젝트를 진행하는 한 주. 유튜브 api는 무언가 youtube의 일부 기능 구현의 느낌이고, 기획 당시 설문조사는 자유도가 조금 낮아 보여서 다방면에서 사용될 수 있는 지도 api를 선택했다. 2. 어떤 api를 사용할까?필수 구현 사항에 지도 api가 있다는 걸 보자마자 이전에 참여하려고 준비했었던 '2024 관광데이터 활용 공모전'이 떠올랐다. 공모전에 권장되는 Tour-..
주말 동안 내배캠 챌린지 반 녹화된 강의를 모두 돌려보면서 복습 한 번 진행하고, 과연 테스트 코드가 무엇일지 궁금해서 조금이나마 도전해 보았다. Q. 테스트는 QA팀이 있잖아!보통 소프트웨어를 검증하는 QA(Quality Assurance) 팀이라는 테스트 하는 조직이 있지만, 점차 공부해 나가면서 프론트엔드단에서 테스트라는 용어가 많이 들려서 과연 프론트엔드가 어떤 테스트를 진행하는지 궁금해져서 주말에 시간을 내 보았다.단위 테스트: 상호작용 하지 않는 독립적인 함수, 모듈, 클래스를 테스트통합 테스트: 묶었을 때 상호작용 테스트(모듈들, 클래스들)E2E 테스트(end-to-end): UI 테스트, 사용자 테스트단위 테스트 → E2E 테스트로 갈수록 cost가 비싸지고, 작성하기 까다로워짐 / 테스트..
알고리즘 심화반 타임어택 문제로 선택된 문제. 확실히 한 주 동안 풀어본 유형을 내주셔서 생각보다 빠르게 풀 수 있었다. 프로그래머스_다음 큰 숫자처음에는 재귀로 풀어야 할까? 생각하다가 좀 더 단순하게 생각했다. NumberOfOne이라는 함수를 만들어 1의 개수를 세었고, 이 함수에서 toString()과 match()는 모두 O(log n)의 시간 복잡도를 가진다. 따라서 solution 함수에서는 targetNumber의 초기값을 선언하고 while문의 조건문을 실행할 때 O(log n), while 루프를 돌 때 O(n)의 시간복잡도를 가짐으로 최종적으로 O(n)으로 계산하였다. 이것보다 비트 연산을 통해 더 빠르고, 시간 복잡도도 줄이는 방법이 있었는데 많이 난해하여 실제 적용하긴 어려울 듯하..
어느 정도 완성해서야 생각하지만, 아예 심화과제를 받았을 때부터라도 tailwind css로 리팩토링을 하고 진행했으면 어떨까 하는 아쉬움이 조금 남지만 이미 돌아가기에 너무 멀리 와버렸다. 이번 프로젝트는 styled-components로 마무리하고 다음 프로젝트 때부터 tailwind를 더 많이 써보기로! ※ 추가된 프로젝트 기능1. Header Nav 바 구현헤더는 글래스 모피즘으로 구성하였고, 홈으로 이동할 수 있는 로고, 마이페이지 이동 이미지, 로그인/로그아웃 버튼이 위치해 있다. 마이페이지 이미지는 로그인했을 때만 노출된다.2. jwt 인증 서버를 통한 로그인/회원가입 기능로그인을 하지 않으면 메인 페이지로 이동이 불가능하게 하였으며, 로그아웃 시에도 로그인 화면으로 되돌아온다.3. 마이 페..
기존에 진행한 프로젝트에 이어서 jwt 인증을 이용한 로그인/회원가입, json-server를 통해 Restful 하게 구현하기, Zustand 사용, Tanstack Query 이용하기 등 다양한 도전과제들이 추가된 이번 과제!처음 발제날 들을 땐 상당히 빡빡한 일정인 것 같았는데, 인증/인가 기능을 구현한 이후는 뭔가 9부 능선 넘은 것 처럼 수월하게 풀렸다. 다만, 익숙하지 않은 Tanstack Query를 사용하는데 반갑지 않은 오류를 만나고, 아직도 access Token을 header에 추가하여 보내는 과정은 뭔가 두리뭉실하게 알고 있는 느낌이다.하루를 꼬박 과제에 투자하니 어느정도 완성되었다! 트러블 슈팅도 크게 있지 않아 작업 과정은 내일 TIL에 모아서 올려야겠다..
지난 알고리즘 심화수업을 들은 이후 문제 풀이에만 집중하는 것 보다, 제한사항을 보고 시간복잡도를 먼저 생각한 뒤 알고리즘을 구현하려고 스스로 생각하고 있다. 해당 문제는 A와 B 배열을 가지고 (A최소값 x B최대값) + ... + (A 최대값 x B 최소값)이 될 수 있게 로직을 구현해야 함으로 최소 2번의 정렬과정을 거쳐야 한다. 그리고 계산된 값의 누적합을 구해야 함으로 reduce를 한 번 사용하였다. sort의 시간 복잡도는 nlog(n)이고, reduce는 log(n)이기에 최종적으로 코드의 시간 복잡도는 nlog(n)이 된다.