클라이언트와 서버 분리 (모노레포) 모노레포 : 여러 개의 프로젝트를 단일 코드베이스 내에 저장하는 구조 현재까지 진행한 프로젝트 파일을 client와 server를 따로 두어 분리할 것이다. client workspace - 먼저, 현재 까지의 파일들을 모두 client 디렉토리에 넣는다. - package.json 파일의 name 속성을 client로 변경한다. - "name": "client", 루트 프로젝트 - 루트 프로젝트 경로에서 yarn init -y를 입력하고, package.json 파일이 생긴 것을 확인한다. - package.json에 아래를 추가한다. "private": true, "workspaces": [ "client", "server" ], "scripts": { "clien..
장바구니 상태관리(recoil) 선택된 상품에 대한 상태관리를 하기 위해 checkedCartState를 recoil로 관리한다. ▼ src/recoils/cart.ts export const checkedCartState = atom({ key: "cartState", default: [], }); }); 결제창 연결하기 Pick 기존 타입에서 원하는 속성만 선택하여 새로운 타입을 생성하는 역할을 한다. Pick을 사용하면 기존 타입에서 필요한 일부 속성만 선택하여 새로운 타입을 만들 수 있다. Pick itemData 컴포넌트 분리하기 ▼ src/components/cart/itemData.tsx const ItemData = ({ imageUrl, title, price, }: Pick) => { ..
장바구니 수량 업데이트 장바구니 수량 업데이트 쿼리문 작성 기존 ADD_CART 쿼리문과 비슷하나 amount가 추가된 것이다. ▼ src/graphql/cart.js export const UPDATE_CART = gql` mutation UPDATE_CART($id: string, $amount: number) { cart(id: $id, amount: $amount) { id imageUrl price title amount } } `; 업데이트 핸들러 함수 정의 업데이트를 하는데 cartData가 없는 것은 에러를 발생시킨다. 기존에서 amount만 전달된 값으로 바꿔주면 된다. ▼ src/mocks/handler.ts graphql.mutation(UPDATE_CART, (req, res, ct..
msw mock data로 서버처럼 구현하기 mock이란? : "Mock"은 테스트 또는 개발 중에 실제 데이터 또는 외부 서비스를 대신하여 사용되는 가짜 또는 모의 데이터 또는 객체를 의미 이는 실제 시스템과의 상호 작용을 시뮬레이션하거나 특정 상황을 재현하여 코드를 테스트하거나 개발하는 데 유용하다. => 백엔드에 데이터가 아직 없거나, 불러오지 못할 경우에 서버를 임시로 만드는 것은 어려우므로 mock 데이터를 사용한다. msw 설치하기 Mock Service Worker Seamless API mocking library for browser and Node. mswjs.io yarn add msw --dev yarn add graphql-tag yarn add graphql-requset gra..
쇼핑몰 dummy data https://fakestoreapi.com 위 사이트에서 읽어올 것이다. Fake Store API Fake store rest api for your ecommerce or shopping website prototype fakestoreapi.com React-query 사용하기 Quick Start | TanStack Query Docs This example very briefly illustrates the 3 core concepts of React Query: Queries tanstack.com react-query 다운로드 yarn add react-query react-query dev-tool 사용 import { ReactQueryDevtools } fr..
vite란? Vite는 Vue.js 팀에서 개발한 웹 개발 빌드 도구이다. Vite의 주요 목표는 개발 서버와 빌드 시스템을 최적화하여 더 빠른 개발 경험을 제공하는 것이다. Vite는 기존의 번들러(Bundler)와는 다른 접근 방식을 채택한다. 일반적으로 번들러는 개발자가 작성한 모든 코드를 하나의 번들로 묶어서 제공하는 반면, Vite는 개별 파일 단위로 빌드하여 개발 서버에서 동적으로 제공한다. 이를 통해 초기 로딩 시간을 줄이고 개발 과정에서의 빠른 수정 및 반영을 가능하게 한다. Vite는 Vue.js를 위한 공식적인 개발 도구로서, Vue.js 애플리케이션 개발을 위한 편리한 기능과 통합을 제공하나, Vite는 단순히 Vue.js를 위한 도구로 제한되지 않고, 다른 프레임워크(React, ..
임베디드시스템소프트웨어 과목의 강의영상과 강의자료를 바탕으로 작성한 학습용 게시글입니다. GPIO (General Purpose Input/Output ) 특정 PIN에 연결된 비트를 나타낸다. 0또는1의 1bit를 표현할 수 있다. (0은 0V, 1은 3.3V를 뜻한다.) GPIO Pin을 통해서 한 쪽에서는 1bit짜리의 데이터를 보내고, 다른 한 쪽에서는 1bit짜리의 데이터를 읽어온다. GPIO의 사용 센서나 액추에이터를 연결하고 센서나 액추에이터에 특정 정보를 보내거나 읽어들일 때 사용한다. 각 PIN은 1bit를 나타낸다. Pin 하나로만 다양한 센서와 액추에이터를 연결하기는 어렵다. -> 보통 Pin을 다발로 묶어서 여러 개의 핀을 집합적으로 사용한다. (I^2C) GPIO Pin은 inpu..
임베디드 시스템 소프트웨어 과목의 강의영상과 강의자료를 바탕으로 작성한 학습용 게시글입니다. Possible Semantics of I/O Interfaces Blocking I/O write() , read() 시스템 콜을 쓸 때 동작하는 방식이다. I/O를 당장 할 수 없을 때는 해당 system call을 호출한 프로세스를 blocking state로 전이하고, CPU 자원을 쓰지 않고 대기한다. I/O 완전히 끝났을 때만 해당 system call을 리턴한다. receive 요청 받지 못하면 blocking한다. send할 때 버퍼 꽉 차는 경우는 데이터 넣을 수 없으므로 blocking한다. Nonblocking I/O blocking하지 않는다. blocking이 필요하면 오류값 리턴 후 진행..