개발 상식 9

[면접을 위한 CS 전공지식 노트] 1-2 프로그래밍 패러다임

프로그래밍 패러다임이란 ? 프로그래밍에 대한 관점을 나타내는 개발 방법론. 크게 '선언형'과 '명령형'으로 나뉜다. 1. 선언형 : 함수형 프로그래밍 함수형 프로그래밍은 선언형 프로그래밍의 일종으로, 순수 함수로 이루어져있고 고차 함수를 통해 재사용성을 높인 프로그래밍 패러다임 이다. - 순수 함수 : 외부의 상태를 변경하거나 영향을 받지 않으면서 동일한 인자에 대해 항상 똑같은 값을 리턴하는 함수 - 고차 함수 : 함수를 매개변수로 사용하거나, 함수를 반환하는 함수(일급 객체 ⭐️) - 일급 객체의 특징 : 1. 변수에 할당(assignment)할 수 있다 2. 다른 함수를 인자(argument)로 전달 받는다 3. 함수를 결과로 반환할 수 있다. 2. 객체지향 프로그래밍 객체지향 프로그래밍은 데이터를..

개발 상식 2023.11.26

[면접을 위한 CS 전공지식 노트] 1-1 디자인 패턴

디자인 패턴이란 ? 특정 상황에서 공통적으로 발생하는 문제에 대한 재사용 가능한 해결책 1. 싱글톤 패턴(Singleton Pattern) 싱글톤 패턴이란 하나의 클래스로 단 하나의 인스턴스만 만드는 디자인 패턴을 의미한다. 이를 통해 인스턴스를 생성하는 비용을 줄이고, 하나의 인스턴스를 다른 모듈들이 공유할 수 있다는 장점이 있다. 하지만, 모듈간의 결합을 강하게 만들어 및 의존성이 높아진다는 단점이 있다. 👉🏻 모듈간의 결합으로 인한 의존성 문제를 해결하기 위해 '의존성을 주입'하는 방법이 있다. 2. 팩토리 패턴(Factory Pattern) 팩토리 패턴이란 상속 관계에 있는 두 클래스에서, 중요한 뼈대를 상위 클래스가 결정하고 세부적인 내용을 하위 클래스가 결정하는 디자인 패턴을 의미한다. 이로 ..

개발 상식 2023.11.26

[Clean Code] 클린코드 이론 정리

1. 클린 코드(Clean Code)란 ? "Clean code does one thing well.” 클린 코드는 하나의 일을 잘 하는 코드이다. - Bjarne Stroustrup, inventor of ‘C++ “Clean code is simple and direct." 클린 코드는 간결하며, 직접적이다. - Grady Booch, author of ‘Object-Oriented Analysis and Design with Applications’ 저명한 개발자들이 정의한 클린코드란 단순하여 읽기 쉽고, 각 역할마다 주어진 하나의 일만 담당하며, 복잡하거나 모호하지 않은 코드입니다. 즉, 원하는 로직을 빠르게 찾을 수 있는 코드, 모든 팀원이 이해하기 쉽도록 작성된 '가독성'이 좋은 코드 입니다...

개발 상식 2023.11.20

[WEB] CORS와 SOP의 개념 및 CORS 에러 해결방법

들어가기 전에 알아두어야 할 용어 1) 출처(Origin) 우리가 어떤 사이트를 접속할때 인터넷 주소창에 우리는 URL이라는 문자열을 통해 접근하게 된다. 이처럼 URL은 https://domain.com:3000/user?query=name&page=1 과 같이 하나의 문자열 같지만, 사실은 위와 같이 여러개의 구성 요소로 이루어져 있다. Protocol(Scheme) : http, https Host : 사이트 도메인 Port : 포트 번호 Path : 사이트 내부 경로 Query string : 요청의 key와 value값 Fragment : 해시 태그 여기서 출처(Origin)란 ? Protocol + Host + Port 👉🏻 즉, 출처(Origin) 라는 것은 Protocol 과 Host 그리..

개발 상식 2023.08.18

빌드(Build) / 배포(Deploy) / 컴파일(Compile) / 링크(Link) 개념 및 차이점

