Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

Guest Book

  1. http://labs.sideeffect.kr/scaladays/2013-teaser/ 가봤는데

    Comming 철자가 틀려서요.... 쩝.. coming

    1. 이게 왜 유출되었는지 모르지만...
      공식페이지는 아니고요... 임시페이지로 저 문구를 사용할지는 잘 모르겠습니다. 암튼 오타는 오타네요.. ㅠㅠ

  2. 제가 초보라 질문이 많이 서툽니다.
    윈도우서버에서 부팅시 자동스타트도 되고 죽었을 경우 자동으로 다시 실행하려고 하면 어떻게 해야 하는지 궁금합니다.
    그리고 윈도우 서버와 윈도우7 혹은 xp에서 하는 방법이 각각 다른지요?
    현재는 유클라우드 윈도우서버에서 실행을 하려고 합니다
    새해 복 많이 받으시기 바랍니다.
    수고하세요

    1. 윈도우 버전을 물어본건 서버인지 해서 물어본거였습니다.
      유클라우드 윈도우 서버는 써본적이 없어서 특이한 환경이 있는지 모르겠지만 제가 책을 쓸때는 호환성 문제가 있었지만 지금 확인해 본 결과로는 node 0.8.16에 npm 1.1.69에서 forever 0.10.0이 윈도우에서도 정상적으로 설치되고 동작합니다.

  3. 자세한 답변 정말 감사드립니다.
    forever가 윈도우에는 작동이 않된다고 했는데 윈도우서버에서 데몬으로 노드를 작동시킬려면 어떻게 해야하는지 궁금합니다. 포에버같은 프로그램이 윈도우용으로는 없는지요. 감사합니다

    1. 윈도우에는 일단 데몬이라는 개념은 없습니다. 윈도우를 서버로 쓰시는 건가요? 윈도우에서 개발하실때 테스트를 위해서인가요?(어떤 윈도우를 쓰시죠?)
      흠... 부팅시 자동스타트를 원하시는건지 아니면 죽었을때 다시 실행하기만 하면 되는건지 궁금합니다.

  4. 서버측 프로그램이 아래와 같습니다
    var roomList=[]; //room객체들의 배열
    var roomId; //room의 ID
    serverSocket.sockets.on("connection", function(socket){
    socket.on("makeRoom", function(data){
    roomId=data.roomName; });
    socket.on('auth',function(data){
    findRoom(roomId).objList=data.objList;}); //배열에서 roomID 를 가진 객체를 찾아 값을 세팅함
    }
    이런 채팅 프로그램이 일정 시간이 지나면 info - transport end (undefined) 메세지를
    내면서 끊기고 cannot set property 'objList' of null 메세지처럼 roomId값이 null로 변해버립니다. 사용자가 프로그램을 종료하지 않는 이상 끊기지 않고 계속 프로그램이 돌게 하려면 어떻게 해야 하는지, 그리고 null값이 생기더라도 서버가 죽지않게 하려면 어떻게 해야 하는지 궁금합니다. 죽으면 다시 서버를 자동으로 살릴수 있는 방법은 없는지요. 노드서버를
    죽었는지 확인하고 다시 실행하는게 귀찮을수 있으니까요... 회신 부탁합니다. 감사합니다

    1. 올려주신 소스를 보니 제 책의 예제 소스는 아닌듯 하군요.
      올려주신 소스로만 판단하건데 roomId라는 변수를 공용으로 사용하고 있습니다. makeRoom 이벤트의 용도는 추측이 가능한데 auth 이벤트의 용도를 정확히 추측하기는 어렵지만 이렇게 작성할 경우 makeRoom이벤트로 roomId를 설정하더라도 다른 사용자가 makeRoom이벤트를 보낼 경우 roomId 변수의 값이 달라지기 때문에 findRoom에 전달되는 roomId가 의도하신 것과는 달라질 것으로 생각됩니다. findRoom의 구현부를 보여주지 않으셔서 정확치는 않지만 makeRoom이벤트가 여러번 발생할 경우 다른 사용자가 auth이벤트를 요청했을 때 제대로 동작하지 않게 됩니다. roomId를 서버에서 구별할 수 있게 별도로 갖고 있거나 클라이언트가 넘겨주도록 구현하셔야 할듯 합니다.

      그리고 스크립트 오류로 프로그램이 죽지 않게 하려면 uncaughtException 예외를 잡으시면 됩니다. 기본적으로 처리되지 않은 예외가 발생하면 스택트레이스가 출력되고 프로세스가 죽기 때문에 uncaughtException예외를 잡아서 무시하거나 로그로 출력하게 하시면 프로세스가 죽지 않게 되지만 당연히 스크립트에 문제가 있는 것이므로 계속해서 발생될 수 있습니다.

  5. 선생님께서 집필한 nodejs프로그래밍으로 공부하고 있습니다.
    시간이 지나면 서버와의 접속이 끊기면서 콘솔에
    info - transport end (undefined) 라는 메세지가 출력됩니다.
    그리고 cannot set property 'objList' of null 메세지가 뜨면서
    변수값이 null이 됩니다. 왜 자동으로 끊기는지 궁금하고요
    사용자가 프로그램을 종료하지 않는 이상 계속 프로그램이 돌게 하려면
    어떻게 해야 합니까. 빠른 답변 부탁드립니다.
    그리고 포에버처럼 윈도우에서 데몬으로 실행하는 방법도 가르켜 주시면 고맙겠습니다
    감사합니다
    youdam@naver.com 으로도 답변보내주시면 고맙겠습니다.

    1. 선생님은 아니고요.. ^^;;;
      어떤 예제를 실행중에 그런 형상이 생기는지 알려주시면 감사하겠습니다. 그리고 데몬처럼 윈도우에서 실행하시려면 윈도우의 서비스로 등록하셔야 합니다.

  6. 관리자만 볼 수 있는 방명록입니다.

    1. 앗.. 여기다 힌트를 남겨놓으셨었군요... 이글은 이제야 봤네요. ^^
      애자일도 찾아보시고 여전히 열심히시죠. ㅎㅎㅎ 트위터에서 뵈요~ ㅋ