- [ Frontend/취준 - 코딩테스트 공부 ][코디테스트 공부] - JavaScript Array.fill()의 함정 (참조 타입과 원시 타입의 차이)2025-02-05 16:17:05JavaScript Array.fill()의 함정 (참조 타입과 원시 타입의 차이) 작성 배경DFS, BFS와 같은 그래프 알고리즘을 구현하면서 2차원 배열을 만들어 초기화하는 경우가 많습니다.특히 인접 리스트를 만들거나 방문(boolean) 배열을 초기화할 때 충분히 만날 수 있는 문제라고 생각합니다. (그게 바로 저..) 사전 지식JavaScript에서 데이터 타입은 크게 두 가지로 나뉠 수 있습니다.1. 원시 타입- Number, String, Boolean, null, undefined 등- 값 자체가 복사됨2. 참조 타입- Object, Array 등- 메모리 주소가 복사됨 예시 코드// 1. 원시 타입 예시const 원시타입배열 = new Array(3).fill(false);원시타입배열[..
- [ 카테고리 없음 ]프로젝트 최적화 - bundle analyzer를 사용해 bundle size 줄이기 (+ Gzip)2025-01-19 14:33:15프로젝트 최적화 - bundle analyzer를 사용해 bundle size 줄이기 Bundle이란?여러 개의 파일을 하나로 묶어서 처리하는 것을 의미합니다.JavaScript 파일들을 묶어서 생성되며, 웹 애플리케이션에서 필요한 리소스를 단일 파일로 묶어 관리하고 전달하는 데 사용된다. 웹 애플리케이션의 경우 HTML, CSS, Javascript로 구성되는데 이들을 따로 모두 요청하게 되면 서버-클라이언트 요청 교환 횟수가 늘어나고 응답시간이 느려질 수 있는데 이런 필요한 파일들을 하나로 묶어 사용해 크기를 줄이고 요청횟수를 줄인다.일반적인 react앱과 달리 nextjs앱은 기본적으로 코드스플리팅을 지원해 페이지별로 필요한 스크립트만 번들링하게 된다.하지만 그렇다하더라도 불필요한 스크립트가 같이 ..
- [ Frontend/트러블 슈팅 ][트러블 슈팅] React Suspense + TanStack Query 무한루프 문제 해결하기2025-01-09 22:46:39[트러블 슈팅]React Suspense + TanStack Query 무한루프 문제 해결하기 게시글 리스트를 Tanstack Query에서 제공하는 useInfiniteQuery를 사용해 무한 스크롤을 구현했습니다. 그러면서 당연하게 로딩과 에러 처리를 쉽게 도와주는 isLoading, isError를 사용해서 관리를 해야겠다는 생각을 했습니다. isLoading, isError를 사용하게 되면 아래와 같이 명령적 데이터 패칭 방식을 사용합니다.// useQuery 부분은 공식문서 코드를 예시로 가져왔습니다!const { data, isLoading, isError } = useQuery({ queryKey: ["super-heroes"], queryFn: getAllSuperHero,});if ..
- [ Frontend/취준 - 코딩테스트 공부 ]parseInt VS Number 차이점2024-12-28 13:23:36코딩 테스트 문제를 풀다보니 다른 사람의 코드에서 어떤 사람은 parseInt 어떤 사람은 Number를 사용하는 모습을 보고(필자는 주로 Number 사용) 무슨 차이점이 있는지 공부해 봤습니다. 한국인을 위해 결론을 먼저 말하자면둘 다 문자열을 숫자 형태로 변환시킬때 사용합니다.parseInt()는 문자열 형태에 있는 숫자를 숫자(정수)만 뽑아서 변환해주는 기능이 있고Number()는 문자열 전체가 숫자일 때 소수점까지 가져오는 기능이 있습니다. parseInt() 기본 형태parseInt(string, radix); // radix는 진수의미 (2진수, 10진수) 문자열 타입의 매개변수를 정수로 리턴해주는 함수 입니다. Number() 기본 형태Number(값); Number()는 인자로 들어온 ..
- [ Frontend/최적화 ][프로젝트] 성능 최적화 해보자!!!2024-12-26 15:00:26들어가기 앞서..처음 프로젝트를 배포하고 중간 피드백을 받았습니다. 약 50명의 부트캠프 동료들과 실제 직원분들께 유저 테스트를 진행했고, 그 결과 "검색 시 로딩 상태가 불편해요", "페이지 전환할 때 깜빡임이 있어요", "에러가 났을 때 어떻게 해야 할지 모르겠어요" 등의 피드백을 받으면서 코드가 '동작하는 것'과 '잘 동작하는 것'의 차이를 실감했습니다. 더 나은 서비스를 만들기 위해 Next.js와 Tanstack Query를 공부했고 최적화 관련 강의를 들으면서 선언형 프로그래밍, 체계적인 에러 처리, SSR 등 다양한 기술을 접하게 되었고, 프로젝트에 적용해 보기로 했습니다. 단순히 기능만 동작하는 코드가 아닌, 유지보수 하기 좋고 사용자 경험도 개선된 서비스를 만들기 위해 아래와 같은 최적..
- [ 카테고리 없음 ]프로젝트 최적화 (랜딩 페이지)2024-12-25 18:26:14최적화 공부를 해오면서 현재 진행하고 있는 프로젝트 마지막에 최적화를 진행해보려고합니다. 랜딩 페이지(Landing Page) 최적화 계획1. 불필요한 html,css 수정2. Sementic Tag 적극사용3. constant를 적극활용해 map 메서드 사용 (코드 간소화 작업)4. Next.js Link 컴포넌트 사용으로 view에 들어왔을때 해당 href 경로 페이지 미리 frefetch 하도록 수정5. Next.js 기본으로 지원해주는 dynamic사용으로 컴포넌트 동적으로 가져오기6. video 최적화 (mp4 => webm) - 크기 압축, 시간 단축7. Framer Motion 공식 홈페이지에 나오는 module 사이즈 줄이는 방법 적용8. png => webp로 변경, 이미지 압축, avi..
- [ 카테고리 없음 ]json-server sort 기능 작성방식 변경됨!!2024-11-25 14:43:03json-server sort 기능 작성방식 변경됨!! 제목 그대로 sort 기능 작성방식이 변경돼서 공유하고자?( 오랜만에 사용해서 저는 몰랐습니다..) 작성해봅니다 ㅎㅎhttps://github.com/typicode/json-server GitHub - typicode/json-server: Get a full fake REST API with zero coding in less than 30 seconds (seriously)Get a full fake REST API with zero coding in less than 30 seconds (seriously) - typicode/json-servergithub.com 원래 asc, desc 적용방법_order에 asc, desc 값을 넣어서 오..
- [ Frontend/Next.js ][Next.js] Next.js App Router + NextAuth.js authOptions 오류 해결 [10/10 study]2024-10-10 18:54:17Next.js App Router + NextAuth.js authOptions 오류 해결 상황Next.js App Router + NextAuth 강의를 들으면서 마지막에 빌드 & 배포 부분을 공부하는 중yarn build를 하니까 아래와 같은 에러가 나와서 스택 오버플로우랑 깃허브, 블로그를 아무리 뒤지고 바꿔도 해결이 안됐는데 정답을 알고나니 허무해졌지만 다른분들은 나와 같은 고민을 안겪게 하고 싶기 때문에! (다 아실수도,,,) 이유아래 코드를 보다시피 authOptions를 따로 만들어줘서 NextAuth의 인수로 넣어주고도 있고 export해서 내보내주고도 있다.nextJs 13.4+ 에서는 /app/api/auth/[...nextauth]/route.ts는 route hanlder을 이..
- [ Frontend/Next.js ][Next.js] 페이지 생성 및 이동, 레이아웃 생성 [10/9 study]2024-10-09 16:18:10Next.js App Router 페이지 생성 및 이동, 레이아웃 생성 페이지 생성 및 이동 - Next.js 에서는 폴더를 이용해서 nested routes를 생성합니다- 각 폴더에 위치한 page.tsx 파일은 라우트를 생성합니다.ex) /app/dashboard/page.tsx 파일은 /dashboard 경로를 생성합니다. - page.js 파일을 제외한 파일들은 라우트가 생성되지 않기 때문에 관련된 컴포넌트 등의 파일을 해당 폴더 내에 함께 위치할 수 있습니다. 레이아웃 생성 Root layout- /app/layout.tsx 파일에 적용한 UI는 애플리케이션 내 모든 페이지에 적용됩니다.- 또한 root layout 파일을 metadata를 적용할 때도 사용할 수 있습니다. 페이지별 공통..