PDO (Php Data Objects) nedir ?

“PHP Data Objects (PDO) eklentisi PHP içerisinde veritabanlarına erişim için küçük, kararlı bir arayüz tanımlar. PDO arayüzünü implemente eden herbir veritabanı sürücüsü kendi eklentilerindeki veritabanına has özelliklerini kullanılabilir hale getirirler. PDO eklentisinin kendisi ile herhangi bir veritabanı işlevi yerine getiremezsiniz. Veritabanına erişmek için veritabanına has PDO sürücüsünü kullanmalısınız.

PDO veri-erişim katman soyutlaması sunar, yani kullandığınız veritabanı ne olursa olsun sorgu ve veri çekmek için aynı fonksiyonları kullanırsınız. PDO veritabanı soyutlaması sağlamaz; SQL in yeniden yazılması değildir, veya eksik özelliklerin tamamlanması değildir.

Php kendi sayfasında tanımladığı biçimiyle ve benim bedbahd ingilizcemin yettiği kadarıyla çevirisi bu biçimde. Şimdi durumu sadeleştirmek gerekirse. PHP nin Nesne Yönelimli Programlamaya ağırlık verdiği 5 sürümü ile gelen PDO bir veri erişim katmanıdır, PDO interface ini implemente ederek oluşturulmuş sürücülerini kullanarak standart bir veri erişim modeli oluşturmaktadır. PDO da standard fonksiyonlar vardır: exec,query,fetch v.b. Bu fonsiyonlar sürücü desteği bulunan bütün veritabanları için aynıdır.

Örneğin MySql e sorgu yapmak için PDO->query() metodu kullanılacaksa firebird..

PgSql veya Oracle (PDO interface ini implemente ederek oluşturulmuş birkaç sürücü daha mevcuttur; IBM,Informix,SqLite,Sybase,MicrosoftSQL,ODBC) içinde aynı metod kullanılacaktır. 

Bu da bize farklı veritabanları kullanmamız gerektiği zaman bunların PHP için olan eklentilerine dalıp farklı fonksiyonları içerisinde kayolmamızın önüne geçmekte. 

Tabi sağladığı yararlar bununla sınırlı değil, ileride kullandıkça örneklerimizdeki açıklamalarla sağladığı faydalar daha net anlaşılabilir.

PDO 5.1 sürümü ile kullanılmaya başlamıştır. PDO yu kullanabilmek için  php.ini dosyasındaki PDO yu etkinleştirmelisiniz bununla birlikte veritabanına has olan PDO sürücüsünü de etkinleştirmelisiniz. 

Yoğun biçimde MySql kullanıldığı için biz MySql eklentisini etkinleştireceğiz, bunun için php.ini ye şu satırları ekleyebilirsiniz;

[PHP_PDO]
extension=php_pdo.dll
[PHP_MYSQL]
extension=php_mysql.dll

Bu adımdan sonra bir örnek ile PDO kullanımını açıklayalım => Örnek 

Yukarıdaki örneği açıklayalım. PDO kurucusunda bulunan “dsn” parametresi PDO nun hangi veritabanı sürücüsünü kullanacağını belirlemesine yardımcı olan veriyi barındırır. 

Burada “mysql” yerine “mssql” veritabanına bağlanmak isteseydik “dsn” imiz şöyle olacaktı: ‘mssql:host=localhost;dbname=test’. 

Bu durumda PDO MsSql sürücüsünü arka planda yükleyecekti (tabi MsSql sürücüsünü öncelikle sizin aktif etmiş olmanız şartıyla).

Burada PHP de daha önce olmayan ve 5. versiyonu ile gelen “try catch” bloğundan bahsetmek gerekecek sanırım.  “try catch” bir hata yakalama ve oluşan hatayı göz ardı etme mekanizmasıdır diyebiliriz kabaca. İki bloktan oluşan bu yapı ile ulaşılmaya çalışılan sağlamlıktır. Uygulamada bir hata gerçekleştiğinde oracıkta sonlanmak yerine size bu hatayı yönetebilmenize olanak sağlar.

Örneğimizdeki “try catch” bloğunda PDO kurucusu sağlıklı çalıştığında ve veritabanı bağlantısını sağladığında “try” blogu çalışacak ve sorgu sonucu yazılacak ekrana. Bir hata meydana geldiğinde ise “catch” bloğu çalışacak ve meydana gelen hata ekrana yazılcaktır.

