Sayfalar

21 Temmuz 2010 Çarşamba

Checkstyle Plug-in - Kodunuza Ayar Çekin!

CMMI, Yetenekte Olgunluk Modeli Entegrasyonu anlamına gelen "Capability Maturity Model Integration" teriminin başharflerinden oluşan bir kısaltmadır. CMMI, çok geniş bir alana yayılmış organizasyon faaliyetlerindeki süreçleri daha iyiye götürüp geliştirmeye yönelik yöntemler içerir. Ağırlık verdiği alanlar Mühendislik, Geliştirme, Edinim ve Hizmetler'dir. Carnegie Mellon Üniversitesi'ne bağlı Yazılım Mühendisliği Enstitüsü (SEI) tarafından geliştirilen, kabul ettirilen ve sürekli olarak yenilenen CMMI için Savunmada İleri Araştırma Projeleri Kuruluşu (DARPA) maddi kaynak sağlar. (kaynak:http://www.itgonline.com/Languages/tr/faq.html)

Eğer sizin sahibi olduğunuz şirketiniz veya çalıştığınız şirket CMMI standardlarını sağlamayı amaçlıyorsa, bilin ki geliştirdiğiniz projelerin kodlarının belli bir standarda göre yazılmış olması gerekmektedir. Metodların private, public, static olmasına göre sıralanmaları, class, paket,interface isimlendirmeleri, yorumlar gibi birtakım standardlardan oluşur bahsettiğim zımbırtı. Belki bu standardlardan çoğunun gerekliliğini tartışırım ama bu iş böyle yürüyor demekki:)

Her neyse, diyelimki böyle bir zorunluluğunuzda yok ama kodunuzu belirlediğiniz bir standarda göre yazmak istiyorusunuz ve buna uymayan yerleri görmek istiyorsunuz. Ben ilk bahsettiğim nedenden dolayı bu işi çözmek için araştırdım ve Eclipse'in checkstyle plug-ininin işimi görebileceğini düşündüm.

Kendi sayfasından da ayrıntılı bilgiye ulaşabileceğiniz plug-in imiz ihtiyaç duyanlar için kullanışlı. Plug-ini yüklemek için 2 yol var. Birincisi http://sourceforge.net/projects/eclipse-cs/ sitesinden plug-ini indirip sıkıştırılmış dosyadan çıkarıyoruz. Çıkardığımız dosyayı eclipse klasörünün içindeki "plugins" dosyasına kopyalıyoruz. Bu işlemi yaptıktan sonra Eclipse mizi yeniden başlatmamız gerekecek. Eclipse i tekrar başlattıktan sonra plug-inin kontrolü için Eclipse araç çubuğundan windows->preferences'e gidip soldaki kutuda Checkstyle'ı görüyorsak yükleme başarıyla gerçekleşmiştir.

Diğer yol ise şu şekilde; yine Eclipse'in araç çubuğundan help->install new software'a gidip "type or select a site" yazan kısma http://eclipse-cs.sourceforge.net/update linkini yapıştırıyoruz.
Program, verdiğimiz linkten plug-inimizi bulunca yanındaki minik kutuya tik atıp "next" diyoruz. Daha sonra yine install ve next tıklamalarıyla Eclipse plug-ini yüklüyor.
Plug-in yüklendikten sonra ilk seçenekte olduğu gibi Eclipse'i baştan başlatıyoruz. Kod yazdığımız kısmda sağ tıklayıp "Check->Check Code With Checkstyle" diyerek kodumuzu checkstyle'ın default standartlarına göre değerlendirebiliriz. Resimde de görüldüğü üzere standara uymayan satırlar sarı boyalı ve her sarı satırın en solunda büyüteç resmi var. Büyüteçin üzerine geldiğiniz zaman nerede yanlış yaptığınızı görebilirsiniz.


