본문 바로가기

Go

Go 채팅서버 https://www.youtube.com/watch?v=R_v4fxoNKMg&list=PLy-g2fnSzUTDALoERcKDniql16SAaQYHF&index=13 Websocket 을 이용한 Echo Server go 서버 package main import ( "fmt" "log" "net/http" "github.com/gorilla/pat" "github.com/gorilla/websocket" "github.com/urfave/negroni" ) var upgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, } type Message struct { Type string `json:"type"` Data inter.. 더보기
Go 웹서버관련 - Render, Pat, Negroni https://www.youtube.com/watch?v=TjbUnpW7wyA net/http 의 NewServeMux를 사용한 웹서버 구축 package main import ( "encoding/json" "fmt" "net/http" ) type User struct { Name string `json:"name"` Email string `json:"email"` } func getUserInfoHandler(w http.ResponseWriter, r *http.Request) { user := User{Name: "tucket", Email: "tucket@naver.com"} w.Header().Add("Content-type", "application/json") w.WriteHeader(.. 더보기
[묘공단] Tucker의 Go 언어 프로그래밍 31장 : Todo 리스트 웹사이트 만들기 준비하기 urfave/negroni 패키지 설치 unrolled/render 패키지 설치 웹서버만들기 프론트엔드 만들기 웹배포방법 고려하기 헤로쿠로 배포하기 준비하기 urfave/negroni 패키지 설치 negroni 패키지는 net/http를 직접적으로 이용할 수 있도록 디자인된 미들웨어 중심의 라이브러리이다. https://github.com/urfave/negroni/blob/master/translations/README_ko_KR.md 아래 명령으로 해당 패키지를 설치한다. go get github.com/urfave/negroni package main import ( "fmt" "net/http" "github.com/urfave/negroni" ) func main() { mux := h.. 더보기
[묘공단] Tucker의 Go 언어 프로그래밍 30장 : RESTful API 서버 만들기 30.1 해법 30.2 사전지식 : RESTful API 30.3 RESTful API 서버 만들기 30.4 테스트 코드 작성하기 30.5 특정 학생 데이터 반환하기 30.6 학생 데이터 추가/삭제하기 30.1 해법 gorilla / mux 와 같은 RESTful API 웹서버 제작을 도와주는 패키지를 설치한다. RESTful API에 맞춰서 웹 핸들러 함수를 만들어준다. RESTful API를 테스트하는 테스트 코드를 만든다. 웹브라우저로 데이터를 조회한다. 30.2 사전지식 : RESTful API REST (Representational State Transfer) 는 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스이다. 30.3 RESTful API 서버 만들기.. 더보기
[묘공단] Tucker의 Go 언어 프로그래밍 29장 : Go언어로 만드는 웹서버 HTTP 웹서버 만들기 HTTP 동작원리 HTTP 쿼리 인수 사용하기 ServeMux 인스턴스 사용하기 파일서버 웹서버 테스트 코드 만들기 JSON데이터 전송 HTTPS웹서버 만들기 HTTP 웹서버 만들기 http.HandleFunc() 로 웹핸들러를 등록하고, http.ListenAndServe() 웹서버를 시작한다. // ch29/ex29.1/ex29.1.go package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "Method : ", r.Method, "\n") fmt.Fprint(w, "Path: ", r.U.. 더보기
[묘공단] Tucker의 Go 언어 프로그래밍 26장 : 단어검색프로그램 목적 여러 텍스트파일에서 단어를 검색한다. 사용법 find 찾을단어 대상텍스트파일 주요패키지 os, path/filepath, strings, bufio 파일 목록을 가져오는 함수 아래소스는 실행할때 인수를 받아서, 해당 인수에 해당하는 파일목록을 출력하는 프로그램이다. //ch26/ex26.1//ex26.1.go package main import ( "fmt" "os" "path/filepath" ) func main() { if len(os.Args) < 3 { // ❶ 실행 인수 개수 확인 fmt.Println("2개 이상의 실행 인수가 필요합니다. ex) ex26.1 word filepath") return } word := os.Args[1] // ❷ 실행 인수 가져오기 files := os... 더보기
[묘공단] Tucker의 Go 언어 프로그래밍 24장~25장 24장 고루틴과 동시성 프로그래밍 25장 채널과 컨텍스트 24장 고루틴과 동시성 프로그래밍 Process : 컴퓨터에서 연속적으로 실행되는 컴퓨터 프로그램, 메모리에 올라와 실행되고 있는 프로ㅓ그램의 인스턴스 Thread : 프로세스내에서 실행되는 여러 흐름단위 컨텍스트 스위칭 : 실행중인 Thread가 다른 Thread로 교체되는것 Go언어는 멀티쓰레드를 지원한다, 24장에서는 어떻게 멀티쓰레드를 사용하는지에 대해서 배워볼수있다. 고루팅 사용법은 go 함수호출 로 사용할수있다. 아래 소스에서는 2개의 고루틴을 생성하여 동시에 실행되는 프로그램이다. //ch24/ex24.1/ex24.1.go package main import ( "fmt" "time" ) func PrintHangul() { hangu.. 더보기
[묘공단] Tucker의 Go 언어 프로그래밍 22장~23장 22장 자료구조 23장 에러핸들링 22장 자료구조 리스트의 기본적인 사용법 list.New()로 새로운 인스턴스를 만들어 PushBack, PushFront, InsertBefore, InsertAfter함수를 사용하여, 리스트의 여러위치에 요소를 삽입할수있다. Front(),Next()함수를 사용하여 각 요소별 순회가 가능하다. e는 List의 pointer변수이다. //ch22/ex22.1/ex22.1.go package main import ( "container/list" "fmt" ) func main() { v := list.New() // ❶ 새로운 리스트 생성 e4 := v.PushBack(4) // ❷ 리스트 뒤에 요소 추가 e1 := v.PushFront(1) // ❸ 리스트 앞에 요소.. 더보기