analiz etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
analiz etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

7.4.11

Arama Motoru Uygulamaları


İnternet uygulamaları ile ilgili yaptığım bir araştırma ödevini buradan paylaşmak istiyorum. Bugün arama motoru uygulamaları ile ilgili yazdıklarımı paylaşacağım, ilerleyen günlerde diğer internet uygulamaları ile ilgili yazdıklarımı paylaşacağım. Herkesin anlayabileceği sadeliktedir. Umarım faydalı olur.





Arama motorları günümüzde internet dünyasına damgasını vurmuş en önemli uygulamadır.  Başta Google olmak üzere internet kullanıcılarına ücretsiz internette arama imkanı sağlayan arama motorları günümüzde her internet kullanıcısının vazgeçilmezi. Arama motoru sayesinde internet kullanıcıları internet üzerinde aradıkları şeyi anahtar kelimeleri girerek ararlar. İnternet üzerindeki tüm sitelere tek tek girip aradıkları şeyi o karmaşa içinde bulmaktansa bu işi kullanıcı yerine arama motoru yapar.
Günümüzde arama motoru hizmeti veren siteler bu işi ücretsiz yapmaktadır. Öte yandan bu şirketlerden en büyüğü olan Google bugün dünyanın en büyük şirketlerinden biridir. Arama hizmetini ücretsiz sağlayan bir şirketin dünyanın en karlı şirketlerinden biri olması ilk başta kulağa tuhaf gelebilir. Google asıl geliri gösterdiği reklamlardan sağlamaktadır. Her gösterdiği reklam için ya da tıklama başına reklam verenlerden cüzi denebilecek ücretler almaktadır. Ancak bu cüzi ücretlerin milyarlarcası bir araya gelerek Google’ı bugün dünyanın en büyük ve karlı şirketlerinden biri haline getirdi.
Arama motoru uygulamaları Google’dan önce de vardı, ancak onlar bir internet uygulaması olarak değil, internete bağlı bir bilgisayarda masaüstü uygulaması olarak çalışıyorlardı. Ve bu programlar belli bir ücret karşılığında satılıyorlardı. Buna rağmen internetin büyük bir kısmında arama gerçekleştiremiyorlar, daha sınırlı bir alanda hizmet veriyorlardı. Günümüzde ise arama motorları internet üzerinde çok geniş bir alanı kapsayacak şekilde arama yapabilmekteler.
Arama motorlarında arama yapmak ücretsiz, eğer bu ücretli olsaydı insanlar arama motorlarını bu kadar çok kullanmazlardı, bu da arama motorlarının reklam gelirlerinde bir düşüşe neden olurdu. Arama motorlarında arama yapmak ücretli olsaydı belki de arama motoru hizmeti veren internet sitelerinin geliri günümüzdeki kadar fazla olmayacaktı.
Arama motorlarının ücretsiz olmasının yanında hızlı çalışmasının da kullanıcı açısından önemi bulunmaktadır. Kullanıcı aradığı bilgiye en hızlı şekilde erişmek istemektedir. Bu nedenle arama motoru hizmeti sağlayan firmalar sürekli yeni teknoloji ve algoritmalarla büyüyen internet dünyasında aranan şeyin daha hızlı bulunması için çalışmaktadır. Arama motorlarında genellikle sayfa ön izleme bölümü olmaz, sadece yazılar gözükür. Bunun nedeni hızdan taviz vermeme isteğidir. Bu doğrultuda birkaç deneme olduysa da bunlar başarılı olmamıştır, kullanıcılar tarafından fazla ilgi görmemiştir. İleride internetin hızının artmasına paralel olarak bu tür uygulamaların da artacağını tahmin ediyorum.
Arama motorlarında basit arayüz dikkat çekmektedir. Bu arama motorlarının tamamında uygulanan bir durumdur. Örneğin Google’ın arama sayfası son derece basit bir ara yüz tasarımına sahiptir. Google arama hizmeti dışında birçok hizmet vermesine rağmen ana sayfasındaki sadelikten taviz vermemiştir. Bu durum kullanıcıların hoşuna giden bir durumdur ve bunun ilerleyen zamanlarda değişmesi tarafımdan beklenmemektedir. Eğer Google ana sayfasında reklam yayınlasaydı günümüzdeki güçlü imajına sahip olamazdı. Ana sayfada reklam yayınlamaması, Barcelona futbol kulübünün formasına reklam almaması gibi prestij arttıran bir durumdur. Reklam almayarak aslında kendi markasının reklamını yapıyor da diyebiliriz.
Arama motorları hususunda bir diğer önemli nokta ise motorun bulduğu sonuçların gerçekten aranan sonuçlara olan yakınlığıdır. Örneğin ben bir anahtar kelime girdiğimde ve ara tuşuna bastığımda karşıma alakasız şeyler gelirse o arama motorunu bir daha kullanmam. Bu konuda motorun başarısı aslında teknik altyapısına ve kullandığı algoritmalara bağlıdır. Bu da ancak maddi gücü yüksek şirketlerin daha iyi başarabileceği bir şeydir. Bu sektörün lideri olan Google bu sektörde en çok kar eden firmadır, bu nedenle altyapı yatırımları daha fazladır. Sonuç olarak da getirdiği arama sonuçlara aranana en yakın şekilde kullanıcıya sunulmaktadır. Bu nedenle yakın gelecekte ve orta vadede Google’ın sektördeki lider konumunu devam ettireceğini öngörüyorum.
Arama motoru konusunda geç kalan Microsoft Bing ile Google’a karşı rekabet etmeye çalışsa da fazla başarılı olamamıştır. Ancak Microsoft desteği Bing’i her zaman Google’a alternatif olarak tutacaktır. Google’ın hizmet kalitesinde bir düşüş meydana gelirse bu Bing için bir şans olabilir. Ancak Google liderliğin getirdiği rehavete kapılmışa benzemiyor. Her geçen gün yeni teknolojiler ve fikirlerle kullanıcıların karşısına çıkıyor. Bu noktada dinamik ve yeniliklere açık çalışanlarının etkisi büyük. Bugün IT alanında insanlar Google’da çalışmak için can atıyor, çalışanlara sunulan rahat ortam ve imkanlar ise herkesçe biliniyor.

