Dev Web/Node.js2013. 9. 24. 10:43
1. Node.js 배경사

Node.js 는 구글 크롬 브라우저에서 사용하는 V8 자바스크립트 엔진을 기반으로 자바스크립트로 애플리케이션을 개발 할 수 있게 합니다.

V8 엔진은 기존의 다른 자바스크립트 엔진보다 속도가 빨랐고, 그로 인해 자바스크립트를 이용해서 웹 브라우저가 아닌 곳에서 쓸 수 있게 되었습니다. CommonJS(ServerJS) 프로젝트와 V8 자바스크립트 엔진을 기반으로 Node.js 를 개발하기 시작했습니다.

기존 웹 서버는 대부분 쓰레드(thread)를 기반으로 하는 동기 방식으로 네트워크 입출력을 처리하는 반면, Node.js 는 이벤트를 기반으로 하는 비동기 방식으로 네트워크 입출력을 처리합니다.


2. 이벤트 기반 비동기 방식

Node.js 는 이벤트 기반 비동기 방식으로 작동 -> 대규모 네트워크 프로그램 개발에 적합

물건 구매를 예를 들어 여러 가게에 물건을 사러 간다고 할 때,

동기 방식은

  • 몸을 복제하여 동시에 여러 가게에 간다.
    • 이 방식은 쓰레드를 여러개 만들어 동시에 일을 처리한다는 것을 의미합니다.
    • 쓰레드는 많아질수록 메모리 사용량이 폭발적으로 증가하는 단점이 있습니다.
비동기 방식은
  • 시장을 대기표를 나누어주는 시스템으로 바꾸고 대기표를 받고 기다린다.
    • 대기 번호를 부르는 이벤트가 발생하는 순간 물건을 받아오면 됩니다.
    • 쓰레드는 단 하나만 사용하므로 몸은 하나입니다.
    • 이벤트를 사용하므로 빠른 속도로 일을 처리할 수 있습니다.
    • 하지만, 일을 처리하는 한 명이 쓰러지는 순간 프로그램 전체에 문제가 발생하는 단점도 있습니다.

3. Node.js 장점과 단점

장점

Node.js 장점은 이벤트 기반 비동기 방식을 사용하여 대규모 네트워크 프로그램을 개발하기 적합합니다.

자바스크립트를 사용하기 때문에 다른 기존 웹개발자 들이 쉽게 접근 할 수 있습니다.

구글이 V8 자바스크립트 엔진 속도 점점 더 빠르게 하고 있습니다.

C++를 사용하여 기능을 확장 할 수 있습니다. (V8 엔진이 C++로 개발)

단점

단점은 프로그램 진행에 문제가 발생하는 순간 프로그램 전체가 영향을 받는 것입니다.

V8 자바스크립트 엔진이 아무리 빨라도 C, C++ 언어로 개발된 서보보다는 느립니다.


4. Node.js를 사용한 애플리케이션

이베이, 링크드인, 야머, 윈도 애저



참고 : 모던 웹을 위한 Node.js 프로그래밍 - 윤인성



Node.js 프로그래밍

저자
윤인성 지음
출판사
한빛미디어 | 2013-09-20 출간
카테고리
컴퓨터/IT
책소개
이 책이 제시하는 핵심 내용 자바스크립트 + Node.js로 배...
가격비교글쓴이 평점  



'Dev Web > Node.js' 카테고리의 다른 글

[Node.js] express 모듈  (0) 2013.09.24
[Node.js] jade 외부 모듈  (0) 2013.09.24
[Node.js] ejs 외부 모듈  (0) 2013.09.24
[Node.js] 기본 내장 모듈  (0) 2013.09.24
[Node.js] Node.js 샘플 애플리케이션  (0) 2013.09.24
Posted by 놀란
Dev Web/HTML2013. 8. 27. 12:06

code.jquery.com 의 최신버전 URL 을 호출해서 사용하면 됩니다.

주소는 http://code.jquery.com/jquery-latest.min.js 입니다.

호출 방법은 아래와 같습니다.


<script src="http://code.jquery.com/jquery-latest.min.js"
        type="text/javascript"></script>

