Gmail, mail işine bak sen sadece!

Bugün gmail’den bir mail atarken mail içeriğinde ekledim kelimesi geçiyordu. Mail gönderirken içerikte ekledim yazıyor ama hiç dosya eklemediniz yazıyor. Benim mail içeriğimdeki kelimeleri güzelce inceliyor yani. Benim ilgi alanlarım, işim, uğraşlarım, ailem herşeyle ilgili bilgiyi alıyor. Tamam biliyoruz bunların yapıldığını ama bu kadar açık yapmasalar keşke.

XPObject, XPBaseObject, XPCustomObject

        Bir keresinde bu üçü arasındaki fark hakkında bir soru gelmişti. Ben de cevabı başkalarına da faydası olabilir diye burada da yayınlamaya karar verdim.

Daha önce XPO‘dan bahsetmiştim.  XPO’da nesnelerimiz aracılığıyla verilerimizi veritabanına ekleyebilmek için nesnelerimizin kalıcı yani persistent olması gerekmektedir. Sınıflarımızı kalıcı yani persistent yapabilmek için XPObject, XPBaseObject, XPCustomObject’ten birinden türetmemiz gerekmektedir. Bunların türediği temelde bulunan yapı ise  XPBaseObject’tir.

XPObject,XPLiteObject,XPCustomObject XPBaseObject’ten türemektedir. Bunların arasında belirli özellik farkları var. Bu farktan bahsetmeden önce deferred deletion ve optimistic locking kavramlarını bilmeniz gerekmektedir. Optimistic locking birden fazla thread ile çalıştığınız durumlarda aynı veri üzerinde yapılan işlemlerde oluşabilecek problemleri engellemek için oluşturulmuş bir yapıdır. Deferred Deletion ise persistent bir nesneyi sildiğinizde xpo nun fiziksel olarak datayı hemen silmesini engeller ve silindi olarak işaretlenmesini sağlar. Deferred Deletion birden fazla nesnenin aynı nesneyi refere ettiği durumlarda veritabanı exceptionlarından korunmamızı sağlar. Bu dördünün bu özellikleri desteklemesi ile ilgili tabloda aşağıdaki gibidir.

Class Name            Deferred Deletion              Optimistic Locking
XPBaseObject                     –                                            +
XPLiteObject                      –                                             –
XPCustomObject               +                                            +
XPObject                            +                                            +

Son Durum

Şu sıralar İzmir’de ev bulma telaşım devam ediyor. Bir yandan da yeni işime ve işyerime alışmaya çalışıyorum. Sabah ve akşamları birer buçuk saate yakın yolda geçmeye başlayınca dijital e-book okuyucu alma isteğim çok daha fazla arttı. Onun dışında yeni makalelerim için hergün yığınla malzeme çıkıyor. Bunları da bir kenara not alıyorum, ev bulur bulmaz yayınlamayı planlıyorum. Faydalı olacağına inandığım konular ama biraz daha bekleyecek.

Herşey NETLE’şti!

Evet biliyorum çok fotomaçvari bir başlık oldu ama dayanamadım. 🙂 Asker dönüşünden sonra bildiğiniz gibi iş arayışlarım devam ediyordu. Bu arayışım artık son buldu. Pazartesi gününden itibaren İzmir Urla’da Netle Yazılım bünyesinde çalışmaya başlıyorum. İnşallah benim için ve Netle için hayırlı olur.

Statik Değişkenler ve Garbage Collection

Günümüzde uygulamalar büyüyüp, çalıstıkları cihazlar küçüldükçe bellek kullanımı daha da önemli hale geliyor. Ben de uygulamalarımızda bellek kullanımını azaltacak basit ve bilinen ama oldukça önemli bir kaç şeyden bahsetmek istiyorum. Bunlar statik değişkenler ve garbage collector.

