컴파일러와 인터프리터는 프로그래밍 언어로 작성된 코드를 컴퓨터가 이해할 수 있는 기계어(0, 1)로 변환하는 과정에 관여하는 프로그램이다. 컴파일러- 소스 코드 전체를 읽어 한 번에 기계어로 변환한다.- 변환 과정을 거친 후, 생성된 기계어 코드를 실행한다.- 컴파일 과정 자체에 소요되는 시간이 있지만, 변환된 코드는 직접 실행되므로 실행 시간은 빠르다.- C, Go, Rust 등이 컴파일러 언어이다. 인터프리터- 코드를 한 줄씩 읽어가며 바로바로 기계어로 변환하고 실행한다.- 컴파일 단계가 없으므로 초기에는 빠르지만, 전체 코드 실행 시간은 오히려 컴파일 언어보다 느릴 수 있다. 코드를 실행할 때마다 기계어로 변환하는 과정이 필요하기 때문이다.- Python이 인터프리터 언어이다. JIT 컴파일러- 컴..
전체 글
1. 추상화란?- 복잡한 데이터, 구조, 시스템 등으로부터 핵심만을 가려내 덜 자세하게 만드는 것.- 세부사항, 절차 등을 감추고 인터페이스 등을 만드는 것.- 이런 과정을 이용하여 복잡도를 낮추는 방법을 뜻한다. 2. 추상화의 종류데이터 추상화어떤 데이터들의 공통점은 모으고 차이점은 버린다.프로세스 추상화어떠한 내부 프로세스를 숨기는 것.예를 들어 DB가 어떻게 데이터를 저장하는지 모르지만 insert 쿼리를 날려서 데이터를 저장할 수 있다. 출처CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조 - 큰돌https://www.inflearn.com/course/%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%A9%B4%EC%A0%91-cs-%ED%8A%B9%EA%B0%95..
1. 오버로딩- 이름이 같아도 매개변수 개수, 타입, 순서를 다르게 해서 같은 이름으로도 여러 개의 함수를 정의할 수 있는 것.- 프로그램의 유연성을 높이고 코드를 깔끔하게 하는 효과가 있다.- 같은 클래스 내에서 사용한다. 2. 오버라이딩- 상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의 하는 것.- 상속 관계 클래스에서 사용되며 static, final로 선언된 메서드는 오버라이딩이 불가능하다. 출처CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조 - 큰돌https://www.inflearn.com/course/%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%A9%B4%EC%A0%91-cs-%ED%8A%B9%EA%B0%95/dashboard
1. CI/CD- CI: Continuous Integration- CD: Continuous Delivery/Deployment- 여러 수많은 개발자가 코드를 합치고 배포를 수동으로 하다보면 혼선이 발생하고 프로그램이 제대로 돌아가지 않는 상황이 많이 발생하게 됨.- 이런 상태를 방지하기 위해서 CI/CD라는 개념이 등장하게 됨. 2. 파이프라인- 코드구축부터 시작해서 배포까지의 일련의 과정을 CI/CD 파이프라인이라고 함.- CI: 코드를 빌드하고 테스트하고 합친다.- Continuous Delivery: 해당 레포에 릴리즈한다.- Continuous Deployment: 릴리즈된 코드를 실제 서비스에 배포한다.- 이 파이프라인을 따르면 파이프라인 자체 내에 테스트가 있기 때문에 테스트가 없으면 코드..
1. 컨테이너- 애플리케이션이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행되도록 코드와 모든 종속성을 패키징하는 소프트웨어의 표준 단위.- 컨테이너는 OS를 공유하기 때문에 빠르고, 경량화되어 있고 격리성도 훌륭하다.- 하지만 OS에 문제가 생기면 다른 앱에도 영향을 미칠 수 있는 점은 단점이다. 가상 머신 방식은 OS를 공유하진 않았다. 2. 컨테이너의 장점- IaaS의 장점과 PaaS의 장점을 합쳐놓은 느낌이다.- 유연성도 좋고 이식성도 좋다. 3. 도커- 도커파일: 패키지, 환경변수설정 등을 기록한 파일. 도커 파일을 기반으로 빌드해서 도커 이미지로 변환한다.- 도커이미지: 컨테이너 실행에 필요한 파일과 설정값, 데이터 등을 포함한 상태값. 하나의 이미지로 여러 개의 컨테이너를..
1. Infrastructure-as-a-Service- 클라우드가 인프라만 제공.- 안에 들어가는 서버나 DB를 개발자가 알아서 설치해야 함.- AWS EC2 같은 개념.- 유연성이 높고 이식성도 높다. 2. Platform-as-a-Service- 플램폼형 클라우드 서비스. 클라우드가 플랫폼을 제공함.- node.js, mongoDB 등이 이미 설치가 되어 있고 클릭 한 두번으로 이용이 가능.- 모니터링, CI/CD 등도 제공된다.- heroku 같은 서비스.- 컴포넌트 형식으로 설치해서 사용하다보니 설치할 때는 좋은데 다른 곳으로 마이그레이션 할 때 힘들어진다. 3. Software-as-a-Service- 서비스형 클라우드 서비스.- 완전한 서비스를 제공받아 사용함.- 구글 Docs 같은 것. ..
1. 정의- API(Application Programming Interface)- 둘 이상의 컴퓨터 프로그램이 서로 통신하는 방법이자 컴퓨터 사이에 있는 중계 계층 2. API의 장점- 제공자는 서비스의 중요한 부분을 드러내지 않아도 된다.- DB 설계 구조, 테이블 정보 등 드러내고 싶지 않은 부분은 드러내지 않고 보여주고 싶은 데이터만 전달할 수 있다.- 사용자 입장에서는 해당 서비스가 어떻게 구현되는지 알 필요없이 필요한 정보만 받을 수 있다.- OPEN API를 이용해서 시간과 수고를 단축할 수 있다.- 내부 프로세스가 수정이되었을 때 API는 수정이 안 되게 만들 수 있다. 이를 통해 API 사용자가 API 제공자의 내부 프로세스 변경으로 인한 업데이트를 하는 수고를 덜 수 있다.- 제공자는 ..
1. 정의- Extensible Markup Language- 마크업 형태를 쓰는 데이터 교환 형식 2. HTML과의 차이- HTML은 데이터를 표시 / XML은 데이터를 저장 및 전송- HTML과 달리 XML은 태그를 만들고 정의 가능- XML은 대소문자를 구분하지만 HTML은 구분하지 않음. 3. 단점- JSON 보다는 무겁다. JS object로 변환하는 데 더 많은 귀찮음이 들어간다. 4. 사용처- sitemap.xml - 그럼에도 불구하고 SEO를 고려해서 검색 엔진에 노출시키기 위해 사용한다.- maven으로 프로젝트를 구성할 때 pom.xml로 의존성들을 설정하기도 한다.- 하지만 gradle을 쓰는 나는 yaml이 더 편하다. 출처CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이..