26 Şubat 2013 Salı
İşaretçiler ( Pointers ) !
Programlamaya başlayan herkesin er yada geç karşılaştığı bir konu olan işaretçilere(pointers) kısa bir bakış atmak istedim. İşaretçilerin tanımı ile konuya başlayalım. İşaretçiler, bir nesnenin bellek adresini tutan değişkenlerdir. Oldukça basit bir şekilde tanımladığımız işaretçilere neden ihtiyaç olduğunu bir örnekle açıklamak istiyorum. Elinizde 100 MB lık bir nesne olsun, bu nesne ile ilgili programınızda işlem yapmak istediğinizde işletim sistemi size bu nesnenin bir kopyası üzerinde işlem yapmanıza izin verir. Dolayısıyla belleğe fazladan bir 100 MB eklemiş olursun. Ancak işaretçi kullanır isek nesnenin adresi ile direk nesneye ulaşarak üzerinde işlem yapabiliriz. Benim 8 GB belleğim var diyenleri duyar gibiyim bende size bu nesne üzerinde 1000 tane işlem yapmanız gerektiğini söylersem işaretçilerin neden bu kadar önemli olduğu anlayabilirsiniz. Performansın olmazsa olmaz olduğu programlarda işaretçi kullanımı neredeyse zorunludur. Şimdi madalyonun diğer tarafına bakma zamanı geldi. İşaretçilerin kullanımı hataya son derece açıktır. Derleme zamanında hata vermeyen programınız çalışma zamanında hatayla karşılaşabilir. İşte bu sebepten yeni nesil programlama dillerinden Java işaretçi kullanımını tamamen kaldırmıştır. Dot net platformunda ise geriye doğru uyumluluk adına işaretçi kullanımı desteklenmiş fakat platformu geliştirenler tarafından kullanımı tavsiye edilmemiştir. Yeni nesil programlama dillerinin işaretçilere bakış açısını belirleyen en önemli faktör ise bir işaretçinin işaret ettiği adreste bir nesnenin olduğunun garantisini verememesindendir.
25 Şubat 2013 Pazartesi
Coder Programcı Farkı
Sıra geldi başka bir internet fenomenini irdelemeye. Yıllardan beri internette tartışılan coder mi programcı mı tartışması kuşkusuz teknoloji ile ilgilenenlerin sıkça karşılaştıkları bir olgu. Öncelikle her iki olguyu tanımlayarak başlayalım. Programcı, program geliştirme işini profesyonel olarak yapan ve hayatının bu meslek ile idame ettiren kişidir. Programcı, müşterinin veya işverenin istediği şekilde programı geliştirip onlara sunar. Coder ise bu meslekle profesyonel olarak ilgilenmez. Geliştirdiği ya da geliştireceği programı kendi özel zamanında geliştirir. Üzerinde müşteri istekleri ya da işveren baskısı yoktur. Programlamayı sadece kendi istediği için yapar. Bazen geliştirdiği programı kendinden başka kimse kullanmaz. Programcı yaptığı programa sadece gereken düzeyde katkı sağlar. Coder ise programını herkesin kullanıp beğenmesi için özel bir çaba sarf eder. Daha önce denenmemiş bir takım teknikleri deneye çalışır. Coderlar genelde yaptığı programın herkes tarafından kullanılabilmesi hedefledikleri için kod optimazyonu üzerinde özel bir gayret gösterirler. Fakat suda unutulmamalı ki programcı aynı zamanda coder da olabilir. Bu durumun birçok örneği mevcuttur. Sonuç olarak iki tarafta ortaya çalışan bir program sunarlar tek farkları programın hazırlanması sırasındaki yaklaşımlarıdır.
23 Şubat 2013 Cumartesi
Ekran Kartı Seçimi
PC'lerde oyun oynamak için olmazsa olmaz donanımlardan biri olan ekran kartı seçiminde bize kıstas olacak kriterleri tek tek inceleyelim;
Marka : nVidia,AMD ve intel'in grafik çözümleri yaygın olarak kullanılmaktadır. Hangi markayı tercih etmek istediğinize fiyat/performans olarak bakmanız gerekmektedir. ( Niyetiniz oyun oynamak ise İntel'i direk listeden silebilirsiniz ).
Api Desteği : Hangi ekran karını alırsanız alın aldığınız ekran kartı eğer oyunun DirectX versiyonuna desteği yoksa oynayamazsınız. Ekran kartı alırken mümkün olan en son DirectX versiyonun destekleyen bir model seçmeniz ekran kartının kullanım süresini uzatacaktır.
VRAM Miktarı : VRAM. Oyunlardaki grafik dosyalarının(texture) depolanıp işlendiği birimdir. Bu birimin miktarı, Oyun oynarken lag ve takılmaların önüne geçer. ( tabiki sadece vram miktarı tek başına performsta etkili değildir. Vram'in fazla olması ekran kartının diğer bileşenlerininde gücü oranında etkilidir.)
Veriyolu : Ekran kartı piyasasında birçok ekran kartı bulunmaktadır. Çeşitli boyutlarda ramlerle gelen bu kartların GPU ile haberleşmesini veriyolları sağlamaktadır. Ram miktarı ne kadar fazla olursa olsun düşük veriyolu performansı büyük oranda düşürecektir. Belli başlı veriyolları olarak 64 bit,128 bit, 256 bit gösterebiliriz. Veriyolunun önemini şu şekilde açıklarsak sanırım daha iyi anlaşılacak. 1 GB 128 bit bir ekran kartı ile 512 MB 256 bit ekran kartı arasında GPU nun Ram e ulaşması açısından farklılıklar mevcuttur. 1 GB 128 bit ekran kartında GPU ram'e her seferinde 128 bitlik veriler gönderir. Diğer yandan 512 MB 256 bitlik ekrankartında ise GPU ram'e her seferinde 256 bitlik veri gönderebilir yani ilk örnektekinin 2 katı kadar. Tabiki yukarıda vermiş olduğumuz örnekte ekran kartlarının ram cinslerinin aynı tip olduğu varsayılmıştır.
VRAM Cinsi : GDDR3.GDDR5 olamk üzere iki adet ram cinsi şuan piyasada yaygın olarak kullanılmaktadır. İkisi arasındaki fark bellek modüllerinin hızlarıdır.(GDDR5 GDDR3 den daha hızlıdır )
GPU Hızı : Ekran kartlarında VRAM miktarı ve veriyolu kadar önemli olan diğer özellik GPU hızıdır. GPU hızı performansı önemli ölçüde yükselten diğer bir özelliktir.
Darboğaz(bottleneck) : Darboğaz, ekran kartının işlemci tarafından limitlenmesi olayına denmektedir. Son model bir ekran kartının veri işleme kapasitesi oldukça yüksektir fakat işlemci eski bir model yada düşük hızlı ise ise ekran kartı tam performans veremez. Bu durumla ilgili olarak verilebilecek en iyi tavsiye ekran kartı almadan önce mevcut işlemcinizin göz önüne bulundurmaktır.
Torrent nedir?
Son yıllarda internette adını sıkça duyduğumuz bu terim
aslında bir paylaşım protokolünü ifade etmektedir. Kısaca tanımlarsak P2P(peer
to peer) tabanlı bu protokolün çalışma şekli indirme yapan kullanıcının indirme
yapabilmesini ve indirdiği kısmı diğer kullanıcılara gönderebilmesine dayanır. Söz
gelimi kullanıcı 300 MB lık bir dosyanın 100 MB nı indirmiş olsun, bu durumda
kullanıcı kalan 200 MB ı indirmeye devam ederken hali hazırda indirmiş olduğu
100 MB ı henüz indirme yapamamış kullanıcılara gönderebilir. Direkt download indirme
işlemine göre avantajı bantgenişliğini korumak ve kullanıcılara hızlı bir
internet deneyimi sunmaktır. Bugün pek çok Linux dağıtımı bu protokol ile
kurulum dosyalarının kullanıcılara sunarak büyük oranda sunucu masrafından
kurtulmaktadır. Gelelim torrent ile ilgili bazı terimlere Tracker (izleyici ),
paylaşıma sunulan dosya ile ilgili olarak, dosya bilgilerini ve kullanıcıların birbiri
ile iletişim kurmasına sağlayan bir yapıdır. Peer ise paylaşımda olan dosyanın
tamamına sahip olan kullanıcı sayısının göstermektedir. Leech, paylaşıma
sunulan dosyayı henüz bitirmemiş olan kullanıcıların bulunduğu grubu ifade
eder. Yüksek hızlar için peer sayısı hayati bir öneme sahiptir. Torrent ile
ilgili olarak bazı terimleri öğrendiğimiz göre şimdi torrenti nasıl
kullanacağımıza değinelim. Öncelikle torrent indirebilmek için bilgisayarımıza
bir adet torrent istemcisi yüklemeliyiz. Bu programlardan bazıları şunlardır ;
uTorrent, qbittorrent, azure, bitcomet. Bu programlardan herhangi birini
bilgisayarınıza yükleleyerek torrent indirmeye
başlayavilirsiniz.. İkinci olarak torrent dosyalarını indirebileceğimiz
siteleri bulmalıyız. Bu sitelerde kendi içinde Private trackers, public trackers
olarak ikiye ayrılıyor. public tracker olarak ifade edilen siteler herhangi bir
üyelik gerektirmeden torrent dosyalarına ulaşabildiğiniz sitelerdir ne var ki
bu sitelerdeki torrent dosyalarının indirme hızları düşüktür ve fake(yanlış)
dosya, virüs gibi riskler taşımaktadırlar. Private trackerler torrent
dosyalarını sadece üyelerin indirimine sunarlar. Fakat üyelerin indirdiklerinin
en az yarısı kadar paylaşımda olmasını zorunlu kılarak public trackerlara göre
çok daha hızlı bir dosya indirme olanağı sunarlar. Paylaşılan dosyaların fake
çıkma ya da virüslü olması durumu bu trackerlarda neredeyse hiç olmaz. Private bir
trackera üye olmakta başlı başına bir sorundur üye olabilmek için davetiye
sistemi kullanan bu trackerlar nadirende olsa üyeliklerini kısa bir süre için
kullanıcılara açabilirler.
21 Şubat 2013 Perşembe
PC vs. Konsol
PC oyunculuğu ve konsol oyunculuğu forumlarda devamlı
tartışılan bir konu ve ben bu konudaki naçizane görüşlerimi sunmak istiyorum. Öncelikle
iki platformunda kısa bir tanımını yapalım;
PC birbirinden farklı konfigürasyonlarla oluşturulabilen
üzerinde oyun oynamak dışında birçok başka işleminde yapılabilmesini sağlayan
bir platform.
Konsol sabit bit konfigürasyon olarak üretilen ve amacı
sadece oyun olan bir platform.
Rakipleri tanıdığımıza göre konumuza dönebiliriz. Konsol oyuncuları
her zaman konsolların rahatlığından dem vurular aslında haklıdırlar. Mesela konsollar,
yeni modelleri çıkana kadar konsola çıkan her oyunu tatmin edici bir
performansla oynayabilirler. Aynı zamanda oyun ile ilgili herhangi bir ayar
yapmak zorunda kalmazlar. Her şey ayarlıdır. PC kullananlar ise bir oyunu
oynayabilmek için öncelikle oyunun sistem ihtiyaçlarına cevap veren bir PC’ye
sahip olmalıdırlar. Oyun ile ilgili ayarlarımda kendi bilgisayarlarına göre
tekrar ayarlamak zorundadırlar. Madalyonun diğer yüzünden olaya bakar isek
konsol oyunları konsolun konfigürasyonu ile sınırlı iken PC için bu sınır kolay
bir şekilde(yeni donanım yani para) çözülebilir. Şuanda oldukça popüler olan
Battlefield 3 oyununun konsol ve PC screenshootlarına bakar iseniz aradaki
farkı görmeniz mümkün. Diğer yandan konsollarda korsan içerik kullanmak bir
hayli sıkıntılı iken PC’ler için böyle bir sıkıntı hemen hemen yoktur. (aslında
bu bakış açısı oyun yapımcıların konsollara yönelmesinin en önemli nedeni, PC’nin avantajı gibi görünen korsan kullanım
aslında PC oyunculuğunun önündeki en büyük engel).
Aslında bu
karşılaştırmada diğer karşılaştırmalar gibi gereksiz, PC mi konsol mu diye
düşünüyorsanız önceliklerinizi belirleyip seçiminizi ona göre yapmak
zorundasınız.
AKK Adil Kullanım Kotası Saçmalığı !
Ülkemizin güzide servis sağlayıcıları tarafından biz
kullanıcılara uygulanan bir uygulama. Uygulamanın amacı olarak lanse edilen -herkesin
bağlantı kalitesi yüksek tutmak- mottosu neresinden tutarsan tut elde kalıyor.
Sevgili servis sağlayıcı firmamız, altyapı kalitesini kullanıcı sayısı ile
orantılı olarak artırmayarak maliyetten kısmakta, diğer taraftan insanları hali
hazırda kullanmış oldukları internet bağlantısı üzerinden hak iddia etmekteler.
İnsanların interneti korsan materyal için kullandığı algısı sanırım tüm servis
sağlayıcılarımızda mevcut. Bu arada ben ülkemizde korsan kullanım yoktur
diyemeyeceğin zira yüksek oranda bir kullanım söz konusu fakat ya korsan
kullanmayan kesim onları nasıl ayırmayı düşünüyorsunuz. Pire için yorgan
yakarken gerekli yasal düzenlemeler ya da daha doğrusu orijinal ürünlerin
fiyatlarının ülkenin gelir düzeyine göre belirlemiyorsunuz. Şahsen ben elimden
geldiğince orijinal yazılım kullanmaya özen gösteriyorum. Sıkı bir oyuncu
olarak maalesef oyunları Türkiye’den almaya kalktığımda fahiş fiyatlar beni
bezdiriyor ve haliyle beni alternatiflere yönlendiriyor.(steam, origin gibi )
Örnek olması hasebiyle benim steam üzerinden almış olduğum oyun Max Payne 3’ün
yaklaşık dosya boyutu 35 GB (oha). Şimdi
haliyle bu oyunu steam üzerinden orijinal olarak aldım ama iş oynamaya
geldiğinde servis sağlayıcı firma bana “dur arkadaş kotayı aştın al sen şu
düşük bağlantı ile idare et” diyor. Sonuç ne olursa olsun adil kullanım kotası
kendi içinde saçma olan ve olması gerekeni geciktirmek için servis sağlayıcısı
firmalarımız tarafından yapmadıkları altyapının faturasının biz kullanıcılara
kesilmesinden başka bir şey değildir.
En hızlı programlama dili!
Bu soru uzun zamandır forumlarda tartışılıyor ama halen
cevabı bulunamadı… Bir cevap olmamasının yegâne sebebi sanırım en iyiden kastın
ne olduğunun tam olarak belirlenememesi, en iyi nedir? En hızlı olan mı, en
güvenli olan mı, en çok kullanılan mı? Şimdi sizi bir forumdaki mesaj
kuyruğunda gördüğüm mesajı aktarayım;
İlk mesajda soruyu soran arkadaş gayet masumane
programlamaya ilgi duyduğunu ama hangi programlama dilini kullanması gerektiğini
bilmek istediğini belirtmiş. Şimdi gelelim birbirinden fantastik cevaplara (
bundan sonraki yazdıklarım forum mesajından aklımda kalanlar birebir aynı
olamayabilir )
C# ya da .net tabanlı bir dilden başlaması gerektiğini
belirten bir mesaj var. Hemen altında zıpkın bir Java’cı, c# ın Java’dan arak
olduğunu ve platform bağımsız olmadığını belirtmiş. ( aslında doğru bir tespit
) Bir sonraki mesajda C/C++ dilleri tavsiye edilmiş ve sebep olarak performans
verilmiş, ardından gelen mesajda asambleye tavsiye edilmiş performs olarak en
iyisinin bu olduğu söylenmiş. Ve gelelim mesajın en fantastik cevabına konuyu
açan arkadaş konuyu kapatmak adına aynen şunları yazmış “ cevaplarınız için
teşekkürler Makine Dilini öğrenmeye karar verdim” .
Aslında yukarıdaki mesajlarda geçen ifadelerin hepsi doğru
fakat ortada mutlak bir doğru olamadığı için sorunun cevabı muallakta kalmış. Söz
gelimi Windows için uygulama geliştiriyorsanız .net sizin için iyi bir seçim
olabilir. Ya da hazırladığınız programın birçok platformda çalışmasını
istiyorsanız Java birinci tercihiz olabilir. Ya da oyun veya sistem yazılımı
gibi performansın önemli olduğu konularda C/C++ iyi bir seçim olabilir.
Aslında en iyi programlama dili yerine hedeflerin iyi
belirlendiği ( hangi platform, yazılım türü gibi ) durumlarda en iyi
programlama dilini aramak daha mantıklı. Soru şu şekilde olsaydı “Windows sisteminde
çalışacak programlar yazmayı düşünüyorum sizce en iyi programlama dili nedir? “
bu sorunun cevabı soruyu soranı daha iyi yönlendirebilirdi.
20 Şubat 2013 Çarşamba
Linux vs. Windows?
Baştan söyleyeyim karşılaştırmanın kendisi bile yanlış çünkü karşılaştırılan kavramlar birbirinden farklı şeyleri ifade ediyor. Windows Microsoft firması tarafından geliştirilen ve ücret karşılığı alına bilinen bir işletim sistemi, Linux ise bir işletim sistemi çekirdeğidir. Hal böyleyken aslında başlık şu şekilde olmalıydı Windows vs. Linux Dağıtımları. Peki, ben niye bu şekilde bir başlık kullanmadım, cevabı basit internet camiasında iki karşılaştırmada aynı algılanıyor. Yeterince laf kalabalığı yaptığımı düşünerek konuya başlıyorum. Windows’un Linux’a karşı sürülen en büyük artısı, kolay kullanılabilmesi olarak görülür. Aslında bu çokta doğru değildir. Linux’un birçok dağıtımda Windows ile kafa kafaya olabilecek gui mevcuttur. Mesala kde,gnome vb. peki neden hala Windows’un kullanımın kolay olduğu ileri sürülüyor cevap ise alışkanlıklarımız! Microsoft Windows 95 ile birlikte Windows’a kazandırdığı grafiksel arayüz ile sektöre hızlı bir giriş yaptı fakat Linux o sıralarda henüz emekleme aşamalarında olduğu için ve hedef kitlesi Server’lar olduğu için bu pazara girmedi. Gel zaman git zaman Linux’ta artık desktop pazarında olmaya karar verdiğinde ise insanlar artık Windows’un klasik arayüzüne aşina oldukları için Pazarda yer bulamadı. Bunun en güzel örneğini Windows 8 de görebiliriz. Başlat menüsünün kaldırılıp yerine metro arayüzü getirilmesi ile kullanıcılardan şikâyetler almaya başladılar. Hâlbuki Windows 8 ile gelen metro arayüzü oldukça şık ve kullanışlı iken insanlar neden şikâyet ediyorlar. Cevap yine aynı alışkanlıklar!
PlayStation 3'ün bir türlü kullanılamayan gücü!
Bu geyik yıllardan
beri çeşitli forumlarda tartışıldı istihare edildi fakat bir türlü söz
birliğine varılamadı. Peki, neydi bu PS3’ün kullanılamayan gücü, mimarisinin cell
işlemcisine dayanması mıydı yoksa bluray formatının kullanması mıydı? Şimdi
oyun geliştiricilere kulak veriri iseniz aslında konunun ne olduğu daha iyi
anlaşılacak. "cell mimarisinin önceki mimarilerinden farklı bir
mimaride gelmesi" buda geliştiricileri özdeş platformlardaki
mimari farkını minimize etmeye yöneltiyor. Şu şekilde örnekleyebiliriz. Xbox
360 ve ps3 için geliştirilen bir oyunun iki platformlarda da özdeş çalışması
hedeflenir buda geliştirme masraflarının önüne geçerek karı maksimize etmeyi
sağlar. mimari farklardan dolayı ana platform olarak mecburen Xbox 360
kullanılır ve ps3 e port edilir. buda kafaya şu soruyu getirebilir neden ana
platform xbox360 cevap aslında basit geliştirmesi ve platform sınırları
daha iyi bilindiği için. bu durumu anlamanın en kolay yolu ps3 için özel
üretilen oyunların multiplatform oyunlardan kalite olarak farkını
gösterebiliriz. sonuç olarak aslında ps3 ün kullanılamayan gücü yok sorun geliştiricilerin hali hazırda piyasada muadili olan bir sistemde çalışan bir
uygulamanın üstüne çıkmak istememeleri.
Kaydol:
Kayıtlar (Atom)