서버에 기능을 추가하기 위해서는 개발자가 로컬 PC에서 개발을 하고 테스트까지 진행한 뒤에 문제가 없을 경우 사용자가 사용할 수 있도록 수정된 코드를 실서버에 반영해야 합니다. 서버에 반영을 하는 것을 "배포(Deploy)"라고 하고 배포하기 위한 과정을 "빌드(Build)"라고 합니다. 컴파일(Compile) 이란 ? 인간이 이해할 수 있는 고급 언어로 작성된 소스 코드를 컴퓨터가 이해할 수 있는 기계어로 변환시키는 과정을 말하며, java의 경우 컴파일의 결과로 자바가상머신(JVM)에서 실행가능한 ".class" 파일이 생깁니다. 컴파일과 빌드와 같다고 생각하실 수 있지만, 컴파일은 빌드를 진행하는 과정의 일종의 하나인 Task 입니다. 즉, 소스코드를 컴퓨터가 이해할 수 있는 기계어로 변환하는 작업..

개발 상식 2023.08.12

클라이언트 사이드 렌더링(CSR) / 서버 사이드 렌더링(SSR) / 정적 사이트 생성(SSG) 비교 및 장단점 정리

Client-Side Rendering(CSR) 클라이언트 사이드 렌더링이란 초기 웹사이트 접속시 서버로부터 모든 파일을 불러와 클라이언트에서 페이지를 렌더링한 후 사용자에게 보여주는 방식이다. CSR는 React, Vue, Angular 와 같은 single-page aplication (SPA) 에서 주로 사용되는 렌더링 방식인데, 즉 하나의 index.html 파일에 자바스크립트로 각 페이지를 렌더링한다. CSR 장점 초기에 웹사이트를 렌더링 후에 페이지간의 이동이 빠르다. 새로고침이나 화면 깜빡임 등과 같은 현상이 발생하지 않기 때문에 UX에 엄청난 이점을 준다. 서버가 클라이언트 뷰(View) 단에서 처리할 일을 신경쓰지 않아도 된다. CSR 단점 유저는 번들링이 완료된 JS 파일을 모두 다운로..

개발 상식 2023.08.12

클라이언트 사이드 렌더링(CSR)과 서버 사이드 렌더링(SCR)의 차이

먼저 클라이언트-서버 간 통신에서 HTML을 반환하는 웹 서버의 대략적인 흐름은 다음과 같다. 정적 페이지(HTML/CSS/JS로 이루어진 웹 문서) 반환 👉🏻 DB 연동 및 API 요청 필요성 대두 👉🏻 동적 페이지(정적 페이지 + 서버에서의 비지니스 로직이 가미된 문서) 반환 정적 웹페이지(static web page) : 정적페이지란 항상 같은 내용을 보여주는 웹페이지(클라이언트가 URL을 통해 서버에 웹 페이지를 요청하였을 때, 서버 안에 이미 만들어져 있는 HTML 문서를 사용자에게 보여주는 경우) 동적 웹페이지(dynamic web page) : 동적페이지란 요청에 대해서 각각 다른 내용을 보여주는 웹페이지(클라이언트가 URL을 통해 서버에 웹 페이지를 요청했을 때, 서버는 사용자에 맞는 HT..

개발 상식 2023.04.20

프레임워크(Framework)와 라이브러리(Library)의 차이

1) 프레임워크란 ? 사용자가 기능 구현에 집중하여 개발할 수 있도록 '일정한 형태'와 '필요한 기능'을 갖추고 있는 골격 및 뼈대를 의미합니다. 애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 연동과 같은 기능들을 위해 뼈대(구조)를 제공하며, 사용자는 이러한 뼈대 뒤에서 코드를 작성하여 애플리케이션을 개발합니다. 앱/서버 등의 구동, 메모리 관리, 이벤트 루프 등의 공통적인 부분은 프레임워크가 관리하며, 사용자는 프레임워크가 정해준 방식대로 구현하면 됩니다. ex) Spring, Django, Flask, Android, Cocoa Touch, Angular, Vue.js 등 2) 라이브러리란 ? 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임으로 쉽게 말해 특정 기능을 ..

개발 상식 2023.04.19