JQuery

“Actioni contrariam semper et æqualem esse reactionem.” “Her etkiye karşı zıt ve eşit bir tepki vardır.”Isaac Newton Giriş Kitabımız bir Javascript kitabı olmadığı için bu konuya uzun uzadıya girmemize gerek yok. Ancak yine de javascript’in ne olduğunu, ne için kullanıldığını kısaca özetlemeliyiz ki JQuery konusunu anlayalım. JavaScript Bir programlama dilidir. Çoğu özelliği ile PHP’ye benzese de, temelde pek alakası olduğunu söyleyemeyecğim. Hatta bazen bir PHP geliştiricisi olarak JavaScript kodu okurken beynim duruyor diyebilirim. Peki neden icad edilmiş diyecek olursanız, 1995 yılında Netscape firmasında çalışan Brendan Eich tarafından kullanıcıların tarayıcıda girdikleri form verilerini, sunucuya gönderilmeden kontrol etmek için diyebiliriz. Kaynak: http://speakingjs.com/es5/ch04.html Biz daha önce HTML’nin web sunucularına gönderilen istek sonucu tarayıcıda görüntülenen sayfanın dili olduğunu öğrenmiştik. PHP ise HTML dosyasına, kullanıcıdan gelen isteğe göre müdahele etmemizi sağlayan script “betik” diliydi ve sunucu tarafı...
Patreon üyelerine özel içerik.
To view this content, you must be a member of Mutlu's Patreon at "Merakli Bilişimci Üye..." or higher tier
Already a Patreon member? Refresh to access this post.

PHP 7 ile gelen yenilikler

“We can not solve our problems with the same level of thinking that created them.” “Sorunlar, onları yaratmış olan düşünce yapısı ile çözülemez.”Albert Einstein 3 Aralık 2015 tarihinde PHP’nin 7. sürümü yayınlandı. “Biz 5.6 kullanıyorduk, ne oldu falan bir anda 6’yı atladınız.” dedik ama işin aslı sonradan anlaşıldı. 5.6 sürümü devam ederken 6. sürümü deneysel olarak yazmışlar zaten. Ama kimileri uğursuzluktan korunmak için sürüm atladıklarını söylüyor. Mesela Türkiye’de var mı bilmiyorum ama uçaklarda 13. numaralı koltuk olmuyor. Hatta İtalya’da işi abartıp bi kaç tane numarayı da uğursuz ilan etmişler. Bir de PHP 7 çıkmadan önce kullanılmaya karar verilmiş ama yayınlanmamış olan yeni özellikleri, açıkgöz bazı PHP yazarları, ticari kazanç için PHP 6 adı altında kitaplaştırmışlar. PHP Grubu bu sürüm numarasıyla onlara da gol atmış oldu böylelikle. Bu kitabı yazarken giriş seviyesinde bir dil tutturmaya çalıştım. PHP 7’nin benim bile anlamak için dikkatle okumak zorunda olduğum bazı özellikleri var, bunları zaten siz ko...
Patreon üyelerine özel içerik.
To view this content, you must be a member of Mutlu's Patreon at "Merakli Bilişimci Üye..." or higher tier
Already a Patreon member? Refresh to access this post.

2018 yılında hala PHP öğrenmeye değer mi?

https://dev.to/mporam/is-php-relevant–1np

Dev.to platformunda Mike Oram tarafından yayınlanan “Is PHP relevant?” adlı yazının Türkçe çevirisidir.

Bana akademisyenler, iş başvurusu yapanlar hatta diğer geliştiriciler tarafından en sık sorulan sorulardan biri “Neden PHP öğretiyorsun?” hatta bazen “PHP ölü bir dil değil mi?” sorusudur.

En başından bu konuda gayet açık olayım. PHP ÖLÜ BİR DİL DEĞİLDİR.

2017 yılının aralık ayında, PHP internette server tarafında kullanılan programlama dillerinin %83’ünü oluşturuyordu. Bu sonucu PHP tabanlı WordPress gibi içerik yönetim sistemlerine borçluyuz, ama bu hazır içerik yönetim sistemlerini bu orandan çıkarsak dahi, PHP web’in %54’ünden fazlasına güç vermekte. Zaten, aşağıdaki grafiğe bakarsanız, PHP’nin market payı 2017 yılında gayet tutarlıymış hatta artış göstermiş.


Eylül ayında ‘IT endüstrisi için uygun’ yetenek ve teknolojiler hakkında bir blog yazısı yazmıştım. O blog yazısını yazdığım sırada, PHP ve Javascript iş pazarında açık ara aranan özelliklerdendi. Hala da böyledir. Tesadüfi olmayan bir şekilde, akademide en çok vakit ayırdığımız iki dil de PHP ve JavaScript’tir.

