본문 바로가기

프로그래밍/Node.js

(14)
[Do it! Node.js 프로그래밍] 14일차 1. 공부한 범위 [14] 게시판 만들기 2. 공부한 내용 [14] 게시판 만들기 14-1 스키마를 추가하고 페이지 단위 조회 방식 이해하기 - 우선 게시판을 위한 스키마를 정의한다. - 컬럼에는 글 제목, 글 내용, 글쓴이 (정보를 참조할 수 있도록 ObjectId가 저장된다.), 글의 태그, 글을 쓴 일시, 글을 수정한 일시, 댓글이 있다. - 위 스키마에는 두 가지 특이한 점이 있다. 1) writer 컬럼에 저장되는 데니터 타입이 mongoose.Schema.ObjectId다. 이는 사용자 정보가 users 컬렉션에 저장되어 있고 이 컬렉션의 문서 객체 중 ObjectId 속성값이 writer 컬럼에 저장된다는 뜻이다. 2) comments 컬럼 안에 다시 객체가 저장된다. 댓글 컬럼은 별도의 컬..
[Do it! Node.js 프로그래밍] 13일차 1. 공부한 범위 [12] 위치 기반 서비스 서버 만들기 2. 공부한 내용 [12] 위치 기반 서비스 서버 만들기 12-1 커피숍 위치 지정하기 커피숍의 위치 정보 다루기 - 위치 기반 서비스를 다루기 위해서는 여러 기능들을 포함해야 한다. - 커피숍을 찾는 기능을 만드는 과정 위치 정보 확인 : 특정 지역의 커피숍 이름이나 전화번호, 위치 정보 등 정보를 확인한다. 커피숍의 위치 정보는 특히 경위도 좌표로서 알고 있어야 한다. 위치 정보 저장 : 위치 정보를 포함한 커피숍 정보를 서버에 저장한다. 데이터는 서버의 데이터베이스에 저장된다. 커피숍을 위치로 조회 : 가까운 커피숍을 경위도 좌표를 활용해 조회한다. - 커피숍의 위치 정보를 확인하는 첫 단계에서는 해당 위치를 경위도 좌표로 알고 있어야 한다...
[Do it! Node.js 프로그래밍] 12일차 1. 공부한 범위 [11] JSON-RPC 서버 만들기 2. 공부한 내용 [11] JSON-RPC 서버 만들기 11-1 JSON-RPC를 웹 서버에 적용하기 - RPC (Remote Procedure Call) 는 서버에 데이터를 요청해 응답받는 과정을 라이브러리에서 자동으로 처리한다. - 로컬 단말에서 함수를 호출하는 것처럼 코드를 만들기만 해도 클라이언트와 서버 간의 데이터를 주고받는 기능이 동작하기 때문에 서버를 훨씬 쉽고 간단하게 만들 수 있다. - JSON-RPC는 JSON포맷으로 데이터를 주고받을 수 있어 자바스크립트를 사용하는 노드 프로그램에서 더 자연스럽게 사용할 수 있다. JSON-RPC 모듈 설치하여 사용하기 - RPC를 이용하게 된다면 먼 거리에 있는 서버에 함수를 만들고 클라이언트에..
[Do it! Node.js 프로그래밍] 11일차 1. 공부한 범위 [10] 채팅 서버 만들기 2. 공부한 내용 [10] 채팅 서버 만들기 10-1 soket.io 사용하기 soket.io를 사용하기 위해 모듈 설치하기 - soket을 위해서는 soket.io 모듈 뿐 아니라 cors 모듈도 설치해야 한다. - CORS : 이것을 사용하면 클라이언트에서 Ajax를 통해 데이터를 가져올 때 현재 보고 있는 브라우저의 웹 문서를 제공한 웹 서버 외 다른 욉 서버에서도 접속할 수 있도록 제약을 해제할 수 있게 된다. - socket.io와 cors를 모두 npm을 통해 설치한다. 이 과정을 마치면 socket.io를 사용할 준비가 끝난 것이다. app.js 메인 파일에 기본 코드 하나씩 추가하기 - app.js파일 안에 require를 통해 socket.io..
[Do it! Node.js 프로그래밍] 10일차 1. 공부한 범위 [09] 패스포트로 사용자 인증하기 2. 공부한 내용 [09] 패스포트로 사용자 인증하기 09-1 패스포트로 로그인하기 - 패스포트는 노드에서 사용할 수 있는 사용자 인증 모듈이다. 해당 모듈은 사용 방법이 간단할 뿐 아니라 인증 기능을 독립된 모듈 안에서 진행할 수도 있도록 돕는다. - 패스포트가 제공하는 수백 가지의 인증 방식 중 어떤 방식을 사용할 것인지 결정하는 것이 스트레티지다. - 대표적인 인증 방식으로는 DB에 저장된 사용자 정보와 비교하는 로컬 인증 방식(Local Strategy), 페이스북이나 트위터의 계정을 사용하는 OAuth 인증 방식등이 있다. - 패스포트 미들웨어를 통해 사용자를 인증할 때 미리 설정해 둔 인증 방식으로 사용자를 인식하는 데 성공하면 해당 정보를..
[Do it! Node.js 프로그래밍] 9일차 1. 공부한 범위 [08] 뷰 템플릿 적용하기 2. 공부한 내용 [08] 뷰 템플릿 적용하기 08-1 ejs 뷰 템플릿 사용하기 - 최근 만들어지는 새 언어들은 대부분 MVC 패턴을 사용한다. - MVC란 Model, View, Controller로서 눈에 보이는 부분은 뷰로, 뷰로 표현되는 데이터를 제공하는 것은 모델로, 처리되는 과정을 담당하는 것은 컨트롤러로 구분하여 구성하는 것을 의미한다. - 노드와 익스프레스도 마찬가지의 구성을 보이며 사용자 요청을 처리하는 라우팅 함수는 컨트롤러, 데이터베이스에 데이터를 저장하거나 조회하는 함수를 모델, 사용자에게 결과를 보여 주기 위해 만든 파일을 뷰라고 할 수 있다. - 뷰를 보자면 여태까지 결과를 사용자에게 응답으로 보낼 때 자바스크립트 코드를 직접 입력..
[Do it! Node.js 프로그래밍] 8일차 1. 공부한 범위 [07] 익스프레스 프로젝트를 모듈화하기 2. 공부한 내용 [07] 익스프레스 프로젝트를 모듈화하기 07-1 모듈화 방법 자세히 알아보기 - 프로그램의 기능이 많아질 수록 모듈화를 하지 않는다면 코드를 분석하기 더 어려워진다. - 이 문제를 해결하기 위해서는 기능별로 코드를 구분해 독립된 파일로 만드는 과정이 필요하다. 다양한 방법으로 모듈 만들기 - 새로운 자바스크립트 파일을 만든 후 exports 전역 변수를 사용해 다른 파일에서도 해당 exports 전역 변수의 속성을 참조할 수 있게 만든다. - 모듈화한 파일의 기능을 불러오고 싶다면 require() 메소드를 통해 불러들어야 한다. - require() 메소드로 불러들인 모듈을 변수에 할당한다면 해당 변수에는 exports가 속..
[Do it! Node.js 프로그래밍] 7일차 1. 공부한 범위 [06] 데이터베이스 사용하기 2. 공부한 내용 [06] 데이터베이스 사용하기 06-4 인덱스와 메소드 사용하기 - 몽고디비는 데이터베이스이기 때문에 더욱 빠른 검색을 위해 각 속성에 인덱스를 만들 수 있다. - 인덱스를 사용하게 되면 검색 속도가 빨라지기 때문에 조회가 필요한 속성에는 인덱스를 적용하는 것이 더 효율적이다. - 위치 기반 서비스를 위해 저장되는 위도 & 경도 좌표에는 공간 인덱싱을 사용해야 하며 [type: [Number], index: "2d", sparse: true]같은 형태로 객체를 만들어 설정 가능하다. - 몽구스에서는 스키마 객체에 메소드를 추가할 수도 있다. static(name, fn) : 모델 객체에서 사용할 수 있는 함수를 등록한다. 함수의 이름과 함..