docker üzerinde uygulama çalıştırma


Merhaba

Bugün Docker üzerinde bir uygulamayı nasıl çalıştırabiliriz ona bakacağız. Öncelikle Docker Download işlemini yapalım. Docker indirme işleminden sonra uygulamamızı kurup yeni yazacağımız uygulamamızı nasıl Docker üzerinde çalıştırabiliriz onlara bakalım. Docker üzerinde bir .Net Core uygulaması çalıştıracağız. Uygulamamızı hazırlamak için bir terminal açalım ve aşağıdaki kodlar yardımı ile hazırlığımızı yapalım. Şimdi terminal yardımı ile NetCoreDocker isimli bir .Net Core Console uygulamamızı hazırlamaya başlayalım.

$ cd Desktop
$ dotnet new console -n NetCoreDocker

Yukarıdaki kodlar ile üzerinde çalışacağımız uygulamamız artık hazır. Şimdi Docker üzerinde bu uygulamamızı çalıştırmak için gerekli olan ayarlamaları yapalım. Uygulamamız açtıktan sonra ana dizinde Dockerfile isimli bir dosya oluşturup içerisinde de Docker ayarlarımızı yapalım. Dockerfile içeriğini aşağıdaki gibi ayarlayabiliriz. Console uygulaması çalıştıracağımız için Web API uygulamasında ihtiyacımız olan port yönetim kodlarını yorum olarak bıraktım.

[Dockerfile]

FROM microsoft/dotnet
WORKDIR /app
COPY ./ .
#Web API için yorum satırını açabilirsiniz.
#ENV ASPNETCORE_URLS http://+:80
#EXPOSE 80
RUN dotnet restore

ENTRYPOINT ["dotnet", "run"]

Bu ayarlama işleminden sonra artık uygulamamızı kayıt edip Docker üzerinde bu uygulamamızı oluşturup kullanalım. Yine terminal yardımı ile uygulamanın bulunduğu dizinde aşağıdaki komutlar yardımı ile işlemimize devam edelim.

$ cd Desktop
$ cd NetCoreDocker
$ docker build -t net-core-docker-app .

Bu komut çalıştığında internet hızınıza göre bir süre beklemeniz gerekiyor, bu süre içinde Docker gerekli olan dosya ve kütüphaneleri indiriyor. İndirme işlemi bitip uygulamamız Docker üzerinde hazırlandığında ise aşağıdaki komut ile uygulamamızı çalıştırabiliriz.

$ cd Desktop
$ cd NetCoreDocker
$ docker run net-core-docker-app

Bu komut sonrasında ise artık uygulamamızdan bize “Hello World from Docker :)” sonucu geliyor. Projenin kaynak kodlarına üzerinden erişebilirsiniz.

Kolay gelsin.

Reklamlar

mac os .net kurulumu ve kullanımı


Merhaba

Bugün macOS üzerinde .net kurulumunu ve bu kurulum sonrasında ilk uygulamamızı yazıp kullanımına bakacağız. Öncelikle .net core download işlemini yapalım. İndirdiğimiz dosyayı çalıştırdığımızda aşağıdaki adımları takip ederek basitçe kurulumu tamamlayalım.

[Adım 1]

[Adım 2]

[Adım 3]

[Adım 4]

Bu aşamada bilgisayarımızın şifresini girip yüklemeye izin veriyoruz.

[Adım 5]

Yükleme işlemi tamamlandı. Şimdi sıra uygulamamızı hazırlamakta. İlk olarak bir terminal açalım ve sırası ile aşağıdaki komutları terminalde uygulayıp ilk programımızı oluşturalım.

$ cd Desktop
$ mkdir MacOSDotNet
$ cd MacOSDotNet
$ dotnet new webapi

Komut satırında “dotnet new webapi” komutunu çalıştırdıktan sonra oluşan webapi uygulamamızı açmak için herhangi bir editör kullanabiliriz.Ben bu işlem için Visual Studio Code kullandığımdan aşağıdaki kodu yazarak projemi açıyorum. İsterseniz Visual Studio Code download işleminden sonra sisteminizde vs code kullanabilirsiniz.

$ code .

Bu komut sonrasında projemiz Visual Studio Code ile açtık ve birkaç düzenleme yaptıktan sonra çalıştırabiliriz. İlk olarak proje içindeki launchSettings.json içeriğinde bulunan “applicationUrl”: “https://localhost:5001;http://localhost:5000 “, bilgisini “applicationUrl”: “http://localhost:5000 “,   olarak güncelleyelim. bu işlem sonrasında benim proje içindeki dosya aşağıdaki gibi görünüyor.

