일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- MongoDB
- 콜백 함수
- NoSQL
- JQuery
- 테스트
- npm
- Javascript
- 웹디자인
- Python
- non-blocking
- 개발환경
- github
- Ajax
- CoffeeScript
- 오픈소스
- 자바스크립트
- 빅데이터
- callback function
- git
- 제이쿼리
- 750R
- 크로스브라우징
- 인턴
- AngularJS
- CSS
- node.js
- Microsoft
- 마이크로소프트
- 마소
- Today
- Total
목록node.js (18)
Inspired World
XSS (Cross-Site Scripting 크로스 사이트 스크립팅) 은 사용자가 입력할 수 있는 폼이나 URL의 파라미터 값을 통해 악의적인 코드를 삽입하여 쿠키를 갈취하거나 악성 코드를 실행하는 것을 말합니다. 기본적으로 이는 태그, 특히 스크립트 태그를 통해 삽입되어 지는데요. 태그를 여는 를 > 로 표현함으로써 브라우저가 진짜 태그가 아닌 문자 형태의 로 인식하게 할 수 있습니다. 이 방법으로 XSS 필터링을 해줄 수 있습니다. var XSSfilter = function(content) { return content.replace(//g, ">"); }; Node.js 의 장점이 Front-end와 Back-end 언어가 같다는 점을 생각하면 이 코드는 HTML +..
클라이언트 사이드 (웹브라우저)에서 전역 객체에 접근하고 싶다면 window 객체를 통해 접근 할 수 있습니다. 예를 들어 example 이라는 변수를 전역 변수로 만들고 싶다면. window.example = null; 이렇게 하면 example 이라는 전역 변수에 null 값을 할당하게 됩니다. 서버 사이드 (Node.js)에서 전역 객체에 접근하고 싶다면 global 객체를 통해 접근 할 수 있습니다. 위와 동일하게 example 이라는 변수를 전역 변수로 만들고 싶다면. global.example = null; 이렇게 하면 example 이라는 전역 변수에 null 값을 할당하게 됩니다. 가급적이면 전역 변수를 쓰지 않는게 좋지만 전역 변수를 꼭 써야만 하는 상황이 있을 수 있으니 클라이언트 사이..
Node.js 에서 require('경로'); 를 활용하면 그 .js 파일 기준으로 상대 경로에 위치한 js 파일을 가져와 쓸 수 있습니다. 여러 함수를 라우팅 페이지와 함께 다같이 몰아 넣는게 아니라 HTTP 요청을 라우팅 할 때 함수들을 의미 별로 파일로 나누어서 관련 함수들을 모아놓고 사용하면 아주 유용하죠. 문제는 저 상대 경로 입니다. 나름 절대 경로 비슷하게 자체적으로 root directory 가 있다면 그걸 기준으로 폴더나 파일을 정리해서 require를 사용하면 참 좋을텐데요. 이럴 때는 process.cwd() 를 활용하시면 해결됩니다. 예를들어 웹 프레임워크가 app.js 로 실행된다고 할 때 node app.js 로 실행을 하게 됩니다. 이 때 이 경로가 process.cwd가 됩니..
Node.js 의 큰 특징인 이벤트 기반은 하나의 스레드를 사용함에 있어서는 비동기처리에 있어서 아주 뛰어나지만 멀티코어 CPU를 사용하는 서버에서 Node.js를 돌리다보면 나머지 사용하지 않는 코어들이 아깝게 느껴집니다. 또 그런 사용하지 않는 코어 때문에 다른 언어/웹프레임워크와의 벤치마크에서도 많이 밀리는 모습을 보여줍니다. 하지만 Node.js 0.4.x 시절에도 cluster라는 모듈이 있었고 버전이 0.6.x 가 되면서 자체 모듈로써 포함이 되면서 멀티코어에서도 Node.js를 활용할 수 있게 되었습니다. 사용 방법은 간단합니다. 위 코드 처럼 이미 작성된 http server나 express 코드를 else 부분에 넣어주고 Worker를 CPU 코어 갯수 만큼 생성하게 하면 됩니다. 또 위..
Node.js 에서의 장점은 non-blocking 입니다. 하지만 이것이 하기에 따라 오히려 독이 될 수도 있는데요. blocking 코드를 Node.js 에서 작성하게 되면 Node.js 가 돌아가는 이벤트 루프의 특성상 모든 일이 blocking 코드가 다 할때까지 기다리게 됩니다. 예를 들어 for(var i=0; i
Node.js 는 단순히 웹서버로써 또 서버 앞 단에 두는 Reverse Proxy로써만 사용하기에도 좋지만 Nginx 나 Apache 와 같은 웹서버와 PHP, Java, C#, Python, Ruby 등을 연결해서 사용해야 하는 기존의 방법과는 달리 Node.js 는 자체적으로 자신이 웹서버이면서 로직도 담당할 수 있습니다! 이렇게 1 어시1 골을 혼자 다 하는 것이나 다름없죠 ㅎㅎ 물론 예전 포스팅 글에서 밝혔듯이 "Ryan Dahl 의 추천사항으로 아직 발견되지 않은 Buffer Overflow 으로 인해 발생할 수 있는 취약점을 Nginx 를 앞에 Reverse Proxy로 둠으로써 완벽하진 않지만 어느정도 가릴 수(?) 있다고 합니다. 또 Static File( CSS, JavaScript, ..
먼저 Node.js 를 설치해보겠습니다. 설치에 앞서 반드시 미리 설치되어 있어야 할 것들이 있는데요. Python 2.5+ libssl-dev 이 두가지는 설치를 하기 위한 파일이므로 꼭 필요합니다. 이것 말고도 버전관리를 위해 git을 주로 쓰지 않는다 하더라도 다른 오픈 소스 커뮤니티의 git repository에서 소스를 가져올 때도 git을 사용하기 때문에 혹시 git이 깔려있지 않다면 git-core도 함께 설치해줍니다. 제가 즐겨 사용하는 Ubuntu 11.04 Natty 기준으로 설명하겠습니다. apt-get install g++ curl libssl-dev apache2-utils git-core make설치가 다 되었다면 설치파일을 다운 받고 압축을 풀고 싶은 디렉토리로 이동 후 Nod..
Node.js를 호스팅 할 수 있는 방법은 여러가지가 있습니다. 가장 쉬운 방법은 PaaS 클라우드 호스팅을 이용하는 방법인데요. 소스만 가지고 특정 포트 설정이나 이런것만 호스팅에 따라 조금만 맞춰주면 서버 관련된 설정은 아예 신경을 써도 되지 않아도 되는 장점이 있습니다. no.de (Node.js를 만든 Ryan Dahl이 있는 회사에서 운영하고 있습니다) Heroku (Salesforce가 인수, Facebook App을 생성할 때 호스팅 옵션에 Heroku가 있죠. 첨에 들어가면 보라색 화면에 일본풍의 이름들이 있어서 처음에 좀 많이 당황했던 UI입니다) DotCloud CloudFoundry (VMware) Nodejitsu NodeSocket Nodester 저는 개인적으로 git repos..