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;
     }
 } 

15 Ocak 2015 Perşembe

Word'de iki farklı formatta sayfa numarası nasıl verilir?

Bir word belgesi içerisinde iki farklı formatta sayfa numarası eklemek genelde Tez, Staj Raporu, Bitirme projesi vb. hazırlayanlar için genel bir problemdir...bu sorunun aslında basit bir çözümü var.

Örneğin; MS Word'de 200 sayfalık bir belgemiz mevcut. 1. Sayfamız Kapak, 2-10 arası sayfalarımız Roma Rakamı (i, ii, iii) ve 11-200 arası sayfalarımızıda sıralı normal rakam (1,2,3) olarak düzenlemek ve sayfa numaraları vermek istiyoruz.

Adım adım farklı formatta sayfa numarası verme işlemini uygulayalım:

İlk olarak kapak sayfamızın sonuna gelip imleci tıklıyoruz ve yukarıdaki menülerden Page Layout (Sayfa Düzeni)  / Breaks (Kesmeler) / Section Break (Bölüm Sonu) altındaki Next Page (Sonraki Sayfa)'ya tıklıyoruz.

Page Layout (Sayfa Düzeni)  / Breaks (Kesmeler) / Section Break (Bölüm Sonu) / Next Page (Sonraki Sayfa)
Roma rakamı vermek istediğimiz bölümün sonuna gelip aynı işlemi tekrarlıyoruz. Page Layout (Sayfa Düzeni) / Breaks (Kesmeler) / Section Break (Bölüm Sonu) altındaki Next Page (Sonraki Sayfa)

Roma rakamı vermek istediğiniz bölümün ilk sayfasına geliyoruz Insert (Ekle) menüsünden Sayfa Numarası Ekleyelim. Page Number Format (Sayfa Numarası Biçimi) ekranında Number Format (Sayı Biçimi) Roma Rakamını seçiyoruz ve  Start at (Başlangıç) olarak "i" seçelim.
Sıralı normal rakam vereceğimiz sayfalar içinde yine sayfanın başına gidiyoruz ve Page Number Format (Sayfa Numarası Biçimi) ekranını açıyoruz.  Burada da başlangıcı "1" olarakdeğiştiriyoruz.
Son olarak Kapak sayfamıza eklenmiş olan numarayı kaldıracağız.Kapaktaki sayfa numarasını kaldırmak için sayfanın en alt veya üst kısmına (sayfa numarasının konumuna göre) çift tıklayın. Header Section / Footer Section (Üstbilgi ve Altbilgi) Araçları altında Design (Tasarım) sekmesinin altında Different First Page (İlk Sayfada Farklı) kutucuğunu işaretleyin. 

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