Sayfalar

9 Ocak 2013 Çarşamba

Ebook FTP paylaşım

İnternette gezinirken nasıl olduysa bir ftp linki bulmuştum. Pek te nasıl bulduğumu hatırlamıyorum açıkçası.
İçinde yüzlerce kitap bulunuyor . Ftp ye burdan ulaşabilirsiniz. Bir çok bilişim teknolojisi ve programlama ile ilgili pdf formatında kitap bulunmakta. İnşallah erişimi kapatmazlar. Eğer kopimizm dinine mensup olsaydım bu paylaşımla cenneti garantilerdim :) .  Yararlı olur umarım.

Server ile PC ram farkı

Sanal makine üzerinde kuracağımız veritabanları ve application serverlar için fiziksel sunucumuzda ram sıkıntısı yaşamamak için ekstra ram ilavesi yapmayı düşünüyoruz. Şuandaki fiziksel sunucuda 8 gb ram ve XEON işlemci var. Ama bu servera toplam 10 dan fazla server yazılımları kurulması gerekecek. Bunların arasında HAProxy,Apache HTTP server,MySQL,MongoDB gibi server yazılımları var. Bu yazılımlardan veritabanı kısmında bulunanlar rami bolca kullanan uygulamalar. Bunun için ek olarak 8 gb ram daha ekleme yapılabilir diye düşündük. Server üzerinde bulunan ramler normal pc üzerinde olan ramlerden biraz daha farklı oluyormuş bunu ögrendim. 
Server ramleri ECC(correcting code memory) denilen bir özelliğe sahiplermiş. Bu özelikle hata kontrolü sağlayabiliyor ve bu hatayı düzeltebiliyormuş. Bundan başka özelliklere de sahip olabilir tabi ki .Benim ilgilendiğim taraf  bir de fiyatıydı bu ramlerin. PC için satılan 8 gb lık ramler 100 tl civarında iken server ramleri 600 tl civarında olması can sıkıcı bir durum.  Bu parayla bir PC kasası toplasam ve networkten bağlasam daha performanslı olur gibi geldi bana :) .

8 Ocak 2013 Salı

MongoDB Sayfalama problemi

Bu aralar MongoDB ile bir çok problemle karşılaşıyorum. Test etmek için veritabanına 17 milyondan fazla kayıt eklemiştim. Kullandığım MongoVue GUI programı ilk olarak fark ettiğim olay verilerin sayfalama ile gösterilirken son sayfaların  çok yavaş getiriliyor olması idi. 100 000lere kadar çok bir kasma yaşamasam da
milyonluk verilerin içinden son sayfalara ulaşmak çok kasıcı bir işlem olduğunu gördüm.
17 milyondan fazla kayıt bulunan bu collectionda ilk sayfalardaki veriyi mili saniyeler içinde çekebiliyorum.

Sol tarafta bulunan resim 14 milyon ile 14 milyon 9. kayıtların arasındaki kayıtları gösteriyor. Bu veriyi çekmek için aşağıdaki resimdeki gibi 32 saniye işlem yapıldı.

Bu işlemi birde konsol ekranından denedim.

db.urls.find().skip(14000000).limit(10);

Fakat bir değişiklik göremedim. Bununla ilgi internetten araştırmalarım sonucu bir çok kişinin aynı sorunla karşılaşmış olduğunu gördüm.
Herhangi bir veriyi aslında çok hızlı bir şekilde sorgulaya biliyorum. Özellikle de indexlenmiş alanlarda ama sayfalama gibi basit bir sorguda böyle bir sonuçla karşılaşmayı hiç ummazdım.

Flash oyun ne kadar kazandırabilir ?

Flash oyun programlama yapmak isteyenler ya da  uğraşanlar bu işten para kazanılabilir mi veya ne kadar kazanılabilir diye düşünebilirler. Bu işte de her işte olduğu gibi istikrar ve zaman ile iyi paralar kazanılabiliyor.
Bu işte gelir sağlama yöntemleri  oyun sponsorluğu, oyun içi reklam veya oyunu satmak gibi yöntemleri var.
Kısa vadede oyun sponsorluğu veya oyunu satmak  gelir sağlasa da eğer oyun biraz tutulan oyun ise reklam gelirleri güzel ve sürekli bir gelir kapısı sağlayabiliyor. Bu konu hakkında zamanında detaylı araştırma yapmıştım. Bu konu hakkında belki en açıklayı yazıya http://blog.elite-games.net/blog6.php/2008/08/01/overall-stats  bu linkten bakabilirsiniz. Yaptığı oyun listesini ,hangi oyundan ne kadar para kazandığını bu bloğunda yazmış.  5 yılda toplam 230 bin dolar kazandığını yazıyor ve şuanda sadece reklam gelirleri iyi bir sabit gelir sağladığını yazmış.
Yaptığı oyunların listesi .
  • Elite Forces:Jungle
  • Elite Forces:Afghan
  • Elite Forces:Pakistan
  • Elite Forces:Defense
  • Elite Forces:Conquest
  • Elite Forces:Clone Wars
  • Elite Forces:Warfare
  • Elite Forces:South Osetia
  • Joes Farm
  • Joes Last Stand
  • Rush Hour
  • Star Ship
Uğraşmak isteyenler için bir fikir vermiştir umarım.

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.