[launchSettings.json]

{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "iisSettings": {
    "windowsAuthentication": false, 
    "anonymousAuthentication": true, 
    "iisExpress": {
      "applicationUrl": "http://localhost:32954",
      "sslPort": 44398
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "api/values",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "MacOSDotNet": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "api/values",
      "applicationUrl": "http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

Bu ayarlamadan sonra değişiklik yaptığımız dosyaları kayıt edip terminalde uygulamamızın olduğu dizine geçip aşağıdaki komutları yazalım. Başka bir konumda olma ihtimaline karşı yeni bir terminal sayfası açıp uygulamanın olduğunu konuma geçme ve sonrasında uygulamayı çalıştırma komutu olan dotnet run kodunu yazdım. Terminalde yazdığım satırlar aşağıdaki gibidir.

$ cd Desktop
$ cd MacOSDotNet
$ dotnet run

Bu komutları çalıştırınca uygulamamızın “http://localhost:5000 ” adresinde çalıştığı bilgisi terminalde bize veriliyor. Örnek uygulamızın içinde bulunan ValuesController sınıfında istek göndereceğimiz adres tanımı olduğu için ister herhangi bir tarayıcı üzerinden ister mac ortamında terminalde curl komutu ile uygulamamızın çalışıp çalışmadığını test edebiliriz. Ben ilk olarak terminal üzerinden aşağıdaki kodu yazıp çalışan uygulamanın bana sonuç olarak ValuesController.cs içindeki örnek değerler olan “value1”, “value2” bilgilerini göstermesini bekleyeceğim. Daha sonrada aynı işlemi tarayıcı üzerinden test edebiliriz. Terminal ve tarayıcı üzerinden test işlemi yaparken mutlaka uygulamamızın çalışıyor durumda olması gerekiyor.

$ curl localhost:5000/api/values

Bu komut çalışdıktan sonra terminal ekranında beklediğim gibi [“value1″,”value2”] sonuçlarını verdi. Şimdi aynı işlemi tarayıcı üzerinde yaptığımızda da sonuç olarak [“value1″,”value2”] bilgisini göreceğiz.
Projenin kaynak kodlarına adresinden ulaşabilirsiniz.

Kolay gelsin.

mac os gitkraken kurulumu


Merhaba gitkraken-keif-teal-sq
Bugün yeni keşfettiğim ve çok memnun kaldığım bir git istemcisinden ve onun kurulumundan bahsedeceğim. Bu git istemcisi GitKraken. Kurulum işleminden sonrada basit bir text dosyası oluşturup onu git ortamında versiyon takibini GitKraken ile yapacak ve bu değişimleri GitHub üzerine göndereceğiz. İlk önce GitKraken Download adresinden uygulamamızı ilgili işletim sistemimize göre indirelim. Bu durumda ben macOS versiyonunu indirdim. İndirme işleminden sonra .dmg uzantılı dosyamıza çift tıkladığımızda karşımıza gelen aşağıdaki ekranda olduğu gibi GitKraken uygulamamızı sürükle bırak yöntemi ile uygulama kurma işlemimizi tamamlıyoruz.

Kurulum işleminden sonra karşımıza uygulamayı kullanabilmek için hesap açma ya da var olan GitHub veya GitKraken hesabı ile oturum açma seçenekleri geliyor.

Bu aşamadan sonra uygulama üzerinde oturum açtığımızda karşımıza gelen bir kaç ayarı yapıp artık kullanıma geçebiliriz. Uygulamanın basit olarak kullanımını göstermek için bir proje oluşturup onu GitHub a gönderelim. İlk olarak terminali açıp aşağıdaki komutları sırası ile çalıştırıp örnek bir proje oluşturalım.

$  cd Desktop
$  mkdir GitKraken
$  cd GitKraken
$  echo 'Git Kraken Test' > GitKrakenTest.txt
$  git init
$  git add *
$  git commit -m "initial commit"

GitKraken dosyamız hazır olduğuna göre uygulamadan bu “File > Open Repo” seçeceği ile dosyamızı açalım. Dosya açıldıktan sonra aşağıdakine benzer bir görüntü sizi karşılayacak.

Artık lokalde yaptığımız değişiklikleri GitKraken sayesinde görsel olarak görebiliriz. Şimdi bu dosyamızı GitHub üzerinde bir repo oluşturup oraya gönderelim. Bunun içinde “File > Init Repo” seçeceği ile karşımıza gelen seçeneklerden GitHub seçimini yapıp gerekli ayarlamalardan sonra repomuzu oluşturabiliriz. Örnek ayarlar aşağıdaki gibi olacaktır.

GitHub kurulumu yaptıktan sonra GitKraken dosyası altındaki GitKrakenTest.txt dosyası içinde değişiklik yapıp GitKraken kullanarak commit ve push işlemleri yapalım ve sonrasında da GitHub üzerinde bu değişimi görelim.

İşte bu kadar GitKraken kurulumu ve basit olarak bir dosyanın git kullanılarak versiyon kontrolünün yapılması ve bu değişimlerin GitHub ortamına aktarılması. GitHub ekran görüntüsünü eklemiyorum https://github.com/sametcelikbicak/GitKraken adresinden GitHub reposuna bakabilirsiniz.

Kolay gelsin.

quicktime sesli ekran kaydı yapma


Merhaba,
Bugün macOS ortamında QuickTime Player ile ekran kaydının sesli olarak nasıl yapabileceğimize bakacağız. Normal ayarlarda ekran kaydı ses olmadan yapılmakta. QuickTime uygulamasını çalıştırdığınızda aşağıdaki ekran görüntüsündeki gibi seçenekleri bulabilirsiniz.

Bu seçeneklerden yeni ekran kaydı seçeceğini seçtiğimizde normal ayarla ses kaydı olmadan ekran kaydı alabiliyoruz. Aşağıdaki ekran görüntüsünde olduğu için dahili mikrofon seçimi ile artık ekran kaydımızı sesli olarak yapabiliyoruz.

Ekran görüntüsünde olduğu gibi normal ayarlar mikrofon seçimi yok olarak gelmekte ama biz dahili mikrofon seçimini yaparak işlemimize devam edebiliriz. Dahili mikrofon seçiminden sonra ise artık ekran kaydı yapmamız için herşey hazır oluyor ve mikrofonun ses seviyesini de ayarlayabiliyoruz.

Başka uygulamalara ihtiyaç duymadan hızlı ve basit olarak sesli ekran kaydımızı bu ayarlardan sonra yapabiliriz.

Kolay gelsin.

swift ile notification kullanımı


Merhaba
Bugün swift ile yazdığımız uygulamalarımızda kullanabilceğimiz zaman zaman ihtiyacımız olan ve bir konu veya içeriği bize hatırlatması için kullandığımız “Notification (Bildirim)” özelliğine bakacağız. Bu özelliği test etmek için de  basit olarak bir bildirim gönderen uygulama yapalım.

Uygulamamıza gönderecek olduğumuz bildirimin başlığını ve detayını girebileceğimiz iki adet textfiled ekleyelim ve sonrasında ise bu bildirimin ne zaman bize gelmesini istiyorsak onu ayarlamak için de bir adet datepicker ekleyelim. Tüm ayarlamalardan sonra bildirim gönder işlemi ile uygulama üzerinde yazdığımız bildirim başlık ve detayını belirtiğimiz tarihde bize gelmesi için bildirim gönder butonu ile işlemimizi tamamlayalım.

Şimdi uygulamamızı hazırlamaya başlayabiliriz.

Buradan yeni bir Xcode projesi oluşturalım.

Buradan single view app seçiminden sonra uygulamamızın adını verip işlemimize deva edelim.

Bu aşamdan sonra uygulamamız hazır ve biz kodlamamıza başlayalım. Öncelikle notification özelliğini aktif etmek için “AppDelegate.swift” içerisine “UserNotifications” bilgisini eklememiz gerekiyor bu işlem sonrasında da “didFinishLaunchingWithOptions” içerisinde notification özelliğini aktif etmemiz lazım ve bu özellik uygulama ilk çalıştığında kullanıcıya notification için izin verip vermediğini soracaktır. Daha sonra gelen bildirimleri sıfırlamak içinde uygulama aktif olduğunda yani “applicationDidBecomeActive” içersinde de düzenleme yapmalıyız. Bu işlemere ait kodlar aşağıdaki gibidir.

[AppDelegate.swift]

//
//  AppDelegate.swift
//  Notification
//
//  Created by Samet ÇELİKBIÇAK on 24.03.2018.
//  Copyright © 2018 Samet ÇELİKBIÇAK. All rights reserved.
//

import UIKit
import UserNotifications

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { (success, error) in
            if error != nil {
                application.registerForRemoteNotifications()
            }
        }
        return true
    }

    func applicationDidBecomeActive(_ application: UIApplication) {
        if UIApplication.shared.applicationIconBadgeNumber > -1 {
            UIApplication.shared.applicationIconBadgeNumber = -1
            UserDefaults.standard.set(0, forKey: "bildirimSayisi")
        }
    }

}

AppDelegate.swift içindeki düzenlemeler bittikten sonra artık asıl kodlama yapacağımız yere ViewController.swift içerisine bakalım. Buraya yukarıda bahsettiğim kullanacak olduğumuz değişkenlerin tanımlamalarını yaptık ve bu değişkenleri değerleri ile notification gönderimi için gerekli olan kodlarımızı yazdık.

[ViewController.swift]

//
//  ViewController.swift
//  Notification
//
//  Created by Samet ÇELİKBIÇAK on 24.03.2018.
//  Copyright © 2018 Samet ÇELİKBIÇAK. All rights reserved.
//

import UIKit
import UserNotifications

class ViewController: UIViewController {
    
    
    @IBOutlet weak var bildirimBaslikTextField: UITextField!
    @IBOutlet weak var bildirimDetayTextField: UITextField!
    @IBOutlet weak var bildirimTarihDatePicker: UIDatePicker!
    
    var bildirimSayisi: Int = UserDefaults.standard.integer(forKey: "bildirimSayisi")
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
    }
    
    
    
    func BildirimGonder (title titleText: String, body bodyText:String, date notificationDate:Date) {
        let center = UNUserNotificationCenter.current()
        let content = UNMutableNotificationContent()
        content.title = titleText
        content.body = bodyText
        content.sound = UNNotificationSound.default()
        content.badge = (self.bildirimSayisi + 1) as NSNumber
        BildirimSayisiArttir(bildirimSayisi: self.bildirimSayisi + 1)
        let trigerDate = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute,], from: notificationDate)
        let trigger = UNCalendarNotificationTrigger(dateMatching: trigerDate, repeats: false)
        let identifier = UUID().uuidString
        let request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger)
        
        center.add(request) { (error) in
            if error != nil {
                print("BildirimGonder Hata: \(String(describing: error))")
            }
        }
    }
    
    func BildirimSayisiArttir(bildirimSayisi: Int) {
        if bildirimSayisi > -1 {
            self.bildirimSayisi = bildirimSayisi
            UserDefaults.standard.set(self.bildirimSayisi, forKey: "bildirimSayisi")
        } else {
            UIApplication.shared.applicationIconBadgeNumber = -1
        }
    }
    
    
    @IBAction func bildirimGonder(_ sender: Any) {
        BildirimGonder(title: bildirimBaslikTextField.text!, body: bildirimDetayTextField.text!, date: bildirimTarihDatePicker.date)
    
        let alert = UIAlertController(title: "Bildirim", message: "Bildirim Ayarlandı", preferredStyle: .alert)
        let action = UIAlertAction(title: "Tamam", style: .default, handler: nil)
        alert.addAction(action)
        present(alert, animated: true, completion: nil)
    }
    
    
}

