Linux İşletim Sistemi

Linux işletim sistemini kullanan insan saysı 2012 itibariyle 60 milyonu geçmiş bulunuyor. Dünyanın en büyükleri arasında bulunan 500 kurumsal kullanıcıya uygulanan ankette % 80 oranında "gelecek 5 yıl içinde Linux kullanımı artacak" yanıtı alınmış. Kurumlar Bilgi Teknolojileri maliyetlerini düşürmenin yanında, uzun süre çalışabilen, kararlı sistemler kurabilmek için de Linux tercih ediyorlar.

LinuxCounter sitesinde, linux kullanıcı sayısının, 1991 yılından günümüze kadar olan artış grafiğini görebilirsiniz.

Kendi firmanızda kullanmak üzere Linux işletim sistemi ve açık kaynak kodlu yazılımları incelemenizi ve kullanmanızı tavsiye ederiz. Bilgisayarınıza tamamen yüklemeden de deneyebileceğiniz Ubuntu Linux dağıtımı ile başlayabilirsiniz. 

Linux işletim sistemi, çalışacakları amaç için özelleştirilmiş olarak sunuluyorlar. En iyi dağıtımları sıralayacak olursak:

Ubuntu : Dizüstü bilgisayarınız için,
Mint   : Masaüstü bilgisayarınız için,
RedHat : Büyük ölçekli firmanızda kullanacağınız masaüstü bilgisayar ve sunucularınız(server) için,
Suse   : Büyük ölçekli firmanızda kullanacağınız masaüstü bilgisayar ve sunucularınız(server) için,
Knoppix : Kurulum yapmadan, CD üzerinden bilgisayar açılışı yapabilmek için uygun dağıtımlardır.

RedHat ve Suse dağıtımları, büyük firmaların kurumsal ihtiyaçlarını karşılamak üzere geliştirilmiştir. Bu dağıtımları ücretsiz  kullanabilir, isterseniz geliştirici kurumların belirledikleri ücretler karşılığında 7/24 destek alabilirsiniz. 

Google Code Test Otomasyonu - Vaka Analizi

2009 da test otomasyonu için kod yazılmaya başlanmış.
Önce yeni kod için, sonra değiştirilen her kod için test kodunu zorunlu tutmuşlar.
Herkes kendi sahte nesnelerini (mock object) oluşturmaya başlamış, zaman geçtikçe bunu yönetmek durumunda kalmışlar.

Çıkardıkları sonuçlarda biri : sahte nesne kullanmamaya çalışın, kullanacaksanız gerçek bir sahte nesne olsun ve bunu diğerleri ile paylaşın. Devamı için, ilgili sunumun videosuna buradan ulaşabilirsiniz.

OBEB için Özyinelemeli Öklid Algoritmaları

Bilinen en eski algoritmalardan biri, iki sayının OBEB(ortak bölenlerin en büyüğü)'ini bulan Öklid(Euclid) Algoritması'dır. MÖ 300 yılında Öklid'in bir kitabında geçtiği bilinmektedir. Öklid Algoritması şifrebilimin önemli algoritmalarından RSA Algoritması'nda, Diofant denklemlerinin (Diophantine Equations) çözümünde, sayılar kuramındaki bazı kuramların kanıtlanmasında kullanılmakta.
Ayrıca Genişletilmiş(Extended) Öklid Algoritması denilen algoritma ile sadece OBEB'i değil,  OBEB(a,b) = ax + by denklemindeki x ve y tam sayıları da bulunabiliyor.

Aldığım derslerden birinde 0 ile 2^64 -1 arasındaki pozitif tam sayılar için geçerli olacak şekilde bu algoritmaların kodunun yazılması ödev olarak verilmişti. C++ ile yazdım; ancak geç gönderdiğim için benim çözümler değerlendirilmedi. Ben de yazdığım kodları burada paylaşarak değerlendireyim dedim. İki algoritmanın özyinelemeli (recursive) biçimlerini aşağıda paylaşıyorum.

Özyinelemeli Öklid Algoritması 

Wikipedia'da Özyinelemeli Öklid Algoritması için verilen sözde kod(pseudocode) şu şekilde

function gcd(a, b)
    if b = 0
       return a
    else
       return gcd(b, a mod b)


Benim çözümüm şu şekilde:


...

typedef unsigned long long int PozitifTamSayi;

...  

//Oklid(a,b)
//Özyinelemeli Öklid Algoritması kullanarak OBEB bulma algoritması

 PozitifTamSayi Oklid(PozitifTamSayi a,PozitifTamSayi b)
{
    if (a == 0)
        return b;
    if (b == 0)
        return a;

    if (a > b)
        return Oklid(a % b, b);
    else
        return Oklid(a, b % a);

}  


Özyinelemeli Genişletilmiş Öklid Algoritması

Wikipedia'da Özyinelemeli Genişletilmiş Öklid Algoritması için verilen sözde kod(pseudocode) şu şekilde:

function extended_gcd(a, b)
    if b = 0
        return (1, 0)
    else
        (q, r) := divide (a, b)
        (s, t) := extended_gcd(b, r)
        return (t, s - q * t)

Benim çözümüm şu şekilde:


...
typedef long long int TamSayi; 
...

//GenisletilmisOklid(a,b)
//Özyinelemeli Genişletilmiş Öklid Algoritması kullanarak 
//ax + by = OBEB(a,b) şeklindeki denklemden OBEB, x ve y bulma algoritması
//işaretçi(dizi) döndürür

TamSayi* GenisletilmisOklid(TamSayi a, TamSayi b){
    TamSayi* sonuclar=new TamSayi[3];
    TamSayi q,r;
    if (b == 0)
    {
        sonuclar[0]=a;
        sonuclar[1] = 1;
        sonuclar[2]=0;
    }
    else
    {
        q = a/b;
        r = a%b;
        sonuclar= GenisletilmisOklid(b,r);
        int gecici= sonuclar[1] - sonuclar[2]*q;
        sonuclar[1] = sonuclar[2];
        sonuclar[2] = gecici;
    }

    return sonuclar;
} 



Kaynaklar
  • Wikipedia, Euclidean Algorithm, http://en.wikipedia.org/wiki/Euclidean_algorithm.
  •  Wikipedia, Extended Euclidean Algorithm,  http://en.wikipedia.org/wiki/Extended_Euclidean_algorithm.

İnternette Güvenli Gezinti

Günümüzde İnternet üzerinde dolaşırken bilgilerimizin korunması önemli bir konu haline geldi. Herkes bilgilerimize erişme, onları elde etme çabası içerisinde. Bu hızlı yazıda hızlıca bir kaç araçtan söz edeceğim:
  • Tor Browser Bundle: Her ne kadar Türkçe olarak indiremeseniz de, size anonim internet gezintisi sunan önemli bir araç. Tabi Firefox kullanmak zorundasınız. İndirdiğiniz dosya doğrudan Tor anonimleştirici destekli Firefox tarayıcı.
  • JonDoFox: Bu da JonDonym anonimleştiricili Firefox dağıtımı. Şu adreste bir karşılaştırma bile var.
  • I2P: Bir başka anonimleştirici ağ hizmeti. 
  • HTTPS Everywhere: EFF tarafından geliştirilen bu araç bütün sitelere https ile girmenizi sağlıyor, böylece şifrelenmiş veri aktarımı garantilenmiş oluyor.
Konuyla daha fazla ilgilenenler doğrudan google araması yapabilir veya başlangıç olarak şu adresi ziyaret edebilir.