기본 콘텐츠로 건너뛰기

요즘 Node에 대해 공부 중이다.

요즘 Node에 대해 공부 중이다.

예전부터 조금씩 익혀오긴 했지만 본격적으로 Node 서버에 대해 샘플 프로그램을 작성해 보고 있다. 일반적으로 Mean(MongoDB + Express + angular.js+ NodeJS) 스택을 사용하는데, angular.js 가 익숙하지 못해 MongoDB + Express + Nodejs 까지만 적용해 봤다. 처음 시작할 때는 Javascript 에 대해서 익숙하고 Django를 하다보니 서버쪽도 많이 해봤고, cassandra 로 개발을 해봤기에 NoSQL 경험도 있기에 쉽게 생각했는데......

누군가 나처럼 Django에서 NodeJS 를 공부하는 사람들을 위해 몇가지 기록을 남긴다.

Django 로 개발할 때는 Eclipse + PyDev 를 주력으로 사용했는데, Node 의 경우 Eclipse 가 편하지 않았다. 세팅 환경 잡기도 어려웠다. 물론 내가 제대로된 가이드를 찾지 못해서가 원인 일 수도 있다. 어째든 vscode 로 환경을 설정했는데, 크게 불편하지는 않았다. (물론 난 vscode 로 파이썬을 개발하기도 한다. )