Yukarıdaki kodlarda da görüleceği gibi bildirim gönderme işlemi bu kadar basit. Öncelikle bildirimlerimiz için bir UNUserNotificationCenter.current() komutu ile bir center oluşturuyoruz, daha önce bildirim içeriği için UNMutableNotificationContent() komutu ile bir content oluşturuyoruz. Daha sonra bu bildirimin bize ne zaman geleceğini ayarlama adımında ise UNCalendarNotificationTrigger komutunu kullanıyoruz. Gerekli tüm ayarlamaları yaptıktan sonra bildirimimiz için UNNotificationRequest komutu ile bir kayıt oluşturuyoruz. Herşey bu kadar ve uygulamamızı çalıştırdığımızda ise ilk olarak aşağıdaki gibi bir ekran geliyor ve bizden izin istiyor.

Bu izini verdikten sonra şimdi sırada istediğimiz zamana bir kayıt oluşturmak.

Gerekli alanları doldurum zaman seçtikten sonra ise, uygulama bildirim zamanı geldiğinde bize bildirim gösteriyor. Bu aşamadan sonra bildirim gönder butonuna basınca uygulamamızdan çıkıp ana ekranda vaktin gelmesini bekleyelim ve bildirimi görelim.

Bildirim geçtikten sonra ise uygulamamız üzerinde bize gelen bildirimleri gösteren sayıyı görebiliriz.

