30
Mar


Yaklaşık 30 sene önce başlayan özgür yazılım hareketi, günümüzde açık kaynak hareketi ile birlikte bilgi işlem sektörünün hemen her alanında olmazsa olmaz kabul edilmekte ve en kritik iş uygulamalarından tutun en sıradan günlük ofis uygulamalarına dek somut alternatifler sunmaya devam etmektedir.

Google, IBM, Yahoo, Amazon gibi devasa iş operasyonlarını başta GNU/Linux işletim sistemi olmak üzere özgür ve açık kodlu yazılımlara emanet eden şirketlerin yanısıra, araştırma geliştirme çalışmalarını özgür ve açık platformda sürdüren dünya çapında üniversiteler de göstermektedir ki özgür ve açık kodlu yazılımlar ticaretin ve inovasyonun ötesinde geleceğe yönelik öncü teknolojilerin de sağlam zemini teşkil etmektedir.

Özgür ve açık kodlu yazılım dünyası, ortaya koyduğu kısa vadeli teknolojik ve maddi avantajlara ek olarak çok önemli bir amaca daha hizmet etmektedir: teknolojiyi, bilimi inceleyip, araştırıp anlamak ve çok daha iyisini geliştirmek isteyen zihinler için değeri para ile ölçülemeyecek bir fırsatlar ve kaynaklar havuzunu beslemek ve yeni nesilleri üretkenliğe, paylaşımcılığa teşvik etmek.

Günümüzde çoğu kişi tarafından sorulan temel soru “özgür yazılımlara geçmeli miyiz?” sorusu değildir. Artık “hangi özgür ve açık kodlu yazılım kombinasyonlarını ne tür işlerde kullanabiliriz?”, “geliştirdiğimiz özgür yazılım için ne tür bir iş modelini hedeflemeliyiz?”, “hedeflediğimiz özgür yazılımlar için en iyi eğitimleri nasıl alabilir yahut verebiliriz?” gibi pratik sorular gündemdedir. Bilgi işlem dünyasının amacı artık düşük maliyetli, güvenilir, açık standartlarla uyumlu ve ticari dalgalanmalar ile krizlere dayanıklı sistemleri tasarlamak, bunları olabildiğince yaygınlaştırmaktır.

İstanbul Bilgi Üniversitesi ve Linux Kullanıcıları Derneği‘nin bu amaca katkıda bulunmak için gerçekleştirmekte oldukları etkinlikler 11. yılını kutluyor.

Kaynak: http://ozguryazilimgunleri.org/2012/hakkinda/

12
Oca

Geliştirdiğiniz bir yazılımı insanların daha fazla faydalanabilmesi için kodları ile birlikte dağıtmak fikri. İlk duyduğumda biraz garip gelmişti, geçmesi 1-2 dakika sürdü.

Ardından işe koyuldum; önce paylaşımdan faydalanan tarafta yer aldım. Özgür yazılım geliştiren insanların paylaştığı kodları incelendim, bazı değişiklikler yaptım, işime yaramayan kısımları attım, paketledim ve sattım. Para kazanınca, kendimi kodlarından yararlandığım insana borçlu hissettim. Para teklif ettim, istemedi. Onun yerine onun bana yaptığı gibi benim de ona katkı vermemi istedi. Yazılım ile ilgili yanlış olduğunu düşündüğüm kısımları söyledim, birkaç hatayı düzelttim, bazı değişiklikler ile ilgili tartıştım ve bir şekilde yazılımı geliştirdim. Yeri geldi birbirimizi ikna edemedik, bir önceki sürümden sonra yollarımızı ayırdık. Yeri geldi işi gücü bırakıp bira içmeye gittik.

Özgür yazılımı yukarıda anlattığım gibi ele alıyorum ben. Ne üzerinde çalıştığım platformun özgürlüğü, ne de şu anda bu satırları yazdığım yazılım ile ilgili özgürlük detayları ilgilendirmiyor beni. Bugüne kadar yazdığım satır kod şu anda İnternet üzerinden erişilebiliyor, özgürce başkaları tarafından kullanılabiliyor ve yine bir şekilde birilerinin işine yarıyorsa bu benim için yeterli. Biraz daha açıklamak gerekirse; Windows üzerinde dahi uygulama geliştirebilirim (tercih etmem ama zorunda kalırsam geliştiririm) ve o uygulamayı özgür bir şekilde kullanılmak üzere insanlara dağıtabilirim. Bu benim için özgürlük dışı bir davranış olarak gözükmüyor. Hatta eski tartışmalara da taş atmak gerekirse; ben yazılım geliştirirken Jira dahi kullanabilirim; bu Pardus için doğru olmayabilir, projenin gereksinimleri, hedefleri vs. ile ilgili başka durumlar söz konusu olabilir ve özgür olmayan bir yazılım kullanarak özgür yazılım geliştirmek konusu tartışmaya açılabilir. Fakat kişisel olarak geliştirdiğim/geliştireceğim uygulamaları geliştirirken kullanacağım yazılımların özgür olup olmaması beni zerre ilgilendirmiyor.

Bunları buraya geçmişten bir not kalsın diye, 10 yıl aradan sonra kapalı kodlu yazılım geliştirmek zorunda olduğum için yazıyorum. Hiçbir zaman Richard M. Stallman gibi bir bakış açısına sahip olamadım, doğru olduğunu ya da yanlış olduğunu tartışmıyorum, fakat benim özgürlük bakış açımda sadece benim neyi nasıl yaptığım önemli. Ben herhangi bir insanın işine yarayacak bir uygulama geliştirdiysem, bunu özgürce kullanmasını, değiştirmesini ve hatta tekrar dağıtabilmesini garantilediysem bu bana yeterli geliyor.

Yani ben Windows üzerinde özgür bir yazılım geliştirebilir, kullandığım görselleri Photoshop ile hazırlayabilirim. Yine eklemek gerek; tercih etmem ama yapabilirim ve bu yazılımların özgürlüğü konusunda da herhangi bir endişe duymam.

17
Ara
Hiç anlam veremediğim reklamlarla, kampanyalarla karşılaşıyorum. Şu kadar şişe kapağı getirirseniz bir firma şu kadar tekerlekli sandalye verecek gibi şeyler bunlar. Firmaya götürdüğümüz şey geri dönüşümden firmaya gelir getirici bir şey olsa arada bir bağlantı kurmak zor olmayacak ama şişe kapağı nedir? Hadi şişe kapağı fiziksel bir şey, facebook sayfamızı beğenen her kişi için şu kadar bağışta bulunacağım diyen bile çıkmıştı hatırlarsınız.

Az önce Renkler Herkes İçindir başlıklı bir sayfa gördüm. Burada kısa bir film var, filmi her seyreden için bir görme engelliye mobil cihazlar üzerinde çalışan bir uygulama ücretsiz verileceği anlatılıyor. Yazılım; görenlerin aklına gelmeyecek ama görme engelliler için faydalı bir iş yapıyor: telefonu bir şeye doğru tuttuğunuzda onun rengini söylüyor.

Sayfanın altında da bir not var: "Türkiye'de 700.000 görme engelli var. Film, şu ana kadar 1.574.278 kere izlendi"

Bir yazılım müşterilerinin iki katı kadarına bedava verilecek hale gelmiş (sponsor tarafından) ama hala ondan özel bir yazılım, ucuz değil filan diye bahsediliyor. Çünkü çoğunluk hala yazılımın parayla satılması zorunluymuş, parasız olanı ya lisanssız ya da kalitesiz olurmuş gibi düşünüyor.

