JavaScript aktifken sayfa daha iyi gözükür.

#3 Go'da Hava Durumu Uygulaması Yazalım

 ·  ☕ 2 dk okuma süresi  ·  🐧 ksckaan1

Önceki bölümde Webview kütüphanesini kullanarak pencere tasarımı yaptık ve Go ile oluşturduğumuz sunucuyu bu pencerede gösterdik. Sonuç olarak elimize kullanılabilir bir uygulama geçti. Bu bölümde ise sunucu klasörümüzü uygulamanın içerisine gömeceğiz.

Statik Kütüphanesi

Statik kütüphanesinin çalışma mantığı, belirlediğimiz klasör içerisindeki dosyaları şifreliyor (hash mantığı gibi) ve uygulamanın içerisinde kod olarak kullanıyor. Örnek olarak bir resim dosyasını koda çeviriyor ve programın içerisinde kullanabiliyoruz.

Statik kütüphanesini kurmak için komut satırına go get github.com/rakyll/statik/fs yazalım. Bu işlem sonucunda komut satırımızda kullanabileceğimiz statik adlı bir komutumuz olması gerekiyor. statik -help komutu ile kurulumu test edebilirsiniz. Bu komutun yardım bilgilerini göstermesi gerekir.

Eğer statik komutu sisteminizde bulunamıyorsa, Windows üzerinde C:\\Users\kullanıcıadınız\go\bin\ dizinini ortam değişkenlerine ekleyebilirsiniz.

GNU/Linux ve MacOS sistemlerde ise bash için export PATH="/home/kullanıcıadınız/go/bin/:$PATH" komutunu çalıştırıp kullanabilirsiniz. Kalıcı olmasını istiyorsanız, Ev dizininizdeki .bashrc veya .bash_profile dosyanıza bu komutu ekleyebilirsiniz.

Statik ile yapacağımız işlem çok kolay. Projemizin dizinindeyken aşağıdaki komutu yazalım.

statik -src=./sunucu/ -f

Yukarıdaki komutta kaynak olarak sunucu klasörümüzü kullanmasını ve -f argümanı ile eğer varsa oluşturulan kodun üzerine yazmasını istiyoruz. Böylece kod oluşturmadan önce eski oluşturulan kodları silmemiz gerekmez.

Bu işlemlerin sonucunda projemizin ana dizininde statik isimli bir klasör ve bu klasörün içine de statik.go isimli dosyamız oluşturuldu. statik.go içindeki kodlarımızı değiştirmemeye özen gösterelim.

Aslında statik isimli bir paket oluşturduk. Bu paketi çalıştırabilmek için main.go dosyamıza import edelim.

1
2
3
4
import (
    "github.com/rakyll/statik/fs"
    _ "./statik"
)

Son olarak web sunucumuzun oluşturduğumuz statik kodlarını kullanması için main.go dosyamızı aşağıdaki gibi düzenleyelim.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package main

import (
	"fmt"
	"net/http"

	_ "./statik"
	"github.com/rakyll/statik/fs"
	"github.com/webview/webview"
)

func main() {
	//Dosya sistemi nesnemizi oluşturalım.
	statikDosya, _ := fs.New()

	//FileServer fonksiyonunun içindekileri silerek
	//statikDosya nesnesini girelim
	klasör := http.FileServer(statikDosya)
	http.Handle("/", http.StripPrefix("/", klasör))
	go http.ListenAndServe(":5555", nil)

	pencere := webview.New(true)
	pencere.SetTitle("Hava Durumu Uygulamam")
	pencere.SetSize(400, 300, webview.HintFixed)
	pencere.Navigate("http://localhost:5555")
	pencere.Bind("sehirSorgu", func(şehirİsmi string) {
		a, b, c, d, e := şehirBilgi(şehirİsmi)
		jsKodumuz := fmt.Sprintf("veriGoster('%s','%s','%.1f','%s','%s')", a, b, c, d, e)
		pencere.Eval(jsKodumuz)
	})
	pencere.Run()
}

Sadece main() fonksiyonumuzun başındaki 2 satırı değiştirerek kolayca işimizi hallettik. Artık uygulamamız dışarıdan bir dosyaya bağımlı değildir. sunucu klasöründeki herhangi bir dosyada değişiklik yaptığınızda statik -src=./sunucu/ -f komutunu yeniden çalıştırmayı unutmayalım.

Seriyi okumak için gösterdiğiniz gayret için teşekkür ederim. Bir sorunuz varsa Twitter/@ksckaan1 adresinden bana ulaşabilirsiniz.

Uygulamanın kodlarını GitHub’da görmek için tıklayın!

Şurada Paylaş