Go ile Hızlı Web Uygulamaları

50 %
50 %
Information about Go ile Hızlı Web Uygulamaları
Technology

Published on March 9, 2014

Author: eeozekin

Source: slideshare.net

Description

Go ile web programlamaya bir giriş.

Fast Web Applications with Go ! DevFestW Istanbul ! March 2,2014! Ekin Eylem Ozekin!

İçerik ! ²  GO’ya Giriş! ²  GO ile Web! ²  Go Web İçin Uygun Mu?! ²  Demo Web Uygulaması! ²  Sorular !

Ama Önce Ben ! •  Ekin Eylem Ozekin! •  Lisans Bilgisayar Bilimleri, Yüksek Lisans Yazılım Mühendisliği! •  Şu anda, Boğaziçi Üniversitesinde Doktora! •  GE’de 5 yıl !

GO’ya Giriş ! •  2007 yılı civarında yapılıyor, 2009 anons edildi! •  “GO”ogle tarafından! •  Açık Kaynak! •  C ile çok benzer! •  Statik tipler, derlenebilen! •  Pointer aritmetik yok !

GO’ya Giriş ! •  Otomatik bellek yönetimi, sınıflar (structs), type inference! •  Fonksiyonlar birinci sınıf, fonksiyonel programlamaya uygun! •  Concurrency desteği, channels (Python’daki Pipe’lar gibi) !

GO’ya Giriş ! •  Hızlı ve Dağıtık sistemler için uygun! •  URL üzerinden kütüphaneler direkt eklenebilir! •  UTF-8 desteği (İ, Ğ türkçe karakterler çalışıyor)! •  Yerleşik AppEngine kütüphaneleri !

