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