Şimdi, yeni programcılara en çok öğretilen diğer dillerin kullanım istatistiklerine bir göz atalım. Üniversiteler Java veya C’ye odaklanmaya yatkınlar. Bunun sonucunda bir çok girişim uygulamalarını bu dilleri kullanarak geliştirmekte. Tüm bu çabaların sonucunda Java server tarafındaki uygulamaların %2.5’una güç veriyor. C hiç bir yerde görülmemekle beraber, bazen üniversitelerde öğretilen ASP.NET %14.2 oranına ulaşabilmiş. Programlama workshoplarında en popüler olan Python, Ruby veya sunucu tabanlı JavaScript dillerinin hepsini birden topladığımıza, internettin sadece %1.2’sine güç verebilmişler. Sunucu taraflı JavaScript (node.js) en hızlı artan sunucu taraflı teknoloji olmasına rağmen halen az kullanılıyor ancak tabiiki öğrenilmeli. (Biz akademik takvimimizde Node.js öğretmeye 1 hafta ayırıyoruz)

Techrepublic kısa bir zaman önce 2018 yılında öğrenilmesi gereken “top” dilleri sıraladığı, PHP ve JavaScipt’in ilk 6 ya girdiği, PHP’nin 2017 yılında 9’unculuktan 6’ncılığa yükseldiği bir makale yayınladı.

Peki neden bir sürü kişi PHP’nin uygunsuz ya da ölü bir dil olduğunu iddia ediyor?

Bunun, benim gördüğüm iki ana nedeni var. Birincisi, bu geliştiriciler arasında dolaşıp duran bir söylentiden ibaret. PHP, ilk zamanlarında görece olarak yavaş, nereye gittiği belli olmayan ve bir sürü tutarsızlığa sahip bir dildi. Yıllar boyunca PHP bayağı bir gelişti, hatta 2009 yılında 5.3 sürümünün yayınlanmasından beri, eski şikayetlerin çoğu düzeltildi. En son sürüm (7.1) son derece hızlı, modern ve güçlü bir şekilde nesne yönelimliliğe odaklanan bir dildir.

İkincisi, PHP esnek ve “loosely typed” yani kesin tür belirtilmemiş bir dildir. Bu, metin editörünü açıp hızlı yazılım geliştirmeye olanak verse de, kolayca kötü kod üretmeye de yol açmakta. Yani kendi başarısının bir kurbanı olduğunu söyleyebilirsiniz. Ancak, düzgün bir şekil yazıldığında, ve DRY, SOLID ve MVC gibi (bizim de akademide öğrettiğimiz) metodolojiler kullanıldığında, PHP gerçekten güçlü, iyi bir çeşitliliğe sahip, bir çok şeyleri sunabilecek hızlı bir dildir.

Yani, PHP ölmedi. Her dilde olduğu gibi kendine özgü kusurları olsa da, bırakalım istatistikler bizim yerimize bu iddialara cevap versin.

Hiç Bilmeyenler İçin Nesne Yönelimli Programlamaya Giriş-12 Düzgün dizin yapısı

Bu yazı Hiç Bilmeyenler İçin Nesne Yönelimli Programlamaya Giriş-11 Bileşenler, Composer ve JSON yazısının devamıdır. Önce onu okumanızı öneririm. Medium.com adresinde görüntüleyin Buraya kadar composer kullanarak bileşenleri nasıl yükleyip erişebileceğimizi öğrendik. Şimdi sıra geldi onu kullanmaya. Bu yazıda PHPUnit anlatacağım, ancak herşeyden önce doğru dürüst bir yazılım paketi nasıl olur kısaca ona değineceğim. Adım adım ilerleyeceğiz. Eğer yoksa hemen GitHub hesabı kurmanızı öneriyorum. Kitabımda GitHub kurulumunu, nasıl üye olunacağını anlatmıştım. Doğru Dürüst Dizin Yapısı Doğru dürüst bir projemiz olsun istiyorsak dizin yapısına dikkat etmemiz gerekiyor. İster JavaScript, ister PHP, hangi dilde yazılım üretiyorsak üretelim, her zaman söylediğim gibi, bazı iyi pratiklere dikkat etmemiz lazım. Her türlü projede en az iki tane dizinimizin olması şart: src ve tests. Src dizini adı üstünde source yani kaynak kodumuzun bulunduğu dizin olup, tests ise, PHPUnit veya başka bir test aracı kullanarak yazacağımız testlerin bulunacağı dizindir. Örneğin güzel bir araç olan thephpleague/j...
Patreon üyelerine özel içerik.
To view this content, you must be a member of Mutlu's Patreon at "Merakli Bilişimci Üye..." or higher tier
Already a Patreon member? Refresh to access this post.

Hiç Bilmeyenler İçin Nesne Yönelimli Programlamaya Giriş-11 Bileşenler, Composer ve JSON

