Javascript/웹 개발 14

프로젝트 모듈 취약점을 점검하는 방법 (npm audit)

npm에는 개발자의 편의를 위해서 여러 command를 제공합니다. npm을 사용하여 개발하면서 내가 사용하고 있는 외부 모듈이 문제점을 갖고 있지 않을까 생각한다면 이러한 걱정을 덜어줄 수 있는 command가 있습니다. $ npm audit 프로젝트 루트 경로에서 npm audit 을 입력하면 프로젝트에서 사용하고 있는 모듈의 취약점에 대해서 알려줍니다. npm audit 은 취약점을 찾아줄 뿐만 아니라 간단한 수정도 가능합니다. $ npm audit fix npm audit fix 는 취약점을 가진 종속성에 대해 호환되는 버전으로 자동으로 업데이트 해줍니다. npm audit fix로 해결되지 않은 취약점은 more info 에서 제공되는 정보로 해결책을 참고하실 수 있습니다. 이상으로 프로젝트 모..

Github에 빠르게 업로드 하는 방법

git repository에 코드를 업로드하는 방법을 속성으로 살펴보려 합니다. 우선 자신의 로컬 환경(PC)에서 작업하는 저장소를 Local Repo라고 하며, Github에 있는 저장소를 Remote Repo라 합니다. Git 명령어 - git init : 새로운 local repo 생성 - git add : 변경된 파일들을 storage에 추가 - git commit : 추가한 파일들을 Local Repo에 저장 - git push : Local Repo를 Remote Repo에 업로드 Github에 소스 코드 업로드하기 1) 저장소 생성 Github 홈페이지에서 로그인을 한 후 repository를 생성합니다. https://github.com GitHub: Where the world build..

Request param, query, body 차이점

Request 객체는 API를 컨트롤하기 위한 메소드를 3개 담고 있는데 - param - query - body 1. req.param : 주소에 포함된 변수를 담는다. 예를 들어 https://yunbo96.tistory.com/post/12345 라는 주소가 있으면 12345를 담는다. 2. req.query : 주소 바깥 , ? 이후의 변수를 담는다. 예를 들어 https://yunbo96.tistory.com/post?nickname=hi 일 경우 hi를 담는다. 3. req.body : XML, JSON, Multi-Form 등의 데이터를 담는다. 당연히 주소에선 확인할 수 없다. 요청 본문에 제출된 키-값 데이터 쌍을 포함한다. req.body는 body-parser를 사용하기 전에는 def..

REST API 엔드포인트 이름 규칙

REST 자원 명명 가이드 1. resource는 단일 객체거나 집합이 될 수 있다. 집합 객체 URI - /customers 단일 객체 URI - /customers/{customerId} 2. 자원은 하위 집합 자원들을 포함한다. customer - accounts(하위 집합 자원) accounts 집합 자원을 얻기 위해서 URI는 - /customers/{customerId}/accounts account 단일 자원을 얻기 위해서 URI는 - /customers/{customerId}/accounts/{accountId} ----------------------------------------------------------------------------------------------------..

쿠키, Web Storage(Local Storage, Session Storage)

쿠키 - 클라이언트가 서버에 방문한 정보를 클라이언트 단에 저장하는 작은 파일 - 매번 서버에 전송(서버에 부담이 갈 수 있다.) - 다른 도메인에서 요청할 때도 자동 전송될 수 있다. - 유효 기간 존재 Web Storage - 클라이언트에 데이터를 저장할 수 있도록 HTML5부터 새롭게 지원하는 저장소 - 쿠키와 달리 서버에 전송되지 않는다 - 필요한 경우에만 꺼내 쓴다. - 유효 기간 존재 X - 로컬 스토리지와 세션 스토리지가 있다. a. Local Storage - 브라우저를 종료해도 유지되는 데이터로, 명시적으로 지우지 않는 한 영구적으로 저장 - 도메인별로 생성 b. Session Storage - 탭/윈도우 단위로 세션 스토리지가 생성 - 다른 도메인이라면 또 다른 세션 스토리지가 생성 -..

포워드 프록시/리버스 프록시

프록시 서버 - 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램 포워드 프록시 - 클라이언트가 서버로 요청할 때 직접 요청하지 않고 먼저 프록시 서버를 통해 요청하는 방식 - 서버에게 클라이언트가 누군지 감추는 역할 인터넷보다 프록시 서버를 먼저 호출하게 되면 포워드 프록시 예) 회사 내부 인트라넷에서 인터넷상에 있는 서버에 요청할 때 프록시 서버를 호출하는 방식 리버스 프록시 - 클라이언트가 서버를 호출할 때 리버스 프록시를 호출하게 되고 프록시 서버가 서버를 요청하여 받은 응답을 클라이언트에게 전달하는 방식. - 서버가 누구인지 감추는 역할 예) 내부 인트라넷에 있는 서버를 호출하기 위해서 인터넷 망에 있는 클라이언트가 리버스 프록시..

포트 포워딩

포트 - 하나의 서버가 있을 때 서버는 웹 사이트를 전달해주는 역할과 파일을 요청하는 역할이 있는데 클라이언트가 서버에 요청을 보냈을 때 이 요청이 어떤 요청인지 구분할 수 있는 방법이 포트를 사용하는 것이다. 포트 포워딩 - 컴퓨터 네트워크에서 패킷이 라우터나 방화벽 같은 네트워크 게이트웨이을 통과하는 동안 네트워크 주소를 변환해주는 것을 의미. 즉, 외부에서 접속이 가능하도록 하는 것

클라이언트 사이드 렌더링/서버 사이드 렌더링

렌더링 - 서버로부터 받은 내용을 브라우저 화면에 표시하는 것 렌더링의 과정 - Loader가 서버로부터 정보를 불러옴 - Parsing을 통해 문서를 DOM 트리로 만든다. - DOM 트리가 구축되는 동안 브라우저는 렌더 트리를 구축 - CSS 설정/레이아웃 위치 지정 - 렌더링 트리가 그려짐 클라이언트 사이드 렌더링(CSR) - 보통 브라우저에서 자바스크립트를 사용해 콘텐츠를 렌더링하는 것. - 즉, 자바스크립트를 사용하여 HTML 문서에 렌더링을 진행하는 것.(Vue.js와 React.js의 등장으로 인기를 끌었다.) - 서버에 문서를 요청하는 것이 아니라, 브라우저에서 처리 장점 - 처음 요청할 때 한 페이지만 불러온다. (예-React에서 index.js만 불러온다) - 사용자의 행동에 따른 필..

동기/비동기

동기 - 요청을 보낸 후 응답을 받아야지만 다음 동작이 이루어지는 방식 - 어떠한 일을 처리하는 동안 다른 프로그램은 정지 비동기 - 요청을 보낸 후 응답과는 상관없이 다음 동작이 이루어지는 방식 - 결과가 주어지는데 시간이 오래 걸려도 그 시간 동안 다른 작업을 할 수 있으므로 자원을 효율적으로 사용할 수 있다. - 처리를 요청할 때 할 일이 끝난 후 처리결과를 알려주는 콜백이라는 함수를 함께 알려준다.