본문 바로가기

분류 전체보기93

효과적인 코드 리뷰를 위해서 https://engineering.linecorp.com/ko/blog/effective-codereview#enhance-skill 효과적인 코드 리뷰를 위해서종종 팀 내에서 코드 품질이 이슈가 됩니다. 그리고 유닛 테스트와 코드 커버리지를 향상시키는 방법에 대해 모두가 한 마디씩 던집니다. 하지만 그리 오래가진 못합니다. 모두들 다시 바빠지면engineering.linecorp.com 코드 리뷰 프로세스를 효율적으로 하기 위해서리뷰어를 희귀한 자원으로 다루는 것이 중요하다코드 리뷰 목표변화를 작게 유지하자리뷰는 자주 짧은 세션으로 진행하자리뷰를 위해 최대한 빨리 PR을 보내자의미 있는 PR을 만들기에 충분한 정보를 제공하자코드 분석툴을 활용하고 코드 스타일을 확인하자1시간에 300줄 정도 리뷰하는 .. 2024. 8. 8.
인증과 인가 우아한 테크코스 2기내용인증과 인가란인증의 방법목표인증과 인가에 대한 지식 습득 및 복습프로젝트에서 선택한 인증 방식에 대한 근거인증이란식별 가능한 정보로 서비스에 등록된 유저의 신원을 입증하는 과정인가란인증된 사용자에 대한 자원 접근 권한 확인인증과 인가란자원을 적절한/유효한 사용자에게 전달/공개하기 위한 방법인증 단계1. 인증하기 (Request Header)무상태성(Stateless): 서버는 클라이언트에서 오는 요청이 각각 연관관계가 없다고 생각하고 처리한다Request Header 활용하기사용자가 http://www.cocktailpick.com/login 에 로그인 요청을 보내기 위해 직접 타이핑해http://user:1q2w3e!@www.cocktailpick.com/login 요청 시 브라.. 2024. 6. 4.
리라우팅vs리다이렉션 리라우팅 vs 리다이렉션: 핵심 차이와 활용법 비교리라우팅과 리다이렉션은 웹 개발에서 자주 사용되는 용어이지만, 종종 혼동되기도 합니다. 두 가지 개념은 유사하지만, 중요한 차이점이 있으며, 상황에 따라 적절하게 사용해야 합니다. 1. 정의:리라우팅: 서버 측에서 사용자 요청을 다른 URL로 변경하는 프로세스입니다. 실제로 사용자 페이지 이동이 일어나지 않고, 서버에서 조용히 처리됩니다.리다이렉션: 사용자를 다른 URL로 보내는 프로세스입니다. 브라우저에서 새로운 요청을 발생시켜 실제 페이지 이동이 일어납니다.2. 주요 차이점:구분리라우팅리다이렉션작동 방식서버 측에서 처리클라이언트 측(브라우저)에서 처리사용자 인식사용자가 인지하지 못함사용자가 새로운 URL을 확인 가능주소 표시줄 변화새로운 URL 반영되.. 2024. 6. 4.
1.6.1 구조 분해 할당 일반적인 자바스크립트나 Node.js 기반으로 한 코드와 리액트 코드를 비교하면 리액트 코드가 상대적으로 독특한 모습을 띰. 이러한 독특함은 JSX 구문 내부에서 객체를 조작하거나 객체의 얕은 동등 비교 문제를 피하기 위해 객체 분해 할당을 하는 등 리액트의 몇 가지 독특한 특징에서 비롯됨. 또한 자바스크립트는 매년 새로운 버전과 함께 새로운 기능이 나옴. 이러한 자바스크립트 표준을 ECMAScript라고 하는데, 작성하고자 하는 자바스크립트 문법이 어느 ECMAScript 버전에서 만들어졌는지도 파악해야 함. 왜냐하면 모든 브라우저와 자바스크립트 런타임이 항상 새로운 자바스크립트 문법을 지원하는 것이 아니기 때문. 예를 들어, 인터넷 익스플로러 11은 ECMAScript 5(ES5)까지만 지원하기 때문.. 2024. 5. 14.
1.5.3 태스크 큐와 마이크로 태스크 큐 1.5.3 태스크 큐와 마이크로 태스크 큐이벤트 루프는 하나의 마이크로 태스크 큐를 갖고 있는데, 기존의 태스크 큐와는 다른 태스크를 처리함. 여기에 들어가는 마이크로 태스크에는 대표적으로 Promise가 있음. 이 마이크로 태스크 큐는 기존 태스크 큐보다 우선권을 가짐. 즉, setTimeout과 setInterval은 Promise보다 늦게 실행됨. 명세에 따르면, 마이크로 태스크 큐가 빌 때까지는 기존 태스크 큐의 실행은 뒤로 미뤄짐.function foo() { console.log('foo')}function bar() { console.log('bar')}function baz() { console.log('baz')}setTimeout(foo, 0)Promise.resolve().the.. 2024. 5. 14.
1.5.2 이벤트 루프란? 1.5.2 이벤트 루프란?아래 내용은 자바스크립트 런타임 중 가장 유명한 V8 기준으로 작성됨. 이벤트 루프는 ECMAScript, 즉 자바스크립트 표준에 나와 있는 내용은 아님. 즉, 이벤트 루프란 자바스크립트 런타임 외부에서 자바스크립트의 비동기 실행을 돕기 위해 만들어진 장치. V8, Spider Monkey 같은 현대 자바스크립트 런타임 엔진에는 자바스크립트 코드를 효과적으로 실행하기 위한 여러 가지 장치들이 마련돼 있음.호출 스택과 이벤트 루프호출 스택(call stack)은 자바스크립트에서 수행해야 할 코드나 함수를 순차적으로 담아두는 스택.function bar() { console.log('bar')}function baz() { console.log('baz')}function foo.. 2024. 5. 14.
1.5.1 싱글 스레드 자바스크립트 1.5.1 싱글 스레드 자바스크립트자바스크립트는 싱글 스레드에서 작동. 즉, 기본적으로 자바스크립트는 한 번에 하나의 작업만 동기 방식으로만 처리할 수 있음. 동기(synchronous)는 직렬 방식으로 작업을 처리하는 것을 의미, 이 요청이 시작된 이후에는 무조건 응답을 받은 이후에야 다른 작업 처리 가능. 그동안 다른 모든 작업은 대기. 때문에 한 번에 다양한 많은 작업 처리 불가능. 반대 의미의 비동기(asynchronous)는 병렬 방식으로 작업을 처리하는 것. 요청을 시작한 후 이 응답이 오건 말건 상관없이 다음 작업이 이루어지며, 한 번에 여러 작업 실행 가능.싱글 스레드 기반의 자바스크립트에서도 많은 양의 비동기 작업이 이루어짐. 모던 웹 애플리케이션에서는 사용자에게 많은 양의 정보를 다양한.. 2024. 5. 14.
20240514 1. 카라멜 마키아또에 물 부어 먹기디카페인 커피 먹을랬는데 디카페인 캡슐이 없어서 카라멜 매끼애또로.. 2024. 5. 14.
조아 박병찬청량 쾌남 와하학보이 전영중쿼터백이 잘 어울리는 남성 1위 이케개말라 몸에서 나오는 하드락 감성... 청춘락밴드 그자체 파카ㄱㅇㅇ 라이어벼락처럼 몰아치는 도입부 크으너때문에 닉넴도 바꿧다 ㅡ,.ㅡ #mood- 헤어지자- (왕 귀엽고 왕 예쁘고 왕 잘생긴 얼굴) 헤어지자고? 나 지금 되게 예쁜데?- 헤어지린다구요 브나나에 나온 i want it that way 계속 듣는 중 으학유아....~ 마 빠이~ 어~ don't look back in anger F코드 어렵다 손이 바루 안감 2024. 5. 14.
20240508 스타벅스1. 스타벅스 클래식 밀크 티 블렌디드(아이스/그란데)맛있다 2. 바비큐 치킨 치즈 치아바타치즈는 맛있는데 바비큐가 약간 싼 고기 맛...? 질감도 별로다이거 먹으려면 음료를 커피나 밀크티 말고 상콤한거 먹어야됨 ㅡ,.ㅡ 3. 치즈 포크 커틀릿 샌드위치먹을만햇음 4. 다크 초콜릿 카우보이 쿠키남겼음 내 돈으로 다시 사먹진 않을 듯 2024. 5. 8.
1.4.4 주의할 점 1.4.4 주의할 점 스코프 주의 for (var i = 0; i < 5; i++) { setTimeout(function() { console.log(i) }, i * 1000) } 위 코드를 실행하면 0, 1, 2, 3, 4초 뒤에 5만 출력됨. i가 전역 변수로 작동하기 때문. 자바스크립트는 기본적으로 함수 레벨 스코프를 따르고 있기 때문에 var는 for 문의 존재와 상관없이 해당 구문이 선언된 함수 레벨 스코프를 바라보고 있으므로 함수 내부 실행이 아니라면 전역 스코프에 var i가 등록돼 있을 것. for 문을 다 순회한 이후, 태스크 큐에 있는 setTimeout을 실행하려고 했을 때, 이미 전역 레벨에 있는 i는 5로 업데이트가 완료돼 있음. 그럼 0, 1, 2, 3, 4초 뒤에 각 0, .. 2024. 4. 23.
1.4.3 클로저의 활용 1.4.3 클로저의 활용 클로저의 정의인 "함수와 함수가 선언된 어휘적 환경의 조합"이 무엇인지 살펴보았음. 자바스크립트는 함수 레벨 스코프를 가지고 있으므로, 이렇게 선언된 함수 레벨 스코프를 활용해 어떤 작업을 할 수 있다는 개념이 바로 클로저. function outerFunction() { var x = 'hello' function innerFunction() { console.log(x) } return innerFunction } const innerFunction = outerFunction() innerFunction() // "hello" 자바스크립트가 함수 레벨 스코프를 가지고 있고 이러한 스코프는 동적으로 결정되기 때문에 위 예제에서 "hello"가 출력됨. 위 예제에서 outerF.. 2024. 4. 9.