Bize Ulaşın
 Süre 28 Saat

Eğitim İçeriği

1. Go'ya Giriş

  • Go (Golang) nedir?
  • Go'nun tarihi ve tasarım felsefesi
  • Web ve sistem programlama dil olarak Go
  • Temel özellikler:
    • Statik tiplendirme
    • Basitlik ve okunabilirlik
    • Hızlı derleme
    • Gömülü eşzamanlılık (concurrency)
    • Çöp toplayıcısı (Garbage collection)
    • Çapraz platform derleme
  • Go'nun yaygın kullanım senaryoları
  • Go'nun avantajları ve kısıtlamaları
  • C/C++, JavaScript, Ruby, Python ve Java ile karşılaştırma
  • Go ekosistemini anlama
  • Go standart kütüphanesi genel bakış
  • Go modülleri ve bağımlılık yönetimi
  • Go uygulamasının anatomisi
  • Uygulama: Basit bir Go programını inceleme ve çalışma

2. Go Geliştirme Ortamının Kurulması

  • Go'nun yüklenmesi
  • Go araç zincirini (toolchain) anlama
  • Ortam değişkenlerinin yapılandırılması
  • Bir IDE veya kod editörü seçimi
  • Go ile komut satırı kullanımı
  • Go çalışma alanının oluşturulması
  • Go proje yapısının anlaşılması
  • Go Modülleri ile proje başlatma
  • go mod init kullanımı
  • go get ile bağımlılık yönetimi
  • Bağımlılıkların güncellenmesi ve denetlenmesi
  • gofmt ile kaynak kod biçimlendirme
  • go run ile program çalıştırma
  • go build ile uygulama oluşturma
  • Go uygulamalarının yüklenmesi
  • Çapraz derleme (Cross-compiling)
  • Uygulama: Bir konteyner içinde Go projesi oluşturma ve yapılandırma

3. Go Değişkenleri, Sabitleri ve Tipleri

  • Değişken beyan etme
  • Açık ve çıkarılmış tipler
  • Kısa değişken beyanları
  • Sabitler
  • Sıfır değerleri
  • Değişkenlerin kapsamı ve ömrü
  • İlkel veri tipleri:
    • Tamsayılar
    • Kayan noktalı sayılar
    • Karmaşık sayılar
    • Booleenler
    • Dizgiler (String)
  • Tip dönüşümleri
  • Unicode ve UTF-8 ile çalışma
  • Rune ve baytlar
  • Birden fazla değişken ataması
  • Tip güvenliğini anlama
  • Alıştırma: Küçük bir komut satırı veri işleme programı oluşturma

4. Operatörler ve İfadeler

  • Aritmetik operatörler
  • Karşılaştırma operatörleri
  • Mantıksal operatörler
  • Atama operatörleri
  • Artırma ve azaltma
  • Operatör önceliği
  • Tamsayı ve kayan nokta hesaplamalarıyla çalışma
  • Yaygın tip dönüşüm hatalarından kaçınma
  • Alıştırma: Hesaplama ve doğrulama mantığı uygulama

5. Tarihler, Saatler ve Biçimlendirme

  • time paketini kullanma
  • Tarih oluşturma ve değiştirme
  • Mevcut saati getirme
  • Saat dilimleri ve konumlar
  • Tarih ve saat ayrıştırma (Parsing)
  • Tarih ve saat biçimlendirme
  • Süre hesaplama
  • Unix zaman damgalarıyla çalışma
  • Zaman aşımı yönetimi
  • Alıştırma: Uygulamaya zaman damgaları ve süre hesaplamaları ekleme

6. Diziler, Dilimler, Haritalar ve Yapılar

Diziler (Arrays)

  • Dizi beyan etme
  • Dizileri başlatma
  • Diziler üzerinde yinelendirme (Iteration)
  • Çok boyutlu diziler

Dilimler (Slices)

  • Dilimler ve diziler arasındaki farkı anlama
  • Dilim oluşturma
  • Öğe ekleme
  • Dilim kopyalama
  • Dilim uzunluğu ve kapasitesi
  • Dilimden dilim çıkarma
  • Yaygın dilim tuzakları

Haritalar (Maps)

  • Harita oluşturma
  • Girdi ekleme ve kaldırma
  • Anahtarın var olup olmadığını kontrol etme
  • Haritalar üzerinde yinelendirme
  • Karmaşık veri içeren haritalar

Yapılar (Structs)

  • Yapıları tanımlama

  • Yapı alanları

  • Yapıları başlatma

  • İç içe geçmiş yapılar

  • İsimsiz yapılar

  • Yapı yöntemleri (Metotları)

  • JSON yapı etiketleri

  • Uygulama: Yapılar, dilimler ve haritalar kullanarak kullanıcıları, ürünleri ve uygulama verilerini modelleme

