You need to enable JavaScript to run this app.

Ana içeriğe geç

Yazar: KodlarTR
OpenCV ile Basit Görüntü Tanıma

Görüntü tanıma (image recognition) için Python tabanlı bazı temel örnekleri aşağıda paylaşıyorum. Bu örnekler, popüler kütüphanelerden OpenCV, TensorFlow ve PyTorch kullanarak nasıl görüntü tanıma yapılabileceğini gösteriyor. Kodlar basit ve anlaşılır olacak şekilde hazırlandı.

1. OpenCV ile Basit Görüntü Tanıma (Yüz Tespiti)

OpenCV, yüz tanıma gibi temel görüntü işleme görevleri için oldukça kullanışlıdır. Aşağıdaki örnek, bir görüntüdeki yüzleri tespit eder.
python

Kopyala
Kod:
import cv2

# Önceden eğitilmiş yüz tanıma modelini yükle
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')

# Görüntüyü oku
image = cv2.imread('yuz_resmi.jpg')

# Görüntüyü gri tonlamaya çevir (yüz tanıma için gerekli)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Yüzleri tespit et
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

# Tespit edilen yüzlerin etrafına dikdörtgen çiz
for (x, y, w, h) in faces:
    cv2.rectangle(image, (x, y), (x+w, y+h), (255, 0, 0), 2)

# Sonucu göster
cv2.imshow('Yuz Tespiti', image)
cv2.waitKey(0)
cv2.destroyAllWindows()


Gereksinimler:
  • pip install opencv-python
  • yuz_resmi.jpg adında bir görüntü dosyası.
  • Bu kod, görüntüdeki yüzleri tespit eder ve etrafına mavi bir dikdörtgen çizer.
Yorum Yorum Yok
Yazar: admin
Basit Python kodu ve hata ayıklama

Kodlarda hata ayıklama (debugging) tekniklerinden biri **"baskı (print) yöntemiyle hata ayıklama"**dır. Bu yöntem, kodun belirli yerlerine
Kod:
print
komutları ekleyerek değişkenlerin değerlerini ve kodun akışını takip etmeyi sağlar.

Örnek: Basit Python kodu ve hata ayıklama
python

Kod:
def bolme_islemi(sayi1, sayi2):
    sonuc = sayi1 / sayi2
    return sonuc

print(bolme_islemi(10, 0))
Problem:
Bu kod çalıştırıldığında şu hatayı verir:
vbnet

Kod:
ZeroDivisionError: division by zero
Hata Ayıklama (Print Yöntemiyle)
Koda
Kod:
print
ifadeleri ekleyelim:
python

Kod:
def bolme_islemi(sayi1, sayi2):
    print(f"Gelen sayılar: sayi1={sayi1}, sayi2={sayi2}")
    sonuc = sayi1 / sayi2
    return sonuc

print(bolme_islemi(10, 0))
Çıktı:
vbnet

Kod:
Gelen sayılar: sayi1=10, sayi2=0
ZeroDivisionError: division by zero
Bu çıktıyla
Kod:
sayi2
değişkeninin sıfır olduğunu net olarak görebildik. Böylece hatanın sebebi anlaşılır.

Çözüm:
Böyle bir durumda, sıfıra bölme hatasını engellemek için kontrol eklenebilir:
python

Kod:
def bolme_islemi(sayi1, sayi2):
    print(f"Gelen sayılar: sayi1={sayi1}, sayi2={sayi2}")
    if sayi2 == 0:
        print("Hata: Sıfıra bölme yapılamaz!")
        return None
    sonuc = sayi1 / sayi2
    return sonuc

print(bolme_islemi(10, 0))
Çıktı:
makefile

Kod:
Gelen sayılar: sayi1=10, sayi2=0
Hata: Sıfıra bölme yapılamaz!
None
Bu şekilde, hem hata kaynağı anlaşıldı hem de kod güvenli hale getirildi.
Yorum Yorum Yok
Yazar: admin
Soru
Verilen bir tamsayı dizisinde, her elemanın yalnızca bir kez göründüğü ve 1'den n'e kadar olan tüm sayıların bulunduğu bir diziden eksik olan sayıyı bulun. Dizideki sayılar 1 ile n arasında olup, n dizinin uzunluğudur.
Örnek:
Kod:
Girdi: nums = [4,3,2,7,8,2,3,1]
Çıktı: 5
Açıklama: 1'den 8'e kadar olan sayılar arasında 5 eksik.
Kısıtlamalar:
  • Dizinin uzunluğu n'dir.
  • 1 ≤ nums[i] ≤ n
  • Her sayı yalnızca bir kez görünür, ancak bir sayı eksik.
