본문 바로가기

IT/ETC

[node.js] 테스트 코드

/******************************************************

var result = 0;

console.time('d_t');


for(var i=0; i<=100000; i++) {

    result += i;

}


console.timeEnd('d_t');

console.log('1부터 100000 까지의 합 : %d', result);

*******************************************************/


/******************************************************

console.log('현재 실행한 파일의 이름 : %s',__filename);

console.log('현재 실행한 파일의 경로 : %s',__dirname);

*******************************************************/


/******************************************************

var Person = {name:"소녀시대", age:20};

console.dir(Person);

******************************************************/


/******************************************************

console.log('argv 속성의 파라미터 수 : ' + process.argv.length);

console.dir(process.argv);

console.log(process.argv[2]);


process.argv.forEach(function(item, index) {

    console.log(index + ' : ' + item);

});

******************************************************/


/******************************************************

console.dir(process.env);

console.log('OS 환경변수의 값 : ' + process.env[OS]);

******************************************************/


/******************************************************

var calc = require('./calc.js');

console.log('모듈로 분리한 후 - calc.add 함수 호출 결과 : %d', calc.add(12, 13));

console.log('모듈로 분리한 후 - calc.multiple 함수 호출 결과 : %d', calc.multiple(2, 5));

******************************************************/


/******************************************************

var calc2 = require('./calc2.js');

console.log('모듈로 분리한 후 - calc2.add 함수 호출 결과 : %d', calc2.add(12, 13));

console.log('모듈로 분리한 후 - calc2.multiple 함수 호출 결과 : %d', calc2.multiple(2, 5));

******************************************************/


/******************************************************

var nconf = require('nconf');

nconf.env();

console.log('OS 환경 변수이ㅡ 값 : %s', nconf.get('OS'));

******************************************************/


/******************************************************

var os = require('os');

console.log('시스템의 hostname : %s', os.hostname());

console.log('시스템의 메모리 : %d / %d', os.freemem()/(1024*1024), os.totalmem()/(1024*1024));

console.log('시스템의 CPU 정보\n');

console.dir(os.cpus());

console.log('시스템의 네트워크 인터페이스 정보\n');

console.dir(os.networkInterfaces());

******************************************************/


/******************************************************

var path = require('path');

var directories = ['users','mike','docs'];

var docsDirectory = directories.join(path.sep);

console.log('문서 디렉터리 : %s', docsDirectory);


var curPath = path.join('/Users/mike', 'notepad.exe');

console.log('파일 패스 : %s', curPath);

******************************************************/


/******************************************************

var Person = {};

Person['name'] = 'kkyun';

Person['age'] = 31;

Person.add = function(a,b) {

    return a+b;

};

console.log('더하기 : %d', Person.add(2,4));

******************************************************/


/******************************************************

var Users = [{name:'소녀시대', age:20},{name:'걸스데이', age:22}];

Users.push({name:'티아라', age:23});


console.log('사용자 수 : %d', Users.length);

console.log('첫 번째 사용자 이름 : %s', Users[0].name);


var add = function(a,b) {

    return a+b;

};

Users.push(add);


console.log('배열의 요소 수 : %d', Users.length);

console.log('함수 실행 : %d', Users[3](10,12));


for (var i=0; i<Users.length; i++) {

    console.log('배열요소 #' + i + ' : %s', Users[i].name);

}


Users.forEach(function (item, index) {

    console.log('배열 요소 #' + index + ' : %s', item.name);

});

******************************************************/


/******************************************************

// 배열에 값 추가 및 삭제하기

push(object)            : 배열의 끝에 요소를 추가합니다.

pop()                   : 배열의 끝에 있는 요소를 삭제합니다.

unshift(object)         : 배열의 앞에 요소를 추가합니다.

shift()                 : 배열의 앞에 있는 요소를 삭제합니다.

splice(index, removeCount[,object]) : 여러 개의 객체를 요소로 추가하거나 삭제합니다.

slice(index, copyCount) : 여러 개의 요소를 잘라내어 새로운 배열 객체로 만듭니다.

******************************************************/


/******************************************************

var Users = [{name:'소녀시대', age:20},{name:'걸스데이', age:22}];

console.log('push() 호출 전 요소 수 : %d', Users.length);


Users.push({name:'티아라', age:23});

console.log('push() 호출 후 요소 수 : %d', Users.length);


Users.pop();

console.log('pop() 호출 후 요소 수 : %d', Users.length);

******************************************************/


/******************************************************

var Users = [{name:'소녀시대', age:20},{name:'걸스데이', age:22},{name:'티아라', age:23}];

//console.log('deleted 하기 전 요소의 수 : %d', Users.length);


// delete 경우 undefined 요소로 남아버린다.

//delete Users[1];

//console.log('delete 후');

//console.dir(Users);


console.dir(Users);


Users.splice(1,0, {name:"애프터스쿨", age:25});

console.log('splice()로 요소를 인덱스 1에 추가 후');

console.dir(Users);


Users.splice(2,1);

console.log('splice()로 인덱스 2의 요소를 1개 삭제한 후');

console.dir(Users);


******************************************************/


/******************************************************

// 콜백(callback) 함수

function add(a, b, callback) {

    var result = a+b;

    callback(result);

}


add(10, 10, function (result) {

    console.log('파라미터로 전달된 콜백 함수 호출됨');

    console.log('더하기 (10,10)의 결과 : %d', result);

});

******************************************************/


