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

17 Haziran 2009 Çarşamba

Apache, PHP ve MySQL Kurulumu


Apache Kurulumu

İlk önce, apache'nin kurulum dosyası indirilir. Son versiyonunu http://httpd.apache.org/download.cgi adresinden ya da http://godel.cs.bilgi.edu.tr/apache/httpd/binaries/win32/apache_2.2.11-win32-x86-no_ssl.msi linkinden apache 2.2.11'i indirebilirsiniz.

Apache sunucusunu kurmadan önce, IIS'in kapalı olduğundan emin olun. IIS'i kapatmak için Denetim Masası->Yönetimsel Araçlar->Hizmetler'i açın. Sonra "World Wide Web Publishing" hizmetine sağ tıklayıp bu hizmeti durdurun. Bu hizmet sizde yüklü olmayabilir, yüklü değilse herhangi bir işlem yapmanıza gerek yok.


İndirdiğiniz dosyayı açın. Yukarıdaki ekrana geldiğinizde, alanları yukarıdaki gibi doldurabilirsiniz, zaten geliştirme amaçlı bir sunucu kurduğunuzdan bu bilgilerin çok da doğru olmasına gerek yok. İlk seçeneği seçerseniz, sunucu windows açıldığında otomatik başlatılacaktır. İkinci seçenekte ise, sunucuyu kullanmak istediğinizde sunucuyu başlatmanız gerekmektedir. Yüklemeyi herhangi bir değişiklik yapmadan tamamlıyoruz.Yükleme sırasında windows güvenlik duvarı uyarı verirse, engellemeyi kaldır seçeneğini seçmelisiniz. Yüklemeden sonra bilgisayarınızı yeniden başlatın.

Eğer yükleme düzgün olarak tamamlandıysa, windows'ta saatin yanında üzerinde yeşil ok bulunan bir apache logosu görmeliyiz. Şimdi internet explorer veya firefox gibi bir tarayıcıdan "http://localhost" adresine gidin. Eğer düzgün çalışıyorsa, "It works!" veya buna benzer bir mesaj/sayfa ile karşılaşacaksınız.

Eğer yeşil ok görünüyor ancak bu sayfaya ulaşamıyorsanız, apache'nin yükleme klasörüne gidin, bende "C:\Program Files\Apache Software Foundation\Apache2.2\conf" şeklinde bir dizinde. Bu dizindeki httpd.conf dosyasını açın, "Listen 8080" gibi bir satır görürseniz, bu sizin sunucunuzun 8080 portunu dinlediğini belirtir. Bu sefer, tekrar tarayıcınızı açın, adres olarak "http://localhost:8080/" yazın. Artık yukarıda bahsettiğim gibi bir mesajlar karşılaşmalısınız.

httpd.conf dosyasında, 'ServerRoot "C:/Program Files/Apache Software Foundation/Apache2.2"' satırı, sunucu kök dizinini belirtiyor. Bu dizini daha basit bir dizinle değiştirebilirsiniz.

Bu dizinin kullanımına örnek olarak "C:/Program Files/Apache Software Foundation/Apache2.2/deneme.jpg" dosyasına, "http://localhost/deneme.jpg" olarak tarayıcınızdan ulaşabilirsiniz.

Son olarak, windows'un kendi WWW hizmetini kullanıyorsanız, apache'nin portunu değiştirmeniz gerekebilir. httpd.conf dosyasında "Listen 80" satırındaki 80 portunu istediğiniz bir sayıyla değiştirebilirsiniz.


Php Kurulumu

Php kurulumuna ilk olarak, php kurulum dosyasını indirerek başlıyoruz. http://www.php.net/downloads.php adresinden, ya da http://www.php.net/get/php-5.2.9-2-Win32.zip/from/a/mirror adresinden versiyon 5.2.9'u indirebilirsiniz.

İndirdiğiniz dosyayı, herhangi bir klasöre çıkarın. "C:\php" klasörü örnek olabilir. Açtığınız klasörde bulunan "php.ini-dist" dosyasını "php.ini" olarak yeniden adlandırıyoruz. Bu dosyayı not defteri veya herhangi bir yazı editörüyle açıyoruz. "doc_root =" satırını buluyoruz. Bunun için arama fonksiyonunu kullanmanızı öneririm. Bu satırı apache'nin kök diziniyle aynı yapın. Ben herhangi bir değişiklik yapmadığım için "doc_root = C:\Program Files\Apache Software Foundation\Apache2.2\" olarak değiştiriyorum. Aynı şekilde 'extension_dir = "./"' satırını da 'extension_dir = "C:\php\ext"' olarak değiştiriyoruz.