Posted by 놀란
Dev 기타2013. 4. 18. 12:38

리눅스 서버 사용 시에 특정 위치 (예를 들어 웹서버 루트 디렉토리) 밑에 있는 모든 특정 파일(index.html)을 지워야 해야 할 때 어떻게 해야 할까?

하나하나 찾아서 지운다는 것은 너무나도 피곤한 일이다.

이럴 때 find 와 rm 명령어를 사용하면 쉽게 지울 수 있다.

  1. 현재 디렉토리 와 그 밑에 있는 모든 디렉토리에 존재하는 index.html 을 삭제
    • find . -name index.html -exec rm -f {} \;
  2. 서버 내의 모든 디렉토리에 존재하는 index.html 을 삭제
    • find / -name index.html -exec rm -f {} \;
  3. 특정 디렉토리(web)와 그 밑에 있는 모든 디렉토리에 존재하는 index.html 을 삭제
    • find /web -name index.html -exec rm -f {} \;
간단하게 설명하자면 find -name 명령어로 index.html 파일을 찾아서 그 파일을 rm -f 명령어를 실행(-exec) 하라는 의미 입니다.


Posted by 놀란
Dev/iOS2013. 4. 17. 11:06

iOS6 으로 업데이트 되면서 기존의 shouldAutorotateToInterfaceOrientation 메소드가 deprecated 되었습니다.

iOS6 에서는 shouldAutorotate, supportedInterfaceOrientations, preferredInterfaceOrientationForPresentation 이렇게 3가지 메소드로 구현해야 합니다.

deployment taget 을 5.0 부터 하기 위해서는 iOS5 방식과 iOS6 방식 2가지 모두 구현하면 됩니다.

아래 코드 참고 하세요. (landscape 모드 설정 입니다)

//iOS5 setting
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    
    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight) || (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}

//iOS6 setting
- (BOOL)shouldAutorotate
{
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscape;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    
    return UIInterfaceOrientationLandscapeLeft;
}
  


Posted by 놀란
Dev 기타2013. 4. 12. 15:29

ls -l | grep "^d"

- ls 로 출력 하는데 맨 앞부분이 d (디렉토리) 인 것만 출력하면 된다.

Posted by 놀란
Dev 기타2013. 4. 2. 14:55

linux 에서 파일을 생성하거나 수정 할 때, root 가 아닐 경우에는 다른 사용자가 만든 파일 수정이 안 될 수가 있다.

이것은 소유자 권한에 rw 가 있으나, 그룹이나 기타 (other) 의 경우에는 r 권한만 있어서이다.

이것을 해결하기 위해서는 해당 디렉토리에 그룹 권한 규정을 설정해 주면 된다.

setfacl -R -d -m g:group_name:rw targetDirectory/

or

setfacl -R -d -m g::rw targetDirectory/

-R 은 recursive 옵션 (targetDirectory 밑으로 모두 적용 되게)

-d 는 (default) 옵션

-m 은 modify 옵션 (g: 그룹, u: 유저):rwx (읽기, 쓰기, 실행)권한을 targetDirectory 밑으로 group_name 그룹에게 준다. 


Posted by 놀란
Dev Web/PHP2013. 3. 26. 10:50

PHP 에서 array_intersectarray_diff 같은 함수를 사용해서 배열값을 받게 될 경우,

결과 배열 값의 키 값의 숫자 인덱스 값이 0부터 차례대로가 아닌 처음 배열 키 값 그대로 남게된다.

ex ) 0 => a, 1 => b ..... 가 아닌 0 => a, 5 => b, 8 => c 이런 식으로...

이렇게 됐을 경우 for 문을 돌리거나 다른 로직에 사용하기 위해서 순차적으로 0,1,2 로 바꿔줘야 한다.

이렇게 하기 위해서는 아래와 같은 코드를 사용하면 된다.


Posted by 놀란
Dev Web/PHP2013. 3. 18. 18:43

php 에서 timestamp 값이 갖고 있는데, 이 값을 이용해서 그 값이 0시, 그러니까 하루 시작 시간값을 timestamp 값을 필요할 때가 있다.

