자바스크립트 객체 문법으로 구조화된 데이터 교환 형식
키, value 형식 이다.
JSON파일이 있고, JSON 파일을 JS에서 Object로 변환하려면 JSON.parse()를 사용한다.
JSON의 타입
undefined, 메서드 포함하지 않음
JSON 직렬화, 역직렬화
JS에서 생긴 Object를 JSON로 직렬화하여 JSON파일을 만들 수 있다.
stringify => 직렬화
parse => 역직렬화
JSON활용
API 반환형태, 데이터 교환 형식 등에 사용
마크업 형태로 데이터 구조를 나타내는 것
HTML은 데이터를 표시, XML은 데이터를 저장 및 전송
HTML에는 미리 정의된 태그가 있지만 XML은 사용자 정의 태그
XML은 대소문자 구분, HTML 구분하지 않음 (XML에서 book대신 Book으로 작성하면 오류)
JSON과 비교했을 때 닫힌 태그가 계속해서 들어가기 때문에 JSON과 비교하면 무겁다 JSON.parse하면 자바스크립트 객체로 변환하지만 XML은 좀 더 복잡한 과정을 거친다. => XML 모듈을 불러와야 함
둘 이상의 컴퓨터 프로그램이 서로 통신하는 방법이자, 컴퓨터 사이에 있는 중계 계층을 의미
서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면
사용자는 DB나 서버를 몰라도 유저 인터페이스를 통해 상호작용 가능합니다.
DB 설계나 구조나 드러내고 싶지 않는 데이터 베이스의 정보를 드러내지 않고 드러내고 싶은 부분만 드러낼 수 있다.
가상머신을 기반으로 배포하는 것을 말합니다. 가상머신이란 컴퓨터의 하드웨어를 소프트웨어적으로 구현한 것을 말합니다. 계정을 나누는 것이 아니라 한대의 컴퓨터를 가지고 여러개의 OS를 구동하는 것
중간에 있는 하이퍼바이저는 하나의 시스템 상에서 가상 컴퓨터를 여러개 구동할 수 있도록 해주는 중간 계층
이러한 기술로 클라우드는 이러한 가상화라는 기술 때문에 한대의 하드웨어로 여러명의사용자들에게 독릭접으로 클라우드 서비스를 할 수 있습니다.
클라우드 서비스는 내가 아닌 다른 회사의 공급자가 호스팅하고 인터넷을 통해 사용자에게 제공되는 인프라, 플랫폼 또는 소프트웨어, 자체 인프라, 하드웨어 설치 없이도 애플리케이션과 리소스에 쉽고 싸게 이용 가능하다. ex) aws, 네이버 클라우드
네트워크 선까는 것부터 시작해, 서버, 데이터베이스 설치 등 직접 설치하는 것
인프라형 클라우드 서비스입니다. 클라우드가 단지 인프라를 제공합니다. node.js, MongoDB 등을 개발자가 직접 설치해야 합니다.
=> 빈방을 주고, 사용자가 일일이 설치를 해야함
플랫폼형 클라우드 서비스입니다. node.js, mongoDB등이 설치가 되어있고, 그저 클릭을 통해 서비스를 이용할 수 있습니다. 모니터링, CI/CD가 제공됩니다.
ex) heroku
=> AWS와 다르게 풀옵션 오피스텔 생각하면 된다.
서비스형 클라우드 서비스입니다. 완전한 서비스를 클라우드 서비스로부터 제공받아 사용합니다.
ex) 구글 DOCS
IaaS에서 서버를 확장할 때 확장이 쉬움
Paas는 확장할 때 종속되어 있어 확장이 어려움
Paas는 CI/CD, 모니터링 구현이 되어있지만
Iaas는 직접 구현해야 함
애플리케이션이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행되도록 코드와 모든 종속성을 패키징하는 소프트웨어 표준 단위
컨테이너는 OS를 공유하기 때문에 빠르고 경량화되어 있으며 격리성도 훌륭하다
환경 설정때문에 한 서버에서 잘 되던 것이, 다른 서버에서 안 될 수가 있다.
그래서 모든 환경을 패키징 한 후 옮기는 것을 말한다.
가상머신 배포방식은 OS가 나뉘어 져 있지만 도커는 OS를 공유한다. App 마다 컨테이너화 되어 있어 서로 영향을 끼치지 않는다. 하지만 OS가 문제가 생길 경우 모든 App에 문제가 생긴다.
도커는 컨테이너 배포에 필요한 모든 기능을 제공하는 플랫폼이다.
도커는 Iaas, Paas의 장점을 가지고 있다.
개발자가 코드를 짰다면 바로 지속적으로 코드를 합치고 배포해야 한다.
코드를 수정 후 배포했는데, 다른 사용자에서 문제가 생길 경우
파이프라인이 주는 장점은 코드배포까지 좀 더 체계적이고 테스트가 강제된다.
파이프라인 자체 내에 테스트가 있기 때문이다.
테스트)
함수 등 작은 단위를 테스트 하는 단위테스트
여러가지 함수들로 통합된 모듈을 테스트하는 통합 테스트
마우스 클릭하면 뭐가 나타날 것이다. 스크롤하면 어떻게 될 것이다 등 테스트 엔드투엔드테스트
ex) mocha
머지
git이나 svn을 이용해 머징, merge할 때 충돌을 조심해야 함
작은 프로젝트 경우, 충돌을 최소화하기 위해 어떤 폴더는 해당 개발자만 맡는다라고 할 수 있다.
충돌이라는 것은 일어나기 때문에 조금 더 작은 단위로 충돌이 일어나게 해야 한다.
그래서 이슈단위로 머징을 한다.
문제가 생겼을 때 문제를 쪼개 몇개의 이슈로 나누고 해당 이슈단위로 커밋을 한다.
배포)
사용자를 위한 배포, 관리자를 위한 배포 등
웹팩 => vue 확장자는 실제 브라우저에서 사용하지 못하기 때문에 바꿔주는 역할
code를 수정 후 => 웹팩으로 build함 => 머징함 => 배포
클래스란 객체를 만들어 내기 위한 틀, 객체의 속성과 메서드의 집합을 담아놓은 것
객체란 클래스로부터 만들어지는 실체, 클래스로 선언된 변수를 객체
인스턴스 객체가 메모리에 할당이 된 상태, 런타임에 구동되는 객체를 의미
static 키워드는 클래스의 인스턴스가 아닌 클래스에 속하며 클래스의 변수, 메서드 등을 공유하는데 사용된다. 이를 통해 클래스로 만들어지는 객체사이에서 중복되는 메서드, 속성을 효율적으로 정의할 때 사용
장점 : 중복 x
단점 : 선언을 하자마자 메모리에 올라감, 클래스를 사용하지 않아도 메모리에 올라감
메모리관리는 힙에서 할당이되는것이 아니라 메서드 area에 저장되기 때문에 GC에 의해 없어지지 않음
오버로딩은 이름이 같아도 매개변수 개수, 타입, 순서를 다르게 해서 같은 이름으로도 여러 개의 함수를 정의
오버라이딩은 상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의 하는 것, 상속관계에서 사용되고, static, final로 선언한 메서드는 오버라이딩 불가능
프로그래밍에서 추상화는 복잡한 데이터, 구조, 시스템등으로부터 핵심만을 가려내 덜 자세하게 만드는 것 , 또는 세부사항, 절차 등을 감추고 인터페이스 등을 만드는 것
데이터 추상화
어떠한 데이터들의 공통점을 모으고 차이점은 버립니다.
예를 들어 고양이, 강아지, 원숭이 등의 객체들의 공통적인 특징을 묶어 동물이라는 카테고리로 카테고리화 시킨다.
즉 동물의 공통적인 특징은 잔다. 소리를 낸다 라는 특징이 있다.
이러한 특징을 추상화 클래스로 나타내고 Pig, Dog등 클래스에 추상클래스를 상속하려 구현하게 한다.
컴파일러는 소스 코드의 전체를 읽어 한 번에 기계어로 변환한다. 변환 과정을 거친 후, 생성된 기계어 코드를 실행한다.
고수준의 소스코드를 전처리, 컴파일러, 어셈블러, 링커의 과정을 거쳐 저수준언어로 만들고 실행할 수 있는 프로그램을 만드는 과정
인터프리터는 소스코드를 한줄 씩 읽어가며 바로 기계어로 변환하고 실행합니다.
속도에서 컴파일 단계가 없으므로 초기 시작은 빠르지만, 전체 코드 실행 시간은 컴파일러를 사용할 때보다 느릴 수 있다. 코드를 실행할 때마다 변환 과정을 거치기 때문입니다.
공통점 => 고수준 언어를 기계어로 변환