Şimdi ise, Php'yi apache'ye tanıtmamız gerekiyor. Bunun için "C:\Program Files\Apache Group\Apache2\conf\httpd.conf" dosyasını açıyoruz. Bu dosyada LoadModule bulunan satırların en altına gidip oraya birkaç satır eklememiz gerekiyor.

LoadModule php5_module "c:/php/php5apache2.dll"
AddType application/x-httpd-php .php
PHPIniDir "C:/php"

Bu satırlarıda ekledikten sonra dosyayı kaydedip, apache'yi yeniden başlatıyoruz. Bunun için saatin yanındaki apache simgesine sol tıklayıp Restart seçeneğini seçin. Eğer bir hata oluşmazsa apache'nizin artık php desteği olmalı. Eğer restart esnasında hata alırsanız, büyük ihtimalle versiyonlar uymuyordur.

LoadModule php5_module "c:/php/php5apache2.dll" satırını
LoadModule php5_module "c:/php/php5apache2_2.dll" olarak değiştirip kaydedin ve tekrar apache'yi yeniden başlatın. Bu kez herhangi bir sorun çıkmaması gerekiyor.

Apache simgesine çift tıkadığınızda açılan pencerede artık php yazısını görmeniz gerekiyor. (Resimdeki gibi)


Çalışan php sunucunuzun özelliklerini öğrenmek için, info.php adlı bir dosya oluşturun ve içine aşağıdaki satırları yazın.

<?php
phpinfo();
?>

Bu dosyayı çalıştırdığınızda aşağıdaki gibi bir sonuç almalısınız.



MYSQL Kurulumu

Her zamanki gibi, yine kurulum dosyasını indirmekle başlıyoruz işe. Şu an ki son versiyonu 5.1 olduğundan http://dev.mysql.com/downloads/mysql/5.1.html#win32 linkinden, windows için olan kurulumlardan Windows Essentials (x86)'yı indiriyoruz. İster kayıt olarak, ister olmayarak indirme işlemini tamamlıyoruz. İndirme işlemi bittikten sonra, kurulum dosyasını çalıştırarak, kurulumu bitiriyoruz. Diyaloğu bitirmeden önce, Configure Server seçeneğini seçili bırakıyoruz. Yeni çıkan pencerede sunucumuzu ayarlıyoruz.

Yeni pencerede, Next diyip "Detailed Configuration"ı seçiyoruz. Bir sonraki sayfada, Developer Machine'i seçiyoruz ve devam ediyoruz. Sonraki sayfada Multifunctional Database'i işaretleyip bir sonraki sayfaya geçiyoruz. Bu sayfada C'ye kurulum yapıcağımız için geçiyoruz ve sonraki sayfalarda, Decision Support, sonrakinde değişiklik yapmadan devam ediyoruz. Bir sonraki sayfada Best Support For Multilingualism seçeneğini seçiyoruz. Sonraki sayfayıda geçiyoruz. En son olarak root şifremizi girip, işlemi sonlandırıyoruz. "Execute" demeden önce, Zone Alarm gibi bir firewall kullanıyorsanız, ya 3306 portu için izin verin, ya da firewall'u kapatın.

Hepsinin beraber çalışabilmesi için mysql'i php'ye tanıtmamız gerekiyor. C:\php\php.ini dosyasında
;extension=php_mysql.dll
satırındaki noktalı virgülü kaldırıyoruz.
extension=php_mysql.dll

Bir sonraki adımda C:\php klsaöründe bulunan libmysql.dll dosyasını C:\Windows\system32 klasörüne kopyalamamız gerekiyor. Son olarak da apache'yi yeniden başlatıyoruz.

Bu adımıda uyguladıktan sonra, daha önce hazırladığımız http://localhost/info.php adresine gittiğinizde aşağıdaki resimdeki gibi bir sonuç almanız gerekiyor.


16 Haziran 2009 Salı

Yerel IIS'de ASP.NET ile MSSQL bağlantısı nasıl sağlanır ?


Kendi bilgisayarınıza asp.net sunucusu kurduysanız ve veritabanı olarak mssql kullanıyorsanız, farkedeceğiniz gibi web sayfanızda, sql bağlantısı açılırken, size bağlantı hatası verecektir. "Login Fail" ya da buna benzer bir hata oluşacaktır.

