[Go] cookie에 object 저장하기.

gorilla 웹 툴킷이라는 Go의 서드파티 라이브러리가 있습니다. 그 중에 session 이라는 패키지는 쿠키, 세션등을 편리하게 이용할 수 있는 기능을 제공합니다. 이 글에는 session 패키지를 이용해서 사용자 정보를 쿠키에 저장하다가 알게 된 것을 기록해 두려고 합니다. 구현하려던 기능은 이렇습니다. 사용자가 접속하면 로그인 정보를 확인합니다. 로그인 되지 않은 경우, 로그인을 요청합니다. 로그인 후 사용자 정보를 쿠키에 저장합니다. 일정 시간동안은 브라우져를 종료하더라도 쿠키에서 사용자 정보를 읽어 로그인하지 않도록 합니다. 그렇게 하기위해 다음과 같은 사용자 정보를 보관할 구조체를 선언합니다. type User struct { Name string Email string } 그리고 main...

왜 http.handleFunc가 두번 호출될까?

Go로 간단한 테스트 페이지를 만들었는데, http.HandleFunc가 두번 호출되는 현상을 발견했습니다. 전부가 그런건 아니었고, 한 개의 핸들러만 두 번씩 호출되었는데, 그 원인은 의외로 간단했습니다. 먼저 코드는 대충 이렇게 생겼습니다. func main() { http.HandleFunc("/", RenderMainView) log.Fatal(http.ListenAndServe(":8000", nil)) } func RenderTemplate(w http.ResponseWriter, name string, data interface{}) { tmpl, _ := template.ParseFiles(name) tmpl.Execute(w, data) } func RenderMainView(w http..

윈도우10 클립보드

MacOS에서 가장 많이 쓰는 앱 중하나는 Clipy(https://github.com/Clipy/Clipy) 가 아닐까 싶습니다. 아마 MacOS를 쓰시는 분이라면, 클립보드 확장 앱인 Clipy는 알고 계시거나 써보셨을 것 같습니다. 아직 안써보셨다면 꼭 써보세요. 후회하지 않으실 겁니다. 무엇보다 좋은 점 중 하나는 한번 복사한 것은 이력이 남기 때문에 다시 불러오기 쉽고, 단축키를 지원하기 때문에 마우스를 사용하지 않아도 된다는 점이 작업 능률을 많이 높혀 줍니다. 저는 요새 윈도우를 많이 사용하면서, 저거는 참 아쉬웠는데, 최근에 윈도우에도 비슷한 기능이 있다는 걸 알게되어 잘 쓰고 있습니다. 바로 윈도우10의 클립보드 기능인데요. Ctrl + C로 복사한 후, Ctrl + v 대신 윈도우+v를..

GitHub OAuth 구현하기 (2)

2020/07/04 - GitHub OAuth 구현하기 (1) 에서 이어집니다. GitHub OAuth의 인증을 진행하기 위해, 3가지 파일을 만들었습니다. main.go : 앱의 라우팅 및 OAuth 인증을 진행하기 위한 코드 login.html : "GitHub으로 로그인하기" 버튼을 보여주며, 인증 되지 않은 사용자가 처음 접하는 화면입니다. main.html : GitHub으로부터 인증 받은 이후 처음 보여질 화면입니다. main.go에서 정의한 라우팅은 http.HandleFunc("/", MainHandler) http.HandleFunc("/auth", AuthHandler) http.HandleFunc("/auth/callback", CallbackHandler) log.Fatal(http..

[번역글] How I write HTTP services after eight years.

원문 : How I write HTTP services after eight years. ( https://pace.dev/blog/2018/05/09/how-I-write-http-services-after-eight-years.html ) 관련 동영상 : GopherCon 2019: Mat Ryer - How I Write HTTP Web Services after Eight Years 전체 내용은 원문에서 확인하실 수 있으며, 또 내용 중 일부 오역이 포함되어 있을 수 있으니, 가능하면 원문을 참조하시는 걸 추천드립니다. 서비스를 만드는 방법은 시간이 지남에 따라 바뀌어왔습니다. 그래서 지금은 서비스를 어떻게 만들고 있는지 각각의 경우에 따라 유용한 패턴을 예로 들어 공유하고 싶습니다. 서버 구조체..