<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>node.js q&amp;a - Latest Comments in Node.js QA 게시판</title><link>http://nodejssocketiomoduleqa.disqus.com/</link><description></description><atom:link href="http://nodejssocketiomoduleqa.disqus.com/nodejs_qa_23/latest.rss" rel="self"></atom:link><language>en</language><lastBuildDate>Mon, 18 Mar 2013 10:05:36 -0000</lastBuildDate><item><title>Re: Node.js QA 게시판</title><link>http://nodeqa.com/#comment-833605858</link><description>&lt;p&gt;네 가장 안쪽에 res.render 를 사용하셔야 합니다.&lt;/p&gt;

&lt;p&gt;일명 CPS (Continuous Passing Style) 의 폐해가 나타나게 되죠.&lt;/p&gt;

&lt;p&gt;그렇게 하지 마시고, 이런 Flow 를 Control 하는 것이 좋습니다. 대표적으로 async, step 모듈이 있지요.&lt;/p&gt;

&lt;p&gt;기존에 작성한 async 모듈에 대한 글이 있으니 한번 연습해보세요.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://nodeqa.com/nodejs_ref/3" rel="nofollow"&gt;http://nodeqa.com/nodejs_ref/3&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;그럼 코드가 아래와 같이 가지런하게 정리할 수 있습니다.&lt;/p&gt;

&lt;p&gt;        async.waterfall([&lt;/p&gt;

&lt;p&gt;      function(cb) {&lt;/p&gt;

&lt;p&gt;        client.query('SELECT * FROM Persons', cb);&lt;/p&gt;

&lt;p&gt;      },&lt;/p&gt;

&lt;p&gt;      function(err, data, cb) {&lt;/p&gt;

&lt;p&gt;        client.query('SELECT * FROM BrothersPersons', cb);&lt;/p&gt;

&lt;p&gt;      }&lt;/p&gt;

&lt;p&gt;    ],&lt;/p&gt;

&lt;p&gt;    function(err, results) {&lt;/p&gt;

&lt;p&gt;      res.render('index', data);&lt;/p&gt;

&lt;p&gt;    });&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">nanhapark</dc:creator><pubDate>Mon, 18 Mar 2013 10:05:36 -0000</pubDate></item><item><title>Re: Node.js QA 게시판</title><link>http://nodeqa.com/#comment-833524913</link><description>&lt;p&gt;고쳐주신 코드는 아주아주아주아주 잘 돌아갑니다 !! 감사합니다. ^^&lt;/p&gt;

&lt;p&gt;여기에 연관되어서 궁금한 것이 하나 더 있는데요, &lt;/p&gt;

&lt;p&gt;만약에 쿼리문을 중첩으로 사용하게 되면 가장 안쪽의 client.query 문 안에 res.render를 써줘야 하는 건가요 ???&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Da Young Shin</dc:creator><pubDate>Mon, 18 Mar 2013 08:21:57 -0000</pubDate></item><item><title>Re: Node.js QA 게시판</title><link>http://nodeqa.com/#comment-833432304</link><description>&lt;p&gt;email 답변 드렸습니다. 수고하세요.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">nanhapark</dc:creator><pubDate>Mon, 18 Mar 2013 06:33:06 -0000</pubDate></item><item><title>Re: Node.js QA 게시판</title><link>http://nodeqa.com/#comment-833122346</link><description>&lt;p&gt;disqus 2.0 리뉴얼 또 했다고, 변경했는데, 오류가 있나보네요 ;;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">nanhapark</dc:creator><pubDate>Sun, 17 Mar 2013 23:03:38 -0000</pubDate></item><item><title>Re: Node.js QA 게시판</title><link>http://nodeqa.com/#comment-833122027</link><description>&lt;p&gt;안녕하세요.&lt;/p&gt;

&lt;p&gt;윈도우 환경이었군요. inotify 와 같은 구실을 하는 놈을 한번 찾아보도록 하겠습니다.&lt;/p&gt;

&lt;p&gt;node.js 의 watch 기능은 cpp 으로 구성되어있긴 하나, 에러 발생요인들이 몇몇 있습니다. &lt;/p&gt;

&lt;p&gt;저 또한, fs.watch 기능을 예전에 사용했었는데, 2번의 노티가 발생하는 에러가 있었구요.&lt;/p&gt;

