NodeJS Conference Mobile Trend 2012. 11. 8. 03:04

사이트 : http://nodeconf.kr/2012/

올해에 NodeJS 컨퍼런스가 국내에서 처음 열린다고 한다. 필자는 NodeJS를 시작한지 몇개월 안되었지만, 매력에 푹 빠져서 이 컨퍼런스도 참석하려고 한다.


등록은 11월 20일(화)에 이루어졌는데, 보다시피 얼리버드로 등록완료! :)


11월9일부터 일반신청도 가능하니 NodeJS에 관심이 있는분들은 한번 가보면 괜찮을 듯 싶어서 공유!

환경 : Mac OSX Lion


1. 설치하기

몇일전에 Sencha Touch 2.1 RC2 를 이용하여 앱 개발해보고 테스트를 하려고 했지만, 아직 베타버전이라 고생을 많이 해서 다시 2.0.1버전으로 앱을 개발하기로 했다...

Download : http://www.sencha.com/products/touch/download/ ( Sencha Touch 2.0.1 )

사이트에 접속을 하고 E-mail 을 적고 버튼을 누르면 메일로 다운로드 주소가 오게된다.

< E-Mail 화면 >


다운을 받으면 압축을 풀고 원하는 위치에 놓는다. 필자는 ~/dev/안에 넣어뒀다.


완료 되었으면 다음으로 Sencha SDK를 다운받는다. 

Download : http://www.sencha.com/products/sdk-tools/download ( Sencha SDK 2.0.0 Beta 3 )

이 사이트에서 다운받아서 바로 설치하면 끝!

설치가 끝나면 확인을 위해 터미널을 열고 sencha 를 쳐본다.



2. 프로젝트 만들기

설치를 완료했으면 간단한 명령어를 통해 프로젝트를 한번 만들어보자.

일단 터미널을 접속한 후 Sencha Touch 2.0,1을 다운받았을 때 압축을 푼 폴더로 가자.

그리고 다음 명령어를 쳐본다.

sencha generate app test ../testfolder

위의 명령어를 통해 프로젝트를 생성하는 화면이다.

이 명령어는 sencha generate app [앱이름] [경로] 로 이루어져 있으며, 이것으로 간단하게 프로젝트를 만들어볼 수 있다.

폴더 내부는 다음과 같이 이루어져있다.

# app 폴더는 Sencha Touch 의 MVC모델의 파일을 저장하는 곳이다. 처음 생성하면 view > Main.js 파일이 기본적으로 생성되어있다.

# app.js 파일은 Sencha Touch 2 버전의 가장 초기에 실행되는 파일로서, Ext.Application이 정의되어 있다.

# app.json 파일은 앱이 실행하기에 추가적인 외부파일 등을 추가하기 위한 앱 속성파일이라고 생각하면 된다.

# packager.json 파일은 앱을 패키징하기 위한 속성파일이다.

# resources 폴더는 하위폴더 이름을 보면 아시다시피 추가적인 파일을 저장해놓은 폴더이다.

# sdk 폴더는 Sencha 모듈이 들어있는 폴더이다.


이 프로젝트를 실행하려면 그전에 localhost 환경을 만들어야한다.

환경을 설정하고 index.html 를 실행하면 다음과 같은 모습을 볼 수 있다.




'Hybrid Application > SenchaTouch' 카테고리의 다른 글

Production 빌드의 문제?  (0) 2012.11.08
Sencha SDK 주요 명령어  (0) 2012.11.08
Get Started Sencha Touch 2.1 RC2 - 1.환경설정편  (0) 2012.10.22
Sencha Touch 2.1 RC2  (0) 2012.10.22

환경 : Ubuntu 11.04 Server / Mac OSX Lion

참고사이트 : http://mongoosejs.com/docs/api.html ( Mongoose API 사이트 )

http://nodetuts.com/tutorials/18-mongodb-and-mongoose.html ( 다른 서버사이드 소스를 Mongoose로 바꾸는 동영상이 있는 사이트 )



1. Mongoose 설치

NodeJS 에 NoSQL(MongoDB)를 사용하기로 마음을 먹었다. 

MongoDB를 사용하기 위해서 설치하는 모듈을 둘러본 결과 MongoDB-Driver Mongoose 라는 외부모듈이 가장 많이 사용되는것으로 파악되었고, 두 모듈 중 어느 것을 사용할까 고민하던 중 게시판에서 두가지를 놓고 투표 한 결과로 Mongoose 모듈이 득표율이 높았던 것을 확인할 수 있었다.

따라서 필자는 Mongoose를 사용해야겠다는 결심을 했다. (꼭 Mongoose를 안써도 되니 선택은 직접!)


앞서, MongoDB를 설치를 하였고, 동일 프로젝트 안에 mongoose 모듈을 npm으로 설치한다.

 npm install mongoose 