마찬가지로 그 다음 날 0 시가 필요할 때도 있다. (대부분 SQL 에 조건값을 던지기 위해서 겠지만... )

date(), mktime() 등을 이것저것 이용할 필요없이, strtotime 메소드 하나로 처리가 가능하다! 


URL : http://www.php.net/manual/en/datetime.formats.relative.php

Posted by 놀란
Dev/DB2013. 3. 15. 12:39

  • foo = collection(table) 명
  • bar = field 명
  1. SELECT 문
    1. 컬렉션(테이블) 전체 선택
      1. db.foo.find()
    2. 컬렉션(테이블) 조건 선택
      1. db.foo.find({"age" : 27})
        1. age 가 27인 문서 찾기
  2. COUNT 문
    1. 컬렉션(테이블) 전체 선택
      1. db.foo.count()
    2. 컬렉션(테이블) 조건 선택
      1. db.foo.count({"x" : 1})
        1. x 가 1인 문서 찾기
  3. INSERT 문
    1. 컬렉션(테이블) 문서 삽입
      1. db.foo.insert({"bar" : "baz"})
        1. foo 컬렉션에 key가 bar 이고 내용이 baz 인 문서를 삽입
      2. 여러 문서를 삽입할 때는 일괄 삽입(batch insert)이 보다 빠르다!
        1. 일괄 삽입은 문서의 배열로 전달할 수 있음
  4. UPDATE 문
  5. DELETE 문
    1. 컬렉션(테이블)의 모든 문서 삭제
      1. db.foo.remove()
    2. 컬렉션(테이블)의 선택적 삭제
      1. db.foo.remove({"bar" : "baz"})
        1. foo 컬렉션에서 "bar" 의 데이터가 "baz" 인 데이터만 삭제
    3. 한번 데이터가 지워지면 영원히 사라진다. (삭제를 취소하거나 복구할 방법은 없음)
    4. 전체 삭제할 경우에는 drop_collection 을 사용하면 훨씬 빠르다. 하지만 조건 절은 사용할 수 없음.
      1. db.foo.drop()


'Dev > DB' 카테고리의 다른 글

[MongoDB] DataBase 생성  (2) 2013.02.26
[MySQL] Limit 사용법  (1) 2013.02.05
[SQL-SERVER] 특정 테이블의 컬럼 제목 알아내기  (0) 2012.10.22
[MS-SQL] IDENTITY (시퀀스) 초기화  (0) 2012.06.27
Posted by 놀란
Dev 기타2013. 3. 6. 16:24
  1. Tomcat 다운로드 (http://tomcat.apache.org/download-70.cgi)
    1. Binary Distributions 에서 Core 의 tar.gz 버전을 다운 받으면 됨
  2. 자신의 맥의 Downloads 폴더에 다운이 됐으면 압축 해제를 함.
    1. command - tar xvzf apache-tomcat-7.0.37.tar
    2. 혹은 압축해제기를 이용하여 압축 헤제
  3. 압축해제 된 폴더를 /usr/local 폴더로 옮긴다.
    1. sudo mv apache-tomcat-7.0.37.tar /usr/local
    2. 만약 /usr/local 폴더만 없으면, 만들어준다.
      1. sudo mkdir -p /usr/local
  4. 앞으로 관리를 위해 Library 밑으로 심볼릭 링크를 만들어준다.
    1. 만약 Library 밑에 Tomcat 폴더가 있으면 지워준다.
      1. sudo rm -f /Library/Tomcat
    2. sudo ln -s /usr/local/apache-tomcat-7.0.37 /Library/Tomcat
  5. Tomcat 폴더의 밑의 소유주를 해당 유저로 바꿔준다.
    1. sudo chown -R <your username> /Library/Tomcat
  6. Tomcat 폴더 밑의 bin 폴더의 쉘들을 실행가능 하게 권한을 준다.
    1. sudo chmod +x /Library/Tomcat/bin/*.sh
  7. 웹 브라우저를 실행시킨뒤 'http://localhost:8080' 으로 톰캣 웹서버 응답화면이 나오면 정상!
  8. 끝!


Posted by 놀란