&lt;p&gt;일단 다시 답변드릴 수 있도록 하겠습니다.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">nanhapark</dc:creator><pubDate>Sun, 17 Mar 2013 23:03:17 -0000</pubDate></item><item><title>Re: Node.js QA 게시판</title><link>http://nodeqa.com/#comment-832767326</link><description>&lt;p&gt;제가 며칠전에 특정 폴더를 감시하여 파일이 추가되거나 삭제되는 등의 반응을 감지하는 모듈을 여쭤봤었고 난하님께서 inotify모듈을 소개해 주셨었는데요.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/c4milo/node-inotify" rel="nofollow"&gt;https://github.com/c4milo/node...&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;이 모듈은 리눅스 전용이고 윈도우에서는 설치가 되지 않는 것 같네요.&lt;/p&gt;

&lt;p&gt;그래서 윈도우에서 사용가능한 모듈을 찾다가, watchr라는 모듈을 발견했는데요. &lt;/p&gt;

&lt;p&gt;이 모듈은 설치와 example을 간단히 실행해보는 걸로도 파일의 생성, 삭제 등의 이벤트를 쉽게 받을 수 있었는데요.(다만 좀 빠르게 파일이 여러개 생성되거나 하면 중간에 몇가지를 놓치는 것 같긴 하네요. 윈도우의 고질적인 문제?)&lt;/p&gt;

&lt;p&gt;홈 네트워크로 묶여진 다른 컴퓨터의 특정 폴더를 감시하는 목적으로 사용하려 했던 것인데, 문제가 그 특정 폴더의 파일 갯수가 70개 이상되면 에러를 발생시키면서 서버가 종료되는데요. 이 에러는 감시하는 그 폴더의 파일갯수를 줄이지 않으면 계속 에러가 발생하면서 서버도 실행할 수 없는데요. 특징이 서버를 실행하는 컴퓨터 내의 로컬 폴더를 감시하도록 하면 이런 파일 수의 제한이 없는데, 네트워크로 연결된 다른 컴퓨터의 폴더를 감시할때면 70개 정도 파일이상에서 에러가 발생하는 문제가 있습니다. 에러코드 1450 이 뭔가 단서인가 싶어 검색을 해봐도 시스템 자원이 부족해서라는.. 생뚱맞은 내용이 나와서, 어떻게 풀어야 할지 난감하네요.&lt;/p&gt;

&lt;p&gt;혹시 관련해서 알고계시다면 답변 부탁드립니다. 요즘 부쩍 질문을 많이 드리게 되네요.&lt;/p&gt;

&lt;p&gt;events.js:71&lt;/p&gt;

&lt;p&gt;throw arguments[1]; // Unhandled 'error' event                       &lt;/p&gt;

&lt;p&gt;Error: watch Unknown system errno 1450&lt;/p&gt;

&lt;p&gt;at errnoException (fs.js:806:11)&lt;/p&gt;

&lt;p&gt;at FSEvent._handle.onchange (fs.js:824:26)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">applelism</dc:creator><pubDate>Sun, 17 Mar 2013 15:43:13 -0000</pubDate></item><item><title>Re: Node.js QA 게시판</title><link>http://nodeqa.com/#comment-832656596</link><description>&lt;p&gt;답변 감사합니다. 어느정도 감은 오는 것 같네요. 다만 궁금증이 말끔하게 풀린 것은 아니어서, 나중에 시간 나면 뭔가 내부적으로 깊게 알고 싶은 생각이 드네요. 이와 관련한 기초 개념들을 확실히 공부하려면 어떤 책이나 자료들이 있을까요.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">참새</dc:creator><pubDate>Sun, 17 Mar 2013 13:33:11 -0000</pubDate></item><item><title>Re: Node.js QA 게시판</title><link>http://nodeqa.com/#comment-832591739</link><description>&lt;p&gt;글 작성이 더 안되는 건지&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">참새</dc:creator><pubDate>Sun, 17 Mar 2013 12:30:44 -0000</pubDate></item><item><title>Re: Node.js QA 게시판</title><link>http://nodeqa.com/#comment-832368825</link><description>&lt;p&gt;안녕하세요.&lt;/p&gt;

&lt;p&gt;# DAO&lt;/p&gt;

&lt;p&gt;객체지향공부를 조금만 공부해보세요. 디자인패턴을 중심으로 공부하시길 권해드립니다.&lt;/p&gt;

&lt;p&gt;# exports connection variable&lt;/p&gt;

&lt;p&gt;singleton 으로 connection 변수를 exports 로 선언해놓으면, 이는 connection 마다 1개로 인식되어 버릴 수 있기 때문에, 객체로 생성하여 별도로 인식되도록 해야 합니다. :-)&lt;/p&gt;

