Sayfalar

7 Ocak 2013 Pazartesi

SEO'da neymiş?

Son zamanlarda çok popüler olan bu terim bazen bence çok abartılıyor. İnsanlar yazılarını yazarken bile seo ya uygun bir şekilde içerik hazırlamaya çalışıyor. Bir cümle içinde geçen kelimeler seçilerek daha ön plana çıkarılmaya çalışılıyor. Mesela ben seo kelimesinde yükselmek istiyorsam bold seo yazmam avantaj sağlıyormuş.  Bir de seo  diye link versem ohh ne ala. İşler iyice mekanikleşmiş.  Ne yazdığından çok nasıl seo makalesi yazarım diye düşünenler var. Bir sitede veya blogta en etkili seo  sosyal imleme ve url rewrite yöntemleri olabilir. Bunun yanında özgün içerik hem seo için hem de ziyaretçilerin siteye ilgi göstermesini sağlayacak en önemli unsurlar olduğunu düşünmekteyim. Sonuç olarak popüler site ve blogların bu seviyelere böyle mekaniksel işlerle geldiğini pek zannetmiyorum. Etkisi yok demiyorum ama abartılıyor bence. Bir yazı yazarken arama motorlarını da bir yandan düşünmek garip olsa gerek.

Bunlarda wikipedia'dan alınan yöntemler. Artık kim yazmışsa .


Metotlar

Optimizasyon sürecine ilişkin aşamaların bazıları şunlar olabilir:

  • Statik IP
  • W3C geçerlemesi
  • LSI tekniği ile eşdeğer içerikli kelimelerin içeriğe yansıtılması
  • Sayfalara uygun başlıklar seçilmesi (Title)
  • robots.txt dosyasının kullanımı
  • Meta etiketlerin kullanımı
  • İçeriğin özgün olması (başka sitelerden kopyalanmamış olması)
  • Site-içi dolaşımının düzenlenmesi
  • Sitenin içeriği ile alakalı başka sitelerden bağlantı toplanması
  • Sitenin seçilen anahtar kelimelerinin site içeriğindeki yoğunluğunun belirlenmesi
  • Arama motororu örümceklerinin siteyi daha hızlı taraması için site haritası oluşturmak
  • İlgili anahtar kelimeleri kalın veya italik gibi özellikler kullanarak önplana çıkarmak
  • Tablo düzeni ile tasarlanmamış, CSS tabanlı sitelerin oluşturulması
  • Bir sayfadaki link sayısının 100'ün altında tutulması
  • Sitedeki tüm metinlerin site geneli ile uyumlu olması
  • 404 sayfalarının çalışan bir sayfaya yönlendirilmesi

Alan adı seçimi 

  • Arama motoru optimizasyonu çalışmanızda domaininiz oldukça büyük etkisi vardır. Bu faktörler:
  • Alan adının uzun süreden beri kaydedilmiş olması
  • Alan adının bitiş süresinin en az 3 sene uzaklıkta olması
  • Alan adının ilgili anahtar kelimeleri içermesi
  • Alan adının üçten fazla ayıraç(-) içermemesi gerekir. Bu tip durumları Google ve benzeri arama motorları, siteyi zararlı olarak işaretleyebilirler.

5 Ocak 2013 Cumartesi

Oyun programlamaya başlamak isteyenler için tavsiyeler

Yazılımla uğraşan bir çok kişi oyun programlamaya da merakı oluyor. Aslında oyun da sonuç olarak bir yazılım. Oyun programlamaya başlamak isteyenlerin genelde kafasına takılan sorular , oyun programlamaya nasıl başlamalıyım ve hangi dilleri kullanmam gerekir türünden sorular oluyor. Bu soruyu soran kişinin ilk olarak ne tür oyunlar yapacağına karar vermesi gerekir. Bunlar browser tabanlı oyunlar,flash oyunları,mobil oyunlar, pc oyunları  olabilir. Sonrasında bu oyunlar 2d mi yoksa 3d mi olacak buna karar vermesi gerekir.

2d oyunlarla başlamak daha kolay olabilir ve tek kişi çalışılacaksa 3d projeler altından kalkılamaz duruma gelebilir. Bazı arkadaşlar gaza gelip MMORPG yapalım diye forumlara ilan veriyorlar. Ama MMO oyun oynamaktan başka bir tecrübesi olmayan bu arkadaşlar boşa vakit harcıyorlar. İşe yarar bir MMO oyun yapmak için network, yapay zeka ,oyun dizaynı gibi kendi içinde uzmanlık ve araştırma gereken  işlerin altına girmek gerekir. Bunun yanında grafik tarafında konsept tasarım ,modelleme ,animasyon  işini yapacak kişiler gerekiyor.

