웹을 지탱하는 기술 01
·
Review
HTML / URI / HTML HTML은 HTTP로 통신한다 HTML의 링크는 URI를 이용한다 HTTP는 URI로 조작 대상을 지정한다. 웹의 특징 1. 하이퍼미디어 텍스트와 이미지, 음성, 영상 등 다양한 미디어를 하이퍼링크로 연결해 구성한 시스템 웹 페이지에는 삽입된 이미지, 동영상으로의 링크가 포함된다. 사용자는 브라 우절 르 이용해 자유롭게 그것들을 따라갈 수 있다. 2. 분산 시스템 복수의 컴퓨터를 조합해 처리를 분산시키는 시스템 복수의 컴퓨터상에 존재하는 데이터를 일원적으로 다루거나, 한 대의 컴퓨터로는 다루기 힘든 방대한 정보를 조작할 수 있다. 웹은 프로토콜이 매우 단순하기 때문에 전 세계 규모의 방대한 시스템을 실현할 수 있다. 또 OS, 특정 하드웨어에 종속받지 않고 다양한 디바이스..
코딩을 지탱하는 기술 04
·
Review
변수와 함수를 합쳐서 모형을 만드는 법 1. 모듈, 패키지 2. 퍼스트 클래스: 함수를 해쉬에 넣기 3. 클로저 4. 클래스 상속 1. 일반화/특수화 부모 클래스로 일반적인 기능을 구현하고 자식 클래스로 목적에 특화된 기능을 구현하는 접근 자식 클래스는 부모 클래스를 특수화하는 설계 방법 2. 공통부분을 추출 복수 클래스의 공통부분을 부모 클래스로서 추출하는 접근법 자식 클래스는 부모 클래스의 일종이라고 할 수 없다. 3. 차분 구현 상속 후 변경된 부분만을 구현하면 효율이 좋다는 접근법. 상속을 재사용을 위해 사용하는 방법. 자식 클래스는 부모 클래스의 일종이라고 할 수 없다. 단점 1. 상속을 많이 사용하면 코드가 복잡해진다. 2. 상속이 많을수록 깊은 상속 트리가 만들어지고, 이것은 프로그램을 이해..
코딩을 지탱하는 기술 03
·
Review
병행처리 복수의 처리를 시간축 상에 오버랩에서 실행하는 것 협력적 멀티태스크 한 프로세스가 처리가 완료되는 시점에 자발적으로 처리 교대를 하는 방법 모든 처리가 최적의 간격으로 교대한다는 이상적인 상황을 기반으로 성립하는 시스템. 일반적으로는 기아 상태가 발생한다. Windows 3.1, Mac OS 9이 이 방식을 채택했다. 프로그램이 버그로 인해 무한 반복되는 상황이 되면 동시에 실행한 다른 프로그램에게는 처리 기회가 가지 않고 전부 묶어서 백업을 해버렸다. 선점적 멀티태스크 개별 프로그램과 다른 또 다른 프로그램인 "스케줄러"를 통해 일정 시간마다 지금 실행되고 있는 처리를 강제적으로 중단시켜서 다른 프로그램이 실행될 수 있도록 하는 방법 선점적(preemptive) 멀티태스크라고도 한다. Wind..
코딩을 지탱하는 기술 02
·
Review
함수 몇 개의 행(코드라인)을 하나의 그룹으로 묶어 이름을 붙인 것 장점 1. 프로그램이 정량적으로 짧아진다. 2. 소스코드를 읽는 사람이 동일한 소스코드를 반복해서 읽지 않아도 된다. 3. 프로그램을 쉽게 이해할 수 있다. 4. 재사용을 통해 소모되는 비용(시간 및 메모리)을 감소시킬 수 있다. 일반적인 흐름 1. 코드가 진행된다 2. 함수를 만난다. 3. 함수가 저장된 메모리 공간으로 점프를 한다 4. 점프한 뒤 메모리 공간의 코드를 수행한다 5. 수행한 뒤 함수를 호출했던 메모리 주소로 다시 돌아간다. 돌아갈 목적지를 기록해두는 전용 메모리를 만들어 "돌아갈 목적지 메모리(레지스터)에 적어둔 번지로 점프하는 명령"을 준비해 "돌아가는 명령어의 위치"를 파악해둘 필요가 없어졌다. 거기에 스택을 이용해..
코딩을 지탱하는 기술 01
·
Review
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 라이브러리를 이용하면 특정 코드가 어떤 구문 트릴로 구성되어 있는..
대규모 서비스를 지탱하는 기술 04
·
Review
클라우드의 장단점 장점 확장의 유연성 저가로 사용하면서 확장해나갈 수 있다. 단점 획일적인 호스트 사양(메모리 상한선, 느린 I/O) 애매한 로드밸런서 때때로 멈춘다 자체 구축 인프라의 장단점 장점 하드웨어 구성을 유연하게 할 수 있다. 서비스로부터의 요청에 유연하게 대응할 수 있다. 병목현상을 제어할 수 있다. 다중성 확보 원리 서버를 여러 대 늘어놓는다. 1, 2대 정지하더라도 충분히 처리할 수 있도록 해둔다. 로드밸런서로 페일오버 / 페일백 멀티 마스터 VRRP(Virtual Router Redundancy Protocol) 기반으로 감시하면서 다중의 마스터를 두는 MySQL 기법 Active 마스터와 Stanby 마스터를 운용해 Active 마스터에 장애가 나면 Stanby 마스터를 Active ..