&lt;p&gt;# bind&lt;/p&gt;

&lt;p&gt;javascript 에서 bind, call 은 아주 중요한 개념입니다. 요것도 공부를 조금 하셔야 할듯요.. 설명을 드리자면, 복잡한 개념이라서요. ;; 검색하면 많이 나옵니다.&lt;/p&gt;

&lt;p&gt;커뮤니티는 예전부터 생각하고 있었는데, 현재의 상황에서 더 커다란 무언가를 짊어져야 한다는 개념자체가 아직 저한테는 어울리지 않아서요. 누군가는 할거라 믿습니다.ㅎㅎ&lt;/p&gt;

&lt;p&gt;문의점 있으시면 말씀해주시고, 수고하세요.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">nanhapark</dc:creator><pubDate>Sun, 17 Mar 2013 08:45:27 -0000</pubDate></item><item><title>Re: Node.js QA 게시판</title><link>http://nodeqa.com/#comment-832341964</link><description>&lt;p&gt;connection은 말 그대로 특정 DB에 연결하는 소켓을 하나 연결했다는 의미입니다. 만약 pool을 쓰지 않으시고 createConnection으로 connection을 하나 만드셨다면 그 연결에 쿼리를 몇개 보내셨든 connection은 하나를 열어두신 것 입니다.&lt;/p&gt;

&lt;p&gt;pool을 쓰신다면 요청이 밀려있는 경우 connectionLimit(기본 값 10) 만큼의 connection 까지만 연결이 만들어집니다. 요청이 연결 숫자를 초과하면 queue에 요청을 모아두었다가 작업이 끝난 connection을 돌려가며 다음번 요청에 재활용 합니다.(이때는 end를 호출하면 다음 요청에게 connection을 넘겨주게 되지요) 어느 경우에도 우려하시는 connection의 홍수(?)는 생기지 않습니다 ^^&lt;/p&gt;

&lt;p&gt;그리고 구현 방법에 대한 이야기인데, 대충 생각하신 방향으로 가보시면 될 듯 합니다. pool을 쓰신다면 하나의 pool객체를 쓰시면서 getConnection에서 end까지 작업을 하는 함수를 exports 하시면 작동되는 결과물을 얻으실 수 있으실 것 입니다. pool에서 getConnection은 일반 createConnection보다 효율적으로 작동하게 디자인되어 있으므로 이를 호출하는 것에 대해 너무 큰 부담을 가지실 필요는 없습니다. 다만 connection은 꼭 반환(즉 end를 호출) 하셔야한다는 것만 주의하시면 됩니다.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">cimic</dc:creator><pubDate>Sun, 17 Mar 2013 08:12:52 -0000</pubDate></item><item><title>Re: Node.js QA 게시판</title><link>http://nodeqa.com/#comment-832170651</link><description>&lt;p&gt;답변 감사합니다. node.js에서도 DAO와 Service를 분리하는 방식을 사용하는 분이 계실거라고 생각하는데, 난하님께서 알려주신 방법은 제 답변을 위한 어떤 방법이고, 정석이라는게 없을 수도 있겠지만, 일반적으로 이렇게 DB쿼리를 요청하는 부분과 사용자 요청을 받고 로직을 짜는 부분을 분리할때 사용하는 일반적인 패턴이 있지는 않는지 궁금합니다. 일반화된 형태를 예제를 통해서나 좀 배워두고 싶은데 혹시 공개된 예제같은게 있다면 위치좀 알 수 있을까요.&lt;/p&gt;

&lt;p&gt;exports하는 식으로만 외부에서 가져다 쓰다가 객체를 생성해야 된다고 하니 왜 그런지에 대해서 잘 와닿지가 않으네요.ㅠ 저게 감이 오려면 어느쪽을 더 공부해야 할지요.&lt;/p&gt;

&lt;p&gt;그리고 한번의 getConnection안에서 모든 query()를 작성해야 하는 줄 알았는데, cimic님의 답변을 보니 쿼리마다 getConnection과 query() - end()를 호출해야 하는 것 같더군요.ㅎ 그래서 getConnection() ~ end()사이를 통째로 묶어서 exports하면 되지 않을까 싶습니다.&lt;/p&gt;

&lt;p&gt;bind()라는게 스코프를 공유한다라는.. 뭐 그런 의미일까요. 공부가 부족하다보니 잘 안쓰던걸 보게되면 굉장히 어렴풋하게만 다가오네요.ㅠ&lt;/p&gt;