Bu nedenlerden dolayı böyle gaza gelmektense daha mantıklı ilerlemek gerekiyor. Ben mesela şimdiki aklım öğrencilik zamanında olsaydı flash oyun programlama işine girerdim. Şu aralar mobil oyun programlama revaçta olsa da artık mobil uygulama marketleri çöp haline gelmeye başladı. Kullanıcıya uygulamanızı ulaştırmak gerçekten zor iş olmaya başladı. Flash bir oyun yaptığınızda bunu kolay bir şekilde 100 000 lerce kişiye ulaştırabiliyorsunuz. Biraz işe yarar bir uygulama yaptıysanız reklamdan gelir de elde edebiliyorsunuz.
Bu anlamda Mochi Ads sitesinden bilgi edinebilirsiniz. Bunun yanında uygulamanıza sponsor bulabiliyorsunuz.
Bu sponsorlar genelde sitelerine trafik sağlamak için bunu yapıyorlar.

Bazı kişiler flash öldü diyorlar ancak browser oyunlarında flasha herhangi bir rakip hala yok. Ne HTML5  performansı yeterli nede Unity plugini yeterince yaygın.
Flash oyun yapmak için Action script 3 programla dili bilmeniz yeterli. Bir çok ücretsiz araç bulunmakta.
Ide olarak Flash Develop yaygın kullanılıyor , Bunun yanında ücretsiz grafik kütüphaneleri mevcut.Starling 2d grafik motorlarından biri Angry Birds yapımında kullanılmış. 3d grafik motorlarının sayısı Flash 11 donanım desteğiyle de artmış bulunmakta. Bunların yanında bir çok oyun motoru flash export seçeneği eklemeye başladı. Unity3d de bu motorların içinde yer alıyor.

Bazı programcılar ise PC platformunda oyun yapmak isteyebilir. Bunun için hangi dilleri kullanmamız gerekir diyebilirler. Büyük firmalar c/c++ kullanıyor olabilir ama yeni başlangıç yapan birisi tek başına bu dillerle bişeyler yapması zor.  Bunun için oyun motorlarını kullanmalarını tavsiye ediyorum.  Oyun mantığını kavrayıp 1 -2 proje gerçekleştirdikten sonra  zaten size performas mı kolaylık mı gerekiyor  bunun kararını verebilirsiniz.

Oyun programlama yapmaya başlamadan bile performans işine çok takıp üretimde bulunamayan kişiler var.
Onun için hangi dil ve motoru seçmeliyim gibi şeylere zaman çok harcamayın derim.


Araştırmayı planladığım teknolojiler.

Araştırmayı planladığım bazı teknolojiler var. Genel olarak zaten bilgim olan bu teknolojiler hadoop(Eski distributed systems dersinde bol bol muhabbeti geçmişti) , cassandra (dağıtık NoSQL veritabanı) , bunlara ek olarak apache grupun geliştirdiği diğer projeler pig,hive gibi hadoop alt yapısını kullanan teknolojiler.
Muhtemelem diğer teknik bloğumda bunlarla ilgi makaleler yazarım araştırdıkça. Zor tarafı ise bu teknolojilerin kurulum ve testleri yapmak olacak. Genel olarak ölçeklenebilir yapılar olduğu için birden fazla instans veya server kurmak gerekli olacak. Testi için veri girişleri  yapılacak ve driver kurulumları gerekecek. Linux versiyonu bir işletim sistemi kullanılacak.


MongoDB hakkında

MongoDB , NoSQL veritabanları arasında en popüler olanlardan. MongoDB ölçeklenebilirlik açısından güzel bir çözüm sunsa da bu sistemi yönetmek biraz zor olabilir. Veritabanın read/write performansını artırmak için shard özelliği ile yatay ölçekleyebilirsiniz. Ancak bu özelliği kullanmanız için önerilen sistemde 1 mongos proxy server, 3 config server, 2 shard(replica set herbiri  mongod server) toplam 10 server kurulumu yapmak gerekiyor. Veriler shardlar üzerinne config serverlarda bulunan ayarlara göre dağıtılır. Yani her hangi bir shard çöktüğünde verilen bütününe ulaşılamaz. Bu nedenle replica set kullanımı önerilir. Replica set 3 mongod instancedan oluşur. 1 primary, 2 secondary mongod belirlenir. Primaryde çıkan bir sorunda secondary devreye otomatik geçebilir. Başangıç projeleri için bu nedenle , shard kullanımı çok gerekli değilse   pek kullanışlı olmayabilir. Bu özellikler zaten yüksek trafiiğe sahip servisler için düşünülmüş bir yapıdır. Ayriyeten böyle bir alt yapı için çokça masraf ortaya çıkar.MongoDB'de diğer NoSQL veritabanları gibi ACID özelliklerini pek sağlamıyor. Bir server çökmesi sonucu veri kaybı yaşayabilirsiniz.Veriler diske yazılmadan hafızan bile çekilebilmesi performans açısından iyi olsa da kritik veriler için kötü sonuçlara sebep olabilir. Foursquare 2 yıl önce böyle bir durumla karşılaşmış ve 11 saat boyunca servis sağlayamamıştı.