Eğer checkstyle ile gelen default standardları değiştirmek istiyorsak Eclipse klasörümüzde plugins'in altında checkstyle'ın bulunduğu dosyadaki "sun_checks.xml" dosyasını notpad veya notpad++ gibi bir metin editöründe açıp düzenlemeniz gerekecek. Hatta bu dosyaya hiç bulaşmadan kendi standartlarınızı ayrı bir xml dosyasında oluşturabilirsiniz.


sun_checks.xml dosyasını açtığınız zaman hemen hemen her satırda göreceğiniz modül dediğimiz şeyi karşılayan şeklinde taglar istediğiniz modüllerin taglarıyla değiştirilerek düzenlenebilir. Mesela kendi bilgisyarımda Eclipse'in bulunduğu klasöre gelip plugins->com.atlassw.tools.eclipse.checkstyle_4.4.3 altındaki "sun_checks.xml" dosyasını açtım ve tagını gördüm. Bu tag, kodu checkstyle ile check ettiğim zaman 150 satırdan fazla olan metodların tespit edilip uyarı verilmesini sağlıyor. Eğer bu özelliği kullanmak istemiyorsanız veya yerine başka bir modül kullanmak istiyorsanız http://checkstyle.sourceforge.net/availablechecks.html adresinden modül bilgilerini öğrenip, gerektiği şekilde kullanabilirsiniz. MetodLength modülünü kullanmak istiyor fakat satır sayısını değiştirmek istiyorsanız
şeklinde modüllerin özelliklerini(property) değiştirebilirsiniz. Yine kullanmak istediğiniz diğer modüllerin isimlerinde bu şekilde taglayarak kullanabilirsiniz.

12 Temmuz 2010 Pazartesi

Ankara'da 10 Gün

2 Temmuz Cuma günü geldim Ankara'ya ve bugün Ankara'daki 11.günüm. Hızlı, yorucu, tempolu bir 10 gün geçti. Ankara'ya yabancılık, staja başlama ve uyum evresi, kurs, kalacak yer derken sanki 10 gün sürekli koşturmuşum gibi hissediyorum kendimi.

Haftanın 7 günü sabah erkenden kalkıyorum ve akşam dönüyorum. Yorucu bir tempo. Allah'tan Ankara trafiği İstanbuldaki gibi değilde trafikte gereksiz zaman kaybetmiyorum. Şehir içi metro da ulaşım için diğer bir kolaylık.

Trafik yoğunluğu çok fazla değil ama Ankara'nın da ulaşımı pahalı. Özellikle öğrenci için. Zaten ilk darbeyi oradan yedim. İnsan ilk önce farkedemiyor farkı ama bankamatiğe gidip para çekme periyodum arttı burada.

Dikkatimi çeken diğer bir noktaysa muhatap olduğum kadarıyla esnaf ve özellikle öğrencilerin "hocam" kelimesini çok kullanması.

Yemek masrafı konusunda pek fazla fark yok ama İstanbul'dan daha pahalı değil. Uygun yerler var.

Hafta içi 5 gün ODTÜ Teknokent'teyim. Güzel bir staj ortamı var. Ayrıca ilerde Teknokentlerle alakalı bir yazı da yazmak istiyorum.

İstanbul'da olmayan olimpik buz pistinin burada olmasına sevindim. Hatta pist Türkiye'deki ilk olimpik buz pistiymiş.

Şu ana kadar çok fazla gezme şansım olmadı ama zamanla daha fazla gezip, öğrenmeye çalışacağım kedi logolu Ankara'yı. Şehir içi ulaşım pahalı olduğu için Melih Gökçek'e biraz kızdım ama Büyükşehir Belediyesi ve Melih Gökçek'le alakalı görüş belirtmek için henüz erken olduğunu düşünüyorum.

Sonuç olarak şunu söyleyebilirim; her yerde mutlu olmak için yeterli sebep mutlaka var ancak olay bu sebepleri farkedip değerlendirmekte bitiyor sanırım.

