#3 Go'da Hava Durumu Uygulaması Yazalım
Ö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.
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.
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.
No Comments Yet