Hello,

kok nae-ga ha-myun an-dweneun MAGIC...🧚

웹 프로그래밍 118

웹 프로그래밍/공부일지
[Javacript 기초] Excution Context

어우 올게 왔다 실행 컨텍스트.. 여기서 출발하는 많은 개념들이 초면은 아니지만 아직도 만날때마다 매번 정의를 딱 내리기 어려운것 같다. 간단하게 메모형으로 남겨놓으려고한다. Excution Context :: 함수를 실행할때 필요한 환경 정보를 담은 객체 :: 전역공간, 함수, module, eval 이 Excution Context의 내부를 들여다보면 아래와 같이 생겼다. VariableEnviroment enviromentRecord outerEnviromentReference LexicalEnviroment: 실행 컨텍스트를 구성하는 환경정보들을 모아 사전처럼 구성한 객체 enviromentRecord: 현재 문맥의 식별자 정보 - 호이스팅 outerEnviromentReference: 외부 식별..

2024.03.21 ﹒ 11:30
웹 프로그래밍/공부일지
[Javascript 기초] 데이터 타입

최근 기초의 심화 과정이라고 해야할까... 읽고 까먹고 읽고 까먹고 했던 부분을 상기시키는 시간을 가지고 있다. 기초가 제일 어려워 🫨 Javascript의 데이터 타입에 대해 정리하려고 한다. 단순히 string, number, array 하나씩 이건 이겁니다 하는것은 아니고 크게 Primitive Type(원시타입)과 Reference Type(참조타입)에 대해 보려고한다. Primitive Type :: Null, Undefined, Number, String, Boolean, Symbol, BigInt ... Reference Type :: Object, Array, Function ... Primitive Type의 변수는 크기가고정되어 있기때문에 스택 메모리에 저장되게 된다. 아래와 같은 코드..

2024.03.21 ﹒ 11:16
웹 프로그래밍/공부일지
yarn berry에서 auto import가 안돼요 🫤

:: 설치 환경 yarn berry next.js vscode typescript 강의들으면서 따라하는데 강의는 npm을 사용했고 나는 이제 yarn berry에 익숙해져 보려고 혼자 yarn berry로 셋팅했다. 그런데 자동으로 import가 안된다. ( 필자는 vscode 사용중, 패키지 찾는거 조차 못함 바보 쨔석..! ) @type/react를 설치해봐라 tsconfig.json 파일을 수정해보라는 답변들은 다 소용없었다!! 확인해보니 기존 node_modules에서 패키지를 읽어오는 방식과 달리 yarn berry에서는 PnP 방식에 zip 아카이브를 사용하고 있어서 vscode가 못 불러오는 듯 하다. 그래서 별도의 확장 프로그램 설치 및 에디터 설정이 필요했다. vscode extensio..

2024.03.04 ﹒ 16:53
웹 프로그래밍/에러로그
Yarn install error :: The --cwd option is ambiguous when used anywhere else than the very first parameter provided in the command line, before even the command path

Next.js 버전 14를 다시 공부하려고 설치를 하려던 도중 강의는 npm을 이용했지만 이제 yarn berry를 이용해보고 싶은 마음에 개인적으로 yarn berry로 셋팅을 했는데...또 나망 앙댕..😩 package.json은 아래와 같았다. { "name": "next14-example", "packageManager": "yarn@4.1.0", "scripts": { "dev": "next dev" }, "dependencies": { "next": "^14.1.0", "react": "^18.2.0", "react-dom": "^18.2.0" } } 여기서 yarn dev를 실행 했는데 아래와 같은 에러가 발생했다! 음...🤔 읽어보면 보자... 3000번 포트가 사용중이라 3001번이 사용..

2024.02.28 ﹒ 18:34
웹 프로그래밍/공부일지
yarn berry 🍓 !

이전에 npm과 yarn 중에 고민할때 대충 아아 음~ 그렇지 하고 넘겼다가 이제서야 기술 블로그에서 상세하게 설명한 글을 보고 머리를 한대 맞았다 🥺 패키지 관리 도구로 대표적으로 npm과 yarn이 있는데 그중에서도 최근 많이 사용중인 yarn berry 버전이 npm과 비교했을때 어떤 이점이 있는지 왜 인기가 많은지 알아보려고한다. 🤔 npm의 문제점 비효율적인 의존성 검색 npm은 node_modules 폴더를 통해 파일 시스템을 이용하는데, node.js에서 제공하는 require.resolve.paths() 함수를 통해 react를 require했을 때 react를 찾기위해 어떤 폴더를 확인하는지 봤다. $ node Welcome to Node.js v20.5.1. Type ".help" fo..

