Diller

LINQ Teknolojisi

Ebru Demiryürek —  14 Ekim 2014 — 4 Comments

Merhaba arkadaşlar, size Linq teknolojisinden bahsedeceğim ve kısa bir giriş yapacağız. Diğer yazılarımda da Linq ile sorgular yazacağız.
Öncelikle Sql ve Linq to Sql’i kısaca tanımlayalım.

Sql Nedir?

Sql, veritabanı işlemlerini gerçekleştirmek için kullanılan komut dilidir. Sql ile veritabanı işlemleri yapılır.

Linq to Sql Nedir?

Linq, nesneler üzerinde bulunan ilişkisel veriyi hızlı bir şekilde sorgulamak için kullanılan sorgulama aracıdır. Linq to sql ise linq altyapısının sql veritabanı üzerine uyarlanmış halidir.

Okumaya devam edin...

Thread Kavramı

Ebru Demiryürek —  8 Eylül 2014 — 6 Comments

Thread (iplik) kavramı, aynı process ortamında birden fazla iş yürütme imkanı sağlar. Bir process’in çalışmaya başlaması ile birlikte bir thread (main thread) oluşturulur ve bu process içerisinde birden fazla iplik (multi-thread ) oluşturulabilir. Yaratılan iplikler aynı adres uzayında koşarlar. Her ipliğin kendine has program sayacı, saklayıcıları, yığını ve durumu(yok edilme, askıya alınma, önceliğinin değiştirilmesi) vardır. Bir iplikteki (thread) değişkeni aynı işlem tarafından üretilmiş bütün iplikler değiştirebilir veya okuyabilir.

Okumaya devam edin...

Directive’ler AngularJS’in temel taşı ve en kuvvetli özelliğidir. Bu sayede, kendi işimize yarayacak html tagler üretebiliriz. AngularJS kütüphanesiyle yazılmış kodlara baktığımız zaman `ng-app`, `ng-repeat`, `ng-controller` diye gördüğümüz her şey aslında birer `directive`dir. Şimdiye kadar ben de bu `directive`lerin son kullanıcısıydım. Artık kafama koydum ufak da olsa bu deryaya bir adım atacağım 🙂

Detaylı bilgi edinebilmek için bir çok kaynak okudum, teknik konuşmalar izledim ve aslında directivelerden önce `linking`, `compiling`, `scope`, `data binding` gibi kavramların da iyice sindirilmesi gerektiğini fark ettim. Bu araştırma sürecinde AngularJS’in yazarlarından Misko Hevery’nin bu video kaydını oldukça faydalı buldum. Gerek `directive`ler olsun, gerek AngularJS’in çalışma prensibi olsun oldukça basit bir dille ifade edilmiş. `Scope`larla ilgili olarak bu günlük yazısına bir göz atmanızı tavsiye ederim. AngularJS’te tek yönlü bağlama (one way binding), iki yönlü bağlama (two-way binding), metin bağlama (text binding) diye üç tip yöntem var. Bütün bu yöntemler bu kaynakta güzel açıklanmış. Vaktiniz olursa bu kitaba da bakmanızı öneririm.

Bu kadar araştırma yaptıktan sonra artık sağ-tık directive’ini yazmaya başlayalım derim.

Okumaya devam edin...

Fonksiyonel programlama dillerinde yaygın teknik; fonksiyonları mümkün olabilecek en alt fonksiyonlara ayırarak problemi çözme yönündedir. Yineleme yani ” recursion” fonksiyonları da bu noktada en iyi çözümlerden biridir. Yineleme fonksiyonu bildiğimiz üzere kendi kendini çağıran fonksiyondur.

Fakat yineleme fonksiyonları performans açısından yavaştır. Sebebi ise; fonksiyonlar, kendini her çağırdığında bellekte yeni bir yer açılır ve bu tarz fonksiyonlar, çağrılar sonucunda dönen değerleri kullanarak hesaplama yaptığı için hesaplama yapılana kadar tüm parametreler ve dönüş değerleri bellekte tutulur. Daha açık bir şekilde ifade edersek; son yineleme de dahil olmak üzere tüm yinelemeler bir değer döndürdükten sonra hesaplama yapıldığı için tüm değerler işlem sonuna kadar bellekte tutulur.

Böyle bir yöntem kullanınca da bellek fazla kullanıldığı için “StackOverflowException” ile karşılaşmak kaçınılmaz oluyor.

Okumaya devam edin...

Yeni yeni Scala ile uğraşmaya başladım daha ilk derslerden fonksiyonların evaluation stratejileri üzerine yararlı birkaç video izledim. Üzerine bu stratejileri biraz araştırdım ve Scala’da en çok gündeme gelen call-by-value ve call-by-name stratejilerini burada paylaşmak istedim. Bunu öğrenmek benim için çok yararlı oldu. Ben her zaman şuna inanıyorum. Maharet sadece kodu yazmakta değil, arkada nelerin döndüğünü de bilmektedir.

O yüzden bu 2 stratejiden kısaca bahsedeceğim. Yazacaklarım çok detaylı değil öğrendikçe paylaşacağım.

Not: Eğitimi bitirdiğimde yazıyı editleme hakkını kendimde saklı tutuyorum 🙂

Öncelikle fonksiyonları tanımlayalım.

 def suare(x: Double) = x * x

def sumOfSquares(x: Double, y:Double) = square(x) + square(y)
Okumaya devam edin...

Python ile kod yazmak ayrı bir zevk…

Herkes kod yazdığı dili sever, över, en iyisi zanneder. En iyisi demiyorum ama Python’da kod yazmak ayrı bir zevk.. Neden? Geliştirme süresi diğer dillere göre daha kısadır.

Daha az matbu (boilerplate) kod

Geliştirme daha hızlıdır, çünkü gavurların ‘boilerplate’ dediği kod pek yok. Türkçe’de buna matbu kod diyebiliriz. Matbu (boilerplate) kod, koda o dilin gereği tekrar tekrar eklediğiniz koddur. Ne gibi mesela? En basitinden Java’dan ve Python’dan “Merhaba Dünya” diyelim.

Java’da:

public class HelloWorld { //Objenin sınıfını tanımlamak için kullandığımız matbu kod
    public static void main(String[] args) { //gene matbu kod
        System.out.println("Merhaba Dünya!");
    }
}

Python’da:

 print("Merhaba Dünya!")
Okumaya devam edin...