Kamu için faydası bu kadar yüksek, yaygın etkisi büyük bir programın (eğer yoksa) bir özgür alternatifini yazmak eminim zor bir iş olmayacaktır. Bir buçuk milyon kere izlenmeden önce haberimiz olsaydı bütün mobil ortamlarda başarılı bir şekilde çalışan sürümlerini yazmış olurduk. Hatta program bütün dünya dillerini konuşuyor olurdu.
16
Ağu

Web sayfalarında JavaScript kütüphaneleri yani bir diğer adı ile framworklerini kullanabilmek için gerekli kütüphane dosyasını sayfamıza eklememiz gerekiyor. Fakat bu kütüphaneler sıkça güncellendiğinden son sürümlerini öğrenip sayfalara eklemek zaman alabiliyor. ScriptSrc.net en çok kullanılan JavaScript kütüphanelerine kolayca ulaşılmasını sağlayan bir site.

Sayfada yer alan JavaScript kütüphanelerinin adresleri tek tıkla kopyalanabilir. Kopyaladığımız adres sadece kütüphanenin adresini değil sayfaya ekleyeceğimiz kodları da içeriyor.

Örnek

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>

Info kısmından kütüphanin adresi, sitesi, son güncelleme tarihi gibi bilgilere de ulaşabiliyoruz. ScriptSrc.net’de bulunan JavaScipt kütüphaneleri ise jQuery, jQuery User Interface, Chrome Frame, Swfobject, MooTools, ExtJS, Yui, ProtoType, Scriptaculo.us ve Dojo.

Sitedeki kütüphaneler ile ilgili son güncellemeleri ve site ile ilgili duyuruları Twitter sayfasından (@scriptsrc) takip edebilirsiniz.

Share

20
Haz

Formlarda kullanılan e-posta adreslerinin geçerliliğini JavaScript yardımı ile öğrenebildiğimiz gibi PHP ile de kolayca öğrenebiliriz. Bunu PHP’nin preg_match fonksiyonunu kullanabiliriz.

İlk olarak bir form sayfasından e-posta adresini kullanıcıdan aldırmalıyız.

<form action="" method="post">
<input type="text" name="eposta">
</form>

Daha sonra da PHP ile e-posta kontrolü yapacağımız kodlarımızı yazıyoruz.

<?php
$eposta = $_POST["eposta"];

$kontrol = preg_match('[^\w+@\w+\.\w[\w\.]+$]',$eposta);

if(!$kontrol) {
       echo "Geçerli bir s-posta adresi girin.";
}

?>

Formdan aldığımız e-posta adresini bir değişkene attıktan sonra preg_match fonksiyonuna dahil etmiş ve e-posta adresi geçerli değilse uyarı verdirtmiş olduk.

PHP ile gelen özellikle FILTER_VALIDATE fonksiyonu ile de e-posta adresinin geçerliliğine kolayca bakılabilir. (Bkz: Yorumlar)

filter_var($eposta,FILTER_VALIDATE_EMAIL);

http://php.net/manual/en/function.preg-match.php

Share

26
Nis

PC Labs, sürekli yeni haber ve makaleler yayınlayan, belki de bu sebeple hemen her gün mutlaka ziyaret ettiğim güzel bir internet sitesi. Okuduğum kimi yazılar bana hayli sıradan gelirken bazı konular ise müthiş ilgimi çekiyor ve beni düşünmeye sevk ediyor. Bu bağlantıda okuduğum bir makale de beynimin hücrelerini kaşındıran bir türde…Yazıda 390.000 kişi gibi devasa bir kitle üzerinde yapılan bir tür eğilim araştırmasından bahsediliyor. Pc kullanıcıları ile Mac kullanıcılarının demografik özellikleri arasındaki farklara dikkat çekiliyor. Araştırma sonuçları ilginç diyemeyeceğim. Zira sanki beklenen sonuçlar çıkmış gibi geldi bana.

İlginç bir karşılaştırma olmuş bu. Adeta işletim sistemi tercihinde bulunan insanlara bir tür etiket yapıştırılmak isteniyor gibi…Firmalar nezdinde hedef kitlelerini tanımaya, anlamaya yönelik bir veri üretiyor gibi görünürken aynı zamanda gayet yönlendirici ve piyasayı etkilemeye yönelik. Araştırma sonuçlarına bakınca (aslında bakmadan bile), bu araştırmanın Apple tarafından yaptırılmış olabileceği izlenimi doğuyor insanda. En azından benim önyargı olarak da değerlendirebileceğimiz kişisel bakış açım buna izin veriyor, mahal yaratıyor. Zira Apple’ın her ne kadar kimi yönlerden ortaya kaliteli, güzel denebilecek ürünler koyduğunu düşünüyor olsam da aslında satışlarını psikolojik faktörlerle yürüttüğüne, desteklediğine inanıyorum. Apple’ın pazarlama politikası, insanları “bir Apple ürünü kullanırlarsa farklı ve elit bir kitleye mensup olabileceklerine inandırma” temeli üzerine inşa edilmiş. Polemik yaratmamak adına şu nüansa dikkat çekmek isterim. İrdelediğim Apple’ın pazarlama politikası…Yoksa ürün politikasına kesinlikle bir sözüm yok. Kanımca Mac bilgisayarların tasarımı gayet güzel. iPhone da temsil ettiği neslin öncüsü…Bence en farklı ürünü ise diğer markaların henüz yeni yeni girmeye teşrif ettiği bir kulvar olan bütünleşik masaüstü çözümleri, yani iMac.

Benim sorunum, kullanıcıların dar bir kafese hapsedilerek, önlerine konan bir tas çorbaya razı edilmeleri ve bununla da yetinilmeyip o çorba için insanların ceplerinden para alınmasıyla ilgili. Hatta bir adım daha ötesinde o paraların sağladığı güçle, kafesin daha da daraltılmaya çalışılmasıyla…

Burada “Mac’e para harcamak yersizdir”, “Windows’a ödenen para helal değildir” türünden söylemler de bana göre yersiz. Özgürlüğe değer veren bir Linux kullanıcısı olarak, cebinde parası olan insanların o parayı istedikleri gibi harcama özgürlüğüne de sahip olduklarının su götürmez bir gerçek olduğu düşüncesindeyim. Dolayısıyla insanlar Linux da kullansın, Windows da kullansın, Mac Os da kullansın diyorum. İşin özü ne kullanıldığı değil, nasıl kullanıldığıdır. Çerçevesi, standartlarıdır. İşte bu noktadan bakılınca kullanıcıların, satın aldıkları (Win ya da MacOS) ya da satın almak zorunda kalmadan kullandıkları (Linux) sistem her ne olursa olsun aslında sormaları gereken soruların genel mantığı hep aynı olmalıdır:

İstediğim herhangi bir formatta videoları kullanabilecek miyim?
Sadece wmv mi kullanabilirim? H264′e mecbur muyum? Windows ile ogg formatındaki dosyaları çalıştıramayacak mıyım? En iyi olduğunu iddia eden bu işletim sistemleri (Windows, MacOS, Linux) neden her dosya formatına doğal destek vermiyor/veremiyor? Bu acaba şartlar eşit olduğunda, güçlerini kaybedebilecekleri, eşit şartlarda en iyi olduklarının aslında bir yalan olduğu gerçeğiyle karşı karşıya kalma korkularından olabilir mi? Bu yüzden mi “o mu, bu mu, şu mu” tartışmalarıyla özgür insanları, ellerinde sadece 2-3 seçenek olduğuna ve bu seçeneklerden birini tercih etmeleri gerektiğine inandırmaya çalışıyorlar? Belki evet belki hayır. Endişelenecek bir şey yok. Bunlar sadece soru. Cevaplar bizi nereye götürüyor? Oooo…Yüzlerce cazip seçeneğin olduğu bir dünya mı gördünüz orada bir yerlerde? Hayır ben söylemedim. İlk defa çevrenize bakmaya başladınız belki de…

