11 Ocak 2012 Çarşamba

windows memcache kurulumu (windows 7 dahil)

Memcache modülünün Windows üzerinde çalışan php-apache üzerine kurulması :
  1. Php extensions klasörünü kontrol edin. C:\php\ext gibi bir şey olması gerekiyor. (Wamp kullanıyorsanız c:/wamp/bin/php/php5.3.4/ext gibi bir şeydir.) Bu klasörün içinde php_memcache.dll adlı dosyanın olup olmadığına bakın. Yoksa bu dosyayı bir şekilde edinin. Buradan indirebilrisiniz isterseniz : http://downloads.php.net/pierre/php_memcache-2.2.6-5.3-nts-vc9-x86.zip
  2. Şimdi sistemde kullanılan php.ini dosyanızı bulun. wamp için wamp klasöründe bir yerlerde oluyor. Sağ alttaki wamp simgesine tıklayıp orada php kısmında php.ini ye basınca gelen dosyadır. bu dosyanın sonuna bir yere yeni bir satırda extension=php_memcache.dll yazın kaydedin.
  3. Apache nizi restart edin.
  4. memcached.exe yi çalıştırın. Buradan edinebilirsiniz : http://www.splinedancer.com/memcached-win32/ Normalde, memcached.org adresinde de var fakat, compile edilmemiş hali var ve compile etmek için bir sürü teane gerekiyor. İsterseniz oradan kurun. Memcached.exe çalışınca bir siyah pencere açılacak ve orada kalıcak, anormal bişey yok, (servis olarak arka planda çalıştırmak ile farkı yok, birazdan onu da anlatacağım.)
  5. Aşağıdaki kodu çalıştırın
      < ?php            $memcache = new Memcache;            $memcache->connect("localhost",11211); # varsayılan ayar olarak memcache 11211 protu kullanır. belki localhost yerine 127.0.0.1 yazmanız gerekebilir.              echo "Memcache versiyonu: " . $memcache->getVersion() . "
    \n"; $tmp_object = new stdClass; $tmp_object->str_attr = "test"; $tmp_object->int_attr = 123; $memcache->set("key",$tmp_object,false,60); echo "Veriyi cache'te sakla.(Veri 60 saniye boyunca cachete tutulacak.)
    \n"; echo "cacheten okuduğum değer :
    \n"; var_dump($memcache->get("key")); ?>
  6. Ekrana hata yerine yukarıdaki şeyleri görüyorsanız, memcache'iniz çalışıyor demektir. Memcacheinizi denemenizin bir diğer yolu da telnet üzerinden bağlanmaktır. (windowsunuzda telnet hizmetini aktif etmeniz gerekiyor, eğer açık değilse, bu konuyu zorlaştırmamak için burada anlatmıyorum.) cmd'den
      telnet localhost 11211   
    diyeceksiniz. Bağlanırsa, tamam çalışıyordur. (Telnetten memcahce kullanabilemk için de ilgili parametreler vb ile ilgili bir yazı ekleyeceğim)
  7. Extra not : memcached.exe yi arka planda çalışan servis olarak çalıştırmak için cmd yi yönetici yetkisiyle çalıştırın. (ctrl+shift+click). Daha sonra
      c:/memcachein_bulunudugu_dizin/memcached.exe -d install  c:/memcachein_bulunudugu_dizin/memcached.exe -d start  
Ve windowsunuza memcache kurdunuz. Şimdi yapmanız gereken bir kaç uygulama geliştirip, memcache'in avantajlarını keşfetmek. Memcache günümüzde bir çok büyük firtma site vb tarafından stabil bir şekilde kullanılıyor. Bunlara da başka bir yazıda değinmek dileğiyle. Devamı için : windows memcache kurulumu (windows 7 dahil)

10 Ocak 2012 Salı

Linux/unix sleep komutu (linux/unix sleep command), örnek (example)

