2013. 10. 31. 16:40

모듈 설치

npm install mysql


소스

var mysql = require("mysql");

var mysqlConfig = {

    host : "아이피",

    port : "포트",

    user : "로그인ID",

    password : "비밀번호",

    database : "데이터베이스명"

}


var conn = mysql.createConnection(mysqlConfig);


conn.query("CALL 프로시저명(?, ?);", [인자1, 인자2], function(err, rows) {

    if (err) {

        console.log("MySQL Query Execution Failed....");

        console.log(err);

    }

    for (var i = 0; i < rows[0].length; i++) {

        console.log(rows[0][i]);

    }

    conn.destroy();

});


---------------------------------------------------------------------------------------------------------------

// OUTPUT 인자 가져오기

conn.query("CALL 프로시저명(?, ?, @id);", [인자1, 인자2], function(err, rows) {

    if (err) {

        console.log("MySQL Query Execution Failed....");

        console.log(err);

    } else {

        conn.query("SELECT @id;", function(err, rows, field) {

            console.log('id is ' + rows[0]['@id']);

            conn.destroy();

        });

    }

});


Posted by CoolDragon
2013. 10. 31. 13:37

My SQL 프로시저 생성 방법

DELIMITER //

DROP PROCEDURE IF EXISTS sp_UserInfo_Select_All //

CREATE PROCEDURE sp_UserInfo_Select_All)

BEGIN

    SELECT *

      FROM UserInfo;

END//

DELIMITER ;


DELIMITER //

DROP PROCEDURE IF EXISTS sp_UserInfo_Select //

CREATE PROCEDURE sp_UserInfo_Select

(

    pi_UserID INT

)

BEGIN

    SELECT *

      FROM UserInfo

     WHERE UserID = pi_UserID;      

END//

DELIMITER ;


DELIMITER //

DROP PROCEDURE IF EXISTS sp_UserInfo_Insert //

CREATE PROCEDURE sp_UserInfo_Insert

(

    pi_UserName VARCHAR(20)

    ,OUT po_UserID INT

)

BEGIN

    INSERT INTO UserInfo (UserName)

    VALUES (pi_UserName);


    -- Auto Increment 값 조회

    SELECT LAST_INSERT_ID()

      INTO po_UserID; -- OUT 파라메터 담기

END//

DELIMITER ;


DELIMITER //

DROP PROCEDURE IF EXISTS sp_UserInfo_Update //

CREATE PROCEDURE sp_UserInfo_Update

(

    pi_UserID INT

    , pi_UserName VARCHAR(20)

)

BEGIN

    UPDATE UserInfo

       SET UserName = pi_UserName

     WHERE UserID = pi_UserID;

END//

DELIMITER ;


DELIMITER //

DROP PROCEDURE IF EXISTS sp_UserInfo_Delete //

CREATE PROCEDURE sp_UserInfo_Delete

(

    pi_UserID INT

)

BEGIN

    DELETE FROM UserInfo

     WHERE UserID = pi_UserID;

END//

DELIMITER ;


프로시저 호출

CALL sp_UserInfo_Select_All();

CALL sp_UserInfo_Select(1);

CALL sp_UserInfo_Insert('Park', @UserID);

SELECT @UserID

CALL sp_UserInfo_Insert('Choi', @UserID);

SELECT @UserID

CALL sp_UserInfo_Insert('bahk', @UserID);

SELECT @UserID

CALL sp_UserInfo_Select(2);

CALL sp_UserInfo_Update(2, 'Choi-Update');

CALL sp_UserInfo_Select(2);

CALL sp_UserInfo_Delete(2);

CALL sp_UserInfo_Select_All();


Posted by CoolDragon
2013. 10. 21. 13:24

> node -v

> node --version


> npm --version


Posted by CoolDragon
2013. 10. 16. 10:47

[CentOS]

# vi /etc/sysconfig/iptables (방화벽 설정 파일 편집)


-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT (를 추가하면 22 포트 방화벽 사용)


# /etc/init.d/iptables restart  (포트 변경후 재시작)

※ 가끔 포트 추가시 입력 위치에 따라서 정상적으로 적용되지 않는 경우도 있으니 주의할 것


[Ubuntu]

sudo ufw enable # file enable

> sudo ufw allow ssh # open ssh port

> sudo ufw allow 4444/tcp      # tcp 80 port open

> sudo ufw allow 80/tcp          # tcp 80 port open

> sudo ufw show added           # show the list of what user added on filewall


