Gelişmiş Kod Editörü ( Notepad++ )

Notepad++ C, C++, Java, C#, XML, HTML, PHP, Javascript, RC file, nfo, doxygen, ini dosyası, batch dosyası, ASP, VB/VBS, SQL, Objective-C, CSS, Pascal, Perl, Python, Lua, Unix Shell Script, Fortran, NSIS ve Flash action script programlama dillerini destekleyen aynı zamanda bu diller ile, kodları ve fonksiyonları özel renklendirebilmesi sayesinde daha etkin çalışmanızı sağlayan ücretsiz bir program.
Ayrıca Notepad ++’da çok satırlı kodlarda çalışırken çeşitli satırları küçültme ve bir araya getirme seçeneğinizinde bulunduğu bu text editörü yeni syntaxlar (kod seçenekleri) ekliyebilmenize imkan tanır. Aramalarda düzenli ifadeleri destekler (Regular Expression).
Notepad++ programına bu adresten eklentiler indirip kurarak özelliklerini arttırabilirsiniz.

Kaynak: http://webinyo.com/gelismis-kod-editoru-notepad.html#ixzz2rRTeDt9f
Devamı... 25 Ocak 2014 Cumartesi Unknown 0 yorum

Google İndex Sistemi ve Botları Nasıl Çalışır

İndekslemeArama motorlarının sizin sitenizi kendi veritabanına kaydetmesi demektir.
Google arama motorunun bilinen 3 adet  “bot” u vardır. Peki bot nedir? Bot arama motoru yazılımlarının bir parçasıdır. Sitenizin her sayfasına girer, kategorilendirir ve son olarak da veritabanına kaydeder. Google’ın iyi bilinen 3 botu: Adsense Bot, FreshBot ve DeepCrawl…
Adsense : Google’ın webmasterlar için sitelerinde içeriklerine göre reklam yayınlayıp para kazanabilecekleri bir sistemdir. Tahmin edeceğiniz gibi Adsense Botları bu reklamları yayınlayan siteler içindir. Sitenin içeriği değiştikçe veya yenisi eklendikçe Adsense reklamları içeriğe göre reklam yayınlamak için her değişmeden sonra 15 dk. içerisinde gelirler ve yeni yerleri indeksleyip giderler. Fakat bizi asıl ilgilendirenler FreshBot ve DeepCrawl botlarıdır…
Freshbot : sitenizdeki en popüler ve yeni sayfalar ile ilgilenirler. Bunun bir veya binlerce olması önemli değildir. Amazon.com ve CNN.com gibi sitelerin sık sık güncellendiği ve çok talep aldığı Google tarafından fark edildiğinden beri bunun gibi siteleri her 10 dakikada bir ziyaret edip kaydeder. Diğer tipik sitelere bu botun uğrama sıklığı popülerlik ve güncelleme ile orantılı olarak 1 ile 14 gün arasında değişir. Bir FreshBot sitenizi ziyaret ettiğinde sitenizdeki linkleri tek tek gezer ve onları bir veritabanına kaydeder. Bu sayede DeepCrawl sitenize geldiği zaman bu linkler ona yol gösterir ve işini yapmasına yardımcı olur.
DeepCrawlise ayda bir sitenize uğrar ve sitenizdeki bütün bilgileri indexler. Bu sitenizdeki yeni bilgilerin Google sonuçlarında neden bir ay sonra çıktığının da göstergesidir.

Kaynak: http://webinyo.com/google-index-sistemi-ve-botlari-nasil-calisir.html#ixzz2rRTMcCSo
| Devamı... Unknown 0 yorum

Link İnşaası Yöntemleri

