전체 글
[Promise] 비동기 작업을 유연하게
Promise- 자바스크립트에서 비동기 작업의 결과를 관리하고 처리하기 위한 객체- 특정 작업이 완료되었을 때, 그 결과를 가지고 다른 작업을 수행할 수 있도록 해주는 일종의 약속Promise가 필요한 이유- 비동기 작업의 간편한 처리- 콜백 지옥 방지- 에러 처리Promise의 상태- Pending: 아직 결과가 결정되지 않은 상태- Fulfilled: 작업이 성공적으로 완료된 상태- Rejected: 작업이 실패한 상태Promise 생성하기const myPromise = new Promise((resolve, reject) => { // 비동기 작업 수행 setTimeout(() => { // 작업 성공 시 resolve('작업 완료!'); }, 1000); // 작업 실패 시..
[Git] Rebase, Cherry-pick
Rebase- 말 그대로 베이스를 재설정하는 작업- 두 개의 공통 base를 가진 branch에서 하나의 branch의 최신 커밋본을다른 branch의 base에 반영시켜 base를 재설정 처리 장점- 공유 branch의 최신 변경사항 즉각 반영 가능- 커밋 이력을 남기지 않아, 커밋 히스토리 정리 가능 단점- 커밋 충돌 발생시, 개별 커밋마다 충돌처리 필요 Cherry-pick- 다른 브랜치에 있는 특정 커밋을 선택하여 내 브랜치에 적용 가능한 명령어 사용 시기- 팀으로 협업할 때, 필요한 기능만 선택해 사용- 기존 기능에서 버그가 발견돼서, 수정이 필요할 때 사용- pull request 창을 닫아버려서 복구할 때, 사용
[인증 방식] Cookie vs Session vs Token
쿠키(Cookie)정의 - 웹 서버가 클라이언트(브라우저)에 보내는 작은 크기의 데이터 조각 - 클라이언트는 이 쿠키를 저장한 뒤, 이후 서버에 요청을 보낼 때 함께 전송특징 - 클라이언트 측에 저장 - 서버는 쿠키 값을 읽어 클라이언트를 식별 - 상태 유지를 위한 간단한 방법 - 보안에 취약(자바스크립트로 조작 가능)사용 예시 - 사용자의 로그인 상태 유지, 사이트 설정 기억 등세션(Session)정의 - 서버 측에 저장되는 임시 데이터 영역 - 클라이언트가 처음 서버에 접속시, 고유 세션ID 생성 - 쿠키를 통해 클라이언트에 고유 세션 ID 전달 - 이후 클라이언트가 요청시마다, 세션 ID를 함께 전송, 서버에서 해당 세션에 저장된 정보 참조특징 - 서버 측에 저장 - 더 안전한 상태 ..
[SQL] 쿼리 속도 향상시키는 법
쿼리 튜닝- 데이터베이스 쿼리의 성능을 향상시키기 위한 작업- 쿼리 실행 속도를 빠르게 하고, 자원 사용량을 줄이는 것을 목표- 예시: 인덱스 생성, 쿼리 최적화, 테이블 구조 변경 등일반적인 쿼리 튜닝 방법1. 인덱스 활용2. 서브쿼리보다는 조인문 사용3. 쿼리 최적화 (Where 절 최적화) 쿼리 최적화(1) SELECT 를 할 때는 필요한 컬럼만 추출(2) LIKE 문을 사용 시, 와일드카드 문자열(%)을 String 앞부분에 배치하지 않기(3) GROUP BY 연산 시, HAVING 보다는 WHERE 절 사용하기(4) 조건 부여 시, 기존 DB값에 별도 연산 사용 안하기 ex) 조건절에 floor 함수 사용(5) SELECT DISTINCT, UNION DISTINCT와 같이 중복 값을 제거하는..
HTTP vs AJAX vs WebSocket
HTTP (HyperText Transfer Protocol)정의- 웹 서버와 클라이언트 간의 데이터 교환을 위한 기본적인 통신 프로토콜 특징- 요청 응답 방식: 클라이언트가 서버에 요청을 보내면 서버는 요청에 대한 응답을 보내는 일방향 통신 방식- 비연결성: 각 요청마다 새로운 연결이 생성되고 종료- 무상태: 서버는 이전 요청에 대한 정보를 저장하지 않음 주요 용도- 웹 페이지 로딩, 이미지, 파일 다운로드 AJAX (Asynchronous JavaScript and XML)정의- JavaScript를 이용하여 웹 페이지를 새로고침하지 않고 비동기적으로 서버와 통신하는 기술 특징- 비동기 통신: 사용자 인터페이스를 멈추지 않고 백그라운드에서 서버와 통신- 부분적인 페이지 갱신: 전체 페이지를 새..
이더넷 vs 인터넷
이더넷- 근거리 통신망(LAN)에서 사용되는 유선 네트워크 기술- 컴퓨터, 프린터, 스위치 등 여러 기기를 물리적으로 연결하여 데이터 전송- 케이블을 통해 연결하며, 일반적으로 빠르고 안정적인 속도 제공- 예시: 집, 회사 등에서 컴퓨터와 공유기를 이더넷 케이블로 연결하는 경우 이더넷 케이블 인터넷- 전 세계적으로 연결된 대형 네트워크- 이더넷과 같은 다양한 네트워크 기술을 통해, 서로 연결된 컴퓨터, 서버 등을 통해 정보를 공유하고 웹사이트에 접속- TCP/IP 프로토콜 기반 동작. 인터넷에 연결된 기기일 경우, 서로 통신 가능- 예시: 웹 브라우저 등을 통해 이메일을 보내는 경우 이더넷과 인터넷의 차이점특징이더넷인터넷종류유선 네트워크 기술전 세계 네트워크범위근거리전 세계연결 방식케이블다양한 네트..
[Linux] 리눅스 필수 명령어
1. pwd(Print Work Directory)작업중인 디렉토리 경로 조회2. ls(List Segments)현재 디렉토리의 파일과 폴더를 표시3. cd(Change Directory)현재 디렉토리를 변경4. mkdir(Make Directory)폴더 생성5. cp(Copy)파일 또는 폴더를 복사할 때 사용6. mv(Move)파일 또는 폴더의 위치를 옮길 때 사용, 이름 변경시 사용7. rm(Remove)파일 또는 폴더를 삭제할 때 사용8. cat(Catenate)파일의 내용을 확인할 때 사용9. touch빈 파일을 생성, 파일의 날짜 및 시간 수정시 사용10. echo문자열을 화면에 보여줄 때 사용, 리다이렉션을 사용해 파일 생성 및 추가 작업시 사용11. ip addr / ifc..
[JavaScript] 일반 함수 vs 화살표 함수
일반 함수와 화살표 함수의 차이점1. this 객체 바인딩일반 함수실행 주체에 따른 this가 동적으로 바인딩1) 함수 실행 시 전역(window)객체로 바인딩2. 메소드 실행 시 메소드를 소유하고 있는 객체를 바인딩3. 생성자 실행 시에는 새롭게 만들어진 객체를 바인딩-> 함수가 어떻게 호출되었는지에 따라 this에 바인딩할 객체가 동적으로 결정화살표 함수ES6부터 새로 추가된 익명 함수즉시 실행이 필요할 경우에 사용항상 상위 스코프의 this를 바인딩 (정적 바인딩)또한, call, apply, bind 메소드를 사용하여 this를 변경할 수 없음2. 생성자 함수로 사용 가능 여부일반 함수는 생성자 함수로 사용 가능화살표 함수는 생성자 함수로 사용 불가 -> prototype 프로퍼티 존..