Kapalılık tutkusu neyin sonucu?
Kapımız kapalıyken, diğer insanlar için faydalı bir komşu olduğumuzu öne sürmek ne kadar doğru? Evimizi onlara peşkeş çekmeyeceğiz ama oturma odamızda birlikte oturabilmek, misafirperverliğimizin, kendimize güvenimizin, gücümüzün ve kavrayıcılığımızın farkında olduğumuza bir işaret değil midir? Öyleyse neden kapalıyız? Neden korkuyoruz?

Micrsoft Word uygulamasının varsayılan dosya biçimi neden tüm dünyanın bir standart olarak kabul ettiği odf formatında değil de kendine has bir formatta? Microsoft, ofis uygulamasının, açık kaynak kodlu alternatifler karşısında zayıf olduğunu mu düşünüyor? Mesela Powerpoint’in Libre Office Sunum’dan ya da iWork’teki muadilinden daha az gelişmiş olduğunu mu düşünüyor? Yoksa müşterilerini kendisine bağlamak mı istiyor? Bay Gates “İnsanlar sunum hazırlamak istiyorlarsa o sunum ppt formatında kaydedilmelidir. Diğer formatlarda kaydedilmemelidir. Çünkü diğer alternatiflerle de üzerinde işlem yapılabilen bir formatta kaydedilme imkanı sağlarsak, siz değerli müşterilerimiz alternatifleri de deneme eğilimine girersiniz. Hele bir de bunun ücretsiz olduğunu öğrenirseniz bu eğiliminiz daha da güçlenir. Bu da ppt’ye dolayısıyla Powerpoint’e olan bağımlılığınıza ve tabiki karlılığımıza zarar verir ki bunu hiç istemeyiz” diyor bize. İşte bu yaklaşım yüzünden kapalı kaynak kodlu Ms Office’te dünyaca kabul edilmiş standartlara yer yok.

“Yok mu bunun bir çaresi?” diye sormayın. Cevap vermeyeceğim size. Kaldırın başınızı. Biraz daha bakın çevrenize…Bakın bakalım. Parayla satın aldığınız ve her yeni sürümünü tekrar parayla satın alacağınız ofis yazılımınızın özgür olmayan, kapalı kodlu formatlarını dahi kullanmanıza olanak sağlayan, ücretsiz kullanabileceğiniz ve her yeni sürümünü ücretsiz kullanmaya devam edebileceğiniz özgür ofis yazılımları var mı bir yerlerde?

Ödediğim para ile elde ettiğim fayda orantılı mı?
Bir bilgisayar satın aldınız ve içindeki işletim sistemi bir Windows veya MacOS X ise onun için de otomatik olarak para ödediniz. Microsoft der ki;”Bu bilgisayarın içindeki Windows yalnızca bu bilgisayarla kullanılabilir”. Aradan geçen yıllar yeni nesil yazılımların bilgisayarınıza yaşlı adam muamelesi yapmaya başlamasına sebep oldu ve zaman içinde yeni bir bilgisayar satın almaya karar verdiniz. “Heyoo, elimde paramla satın aldığım Windows’um da var” diye sevinmeyin hemen. Çünkü yeni bilgisayarınızla aynı Windows’u yine satın alacaksınız! Ama, ama…Hani satın almıştınız. Hani sizindi. Paranız? Nereye harcadınız peki onu? Meğer kiralamışsınız Windows’u. Ne yazık ki MacOS X için de durum farklı değil. Üstelik ödeyeceğiniz bedel daha yüksek.

Bir de çorbayı yemek kaşığı ile değil de çay kaşığı ile içmek zorunda bırakılma hali var tabi. Aynı fiziksel donanıma sahip standart bir PC’den çok daha fazla para ödeyerek sahip olabileceğiniz bir Mac bilgisayarın içinde barındırdığı MacOS X’in bazı bileşenleri de hayret uyandırıcı. Os X’le birlikte kurulu gelen Quicktime uygulamasının sınırlı olduğunu ve kimi özelliklerinin kullanılabilmesi için ayrıca bedel ödemek zorunda olduğunuzu biliyor muydunuz? Bu 5 vitesli bir otomobil satın alıp, ekstra ödemeden 3. vitesin üzerine çıkamamak gibi bir şey…Peki paranızla neyi satın aldınız siz?

Hala paranızı kafesler için harcama özgürlüğünüzü kullanmak istiyor musunuz?
Tüm işletim sistemleri böyle mi? Piyasanın genel kuralı mı bu? Hayır! Bu dünya üzerinde kurulmaya çalışılan (aslında halihazırda kurulmuş da diyebiliriz), insanlara dikte ettirilen düzenin bir gereği. Kapitalist sistemin doğal bir sonucu. Bu sistemin dışında ürünler de var. Ne olduğunu söylemeyeceğim. Her yeni sürümü parayla satılmayan, buna rağmen her yeni sürümü muhteşem bir şevkle üretilen, dün aldığınız, bugün kullandığınız ve gelecekte satın alacağınız tüm bilgisayarlarınıza özgürce kurulabilen sistemler. Hayaliniz bu muydu? Bu hayal gerçek midir?

Günün birinde Apple Microsoft’u satın alırsa?
Ya Apple, dünya bilgisayarlarının %90′ında kullanıldığı iddia edilen Ms Office’i geliştirmeyi/desteklemeyi tercih etmez de iWork’u yaymaya kalkarsa…Ya xls, doc, ppt gibi formatları tarihin tozlu sayfalarına gömerse…Ya Microsoft Apple’ı satın alır da güzelim iPhone’ları çöpe dönüştürürse…Nasıl? Komik buldunuz değil mi? Yalnız değilsiniz. İlk otomobil için asla insanların tercih etmeyeceğini söylemişlerdi. Şimdi sokaklarda yürüyecek yer dahi yok. Ya ilk televizyon? Kimse bu kutuya bakmaz demişlerdi. Bugün toplumlar onunla yönetiliyor. Bundan 20 yıl önce Linux yoktu. 30 yıl önce Windows da yoktu. Komik ihtimaller o kadar komik görünmüyor değil mi? Bu ihtimallere hazır mısınız?

Bu ihtimallerden sizi koruyacak, bir kişi ya da zümreye değil de tüm insanlığa ait olan kavramlar, değerler var mı peki? Bilmiyorum. Gerçekten hak ettiğinizin bu olduğunu düşünüyorsanız yine başınızı kaldırın ve çevrenize bakın bakalım, orada bir yerlerde ne var?

Cevaplar yalnıza Linux’a mı çıkıyor?
Aslında tercihler işletim sistemleri arasında değil standartlar arasındadır. Zaten firmaların ürettikleri kimi ürünleri standart haline getirme çabası da bundandır. Hepsi işletim sistemi, ona uygun üretilmiş yazılımlar, ona uygun üretilmiş/seçilmiş donanımlar ve yine ona uygun üretilmiş standartlar/formatlardan oluşan bir paket koyarlar önümüze ve o pakedin en iyisi olduğunu iddia ederler. Oysa en iyisi, rakiplerin de her şeye sahip olduğu eşit bir dünyada, ortak standartlarda en iyi olabilendir. Bu cesarete sahip bir “en iyi” gördünüz mü etrafınızda? Durun durun söylemeyin! Başını kaldırıp, soru soran herkes görecektir nasılsa…

