27 Temmuz 2009 Pazartesi

3G Şakası


Bugün Avea 3G fiyatlarını açıkladı. Ancak bu fiyatlar dünya standartlarının çok üstünde. Ayrıca kotasız bir tarifede yok. Ücretlendirmeler şöyle;
  • Görüntülü Konuşma ücreti her yöne dakikası 10 kuruş/1 kontör olacak.
  • Cepten TV izlemek abonelik ücretine dahil olacak ve fiyatlar 5 TL'den başlayacak.
  • Belirli bir video, film seçip indirmenin ücreti ise 3,5 TL.
  • Cep telefonu için 100 MB kotalı bağlantı 8 TL
  • 2GB Kotalı bağlantı ise 35 TL.
  • Bilgisayar bağlantıları içinse 3G internet hızının maliyeti, 2GB 35 TL. 6GB 55 TL.
Birçok kişi 3G'nin TTNET ADSL hizmetine bir seçenek olacağını umut ediyordu. Ancak bu fiyatlarla normal kullanımın bile pahalı olduğunu söyleyebiliriz.

Diğer operatörlerde fiyatların çok oynamayacağını düşünüyorum. 3 gün sonra tüm operatörler tarifelerini açıklamış olacaklar.

Güncelleme:

Turkcell'inde fiyatlarıda çok farklı değil, işte fiyatlar.
  • 1 GB internet bağlantısı aylık 29TL, 4 GB 39TL, 8GB ise 69 TL.
  • Haftalık kullanmak isterseniz, 1 GB internet 19 TL.
  • Cepten internete girmek isterseniz, 100 MB 9 TL / 65 Kontör

23 Temmuz 2009 Perşembe

Ogre ile Küçük Bir Deneme

Önceki yazıda ogre ile uğraştığımdan bahsetmiştim. Deneme amaçlı bir oyun yazmaya çalıştım. Her projede kullanabileceğim bir kod oluşturmak istedim, ancak yeniden yazılması gerekiyor.

Kısaca anlatmam gerekirse, 3000x3000 lik bir düzlemde kamera, ağaçlar, kutular, çimler ve zombiler rastgele yerleştiriliyor. Daha sonra sizden oyundaki zombileri öldürmeniz isteniyor :). Oyunda Ogre'nin haricinde NxOgre eklentisini kullandım.


Linkler
NxOgre:
http://www.nxogre.org/
NxOgre Forum:
http://www.ogre3d.org/addonforums/viewforum.php?f=6

6 Temmuz 2009 Pazartesi

Ogre

Son günlerde OGRE (Object-Oriented Graphics Rendering Engine) ile uğraşmaya başladım. Kendim için ufak bir oyun projesine giriştim ve internetteki açık kaynak kodlu oyun motorlarını incelemeye başladım. Her ne kadar OGRE bir oyun motoru olmasada, özelliklerinin çok fazla olması dikkatimi çekti.

Biraz uğraştıktan sonra birşeyler oluşmaya başladı. Bir iki ekran görüntüsü veriyorum.



Siz de incelemek isteyebilirsiniz. Linkler aşağıda.

Linkler
Ogre Anasayfası:
http://www.ogre3d.org/
Ogre'nin Özellikleri:
http://www.ogre3d.org/about/features

5 Temmuz 2009 Pazar

SQLite Nedir ?

SQLite kullanımı ve kurulumu oldukça basit olan bir veritabanı kütüphanesidir. Özelliklerinin tam listesini sitesinde bulabilirsiniz ancak ben bazılarını buraya aktarıyorum.

  • SQLite'ın çalışması için herhangi bir sunucuya ihtiyacı olmadığı için, kurulum ve ya konfigürasyon adımları yoktur.
  • Her veritabanı için sadece bir dosya vardır. Bu da veritabanının yedeklenmesini ve kopyalanmasını kolaylaştırır.
  • Platform bağımsızdır.
  • SQLite kompakttır. Tüm kütüphanenin boyutu 225kb'dır. Bazı özellikler çıkartılarak, bu boyut 170kb'a kadar indirilebilir. Bu sayede embedded ve ya symbian gibi platformlar için uygundur.
Özelliklerin tam listesini burada bulabilirsiniz.

SQLite'ın eşdeğeri olarak Oracle'ı ya da MySQL'i düşünmemelisiniz. Sitesinde de çok değinildiği gibi SQLite fopen'ın yerini almayı amaçlayan bir kütüphanedir. SQLite'ın size uygun olup olmadığını daha rahat anlamak için ne zaman kullanmalı sayfasına buradan göz atabilirsiniz.

