JavaScript için queryString fonksiyonu

kara tarafından 21 Eylül 2007 tarihinde JavaScript, Programlama, Yazılım kategorisinde yazıldı.

Bugün ofisteki bir arkadaşıma lazım oldu. Ben de şöyle bir şey yazdım.

JavaScript:
  1. function queryString() {
  2.     var qs = location.search.substring(1,location.search.length).replace(/(%20|\+)/g," ");
  3.     if(arguments.length == 0 || qs == "") return qs; else qs = "&" + qs + "&";
  4.     return qs.substring(qs.indexOf("=", qs.indexOf("&" + arguments[0] + "=") + 1) + 1, qs.indexOf("&", qs.indexOf("&" + arguments[0] + "=") + 1));
  5. }

Örnek Kullanım:

JavaScript:
  1. // http://www.site.com/index.php?str1=Merhaba+Dunya&str2=Test
  2. // Şeklindeki bir adresten str1 ya da str2 bölümünü almak için
  3. var str1 = queryString('str1');
  4. var str2 = queryString('str2');
  5. // Adresteki QueryString'in tamamını almak için
  6. var qStr = queryString();

Google'da JavaScript ve QueryString kelimelerini arattığınızda da bir çok sonuç karşınıza çıkıyor. Problemin çözümü için bir çok farklı yol var. Temel olarak Regular Expressions kullanılarak oluşturulmuş bu fonksiyon ya da Split kullanılarak hazırlanmış bu fonksiyon gibi bir çok örneğe ulaşabilirsiniz.

Etiketler: ,

Protoculous - Prototype + Script.aculo.us, hem de sıkıştırılmış

kara tarafından 14 Eylül 2007 tarihinde JavaScript, Programlama kategorisinde yazıldı.

Her ne kadar son zamanlarda jQuery'ye doğru oldukça meyil almış olsam da henüz jQuery'ye geçirmediğim Script.aculo.us kullanarak hazırladığım çalışmalarım var.

Script.aculo.us Samplr'daki örnekleri incelerken sayfadaki Extra Tip ibaresi ilgimi çekti. İlgili siteye girip baktığımda bir de ne göreyim. Sen git Prototype'ı ve Script.aculo.us'u birleştir, bir de üstüne basıp sıkıştır, 54,6 KB'lık Protoculous ortaya çıksın.

Şu an 1.0.2 sürümüne ulaşmış olan Protoculous, Prototype 1.5.1 ve Script.aculo.us 1.7.1 Beta 3 sürümlerini içinde bulunduruyor ve daha önce de dediğim gibi sadece 54,6 KB.

Etiketler: , , ,

JavaScript - parseInt() başınızı ağrıtmasın

kara tarafından 13 Eylül 2007 tarihinde JavaScript, Programlama, Yazılım kategorisinde yazıldı.

