본문 바로가기

golang

(28)
Golang GUI(Webview) - HTML 파일 분리 이번에는 Webview 라이브러리를 사용하면서 HTML 파일을 별도로 분리하는 방법을 알아보겠습니다. 그리고, 좀더 보기좋은 GUI 구성을 위해 부트스트랩도 함께 적용하도록 하겠습니다. 사실 이부분은...CSS 파일을 별도로 인식시켰으면 좋겠지만, 아직까지 별도의 CSS파일을 적용시키는 것은 안되는 것 같습니다. 1. 라이브러리 설치 라이브러리 설치는 이전 강좌를 참고하세요. 2. main.go 파일 작성 main.go 파일에 전체 프로그램 구동을 구현합니다. 아울러, 버튼을 클릭했을 때 동작할 함수(go_hello)를 작성하고, 바인딩해줍니다. Webview라이브러리를 활용하면, go에서 javascript를 실행할 수도 있고, html파일(javascript 포함)에서 go언어를 실행할 수도 있습니다..
Golang GUI(Webview) - 시작하기 Go언어 GUI 라이브러리 중 Webview를 사용해서 데스크탑 앱을 만들어보도록 하겠습니다. Webview는 HTML로 레이아웃을 구성할 수 있어서 간단한 앱은 쉽게 만들 수 있습니다. 1. 라이브러리 설치 이번엔 리눅스환경에서(우분투 20.04) 라이브러리를 설치하겠습니다. sudo apt-get install libgtk-3-dev sudo apt-get install libwebkit2gtk-4.0-dev go get github.com/webview/webview 2. Sample Project 다음으로 간단히 main.go 파일을 생성하고, 아래와 같이 작성해줍니다. package main import "github.com/webview/webview" func main() { w := web..
Go언어 - Fyne 아이콘 이미지 설정 1. icon.png 이미지 파일을 준비합니다. 2. fyne 패키징 툴을 다운받습니다.go get fyne.io/fyne/cmd/fyne3. icon.png파일을 실행파일의 이미지로 패키징합니다.fyne package -icon icon.png
Go언어 - Fyne 한글 폰트 설정 Fyne를 이용해 GUI를 만들던 중 한글 출력이 안된다는 것을 뒤늦게 알게 되었네요.(아래 화면 참조). 오늘은 한글 설정하는 방법에 대해 알아보겠습니다. 샘플로 간단한 메모장 앱을 만들어보겠습니다. 1. main.go위 샘플로 만든 앱의 코드는 아래와 같습니다.package main import ( "fmt" "image/color" _ "unicode/utf8" "fyne.io/fyne" "fyne.io/fyne/app" "fyne.io/fyne/canvas" "fyne.io/fyne/layout" "fyne.io/fyne/theme" "fyne.io/fyne/widget" ) func main() { f := app.New() //f.Settings().SetTheme(theme.LightThem..
Go언어 - Gin Framework(5강 JSON/XML응답) JSON / XML 응답이 섹션에서는 요청 헤더에 따라 애플리케이션이 HTML, JSON 또는 XML 형식으로 응답 할 수 있도록 애플리케이션을 약간 리팩터링합니다.1. 재사용 가능한 함수 만들기Route Handler에서 지금까지는 Gin의 컨텍스트 중 HTML을 사용했습니다. 항상 HTML페이지를 보여줄 때는 괜찮지만, 요청에 따라 응답 형식을 변경하고 싶을 때에는 렌더링을 처리하는 단일 함수로 리팩토링해야합니다(?). 이렇게 함으로써 Route Handler는 유효성 검사(validation) 및 데이터 추출(data fetching)에 집중하도록 할 수 있습니다. Route Handler는 응답 형식에 관계없이 동일한 유효성 검사, 데이터 추출 및 처리를 수행해야합니다. 이 부분이 완료되면 데이터..
Go언어 - Gin Framework(4강 개별 Article 화면 구성) 개별 Article 화면 구성 현재까지 구성한 앱에서는 Article을 클릭했을 때 링크가 작동하지 않았습니다. 이번에는 각 Article에 대한 핸들러와 템플릿을 추가하도록 하겠습니다.1. Route 설정router.GET("/article/view/:article_id", getArticle)main함수의 Route 설정 부분에 위구문을 추가합니다. 위 라우터는 패턴과 맞는 요청에 대해 경로를 일치시키고, 경로 마지막부분을 route 파라미터인 article_id에 저장합니다. 이 라우터에서는 handler함수로 getArticle을 정의합니다. main.go 전체 코드 모습package main import ( //"net/http" "github.com/gin-gonic/gin" ) var rou..
Go언어 - Gin Framework(3강 Article List) Article List 표시이 섹션에서는 index 페이지에 모든 article list를 표시하는 기능을 추가합니다.1.Router 설정원문에 따르면 응용 프로그램이 커질 것을 대비하여 별도의 Router파일에서 경로를 정의하는 방식으로 구성하였는데, 무슨 문제인지 제 실습 중에는 routes.go파일에 따로 코드를 분리하니 에러가 발생했습니다. 그래서 route 를 main() 함수 내부에 구성하도록 하겠습니다. 단, route handler 함수만 별도로 분리해 내도록 하겠습니다.(handlers.article.go) main.go파일은 아래와 같이 코딩합니다.package main import ( //"net/http" "github.com/gin-gonic/gin" ) var router *gi..
Go언어 - Gin Framework (2강 HTML Template 구성) 이것저것 하다보니 일관된 포스팅 하기가 힘드네요...^^;; 오늘은 Gin Framework 강좌를 따라해볼까 합니다. 원 Tutorial은 여기를 참고했습니다. 파일 구성은 아래와 같이 구성하는 것으로 시작합니다. 1. main.gopackage main import ( "net/http" "github.com/gin-gonic/gin" ) func main() { r := gin.Default() r.LoadHTMLGlob("templates/*") r.GET("/", func(c *gin.Context) { // OK 이면 index.html파일에 JSON데이터를 넘겨서 보여줌 c.HTML(http.StatusOK, "index.html", gin.H{ "title": "Home Page", }, ..