Yer yer üstü kapalı yer yer de alenen Linux propagandası mı yaptım acaba? Belki evet belki hayır. Aynı fikirde olmamız da olmamamız da ihtimal dahilinde. Belki buluşacak ortak noktalarımız çok azdır ama bir nokta hepimiz için ortaktır: Özgür olmalıyız, özgürlüğümüzü korumalıyız. Feodal düzenin 21. yüzyıldaki temsilcilerine mahkum olmamalıyız. Windows da kullanabiliriz, Mac OS da Linux da…Ama Windows’u da Mac OS’u da özgürlüğümüze saygı göstermeleri koşuluyla tercih etmeliyiz. Günün birinde onlar da onlar da size uyacaklar. Siz onlara uymaktan vazgeçmeye başladığınızda…”Ben bir Mac OS kullanıcısı olarak, ürettiğim çalışmanın, olası her sistemde kullanılabilen bir formatta oluşturulabilmesini ve dosyamı özgürce, açılıp açılmayacağı korkusunu yaşamadan paylaşabilmeyi, kullandığım işletim sisteminin, tüm diğer muadilleri tarafından da desteklenen ortak standartlara uymasını talep ediyorum” dediğinizde…

Silahınız Linux(*)! Linux, kimsenin tekeline alamayacağı açık standartların garantisidir. Diğer sistemlerin sahip oldukları körlüklerin aksine, alternatiflerle çok iyi anlaşır, kapalı olmalarına rağmen lisanslı formatlarını kolaylıkla tanır ve çözer. Diğer işletim sistemlerini terbiye etmek için kullanabileceğimiz yegane yoldur.

Belki astigmat olmam görüşümü engelliyor olabilir ama bu gözlükle dünyaya baktığımda, Linux’un en yalnız ve buna rağmen en iyi olduğu, kişisel görüşümdür. En iyi olmasının sebebi hızı, performansı, sürekli tartışılagelen, virüslerden arınmışlığı, görselliği değildir. Bunlar zaten Linux’un doğasında var olan avantajlarıdır. En iyi olmasının sebebi, seçme şansımızın olduğunu bize hatırlatması ve bunu ücretsiz yapmasıdır.

Bu birkaç dakikanızı, “düşüncelerime ortak olmak için harcama” özgürlüğünüzü kullandınız. Sırada “okuduklarınızı hemen unutma”, “acaba diyerek biraz düşünmeye başlama” ya da aklınıza gelebilecek yüzlerce seçim özgürlüğünden biri var. Tercih sizin. Kendi kendinize sorun.

“Özgür olmama” özgürlüğünü seçecek misiniz?

(*)Aslında doğru kavram Gnu’dur. Konuya yabancı okuyucuların kafa karışıklığı yaşamaması için Linux olarak ifade edilmiştir.

16
Nis

MyWebSql, phpMyAdmin gibi web tabanlı bir MySQL yönetim aracı. Veritabanı, tablo ve kayıt işlemleri basit arayüzü ile kolaylıkla yapılabilir. Kullanmaya başlamadan önce web sitesi üzerinden demosunu inceleyebilirsiniz. Kurulumu ise çok basit. (Apache Server ve MySQL’in yapılandırılmış olduğunu varsayarak) Şuradan sıkıştırılmış uygulama dosyalarını indirip, localhost içerisinde çıkartıyoruz. Daha sonra klasör adı ile tarayıcıdan http://localhost/klasoradi olarak çağırıyoruz. Kullanıcı adı ve parola alanlarına daha önce MySQL için oluşturduğumuz kullanıcı adı ve parolayı giriyoruz.

Açılan sayfada sol kısımdan sunucudaki veritabanlarına ulaşabilirsiniz. Sağ kısımda ise veritabanı içindeki tabloları görüp, düzenleyebilirsiniz. En basit hali ile üstteki Database menüsünden veritabanı oluşturup, dışarı aktarabilirsiniz. Object menüsünden tablo ve kayıt oluşturabilirsiniz. Information menüsünden sunucu ile bilgiler alabilir, Interface menüsünden ise arayüz ile ilgili değişiklikleri yapabilirsiniz.

Kod renklendirme desteği olan SQL editörü ile de istediğiniz işlemleri SQL sorgusu çalıştırarak yapabilirsiniz. Ayrıca History sekmesi ile de sunucuda yapılan eski işlemleri görebilirsiniz.

Bana göre MyWebSql şu anda phpMyAdmin’e rakip olacak kadar gelişmiş olmasa da alternatif olarak kullanılabilir bir uygulama. Uygulama arayüzü ve link yapısı phpMyAdmin’e göre daha düzenli. jQuery kullanılarak geliştirildiği için arayüzü kullanıcılara kolaylık sağlarken görsel açıdan da zengin bir kullanım ortamı sağlıyor.

MyWebSql Dökümanları: http://mywebsql.net/docs/
MyWebSql Demo: http://demo.mywebsql.net/
MyWebSql İndir: http://sourceforge.net/projects/mywebsql/files/

Share

8
Oca

Linux altında python ile güzel güzel çalışıyorum fakat windows altında işler böyle gitmiyor. En basit pyqt programı 2 mb tutuyor ve bunları düzenlemek vs bir çile. Bende eski dostum C#’a döndüm ama bir kere pythonun kolaylığına alışmıştım ve python kodlarını c#’ye uyarlamak beni zorladı. Biraz araştırmadan sonra Boo’yu buldum.

Şimdi Boo’dan bahsedeyim, logosu ismine yakışır bir logo açıkçası(Böö!). Boo nesneye yönelimli, python benzeri bir kodlama stiline sahip bir programlama dili.

Nasıl çalışır neye ihtiyaç duyar, hızlı mıdır bunlara bakmak gerekirse:  .Net veya Monoya ihtiyaç duymakta.(Dolayısıyla mono ile beraber linux altında da çalışabiliyor, ama windows altında .net kullanmak daha mantıklı olacaktır.) C# ile aynı hızda yani bir yavaşlık söz konusu değil. Scripleri için “.boo” uzantısını kullanıyor. Peki avantajları ne:

  • Öncelikle zengin .net kütüphanesini kullanabiliyorsunuz.
  • Python benzeri kodlama stili sayesinde “az kod, çok iş” .
  • İster script oluşturabilirsiniz isterseniz de çok kolay bir şekilde derleyip exe oluşturabilirsiniz.
  • Ayrıca bir şeyi ister “yazi as string = “değer” ” olarak tanımlayabileceğiniz gibi direk “yazi = “değer” ” diyebilirsiniz.

Nasıl Geliştirmeye Başlarım ?

Boo için çok güzel bir geliştirme ortamı olan SharpDevelop var. Sitesinden 3.2 veya 4. versiyonunu indirebilirsiniz. (4 henüz tam kararlı değil ben 3.2 kullanıyorum).  SharpDevelop’un Visual Studio’dan geri kalırbir tarafı yok hatta Boo’yu desteklemesiyle bir adım önde :) .

Bir Boo projesi oluşturmak için “Dosya->Yeni->Çözüm”  oradan Kategoriler altında Boo’yu seçip “Windows Uygulaması” yolunu takip edebilirsiniz.

SharpDevelop’u Boo için yapılandırmak isterseniz “Araçlar->Seçenekler->Genel->Görünüm”den “Tercih ettiğiniz ambiyansı seçiniz:”e “Boo”yu ayarlayın.

  • SharpDevelop Boo için şu özellikleri sunuyor:
  • Kod tamamlama.
  • Kod renklendirme.
  • C#, Python, VB:NET gibi dillerden Boo’ya kod çeviri veya tam tersi.
  • Veaklıma gelmeyenler.

SharpDevelop’da geliştirdiğiniz Boo projesini Visual Studioda ki gibi rahıtlıkla derleyebilirsiniz. Ayrıca SharDevelop Boo dili için gerekli olan birkaç dll dosyasını da exe dosyanızın yanına koyu veriyor. Yani Boo ile yaptığınız programı başka bir bilgisayarda çalışması için .Net haricinde hiç bir şeye ihtiyaç duymuyor.

