WWDC 2024 Özeti

Apple, teknoloji dünyasında her yıl büyük yankı uyandıran Dünya Geliştiriciler Konferansı (WWDC) etkinliğiyle 2024 yılında da yeniliklerini tanıttı. Bu yılın WWDC etkinliği, yapay zeka destekli özellikler ve yazılım iyileştirmeleri ile dolu geçti. Apple, bu yeniliklerle iPhone, Mac ve iPad kullanıcılarının deneyimini artırmayı hedefliyor. Bu makalede, WWDC 2024’te duyurulan ana yenilikleri ve geliştiriciler için sunulan yeni araçları detaylı bir şekilde inceleyeceğiz.

Yapay Zeka İşlevselliği

WWDC 2024’ün en dikkat çekici duyurularından biri, Apple’ın “Apple Intelligence” olarak adlandırdığı yeni nesil yapay zeka destekli özellikler oldu. Bu özellikler, Apple’ın en son işletim sistemleriyle birlikte iPhone, Mac ve iPad’lere entegre edilecek.

1. Siri: Siri, artık mesajlar, e-postalar, takvim ve fotoğraflar gibi çeşitli kaynaklardan bilgi alabiliyor ve üçüncü parti uygulamalarla da daha geniş bir yelpazede sorulara yanıt verebiliyor. Kullanıcılar artık Siri ile metin üzerinden de etkileşimde bulunabilecekler. Siri’nin bilgiye erişim kapasitesi genişletildi ve artık daha karmaşık görevleri yerine getirebilecek.

2. ChatGPT Entegrasyonu: Apple, sistemlerinin görüntüleri ve belgeleri daha iyi anlaması ve kullanıcıların metin mesajları oluşturup düzenlemesi için ChatGPT teknolojisini entegre ediyor. Bu, kullanıcıların daha doğal ve etkileşimli bir şekilde cihazlarıyla iletişim kurmalarını sağlayacak.

3. Private Cloud Compute: Apple, çoğu yapay zeka işlemini cihaz üzerinde gerçekleştirecek, ancak daha karmaşık görevler Apple’ın sunucularında işlenecek. Bu yeni özellik, Apple’ın kendi sunucu çiplerini kullanarak tüm cihazlarda yapay zeka özelliklerini destekleyecek. Private Cloud Compute, kullanıcı verilerini daha güvenli bir şekilde işleyerek gizlilik endişelerini minimuma indirecek.

4. Uyumlu Cihazlar: Apple Intelligence, iPhone 15 Pro, iPhone 15 Pro Max, ve M1 ve sonrası çipli iPad ve Mac’lerde kullanılabilecek. Bu, daha eski cihaz kullanıcılarının bu yeni yapay zeka özelliklerinden yararlanamayacağı anlamına geliyor, bu da yeni cihazlara geçişi teşvik edebilir.

İşletim Sistemleri

Apple, iOS, macOS, iPadOS ve watchOS için yeni sürümlerini tanıttı ve bu güncellemeler, kullanıcı deneyimini daha da geliştirecek bir dizi yeni özellik sunuyor.

1. iOS 18:

  • Ana Ekran Özelleştirmeleri: iPhone kullanıcıları artık uygulamaları ve widget’ları ana ekranda herhangi bir açık alana yerleştirebilecek.
  • Kilit Ekranı ve Kontrol Merkezi: Kullanıcılar kilit ekranını ve kontrol merkezini daha özgürce özelleştirebilecekler. Kontrol merkezine medya oynatma kontrolleri eklendi.

2. macOS Sequoia:

  • iPhone Ekran Yansıtma: Bu özellik, iPhone ekranının Mac bilgisayarlarda görüntülenmesini ve etkileşime geçilmesini sağlıyor. Kullanıcılar, iPhone’larını Mac’leri üzerinden kontrol edebilecekler.

3. iPadOS 18:

  • Gelişmiş Hesap Makinesi Uygulaması: iPad kullanıcıları nihayet gelişmiş özelliklere sahip bir hesap makinesi uygulamasına kavuşuyor. Math Notes hesap makinesi, kullanıcıların matematiksel ifadeleri yazılı veya metin olarak girip anında çözümünü görmelerini sağlıyor.
  • Smart Script: Bu özellik, el yazısı notları daha okunaklı hale getiriyor ve dijital yazıya dönüştürüyor.