Buna benzer bir sorunu düzeltmek için mssql sunucunuza gerekli kullanıcıları, uygun izinlerle oluşturmanız gerekmektedir.

Bunu gidermek için birkaç adım izledim, ancak bazı adımlar sizin için fazla olabilir. Kendi sorunumuz çözerken hepsini uygulamam gerekti, umarım sizin için de faydalı olur.

Komut istemi açılarak, .net framework'ün bulunduğu dizine gidilir. Benim için bu dizin "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" şeklinde. Bu dizindeyken "aspnet_regsql.exe" çalıştırılır. Burada karşımıza çıkan pencere izlenir. Sunucunuzun ismi (sunucu isminiz büyük ihtimalle BİLGİSAYARADI\SQLEXPRESS olacaktır) ve bağlanacağınız veritabanı seçilir ve diyalog sonlandırılır. Yaptığınınz ayarların işe yarayıp yaramadığını anlamak için, Sql Management Studio'yu açıp, veritabanı kullanıcılarını "Datebase Roles"dan kontrol edin. Eğer yeni database roles oluşturulmadıysa aşağıdaki adımıda uygulayabilirsiniz.


Gerekli olmayabilir ancak sunucunuza bağlantı sağlanmazsa bu adımıda uygulayabilirsiniz. Komut isteminde, yine aynı dizindeyken, "aspnet_regsql.exe -A all -sqlexportonly C:\runproviders.sql" yazarsanız, c'ye runproviders.sql oluşturulacaktır. Bunuda Sql Management Studio ile çalıştırabilirsiniz.



Son olarak kullanıcı oluşturmamız gerekiyor. Sql Management studio'da Security altındaki Logins'e (Veritabanlarının altındaki security sekmesiyle karıştırmayın.) gelinir. Buna sağ tıklanarak "New Login" denir. Bende login ismi "ERCAN-DATRON\ASPNET" olduğu için bu isimle bir login oluşturuyorum. Şifre olmaması için “Windows Authentication” seçilir. Eğer şifre ile bağlanmak istiyorsanız, "SQL Server authentication"ı seçmeniz gerekiyor. Kendinize isteğinizce göre aşağıda bulunan üç kutucuk seçilir ya da kaldırılır. Kullanacağınız veritabanını, bu kullanıcı için varsayılan olarak atamanız gerekiyor. Bunun için "Default Database"e tıklayarak, kendi veritabanınızı seçin.



En son olarak, kullanıcı oluşturma penceremize iki küçük ayar yapıyoruz. İlki "Server Roles" sekmesinde "sysadmin"i seçiyoruz.


İkinci olarak da, "User Mapping" sekmesinden, varsayılan olarak atadığımız veritabanını seçiyoruz.

28 Mayıs 2009 Perşembe

IIS Nasıl Kurulur ve ASP.NET(aspx) nasıl çalıştırılır ?



Önce windows yüklü bilgisayarınıza IIS'i yüklemek için, denetim masasından -> program ekle/kaldır açılır. Burdan windows bileşeni ekle/kaldır(resimdeki) kısmından IIS seçilerek, bu bileşen kurulur.

Bilgisayarınızı yeniden başlattığınızda, büyük ihtimalle "WWW" servisi bilgisayarınızda otomatik olarak başlatılır. Bunu tarayıcınızdan "localhost" adresine gidip öğrenebilirsiniz. "WWW" hizmeti başlamışsa windowsun bir sayfasıyla karşılaşacaksınız, aksi takdirde bu adresi açmaya çalışan tarayıcı başarılı olmayacakır. Eğer otomatik olarak başlamadıysa, denetim masası altından yönetimsel araçlar'dan -> servisler açılır, listede "WWW" servisi bulunur ve başlatılır (resimdeki gibi).Yine yönetimsel araçlardan "Internet Information Services" yani IIS açılır. Burda Varsayılan Web Sitesi (Default Web Site) sağ tıklanarak, Script Resources'ın altındaki "Read" ve "Write" kutucukları işaretlenir (resimdeki gibi).

