728x90

간밤에 Node.js 의 v4.2.4 (LTS) 버전이 새롭게 업데이트 되었습니다. 이번 버전 업데이트에서도 정말 많은 버그들이 Fix 가 되었습니다. 자세한 업데이트 내역은 Node 공식 사이트에 등록된 릴리즈 노트를 확인해 보시기 바랍니다. 복기를 위해 간만에 개발용 리눅스 머신에 LTS 버전을 업데이트 하면서 사용했던 커맨드를 기록삼아 남겨둡니다. 혹시나 "Node.js 는 어떻게 업데이트 해야 하나요?" 하시는 분들을 위해 도움이 되었으면 합니다.


Node.js 는 두가지 버전으로 나뉘어져 출시(?)가 되고 있습니다. 짝수 버전에 해당하는 LTS 와 홀수 버전에 해당하는 Stable 이 바로 그것입니다. LTS 는 Long Term Support 의 약자로 Node.js 에서만 사용하는 용어는 아니고 말 그대로 "오랫동안 지원되는" 버전으로 안정성, 호환성에 포커스를 맞춘 버전입니다. 반면 Stable 버전은 용어의 의미와 다소 다르게 새로운 기능들이 적극적으로 반영되는 버전이니 (=이슈가 많을 수 있는?) 사용시 이를 감안해야 하겠습니다.




Node.js v4.2.4 (LTS) 버전 릴리즈 노트 확인하기 [바로가기]


Node.js 에서 사용하는 패키지들은 NPM 을 통해서 다들 관리를 하고 계실겁니다. 그런데 NPM 은 Node.js 자체의 버전을 관리해 주지는 않습니다. Node.js 의 버전을 관리하기 위해서는 NPM 을 이용하여 n 을 먼저 설치해야 합니다. n 은 Node.js 를 관리하기 위한 전용 도구로 이를 통해서 설치한 버전들은 특정한 경로에 저장되어 손쉽게 Node.js 의 버전을 변경해 가면서 활용할 수 있게 해줍니다. 참 편하쥬?




작업을 시작하기 전 노드의 버전을 확인해보면 v0.10.28 입니다. 오랫동안 쓸일이 없었던 가상머신이라 간만에 확인했더니 버전이 무척 낮습니다 ^^ 혹시나 하는 마음에 캐시를 비워주고 우선 n 으 설치했습니다. n 의 사용법은 무척 간단한데요 설치하려는 버전을 파라메터로 전달해 주면 됩니다. 새로 릴리즈된 버전이 4.2.4 이니 파라메터로 4.2.4 를 전달하면 알아서 새로운 버전을 다운로드 받아 설치를 진행합니다. 이렇게 다운로드 된 버전은 환경에 따라 다소 다를 수 있겠지만 설치 과정에 나온 "mkdir" 항목에 나온 경로에 저장되게 됩니다.


새로운 버전을 돌려보니 좀 이슈가 있다? 그러면 간단히 "n 0.10.28" 의 식으로 다시 버전을 변경하면 됩니다. 스샷에 보이는 것처럼 이미 로컬에 다운로드 되어 있기 때문에 별도로 다운로드 되는 과정 없이 버전이 변경됩니다. Node.js 를 이용한 개발도 편하지만 관리도 편한것이 사람들에게 지속적으로 사랑받는 이유가 아닐까 싶습니다!



728x90
728x90

node.js 를 이용하여 서버 프로그램을 만드는 경우, 디버깅이 짜증날때가 간혹 있습니다. 소스코드를 수정하면 다시 프로세스를 죽였다가 살리는 과정을 반복하는 경험들을 많이 하실텐데요, 이런 불편함을 없애주기 위한 여러가지 패키지들이 많이 준비되어 있습니다. 다 간단하긴 하지만 그 중에서도 nodemon 을 무척 잘 쓰고 있어서 소개해 봅니다.



nodemon GitHub 페이지 [바로가기]


당연하겠지만 Node Packager Manager 를 이용해서도 손쉽게 설치하실 수 있습니다. npm 명령을 이용해서 패키지를 설치하려면 아래와 같이 명령을 입력하시면 됩니다. 관리자 권한이 필요할 수 있다는 점 기억해 두시면 되겠네요.


npm install -g nodemon


nodemon 을 설치한 이후에 이용하는 방법은 node 를 통해 스크립트를 실행하지 마시고 nodemon 을 이용해서 스크립트를 실행하기만 하면 됩니다. 말로 적으면 복잡하나 커맨드로 보자면...


(기존) node server.js

(변경) nodemon server.js


번거로움을 한번에 없애주는 nodemon 으로 프로세스 중단, 재시작하는 불편함을 없애보시기 바랍니다!