Her ne kadar son gelen güncellemeler ile site dışı SEO‘nun değeri gitgide azalsa da hala alınan backlinklerin arama sonuçlarına doğrudan etki ettiğini görebiliyoruz. Genellikle profesyonel SEO pazarlamacıları ve uzmanları tarafından kullanılan link inşaaları, bu kişilerin çalışma yaptıkları siteleri adeta kanatlandırıyor.
Link inşaası ya da diğer adıyla link wheel çalışmaları sitelerinizi güvenle üst sıralara taşımanız konusunda size çok fayda sağlayacaktır.
  • Forum Gönderileri – Link ağı kurmada fazla kullanılan yöntemlerden bir tanesidir. Öncelikle yükselmek istediğiniz anahtar kelime ile alakalı aktif bir forum bulunur. Daha sonra üyenin imza alanından sitenize link verilir ve ilgili forumda konu ve mesaj yazmaya başlanılır.

  • Sosyal İmleme – Digg, Reddit, Delicious ve StumbleUpon gibi servisler kullanılarak imlemeler yapılır. Sosyal imlemeler oldukça büyük bir hit kaynağı oluşturmaktadır. Doğru kullanımlarında sıralamalarda oldukça fazla yükseliş meydana getirebiliyorlar.

  • Sosyal Medya – Şüphesiz Google +, Facebook ve Twitter gibi sosyal ağlardan elde edeceğiniz backlinklerin değerlerini de göz ardı etmemek gerekiyor. Özellikle de yapılan araştırmalara göre Google Plus’dan alacağınız backlinklerin değerinin diğer iki sosyal ağ sitesinden aldığınız backlinklerin değerinden yaklaşık iki kat fazla olduğu belirlenmiştir.Bu sosyal ağlarda sitenize ait hesaplar açtıktan sonra tamamen organik takipçiler edinmeye başlamalısınız. Şuan da 3 sosyal ağda da kullanılan hashtag sistemi sayesinde birçok takipçi elde edebilirsiniz. Unutmayın ki bu sosyal ağlarda paylaştığınız yazıları ne kadar çok kişi beğenir/paylaşır, ne kadar aktif kullanıcı hesaplarınızı takip ederse bu sosyal ağlardan alacağınız backlinklerin değeri de ona göre artar.

  • Ziyaretçi Mesajları – Kendi içeriğinizle uyumlu olan blogların ziyaretçi defteleri kısımlarından alabileceğiniz linklerin de size katkısı oldukça fazla olacaktır. Profesyoneller tarafından oldukça fazla tercih edilen ve yararı fazla olan bir backlink türüdür. Backlink alacağınız kısmın illa bir ziyaretçi defteri olması gerekmez, bazı siteler de teşekkür bölümleri de yer almaktadır.

  • Link Yemleri – Genellikle sitenizden alıntı yapılan bir içeriğin altında kaynak linkinizin bulunduğunda elde ettiğiniz backlink türüdür. Yazdığınız bir yazının insanlar tarafından alıntı yapılarak paylaşılması sizin değerinizi daha fazla artıracaktır, üstelik alıntı yapılan yazıdan orjinal yazıya link varsa bunun size katkısı daha fazla olacaktır. İlla bir yazınızın kopyalanmasına gerek yok, bir blog arkadaşınız yazısında sizin adınızı yazarken de size link verdiyse yine bu backlink türünden elde etmiş olursunuz.Bu tür backlinkleri başlangıçta pek fazla elde edemezsiniz, çünkü yazılarınızın yaygınlaşıp değer kazanması biraz zaman alabilir ancak bu işlemi elle yapmakta mümkün. Kendi açacağınız kaliteli paravan bloglar üzerinden asıl blogunuzda ki yazıları kaynak belirterek paylaşırsanız bu backlink türünden elde edebilirsiniz.
  • Diğer Bağlantılar – Ülkemizde pek olacağını düşünmesem de bu backlink türünü de yazı da belirtmek istedim. Öncelikle kendinizle aynı sektörde ki bir rakibinize link çıkışı yaparsınız ve rakibinizin bunu görüp size karşılık vermesini beklersiniz. Tabi bu durum size başlangıçta komik gelebilir ancak yabancı ülkeler de böyle yürüyen karşılıklı çıkar ilişkileri de bulunmakta. Haa bir de bu tür bağlantı çıkışları yapmaktan çekinmeyin, ne de olsa sektörünüzde ki bir siteye link çıkışı yapıyorsunuz.

  • Link Değişimleri – Aslında herkesin bildiği bir yöntemdir link değişimleri. Bilmeyenler için açıklamak gerekirse link değişimi iki blog sahibinin karşılıklı olarak bloglarında diğer blog sahibinin linklerini yayınlamasıdır. Şimdi soracaksınızdır üstte ki diğer bağlantılar türünden farkı nedir diye. Öncelikle link değişimleri yapacağınız blogların içerikleri benzer olmak zorunda değildir, diğer yandan link değişimlerinde linkler her sayfada görülürken diğer bağlantı türünde sadece anasayfada görülebiliyorlar. Link değişimlerinde blogların linkleri karşılıklı olarak eş zamanlı eklendiği için faydası pek görülmeyebilir ancak diğer bağlantı türünde linkler birkaç ayı bulan aralarla eklenebilirler.

  • Link Dizinleri - Link dizinleri de backlink kazanabileceğiniz güzel ortamlardan birisidir. İçlerinde en büyük örnek DMOZ’dur. Şuan da internette kaliteli dizin pek bulamazsınız ancak bulabildiğiniz kaliteli dizinlerinde faydasını fazlasıyla göreceksinizdir.

  • Ücretsiz Temalar – Üretilmesi biraz zor ancak sonuçları mükemmel olan bir backlink türüdür. Kısaca WordPress, Joomla, Drupal gibi yaygın sistemlerde kullanılabilecek şekilde hazırladığınız temaları ücretsiz dağıtmanızla beraber, o temalara eklediğiniz linklerden kazanacağınız backlink türüdür. Üretilmesi biraz zor dedim çünkü temaları kendiniz üretmeye kalkışırsanız bayağı bir şeyler öğrenmeniz gerekecek, bunun yerine temaları ücretli olarak başkalarına hazırlatabilirsiniz. 

  • WordPress Eklentileri – WordPress eklentileri sayesinde kazanacağınız backlink türleri ile müthiş bir patlama yaşayabilirsiniz. Temalardan farklı olarak eklentiler sayesinde kazanacağınız linkler eklentinin kullanımına göre sitenin birçok yerinde yer alabilir ancak temalardan alacağınız linkler genellikle footer bölümlerinde yer almaktadır.

  • Yarışmalar – Çevremizde de sık sık backlink kazanmak uğruna uygulanan bir yöntemdir. Bu gibi çekilişlerde, çekilişe katılmak isteyenlerden belirli linklerin sosyal medya üzerinde paylaşılması ve bloglar üzerinde yazılacak yazılarda kullanılması istenilir. Bu sayede aktif onlarca sosyal hesaptan ve blogtan linkler kazanılır. Bu linklerin değeri ise oldukça yüksektir ;)

  • Blog Ağları – Birbirine linklerle bağladığınız bloglar sayesinde çok verimli bir blog ağı oluşturabilirsiniz. Öncelikle elinizde birkaç tane kaliteli paravan blog olması lazım, daha sonra bu paravan blogları birbiri ile bağlayacaksınız, son olarak da isteğinize göre ya hepsinden ana domaine ya da içlerinden en iyi olandan ana domaine link çıkışları yapacaksınız.

  • Ücretli İncelemeler - Eğer elinizde ürün satışı yaptığınız bir site varsa, satış yaptığınız ürünleri alanında ki lider bloglara ücret karşılığı inceletmenizi öneririm. Bu sayede hem bir tanıtım yazısı elde etmiş olacaksınız, hem de güvenilir yazıdan birçok müşteri kazanacaksınız. Bu yazılardan alacağınız linklerin aktif tıklanma sayısı fazla olacağından verimi de yüksek olacaktır.

  • Hediyeler - Belirli kişilere hediyeler dağıtabilirsiniz, mesela blogunuza en çok yorum yapan kişilere. Bu sayede hediyelerini teslim alan kişiler sitelerinde size bir teşekkür mesajı yazacaklardır. Böylelikle yine bir yazı içerisinde aktif bir link kazanmış olacaksınız.

  • Anı Takip Edin  - İnsanların merak ettiği, güncel konularda yazılar yazın. Bu sayede sitenize gelen birçok kullanıcı yazılarınızı sosyal medya veya daha değişik platformalarda paylaşır. Konunun güncel olmasından dolayı linklerin tıklanma oranı eskisine göre daha yüksek olacağından buradan gelecek linklerin de değeri oldukça fazla olacaktır.

  • Web 2.0 – Bu backlink türünün siteye katkısı çok büyüktür. Özellikle de Web 2.0 sitelerinden açacağınız domainizle benzer içeriğe sahip paravan sayfalar sayesinde çok büyük yükselmeler sağlayabilirsiniz.

  • Konuk Yazarlıklar – Pek fazla kullanılmayan ama getirisi yüksek bir backlink türüdür. Herhangi bir bloga konuk olarak yazacağınız bir makaleden alacağınız linkler sizi üst seviyelere taşıyabilir. Bir tanıtım yazısından kazandığınız linkin değeri neyse, konuk yazarlık sistemi sayesinde de aynı ölçüde değerli linkler elde edebilirsiniz. İşin ilginç olan yanı ise bu yöntemle alacağınız linklere hiçbir ücret ödemiyorsunuz.

