전체 글

개발은 좋은데 뭘로 개발할까
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/HCI 윈도우즈프로그래밍

[OpenGL] 10. Shader (6) - Texture

Texture 이번 글에서는 객체에 2D 이미지를 입힐 수 있는 '텍스쳐' 라는 기능에 대해 정리한다. 택스쳐는 어떤 이미지 위에 도형 틀을 그리는 것과 비슷하다. 이를 텍스쳐를 도형에 매핑한다고 하는데, 텍스쳐를 도형(가령 삼각형)에 매핑하기 위해서는, 도형의 vertex가 texture의 어느 위치에 해당하는지를 지정해야 한다. 이때 텍스쳐 좌표계를 통해서 위치를 지정할 수 있는데, 텍스쳐 좌표계는 x, y 축에서 0~1사이의 값을 가진다. 기준점은 왼쪽 아래를 원점으로 한다. 그리고 이 텍스쳐 좌표계를 통해 텍스쳐의 색상을 가져올 수도 있는데, 이를 sampling 이라고 한다. Texture 생성 // Create Texture & Bind unsigned int texture; glGenText..

CS/컴퓨터 네트워크

[컴퓨터 네트워크] 8. Application Layer (1) : 어플리케이션 계층 개요

인터넷을 사용하는 어플리케이션을 만들 때, 프로그래머는 Transport 계층이 제공하는 서비스 중 어떤 서비스를 사용해서 어플리케이션을 만들 것인지, 어떤 구조로 만들 것인지만 결정하면 된다. 어플리케이션 밑에 있는 라우터, 스위치 같은 core device의 동작에 대해서는 신경쓰지 않아도 된다. Application Design Paradigm 네트워크 어플리케이션을 만들 때 사용할 수 있는 디자인 패러다임으로 크게 client - server 패러다임과 peer to peer 패러다임이 있다. client - server paradigm 데이터를 요구하는 클라이언트와 데이터를 제공하는 서버로 역할을 구분하는 패러다임이다. 서버는 항상 켜져있는 컴퓨터(host)이고, 고정된 IP주소를 가지고 있다...

CS/컴퓨터 네트워크

[컴퓨터 네트워크] 7. Protocol layers

이번 글에서는 네트워크 5계층과 프로토콜에 대해 정리하고자 한다. 인터넷은 매우 복잡하고 거대한 개념이다.이 개념을 그냥 구현하려고 한다면 매우 복잡하고 거대하기 때문에 힘든일이 될 것이다.그래서 이 거대한 개념을 보다 작은 단위의 개념으로 나눈다음, 이 작은 단위의 개념을 서로 연결해서 큰 개념을 구현하도록 설계했다. 비행기 탑승 절차와 레이어예를 들어 비행기를 타고 다른 나라로 여행을 가는 과정을 생각해보자.비행기는 단순히 타고싶을 때 타서 바로 슝 날아가서 도착하는게 아니라 여러 복잡한 절차가 존재한다. 비행기 표 예매 > 짐 맡기기 > 탑승구에서 비행기 탑승 > 활주로 이륙 > 비행 > 활주로 착륙 > 비행기에서 내려 탑승구로 나오기 > 짐 찾기 > 비행기 티켓에 대해 문제가 있..

CS/프로그래밍언어론

[프로그래밍언어론] 1. 프로그래밍 언어의 개념

프로그래밍 언어의 개념을 공부하는 이유- 아이디어 표현 능력 향상- 적절한 언어를 선택하는데 필요한 배경 지식 습득- 새로운 언어 학습 능력 향상- 프로그래밍 언어의 구현 방식에 대한 깊은 이해와 이를 바탕으로한 기존 언어에 대한 이해도 향상 프로그래밍 분야- 과학 분야 (큰 수의 부동 소수점 계산 등) → Fortran- 경영 분야 (레포트 생성, 10진수 숫자와 문자 사용)  → COBOL- 인공 지능 (심볼릭 컴퓨테이션 = 기호를 이용한 논리 전개, 링크드 리스트 사용) → LISP- 시스템 프로그래밍 (지속적인 사용을 위해 효율성이 필요) → C- 웹 소프트웨어 → HTML, PHP, Java 프로그래밍 언어의 평가 기준Readability프로그램을 읽고 이해하기 쉬워야..

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

[OpenGL] 9. Shader (5) - 직사각형에 실시간으로 변하는 색상 입히기 (GLFW, GLAD)

직사각형에 색상 입히기 예제 지난 글에 작성했던 내용을 한번 코드로 실습해보고자 한다. 우선 아래와 같이 색상을 입힌 직사각형 코드를 준비했다. #include #include #include "Shader_s.h" #include float vertex_data[] = { -0.5, -0.5, 1.0, 0.2, 0.2, 0.2, // 왼쪽 아래 0.5, -0.5, 1.0, 0.3, 0.3, 0.3, // 오른쪽 아래 -0.5, 0.5, 1.0, 0.4, 0.4, 0.4, // 왼쪽 위 0.5, 0.5, 1.0, 0.5, 0.5, 0.5, // 오른쪽 위 }; unsigned int index_data[] = { 0, 1, 2, 1, 2, 3 }; int main() { glfwInit(); glfwWi..

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

[OpenGL] 8. Shader (4) - GLSL

GLSL GLSL은 GL Shader Language 의 약자로, 셰이더 프로그래밍을 위한 C 기반의 언어이다. 대표적인 사용 방법은 아래와 같다. #version version_number // Open GL 버전 in type in_variable_name; in type in_variable_name2; // 셰이더에 들어오는 입력 변수 out type out_variable_name; // 셰이더가 처리한 뒤 내보내는 출력 변수 uniform type uniform_name; // 모든 정점에 대해 동일하게 사용되는 전역 변수 void main() { out_variable_name = weird_stuff_we_processed; } GLSL 데이터 타입 GLSL은 대부분의 C 데이터 타입을 지..

CS/컴퓨터 네트워크

[컴퓨터 네트워크] 6. Security

이번 글에서는 네트워크 보안에 대해 간단하게 정리하고자 한다. 원래 인터넷은 미국의 군사용 네트워크로 만들어졌다. 군 내부적으로 데이터를 주고받기 위해 만들어졌다보니, 당연히 군 내부에서 폐쇄적으로 사용이 되었기에 처음에는 보안에 관심이 없었다. (서로 알고있는 군 관계자끼리 데이터를 주고 받았기 때문이다) 하지만 인터넷이 밖으로 나와 상업적 목적에 의해 세계적으로 보급되기 시작하면서 보안 문제가 대두되기 시작했다. 인터넷이라는 인프라를 통해 흐르는 데이터를 임의로 조작하거나, 데이터의 흐름을 통제하여 이익을 얻고자 하는 사람들이 등장했다. 따라서 이 문제를 해결하기 위해 보안 솔루션이 등장하기 시작했다. 초기 인터넷은 보안 개념을 고려하여 설계되지 않았기 때문에, 이후에 나온 보안 개념은 이 인터넷의 ..

에버듀
Blog. 에버듀