Bu yazı Hiç Bilmeyenler İçin Nesne Yönelimli Programlamaya Giriş-10 Sayfa Düzeni yazısının devamıdır. Önce onu okumanızı öneririm. Medium.com adresinde görüntüleyin Bileşen Bir önceki yazıda View yani görünüm sınıfını her türlü şemayı kullanabilecek şekle dönüştürdük ve kullandık. Şimdi teker teker public dizini altında oluşturduğumuz index.html dosyasını parçalayalım ve tema dosyalarına dönüştürelim. Daha önceden oluşturduğumuz Template yani şablon klasöründe tek tek ismini vereceğim dosyaları oluşturun ve kodlarını içine kopyalayın. layout.php: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title><?= $title ?></title> <link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:300,300italic,700,700italic"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css"> <link rel="stylesheet" href="public/css/universal.css"></head><body><?= $content ?><script src="public/js/main.js"></script></body></html> Bu şablon bi...
Patreon üyelerine özel içerik.
To view this content, you must be a member of Mutlu's Patreon at "Merakli Bilişimci Üye..." or higher tier
Already a Patreon member? Refresh to access this post.

Hiç Bilmeyenler İçin Nesne Yönelimli Programlamaya Giriş-10 Sayfa Düzeni

Bu yazı Hiç Bilmeyenler İçin Nesne Yönelimli Programlamaya Giriş-9 Şablonlar yazısının devamıdır. Önce onu okumanızı öneririm. Medium.com adresinde görüntüleyin Alexey Brodovitch Web sayfalarında veya basılı mecralarda, hiçbir zaman veriyi, yazıyı resmi olduğu gibi okuyucuya sunmuyoruz. İnsanların yazıları rahatça okuyabilmeleri için, ya da web sayfamızda kaybolmadan dolaşabilmeleri için sayfamızdaki verileri, belirli bir düzen kullanarak sayfaya yerleştirmemiz ve biçimlendirmemiz gerekiyor. Burada web tasarımı yapmanın ilkelerine girmeyeceğim, ancak merak ediyorsanız bu konuyu araştırabilirsiniz. Örneğin dümdüz veriyi ekrana bastığımızda, bunlardan bir anlam çıkarmak neredeyse imkansızdır. Arjantin Enflasyon Verisi Bu yüzden bu verileri mesela grafikler kullanarak anlamlı hale getirmeye çalışırız. Arjantin Enflasyon Grafiği Yani amacımız sadece verilerimizin güzel gözükmesi değil, anlaşılabilir olması, uygulamamızın kolay kullanılabilmesi, okunaklı olması, belli amaçlar için aynı veriyi farklı şekilde görüntüleyebilmemiz (yeniden kullanılabilirlik) de aynı zamanda. Sayfa düzeni, vey...
Patreon üyelerine özel içerik.
To view this content, you must be a member of Mutlu's Patreon at "Merakli Bilişimci Üye..." or higher tier
Already a Patreon member? Refresh to access this post.

Hiç Bilmeyenler İçin Nesne Yönelimli Programlamaya Giriş-9 Şablonlar