Çözüm
Bu problemi çözmek için XOR işlemini kullanabiliriz. XOR'un özellikleri sayesinde, aynı sayılar birbirini sıfırlarken eksik olan sayı bulunabilir. Algoritma şu şekilde çalışır:
  1. 1'den n'e kadar olan tüm sayıların XOR'unu hesapla.
  2. Dizideki tüm sayıların XOR'unu hesapla.
  3. Bu iki XOR sonucunu birbiriyle XOR yaparak eksik sayıyı bul.
Python Kodu
Kod:
def findMissingNumber(nums):
    n = len(nums)
    xor_all = 0
    for i in range(1, n + 1):
        xor_all ^= i
   
    xor_array = 0
    for num in nums:
        xor_array ^= num
   
    return xor_all ^ xor_array
# Test
nums = [4, 3, 2, 7, 8, 2, 3, 1]
print(findMissingNumber(nums))  # Çıktı: 5
Çözümün Açıklaması
  • Adım 1: xor_all, 1'den n'e kadar olan sayıların XOR'unu tutar. Örneğin, n=8 için 1^2^3^4^5^6^7^8 hesaplanır.
  • Adım 2: xor_array, dizideki tüm sayıların XOR'unu tutar. Örneğin, [4,3,2,7,8,2,3,1] için 4^3^2^7^8^2^3^1 hesaplanır.
  • Adım 3: xor_all ^ xor_array işlemi, aynı sayıların birbirini sıfırlaması nedeniyle yalnızca eksik sayıyı döndürür.
Zaman ve Uzay Karmaşıklığı
  • Zaman Karmaşıklığı: O(n), çünkü diziyi ve 1'den n'e kadar olan sayıları birer kez tarıyoruz.
  • Uzay Karmaşıklığı: O(1), çünkü yalnızca birkaç değişken kullanıyoruz.
Bu çözüm, hem verimli hem de kolay anlaşılır bir yaklaşımdır. XOR işlemi sayesinde ek veri yapısına ihtiyaç duymadan eksik sayıyı bulabiliriz.
Yorum Yorum Yok
Yazar: admin
Öğrenci Notunu Tahmin Etme 

Kodlar.tr için bir örnekle başlayacağız. Elimizde bir grup öğrencinin sınav öncesinde çalıştığı saatler ve aldıkları sınav notları var. Amacımız, yeni bir öğrencinin çalışma saatini bildiğimizde, bu öğrencinin sınav notunu tahmin edebilecek basit bir makine öğrenmesi modeli oluşturmak.
Veri:
Aşağıdaki gibi basit bir veri setimiz olduğunu varsayalım:


Kod:
Python

import numpy as np

# Çalışma saatleri (saat)
calisma_saatleri = np.array([2, 3, 5, 7, 8, 10])

# Sınav notları
sinav_notlari = np.array([60, 75, 82, 90, 93, 98])
Çözüm:
Bu basit doğrusal ilişkiyi modellemek için doğrusal regresyon (Linear Regression) algoritmasını kullanabiliriz. Python'da bu algoritmayı uygulamak için
Kod:
scikit-learn
kütüphanesini kullanacağız.

Kod:
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt

# Doğrusal regresyon modelini oluştur
model = LinearRegression()

# Modeli verilere göre eğit
model.fit(calisma_saatleri.reshape(-1, 1), sinav_notlari)

# Yeni bir çalışma saati için not tahmini yap
yeni_calisma_saati = 6
tahmin_edilen_not = model.predict([[yeni_calisma_saati]])
print(f"{yeni_calisma_saati} saat çalışan bir öğrencinin tahmini notu: {tahmin_edilen_not[0]:.2f}")

