PhpKonf istanbulda php konferansı

Her gün işe gitmek için kalktığımdan 1 saat erken kalkarak, işe giderkenki yolun 100 katını katederek (iş yeri arka sokakta) ulaştığım konferans mekanı beşiktaş meydandaki bahçeşehir üniversitesi. Gişini uzun süre dolanarak tahayüll ederek en berduş yere doğru yöneldim, ki %40 doğruymuş, %60 biraz daha ara sokaktan, starbucks ve başka bir kafenin ortasından girince olan yer.

Bu kadar kalabalık beklemiyordum. Tmm merkezi bir yerdeyiz, beşiktaş, tatil günü (tabiki normal çalışanlara göre tatil, bana değil normalde) olan cmt, Ama belki de bu kadar popüler bir dil hakkaten php. Bilmsellikten ve yaparızcılık, hallederiz abicilikle örülü ama gerçekten herkesin hayran olduğu bir dil.


Herkes lafını etkinliğin düzenleyicisi ubit'e dair kullanıyorum. Eğer hızlı bir şekilde çıkmak, uygulamanızı çalışır yapmak istiyorsanız kullanacağınız en sağlam seçenek PHP. Php programcının isteklerini en basit şekilde "çalışır" kod üretmek için hazırlanmış. Doğal olarak bu konferansın amacı da ortaya çıkıyor: Php ile nasıl güzel kod yazılır. Nitakim bu kadar hızlı ve esnek serbestlik sağlayınca dil, bir toparlama gerekiyor.

İlk konuşmada Osman Ürgür Adam olacak kod böyle bir gereksinimi dillendiriyordu. Hızlıca kötü yazılmış kodu, adam etme işi. Limango'da ellerinde almanca değişkenler, veritabanı yapısı ve spagetti kodla karşı karşıya kalmışlar. İhtiyaçlar gelecek düşünülmeden koda eklenmiş. Hızlı bir oldu/tamam doğal olarak gelecekte kodun anlaşılmamasına, değişiklik yapılma zorluğuna ve hata üretebilirliğe yol açar. php versiyonu ile (5.1 hakkaten eski) cebelleşmelerinden, laravel'in custom sürümünü kullanarak api geliştirmelerinden ve api ile önce servisleri sonra mobil tarafı yazarak bir yandan da front endde geliştirerek eski koddan kurtulma macerasını anlattı.

Bence konferansın en ilginç konuşması Php ile Test güdümlü geliştirme sunumuyla Osman Yükselindi. Hani duyduğum, denemek istediğim bir konsept, fakat nasıl yapılır, ne ediliri göremiyordum. Örneklerle üzerinden gittik. Test driven yazmak için kodu, önce kod yazmamak lazım olduğunu, önce testleri yazma gerekliliği hakkaten çok ilginçti. Bir de aklıma takılan, yaw peki mail atmıcaksak boş sınıfları nasıl yaratıcaz sorumu, mock'ladı.

Elasticsearch ve Solr ile Hüseyin Mert kulağımıza  su kaçırmak istediğini ifade etti. Emir Karşıyakalı, rest'den bahsetti. Kısaca soad metodlarınızı gösterir, çalışmayı ifşa eder, sadece post kullanır, http hata kodları ile çalışmaz rest iyidir dedi. Tayyar Beşikçi, MongoDB anlattı. İbrahim Gündüz, Tatil.com'da beraber çalıştığımız arkadaşım, yük altında asenkron hayat şeklinde, yüksek performanslı uygulamalarda, hemen yapılmayabilecek işlemleri Message Queue atarak asenkron kod çalıştırmadak konseptual bahsetti. Log, Mail, sms, ödeme, belki search asenkron çalışabilir. Siz mesaj kuyruğuna isteği yazarsınız, consumer/subscriber program kuyruktan işleri alarak gerekeni yapar. Böylece mesela mail atacaksanız, işlemi kuyruğa atıp kendi prosesinizi kapatırsınız.

Muhittin Özerin sunduğu İlişkisel veritabanları ve Doctrine'de çıktım. Ne yazıkki nginx sunumunu kaçırdım.


Doctrine ORM Sunumu hakkında

PhpKonf istanbulda php konferansında Muhittin Özerin  İlişkisel veritabanları ve Doctrine sundundu.

Sunumuna uzun uzun orta okul db bilgileri anlatarak başladı. İlişkisel veritabanı nedir, aralarında neler var vb. Sonra orm'nin faydasını sıraladı, bir veritabana mahküm kalmamak, kodun güzel gözükmesi. Tabi dezavantajlarına gelip performans yazınca ekranda, suç programcının oldu: "Bazıları der yavaştır. Tabi kötü yazılırsa kod yavaşlık olur, ormler hızlıdır aslında, tek sayfalık bir site yapıp orm kullanırsanız yavaşlar, orm'ler büyük kapsamlı projeler içindir, böyle projelerde hız farkını anlarsınız. Ama sorguların güzel yazılması, db indekslerinin hazırlanmış olması gerekir".  Doctrinin diğer frameworklerle karşılaştırılmasında salondan çıkmak zaruret oldu. stackoverflow'dan soruları almış, 4500 doctrin sorusu var, en yakın rakibi 800 soruda. Bir arkadaş cevaplar da önemli dedi. Bu "Muhittin" arkadaş, 4500 soruda elbette 800 cevaptan fazla yanıt vardır. (süper!) olmadığını düşünmek saçmalık olur" (batırdın arkadaş!) dedi. Sonra topladım eşyaları çıktım.

ORM hakkında düşüncelerim:
Kod içinde sql sorguları çok kötü. model katmanında bile php yazıyoruz, sql nerden çıktı diyoruz. Aynı zamanda mysql'den mongo'ya yada postgresql'e sorunsuz bir geçiş stratejisi çizemem.

Fakat Orm özellikle php'de büyük dert. db şemalarını çıkarması, bizi uğraştırmaması, şemaları koda yansıtması, koddaki değişklikleri db'ye yansıtması. Bunları yaparken hızlı initialize olması, hafızada az yer tutması vb.

Yok böyle bir orm. Orm ortaya kocaman kütlesi, onlarca yan destek sınıfları ile oturan hantal bir yapıdır. Siz gereksinimlerinizi php kod olarak yazarsınız, orm araçları bundan sql üretir. Native yazmadığınızda da kodun nerede patladığını görme şansınız azalır.Bir kodu siz normal sql araçları ile optimize edemezsiniz. Kodda deneyip yanılabilirsiniz. Php kullanma nedenimiz zaten koder'a yüklenmemekti, şimdi en ufak hatanın ceremesini çeker hale geldi. Ve bunu hız ve memory kayıplarına rağmen yaptık. Şöyle bir gerçek var ki, çalıştığım şirket, 10 yıldır db değiştirmedi. Memcache veya mongo destek için geldi. E hakkaten model katmanına baktığımızda native mysql sorguları ne olacak? Sanki o katman bunları görmek için var. E biz view'da aman html olmasın, js css karışmasın diyo muyuz?

Bu kadar laf saydım. Fakat gerçek hayatta kodun db bağımsız olmasını istersek ne yapacağız? Ya orm kullanmadan tüm modelleri diğer db için de yazacağız yada projede orm kullanacağız. :) Gerçek hayat ihtiyaçları, teoriyi döver!