3. Baskı için hazırlıklar

Merhaba arkadaşlar, bildiğiniz gibi buradaki yazılardan oluşan “Projelerle PHP7” kitabımın 2. baskısı tükendi. Yaklaşık 2 yıldır yeni baskı için örnekler hazırlıyorum ve çalışmalarıma devam ediyorum. Örneklerin hepsini bugün tamamladım.

Şimdi sırada bu örneklerin tek tek açıklanarak anlatılması olacak, ancak şu anda yazılardan da güncellenmesi gereken işler var. Kısaca bu yazıda 2020 yazacağım yazıları listeleyeceğim.

  • Windows ile PHP, MYSQL Kurulumu (Bitnami sürümü, bunun için windows kuruyorum şu anda).
  • Hali hazırdaki örneklerin güncellenmesi ve dil anlatımı kısmındaki örneklerin güncellenmesi.
  • Bilgisayarlar nasıl düşünür? (Kodlama mantığı hakkında yeni yazı).
  • Temelden HTML örneği. Özgeçmiş, kişisel site.
  • Kişisel site için örnek galeri.
  • Kişisel site için örnek blog. (Sadece HTML)
  • Kişisel sitenin özgeçmiş, blog ve galeri kısmı için backend yazılması. Bu kolay olmalı.
  • Bootstrap ile şirket sitesi örneğinin yeniden yazılması
  • Nesne yönelimli programlama örneğinin güncellenmesi. (Meraklı Framework diyeceğiz adına)

Daha sonraki aşamada PHP ile Nesne yönelimli programlama yazılarını elden geçireceğim. Bunun için:

  • Nesne mantığı ve felsefesi
  • Test odaklı geliştirme
  • Örnek sözlük uygulaması (Framework kullanmadan)
  • Laravel ile örnek gerçek uygulama (Vue ve Bootstrap kullanabiliriz.)

Sizin de burada/kitapta olmasını istediğiniz bilgiler varsa, yazarsanız sevinirim.

Sevgiler
Midori

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.

Açık Standartları neden savunmalıyız?


Şöyle bir okur mektubu geldi.

Merhaba,

Medium’da ki yazılarını severek okuyorum, yalnız gözden kaçırdığın bazı şeyler olduğunu düşünüyorum.

Endüstriye ucuz iş gücü yapmak amacıyla hazırlanan müfredatın bilginin oluşma diyalektiğine aykırı biçimde oluşması ve kakalanmasıyla, yazılım mimarilerinin mutlak doğruymuşçasına kabul edilmesi gerçeğinin benzerliğini fark edemediğini düşünüyorum.

Yıllar önce gazeteler çok farklı konuları barındırırdı ama teknolojinin gelişmesi ve mobil cihazların yaygınlaşması insanların ilgi alanlarını ve önceliklerini hedeflenmesinin yolunu açtı, bu durum aldıkları telefon arayüzlerini sadeleştirme eğilimlerini tetikledi, teknoloji insan ihtiyaçlarına paralel olarak gelişti, hep de öyle olacak gibi görünüyor.

Bilginin oluşma diyalektiğini görmezden gelen kapitalizm, bugün inovasyon adı altında workshoplar düzenliyor, dev şirketler kodlarını geliştiricilere açıyor.

Kalıplarla öylesine meşguller ki insanların ihtiyaç ve amaçlarını artık anlamakta zorlanıyorlar, bunun sebebini yazılım teknolojilerinin mutlak doğruymuşçasına kabul edilmesine ve geliştiricilerin bu teknolojileri öğrenmek için büyük zaman harcamasına bağlıyorum.

Ben interface ve diğer mimari öğelerin gerekli olmadığına onlar yerine javascript, html de ki gelişmelerin beraber kullanıldığı ekosistemlerin işe yarayabileceğine inanıyorum bilmiyorum belki de yanılıyorumdur ama dediğim gibi bunları kullanmanın mantıklı olmadığına inanıyorum.

Yürekten soruyorum beni ikna eder misin?
Sevgilerimle.

Ben de şu şekilde cevap verdim:

Selam,