728x90
728x90
자바스크립트는 참 편리한 스크립트 언어이지만 다른 한편으로는 이해하기 힘든 녀석이기도 합니다. 이유인 즉선 너무 유연하게 사용할 수 있다보니 가끔 일반적인 언어, 컴퓨터 상식으로는 "왜 이렇게 동작하지?" 하는 경우들이 있기 때문입니다. 가장 대표적인 것이 조건 비교문을 이용하여 변수나 객체를 비교할때 입니다. 잘 동작할 것으로 생각했던 구문들이 정상적인 동작을 하지 않거나 예상치 못한 반응을 한다면 혹시 아래 표에 나온 경우중 하나가 아닌지 잘 살펴봐야 합니다. 아래 표는 http://dorey.github.io/JavaScript-Equality-Table/ 에서 업어왔습니다

 
Boolean 값인 True 와 1은 같은 값일까요? 그리고 True 와 "1"은 같은 값일까요? 조금 더 나아가 True 와 [1] 을 비교하면 어떻게 될까요? 두개의 이퀄 연산자(==)를 사용하여 자바스크립트에서 값을 비교하는 경우 위의 표에서 초록색으로 표시된 것처럼 결과가 리턴된다고 합니다. "" 와 0 이 같다는 생각을 해보셨나요? 혹은 "" 와 [[]] 가 같은 값으로 식별된다는 상상을 누가 해봤을까요? 

때문에 자바스크립트에서는 각 객체와 객체를 비교했을 때 값을 정확하게 예측하기 힘들다면 이퀄 연산자를 두개 이어쓰는 대신 세개(===)를 쓰는 것이 좋습니다. 세개의 이퀄 연산자를 사용하는 경우 엄격한 규칙에 의거하여 값을 비교하게 되고 이로 인한 조건 비교문의 오동작을 효과적으로 막을 수 있습니다. 세개의 연산자에 대한 부정형은 !== 이니 참고하시면 될 것 같습니다


훨씬 상식(?)에 가까운 결과를 보실 수 있습니다. 같은 형태의 자료형들간에 비교를 했을때 정확한 값이 나오는 것을 볼 수 있습니다. 자바스크립트를 쓰면서 뭔가 이해할 수 없는 동작이 발생하고 있다면 표를 참고하시고 연산자를 바꿔보는 것을 검토해 보세요. 우리의 시간은 소중하니까요. :-)

 

728x90
728x90

정규표현식은 복잡한 조건 비교문 없이
패턴 단위로 문자열을 검증할 수 있어서 무척 유용하...지만...-_-;;
자주 사용하지 않으면 할 때마다 헷갈린다는 단점이 있다.

자바스크립트만 이용해서 사용자 입력값을 검증하는 것은
무조건 문제가 생길 수 있기 때문에 서버측 검증을 꼭 해야만 한다.
물론 서버측에서는 여러가지 다른 수단 (가령, 스토어드 프로시저 파라메터의 데이터 타입) 이 있기 때문에
자바스크립트에서 정규표현식 검증을 하고
서버단에서는 별도 Validation 을 하는 것도 좋은 방법이다

각설하고,

사용자 계정 생성시 자주 사용하게 되는 룰이 영문, 숫자만 허용하는 것인데
이를 자바스크립트 정규표현식을 사용하면 무척 간단하게 표현이 가능하다

var regType1 = /^[A-Za-z0-9]+$/;
혹은
var regType1 = /^[A-Za-z0-9]*$/;

 
영어는 대문자 소문자가 있기 때문에 두가지를 모두 식에 표현해 주어야 한다

var regType1 =/^[A-Za-z0-9]+$/;

혹은
var regType1 = /^[A-Za-z0-9]*$/; 

숫자도 0-9 라는 조건을 통해 필터링 할 수 있다

var regType1 = /^[A-Za-z0-9]+$/; 
혹은
var regType1 = /^[A-Za-z0-9]*$/; 

+ 는 대/소 영문자, 숫자가 한번 이상 나온다는 의미이며 
꺽쇠 바깥쪽의 별표(아스타리스크,*)는 꺽쇠 안의 조건이 0번 이상 반복된다는 의미이다
+와 *는 미묘하게 차이가 있지만 위의 목적으로는 어느것을 사용해도 무방하다

만약, 문자열 길이를 제한하고 싶으면 어떻게 하면 될까?
그 때는 브레이스({,})로 문자열 갯수를 지정해 주면 된다.

var regType1 = /^[A-Za-z0-9]{4,12}$/; 

위와 같은 식을 이용하면 4자 이상, 12자 이하의 문자열 필터링이 가능하다.
완성된 코드는 아래와 같다.

var regType1 = /^[A-Za-z0-9+]*$/;
if (regType1.test(document.getElementById('userid').value)) { alert('아이디가 조건에 맞지 않습니다'); }

참고로 정규표현식 관련된 책들중 얇고 부담 없지만 탄탄한 책은
한빛미디어에서 출간된 "처음 시작하는 정규표현식 Regular Expression" 을 추천한다 

[자세히보기]


- NoPD -

 

쿠팡 파트너스 활동을 통해 소정의 수수료를 지급받을 수 있습니다

 

728x90

+ Recent posts