Diğer geliştirme ortamları olarak ise Eclipse ve MonoDevelop bulunmakta. (Henüz tam anlamıyla deneyemedim.)

Peki Linux’da ?

Dediğim gibi Mono ile beraber linux altında  kullanılabiliyor. Geliştirme ortamı olarak ise Eclipse veya MonoDevelop kullanabilirsiniz(SharpDevelop .net odaklı olduğundan linux sürümü yok). Dağıtımınızın boo paketini ve MonoDevelop’u depodan kurarsanız her şey hazır(Pardusda her ikisi de depolarda bulunmakta). Ama birçok bağımlılığı nedeniyle mono linux altında pek tercih edilmiyor yani python veya başka bir dil biliyorsanız linuxda onunla devam edin derim. Ama mono ile yazılmış büyük projelerde yok değil, Banshee ve GNOME do bunlardan bazıları.

Boo’nun dezavantajı ise çok az sayıda kaynak bulunması. Ama ileride birçok  kaynağa sahip olacağından eminim :) .

İşinize yarayabilecek şeyler:

http://boo.codehaus.org/ – Boo’nun anasayfası

http://www.sharpdevelop.net/OpenSource/SD/Default.aspx – Sharpdevelop anasayfası

http://en.wikipedia.org/wiki/Boo_(programming_language) - Wikipedia’da Boo


22
Eyl

Evet uzun uğraşlar sonucunda yeni bir sürüm çıkarttım. Bundan sonraki sürüm için hedeflerim büyük o nedenle bundan sonra çıkacak sürüm biraz zaman alacak, bunun da haberini vermiş olayım :)

Yeni Eklenenler:
Uygulama ikonların program adının yanında gözüküyor
Derin tarama
Ayarlar penceresi
Pisi paketi

Düzeltilenler:
Tr karakter hatası düzeldi
Hepsini seç butonu çalışıyor artık

Bilinen hatalar:
“Ayarlar->Bilgisayar ile beraber aç” çalışmıyor.

Yeni sürüm planlarım:
Daha güzel bir arayüz. (Tema tarzı bir şeyde olabilir, ne kadar gerekli bilmiyorum )
Eklenti desteği. (Sadece dosya tarama dışında eklentilerle beraber ince ayar vs yapabilme)
Sistem çekmecesine yerleşen bir ikon(İsterseniz arkaplanda zamanlı temizlikde yapabilir)

Proje sayfası: https://sourceforge.net/projects/temizlikci/

Pisi paketi ve kaynak kodlar: https://sourceforge.net/projects/temizlikci/files/

Notlar: Programı ilk açtığınızda birkaç dosya oluşturmak için root şifrenizi isteyecektir, bunu girip devam edebilirsiniz. Bir daha istemiyecektir. Pisi paketini yükleyenler alt + f2 “temizlikci” diyerek programı açabilir veya menüden “Uygulamalar->Yardımcı Programlar” altında bulabilir.

Ekran görüntüleri:

Özgürlük için forum başlığı (daha fazla keps var :) ) http://www.ozgurlukicin.com/forum/gonullu-calismalar/17499/


3
Eyl

Sonunda ilk sürümü çıkarttım, şuradan dosyayı indirebilir şuradan da proje sayfasına gidebilirsiniz.

Ekran Görüntüsü:

Bilinen Hatalar:

  • Türkçe karakterler düzgün gözükmüyor(nedenini daha bulamadım) o nedenle dosyaları Türkçe karakter kullanmadan hazırladım dosyalarını.
  • “Hepsini Seç” düğmesi düzgün çalışmıyor.

Kullanımı:

Şu an için bir yükleme dosyası yok çünkü henüz kararlı değil. İndirdiğiniz dosyayı bir dizine çıkarttıktan sonra dizin içindeki “temizlikci” dosyasına çift tıklayarak kullanabilirsiniz. Eğer KWrite gibi bir düzeneyici ile açılırsa:

  1. Bu düzenleyiciyi kapatın,
  2. Dosyaya sağ tıklayıp özellikler’i seçin.
  3. İzinler sekmesinde “Çalıştırılabilir” seçeneğini işaretleyin.
  4. Tamam tuşuna basın.
  5. Şimdi çift tıklayın…

Yorumlarınızı eksik etmeyin. Ayrıca ilk defa python ile bir proje geliştiriyorum. Eksiklerimi söylerseniz sevinirim.


31
Ağu

Bende pyqt’ye başladım ve not defteri gibi basit bir şey üzerinde çalışmayı sevmeyen birisiyim. Bu nedenle bir ide arayşına girdim aralarında en iyi bulduğum eclipse oldu. Tabii eclipse tek başına yetmiyor. Birde pyDev eklentisini yükleyince tadından yenmez oldu.

Öncelikle paket yöneticisinden “eclipse-binary” ve “eclipse-pydev” paketlerini yüklüyoruz. Sonrasında eclipseyi açıp “Window->Preferences” yolunu takip ediyoruz. Şöyle bir ekran geliyor:

Bu pencereden soldaki “PyDev->Interpreter – Python” yoluna giriyoruz. Çıkan yerde “Auto Config” tuşuna basıyoruz sonrasında gelen penceredeki “/usr/lib/pardus”daki tiki kaldırıp onaylıyoruz.

Sonrasında aşağıdaki sekmelerden “Forced Builtins” sekmesine geçiyoruz, “New” diyoruz ve  çıkan pencereye “PyQt4″ yazıp onaylıyoruz(tırnaksız!). Sonrasında ok diyiyoruz eclipse yeniden başlatılıyor.

PyDev projesi oluşturmak için ise “File->New->PyDev Project” demeniz yeterli.

Bir iki şey ekleyecek olursam hiç bir ide’de bulunmayan pyqt kod tamalamasını sunuyor. Tabii biraz eksiği var örneğin:

self.[Kod tamamlaması yapılıyor]treeWidget.[Kod tamamlaması yapılıyor]topLevelItem(1).[Burada kod tamamlaması yok]

Çok da büyük bir eksik değil zaten. Kod renklendirmesi de iyi kendiniz bu renkleri ayarlayabiliyorsunuz…


30
Ağu

Şurada yazdığım Temizlikçi projesinde sona yaklaştım. Şu an için işler iyi gidiyor, beni 2 gündür oyalayan bir hatayı çözmüş bulunuyorum. “if” deyiminden sonra parantez açmayı unutmuşum doğal olarak sadece ilk satır dikkate alınmış ve dier kodlar hata vermişti, paranteze bakmak da hiç aklıma gelmemişti, neyse ki çözüldü.

Yeni özellikler ekledim şöyle ki; artık bir dosya oluşturup bunu da programa gösterip program desteği ekleyebileceksiniz. Örnek dosya:

[Genel]

Ad=Gimp

Tanım=Grafik Programı

[Seçenekler]

Gereksiz Dosyalar =.gimp-2.6/tmp, *.*   ; Burası yorum satırı, “*.*” ifadesi o klasördeki bütün dosyaların silinmesi demek. “*.tmp” olsaydı sadece tmp dosyaları silinirdi.

Diğer Seçenek=.gimp-2.6/gereksiz dosya.uzantı ;burada tek bir dosyayı silmek için gönderdik.

Birde not düşeyim, buradaki dizinler home dizininde bulunuyor. Zaten bütün uyulamalar gereksiz dosyalarını burada saklıyor. Yani buradaki gimp klasörü aslında şurada: “/home/kullanıcı/.gimp-2.6″ ama bu “/home/kullanıcı” bölümünü yazmanıza gerek yok.