Kaynak: http://webinyo.com/link-insaasi-yontemleri.html#ixzz2rRSbFZzq
Devamı... Unknown 0 yorum

RedaX Makale Özgünleştirme Programı

Merhaba bir yazar için özgün bir yazmak veya yayınlamak çok önemlidir eğer kendiniz yazdığsanız zaten özgündür fakat başka bir siteden alıntı yaparak yayınlıyorsanız özgün değildir, işte bu başka sitelerden alıp yayınladığımız makaleleri ( Kaynak belirtmek şartı ile ) bu program ile özgünleştirebiliriz.
RedaX’ın Öne Çıkan Özellikleri:
  • Geliştirilebilir ve Esnek veritabanı yapısı.
  • Entegrasyonu ile otomatik içerik ekleme özelliği.
  • Standart eşanlamlı kelimeler ile değişiklik yerine kalıp cümle ve sözcük değişim özelliği sayesinde daha tutarlı özgünleştirme özelliği.
  • Yazım Denetimi özelliği sayesinde dil bilgisi ve yazım kuralları denetimi
  • Sürekli güncellenen yapısı sayesinde güncel konularda daha başarılı özgünleştirme işlemi
  • Makale Özgünleştirme algoritmasındaki esnek yapı sayesinde %85’e varan özgünleştirme başarısı.
  • İçerik Özgünleştirme konusunda rakipleri arasında en gelişmiş algoritma ve genişletilebilir esnek yapı.
  • Son derece şık ve sade kullanıcı arayüzü.
  • Farklı Kategorilerde Özgünleştirme özelliği sayesinde daha tutarlı özgünleştirme.
  • Hızlı özgünleştirme işlemi.
  • Veritabanı yedekleme ve yedekten geri yükleme özelliği.
  • Özgün içerik kaydetme ve kayıtlı içeriği okuma özelliği.

