본문 바로가기

Backend

(126)
Underscore.js - ArrayLike 이번 포스팅에선 Underscore.js 의 중요 컨셉인 ArrayLike 에 대해 알아보고자 합니다. 이게 함수형과 무슨 상관이야? 라는 생각이 들 수도 있지만 먼저 작성된 포스팅에 적었듯이 함수형의 핵심 컨셉을 Underscore.js 가 제시했기에 그 컨셉이 내부 함수에 어떻게 녹아들어있는지를 알아보려는 의도입니다. - ArrayLike _.each 와 _.map 등 Underscore.js 의 주요 함수는 첫 번째 인자로 아래의 4가지 타입을 받습니다. {} [] arguments ArrayLike 종종 함수를 써오면서 {}, [] 즉 객체와 배열을 받는다는 건 알았지만 특히 ArrayLike 는 뭘까요. console.info(list1[0] === 1 && list1[1] === 2 && li..
Underscore.js Underscore.js 는 꽤나 작은 함수형 자바스크립트 라이브러리 입니다. 제가 처음 이 라이브러리를 접했을 땐, 빈약한 자바스크립트 기본 객체들을 다루기 위한 유틸성 라이브러리로만 생각했습니다. 배열에만 사용할 수 있는 전용 메서드들을 다양한 타입에 적용할 수 있는 정도의 용도로 말이죠. 하지만 이 라이브러리는 자바스크립트를 함수적으로 다루는 패러다임을 제시하고 있습니다. Underscore.js 의 함수들은 간결하고 단순하며 아주 작지만, 함수들 사이에 아주 잘 어우러집니다. 함수의 결과가 또 다른 함수의 인자와 어울리고, 함수로 만든 함수가 다른 고차 함수의 보조 함수로 사용되는 등 연계가 잘 이뤄지도록 되어 있습니다. - Underscore.js 맛보기 함수명만으로 어떤 기능을 하는지 쉽게 알..
함수형 자바스크립트의 시작 함수형 프로그래밍은 성공적인 프로그래밍을 위해 부수 효과를 최대한 멀리하고 조합성을 강조하는 프로그래밍 패러다임입니다. 함수형 프로그래밍이 부수 효과를 최대한 멀리하는 이유 중 하나는 오류를 줄이기 위해서고, 다른 하나는 조합성 혹은 모듈화 수준을 높이기 위해서 입니다. 높은 모듈화 수준은 생산성을 높이고, 오류 없는 함수들의 조합은 프로그램 전체의 안정성을 높여줍니다. 일전에 함수형 자바스크립트 라는 책을 읽으면서 리뷰를 남기기도 했었지만, (관련 링크) 아직은 약간 어색함도 있고 프로그래밍 자체도 해오던 그대로 하는 것 같다는 생각이 들어 함수형 프로그래밍에 대해서 다시 한 번 정리해보고자 합니다. - 함수형 자바스크립트 예제들 함수형 자바스크립트를 책으로 접하면서 알게된 커링, 부분 적용 등의 개념..
Javascript - Closure (클로저) 에 대해 - 클로저에 대한 이해 클로저는 여러 함수형 프로그래밍 언어에서 등장하는 보편적인 특성입니다. 바로 코드 예시를 보도록 하겠습니다. const outer = function () { let a = 1; const inner = function () { console.info(++a); }; inner(); }; outer(); 위 코드가 실행될 때 콜스택 및 실행 컨텍스트를 도식으로 나타내 보겠습니다. 뭐 딱히 특별한 점은 없습니다. (실행 컨텍스트 참고 링크) 그럼 위 코드를 조금 변경 해보겠습니다. const outer = function () { let a = 1; const inner = function () { return ++a; }; return inner; }; const out = out..
Javascript - 실행 컨텍스트란 - 실행 컨텍스트 ? 자바스크립트는 실행 컨텍스트가 활성화되는 시점에 선언된 변수를 상단으로 끌어 올리고 (호이스팅), 외부 환경 정보를 구성하고, this 값을 설정하는 등의 동작을 수행하는데 이 과정에서 다른 언어에선 볼 수 없는 현상들이 발생합니다. 여기서 실행 컨텍스트 (execution context) 는 실행할 코드에 제공할 환경 정보들을 모아놓은 객체로, 동적 언어로서의 자바스크립트 성격에 대해 가장 잘 파악할 수 있는 개념입니다. 자바스크립트는 동일한 환경에 있는 코드들을 실행할 때 필요한 환경 정보들을 모아 컨텍스트를 구성하고, 이를 콜 스택에 넣었다가 가장 위에 있는 컨텍스트와 관련 있는 코드들을 실행하는 식으로 전체 코드의 환경과 순서를 보장합니다. 하나의 실행 컨텍스트를 구성할 수 ..
JavaScript - this 에 대해 자바스크립트에서 혼란스러운 개념엔 몇 가지가 있지만, 그 중 1순위를 꼽으라면 this 일 것입니다. 깊숙히는 아니지만 제가 경험해봤던 객체지향 언어에서 this 는 클래스로 생성한 인스턴스 객체를 의미합니다. 클래스에서만 사용할 수 있기 때문에 혼란스러울 부분이 없었지만, 자바스크립트는 어디에서나 this 를 사용할 수 있습니다. 이 점 때문에 JS 에서 this 가 참 혼란스러운 개념이라 생각하며, 제대로 한 번 짚고 넘어가보겠습니다. - 상황에 따른 this 자바스크립트에서 this 는 기본적으로 실행 컨텍스트에 따라 바뀝니다. 실행 컨텍스트는 함수를 호출할 때 생성되므로, this 는 함수를 호출할 때 결정된다고 할 수 있습니다. • 전역 공간 전역 공간에서 this 는 전역 객체를 가리킵니다. ..
JavaScript - 프로토타입 (Prototype) 에 대해 자바스크립트는 프로토타입 기반 언어입니다. 클래스 기반 언어에서는 '상속' 을 사용하지만 프로토타입 기반 언어에서는 어떤 객체를 원형으로 삼고 이를 복제함으로써 상속과 비슷한 효과를 얻습니다. - 프로토타입의 개념 프로토타입 개념을 설명하기 위해 다이어그램을 하나 그려봤습니다. 이를 텍스트로 풀어서 설명하면 아래와 같습니다. • 어떠한 생성자 함수 (Constructor) 를 new 연산자와 함께 호출하면, Constructor 에 정의된 내용을 바탕으로 새로운 인스턴스 (instance) 가 생성됩니다. • 이 instance 에는 __proto__ 라는 프로퍼티가 자동으로 부여되는데, 이 프로퍼티는 Constructor 의 prototype 이라는 프로퍼티를 참조합니다. prototype 프로퍼티와 ..
axios configs 정리 - 다양한 http 라이브러리 Node.Js 프로젝트를 진행하다보면 다른 서버와의 http 통신이 필요한 상황은 거의 무조건 오는데, 이때 사용 가능한 라이브러리는 axios, got, bent, node-fetch-npm 등 여러가지가 있습니다. 일전에 저도 이 다양한 라이브러리 중 어느것을 사용하는게 좋을지 확인하기 위해 비교 테스트를 진행해 포스팅한 적이 있습니다 (링크) 아무래도 가장 널리 쓰이던 라이브러리는 request 가 아니었을까 생각합니다. 해당 라이브러리에 베이스를 둔 request-promise 또한 많이 쓰였습니다. 하지만 작년 2월 request 라이브러리는 완전히 deprecated 되었고, 사내에서 관리중인 프로젝트에서도 조금씩 라이브러리 교체 작업을 진행해왔습니다. 여러 라이..