Şimdilik böyle yakın zamanda ilk versiyonu çıkaracağım.  Fikirlerinizide buraya yazabilirsiniz.


18
Ağu

Sweeper’ın yetersiz olduğunu düşününce içimden böyle bir program yapmak geldi. İlk versiyon için basit bir arayüz tasarladım. Arayüz şu an için böyle:

Desteklerdiği programlar resimdede görüldüğü gibi: Firefox, Opera, Amsn, LimeWire, JDownloader, Adobe-Flash ve Acrobat,  Playonlinux,  gimp,  wine.

Desteklemesini istediğiniz başka bir program varsa buraya yada şuraya yazabilirsiniz.Proje sayfası için de şuradan.

Yeni Arayüz:


16
Ağu

Bir yazı dizisine başlıyorum :) .  Bu yazıda hazırlık aşamalarını nelerin kurulacağını, neyin ne olduğunu göreceğiz. Hadi başlayalım.En baştan başlayarak hızlıca ilerleyelim.

Qt nedir? Qt, platformlar arası bir uygulama geliştirme sistemidir.Çoğunlukla gui’si olan programlar için kullanılır fakat konsol uygulamalarıda geliştirmeniz mümkün. Qt c++ kullanır fakat diğer dilleride kullanmanız mümkün.(Python, rubby vs.) Qt platformdan bağımsızdır. Windows, Linux, Mac vs. hepsinde kullanabilirsiniz. Bu kadar bilgi yeter. Şimdi ana meseleye geçelim.

Bu yazıda “qt creator” üzerinde duracağım. Qt creator ile nasıl c++ uygulamaları geliştireceğinizi anlatacağım. Öncelikle şu adrese gidip kendiniz için uygun olanı indiriyorsunuz, tabii biz Pardus kullandığımız için şunu indiriyoruz.İndikten sonra indiği klasöre girip uçbirimi açıyoruz ve

chmod u+x qt-sdk-linux-x86-opensource-2010.04.bin
./qt-sdk-linux-x86-opensource-2010.04.bin

diyip kurulumu başlatıyoruz ve gerekli adımları takip ettikten sonra kurulum bitiyor. Eğer isterseniz paket yöneticisinden “qt-demos”(örnek uygulamalar içerir) ve “qt-doc”u(belgeler vs. içerir) kurabilirsiniz. Bu belgeler çok işinize yarayacaktır. Sonrasında qt creator’ü çalıştırıyoruz.

Kullanıcı dostu bir arayüze sahip. Kullanımı da gayet basit. Ve ilk ugulamamıza geçelim.Bizim ilk uygulamamız biraz farklı olacak. Qt creator’den File->New File or Project->Qt c++ Project->Qt GUI App. diyoruz.

Projenin nereye kaydedileceğini ayarladıktan sonra ileri diyoruz ve bitiriyoruz. Bizi ana form’un tasarım sayfasına gönderiyor. Soldaki menüden isteklerinizi seçip koyabilirsiniz. CTRL + R kombinasyonu ile de uygulamanızı çalıştırabilirsiniz.

Sol taraftaki “Edit” bölümüne geliyoruz. Burada bir proje ağacı var, projenin içindeki dosyaları vs. her şeyi görebilirsiniz. Proje dosyasını inceleyecek olursak uzantısı “.pro”dur. İçinde formlar, başlık dosyaları ve kaynak dosyalarını belirtir, işletim sistemine göre derleme türünü vs ayarlayada bilirsiniz.

Proje ağacından main.cpp’ye girerseniz şunun gibi bir şey ile karşılaşacaksınız.

#include <QtGui/QApplication>
#include “mainwindow.h”

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();

return a.exec();
}

#include <QtGui/QApplication> ile gerekli modülü dahil ettik. #include “mainwindow.h” mainwindow.h dosyasını main.cpp’ye dahil ettik. “MainWindow w;” komutu ile mainwindow’u w olarak tanımladık ve w.show() ile formumuzu gösterttik. app.exec(); ile her şeyi Qt’ye devrettik…

Bu kodları yazmak zorunda değiliz tabii qt creator bizim için her şeyi ayarlıyor. Bu yazıda sadece bir giriş yaptık, gelecek yazılarda basit bir uygulama yapacağız ve sinyal slot kavramını ele alacağız. Olaylar ve olayları yakalamaya bakacağız. Bir sonraki yazıda buluşmak üzere. :)

mod u+x qt-sdk-linux-x86-opensource-2010.04.bin

14
Ağu

Pardus için geliştirmekte olduğum bir basit, hızlı bir web tarayıcısı. Proje sayfasına şuradan, ekran görüntülerine buradan ulaşabilirsiniz.

Birde not düşeyim hızlı dedik ya; Pars ile 7 sekme açıkken ram kullanımı 70 mb civarı, aynı sekmeler ile firefox 100 mb civarı opera ise 300 mb ( :o ) ram kullanıyor :)

Pardus için geliştiriyorum ama belki windows’a uyarlarım çünkü bütün arkadaşlar windows kullanıyor :( Bu arada yakında karşınıza yeni projeler ile çıkacağım bunu da belirteyim dedim :)


29
May
Bütün programcılar yazdıkları kodun iyi olmasını ister ancak iyinin neye karşılık geldiğini bulmak zordur genelde. Bu noktada günlük hayattan aldığımız birtakım dersler vardır aklımızda kalan.

Örneğin yazdığımız kodda mümkün olduğunca az hata çıksın isteriz, eğer hata çıkarsa da en kısa zamanda bizim veya başka bir programcının hatayı çözebilmesini isteriz, ürünümüzde bir değişiklik yapacaksak bunu ürünümüzün diğer bileşenlerini mümkün olduğunca az etkilemesiniz isteriz.

Bütün bunlar kurumsal dilde, yazdığımız kodun hatasız, esnek, kararlı, anlaşılır, düşük bakım maliyetine sahip olması demektir. Ancak normal şartlarda bunları ancak yazdığımız kod ürün haline gelip piyasaya çıktığında görebiliyoruz.

İşte tam bu noktada yazılım metrikleri devreye giriyor. Geliştirme esnasında sürekli ölçüm ve iteratif düzeltmeler ile yazılım metriklerini geliştirme sürecinin bir parçası haline getirdiğimizde tasarım ve geliştirme sırasında bize ileride daha büyük maliyetler getirecek pek çok hatadan kurtuluyoruz.

Yazılım mühendisliği ve yazılım kalitesinin ölçümü başlığı altında pek çok kod ölçüm metodu bulunuyor. Bunların hepsini uygulamak pratik olarak çok olası değil, öyleyse bizde piyasada en çok kullanılan metrikleri dikkate alarak bir orta yol bulabiliriz.

Koda dayalı ölçümler


1- Code Coverage
     Yazılan testlerin kodun ne kadarını kapsadığını ölçer. Code coverage için %80 gibi bir oran oldukça iyi görünse de aslında az sayıda basit test yazarak dahi bu orana ulaşılabildiği gözlemlendiği için hedeflenen oranın %100 olması önerilir. (Oran hakkında detaylı bilgi için [1] )

2- Cohesion
    Bu ölçüm sınıfın sorumlu olduğu işlerin kendi içindeki uyumluluğunu ölçer. Her sınıfın tek bir sorumluluğu olmalıdır. [3] [4]. Uyumluluk LCOM (Lack of Cohesion in Methods) adı verilen ölçüt ile bulunur. Değişik türleri bulunan LCOM sınıfta yer alan alanlara metodların ortak erişim sayısını temel alan bir ölçümdür. LCOM3 için bu değer 0 ile 2 arasında değişir ve 1'in üzerindeyse sınıf bölünmelidir. [5]