Bu resim yeniden boyutlandırılmıştır. Orijinal boyut için bu çubuğa tıklayınız. (1366x729px)
makaleozgunlestirme

Kaynak: http://webinyo.com/redax-makale-ozgunlestirme-programi.html#ixzz2rRQ59aKK
Devamı... Unknown 1 yorum

Sitene Kayan canlı Borsa Bandı ekle

Merhaba,

Haber sitesine canlı borsa bandı eklemek isteyenler için aşağıdaki kayan borsa bandını sitenizde yayınlayabilirsiniz.

kod
Kod:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="983" height="72">
<param name="movie" value="http://www.ekonomigazete.com/bant.swf" />
<param name="quality" value="high" />
<param name="wmode" value="opaque" />
<embed src="http://www.ekonomigazete.com/bant.swf" quality="high" wmode="opaque" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="983" height="72"></embed>
</object>


Özellikleri:

- Bist100 verileri kayan bant
- Bist30 verileri kayan borsa bandı
- Piyasa bilgileri döviz, altın, petrol, bono, bist, dolar, euro
- Ençok düşenler, Ençok yükselenler, borsa istanbul
- 3 saatte bir güncellenmektedir.
- asp, php, html siteler için ugundur.
Devamı... Unknown 0 yorum

Hata Tespiti ve Çözümlenmesi

Artırma ve Eksiltme Operatörleriden Kaynaklanan Hatalar

En sık kullandığımız operatörlerin başında ++ ve -- operatörleri gelir. Ama çoğu zaman operatör öncelik sırasına, değişkenin önünde (prefix) veya arkasında (postfix) kullanılmasına dikkat etmeyiz. Tabiki bunlarda hatalara yol açacaktır. Örneğin;

1.Örnek 2.Örnek
a = 10; a = 10;
b = a++; b = ++a;
Dikkat ettiyseniz yukardaki iki örnek aynı sonucu vermeyecektir. Birinci örnekte 10 değerini b’ye atar ve sonrasında a’yı artırır. İkinci örnekte ise a’ nın değerini artırır ve 11 değerini b’ye atar. Eğer ++ veya -- operatörlerinin önek ya da sonek olmasından kaynaklanan değişiklikleri gözardı edilmesi durumdan problemler ortaya çıkacaktır.

Opertör önceliklerinin dikkate alınmaması yine benzer problemlere yol açacaktır. Örneğin; 1.Örnek 2.Örnek
c = a + b; c = ++a + b;
a = a + 1;
Yukardaki iki örnek farklı sonuçlar üretecektir. Nedeni ise ikinci örnekte a ile b toplanmadan önce a’nın değerinin artırılmasıdır (operatör önceliğinden dolayı).

Bazen bu tür hataların bulunması nerdeyse işkence haline gelebilir. Bu tür hataların yakalanmasında düzgün çalışmayan döngüler ya da normal değerinden 1 fazla olan rutinler bize ipucu olabilir. Eğer bu tür ifadelerde bir şüphe duyuyorsanız bunları emin olacağınız şekilde yeniden kodlamak hataları çözmeye katkıda bulunacaktır.

+++++++++ Hataları

"xxx.exe bir sorunla karşılaştı ve kapatılması gerekiyor..." Ne çok görmüşüzdür bu programımızın çöktüğünü belgeleyen sevimsiz hata mesajını. C programcılarının en çok karşılaştığı hatalardan biri de +++++++++lerin yanlış kullanılmasıdır. Bir örnek ile incelemeye başlayalım: #include <stdio.h>
#include <stdlib.h>