JavaScript parseInt() fonksiyonunu nasıl bilirdiniz? Parametre olarak aldığı değerden bir tam sayı ortaya çıkartmaya çalışan güzide bir JavaScript fonksiyonu olan parseInt() geçen gün beni hayretler içerisinde bıraktı. Buyrun başıma geleni kendiniz görün. (Firebug kullananlar direkt console'da kodları çalıştırabilirler.)

JavaScript:
  1. parseInt('06');
  2. // 6
  3. parseInt('07');
  4. // 7
  5. parseInt('08');
  6. // 0
  7. parseInt('09');
  8. // 0

devam »

Etiketler: , , , , ,

PHP ile uygulama geliştirmek - Bölüm 2′ye Ek

kara tarafından 14 Mayıs 2007 tarihinde PHP, Programlama, Yazılım kategorisinde yazıldı.

Bu makale < ?PHP echo “Merhaba Türkiye”; ?> gruplarında yazmaya başladığım PHP ile uygulama geliştirmek yazı dizisinin ikinci bölümüdür. Halen gelecek vaat etmeyebileceği konusunda ısrarcıyım. Taslaktır, geliştirilebilir.

Araya baya uzunca bir süre girdi ama bu yazı dizisine devam etmeye kararlıyım. Kaldığımız yerden devam edelim. Bir önceki yazımın sonunda da belirttiğim gibi önceki yazıda constantlardan da bahsetmeyi planlamış fakat unutmuştum. Bir önceki yazıyı güncellemek yerine yeni bir yazı yazarak constantları daha derinlemesine incelemeye karar verdim. Yazının geri kalanında constant kelimesi yerine sabit kelimesini kullanacağım.

Şimdi düşününce önceki yazıda sabitlerden bahsetmemek isabet olmuş. Neden diye soracak olursanız, değişkenlerden, değişken değişkenlerden bahsederken sabitlerden bahsetmek kafa karıştırabilirdi. Neyse lafı fazla uzatmadan konuya girelim.

Değişkenlerle karşılaştırıldığında çok daha az özelliğe sahip olan sabitlerin en önemli özelliği global tanımlayıcılar olmalarıdır. Bir kere tanımladıktan sonra isterseniz fonksiyon içinde isterseniz sınıf içinde rahatça kullanabilirsiniz. Sabitlerde saklayabileceğiniz veri tipleri sınırlıdır(metin(string), tamsayı(integer), mantıksal(boolean) ve ). Global olmaları ve sınırlı veri tipi gibi sebeplerden genellikle uygulamaların ayar bilgilerini saklamak için kullanılır ve bu işte oldukça iyidirler.

Sabitleri tanımlamak değişkenlere nazaran oldukça farklılık gösterir. Sadece define() fonksiyonu ile tanımlanabilirler ve bir kere tanımlandıktan sonra içeriği değiştirilemez ya da yok edilemez (Sihirli sabitler (Magic Constants) haricinde (ki onlar da aslında sabit sayılmazlar)). Değişkenleri tanımlarken değişken isminin başına konan $ işareti sabitlerde kullanılmaz. İsimlendirme konusunda değişkenlerle hemen hemen aynı kurallara tabidir. Büyük/Küçük harf duyarlıdırlar ama bir zorunluluk olmasa da sabit isimleri genelde tamamıyla büyük harflerden oluşur. Geçerli bir sabit ismi bir harf ya da alt çizgi ile başlar ve devamında istenildiği kadar harf, sayı ya da alt çizgi kullanılabilir.

PHP:
  1. <?php
  2. // Geçerli sabit tanımlamaları
  3. define("MEYVA", "Elma");
  4. define("SEBZE3", "Patlıcan");
  5. define("_ARABA", "Şahin");
  6.  
  7. // Geçersiz sabit tanımlamaları
  8. define("3SEBZE", "Patlıcan");
  9. define("SEBZE-3", "Patlıcan");
  10. ?>

Ufak bir uyarı; aşağıdaki kullanım doğru ve geçerli olmakla beraber kullanılmaması tavsiye edilir. PHP gelecekte sizin verdiğiniz isimle aynı isimde bir sihirli sabit tanımlarsa uygulamanızda problemler ortaya çıkabilir.

PHP:
  1. <?php
  2. define("__SEBZE__", "Patlıcan");
  3. ?>

PHP'de önceden tanımlanmış bir çok sabit vardır. Bunları Öntanımlı Sabitler(Predefined Constants) başlığı altında PHP Manual'da bulabilirsiniz. (PHP_OS, PHP_VERSION vb.) Bir çok öntanımlı sabit bulunmasına rağmen her zaman bunların hepsini kullanamayabilirsiniz. Bazı öntanımlı sabitler belli uzantıların (extension) yüklü olmasını gerektirir. (PEAR_INSTALL_DIR vb.) Değişken yaratırken ve kullanırken bunları aklınızdan çıkarmayın.

Gelelim yazıda da bir kaç kez adı geçen sihirli sabitlere. Şu an için 5 adet olan bu sabitlerin isimleri sabit olsa da belirli durumlarda değerleri değişebilir.

İsim Açıklama
__LINE__ O an PHP derleyicisi tarafından İşlenen satır numarası
__FILE__ Çalışmakta olan sayfanın tam adresi
__FUNCTION__ İşletilmekte olan fonksiyonun ismi
__CLASS__ İşletilmekte olan sınıfın ismi
__METHOD__ Sınıfa ait metodun ismi

Evet, bir bölümün (daha doğrusu ara bölümün) daha sonuna geldik. Önceki yazıda bahsettiğim gibi, gelecek yazıda veri tipleri ve operatörler hakkında karalayacağım.

Mutlu kodlamalar!

Etiketler: , , , , , ,

Veritabanındaki bir tablodan nasıl rastgele satır(lar) seçerim?

kara tarafından 9 Mayıs 2007 tarihinde Programlama, Yazılım kategorisinde yazıldı.

Ürünlerin arasından bir kaç tanesini rastgele göstermek istiyorsunuz ya da makalelerinizin hep aynı sırada çıkmasını istemiyorsunuz. Aşağıda bir kaç değişik veritabanında nasıl rastgele satır(lar) çağırabileceğinizi gösteren kod örnekleri var. Aşağıdaki yöntemleri kullanırken çok fazla kayıt olan tablolardan veri çekerken performans problemleriyle karşılaşabilirsiniz. Rastgele alan anlık olarak yaratıldığından ORDER ya da WHERE şartlarını kullandığınızda indeks olmayan bir alanda sorgu yaptığınız için tablodaki satır miktarı ne kadar fazlaysa performans o kadar düşecektir. Aklınızın bir köşesinde bulunsun.

SQLite

SQL:
  1. SELECT sutun FROM tablo
  2.  WHERE rowid>= (abs(random()) % (SELECT max(rowid) FROM tablo))
  3.  LIMIT 5;

MSSQL

SQL:
  1. SELECT TOP 5 sutun FROM tablo
  2.  ORDER BY NEWID()

MySQL

SQL:
  1. SELECT sutun FROM tablo
  2.  ORDER BY RAND()
  3.  LIMIT 1

ORACLE

SQL:
  1. SELECT sutun FROM
  2.   (SELECT sutun FROM tablo
  3.     ORDER BY dbms_random.value )
  4.  WHERE rownum = 1

PostgreSQL

SQL:
  1. SELECT sutun FROM tablo
  2.  ORDER BY RANDOM()
  3.  LIMIT 1

IBM DB2

SQL:
  1. SELECT sutun FROM tablo
  2.  ORDER BY RAND()
  3.  FETCH FIRST 1 ROWS ONLY

Şurada PHP ve MySQL için rastgele satır seçimi konusunda alternatif bir çözüm var. Ben de örnekteki kodu temel alarak şöyle bir kod ürettim.

PHP:
  1. <?php
  2. /*
  3. * Fonksiyon      : rastgeleSatir
  4. *
  5. * Geliştirici   : İzzet Emre Erkan <kara@karalamalar.net>, <eerkan @graf2.com>
  6. * URL            : http://www.karalamalar.net
  7. *       
  8. * Versiyon      : 1.0
  9. * Tarih          : 09.05.2007
  10. * Amaç           : MySQL veritabanı kullanarak belli bir tablodan rastgele bir satır döndürmek
  11. *
  12. * Parametreler
  13. *  $tablo        : Veri çekilecek olan tablo
  14. *  $rowid        : Tablodaki satır tanımlayıcı otomatik artan sütun
  15. *  $secilecekler : (Seçime bağlı) Fonksiyonun döndüreceği satırda seçilecek sütunlar.
  16. *                  (Parametre belirtilmezse tüm sütunlar döner.)
  17. */
  18. function rastgeleSatir($tablo, $rowid, $secilecekler = "*") {
  19.     $maks = mysql_result(mysql_query("SELECT max($rowid) FROM $tablo"),0,0);
  20.     $rastgeleSayi = mt_rand(1,$maks);
  21.     $rastgeleSatir = mysql_fetch_array(mysql_query("SELECT $secilecekler FROM $tablo WHERE $rowid>= $rastgeleSayi ORDER BY $rowid ASC LIMIT 1"));
  22.     if(!is_array($rastgeleSatir))
  23.         $rastgeleSatir = mysql_fetch_array(mysql_query("SELECT $secilecekler FROM $tablo WHERE $rowid <$rastgeleSayi ORDER BY $rowid DESC LIMIT 1"));
  24.     return $rastgeleSatir;
  25. }
  26. ?>

Kullanımı

PHP:
  1. <?php
  2. // Tüm sütunlarla beraber rastgele bir satır döndürmek için
  3. print_r(rastgeleSatir("tablo_adi", "tanimlayici_sutun"));
  4.  
  5. // Belirli sütunlarla beraber rastgele bir satır döndürmek için
  6. print_r(rastgeleSatir("tablo_adi", "tanimlayici_sutun", "sutun1, sutun2, sutun3"));
  7. ?>

Etiketler: , , , , , , , ,