목록프론트엔드 (48)
기술 블로그
자바스크립트에서 객체의 최상단 레벨만 값으로서 복사되는 것을 얕은 복사라고 하고 모든 레벨에서 값으로서 복사되는 것을 깊은 복사라고 한다. 깊은 복사를 위한 방법으로는 다음과 같은 방법이 있다. JSON.stringyfy JSON.stringify()와 JSON.parse()를 이용한 깊은 복사(deep copy) 방법은 JavaScript 객체를 복사할 때 사용할 수 있는 간단한 방법 중 하나이다. 이 방법은 객체의 모든 내용을 문자열로 변환한 다음, 그 문자열을 다시 객체로 파싱하여 복사본을 생성하는 방법이다. 단점 경우에 따라 다를 수 있으나 크기가 클 경우 성능 문제가 있다. 함수와 메서드는 문자열로 변환되지 않기 때문에 복사된 문자열에는 포함되어있지않다. 객체가 순환참조를 가지고 있다면 에러가 ..
https://developer.mozilla.org/ko/docs/Web/HTTP/Status 작성중
브라우저 유저 인터페이스: url 입력창을 포함한 웹페이제 외적 클라이언트 요소 브라우저 엔진: 유저 인터페이스와 렌더링 엔진을 중재 렌더링 엔진: 리소스를 파싱하고 결과물을 바탕으로 페이지를 그려냄 webkit, gecko 등 네트워크 레이어: http(s)프로토콜을 이용해 외부 리소스를 얻어오고 서버에 요청을 보낼 때 사용 js 인터프리터: 자바스크립트를 해석하고 실행 ui 백엔드: 렌더트리를 기반으로 운영체제의 인터페이스를 따르는 ui를 처리 자료 저장소: 데이터를 브라우저 자체 로컬에 저장하기 위한 레이어 접근 및 저장에 활용 로컬스토리지 등 동작 유터 인터페이스에서 url 입력받음 브라우저 엔진에서는 검색어인지 url인지 검증 렌더링 엔진을 거처 네트워크 레이어에서 리소스 요청 리다이렉션(3xx..
https://blog.jaegwan.com/96 [TIL] GCP Next.js deploy 최근 서류합격한 기업의 우대사항을 보니 GCP 배포가 기재되어 있어 면접 전 GCP 배포를 경험해보고자한다. 구글 클라우드에 가입 후 원할한 진행을 위해 카드 등록도 해준 후 배포하기 위한 프로 blog.jaegwan.com 이전 게시글에 이어서 작성되는 글이다. "CI/CD"란 "Continuous Integration"과 "Continuous Delivery" 또는 "Continuous Deployment"의 약어로, 소프트웨어 개발 및 배포 프로세스를 자동화하고 효율화하기 위한 방법론과 관련된 도구와 절차를 통칭합니다. GCP내의 CI/CD를 검색해서 Cloud Build를 클릭한다. 사용을 클릭한다. 이..
모듈: 프로그래밍 관점에서 특정 기능을 갖는 작은 코드 단위 웹펙에서의 모듈: 웹 애플리케이션을 구성하는 모든 자원 모듈 번들러: 의존성이 있는 리소스(html,css,js,img)를 각각의 모듈로 보고 하나 또는 여러개의 파일로 묶어주는 도구 리소스: 웹 애플리케이션을 구성하는 모든 자원 기존의 페이지 별 자바스크립트 방식의 문제 의존성 순서 비보장 문제 일부 파일 에러 -> 전체 에러 문제 번들러(웹팩) 장점 여러 타입으로 구성된 여러 리소스파일들을 받으면 다수의 http통신이 발생하여 웹 로딩 속도 저하로 이어질 수 있다. 번들러는 파일을 하나로 합쳐 이 문제를 해결한다. 성능 최적화 및 자동화 코드 축소 및 트리쉐이킹 코드 스플릿을 통한 lazy loading 필요한 코드를 필요할 때 로딩 종속성..
인프라에 관심이 생겨 GCP 배포를 경험해보고자한다. 구글 클라우드에 가입 후 원할한 진행을 위해 카드 등록도 해준 후 배포하기 위한 프로젝트를 만들어 선택한다. 옆의 id를 잘 기억해준다 추후 사용한다. 우리가 주로 참고해야할 레퍼런스는 아래 두개다. https://nextjs.org/docs/pages/building-your-application/deploying#docker-image Building Your Application: Deploying | Next.js Congratulations! You're here because you are ready to deploy your Next.js application. This page will show how to deploy either ma..
일반적으로 재귀함수는 프로그래밍에서 아주 중요한 요소이며 알고리즘으로도 자주 활용되는 기법이다. 그러나 프론트엔드 환경에서는 어떨까? 이전 게시글에서 봤던 것 처럼 프론트엔드 개발자는 콜스택의 부하를 경계해야하고 여러 문제를 야기한다. 1. 잘못 사용하면 재귀는 스택 오버플로우를 일으키기 좋은 기법이다. 2. 각 함수 호출마다 실행컨텍스트가 생성되기 때문에 메모리 측면에서 좋지 않다. 3. DOM 조작시 성능 저하가 발생할 수 있다.( 매 함수마다 리플로우 리페인팅) 이를 방지하기위해 꼬리 재귀라는 기법을 사용할 수 있다. //일반 재귀 function factorial(n) { if (n === 1) { return 1; } return n * factorial(n-1); } //꼬리 재귀 functi..
동기: 이전 작업이 끝날때 까지 기다렸다가 끝난 이후 다음 작업을 실행하는것 비동기: 이전 작업의 완료여부와 관계 없이 다음 작업을 실행하는 것 자바스크립트에서 비동기는 아래와 같은 상황에서 발생한다. 👉 DOM Element 의 이벤트 이벤트 핸들러 - 마우스, 키보드 입력 (click, keydown 등), 페이지 로딩 (DOMContentLoaded 등) 👉 타이머 - 타이머 API (setTimeout 등), 애니메이션 API (requestAnimationFrame) 👉 서버에 자원 요청 및 응답 - fetch API, AJAX (XHR) 사실 위 사진이 자바스크립트 비동기 작업의 전부이다. 추가 할 점이 있다면 콜스택 옆에 메모리힙이 있다. 콜스텍과 실행컨텍스트 그리고 메모리힙 실행컨텍스트는 ..
React.memo export default React.memo(Category); //videos 내려오는 props가 자주 동일할 때 사용된다. props가 변경될 때만 리렌더링하게 개별 컴포넌트를 설정할 수 있어서 렌더링 최적화에 도움이 된다. 그러나 오버헤드 우려가 있어 필요한 컴포넌트에만 적용하도록 한다. react-window npm install react-window 외부 라이브러리이나 화면에 보이는 부분만 렌더링하도록 한다 몇만개의 데이터가 배열 되어있을때 사용한다. useCallback 함수 재사용 useMemo 값 재사용
getServerSideProps (서버 사이드 렌더링) 페이지에서 getServerSideProps라는 함수를 내보낼 때, Next.js는 이 함수로 반환된 데이터를 사용하여 각 요청에 대해 이 페이지를 사전 렌더링합니다. 주로 자주 변경되는 데이터를 최신으로 업데이트 하는 경우 유용하고 클라이언트 측에 번들되지 않는다. context매개변수는 params,req,res,query를 포함한다. 이 함수는 이중 하나를 포함하는 객체를 반환해야한다 - props라고 명명된 객체 속성 - notfound(bool)로 명명된 속성 - redirect 문제 getServerSideProps내의 기능은 클라이언트 렌더링 이전에 수행된다. 즉 클라이언트 단에서 서버단의 데이터를 받을 순 있지만 일반적인 방법(nex..