CS

CS/컴퓨터 네트워크

[컴퓨터 네트워크] 11. Application Layer (4) : HTTP/2

HTTP/2 지난 글에서 HTTP/1 과 HTTP/1.1 에 대해서 정리했었다. 간단히 말해서 HTTP/1 은 base HTML 에 대해서도 TCP Connection을 만들고, 이 HTML 을 구성하는데 필요한 referenced object 들에 대해서도 매번 TCP connection 을 만들어서 데이터를 가져오는 방식이었다. 각 오브젝트 하나를 가져오는데 2RTT 의 시간이 필요했다. HTTP/1.1 은 이를 약간 개선해서, 한번 TCP Connection 을 만들면 이 연결로 base HTML 과 referenced object 까지 한번에 가져와서 오브젝트를 가져오는 시간을 거의 반으로 줄이는 개선된 프로토콜이었다. HTTP/2 는 여기에서 한 단계 더 발전한 프로토콜이다. HTTP/2 의 목..

CS/컴퓨터 네트워크

[컴퓨터 네트워크] 10. Application Layer (3) : Web Cache

Web Cache (web proxy / proxy server) 웹 브라우저의 역할은 웹 서버로부터 웹 오브젝을 가져오는 것이다. 그런데 만약 서버가 클라이언트로부터 멀리 떨어져 있거나, 대역폭이 넓지 않아서 오브젝을 가져오는데 시간이 오래 걸린다면, 서버까지 가지 않고도 데이터를 얻어올 수 있는 웹 캐시 기법을 사용할 수 있다. 웹 캐시 기법은 클라이언트가 자주 요청할 법한 오브젝을 클라이언트 가까이에 두는 기법이다. 그래서 만약 사용자가 로컬 웹 캐시에 먼저 접근하도록 설정하면, 오브젝을 가져올 때 서버에 바로 요청을 보내는 것이 아니라, 웹 캐시에 데이터를 요청해서 받아온다. 만약 웹 캐시에 오브젝이 없다면 그때 서버에 오브젝을 요청해서 오브젝을 가져온 뒤, 캐시가 그 오브젝의 카피를 따로 저장해..

CS/프로그래밍언어론

[프로그래밍언어론] 4. Semantics

Static Semantics & Attribute Grammar프로그래밍 언어의 큰 2가지 축은 Syntax 와 Semantics다.syntax(문법)은 지금 들어온 코드의 문법이 맞다 틀리다만 판단할 수 있다.하지만 이 문법만 가지고는 문장의 의미를 알 수 없다. 코드를 예로 든다면, 먼저 변수를 선언하고나서 값을 할당해야하는데, 선언하지도 않은 변수에 값을 할당하는 것은 문법적으로는 옳을 수 있어도 문맥상, 의미상으로는 올바르지 않은 코드이다. Static Semantics 는 컴파일하는 순간에 알 수 있으며, 프로그램  실행 중 변하지 않는 시멘틱스 정보다.Attribute Grammars (AG) 는 static semantics 정보를 최대한 알아내고자 등장했다. AG는 CF..

CS/컴퓨터 구조

[컴퓨터 구조] 6. MIPS Branch Instructions

Load Constant MIPS에서 메모리에 있는 상수를 레지스터로 읽어올 때 2가지 방법이 있다. 첫번째는 메모리에 32bit 상수를 저장한 뒤, lw 명령어로 읽어오는 방법이다. 두번째는 lui, ori 2개의 instruction을 사용하여 읽어오는 방식이다. lui 명령어는 load upper immediate 의 줄임말로, immediate 필드에 있는 16bit 상수를 레지스터의 상위 16bit에 저장하는 명령어이다. 그리고 나머지 하위 16bit 의 상수는 ori 명령어로 bit combine 하여 가져온다. 위 이미지와 같이 1234 를 상위 16bit에 쓰고, 5678을 하위 16bit에 쓰도록 해서 원하는 32bit 크기의 상수를 레지스터에 저장할 수 있다. Pseudo Instruc..

CS/컴퓨터 구조

[컴퓨터 구조] 5. MIPS Data Transfer Instructions (2)

Zero Register 0번 레지스터는 항상 값을 0으로 유지하는 레지스터이다. 이 레지스터에 값을 쓰려고 할 수 있지만, 그 결과는 언제나 0이다. 이 레지스터는 다른 레지스터에 값을 옮기는 move 명령어를 구현할 때 0과 or 연산을 취해서 다른 레지스터에 값을 쓰는 식으로 move 명령어를 구현하는 용도로 사용된다. 또는 상수값을 레지스터에 쓰고자 할 때, 0과 더하기를 해서 원하는 상수값을 레지스터에 쓰는 용도로 쓸 수도 있다. 메모리에 접근하는 상황 우리의 컴퓨터는 stored program 방식을 사용하고 있다. 즉, 프로그램의 명령어와 데이터가 오프칩 메모리에 저장되어 있고, CPU는 명령어와 데이터를 메모리로부터 읽어와 연산하는 방식이다. CPU가 메모리에 접근하는 상황은 크게 2가지이..