SQLite ve C++, Basit bir örnek.

Öncelikle işlem yapabilmemiz için bir veritabanımızın olması gerekiyor. Bunun için http://www.sqlite.org/sqlite-3_6_16.zip adresinden sqlite3'ü indiriniz. Konsoldan sqlite3.exe'yi aşağıdaki şekilde başlatınız.

sqlite3 test.db

Argüman olarak "test.db" verdiğimiz için, herhangi bir tablo yarattığınızda, bu tablolar test.db dosyasına kayıt edilecektir.

Şimdi test veritabanımızda bir tablo oluşturuyoruz. Aşağıdaki SQL sorgusunu açtığınız sqlite3 programında yazınız.

CREATE TABLE users( id INTEGER PRIMARY KEY,
         name VARCHAR(25),
         lastname VARCHAR(25),
         email VARCHAR(100)
);

Böylelikle, veritabanımızda kullanıcıları tutabileceğimiz bir tablo oluşturmuş olduk. id Primary Key olarak tanımlandığı için otomatik olarak arttırılacaktır (autoincrement), bu SQLite'ın bir özelliği, çünkü normalde primary key olmasının haricinde autoincrement olarak da tanımlamadan o kolon autoincrement olmaz. Name ve lastname 25 karakter ve email ise 100 karakter olarak oluşturulmuştur. Programı kapatmadan önce birkaç veri girerek tabloyu dolduralım.

INSERT INTO users VALUES (NULL, 'Ercan', 'Gerçek', 'mail@mail.com');
INSERT INTO users VALUES (NULL, 'İsim', 'Soyisim', 'mail@mail.com');

Bu girdiğimiz iki veriyi listelemek için, bir SELECT sorgusu atmamız yeterli olacaktır.

SELECT * FROM users;

dediğiniz taktirde kullanıcılar listelenecektir.
( ';' koymayı unutmayın )

Eğer kolon isimlerini de görmek istiyorsanız

.explain on

yazarak bu seçeneği açabilirsiniz. Bundan sonraki SELECT sorgularında kolon isimleride listelenecektir.

Diğer komutlarıda görmek için '.help' yazmanız yeterlidir.

Eğer bir tablonun içeriği bir dosyaya yazdırmak isterseniz, aşağıdaki komutları girin.

.output deneme.txt
SELECT * FROM users;

ve çıkışı eski haline getirmek için tekrar

.output stdout

demeniz gerekiyor. Aksi taktirde tüm sorguların cevapları deneme.txt dosyasına yazdırılacaktır.

Artık bir veritabanımız olduğuna göre, bunu açmak için bir C++ programı yazabiliriz.
Önce SQLite'ın kaynak kodunu buradan indiriniz. (Güncel versiyonu için sitesine bakınız.)

main.cpp
==================================================
#include <stdio.h>
#include "sqlite3.h"

int main(int argc, char **argv)
{
   sqlite3 *db;
   // veritabanına bağlantı açıyoruz.
   int ret = sqlite3_open("test.db", &db);
   sqlite3_stmt *stmt;
   int rc = sqlite3_prepare(db, "SELECT * FROM users", -1, &stmt, 0);
   while(sqlite3_step(stmt) == SQLITE_ROW) {
      printf( "id:%s, name:%s, lname:%s, email:%s \n",
         sqlite3_column_text(stmt, 0),
         sqlite3_column_text(stmt, 1),
         sqlite3_column_text(stmt, 2),
         sqlite3_column_text(stmt, 3));
   };
   sqlite3_finalize(stmt);
   sqlite3_close(db);

   return 0;
}
==================================================


Eğer id gibi değerleri integer olarak almak istiyorsanız,

int id = sqlite3_column_int(stmt, 0);

demeniz yeterli.

SQLite projesinin C/C++, PHP, Perl, Python, Tcl gibi diller için hazır API'si bulunmakta, fakat C# için bulunmamaktadır. Ancak bunun için codeproject'te çeşitli projeler bulunmaktadır. http://www.codeproject.com/KB/cs/SQLiteCSharp.aspx adresinde C# da SQLite'ı nasıl kullanabileceğiniz açıklanmaktadır.

Linkler

Kaynak:
http://www.sqlite.org
SQLite'ı ne zaman kullanmalısınız:
http://www.sqlite.org/whentouse.html
SQLite'ın öne çıkan özellikleri:
http://www.sqlite.org/different.html
SQLite ve C#:
http://www.codeproject.com/KB/cs/SQLiteCSharp.aspx
SQLite Download Sayfası:
http://www.sqlite.org/download.html