Nasıl daha hızlı kod yazılır?

Giriş

Selamlar, bu yazı tamamen  tecrübelerimden ortaya çıkardığım bir yazıdır.

Uzun yazılardan hoşlanmadığınızı bilerek direkt listeler halinde oluşturuyorum.

  1. Çalışmalardan önce netlik kazandırmak
    1. Mümkünse Mockup
    2. Mümkünse Wireframe çizimi
    3. Hiç biri değilse en azından el ile kağıda tüm netlik çıkartılmalı
  2. OOP Kullanarak (Mümkünse Framework)
  3. Test yazarak (Unittest, Daha doğrusu kodu yazmadan önce testini yazmak)
  4. IDE kullanarak (Önerilen: JetBrains IDE’s)
  5. Project Management Tool (Proje yönetimi aracı, Önerilen: Trello)
  6. Screenshot monitor (Veya benzeri bir Timer)
  7. Sakin müzikler

Unutmayın net olmayan şeyler sizi yolun ortasında her daim strese sokar, yavaşlatır. Projeyi her adımda netleştirin ve aynı performansı yakalamaya çalışın.

*Not: Müzik konusunda emin olmamakla birlikte bana göre önemli olan uzun süre aynı performansta çalışmaktır. Bunu da başınızı ağrıtanlarla değil sizin konsantrasyonunuzu artıran müzikler ile yapabilirsiniz.)

C programlama vs PHP

