본문 바로가기
320x100

Study31

좋은 객체지향의 다섯 가지 원칙, SOLID 개발자라면 흔히 SOLID 원칙에 대해 들어보았을 것이다. SOLID 원칙은 클린 코드의 저자로 유명한 로버트 마틴이 객체지향의 다섯 가지 원칙의 앞 글자를 따서 제시한 것이다. 이 원칙의 목적은, 결국 유지보수가 쉽고 확장하기에 용이한 코드를 작성하기 위함이다. 이 5가지 원칙을 모두 완벽하게 지키면서 코드를 작성할 수는 없지만 이러한 원칙들을 기준으로 코드를 작성하려는 노력이 필요하다. 각각 원칙의 정의와 위반 사례를 통해 이를 이해한다. SRP(Single Responsiblity Principle) 단일 책임 원칙 하나의 클래스는 하나의 책임만을 가져야 한다. 가장 먼저 나오는 SRP는 개인적으로 객체지향에서 가장 중요한 원칙이라고 생각한다. 만약 하나의 클래스가 여러가지의 책임을 가지고 있다면,.. 2022. 1. 6.
getaddrinfo EAI_AGAIN 에러 갑자기 서버에 접속할수가 없다. 모니터링 툴을 확인해 봤는데 백엔드 서버쪽은 정상적으로 돌아가고 있었다. 그래서 로그를 확인해 보았다. deploy-client-1 | ApolloError: request to https://nullpointerexception.ml/graphql failed, reason: getaddrinfo EAI_AGAIN nullpointerexception.ml deploy-client-1 | at new ApolloError (/app/frontend/node_modules/@apollo/client/errors/errors.cjs.js:34:28) deploy-client-1 | at /app/frontend/node_modules/@apollo/client/core/co.. 2022. 1. 5.
함수형 프로그래밍(Functional Programming) 개요 위키백과에서는 함수형 프로그래밍을 다음과 같이 정의하고 있다. 함수형 프로그래밍은 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나이다. 명령형 프로그래밍에서는 상태를 바꾸는 것을 강조하는 것과는 달리, 함수형 프로그래밍은 함수의 응용을 강조한다. 프로그래밍이 문이 아닌 식이나 선언으로 수행되는 선언형 프로그래밍 패러다임을 따르고 있다. 객체 지향 프로그래밍은 모든 사물을 객체로 간주하고 그 객체간의 협력과 역할의 분배를 통해 인간의 사고와 비슷하게 코드를 작성할 수 있다는 점에서 매력적이었다. 그러나 객체 지향 프로그래밍의 하나의 문제는 객체가 상태를 가진다는 것에 있었다. 객체가 가지고 있는 상태가 어떻게 변하는지에 따라 무궁무진한 결과를 만들.. 2021. 12. 28.
[OS] 뮤텍스와 세마포어 개요 뮤텍스(Mutex)와 세마포어(Semaphore)는 모두 '동시성 프로그래밍에서 공유 자원(임계 영역)을 상호 배제를 통해 안전하게 관리하기 위해 고안된 방법' 이다. 여기서 상호 배제(Mutual Exclusion)이란, 공유 불가능한 자원의 동시 사용을 피하기 위해 사용되는 알고리즘을 뜻한다. 조금 더 쉽게 풀어서 이야기하자면, 수많은 프로세스와 스레드 내에서 함께 사용할 수 없는 자원을 관리하기 위해 고안된 방법들인 것이다. 뮤텍스 뮤텍스는 여러개의 스레드를 사용할 때 공유 자원에 대한 접근을 관리하기 위한 동기화 방식이다. 뮤텍스는 기본적으로 공유 자원이 사용중이라면 Lock을 걸어서 다른 스레드가 사용할 수 없도록 막는다. 그리고 해당 자원에 대한 사용이 끝나면 이를 해제하고 다음 스레드가.. 2021. 12. 23.