3- Coupling
    Bir nesnenin diğeri ile etkileşime girmesine denir. Program içerinde mutlaka etkileşim olacaktır, ancak bu ilişkinin nesnelerin implementasyon detaylarından mümkün olduğunca bağımsız olması istenir. Farklı ilişki türleri üzerinden ölçülebilir. En çok kullanılanlardan birisi CBO'dur.
Coupling Between Objects (CBO): Miras alınan sınıflar hariç, sınıfın çalışmak için ihtiyaç duyduğu sınıf sayısıdır. (kısaca importları say :)) Kütüphanelerde bu sayı yüksek olabilir ancak çalıştırılabilir sınıflarda 6 ile 10 arası makul kabul edilebir. [6][9]

4- Cyclomatic Complexity
    Bir metodun içerisinde yer alan karar noktalarının (if, else vb.) sayısıdır. Kabul edilen eşik değer 10'dur.[6] [7] Bunun yanı sıra Essential Complexty denilen bir metrik daha mevcuttur ancak Cyclomatic Complexity'nin daha etkili bir metrik olduğu belirtilmektedir.  [8]

5-  Cyclomatic Density
     Koddaki karar noktalarının toplam çalıştırılabilir koda oranıdır. 0.14 ile 0.42 arasındaki değerler için kodun basit ve anlaşılabilir olduğu kabul edilir.[6]

6- Response For Class (RFC)
    Bir sınıfta yazılan ve çağırılan toplam metotların sayısıdır. Bu değer yükseldikçe kodun bakımı zorlaşır. Önerilen eşik değer 55 dir. [9]

7- Weighted Methods for Class (WMC)
    Bir sınıfta yazılan toplam metot sayısıdır. Eşik değeri olarak 6 ile 33 arasında değişik rakamlar önerilmektedir. Ancak Cohesion değeri WMC'ye kıyasla daha önemlidir. [6] [9]

8-  Class Hierarchy Level veya Depth of Inheritance Tree (DIT)
     Miras ilişkisinde sınıfın üzerinde kaç tane atası olduğunu gösterir. 6'nın üzerinde ise test edilebilirliği çok düşük olduğunu, 2 nin altında ise OO ilkerinin fazla kullanılmadığına işaret eder. Uygulamanın genelinde 2 ve 3 düzeyinde olması hedeflenmelidir. [6]

9-  Number of Methods in Class (NOM)
     İdeal değerler 6 ile 20 arasında değişse de 40'ın üzerinde sınıf kesinlikle bölünmelidir. [6] Ancak tek başına bir gösterge olmaktan çok LCOM ile birlikte değerlendirilmelidir.

10- Specialization Index (SIX)
      Kod karmaşıklığını ve bakım maliyetlerini arttırmasından dolayı overload edilmiş fonksiyon sayısının mümkün olduğunca az olması istenir. Bundan dolayı SIX = (Overload Edilmiş Metot Sayısı * DIT) / NOM şeklinde hesaplanır. 1.2 (veya %120)'ye kadar normal kabul edilir.

* Bunların dışındaki ölçülerden metot başına düşen satır sayısının 7-9 arasında olması tavsiye edilse de Cyclomatic Complexty'nin bundan daha önemli olduğu belirtilmektedir. ([2])

Dizayna dayalı ölçümler [11]

1- Afferent Couplings (Ca)
İncelenen paketin dışında yer aldığı halde söz konusu pakete bağımlı paketlerin sayısıdır. Paketin değişmesi halinde etkilenecek paket sayısını gösterir. Bunu paketin sorumluluğun ölçüsü olarak da düşünebiliriz.

2- Efferent Couplings (Ce)
İncelenen paketin kendi dışında kaç tane pakete bağımlı olduğunu gösterir. Paketin yeniden kullanılabilirliğinin ölçüsüdür.

3- Abstractness (A)
İncelenen pakette yer alan soyut sınıfların ve arayüzlerin sayısının paketteki toplam sınıf sayısına oranıdır. 0 ile 1 arasında değişen bu oran 1'e yaklaştıkça paketin esnekliği artar.

4- Instability (I)
I = Ce / (Ce + Ca) şeklinde hesaplanır. 0 ile 1 arasında değişen bu oran 1'e yaklaştıkça paketin kararlılığı azalır. (Yani paketin değişimi sistemdeki başka pek çok paket üzerinde değişiklik yapmayı gerektirir.)

Devam etmeden küçük bir not girelim araya. Karalılık genelde iyi yönde yorumlansa da bir paketin tamamen kararlı olması demek paketin değiştirilebilirliğinin de minimum düzeyde olması anlamına gelir. Bu durumda hangi paketlerin esnek hangi paketlerin daha az esnek ama kararlı yapıda olmasını istediğimizi sorgulamalıyız. Bu konuda cevabı bize "Open/Closed Principle" veriyor. Buna göre yazılımı oluşturan birimler geliştirilmeye açık ancak değiştirilmeye kapalı olmalıdır. Bu noktada hangi tür sınıflar geliştirilmeye açık diye bakarsak soyut sınıfları ve arayüzleri görürüz.

Sonuca bakarsak; Abstractness = 1 ve Instability = 0 olduğu durumda hem kararlı hem de değiştirilebilir paketleri buluruz. Aynı biçimde Abstractness = 0 ve Instability = 1 olduğu durumda ise kararsız ancak değişime kapalı (ve böylece başka paketlerin değişimini gerektirmeyecek) durumdaki paketleri buluruz.

Ancak incelediğimiz paketler her zaman bu iki ideal durumdan birinde olmazlar. Bu durumda bu iki değerin dengede olması yani ;(A,I) = (1,0) dan (0,1) e gittikçe aynı miktarda değişmesi tasarımımız için optimal çözüm olarak görülebilir. Bunu grafiksel olarak ifade edersek;


Main Sequence denilen bu çizgi üzerinde yer alan bütün noktaları ideal noktalar kabul ettiğimize göre bunların dışında elde ettiğimiz değerleri bu çizgiye olan uzaklıklarına göre değerlendirebiliriz. Tasarım veya yeniden yapılandırma sırasındaki amacımız paketlerimizin bu çizgi üzerinde ve çizgiye en yakın durumda olmasıdır.

5- Distance from the Main Sequence (D)
D = |A+I-1| ile hesaplanır ve 0 ile 1 arasında değişir. 0 olması analiz edilen pakete ait değerin Main Sequence çizgisinin üzerinde olması demektir.

Bunların yanı sıra kod tekrar sayısı ile dizayn ve kod izlenebilirliği de dikkate alınması gereken unsurlardır. Kod tekrarı için bütün proje içerisinde kod tekrarı yapılan bölümler tesbit edilerek uygun biçimde (ortak sınıflar, soyut sınıflar, arayüzler) yeniden tasarlanmalıdır. Dizayn ve Kod izlenebilirliği ise (Tasarım belgelerinde yer alan birimlerin, uygulamadaki birimlere (sınıf,modül vb.) oranı) de yazılımın kalitesini belirleyenbir unsur olarak görülebilir.

[1] http://codebetter.com/blogs/patricksmacchia/archive/2009/06/07/high-test-coverage-ratio-is-a-good-thing-anyway.aspx

[2] http://stackoverflow.com/questions/312642/how-many-classes-per-package-methods-per-class-lines-per-method

[3] http://www.cihataltuntas.com/?p=111

[4] http://en.wikipedia.org/wiki/Single_responsibility_principle

[5] http://javaboutique.internet.com/tutorials/coupcoh/

[6] http://www.mccabe.com/pdf/McCabeCodeQualityMetrics-OutsourcedDev.pdf

[7] http://javaboutique.internet.com/tutorials/metrics/

