전체 글
프로그래밍/Programming
2020. 4. 26.
프레임워크(Framework)와 라이브러리(Library)의 차이점
Express.js는 Node.js에서 가장 많이 사용되고 있는 "Web Framework"이다. React.js는 웹 서비스 중에서도 사용자 인터페이스 개발을 위해 사용되는 "Library"이다. 각각의 공식 문서에서도 명확하게 프레임워크와 라이브러리를 구분하여 사용하고 있는 만큼, 두 개념에는 확실한 차이가 있다. Framework (프레임워크) 프레임워크는 "기반 구조"를 의미하는데, 제어의 역전(IoC)이 적용된 대표적인 기술이다. 프레임워크는 Application 개발을 위한 기본적인 로직을 "뼈대"의 차원에서 제공해주는 것이다. Express.js와 같은 프레임워크는 단지 기본 틀만 제공해주기 때문에 실제 Application의 구동을 위한 코드를 직접 작성해줘야 한다. 프레임워크가 제공해주는..
프로그래밍/IoT
2020. 4. 19.
[IoT] Thing Management 01_IoT Device의 관리 기준
AWS IoT에 대해 언급한 지난 포스팅에서 첨부한 그림과 함께 다시 한번 IoT Device 관리 관련 포스팅을 시작해보고자 한다. 2020/04/09 - [프로그래밍/IoT] - [IoT] AWS IoT로 IoT 서비스 개발 시작하기 Web Service와 IoT Service의 가장 큰 차이점은 "Device"라고 생각한다. Application을 사용하는 End User의 존재는 동일하기 때문에 User를 관리하는 방법에 대해서는 Service의 종류와 무관하게 동일할 것이다. 하지만, IoT(Internet Of Things) Service는 그 이름에서도 알 수 있듯 Things(사물)를 자원(Resource)으로 여기고 이를 어떻게 관리(Management)할 것인지가 중요한 부분이 될 것이..
프로그래밍/Node.js
2020. 4. 19.
[JavaScript] 기본 매개변수 (Default Parameters) 정확하게 사용하기!
Default Parameters Default Parameter를 사용하면 주어진 값이 없거나 undefined가 전달될 경우, 매개변수를 기본값으로 초기화할 수 있다. /* * Sample Code 1 */ function defaultParams(arg) { console.log(arg); }; defaultParams(); // undefined 위의 샘플 코드를 보면 JavaScript에서 함수의 매개변수가 기본적으로 undefined임을 알 수 있다. 또한, 위 코드를 통해 JavaScript에서는 함수의 인자에 필수값 여부를 설정하는 구분값이 없기 때문에 함수를 선언할 때 parameter를 선언했다고 할 지라도 실제 함수를 호출하는 구간에서 해당 parameter에 값을 넣지 않는다고 해도..
프로그래밍/Database
2020. 4. 15.
In-Memory Cache (인-메모리 캐시)
In-Memory Computing 인-메모리 컴퓨팅이란 Application이 운영을 위한 데이터를 하드 디스크가 아닌 메인 메모리에서 수행하는 것을 말한다. 즉, 연산을 위한 영역으로만 여겨졌던 메모리 영역을 대량의 데이터를 저장하여 처리할수 있는 공간으로 사용하는 것이다. 기술적/비용적 측면에서는 과거 Main Memory의 가격이 상대적으로 높았기 때문에 Memory 영역을 사용하는 것이 불가능/비효율적이었지만, Memory의 가격이 낮아진 오늘 날에는 가능해지고, 보편화된 기술이 되었다. In-Memory 컴퓨팅/아키텍쳐는 데이터의 절대적인 양과 종류가 폭발적으로 증가한 빅데이터 시대에 데이터 처리 속도를 향상시킬 수 있는 핵심 기술로 평가받고 있다. 왜 Cache를 사용하는가? Cache(캐시..
프로그래밍/Node.js
2020. 4. 14.
[JavaScript] Strict Mode란?
'use strict'; Strict Mode란 ECMAScript 5에서 소개된 것으로 JavaScript로 작성된 코드가 제한된 버전을 선택하여 작성하게끔 하는 방법이다. Strict Mode에서는 기존에 조용하게 무시되던 에러들(Silent Errors)이 Error로 Throw될 수 있도록 처리가 된다. JavaScript의 장점이자 단점인 엄격한 방식의 코드 작성의 결핍을 일부 채워줄 수 있는 방법이 된다. 비슷한 맥락에서 JavaScript Engine의 최적화 작업이 어려워지는 일부 코드 상의 실수들을 바로잡을 수 있도록 지원한다. 간혹 Strict Mode 하에서 작성된 JavaScript 코드가 그렇지 않은 코드보다 빨리 작동하기도 한다. Strict Mode라는 표현과 같이 JavaSc..
프로그래밍/Programming
2020. 4. 12.
[web] Web Server와 WAS_개념과 특징
Web Server HTTP Protocol을 기반으로 하여 Client(웹 브라우저)의 요청을 서비스하는 기능을 담당한다. 대표적인 Web Server에는 Nginx, Apache Server, IIS(Windows 전용 Web Server) 등이 있다. Web Server는 요청의 종류에 따라 정적인 컨텐츠를 제공할 경우, WAS를 거치지 않고 바로 Client에 응답을 전달하고, 동적인 컨텐츠를 요청받은 경우, Client의 Request를 WAS에 보낸 뒤 WAS의 처리 결과를 Client에 응답으로 전달한다. Web Server는 정적 컨텐츠 만을 처리하도록 기능을 분배하여 서버의 부담을 줄일 수 있다. 하지만, Web Server 만을 사용한다면 Client가 원하는 요청에 대한 결과를 모두 ..
프로그래밍/IoT
2020. 4. 9.
[IoT] AWS IoT로 IoT 서비스 개발 시작하기
멀게만 느껴졌던 IoT 서비스를 직접 설계하고 구현하고 있다. 이 한 문장이 엄청 거창하게 보이지만, 이것이 가능한 데에는 여러 Cloud에서 IoT 서비스를 설계할 수 있도록 기본적인 리소스를 제공해주기 때문에 진입장벽은 많이 낮아진 것 같다. Cloud 서비스를 바탕으로 IoT 시작하기 AWS IoT의 Developer Docs를 살펴보면, AWS IoT 서비스를 다음과 같이 설명한다. "인터넷에 연결된 Device가 AWS Cloud에 연결할 수 있고, Cloud의 애플리케이션이 인터넷에 연결된 디바이스와 상호 작용할 수 있게 하는 서비스" 즉, AWS IoT를 사용하면 인터넷에 연결된 제품과 AWS 클라우드 간의 양방향 통신이 가능한 서비스를 설계하고 구현할 수 있다는 것이다. AWS Consol..
프로그래밍/Node.js
2020. 4. 8.
[Node.js] NPM Debug 모듈 사용법
A tiny JavaScript debugging utility modelled after Node.js core's debugging technique. Works in Node.js and web browsers. Debug(NPM 모듈)는 console.log()를 대신할 수 있는 로깅(디버깅) 모듈로 아래와 같은 장점을 갖고 있다. 로그를 구조화하여 구성 및 기록할 수 있다. 특정한 로그만 볼 수 있도록 지정할 수 있다. 모듈의 크기가 작아(81.5 kB) 활용하는 데에 부담이 없다. debug 모듈 사용법 const debug = require('debug'); const server = new debug('app:server'); const request = new debug('app:requ..
프로그래밍/Database
2020. 4. 7.
[DB] 정규화(Normalization)와 역정규화(DeNormalization)
정규화 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화(Normalization)라고 한다. (출처 Wikipedia) Data Model 과정에서 Entity 사이의 관계(Level, Depth 등)를 분석하여 다수의 Relation으로 분리하는 과정을 말한다. 정규화는 이렇게 함으로써 데이터의 일관성(Consistency)과 모델의 응집도(Cohesion)를 높이는 것을 지향한다. 정규화는 일관성(Consistency)을 향상시킨다. 정규화는 하나의 논리적 Database에서 여러 테이블에 동일한 데이터(column)가 관리되지 않도록 설계하는 과정이다. 만약, 여러 테이블에서 필요한 데이터라면 해당 Entity의 Level은 최상위 Level에 속하게 될 것이고..