Statik değişkenlerin normal değişkenlerden farkı statik değişkenlere ulaşmak için yeni bir nesne oluşturmamız gerekmez, sınıfımız üzerinden bu değişkenlere erişebiliriz. Ayrıca statik olmayan değişkenlerimiz her nesne ile ayrı olarak oluşturulur ve farklı degerlere sahip olur ama statik değişkenlerin tek bir değeri vardır. Örneğin uygulamamızda bir sınıftan sadece 3 tane nesne olusturulmasına izin vermemiz gerektiğini düşünelim. Eğer böyle bir durumda statik bir değisken kullanmasaydık, her nesne oluşturduğumuzda geçici nesneler oluşturup,, bu geçici değiskenlerin değerlerini artırıp bir yerde tutmamız gerekecekti. Bu da zaman ve bellek kaybı demek olurdu. Ancak statik değiskenler sayesinde tek bir değisken aracılığıyla kontrolümüzü sağlayabiliriz. Statik degişkenlerin mantığını anlamak için basit bir kod yazalım.
Öncelikle bir tane sınıf oluşturalım.
    
    class StatikDeneme
    {
        private int deger=0;
        public static int statikDeger=0;
 
        public int Deger
        {
            get
            {
                return deger; 
            }
            set
            {
                deger = value;
            }
        }

    }

Daha sonra formumuzun üzerine 2 tane buton sürükleyelim ve butonlaın altına sırayla şu kodları yazalım.

        private void button1_Click(object sender, EventArgs e)
        {
            StatikDeneme cs = new StatikDeneme();
            cs.Deger = 4;
            cs.Deger++;
            StatikDeneme.statikDeger++;
            MessageBox.Show(cs.Deger.ToString() + ”  ” + Class1.statikDeger.ToString());
        }

        private void button2_Click(object sender, EventArgs e)
        {
            StatikDeneme cs = new StatikDeneme();
            cs.Deger = 4;
            cs.Deger++;
            StatikDeneme.statikDeger++;
            MessageBox.Show(cs.Deger.ToString() + ”  ” + Class1.statikDeger.ToString());
        }

Gördügümüz gibi iki butonumuzun altındaki kod da aynı. Simdi uygulamamızı çalıştırıp rasgele butonlara basalım. Butonlara her basışımızda ilk (statik olmayan) değer değismezken, ikinci (statik olan) değerin arttığını görebiliriz. Bu şekilde statik bir değişkenle kolayca SingleTon desenini uygulayabiliriz.

Garbage Collector’lara gelince. GC’ler uygulama sırasında oluşturulmuş ancak kullanılmayan değiskenlerin yok edilmesini sağlar. Böylece nesneler hafızada gereksiz yer kaplamamış olur. GC’lar C# ta otomatik olarak çağrılır. Geliştirici bu zamanı bilemez ancak System.GC.Collect() metodu ile istedigi zaman bu işlemi gerçekleştirebilir. Yıkıcı metodlar (Destructor) nesnelerin yok edilmesinden hemen önce çağrılır. C++’da nesneler yok edilirken, bellekte oluşturulan dinamik alanlar iade edilmez. Bu nedenle geliştiricinin yıkıcı metod içinde bu alanlarıiade etmesi gerekir. C#’ta ise bu bellek alanlarının iadesi otomatik olarak yapılır. Bu nedenle yıkıcı metodlar genellikle statik veya global degiskenlerin değerlerini değiştirme amacı ile kullanılır. Örneğin uygulamamızda sadece 5 veritabanı bağlantısına izin vereceğimizi düşünelim. Bu durumda statik değişkenimizi yapıcı metodlarda bir artırırız ve 5’e ulaşıp ulaşmadığını kontrol ederek bağlantı nesnesinin oluşturulmasına izin veririz. Bağlantı nesnesinin yıkıcı metodunda ise statik değişsken değerimizi bir azaltırız. Böylece bir bağlantı nesnesi ne ihtiyaç kalmadığı zaman nesne yok edilirken, biz de bir bağlantı nesnesi hakkı daha kazanmış oluruz.

Eski Sezon Biter, Yeni Sezon Başlar