2024.02.22 ﹒ 18:45
웹 프로그래밍/에러로그
Error Log :: React 무한 루프에 갇혀버렸다.

오늘도 어김없이 오는 에러 로그 어서오고..😩 Warning: Maximum update depth exceeded. This can happen when a component calls setState inside useEffect, but useEffect either doesn't have a dependency array, or one of the dependencies changes on every render. const [list, setList] = useState(); useEffect(() => { setList(data); }, [data]); useEffect 함수내에서 setState를 사용했고 해당 부분때문에 발생한 무한 루프 현상이다. useEffect는 컴포넌트가 랜더링 될 ..

2024.02.08 ﹒ 11:11
웹 프로그래밍/공부일지
Token 로그인 구현 (feat. 보안이 너무 어려웡🤔)

현재 운영중인 어드민의 로그인 시스템이 엉망이라 리뉴얼을 진행중인데, 역시 가장 손이 많이 가는 계정 관리 그리고 로그인쪽이다. 우리도 이제 세션이 아닌 jwt토큰을 사용하기로 했다. 더보기 - 라고 글쓰면서 우린 어드민이라 사용자가 많은 것도 아니고 서버 확장도 이루어 지지 않을 것 같은데.. 그럼 보안이 더 나은 session이 좋지 않나? 우선 많이 사용하는 JWT로 정해졌으니 ... 1. 로그인 2. 백엔드에서 토큰값과 리프레시 토큰값 반환 3. 로컬스토리지 또는 쿠키에 토큰 값 저장 4. 백엔드 API 호출 시 헤더에 토큰과 함께 요청 5. 만약 토큰이 만료된 토큰이라면 리프레시 토큰으로 토큰 재발급 음..그리고 여기서 클라이언트에게 토큰을 저장 하니 보안이 신경 안쓰일 수가 없어졌다. 참고글을..

2024.02.01 ﹒ 15:54
웹 프로그래밍/공부일지
react-router-dom

Home v6.14.2 동작 원리 브라우저를 켜서 처음 서버에 접속하면 routes컴포넌트의 지역 상태가 history.location 객체로 초기화. BrowserRouter가 props로 routes에게 history객체를 전달 Link 태그를 클릭하거나 , 브라우저 액션(앞,뒤로 가기 등) 을 수행 함으로 현재 url을 변경 가능. History 객체를 이용한 구독 매커니즘 때문에 routes 컴포넌트의 location 객체가 새로운 것으로 변경. 이로 인해 routes 컴포넌트가 리렌더링 되고 그 결과 RouterContext의 값이 새로 구성되면서, 트리의 하위에 존재하는 각종 라우팅 관련 컴포넌트들이 리렌더링. → 현재 URL에 맞는 UI 렌더링 컴포넌트는 현재 URL과 path props 값..

2023.08.02 ﹒ 11:16
웹 프로그래밍/공부일지
Nest.js

회사 숙제로 노드로 백엔드 구성하기를 받았는데~ 원랜 Express를 사용할 것 같아 Express로 했는데 자유롭게 구성해도 된다기에 개인프로젝트에서 항상 사용하던 Nest.js + TypeORM으로 해보려한다. (GraphQL)까지 할까? . . 우선 왜 Nest.js를 선택했는지! 사실 나는 거창한 이유없이.. 프레임 워크를 선택하는 이유는 ‘편하니까’라고 생각한다. 프로젝트 협업 시 통일된 코드로 개발하기 쉽고 (프레임 워크 특징 이겠지만😅) 다른 사람 코드를 분석 하기에도 편할 수 있다. 개인적으로는 모듈단위로 관리 할 수 있는 점과 어노테이션(@)의 가독성으로 필자는 Nest.js를 좋아한다! (깔끔✨) 물론 말한 것 모두 express.js에서 구현 할 수 있다. 다만 하나하나 설정해줘야함!..

2023.05.23 ﹒ 18:33