[번역글] init functions in Go

원문 : https://medium.com/golangspec/init-functions-in-go-eac191b3860a init functions in Go Identifier main is ubiquitous. Every Go program starts in a package main by calling identically named function. When this function returns… medium.com 전체 내용은 원문에서 확인하실 수 있으며, 또 내용 중 일부 오역이 포함되어 있을 수 있으니, 가능하면 원문을 참조하시는 걸 추천드립니다. main은 어디에나 있습니다. 모든 Go 프로그램은 패키지에서 main이라 불리는 함수에서 시작합니다. 이 main 함수가 리턴할 때, 프로그..

GitHub CLI

Git을 처음 배울 때, 커맨드 라인에서 배워서 익숙해져있는 것도 있기도 하고, intelliJ를 쓰다보니, 내장된 Git 도구를 사용하기 때문에 UI 툴은 따로 설치하여 사용하지 않았습니다. 아 intelliJ를 사용하기 이전에는 sourceTree를 쓰기도 했었네요. GitHub 데스크탑이라는 GitHub에서 만든 툴도 있지만, 몇번 써보고는 사용하지 않았습니다. 기능이 좋고 나쁘고를 떠나서, 커맨드 라인에서 쓰는 게 딱히 불편하지 않았고, 개발하다가 다른 툴과 계속 왔다갔다하면서 작업하는게 귀찮았습니다. 그래서 intelliJ의 내장된 툴을 쓰거나, 터미널을 실행해서 커맨드 라인에서 Git을 사용하는게 편했습니다. 그런데 이런 제 마음을 GitHub에서 읽었는지, GitHub CLI( https:/..

Special value #ZgotmplZ

Go에서는 HTML을 출력하기 위해서 html/template 패키지를 사용합니다. html/template 패키지의 소개에 보면 맨 첫줄에 "Package template (html/template) implements data-driven templates for generating HTML output safe against code injection."라고 적혀 있습니다. 즉, html/template 패키지를 이용하여 데이터를 포함한 HTML코드를 만들 때, 데이터의 특수 문자를 escaping하여, 출력된 화면에서 원치 않는 코드가 실행되는 것을 막을 수 있다는 의미입니다. 예시를 보면 더 잘 이해할 수 있습니다. import "html/template" ... t, err := templat..

GitHub OAuth 구현하기 (3)

2020/07/04 - GitHub OAuth 구현하기 (1) 2020/07/07 - GitHub OAuth 구현하기 (2) 에서 이어집니다. GitHub OAuth 구현을 실제 소스코드를 통해서 설명하려고 합니다. ( 사용한 언어는 Golang 이지만, 다른 언어를 사용하더라도 비슷한 방식으로 구현할 수 있습니다. ) 먼저 init() 함수에서 OAuth관련 설정을 해 줍니다. 여기서 만든 설정은 전체 앱에서 사용합니다. var OAuthConf *oauth2.Config func init() { OAuthConf = &oauth2.Config{ ClientID: "{{ oauth app client id }}", ClientSecret: "{{ oauth app client secret }}", Re..

[Go] cookie에 object 저장하기.

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