본문 바로가기

분류 전체보기

(180)
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 프로퍼티와 ..
애자일로 이동하기 - 애자일로의 실천방법 애자일로 가기 위해 바로 적용할 수 있으며 가장 효과적인 방법은, 스탠드업 미팅 입니다. 저도 지금의 팀에서 스탠드업 미팅을 처음 시작했고, 매일 무언가를 공유한다는 일은 굉장히 어색했습니다. 하지만 그 장점은 스스로 먼저 체득하게 되었습니다. 먼저, 업무를 효율적으로 진행하게 되었습니다. 물론 타인이 내가 진행하고 있는 프로젝트의 진척도에 별 관심이 없는 경우도 있지만 공유를 위해서라도 스스로 좀 더 효율적인 부분부터 작업하게 되었습니다. 그리고 3분이라는 시간 내에 공유를 하다보니 남에게 전달하는, 말하는 능력도 상승했습니다. 또한 프로젝트 진행 간에 뭔가 허들이 있을 경우 모두가 모인 자리에서 공유함으로써 문제의 해결도 더 빨라졌습니다. 혹시 스탠드업 미팅을 하고 있지 않다면..
애자일 협력 어떤 프로젝트라도 팀은 필요합니다. 하지만 팀에서 일하는 것은 혼자 일하는 것과 상당히 다르고, 본인의 활동이 전체 프로젝트와 생산성, 진행 상황에 큰 영향을 줄 수 있습니다. 애자일의 초석인 효과적인 협력에 대해 살펴보도록 하겠습니다. - 정규 대면회의 시간을 가져라 의사소통은 프로젝트 성공의 열쇠이고, 따라서 우리는 동료 개발자와 의사소통을 잘 해야 합니다. 스탠드 업 미팅은 팀을 모으고, 모든 사람에게 정보를 제공하는 효과적인 방법입니다. 이름이 암시하듯이, 스탠드 업 미팅에서 참석자는 앉는 게 허용되지 않습니다. 이 점이 회의를 짧게 유지하도록 유도해줍니다. 지금 제가 있는 팀에서도 매일 오후 2시반에 스탠드 업 미팅을 진행합니다. 실제로는 앉아서 하지만, 확실히 앉아서 하다보니 회의가 길어지는 ..