Teknik

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...

Robotik

Bilge Aslan —  6 Mart 2014 — 3 Comments

robocupDARwInVsTUD800x600Merhaba, ben burada zaman zaman robotik çalışmalardan, bazı yazılımsal çözümlerden bahsedeceğim. Ama önce bir girizgah yapmaya karar verdim. Şöyle bir bakalım neler var, konuyla ilgilenenler nerelere yönlenebilirler bir görelim.

Robot deyince çoğunlukla akla tonlamasız ve kesikli konuşan, insansı bir makine gelir. Oysaki günümüzde geliştirilen robotların çoğunluğu insansı değildir. Çünkü robotlar kullanılacakları ortama ve göreve göre tasarlanırlar ve 2 bacakla adım atarak hareket etmek ve kollara sahip olmak çoğu zaman avantajlı bir durum değildir.

Farklı örnekler göstermeli. Ama öncesinde 1-2 organizasyondan bahsedelim. Konu ile ilgilenenlerin takip edebilecekleri pek çok etkinlik mevcut. Bunların en popüleri 1997’den beri her yıl düzenlenen RoboCup. Bu organizasyonda robotların futbol karşılaşmaları yapılıyor. Burada futbol maçı yapan çeşitli robotların yanı sıra seach and rescue kategorisinde yarışan robotlar da var.

Okumaya devam edin...

Bir sorgu optimizasyonu yaparken sorgunun nasıl planlandığını incelemek önemlidir.

Eğer sorgu çalıştırmak için pgAdmin aracını kullanıyorsanız, pgAdmin arayüzünde üst menüdeki explain explainanalyze butonuna tıklayabilirsiniz.

Ya da sorguyu psql ile veya yine pgAdmin’in sorgu panelinde şöyle çalıştırabilirsiniz:

Explain select * from table_a;
Explain analyze select * from table_a;

Yukarıdaki gibi explain ve explain analyze sorguları çalıştırıldığında farklı sorgu planları dönerler.

Explain ile olan sorgunun planı:

                            QUERY PLAN
------------------------------------------------------------------
 Seq Scan on table_a (cost=0.00..4740.30 rows=86430 width=140)
(1 row)
Okumaya devam edin...

Linux sistemlerde bellek kullanımını görmek çok kolaydır ve basit komutlar ile bellek kullanımı kontrol edilebilir.

/proc/meminfo dosyasına bakmak

proc/meminfo dosyasını cat, grep gibi komutlarla inceleyebiliriz. Bu dosya Linux tabanlı sistemlerdeki bellek kullanımı ile istatistikleri tutar. Aynı dosya ‘free’ gibi komutlar tarafından da kullanılır ve kullanımda olan, boş olan belleği (hem fiziksel hem swap) görmemizi sağlar. Aynı zamanda paylaşılan belleği ve çekirdek (kernel) tarafından kullanılan ‘buffer’ları da görmemizi sağlar.

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...