REST API란? Representational State Transfer API라는 용어의 약자이다. REST란 "자원을 URI(Uniform Resource Identifier)로 표시하고 해당 자원의 상태(정보)를 HTTP를 이용하여 자원을 주고 받는 것"을 의미한다. 따라서 Restfult API는 REST 특징을 지키면서 API를 제공하는 것을 의미한다. Q) URI 과 URL의 차이점은? URL은 Uniform Resource Locator로 인터넷 상 자원의 위치를 의미합니다. 자원의 위치라는 것은 결국 어떤 파일의 위치를 의미합니다. 반면에 URI는 Uniform Resource Identifier로 인터넷 상의 자원을 식별하기 위한 문자열의 구성으로, URI는 URL을 포함하게 됩니다...
객체 지향 프로그래밍 및 설계에서 5가지 기본원칙(SRP, OCP, LSP, ISP, DIP)의 앞글자를 따서 SOLID 원칙이라고 합니다. '원칙이란 무엇일까?' 원칙을 이렇게 정의합니다 "많은 경우에 적용되는 기본적인 규칙이나 법칙." SOLID 원칙은 객체 지향 프로그래밍 및 설계에서 많은 경우에 적용되는 규칙이나 법칙입니다. '그럼 SOLID를 적용하는 이유는 뭘까?' 시스템에 예상하지 못한 변경사항이 발생하더라도, 유연하게 대처하고 이후에 확장성이 있는 시스템 구조를 설계하기 위해서입니다. 간단하게 말해서 '유지보수성과 확장성'을 위해서이다. SOILD는 객체 지향 프로그래밍에서 변경사항이 있을때 자기 클래스안에 응집도는 높이고, 다른 클래스 사이의 결합도는 낮추는 High Cohesion - ..
이번에는 간단하면서도 중요한 개념인 CallCall by value와 Call by Reference에 대해서 알아보려고한다.전공시간에 교수님이 매우 중요한 개념이라고 말씀하셨는데 면접때도 질문으로 나왔었던.... 우선 Call by value와 Call by Reference는 일단 함수의 호출 방식을 의미한다. Call by value(값에 의한 호출) - 함수에 매개 변수의 내용물을 전달하여 복사해서 사용하는 방식Call by reference(참조에 의한 호출) - 함수에 매개 변수의 참조 주소를 참조해서 호출하는 방식 의미 자체로만 본다면 함수의 호출을 값에 의해서 하는가 아니면 참조에 의해서 하는가라는 차이를 알 수 있다. 참조와 값에 따른 호출에 대한 좋은 그림예시가 있다Call by..
컴포넌트란? 컴포넌트 그 자체로 제 기능을 하며 재사용할 수 있는 컴포넌트로 구성된 대규모 응용 프로그램을 구축할 수 있게 해주는 추상적 개념이다. 기본 HTML Element를 확장하여 재사용 가능한 코드를 캡슐화할 수 있게 해준다. 컴포넌트는 Vue의 컴파일러에 의해 동작이 추가된 사용자 지정 Element이다. 경우에 따라 is 속성으로 확장된 원시 HTML Element로 나타낼 수 있다. 거의 모든 유형의 응용 프로그램 인터페이스를 컴포넌트 트리로 추상화할 수 있다. Vue에서 컴포넌트는 미리 정의된 옵션을 가진 Vue인스턴스이다. Vue 컴포넌트는 Vue 인스턴스이기하므로, 모든 옵션 객체를 사용할 수 있다. (루트에만 사용하는 옵션은 제외) Vue 인스턴스와 같은 라이프사이클 훅을 사용할 수..
프로세스와 스레드에 대한 정의 프로세스: 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램 스레드: 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위 이 두 정의에서 나오는 단어인 프로그램에 대한 정의를 내려보면 다음과 같다 프로그램이란, 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태를 말한다. 프로그램은 살아있지 않은 상태. 즉 보조 기억장치(하드디스크, SSD)에 존재하며 실행을 기다리는 명령어(코드) 예로 .exe파일과 같은 하나의 실행할 수 있는 데이터의 묶음이다. 한가지 상황을 상황을 생각해보면 .exe로 되어있는 실행파일 프로그램을 실행을 한다. 그럼 실행한 파일이 컴퓨터의 메모리 영역(RAM)에 올라가게 되고 해당 프로그램은 이제 실행중인 상..
샤딩(Sharding)은 데이터를 여러 서버에 분산해서 저장하고 처리할 수 있도록 하는 기술이다. 복제 VS 샤딩 복제: 여러 서버가 서로의 데이터를 동기화하는 것 샤딩: 여러 서버를 분산하는 기술 MongoDB에서 복제와 샤딩의 목적을 혼동하는 경우가 많은데, MongoDB의 복제는 고가용성(HA)을 위한 솔루션이며 샤딩은 분산처리를 위한 솔루션이다. 여기서 고가용성이란 서버와 네트워크, 프로그램 등의 정보 시스템이 상당히 오랜 기간 동안 지속적으로 정상 운영이 가능한 성질을 말하고, 분산처리는 데이터를 여러 서버에 분산해서 저장하고 처리할 수 있도록 하는 기술이다. 몽고DB에서는 고가용성을 위해서 중복된 데이터 셋을 준비하는 것이다. 그래서 MongoDB에서 고가용성과 대용량 분산처리를 하려면 복제와..
대표적인 NoSQL 데이터베이스이다. NoSQL : NoSQL은 (non SQL 또는 non relational) 기존 RDBMs 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미하며, 관계형 데이터 베이스의 한계를 극복하기 위한 데이터 저장소의 새로운 형태로, 수평적 확장성을 갖고 있다. RDBMS가 클라이언트/서버 환경에 맞는 데이터 저장기술이라면, NoSQL은 클라우드 환경에 맞는 저장 기술이다. NoSQL의 특징NoSQL은 RDBMS와는 달리 데이터 간의 관계를 정의하지 않는다.가장 큰 특징 중 하나는 관계형 데이터 베이스인 RDBMS가 데이터의 관계를 Foreign Key 등으로 정의하고 이를 이용해 Join 등의 관계형 연산을 한다고 하면, NoSQL은 데이터 간의 관계를..
Vue로 만든 다이어리입니다. 요구사항은 다음과 같습니다. 일단 Vue webpack을 생성합니다. CMD 에서 빈 디렉토리로 이동 후 vue init webpack-simple를 통해 webpack을 생성합니다. 이후 폴더의 구조는 아래와 같습니다. 처음에 package.json에는 위와 같이 생성되어 있는데 해당 프로젝트에서는 vuex와 vue-router, element-ui가 필요하므로 install하여 설치 해 준다. npm을 기준으로 npm install vuex --save npm install vue-router --save npm install element-ui -S 다음과 같이 설치해준다. 그럼 이후에 "dependencies" 부분에 보면 다음과 같이 vuex,vue-router,e..
이클립스(STS)에서 스프링 프로젝트를 생성하는 방식은1) 처음부터 스프링 프로젝트를 지정하고 생성하는 방식2) Maven이나 Gradle 프로젝트를 생성한 후 프레임워크를 추가하는 방식3) 직접 프레임워크 라이브러리를 추가하는 방식이 있다.* 프로젝트 생성하기STS나 Eclipse의 스프링 관련 플러그인을 설치하면 별도의 설정없이 Maven을 사용하는 스프링 프로젝트를 생성할 수 있다.화면 오른쪽 상단의 'Perspective'를 'Spring'으로 지정한 후 'File'메뉴를 통해 프로젝트를 생성한다. 'Spring Legacy Project' 메뉴를 이용하여 스프링 기반 프로젝트를 Maven 기반으로 생성할 수 있다.프로젝트는 'Spring MVC Project'를 생성한다.Next를 하면 처음 시..