JavaScript 패키지 매니저 아키텍처 분석(feat. npm, yarn, pnpm)
·
Dev Tools
JavaScript 패키지 관리 아키텍처 심층 분석npm, Yarn, pnpm의 진화와 메커니즘들어가며: 단순한 “패키지 설치 도구”가 아닌, 프로젝트의 인프라개발을 하다 보면 누구나 한 번쯤 npm install을 입력해봤을 것입니다.하지만 단 한 줄의 명령어 뒤에 숨은 복잡한 메커니즘과 아키텍처적 선택에 대해 진지하게 생각해본 적은 많지 않습니다.사실, JavaScript 생태계에서 패키지 매니저의 선택은 단순한 도구 결정이 아닙니다.그건 팀의 개발 문화와 철학을 반영하는 아키텍처적 결정입니다.빌드 속도, 캐시 전략, CI/CD 효율성, 그리고 팀 전체의 생산성까지 이 한 선택에 영향을 받습니다.JavaScript 패키지 매니저의 역사는 말 그대로 ‘문제 해결의 역사’입니다.npm으로 시작해 Yarn..
유용하게 사용중인 MCP 4가지 추천
·
AI
🚀 Cursor에서 유용하게 사용중인 MCP서론: ‘MCP’란?‘Vibe-Driven Development’라 불리는 최신 AI 코딩 워크플로우는 Cursor 같은 IDE를 통해 현실이 되었습니다.이제 개발자는 AI와 대화하며 코드를 작성하지만, 곧 한계에 부딪힙니다.AI가 외부 세계와 단절되어 있고, 로컬 파일 시스템이나 최신 라이브러리 정보에 접근할 수 없기 때문입니다.이 문제를 해결하기 위해 등장한 것이 바로 MCP(Model Context Protocol)입니다.MCP는 AI 모델(MCP 클라이언트)이 외부 도구 및 데이터 소스(MCP 서버)와 안전하고 표준화된 방식으로 상호작용할 수 있게 하는 프로토콜입니다. 쉽게 말해, AI를 위한 USB-C 포트 또는 범용 API 어댑터라 할 수 있습니다...
REST와 GraphQL 비교
·
WEB
들어가며REST vs GraphQL이전 직장에서 REST API로 구축된 프로젝트를 GraphQL로 전환하는 과정을 경험했습니다. 이 경험을 통해 오랫동안 웹 API의 표준처럼 여겨져 온 REST의 자원(Resource) 중심 접근 방식과, 최신 애플리케이션의 복잡한 데이터 요구에 맞춰 등장한 GraphQL의 클라이언트 중심 접근 방식이 어떻게 다른지 체감할 수 있었습니다. 좀 더 명확한 차이점을 이해하기 위해 각 기술이 어떻게 탄생했고, 어떤 핵심 원칙을 가지고 있는지, 그리고 실제 어떤 상황에 사용하면 좋은지, 나아가 캐싱이나 보안 방식의 차이점까지 조사했습니다.REST란? — 웹을 위해 만들어진 아키텍처 스타일REST의 탄생등장 배경과 동기REST는 2000년 로이 필딩의 박사 논문에서 처음으로 소..
openapi generator를 사용하여 api에 대한 typescript 코드젠
·
Dev Tools
저희 회사에서는 openapi 스펙으로 api 스펙을 정의하여 백엔드와 프론트엔드간에 api 스펙을 공유하고 있습니다.프론트엔드에서는 openapi generator에서 제공하는 typescript-axios를 사용하여 타입스크립트로 코드젠을하여 api에 대한 타입 정의를 자동적으로 생성하고 있습니다.openapi generator에 대한 간단한 소개와 사용하면서 부딪친 버그들을 소개하겠습니다.openapi generator란openapi-generator는 위에서 설명한 것 처럼 openapi 스펙으로 정의된 문서를 다양한 코드로 코드젠을 해주는 도구입니다.  install설치 방법은 공식문서를 참고 하시는 것이 제일 좋습니다. 예시는 brew를 사용하여 설치하는 방법입니다.brew install op..
React에서 JWT를 이용하여 로그인 구현하기
·
WEB/React
어플리케이션에서 로그인을 구현하는 방법은 인증을 서버의 세션에서 할지 토큰을 통해서 할지에 따라서 달라지게 됩니다. 이번 글에서는 JWT를 사용하여 로그인을 구현하는 방법에 대해서 작성합니다. 세션 방식과 토큰 방식의 차이점은 아래 글에서 확인 할 수 있습니다. 쿠키, 세션(cookie, session)과 토큰 (token, JWT)의 차이점 웹 어플리케이션에서 로그인을 구현하는 방법은 크게 쿠키, 세션을 이용하는 방법과 토큰을 이용하는 방법 2가지가 있습니다. 간단히 말하면 쿠키, 세션 방식은 서버에서 세션아이디를 기록하 jcon.tistory.com Access token & Refresh token JWT 토큰을 사용하여 로그인을 구현할 때에는 보통 access token과 refresh token..
React 초기 프로젝트 세팅 (eslint, husky etc..)
·
WEB/React
husky, commitlint husky는 git의 hook들을 쉽게 관리하게 해주는 툴입니다. husky에 commitlint를 사용하여 git commit시에 prefix를 쉽게 적용하고, commit 메세지에 대한 검사를 진행하기 위해 적용하는 것을 선호합니다. npx husky-init && npm install npm install --save-dev @commitlint/cli @commitlint/config-conventional commitizen npx commitizen init cz-conventional-changelog --save-dev --save-exact npx husky add .husky/commit-msg 'npx --no-install commitlint --ed..
쿠키, 세션(cookie, session)과 토큰 (token, JWT)의 차이점
·
WEB
웹 어플리케이션에서 로그인을 구현하는 방법은 크게 쿠키, 세션을 이용하는 방법과 토큰을 이용하는 방법 2가지가 있습니다. 간단히 말하면 쿠키, 세션 방식은 서버에서 세션아이디를 기록하고 브라우저에서 쿠키를 저장하는 방법이고 토큰 방식은 토큰을 발행하여 토큰의 유효성을 검증하는 방법입니다. 쿠키, 세션 (cookie, session) 사용자(클라이언트)가 서버에 자원을 요청 시 서버에서 사용자를 특정할 수 있는 데이터를 기반으로 세션 아이디를 생성하고, 해당 아이디를 키값으로 하여 필요한 값들을 서버의 메모리에 저장하고, HTTP 프로토콜의 header의 setCookie를 통해서 브라우저의 쿠키에 세션 아이디를 기록하도록 합니다. 브라우저는 request 요청을 보낼 시 header에 cookie를 자동..
React 18 버전으로 개발하면서 만난 문제들
·
WEB/React
이 포스팅은 개인적으로 작은 사이트 프로젝트나 과제 등을 React18 버전으로 진행하면서 발생한 에러 등을 정리하기 위한 글입니다. 지속적으로 추가 될 예정입니다. 1. cra에서 기존에 제공하던 typescript 템플릿 등의 의존성 오류 현재 cra를 통해 리액트 프로젝트를 생성하면 18버전으로 생성이 됩니다. 하지만 기존에 있던 typescript 등이 적용된 템플릿은 아직 의존성에 대한 부분들이 업데이트 되지 않았습니다. 의존성 문제는 아래 7가지 라이브러리를 최신 버전으로 업데이트 하여 해결하였습니다. "@testing-library/jest-dom" "@testing-library/react" "@testing-library/user-event" "@types/jest" "@types/nod..
react 18버전에서 달라지는 batching
·
WEB/React
react 18버전이 릴리즈 되었습니다. 변경점 중 하나인 batching 프로세스에 대해서 정리해보려고 합니다. 개발을 하시다보면 17버전 이하에서 이벤트 핸들러 안에 있는데 batching이 안되는 경험을 겪어보신 분들이 있을 것이라고 생각합니다. 이번 글에서는 batching에 대해서 간단히 소개하고, 17버전 이하에서 batching이 안되는 상황과 18버전에서 어떻게 변경이 되었는지 알아보도록 하겠습니다. 1. batching이란? react에서 이벤트 핸들러안에 여러 setState를 하게 될 경우 같은 함수 스코프의 setState를 일괄적으로 처리하여 한번만 리렌더링 되도록 일괄처리(batching)를 합니다. function App() { const [count, setCount] = u..