C programlama üniversite ve bazı ortaöğretim kurumlarında Algoritmaya giriş dersiyle verilmektedir. Bunun nedenine detaylı olarak baktığımızda C programlama dilinin diğer programlama dillerinin (AMPL, AWK, csh, C++, C– , C#, Objective-C, BitC, D, Go, Java, JavaScript, Limbo, LPC, Perl, PHP, Pike, Processing, Python) temellerini oluşturduğunu  ve diğer programlama dillerine göre daha basit bir yapıya ve geliştirmeye açık olduğunu görürüz.

C programlama dili 1972 yılında geliştirilmiş olmasına rağmen çeşitli güncellemeler ve kendini güçlendirmesi 1973 yılına, popülerleşmesi ise 1978 yılında Ritchie ve Brian Kernighan The C Programming Language (C Programlama Dili) kitabının çıkışıyla gerçekleşti. Bu kitap aynı zamanda C programlama diline bir standart getirdi. Bu standart C programlama dilinin en standart halidir.

php-logoC programlama

C programlama vs PHP

Yazının başlangıcında belirtildiği gibi diğer programlama dillerinin temel yapı taşını oluşturur. Bu nedenle salt (kütüphaneleri standart bir şekilde bırakıldığında) diğer programlama dilleri gibi gelişmiş bir yapıya sahip olmaz. Örneğin C’de bir metin içerisinde boşluk olup olmadığını her karakteri teker teker tarayan ve karakterin boşluk olup / olmadığını yazan bir fonksiyon yazmak zorunda kalabilirsiniz. Fakat PHP’de bunun fonksiyonu hazır olarak zaten yazılmıştır. Daha ayrıntılı bilgi için C programlama örnekleri sayfasını inceleyebilirsiniz.

PHP’ye geçmeden önce C yazan biri PHP’de hazır bir şekilde kullanılan fonksiyonları yazacağından mantıken fonksiyonların nasıl işlediğine bir kanaat getirebilir. C’den PHP’ye geçiş oldukça kolaydır. C yazan bir kişi kendini ortalama 2 veya 3 hafta içerisinde PHP yazabilir. Yalnız PHP’nin kendine göre bir takım standartları vardır. Bunlardan bir kaç tanesi nesne yönelim, framework ve kendine has özel değişkenleridir.

Nesne yönelim (Nesne yönelimli programlama (OOP) nedir?)

C programlama dili nesneye yönelim bir yapıda değildir. Hatta bu eksiklik nedeniyle C++ çıkartılmıştır. Nesne yönelimli programlama karmaşık programlarda kullanılan ve kodların daha rahat anlaşılabilmesi için bir programlama standartıdır. Yani kendini iyi yerlere yetiştirmek isteyen kişilerin bu yazım standartını bilmesi gerekir.

Framework

Her sitenin belli başlı standart ihtiyaçları vardır. Formlar, mail sistemi, upload sistemi vb.. Bunların sürekli farklı kişiler tarafından farklı kodlar yerine bu işi iyi bilen kişiler tarafından tek bir seferde (eksikleri güncellemer ile yazan kişiler tarafından güncellenir) yazıldığını düşünün. Yine kendine ait bir standart getiriyor. Bu şekilde programlama hem daha basit, hem nesneye yönelim, hem de daha hızlı olduğundan bir çok kurum tarafından kullanılıyor.

Kendine has özel değişkenlerdir

C Masaüstü programlama dilidir, PHP ise bir WEB programlama dilidir. Siz hangisinde ilerlemek istiyorsunuz? C’de gelişmiş kişiler daha çok fiziksel aygıtlar ile çalışacaklardır.

Örneğin:

http://www.youtube.com/watch?v=3Kw9ocy55e8

PHP’de ilerlemiş kişilerse işi yalnızca WEB ile olacaktır. Web programlama içerisinde Front End ve Back End denilen kısımlar içerisinde yer alabilirler. Bana kalırsa günümüzün dünyası Web ile ilerliyor. Hayat artık Facebook kurucusu Zuckerberg’in dediği gibi internette yaşanıyor…

Nesne Yönelimli Programlama (OOP) nedir?

OOP1_am

oop

Nesne Yönelimli Programlama nedir?

İngilizce:Object Oriented Programming olarak adlandırılan ve dilimize Nesne Yönelimli Programlama adıyla çevrilen programlam anlayışı 1960’lı yılların sonunda bir gereksinim olarak çıkmıştır. Nesne Yönelimli Programlamanın çıktığı zaman programlama tekniklerinin bilgisayarların performansına ayak uydurması gerekliydi. Oysa ki günümüzde giderek etkisini yitiren yordamsal programlama adıyla yürütülen projelerde kod parçaları ayrı sayfalarda birden çok kullanılıyor ve kodların yazılımcıdan yazılımcıya değişerek karmaşıklık seviyesini artıyordu. Bu durum hem hem bilgisayarları hem de yazılım maaliyetini artıyordu.

Bilim adamları bu durumu Genetik bilimini göz önüne alarak gerçekleştirdiler. Belirli nesnelerden yeni nesneler türetip aynı genlerimiz gibi yazılım kodlamasının içerisnideki evrimi çok daha basit hale getirmeyi başardılar.

 

Viki’den alıntı: NYP ayrıca, bilgi gizleme (information hiding), veri soyutlama (data abstraction), çok biçimlilik (polymorphism) ve kalıtım (inheritance) gibi yazılımın bakımını ve aynı yazılım üzerinde birden fazla kişinin çalışmasını kolaylaştıran kavramları da yazılım literatürüne kazandırmıştır.

Tasarım şablonları

Oluşturucu Tasarım Şablonları

Teklik(Singleton) Tasarım Şablonu

Fabrika(Factory) Tasarım Şablonu

Soyut Fabrika(Abstract Factory) Tasarım Şablonu

İnşaatcı (Builder) Tasarım Şablonu

Prototip(Prototype) Tasarım Şablonu

Yapısal Tasarım Şablonları

Adaptör(Adapter) Tasarım Şablonu

Vekil(Proxy) Tasarım Şablonu

Köprü (Bridge) Tasarım Şablonu

Cephe(Façade) Tasarım Şablonu

Dekoratör (Decorator) Tasarım Şablonu

Kompozit (Composite) Tasarım Şablonu

Sinek Siklet (Flyweight) Tasarım Şablonu

Davranışsal Tasarım Şablonları

Strateji (Strategy) Tasarım Şablonu

Durum (State) Tasarım Şablonu

Yineleyici (Iterator) Tasarım Şablonu

Memento Tasarım Şablonu

Observer Tasarım Şablonu

Sorumluluk Zinciri(Chain of Responsibility) Tasarım Şablonu

Ziyaretçi(Visitor) Tasarım Şablonu

Şablon (Template) Tasarım Şablonu

Komut (Command) Tasarım Şablonu

Aracı (Mediator Tasarım Şablonu)

PHP ile ASP.NET KARŞILAŞTIRMASI

PHP ile ASP.NET arasındaki farklardan bahseceğiz. Aslında bu iki dilden birini bilseniz yetiyor. Ancak ben hangisini öğren meliyim diyorsanız arasındaki farkları incelemeniz gerekir. 

PHP öğrenilmesi zor bir dil değildir. Çok fazla deneme yanılma görmeniz gerekir.  Örneğin PHP’ nin bir eksiği de hata yaptığımızda bu hataları bulmakta zorlanmamızdır. ASP.NET ise Visual Studio sayesinde hataları bize gösteriyor ve bu yönden kolaylık sağlıyor. 

 PHP ile ASP.NET arasındaki farklar

PHP - ASP.net farkı nedir? PHP - ASP.net farkı nedir? PHP - ASP.net farkı nedir? PHP - ASP.net farkı nedir? PHP - ASP.net farkı nedir?

Continue reading “PHP ile ASP.NET KARŞILAŞTIRMASI”

PHP ve Güvenlik

PHP ve GüvenlikPHP’de Ziyaretçiye bir takım yetkiler verirseniz kötü niyetli bir ziyaretçi web sitenizi ele geçirebilir. Düşünün ki iletişim adresinde “Ad-Soyad:” bölümüne herhangi bir ad değil de bir kod girerek web sitenizden bazı bilgileri silebilir veya bazı önemli dosyaları ele geçirebilir. Hack bu şekilde de işleyebilir. Bunun için PHP’de güvenlik için ziyaretçilere HTML etiketleri çalışmayan sadeec text formlar oluşturmalısınız. Ayrıca Ziyaretçi ile iletişim kurarken asla ve asla güvenliğinizden taviz vermeyin.

 

Güvenlik için bir kaç ipucu;

Web sitenize saldırın

Web sitenize saldırın. İnternetten araştırdığınız kullandığınız web sisteminin açıklarını öğrenerek kendi web adresinizde öğrenin. Bir nevi kendi sisteminizi test edin. Ne kadar dayanıklı. Örnek vermek gerekirse WordPress’in güncellemelerini kontrol etmezseniz siteniz çok kolay bir şekilde hacklenebilir. Nasıl mı güncellemeler bazen sistem içi bazen de yeni bir “Exploit” yani bir sistem açığı bulunduktan sonra yapılır. Güvenlik açığı bulunan güncellemeleri kontrol etmediğiniz anda Hacker’lar bu Exploit dediğimiz açıkları internetten bulup web sitenizi ele geçirebilirler.

Veritabanınıza çocuğunuz gibi bakın

Veritabanınıza çocuğunuz gibi bakın. Öyle her bilgiyi veritabanınıza yazmayın.  Bir takım önlemler koyun. İletişim formunu direk @gmail.com veya benzer e-mail servislerine gönderecek şekilde kurun. Eğer sisteminiz ile aynı panele kurulmuş bir iletişim formuna sahipseniz bu veritabanınızın risk altında olduğunu işaret eder.

Uploadlara dikkat etmeniz gerekli

Uploadlara dikkat etmeniz gerekli. Daha doğrusu uploadlarınızın uzantılarına dikkat etmeniz gerekli. Eğer siz örnek veriyorum ali.php dosyasını Browse yani Resim Seç buttonuna tıkladıktan sonra upload ettirebiliyorsanız yandınız demektir. ali.php.jpg şeklinde görünecek ve resim tarayıcıda göründüğü anda php dosyasıda çalıştırılacak. PHP dosyasının içerisinde kodlarla web site hacker’ın eline geçebilir.

SQL İnjection önemli. Nedir bu SQL İnjection?

SQL İnjection önemli. Nedir bu SQL İnjection? SQL İnjection SQL komutlarının .php uzantılı dosyalar içerisinde çalışmamasıdır. Yani diyorum ki hemen yukarıda bahsettiğim ali.php.jpg üzerinden hacker sitemizin veritabanına zarar veremiyor. Çünkü veritabanı komutları php dosyasının içerisinde çalışmıyor. Bugüne dek yapılan saldırılan büyük bir bölümü SQL İnjection saldırılardır. Bu yüzden önemli dedim, dikkat edilmeli.

Cookie’leri ziyaretçiye şifreleyerek gönderin

Cookie’leri ziyaretçiye şifreleyerek gönderin. Cookie’leri şifrelemek için daha önce açtığım konuya tıklayın. Nedenini bir güzel açıklamışım. Link: Cookie’leri şifrelemek

Daha güvenli bir veritabanı için Stored Procedure kullanın

Daha güvenli bir veritabanı için Stored Procedure kullanın. Stored Procedure Veritabanı tarafından çalıştırılan Veritabanınızdaki kayıtlı bilgilerden bağımsız bir nevi sanal veritabanıdır. Bilgisayarlardaki Ram’in bulunma nedenine benzer. Hem performans hem de güvenlik için kullanılmalıdır.

Gelen bilgi rakam mı yoksa yazı mı?

Gelen bilgi rakam mı yoksa yazı mı? Bunu öğrenmeniz için gelen verinin rakam olduğunu kontrol eden bir kontrol yapısına sahip olmalısınız. Bunun için gelen verinin “Göster” butonuna tıklandığında sayfanın içerisine bu kodu geçirmeniz  gerekiyor.

<?php

if  (is_int($_GET[“makalenumarasi”]))

{//Girilen veri sadece rakamdan oluşuyorsa veritabanına gönder kodları burada oluşturlacak}

else

{echo “Hata. Girdiğiniz değer(ler) rakamdan oluşmuyor.”;}

 

Veritabanına kayıt Ekleme – PHP

Veritabanı kayıt ekleme$baglanti=mysql_connect(“localhost”, “root”); mysql_query(“SET NAMES ‘latin5′”); $veritabani= mysql_select_db(“veritabaniadi”,$baglanti); $sql= “insert into tabloadi (tabloalani) values (‘Girilecekdeger’)”; if (mysql_query($sql,$baglanti)) { echo “Yazar Eklendi “; } else {echo “Hata! Kayıt eklenemedi.”;} mysql_close($baglanti); ?>

 

 

PHP ile Resmin üzerine yazı yazma

PHp ile resim çizme PHPPHP ile Resmin üzerine yazı yazma

 

<?php

header(“content-type: image/png”);

$yukseklik=100;

$genislik=300;

$resim=ImageCreate($genislik,$yukseklik);

$zemin=ImageColorAllocate($resim,200,1,0);

// Zemin rengini “1”rakımını yükselterek değiştirebilirsiniz.

$yazirenk=ImageColorAllocate($resim,0,0,1);

ImageFill($resim,0,0,$zemin);

$yazi=”asereo.com”;

Imagestring($resim,10,5,5,$yazi,$yazirenk);

Imagepng($resim);

?>

 

Önizleme:

PHP ile Kare Grafik oluşturma

data:image/jpg;base64,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PHP ile bir alan oluşturup daha sonra karenin tasarımını gerçekleştireceğiz. Bunun için öncelikle grafik oluşturacağımızı sunucumuza belirtelim. Daha sonra yükseklik, genişlik ve son olarak ise rengini belirleyeceğiz.

<?php

header(“content-type: image/jpg”);

$yukseklik=100;

$genislik=100;

$resim=ImageCreate($genislik,$yukseklik);

$zemin=ImageColorAllocate($resim,0,0,1);

// Zemin rengini “1”rakımını yükselterek değiştirebilirsiniz.

Imagefill($resim,0,0,$zemin);

Imagejpeg($resim);

?>

Önizleme:

PHP ile İç içe Kare Grafik oluşturma

http://t0.gstatic.com/images?q=tbn:ANd9GcRACiDBddu000HcGhUJgnwp064-r0Ku4eDRJ26jLM-oiDtkMoGzqQPHP ile İç içe Kare Grafik oluşturma

 

<?php

header(“content-type: image/png”);

$yukseklik=100;

$genislik=100;

$resim=ImageCreate($genislik,$yukseklik);

$zemin=ImageColorAllocate($resim,200,255,3);

// Zemin rengini “1”rakımını yükselterek değiştirebilirsiniz.

$altzemin=ImageColorAllocate($resim,100,5,100);

ImageFill($resim,0,0,$zemin);

ImageFilledRectangle($resim,10,10,$genislik-10,$yukseklik-10,$altzemin);

Imagepng($resim);

?>

Önizleme:

PHP ile Grafik

http://t0.gstatic.com/images?q=tbn:ANd9GcRACiDBddu000HcGhUJgnwp064-r0Ku4eDRJ26jLM-oiDtkMoGzqQBugün Twitter, Facebook ve buna benzer bir çok web sitesi kendi API’lerini açmış durumdadır. Bunun anlamı bu tür web sitelerin geliştiriciler (developer) tarafından geliştirilmesi anlamına gelir. PHP çıktığı 1995 yılından bu yana ücretsiz ve açık kaynak kodlu (herkes tarafından görüntülenip geliştirilebilir) olması nedenli 1995 yılından beri şimdiye kadar bir çok seviye atlamıştır. Öyle ki PHP ile Grafik bile çizilebilmektedir. PHP İle Grafik derslerine aşağıdan ulaşabilirsiniz.

 

PHP ile Kare Grafik oluşturma

PHP ile İç içe Kare Grafik oluşturma

PHP ile Resmin üzerine yazı yazma

PHP ile Yazıyı Grafiksel bir metne dönüştürme

PHP ile Daire – Elips çizme