7. Koşullu Mantık ve Döngüler

  • if ifadeleri
  • else ve else if
  • Koşullar içinde değişken beyanları
  • for döngüleri
  • Sonsuz döngüler
  • Döngü koşulları
  • break ve continue
  • range ile yinelendirme
  • İç içe geçmiş döngüler
  • switch ifadeleri
  • İfade tabanlı switch'ler
  • Birden fazla vaka
  • Varsayılan vakalar
  • Tip switch'leri
  • Alıştırma: Uygulama doğrulama ve işleme mantığı uygulama

8. Fonksiyonlar

  • Fonksiyon tanımlama
  • Fonksiyon parametreleri
  • Dönüş değerleri
  • Birden fazla dönüş değeri
  • İsimlendirilmiş dönüş değerleri
  • Değişken uzunluklu fonksiyonlar (Variadic)
  • İsimsiz fonksiyonlar
  • Fonksiyon değerleri
  • Kapanışlar (Closures)
  • Özyineleme (Recursion)
  • Fonksiyonları argüman olarak geçirme
  • Hata döndüren fonksiyonlar
  • Küçük, yeniden kullanılabilir fonksiyonlar tasarlama
  • Alıştırma: Mevcut kodu yeniden kullanılabilir fonksiyonlara dönüştürme

9. İşaretçiler ve Bellek Kavramları

  • İşaretçi nedir?
  • Adres alma ve referans alma operatörleri
  • İşaretçiler ve fonksiyon parametreleri
  • İşaretçi alıcıları (Receiver)
  • Yapılara işaretçiler
  • Null işaretçiler (Nil)
  • İşaretçilerin ne zaman kullanılacağı
  • Değer ile referans anlambilimi
  • Go'nun bellek yönetimi ve çöp toplayıcısını anlama
  • Yaygın işaretçi hataları
  • Uygulama: İşaretçiler kullanarak uygulama verilerini değiştirme

10. Go ile Web Uygulaması Oluşturma

  • Go'nun web yeteneklerine genel bakış
  • net/http paketine giriş
  • HTTP sunucusu oluşturma
  • HTTP istek ve yanıtları
  • HTTP yöntemleri
  • İstek URL'leri ve sorgu parametreleri
  • HTTP başlıkları
  • HTTP durum kodları
  • Yönlendirme (Routing) temelleri
  • Yöneticiler (Handler) oluşturma
  • Form verisi işleme
  • Statik dosyalar sunma
  • HTML şablonları ile çalışma
  • Şablon değişkenleri ve kontrol yapıları
  • Web uygulaması yapılandırma
  • Uygulama: Temel bir Go web sunucusu oluşturma

11. RESTful Web Hizmeti Oluşturma

  • REST mimarisi temelleri
  • API uç noktaları tasarımı
  • GET, POST, PUT, PATCH ve DELETE
  • JSON ile çalışma
  • JSON kodlama ve çözdürme
  • İstek doğrulaması
  • HTTP durum kodları
  • Hata yanıtları
  • Sorgu parametreleri ve yol parametreleri
  • API yanıt yapıları
  • Yöneticileri iş mantığından ayırma
  • Uygulama: CRUD REST API'si oluşturma

12. Go Çalışma Zamanı, Derleme ve Proje Yapıları

  • Go derleyicisini anlama
  • Go derleme süreci
  • go run
  • go build
  • go install
  • go test
  • Derleme bayrakları (flags)
  • Ortama özel yapılandırma
  • Farklı işletim sistemleri ve mimariler için derleme
  • Bağımsız (standalone) binary dosyaları üretme
  • Uygulama yapılandırmasını yönetme
  • Alıştırma: Uygulamayı birden fazla platform için derleme

13. Dosyalar ve Web ile Çalışma

  • Dosyaları açma ve kapatma
  • Dosya okuma
  • Dosya yazma
  • Dizin oluşturma
  • Dosya meta verisi
  • Tamponlu G/Ç (I/O)
  • Akışlarla (streams) çalışma
  • JSON dosyalarını okuma ve yazma
  • HTTP istemcileri
  • Giden HTTP istekleri yapma
  • HTTP istemcisi hatalarını işleme
  • Zaman aşımı ve iptal
  • API yanıtlarını işleme
  • Uygulama: Dış bir API'den veri alma ve yerel olarak kalıcılaştırma