4. watchOS 11:

  • Vitals Uygulaması: Yeni Vitals uygulaması, önemli sağlık metriklerini bir bakışta gösteriyor ve antrenman moduyla kullanıcıların egzersizlerin vücutlarına etkisini daha iyi anlamalarını sağlıyor.

5. VisionOS 2:

  • Geliştirilmiş Jest Kontrolleri: Yeni sürüm, geliştirilmiş jest kontrolleri ve mekansal fotoğraflar ile geliyor. Bu özellikler, kullanıcıların cihazlarıyla daha doğal ve sezgisel bir şekilde etkileşime geçmelerini sağlıyor.

Uygulama Güncellemeleri

Apple, çeşitli uygulamalarında da önemli güncellemeler duyurdu. Bu güncellemeler, kullanıcı deneyimini iyileştirmeyi ve günlük işleri kolaylaştırmayı hedefliyor.

1. Mesajlar: Artık uydu üzerinden mesaj gönderilebilecek. Bu özellik, hücresel ve Wi-Fi bağlantısının olmadığı durumlarda kullanılabilecek ve acil durumlarda büyük fayda sağlayacak.

2. Mail: Mail uygulaması, e-postaları otomatik olarak kişisel, pazarlama ve işlemsel olarak sınıflandırabilecek. Bu, kullanıcıların gelen kutularını daha düzenli ve verimli bir şekilde yönetmelerine yardımcı olacak.

3. Safari: Yeni Highlight özelliği, bir web sayfası hakkında önemli bilgileri yüzeye çıkarabilecek. Örneğin, bir restoranın konumunu veya bir sanatçının parçasını bir makaleden dinlemeyi mümkün kılacak.

4. Notlar ve Telefon Uygulamaları: Kullanıcılar artık sesli kayıt yapabilecek, bu kayıtları yazıya dökebilecek ve özetleyebilecek. Bu, toplantı notları veya ders kayıtları gibi durumlar için büyük bir kolaylık sağlayacak.

5. Image Playground: Yeni bir görüntü oluşturma aracı tanıtıldı. Kullanıcılar bu araçla yaratıcı görseller oluşturabilecekler. Image Playground, AI destekli özellikleriyle kullanıcıların hayal güçlerini daha etkin bir şekilde kullanmalarını sağlayacak.

6. Photos Uygulaması: Geliştirilmiş arama özellikleri ve video kliplerde belirli anları bulma yeteneği eklendi. Kullanıcılar, büyük fotoğraf ve video kütüphanelerinde aradıkları içerikleri daha kolay bulabilecekler.

Geliştiriciler İçin Yenilikler

WWDC 2024, geliştiriciler için de birçok heyecan verici yeniliği beraberinde getirdi. Apple, geliştiricilere daha güçlü araçlar ve daha fazla esneklik sunarak uygulama geliştirme süreçlerini kolaylaştırmayı hedefliyor.

Yeni API’ler ve Geliştirme Araçları

1. Core ML 4: Apple, yeni Core ML sürümünü tanıttı. Core ML 4, daha hızlı ve verimli model eğitimine olanak tanıyor. Geliştiriciler, bu yeni araçlar sayesinde AI modellerini daha etkili bir şekilde uygulamalarına entegre edebilirler.

2. Create ML Güncellemeleri: Create ML, daha kullanıcı dostu bir arayüz ve gelişmiş özelliklerle güncellendi. Geliştiriciler, daha az kod yazarak AI modelleri oluşturabilir ve bu modelleri kolayca test edebilirler.

3. Doğal Dil İşleme (NLP) Geliştirmeleri: Apple, doğal dil işleme alanında da önemli iyileştirmeler sundu. Yeni NLP API’leri, geliştiricilerin uygulamalarında daha etkili ve doğru metin analizleri yapmalarına olanak tanıyor.

Swift ve SwiftUI Gelişmeleri

1. SwiftUI 3: Apple, SwiftUI framework’ünü güncelleyerek geliştiricilere daha esnek ve güçlü araçlar sundu. Bu güncellemeler, geliştiricilerin daha az kod yazarak daha zengin kullanıcı arayüzleri oluşturmasını sağlıyor.

2. Xcode 15: Yeni Xcode sürümü, geliştirme sürecini hızlandıran ve kolaylaştıran birçok yeni özellik ve iyileştirme içeriyor. Gelişmiş hata ayıklama araçları ve performans iyileştirmeleri, büyük projelerde çalışan geliştiriciler için önemli avantajlar sunuyor.