Django 를 주력으로 사용했던 사람이다 보니 뭔가 맨바닥에서 부터 시작한다는 느낌이 드는 것 같았다. Django 의 경우 UserModel 을 기본적으로 제공하는데 Express의 경우 그런게 따로 없다. 그래도 라이브러리가 있는데 Passport.js(http://www.passportjs.org/) 가 가장 많이 사용하는 것 같았다. 그리고 local에서 mongoDB 까지 User 를 생성하려면 아무래도 passport + passport-local + passport-local-mongoose 를 이용하는게 편하다. https://github.com/saintedlama/passport-local-mongoose 에 있는 test 내용을 잘 참고해서 환경을 구축하는게 좋은 것 같다.

Express 템플릿 엔진은 jade 와 ejs 가 있는데 HTML 에 익숙한 사람이라면 ejs 가 더 편하다. Jade 의 경우 기존 HTML 형태가 아니라 새로운 형태로 만들어야 한다. (물론 ejs 도 몇가지 자체 문법이 있다. )

내 경우, Bootstrap 템플릿을 이용해서 HTML 쪽을 구현하는 편이데, HTML 을 수시로 Copy & Paste 하는데 익숙하다보니 내가 개발하는 속도 상에서 너무 차이가 나서 ejs 를 사용했다. (물론 angular.js 를 사용한다면 딱히 템플릿엔진이 필요 할 수 없을 것 같다. )

MongoDB의 경우 모델링 개념 잡는데 조금 어려움을 겪었고, 그리고 그 데이터를 Query 하는데 더 많은 어려움을 겪었다. 모델링보다 Query 구문 만드는게 더 어렵다. 물론 Query 하나하나는 그렇게 까지 어렵지 않은데(물론 오타같은 것은 눈에 안 익어서 고치는게 오래걸린다... 이것 내 머리와 손의 문제다.... 그리고 에러 문구에 익숙해지는 것도 신기술을 배울 때 어쩔 수 없기 겪어야 하는 절차겠지....) 최적화해서 한 방에 Query 짜는 것은 기능을 모두 알지 못해 오래 걸리고 있다. 뭐, 이건 SQL 쪽에서 Query 최적화와 마찬가지니 계속 익혀나가는 수 밖에 없을 것 같다.

어느정도 샘플이 작성된다면 Git 에 올리도록 하겠다.

from http://yiunsr.tistory.com/755 by ccl(S) rewrite - 2020-03-06 19:54:53

댓글

이 블로그의 인기 게시물

(주)편두리 채용 정보: PYUNDOORI에서 핫한 개발자분들을 모십니다.

(주)편두리 채용 정보: PYUNDOORI에서 핫한 개발자분들을 모십니다. - 좋아요 아래와 같은 업무를 훌륭히 감당하실 분을 모십니다.서비스 관련 DB 모델링, DB 최적화 작업서버 & DB 관리Frontend & Backend 인터페이스의 최적화 작업 화합과 성장을 같이! - Angular JS의 경험 - Node.js - javascript 능숙자 - DRMS 사용 능숙자 더 많은 내용은 더 많은 내용은 더팀스 에서 확인하세요! from http://theteams.tistory.com/742 by ccl(A) rewrite - 2020-03-22 12:20:20

[020] 파동함수를 쓰기

[020] 파동함수를 쓰기 [020] 파동함수를 쓰기 [020] 파동함수를 알면 우리가 원하는 뭔가를 알 수 있다고 했는데, 정작 파동을 함수로 쓰는 것은 아직 다루지 않았고, 양자역학 내용을 좀 더 진행하려면 왜 파동이 삼각함수로 써 지는지를 한번은 정리를 해야겠다. 수학이 많이 나올 예정이다. 앞에서 파동함수를 아래 형태로 쓸 수 있다고 했었는데, 왜 이런 형태가 되는지 알아보자. [020-01] 파동함수 사인파의 일반형은 코사인 (cos) 을 이용해 쓰지만, 사인 (sin) 과 코사인은 위상차이만 있는 함수들이고, 우리는 앞으로 사인을 이용해 문제를 풀 예정이라 사인을 이용하기로 한다. 파동함수는 양자역학에서 갑자기 나온 말이 아니고, 원래 파동을 함수의 형태로 쓴 것을 파동함수라고 부른다. 파동-입자 이중성을 가지니까 기존에 파동을 함수의 형태로 쓰던 그 모양을 가져다 쓴 것. 주교재의 16장에 있는 내용이다. [020-02] 펄스 - Pulse 아래와 같이 하나의 진동이 왼쪽에서 오른쪽으로 진행하는 상황을 생각해보자. 시간 t 일 때, 위치 x 의 밧줄의 높이를 y 라 하고, 셋의 관계를 기호로 쓰면, 그러면 아래의 관계가 성립한다. 이게 무슨말이냐면, 시간 t 일 때 위치 x 의 밧줄의 높이 와 시간 0 일 때 위치 x-vt 의 밧줄의 높이가 같다 는 말인데, 그림으로 보면, 왼쪽은 시간 0, 오른쪽은 시간 t 이고, t 일 때 P 의 높이와 0 일 때 높이가 같다는 것. [020-03] 파동을 식으로 써보자. 아래의 파동을 보자. 지금 내용부터는 사인이든 코사인이든 상관없는데, 위 그림이 사인이니까 아래의 식 으로 쓸 수 있다. A는 진폭이고, 주기, 진동수, 파장 같은 값을 아직 모르니까 a 는 아직 정해지지 않은 값 이다. 일반적으로 알고있는 삼각함수는 가로축이 각도 이지만, 우리는 공간을 진행하고 있는 파동을 다루니까 위의 형태로 써진다고 생각하자. x=0 에서 진폭이 ...

[Angular] Router 라우터 정리

[Angular] Router 라우터 정리 Angular2 버전 이후를 기준으로 정리한 글입니다. 라우터는 URL을 사용하여 특정 영역에 어떤 뷰를 보여 줄지 결정하는 기능을 제공한다. 전통적인 서버사이드 렌더링을 하는 웹 사이트는 주소가 바뀔 때마다 서버에 전체 페이지를 요청하고 전체 페이지를 화면에 렌더링한다. 매 요청시 전체 페이지를 새로 랜더링하는 것은 비효율적이기 때문에 라우터를 이용하여 필요한 부분만 랜더링을 한다면 효율적일 것이다. 라우터는 URL에 해당하는 컴포넌트를 화면에 노출하고 네비게이션을 할 수 있는 기능을 가지고 있다. Router 구성 요소 Router – 라우터를 구현하는 객체이다. Navigate() 함수와 navigateByUrl() 함수를 사용하여 경로를 이동할 수 있다. RouterOulet – 라우터가 컴포넌트를 태그에 렌더링하는 영역을 구현하는 Directive이다. Routes – 특정 URL에 연결되는 컴포넌트를 지정하는 배열이다. RouterLink – HTML의 앵커 태그는 브라우저의 URL 주소를 변경하는 것이다. 앵귤러에서 RouterLink를 사용하면 라우터를 통해 렌더링할 컴포넌트를 변경할 수 있다. ActivatedRoute – 현재 동작하는 라우터 인스턴스 객체이다. Router 설정 라우터를 사용하기 위해서는 먼저 Router 모듈을 import 해야 한다. import { RouterModule, Routes } from '@angular/router'; 라우터에서 컴포넌트는 고유의 URL과 매칭된다. URL과 컴포넌트는 아래와 같이 Routes 객체를 설정하여 지정할 수 있다. 아래의 예에서는 디폴트 path에서는 MainComponent가 노출이 되고 product-list path에서는 ProductListComponent가 노출이 되도록 설정을 한 것을 볼 수 있다. const routes: Routes = [ { pa...