Ben yazılarımı ucuz iş gücü için müfredat oluşturmak amacıyla yazmıyorum. Ben zamanında bilişim çalışanları dayanışma ağında bilginin metalaştırılmasına karşı bilgiyi paylaşma amaçlı ücretsiz eğitimleri başlattığımda da amacım buydu. Yazılım mimarilerinin mutlak doğru olması ile ucuz işgücü kavramının veya zorlama bilgi olmasının bağlantısı olmadığını düşünüyorum. Bilgisayar Bilimleri ve mühendisliği şunun surasında 50–60 senelik uygulama alanı bulmuş, genç bir mühendislik dalıdır. Tıp gibi, Fizik veya Biyoloji gibi teorileri yoktur veya çok azdır. Standartlar oturmamıştır ve standartlaşma çabası vardır. Yazılım mimarileri olarak tasarım desenlerinden bahsediyorsunuz sanırım. Tasarım desenleri konusu Christopher Alexander tarafından bina mimarisi yani inşaat mühendisliği için 1977’de ortaya atılan bir kavram. Yazılım mühendisliğinde bugün olduğu gibi o gün de varolan anarşi ve kaos ortamından dolayı, ortak ve bilimsel bir metodoloji oluşturmak amaçlı, inşaat mühendisliği biliminden alınan bir kavramlar dizisi. Bilimsel olduğu için din gibi değiştirilmez değil tabii ki.

Gelelim ikna konusuna, biyoloji, tıp, ilaç sanayii gibi insan sağlığını ilgilendiren bilim ve mühendislik alanları gibi kurallar ve yönetim organları olmadığı için, doğal olarak kuralsız, kaotik ve cahillikten beslenen bir ortam mevcut. 1950’lerde de mevcuttu. Bu ortamın böyle olması büyük şirketlerin lehine bir durum. Büyük şirketler yapısal kodlara karşı, tabii ki prosedürel kodlamayı promote edecekler ve standartların olmamasından kendi standartlarını dayatarak faydalanacaklar. Tıpkı, MVC gibi OOP gibi, Modülerlik kavramlara tecavüz eden React teknolojisinin facebook tarafından yaygınlaştırılması veya Google’ın saçma sapan bir js çerçevesi olan Angular teknolojisini yaymaya çalışması gibi. Bu şirket bağımlı teknolojiler, internetin, web’in herkese açık, demokratik web standartlarına tam anlamıyla tecavüz ederler, ve bu standartların oluşmalarını geciktirirler. Tıpkı Adobe şirketinin ömrü dolduğu ve gericilik ürettiği halde Flash adlı berbat kapalı kaynaklı boktan teknolojiyi solunum cihazında yaşatmaya çalışması gibi. Bu konu ile ilgili şu yazıyı okumanızı öneririm. https://www.pandastrike.com/posts/20150311-react-bad-idea

Sonuç olarak, ortak, açık demokratik standartlar ile oluşturulan yapısal kodlar, allahın emri değildir tabii ki, ancak standartsızlık ortamından küçük yazılımcılar veya minik yazılım evleri değil, dev şirketler fayda sağlarlar ki, tüm yazılımcılar kendi yan-kar ortamlarını yarattıkları ekosistemlerine doluşsunlar.

Kapitalizmin ve kapitalist şirketlerin kendi geliştirdikleri sözde “açık kaynaklı” ama açık web standartlarına tecavüz eden teknolojileri yaymaya çalışmalarının nedenini sanırım yukarıdaki paragraftan anlamışsınızdır. IBM gibi iğrenç bir kapitalist şirketin Linux vakfına neden on milyarlarca dolar bağış yaptığını da başka bir yazıda açıklamam gerekiyor sanırım ama bunu yorumlamayı şimdilik size bırakıyorum. İpucu olarak burjuva bankalarından kredi çeken aristokratlara referans verebilirim.

İyi çalışmalar,
Mutlu Koçak


Projelerle PHP 7

Ben Mutlu Koçak, Bilgisayar Mühendisiyim, ZCPE Sertifikasına sahibim ve “Hiç Bilmeyenler İçin İnternet Programlamaya Giriş — PHP 7” adlı kitabın yazarıyım. Kitabım: https://www.seckin.com.tr/kitap/911934237
Özgeçmişim:
http://represent.io/midorikocak.pdf 
Websitem:
http://mtkocak.net