&lt;p&gt;그리고 매번 답변 주셔서 정말 감사합니다. node.js에 대해서는 여기와 책 저자분 블로그 외에는 물여볼곳이 없어서 정말 절실한 기분인데요. 거의 혼자서 답변을 다 해내고 계신것 같은데, 까페 형식으로 만들어두면 여러사람이 참여해서 답변을 달아주거나 검색하기도 좋을 것 같다는 생각이 드는데, 어떻게 생각하시나요?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">참새</dc:creator><pubDate>Sun, 17 Mar 2013 04:14:29 -0000</pubDate></item><item><title>Re: Node.js QA 게시판</title><link>http://nodeqa.com/#comment-832148535</link><description>&lt;p&gt;감사합니다. pool이 대부분의 경우에 필수조건이라고 생각했는데,&lt;/p&gt;

&lt;p&gt;제가 구현할 서버의 경우에는 10대 이하의 컴퓨터에서 하루10시간, 3개월 정도 웹페이지를 통한 DB접속이 이루어질것으로 예상하는데요.&lt;/p&gt;

&lt;p&gt;이 경우에는 connection이 10개 이하로 밖에 생기지 않는건지, 클라이언트 컴퓨터에서 접속을 했다가 브라우저 종료하고 다시 웹페이지 열고 그러면 새로운 connection으로 연결되는건지. 아마 후자 일것 같은데, 그러면 connection이 따로 없애는 과정을 넣지 않으면 3개월이라고 치면 엄청 쌓여서 중간에 서버가 비정상 종료될 수 도 있지 않을까요.&lt;/p&gt;

&lt;p&gt;아직도 connection에 대한 개념이 명확하지가 않네요. 혹시 테스트할때 등 콘솔에 현재 연결된 connection수 같은것을 눈에 보이게 할 수 없을까요. 같은 컴퓨터에서 서로 다른 브라우저로 db를 사용하는 웹페이지를 열면 브라우저 수 만큼 connection이 생기는건지, 컴퓨터 한대니 그냥 1개로 되는건지 모르겠습니다.ㅠ&lt;/p&gt;

&lt;p&gt;mysql책을 보면 이런 기초개념에 대해서 나오나요?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">참새</dc:creator><pubDate>Sun, 17 Mar 2013 03:39:51 -0000</pubDate></item><item><title>Re: Node.js QA 게시판</title><link>http://nodeqa.com/#comment-831900729</link><description>&lt;p&gt;node-mysql 2.0에서 pool은 드라이버의 저수준 기능은 아니고 pool기능을 하는 래퍼로 되어 있습니다. 라이브러리에서 Pool.js로 있으니 한번 보시는 것도 이해에 도움이 되실 것 입니다. ㅎ&lt;/p&gt;

&lt;p&gt;mysql 드라이버는 원래 node.js의 작동과 유사해지도록 커넥션을 하나만 열고, 그 커넥션에 쿼리문들을  싱글 스레드로 밀어넣은 뒤 결과는 되는대로 받아서 각각의 콜백함수로 전달하는 역할을 합니다. 이 구조는 아주 효율적입니다. &lt;/p&gt;

&lt;p&gt;다만 이런 구조로 인해 받는 이점도 있지만 단점도 있습니다. 예를들어 한 request만 대상으로한 스로틀 조정이나, 인서트, 업데이트 쿼리를 트랜젝션으로 묶는 것은 역으로 복잡합니다.&lt;/p&gt;

&lt;p&gt;pool은 이러한 어려움에 대처하기 위해 php 같은 전통적인 서버 프로그램들이 작동 하듯이 connection을 여러개 만들어 내는 래퍼입니다. 그러니까 pool의 핵심은 위와 같은 문제가 발생하는 request에서 getConnection을 해서 해당 request 전용의 connection을 받아서 쓴게 하자는 것 입니다.&lt;/p&gt;

&lt;p&gt;그러니 getConnection을 미리 하신뒤 connection만 exports 하신 아래쪽 mysqlWork의 코드는 pool을 통해 connection을 얻으셨다뿐이지 pool이 아니시라는 것 입니다. 그래서 end를 호출 후 다시 쓰려고 하시면 connection이 없다는 애러를 받으신 것이죠.&lt;/p&gt;

&lt;p&gt;connection.end()로 매 request 마다 connection을 닫으시려면 getConnection도 매번 실행되도록 하셔야 합니다. 그게 pool의 핵심입니다 ^^;;&lt;/p&gt;

