Bilgisayar alanından hareketle yaşamla ilgili her şeyi paylaşmaya çalışan arkadaşların oluşturduğu kollektif bir günlüktür.
Yazılım Geliştirme Firmalarında Kullanılan Yöntem ve Teknolojiler
Yazılım geliştirme süreçlerinin iyileştirilmesi için yapılan araştırmalar, uygulama geliştirmede tercih edilen yöntemlerin de değişmesini sağladı. Yazılım firmalarında çoğunlukla kullanılan yöntem ve teknolojileri şöyle özetleyebiliriz:
Çevik yazılım geliştirme yöntemlerinin kullanımı (Agile Methods).
Birim testleri yazma (Unit testing).
Sürekli Tümleştirme (Continuous Integration).
Parametre, koşul (condition), kural (rule) yapısına geçiş.
İş akışlarının tanımlanabilmesi.
Ekranların, istenilen alanlar ve akışına göre dinamik oluşumu.
Yazılım Yaşam Döngüsü(Application Lifecycle Management) kullanımı.
Bilgi Yönetimi (Knowledge Management) prensipleri ile kişiye bağımlılığı azaltma.
Kaliteli yazılım geliştirme çalışmaları.
Richard Stallman Haklıydı!
Bir yazıda özgür yazılımın önemine dair bir paragrafın günümüzde nasıl gerçek olduğuna değiniliyor. Böylece çoğu kimse tarafından "çok fazla radikal" biri olarak kabul edilen Stallman'ın haklı olduğu (tekrar) kanıtlanmış oluyor. Özgürlüğümüz için özgür yazılım...
Toplumumuz bilgisayarlara daha fazla bağımlı oldukça, üzerinde çalıştırdığımız yazılımlar özgür toplumumuzun geleceğini güvence altına almada kritik bir öneme sahip oluyor. Özgür yazılım; evlerimizde, okulumuzda ve işlerimizde kullandığımız teknoloji üzerinde kontrol sahibi olmamız hakkındadır, nerede bilgisayarlar bizim bireysel ve toplumsal (komünal) yararımız için çalışıyorsa, bizi kısıtlamak ve gözetlemek isteyen özel mülk yazılım firmaları veya hükümetler için değil (Kaynak, çeviri hızlıca benim tarafımdan yapılmıştır).
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.
Ö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
Benim çözümüm şu şekilde:
Özyinelemeli Genişletilmiş Öklid Algoritması
Wikipedia'da Özyinelemeli Genişletilmiş Öklid Algoritması için verilen sözde kod(pseudocode) şu şekilde:
Benim çözümüm şu şekilde:
Kaynaklar
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.
Kaydol:
Kayıtlar (Atom)