14. Hata Yönetimi ve Hata Ayıklama

  • Go'nun hata yaklaşımı
  • Fonksiyonlardan hata döndürme
  • Hataları kontrol etme
  • Özel hatalar oluşturma
  • Hataları sarmalama (Wrapping)
  • Hatalara bağlam ekleme
  • errors.Is ve errors.As
  • Panic ve kurtarma (Recovery)
  • panic ne zaman kullanılmalı?
  • Yaygın Go sorunlarını ayıklama
  • Uygulama etkinliğini günlükleme
  • Go hata ayıklama araçlarını kullanma
  • Alıştırma: Bilerek tanıtılmış uygulama hatalarını teşhis etme ve düzeltme

15. Arayüzler ve Soyutlama

  • Arayüz nedir?
  • Yerleşik arayüz uygulaması
  • Arayüz tanımlama
  • Arayüz değerleri
  • Boş arayüzler / any
  • Tip iddiaları (Assertions)
  • Tip switch'leri
  • İşaretçi ile değer uygulamaları arasındaki fark
  • Küçük arayüzler tasarlama
  • Bağımlılık tersine çevirme
  • Test için arayüz kullanımı
  • Uygulama bağlamağını (coupling) azaltma
  • Uygulama: Örnek web uygulamasına arayüzleri tanıtma

16. Paketler ve Proje Örgütlenmesi

  • Paket oluşturma
  • Paket adlandırma kuralları
  • Dışa açılmış ve dışa açılmamış tanımlayıcılar
  • Paket içe aktarma
  • Paket başlatma
  • Uygulama katmanlarını düzenleme
  • Dahili paketler
  • Go Modülleri ile bağımlılık yönetimi
  • Anlamsal sürümleme (Semantic versioning)
  • Üçüncü taraf paketleri kullanma
  • Dairesel bağımlılıklardan kaçınma
  • Bakımı kolay Go projeleri tasarımı
  • Alıştırma: Uygulamayı ayrı paketlere dönüştürme

17. Goroutine'lerle Eşzamanlılık

  • Eşzamanlılık nedir?
  • Goroutine'ler
  • Goroutine başlatma
  • Hafif eşzamanlı çalışmayı anlama
  • Aenkronizasyon zorlukları
  • Paylaşılan durum
  • Yarış koşulları (Race conditions)
  • sync.WaitGroup kullanımı
  • Kilitler (Mutexes) ve okuma/yazma kilitleri
  • Atomik işlemler
  • Uygulama: Sıralı bir görevi eşzamanlı işleme dönüştürme

18. Kanallar

  • Kanalları anlama
  • Değer gönderme ve alma
  • Tamponlu ve tamponsuz kanallar
  • Bloklama davranışı
  • Kanalları kapatma
  • Kanallar üzerinde yinelendirme
  • Yönlü kanallar
  • Kanal tabanlı iletişim
  • Select ifadeleri
  • Zaman aşımı ve iptal
  • İşçi havuzu (Worker-pool) desenleri
  • Üretici/tüketici desenleri
  • Uygulama: Eşzamanlı bir işçi sistemi oluşturma

19. Bağlam (Context) ve İstek Yönetimi

  • Bağlamların web uygulamalarında neden önemli olduğu
  • context.Context
  • İstek kapsamlı bağlam
  • İptal
  • Son tarihler (Deadlines)
  • Zaman aşımı
  • Bağlamı uygulama katmanları boyunca yayma
  • Veritabanı veya HTTP işlemlerini iptal etme
  • Bağlam kötü kullanımından kaçınma
  • Alıştırma: Web uygulamasına istek iptali ve zaman aşımı ekleme

20. Go Uygulamalarını Test Etme

  • Otomasyonlu testlerin neden önemli olduğu
  • Birim testi yazma
  • testing paketi
  • Test fonksiyonları
  • Test adlandırma kuralları
  • Tablo sürücülü testler
  • Hataları test etme
  • HTTP yöneticilerini test etme
  • HTTP test sunucuları
  • Test sabitleri (Fixtures)
  • Test kapsama alanı
  • Referans testleri (Benchmarks)
  • Örnek testler
  • Mock veya sahte nesnelerle arayüzleri test etme
  • Uygulama: Örnek uygulama için bir test paketi oluşturma

21. Performans Optimizasyonu

  • Go uygulama performansını anlama
  • Darboğazları belirleme
  • İşlemci ve bellek performansı
  • Verimli veri yapıları
  • Gereksiz atamaların azaltılması
  • Dizgiler, baytlar ve tamponlar
  • Goroutine yönetimi
  • Aşırı eşzamanlılıktan kaçınma
  • Önbellekleme stratejileri
  • Veritabanı ve ağ hususları
  • Uygulamaları profil analizi (profiling)
  • Referans testleri ve performans testleri
  • Go profil analizi araçlarını kullanma
  • Alıştırma: Bilerek verimsiz yapılandırılmış bir uygulamanın profil analizi yapma ve optimize etme

