317 toplam yazı
1 April 2026 en yeni yazı
13 November 2003 ilk yazı
20 Bu sayfadaki yazılar

Bu kategorideki yazılar

  • Programlama Dilleri

    Ruby Kod Parçacıkları - 9 (Operator Overloading)

    Neredeyse her programlama dilinin öğrenilirken çalışana sıkıcı gelen bölümleri muhakkak vardır. Sanıyorum o dildeki operatörler bunların başında gelir. Ancak nesne yönelimli bir dil öğreniyorsak, kullanıcı tanımlı tipler için operatörlerin yeniden programlanması gerektiğini de er geç fark ederiz. Bu nedenle operatorlerin kendi tiplerimiz (User Defined Class) olması halinde yeniden nasıl yükleneceğini bilmemiz gerekir.

  • Programlama Dilleri

    Ruby Kod Parçacıkları - 8 (Kalıtım/Inheritance)

    Ruby, nesne yönelimli (Object Oriented) bir dil olduğu için kalıtım (Inheritance) ilkesi karakteristiklerini de taşımaktadır. En temel haliyle var olan bir tipin özelliklerini ve fonksiyonelliklerini alt sınıflara taşıyabildiğimiz (alt sınıfta kullanabildiğimiz ve hatta gerekirse ezebildiğimiz) kalıtım ilkesinin Ruby tarafındaki uygulanış biçimi oldukça kolaydır. Gelin basit bir kod parçacığı ile konuyu anlamaya çalışalım. Aşağıdaki kod parçasında Figure isimli sınıftan türetme yoluyla oluşturulan Human ve Alien isimli varlıklar yer almaktadır. Ayrıca Zork isimli Alien sınıfından türeyen bir varlık daha söz konusudur.

  • Programlama Dilleri

    Ruby Kod Parçacıkları - 7 (Object Method, Class Method, Public, Private, Protected)

    Ruby sınıflarında farklı amaçlarla kullanılan metodlar mevcuttur. Serimiz boyunca pek çok çeşidini kullandık. Nesne örneklerini oluşturmak için initialize metodundan, sınıf varlığını String olarak yazmak için ezdiğimiz (override) to_s metodundan, sınıfa ait durum bilgisini taşıyan nitelikler (Attributes) için accessor’lardan vb…

  • Programlama Dilleri

    Ruby Kod Parçacıkları - 6 (Sınıflarda Accessor, Setter ve Attribute Kullanımları)

    Nesne yönelimli dillerde sınıfların birer varlık (Entity) olarak düşünüldüğüne sıklıkla şahit oluruz. Bu sayede bir Domain’e özgü gerçek dünya varlıklarının tasarlanması ve örneklenerek kullanılması mümkün hale gelir. Üstelik Domain içinde dolaşımda olacak anlamlı nesneler ortaya çıkar. Çok doğal olarak her bir varlığın karakteristik özellikleri bulunur. Nitelik (attribute) olarak da düşünebileceğimiz bu özellikler ilgili varlığın çalışma zamanı (Runtime) durumu hakkında bilgiler taşır. Aslında.Netçi gözüyle bakıldığında sınıf ve özelliklerinden bahsettiğimizi anlamışsınızdır.

  • Programlama Dilleri

    Ruby Kod Parçacıkları - 5 (Sınıf Kavramına Giriş)

    Bilindiği üzere Ruby nesne yönelimli bir programlama dilidir. Bu yüzden Ruby dilinde her şey bir nesne olarak düşünülür. Dolayısıyla OOP dillerin Kalıtım (Inheritance), Encapsulation (Kapsülleme), Çok Biçimlilik (Polymorphism) gibi temel özelliklerini bünyesinde barındırır. Elbette en küçük yapı taşı sınıflardır (Class). İzleyen kod parçacığında basit olarak bir sınıfın nasıl tanımlandığına yer verilmektedir. Bu anlamda değişken türlerinden (Instance,Class ve Global Variable), sınıf yapıcılarından (initialize), nesne örnekleme operasyonlarından (new), standart sınıf içi metod tanımlamalarından (def) ve metod ezme (overriding) gibi işlemlerden kısaca bahsedilmektedir.

  • Programlama Dilleri

    Ruby Kod Parçacıkları - 4 (Control Statements, Loops, Statement Modifiers)

    Her programlama dilinde olduğu gibi Ruby içinde kontrol ifadeleri (Control Statements) ve döngüler (Loops) söz konusudur. Tabi Ruby dili özellikle yazımsal kolaylık açısından pek çok geliştiriciyi gülümseten betiklere de sahiptir. İlerleyen kod parçasında bu konudaki en temel kullanımları inceliyoruz.

  • Programlama Dilleri

    Ruby Kod Parçacıkları - 3 (Range Kullanımı)

    Range sınıfı ile başlangıç ve bitiş değerleri belli olan aralıklar tanımlanabilir. Bu aralığa ait değerler sayısal veya metinsel olabileceği gibi kullanıcı tanımlı sınıf örnekleri de olabilir (Bu benim için de henüz ileri seviye bir konu olduğundan ilerleyen günlerde değinmeye çalışacağım) Gelin bu aralıkların Ruby programlama dilinde nasıl kullanıldığına kısaca bakalım.

  • Programlama Dilleri

    Ruby Kod Parçacıkları - 2 (Hashes)

    Ruby programlama dilinde de veri yapıları (Data Structures) oluşturmak için kullanılan tiper vardır. Dictionary benzeri koleksiyon olarak kabul edebileceğimiz Hash sınıfı bunlardan birisidir. Benzersiz anahtar (key) ve değer (value) çiftlerinden oluşan Hash nesne örneklerinin kullanımı oldukça kolaydır.

  • Programlama Dilleri

    Ruby Kod Parçacıkları - 1

    Bir programlama dilini öğrenmenin en iyi yolu elbetteki bol bol kod yazmaktan geçer. En azından belirli bir seviyeye gelene kadar basit IDE’ler ile mümkünse Console ekranları üzerinden çalışarak ilerlemekte yarar vardır. Hazır bu aralar Ruby ile haşır neşir iken hem basit kod parçaları paylaşayım hem de bu eğlenceli dili birlikte öğrenelim istedim. İşte ilk kod parçacığımız. Konumuz, diziler (Arrays).

  • Programlama Dilleri

    Ruby Maceralarım

    Kırklı yaşlarına gelmekte olan bir yazılımcıyım ve uzun zamandır bu işin içerisindeyim. Fark ettim ki yeni bir şeyler araştırmadan rahat edemiyorum. Belki hep.Net üzerine yoğunlaştım ancak zaman zaman farklı alanlara da göz atıyorum. Bu düşüncelere sahip olduğum dönemlerde ağırlıklı olarak farklı programlama dillerini tanımaya çalışıyorum.

  • Programlama Dilleri, Yazılım Tasarımı

    Biyütıful Kod - Ninject ile Bir Dependency Injection Macerası

    Her yazılım geliştirici özellikle büyük bir projeye girdiğinde kodlarının kaliteli olması için uğraşır. Bu yönde adımlar atar. Çoğu zaman bu bir sanata dahi dönüşebilir. Okunabilir kodlar oluşturmanın dışında, mimari açıdan büyüleyici olan, yeniden kullanılabilirliğin üst seviyede olduğu, fazla uğraşılmadan genişleyebilen ürünler ortaya çıkartmak en büyük gayelerden birisi haline gelir. Martin Fowler’ın ilkeleri sıkı sıkıya takip edilir. Kurumsal çözüm içerisinde Fluent API’ler kullanılmaya, “Dependency Injection Container” gibi kavramlar konuşulmaya başlanır. Ne kadar başarılabilir bilinmez ama amaçlardan birisi de Biyütıful Kodu ortaya çıkartmaktır.

  • Programlama Dilleri

    NLog için Oracle Database Kullanmak

    Animasyon film meraklısı olupta Pixar’ ın 2003 yapımı Nemo’ sunu izlemeyen sanırım yoktur. Kayıp oğlu Nemo’ yu bulmak isteyen Marlin, uzun ve zorlu yolculuğu sırasında oldukça unutkan olan ve aslında bu özelliği ile balık olduğunu adeta tüm izleyenlere ispat eden Dory ile seyahat etmektedir. Dory neredeyse bir saniye önce söylediğini hatırlamakta zorlanan bir balıktır.

  • Programlama Dilleri

    C# 6.0–Yeni Esintiler

    Çok şanslı bir çocukluk geçirdim. 80li yıllarda daha minik bir çocukken Lego’ lar oyuncak dolabımdan eksik olmazdı. O zamanlar benim için çok kıymetliydiler. Tabi büyüdükçe başka başka şeyler önem kazanmaya başladı. Lego’ nun pabucu belki de dama atıldı. Ta ki bir oğlum olana kadar.

  • Programlama Dilleri

    Excel İçeriğini DataSet Olarak Sisteme Katmak

    Bazen geliştirme ortamımız ile yazılan uygulamanın taşınacağı ortamlar arasında ciddi ve keskin farklılıklar bulunur. İki resim arasındaki 9 farkı bulunuzdan öte, geliştirici ekiplerinin bu farkları bilerek kodlama yapmasında yarar vardır. Tabi bazı yazılım ekiplerinde Development sunucularının sanallaştırılmış versiyonları üzerinde geliştirme yapabilme imkanı da vardır.

  • Programlama Dilleri

    Fluent Interface Prensibi ile Daha Okunabilir Kod Geliştirmek -2nci Yarı

    Bir önceki görsel dersimizde Fluent Interface prensibini nasıl kullanabileceğimizi görmüştük. Bu sefer Generic tip kullanan bir versiyonunu geliştireceğiz. İşin içerisine Generic mimari Reflection kavramı ile Expression<> ve Func gibi tipleri de katacağız. Amacımız sadece belirli bir tip için değil bazı kıstaslara uyan her hangibir T tipi için Fluent Interface prensiplerini uygulatabilmek. Buyrun izleyelim.

  • Framework Tabanlı Programlama, Programlama Dilleri, Yazılım Tasarımı

    Fluent Interface Prensibi ile Daha Okunabilir Kod Geliştirmek - 1nci Yarı

    Keşfedilmesi, anlaşılması ve okunması kolay kod geliştirmek, özellikle dışarıya açık arayüzü bulunan API’ ler için oldukça önemlidir. Bir Domain Specific Language’ in olmassa olmazı kodun kolayca keşfedilebilirliğidir. Ruby ve Scala gibi diller built-in olarak bu kolaylığı sunarlar. LINQ (Language INtegrated Query) ifadeleri, zincir şeklinde bir birlerine bağlanabilen Extension metodlar ile aynı esnekliği vermektedir. Test süreçlerinde kullanılan pek çok Mock nesne API’si benzer kabiliyetlere sahiptir. Tüm bunlar aynı prensipten yararlanır. Fluent Interface… Bu görsel dersimizde Martin Fowler tarafından yıllar önce ortaya konan yaklaşımın uygulanışını incelemeye çalışıyoruz.

  • Programlama Dilleri

    Çalışma Zamanında Generic Tip Üretmek, Generic Metod Çağırmak

    Bu görsel dersimizde çalışma zamanında kullanılabilecek örnek senaryolardan birisine daha değinmekteyiz. İlk amacımız Generic olarak tanımlanmış bir tipin çalışma zamanında üretilmesini sağlamak (Örneğin List koleksiyonunun) Diğer amacımız ise generic bir metodun yine çalışma zamanında üretilip, yürütülmesi.

  • Programlama Dilleri

    Çalışma Zamanında Class,Property, Module ve Assembly Üretmek

    Şöyle bir senaryo düşünelim; Bir Excel dosyasında yer alan sayfa ve kolon bilgilerini programatik ortamda ifade etmek istiyoruz. Ancak Excel dosyası oldukça büyük. Sheet ve kolon sayıları çok fazla. Bir şekilde dosyayı okumayı, kolon adlarını, içeriklerini ve veri tiplerini öğrenmeyi başarıyoruz. Her bir Sheet’in bir sınıfa karşılık gelmesi gerektiğini fark ediyoruz. Ama işin zor olan kısmı şemaya uygun şekilde sınıf ve özelliklerinin programatik ortamda üretilmesi. Aklımıza gelen bir kaç yol var fakat biz en şık olanlarından birisini tercih ediyoruz. Sınıfları (Class), özelliklerini (Property) ve bu tiplerin bulunduğu Assembly’ ı içeren sınıf kütüphanesini (Class Library) kod ile üretiyoruz. Üretme işini gerçekleştirirken Intermediate Language’ e kadar da uzanıyoruz. Merak ediyor musunuz?

  • Programlama Dilleri

    Dosya Satır Sayısını Bulmak

    Eğer sizde zamanında benim gibi bankaların teknoloji departmanlarında çalışmış ve yazılım geliştirmişseniz, eminimki hayatınızın bir döneminde büyük boyutlu Text dosyaları ile çalışmak zorunda kalmışsınızdır.

  • Programlama Dilleri, Algoritma

    Sıralama Algoritmaları - Hangisi Daha Hızlı (Bubble, Quick, Insertion, Selection, Shell, Merge, Heap)

    Evimdeki çalışma odasında yer alan kütüphanemi zaman zaman gelen yeni kitaplar ve afacan S (h) arp Efe’nin haylazlıkları nedeni ile darma duman halde bulabiliyorum. Hal böyle olunca çoğu zaman kitaplıkta yer alan onlarca kitabı tekrardan düzenlemem ve uygun bir sırada dizmem gerekebiliyor. Hatta bunu kitapların tozunu almak için hepsini yerlere indirdikten sonra da yaşayabiliyorum. Aslına bakarsanız her seferinde farklı bir kategorilendirme yapıyor ve buna göre bir sıralama işlemi icra etmeye çalışıyorum. Tabi el çabukluğu dışında akıllı düşününce sıralamak ve yerleştirmek kısa sürede bitebiliyor. Ama bazen de kafa bulanık olunca bu işlem sandığımdan da uzun sürüp bir işkence haline gelebiliyor.