提交 86cb9576 编写于 作者: P pasali

Table of Contens, intro and first chapter in Turkish

上级 810cc19d
# 1 Go Ortam Yapılandırması
Go dünyasına hoş geldiniz, hadi keşfetmeye başlayalım!
Go hızlı derlenebilen, hafıza işlemlerini otomatik halleden, paralel işleme olanak sağlayan bir programlama dilidir. Go'nun avantajları:
- Büyük projeler bir kaç saniyede derlenebilir.
- C-stili `header` dosyalarıyla ilgi sorunlardan arındırılmış, anlaşılması kolay bir yazılım modeli sağlıyor.
- Veri tiplerinde seviyeler olamayan statik bir dil, bu sayede geliştiriciler tipleri arasındaki ilişkilerle uğraşak zaman harcamıyor. Hafif nesne-yönelimli dil olarak değerlendirilebilir.
- Hafızadaki kullanılmayan verileri otomatik temizliyor(garbage collection). Parelel programlar ve programlar arası bağlantı için destek sunuyor.
- Çok çekirdekli bilgisayarlar için tasarlanmıştır.
Go derlenen bir dil. Yorumlanan ya da dinamik tipli dillerin geliştirme verimliliğini statik dillerin güvenliği ile birleştiriyor. Modern, çok çekirdekli bilgisayarlar ile ağ programlamanın gelecekti dili olacaktır. Bu amaçlar doğrultusunda, seçilecek dilin oldukça maliyetli hafif bir tip sistemi, paralel işlemler için bir model ve tam anlamıyla optimize edilmiş bir hafıza denetimi gibi bir kaç soruna çözüm getirmiş olması gerkiyor. Uzun süredir, bu sorunlara çözüm üretmeyi hedefleyen bir paket veya araç çıkmaması Go dilinin doğmasını sağlayacak motivasyonu oluşturmuştur.
Bu bölümde, size Go geliştirme ortamınızı nasıl kurup, yapılandıracağınızı göstereceğim.
## Links
- [İçerik](preface.md)
- Sonraki bölüm: [Kurulum](01.1.md)
# 1.1 Kurulum
## Go'yu kurmanın üç yolu
Bilgisayarınızda Go geliştirme ortamını yapılandırmanın bir çok youlu var, ve hangisini isterseniz onu seçebilirsiniz. En çok tercih edilen üç yol aşağıdakilerden oluşmaktadır.
- Resmi kurulum paketleri.
- Go ekibi Windows, Linux, Mac ve diğer işletim sistemleri için pratik bir kurulum paketi sunuyor. Muhtemelen başlamanın en kolay yolu da bu paket.
- Kaynak kodunu kullanarak kurmak.
- Unix benzeri sistemleri kullananlar için popüler bir yöntem.
- Üçüncü parti yazılımları kullanarak.
- Go'yu kurmak için bir çok üçüncü parti yazılım mevcut, Ubuntu/Debian için apt-get, Mac için homebrew.
Eğer birden fazla Go sürümünü kurmak isterseniz, [GVM](https://github.com/moovweb/gvm) aracını kullanabilirsiniz. Birden fazla sürümü kurmanın en iyi yolu bu aracı kullanmak, aksi halde kendiniz uğraşmak zorunda kalacaksınız.
## Kaynak kodu kullanarak
Go'nun bazı bölümleri Plan 9 C ve AT&T derleyicisi kullanarak yazılmıştır, bu yüzden bir sonraki adıma geçmek için bir C derleyicisi kurmanız gerekiyor.
Mac için, daha önce xcode'u kurduysanız zaten derleyiciniz var demektir.
Unix türevi sistemler için, gcc ya da benzer bir derleyici kurmalısınız. Örneğin, apt-get paket yöneticisini kullanarak(Ubuntu/Debian), gerekli derleyici paketlerini kurabilirsiniz:
`sudo apt-get install gcc libc6-dev`
Windows için , gcc kurmak için önce MinGW'yi kurmanız gerekmektedir. Kurulum bittikten sonra ortam değişkenlerini yapılandırmayı unutmayın.( ***Bu formattaki satırlar çevirmenin yorumlarını içerir: 64-bit Windows kullanıyorsanız, MinGW'nin 64-bit sürümünü kurmalısınız*** )
Go ekibi kaynak kodlarını yönetmek için [Mercurial](http://mercurial.selenic.com/downloads/) kullanıyor, Go'nun kaynak kodlarını alabilmek için sizinde yüklemeniz gerekiyor.
Bu aşamada, aşağıdaki komut Go kaynak kodunu klonlayıp, derleyecektir.( ***Kaynak kodlarını bulunduğunuz dizine klonlayacaktır. Devam etmeden önce çalışma dizininize geçin. Bu işlemin sonuçlanması biraz zaman alabilir.*** )
hg clone -u release https://code.google.com/p/go
cd go/src
./all.bash
"ALL TESTS PASSED." mesajı kurulumun başarılı bir şekilde yapıldığını bildirir.
Windows için , `all.bat` isimli dosyayı çalıştırarak da aynı sonuca ulaşabilirsiniz.
Eğer Windows kullanıyorsanız, kurulum paketi sizin için ortam değişkenlerini otomatik olarak yapılandırcaktır. Unix türevi sistemlerde, aşağıdaki komutları kullanarak ortam değişkenlerini ayarlayabilirsiniz. ( ***Eğer Go sürümünz 1.0dan büyükse GOBIN değişkeni otomatik olarak GOROOT/bin olarak ayarlanacaktır. Sonraki bölümde daha ayrıntılı inceleyeceğiz.***)
export GOROOT=$HOME/go
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOROOT/bin
Eğer aşağıdaki ekranı görebiliyorsanız, kurulumunuz tamamlanmış demektir.
![](images/1.1.mac.png?raw=true)
Şekil 1.1 Kaynak kod ile Go kurduktan sonraki bilgilendirme ekranı
Ekranda Go bilgilerini görebiliyorsanız, kurulum başarılı olmuş demektir. Eğer "komut bulunamadı" uyarısını alırsanız, $PATH ortam değişkenin Go kurulum dizinini içerip içermediğini kotrol edin.
## Standart kurulum paketlerini kullanarak
Go desteklediği her işletim sistemi için tek tıkla çalışan kurulum paketlerine sunar. Bu paketler Go'yu öntanımlı olarak `/usr/local/go` (`c:\Go` Windows'da )dizinine kurar. Tabiki bunu değiştirebilirsiniz, ama yukarıda gösterilen bütün ortam değişkenlerinide güncellenmeniz gerekcektir..
### Sisteminizin 32-bit mi yoksa 64-bit mi olduğunu nasıl anlarsınız?
Bir sonraki adım işletim sistemine bağlı, bu yüzden standart kurulum paketlerini indirmeden önce bunu öğrenmeliyiz.
Eğer Windows kullanıyorsanız `Win + r` tuşlarına basın. Açılan pencerede `systeminfo` yazıp enter tuşuna basarsınız size işletim sisteminiz hakkında bilgiler verecektir. "system type" ile başlıyan satırı bulun, eğer "x64-based PC" ifadesini görürseniz, bilgisayarınız 64-bit aksi halde 32-bit'tir.
Ben şiddetle 64-bitlik paketi indirmenizi öneriyorum. Eğer Mac kullanıyorsanız Go artık 32-bitlik işlemciler için destek sunmuyor.
Linux kullanıcılar `uname -a` ile gerekli bilgiye ulaşabilir.
Eğer bilgisayarınız 64-bit ise aşağıdaki gibi bir ekran görmeniz gerekiyor:
<diğer bilgiler> x86_64 x86_64 x86_64 GNU/Linux
// Ubuntu 10.04 türevlerinde aşağıdaki gibide görülebilir
x86_64 GNU/Linux
32-bit ise:
<diğer bilgiler> i686 i686 i386 GNU/Linux
### Mac
[İndirme sayfasına](http://code.google.com/p/go/downloads/list) gidin , 32-bit sistemler için `go1.0.3.darwin-386.pkg` ya da 64-bit sistemler için `go1.0.3.darwin-amd64.pkg` seçin. Sayfanın sonuna gidip "next" tıklayın, kurulum bitince `~/go/bin` $PATH değişkenine otomatik olarak eklenecektir. Bir terminal açıp `go` yazın ve enter tuşuna basın. Şekil 1.1'dekine benzer bir çıktı almanız gerekiyor.
### Linux
[İndirme sayfasına]((http://code.google.com/p/go/downloads/list) gidin , 32-bit sistemler için `go1.0.3.linux-386.tar.gz` ya da 64-bit sistemler için `go1.0.3.linux-amd64.tar.gz` seçin. Go'yu `$GO_INSTALL_DIR` altına kurmak istediğinizi varsayalım. `tar zxvf go1.0.3.linux-amd64.tar.gz -C $GO_INSTALL_DIR` komutunu kullanarak arşiv dosyasını istediğiniz dizine açın. $PATH değişkenini ayarlayın: `export PATH=$PATH:$GO_INSTALL_DIR/go/bin`. Bir terminal açıp `go` yazın ve enter tuşuna basın. Şekil 1.1'dekine benzer bir çıktı almanız gerekiyor.
### Windows
[İndirme sayfasına]((http://code.google.com/p/go/downloads/list) gidin, 32-bit sistemler için `go1.0.3.windows-386.msi` ya da 64-bit sistemler için `go1.0.3.windows-amd64.msi` seçin. Sayfanın sonuna gidip "next" tıklayın, kurulum bitince `c:/go/bin` $PATH değişkenine otomatik olarak eklenecektir. Bir terminal açıp `go` yazın ve enter tuşuna basın. Şekil 1.1'dekine benzer bir çıktı almanız gerekiyor.
## Üçüncü parti yazılımları kullanarak
### GVM
GVM üçüncü parti çoklu Go versiyonlarını kullanmayı sağlayan bir yazılım, ruby için rvm gibi. Kullanımı oldukça basit. Aşağıdaki komutları terminalinize yazarak kurabilirsiniz:
bash < <(curl -s https://raw.github.com/moovweb/gvm/master/binscripts/gvm-installer)
Sonrasında Go'yu kurmak için:
gvm install go1.0.3
gvm use go1.0.3
İşlemler bitince, hazırsınız.
### apt-get
Ubuntu en popüler Linux dağıtımlarından biridir. Ubuntu `apt-get` paket yöneticisini kullanıyor. Aşağıdaki komutlarla Go'yu rahatça kurabilirsiniz.
sudo add-apt-repository ppa:gophers/go
sudo apt-get update
sudo apt-get install golang-stable
### Homebrew
Homebrew Mac işletim sistemi için yazılmış bir paket yönetim sistemidir. Go'yu kurmak için aşağıdaki komutu kullanabilirsiniz.
brew install go
## Linkler
- [İçerik](preface.md)
- Önceki bölüm: [Go ortam yapılandırma](01.0.md)
- Sonraki bölüm: [$GOPATH ve çalışma ortamı](01.2.md)
***Go ile Web Uygulaması Geliştirme***
======================================
### Amaç
Çünkü web uygulamaları geliştirmek ile ilgileniyorum, boş zamanlarımı bu açık kaynaklı kitabı yazarak geçiriyorum. Tabi bu web uygulamaları geliştirmede çok iyi olduğumu göstermiyor; web uygulaması geliştirirken Go ile neler yaptığı paylaşmak istiyorum.
- PHP/Python/Ruby ile çalışalanlar, Go ile nasıl web uygulaması geliştirilir öğreneceksiniz.
- C/C++ çalışılanlar, internetin nasıl çalıştığını öğreneceksiniz.
Ben, öğrenmenin asıl amacının paylaşmak olduğunu düşünüyorum. Hayatta beni en çok mutlu eden şey, bildiklerimi diğer insanlarla paylaşmak.
# Bağış
AliPay: <img src="../zh/images/alipay.png" alt="alipay" width="100" height="100">
English Donate:[donate](http://beego.me/donate)
## Topluluk
QQ群:386056972
BBS:[http://golanghome.com/](http://golanghome.com/)
### Bilgilendirme
- [四月份平民 April Citizen](https://plus.google.com/110445767383269817959) (review code)
- [洪瑞琦 Hong Ruiqi](https://github.com/hongruiqi) (review code)
- [边 疆 BianJiang](https://github.com/border) (write the configurations about Vim and Emacs for Go development)
- [欧林猫 Oling Cat](https://github.com/OlingCat)(review code)
- [吴文磊 Wenlei Wu](mailto:spadesacn@gmail.com)(provide some pictures)
- [北极星 Polaris](https://github.com/polaris1119)(review whole book)
- [雨 痕 Rain Trail](https://github.com/qyuhen)(review chapter 2 and 3)
### Lisans
Aksi belirtilmedikçe, kitap [CC BY-SA 3.0 License](http://creativecommons.org/licenses/by-sa/3.0/) ile,
kaynak kodlar ise [BSD 3-Clause License](<https://github.com/astaxie/build-web-application-with-golang/blob/master/LICENSE.md>) ile lisanslanmıştır.
- 1.[Go ortam yapılandırması](01.0.md)
- 1.1. [Kurulum](01.1.md)
- 1.2. [$GOPATH ve çalışma ortamı](01.2.md)
- 1.3. [Go komutları](01.3.md)
- 1.4. [Go geliştirme araçları](01.4.md)
- 1.5. [Özet](01.5.md)
- 2.[Temel Go bilgisi](02.0.md)
- 2.1. ["Hello, Go"](02.1.md)
- 2.2. [Go temelleri](02.2.md)
- 2.3. [Kontrol yapıları ve fonksiyonlar](02.3.md)
- 2.4. [struct](02.4.md)
- 2.5. [Nesne-Yönelim](02.5.md)
- 2.6. [interface](02.6.md)
- 2.7. [Aynıandalık](02.7.md)
- 2.8. [Özet](02.8.md)
- 3.[Web temelleri ](03.0.md)
- 3.1. [Web'in çalışma prensipleri](03.1.md)
- 3.2. [Basit bir web sunucu oluşturma](03.2.md)
- 3.3. [Go, Web'le nasıl çalışıyor](03.3.md)
- 3.4. [Http paketine giriş](03.4.md)
- 3.5. [Özet](03.5.md)
- 4.[Kullanıcı formu](04.0.md)
- 4.1. [Form girdilerini işleme](04.1.md)
- 4.2. [Girdilerin doğrulanması](04.2.md)
- 4.3. [Cross site scripting](04.3.md)
- 4.4. [Duplicate submissions](04.4.md)
- 4.5. [Dosya yükleme](04.5.md)
- 4.6. [Özet](04.6.md)
- 5.[Veritabanı](05.0.md)
- 5.1. [veritabanı/sql arayüzü](05.1.md)
- 5.2. [MySQL](05.2.md)
- 5.3. [SQLite](05.3.md)
- 5.4. [PostgreSQL](05.4.md)
- 5.5. [Beedb ile ORM tabanlı geliştirme](05.5.md)
- 5.6. [NoSQL veritabanı](05.6.md)
- 5.7. [Özet](05.7.md)
- 6.[Veri depolama ve oturumlar](06.0.md)
- 6.1. [Oturumlar ve çerezler(Session - Cookie)](06.1.md)
- 6.2. [Oturumlar Go'da nasıl kullanılıyor](06.2.md)
- 6.3. [Oturumları sakalama](06.3.md)
- 6.4. [Oturum çalınmasını engelleme](06.4.md)
- 6.5. [Özet](06.5.md)
- 7.[Metin dosyaları](07.0.md)
- 7.1. [XML](07.1.md)
- 7.2. [JSON](07.2.md)
- 7.3. [Regexp](07.3.md)
- 7.4. [Şablonlar](07.4.md)
- 7.5. [Dosyalar](07.5.md)
- 7.6. [Dzigiler](07.6.md)
- 7.7. [Özet](07.7.md)
- 8.[Web servisleri](08.0.md)
- 8.1. [Soketler](08.1.md)
- 8.2. [WebSocket](08.2.md)
- 8.3. [REST](08.3.md)
- 8.4. [RPC](08.4.md)
- 8.5. [Özet](08.5.md)
- 9.[Güvenlik ve şifreleme](09.0.md)
- 9.1. [CSRF saldırıları](09.1.md)
- 9.2. [Girdi filtreleme](09.2.md)
- 9.3. [XSS saldırıları](09.3.md)
- 9.4. [SQL enjeksiyonu](09.4.md)
- 9.5. [Şifre saklama](09.5.md)
- 9.6. [Veri şifreleme ve çözme](09.6.md)
- 9.7. [Özet](09.7.md)
- 10.[Uluslararasılaştırma ve yerelleştirme](10.0.md)
- 10.1 [Zaman dilimi](10.1.md)
- 10.2 [Yerelleştirilmiş kaynaklar](10.2.md)
- 10.3 [Uluslararası siteler](10.3.md)
- 10.4 [Özet](10.4.md)
- 11.[Hata yakalama, hata ayıklama ve test etme](11.0.md)
- 11.1. [Hata yakalama](11.1.md)
- 11.2. [GDB kullanarak hata ayıklama](11.2.md)
- 11.3. [Test durumları yazmak](11.3.md)
- 11.4. [Özet](11.4.md)
- 12.[Yaylınlama ve Bakım](12.0.md)
- 12.1. [Loglar](12.1.md)
- 12.2. [Hatalar ve Çökmeler](12.2.md)
- 12.3. [Yayınlama](12.3.md)
- 12.4. [Yedek ve geri dönüştürme](12.4.md)
- 12.5. [Özet](12.5.md)
- 13.[Web Çatısı oluşturmak](13.0.md)
- 13.1. [Proje Programı](13.1.md)
- 13.2. [Yönlendirici ayarları](13.2.md)
- 13.3. [Controller tasarlamak](13.3.md)
- 13.4. [Loglar ve yapılandırmalar](13.4.md)
- 13.5. [Blog ekleme, silme ve güncelleme](13.5.md)
- 13.6. [Özet](13.6.md)
- 14.[Web Çatısı tasarlama](14.0.md)
- 14.1. [Statik dosyalar](14.1.md)
- 14.2. [Session](14.2.md)
- 14.3. [Form](14.3.md)
- 14.4. [Kullanıcı validasyonu](14.4.md)
- 14.5. [Çoklu dil desteği](14.5.md)
- 14.6. [pprof](14.6.md)
- 14.7. [Özet](14.7.md)
- Ek: [Referanslar](ref.md)
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册