# Veri noktalarını ve regresyon çizgisini görselleştir
plt.scatter(calisma_saatleri, sinav_notlari, color='blue', label='Gerçek Notlar')
plt.plot(calisma_saatleri, model.predict(calisma_saatleri.reshape(-1, 1)), color='red', label='Doğrusal Regresyon Çizgisi')
plt.scatter(yeni_calisma_saati, tahmin_edilen_not, color='green', marker='x', s=100, label='Tahmin Edilen Not')
plt.xlabel('Çalışma Saatleri')
plt.ylabel('Sınav Notları')
plt.title('Çalışma Saatleri ve Sınav Notları İlişkisi')
plt.legend()
plt.grid(True)
plt.show()
  1. Veri İçe Aktarma:
    Kod:
    numpy
    kütüphanesini kullanarak çalışma saatleri ve sınav notlarını içeren NumPy dizileri oluşturduk.
  2. Model Oluşturma:
    Kod:
    sklearn.linear_model
    modülünden
    Kod:
    LinearRegression
    sınıfını kullanarak bir doğrusal regresyon modeli nesnesi oluşturduk.
  3. Modeli Eğitme:
    Kod:
    fit()
    metodu ile modelimizi mevcut çalışma saatleri ve sınav notları verileriyle eğittik.
    Kod:
    reshape(-1, 1)
    ifadesi,
    Kod:
    scikit-learn
    'ün beklentisi doğrultusunda tek özellikli (çalışma saatleri) veriyi iki boyutlu bir diziye dönüştürmek için kullanılır.
  4. Tahmin Yapma: Eğitilmiş modeli kullanarak yeni bir çalışma saati (örneğimizde 6 saat) için sınav notu tahmini yaptık.
    Kod:
    predict()
    metodu, girdi olarak iki boyutlu bir dizi beklediği için
    Kod:
    [[yeni_calisma_saati]]
    şeklinde bir girdi verdik.
  5. Görselleştirme:
    Kod:
    matplotlib.pyplot
    kütüphanesi ile gerçek veri noktalarını, elde edilen doğrusal regresyon çizgisini ve tahmin edilen notu bir grafik üzerinde gösterdik. Bu, modelin veriye ne kadar iyi uyduğunu görsel olarak anlamamıza yardımcı olur.
Bu basit örnek, Python'da
Kod:
scikit-learn
kütüphanesi kullanılarak temel bir makine öğrenmesi görevinin (regresyon) nasıl gerçekleştirilebileceğini göstermektedir. Gerçek dünya problemleri genellikle daha karmaşık veri setleri ve daha gelişmiş algoritmalar gerektirse de, bu örnek temel prensipleri anlamak için iyi bir başlangıç noktasıdır.
Yorum Yorum Yok
Yazar: admin
PHP String İçinde Arama Örneği




PHP ile ilgili yaygın bir senaryo ve çözümünü içeren bir kod parçacığı örneği hazırlayacağım.
Bu örnekte, bir metin (string) içerisinde belirli bir kelimenin veya karakter dizisinin (substring) olup olmadığını nasıl kontrol edebileceğimizi göstereceğim. Bu, web geliştirmede sıkça karşılaşılan bir durumdur; örneğin kullanıcı girdilerini doğrulamak, metin analizi yapmak veya belirli anahtar kelimeleri aramak için kullanılabilir.
Aşağıdaki kodda,
Kod:
str_contains()
(PHP 8+) ve
Kod:
strpos()
(eski PHP versiyonları için de geçerli) fonksiyonlarını kullanarak bu kontrolün nasıl yapıldığını göreceksiniz.

Bu PHP kodu, bir metin içerisinde belirli bir alt dizinin varlığını kontrol etmenin iki yaygın yolunu göstermektedir:
  1. Kod:
    str_contains()
    : PHP 8.0 ve sonrasında sunulan, okunabilirliği yüksek ve doğrudan bu amaç için tasarlanmış bir fonksiyondur.
  2. Kod:
    strpos()
    : Daha eski PHP sürümlerinde de çalışan bu fonksiyon, alt dizinin metin içindeki ilk konumunu döndürür. Eğer alt dizi bulunamazsa
    Kod:
    false
    değeri döndürür. Bu fonksiyonu kullanırken, bulunan konum
    (yani metnin en başı) olabileceği için
    Kod:
    false
    ile katı karşılaştırma (
    Kod:
    !==
    ) yapmak önemlidir. Ayrıca, büyük/küçük harf duyarlılığını göz ardı ederek arama yapmak için
    Kod:
    stripos()
    fonksiyonunun nasıl kullanılacağı da gösterilmiştir.




<?php

// Aranacak ana metin
$anaMetin = "Merhaba dünya, bu bir PHP örneğidir.";

// Aranacak kelime veya karakter dizisi
$arananKelime = "dünya";
$aranmayanKelime = "javascript";

