Computer/javascript23 pm2 에서 sudo 로 포트를 바인드 해야 할때.. node.js의 pm2에서 80이나 443과 같은 root권한이 필요한 프로세스를 올릴 경우 다음으로 처리한다. $ sudo apt-get install authbind$ sudo touch /etc/authbind/byport/80$ sudo chown yourusername /etc/authbind/byport/80$ sudo chmod 755 /etc/authbind/byport/80$ authbind --deep pm2 {실행코드} http://stackoverflow.com/questions/35105100/start-app-as-root-with-pm2 http://pm2.keymetrics.io/docs/usage/pm2-doc-single-page/#allow-pm2-to-bind-appl.. 2017. 3. 9. [자바스크립트] 함수형 프로그래밍 자바스크립트는 완벽한 함수형 프로그래밍 언어는 아니다. 함수형 프로그래밍을 더 맛보기 위해서는 lisp이나 haskell과 같은 언어를 사용해 보기 바란다. 함수형 프로그래밍은 함수의 조합으로 작업을 수행하는데, 이때 필요한 데이터와 상태는 변하지 않는다는 것이 중요하다. 변할 수 있는 것은 오로지 함수로, 이 함수가 연산의 대상이 된다. 함수중에서 외부에 영향을 미치지 않는 것을 순수 함수(Pure Function)이라고 한다. 또한 함수를 하나의 값으로 간주하여 함수의 인자 혹은 반환값으로 사용할 수 있는 함수를 고계함수(Higher-order function)이라고 한다. 함수형 프로그래밍의 장점은 내부 데이터 및 상태는 그대로 둔 채 제어할 함수를 변경, 조합함으로써 원하는 결과를 내기 때문에, .. 2016. 6. 20. [자바스크립트] 함수에 대하여 - 자바스크립트의 특이점들 자바스크립트의 함수는 자바나 C/C++에 비해서 특이한 점들을 가지고 있다. 본 포스팅에서는 자바스크립트 함수의 특이한 점들을 기술한다. 1. 함수 호이스팅 함수 호이스팅은 함수 선언문 형태로 정의하였을 때 실제 함수 코드의 위치와 관계없이 참조점을 가지는 것을 의미한다. 함수 호이스팅이 발생하는 이유는 자바스크립트에서 코드가 실행될 때 실행 문맥이 생성되는 과정에서 함수 선언문 형태와 함수 표현문 형태가 동작하는 방식이 다르기 때문이다. (함수 선언문과 표현문 형태의 차이는 이전 글에서 설명하였다.) 실행 문맥은 자바스크립트의 실행 단위라고 볼 수 있다. 현재 어떤 문장이 실행되고 있을 때 그 문장이 실행되고 있는 환경인 것이다. 실행 문맥은 현재 실행중이 코드가 참조할 수 있는 변수 객체들을 가지고 .. 2016. 6. 19. [자바스크립트] 객체지향 프로그래밍 객체 지향 프로그래밍은 자바나 C++같은 언어에서는 클래스 기반으로 이루어진다. 객체지향 프로그래밍에서는 상속을 통해 코드 재사용성을 높이고 캐스팅의 명세를 제공한다. 자바스크립트는 클래스를 제공하지 않고 프로토타입 기반의 상속을 제공하는데, 객체의 자료구조, 메서드 등을 동적으로 바꿀 수 있다. 이번 포스팅에서는 자바스크립트의 객체지향 프로그래밍 방법에 대해서 이야기 한다. 1. 의사 클래스 방식 함수를 이용하여 new 키워드로 객체를 생성하는 방법이다. 의사 클래스 방식이라는 이름은 클래스처럼 객체를 생성하는 것처럼 보이기 때문이다. 함수 객체를 생성할 경우 Function 생성자는 다음과 같은 코드를 실행한다. this.prototype = {constructor : this} ; 즉 생성한 함수 .. 2016. 6. 18. [자바스크립트] 프로토타입에 대하여 1. 프로토타입이란? C++이나 자바의 경우 클래스 기반의 객체 상속을 지원한다. 자바스크립트는 프로토타입 기반의 객체 상속을 지원하다. 모든 자바스크림트의 객체는 자신의 부모인 프로토타입을 가르키는 참조 링크 형태의 프로퍼티가 있다. 이를 암목적 프로토타입 링크(implicit prototype link)라고 하며 [[Prototype]] 링크이다. 구글 크롬 브라우저와 node.js에서는 __proto__ 로 접근할 수 있다. 1.1 객체 리터럴 방식으로 생성된 객체 객체는 자기의 프로퍼티 뿐만 아니라 부모 객체의 프로토타입 객체의 프로퍼티도 접근 가능하다. 정확히 말하자면 해당 객체에 프로퍼티가 없으면 [[prototype]] 에 연결된 객체에서 프로퍼티를 찾는다. 이를 프로토타입 체이닝이라고 한다.. 2016. 6. 17. [node.js] 노드의 비동기적 동작에 대하여 노드는 기본적으로 단일 쓰레드 기반으로 동작한다. 이벤트 루프를 통해서 비동기적으로 동작하기 때문에 멀티 쓰레드로 동작하는 것처럼 착각을 일으킬 수 있다. 자바스크립트에서는 당장 처리하지 못하는 작업을 여러 큐에 관리하는데, 이벤트, 타이머, 인터벌, 즉시 실행 큐등이 있다. 자바스크립트에서는 멀티 쓰레드가 아니기 때문에 어떤 한 부분에서 CPU를 독점하면 프로그램이 Block 된다. setInterval(function(){ console.log('10 Interval Task'); },10); setInterval(function(){ console.log('20 Interval Task'); },20); setInterval(function(){ console.log('10 Interval Task.. 2016. 6. 12. 이전 1 2 3 4 다음