2. 용어정리

필자는 MySQL을 통해 DB라는 개념을 접근하였는데, Mongoose에서는 어떤형식으로 사용하는지 확인해보자.

MySQL 

MongoDB 

 Database

Database 

Schema

Schema 

Table

Collection 

Row

Document 

추가적으로 소스를 보면서 이해해보자.

 mongoose.connect('mongodb:/localhost/test') 

위 소스는 mongoose를 통해 DB서버에 접속하는 구문이다. 이때 test 는 Database이름을 적으면 된다. 

 var ThingSchema = new Schema({ 

     'name': String, 

     'age': Number 

 }); 

위 소스는 mongoose에서 Schema를 생성하는 구문이다. 

 var Thing = mongoose.model('thing', ThingSchema); 

위 소스는 mongoose에서 Thing이라는 Collection을 생성하는 구문이다. 위 Schema대로 Table을 생성했다고 이해하면 된다.
여기서 중요한점은 test라는 Database에 thing이라는 table이 아닌 자동으로 s가 붙어서 things 라는 table이 된다.

 Thing.find({} , function(err,docs){ 
 console.log(docs); 
 }); 
위 소스는 mongoose에서 Thing이라는 Collection에서 검색하는 구문이다. 쉽게 Select문이라고 이해하면 되고 find옆에 {} 이 사이에는 Where문 처럼 해당하는 조건값을 넣어주면 된다. 여기서 docs는 Document를 뜻하는데 한 Row씩 검색하는 방식이므로 Document는 Row를 의미한다.


3. 응용하기

바로 예제를 보면서 테스트 해본다.

필자가 필요로 하는 부분은 SQL문에서 흔히 쓰이는 Insert / Update / Select / Delete 하는 부분을 구현하는 것이었다.

자세한 내용은 API 사이트 http://mongoosejs.com/docs/api.html 를 참조하길 바란다.



# Example #


var mongoose = require('mongoose');


// mongoose를 mongoDB가 설치되어있는 곳에 접속하는 구문. test라는 Database로 접속!

mongoose.connect('mongodb://localhost/test');


// 이쪽은 꼭 안해도 된다....

var Schema = mongoose.Schema;

var ObjectId = Schema.ObjectId;


// Collection을 생성하기 전에 Schema를 통해 구조를 만들어 놓는다.

var ThingSchema = new Schema({

  'name': String,

  'age': Number

});


// Thing이라는 Collection을 생성. 

var Thing = mongoose.model('thing', ThingSchema);


// 새로운 인스턴스를 생성하는 방법 + 데이터를 넣고 Insert하는 부분.

/*

var newThing = new Thing();

newThing.name = 'a';

newThing.save(function(err){

  // saving is asynchronous

  if(err) console.log("Something went wrong while saving the thing");

  else console.log("Thing was successfully saved");

});

*/


// 조건을 통해 Select 하는 방법 + 그 해당 Document에서 id라는 부분을 참조하는 방법

Thing.find({ name: 'c' }, function(err, docs){

for(var i=0, size=docs.length; i<size; i++) {

var name = docs[i]._id;

console.log(name);

}

// 이 부분은 Update문 사용하는 방법, 

/*  Thing.update({$inc: {name:'e'}}, { safe: true }, function(err) { console.log(err); }); */

});


// 이 부분은 조건을 통해 Select라는 방법은 똑같지만 1개의 Document만 필요로 할때 유용한 방법.

/*

Thing.findOne({ name: 'c' }, function(err,docs){

console.log('deleting' + docs); //Remove all the documents that match!

docs.remove();

docs.save();

});

*/


// 위에 나왔던 Update는 같지만, multi 프로퍼티를 통해 해당하는 모든 Document를 바꿔주는 방법.

/*

Thing.update(

{ name: 'c' },

{ $set: { name : 'd' } },

//  { multi: true }, 

function(err, res) {

console.log(err, res);

}

);

*/


// Delete 하는 방법. {} 안에는 조건도 가능함.

/*

Thing.remove({}, function(err) {

if(!err) {

console.log('no err');

} else {

console.log('err');

}

});

*/


4. 확인해보기

MongoDB가 설치되어있는 서버로 가보자.

mongo

위의 명령어를 통해 mongoDB에 접속해보자.

접속하자마자 Database는 test로 되있다.


현재 Database를 확인하는 명령어는

 > db 

현재 Collection을 확인하는 방법은

 > db.콜렉션이름.find()             ex) db.things.find()


따라서 위의 소스를 이용하여 테스트한 결과는 다음과 같이 확인 할 수 있다.


'NoSQL > mongoDB' 카테고리의 다른 글

mongoDB 설치  (0) 2012.10.29