GoLang’in resmi evrensel yükleyicisi olmamasına karşın topluluğun pek de bilinmeyen bir evrensel yükleyicisi bulunmaktadır.
Category: Programlama
PHP’de PDO ile Veritabanı İşlemleri
PDO veritabanlarına bağlanmamıza yarayan bir API‘dır. (Okunuşu : AyPiAy, İng. Application Programming Interface, Tr. Uygulama Programlama Arayüzü) Bilgisayarımızda işletim sisteminin donanımlara ulaşmasını sağlayan yazılımlara driver denir. PDO API’ını buna benzeterek veritabanlarıyla iletişim kurmamızı sağlayan bir driver olduğunu söyleyebiliriz. Her veritabanı işleminde veritabanı bağlantımzı kurmalıyız.
Bunun için bir DSN (Okunuş: DiEsEn, Ing. Data Source Name, Tr. Veri Kaynağı Adı) yazmamız gerekiyor ki PDO verileri hangi sunucu, port ve veritabınından (PDO MySQL dışında farklı veritabanlarını da desteklemektedir.) çekeceğini anlasın.
PHP’de sık sık geri çağırma fonksiyonlarını array_map(), array_filter() ve array_reduce() gibi fonksiyonlarını kullanıyoruz. Peki bunların nasıl çalıştığını hiç merak ettiniz mi? Bu yazıyı okuduğunuza göre merak ettiniz. Tamam o zaman başlıyorum. Siz kaşındınız…
Nesne yönemli programlama genelde kısa adı olan OOP (İng. Object Oriented Programming) ile anılmaktadır. OOP için biz ölümlülerin karmaşık projelerdeki sıkıntılı olayları gerçek hayata yakınsayarak çözme çabası desek herhalde sürçülisan etmeyiz.
Bu olay biz geliştiricilerin hayatını o kadar kolaylaştırıyor ki anlatırken kendimi Eminönü’nde turistlere mal satmaya çalışan esnaf gibi hissediyorum. – @haydar
Bu yaklaşımı anlatırken korkutmamak adına tümevarım tekniğini kullanacağım. 😀 Korkmayın dinozor avlamak kadar zor değil.
Bu yazıyı yazdıktan sonra biraz Docker kullanma fırsatım oldu. Sonunda şu karara vardım; Docker kullanmak varken aşağıda anlattığım yolu izlemek büyük saçmalık. Oturun iki üç gün Docker öğrenin hayatınız kolaylaşsın.
Kurulumuna başlamadan önce kullanacağımız alet çantasına bir bakınalım. Bu yazıda bir LEMP stack tabanlı yani Linux, Nginx, MySQL ve PHP yığınının kurulumunu anlatacağım.
- Nginx : Özetle kullanıcıdan gelen istekleri yönetmeye yarayan web sunucu yazılımı. Apache kullanımı günden güne düştüğü için seçimimi Nginx tarafında kullandım.
- MySQL : Açık kaynak kodlu ilişkisel veritabanı.
- PHP : Geliştirme yapacağımız yazılım dili.
- Curl : Çeşitli protokolleri kullanarak veri transferi yapmaya sağlayan yazılımdır.
- Composer : PHP paketleri için paket yönetimi yazılımı.
- Git : Sürüm kontrol sistemi.
Yazılım yapısı gereği karmaşık bir iştir. Bu nedenle yazdığımız yazılımın sonucunda belmediğimiz hatalarla karşılaşabiliriz ve bazen hata mesajları tek başına bir şey ifade etmez. Her adımı var_dump() ve print_r() ile yazdırmakta çok kullanışlı değildir.
PHP derlenen (compiled) değil yorumlanan (interpreted) bir programlama dilidir. Bundan dolayı çoğu geliştirme ortamında (IDE) ayıklama (debugging) özelliği varsayılan olarak gelmez. Bu nedenle bir ayıklama aracı yüklememiz gerekiyor. Bu yazıda bu konu en popüler debug aracı olan Xdebug ile Nginx+ Visual Studio Code yapılandırmasında anlatılıyor. Dilerseniz anlatılanları kendi yapılandırmanıza uyarlayarak kurulumu gerçekleştirebilirsiniz.
Bir Web uygulaması geliştiriken yaşanan en büyük sıkıntılardan biride cron joblarların versiyon kontrol sistemine dahil edilemiyor olması. Bunun için Laravel’de tek cron job ile tüm zamanlanmış görevlerin yapılmasına olanak sağlayan bir sistem bulunuyor.Bu sistemi Windows test ortamında cron job olmadığı için bunu bir şekilde benzetim yaparak halletmeniz gerekiyor. Bunun için araştırma yaptığımda ilgili StackOverFlow makalesine ulaştım. Anladım ki bu işlemi Windows görev zamanlayıcısı (Windows Task Scheduler) ile halledebiliriz. Bunun için öncelikle not defteri açıp aşağıdaki kodları kendimize göre düzenleyip .bat olarak herhangi bir yere kaydedelim.
Bildiğiniz composer (Besteci, bestekâr demek aynı zamanda ) paket yönetici sağolsun pek çok php kütüphanesini kendi projemize tereyağından kıl çeker gibi ekleyebiliyoruz. Bu yazıda bunlardan biri olan getID3 paketini kullanacağız.
Her ne kadar Laravel frameworkünün belgelendirmesinin ne kadar iyi olduğu ile övünsekte bazen bazı eksiklikler gözümüzden kaçmıyor değil. Bir proje için serverda dosyaya mp3 doğrulama işlemi yapmam gerekti. Bunun için mimes: kuralını uyguladım yani ;
$this->validate($request, array( 'audio'=>'required|mimes:mp3,m4a,mp4,m4r', ));
Laravel Eloquent Event Kullanımı
Laravel veya herhangi bir framework kullanırken mutlaka event (olay) ve listener (dinleyici) mantığına ihtiyaç duyuyoruz. Eğer Laravel kullanıyorsanız işinizi kolaylaştıracak bir tüyo vermek istiyorum. Bu yazının devamında kullanacağımız kısımlar için Laravel’in event/listener yapısını biliyor olmanızı öneririm. Eğer bilmiyorsanız buradan resmi belgelendirmeden yararlanabilirsiniz.