int main(void)
{
char *ptr;

*ptr = (char *) malloc(1000); /*hatalı kod * /
gets(ptr);
printf(ptr);

return 0;
}
Yukardaki program çok büyük ihtimalla çökecektir. (yine o sevimsiz hata mesajını göreceğiz!) Nedeni ise malloc tarafında tahsis edilen alanın adresini ptr +++++++++sine atamak yerine ptr +++++++++sinin gösterdiği alana atama işlemi yapılmasıdır. Ancak sorun, ptr +++++++++sinin gösterdiği alan kesinlikle bilinmemekte ve bizim kontrolümüz dışındadır. Bu hata genelde C ile programlamaya yeni başlayanlarda (ki büyük olasılıkla * operatörü yanlış anlaşılmıştır) ve büyük olasılıkla o an ya TV seyrederken kod yazan ya da uykusuzluktan gözünü açamayacak halde iken kod yazan profesyonel programcılar tarafından yapılır. Programızı düzeltmek için aşağıdaki değişikliği yapalım.

ptr = (char *) malloc(1000); /* Geçerli kod */

Peki bu değişikliği yapmakla acaba kodumuz bütün hatalardan arındı mı? Hayır diyenler büyük çoğunlukta olsa da "hmm daha ne var ki düzeltilecek" diyenler de olacaktır. O zaman bende "Evet!" diyenlere şunu sormak istiyorum. malloc ile tahsis etmek istediğiniz alanı gerçekten tahsis edebildiğinizden emin misiniz? malloc ile tahsisat yapmak istediğimizde eğer yeterli alan yoksa malloc NULL değerini döndürecektir. ptr +++++++++si NULL değere sahip olacak ve ptr yi kullanmak istediğimizde programımız hemen çökecektir. Bu hatanın önlenmesi için malloc fonksiyonunun işlemi başarı ile tahsisat yapıp yapmadığını kontrol etmemiz gerekir. Kodumuzun düzeltilmiş hali aşağıdaki gibi olmalıdır. #include <stdio.h>
#include <stdlib.h>

int main(void)
{
char *ptr;

ptr = (char *) malloc(1000);
if(!ptr) {
printf("Yetersiz bellek alanı!!!\n");
exit(1);
}
gets(ptr);
printf(ptr);

return 0;
}
Bir başka yaygın hata ise, bir +++++++++yi kullanmadan önce +++++++++ye ilk değer verme işleminin yapılmamamış olmasıdır. Örneğin;

int *pX;
*pX = 100;
/* Hatalı kod*/

Yukardaki kod muhtemelen 5 - 10 satır aşağıda sorunlara neden olacaktır. Çünkü pX in nereyi gösterdiğini bilmiyoruz ve bilmediğimiz bir alana atama işlemi yapıyoruz(Ben ambulans sesleri duymaya başladım ya siz?). Bilmediğimiz alan belki başka bir kod bölgesi ya da veri ise o zaman neler olabileceğini siz düşünün! Kontrolümüzde olmayan işaretçilerin farkına varılması ve takip edilmesi çok zor ve zahmetli işlerdir. Bazen +++++++++ hatası yapsak bile tamamen raslantısal olarak programımız düzgün çalışabilir ve hatanın farkında olmayabilirsiniz(aslında işletim sistemi 112 yi çoktan aramış, ambulanslar yoldadır bile). Ama programımız büyümeye başlayınca hele de programınıza yeni fonksiyonlar,elemanlar eklemişseniz iş daha da karmaşıklaşacak, hataları bunlarda aramaya başlayacaksınız ki işler iyice arap saçına dönecektir. Bir +++++++++ hatası olduğunu nasıl tespit edeceğiz o zaman? Genellikle bu gibi durumlarda programımız tutarsız davranacak, bazen doğru bazen de yanlış çalışacaktır. Bazen de sonuçları hiç alakasız değerlerle görebiliriz(Mesela biz ekranda "abc" yazısını görmeyi beklerken "xnj8399-9ş*7ş87*..." gibi bir değer görebiliriz). Bu gibi durumlarla karşılaştığımızda öncelikli olarak +++++++++lerimizi tekrar gözden geçirmemiz gerekir. Şimdi bunlardan sonra "Ne yani +++++++++ kullanmayalım mı diyosun sen?" gibi sesler duyabilirim diye şunu belirtmeliyim ki +++++++++ler C’nin en güçlü yönlerinden biridir ve ne kadar hataya yol açarlarsa açsınlar +++++++++leri kullanabilme yeteneğimiz herşeye değecektir. +++++++++leri tam anlamı ile kavramak birçok hatının önlenmesinde katkı sağlayacaktır.

Söz Dizimi Hataları

Çoğu zaman öyle hatalarla karşılaşırız ki "ya bu derleyici hangi dilden konuşuyo acaba" dedirtecek türden hatalardır. Derleyici tarafından size gösterilen hata sizin yazdığınız kod ile alakası yoktur. Ama şunu da unutmamak gerekir ki derleyici her zaman haklıdır. Tamam hata mesajları çok da mükemmel değildir ama tespitte haklıdır. Mesela aşağıdakli örnekte can sıkıcı bir hata alacağız; #include <stdio.h>

char *func(void);

int main(void)
{
/**********/
return 0;
}
int func(void)
{
printf("func\n");
return 1;
}
VC7 ile alınan mesaj :
error C2040: ’func’ : ’int (void)’ differs in levels of indirection from ’char *(void)’
GCC ile alınan mesaj :
errmsg.c:12: error: new declaration `int func()’
errmsg.c: 3: error: ambiguates old declaration ’char* func()’
Bazı derleyicilerde de : Type mismatch in redeclaration of func(void)

şeklinde hata mesajları alabilirsiniz. Peki nasıl oluyorda bu mesajları alıyoruz? Bizim iki tane func fonksiyonuzmuz yok ki!. O zaman nerden çıktı bu mesajlar! Kodumuzu yakından incelersek, kodumuzun başında func fonksiyonun geri dönüş değerinin char türünden bir +++++++++ olduğunu görürüz. Bu durumda derleyici prototip bildirimini gördüğünde bu bilgileri sembol tablosuna yazacaktır. Daha sonra programımızın içinde func ile karşılaştığında geri dönüş değerinin int olduğunu görecek ve bize "yeniden bildirimini yapıyorsun bu fonksiyonun" ya da "yeniden tanımlıyorsun bu fonksiyonu" diyecektir. Buna benzer bir söz dizimi hatası da şöyledir. #include <stdio.h>

void func(void);

int main(void)
{
/**********/
func();
return 0;
}

void func(void); /* Hatalı kod */
{
printf("func\n");
}
Buradaki hata ise func fonksiyonunun tanımlanmasından sonra gelen ; kullanılmasından dolayı oluşan hatadır. Yine derleyiciden derleyiciye farklı hata mesajları alabilirsiniz. Ama çoğu derleyici ; kullanılmasından dolayı bunu bir bildirim sanacak ve ; den sonra gelen açılış küme parantezini işaret ederek "bad decleration syntax" gibi bir hata mesajı ile sizi uyaracaktır. Genelde ifadelerden sonra noktalı virgül görmeye alışık olduğumuz için bu gibi hataları saptamak çok zor olacaktır. (Birdefasında if(a == 0) yerine if(a = 0) yazılan bir kodda, 2 saat boyunca hata aradığım olmuştur!!!)

Dizi Uzunluğunda Yapılan Hatalar

Bildiğimiz gibi C’de dizilerin indeksleri 0 dan başlar. Ama çoğu zaman deneyimli programcıların bile bu özelliği unuttuğuna şahit olmuşuzdur. Örneğin uzunluğu 100 olan int türünden bir diziye değer atayan aşağıdaki örneğe bakalım. #include <stdio.h>

int main(void)
{
int ind;
int dizi[100];

for (ind = 1; ind <= 100; ++ind)
dizi[ind] = ind;< BR >
return 0;
}
Tabiki bu örneğin çalışmayacağını farketmişsinizdir. Programımızda iki tane yanlışımız var. İlk yanlışımız dizi[0]’a ilk değerin verilmemiş olması, ikincisi ise dizinin sonundan bir adım ileriye değer ataması yapılmıştır çünkü dizi[99] dizimizin son öğesidir. n elemanlı bir dizinin 0 dan n-1 e kadar elamanı olduğunu aklımızdan çıkarmazsak hataları önlemiş oluruz.

Sınır Hataları

C’nin standart kütüphane fonksiyonları ve çalışma ortamı çok az sınır kontrolü gerçekleştirir ya da hiç gerçekleştirmez diyebiliriz. Mesela bir önceki konudaki gibi dizi sınırlarını çok rahat bir şekilde aşabiliriz. Mesela, bir programımız olsun, programımız klavyeden bir karekter katarı alsın ve onu ekranda görüntülesin. Programımız şu şekilde olacaktır:
#include <stdio.h>

int main(void)
{
int x;
char dizi[10];
int y;

x = 10;
y = 10;
gets(dizi);
printf("%s %d %d", dizi, x, y);

return 0;
}
Yukardaki örnekte ilk bakışta bir kodlama hatası yok gibi görünse de gets()’i dizi ile kullanarak çağırmak ilerde hatalara neden olabilir. Programımızda dizi 10 karakter alacak şekilde bildirimi yapılmıştır. Ama kullanıcı 10 dan fazla karakter girince ne olur? Tabiki bu dizi’nin taşmasına neden olacak ve x yada y’yi veya herikisini birden ezecek sonuçta x ve y doğru değerleri içermeyecektir. Bunun nedeni ise bütün C derleyicileri yerel değikenleri depolamak için yığını (stack) kullanıyor olmalarıdır. Muhtemelen x,y,dizi bellekte sırası ile x, dizi, y şeklinde sıralanacaktır. Bu sıralamayı gözönüne alırsak, dizi taştığında fazladan girilen bilgiler y’ye ait olan alana yerleştirilecek böylece eski bilgilerin bozulmasına neden olacaktır. Tabi bunları hesap etmediğimiz takdirde, ekrana her iki değer için 10 yazmasını beklerken alaksız değerler yazılacak ve hataları başka yerde arayacağız(muhtemelen +++++ derleyicide yine bir sapıtma belirtileri olduğunu düşüneceğiz!!!). Bu sorunu ortadan kaldırmak için gets() yerine fgets() kullanmamız bir çözüm yolu olabilir(fgets() ile okunacak maksimum karekter sayısını belirleyebiliyoruz).

Fonksiyon Prototiplerinin Yapılmaması

Aslında programcılar biraz tembel insanlardır bunu kabullenmek gerekir heralde. Çoğu zaman yazdığı fonksiyonların prototip bildirimlerini yapmaktan üşenirler. Bu çok büyük hatalara neden olan bir karardır.C eğitimi aldığım () süreçte hocalarım sık sık bu konu üzerine eğilir öneminden bahsederler bu konuyu dikkate almamızı şiddetle tavsiye ederlerdi. Tabi ilk başlarda pek anlamasak da hatalı kodlarla boğuşurken bazı şeyleri kulağımıza küpe yaptık. Peki nedir bu kadar önemli kılan bu konuyu. Hemen bir örnek üzerinde incelemeye başlayalım. #include <stdio.h>

int main(void)
{
float a, b;

scanf("%f%f", &a, &b);
printf("%f", carp(a, b));

return 0;
}

double carp(float a, float b)
{
return a * b;
}
Şimdi biz 2.2, 3.3 değerlerini girdiğimizde sonuç olarak 7.26 dödürmesini mi bekliyoruz? Malesef hayattan çok şey bekliyoruz. Biz carp() için prototip kullanmadığımızdan dolayı main(), carp()’tan bir tamsayı değeri döndürmesini bekler. Ama carp() double değeri döndürecek şekilde yazılmıştır. Peki biraz daha ayrıntıya girecek olursak, tamsayıların 4 byte, double’ların ise 8 byte olduğunu düşünürsek, printf() bu durumda 8 byte lık double için yalnızca 4 byte ını kullanacak böylece de biz ekranda yanlış değerlerle karşılaşmış olacağız. O zaman carp fonksiyonumuzun prototipi kullanarak main() e carp fonksiyonun double türünden değer döndüreceğini bildirerek problemi ortadan kaldırabiliriz. ( double carp(float a, float b); )

Argüman Hataları

Davul bile dengi dengine boşuna dememiş atalarımız. Bir fonksiyonun beklediği parametre tipi ile, fonksiyone verdiğiniz parameterelerin eşlendiğinden emin olmamız gerekir. Fonksiyon prototipleri kullanarak bu hataları öneleyebiliriz ama tüm hataları yakalamamız biraz zor. Nedeni ise, değişken sayıda parametre alan fonksiyonlarda tip uyumsuzlukların yakalanması mümkün değildir. Örneğin scanf() fonksiyonu. Bildiğimiz gibi scanf(), paramatrelerinin değerlerini değil adreslerini almayı bekler ancak bizi bunun için zorlamaz.

{
int x;
scanf("%d", x);
}

Yukardaki örnek kod bir güzel derlenip program çalışabilir hale gelecektir. Ama program çalıştığında hata üretmesine neden olacaktır. Çünkü bu kod ile x’in adresi değil x’in değeri aktarılıyor.
Yığın (Stack) Taşması

Bildiğimiz üzere derleyiciler, yerel değişkenleri, fonksiyonların dönüş adresleri ve fonskiyonlara aktarılan parametreleri depolamak için yığını kullanırlar. Hayatta hiçbir şey sonsuz olmadığı gibi yığında sonsuz büyüklükte değildir. Yığın taşmasının olduğu bir durumda bazen program tuhaf bir şekilde çalışıyor olsa da bazen de program çökecektir. Yığın taşmasındaki en büyük problem ansızın ve anlaşılmaz bir şekilde ortaya çıkmasıdır. Haliylende böyle hataları saptamak çin işkencesine dönebilir. Bu durumda şüpheleneceğimiz konularında başında kendi kendini çağıran (recursive) fonksiyonlarımızın yanlış kodlanmış olabileceğidir. Programımızda kendi kendini çağıran fonksiyonlar kullanıyorsak ve anlamsız hatalar ile karşılaşıyorsak, bu tür fonksiyonların çıkış noktalarını birkez daha gözden geçirme vakti geldiğine karar verebiliriz. Eğer bunda da hata yok ise programımız hatasız bir şekilde kodlandığında eminsek bu sefer de derleyicimiz destekliyor ise yığın için ayrılan bellek miktarını artırarak bir çözüm üretebiliriz.
Devamı... 15 Ocak 2014 Çarşamba Unknown 0 yorum

30 Adet İngilizce Webmaster Kaynağı

,

Sixrevisions.com'un hazırladığı listeyi sizlerle paylaşıyorum. İşte o takip edilesi 30 adet ingilizce webmaster kaynağı:

1. NETTUTS





2. woork





3. Web Designer Wall





4. Smashing Magazine





5. Vitamin





6. Wake Up Later





7. Snook.ca





8. Signal vs. Noise





9. adaptive path blog





10. Tutorial Blog





11. WebAppers





12. Web Resources Depot





13. Ajaxian





14.DZone





15. Design Float





16. IBM’s developerWorks





17. del.icio.us





18. Sharebrain





19. Style Grind





20. PSDTUTS





21. Design Reviver





22. Blog.SpoonGraphics





23. John Resig





24. Boxes and Arrows





25. PHPDeveloper





26. Coding Horror





27. O’Reilly Network





28. Google doctype





29. Web Monkey





30. Digital Web Magazine


Devamı... 14 Kasım 2013 Perşembe Unknown 0 yorum

rel="nofollow" link nedir?-webmaster makaleleri

Web sitenizin arama motorlarında verimli ve sağlıklı bir şekilde yükselmesi için aldığınız backlinklerin rel=”nofollow” etiketi taşıması nedir? bu konuyu ele alalım. Öncelikle SEO çalışması ne amaçla yapılır bunu hatırlayalım. Belirli anahtar kelimelerde ilk sıralarda yer alarak sitemizin trafik ve ziyaretçi sayısını artırmak buna oranla sitenin gelirinide artırmaktır. Pagerank ve bağlantı değişimi gibi etkenler SEO çalışmalarında ilk sıralarda yer almaktadır.
Web teknolojisi her ne kadar gelişsede spam ve BlackhatSEO çalışmalarına tam bir çözüm bulunabilmiş değil. Siteniz arama motorları tarafından seviliyor ve ilk sıralarda yer alıyor ise spam daima başınıza bir beladır. Bunun nedeni ise kısaca bir cümle ile açıklayacak olursak eğer;
**** ne kadar çok bağlantı = o kadar çok pagerank = o kadar çok para!
dır. Bu yüzden SEO çalışması yapacak alanlar dışında kalan (p*rno, adult, ha*k) gibi içeriklere sahip siteler spam yöntemini kullanarak arama motorlarında üst sıralara çıkma çabasını hiç bırakmamıştır.
Google bu duruma 2005 yılında bir çözüm olabileceği umudu ile istenmeyen bağlantılara sahip web sitesi sahiplerine  rel=”nofollow” etiketinin önerdi. Bu etiket sayesinde site dışı bağlantıların iyi ve kötü amaçlı olduğu anlamında Google bilgilendirmesi için gerekli fırsatı sundu.
rel=”nofollow” etiketinin kısaca geçmişi bu şekildedir, şimdi bir örnekle etiketin nasıl kullanıldığına bakalım..

<a href="http://www.finansanalist.org">Finans</a>
<a href="http://www.finansanalist.org" rel="nofollow">Finans</a>

yukarıda verdiğimiz 2 farklı örnekle normal bir link ve nofollow etiketlenmiş bir link görülmektedir. İlk örneğimiz finansanalist.org adresi için Finans kelimesinde bir backlink sağlar, ikinci örnekse tamamen değersizdir. Sadece ulaşım amacı için eklenmiştir.
Devamı... 9 Kasım 2013 Cumartesi Unknown 0 yorum