소켓 프로그래밍이번 장에서는 네트워크 프로그래밍을 위한 기본적인 기술들을 살펴볼 것이다. 다루는 내용은 호스트와 서비스 주소를 다루는 법과 ,UDP 통신에 대한 것들이다. 그리고 GO API를 이용해서 TCP와 UCP 기반의 네트워크 프로그램을 개발하는 방법도 살펴볼 것이다.네트워크는 시리얼 링크, 구리선, 광섬유, 무선 등 다양한 매체로 구성되어 있다....
Go HTTPWWW(World wide web)은 수억명의 유저가 접근하는 (그리고 역시 수억의 컴퓨터가 연결하는) 가장 큰 분산 시스템다. 그리고 그 중 가장 성공한 서비스는 HTTP 기반의 웹 서비스일 것이다. 웹 브라우저라고 부르는 웹 클라이언트 프로그램을 이용해서 서핑이라는 행위를 하는 정보의 바다 말이다. 현재 HTTP(Hyper-Text Tra...
보안인터넷은 군사적인 공격에 견딜 수 있는 시스템을 구축하는 걸 목표로 설계를 했다. 이때의 공격은 외부에서 이루어지는 것으로 내부 네트워크는 신뢰 관계에 있는 것으로 가정을 했다. 그 시절의 인터넷은 어차피 허가 받은 조직(혹은 사람)만 접속할 수 있었으니, 내부 네트워크에서 발생할 수 있는 공격은 크게 신경쓸 필요가 없었다. 하지만 시대가 바뀌어서 인...
XMLXML(Extensible Markup Language)은 데이터 구조의 저장과 직렬화를 위해서 사용하는 텍스트 기반의 마크업 언어다. XML은 문서의 내용을 나타내는데 강점을 보이지만, 인터넷 등에서 임의의 자료구조를 정의하기 위한 용도로도 널리 사용하고 있다.XML은 복잡한 데이터 구조를 저장하고 재현하기 위해서 널리 사용하고 있는 데이터 저장 ...
revel - Tutorial 이미 을 만든 것으로 가정한다. 우분투 리눅스 14.04 go 1.3.1 # go get github.com/revel/revel# go get github.com/revel/cmd/revelrevel cli 툴이 설치된다.# revel help~~ revel! http~usageThe commands are new cre...
golang sliceGo의 slice를 이용하면 연속된 데이터 타입을 효과적으로 다룰 수 있다. 연속된 데이터를 다룬 다는 점에서 배열(array)와 비슷한 측면이 있다. 실제 배열 처럼 사용 할 수 있는데, 몇 가지 다른 점들이 있다. 이 문서에서 slice가 무엇인지 자세히 살펴본다. 슬라이스(slice)타입은 Go의 내장타입으로 배열의 추상이다. ...
타임아웃은 외부에서의 네트워크 연결과 데이터베이스 작업등의 수행 시간을 설정하기 위해서 사용한다. Go에서는 select를 이용해서 타임아웃을 구현할 수 있다.예제 코드를 보자.예제 코드의 첫번째 고루틴은 2초를 sleep 한 다음에 c1 채널로 메시지를 보낸다. main 함수는 select 에서 c1로 부터 메시지를 기다린다. 그리고 time.After ...
Go의 select를 이용하면 여러 개의 채널로 부터 메시지를 기다릴 수 있다.예제 코드는 두 개의 고루틴을 가지고 있다. main 함수는 이들 고루틴으로 부터 메시지를 기다리는데, 고루틴에 따라서 서로 다른 처리를 해야 한다. 22 번째 줄에서 select를 이용해서 복수의 채널로 부터의 메시지를 기다리며 블럭된다. 어떤 채널로 부터 메시지가 발생하면, ...
채널은 기본적으로 양방향으로 사용할 수 있다. 반면 개발자는 채널을 읽기 전용으로 혹은 쓰기 전용으로 설정 할 수 있다. ping 함수는 쓰기 전용의 채널을 매개변수로 넘겨 받았다. 채널 pings는 쓰기만 가능하기 때문에, 읽으려고 하면 컴파일시 invalid operation에러가 발생한다. pong 함수는 읽기 전용의 채널을 매개변수로 넘겨 받았다. ...
Go는 두 개 이상의 값을 반환할 수 있다. 이 점을 이용해서 실행결과와 에러 값을 함께 반환하는 방식으로 에러를 처리 할 수 있다. 이 방식은 상당히 직관적이다. 단지 하나의 값만을 반환하는 다른 언어들은 에러를 측정하는게 명확하지 않을 수 있다. 예를 들어 int 값을 반환하는 C 함수가 있다고 가정해 보자. 이 함수는 실패 할 경우 0을 반환한다. 그...
148 POSTS HERE
소켓 프로그래밍
소켓 프로그래밍이번 장에서는 네트워크 프로그래밍을 위한 기본적인 기술들을 살펴볼 것이다. 다루는 내용은 호스트와 서비스 주소를 다루는 법과 ,UDP 통신에 대한 것들이다. 그리고 GO API를 이용해서 TCP와 UCP 기반의 네트워크 프로그램을 개발하는 방법도 살펴볼 것이다.네트워크는 시리얼 링크, 구리선, 광섬유, 무선 등 다양한 매체로 구성되어 있다....
Go HTTP
Go HTTPWWW(World wide web)은 수억명의 유저가 접근하는 (그리고 역시 수억의 컴퓨터가 연결하는) 가장 큰 분산 시스템다. 그리고 그 중 가장 성공한 서비스는 HTTP 기반의 웹 서비스일 것이다. 웹 브라우저라고 부르는 웹 클라이언트 프로그램을 이용해서 서핑이라는 행위를 하는 정보의 바다 말이다. 현재 HTTP(Hyper-Text Tra...
보안
보안인터넷은 군사적인 공격에 견딜 수 있는 시스템을 구축하는 걸 목표로 설계를 했다. 이때의 공격은 외부에서 이루어지는 것으로 내부 네트워크는 신뢰 관계에 있는 것으로 가정을 했다. 그 시절의 인터넷은 어차피 허가 받은 조직(혹은 사람)만 접속할 수 있었으니, 내부 네트워크에서 발생할 수 있는 공격은 크게 신경쓸 필요가 없었다. 하지만 시대가 바뀌어서 인...
XML
XMLXML(Extensible Markup Language)은 데이터 구조의 저장과 직렬화를 위해서 사용하는 텍스트 기반의 마크업 언어다. XML은 문서의 내용을 나타내는데 강점을 보이지만, 인터넷 등에서 임의의 자료구조를 정의하기 위한 용도로도 널리 사용하고 있다.XML은 복잡한 데이터 구조를 저장하고 재현하기 위해서 널리 사용하고 있는 데이터 저장 ...
revel - Tutorial
revel - Tutorial 이미 을 만든 것으로 가정한다. 우분투 리눅스 14.04 go 1.3.1 # go get github.com/revel/revel# go get github.com/revel/cmd/revelrevel cli 툴이 설치된다.# revel help~~ revel! http~usageThe commands are new cre...
golang slice
golang sliceGo의 slice를 이용하면 연속된 데이터 타입을 효과적으로 다룰 수 있다. 연속된 데이터를 다룬 다는 점에서 배열(array)와 비슷한 측면이 있다. 실제 배열 처럼 사용 할 수 있는데, 몇 가지 다른 점들이 있다. 이 문서에서 slice가 무엇인지 자세히 살펴본다. 슬라이스(slice)타입은 Go의 내장타입으로 배열의 추상이다. ...
예제로 살펴보는 Go : Timeout
타임아웃은 외부에서의 네트워크 연결과 데이터베이스 작업등의 수행 시간을 설정하기 위해서 사용한다. Go에서는 select를 이용해서 타임아웃을 구현할 수 있다.예제 코드를 보자.예제 코드의 첫번째 고루틴은 2초를 sleep 한 다음에 c1 채널로 메시지를 보낸다. main 함수는 select 에서 c1로 부터 메시지를 기다린다. 그리고 time.After ...
예제로 살펴보는 Go : Select
Go의 select를 이용하면 여러 개의 채널로 부터 메시지를 기다릴 수 있다.예제 코드는 두 개의 고루틴을 가지고 있다. main 함수는 이들 고루틴으로 부터 메시지를 기다리는데, 고루틴에 따라서 서로 다른 처리를 해야 한다. 22 번째 줄에서 select를 이용해서 복수의 채널로 부터의 메시지를 기다리며 블럭된다. 어떤 채널로 부터 메시지가 발생하면, ...
예제로 살펴보는 Go : Channel Directions
채널은 기본적으로 양방향으로 사용할 수 있다. 반면 개발자는 채널을 읽기 전용으로 혹은 쓰기 전용으로 설정 할 수 있다. ping 함수는 쓰기 전용의 채널을 매개변수로 넘겨 받았다. 채널 pings는 쓰기만 가능하기 때문에, 읽으려고 하면 컴파일시 invalid operation에러가 발생한다. pong 함수는 읽기 전용의 채널을 매개변수로 넘겨 받았다. ...
예제로 살펴보는 Go : Errors
Go는 두 개 이상의 값을 반환할 수 있다. 이 점을 이용해서 실행결과와 에러 값을 함께 반환하는 방식으로 에러를 처리 할 수 있다. 이 방식은 상당히 직관적이다. 단지 하나의 값만을 반환하는 다른 언어들은 에러를 측정하는게 명확하지 않을 수 있다. 예를 들어 int 값을 반환하는 C 함수가 있다고 가정해 보자. 이 함수는 실패 할 경우 0을 반환한다. 그...