Başrolünde benim oynadığım dizinin bir sezonu daha bitti. Askerlik görevimi tamamlamış bulunmaktayım. Artık o sezonu kapatıp, yeni sezona başlama hazırlıkları içindeyim. Senaryo yavaş yavaş belli oluyor. Şimdilik doğal olarak size pek fazla bilgi veremem. Trailer bile yok 😛 Ama en kısa zaman da buradan güzel haberler vereceğim inşallah.

Askerlik sırasında pek çok şey kazandık tabii ki. Umarım bunların etkisi kısa sürmez sürekli aklımın bir köşesinde durur. Bunca zamandır doğru düzgün teknik birşey de yazamadım. Sürekli saçmalamalarım. Artık biraz da teknik birşeyler yazabilirim sanırım ama şimdilik bir kaç gün izinliyim. 🙂  

Özledim 2

Daha önce yazmış olduğum özledim başlıklı yazıda çok önemli bi eksiklik olduğu için son 15 derken bir ekleme yapma gereği duydum.  Sağolsun ablam yazıya yorum yapmak ya da bana söylemek yerine direk anneme söyleyince ve bak bunu özlememiş diyince benim için hoş bi durum olmadı 🙂 Neyse evet listenin en önemli maddelerinden birisi

Annemin Yemekleri

bunu özlememe gibi bir ihtimal var mı? Tabii ki yok. Çıkar çıkmaz gittiğimde annemin yapacağı hazırlıkları bildiğim için her dönüş ile ilgili planımda çok önemli bir yer tutuyor. Yani demek istediğim Anne senin yemeklerini özlememe gibi bir şansım yok. Zaten geldiğim zaman sen de bunun farkına varacaksın. 🙂

Özledim

  • Ailemi
  • Arkadaşlarımı
  • Fotoğraf Çekmeyi
  • Canım Çekerek Yemek Yemeyi
  • Kendiliğinden Uyanmayı
  • Uyuyamamayı
  • Sayılmamayı
  • Halıda Yürümeyi
  • Televizyonda izleyecek bişey bulamamayı
  • Canım yandığında birine söylemeyi
  • Çeşmeden su içmeyi
  • Yatağımı yapmamayı
  • Farklı giysiler giymeyi
  • Sıra Beklememeyi
  • İşe gitmeyi
  • Emirsiz çalışmayı
  • Kimliğimi
  • Rahatça Banyo Yapmayı
  • Yazmayı
  • Okumayı
  • Ağlamayı
  • Cep Telefonumu
  • Bilgisayarımı
  • Çayı çay bardağından içmeyi
  • Türk Kahvesini
  • Köfteyi
  • Geç Kalmayı
  • Büyük Bir Dolabı
  • Gece Uyanıp Atıştırmayı
  • TV Karşısında Uyumayı
  •  Halı Saha Maçlarını
  • Boyanmamış Ayakkabılarımı
  • Traş Olmamayı
  • İyiyim Demeyi
  • Çarşıdan istediğim zaman dönmeyi
  • Mesaj Atmayı
  • Otobüsle yolculuk yapmayı
  • Vakit Geçirememeyi
  • Eskişehir’i
  • Ödemiş’i
  • İçten gelerek kahkaha atmayı

devam eder…

Askerlik

329 Kısa Dönem… 40 Gün olmuş geleli Polatlı’ya… Nerdeyse dörtte biri bitti. Hep derlerdi çok şey öğretir size askerlik diye. Gerçekten öyleymiş. Bu kısa süre bile yetti bunu anlamama. Kısa dediysem dışardakiler için tabii ki, yoksa bana oldukça uzun geldi. Bu arada mektup için adres isteyenler buradan bakabilir tek tek vermekten bıktım çok uzun 🙂 İlk çarşıda görüşmek üzere …

Polatlı Topçu Ve Füze Okulu Komutanlığı, Gösteri Ve Eğitim Destek Tabur Komutanlığı, Karargah Takım Komutanlığı, Polatlı Ankara