Bu yazı Hiç Bilmeyenler İçin Nesne Yönelimli Programlamaya Giriş-8 -Web Arayüzü yazısının devamıdır. Önce onu okumanızı öneririm. Medium.com adresinde görüntüleyin Bir önceki yazıda View yani görünüm sınıflarından bahsettik ve EntryView adında bir sınıf oluşturduk. Veriyi HTML kodlarıyla render metodunun içinde sardık ve sunumunu yaptık. Şimdi aynı render metodunu bir template yani şablon metodu kullanacak şekilde değiştirelim. <?phpnamespace MidoriKocak;class EntryView{private $entry;public function __construct(EntryInterface $entry = null) {if ($entry !== null) { $this->entry = $entry; } }private function template(EntryInterface $entry) { $title = "<h3>" . $entry->getKey() . "</h3>"; $values = $entry->getValues(); $list = "";foreach ($values as $value) { $list .= "<li>" . $value . "</li>"; } $result = "<p class='entry'>" . $title . "<ol class='values'>" . $list . "</ol>" . "</p>";return $result; }public function setEntry(EntryInterface $entry) { $this->entry = $entry; }public function render() {if (!isset($this->entr...
Patreon üyelerine özel içerik.
To view this content, you must be a member of Mutlu's Patreon at "Merakli Bilişimci Üye..." or higher tier
Already a Patreon member? Refresh to access this post.

Hiç Bilmeyenler İçin Nesne Yönelimli Programlamaya Giriş-8 Web Arayüzü

Bu yazı Hiç Bilmeyenler İçin Nesne Yönelimli Programlamaya Giriş-7 — Sınıfları Kullanmak ve API meselesi yazısının devamıdır. Önce onu okumanızı öneririm. Medium.com adresinde görüntüleyin Bir önceki yazıda, API kavramını, kullanıcının uygulamaya hangi adresleri kullanarak erişebileceğini, bu adreslerin nasıl çalışacağını, yönlendirme kavramını ve arayüz mantığını anlatmıştım. Bu yazıda kullanıcının ilk olarak karşılacağı arayüzleri nasıl oluşturacağımızı, nasıl tasarlayacağımızı ve kullanacağımızı anlatacağım. Daha önce Projelerle PHP 7 adlı kitabımda HTML konusunu anlattığım için, html sayfaları yazmak konusunda detaya inmeyeceğim. Eğer konu ile ilgili eksiğiniz varsa benim kitabımdan veya internetteki kaynaklardan eksiğinizi giderebilirsiniz. Web uygulamamızda, kullanıcıya bilgileri bir HTML sayfası aracılığı ile gösterecek, ondan bilgileri bir HTML formu aracılığı ile alacak ve işleyeceğiz. Ayrıca kullanıcıdan gelecek bilgilere neden güvenmememiz gerektiğini, kötü niyetli bir kullanıcının sistemimize ve programdaki diğer kullanıcılara nasıl zarar verebileceğini göreceğiz. Ayrıca...
Patreon üyelerine özel içerik.
To view this content, you must be a member of Mutlu's Patreon at "Merakli Bilişimci Üye..." or higher tier
Already a Patreon member? Refresh to access this post.

Hiç Bilmeyenler İçin Nesne Yönelimli Programlamaya Giriş-7 —Sınıfları Kullanmak ve API meselesi

Bu yazı daha önce yazdığım Hiç Bilmeyenler İçin Nesne Yönelimli Programlamaya Giriş-6 yazısının devamıdır. Önce onu okumanızı öneririm. Medium.com adresinde görüntüleyin Bu yazıya kadar, bir programı sınıflar kullanarak nasıl tasarlayacağımızı, nasıl temiz kod yazacağımızı, kodlarımızı nasıl hatalara karşı kontrol edeceğimizi, sınıflarımızın sorumluluklarının ne olacağını anlattık. Peki programımızı kim nasıl kullanacak? Sınıflarımızı yazdık ve app.php dosyası içinde de kullandık, ama son kullanıcı bu programı nasıl kullanacak? Bu yazıda bu konuyu detaylıca işleyeceğiz. Ayrıca programımıza arama, sıralama, üyelik gibi ek özellikler eklemek istediğimizde ne yapacağız? Bu meseleye de bu yazıda kısaca değineceğiz. Kullanıcılar Genel olarak programların amacı Bu konuyu bu seride defalarca açıklamıştık ancak şimdi tıpkı başta sınıflarımızı tasarladığımızda yaptığımız gibi, programımızın nasıl çalışacağını ve amaçlarının ne olduğunu kısaca anlamamız gerekiyor ki, sınıflarımızı kullanacak program kodumuzu da nesne yönelimli bir şekilde tasarlayabilelim. Genellikle programların amacı kullanı...
Patreon üyelerine özel içerik.
To view this content, you must be a member of Mutlu's Patreon at "Merakli Bilişimci Üye..." or higher tier
Already a Patreon member? Refresh to access this post.

Hiç Bilmeyenler İçin Nesne Yönelimli Programlamaya Giriş-6— Girdi Sınıfı

Bu yazı daha önce yazdığım Hiç Bilmeyenler İçin Nesne Yönelimli Programlamaya Giriş-5 yazısının devamıdır. Önce onu okumanızı öneririm. Medium.com adresinde görüntüleyin Bir önceki yazıda girdi sınıfımızı kullanan sözlük sınıfımızı yazdık. Deneme/Yanılma yani Try/Catch bloklarını kullanarak hatalara dayanıklı kod yazmayı ve kod tekrarlarını önlemekten bahsettik. Bu yazıda Entry yani girdi sınıfımızı oluşturacağız. Sözlük girdisi Dictionary.php sınıfımızın bulunduğu dizinde Entry.php adlı bir dosya oluşturalım. Artık bir sınıfın aşağı yukarı nasıl olması gerektiğini biliyorsunuz. İçi boş sınıfımızı şu şekilde yazalım. <?phpnamespace MidoriKocak;class Entry implements EntryInterface{public function __construct(){}public function setKey(string $key){}public function getKey(): string{}public function setValues(array $values){}public function getValues(): array{}public function getValue(int $order): string{}public function setValue(int $order, string $newValue){}public function addValue(string $value){}public function deleteValue(int $order){}} Her sınıfın __construct metodu olması ger...
Patreon üyelerine özel içerik.
To view this content, you must be a member of Mutlu's Patreon at "Merakli Bilişimci Üye..." or higher tier
Already a Patreon member? Refresh to access this post.