echo "Ana Metin: '" . $anaMetin . "'\n\n";

// --- Çözüm 1: str_contains() fonksiyonu (PHP 8.0 ve üzeri için önerilir) ---
echo "--- str_contains() ile Kontrol ---\n";

if (str_contains($anaMetin, $arananKelime)) {
    echo "'" . $arananKelime . "' kelimesi metin içinde bulundu.\n";
} else {
    echo "'" . $arananKelime . "' kelimesi metin içinde bulunamadı.\n";
}

if (str_contains($anaMetin, $aranmayanKelime)) {
    echo "'" . $aranmayanKelime . "' kelimesi metin içinde bulundu.\n";
} else {
    echo "'" . $aranmayanKelime . "' kelimesi metin içinde bulunamadı.\n";
}

echo "\n";

// --- Çözüm 2: strpos() fonksiyonu (Tüm PHP versiyonları ile uyumlu) ---
// strpos() fonksiyonu, bulunan kelimenin başlangıç pozisyonunu döndürür.
// Eğer kelime bulunamazsa false döndürür.
// Dikkat: Pozisyon 0 (sıfır) olabileceğinden (metnin başında bulunursa),
// katı karşılaştırma (=== veya !==) kullanmak önemlidir.
echo "--- strpos() ile Kontrol ---\n";

if (strpos($anaMetin, $arananKelime) !== false) {
    echo "'" . $arananKelime . "' kelimesi metin içinde bulundu.\n";
} else {
    echo "'" . $arananKelime . "' kelimesi metin içinde bulunamadı.\n";
}

if (strpos($anaMetin, $aranmayanKelime) !== false) {
    echo "'" . $aranmayanKelime . "' kelimesi metin içinde bulundu.\n";
} else {
    echo "'" . $aranmayanKelime . "' kelimesi metin içinde bulunamadı.\n";
}

echo "\n";

// Büyük/küçük harf duyarsız arama için stripos() kullanılabilir
$anaMetinKucukBuyuk = "Merhaba Dünya, bu bir PHP örneğidir.";
$arananKelimeKucuk = "dünya";

echo "--- stripos() ile Büyük/Küçük Harf Duyarsız Kontrol ---\n";
echo "Ana Metin (Büyük/Küçük Karışık): '" . $anaMetinKucukBuyuk . "'\n";
echo "Aranan Kelime (Küçük Harf): '" . $arananKelimeKucuk . "'\n";

if (stripos($anaMetinKucukBuyuk, $arananKelimeKucuk) !== false) {
    echo "'" . $arananKelimeKucuk . "' kelimesi (büyük/küçük harf duyarsız) metin içinde bulundu.\n";
} else {
    echo "'" . $arananKelimeKucuk . "' kelimesi (büyük/küçük harf duyarsız) metin içinde bulunamadı.\n";
}

/*
Çıktı Nasıl Olacak:

Ana Metin: 'Merhaba dünya, bu bir PHP örneğidir.'

--- str_contains() ile Kontrol ---
'dünya' kelimesi metin içinde bulundu.
'javascript' kelimesi metin içinde bulunamadı.

--- strpos() ile Kontrol ---
'dünya' kelimesi metin içinde bulundu.
'javascript' kelimesi metin içinde bulunamadı.

--- stripos() ile Büyük/Küçük Harf Duyarsız Kontrol ---
Ana Metin (Büyük/Küçük Karışık): 'Merhaba Dünya, bu bir PHP örneğidir.'
Aranan Kelime (Küçük Harf): 'dünya'
'dünya' kelimesi (büyük/küçük harf duyarsız) metin içinde bulundu.

*/

?>
Forum: PHP
Yorum Yorum Yok
Yazar: Birpay
SQL Injection ve Çözümü

Kod yazarken sadece işlevselliğe değil, güvenliğe de dikkat etmek gerekir. Özellikle veritabanı ile çalışan uygulamalarda, kullanıcıdan gelen verilerin doğrudan işlenmesi çok ciddi güvenlik açıklarına neden olabilir. Bu yazıda en yaygın güvenlik açıklarından biri olan SQL Injection'ı inceleyecek ve güvenli kodlama yöntemlerini örneklerle göstermeye çalışacağım.