Slide Share uygulaması

Slide share uygulaması gerçekten güzel bir uygulama. Slayt dosyalarını online olarak görüntüleyebiliyorsunuz.
Ben yararlı bulduğum bir kaç microsoft power point sunumunu yüklemiştim. Sonrasında pdf dosyası da desteklediğini gördüm. Gerçekten güzel düşünülmüş. En kötü özelliği benim için Quora hesabımı bozması oldu. Yine site içerisinde başkalarını paylaştığı diğer slaytlara da erişebiliyorsunuz. Bir konu hakkında araştırma yaparken benzer konular hakkında diğer slaytlara erişebiliyorsunuz. Bu yazımdada bir slaytı paylaşacağım bakalım sıkıntı olacak mı :)
İyi bir sorun yok gibi yazımı yazarken gözüküyor. Rest ve SOAP web servisleri hakkında bir slayt. Konuyla ilgi biraz araştırma yapmıştım. Bu sebeble slide share'e upload  etmiştim. Gerçi daha sonra bu slaytın slide sharede zaten olduğunu gördüm ama bu slaytları kendi hesabınızla takip edebiliyor musunuz bilmiyorum ?

Askere gitmek gerek

Mayısta tecil sürem doluyor ve askere gitmem gerekiyor. Tabi ki ertelemek için çeşitli yöntemlere baş vurabilirim. Açık öğretime yazılmak veya yüksek lisans yapmak bunlardan bazıları. Peki bunu yapmalı mıyım. Şirkette gerçekleştirilen projeler için bana gereksinim duyuluyor. Ama benim de bir an önce bu askerliği aradan çıkartmam gerekiyor. Peki ertelersem ne olur?  Şirket için fedakarlık etmiş olurum, biraz masraf etmiş olurum ve olur da şirketten ayrılırsam başka işe girmek için askerlik önümde engel olarak kalır. Son durumda patronun ayak üstü iş halletme politikaları yüzünden , böyle bir fedakarlığı yapmaktan vazgeçer gibiyim. Türkiye'de ne zaman kurumsal kültür oluşacak merak ediyorum. Deneme yanılma yöntemiyle işler yapılmaya çalışılıyor. Ben yaptım olacak :)  kafasında  herkes. Bundan dolayı  daha profesyonel çalışanlarla iş yapmak belkide en iyisi , tabi ki öyle yerler de varsa. Zaman duygusal kara vermekten çok mantıksal kararlar verme zamanı. En azından son durumda böyle düşünüyorum.

4 Ocak 2013 Cuma

Crawler Sonuçlarım

Php ve MongoDB ikilisini denemek için yazdığım crawler uygulamasını deniyorum. Muhtemelen 4-5 saat sürekli çalıştı  ve çalışmaya devam ediyor. App Store için yazmıştım  bu uygulamayı. App Store için derken onu crawl etmek için yani. İçindeki linkleri ve uygulama bilgilerini parse ediyor ve MongoDB'ye kaydediyor.
Şuanda MongoDB yönetimi için MongoVue GUI yazılımını kullanıyorum ve çektiğim ürün bilgisi sayısını paylaşıyorum.

Şuandaki toplam ürün bilgisi 9221 olarak görülüyor. Bunun dışında ürün bilgisi çekilmeyenler le birlikte toplam 33000 den fazla kayıt bulunmakta. Ve artmaya devam ediyor. Ürün ile ilgili uygulama adı,üretici,resim  adresi,ücreti ve boyutu gibi özelliklerini de çekiyorum. Burda bu işlemi hızlı çalışmasını kısıtlayan faktör ne php parsing işlemleri nede veritabanına yazma ve kontrol işlemleri. Tamamen internet bağlantısı ve Appstore sistesinin yanıt hızıyla lakalı. İşlemci kullanımım%1-2 civarında olması bunu gösteriyor.

App Storeda toplam 700 000 den fazla uygulama varmış. Ben bütün veriyi çekmek istemiyorum aslında . 100 000 uygulama verisi çeksem yeter bana. Bu kadar uygulama verisi çeksem muhtemelen 200 000 den fazla ürün linkide çekmiş olurum. Eğer bir yerden sonra yeni uygulama linki bulma sıkıntısı yaşanmazsa.

Bende bu arada bu verilerle MongoDb de değişik denemeler yapmayı planlıyorum. Sorgulama diline daha hakim olmam gerekiyor. Map Reduce işlemleri nasıl işliyor tam olarak anlamam gerekiyor. Ayrıca çeşitli performance testleride yapabilirim. Ürünlerin bilgisini kullanarak belki ististiksel bilgiyede ulaşabilirim.

Crawler hakkında daha detaylı bilgi için http://www.murat-cakal.com/2013/01/03/php-crawler-programlama/ bakabilirsiniz.