[8] http://www.nasa.gov/centers/ivv/ppt/172536main_Mike_Chapman_The_Relationship_of_Cyclomatic_Complexity_Essential_Complexity_and_Error_Rates.ppt

[9] http://www.issre2009.org/archive/2006_supplemental/student_papers/An_Investigation_of_CK_Metrics_Thresholds.pdf

[10] http://support.objecteering.com/objecteering6.1/help/us/metrics/metrics_in_detail/specialization_index.htm

[11] http://www.objectmentor.com/resources/articles/oodmetrc.pdf


16
Mar

TBD Genç Ankara ve Bilkent IEEE organizasyonunda TÜBİTAK/UEKAE desteğiyle, bu sene ikincisi Bilkent Üniversitesi’nde düzenlenen “2. Pardus Tanıtım ve Geliştirme Günleri”ne davetlisiniz.

TÜBİTAK’ın geliştirdiği Linux tabanlı milli işletim sistemimiz Pardus’un detaylı incelemesinin yapılacağı, nasıl Pardus geliştiricisi olunacağı, Çanakkale Onsekiz Mart Üniversitesi öğrencileri tarafından geliştirilen 64-bit Pardus’un öyküsü, Açık Kaynak-Özgür Yazılım Felsefesi ile ilgili Panel, Pardus kullanıcı toplulukları tanıtımları gibi konularda oturumların düzenleneceği bu büyük etkinliğe sizleri davet etmekten onur duyarız.

Etkinlik, Bilkent Üniversitesi Mithat Çoruh Amfi’de 23-24 Mart 2010 tarihleri arasında düzenlenecektir.

Resmi Pardus ekibinden, akademisyenlerden, firma sahiplerinden bir çok konuşmacının bulunacağı bu etkinliğimize açık kaynaklı yazılım, Linux sistemler ve Pardus gibi konulara meraklı herkesi bekliyoruz.

*** ÖNEMLİ: Etkinliğe kesin gelmeyi düşünüyorsanız sitemizden online kayıt yaptırmanız gerekmektedir. Gelmeyi düşünmüyorsanız lütfen kayıt yaptırmayınız. Hassasiyetiniz için teşekkürler.

Etkinlik sırasında ikramlar olacaktır, promosyonlar dağıtacaktır. İki gündeki toplam 8 etkinlikten dördüne katılan katılımcılara “katılım belgesi” verilecektir.

Etkinlik sitesi: http://2010.pardusgunleri.org/
Etkinlik programı: http://2010.pardusgunleri.org/program
Ulaşım: http://2010.pardusgunleri.org/ulasim
Kayıt: http://2010.pardusgunleri.org/kayit

Share and Enjoy: Twitter Facebook FriendFeed Tumblr Google Bookmarks del.icio.us LinkedIn email Identi.ca MySpace StumbleUpon Technorati Posterous RSS Reddit Digg Yahoo! Buzz Yahoo! Bookmarks blogmarks Suggest to Techmeme via Twitter Netvibes Live

6
Mar
Beta sürümünün çıkmasından epeyce sonra nihayet kararlı sürümüne geçiş yapabildik Kontrolcu'nun. Beta ile kararlı sürüm arasında ne fark var acaba diye şöyle bir bakalım.

  • Yeni bir logo hazırlandı.
  • Windows ortamındaki dil problemi çözüldü.
  • Kaynak koddan kurulum betiği windows ve mac'te de çalışacak şekle düzenlendi.
  • Windows için tut-çek-bırak özelliği pasif hale getirildi(Siliyormuş dosyayı hiç denemedim :D).
  • Dil dosyaları güncellendi(Çevirmenlerimize teşekkür ediyoruz).
  • İngilizce bir kullanma kılavuzu hazırlandı(Türkçesini de bir ara hazırlarız. Hazırlamak isteyen olursa da yok demeyiz :D).

İşte bu yenilikleri(!) getiriyor kararlı sürüm. Kararlı sürümün bir resmini de koyalım.



Resimde de gördüğünüz gibi arayüzde sadece simge değişikliği var. Yeni simgemizi hazırlayan Cemalettin Kara'ya çok teşekkür ediyoruz. Windows kullananlar için biraz daha fazlası var aslında. Örneğin türkçe olarak kullanabilecekler artık :D

Windows'ta kurmaya gerek yok. Windows için olan arşivi indirin ve açın. İçindeki kontrolcu.exe'yi açın ve kullanın :D

Pardus'ta kurmak içinse şimdilik benim hazırladığım inşa dosyalarını kullanabilirsiniz. Konsolu açın ve sırası ile komutları verin.

sudo pisi build http://kontrolcu.googlecode.com/svn/packages/linux/pisi/pspec.xml

sudo pisi it kontrolcu*.pisi


Bu komutları girdikten sonra kontrolcu pardus'unuza kurulmuş olacaktır. Menüden kontrolcu'ya ulaşabileceğiniz gibi konsoldan da kullanabilirsiniz. Deyince aklıma geldi! Sanırım konsol kullanım belgesini yazmayı yine unuttuk. Neyse zamanla onu da yazarız :D

Ha birde mac için kurulum dosyası falan var ama benim mac'im yok o konuda birşey diyemiyorum.

Bütün indirme dosyalarına buradan ulaşabilirsiniz

Beta sürümünün çıkmasından epeyce sonra nihayet kararlı sürümüne geçiş yapabildik Kontrolcu‘nun. Beta ile kararlı sürüm arasında ne fark var acaba diye şöyle bir bakalım.

  • Yeni bir logo hazırlandı.
  • Windows ortamındaki dil problemi çözüldü.
  • Kaynak koddan kurulum betiği windows ve mac’te de çalışacak şekle düzenlendi.
  • Windows için tut-çek-bırak özelliği pasif hale getirildi(Siliyormuş dosyayı hiç denemedim :D ).
  • Dil dosyaları güncellendi(Çevirmenlerimize teşekkür ediyoruz).
  • İngilizce bir kullanma kılavuzu hazırlandı(Türkçesini de bir ara hazırlarız. Hazırlamak isteyen olursa da yok demeyiz :D ).

İşte bu yenilikleri(!) getiriyor kararlı sürüm. Kararlı sürümün bir resmini de koyalım.

Resimde de gördüğünüz gibi arayüzde sadece simge değişikliği var. Yeni simgemizi hazırlayan Cemalettin Kara‘ya çok teşekkür ediyoruz. Windows kullananlar için biraz daha fazlası var aslında. Örneğin türkçe olarak kullanabilecekler artık :D

Windows’ta kurmaya gerek yok. Windows için olan arşivi indirin ve açın. İçindeki kontrolcu.exe’yi açın ve kullanın :D

Pardus’ta kurmak içinse şimdilik benim hazırladığım inşa dosyalarını kullanabilirsiniz. Konsolu açın ve sırası ile komutları verin.

sudo pisi build http://kontrolcu.googlecode.com/svn/packages/linux/pisi/pspec.xml

sudo pisi it kontrolcu*.pisi

Bu komutları girdikten sonra kontrolcu pardus’unuza kurulmuş olacaktır. Menüden kontrolcu’ya ulaşabileceğiniz gibi konsoldan da kullanabilirsiniz. Deyince aklıma geldi! Sanırım konsol kullanım belgesini yazmayı yine unuttuk. Neyse zamanla onu da yazarız :D

Ha birde mac için kurulum dosyası falan var ama benim mac’im yok o konuda birşey diyemiyorum.

Bütün indirme dosyalarına buradan ulaşabilirsiniz

25
Ağu

xkcd’de geçen gün yayınlanan bu teknik destek kopya kağıdını pek beğendim ve Türkçe bir sürümünü yapayım dedim.

teknikdestek
İsteyenler için ODF hali de burada