간단한 Web Framework 구현하기 (2) - 간단한 Web App

|

간단한 Web App

먼저 단순히 사용자의 Request와 Response를 처리하는 프로그램을 작성합니다.

main.go

package main

import (
	"fmt"
	"net/http"
)

func main() {
	fmt.Println("Simple Web Framework")

	http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
		fmt.Fprintln(w, "This is an index page.")
	})

	http.HandleFunc("/about", func(w http.ResponseWriter, req *http.Request) {
		fmt.Fprintln(w, "This is an about page.")
	})

	http.ListenAndServe(":8080", nil)
}

간단한 Web Framework 구현하기 (1) - 구조

|

Go언어 기반 간단한 Web Framework 구현

사용자로부터 요청(Request)이 오면 응답(Response)를 할 수 있는 간단한 Web Framework 예제코드입니다.

참고로 한 책은 Go언어 웹프로그래밍 철저입문입니다.


Web Framework 요구사항

Web Framework는 다음과 같은 기능을 제공해야 합니다.

  • URI 패턴 맵핑 기능
  • 로그 처리
  • 에러 처리
  • 정적 파일 처리
  • 사용자 인증 및 권한 관리
  • 보안 처리
  • 세션 상태 관리
  • 데이터베이스 관리
  • 웹 요청 및 응답 추상화


Web Framework 구조도

Image

각각의 요소들은 go 언어를 이용해서 하나씩 구현해봅니다.

Shift + 숫자 키패드 동작을 Windows 처럼 동작하도록 설정

|

Shift + 숫자 키패드 동작을 Windows 처럼 동작하도록 설정

Ubuntu 버전마다 설정 방법의 차이가 있을 수 있습니다.

Ubuntu 16.04 LTS 에서는 gnome-tweak-tool 툴을 이용하는 것이 간편합니다.

  • gnome-tweak-tool 설치(sudo apt-get install gnome-tweak-tool)
  • gnome-tweak-tool 실행
  • Typing 항목 선택
  • Miscellaneous compatibility options 선택
  • Shift with numeric keypad keys works as in MS Windows 선택


만약 Ubuntu Mint 같은 버전을 쓸 경우에는 기본적으로 Keyboard Setting에 위 항목이 존재하는 경우가 있습니다.

  • System Settings에서 Keyboard 선택
  • Options 선택
  • Miscellaneous keyboard options 선택
  • Shift with numeric keypad keys works as in MS Windows 선택

alias 사용법

|

alias

alias 기능을 이용해서 자주 사용하는 명령어를 보다 간편하게 사용할 수 있습니다.

$ alias

alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

Go 언어 Proxy 설정 방법

|

Proxy Setting

go get 명령어를 사용할 때 Proxy를 거치도록 하는 방법입니다.

다음과 같은 방법으로 사용할 수 있습니다.

$ http_proxy=127.0.0.1:8080 go get github.com/revel/revel

alias 명령을 이용하면 좀 더 편리하게 사용할 수 있습니다.

$ alias go='http_proxy=127.0.0.1:8080 go'