&lt;p&gt;길게 써두었지만 사실 제가 말하고 싶은 진정한 결론은 이것입니다.&lt;/p&gt;

&lt;p&gt;"pool이 필요 없는 작업에는 pool을 쓰실 필요가 전혀 없습니다. 하시던 방법대로 하세요."&lt;/p&gt;

&lt;p&gt;허무한 결론 입니다. ㅠ&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">cimic</dc:creator><pubDate>Sat, 16 Mar 2013 21:25:27 -0000</pubDate></item><item><title>Re: Node.js QA 게시판</title><link>http://nodeqa.com/#comment-831880009</link><description>&lt;p&gt;안녕하세요.&lt;/p&gt;

&lt;p&gt;connection 메소드를 routes 쪽에서 end 하고 싶다는 것이죠.&lt;/p&gt;

&lt;p&gt;#1. mysqlWork.js 에서 아래와 같이 connection 변수를 module 에서 노출시켜 주는 방법&lt;/p&gt;

&lt;p&gt;exports.connection = connection;&lt;/p&gt;

&lt;p&gt;그럼 routes 쪽에서 사용할 수 있겠죠.&lt;/p&gt;

&lt;p&gt;단, 이렇게 작업할 시에는 중요한 부분이 있어요. mysqlWork 를 가져다가 사용할 때는 싱글톤이 아닌 객체를 생성하셔야 합니다.&lt;/p&gt;

&lt;p&gt;var mysqlWork = require('mysqlWork');&lt;br&gt;var DAO = new mysqlWork();&lt;/p&gt;

&lt;p&gt;// DAO.connection 사용&lt;/p&gt;

&lt;p&gt;#2 혹은 callback 에 connection 객체를 bind 하여 돌려주거나, callback 에 인자를 전달해주는 방법으로 하면 됩니다.&lt;/p&gt;