20.10.10

PMD (Açık Kaynak Kodlu Kod Analiz Aracı)

Mart 2010 tarihinde hazırladığım bir yazıyı paylaşmak istiyorum. 

Doğrulama ve test yazılım geliştirme sürecinin önemli bir parçasıdır. Testin kalitesi yazılımın kalitesiyle paralellik sergiler. Bu süreçte kullanılabilecek bir araç olarak PMD'den nasıl faydalanıldığı kısaca aşağıda anlatılmıştır.

PMD java için yazılmış açık kaynak kodlu kod analiz aracıdır. 

http://sourceforge.net/projects/pmd/files/ adresinden indirilebilmektedir. Bu adreste JDeveloper, Eclipse, Netbeans gibi çeşitli IDE’ler için uygun indirme yapılabilmektedir. Ben Netbeans üzerinde çalıştığım için Netbeans versiyonunu indirdim. Daha sonra eklentiyi IDE’me kurdum. Bu işlemi Tool>Plugins>Downloaded>Add Plugins..>pmd.nbm adımlarını izleyerek yaptım. Eklentiyi kurduktan sonra bir projeye sağ tıkladığımda Tools bölümünden Run PMD çalıştırılarak ya da Ctrl+Alt+P kısayoluyla çalıştırılabilmektedir.


Şekil 1