22. Güvenlik ve Sağlam Web Uygulaması Uygulamaları

  • Kullanıcı girdisini doğrulama
  • HTTP isteklerinin güvenli işlenmesi
  • Yaygın web güvenlik açıklarını önleme
  • Güvenli hata yönetimi
  • Kimlik doğrulama ve yetkilendirme kavramları
  • Gizlilik ve yapılandırma yönetimi
  • Güvenli HTTP iletişimi
  • Günlüklerde hassas bilgilerin bulunmasını önleme
  • Bağımlılık yönetimi ve güncellemeler
  • Kaynak sınırları ve istek zaman aşımı
  • Alıştırma: Örnek API'yi inceleyip güçlendirme

23. Uygulama Günlüklemesi ve Gözlemlenebilirlik

  • Günlükleme temelleri
  • Yapılandırılmış günlükleme
  • Günlük seviyeleri
  • İstek günlükleme
  • Hata günlükleme
  • İlişkilendirme ve istek kimlikleri
  • Uygulama davranışını izleme
  • Temel metrikler
  • Sağlık kontrolü uç noktaları
  • Üretim sorunlarını teşhis etme
  • Uygulama: Yapılandırılmış günlükleme ve sağlık kontrolleri ekleme

24. Go Uygulamasını Konteynerleştirme

  • Neden konteyner kullanılmalı?
  • Go uygulamaları ve konteynerleştirme
  • Dockerfile yazma
  • Çok aşamalı derleme (Multi-stage builds)
  • Minimel çalışma zamanı görüntüsü oluşturma
  • Ortam değişkenleri ile yapılandırma yönetimi
  • Konteyner ağları
  • Uygulama portlarını açma
  • Uygulamayı konteyner içinde çalıştırma
  • Konteynerleştirilmiş uygulamayı test etme
  • Uygulama: Örnek Go uygulamasını üretim hazır konteyner olarak paketleme

25. Dağıtım

  • Uygulamayı üretim için hazırlama
  • Üretim binary dosyalarını oluşturma
  • Ortam yapılandırması
  • Konteyner tabanlı dağıtım
  • Dagıtım mimarisi
  • Ters vekiller (Reverse proxies)
  • HTTPS/TLS hususları
  • Uygulama sağlık kontrolleri
  • Yumuşak kapanma (Graceful shutdown)
  • İşletim sistemi sinyallerini işleme
  • Go web uygulamalarını ölçeklendirme
  • Yatay dikey ölçeklendirme
  • Temel dağıtım sorun giderme
  • Uygulama: Örnek web uygulamasını dağıtma

26. Zirve Projesi: Tamamlanmış Go Web Uygulaması

Katılımcılar, kavramları bir araya getirerek tamamlanmış bir uygulama geliştirir.

Proje şunları içerebilir:

  • Go Modülleri ile proje başlatma
  • Paket örgütlenmesi
  • HTTP yönlendirme
  • REST API uç noktaları
  • JSON istek ve yanıt işleme
  • Girdi doğrulaması
  • Hata yönetimi
  • Arayüzler
  • Eşzamanlı işleme
  • Dış API ile iletişim
  • Dosya veya veritabanı kalıcılığı
  • Otomasyonlu testler
  • Günlükleme
  • Performans hususları
  • Konteynerleştirme
  • Üretim yapılandırması
  • Dagıtım

27. İnceleme ve En İyi Uygulamalar

  • Go sözdizimi temellerinin tekrarı
  • Go kodlama kuralları
  • İdiomatik Go yazma
  • Kodu basit tutma
  • Verimli paket tasarımı
  • Hata yönetimi en iyi uygulamaları
  • Arayüz tasarım ilkeleri
  • Eşzamanlılık en iyi uygulamaları
  • Test stratejileri
  • Performans hususları
  • Bakım kolaylığı ve okunabilirlik
  • Yeni Go geliştiricilerin yaptığı yaygın hatalar
  • Go geliştirmeye devam etmek için önerilen yaklaşımlar

28. Sonuç

  • Temel kavramların tekrarı
  • Tamamlanmış web uygulamasının tekrarı
  • Sorular ve tartışma
  • Yaygın gerçek dünya senaryolarının sorun giderme
  • Go geliştirmesi için önerilen sonraki adımlar
  • Ek Go kütüphaneleri ve ekosistem kaynakları
  • Üretim kalitesinde Go hizmetleri oluşturma için ek fırsatlar

Kurs İçin Gerekli Önbilgiler

  • Genel programlama ilkeleri hakkında bilgi

Hedef Kitle

  • Geliştiriciler

Katılımcı Sayısı


Katılımcı başına fiyat

Danışanlarımızın Yorumları (5)

Yaklaşan Etkinlikler

İlgili Kategoriler