218 toplam yazı
19 June 2026 en yeni yazı
13 November 2003 ilk yazı
20 Bu sayfadaki yazılar

Bu kategorideki yazılar

  • Programlama Dilleri

    GoLang - Yönlendiriciler (Routers)

    Yönlendirme (Routers) mekanizmaları özellikle anlamlı HTTP taleplerinde önemli bir rol oynar. Bir tarayıcının adres satırından gelen ifadelerin sunucu tarafında ele alınması sırasında işleri kolaylaştırıcı kütüphaneler de bulunmaktadır. Sevgili Murat Özalp’ın kitabında ilerlerken GO’nun built-in yönlendirme mekanizmaları dışında github üzerinden sunulan pek çok basit ve kullanışlı çatının olduğunu öğrendim. Tabii burada bahsedilen kütüphaneler ağırlıklı olarak web taleplerinin bir eşleştirme koduna göre uygun fonksiyonlara yönlendirilmesi ve cevaplandırılması ile alakalıydı. Bazıları performans açısından öne çıkarken bazıları komple bir web çatısını sunma kabiliyetine sahipti. Güncel listeye şu adresten bakabilirsiniz. Yeni paketler geldikçe veya var olanlarda değişiklikler oldukça benchmark sonuçları da etkilenecektir. Bu nedenle ara ara uğramakta yarar olduğu kanısındayım.

  • Programlama Dilleri

    GoLang - Ticker ile Periyodik İş Çalıştırma

    GO dilinin en güçlü yanlarından birisi eş zamanlı programlama (Concurrent Programming) kabiliyetleri sayesinde sunduğu performans ve kullanım kolaylıkları. Daha önceden şu yazıda Concurrency konusunu GoRoutine ve Channel kavramları üzerinden incelemiştim. Çalıştığım kaynaklarda ilerledikçe eş zamanlı programlama konusunda yeni şeyler de öğrendim. Bunlardan birisi de time tipi. Bu tipin NewTimer ve NewTicker isimli iki önemli fonksiyonu bulunuyor. Doğruyu söylemek gerekirse NewTimer ile yapacağımız işlemleri time.Sleep kullanımı ile de sağlamamız mümkün. Bu nedenle NewTimer’ı daha çok bir GoRoutine’in beklenen sürede işini yapmasını beklediğimiz, aksi hallerde ise zaman aşımı halini ele alacağımız durumlarda kullanmanın çok daha mantıklı olduğunu öğrendim. Diğer yandan NewTicker fonksiyonu daha çok dikkatimi çekti. Bu fonksiyon ile belirli periyotlar boyunca tekrar etmesini istediğimiz eş zamanlı görevler planlayabiliriz. Konuyu anlamaya çalışırken önce teorik bir örnek ile ilerlemeye çalıştım. Ardından daha pratik bir örnek geliştirdim. İlk GO kodlarımızı aşağıdaki gibi geliştirdiğimizi düşünelim.

  • Programlama Dilleri

    GoLang - Built-In JSON Desteği

    Mesajlaşma formatlarından çeşitli NoSQL sistemlerine, REST tabanlı veri servislerinden mobil cihazlardaki depolama kabiliyetlerine kadar pek çok alanda JSON (JavaScriptObjectNotation) standardının kullanıldığını görüyoruz. Özellikle XML (eXtensible Markup Language) kadar fazla yer tutmuyor oluşu da onu ön plana çıkartan özelliklerinden birisi. Hatta sıkıştırılmış formatının kullanıldığı ağ protokolleri bile olabiliyor. Verinin rahatça okunabildiği bu standart ile barışık olmayan programlama dili neredeyse yok gibi (Internet Engineering Task Force kurumunun JSON veri değiş-tokuş standartları ile ilgili yazısına buradan, JSON API standartları ile ilgili DevNot üzerinden yayınlanan yazıya da şuradan bakabilirsiniz) Özellikle son on yıl zarfında geliştirilen veya ön plana çıkan ne kadar dil varsa JSON için çekirdekten destek sunuyor. Sunmayanlar da bu sürede ek paket veya eklentilerle bu veri modelini kullandırıyor. GoLang için de benzer durum söz konusu. Nasıl mı? Aynen aşağıdaki kod parçasında olduğu gibi.

  • Programlama Dilleri

    GoLang - Bir Go Paketini Ruby'den Çağırmak

    Pek çok kaynak GO dilinin ileride C’nin yerini alabileceği yönünde görüşler belirtmekte. Özellikle IoT alanında bu dilin daha fazla ön plana çıkacağı vurgulanıyor. Bu düşüncenin haklı olabileceği yönünde bazı tespitlerim var. Söz gelimi GO ile yazılmış paketleri başka dillere ait ortamlarda kullanabilmemiz mümkün. Bir başka deyişle bir GO paketini C, Python, Java ve Ruby gibi dillerde kullanabiliriz. Sonuçta yazılan GO kodları C-Style API şeklinde ifade edebileceğimiz derlenmiş kütüphanelere dönüştürülebilmekte.

  • Programlama Dilleri

    GoLang - Kalıtım için Gömülü Tiplerin Kullanımı

    Bir süredir GO dili ile ilgili çalışmalarıma ara vermiştim. Yakın zamanda ise sevgili Murat Özalp’in “GO Programlama” isimli kitabını takip etmeye başladım. Gerçekten her bölüm son derece doyurucu. Kitabı düzenli olarak hergün çalışıyorum. Bazen çok az zaman ayırsam da her gece bir kaç sayfasını okuyor ve uygulamaya çalışıyorum. Burada yaptığım günlük çalışmaları aksatmamaya gayret ediyor ve kendime göre hazırladığım örnekleri github üzerinde topluyorum. Hatta artık kodları yeni bir IDE üzerinde deniyorum. Yeni gözdem LiteIDE isimli kod editörü (ki Murat Hoca’nın tavsiyesidir ve çok memnun kaldığım bir geliştirme aracıdır)

  • Programlama Dilleri

    GoLang - Web Programlamaya Giriş

    Bir web uygulamasının temel malzemeleri nelerdir? Sunucu tarafında çalışan güçlü bir çatı (Framework), içeriklerin gösterildiği statik veya dinamik web sayfaları, iyi tasarım, görsel zenginlik katan materyaller (resimler,css’ler vb), veri depolama enstrümanları ve diğerleri. Aslında internet programcılığının ilk yılları düşünüldüğünde basit HTML sayfalarının neredeyse her tür ihtiyacı karşılayacağı düşünülüyordu belkide. Zaman geçtikçe programlama dillerinin dinamik web sayfaları ile olan etkileşimi, istemci taraflı çalışan betiklerin sunucu taraflı kullanılabilmesi de gündeme geldi. Modern programlama dillerinin neredeyse tamamı web uygulamaları geliştirebilmek için gerekli temel donanıma sahip. Asıl amacı back-end tarafındaki büyük ölçekli sistemlerde yüksek performans sunmak olan, eş zamanlı programlamada öne çıkan GO ile de web tabanlı uygulamalar geliştirebilmemiz mümkün. Go dilinin network haberleşme üzerine sunduğu basitlik ve yüksek performans da göz önüne alındığında web programlama oldukça ilgi çekici bir konu haline geliyor.

  • Programlama Dilleri

    GoLang - Concurrency (goroutine, channel)

    Yazılım ürünlerinde eş zamanlı çalışma modeli oldukça önemli. Uygulamalarda yer alan süreçler çoğu zaman alt iş parçalarından oluşmakta ve bu parçalar uygun koşullarda eş zamanlı olarak yürütülebilmekte. Eş zamanlılık için bir çok dilde destek mevcut. Go dili için de öne çıkan kavramlarından birisi aslında. Concurrency denildiğinde aklımıza bir sürece ait n sayıda görevin (Task) aynı anda çalışması gelmeli. Okuduğum kaynakta buna güzel bir örnek veriliyor: Web Sunucusu.

  • Programlama Dilleri

    GoLang - Interface Kavramı

    Geçenlerde bilgisayarımın başında oturmuş sıkılmakla meşguldüm. Her ne kadar bloğumu zinde tutmaya çalışsam da arada sırada böyle durağan dönemlere de denk geliyorum. Küçük tatiller diyelim. Derken enteresan bir Tweet yakaladım. Apollo 11’in Command ve Lunar modüllerine ait Assembler kodları github üzerinden yayına açılmış. Şu adresten bakabilirsiniz.

  • Programlama Dilleri

    Ruby Kod Parçacıkları 34 - Fiber ve Eş Zamanlı Programlama

    Eş zamanlı programlamanın (Concurrent Programming) dile veya çatıya göre farklı uygulanma şekilleri olabiliyor. Esas itibariyle genel amaç eş zamanlı olarak birden fazla işin gerçekleştirilmesini sağlayabilmek. Bu noktada en zorlayıcı noktalardan birisi işlemcinin ve işletim sisteminin bu çalışma taleplerine olan anlık tepkilerinin yönetilmesi. Neredeyse pek çok programlama ortamında Thread’ler ile karşılaşıyoruz (Bu arada yandaki fotoğrafın Ruby Fiber ile bir alakası yok. Fiber konulu imaj ararkan doğal olarak lifli yiyecekler ve sevimsiz diyet konusunu karşıma çıkmıştı)

  • JSON to BSON

  • Programlama Dilleri

    Ruby Kod Parçacıkları 34 - Struct ve OpenStruct

    Bir süredir şirket içinde vereceğim Ruby eğitimine hazırlanmaktayım. İşlerden çok vakit kalmasa da önceki Ruby notlarımı ve farklı kaynakları takip ederek 101 seviyesinde bir içerik oluşturmaya çalışıyorum. Gün içinde C# evde geç vakitlerde ise Ruby. Biraz yorucu olsa da oldukça keyifli aslında. Hem yeni bir şeyler öğreniyorum hem de iç eğitim gibi bir gerçek olduğundan ciddi anlamda not çıkartıyorum. Bugün konular üzerinden geçerken struct ve openstruct kavramlarını atladığımı fark ettim (Ov yooo) Tabii hemen öğrenmeye başladım. Neymiş ne için kullanılırmış biraz fikir sahibi oldum. İşte notlarım.

  • Programlama Dilleri

    GoLang - Pointers

    1993 yılında girdiğim Matematik Mühendisliği bölümünün bilgisayar programlama ağırlıklı bir müfredatı vardı. GWBasic ile başlayan maceramızda Pascal, C, C++, Cobol gibi programlama dillerine uğradık. Sınavlarımız çoğunlukla kağıt üzerinde olurdu. Basit for döngülerini dahi kağıt üzerinde yazarak algoritma çözmeye çalışırdık. Haliyle C gibi case-sensitive kuralların katı olduğu dillerde sınavlar epey zorlu geçerdi.

  • Programlama Dilleri

    C# 6.0 - Collection Initializers için Add Metodunu Yönlendirmek

    Mesleki hayatımın bir döneminde yazılım eğitmeni olarak çalıştım. Ağırlıklı olarak.Net eğitimleri verdim. Tabii o zamanlar.Net nispeten daha kolaydı. Bu kadar fazla dallanan bir Framework değildi ama C# dil özellikleri de acımasızca genişlemiyordu. Aradan geçen onca yıldan sonra çalıştığım turuncu bankanın kendi akademisinden iç eğitim isteği geldi.

  • Programlama Dilleri

    GoLang - defer, panic ve recover Kavramlarını Tanıyalım

    Gopher’ın Go diline kattığı sevimlilik ortada. Sadece maskotu değil bazı kavramları da oldukça motive edici bu dilin. Bir.Netçi olarak ortama hata fırlatmak istediğim de kullandığımız throw new Exception gibi bir terminoloji yerine panic şeklinde bir anahtar kelimenin kullanılması aslında kasttettiğim. Hatta go dilinin resmi dokümanlarında “Panic is a built-in function that stops the ordinary flow of control and begins panicking.” şeklinde bir cümle ile bu terim hoş bir şekilde ifade edilmiş. En azından beni tebessüm ettirdi fotoğraftaki minion’u ise biraz ürküttü.

  • Programlama Dilleri

    GoLang - Slice ve Map Kavramları

    Gopher olma çalışmalarım iş yoğunluğuna bağlı olarak zaman zaman hızlı ve zaman zaman da yavaş bir şekilde devam ediyor. Açıkçası Gopher karakterini ve internetteki örneklerini çok sevdim. Google oldukça sevimli bir logo yaratmış. Bu nedenle her bölüm mümkün mertebe farklı bir Gopher’ı ekranlarınıza taşımaya çalışıyorum.

  • Programlama Dilleri

    GoLang - Kalıtımsız Bir Dünya

    Go hızlı ve performanslı bir programlama dili olarak anılıyor. Diğer yandan nesne yönelimli dil özelliklerini büyük ölçüde içermediği gibi bir gerçek de var ortada. Tasarımı sırasında kalıtım (Inheritance) gibi yönetimin sonradan zorlaşabildiği ve bakım gerektiren çatıların performansı olumsuz yönde etkilediği düşüncesi hakim olmuş. Bu nedenle nesne yönelimli düşünce tarzını az da olsa kenara bırakarak ilerlemek gerekiyor. Kalıtım doğrudan desteklenmese de nesne kompozisyonu (Composition) mevcut. Hatta belli bir ölçüde çok biçimliliği (Polymorphism) de uygulayabiliriz gibi.

  • Programlama Dilleri

    GoLang - Basit HTTP Web Server Yapımı

    Go dili ile ilgili maceralarım devam ediyor. Dilin temel özelliklerini anlamaya çalışmak bir yana, aralarda merak ettiğim farklı konuları da incelemeye çalışıyorum. Uygulamalı örnekler üzerinden gitmek de bir programlama dilini öğrenirken tercih ettiğim yollardan birisi. Size de tavsiye ederim.

  • Programlama Dilleri

    Ruby Kod Parçacıkları 33 - Observer Deseninin Uygulanışı

    Bir önceki kod parçasında Singleton kalıbının Ruby tarafında nasıl uygulandığını incelemeye çalışmıştık. Hatırlayacağınız gibi hazır singleton modülünü kullanarak bu işi gerçekleştirmek oldukça kolaydı. Benzer durum Observer tasarım kalıbı için de geçerli. Bu kalıp bir nesnenin durumunda meydana gelen değişiklikler sonrası ilgili diğer nesnelerin uyarılması amacıyla kullanılan popüler yazılım desenlerinden birisi. (.Net tarafındaki uygulanış şekli ile ilgili olarak şu eski yazımdan yararlanabilirsiniz)

  • Programlama Dilleri

    Ruby Kod Parçacıkları 32 - Singleton

    Ruby’nin oldukça geniş bir program kütüphanesi bulunuyor. Fırsat buldukça bazılarını incelemeye çalışıyorum. Geçtiğimiz günlerde Singleton isimli bir modüle rastladım. Kısaca tasarım kalıplarından (Design Patterns) olan Singleton deseninin kolayca uygulanmasını sağlıyor.

  • Programlama Dilleri

    GoLang - Harici Paket(Package) Yazıp Kullanmak

    Go dilinin paketler üzerine kurulu bir yapısı olduğunu biliyoruz. fmt, math, strings, net/http, time, log, encoding/json ve benzerleri şu kısa go geçmişimde kullandıklarımdan sadece birkaçı. Geliştirdiğimiz ürünlerde ortak sorumlulukları barındıran fonksiyonellikleri aynı paketler içerisinde toplamak son derece mantıklı. Bu sayede aynı alana ait fonksiyonellikleri bir paket içerisinde toplayıp kullanabilme şansına sahip oluyoruz. Paketler, kodun yeniden kullanılabilirliği (Code Reusability) noktasında da değer bulan bir kavram.