Biz telefonla işlem yapıyorsa bu şekilde bir bildirim geliyor. Ama telefon ekran kapalı konumda bekliyorsa bildirim geldiğinde aşağıdaki gibi bir durum oluşuyor.

Bildirim merkezinden bildirimlere baktığımızda ise aşağıdaki gibi görebiliriz.

Bu durumda gelen bir bildirim için artık aşağıdaki gibi işlemleri yapabiliriz. Bildirimi sağ doğru çektiğimizde gelen bildirimi açma işlemini görebiliriz.

Gelen bildirimi sola doğru çektiğimizde ise görüntüleme ve silme işlemini görebiliriz.

Yukarıdaki işlemlerde olduğu gibi çok basit birkaç işlem ile uygulamamıza bildirim özelliği ekledik ve gelen bildirimler ile ne yapabilceğimizi gördük.

Projenin kaynak kodlarına üzerinden ulaşabilirsiniz.
Kolay gelsin.

swift ile alamofire ve swiftyjson kullanımı

25 Şubat 2018 2 yorum

Merhaba

Daha önceki swift ile json veri okuma yazımda swift ile json bir veriyi nasıl okuyabilceğimizi anlatmıştım ve o yazımda bu işlem için bir model oluşturmuş ve json verisini o model ile eşleştirmiştir. Bu yazımızda ise model oluşturmadan Alamofire ve SwiftyJSON kütüphanelerini kullanıp daha kolay ve basit olarak json veri okuması yapacağız. Bu işlem için yine bir proje oluşturalım ve projemize kütüphaneleri yani Pod dosyalarımı ekleyelim daha sonra da veri okuma işlemine başlayalım. Şimdi adım adım projemizi oluşturalım. Kolay olması için projesi Desktop üzerine oluşturalım.