Varsayılan olarak belirtilen "C:\Inetpub\wwwroot"(isterseniz yönetimsel araçlar'dan -> IIS kısmından bu yolu değiştirebilirsiniz) klasöründe oluşturduğunuz asp dosyaları otomatik olarak çalışacaktır, yalnız farkedeceğiniz gibi aspx dosyalarını aynı şekilde bu dizine kopyalarsanız, bu dosyalar çalıştırılmayacaktır.

Aspx dosyalarını çalıştırmanız için, eğer yüklü değilse, öncelikle asp.net framework'ü yüklemeniz gerekmektedir. İndirmek isterseniz http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=en adresinden indirebilirsiniz (asp.net 2.0)

Framework kurulduktan sonra "%windir%\Microsoft.Net\Framework\xxxxxxxx\" klasörüne gidilir. Bende bu klasör "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" şeklinde. Bir komut istemi penceresi açılır. Bunu başlat->donatıların altından, ya da çalıştır'a cmd yazıp açabilirsiniz. Komut isteminde yukarıda belirtilen klasöre gidin, ve bu klasördeyken “aspnet_regiis.exe –i” komudunu çalıştırın (resimdeki gibi).Son olarak internette okuduklarıma göre yine bu klasördeyden “regsvr32 aspnet_isapi.dll” komudu çalıştırılır. Bende bu komudu çalıştırmama gerek kalmadı. Belki vista'da gerekli olabilir diye not ediyorum. Siz isterseniz yinede çalıştırabilirsiniz.

Eğer yukarıda yazılanları doğru olarak uyguladıysanız, asp.net sunucunuzun çalışması gerekiyor.

"inetpub" klasörüne attığınız aspx dosyaları çalışırken web.config dosyanız “” satırında hata verebilir. Bu hatanın sebebi aspx dosyalarının bulunduğu klasörü bir uygulama olarak belirtmemenizdir. O klasörü bir uygulama olarak belirtmek için, Yönetimsel Araçlardan -> IIS e girilir. Oluşturduğunuz klasör'ün orda listelenmesi gerekir. Bu klasöre sağ tıklayıp "directory/dizin" sekmesinden "application name/uygulama ismi" boş ise(Default Application/Varsayılan Ugulama yazıyorsa) yenisi oluşturulur (resim).
Sitenizi açmaya çalıştırdığınızda yine hata verirse, bilgisayarı yeniden başlatmanız gerekebilir. Bunun yerine komut isteminden "iisreset" yazarak, IIS'i yeniden başlatabilirsiniz.


Sitenizde mssql bağlantısı kullanıyoranız, büyük ihtimalle "login fail" ya da buna benzer bir hata oluşacaktır. Bunuda bir sonraki konuda anlatmayı planlıyorum.

Umarım bu yazı size yardımcı olmuştur. Bu konuda herhangi bir sorunuz olursa, yorum kısmını kullanarak sorabilirsiniz.

3 Mayıs 2009 Pazar

ASP.NET Precompile


Asp.net ile bir sayfa oluşturduğunuzda, herhangi bir kullanıcı sayfaya ilk isteği yaptığında, sayfa derlenir. Dolayısıyla ilk istekte sayfanın açılış süresi oldukça uzundur. İkinci ve sonraki isteklerde, sayfa daha hızlı yüklenir ve dosya değiştirilene ya da sunucu yeniden başlayana kadar bu böyle sürer.

Asp.net sayesinde, oluşturduğumuz sayfaları kendi makinamızda derleyebilir, ve sunucuya sadece derlenmiş binary dosyaları yükleyebiliriz. Derleme yapmanın avantajlarını listelemek gerekirse;
  • İlk açılış süresi azalır.
  • Yazmış olduğunuz değerli kodlarınızı sizinle aynı yetkiye sahip kişilerden korumuş olursunuz :).
Dezavantajları ise;
  • Sitenizi sunucuya yüklemeden önce derleme işlemini her seferinde yapmanız gerekir.
  • Ufak tefek değişikliklerde de yeniden derleme yapmak gerekir.
Oluşturduğunuz sayfaları derlemek için ise aşağıdaki basamakları izlemelisiniz.
  1. Dermele yapıcağınız versiyonun klasörüne gidin. "%windir%\Microsoft.NET\Framework\version", bu yol bende, "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" şeklinde.
  2. Bu dizinde bulunan aspnet_compiler.exe'yi kullanarak oluşturduğunuz sayfaları derleyin. En basit kullanımı, "aspnet_compiler -p c:\projem\ -v / C:\derlenmiş_projem\" şeklindedir.
Derleme tek şekilde değildir. Size uygun derleme çeşitleri için msnd'in sitesinden bakabilirsiniz.
Kaynak