PMD’nin kodu analiz ederken hangi kriterlere bakacağını da ayarlamamız mümkün. Buna göre kodun şu şu özelliklerine bakılsın, şunlara bakılmasına gerek yok şeklinde bir ayarlama yapılabiliyor. Aynı zamanda eski ayarların saklanıp tekrar kullanılması, farklı senaryolar için farklı ruleset’lerin kullanılması mümkün. İlk önce Tools>Options>Miscallaneous>PMD penceresini açılır.(Şekil-2)


Şekil 2
Buradan “Manage Rules” butonuna basıldığında Rule editor tablosu gelir. Buradan rule’lar kullanıcı tarafından belirlenir. “>>” tuşu ile tüm rule’ların yüklenmesi de sağlanabilir.


Şekil 3
Kuralları bu şekilde ayarladıktan sonra artık kodları test edebiliriz. Test işlemi için yaz stajında yazdığım “Çoklu Server Client” programımı seçtim. Bu program ağ üzerinden bilgisayarların haberleşmesini sağlayan, aynı bilgisayarda birden fazla server ve client oluşturulmasına imkan veren bir programdır. Run PMD yapılınca PMD 128 adet uyarı verdi. Bunlardan biri de EmptyCatchBlock hatasıydı. Hatanın yanında açıklaması var. Daha detaylı bir
açıklama ve kod örneğine “Rule editor” penceresinde hata seçildiğinde ulaşılabilmektedir. Bu kadar çok uyarı çıkmasının nedeni tüm kuralları geçerli kılmam oldu.


Şekil 4

Şimdi de daha önceden hazırlanmış bir ruleset’in kullanılmasında bahsedeceğim. Bu sefer Options Penceresinden (Bkn Şekil-2) Manage rulesets butonuna basıyoruz. Add ruleset butonuna basarak bir xml dosyası yüklüyoruz.(Bkn Şekil-5) Bu dosyada kural ayarlarımız mevcut. Bu xml dosyasını kendimiz değiştirebiliyor, ihtiyaca göre edit edebiliyoruz. Ya da daha önceden başkalarının yazdığı bir ruleset’i kullanabiliyoruz. Aşağıda kullandığım ruleset’in içi gözükmektedir.

<?xml version="1.0" ?>
- <ruleset name="Custom ruleset" xmlns="http://pmd.sf.net/ruleset/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
<description>Imagine PMD Rule Set</description>
<rule ref="rulesets/basic.xml" />
<rule ref="rulesets/codesize.xml" />
<rule ref="rulesets/clone.xml" />
<rule ref="rulesets/coupling.xml" />
<rule ref="rulesets/finalizers.xml" />
<rule ref="rulesets/imports.xml" />
<rule ref="rulesets/logging-java.xml" />
<rule ref="rulesets/logging-jakarta-commons.xml" />
<rule ref="rulesets/naming.xml" />
<rule ref="rulesets/optimizations.xml" />
<rule ref="rulesets/strings.xml" />
<rule ref="rulesets/sunsecure.xml" />
<rule ref="rulesets/unusedcode.xml" />
- <rule ref="rulesets/codesize.xml/CyclomaticComplexity">
- <properties>
<property name="reportLevel" value="8" />
</properties>
</rule>
- <rule ref="rulesets/strictexception.xml">
<exclude name="SignatureDeclareThrowsException" />
</rule>
</ruleset>


Şekil 5

İnternetten indirdiğim custom ruleset ile projemde tekrar test başlattığımda bu sefer bana 26 uyarı verdi.(Bkn Şekil-6)


Şekil 6
Bu uyarıları düzelterek daha kaliteli bir program oluşturmak mümkün. Projenin tamamına test uyguladım ancak class’lara tek tek uygulamak da mümkün. Hatalarımı göstermesi bakımında benim için çok yararlı oldu. Anlayamadığım hatalarda açıklamalara ve örnek kodlara bakmak da tecrübe kazandırdı. Bu sayede ileride yazdığım programlarda günden güne daha az hata mesajı alacağımı düşünüyorum.
Related Posts Plugin for WordPress, Blogger...