Metal 4 ve Grafik İyileştirmeleri

1. Metal 4: Apple, yeni grafik API’si Metal 4’ü tanıttı. Metal 4, oyun ve yüksek performans gerektiren uygulamalar için daha iyi performans ve verimlilik sağlıyor. Geliştiriciler, Metal 4 ile daha etkileyici grafikler ve hızlı yanıt veren uygulamalar oluşturabilecekler.

2. RealityKit 3: AR uygulamaları için RealityKit framework’ü de güncellendi. Geliştiriciler, RealityKit 3 ile daha gerçekçi ve etkileşimli artırılmış gerçeklik deneyimleri yaratabilecekler.

Sonuç

WWDC 2024, Apple’ın yapay zeka ve yazılım alanındaki yenilikçi adımlarını sergilediği bir etkinlik oldu. Apple Intelligence’ın duyurulması, cihazlarda daha akıllı ve kullanıcı dostu deneyimler sunmayı amaçlıyor. Yeni işletim sistemi güncellemeleri, kullanıcıların cihazlarını daha verimli ve kişisel hale getirmelerini sağlarken, uygulama güncellemeleri günlük görevleri kolaylaştırıyor ve kullanıcı deneyimini iyileştiriyor. Geliştiriciler için sunulan yeni araçlar ve API’ler, uygulama geliştirme süreçlerini hızlandırıyor ve daha yaratıcı çözümler üretmelerini sağlıyor. Apple, bu yeniliklerle hem kullanıcılarını memnun etmeyi hem de rekabetin yoğun olduğu teknoloji pazarında güçlü kalmayı hedefliyor.

Swiftte en popüler 10 açık kaynak framework

Swift dilinde en çok kullanılan açık kaynak framework’ler şu şekildedir:

  • Alamofire: HTTP bağlantılarını yönetmek için kullanılan bir framework.
  • Kingfisher: Resimlerin indirilmesi ve cache’lenmesi için kullanılan bir framework.
  • SDWebImage: Web’den resimlerin indirilmesi ve cache’lenmesi için kullanılan bir framework.
  • SwiftyJSON: JSON verilerinin kolayca işlenmesi için kullanılan bir framework.
  • RxSwift: Reactive programlama için kullanılan bir framework.
  • SnapKit: Auto Layout kullanımını kolaylaştıran bir framework.
  • Moya: Networking işlemlerini kolaylaştıran bir framework.
  • Realm: Veritabanı işlemleri için kullanılan bir framework.
  • ObjectMapper: JSON veya diğer veri formatlarının modellere dönüştürülmesi için kullanılan bir framework.

swift 4.2 Dynamic Member Lookup

Swift 4.1 ile birlikte sınıflarımız için subscript metodları tanımlayabiliyorduk, bu şekilde tırnak işareti kullanarak içerikleri özelleştirilmiş olarak çağrılabiliyor.

class Person {
  let name: String
  let age: Int
  private let details: [String: String]

  init(name: String, age: Int, details: [String: String]) {
    self.name = name
    self.age = age
    self.details = details
  }

  subscript(key: String) -> String {
    switch key {
      case "info":
        return "\(name) is \(age) years old."
      default:
        return details[key] ?? ""
    }
  }
}

let details = ["title": "Author", "instrument": "Guitar"]
let me = Person(name: "Cosmin", age: 32, details: details)
me["info"]   // "Cosmin is 32 years old."
me["title"]  // "Author"

yeni gelen @dynamicMemberLookup özelliği ile nasıl olduğuna bakalım

// 1
@dynamicMemberLookup
class Person {
  let name: String
  let age: Int
  private let details: [String: String]

  init(name: String, age: Int, details: [String: String]) {
    self.name = name
    self.age = age
    self.details = details
  }

  // 2
  subscript(dynamicMember key: String) -> String {
    switch key {
      case "info":
        return "\(name) is \(age) years old."
      default:
        return details[key] ?? ""
    }
  }
}

// 3
me.info   // "Cosmin is 32 years old." 
me.title  // "Author"

// 1

Sınıfı tanımlarken @dynamicMemberLookup kullanıyoruz, böylece o sınıf için “dot syntax”ı aktifleştirmiş oluyoruz.