PDO ile ilgili örneklere ve PHP5 yeniliklerine ilerleyen zamanlarda değinilecektir.

Zamanda Yolculuk


Oliver Twist


Oliver Twist, İngiliz yazar Charles Dickens'ın 1838'de yayımlanan ikinci romanıdır. İlk olarak aylık bir dergide seri olarak yayınlanmıştır.

Özgün adı ; Oliver Twist; or, The Parish Boy's Progress

1837 yılında 3 cilt olarak İngilizce olarak İngiltere'nin Londra şehrinde basılmıştır.

Ayrıca 1837 ve 1839 yılları arası aylık serisi sürmüştür.

Konu ve içerik olarak sosyal eleştiri bazlı bir romandır..

Konusu :

Bir yetimhanede büyüyen yetim Oliver Twist ve diğer çocuklar, açlık çekmektedir. Daha fazla çorbayı kimin isteyeceğini belirlemek için aralarında tartışırlar. Oliver seçilir. O akşamki yemekte her zamanki yemek paylaşımından sonra Oliver, yetimhane müdürüne yaklaşır ve daha fazlasını istediğini söyler.

Yetimhane müdürü Mr. Bumble, Oliver’ı bir “sorun çıkarıcı” olarak nitelendirmiştir ve yetimhane kuruluyla birlikte onu herhangi bir isteyenin yanına çırak olarak vermeye karar verirler.

Baca temizleyici (Küçük çocukların bacaların içine sarkıtıldığı ve genellikle zehirlenerek öldüğü tehlikeli bir iş) olmaktan son anda kurtulan Oliver, cenaze levazımatçısı Mr. Sowerberry’nin yanına çırak olarak verilir. Bir başka çırak olan Noah Claypole tarafından ölmüş olan annesiyle ilgili olarak kışkırtılır ve kavgaya tahrik edilir. Haksız yere dövülür ancak kaçmayı başarır ve Londra’nın yolunu tutar.

Şehrin kenar mahallelerinden birinde aç ve yorgun dolaşırken kurnaz Dodger ile tanışır.

Dodger ona Londra’da kalacak bir yer önerir. Londra’nın karışık yeraltından ve yaptıkları işin mahiyetinden habersiz olan Oliver, kendini Fagin’in yönettiği yankesici çocuklar çetesinin içinde bulur. Ayrıca merhametsiz Bill Sykies, onun kız arkadaşı Nancy ve köpeği Bulseye ile tanışır.

Bir sabah Oliver Dodger ve Fagin’in diğer çocuklarından olan Charlie Bates ile birlikte dışarı çıkar. Dodger’in bir centilmen olan Mr. Brownlow’u soymaya çalıştığına tanık olur ve gerçek işin ne olduğunu kavrar. Ancak Mr. Brownlow olayı fark eder ve Oliver’ı gerçek suçluyla karıştırır.


İlk baskısını ön sayfaları, 1838
Bir kovalamacanın ardından başına yediği sert darbeyle düşen Oliver yakalanır ve polis tarafından götürülür. Hakim Fang tarafından sorgulanırken bir tanık Oliver’ın masum olduğuna şahitlik eder. Bunun üzerine Mr. Brownlow yaralarını iyileştirmek için onu kendi evine götürür. Böylece suçlayıcısı koruyucusu haline gelmiştir. Hem Brownlow hem de kahya kadın Mrs. Bedwin ona çok iyi davranırlar. Bu sırada Fagin ve Bill Sykies, Oliver’ın onlara ihanet ederek yetkililere haber vereceğini düşünerek ona tuzak kurmaya ve Fagin’in inine geri getirmeye karar verirler.

Oliver’ın dürüstlüğü konusunda ikna olan Brownlow, onu yerli bir tüccara 5 pound vererek bazı kitapları geri getirmesi için gönderir. Ancak Oliver, Sykies ve Nancy tarafından sokakta yakalanıp kaçırılır. Oliver’ın geri gelmeyişi üzerine Brownlow onun parayla birlikte kaçtığına ve arkadaşı Mr. Grimwig’in düşündüğü gibi en başından beri bir hırsız olduğuna karar verir. Hırsızların ininde ise Fagin, Oliver’ın Brownlow’un evini ve içindeki eşyaları anlatması için onu kandırmaya çalışmaktadır.

 Sykies ve arkadaşı Toby Crackid, Oliver’ı Bayan Maylie'nin evine yapacakları soygun için zorlarlar. Camdan girerek onlara ön kapıyı açacak küçük bir çocuğa ihtiyaçları vardır. Ancak ev halkı soygunu fark eder ve ortaya çıkan karışıklıkta Oliver vurulur. Bill Sykies, yaralı haldeki Oliver’ı taşımaya başlar, amacı onu nehre atmaktır. Oliver ile birlikte hızlı hareket edemediği için yakalanacağını anlayınca Oliver'i bırakarak kaçar. Ancak kayıp nehre düşen kendisi olur.

