본문 바로가기
반응형

전체 글205

[Firebase] 서버리스? Firebase Functions! 1. Firebase Function이란 무엇일까? Firebase Function을 사용하게 되면 HTTPS 요청에 의해 트리거된 이벤트에 대한 응답으로 백엔드 코드를 자동으로 실행할 수 있는 기능이다. Firebase에는 실시간 데이터베이스, 인증, 스토리지, 호스팅, FCM(Firebase Cloud Messaging), Analytics등을 제공하는데, Function으로 데이터베이스나 스토리지에 요청을 보내 저장이나 데이터를 가져올 수 있다. * Firebase Function에 대한 설명은 Firebase 홈페이지에도 한글로 잘 나와있다. 2. Firebase Function 설치 및 배포하기 우선 Firebase Console에 접속하여 프로젝트를 생성한다. Firebase 홈페이지 (위 링.. 2017. 9. 15.
[ES 6] Symbol 1. Symbol Symbol은 ES6에서 처음 선보인, 완전히 새로운 원시 타입으로, 심볼값은 유일하며 변경할 수 없다. 심볼은 리터럴 형식이 없고 Symbol() 함수로 생성한다. 이 함수는 호출할 때마다 유일한 심볼을 반환한다. 또한 심볼에 관한 서술을 선택인자로 줄 수 있다. 심볼 자체에 접근하려는 시도는 아니고 단지 디버깅 용이다. 서술이 동일해도 심볼까지 동등하진 않다. let a = Symbol(); let b = Symbol(); let c = Symbol('설명'); console.log(a === b); // false 자바스크립트에서 객체의 프로퍼티 키는 보통 문자열 타입이었지만, ES6부터는 문자열과 심볼 둘 다 가능하다. let obj = null; let a = null; let.. 2017. 9. 11.
[ES 6] Arrow Function - 화살표 함수 1. 화살표 함수 (Arrow Function) ES6부터 '=>' 연산자로 함수를 생성하는, 화살표 함수가 처음 생겼다. 화살표 함수는 보다 간결한 구문을 지닌 익명 함수이다. let add = (x, y) => { return x + y; }; let result = add(1, 2); console.log(result); // 3; 문이 하나 밖에 없는 화살표 함수는 {}를 생략할 수 있다. let add = (x, y) => x + y; 2. 화살표 함수에서의 this 화살표 함수에 this 값은 해당 스코프의 this 값과 같다. 여타 함수에서 this가 콘텍스트 객체를 가리키는 것과는 대조적이다. var obj = { func : function() { console.log(this); // .. 2017. 9. 11.
[ES 6] 블록 스코프 let과 상수 const 1. 블록 스코프 변수 선언 - let let 키워드로 선언한 변수를 블록 스코프 변수라고 한다. 함수 밖에서 선언하면 함수 스코프 변수처럼 쓸 수 있다. 블록 안에서 선언하면 자신을 정의한 블록 또는 하위 블록에서만 접근 가능하며 블록 밖에서는 볼 수 없다. let a = 1; function myFunction() { console.log(a); // 1 let b = 2; if(true) { let c = 3; console.log(b); // 3 } console.log(c); // Reference Error Exception } myFunction(); 기존의 함수 스코프 변수 var과는 다르게 마지막 변수 c를 찍을 때에 에러가 발생한다. 기존 var를 사용하면서 스코프를 착각할 일이 있었던.. 2017. 9. 11.
[Java] 가비지 컬렉션(Garbage Collection, GC)과 알고리즘 1. 가비지 컬렉션 (Garbage Collection, GC)란? 예전의 전통적인 언어인 C 등은 malloc(), free() 등을 이용해서 메모리를 할당하고, 일일이 그 메모리를 거둬야 했다. 하지만 자바 언어에서는 GC 기술을 사용하여 개발자를 메모리 관리로부터 좀 더 자유롭게 해주었다. GC 즉 가비지 컬렉션은 자바 애플리케이션에서 사용하지 않는 메모리를 자동으로 거둬들이는 기능을 말한다. 2. 메모리 영역과 JVM의 GC 관리 * 각 영역 별 설명은 이전 글을 참조하기 바란다. 이전 글 : 2017/09/08 - [Java] - [Java] JVM의 구조와 이해 - Minor GC New/Young 영역의 GC를 Minor GC라고 부른다. Eden 영역은 자바 객체가 생성되자마자 저장되는 곳.. 2017. 9. 8.
[Java] JVM의 구조와 이해 1. JVM (Java Virtual Machine)이란? 자바 가상 머신(Java Virtual Machine, JVM)은 자바 바이트코드를 실행할 수 있는 주체이다. 일반적으로 인터프리터나 JIT 컴파일 방식으로 다른 컴퓨터 위에서 바이트코드를 실행할 수 있도록 구현되나 자바 프로세서처럼 하드웨어와 소프트웨어를 혼합해 구현하는 경우도 있다. (이론적으로는 100% 하드웨어 구현도 가능하나 비효율적이다) 자바 바이트코드는 플랫폼에 독립적이며 모든 자바 가상 머신은 자바 가상 머신 규격에 정의된 대로 자바 바이트코드를 실행한다. 따라서 표준 자바 API까지 동일한 동작을 하도록 구현한 상태에서는 이론적으로 모든 자바 프로그램은 CPU나 운영 체제의 종류와 무관하게 동일하게 동작할 것을 보장한다. * JV.. 2017. 9. 8.
SSO (Single Sign On)란? 1. SSO (Single Sign On)란? SSO는 하나의 통합된 계정으로 한 번의 로그인으로 다른 독립된 시스템들을 같이 사용할 수 있게 해주는 기능이다. 예를 들어서 구글 이메일 사이트에 로그인하면 구글 드라이브나 구글 검색 엔진에 별도로 로그인하지 않고도 같은 계정으로 자동 로그인된 상태로 사이트를 이용할 수 있게 해주는 기능이다. 여러 가지 구현 방식이 있지만 근래에는 SAML (Security Assertion Markup Language)나 OAuth 2.0과 같은 표준 기술들을 많이 사용하고 있다. 보통은 아키텍처의 Access 계층의 Reverse Proxy 계층에서 SSO 기술을 적용한다. 2017. 9. 7.
[Java] 람다 표현식, 람다란? 1. 람다 표현식(Lambda Expressions)이란? 람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있다. 람다 표현식에는 이름은 없지만, 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외 리스트는 가질 수 있다. * 람다의 특징 A. 익명 보통의 메서드와 달리 이름이 없으므로 익명이라 표현한다. 구현해야 할 코드에 대한 걱정거리가 줄어든다. B. 함수 람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 부른다. 하지만 메서드처럼 파라미터 리스트, 바디, 반환 형식, 가능한 예외 리스트를 포함한다. C. 전달 람다 표현식을 메서드 인수로 전달하거나 변수로 저장할 수 있다. D. 간결성 익명 클래스처럼 많은 자질구레한 코드를 구현할 필요가 없다. 람다식의.. 2017. 9. 6.
[Javascript] Javascript 바인딩 1. 기본 바인딩 첫 번째 규칙. 가장 평범한 함수 호출인 '단독 함수 실행'에 관한 규칙으로 다른 나머지 규칙에 해당하지 않 을 경우 적용되는 this의 기본 규칙이다. function foo() { console.log(this.a); } var a = 2; foo(); // 2 위 예제 var a = 2처럼 전역 스코프에 변수를 선언하면 변수명과 동일한 이름의 전역 객체 프로퍼티가 생성된다. foo() 함수 호출 시 this.a는 전역 객체 a다. 기본 바인딩이 적용되어 this는 전역 객체를 참조한다. 하지만 엄격 모드에서는 전역 객체가 기본 바인딩 대상에서 제외된다. 2. 암시적 바인딩 두 번째 규칙. 호출부에 콘텍스트 객체가 있는지, 즉 객체의 소유/포함 여부를 확인하는 것이다. functio.. 2017. 8. 31.
[Javascript] Javascript 프로토타입 (Prototype) 1. Javascript 프로토타입 (prototype)? 명세에 따르면 자바스크립트 객체는 [[prototype]]이라는 내부 프로퍼티가 있고 다른 객체를 참조하는 단순 레퍼런스로 사용한다. 2017/08/31 - [Javascript] - [Javascript] Javascript 프로퍼티 서술자 (Getter/Setter) 위 링크 글 exObject.a처럼 객체 프로퍼티 참조 시 [[Get]]이 호출된다고 했었다. 또한 exObject에 a라는 프로퍼티가 없으면 [[prototype]] 링크를 따라가면서 찾는다고 했었다. 아래의 예제에서 Object.create(..) 함수는 특정 객체의 [[Prototype]]링크를 가진 객체를 생성한다. var anotherObject = { a: 2 }; /.. 2017. 8. 31.
[Javascript] Javascript의 확장 금지, 봉인, 동결 1. 확장 금지 확장 금지란, 객체에 더는 프로퍼티를 추가할 수 없게 차단하고 현재 프로퍼티는 있는 그대로 놔두고 싶을 때 Object.preventExtensions(..)를 호출한다. 여기서 비엄격 모드에서는 프로퍼티를 추가해도 조용히 실패하지만 엄격 모드에서는 TypeError가 난다. var exObject = { a : 2 }; Object.preventExtensions(exObject); exObject.b = 3; exObject.b; // undefined 2. 봉인 Object.seal(..) 함수는 봉인된 객체를 생성한다. 즉, 어떤 객체에 대해 Object.preventExtensions(..)를 실행하고 프로퍼티를 전부 configurable : false 처리한다. 결과적으로 더.. 2017. 8. 31.
[Javascript] Javascript 프로퍼티 서술자 (Getter/Setter) 1. Javascript의 프로퍼티 서술자 단순하게 말하면 데이터를 담아두는 Property (속성)이다. ES5부터 모든 프로퍼티는 프로퍼티 서술자 (Property Descriptor)로 표현된다. var exObject = { a : 2 }; Object.getOwnPropertyDescriptor(exObject, "a"); /* * { * value : 2, * writable : true, * enumerable : true, * configurable : true * } */ 위 예제를 보면 값 (value) 말고도 writable, enumerable, configurable의 세 가지 특성이 더 있다. 이렇게 프로퍼티 생성 시 프로퍼티 서술자에 담긴 기본 특성값을 확인 할 수 있는데, O.. 2017. 8. 31.
[Javascript] Javascript의 실행 컨텍스트와 스코프 1. 자바스크립트의 실행 컨텍스트 (Execution context) 기존 언어를 경험한 사람이라면, 콜 스택을 들어보았을 것이다. 이는 함수를 호출할 때 해당 함수의 호출 정보가 차곡차곡 쌓여있는 스택을 의미한다. 실행 컨텍스트는 콜 스택에 들어가는 실행 정보 하나와 비슷하다. ECMAScript에서는 실행 컨텍스트를 "실행 가능한 코드를 형상화하고 구분하는 추상적인 개념"으로 기술한다. 이를 콜 스택과 연관지어 정의하면, "실행 가능한 자바스크립트 코드 블록이 실행되는 환경"이라고 할 수 있다. ECMAScript에서는 실행 컨텍스트가 형성되는 경우를 세 가지로 규정하고 있는데 전역 코드, eval() 함수로 실행되는 코드, 함수 안의 코드를 실행할 경우이다. ECMAScript에서는 실행 컨텍스트의.. 2017. 8. 30.
JWT의 이해 1. JWT의 이해 근래에 들어서 Claim 기반의 토큰 방식인 JWT (JSON Web Token)가 많이 사용되고 있다. 여기서 Claim은 사용자에 대한 프로퍼티나 속성을 말한다. 토큰 자체가 정보를 가지는 방식인데, JWT는 이 Claim을 JSON을 이용해서 정의한다. 다음은 Claim을 JSON으로 서술한 예이다. { "id" : "john", "role" : ["admin"], "company" : "McDonald's" } JSON은 '\n' 등 줄바꿈 문자가 있기 때문에 REST API 호출 시 HTTP 헤더 등에 넣기가 매우 불편하다. 그래서 JWT에서는 이 Claim JSON 문자열을 Base64 인코딩을 통해 하나의 문자열로 반환한다. 만약에 누군가 토큰을 변조해서 사용한다면 어떻게.. 2017. 8. 30.
REST의 이해 1. REST (Representational Safe Transfer) 웹의 장점을 최대한 활용할 수 있는 네트워크 기반의 아키텍처. HTTP와 JSON을 함께 사용하여 OPEN API를 구현하는 방법으로 주류를 이루고 있으며, 대부분의 OPEN API는 REST 아키텍처를 기반으로 설계 및 구현되고 있다. 2. REST의 기본 REST는 크게 리소스, 메서드, 메시지 3가지 요소로 구성된다. 예를 들어서 'ID가 3인 사용자를 삭제한다'라는 호출이 있을 때 '사용자'는 생성되는 리소스, '삭제한다'라는 행위는 메서드, 'ID가 3인 사용자'는 메시지가 된다. A. HTTP 메서드 HTTP에는 여러가지 메서드가 있지만, REST에서는 CRUD(Create Read Update Delete)에 해당하는 .. 2017. 8. 29.
반응형