From 2e6e36db0b0d252101e41916c232a59d5aed9b62 Mon Sep 17 00:00:00 2001 From: pasali Date: Wed, 31 Dec 2014 20:09:26 +0200 Subject: [PATCH] second chapter in Turkish --- tr/01.2.md | 151 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 tr/01.2.md diff --git a/tr/01.2.md b/tr/01.2.md new file mode 100644 index 00000000..1984f8e3 --- /dev/null +++ b/tr/01.2.md @@ -0,0 +1,151 @@ +#1.2 $GOPATH ve Çalışma Ortamı + +## $GOPATH + +Go komutları, önemli bir ortam değişkeni olan $GOPATH üzerinden çalışır. Bu değişkeni Go'nun kurulu olduğu dizini veren $GOROOT ile karıştırmayın. Bu değişken bilgisayarınızdaki Go çalışma ortamının hangi dizinde olduğunu gösterir (Aşağıdaki dizin yapısı örnek olarak verilmiştir, siz kendinize göre dizin yolunu değiştirebilirsiniz). + +Unix türevi işletim sistemlerinde, aşağıdaji komutla değişkeni ayarlayabilirsiniz: + + export GOPATH=/home/apple/mygo + +Windows'da ise, GOPATH adında bir ortam değişkeni oluşturup, değerini `c:\mygo` ( ***ya da sizin istediğiniz herhangi bir yer*** ) olarak atayabilirsiniz. + +$GOPATH içinde birden fazla dizin yolu(çalışma ortamı) olabilir, dizinleri `:` ayırabilirsiniz(Windows'da`;`). Birden fazla çalışma ortamınız var ise `go get` indirdiği içeriği $GOPATH'teki ilk dizine yazacaktır. + +$GOPATH içinde aşağıdaki üç dizinden oluşur: + +- `src` -> kaynak dosyalar için(.go, .c vb uzantılı) +- `pkg` -> derlenmiş dosyalar için(.a uzantılı) +- `bin` -> çalıştırılabilir dosyalar için + +Bu kitapta, `mygo` dizini $GOPATH'in gösterdiği çalışma ortamı olacak. + +## Paket dizinleri + +Paket ve kaynak dosyaları `$GOPATH/src/mymath/sqrt.go` şeklinde oluşturun (`mymath` paketin ismidir) ( ***`mymath` paket ismi değişebilir, fakat paket ismi ve paketleri oluşturan kaynak kodların bulunduğu dizinin ismi aynı olmalıdır***) + +Her paket için `src` altında yeni bir dizin oluşturmalısınız. Dizin isimleri genelde paket ismiyle aynı olur/olmalıdır. Paket oluştururken iç içe dizinler açabilirsiniz. Örneğin, eğer `$GOPATH/src/github.com/astaxie/beedb` dizini oluşturursanız, paket yolu `github.com/astaxie/beedb` olacaktır. Paket ismi ise en son dizinin ismi olacaktır, önceki örnekte `beedb` paket ismi olacaktır. + +Terminalinizde aşağıdaki komutları çalıştırın. ( ***Bu kısımda örneklerden bahsedeceğiz*** ) + + cd $GOPATH/src + mkdir mymath + +`sqrt.go` isminde bir dosya oluşturun, aşağıdaki kod bloğunu ekleyin. + + //$GOPATH/src/mymath/sqrt.go kaynak kodu + package mymath + + func Sqrt(x float64) float64 { + z := 0.0 + for i := 0; i < 1000; i++ { + z -= (z*z - x) / (2 * x) + } + return z + } + +Yukarıdaki adımların sonunda ilk paketimizi oluşturmuş olduk. Paket isimlerinin bulundukları dizinin adı ile aynı olmasına özen gösterin. + +## Paketleri derleme + +Yukarıda ilk paketimizi oluşturmuştuk, peki projelerimizde kullanmak için nasıl derleyeceğiz? İki şekilde yapabiliriz: + +1. Paket dizinin içindeyken `go install` komutunu çalıştırarak. +2. Herhangi bir dizindeyken `go install mymath` komutunu çalıştırarak. + +Derleme işlemi bittikten sonra, aşağıdaki komutları çalıştırırsanız. + + cd $GOPATH/pkg/${GOOS}_${GOARCH} + // derlenmiş halinin oluştuğunu görebilirsiniz + mymath.a + +`.a` uzantılı dosya paketimizin binary halini içeriyor. Peki bu dosyayı nasıl kullanacağız? + +Öncelikle yeni bir uygulama oluşturmalıyız. + +`mathapp` adında yeni bir uygulama oluşturun. + + cd $GOPATH/src + mkdir mathapp + cd mathapp + vim main.go + +Kaynak kod: + + //$GOPATH/src/mathapp/main.go + package main + + import ( + "mymath" + "fmt" + ) + + func main() { + fmt.Printf("Merhaba, dünya. Sqrt(2) = %v\n", mymath.Sqrt(2)) + } + +Uygulamyı derlemek için, `$GOPATH/src/mathapp` dizinine geçip, `go install` komutunu çalıştırın. `$GOPATH/bin/` altında `mathapp` dizinin oluştuğunu göreceksiniz. Uygulamanızı çalıştırmak için, `./mathapp` komutunu çalıştırın. Aşağıdaki gibi bir çıktı alıyor olmanız lazım. + + Merhaba, dünya. Sqrt(2) = 1.414213562373095 + +## Üçüncü-parti paketleri kurmak + +Üçüncü-parti paketleri kurmak için `go get` komutunu kullanabilirsiniz. Bir çok açık-kaynak platformu destekliyor; Github, Google Code, BitBucket, ve Launchpad. + + go get github.com/astaxie/beedb + +`go get -u …` kullanarak var olan paketlerinizi güncelleyebilirsiniz ve aynı zamanda bağımlılıklarıda otomatik olarak yükleyecektir. + +`go get` versiyon kontrol sistemleri üzerinden çalışmaktadır. Bu yüzden `go get`'i kullanabilmek için `git`, `hg` gibi yazılımları kurmuş olmanız gerekmektedir. + +Yukarıdaki komutları çalıştırdıktan sonra, çalışma ortamınız aşağıdaki dizin yapısına sahip olacaktır. + + $GOPATH + src + |-github.com + |-astaxie + |-beedb + pkg + |--${GOOS}_${GOARCH} + |-github.com + |-astaxie + |-beedb.a + +Aslında, `go get` kaynak kodu çalışma ortamınızdaki `src` dizinine kopyalayıp, `go install` komutunu çalıştırıyor. + +Üçüncü-parti paketleri aşağıdaki gibi kullanabilirsiniz. + + import "github.com/astaxie/beedb" + +## Dizin yapısı + +Yukardaki adımları tamamladıysanız, çalışma ortamınızdaki dizin yapısı aşağıdaki gibi olacaktır. + + bin/ + mathapp + pkg/ + ${GOOS}_${GOARCH}, such as darwin_amd64, linux_amd64 + mymath.a + github.com/ + astaxie/ + beedb.a + src/ + mathapp + main.go + mymath/ + sqrt.go + github.com/ + astaxie/ + beedb/ + beedb.go + util.go + +Yukarıdaki yapından açık şekilde görüldüğü gibi; `bin` çalıştırılabilir dosyaları, `pkg` derlenmiş dosyaları ve `src` kaynak dosyaları içermektedir. + +(Windows'daki ortam değişkenlerinin formatı `%GOPATH%` şeklinde olmalıdır, bu kitap unix türevi sistemler üzerinden anlatılmaktadır, bu sebeble Windows kullanıcıları kendi sistemlerine uygun formatı kullanmalıdır .) + +## Linler + +- [İçeriik](preface.md) +- Önceki bölüm: [Kurulum](01.1.md) +- Sonraki bölüm: [Go komutları](01.3.md)