본문 바로가기

코딩 공부/CS13

함수형 프로그래밍(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.
인코딩, 해싱, 암호에 대하여 🏷️ Encoding(인코딩) Data Encoding은 Scheme를 이용하여 데이터를 새로운 포맷으로 변경하는 것(Base64, ASCII Code 등)입니다. 현재의 포맷으로는 데이터 전송이 불가능할 경우 사용을 하게 되고 원래의 데이터로 복원(Decoding) 하는 것이 쉽기 때문에 암호화 목적으로 사용하지 않습니다. 주로 서로 다른 시스템 간 동일한 포맷으로 데이터를 주고받기 위해 사용합니다. ✔️ Base64 🏷️ Hashing(해싱) Hashing은 입력값을 고정된 길이의 출력값으로 변경하는 것입니다. 해싱된 데이터는 원래의 데이터로 복원 불가(단방향 암호화)하고 보통 데이터 무결성 체크를 위해 사용합니다. 원본과 사본을 동일한 해시 알고리즘(ex. SHA256)으로 해싱했을 때 값이 같으면.. 2023. 12. 25.
[HTTP] HTTP 헤더 - 콘텐츠 협상 (Content Negotiation) 콘텐츠 협상 (Content Negotiation) 콘텐츠 협상(Content-Negotiation)이란 클라이언트 측에서 선호하는 표현을 요청하는 것을 말합니다. 헤더에 클라이언트가 선호하는 표현(옵션)을 명시하여 서버 측에 전송했을 때, 서버 측에서 해당 헤더의 내용을 보고 가능한 옵션이라면 해당 표현으로 응답 메세지를 전송합니다. 만일 클라이언트가 한국어(ko)를 선호한다면 헤더에 해당 내용을 명시하여 한국어 제공을 요청할 수 있습니다. 그리고 q(Quality value)를 통해 우선 순위를 정할 수 있기 때문에, 1순위 옵션을 제공받을 수 없다면 그다음 우선순위에 해당하는 옵션을 요청할 수도 있습니다. 🏷️ 콘텐츠 협상(Content-Negotiation) 종류 1. Accept - 클라이언트가.. 2023. 11. 10.
CGI(Common Gateway Interface) CGI(Common Gateway Interface) 웹 서버와 애플리케이션 사이에 데이터를 주고받는 규약입니다. CGI 규칙에 따라서 만들어진 프로그램을 CGI 프로그램이라고 하며 CGI프로그램 종류로는 컴파일 방식(C, C++, Java 등)과 인터프리터 방식(PHP, Python 등)이 있습니다. CGI의 장점과 단점 - CGI 장점 언어, 플랫폼 독립적이다(스펙만 준수하면 된다). 매우 단순하고 다른 server-side 프로그래밍 언어에 비해 advanced task를 훨씬 쉽게 수행할 수 있다. 재사용할 수 있는 CGI 코드 라이브러리가 풍부하다. CGI가 웹서버에서 실행될 때 안전하다. CGI 코드를 수행하는데 특정 라이브러리가 필요하지 않기 때문에 매우 가볍다. - CGI 단점 느리다(요청.. 2023. 5. 18.
[Network] TCP와 UDP OSI 7 계층 중 Layer 4: 전송계층에서 사용되는 프로토콜에 대한 내용입니다. 전송계층은 프로토콜 내에서 송신자와 수신자를 연결하는 통신 서비스를 제공하는 계층인데, IP에 의해 전달되는 패킷의 오류를 검사하고 재전송 요구 등의 제어를 담당합니다. 이러한 전송계층에서 사용되는 프로토콜이 바로 TCP와 UDP입니다. TCP(Transmission Control Protocol) TCP는 신뢰성 있는 데이터 전송을 지원하는 연결 지향형 프로토콜입니다. 일반적으로 TCP와 IP가 함께 사용되는데, IP가 데이터의 전송을 처리한다면 TCP는 패킷 추적 및 관리를 하게 됩니다. 연결 지향형인 TCP는 3-way handshaking이라는 과정을 통해 연결 후 통신을 시작하는데, 흐름 제어와 혼잡 제어를 지.. 2023. 5. 18.