- Sorun: SQL Injection Nedir?
SQL Injection (SQL Enjeksiyonu), kötü niyetli kullanıcıların, SQL sorgularına müdahale ederek veritabanı üzerinde yetkisiz işlemler yapabilmesini sağlayan bir güvenlik açığıdır.

- Örnek: Güvensiz Kod
Aşağıdaki örnek, kullanıcıdan alınan "kullanici_adi" ve "sifre" ile giriş yapılmaya çalışılan bir Python (SQLite) kod parçasıdır:

Kod:
import sqlite3

conn = sqlite3.connect('veritabani.db')
cursor = conn.cursor()

kullanici_adi = input("Kullanıcı adınızı girin: ")
sifre = input("Şifrenizi girin: ")

query = f"SELECT * FROM kullanicilar WHERE kullanici_adi = '{kullanici_adi}' AND sifre = '{sifre}'"
cursor.execute(query)

sonuc = cursor.fetchone()

if sonuc:
    print("Giriş başarılı!")
else:
    print("Hatalı kullanıcı adı veya şifre.")
- Sorun Nerede?
Bu kodda kullanıcıdan alınan veriler doğrudan SQL sorgusunun içine yerleştirilmiş. Bu durum kötü niyetli biri tarafından şu şekilde kullanılabilir:

Kod:
Kullanıcı adı: ' OR '1'='1
Şifre: ' OR '1'='1
Oluşan sorgu şöyle olur:

Kod:
SELECT * FROM kullanicilar WHERE kullanici_adi = '' OR '1'='1' AND sifre = '' OR '1'='1'
Bu sorgu daima doğru döner ve sisteme giriş yapılır. Bu, veri sızıntısına, yetkisiz erişime ve sistemin ele geçirilmesine neden olabilir.

- Çözüm: Parametreli Sorgular Kullanın
SQL Injection’a karşı en etkili yöntem parametreli sorgular kullanmaktır. Böylece kullanıcıdan gelen veri, doğrudan SQL’e yerleştirilmeden işlenir ve zararlı kod olarak algılanmaz.

Güvenli Kod Örneği
Kod:
import sqlite3

conn = sqlite3.connect('veritabani.db')
cursor = conn.cursor()

kullanici_adi = input("Kullanıcı adınızı girin: ")
sifre = input("Şifrenizi girin: ")

query = "SELECT * FROM kullanicilar WHERE kullanici_adi = ? AND sifre = ?"
cursor.execute(query, (kullanici_adi, sifre))

sonuc = cursor.fetchone()

if sonuc:
    print("Giriş başarılı!")
else:
    print("Hatalı kullanıcı adı veya şifre.")
- Neden Güvenli?
Bu yöntemde,

karakterleri yer tutucudur ve kullanıcıdan gelen veri bu yer tutuculara bağlanarak (binding) eklenir. Bu da verilerin yalnızca değer olarak algılanmasını sağlar, komut olarak değil.

Ekstra Önlemler
  1. Veritabanı kullanıcılarına minimum yetki verin.
    Uygulamanız sadece gerekli izinlerle çalışmalı (örneğin sadece SELECT/INSERT).
  2. Şifreleri veritabanında düz metin olarak saklamayın.
    SHA-256, bcrypt gibi şifreleme algoritmaları kullanın.
  3. Giriş denemelerine sınırlama koyun.
    Brute-force saldırılarına karşı korunmak için başarısız girişlerde süre limiti uygulayın.
  4. Kapsamlı loglama ve saldırı tespiti uygulayın.
Yorum Yorum Yok
Yazar: KodX
Android UI Performansı

[*]Layout Optimizasyonu: Layout hiyerarşinizi basit tutun. Gereksiz iç içe geçmiş
Kod:
ViewGroup
'lardan kaçının.
Kod:
<include>
,
Kod:
<merge>
ve
Kod:
ViewStub
etiketlerini kullanarak layout'larınızı optimize edin.
[*]
Kod:
onDraw()
Metodunu Verimli Kullanın:
Kod:
onDraw()
metodu sıkça çağrılır. Bu metot içinde karmaşık işlemler yapmaktan kaçının. Yalnızca çizimle ilgili işlemleri burada gerçekleştirin.
[*]RecyclerView ve ViewHolder Kullanımı: Listeler ve ızgaralar için
Kod:
ListView
yerine
Kod:
RecyclerView
kullanın ve
Kod:
ViewHolder
pattern'ini uygulayarak görünüm tutma ve yeniden kullanma işlemlerini optimize edin.
[*]Bitmap Yönetimi: Büyük boyutlu bitmap'leri yüklerken ve görüntülerken dikkatli olun. Gerekirse boyutlarını küçültün veya önbelleğe alın.
Kod:
LruCache
gibi mekanizmaları kullanabilirsiniz.
[*]Animasyonları Dikkatli Kullanın: Karmaşık ve uzun süren animasyonlar performansı olumsuz etkileyebilir. Performanslı animasyonlar için
Kod:
ValueAnimator
ve
Kod:
ObjectAnimator
gibi sınıfları kullanın.
[*]UI İş Parçacığını Bloklamayın: Ağ istekleri veya disk I/O gibi uzun süren işlemleri asla ana UI iş parçacığında yapmayın. Bu, uygulamanın donmasına (ANR - Application Not Responding) neden olur.