// 2

subscript metodunu tanımlarken parametrenin başına dynamicMember yazıyoruz.

// 3

artık sadece tanımladığımız sınıfın sonuna . (nokta) koyarak property kullanır gibi subscript içeriklerine erişebiliriz.

datasource = select() den dönen datarow[] hatası

herhangi bir girdview veya combobox ın datasource’una datarow dizisi göndermek zorunda olduğumuzda hatayla karşılaşırız:

comboBox1.DataSource = dt.Select(“d<30”);

hatanın oluşma sebebi aşağıdaki interface lerden herhangi biriyle implemente olmayan nesneler datagrid gibi kontrollere datasource olarak bağlanamaz.

 

IList interface
IListSource interface
IBindingList interface
IBindingListView interface

Sorunu çözümü önce datasource olarak datatable’ı seçip ardından datatable’ın DefaultView.RowFilter özelliğine koşulumuzu eklemek:

comboBox1.DataSource = dt;
dt.DefaultView.RowFilter = “d<30”;

SQL Rehberi – Hazır Fonksiyonlar – 1

SQL’de işlemlerimizi daha kolay yapmamamızı sağlayan birçok fonksiyon bulunmaktadır. Çoğu zaman lazım olan bu fonksiyonları tek tek açıklamaya çalışacağım. Umarım faydalı olur.

ascii()

Açıklama: Girilen karakterlerin en solundakinin ascii numarsını döndürür.

Yazılış: int = ASCII ( karakter_girişi )

Örnek:

select ascii(‘ABC’) — 65
select ascii(‘A’) — 65
select ascii(‘Z’) — 65
select ascii(‘a’) — 97
select ascii(‘z’) — 122
select ascii(‘0’) — 48
select ascii(‘9’) — 57
select ascii(‘_’) — 95
select ascii(‘ ‘) — 32

char()

Açıklama: Girilen sayının ascii karakter karşılığını döndürür.

Yazılış: char= CHAR ( sayı )

Örnek:

select char(ascii(‘A’))  — A
select char(65)  — A
select char(145) — Sol tek tırnak: ‘
select char(146) — Sağ tek tırnak: ’

Not:

SQL: char(13) = satır başı, char(10) = satır atlama.
VB’deki: ‘vbCrLf’ veya Javascript/c#’daki \n gibi
Örnek:
Print ‘Kod listesi: ‘ + char(13) + char(10) + ‘A = Selam 1’ + char(13) + char(10) + ‘B = Selam 2’

Sonuç:

Kod listesi:
A = Selam 1
B = Selam 2

select nchar(65) — A
select unicode(‘A’) — 65

SQL’de ascii listesi almak için aşağıdaki komutu kullanabiliriz:

declare @strValue varchar(255)
declare @intCount int
declare @intCountMax int
set @intCount = 0
set @intCountMax = 255
forloop_begin:
  set @strValue = (select (convert(varchar(15),@intCount) + '-' + char( @intCount ) ))
  print @strValue
  set @intCount = @intCount + 1
  if ( @intCount <= @intCountMax ) begin
    goto forloop_begin
  end
forloop_end:

charindex()

Açıklama: girdiğimiz yazının içinden belirlediğimiz kısmın başlangıç karakterini döndürür, eğer yoksa 0 döner.

Yazılış: int = CHARINDEX ( expression1 , expression2 [ , start_location ] )

expression1 – Aranılacak olan text
expression2 – içinde arama yapılacak text.
Start_location = 0 veya negatif = başlangıç.