Sleep komutu, beklemek manasına geliyor. Tek yaptığı iş beklemek. Beklemenin ne gibi bir işe yaradığını ile ancak birazcık işin içine girmiş olanlar bilebilir diyorum. Bazı şeylerin yapıldığından emin olmak, bittiğinden emin olmak için, veya void metodlardan yanıt alınmayacağı durumlarda, istatistiksel olarak ne kadar sürdüğünü bilenler, bu komutu kullanabilirler. Linux gurusu olan biri, bir hatırlatıcı olarak bile kullanabilir bu komutu. Küçük bir örnek olarak
  sleep 1h; mail -s "Ahmeti ara!" ben@mailadresim.com  
1 saat sonra mailime gelen "ahmeti ara" mailiyle birden irkilip, ahmeti aramam gerektiğini hatırlayabilirim. burada 1h deki h harfi hour yanisaat manasındadır. bir şey yazmazsanız saniyedir. (s) dakika için minute yani m harfi kullanmalısınız. Programcılar sleep komutunu genelde belirli bir süre kodu duraklatmak için kullanırlar. Siz de çok yük getirici bir işlem yapıyorsanız, ara sıra diğer kullanıcıların işlemlerini aksattırmamak için sisteme bir nefes aldırmak isteyebilirsiniz, öyleyse kullanın. Devamı için : Linux/unix sleep komutu (linux/unix sleep command), örnek (example)

8 Ocak 2012 Pazar

UML nedir, UML oluşturmak

Unified Modeling Language (Birleşik Modelleme Dili), belirli bir syntax kuralına sahip olmadan yapcağınız programı veya kodu görsel olarak modellemenizi sağlayan, ve bu görsel üzerinden gidilerek herhangi bir dilde o kodun yazılmasını sağlayan genel bir dildir. UML yazılımın temellerinden biridir demesem de, bilinse süper olur diyebilirim. Classlar, metodlar, değişken isimleri, ilişkiler, hangi class neyle ilgili neyi kullanıyor, neyi extend ediyor, nasıl davranıyor bu şematik modelden bakılarak rahatlıkla anlanabiliyor. Günümüzde de UML in önemi yüksek derecededir. Bir kod yazmadan önce önüne bir kağıt kalem bile almadan direkt olarak koda veya veritabanı mimarisine giren bir çok programcı-yazılımcı var. Halbuki düzgün çıkarılmış bir UML sonrasında gerisi sadece yazmak. Yani işin düşünme kısmının UML üzerinde yapılması, gerisinin sadece "yazmak" tan ibaret olduğunu belirtmek istiyorum. UML öğrenmek için Google'da bir çok kaynak bulabilirsiniz. Ben burada hızlıca UML oluşturmak için bir site önermek istiyorum. Bununla hızlı sonuç alabilirsiniz. Tabi UML'deki neyin ne manaya geldiğini de analyarak yapmanızda fayda var. UML diyagramı oluşturun, sadece saniyeler içinde. Devamı için : UML nedir, UML oluşturmak

Mongodb için phpmoadmin

Php ile mysql in yönetim toolu olan phpMyAdmin den sonra şimdi de mongo db için de bir php toolu yapmışlar. Adı phpmoadmin. PhpMyadmin kadar geniş kapsamlı ve kullanışlı olmasa da işinizi görebilecek özelliklerin hepsine sahip. Tabi ki Windows ortamında mongod.exe yi çalıştırdktan sonra girebiliyorsunuz. İşinize yarayacağını düşünüyorsanız, tek dosya. Çok pratik. http://www.phpmoadmin.com adresinden indirebilirsiniz. Devamı için : Mongodb için phpmoadmin

7 Ocak 2012 Cumartesi

Google Appengine ile Proxy(vekil) sunucu oluşturma

Aslında Google üzerinde küçük bir arama ile nasıl proxy server kurulacağına dair bir sürü kaynak bulabilirsiniz. Ben bu yazıda google'ın appengine'ini kullanarak bir proxy (vekil) sunucu yapmaktan bahsediyorum. Bu sayede çok fazla teknik bilmeden de bu işi yapabileceksiniz. (sevmem bu deyimi ama neyse.. )

Google ile beleş bir proxy yapmaca

1. Adım: appengine.google.com sayfaınsa git ve Google hesabın ile giriş yap. 2. Adım: Create an Application (Uygulama oluştur) tuşuna bas. İlk defa yapıyorsanız, Google cep telefonunuza bir sms atacaktır, doğrulama yapabilmek için. Sms olarak gelen kodu da yazınca bu adım da tamamdır. 3. Adım: bir tane subdomain (altdomain) belirleyin ki, uygulamanıza erişebilin. Bu sizin aynı zamanda uygulama (Application) ID niz olacaktır. 4. Adım: Şimdi ID mizi ayırttırdık, proxy server uygulamamızı oluşturup Google a upload etmemiz gerekiyor. python.org a gidin ve , download the 2.6.4 , 2.7 gibi bir sürümü indirin. (3 lü bir sürüm olmasın). (İşletim sisteminiz ve bit desteğiniz neyse ona göre setup halinde olanını indirin. Windows için MSIInstall olanı indirin). İndirdikten sonra kurun. Klasik, ileri ileri... 5. Adım: Python yüklendiğinde, code.google.com a gidin ve "Google App Engine SDK for Python" (python uyumlu google app engine) i indirin ve yükleyin. Orada java uyumlu bilmemne uyumlu bir sürü appengine var, python uyumluyu indirip yükleyeceksiniz. 6. Adım: Bu zip dosyasını indirin ve masaüstünüze felan bir yere dosyaları çıkartın. Zipin içinde html ve python birkaç text dosyası felan var. (virüs taraması yapın yine de istiyorsanız :) ) 7. Adım: Google App Engine Launcher programını çalıştırın ve edit-> preferences menüleri altında gerekli bilgileri doğru olarak girin. 8. Adım. "File -> Add Existing Application" menüsü altından masaüstünüzdeki klasörü bulun. (6. adımda oluşturduğunuz) Edit tuşuna basın ve oradan Click File –> Add Existing Application  ı seçin. Edit tuşuna basıp APP_ID yazısını kendi uygulama ID 'niz ile değiştirin (3. adımda yaptığınız). 9. Adım: Deploy tuşuna basın. Ve artık online proxy serveriniz kullanıma hazır! Buradan benim kendi yaptığım proxy server uygulamasına bakabilirsiniz : dubluve proxy server. main.html yi kendi istekleriniz ölçüsünde düzenleyebilirsiniz. (bildiğiniz html.) Hatta ve hatta kodunuza analytics ve adsense bile koyabilirsiniz. uygulama şu anki haliyle herkese açık ama dilersniez bir kademe ekleyerek sadece googledan giriş yapmış kullanıcıların kullanmasını sağlayabilirsiniz. Html dosyanda değişiklik yaptıysan tekrar deploy tuşuna basınız ki, değişiklikleriniz vuku bulusn :) Proxy server , Mirrorr kodlarını kullanır, bu Brett Slatkin'in bir açık-kaynak web önbellek projesidir. Devamı için : Google Appengine ile Proxy(vekil) sunucu oluşturma

5 Ocak 2012 Perşembe

Java İpucu #3 – Java Konsoldan Veri Okuma

Java ile ilgili ipucu yazılarıma yine basit ama başlangıç seviyesinde (veya konsoldan çalışan programlar için) çok kullanımı olan bir konuyla devam etmek istiyorum. Bu sefer amacımız konsoldan veri okumak.

Bunun için birçok yöntem mevcut ancak ben sadece ikisinden bahsedeceğim.

İlki Scanner (JRE 1.5 ile geldi) sınıfını kullanarak basit bir kullanıcı girişi;

Scanner s = new Scanner(System.in);  System.out.print("Kullanıcı Adı: ");  String userName = s.nextLine();  System.out.print("Şifre: ");  String password = s.nextLine();    if (checkUserNameAndPassword(userName, password))  	System.out.println("Sisteme başarıyla giriş yaptınız.");    // Kullanıcı adı ve şifre kontrolü yapar  private static boolean checkUserNameAndPassword(String userName, String password) {  	// bilgileri kontrol et  	//  	return true;  }

Burada nextLine metodu konsoldayken klavyeden enter tuşuna basılana kadar olan tüm girdileri alır. Scanner sınıfının nextByte, nextInt gibi başka metotları da mevcut. Her zamanki gibi inceleme kısmı size ait :)

Diğer yöntem;

Console c = System.console();  if (c == null) {  	System.err.println("Konsol erişimi sağlanamadı.");  	System.exit(1);  }    String userName = c.readLine("Kullanıcı Adı: ");  char[] password = c.readPassword("Şifre: ");    if (checkUserNameAndPassword(userName, password)) {  	System.out.println("Sisteme başarıyla giriş yaptınız.");  }

Öncelikle bu yöntemin sadece konsoldan çalıştırılan java uygulamalarında çalışacağını söylemeliyim (örneğin, Windows'ta Komut İstemci'sinde veya Linux'ta Terminal'de). Aksi halde (örneğin, Netbeans'te çalıştırdığınızda), "Konsol erişimi sağlanamadı." uyarısı gözükecektir.

Console (JRE 1.6 ile geldi) sınıfının güzel iki metodu readLine (Scanner sınıfındaki metot ile aynı işi yapıyor) ve readPassword (girilen verinin ekranda gözükmeden girilmesini sağlıyor). Kod parçasının diğer kısmı ilk örnekle aynı. Dikkat edin readPassword metodu karakter dizisi döndürüyor.

İpucu konusu olduğu için yine çok detaya girmemeye çalıştım. Diğer Java İpucu yazılarım için sitenin arama kısmına "Java İpucu", Java makaleleri için "Java Makale" yazarak aratabilirsiniz. Site özellikleri kullanımına teşvik :)

Herkese iyi çalışmalar.

Devamı için : Java İpucu #3 – Java Konsoldan Veri Okuma

resimler için dış link koruması (hotlink protection)

Sitenizdeki resimleriniz dış bağlantılar tarafından mı kullanılıyor? İnternet sitenizin bant genişliğinizi mi sömürüyorlar? Buna engel olmanın vakti geldi diyorsanız işiniz basit. Aşağıdaki kodu ana dizininizdeki .htaccess dosyanızın içine koyun. (yoksa oluşturun)
  RewriteCond %{HTTP_REFERER} !^http://siteadresi.com/.*$      [NC]  RewriteCond %{HTTP_REFERER} !^http://siteadresi.com$      [NC]  RewriteCond %{HTTP_REFERER} !^http://siteadresi.com/.*$      [NC]  RewriteCond %{HTTP_REFERER} !^http://www.siteadresi.com$      [NC]  RewriteCond %{HTTP_REFERER} !^https://www.siteadresi.com/.*$      [NC]  RewriteCond %{HTTP_REFERER} !^https://www.siteadresi.com$      [NC]  RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$ - [F,NC]  
  Bu kod, tarayıcınızın REFERER bilgisi göndermemesi sonucu yönlendirme anasayfaya yönlendirme sağlar. Normalde güncel browserlar siz bir siteye girdiğinizde, o sitedeki tüm resimleri , cssleri, javascriptleri; ositeadresi.com referer bilgisiyle istemde bulunur    Bundan sonra farklı bir önbelleği temizlenmiş browserdan resme doğrudan girmeye çalıştığınızda anasayfaya yönlendirileceksiniz. Deneyebilirsiniz.    Not : Apache veya hangi web serveri kullanıyorsanız, .htaccess kullanımının açık olması gerekmektedir.    
Devamı için : resimler için dış link koruması (hotlink protection)