Bu aşamada Create a new Xcode project deyip işleme devam edelim.

Burada olduğu için Single View App seçimi yapalım ve projemizin adını verelim.

Projemizin adını verdikten sonra Desktop(Masaüstü) ortamına projemizi kayıt edelim. Projemiz hazır olduğuna göre şimdi kütüphanelerimizi yükleyelim. Xcode kapatalım ve terminal ile projemizin olduğunu konuma geçelim.

$ cd Desktop
$ cd Alamofire\ SwiftyJSON/

Projemizin olduğu dizine geçtiğimize göre artık kütüphanemiz için gerekli olan ortamı hazırlayabiliriz. Bu işlem için pod dosyamızı oluşturmamız lazım. Aşağıdaki komut ile pod dosyamızı oluşturalım.

$ pod init

Bu komut sonrasında projemizin bulunduğu dosya içeriğinde pod için gerekli olan Podfile dosyasının oluştuğunu görebiliriz. Podfile dosyamızı aşağıdaki komut ile açalım ve artık içerisine ihtiyacımız olan kütüphane bilgilerini ekleyelim.

$ open Podfile

Podfile dosyamızın içeriğinin aşağıdaki gibi hazırlayıp kayıt edelim ve dosyayı kapatalım.

platform :ios, '9.0'

target 'Alamofire SwiftyJSON' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for Alamofire SwiftyJSON

pod 'Alamofire'
pod 'SwiftyJSON'

end

Burada kütüphanelerimizi pod ‘Alamofire’ ve pod ‘SwiftyJSON’ komutları ile eklemiş oluyoruz. Artık Podfile hazır olduğuna göre bu kütüphanelerimizi projemiz içine entegre edelim. Bu işlem içinde aşağıdaki komutu çalıştıralım.

$ pod install

Yükleme işlemi bittiğinde artık Xcode proje ortamını açan “Alamofire SwiftyJSON.xcodeproj” dosyasını değil Podfile içindeki kütüphanelerin entegre olduğu ortamı açan Alamofire SwiftyJSON.xcworkspace ile projemizi açalım. Projemizi açtığımızda aşağıda görüldüğü gibi artık pod altında kütüphanelerimiz eklenmiş bulunmaktadır.

Artık herşey hazır ve bu yeni eklediğimiz Alamofire ve SwiftyJSON kütüphanelerimizi kullanıp bir önceki makelede bize JSON içerik sağlayan https://coinmarketcap.com/api/ adresindeki API leri yeniden kullanalım. Bu işlem için projemizde bulunan ViewController.swift içerisini aşağıdaki gibi kodlayalım.