[*]
Kod:
ConstraintLayout
gibi optimize edilmiş layout'ları kullan.
[*]Deep view hierarchy’den kaçın (
Kod:
flat UI
prensibi).
[*]
Kod:
RecyclerView
ile uzun listelemeleri yönet,
Kod:
ListView
kullanımı artık önerilmez.
[*]Gölge, efekt, animasyon kullanımlarında GPU yükünü hafif tut.
Yazar: admin
Kotlin Spesifik Optimizasyonlar

Kotlin, JVM tabanlı bir dil olduğu için performans optimizasyonu genellikle JVM'nin davranışlarını ve Kotlin'in özelliklerini anlamayı gerektirir. Bazı başlıklarla sizlere Spesifik Optimizasyonları ele alarak inceleyelim.
- Inline Fonksiyonlar
Kotlin'de inline anahtar kelimesi, fonksiyon çağrılarının derleme zamanında kodun içine gömülmesini sağlar. Bu, özellikle yüksek seviyeli fonksiyonlar (lambda ifadeleriyle kullanılan) için performans kazancı sağlar çünkü fonksiyon çağrısı overhead'ini ortadan kaldırır.
  • Kullanım: Küçük ve sık çağrılan fonksiyonlarda (örneğin, map, filter gibi).
  • Örnek:
    kotlin

    Kod
    Kod:
    inline fun doSomething(block: () -> Unit) {
        block()
    }


  • Dikkat: Büyük fonksiyonlarda inline kullanmak kod boyutunu artırabilir, bu yüzden dikkatli olun.

- Data Sınıfları ve Hafıza Kullanımı

data class kullanımı, otomatik toString, equals, hashCode gibi metodlar sağlar, ancak büyük veri yapılarında bu metodlar performans maliyeti yaratabilir.
  • Optimizasyon:
    • Büyük veri setlerinde yalnızca gerekli metodları manuel olarak uygulayın.
    • data class yerine normal sınıflar kullanmayı düşünün eğer otomatik metodlara ihtiyacınız yoksa.
  • Örnek:
    kotlin

    Kod
    Kod:
    data class User(val id: Int, val name: String) // Otomatik metodlar
    class User(val id: Int, val name: String) // Daha az overhead
- Koleksiyon Optimizasyonları

Kotlin'in koleksiyon API'si (ör. listOf, map, filter) kullanımı kolaydır, ancak zincirleme işlemler performans sorunlarına yol açabilir.
  • Optimizasyon:
    • Gereksiz ara koleksiyonlardan kaçının. asSequence() kullanarak lazy evaluation yapın.
    • Büyük veri setlerinde mutableList veya array kullanarak manuel döngüler yazmayı düşünün.
  • Örnek:
    kotlin

    Kod
    Kod:
    // Performans maliyeti yüksek
    val result = list.filter { it > 0 }.map { it * 2 }

    // Daha iyi
    val result = list.asSequence().filter { it > 0 }.map { it * 2 }.toList()
- Coroutine Optimizasyonları

Kotlin coroutines, asenkron programlamayı kolaylaştırır, ancak yanlış kullanım kaynak israfına neden olabilir.
  • Optimizasyon:
    • Gereksiz launch veya async çağrılarından kaçının.
    • Dispatchers seçimine dikkat edin (ör. Dispatchers.IO I/O işlemleri için, Dispatchers.Default CPU yoğun işlemler için).
    • structured concurrency kullanarak coroutine scope'larını düzgün yönetin.
  • Örnek:
    kotlin

    Kod
    Kod:
    suspend fun fetchData() = withContext(Dispatchers.IO) {
        // Ağ çağrısı
    }