&lt;p&gt;pool.getConnection(function(err, connection) {&lt;br&gt;    // Use the connection&lt;br&gt; &lt;br&gt;    exports.DBselect = function(callback){&lt;br&gt;        connection.query('SELECT * FROM IMAGE', callback.bind(this, connection));&lt;br&gt;        &lt;br&gt;        connection.query('SELECT * FROM IMAGE', function(err, rows) {&lt;br&gt;            callback(err, rows, connection);&lt;br&gt;        });&lt;br&gt;    };&lt;br&gt;};&lt;/p&gt;

&lt;p&gt;문의점 있으시면 말씀해주시고, 수고하세요.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">nanhapark</dc:creator><pubDate>Sat, 16 Mar 2013 21:00:00 -0000</pubDate></item><item><title>Re: Node.js QA 게시판</title><link>http://nodeqa.com/#comment-831871951</link><description>&lt;p&gt;아 그랬었군요. 저는 테스트할 때, 상대경로를 지정하지 않았어요.&lt;/p&gt;

&lt;p&gt;상대경로일 시 에러가 발생할 수 있군요. ;;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">nanhapark</dc:creator><pubDate>Sat, 16 Mar 2013 20:50:29 -0000</pubDate></item><item><title>Re: Node.js QA 게시판</title><link>http://nodeqa.com/#comment-831870956</link><description>&lt;p&gt;안녕하세요. 반갑습니다.&lt;/p&gt;

&lt;p&gt;음.. 한템포 느릴리가 없을텐데요.&lt;/p&gt;

&lt;p&gt;해당 문제부분만 띄어서 소스를 nanhap@gmail:disqus .com 으로 보내주실 수 있을까요?&lt;/p&gt;

&lt;p&gt;보통 이런 문제는 없는지라, 소스를 제가 봐야 겠네요. ^^&lt;/p&gt;

&lt;p&gt;문의점 있으시면 말씀해주시고, 수고하세요. ~~&lt;br&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">nanhapark</dc:creator><pubDate>Sat, 16 Mar 2013 20:49:20 -0000</pubDate></item><item><title>Re: Node.js QA 게시판</title><link>http://nodeqa.com/#comment-831867877</link><description>&lt;p&gt;안녕하세요.&lt;/p&gt;

&lt;p&gt;mysql connection pool  기능이 2.0 버젼에 업데이트 되어 있습니다.&lt;/p&gt;

&lt;p&gt;이것은 단순한 db pool framework 라고 보시면 됩니다.&lt;/p&gt;

&lt;p&gt;지정한 갯수만큼 mysql connection resource  를 생성하고, 접속이 들어올 때마다 접속되어 있는 db resource 를 빌려주고 반환받는 형식입니다. 즉, connection cost 를 줄이기 위함이죠.&lt;/p&gt;

&lt;p&gt;db pool framework 입장에서 보자면 아래와 같습니다.&lt;/p&gt;

&lt;p&gt;- 접속 10개 만들어 놓는다.&lt;br&gt;- 손님이 들어와 10명 들어와 10개 모두 가져갔다.&lt;br&gt;- 손님이 10개를 가져가놓고, 반환하지 않고 도망가버렸다.&lt;br&gt;- 다른 손님을 받을 수 없다.&lt;/p&gt;

&lt;p&gt;- 반환하는 방법은 application 에서 db close 를 해야한다.&lt;/p&gt;

&lt;p&gt;이것입니다.&lt;/p&gt;

&lt;p&gt;즉, 장점은 A,B,C,D 4개의 서비스가 mysql 1개를 사용한다 했을 때, pool 을 사용하지 않고, 4개의 서비스가 어느정도의 사용자가 존재한다면, 당연히 1개의 mysql 로 서비스할 수 없게 되겠죠. 그러나, pool 을 사용한다면, 해당 서비스의 가용성을 보장해줄 수 있습니다.&lt;/p&gt;

&lt;p&gt;그럼, 문의점 있으시면 말씀해주시고, 수고하세요.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">nanhapark</dc:creator><pubDate>Sat, 16 Mar 2013 20:45:45 -0000</pubDate></item><item><title>Re: Node.js QA 게시판</title><link>http://nodeqa.com/#comment-831665956</link><description>&lt;p&gt;그래서 결국 원하는건 쿼리문을 실행하는 부분과 routes하는 부분을 MVC로 나누듯이 분리해서 작성하고 싶은데요.&lt;br&gt;mysql 0.9에서는 호출하는 쪽에서 쿼리 결과를 사용하기위해서 callback함수 형태로 만들어서 넘기는 형태로 작성했는데요.(&lt;a href="http://book.naver.com/bookdb/book_detail.nhn?bid=6818977" rel="nofollow"&gt;http://book.naver.com/bookdb/b...&lt;/a&gt; Node.js 노드제이에스 프로그래밍-변정훈 저- 의 188p 비동기패턴의 의존성분리 부분을 콜백함수로 해결하는 방법을 참고했습니다.)&lt;br&gt;그런데 커넥션 풀을 사용하면서 connection.query()의 콜백함수를 routes쪽에서 작성해서 매개변수로 넘기려고 하면,&lt;br&gt;connection.end(); 때문에 아래와 같은 에러가 납니다. connection변수를 콜백함수 안에서 사용하지 못하는 것 같은데, 어떻게 해야 할까요?&lt;br&gt;ReferenceError: connection is not defined&lt;br&gt; &lt;br&gt;테스트한 소스는 아래와 같습니다.&lt;br&gt;routes/index.js에는&lt;br&gt; &lt;br&gt;exports.DBSelect = function(req, res){&lt;br&gt;    mysqlWork.DBselect(function(err, rows) {&lt;br&gt;        // And done with the connection.&lt;br&gt;        console.log('The solution1 is: ', rows[0]);&lt;br&gt;        connection.end();&lt;br&gt;        // Don't use the connection here, it has been returned to the pool.&lt;br&gt;    });&lt;br&gt;};&lt;/p&gt;

&lt;p&gt;mysqlWork.js에는&lt;/p&gt;

&lt;p&gt;var pool  = mysql.createPool({    host     : 'localhost',    user     : 'root',    password : 'pass1234',    database : 'mydb'});&lt;br&gt; &lt;br&gt;pool.getConnection(function(err, connection) {&lt;br&gt;    // Use the connection&lt;br&gt; &lt;br&gt;    exports.DBselect = function(callback){&lt;br&gt;        connection.query( 'SELECT * FROM IMAGE', callback);&lt;br&gt;    };&lt;br&gt;};&lt;br&gt; &lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">참새</dc:creator><pubDate>Sat, 16 Mar 2013 17:00:41 -0000</pubDate></item><item><title>Re: Node.js QA 게시판</title><link>http://nodeqa.com/#comment-831604248</link><description>&lt;p&gt;&lt;a href="https://github.com/felixge/node-mysql#pooling-connections" rel="nofollow"&gt;https://github.com/felixge/nod...&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;mysql 모듈 0.9버젼을 사용하다가, 2.0으로 다시 받아서 사용해보고 있는데요.&lt;br&gt;커넥션 풀이라는 기능이 생긴것 같은데, 사실 이게 개념적으로 잘 와닿지가 않아서 질문을 드리려고 합니다. jsp공부할때도 잠깐 들었었고, 검색을 통해서도 어느정도 표면적인 개념과 왜 이걸 사용해야 하는지에 대해서는 알겠는데, 구조와 프로세스 상 어떻게 동작하는지 궁금합니다.&lt;/p&gt;

&lt;p&gt;웹서버의 경우 DB를 사용하는 웹페이지를 10명의 사용자가 각각 다른 컴퓨터에서 열려고 하면, 서버에서는 DB커넥션이 10개가 생기는 걸까요?&lt;br&gt;흐름상 var mysql      = require('mysql');&lt;br&gt;var connection = mysql.createConnection({&lt;br&gt;  host     : 'localhost',&lt;br&gt;  user     : 'me',&lt;br&gt;  password : 'secret',&lt;br&gt;});&lt;/p&gt;

&lt;p&gt;connection.connect();&lt;br&gt;부분은 한번만 호출되고 사용자의 페이지 요청에 따라서 connection.query() 메서드가 호출될거라 예상되는데요. 10명의 웹페이지 접속이 10개의 커넥션을 만들게 되는거라면 connection.connect()메서드도 10번 호출되어야 하는거 아닐까요. 제가 이제까지 기본적인 개념을 모르고 있었던 건지...&lt;br&gt;이제까지는 connection.connect(); 를 서버 실행시에 한번만 실행되게하고 connection.query()만 쿼리문에 따라서 다르게 호출되게 했을 뿐입니다.&lt;/p&gt;

&lt;p&gt;혹시 예를들어 게시판 글을 조회하는 SELECT쿼리를 실행하는 곳에서 위 아래로 connect(); 와 end();를 해주고, 또 다른 기능인 글을 삭제하는 DELETE쿼리를 실행하는 곳 위 아래로 connect(); 와 end();를 해줘야 하는게 정석인건지요? 그게 맞다면 위의 connection pool의 역할이 말이 되는것 같은데요. 그러면 제가 작성했던 것 처럼 connect();를 서버 실행시 한번만 해주고 그뒤로 connection.query()만 호출하는 형태는 결과적으로 어떻게 잘못되는건지 궁금합니다.ㅠ&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">참새</dc:creator><pubDate>Sat, 16 Mar 2013 15:56:18 -0000</pubDate></item><item><title>Re: Node.js QA 게시판</title><link>http://nodeqa.com/#comment-831584008</link><description>&lt;p&gt;해결했습니다. 이슈에 올렸더니 제작자가 직접 답변해줘서 찾았습니다.&lt;br&gt;FTP서버상의 다운받을 파일의 경로를 설정할때 맨앞에 현재 경로를 뜻하는 . 을 붙여왔었는데 그걸 없애고 그냥 /로 시작해야 되더군요.&lt;br&gt;왜 . 을 붙이면 안되는지는 모르겠으나.. 일단 해결은 되었습니다. 답변 감사합니다!&lt;br&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">참새</dc:creator><pubDate>Sat, 16 Mar 2013 15:35:19 -0000</pubDate></item><item><title>Re: Node.js QA 게시판</title><link>http://nodeqa.com/#comment-831179522</link><description>&lt;p&gt;안녕하세요 ! 난하님 !! 오랜만이에요 ^^ &lt;/p&gt;

&lt;p&gt;이번에는 mysql 에 대해서 들고 왔는데요 .. &lt;br&gt;mysql쿼리를 돌리면 꼭 한템포가 늦는달까요 .. 한 번 새로고침을 해야 제대로 원하는 정보가 들어가는 현상이 있는데요, 왜 그런걸까요 ?? ㅠㅠ&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Da Young Shin</dc:creator><pubDate>Sat, 16 Mar 2013 08:36:55 -0000</pubDate></item><item><title>Re: Node.js QA 게시판</title><link>http://nodeqa.com/#comment-831095273</link><description>&lt;p&gt;ftp 서버를 로컬에 설치하고, 1개의 계정을 부여했습니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/mscdex/node-ftp" rel="nofollow"&gt;https://github.com/mscdex/node...&lt;/a&gt; 에 나와있는 예제가 모두 정상작동하는데 문제없습니다.&lt;/p&gt;

&lt;p&gt;기준은 별도로 정할필요없고, 원하는 타겟디렉토리 / 파일만 지정하면 업로드, 다운로드 하는데에는 문제없습니다.&lt;/p&gt;

&lt;p&gt;테스트하는데 별 문제점을 못찾겠네요.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">nanhapark</dc:creator><pubDate>Sat, 16 Mar 2013 06:40:25 -0000</pubDate></item><item><title>Re: Node.js QA 게시판</title><link>http://nodeqa.com/#comment-831091779</link><description>&lt;p&gt;안녕하세요.&lt;/p&gt;

&lt;p&gt;현재 mac lion 로컬에 ftp 서버를 설치하여 확인해봤습니다.&lt;/p&gt;

&lt;p&gt;UTF-8 환경에서 "박난하.txt" 파일을 테스트해봤는데, 잘 올라가는 것을 확인했습니다.&lt;/p&gt;

&lt;p&gt;라이브러리에는 이상이 없어보이네요.&lt;/p&gt;

&lt;p&gt;아무래도 인코딩 문제가 아닐까 생각됩니다.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">nanhapark</dc:creator><pubDate>Sat, 16 Mar 2013 06:35:20 -0000</pubDate></item><item><title>Re: Node.js QA 게시판</title><link>http://nodeqa.com/#comment-830197597</link><description>&lt;p&gt;&lt;a href="https://npmjs.org/package/ftp" rel="nofollow"&gt;https://npmjs.org/package/ftp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;그리고 이 FTP클라이언트 모듈을 사용하다가 다른 문제도 하나 더 발생했는데요. 테스트 해본 FTP서버로는 한글이 포함된 파일명의 파일도 업로드가 잘 되었는데, 이제 실제로 사용할 cafe24의 웹호스팅을 받은 FTP서버에서는 한글이 포함되어있으면 모듈에서는 error발생시키지 않고 정상적으로 업로드한것 처럼 보이지만 실제로는 업로드가 되지않네요. 영어나 숫자로만 된 파일이름은 정상 업로드 되구요.&lt;br&gt;이 문제에 대해 찾아보니 FTP서버에서 설정을 바꿔주면 가능하다고 하는데,&lt;br&gt;FileZilla FTP클라이언트로 아까 한글이름 파일이 업로드 되지않던 서버에 한글이름 파일을 올리면 이건 또 업로드가 정상적으로 되는데요.&lt;br&gt;cafe24호스팅 상품은&lt;br&gt;&lt;a href="http://www.cafe24.com/?controller=product_basic_autoban" rel="nofollow"&gt;http://www.cafe24.com/?control...&lt;/a&gt;&lt;br&gt;광아우토반 Full SSD인데요. 상품스펙 중간에 UTF-8이라는 항목을 클릭하면&lt;/p&gt;

&lt;p&gt;"UTF-8을 지원하는 64bit광호스팅에서 사양을 선택하신 후 신청해주십시오. 64bit광호스팅을 신청하시는 방법과 동일합니다만, 도메인 선택 이후 선택한 서비스 내용이 보여지는 부분에서 EUC-KR로 설정되어있는 부분을 UTF-8로 선택하시고 진행하시면 됩니다." 이라고 되어있는데 node.js가 UTF-8이 디폴트라서 EUC-KR이 기본인 FTP서버에 한글이름 파일을 제대로 업로드 하지 못하는 걸까요? 그게 이유라면 FileZilla는 둘다 알아서 감지해서 가능하도록 하는건지 신기하네요.&lt;/p&gt;

&lt;p&gt;UTF-8로 서비스 신청을 바꾸면 해결될 문제인지 혹시 알고계시다면 조언 부탁드립니다.ㅠ&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">참새</dc:creator><pubDate>Fri, 15 Mar 2013 10:45:53 -0000</pubDate></item><item><title>Re: Node.js QA 게시판</title><link>http://nodeqa.com/#comment-830183144</link><description>&lt;p&gt;에러가 Error: .\galleryImage\sdf222222s.txt: No such file or directory 이런식으로 나는걸보니 FTP서버에 있는 경로를 제대로 못찾아서 그런듯 한데요.&lt;br&gt;__dirname변수를 다운로드할 파일 경로에 붙여봤는데 저 변수는 로컬의 주소 C:\... 로 시작되는 경로라 서버의 경로가 필요한 시점이라 쓰임새가 달라 보여요 ㅎ&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">참새</dc:creator><pubDate>Fri, 15 Mar 2013 10:27:55 -0000</pubDate></item></channel></rss>