Şimdilik Ankara izlenimlerim böyle. Umarım 2 ay sonra daha iyi yorumlar yaparım ve buradan mutlu ayrılırım.

6 Temmuz 2010 Salı

Yaz stajı - Building wiki

Dönem biter bitmez İstanbul'da yapmayı planladığım stajımı görüştüğüm şirkete özrümü ileterek iptal etmek zorunda kaldım ve Ankara'daki kursum nedeniyle alelacele Ankara'da stajyeri aramaya başladım. Stajyer alımının çoğu şirket için bittiği zor bir dönemde LST firmasıyla görüştüm ve staj için kabul edildim. Umarım Ankara'ya gelme tercihim benim için hata olmaz ve yaz sonunda kafamı taşlara çok vurmamış olurum.

Bugün itibariyle stajımda 3. günü geride bıraktım ve üzerinde uğraştığımız konu ise şirket içi wiki uygulaması. Yani şirketin yapmış veya yapmakta olduğu projeler, bu projelerin süreçleri(kalite yönetim süreci, mühendislik süreci, iyileştirme süreci vs.) ile ilgili dökümanların belli bir hiyerarşiye göre düzenlenmesi ve şirket çalışanlarının bu dökümanları rahatça inceleyebileceği, düzenleyebileceği bir wiki oluşturmaya çalışıyoruz. Bu hiyerarşinin yanında wikinin farklı fonksiyonlarıda olacak tabiki.

Üzerinde çalıştığımız wikiden bahsetmeden önce wikinin ne olduğundan bahsetme gereği duydum. Wiki deyince doğal olarak aklımıza önce wikipedia geliyor. Wikipedia'nın da şu anda örnek verilebilecek en iyi wikilerden biri olduğunu söyleyebiliriz. Peki nedir wiki? Nasıl tanımlayabiliriz? Wikipedia'nın güzelliğinden bahsettik, o zaman wikinin tanımınıda oradan alalım;

Wiki, GNU Özgür Belgeleme Lisansı altında kullanıcıların yeni sayfa yaratmasına, sayfalarda düzenlemeler yapmasına ve bu sayfaları birbirine bağlamasına izin veren (olanak sağlayan) bir yazılımdır. Wikipedia bu wikilerden en çok bilinenidir. Gruplar, wiki sayesinde kolayca büyük dökümantasyonlar oluşturabilir. Diff özelliği sayesinde sayfanın önceki sürümleri görülebilir ve böylelikle belgeler arasındaki sürüm farklılıkları takip edilebilir. Sayfalar arasındaki bağlantılar ve sayfa biçimlemeleri sistem tarafından otomatik olarak yapılandırılacağından, bilgiye erişme ve bilgi belgeleme wiki ile son derece kolaylaşmaktadır.

Wiki ismi Hawaii dilinde "hızlı" anlamına gelen wiki kelimesinden türetilmiştir. İlk basit wiki sitesi olan WikiWikiWeb'i Ward Cunningham oluşturmuştur.

Wiki oluşturmak için kullanılabilecek birçok araç var ama biz Atlassian firmasının java tabanlı Confluence uygulamasını kullanıyoruz. İlk defa bir wiki uygulaması üzerinde çalıştığım için başka bir araç kullanmadım ama Confluence oldukça rahat görünüyor. Kolay ve anlaşılabilir arayüzüyle şimdiye kadar zorlandığım bir nokta olmadı. Ayrıca kullanımıyla ilgili de bol döküman ve plugin mevcut.

Şirket içerisinde yine Atlassian firmasının JIRA uyulaması da kullanılıyor. Wikiyi buna entegre olarak oluşturmaya çalışacağız.
İlerleyen zamanlarda wiki deneyimim arttıkça bu konularla ilgilenenlere yardımcı olması için wikiyle alakalı yazılar yazmayı düşünüyorum. Umarım düşündüklerimi uygulayabilirim.

Şimdilik bu kadar. Görüşmek üzere...