1. 程式人生 > >在雲平臺上基於Go語言+Google圖表API提供二維碼生成應用

在雲平臺上基於Go語言+Google圖表API提供二維碼生成應用

encode windows style 曾經 margin inf 64位操作系統 regular ipp

二維碼能夠說已經深深的融入了我們的生活其中。到處可見它的身影;但通常我們都是去掃二維碼,

曾經我們分享給朋友一個網址直接把Url發過去,如今我們能夠把自己的信息生成二維碼再分享給他人。

這裏就分享一下基於Go語言+Google圖表API提供二維碼生成功能的小應用,並演示怎樣把它公布到雲平臺上,

讓每一個人都能夠通過網絡訪問使用它。

Google圖表API

Google在http://chart.apis.google.com 上提供了一個將表單數據自己主動轉換為圖表的服務。

只是,該服務非常難交互, 由於你須要將數據作為查詢放到URL中。

此程序為一種數據格式提供了更好的的接口: 給定一小段文本。

它將調用圖表server來生成二維碼(QR碼)。這是一種編碼文本的點格矩陣。

該圖像可被你的手機攝像頭捕獲。並解釋為一個字符串,比方URL,

這樣就免去了你在狹小的手機鍵盤上鍵入URL的麻煩。

應用效果

在文本框中輸入一個URL,如(http://blog.csdn.net/testcs_dn)。點擊Show QR,會生成一張二維碼的圖片

技術分享

構建一個相似的應用程序的前提條件

一個 Bluemix 帳戶。您還沒有? 點擊這裏註冊。已經有,點擊這裏登錄。

對 HTML、CSS 、JavaScript 和Go語言的基本了解。

我提供了全部必要代碼,但對這些技術的基本了解有助於您理解有關的細節。



步驟 1. 創建您的 GO 應用程序

  1. 1、在 Bluemix 用戶界面中,轉至“儀表板”。

  2. 技術分享
  3. 2、單擊創建應用程序

  4. 技術分享
  5. 3、單擊 Web,然後依照指導經驗來選擇入門模板。指定名稱以及選擇編碼方式。
  6. 技術分享
  7. 輸入應用程序名稱
  8. 技術分享
  9. 應用程序名稱是唯一的,接下來要通過它做為二級域名來訪問你的應用!
  10. 點擊完畢之後,須要等待一會兒,然後能夠看到下圖的界面
    1. 技術分享
    2. 這時就能夠訪問你剛剛創建的應用了。例如以下圖:
    3. 技術分享

步驟 2. 準備開發環境

假設您沒還有Go語言的本地執行環境,該過程請參考:《Go語言入門》怎樣在Windows下安裝Go語言編程環境


步驟 3.編寫代碼

1、下載初始Hello World演示樣例代碼

進入您的應用程序,點擊左側的開始編碼,在右側點擊“下載起動器代碼”。

技術分享

2、創建本地應用

在Go的$GOROOT或$GOPATH文件夾下創建一個文件夾。將下載後的起動器代碼解壓到剛創建的文件夾下,

比如我的是: C:\Go\src\web1

打開文件夾下的app.go文件。將文件的內容替換為以下的代碼:

package main

import (
	"log"
	"net/http"
	"os"
	"html/template"
	//for extracting service credentials from VCAP_SERVICES
	//"github.com/cloudfoundry-community/go-cfenv"
)

const (
	DEFAULT_PORT = "8080"
)

var templ = template.Must(template.New("qr").Parse(templateStr)) 

func main() {
	var port string
	if port = os.Getenv("PORT"); len(port) == 0 {
		port = DEFAULT_PORT
	}

	http.HandleFunc("/", helloworld)
	
	log.Printf("Starting app on port %+v\n", port)
	http.ListenAndServe(":"+port, nil)
}


func helloworld(w http.ResponseWriter, req *http.Request) {
  templ.Execute(w, req.FormValue("s"))  
}

const templateStr = `  
<html>  
<head>  
<title>QR Link Generator</title>  
</head>  
<body>  
{{if .}}  
<img src="http://chart.apis.google.com/chart?chs=300x300&cht=qr&choe=UTF-8&chl={{.}}" />  
<br>  
{{.}}  
<br>  
<br>  
{{end}}  
<form action="/" name=f method="GET"><input maxLength=1024 size=70  
name=s value="" title="Text to QR Encode"><input type=submit  
value="Show QR" name=qr>  
</form>  
</body>  
</html> 
`
代碼說明

main 之前的代碼應該比較easy理解。

我們通過一個常量為server設置了默認端口。 模板變量 templ 正式有趣的地方。它構建的HTML模版將會被server執行並顯示在頁面中。

稍後我們將具體討論。

main 函數解析了參數標誌並使用我們討論過的機制將 helloworld 函數綁定到server的根路徑。然後調用 http.ListenAndServe 啟動server。它將在server執行時處於堵塞狀態。

helloworld 僅接受包括表單數據的請求,並為表單值 s 中的數據執行模板。

模板包 html/template 非常強大;該程序僅僅是淺嘗輒止。 本質上。它通過在執行時將數據項中提取的元素(在這裏是表單值)傳給 templ.Execute 執行因而重寫了HTML文本。

在模板文本(templateStr)中,雙大括號界定的文本表示模板的動作。

{{if .}}{{end}} 的代碼段僅在當前數據項(這裏是點 .)的值非空時才會執行。 也就是說,當字符串為空時,此部分模板段會被忽略。

其中兩段 {{.}} 表示要將數據顯示在模板中 (即將查詢字符串顯示在Web頁面上)。HTML模板包將自己主動對文本進行轉義, 因此文本的顯示是安全的。

余下的模板字符串僅僅是頁面載入時將要顯示的HTML。假設這段解釋你無法理解,請參考 文檔 獲得很多其它有關模板包的解釋。

你最終如願以償了:以幾行代碼實現的,包括一些數據驅動的HTML文本的Webserver。 Go語言強大到能讓非常多事情以短小精悍的方式解決。

步驟 4. 本地編譯執行訪問

編譯

你能夠通過在命令行窗體執行命令:go install web1 來完畢編譯。編譯完畢後會在 C:\Go\bin 文件夾下生成web1的exe。

執行

通過上面的方法編譯後,雙擊執行就可以。

也能夠在命令行下切換到文件所在的文件夾,比如:C:\Go\src\web1

然後執行:go run app.go

這時可能會彈出Windows防火墻的安全提示,點擊同意訪問就可以。

訪問

在瀏覽器中訪問,查看效果,打開瀏覽器。輸入:http://localhost:8080/,

在文本框中輸入一個URL,如(http://blog.csdn.net/testcs_dn),點擊Show QR,會生成一張二維碼的圖片

技術分享

掃一掃這張二維碼看看吧


步驟 5. 上傳應用程序

登錄到 Bluemix? 後,能夠使用 cf push 命令來上傳應用程序。

開始之前,您必須:
  1. 1、安裝 Cloud Foundry 命令行界面。

    技術分享

  2. 技術分享
  3. 請依據自己使用的操作系統下載相應的版本號。我使用的是Windows 7 64位操作系統,
  4. 下載Binaries版本號的不須要安裝,直接解壓到Windows文件夾就能夠了
  5. 技術分享
  6. 以下執行的命令你能夠通過訪問 https://www.ng.bluemix.net/docs/#starters/upload_app.html#upload_app__push
  7. 查看屬於自己的命令。
  8. 2、連接到 Bluemix
  9. 打開命令提示符窗體:開始》執行,輸入“cmd”,回車
  10. 執行:cf api https://api.ng.bluemix.net。例如以下圖:
  11. 技術分享
  12. 3、登錄到 Bluemix
  13. 註意,這裏要換成相應你自己賬戶的命令!
  14. cf login -u [email protected] -o [email protected] -s ivu4e

4、發出 cf push 命令時,cf 命令行界面將提供使用 buildpack 來構建並執行應用程序的 Bluemix 環境的工作文件夾。

  1. 從應用程序文件夾中。輸入帶有應用程序名稱的 cf push 命令。

    Bluemix 環境中。應用程序名稱必須是唯一的。

  2. 後面的"-m 512m"是改動應用程序內存配額的,能夠不帶這個參數。例如以下圖:
  3. 技術分享
  4. 註意:執行cf push前將命令行當前文件夾切換到您剛剛創建的應用文件夾,比如我剛剛創建的C:\Go\src\web1,cf push 後面的goinfo要替換為您在Bluemix上創建的應用名稱。
  5. 提示: 使用 cf push 命令時,cf 命令行界面會將當前文件夾中的全部文件和文件夾拷貝到 Bluemix

    確保應用程序文件夾中僅僅包括必需的文件。

  6. cf push 命令上傳應用程序並將其部署到 Bluemix。有關 cf push 的很多其它信息,請參閱 cf 命令。

    有關 buildpack 的信息,請參閱

    使用 cf push 命令部署應用程序時,能夠指定兼容 Cloud Foundry 的定制 buildpack。" style="color: rgb(65, 120, 190); text-decoration: none; font-family: HelveticaNeue, Helvetica, Arial, LucidaGrande, sans-serif;">使用社區 buildpack。

  7. 假設更改了應用程序。能夠通過再次輸入 cf push 命令來上傳這些更改。

    cf 命令行界面會使用您先前的選項以及您對提示的響應來通過新的代碼段更新應用程序的不論什麽執行中實例。

提示: 您還能夠從 Bluemix DevOps Services 上傳或部署應用程序。請參閱在 Node.js 中使用 Web IDE 開發Bluemix 應用程序。

步驟 6. 做個小小的測試

通過儀表板進入您剛剛創建的應用頁面,點擊左側的開始編碼,右側頂部會顯示:您的應用程序正在執行。 http://goqrcode.mybluemix.net

點擊後面的鏈接訪問剛剛公布的應用。

技術分享

在輸入框中輸入您想分享的URL。點擊Show QRbutton就能夠生成二維碼圖片了。

結束語

通過IBM的Bluemix雲平臺,我們能夠輕松的將自己的應用共享到網絡上;

創建Web應用之後會自己主動獲得一個用來訪問應用的二級域名。

通過應用程序概述中的應用程序執行狀況,能夠方便的查看和管理應用執行狀態;

這裏通過一個小樣例展示怎樣將自己的應用公布到IBM的Bluemix雲平臺上,

怎樣與Google在http://chart.apis.google.com 上提供了的圖表服務交互。

假設您有更好的應用或想法,試試通過IBM的Bluemix雲平臺共享出來吧。


在雲平臺上基於Go語言+Google圖表API提供二維碼生成應用