We can quickly monitor the Trendyol mobile app in the event of an error with New Relic. On New Relic Dashboard, we can monitor the error rates and network response time. So how are we doing these.

If you haven’t read our previous post about New Relic: New Relic Alert Policies

Dashboards are actually collected and grouped according to NRQL queries. We grouped by dividing application main pages.

For Example:
Awesome 1 > Home Page
Awesome 2 > Account Page
Awesome 3 > Detail Page


I deployed a small Vapor project I made using Docker. Every build re-downloads all dependencies, but dependencies do not change. It was time and network wasting.

So what can we do to solve this?

Actually, it is quite easy, Docker makes the decision according to the changes of the files at every step. So if we never changed our project, it would take the libraries using the cache not re-download, but our files are changing. So what if we just copy the unchanged ones first and then copy the rest?

# Copy entire repo into container COPY . . # Compile 
RUN swift build -c release -Xswiftc -g


Bir önceki yazımda Collection View’da daha rahat daha esnek ve daha performanslı layout tasarlamayı anlatmıştım. Eğer okumadıysanız: https://yusufozgul.com/blogs/CompositionalLayout/

Bu yazımda ise Collection View’un bir diğer yönü olan data kısmındaki yeni Diffable Data Source’u anlatacağım.

Bu zamana kadar nasıldı?

Collection View ya da Table View’u oluştururken ona data source veriyorduk, bu temelde bir protokol’ü implemente eden herhangi bir class. Bu içerisinde kaç cell olacağını, hangi index / section için nasıl bir view ve verisi olacağını belirlemeyi sağlıyordu. Bu açıdan oldukça kolay ve her türlü view’u kullanmak oldukça kolay. Ancak bazı kusurları var, öncelikle bu yapıda datanın güvenliğini sağlamak bizim görevimiz. Ona dersek ki sana 10…


Collection View iOS 6'dan beri hayatımızda, table view’un aksine çok daha esnek yapılar sunmamıza olanak sağlayan collection view günümüzdeki bir çok uygulamanın çeşitli yerlerinde kullanılıyor. Ancak collection view’un da kendine göre sorunları ve problemleri var. Örneğin Bir collection view’un sadece tek akış yönü vardır. Bir sayfada hem dikey hem de yatay kayan alanları iç içe kullanmak istersek genellikle yapılan dikey kayan bir cell’in içine bir collection view daha ekleyip bunu yatay kaydırmak olur. Peki bu ne kadar kolay 😔

Böyle bir sayfayı tek collection view’da nasıl oluşturursunuz?

WWDC 2019'da tanıtılan ve biraz da SwiftUI’ın gölgesinde kalmış olan bir yenilik olan…


Merhaba bu yazımda null safety ve bunun Dart dilinde nasıl ele alındığını ve kodumuzda nasıl kullanabileceğimizi aktaracağım. Ancak önce konuya girmeden önce anlamamız gereken bazı noktalar var.

Nedir bu null?

Null konusunu anlamak için biraz daha derine yolucuk edelim. Şimdiki durağımız bellek yani bildiğimiz RAM. Bellek bloklar halinde çalışır, ilgili bloktan verilerimizi yazarız okuruz. Bu veriler bizim bir sınıfımızın referansı olabilir ya da bir değişkenimizin içindeki veri olabilir. Peki bizim elimizde bir sınıf var ancak biz buna henüz bir eşitleme yapmadık, bu durumda elimizde hiçbir yeri gösteren bir değişken var. Evet bu değişken bellekte bir yer kaplıyor, bu kapladığı alanda aslında sakladığımız verinin…


Selamlar, daha önce hiç iki label’ı yan yana koyup auto layout ile düzgün hizalanmasını denediniz mi, eğer denediyseniz size X ekseninde hizalayamamadığını bildirerek bir hata verecektir. Bakalım nasılmış?


Merhaba, bu yazım Swift’te kontrol yapıları nasıl kullanılır, farklı kontrol yapıları hakkında olacak. Kontrol yapıları kodlamamız içerisinde sıklıkla kullanmamız gereken kod parçacıkları oluyor. Gelin hep birlikte bakalım nasıl yapılıyor.

If Blokları

Kodlamaya ufak bir giriş yapmış olanların bile bileceği bu blok tahmin edersiniz ki yazdığımız kodun Boolean sonucuna göre işlem yapıyor ya da yapmıyor. Hemen bakalım:

if 10 == 5 // 10 değeri 5 değerine eşit mi? Sonuç: False işlem yapılmaz
{ }
if 10 > 5 // 10 değeri 5 değerinden büyük mü? Sonuç: True işlem yapılır.
{ }

Basit bir şekilde if kullanımı yukarıda ki gibi. Temel mantık operatörlerini kullanarak…


Başlık biraz karışık oldu farkındayım ancak detaylı anlatınca daha iyi anlaşılacaktır. Bu yazıda kod bloklarımıza etiket nasıl verebileceğimize bakacağız.

İç içe for döngüsü yazıp belirli senaryolarda en dıştaki for döngüsünü kırıp ya da atlamayı nasıl yapabiliriz? Elbette uzun uzadıya if blokları yazmak pek mantıklı olmayacaktır, bunun basit çözümü olmalı değil mi? Kod bloklarımıza etkilet vererek değişken adı verir gibi onları yönetebiliriz.

Nasıl Yapılır?

forLabel: for element in array
{
// İşlemler
}

ifLabel: if statement1 == statement2
{
// İşlemler
}

swichLabel: switch(myEnum)
{
// İşlemler
}

Yukardaki örnekler basit kullanımları, şimdi iç içe (nested) for döngümüze gelelim.

outerFor: for each in…


Uygulamamızda ekranlar arası geçiş işlemi için bir segue oluşturmak ya da kod içerisinde present etmemiz gerekiyor. Ancak SwiftUI ile işler tamamen değişti. Bu yazıda üç farklı yöntem ile bir ekrandan nasıl diğer ekrana ulaşabileceğinizi anlatacağım, gelin başlayalım.

NavigationLink Kullanarak Geçiş

UIKit’te NavigationController’ımıza bir Buton ekleyerek bu butonla geçiş işlemi gibi diyebiliriz. Nasıl yapacağımıza hemen bakalım:


Swift ile View Controller’ımız içinde herhangi bir döngü yardımıyla istediğimiz kadar view oluşturup bu viewları başka bir view’a subView olarak ekleyebiliyoruz. Ancak SwiftUI ile işler biraz değişti. Her kodu view oluşturmada kullanamıyoruz Xcode bize şöyle kızıyor “Closure containing control flow statement cannot be used with function builder ‘ViewBuilder’”.

Bu yazıda kullanacağım senaryo bir hesap makinesi uygulaması olacak. Hesap Makinesinin butonlarını döngü yardımıyla çok az kod kullanarak gerçekleştireceğiz.

Yusuf Özgül

iOS developer @Trendyol

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store