/******************************************************

// 함수 안에서 새로운 함수를 반환

function add(a, b, callback) {

    var result = a+b;

    callback(result);


    var history = function () {

        return a + ' + ' + b + ' = ' + result;

    };


    return history;

}


var add_history = add (10, 10, function(result) {

    console.log('파라미터로 전달된 콜백 함수 호출됨');

    console.log('더하기 (10,10)의 결과 : %d', result);

});


console.log('결과 값으로 받은 함수 실행 결과 : ' + add_history());

******************************************************/


/******************************************************

// 프로토타입 객체 만들기

function Person(name, age) {

    this.name = name;

    this.age = age;

}


Person.prototype.walk = function(speed) {

    console.log(speed + 'km 속도로 걸어갑니다.');

}


var person1 = new Person('소녀시대', 20);

var person2 = new Person('걸스데이', 22);


console.log(person1.name + '객체의 walk(10)을 호출합니다');

person1.walk(10);

******************************************************/


/******************************************************

var url = require('url');


// 주소 문자열을 URL 객체로 만들기

var curURL = url.parse('https://m.search.naver.com/search.naver?query=steve+jobs&where=m&sm=mtp_hty');


// URL 객체를 주소 문자열로 만들기

var curStr = url.format(curURL);


console.log('주소 문자열 : %s', curStr);

console.dir(curURL);


// 요청 파라미터 구분하기

var querystring = require('querystring');

var param = querystring.parse(curURL.query);


console.log('요청 파라미터 중 query의 값 : %s', param.query);

console.log('원본 요청 파라미터 : %s', querystring.stringify(param));

******************************************************/


/******************************************************

// 이벤트

process.on('exit', function() {

    console.log('exit 이벤트 발생함');

});


setTimeout(function() {

    console.log('2초 후에 시스템 종료 시도함');

    process.exit();

}, 2000);


process.on('tick', function(count) {

    console.log('tick 이벤트 발생함 : %s', count);

});


setTimeout(function() {

    console.log('2초 후에 tick 이벤트 전달 시도함.');

    process.emit('tick', 2);

}, 2000);

******************************************************/


/******************************************************

// 계산기 객체를 모듈로 만들어 보기

var util = require('util');

var EventEmitter = require('events').EventEmitter;


var Calc = function() {

    var self = this;


    this.on('stop', function() {

        console.log('Calc에 stop event 전달됨');

    });

};


util.inherits(Calc, EventEmitter);

Calc.prototype.add = function(a,b) {

    return a+b;

}


module.exports = Calc;

module.exports.title = 'calculator';


var calc = new Calc();

calc.emit('stop');


console.log(Calc.title + '에 stop 이벤트 전달함.');

******************************************************/


/******************************************************

var fs = require('fs');


// 파일을 동기식 IO로 읽어 들입니다.

var data = fs.readFileSync('./package.json', 'utf8');

console.log(data);


// 파일을 비동기식 IO로 읽어 들입니다.

fs.readFile('./package.json', 'utf8', function(err, data) {

    if (err==null) {

        console.log(data);

    } else {

        console.log(err);

    }

});


console.log('package.json 파일을 읽도록 요청했습니다.');

******************************************************/


/******************************************************

// file io method

readFile(filename, [encoding], [callback])      : 비동기식 IO로 파일을 읽어 들입니다.

readFileSync(filename, [encoding])              : 동기식 IO로 파일을 읽어 들입니다.

writeFile(filename, data, encoding='utf-8', [callback]) : 비동기식 IO로 파일을 씁니다.

writeFileSync(filename, data, encoding='utf-8')         : 동기식 IO로 파일을 씁니다.


open(path, flags [, mode][, callback])          : 파일을 엽니다.

read(fd, buffer, offset, length, position [,callback])  : 지정한 부분의 파일 내용을 읽어 들입니다.

write(fd, buffer, offset, length, position [,callback]) : 파일의 지정한 부분에 데이터를 씁니다.

close(fd, [,callback])                          : 파일을 닫아 줍니다.

******************************************************/


/******************************************************

var fs = require('fs');


fs.writeFile('./output.txt', 'Hello World!', function(err) {

    if (err) {

        console.log('Error : ' + err);

    }


    console.log('output.txt 파일에 데이터 쓰기 완료');

});

******************************************************/


var fs = require('fs');


//fs.open('./output.txt', 'a+', function(err, fd) {

fs.open('./output.txt', 'w', function(err, fd) {

    if (err) throw err;


    var buf = new Buffer('안녕!\n');

    fs.write(fd, buf, 0, buf.length, null, function(err, written, buffer) {

        if (err) throw err;


        console.log(err, written, buffer);


        fs.close(fd, function() {

            console.log('파일 열기 -> 쓰기 -> 닫기 완료.');

        });

    });

});



'IT > ETC' 카테고리의 다른 글

[JAR] .jar 파일 생성하기  (0) 2017.01.06
[OS및 브라우저별 userAgent값]  (0) 2016.06.15
[[[ GlusterFS 모니터링 ]]]  (0) 2016.05.02
[MemCache] 멤캐쉬 띄우기  (0) 2016.04.28