Posted by CoolDragon
2013. 10. 2. 17:39

1. redis 모듈 설치

npm install redis

2. 소스코드
var _redis = require("redis");
var config = require("./config/config.json");

var redis = _redis.createClient(사용Port, 사용IP);

redis.get('foo', function(error, result) {
    if (error) console.log('Error: '+ error);
    else console.log('Name: ' + result);
});

redis.set('foo', Date(), function(error, result) {
    if (error) console.log('Error: ' + error);
    else console.log('Saved');
});


Posted by CoolDragon
2013. 10. 2. 17:25

[param.js]

var env = process.argv[2] || 'dev';


console.log(env); // 파라메터 사용

console.log(process.env.NODE_ENV); // 환경변수


1. windows는 환경변수를 사용하려면 아래와 같이 미리 값을 설정해서 넘겨야 한다.

2. 환경 변수 사용 설정


Posted by CoolDragon
2013. 9. 10. 09:15
1. class object
    [Serializable, XmlRoot("Field")]
    public class Field
    {
        [XmlAttribute("nm")]
        public string Name { get; set; }

        [XmlText]
        public string Text { get; set; }
    } 
2. serialize
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
StringBuilder sb = new StringBuilder();
using (XmlWriter writer = XmlWriter.Create(sb, new XmlWriterSettings() { OmitXmlDeclaration = true }))
{
    new XmlSerializer(typeof(Field)).Serialize(writer, type, ns);
}
string xmlString = sb.ToString();
3. deserialize
XmlReader reader = XmlTextReader.Create(new StringReader(xmlString));
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Field));
var result = (Field)xmlSerializer.Deserialize(reader);
reader.Close();


4. Sample

public static XDocument Serialize<T>(this T source)

{

var ser = new XmlSerializer(source.GetType());

var sb = new StringBuilder();

using (var writer = new StringWriter(sb))

{

ser.Serialize(writer, source);

}

return XDocument.Parse(sb.ToString());

}


      public static T Deserialize<T>(this XDocument xmlDocument)

      {

          var xmlSerializer = new XmlSerializer(typeof(T));

          using (var reader = xmlDocument.CreateReader())

              return (T)xmlSerializer.Deserialize(reader);

      }


        



Posted by CoolDragon
2013. 8. 14. 13:32

프로세스 확인

[root@ xxxx ~]# ps -ef | grep redis

root      3009     1  0 Jul30 ?        00:00:00 /usr/local/bin/redis-server /etc/redis/redis.conf

root     11806 11509  0 13:22 pts/0    00:00:00 grep redis


사용중인 메모리 체크

[root@ xxxx ~]# free

             total       used       free     shared    buffers     cached

Mem:      16777216    1479708   15297508          0     739036     274804

-/+ buffers/cache:     465868   16311348

Swap:      4192956          0    4192956


하드디스크 잔량
[root@localhost ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                        19G  1.6G   16G    9% /
tmpfs               250M      0  250M   0% /dev/shm
/dev/sda1        485M  38M  422M   9% /boot


시스템의 평균 로딩율(부하율)
[root@ xxxx ~]# uptime
 13:29:34 up 15 days,  3:27,  1 user,  load average: 0.00, 0.00, 0.00

시스템 종료

[root@ xxxx ~]# suthdown -h now


Posted by CoolDragon
2013. 8. 13. 15:41
var express = require('express'),
    app     = express(),
    port    = 8080;

app.configure(function(){
	app.use(express.bodyParser());
});

app.post('/', function(req, res){
	console.log(req.body.);
	res.send({ status: 'SUCCESS' });
})

app.listen(port);


위와 같은 코드로 샘플을 만들고 json을 post data로 넘겨 

서버에서 log로 찍어보려 했지만 아래와 같이 undefined로 나타나더라.. 아니 왜?



한참 삽질하면서 검색하던 중에  content-type이라는 녀석이 눈에 들어온다.. 

그렇다 node.js 의 json data를 서버에 요청할 경우 header에 Content-Type: application/json 을 담아 요청을 했어야 했다.



별것 아닌것 같지만.. 괜한 시간 뺏길 수가 있다.

Posted by CoolDragon
2013. 8. 5. 10:05


SVN Settings 선택


global-ignores 설정


예) global-ignores = bin obj *.suo *.obj *.pdb *.exe *.dll *.csproj.user


출처 : http://focuswindows.blogspot.kr/2008/02/svn-how-to-set-ignore-list.html

Posted by CoolDragon