https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Development_common_sense
현실 세계의 사물들을 객체라고 보고 그 객체로부터 개발하고자 하는 애플리케이션에 필요한 특징들을 뽑아와 프로그래밍 하는 것. 이는 추상화라고 함.
*캡슐화: 데이터를 캡슐화함으로써, 객체의 데이터를 외부에서 직접 접근하지 못하게 하는 것
*추상화: 객체들이 가진 공통의 특성들을 파악하고 불필요한 특성들을 제거하는 과정
Ex)개, 고양이 객체를 동물이라는 것으로 추상화
*상속: 부모 객체가 자식 객체에게 필드와 메소드를 물려주어 사용할 수 있도록 해줌
*다형성: 객체가 다양한 형태로 표현될 수 있다.
REST를 기반으로 서비스 API를 구현한 것.
rest=representational state transfer
API Application Programming Interface
응용프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다.(프로그램들이 서로 상호작용하는 것을 도와주는 매개체)
Uniform interface
URL로 지정한 자원에 대한 조작을 통일되고 한정적인 인터페이스로 수행.
Client-Server 구조
REST 서버: API를 제공하고 비즈니스 로직 처리 및 저장을 책임진다.
클라이언트: 사용자 인증이나 세션, 로그인 정보 등을 직접 관리하고 책임진다.
-> 서로 간 의존성이 줄어든다.
Stateless(무상태)
작업을 위한 상태정보를 따로 저장하고 관리하지 않는다.
세션, 쿠키 정보를 별도로 저장하고 관리하지 않기 때문에 API서버는 들어오는 요청만을 단순히 처리한다.
-> 서비스의 자유도가 높아지고 서버에서 불필요한 정보를 관리하지 않아 구현이 단순해짐.
Cacheable(캐시 처리 가능)
웹 표준 HTTP프로토콜을 그대로 사용하므로 웹에서 사용하는 기존의 인프라 그대로 활용 가능.
HTTP가 가진 캐싱 기능 적용 가능, HTTP프로토콜 표준에서 사용하는 Last-Modified 태그나 E-Tag를 이용해 구현.
캐시: 이미 가져온 데이터나 계산된 결과값의 복사본을 저장함으로써 처리 속도를 향상시키며, 이를 통해 향후 요청을 더 빠르게 처리
계층형 구조
다중 계층으로 구성될 수 있고, Proxy, 게이트웨이 같은 네트워크 기반의 중간매체 사용가능.
self-descriptiveness(자체 표현 구조)
REST API 메시지만 보고도 이를 쉽게 이해 할 수 있는 자체 표현 구조로 되어있다.
참고
https://meetup.toast.com/posts/92, https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
매우 짧은 개발 사이클의 반복에 의존하는 소프트웨어 개발 프로세스.
개발자는 요구되는 새로운 기능에 대한 자동화된 테스트케이스를 작성하고 해당 테스트를 통과하는 간단한 코드를 작성한다. 그리고 해당 코드를 상황에 맞게 리팩토링한다.
-> 테스트 주도 개발 방식
자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나.
명령형 프로그래밍(절차지향, 객체지향) - 어떻게 할 것인지를 설명
선언형 프로그래밍(함수형) - 무엇을 할 것인지를 설명
일급 객체
1. 변수나 데이터 구조안에 담을 수 있다.
2. 함수의 파라미터로 전달할 수 있다.
3. 함수의 반환값으로 사용할 수 있다.
4. 할당에 사용된 이름과 관계없이 고유한 구별이 가능하다.
애플리케이션을 모델,뷰,컨트롤러 세가지 역할로 구분한 개발 방법론.
애플리케이션이 '무엇'을 할 지 정의.
애플리케이션과 관련된 데이터를 캡슐화, 해당 데이터 조작하고 처리하는 로직과 계산 정의.
화면에 무엇인가를 보여주기 위한 역할.
컨트롤러의 하인으로 종속되어 컨트롤러로부터 받은 모델의 결과값을 가지고 사용자에게 출력할 화면을 만드는 일.
모델, 뷰의 중개자로서 클라이언트의 요청을 받았을 때 그 요청에 대해 실제 업무를 수행하는 모델을 호출하고, 클라이언트가 보낸 데이터가 있다면 모델에 전달하기 쉽게 데이터를 가공한다.
모델이 일을 마치면 그 결과를 뷰에게 전달한다.
참고
https://asfirstalways.tistory.com/180
함수를 선언할 때 사용된 변수
함수가 호출되었을 때 함수의 파라미터로 전달된 실제 값
값에 의한 호출로, 함수를 호출할 때 전달되는 변수 값을 복사해서 함수 인자로 전달하므로 원래의 값은 변경되지 않는다.
참조에 의한 호출로, 함수를 호출할 때 주소값을 함수의 인자로 전달하므로 주소를 참조하여 데이터를 변경할 수 있다.
특정 프로그램을 개발하기 위한 여러 요소들과 메뉴얼인 룰을 제공하는 프로그램
소프트웨어를 개발하기 쉽게 어떤 기능을 제공하는 도구들
공통점
프로그램을 쉽게 만들 수 있게 한다.
차이점
프레임워크는 전체적인 흐름을 스스로가 쥐고 있으며 사용자는 그 안에서 필요한 코드를 짜 넣는 반면에 라이브러리는 사용자가 전체적인 흐름을 만들며 필요한 라이브러리를 가져다 쓰는 것이라고 할 수 있다.
참고
https://www.youtube.com/watch?v=t9ccIykXTCM
https://jokergt.tistory.com/89
https://engkimbs.tistory.com/673
로컬에서 관리되는 버전 관리 시스템
클라우드 방식으로 관리되는 버전 관리 시스템
소스코드의 변화들을 기록하고 어떤 문제가 발생했을 때 문제를 파악할 수 있게 도와주고, 필요 시 과거로 쉽게 돌아갈 수 있도록 해준다. 또한, 팀 단위로 개발 시 효율적인 작업이 가능하다.