Toby, Oliver’ı Fagin’in inine geri götürür ve Oliver burada iyileştirilir. Nehirdeki mücadelesinden sonra Bill Sykies yüksek ateşle geri dönmeyi başarır. Fagin’e Oliver’dan kurtulmaları gerektiğini aksi takdirde işlerinin tehlikede olduğunu söyler. Nancy, Oliver’ın hayatından endişe ederek Brownlow’la temasa geçer ve Londra köprüsünün altında bir buluşma ayarlar. Ancak Fagin Nancy’yi takip ettirmiştir ve öfkelenen Bill Sykies Nancy’yi öldürür. Nancy’nin arkadaşı Bet cesedi bulup polise haber verir.

Polis Bill Sykes’i aramaya başlar. Brownlow ise Oliver’ın güvenliği için endişelenmektedir. Polisin, Sykes ve Oliver’ı, Toby Crackid’in Londra'nın varoşlarındaki evine kadar takip ettiğini öğrendiğinde ise, bu endişesi daha da artar.

 Sykes, Londra'nın varoşlarında izbe bir evde saklanırken polis tarafından sıkıştırılır, Sykes, Oliveri rehin alarak polisten kurtulma planı kurmuştur. Ama öyle birşey olmuştur ki Sykes sanki kendi sonunu hazırlamaktaydı ve o çok sevdiği köpeğinin bir havlamasının kendi sonununun getireceğinden habersizdi.

Bir anlık sesten sonra boynundaki ipten kurtulmak isterken ip boynuna geçerek havada asılı kaldı ve o kendini cezalandırmıştı. Bir süre sonra Oliver ve Mr. Brownlow New Gate hapisanesinde yavaş yavaş aklını kaybetmekte olan hırsız Fagin’i ziyarete giderler.

Fagin onu görünce sarılır ve ona daha önce sakladığı mücehverleri Oliver' a vermiştir. Oliver: Bana hep iyi davrandın ama artık Fagin gerçekten kötüleşmiştir.
Oliver'ı çıkartırlar, Fagin arkasından 'geri gel geri gel'! diye bağırır. Brownlow ve Oliver bir güneşin batışının ışığına doğru temiz bir sayfa açmak için giderler...

Kod Yazmak (1)

Bu işin altın kuralı sağlam psikoloji ve bilgidir.. Genelde moraliniz yüksekken başlayın ki verimli çalışmalar gerçekleştirin...

Gerçekleştirdiğiniz projeleri sevin ve bir koder olduğunuzu hiç aklınızdan çıkarmayın.. Herkesin bilmediği bir dili sembollerle konuşturduğunuzun bilincine varın ve yaptığınız için kutsallığının farkındalaşın..
 
Özgün olmaya çalışın.. Koderler için bu da çok önemli bir kuraldır. Özgün olmayan birşeylerin fazla ömürleri olmaz.. Gelip geçici projelere imza atmak istemeyenler kendi yorumlarını katacakları kodlar yazmalıdır.


Kod yazarken sıvı tüketimine önem verilmelidir. Ki bu sağlıklı düşünmeyi olumlu yönde tetikler...

Kod yazarken müzik dinlemeyi sevenler hareketli müzikler yerine slow müzikler tercih etmelidirler.. Çünkü hareketli müzikler her ne kadar canlılık, enerji veriyor gibi görünseler de zihni gereksiz yere kendine odaklamaktadır.. Halbuki bizim kod yazarken zihnimizi ciddi derecede meşgul etmeyecek dinlerken keyif verecek bir fon müziğine ihtiyacımız vardır. Bu tarifte kuşkusuz slow müzikle örtüşmektedir..

En önemli maddelerden biride oda sıcaklığıdır.. Çok sıcak yada soğuk olması bizi negatif yönde bir bıkkınlığa sevkedebilir..Oda sıcaklığı rahat edebileceğimiz derece tespit edilecek klima yada havalandırma yardımıyla stabil ayarlanmalıdır..