GO’ya Giriş ! package main! ! import (! "fmt"! "net/http"! )! ! func get_name() (string, string) {! // No reason to break a few rules, right! var hello = "Hello "! audience := "DevFestTR"! return hello, audience! }! ! func handler(writer http.ResponseWriter, request *http.Request) {! hello, audience := get_name()! fmt.Fprintf(writer, hello + audience)! }! ! func main() {! http.HandleFunc("/", handler)! http.ListenAndServe(":8080", nil)! } !

GO’ya Giriş ! •  Yazıldığı gibi okunur, soldan sağa! •  Noktalı virgüller yok! •  Birden fazla değer dönebiliyor (Python’daki tuple’lar gibi, ama gerçekten iki değer)! •  Tek bir binary dosyaya derlenir! •  Bir önceki koda yeniden döneceğiz… !

Go ile Web ! •  Yerleşik http paketi! •  J2EE Servlet teknolojisi ile benzer! •  Ama daha çok Micro-framework gibi !

Go ile Web ! •  C dilinin performansı ile Web geliştirme! •  Yerleşik sunucusu ile deploy edilebilir! •  Apache ya da Nginx’e FastCGI ile deploy edilebilir! •  Apache için mod_go mevcut! •  AppEngine ya da Heroku üzerinde çalışabilir !

Go Web için Uygun Mu? ! Go’yu Web uygulamalarında kullanmalı mıyım? !

Go Web için Uygun Mu? ! Artılar! •  Micro-framework stili http paketi! •  CGI desteği (biraz eski fakat hala sağlam)! •  Derlenebilen, yüksek performans! •  C gibi syntax ama daha iyisi! •  API yeterince olgunlaşmış!

Go Web için Uygun Mu? ! Eksiler! •  PHP’den daha kolay değil (ya da Ruby ya da Python)! •  Diğer programlama dilleri kadar yaygın değil! •  Henüz kendini ispat etmiş değil (kesinlikle tartışmaya açık)!

Go Web için Uygun Mu? ! Son Sözler! •  Service Oriented Architecture ve Micro Framework yapısı birbirleri ile çok uyuşuyor! •  Go’yu tek başına kullanmak zorunda değilsiniz, diğerleri ile birlikte kullanın! •  Google şu anda kullanıyor (kullanmak için yeterli sebep değil mi?)!

Demo ! Go ile Web Uygulaması ! ! Let’s GO!

Kaynak Kodu ! 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 Sunucu Taraflı Kod! package main! import ("html/template"; "fmt"; "net/http"; "strconv")! func main() {! http.HandleFunc("/", form)! http.HandleFunc("/show_age", form_handler)! http.ListenAndServe(":8080", nil)! }! func form(writer http.ResponseWriter,! request *http.Request) {! genderList := []string { "Male", "Female" }! t, _ := template.ParseFiles("form.html")! t.Execute(writer, map[string]interface{} {! "genders": genderList,! "title": "DevFest Applicant Form",! })! }! func form_handler(writer http.ResponseWriter,! request *http.Request) {! gender := request.FormValue("gender")! message := ""! if ("1" == gender) {! message = "You don't ask a woman her age."! } else {! age, _ := strconv.Atoi(request.FormValue("age"))! if (age < 1000) {! message = "This boy is still alive and kicking"! } else {! message = ”Still too young!"! } ! }! fmt.Fprintf(writer, message)! } ! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Şablon Kodu! <h1>{{.title}}</h1>! <p>! Fill in your gender and age.! <br />! And I will tell you if you are old or not...! </p>! <form action="/show_age" method="POST">! <dl>! <dt>Gender</dt>! <dd>! <select name="gender" style="width: 125px;">! {{range $index, $value := .genders}}! <option value="{{$index}}" />{{$value}}! {{end}}! </select>! </dd>! <dt>Age</dt>! <dd><input type="text" name="age" /></dd>! </dl>! <input type="submit" value="Save">! </form> !

Daha Fazla Bilgi ! ²  http://golang.org/doc/! ²  http://golang.org/doc/articles/gos_declaration_syntax.html! ²  http://blog.iron.io/2013/08/go-after-2-years-in-production.html!

Sorular? ! ? ! Dinlediğiniz için Teşekküler ! Ekin Eylem Ozekin! eeozekin@gmail.com !

Soru ve Cevaplar ! •  Database Abstraction için bir katman mevcut mu?! •  Sınıf konseptinin biraz eksik olması, ORM yapısını da biraz baltalıyor. Buna rağmen bazı denemeler mevcut. Şurada güzel bir açıklama da var: http://jmoiron.net/blog/golang-orms/ . Aynı şekilde veri tabanları için bindinglerde mevcut: http://go-lang.cat-v.org/library-bindings! •  User Interface için ne kullanabiliriz?! •  GTK bindinglerini kullanabilirsiniz. Kullanabileceğiniz diğer kütüphaneler için: http://go-lang.cat-v.org/ library-bindings! •  Python’da geriye birden fazla değer dönerken, aslında Tuple dönüyor. Go’da böyle bir şey var mı?! •  Hayır yok. Go’da gerçekten geriye birden fazla değer dönüyor! •  Template de bir şey değiştirdiğim zaman yeniden compile etmem gerekiyor mu?! •  Hayır gerekmiyor. Template kodu üzerinde değişiklik yaptığınız zaman bunun etkisini sayfayı yenilediğiniz zaman hemen görebiliyorsunuz. Ayni şekilde sunucuya deployment yaparken, template dosyalarınızı da taşımayı unutmayın. !

Add a comment

Related presentations

Related pages

Eylem Ozekin - HubSlide

Go ile Hızlı Web Uygulamaları Go ile web programlamaya bir giriş. 2 months ago. Technology. Fast Web Applications with Go
Read more

Next Browser - Fast & Private - Google Play'de Android ...

GO Launcher ekip tarafından en hızlı web tarayıcıs ... % 1 Hızlı, ekolayzır ile, ... Advanced Task Manager. uygulamaları öldürür.
Read more

Chrome Web Mağazası uygulamaları

Web uygulamaları CD'den yüklediğiniz programlara ... korumak için hızlı düşünün ve daha hızlı ... ile Flixter Filmleri. Film ...
Read more

web uygulamaları - mertakkaya.net

Go ile Web Uygulamaları Yazma. ... load ve save yöntemleriyle veri yapıları oluşturmak net/http paketiyle web uygulamaları Posted in: ...
Read more

CM Launcher - Hızlı, Güvenli Android Tema Uygulaması

CM Launcher - Hızlı, ... Beş yüz bini aşkın indirilmesi ile birlikte alanında Help ... Network -Web Uygulamaları.
Read more

Web Uygulamaları ve İncelemeleri - tamindir.com

Web Uygulamaları. Popüler Web Uygulamalar ... Giffffr ile Kendi Animasyonlu Gif Dosyalarınızı Hazırlayın. Antivirüs ESET Online Scanner .
Read more

Web Uygulaması Hizmeti | Microsoft Azure

İşinizle ölçeklendirilebilen görev açısından kritik Web uygulamaları ... geliştiricilerin hızlı bir şekilde güçlü web ... ile ...
Read more

Logo Go3 | Logo Muhasebe Programı

Logo Go3 İş Uygulamalarınızı 3. Boyuta Taşıyın! Kişiselleştirilebilir, hızlı, sade ve pratik arayüzlü yepyeni bir platform GO 3 ile iş ...
Read more

Go!Go!Go!:Racer - Google Play'de Android Uygulamaları

Go!Go !Go! Racer'da ... MARVEL'in en iyi kahraman ve kötü adamları ile dolu dev bir Aksiyon ... En iyi atari tarzı sokak deneyiminde en hızlı ...
Read more