본문 바로가기

cs8

함수형 프로그래밍(Functional Programming) 프로그래밍 패러다임(Programming Paradigm) 함수형 프로그래밍에 들어가기전 프로그래밍 패러다임에 대해서 정리하고 시작하려고 합니다. 프로그래밍 패러다임(Programming Paradigm)은 프로그래머에게 프로그래밍의 관점을 갖게 하고 코드를 어떻게 작성할 지 결정하는 역할을 합니다. 새로운 프로그래밍 패러다임을 통해서는 새로운 방식으로 생각하는 법을 배우게 되고, 이를 바탕으로 코드를 작성하게 됩니다. 즉, 간단하게 프로그래밍 스타일을 의미하며 전체적인 프로그래밍 방식을 말합니다. 최근의 프로그래밍 패러다임은 크게 아래와 같이 구분할 수 있습니다. - 명령형 프로그래밍: 무엇(What)을 할 것인지 나타내기보다 어떻게(How) 할 건지를 설명하는 방식 ▪️ 절차지향 프로그래밍: 수행되어.. 2024. 1. 14.
[CS] OAuth2.0 OAuth2.0(Open Authorization 2.0) OAuth2.0는 인증을 위한 개방형 표준 프로토콜입니다. 이 프로토콜에서는 Third-Party 프로그램에게 리소스 소유자를 대신해 리소스 서버에서 제공하는 자원에 대한 접근 권한을 위임하는 방식으로 작동됩니다. 구글, 페이스북 등 외부 소셜 계정을 기반으로 간편하게 인증하는 기능이며 기존의 인증방식과 달리 인증을 중개해 주는 방식이라고 생각하면 됩니다. 소셜 서비스에서 인증을 대신해주지만 클라이언트 정보가 서버에 저장되는 것은 기존 인증 방식과 동일합니다. 즉, 서버에서 접근 권한 관리(Authorization)는 여전히 서버가 담당해야 할 부분이 됩니다. 그럼에도 불구하고 OAuth 프로토콜을 사용해서 접근 권한 관리, 인증 절차를 간단하게.. 2023. 12. 27.
[CS] 프로세스와 스레드 프로세스(Process) 실행중에 있는 프로그램(Program)으로 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체) 운영체제로부터 시스템 자원을 할당받는 작업의 단위 즉, 동적인 개념으로는 실행된 프로그램을 의미한다. 특징 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다. 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있다. 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다. 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC, inter-process communication)을 사용해야 한다. 스레드(Thread) 프로세스 내에서 .. 2023. 2. 25.
[CS] 프레임워크와 라이브러리 프레임워크(Framework) 프레임워크는 뼈대나 기반구조를 뜻하고, 제어의 역전 개념이 적용된 대표적인 기술입니다. 애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 연동과 같은 기능들을 위해 어느 정도 뼈대(구조)를 제공하며 이러한 뼈대 위에서 사용자는 코드를 작성하여 애플리케이션을 개발합니다. 앱/서버 등의 구동, 메모리 관리, 이벤트 루프 등의 공통된 부분은 프레임워크가 관리하며, 사용자는 프레임워크가 정해준 방식대로 클래서, 메서드들을 구현하면 됩니다. 프레임워크의 특징 특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성되어 있습니다. 추상적인 개념들이 문제를 해결하기 위해 같이 작업하는 방법을 정의합니다. 컴포넌트들은 재사용이 가능합니다. 높은 수준에서 패턴들을 조작화 할 수 있.. 2023. 2. 13.
[CS] 메모리 구조 (Stack, Heap, Data, Code) 메모리 작업을 처리하기 위한 기억 장치로 물리(메인) 메모리(RAM), 가상 메모리(SSD, HDD의 swap 영역)가 존재한다. 가상 메모리 : 필요한 내용만 물리 메모리에 올려 메모리를 관리하는 기법으로 요구 페이징 기법을 사용한다. (가상 메모리에는 방어적 코드와 같이 불필요할 수 있는 코드가 올라감) 요구 페이징 기법 : 유-무효 비트(valid, invalid)로 페이지가 메모리에 존재하는지 확인 후 없으면 보조 저장 장치에서 가져오는 기법 프로그램 실행 순서 프로그램이 실행하게 되면 OS는 메모리(RAM)에 공간을 할당해줍니다. 이때, 할당해주는 메모리 공간은 4가지(Code, Data, Stack, Heap)가 있습니다. 메모리 구조 1. 코드(Code) 영역 메모리의 코드(code) 영역은.. 2023. 2. 2.
[CS] 객체지향설계 5원칙 : SOLID SOLID 원칙 객체지향 설계5대 원칙이라 부르는데 SRP(단일 책임 원칙), OCP(개방-폐쇄 원칙), LSP(리스코프 치환 원칙), ISP(인터페이스 분리 원칙), DIP(의존 역전 원칙)을 말하고 앞자를 따서 SOILD 원칙이라고 부른다. 1. 단일 책임 원칙 (Single Responsiblity Principle) "어떤 클래스를 변경해야 하는 이유는 오직 하나뿐 이어야한다 - 로버트 C 마틴" 클래스는 그 책임을 완전히 캡슐화해야 함을 말한다. 설명 작성된 클래스는 하나의 기능만 가지며 클래스가 제공하는 모든 서비스는 그 하나의 책임을 수행하는데 집중되어야 한다. 작성된 클래스가 여러 기능을 가질 경우 기능에 대한 분기 처리를 해야 하기에 코드의 복잡도만 높아지므로 유지보수 시 좋지 않다 2... 2023. 2. 1.