Klavyemiz yada mausemuz pilli ise yedek piller ayarlanmalı..Laptop kullanıyorsak şarj durumu kontrol edilmelidir ki planlanmamış aralar vermek zorunda kalarak projeden soğumayalım..
Projelerimi kodlarken kullandığım Asus klavye ve mauseum

Kendimden örnek vermem gerekirse yeni bir proje kodlamaya başlarken yumuşak tuşlu ve kablolu klavye ve mause tercih ediyorum.. Ve aynı zamanda sık sık klavyemi yenilerim.. Çünkü böyle ufak yenilikler emin olun motivasyon ve konsantrasyonu pozitif etkiliyor.. Genellikle oyun klavyeleri tercih ediyorum ama şu sıralar bu kuralları biraz aşmış durumda projelerimin kodlamalarını yedek pillerimi stoklamak koşuluyla ''Asus" kablosuz klavyem ve mauseumla kodlamaktayım..

Hemen hemen her projeye başlamadan önce iyi bir dinlenin ve günlük periodlarda en az 8 saat uyumaya özen gösterin.. Çünkü emin olun iyi dinlenmezseniz gözünüzün önünde duran en kolay bir kod parçacığı hatası bile dikkatinizden kaçabiliyor.. Gerekiyorsa geç olsun temiz olsun mantığı gütmeye çalışın..

Kısa ve öz aralar vermeye özen gösterin..Çünkü yıllardan beridir zihnimize hep şu mantık yerleşmiştir.. "TENEFÜS"...
Şunu bilin ki bu kısa molalar bakış açımızı değişik açılardan yenilememize destek olabilecek bir etkendir.

Şimdilik bu kadar yazımın (2). bölümünde görüşmek üzere...

Ölürüm Sana (disket sürücü orkestrası)

Php'de Çerezleri ( cookie )

Girilen sitelerin tarayıcılar(browserlar) üzerinde bıraktığı izlere cookie, Türkçesiyle de çerez denir. Bu izler siteye tekrar ziyaret edildiğinde yeniden gönderilerek bazı şeylerin yeniden hatırlanmasını sağlar.
Mesela giriş formlarında kullanıcının şifresini ve kullanıcı adını cookieler sayesinde tarayıcıya kaydederek bir sonraki gelişinde bilgilerini yeniden girmek zorunda kalmadan direkt giriş yapabilir.
Temel olarak kullanıcı bilgilerini hatırlanmasında kullanılan çerezleri hayal gücünüzün el verdiği kadar bir çok alanda da kullanmak mümkün.
PHP’de cookie oluşturma işini bir setcookie() fonksiyonu ile yapıyoruz. Fonksiyonda tarayıcıya gönderilecek ve saklanacak olan değerin anahtarını ve içeriğini belirttiğimiz gibi bir de ne kadar süre tarayıcıda saklanacağınıda belirtiyoruz.
setcookie("çerezim", "selam dünya");

Yukarıdaki örnekte çerezim adında bir cookie oluşturduk ve değerinide selam dünya yaptık. 
Ve 3. parametre olarak hiç bir şey girmediğimiz için varsayılan olarak tarayıcı kapatıldığında 
çerez silinecek.Eğer çerezin bizim istediğimiz bir gelecek tarihte silinmesini istiyorsakta 
3. parametreyi devreye sokacağız. İşte bunun içinde bir örnek:

setcookie("çerezim", "selam dünya", time() + (60*60*24));

Şimdi 3. olarak girdiğimiz time() + (60*60*24) bu parametre şu anki zamana saniye cinsinden 60*60*24 tam olarak 24 saat yani 1 gün eklemiş olduk.
Bu oluşturduğumuz çerezin son kullanma tarihi şuandan itibaren + 24 saat sonra demek oluyor.1 gün sonrasında bu çerez siteye girildiğinde gönderilmiyor olacak.

Oluşturduğumuz bir çerezi silmek için yine normal bir çerez tanımlarmış gibi setcookie() fonksiyonunu kullanıyoruz. Tek fark 3. son kullanma tarihi paramteremize geçmiş bir zaman giriyoruz. Bu sayede çerezin tarihi dolmuş varsayılıp hemen siliniyor. Örnek olarak bu çereze time() – 3600 diyerek 1 saat öncesini göstereceğiz ve çerez silinmiş olacak:

setcookie("çerezim", "selam dünya", time() - 3600);