CS/HCI 윈도우즈프로그래밍

[OpenGL] 12. Shader (8) - 여러 Texture 생성하기

Sampler GLSL 에서 텍스쳐 객체를 저장하기 위한 내장 데이터 타입 (일종의 컨테이너) 이다. 텍스쳐 타입에 따라 sampler1D, sampler2D, sampler3D 등으로 분류되며, uniform 변수로 선언한다. 기본적으로 디폴트값이 정해져 있어서, 텍스쳐를 하나만 바인딩하는 경우에는 직접 유니폼 변수에 값을 등록하지 않아도 바로 사용할 수 있다. 텍스쳐를 유니폼 변수에 직접 등록하기 텍스쳐를 유니폼 변수에서 사용할 때는 텍스쳐의 위치에 해당하는 정수값을 넘겨주게 된다. 이러한 텍스쳐의 위치를 texture unit 이라고 한다. 이 텍스쳐 유닛의 기본값은 0이다. (그래서 하나를 바인딩할 때는 바로 가져다 사용할 수 있는 것) 텍스쳐 유닛을 사용하는 이유는 사용자가 셰이더로 하여금 1개..

CS/프로그래밍언어론

[프로그래밍언어론] 3. Syntax 와 BNF, Parse Tree

개요syntax와 semantics는 프로그래밍 언어의 2가지 축이다.syntax는 문법과 문법에 따라 만들어 놓은 문장을 의미한다.semantics는 수식, 문장, 프로그램 유닛들이 지니는 의미를 말한다. 예를 들어 x = 3 이라는 문장이 주어졌을 때syntax는 'x' 라는 문자 옆에 '=' 이라는 문자, '3' 이라는 문자가 올 수 있다는 그 문법을 체크하는 것이 목표고,semantics 는 x가 변수, = 가 대입 연산자, 3은 정수라는 의미를 부여하는 것이 목표이다. 문법은 문장이 어떻게 쓰여야 하는지 그 규칙을 기술한 것.시멘틱은 각 문장과 그 요소들이 갖는 의미를 기술한 것이라고 볼 수 있다.Syntaxsentence (문장) : 문자들의 집합language (언어)..

CS/컴퓨터 네트워크

[컴퓨터 네트워크] 9. Application Layer (2) : HTTP와 Cookie

HTTP웹페이지는 HTML 파일, 이미지, Java applet, 오디오 파일과 같은 object 들로 구성되어있다.이 각각의 오브젝트는 서로 다른 웹 서버에 존재할 수 있다.웹 페이지는 base html 파일에 서로다른 각가의 오브젝트 URL로 연결시켜 구성한다. HTTP (HyperText Transfer Protocol) 은 웹 서비스의 어플리케이션 계층 프로토콜이다.HTTP의 Hypertext는 위에서 말한 오브젝트를 의미한다. 이 프로토콜은 client - server 패러다임을 따른다.클라이언트는 웹 브라우저로, 웹 서버에 오브젝트를 요청하고, 얻어낸 오브젝트를 사용자에게 보여주는 역할을 한다.서버는 웹 서버로, 웹 브라우저가 요청한 오브젝트를 HTTP 프로토콜을 사용하여 보..

CS/HCI 윈도우즈프로그래밍

[OpenGL] 11. Shader (7) - Texture Wrapping, Filtering, MipMaps

Texture Wrapping 텍스쳐의 좌표 범위는 (0,0) 에서 (1,1) 이다. 만약 이 범위 밖의 좌표를 지정할 경우, OpenGL은 기본적으로 텍스쳐를 반복한다. 만약 단순 반복하는게 아니라 대칭반복하거나, 클램핑하거나, 지정한 색으로 채우고 싶을 경우, 아래와 같은 다양한 옵션을 사용할 수 있다. GL_REPEAT, GL_MIRRORED_REPEAT, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_BORDER 이 설정값은 텍스쳐를 컨텍스트에 바인딩한 이후, 설정값을 넣는다. x축, y축에 대해 각각 설정을 지정해야 하는데, 아래와 같이 glTexParameteri 함수를 사용하여 지정할 수 있다. glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, ..

CS/프로그래밍언어론

[프로그래밍언어론] 2. 프로그래밍 언어의 진화

Zuze's Plankalkul세계 최초의 컴퓨터 x1을 프로그래밍하기 위해 나온 언어1945년에 나온 언어인데, 이때 벌써 floating point, array, record 의 개념과 상수가 정의되어 있었다. A[5] = A[4] + 1 를 이렇게 썼고, 1.n 은 데이터 타입을 나타낸 표기라고 한다. Pseudocodes등장 배경컴퓨터가 등장했을 때, 사람들은 컴퓨터에 기계어로 명령을 직접 내려야 했다.기계어는 읽기, 수정하기, 의사표현하기가 매우 힘든 언어였고, index, floating point 의 개념도 없었다. - Short Code (BINAC 컴퓨터에 사용한 슈도 코드) - SpeedCoding (IBM 701 컴퓨터에 사용)700개의 단어 밖에 사용하지 ..

에버듀
'CS' 카테고리의 글 목록 (4 Page)