KUIT

KUIT

[KUIT] 2024-1 웹 파트장 후기

0. 네? 제가 파트장이요?올해 1월 말이었을 것이다. 날씨는 꽤나 추웠고, 봄이 온다는 것이 상상이 되지 않았다. 나는 동아리에서 웹 프론트엔드로 참여한 프로젝트 작업을 하며 시간을 보내고 있었다. 느슨했지만 아예 놀지는 않았던, 조금은 여유로웠던 순간이었다. 그러다가 디스코드로 연락이 왔다. 동아리 차기 회장이 되는 친구였다. 프로젝트에 대해, 그리고 머지 않아 진행될 다음 학기 수강 신청에 대해 이야기를 주고받았다. 그러다 갑자기, 나보고 다음 학기 웹 파트장을 할 생각이 없냐고 물어봤다. 음?주관적으로, 아니 객관적으로도 내가 웹 부원 중에서 파트장을 맡을만큼 실력이 좋았냐고 물어본다면, 아니라고 답할 수 있다. 훨씬 논리적이고 코딩 잘하는 친구들의 얼굴이 스쳐지나갔다. 왜 갑자기 나한테 이런 기..

KUIT

[KUIT] 10주차 보충 - 토큰 저장 위치, 세션 인증 방식과 JWT, .env 파일

아래 글은 KUIT 웹 부원분들을 대상으로 작성한 글입니다.Access Token과 Refresh Token은 어디에 저장해야할까?브라우저에서 변수는 네 가지 공간에 저장이 가능하다.쿠키로컬스토리지세션스토리지메모리이 때 메모리에 값을 저장하려면 웹앱의 로컬변수를 사용해서 값을 저장해야→ 이 방식을 사용하면 자바스크립트 코드로 접근이 불가능→ 또 하나 기억해야 할 특징은 새로고침을 하면 내부 변수가 초기화됨 자바스크립트 코드로 접근이 가능한 쿠키, 로컬스토리지, 세션스토리지→ XSS 공격에 취약(다만 쿠키의 경우 HttpOnly 속성을 추가하면, 자바스크립트로 접근할 수 없는 쿠키 생성 가능) 출처: https://velog.io/@iamtaehoon/sagah Refresh Token → HttpOnly..

KUIT

[KUIT] 9주차 워크북 보충 - API endpoint, Axios와 Fetch의 차이, GraphQL

아래 글은 KUIT 웹 부원분들을 대상으로 작성한 글입니다.API endpoint의 뜻은?→ 요청을 보내고자하는 URLAxios와 Fetch의 차이1. 에러 처리axios와 fetch는 둘 다 Promise를 이용해 비동기 요청을 처리 axios: 네트워크 오류가 발생하거나, HTTP 상태코드가 200~299가 아니면 Promise를 reject 시fetch: 네트워크 오류가 발생했을 때만 Promise를 reject-> axios처럼 상태 코드가 200~299 사이가 아닐 때도 에러 처리를 하고 싶다면, Response.ok를 활용해야  2. 헤더axios는 요청 헤더에 ‘Content-Type: application/json을 자동으로 추가(fetch는 직접 추가해야) 브라우저 환경에서 Content..

KUIT

[KUIT] 8주차 워크북 보충 - 전역 상태 관리 라이브러리 정리

상태관리에 대한 접근 방식은 크게 3개로 나눌 수 있다.Flux (Redux, Zustand)Proxy (Mobx, Valtio)Atomic (Jotai, Recoil)(출처: https://velog.io/@ggong/상태-관리를-위한-라이브러리-jotai) 1. FLUX 방식(이미지 출처: https://velog.io/@alskt0419/FLUX-%EC%95%84%ED%82%A4%ED%85%8D%EC%B3%90%EB%9E%80) FLUX는 Facebook에서 개발한 애플리케이션 아키텍처이 패턴은 클라이언트-사이드 웹 애플리케이션을 구축하는 데 사용되며, 특히 단일 페이지 애플리케이션에서 유용하다.FLUX는 다음 네 가지 주요 구성 요소로 구성:Dispatcher: 모든 데이터 흐름을 관리하는 중앙 ..

KUIT

[KUIT] 7주차 워크북 보충

이 글은 KUIT Web 부원분들을 대상으로 쓴 글입니다.1. Link와 useNavigatea 태그와 마찬가지로 Link 컴포넌트도 지정한 경로로 바로 이동을 시켜준다.a 태그와 Link 차이a : 외부 프로젝트로 이동하는 경우Link : 프로젝트 내에서 페이지 전환하는 경우가. Link클릭 시 바로 이동하는 로직 구현 시에 사용ex) 상품 리스트에서 상세 페이지 이동 시Link를 사용한 경우에는 렌더링 된 컴포넌트의 state가 유지되어 SPA로 동작할 수 있음to라는 속성을 통해 이동할 경로를 지정한다는 점은 a 태그와 비슷하지만 실제로 해당 링크로 이동하는 대신 에 지정된 컴포넌트를 렌더링v6부터는 Link로 props를 전달하지 못함나. useNavigate페이지 전환 시 추가로 처리해야 하는 ..