Çerez kullanımı $_COOKIE dizisi üzerinden yapılır. Bu dizi otomatik olarak o sayfaya gönderilen çerezlere göre oluşur. Yukarıdaki oluşturduğumuz çereze ulaşmak için aşağıdaki kodu kullanırız, ki bu koddan ne kadar basit ve anlaşılır olduğu belli oluyor:

echo $_COOKIE['çerezim'];

Ekranda yukarıdaki örneğin devamı olarak gösterdiğimiz bu örnekten ötürü selam dünya yazar.

Çerezleri oluşturmakta ve silmekte olduğu gibi değerini değiştirmekte de setcookie() fonksiyonunu kullanıyoruz. Ve oluşturmakta olduğu gibi değerini değiştirmekte aynıdır. Sadece çerez adına önceden tanımladığımız adı yazmamız yeterli. Eğer çerez yoksa oluşturulur varsa değeri değiştirilir.

setcookie("çerezim", "selam dünya");
setcookie("çerezim", "merhaba dünya");

echo $_COOKIE['çerezim'];

Ekranda merhaba dünya yazar.

Tüm değişkenlerin varlığını kontrol edecek olan isset() fonksiyonu ile bir çerezin tanımlanıp tanımlanmadığını bulabiliriz. Kullanımı if ifadesi ile olacak olan bu fonksiyonun bu kullanımını henüz bu ifadeyi anlatmadığımız için örnek göstermiyorum.

Ekranda bir şey yazmaz, FALSE değeri döner. Çünkü böyle bir çerez tanımlamadık. Tanımlanmış bir çerez olsaydı ekranda olumlu manada 1 yazardı.

Keyifli kodlamalar..

Mac mi Windows Mu ? (1)


İşletim sistemlerinin verimlilikleri kullanıcının kullanım alanına göre değişkenlik gösterirler..
Ben bir web developer olarak kullandığım programları en ergonomik olarak çalıştıran işletim sistemini tercih ediyorum, doğal olarak cevabı tahmin ettiğinizi düşünüyorum..

Tabiki windows ! Yaklaşık 10 yılı aşkın süredir hemen hemen bütün çalışmalarını windows bilgisayarlarda kodlayan bir developer olarak bu makaleyi yazarken yanlı birşeyler yazmamaya özen gösterdiğimide bilmenizi istiyorum... 

Çünkü aynı zamanda bir mac kullanıcısıyım da !

Web çalışmalarımı genellikle windows bilgisayarımda gerçekleştirmemeye özen gösterdiğim dönemlerde bile mac os x tabanlı bilgisayarımdaki hemen hemen her başladığım kodlama windowsta tamamlandı...
Ama müzikal anlamda yürüttüğüm çalışmalarımda bu durum geçerli değil...
Mac os x tabanlı bilgisayarlardaki studyo programları hep bana daha ergonomik geliyor..
Ve çizim alanında yaptığım çalışmaları da unutmamak gerek..
Mac os x 'in sayısal zekası işte bu raddede ortaya çıkıyor..
Ama genel olarak müzik ve grafik geliştiricilik hayatımda her zaman web geliştiricilikden bir adım geriden geldiği için pekte mac os x tabanlı bir bilgisayara pekte ihtiyacım olmadı...

Müzikal anlamda da aslında pekte mac os x tabanlı bir bilgisayara yüzde yüz ihtiyacımız da yok ! İyi bir ses kartı hemen hemen işimizi çözecektir... Neyse bu olayın başka bir boyutu tabiki.. Çizim açısına gelirsekte windows bilgisayarlarda da iyi bir ekran kartına sahipsek işimizi görecek grafik çizimler gerçekleştire de biliriz aslında...

Windows'ta  mac için her zaman bir alternatif var ... 

Biri hariç ! '' Virüsler''

Bu sorun her internet kullanıcısı için ciddi bir problemdir..İnternette her an bir virüs bulaşma tehlikesiyle karşı karşıyayız. Bu acı gerçek mac'i windowsa oranla bir adım öne çıkarmakta.. Çünkü hemen hemen internette bulunan virüsler windows tabanlıdır..
Ama bu mac tabanlı virüs yazılamaz anlamına gelmez.. 
Bugünün koşulları gereği bu böyledir...
Ama bununda önüne windows iyi bir virüs programı , güncel bir işletim sistemi ve güvenlik duvarıyla rahatlıkla geçebilir...

Kısacası ''Mac'' mi ''Windows'' mu değil de  ''Kolay'' mı ''Daha Kolay'' mı diye bir başlık atsak da olurmuş...