import UIKit
import Alamofire
import SwiftyJSON


class ViewController: UIViewController {
    
    let baseUrl = "https://api.coinmarketcap.com/v1/ticker/?convert=TRY&limit=3"
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        getJSONData(url: baseUrl)
    }
    
    func getJSONData(url: String) {
        
        Alamofire.request(url, method: .get).responseJSON { response in
            if response.result.isSuccess {
                let jsonData : JSON = JSON(response.result.value!)
                print(jsonData)
            } else {
                print("Error: \(String(describing: response.result.error))")
            }
        }
        
    }
    
}

Bu kodu simülatörde çalıştırdığımızda print(jsonData) komutu ile API den gelen JSON içeriğini görebiliriz.

[
{
"total_supply" : "16885400.0",
"price_btc" : "1.0",
"24h_volume_try" : "22690623240.7",
"name" : "Bitcoin",
"market_cap_try" : "624859196268",
"percent_change_7d" : "-8.74",
"price_try" : "37005.8865214",
"market_cap_usd" : "164849796244",
"24h_volume_usd" : "5986220000.0",
"percent_change_1h" : "0.79",
"id" : "bitcoin",
"price_usd" : "9762.86",
"available_supply" : "16885400.0",
"percent_change_24h" : "-2.08",
"max_supply" : "21000000.0",
"rank" : "1",
"symbol" : "BTC",
"last_updated" : "1519555768"
},
{
"total_supply" : "97832741.0",
"price_btc" : "0.0873545",
"24h_volume_try" : "6376679870.04",
"name" : "Ethereum",
"market_cap_try" : "313030600927",
"percent_change_7d" : "-10.12",
"price_try" : "3199.6507154",
"market_cap_usd" : "82583454143.0",
"24h_volume_usd" : "1682290000.0",
"percent_change_1h" : "0.54",
"id" : "ethereum",
"price_usd" : "844.129",
"available_supply" : "97832741.0",
"percent_change_24h" : "0.75",
"max_supply" : null,
"rank" : "2",
"symbol" : "ETH",
"last_updated" : "1519555752"
},
{
"total_supply" : "99992622540.0",
"price_btc" : "0.00009848",
"24h_volume_try" : "1308472315.2",
"name" : "Ripple",
"market_cap_try" : "141025543207",
"percent_change_7d" : "-16.55",
"price_try" : "3.6072709235",
"market_cap_usd" : "37205233118.0",
"24h_volume_usd" : "345200000.0",
"percent_change_1h" : "0.69",
"id" : "ripple",
"price_usd" : "0.951667",
"available_supply" : "39094802192.0",
"percent_change_24h" : "0.08",
"max_supply" : "100000000000",
"rank" : "3",
"symbol" : "XRP",
"last_updated" : "1519555741"
}
]

Artık elimizde işlem yapabileceğimiz bir data mevcut ve bu data içinden istediğimiz alanın değerini rahatça alabiliriz. Bu işlem için kod içinde aşağıdaki gibi değişiklik yapıp gelen json datası içinde gezip hangi değeri almak istiyorsak onu print ile yazdıralım. Bu işlem için gelen değerlerin Adını, Türk Lirası ve Dolar karşılıklarını gösterelim.

import UIKit
import Alamofire
import SwiftyJSON


class ViewController: UIViewController {
    
    let baseUrl = "https://api.coinmarketcap.com/v1/ticker/?convert=TRY&limit=3"
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        getJSONData(url: baseUrl)
    }
    
    func getJSONData(url: String) {
        
        Alamofire.request(url, method: .get).responseJSON { response in
            if response.result.isSuccess {
                let jsonData : JSON = JSON(response.result.value!)
                
                for json in jsonData.arrayValue {
                    print("\(json["name"]) : \(json["price_try"]) ₺ , \(json["price_usd"]) $")
                }
                
            } else {
                print("Error: \(String(describing: response.result.error))")
            }
        }
        
    }
    
}

Bu kod çalıştığında da aşağıdaki gibi değerleri görebiliriz.

Bitcoin : 37066.4204231 ₺ , 9778.83 $
Ethereum : 3206.45461982 ₺ , 845.924 $
Ripple : 3.612554847 ₺ , 0.953061 $

İşte bu kadar basit birkaç satır kod ile json verimizi okuduk ve bu işlem için bir önceki makaledeki gibi bir model classı oluşturmamıza gerek kalmadı. Projenin kaynak kodlarına üzerinen ulaşabilirsiniz.
Kolay gelsin.