KUIT

[KUIT] 6주차 워크북 보충

이 글은 KUIT Web 부원분들을 대상으로 쓴 글입니다.1. React Hook이란?함수형 컴포넌트에서 다양한 기능을 사용할 수 있게 만들어준 라이브러리 규칙1. 최상위에서만 Hook을 호출해야한다.→ 반복문이나 조건문 혹은 중첩된 함수 내에서 Hook을 호출하면 안된다. 규칙2. 리액트 함수 내에서만 Hook을 호출해야 한다.→ Hook은 일반적인 js 함수에서는 호출하면 안된다. 출처: https://choijying21.tistory.com/60 React Hooks = 독립적인 state 데이터 조작 API useState = 독립적으로 데이터를 관리할거야useEffect = 독립적으로 side-effect를 관리할거야useMemo = 독립적으로 데이터 캐싱을 관리할거야useCallback = ..

KUIT

[KUIT] 6주차 실습 코드 리팩토링

이 글은 KUIT Web 부원분들을 대상으로 쓴 글입니다.6주차 영상을 올리고 나서, OOO 파트장님이 제가 올린 코드들을 리팩토링해주셨습니다 XD그리고 파트장님이 어떤 부분이 리팩토링해주셨는지 전부 비교 분석해서 알려주셨습니다!! 그러면 코드가 어떻게 바뀌었는지, 전후 코드들을 비교해보면서 같이 살펴볼까요? 1. InputBar 컴포넌트에 product props를 내려주는 이유?비어있는 product 객체를 생성하고 이를 사용해서 값을 채워주려고 만든 것 같은데, 이렇게 하면 확장에 유연하지 못하다.구현체가 아니라 인터페이스를 기반으로 구현하는 것이 바람직하다(객체지향 기본 원칙) 그리고 이 구현체를 FilterableProductTable에서 생성해서 내려줄 이유가 없어보인다. 응집도 측면에서 In..

KUIT

[KUIT] 5주차 워크북 보충(React)

이 글은 KUIT Web 부원분들을 대상으로 쓴 글입니다. 1. 클래스형 컴포넌트가 함수형 컴포넌트로 대체된 이유class ProfilePage extends React.Component { showMessage = () => { alert(`${this.props.user} 를 팔로우 했습니다`); } handleClick = () => { // const {user} = this.props; 이렇게 미리 할당해둬서 해결은 가능 // setTimeout(() => this.showMessage(user), 3000); setTimeout(this.showMessage, 5000); // this.showMessage 대신 user 넣으면 해결 가능 } render() { return Fol..

KUIT

[KUIT] 4주차 워크북 보충(TypeScript)

이 글은 KUIT Web 부원분들을 대상으로 쓴 글입니다.DefinitelyTypedDefinitelyTyped 프로젝트는 일종의 자원봉사 프로젝트→ 여러 개발자들이 자발적으로 자바스크립트 모듈의 타입을 추가해주고 있다.→ 이렇게 추가된 타입은 npm 을 통해 다운받을 수 있다.→ IDE 에서 자바스크립트 모듈에 대한 타입 지원이 가능해진다. 출처: https://jake-seo-dev.tistory.com/209@types 라이브러리@types 라이브러리는 TypeScript를 사용하여 JavaScript 라이브러리를 사용할 때 필요한 타입 정의를 제공하는 라이브러리→ JavaScript 라이브러리의 API에 대한 타입 정보를 TypeScript에 제공하여, TypeScript 컴파일러가 타입 검사를 ..

KUIT

[KUIT] 3주차 워크북 보충(JavaScript)

이 글은 KUIT Web 부원분들을 대상으로 쓴 글입니다. 프로토타입 자바스크립트 객체는 Prototype이라는 내부 프로퍼티가 존재한다. 거의 모든 객체가 생성 시점에 이 프로퍼티에 null이 아닌 값이 할당된다. 객체 내부에 없는 프로퍼티를 호출하게 되면? → 해당 프로퍼티를 찾지 못하면 바로 [[Prototype]]링크를 따라가 프로퍼티를 탐색한다. 모든 일반 객체의 최상위 프로토타입 연쇄는 내장 Object.prototype이고 이 지점에서도 찾지 못하면 탐색이 종료된다. (undefined 반환) 두 객체를 서로 연결짓는 가장 일반적인 방법은 함수 호출 시 new키워드를 앞에 붙이는 것이다. new키워드는 일반 함수 호출 + "객체" 생성이라는 잔업을 더 부과하는 지시자이다. const f = ..

퀵차분
'KUIT' 태그의 글 목록