1. SRP: 단일 책임 원칙(single responsibility principle) 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것은 모호하다. 클 수 있고, 작을 수 있다. 문맥과 상황에 따라 다르다. 중요한 기준은 변경이다. 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것 예) UI 변경, 객체의 생성과 사용을 분 2. OCP: 개방-폐쇄 원칙 (Open/closed principle) 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다 이런 거짓말 같은 말이? 확장을 하려면, 당연히 기존 코드를 변경? 다형성을 활용해보자 인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능을 구현 지금까지 배운 역할과 구현의 분리를 생각해보자 3. LSP..
Computer Science
Big Data Platform-1 https://right-hugger-91c.notion.site/Big-Data-Platform-1-2bccd4999a6c4b05bfd75743a94300f6?pvs=4 Big Data Platform-1 | Notion 목차 right-hugger-91c.notion.site Big Data Platform-2 : Introduction to MapReduce https://right-hugger-91c.notion.site/Big-Data-Platform-2-Introduction-to-MapReduce-afdde6645b77413b9758672ca4bf2e8b?pvs=4 Big Data Platform-2 : Introduction to MapReduce | N..
https://right-hugger-91c.notion.site/Case-Study-Cloud-Computing-46c61324374647509b86d3e920a06403?pvs=4 Case Study: Cloud Computing | Notion 목차 right-hugger-91c.notion.site
들어가기전 p2p 사이트가 불법 음악/영화 공유로 유명한데, 그런 걸로만 쓰이는 것은 아니다. 중앙 집권 없이, 자원 공유를 가능케 하는 네크워크를 구축할 수 있게 해준다. 1. Client/Sever Architecture 서버에 데이터 있고, 클라이언트는 데이터를 서버에게 요청. 클라이언트 수 🔺 ⇒ 서버 demand 🔺 a. Client/Sever Architecture의 한계 확장성 문제 SPoF administration(관리) 필요 네트워크 가장자리 → 사용되지 않는 리소스 ⇒ 이런 문제를 해결 해줄 것이 바로 “P2P System” 2. P2P 정의 P2P는 분산된 Resource(자원)을 활용하여 분산 방식으로 기능을 수행하는 시스템 및 응용 프로그램의 class resources : co..

들어가기전 Fault : 오류의 원인. 설계 오류, 제조 결함, 악화 또는 외부 간섭에서 발생 1. Fault Tolerance 관점: 컴퓨팅 시스템을 더 신뢰성 있게 만들어야 하는 필요성 컴퓨팅 시스템은 신뢰성이 높지 않음: 빈번한 운영체제 충돌, 버그 있는 소프트웨어, 신뢰성이 낮은 하드웨어, 소프트웨어/하드웨어 불일치 등 과거에는 컴퓨터 사용자들이 능숙한 tech savvy한 사람들. 요즘에는 "초보자" 사용자가 늘어남 → 더 신뢰성 있고 의존할 수 있는 컴퓨팅 시스템을 구축해야 함! a. 용어 설명 // 용어 정의 문제 나올 수 있음. 외우기. Failure : 정상적인 기능을 수행할 수 없는 상태 Error : 진실이나 정확성 ❌. 의도치 않은 벗어남(unintentional deviation)..

1. Replication 복제 : 여러 개의 copy 본을 만들어서 사용한다. data replcation : 같은 data를 다른 device로 ex. browser cache, DNS (캐싱 혹은 DNS) computation replication : 같은 연산을 여러 번 수행 replcated in space : 서로 다른 장치에서 같은 연산 replcated in time : 한 장치에서 반복 2. 왜 ‘복제’하는가? 신뢰도 만약에 하나의 레플리카가 사용 불가능한 경우, 다른 복제본을 사용 → 보험용 손상된 data → isolation 시키고, replica로 실행한다. → 손상된 데이터에 대한 보호 성능 분산 시스템의 크기가 커짐에 따라 확장 지리적으로 분산된 시스템에서의 확장 ( WEB p..

0. 개요 🤔 궁금증 or 들어가기 전 특정 name이 선언되기 전에 사용이 가능한가에 대한 이야기이다. // C++ 이라고 가정 int main() { int n = 0; n = x + 5; // 가능한가? int x = 3; printf("value = %d\n", n); } main 함수 내에서 일어나는 일이라고 가정, 선언 전 Line에서 x가 사용 가능하냐는 의미 결론부터 말하자면, 불가능 => 정적 의미론 오류 (Static Semantic Error) 오히려 x가 이전, 밖에 먼저 선언되어 있으면 가능 1. 각 언어의 선언 순서 1-1. Algol 60 , Lisp (초기 언어) 모든 선언이 해당 스코프의 시작부에 나타야 한다. 1-2. Pascal declare-before-use rule..

0. 개요 🤔 궁금증 or 들어가기 전 우리가 프로그래밍 하면서 아주 자연스럽게 사용했던 중첩된 서브루틴에 대해 알아보자. 중첩 subroutine 내에서 선언된 것들과 스코프 등에 대한 이야기를 해보자. (서브루틴 = 함수 or 메서드 정도로 생각하면 편하다) 1. Nested Subrotuines (중첩 서브루틴) 많은 언어에서 중첩 서브루틴을 지원한다. ex. Algol 60, Ada, ML, Commn Lisp, Python, Scheme, Swift 등 오히려 C언어 계열에서는 불가능 1-1. Algol 계열의 Nested Subroutines 중첩 서브루틴 내에서 선언된 상수, 타입, 변수 또는 서브루틴은 해당 스코드 외부에서는 보이지 않는다. (Not-visible) 이름과 객체 간의 바인딩..