sizlerinde desteklerini bekliyoruz paylaşmak bir kişiye yardımcı olmak en büyük isteğimizdir.
Yazar: KodX
Android  Verimli Kod Yazma 
Konuya başlamadan önce hepinize merhaba demek istiyorum. Android uygulamanızın performansını artırmak için kullanabileceğiniz çeşitli teknikler bulunmaktadır. Bunların içinden benim önemsediğim şudur ki verimli kod yazma gelin bu başlığın üzerinde biraz duralım.
Gereksiz Nesne Oluşturmaktan Kaçının: Özellikle sıkça çağrılan döngülerde veya
Kod:
onDraw()
gibi metotlarda gereksiz nesne oluşturmaktan kaçının. Mümkünse nesneleri yeniden kullanın.
Dizeleri Verimli Kullanın: Sabit dizeler için
Kod:
String yerine
Kod:
StringBuilder veya
Kod:
StringBuffer
kullanın, özellikle döngüler içinde dize birleştirme işlemleri yapılıyorsa. Bu teknikler illaki olacak demiyorum kodlama algoritmsına nasıl alışırsanız öyle devam edersiniz benim size sadece tavsiyem olur. 
Veri Yapılarını Doğru Seçin: İhtiyaçlarınıza en uygun veri yapısını (örneğin,
Kod:
ArrayList
,
Kod:
LinkedList
,
Kod:
HashSet
,
Kod:
HashMap
) seçin. Yanlış veri yapısı performansı olumsuz etkileyebilir. Bu konuda çeşitli arkadaşlarımdan aldığım destekle yazıyorum.
Algoritmaları Optimize Edin: Kullandığınız algoritmaların zaman ve mekan karmaşıklıklarını göz önünde bulundurun. Daha verimli algoritmalar kullanarak performansı önemli ölçüde artırabilirsiniz.
Arka Plan İşlemlerini Doğru Yönetin: Uzun süren işlemleri (ağ istekleri, dosya okuma/yazma vb.) ana iş parçacığından ayırarak uygulamanın donmasını engelleyin.
Kod:
AsyncTask
,
Kod:
ExecutorService
,
Kod:
WorkManager
gibi mekanizmaları kullanabilirsiniz. Size zorluklar içerisinde yol arkadaşı olacaktır.

Sizinde yaşadığınız olaylar veya zorlukları atlatma şeklinizdeki teknikleri buradan paylaşabilirsiniz hepimiz öğrenmeye açığız Kodlar içimden bir parça Smile
 

Merhaba

Yazar: KodX
merhaba bende forumda yeniyim hepimiz için hayırlı olsun aranıza katılmak benim için çok önemli kod bilgilerimi pekiştirmek yeni insanlar tanımak istiyorum tekrar hepimiz için başarılı forumlar diliyorum.
Forum: Yeni Gelenler
1 Yorum

Hoşgeldin, Ziyaretçi

Sitemizden yararlanabilmek için kayıt olmalısınız.

Forumda Ara

Forum İstatistikleri

Toplam Üyeler 6
Son Üye Seso Başkan
Toplam Konular 43
Toplam Yorumlar 45

Kimler Çevrimiçi

Şu anda 1 aktif kullanıcı var.
(0 Üye - 1 Ziyaretçi)

Son Yazılanlar

Yeni Başlayanlar için Pro...

Son Yorum: admin Dün, 08:12 AM

Kodlamaya Başlayanlar içi...

Son Yorum: admin Dün, 08:09 AM

Kodlamaya Yeni Başlayanla...

Son Yorum: admin Dün, 08:08 AM

Bol Bol Pratik Yapın Kodl...

Son Yorum: admin Dün, 08:07 AM

Küçük Başlayın ve Adım Ad...

Son Yorum: admin Dün, 07:45 AM

Doğru Programlama Dilini ...

Son Yorum: admin Dün, 07:44 AM

Dizilerle Çalışma ve Arra...

Son Yorum: admin 06-11-2025, 06:43 PM

DOCTYPE html Nasıl Kullan...

Son Yorum: admin 05-23-2025, 08:06 PM

Yapay Zeka Kodlama Önizle...

Son Yorum: KodlarTR 05-16-2025, 08:22 PM

TensorFlow ile Nesne Tanı...

Son Yorum: KodlarTR 05-16-2025, 08:17 PM