Kategoriler:iOS Etiketler:, , , , , , , ,

swift ile json veri okuma


Merhaba

Bugün JSON bir içeriği Swift ile nasıl okuyacağımıza bakalım. Bu işlemi yapabilmek için önce bize JSON formatında içerik sağlayan https://coinmarketcap.com/api/ adresindeki örnek API leri kullanalım. Bu adreste bize sanal para birimlerinin değerlerini gösteren bir içerik sağlanıyor. Bizde örnek olarak ilk üç sanal para biriminin değerlerini JSON olarak görelim ve sonrasında da Swif ile bu bilgileri nasıl okuyabiliriz ona bakalım. İlk üç sanal para birimi için kullanacağımız API adresi https://api.coinmarketcap.com/v1/ticker/?convert=TRY&limit=3 olacaktır. Bu adresi ziyaret ettiğimizde aşağıdaki gibi JSON içeriğe sahip olacağız.

[
    {
        "id": "bitcoin", 
        "name": "Bitcoin", 
        "symbol": "BTC", 
        "rank": "1", 
        "price_usd": "12931.5", 
        "price_btc": "1.0", 
        "24h_volume_usd": "13119000000.0", 
        "market_cap_usd": "216905222100", 
        "available_supply": "16773400.0", 
        "total_supply": "16773400.0", 
        "max_supply": "21000000.0", 
        "percent_change_1h": "-1.33", 
        "percent_change_24h": "-5.97", 
        "percent_change_7d": "-6.18", 
        "last_updated": "1514712261", 
        "price_try": "49085.2971795", 
        "24h_volume_try": "49797008367.0", 
        "market_cap_try": "823327323711"
    }, 
    {
        "id": "ripple", 
        "name": "Ripple", 
        "symbol": "XRP", 
        "rank": "2", 
        "price_usd": "2.20932", 
        "price_btc": "0.00017298", 
        "24h_volume_usd": "6602400000.0", 
        "market_cap_usd": "85587167493.0", 
        "available_supply": "38739144847.0", 
        "total_supply": "99993093880.0", 
        "max_supply": "100000000000", 
        "percent_change_1h": "0.69", 
        "percent_change_24h": "-11.74", 
        "percent_change_7d": "110.26", 
        "last_updated": "1514712240", 
        "price_try": "8.3861213908", 
        "24h_volume_try": "25061343703.2", 
        "market_cap_try": "324871171261"
    }, 
    {
        "id": "ethereum", 
        "name": "Ethereum", 
        "symbol": "ETH", 
        "rank": "3", 
        "price_usd": "715.561", 
        "price_btc": "0.0560242", 
        "24h_volume_usd": "2839910000.0", 
        "market_cap_usd": "69180310557.0", 
        "available_supply": "96679823.0", 
        "total_supply": "96679823.0", 
        "max_supply": null, 
        "percent_change_1h": "-0.89", 
        "percent_change_24h": "-1.12", 
        "percent_change_7d": "6.02", 
        "last_updated": "1514712248", 
        "price_try": "2716.12143487", 
        "24h_volume_try": "10779710498.6", 
        "market_cap_try": "262594138549"
    }
]

Şimdi yapmamız gereken ise bir proje açıp bu içeriği Swift ile nasıl okuyabileceğimize bakalım. İlk olarak Xcode da bir proje açalım. Aşağıdaki ekran görüntüsündeki sıra ile projemizi oluşturalım ve kodlamaya geçelim.

Artık projemiz hazır. Şimdi projemiz içinde kullanmak ve JSON verimizi modellemek için projemizde bir tane “File > New > File” seçimi ile “Swift File” ekleyelim ve adına “CurrencyModel” diyelim. Bu yeni eklediğimiz dosya içine JSON verimizden kullanmak istediğimiz bilgileri tanımlayalım. Burada dikkat etmemiz gereken konu JSON içinde tanımlı olan isim ve tip bilgisine göre CurrenyModel dosyamızın içinde tanımlama yapmak. Kod içinde de göreceğimiz gibi CurrencyModel:Codable bilgisi bizim için çok önemli ve bu tanımdaki “Codable” bilgisi JSON veriyi kolayca okumamızı sağlıyor. İhtiyacımız olan bilgileri aşağıdaki gibi tanımlayalım.

import Foundation

struct CurrencyModel:Codable {
    var id:String
    var name:String
    var symbol:String
    var rank:String
    var price_usd:String
    var price_btc:String
    var percent_change_1h:String
    var percent_change_24h:String
    var percent_change_7d:String
    var last_updated:String
    var price_try:String
}

