추상화레벨 이름 예시 1 아키텍처 스타일 REST 2 아키텍처 브라우저, 서버, 프록시, HTTP, URI, HTML 3 구현 Apache, Firefox, Chrome URI 리소스를 통일적으로 식별하는 ID 인터넷상에서 유일한 호스트 명의 구조와 호스트 내에서 유일한 계층 경로를 결합해 리소스 간 절대 중복되지 않는 것을 보장한다. 웹 상에 존재하는 이름을 가진 모든 정보 다른 리소스와 구분되는 고유한 명칭 전 세계의 무수한 리소스는 각각 URI로 의미 있는 이름을 가진다. URI를 이용해 프로 글 매은 리소스가 표현하는 정보에 접근할 수 있다. URI는 구조를 가지고 있기 때문에 프로그램에서 간단하게 표현하는 경로에 접근할 수 있다. 어드레스 가능성(Addressability) URI가 지니고 있는..
HTML / URI / HTML HTML은 HTTP로 통신한다 HTML의 링크는 URI를 이용한다 HTTP는 URI로 조작 대상을 지정한다. 웹의 특징 1. 하이퍼미디어 텍스트와 이미지, 음성, 영상 등 다양한 미디어를 하이퍼링크로 연결해 구성한 시스템 웹 페이지에는 삽입된 이미지, 동영상으로의 링크가 포함된다. 사용자는 브라 우절 르 이용해 자유롭게 그것들을 따라갈 수 있다. 2. 분산 시스템 복수의 컴퓨터를 조합해 처리를 분산시키는 시스템 복수의 컴퓨터상에 존재하는 데이터를 일원적으로 다루거나, 한 대의 컴퓨터로는 다루기 힘든 방대한 정보를 조작할 수 있다. 웹은 프로토콜이 매우 단순하기 때문에 전 세계 규모의 방대한 시스템을 실현할 수 있다. 또 OS, 특정 하드웨어에 종속받지 않고 다양한 디바이스..
변수와 함수를 합쳐서 모형을 만드는 법 1. 모듈, 패키지 2. 퍼스트 클래스: 함수를 해쉬에 넣기 3. 클로저 4. 클래스 상속 1. 일반화/특수화 부모 클래스로 일반적인 기능을 구현하고 자식 클래스로 목적에 특화된 기능을 구현하는 접근 자식 클래스는 부모 클래스를 특수화하는 설계 방법 2. 공통부분을 추출 복수 클래스의 공통부분을 부모 클래스로서 추출하는 접근법 자식 클래스는 부모 클래스의 일종이라고 할 수 없다. 3. 차분 구현 상속 후 변경된 부분만을 구현하면 효율이 좋다는 접근법. 상속을 재사용을 위해 사용하는 방법. 자식 클래스는 부모 클래스의 일종이라고 할 수 없다. 단점 1. 상속을 많이 사용하면 코드가 복잡해진다. 2. 상속이 많을수록 깊은 상속 트리가 만들어지고, 이것은 프로그램을 이해..
병행처리 복수의 처리를 시간축 상에 오버랩에서 실행하는 것 협력적 멀티태스크 한 프로세스가 처리가 완료되는 시점에 자발적으로 처리 교대를 하는 방법 모든 처리가 최적의 간격으로 교대한다는 이상적인 상황을 기반으로 성립하는 시스템. 일반적으로는 기아 상태가 발생한다. Windows 3.1, Mac OS 9이 이 방식을 채택했다. 프로그램이 버그로 인해 무한 반복되는 상황이 되면 동시에 실행한 다른 프로그램에게는 처리 기회가 가지 않고 전부 묶어서 백업을 해버렸다. 선점적 멀티태스크 개별 프로그램과 다른 또 다른 프로그램인 "스케줄러"를 통해 일정 시간마다 지금 실행되고 있는 처리를 강제적으로 중단시켜서 다른 프로그램이 실행될 수 있도록 하는 방법 선점적(preemptive) 멀티태스크라고도 한다. Wind..
함수 몇 개의 행(코드라인)을 하나의 그룹으로 묶어 이름을 붙인 것 장점 1. 프로그램이 정량적으로 짧아진다. 2. 소스코드를 읽는 사람이 동일한 소스코드를 반복해서 읽지 않아도 된다. 3. 프로그램을 쉽게 이해할 수 있다. 4. 재사용을 통해 소모되는 비용(시간 및 메모리)을 감소시킬 수 있다. 일반적인 흐름 1. 코드가 진행된다 2. 함수를 만난다. 3. 함수가 저장된 메모리 공간으로 점프를 한다 4. 점프한 뒤 메모리 공간의 코드를 수행한다 5. 수행한 뒤 함수를 호출했던 메모리 주소로 다시 돌아간다. 돌아갈 목적지를 기록해두는 전용 메모리를 만들어 "돌아갈 목적지 메모리(레지스터)에 적어둔 번지로 점프하는 명령"을 준비해 "돌아가는 명령어의 위치"를 파악해둘 필요가 없어졌다. 거기에 스택을 이용해..
Stack Machine 작동 및 연산에 스택을 사용하는 장치 혹은 기법 -> 후위 표기법(postorder) 1과 2를 더한 것에 3을 곱하다 -> 1 2 + 3 * 2와 3을 곱한 후 1을 더한다 -> 2 3 * 1 + Java, Python의 VM 형태도 스택 머신의 형태를 띤다. Python의 dis 라이브러리를 이용하면 VM이 실행할 명령 열을 출력할 수 있다. LISP 괄호로 시작해서 명령어가 맨 앞에 나온다. 그다음 공란으로 간격을 만들고 무엇을 더할 것인지를 기술한다. -> 전위 표기법(preorder) 1과 2를 더한다 -> (+ 1 2) 1과 2를 더한 후 3을 곱한다 -> (* (+ 1 2) 3 ) Python의 ast 라이브러리를 이용하면 특정 코드가 어떤 구문 트릴로 구성되어 있는..