Örnek :
select charindex( ‘Selam’, ‘Yeniden Selam Herkese’)  — 7
select charindex( ‘/’, ‘http://www.ftorun.com/’,8) — 22

difference()

Açıklama: iki soundex değerini karşılaştırıp 1 – 4 arasında bir numara dödürür. Birbirlerine olan benzerliklerine göre 4’e yakın bir değer verir.

Soundex nedir: Bir kelimeden fonetik bir kod cikarma yontemidir. SQL’de SOUNDEX() komutu ile verdiğimizde bize 4 haneli soundex değeri, difference ise iki soundex degerini kiyaslayarak iki kelimenin birbirine ne kadar yakin okundugunu cikarilabilir.

Yazılış:

int = DIFFERENCE ( yazi_1 , yazi_2 )

Örnek:

SELECT SOUNDEX(‘Hello’) — H400
select DIFFERENCE(‘Hello’,’Hello’) — 4

SELECT SOUNDEX(‘ankara’) — A526
select DIFFERENCE(‘ankara’,’ankara’) — 4

SELECT SOUNDEX(‘ali’) — A400
SELECT SOUNDEX(‘veli’) — V400
select DIFFERENCE(‘ali’,’veli’) — 3

SELECT SOUNDEX(‘abcdefg’) — A123
SELECT SOUNDEX(‘tuvwxyz’) — T122
select DIFFERENCE(‘abcdefg’,’tuvwxyz’) — 2  (1 "1" + 1 "2" = 2)

SELECT SOUNDEX(‘dog’) — D200
SELECT SOUNDEX(‘dot’) — D300
select DIFFERENCE(‘dog’,’dot’) — 3  (1 "D" ve 2 "0" = 3)

select SOUNDEX(‘hakan’) — H250
select SOUNDEX(‘melih’) — M400
select DIFFERENCE(‘hakan’,’melih’) — 1  (Soundex değerlerinden sadece sondaki 0 aynı olduğu için 1.)

–Soundex değerlerinin hepsi aynıysa geriye 4 döner.
select SOUNDEX(‘1’) — 0000
select SOUNDEX(‘2’) — 0000
select SOUNDEX(’20’) — 0000
select SOUNDEX(‘100’) — 0000
select DIFFERENCE(‘1′,’2’) — 4
select DIFFERENCE(’20’,’100′) — 4

Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.

SQL’de subquery’lerde sadece 1 çıktı alınması gereken yerde, birden fazla veri listelenirse bu hatayı verir.

örnek:

USE Northwind
SELECT t1.*  FROM dbo.Orders t1
WHERE t1.OrderDate =  

(SELECT MAX(OrderDate), CustomerID FROM dbo.Orders WHERE t1.CustomerID = CustomerID GROUP BY CustomerID)

Burada t1.OrderDate’e 1 sonuç vermemiz gerekirken altsorgumuzdan 2 değer dönmektedir, bu sorunu çözmek için

USE Northwind
SELECT t1.* FROM dbo.Orders t1
WHERE t1.OrderDate =
  (SELECT MAX(OrderDate) FROM dbo.Orders WHERE t1.CustomerID = CustomerID)

Maximum OrderDate in yanındaki CustomerID’yi sildiğimizin için bu sorgu hata vermeyecektir.

TC kimlik no doğruluk kontrolü

TcKimlikNo web servisi kapanıp ücretli bir hale geldikten sonraKimlik Numarası tesbiti yapmamız gereken durumlarda sıkıntıya düşüyoruz.

Fakat TC kimlik numaraları bir algoritmaya göre verildiği için basit formlarda kullanıcı’nın doğru kimlik numarası girip girmediğini tesbit etmek için şu metodu kullanabiliriz:


public bool TCKimlik(string no)
{
   if (no.Length != 11) { return false; }
   int sayi = 0;
   for (int i = 0; i < 10; i++) sayi += int.Parse(no.Substring(i, 1));
   return sayi.ToString().Substring(sayi.ToString().Length - 1, 1) == no.Substring(10, 1) ? true : false;
}

Algoritmanın temeli; ilk 10 rakamın toplamının onlar basamağı, 11. rakama eşit çıkmak zorunda,
Burada kullanıcı deneme yanılma yaparak doğru gösterebilir tabi, ama hiç yoktan iyidir…

Web.Config’de değer tutmak

Web uygulamalarımızda çoğu zaman değerini dışarıdan almaya ihtiyaç duyduğumuz değişkenler olur bunları tutmak için en iyi yöntem Web.Config içindeki appSettings bölümüdür.

<appSettings>
<add key=”HostName” value=”127.0.0.1″ />
</appSettings>

Eklediğimiz bu parametrenin değerine şu şekilde ulaşabiliriz:
VB.NET

AppSettings.Item(“HostName“)

C#.net

ConfigurationSettings.AppSettings[“HostName“].ToString();

Fakat bu sınıfı kullanabilmek için code sayfamızın başına System.Configuration.ConfigurationSettings namespace’ini eklememiz gerekiyor.
VB.NET

Imports System.Configuration.ConfigurationSettings

veya
C#.net

using System.Configuration.ConfigurationSettings;