JSON verisini okumak için ihtiyacımız olan yapıda hazır olduğuna göre artık veri okumaya başlayalım. Yaptığımız uygulama içinde sadece veri okuması yapılacak ve console üzerinde bu değerleri göreceğiz. İsterseniz bu bilgileri kullanıp uygulama üzerinde görsel olarak da gösterebilirsiniz. Aşağıdaki kodumuz ile JSON dan veriyi okuduk ve console ekranımıza dump olarak yazdırdık.

import UIKit

let myApiUrl = "https://api.coinmarketcap.com/v1/ticker/?convert=TRY&limit=3"
let url = URL(string: myApiUrl)!
let myJSONData = try! Data(contentsOf: url)
var jsonDecoder = JSONDecoder()

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let currencies = try? jsonDecoder.decode([CurrencyModel].self, from: myJSONData)
        if let currency = currencies{
            
            for c in currency{
                dump(c)
            }
        }   
    }
}

Yukarıdaki kod ile çıkan veride bulunan last_updated bilgisi Unix Time Stamp bilgisidir ve bu bilginin normal bir tarih formatında görünmesi için kodda aşağıdaki gibi bir düzenleme yapmamız gerekiyor.

import UIKit

let myApiUrl = "https://api.coinmarketcap.com/v1/ticker/?convert=TRY&limit=3"
let url = URL(string: myApiUrl)!
let myJSONData = try! Data(contentsOf: url)
var jsonDecoder = JSONDecoder()

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let currencies = try? jsonDecoder.decode([CurrencyModel].self, from: myJSONData)
        if let currency = currencies{
            
            for c in currency{
                dump(c)
                let lastUpdateUTC = Date(timeIntervalSince1970: TimeInterval(Int(c.last_updated)!))
                let dateFormatter = DateFormatter()
                dateFormatter.dateFormat = "dd-MM-YYYY hh:mm:ss a"
                let lastUpdateLocal = dateFormatter.string(from: lastUpdateUTC)
                print("Son Güncelleme UTC:" + String(describing: lastUpdateUTC))
                print("Son Güncelleme Local:" + String(describing: lastUpdateLocal))
            }
        }
    }
}

Artık bu kod çalıştığında sadece sayısal bir bilgi olan last_update bilgisi gerekli çevrim işleminden sonra tarih formatında görebiliyoruz.

▿ Swif_JSON.CurrencyModel
  - id: "bitcoin"
  - name: "Bitcoin"
  - symbol: "BTC"
  - rank: "1"
  - price_usd: "12902.4"
  - price_btc: "1.0"
  - percent_change_1h: "-0.39"
  - percent_change_24h: "-5.59"
  - percent_change_7d: "-6.05"
  - last_updated: "1514715260"
  - price_try: "48974.8396032"
Son Güncelleme UTC:2017-12-31 10:14:20 +0000
Son Güncelleme Local:31-12-2017 01:14:20 PM
▿ Swif_JSON.CurrencyModel
  - id: "ripple"
  - name: "Ripple"
  - symbol: "XRP"
  - rank: "2"
  - price_usd: "2.21301"
  - price_btc: "0.00017297"
  - percent_change_1h: "-0.4"
  - percent_change_24h: "-9.59"
  - percent_change_7d: "112.55"
  - last_updated: "1514715241"
  - price_try: "8.4001278669"
Son Güncelleme UTC:2017-12-31 10:14:01 +0000
Son Güncelleme Local:31-12-2017 01:14:01 PM
▿ Swif_JSON.CurrencyModel
  - id: "ethereum"
  - name: "Ethereum"
  - symbol: "ETH"
  - rank: "3"
  - price_usd: "714.06"
  - price_btc: "0.0558108"
  - percent_change_1h: "-0.31"
  - percent_change_24h: "-1.29"
  - percent_change_7d: "6.17"
  - last_updated: "1514715249"
  - price_try: "2710.42394958"
Son Güncelleme UTC:2017-12-31 10:14:09 +0000
Son Güncelleme Local:31-12-2017 01:14:09 PM

Bu şekilde bir JSON bilgisini Swift ile okuma işlemini yaptık ve sonuçlarını gördük. Projenin kaynak kodlarına üzerinden ulaşabilirsiniz.
Kolay gelsin.

Kategoriler:iOS Etiketler:, , , , ,
%d blogcu bunu beğendi: