14 Şubat 2015 Cumartesi

Apache, PHP ve MySQL manuel Kurulumları

Merhaba 

PHP'de Değişkenler makalesine geçmeden önce örneklerle çalışabilmeniz için kendi bilgisayarımızı  sunucu olarak hazırlayıp PHP kodlaramızın derlenip çalıştırılabilmesini sağlayacak Apache, Mysql ve PHP üçlüsünü kurmamız gerekiyor. Daha önce örnek paket kurulumunu gerçekleştirdiğim WampServer Kurulumu  adlı makalemi inceleyebilirsiniz. Dilerseniz çalışma mantığını kavramak için sunucu kurma işlemini her bir uygulamayı (Apache, MySQL, Php) ayrı ayrı kurup ve yapılandırarakta gerçekleştirebilirsiniz. 

Şimdi kısaca her bir uygulamayı (Apache, MySQL, Php) kurulumlarını ayrı ayrı gerçekleştirelim.

Apache HTTP Server Kurulumu

Öncelikle Apache Projesi sitesinden Apache HTTP Server Kurulum dosyamızı indiriyoruz.

Kurulum dosyamızı indirdikten sonra  ".msi" uzantılı dosyayı çalıştırıyoruz ve kuruluma başlıyoruz.

NOT: İndirdiğiniz dosya bir ".msi" yerine sıkıştırılmış paket bir dosya ise kurulum işlemini  "\Apace24\bin" altında bulunan httpd.exe dosyasını komut satırından çalıştırınız. Yine komut satırından httpd -k install ile services kurulumunu yaparak httpd -k start ile servisleriminiz çalıştırıyoruz.

Diğer Komut Satırı Opsiyonları:
Stop Apache: httpd -k stop   
Restart Apache: httpd -k restart   
Uninstall Apache Service: httpd -k uninstall   
Test Config Syntax: httpd -t   
Version Details: httpd -V  
Command Line Options List: httpd -h

Makalemizde Windows İşletim sistemlerinde çalışan Apache HTTP Server'ın Windows altına kurulum işlemini yapıyoruz. Linux üzerine kurulum başka bir makale konusu olacaktır. Kurulumun ilk penceresi sürüm ve program hakkında bilgileri içerir. Kuruluma devam etmek için karşımıza gelen "Next" butonuna tıklıyoruz. Devamında lisans sözleşmesi hakkında bilgilerin verilecektir. Birçok program kurulumundan da aşina olduğunuz bu pencerede "Sözleşmeyi kabul ediyorum. "(I accept the terms in the license agreement.)" seçeneğini seçmeniz gerekmektedir. Aksi takdirde Next butonu aktif olmayacaktır. Bir sonraki ekranda ise Apache'nin kendini tanıttığı ve versiyona ulaşım adresi bilgisinin verildiği pencere ekrana gelir. Bu pencere bilgilendirme amaçlı olduğundan okuyup "Next" butonuna tıklıyoruz. 

Kurulumun bu aşamasında kurulum biterken bizden bir takım bilgiler isteyecektir. Domain adı gibi vs. localhost yazıp geçmeniz yeterli olacaktır. 

Bu aşamada adı geçen alanlar şu anlama gelmektedir:  
  • Network Domain: İnternet adresi  
  • Server Name: Sunucu ismi  
  • Administrator Email Adress : Yönetici e-mail adresi  
Radio butonlarından ise "for all users, on port 80 as a service Recommend" seçeneği seçilerek programın 80 port üzerinden çalışması istenir.Eğer sisteminizde port 80'i kullanan başka bir HTTP server uygulaması mevcut ise bu kısmı başka bir port ile değiştirebilirsiniz.

13 Şubat 2015 Cuma

PHP Nedir?


PHP en kısa anlamıyla web tabanlı bir programlama dilidir. PHP ifadesinin açılımı "Personal Home Page" Kişisel Anasayfa iken günümüzde gelişmesi ve daha iyi anlam kazanması ile "PHP: Hypertext Preprocessor" yani Üstün Yazı Önişlemcisi olmuştur.
 
Klasik anlamda bir web sayfası oluşturabilmek için HTML kullanılması yeterlidir. Fakat web sayfamızı etkileşimli olabilmesi için HTML tek başına yeterli değildir. Nasıl ki web sayfalarında görselliği arttırmak için CSS, JavaScript, Flash ve animasyonlardan faydalanıyorsak, web sayfamızın dinamik ve  etkileşimli olabilmesi için  server-side bir programlama dili kullanılmalıdır. 

Örneğin web sayfamızın duyurular kısmına yeni bir duyuru eklemek veya mevcut bir duyuruya yorum eklemek, alışveriş sitelerinde ihtiyacımıza yönelik ürünleri bulmamızı sağlayan bir arama motoru gibi vs...

Dünyada birçok firmanın geliştirmiş olduğu server-side teknolojileri mevcut. İşte bu server-side teknolojilerinden biriside PHP'dir.

PHP 1994 yılında Rasmus Lerdorf tarafından tamamen kişisel bir amaç doğrultusunda geliştirildi. Sonraları GPL (Açık Kaynak Kod) lisansıyla dağıtılmaya başlamış, günümüzde halen geliştirilmesine devam edilmektedir ve tamamen ücretsizdir.

PHP'nin Avantajları
  • Rahat ve hızlı kodlanabilir.
  • Öğrenilmesi kolay derlenmeden çalışan bir dildir. 
  • PHP ve beraberinde kullanılan teknolojiler GPL lisansına sahip olması nedeniyle düşük bütçelerle projeler geliştirilmesine olanak sağlamaktadır.
  • Açık kaynak olmasının gereği oldukça güvenli ve hızlıdır. 
  • Büyük bir geliştirici topluluğuna sahip olduğundan kaynak açısından oldukça zengin bir dildir
  • LAMP (Linux, Apache, MySQL ve PHP) olarak adlandırılan programların bir bütünmüş gibi hızlı çalışmasından dolayı web teknolojileri olarak LAMP yoğunlukla tercih edilmektedir.
  • Platform bağımsız olmasından dolayı (Linux, Unix, Windows, FreeBSD, OSX).
  • Birçok server (ISS, Apache, lighttpd, nginx) üzerinde çalışabilmesinden dolayı proje altyapısını değiştirmeden PHP teknolojisine kolayca geçiş yapılabilmektedir.
  • PHP, uzantı alabilmektedir. Uygulamanın içerisinde yer alan çekirdek motor, bir dizi asal kod modüllerinden ve kod uzantılarından oluşmaktadır. Bu nedenle programcılara PHP uzantıları yaratarak bazı özel işlemlerini yapabilmeleri için iki seçenek sunuluyor; ya uzantı modüllerini yazarak uygulanabilen bir derleme yapmak, ya da PHP’nin dinamik yükleme mekanizmasıyla yüklenebilecek uygulanabilir uzatmalar yaratmak.
  • Derleme usulü çalışmadığından dolayı projelerin geliştirilmesi kısa süreler almaktadır.
  • PHP pek çok veritabanı arayüzünü bünyesinde bulunduruyor. PHP, MySQL, MS SQL, Oracle, Informix, PostgreSQL ve diğerleriyle doğrudan çalışabiliyor. 
PHP ile neler yapılabilir?
  • Dinamik Web Sayfaları     
  • İçerik Yönetim Sistemleri
  • Web Tabanlı Robotlar
  • Veri depolama sistemleri
  • Web Tabanlı Otomasyon Yazılımları
  • Online Oyunlar
  • İçerik bulup derleyen botlar
  • Sosyal Medya, Forumlar, Sözlükler  
  • Anketler 
  • E-Ticaret Siteleri 
  • Dosya Yönetimi 
  • E-Posta Uygulamaları 
  • Grafik İşleme 
  • Matematiksel hesaplamalar
  • ...vb. bir çok uygulama PHP ile geliştirilebilmektedir.
PHP Dökümantasyon için tıklayınız.

11 Şubat 2015 Çarşamba

C Programlama Sınıflar ve Nesneler

Sınıf (Class) Kavramı : Nesne tabanlı programlamada gereken nesneleri sınıflar yardımıyla oluşturmaktır. Sınıfları, nesneleri oluşturmak için önceden oluşturulmuş bir kalıp veya ilk örnek olarak da düşünülebilir. Örneğin, kağıt üzerine detayları çizilmiş bir ev planını kullanarak aynı evden pek çok örnek ev oluşturulabilir. İşte burada kağıt üzerindeki bu plan sınıftır. Bu plana bakılarak yapılan ev ise sınıftan oluşturulan nesne örneğidir.

Sınıf kavramı, nesne-tabanlı programlamanın temelini oluşturur. Nesnelerin her birinin durumu ve davranış özellikleri vardır. Bir Nesne, durum ve davranış özelliklerini içinde barındırır.

Oluşturulan her nesnenin durum özelliklerine veri üyesi (data member), davranış özelliklerine üye fonksiyonları (member function) denir.

Örneğin, bir bisikleti yazılım nesnesi olarak tanımlarsak bisiklet sınıfında hız, vites, jant büyüklüğü gibi veri üyeleri tanımlanabilir. Ayrıca vites değiştirmek, fren yapmak ve hızı artırmak için üye fonksiyonları tanımlamak gereklidir. 

Sınıf tanımında yer alan üyelere erişimi, farklı erişim etiketleri kullanarak sınırlandırılabilir:

public:  Bu etiket altında tanımlanan üyelere programın her yerinden erişilebilir.
private: Bu etiket altında tanımlanan üyelere sadece sınıf içerisinden erişilebilir.

Nesne (Object) Kavramı : Sınıf tipinde tanımlanan değişkenlere nesne (object) adı verilir. Sınıf tanımında public veya private belirtilmezse, tanımlanan sınıf üyelerinin erişim etiketleri private olarak varsayılır.

Sınıf Tanımlama Örnek: 
#include <iostream>
using namespace std;
class sinifOrnek
{
    public:
      int x;        //Veri Üyesi (data member)
      void yaz()    //Fonksiyon Üye (member function)
      {
           cout<<"x="<<x<<endl;
      }
};
int main()
{
   sinifOrnek y;  //sinifOrnek sınıfı tipinde y nesnesi tanımlanıyor.
   y.x = 3;      //y nesnesinin x üyesine 3 atanıyor.  
   y.yaz();     //y nesnesinin yaz() fonsiyonu çağrılıyor 
   return 0;
}

Aynı yapılarda olduğu gibi bir nesnenin veri veya fonksiyon üyelerine erişmek için nokta (.) operatörünü kullanırız. nesneAdı.üyeİsmi
   y.x = 3;      
   y.yaz();    

Örnek 1:
#include <stdio.h>
#include <conio.h>
#include <cstdlib>
#include <iostream>

using namespace std;
class Ornek
{
      public:
             int i; //Her noktadan erişilebilen üye
             void yaz()
             {
                  t = 6.1; //Üye fonksiyondan özel t üyesine erişilebilir.
                  z = 8;
                  cout<<"i= "<<i<<endl;
                  cout<<"t= "<<t<<endl;
                  cout<<"z= "<<z<<endl;                
             }
      private:  //Sadece sınıf içinden erişilebilen üyeler
              float t;
              int z;
};
int main()
{
    Ornek nesne;  //Ornek sınıfı tipinde nesne isimli nesne tanımı
    nesne.i = 6;  //nesne isimli nesnenin i üyesine 6 atanıyor.
    nesne.yaz(); //nesne isimli nesnenin yaz() fonksiyonu çağrılır. 
getch();
}

Örnek 2:
#include <stdio.h>
#include <conio.h>
#include <cstdlib>
#include <iostream>

using namespace std;
class Ornek
{
      public:
             int i; //Her noktadan erişilebilen üye
             void yaz()
             {
                  t = 6.1; //Üye fonksiyondan özel t üyesine erişilebilir.
                  z = 8;
                  cout<<"i= "<<i<<endl;
                  cout<<"t= "<<t<<endl;
                  cout<<"z= "<<z<<endl;                
             }
      private:  //Sadece sınıf içinden erişilebilen üyeler
              float t;
              int z;
};
int main()
{
    Ornek nesne;  //Ornek sınıfı tipinde nesne isimli nesne tanımı
    nesne.i = 6;  //nesne isimli nesnenin i üyesine 6 atanıyor.
    nesne.yaz(); //nesne isimli nesnenin yaz() fonksiyonu çağrılır. 
getch();
}

int main()
{
   ornek3 nesne;
   nesne.i =5;
   nesne.t =6.1;
   nesne.z =8;
   nesne.yaz()
}

Örnek 2'de public olarak etiketlenmiş a üyesine main fonksiyonundan erişim sağlanabilirken, private olarak etiketlenmiş b ve c üyelerine erişim sağlanamayacaktır.

Nesne Tanımlama Örnek: 
#include <stdio.h>
#include <conio.h>
#include <cstdlib>
#include <iostream>

using namespace std;

class NesneOrnek
{
      public:
            int n;
};
int main()
{
    NesneOrnek x,y; //NesneOrnek tipinde x ve y isimlerinde nesneleri tanımlıyoruz.
    y.n=6; //y nesnesinin n üyesine 6 atanır.
    cout<<" y nesnesinin n uyesi: "<<y.n<<endl;
    x=y; //" x nesnesini y nesnesine kopyalıyoruz
    cout<<" x nesnesinin n uyesi: "<<x.n<<endl;
    NesneOrnek &ref=y; //y nesnesini gösteren referans değişkeni ref tanımlıyoruz.
    cout<<" ref referansinin n uyesi: "<<ref.n<<endl;
    ref.n =5; //ref'in referans olduğu nesnenin n üyesine  ataması yapıyoruz.
    cout<<" ref referansinin n uyesi: "<<ref.n<<endl;
    NesneOrnek ndizi[3]; //NesneOrnek tipinde 3 nesneyi içeren bir dizi tanımlıyoruz.
    ndizi[2].n=4; //ndizinin 2.indeksli nesnesinin n üyesine 4 ataması yapıyoruz.
    cout<<" ndizi dizisinin 2.nesnesinin n uyesi: "<<ndizi[2].n<<endl;
getch();    
}


Örnek 3: 
Bir  Su Otamatımız olsun ve programımızda SuOtomatı adında bir sınıf tanımlayalım.

Durum özellikleri veri üyeleri (data members) :
  • ŞişeSu Fiyatı
  • Otomatta Kalan Su Sayısı
Davranış özellikleri üye fonksiyonları (member functions):
  • ilkVerilenSu(): fiyat ve Su Şişesi sayısına parametre olarak gelen değerleri atayacak. Varsayılan değeri 1 lira, sayı değeri ise 100 olarak alınacak.
  • suVerme(): Kullanıcıya ücreti gösterecek. Kullanıcı yeterli ücreti girdiyse ve otomatta su mevcut ise kullanıcıya bir şişe su verecek ve kullanıcının para üstünü hesaplayacak.
  • goster(): Su fiyatını ve otomatta kalan şişe sayısını verecek.
#include <stdio.h>
#include <conio.h>
#include <cstdlib>
#include <iostream>
using namespace std;

class SuOtomati
{
      float fiyat;
      int sayi;
      public:
             void ilkVerilenSu (float f=1, int s=100);
             void suVerme();
             void goster(); 
};

void SuOtomati::ilkVerilenSu( float f, int s)
{
     fiyat=f;
     sayi=s;
}

void SuOtomati::suVerme()
{
     float odeme,fark;
     cout<<"Bir Sise Su Fiyati: "<<fiyat<<" lira."<<endl;
     cout<<"Odemeniz: ";
     cin>>odeme;
     if((odeme>=fiyat)&&(sayi>0))
     {
       cout<<"Su Veriliyor."<<endl;
       sayi--;
       fark=odeme-fiyat;
       if(fark>0)
       {
                 cout<<"Para Ustunuz: ";
                 if(fark<1.0)
                    cout<<fark<<" lira"<<endl;
                 else 
                    cout<<fark*100<<" kurus"<<endl;                 
       }
}
else
    cout<<"Otomatta Su Mevcut Degil";
}

void SuOtomati::goster()
{
     cout<<"Son Durum:"<<endl; 
     cout<<"Bir Sise Su Fiyati: "<<fiyat<<endl;
     cout<<"Otomatta Kalan Su Sayisi: "<<sayi<<endl; 
}
int main()
{
    SuOtomati univ;
    univ.ilkVerilenSu();
    univ.suVerme();
    univ.goster();
    getch();
}


Son örneğimizde diğer örneklerden farklı olarak ikili kapsam çözme operatörü (::) binary scope resolution operator kullandık.

void SuOtomati::ilkVerilenSu( float f, int s)

Bu operatörün amacı sınıfın dışında tanımlanan fonksiyonun hangi sınıfın üye fonksiyonu olduğunu belirtmek içindir.

27 Ocak 2015 Salı

SQL'de Server Adını Değiştirme

SQL Server kurulu bilgisayarımızın veya sunucumuzun bilgisayar adı değiştiğinde SQL Server adı değişmemekte ve bununla birlikte bilgisayar adının değişmesin sorunlara neden olur. SQL server adını aşağıdaki Stored Procedure leri kullanarak değiştirebiliriz:

SQL Server Management Studio da Yeni bir Query ekranı açalım:
sp_dropserver 'EskiSunucuAdimiz' 
sp_addserver  'YeniSunucuAdimiz', 'local'

Execute işlemini yaparak değişikliği sağlıyoruz. Eğer SQL Server da default instance dan başka instance lar mevcut ise:
sp_dropserver <EskiSunucuAdimizinstancename> 
sp_addserver  <YeniSunucuAdimizinstancename>, local 

Son olarak MSSQL servisini restart edip yapmış olduğumuz değişikliği aşağıdaki sorguya sunucu adımızı girerek kontrol edebiliriz.
SELECT @@SERVERNAME as "SunucuAdimiz"

Java İkiz Asal Sayılar

public class ikiz_asal_sayilar {

 public static void main(String[] args) {

  int y=0;
         for(int i=2; i<60; i++){
             y=i+2;
             if(asalsayi(i)==0 && asalsayi(y)==0){
                 System.out.println("("+i+", "+y+")");
             }
             else continue;
         }
     }
     public static int asalsayi(int x){
         int c = 0;
         for(int i=2; i<=Math.sqrt(x); i++){
             if(x%i==0) c++;
         }
         if(c==0) return 0;
         else return 1;
     }
 } 

Copyright 2013-2017 | İbrahim BAYRAKTAR /dev/null Web Günlüğü