• Buradasın

    Laravel'da Polimorfik Loglama Sistemi Oluşturma Eğitimi

    youtube.com/watch?v=PzIQLSP6KV4

    Yapay zekadan makale özeti

    • Bu video, bir eğitmen tarafından sunulan Laravel framework kullanarak polimorfik loglama sistemi oluşturma konulu kapsamlı bir programlama eğitimidir.
    • Eğitim, mor polimorfik yapısı ve loglama sisteminin adım adım nasıl oluşturulacağını göstermektedir. Video boyunca user, category ve article modelleri üzerinden loggable yapılar oluşturulur, Observer pattern'ı kullanılarak CRUD işlemlerinin loglanması gösterilir ve loggable trait'i ile bu işlemlerin daha etkili hale getirilmesi anlatılır. Ayrıca, logları görüntüleme ekranı için front-end geliştirme ve admin paneline log yönetimi ekleme işlemleri de içermektedir.
    • Eğitimde kullanıcı kayıt, güncelleme, silme, giriş, çıkış ve sosyal medya ile giriş gibi işlemlerde loglama uygulamaları gösterilmekte, kod tekrarını önlemek için model sınıfları kullanılarak kodun daha verimli hale getirilmesi vurgulanmaktadır. Ayrıca, karşılaşılan sorunların (örneğin, update işlemi sırasında Observer'in tetiklenmemesi) nasıl çözüleceği de detaylı olarak anlatılmaktadır.
    00:03Polimorfik İlişkiler ve Model Oluşturma
    • Programlama yapısında unutulan bir konu olan polimorfik (morpolimorfik) ilişkiler ele alınacak.
    • Polimorfik ilişkiler çoklu yapı anlamına gelir ve farklı modeller arasında ilişki kurmayı sağlar.
    • Örneğin sosyal medyada fotoğraf, yazı ve video gibi farklı içeriklere yorum yapılabilir ve her birinin modeli farklıdır.
    01:29Log Modeli Oluşturma
    • Morpolimorfik ilişkiler için "morp" adında bir yapı kullanılır ve "logable" olarak adlandırılır.
    • Log modeli için tablo oluşturulur ve içine user_id, data, table ve action alanları eklenir.
    • User_id, hangi kullanıcı işlem yaptığını; data, yapılan işlemin detayını; table, işlem yapılan tabloyu; action, yapılan işlemi (create, update, delete) belirtir.
    05:06İlişkileri Kurma
    • Artical modelinde "logs" fonksiyonu ile morpToMany ilişkisi kurularak birden fazla log ile ilişkilendirilir.
    • Kategori modelinde de benzer şekilde logs fonksiyonu eklenerek ilişkiler kurulur.
    • User modelinde hem "logs" hem de "logsByUser" fonksiyonları eklenerek hem kullanıcıya ait logları hem de kullanıcı tarafından yapılan logları görüntüleme imkanı sağlanır.
    09:39Log Kaydı Yapma
    • User register işlemi sırasında log kaydı yapılabilir.
    • Observer pattern kullanılarak user oluşturulduğunda log kaydı yapılabilir.
    • Log modeli kullanılarak user_id, action ve diğer alanlar doldurularak log kaydı oluşturulur.
    12:11Log Fonksiyonu Oluşturma
    • Yeni bir fonksiyon oluşturuluyor: public function lock
    • Bu fonksiyon, log kaydı oluşturmak için kullanılıyor
    • Fonksiyonun parametreleri: user id, action, logable id ve logable type
    13:45Log Kaydı Oluşturma Detayları
    • Log kaydında modelin ismi de kaydediliyor
    • Model sınıfı, hangi klasörde olduğuna göre bilgi veriyor
    • Data bilgisi JSON formatında kaydedilebiliyor
    18:03Log Tablosu ve Kullanım
    • Log tablosunda logable type, logable id, data ve action alanları bulunuyor
    • Fonksiyonun geri dönüş tipi void olarak belirleniyor
    • Kullanım örneğinde this->log fonksiyonu çağrılıyor ve action, logable id, data parametreleri gönderiliyor
    20:12Değişiklik Kaydı
    • Değişikliğin hangi alanlarda yapıldığı bilgisi tutulması planlanıyor
    • User modelinin doldurulabilir alanları inceleniyor
    • Değişikliklerin eski ve yeni değerleri tutulması gerektiği belirtiliyor
    23:34Değişiklikleri Kaydetme
    • foreach döngüsü ile değişiklikler arasında dolaşılarak key-value çiftleri oluşturuluyor
    • Eski değerler user->getOriginal() fonksiyonu ile alınacak
    • Yeni değerler değişikliğin olduğu yerden alınacak
    25:27Kullanıcı Güncelleme İşlemi
    • Kullanıcı listesinde güncelleme işlemi yapıldığında, sadece ad-soyad bölümü güncellenmesi istendiğinde update bölümüne gelmediği belirtiliyor.
    • Güncelleme işlemi sırasında name, about ve statüs alanları güncellendiği görülmektedir.
    • Update işlemi sonrası datanın son halini görmek için sayfa yenilenmiştir.
    27:29Update İşleminin Sonuçları
    • Güncelleme işlemi sonrası ad-soyadın sonuna "test" yazısı eklendiği ve hakkında yazısı güncellendiği görülmektedir.
    • Update işleminin sonucunda eski değerin ve yeni değerin görüntülenmesi sağlanmıştır.
    • Update işleminin karbon cinsinden verilmesinin sebebi user modelinde test edilmiş olabileceği düşünülmektedir.
    29:21Update İşleminin Düzenlenmesi
    • Update işleminin doğru bir şekilde alınabilmesi için karbon pars kullanılmıştır.
    • Update işleminde tarih verisinin toDateTime formatına çevrilmesi sağlanmıştır.
    • Update işleminin başarılı bir şekilde çalıştığı test edilmiştir.
    32:35Log Kaydı ve Fonksiyonlaştırma
    • Update işlemi için yapılan işlemlerin fazla olduğu belirtilerek, bunları fonksiyonlaştırmak gerektiği düşünülmektedir.
    • UpdateLog adında bir fonksiyon oluşturulmuş ve user model türünde bir user parametresi alması sağlanmıştır.
    • Create işlemi için özel bir durum yapılması gerektiği belirtilirken, update işlemi için fonksiyonlaştırma yapılmıştır.
    34:11Silme İşlemi ve Log Kaydı
    • Kullanıcı silme işlemi yapıldığında log kaydı atılması gerektiği belirtilmiştir.
    • Silme işlemi sonrası veritabanında iki kere log kaydı görünmesi sorunu yaşanmıştır.
    • Sorunun sebebinin servis provider'ın içinde tanımlamada iki kere açık bırakılması olduğu tahmin edilerek, biri kapatılarak sorun çözülmüştür.
    40:22Restore İşlemi ve Observer Kullanımı
    • Restore işlemi, silinen verileri geri getirmek için kullanılır ve update işlemi tetiklenir.
    • Restore işlemi sırasında, silinen verinin eski ve yeni durumu loglanır.
    • Update ve restore işlemlerinin aynı anda tetiklenmesi durumunda, update işleminin tetiklenmemesi için koşullu ifadeler kullanılabilir.
    43:33Force Delete İşlemi
    • Force delete işlemi, verinin kalıcı olarak silindiğini gösterir ve bu durumda da observer çalışır.
    • User modeli için observer oluşturulmuş ve kullanıcı hareketleri loglanmaktadır.
    • Kategori modeli için de observer oluşturulup, kategorinin create, update ve delete işlemlerinin loglanması sağlanmıştır.
    50:35Article Modeli İçin Observer
    • Article modeli için de observer oluşturulmuş ve update, delete işlemlerinin loglanması sağlanmıştır.
    • Article modelinde soft delete özelliği yoktur.
    • Kullanıcıların login işlemleri için de loglama yapılabilir, ancak bu konuda özel bir mantık belirtilmemiştir.
    54:33Loglama İşlemini Trait ile Tasarım
    • Loglama işlemi için trait kullanmak daha iyi bir yaklaşım olacaktır.
    • Trait oluşturmak için "trade" klasörü oluşturulup, "logable" adında bir trait oluşturuluyor.
    • Önceki loglama fonksiyonları ve update loop fonksiyonları bu trait'e taşınıyor.
    57:03Trait Kullanımı ve Test
    • Trait kullanarak loglama işlemi daha kolay hale getirilecek ve "self" anahtar kelimesi kullanılarak bulunduğumuz sınıfa erişilebilecek.
    • Trait kullanmak için sınıfın tanımlandığı yerin altına "use logable;" ekleniyor.
    • Trait kullanılarak loglama işlemi başarıyla çalıştırılıyor ve kategori güncelleme işlemi loglanıyor.
    59:54Makale Modelindeki Sorunun İncelenmesi
    • Makale güncelleme işlemi loglanmıyor, ancak kategori güncelleme işlemi loglanıyor.
    • EventServiceProvider'da ArticleObserver'ın doğru şekilde tanımlandığı kontrol ediliyor.
    • Makale modelindeki sorunun nedeni araştırılıyor, ancak açık bir sebep bulunamıyor.
    1:09:53Sorunun Tespiti ve Çözümü
    • EventServiceProvider'da ArticleObserver'ın iki kez tanımlandığı fark ediliyor.
    • Üstteki ArticleObserver çağrısı kapatılarak alttaki çağrı kullanılması denenecek.
    • Makale modelinde sorunun nedeni araştırılıyor, ancak modelde özel bir sorun bulunmuyor.
    1:12:26Observer Sorununun Tespiti
    • Lop server'ın içinde update var ve bunu void'e çevirmek isteniyor.
    • Kategori: observer kategorisinde bir sorun olduğu düşünülüyor.
    • Bir kategori güncelleme sorunu yaşanıyor ve bunun sebebi anlaşılamıyor.
    1:14:26Kod Düzenlemeleri
    • Bir kod kullanımı genelde diğer projelerde de kullanılıyor ancak çalışmadığı anlaşılıyor.
    • Protected statik fonksiyon kullanılıyor ve botun modelden gelen bir kullanımı var.
    • Statik observer ve observers class şeklinde düzenlemeler yapılıyor.
    1:19:56Sorunun Tespiti ve Çözümü
    • Sorunun sebebi kategori kontrolü sırasında verinin kaydedilmesi ve güncellenmesi sırasında oluşan bir karışıklık.
    • Update kontrolü ve yardımcı fonksiyonu arasındaki etkileşim sorunun sebebi olarak tespit ediliyor.
    • Obs (observer) kullanımı ile ilgili bir sorun değil, obs tetiklenmesi ile ilgili bir sorun olduğu anlaşılıyor.
    1:21:53Sorunun Analizi ve Çözümü
    • Sorunun sebebi, bulunan veriyi güncellemek için yanlış bir yöntem kullanıldığı ortaya çıkıyor.
    • Article find update yerine direkt güncelleme yapılması birden fazla etkileyici için çalışmıyor.
    • Bir tane veriyi bulup sonra güncellemek yerine, önce bulup sonra güncellemek çözüm olarak öneriliyor.
    1:25:36Kodun Son Hali ve Düzenlemeler
    • Kodda sercan yerine arical observer kullanılıyor ve us logable ekleniyor.
    • Update işlemi için sadece "artık" vermesinin yeterli olduğu belirtiliyor.
    • Logable sınıfına model parametresi ekleniyor ve update işlemi için model kullanımı düzenleniyor.
    1:29:30Model Oluşturma ve Kullanımı
    • Model name'i oluşturarak gönderim işlemlerini yapabilmek için kullanılıyor.
    • Article class'ları diz modele çevriliyor ve her birine constructor ekleniyor.
    • Model sınıfı her yere çağrılacak şekilde tasarlanıyor.
    1:31:51Logable Özelliklerin Test Edilmesi
    • Article üzerinde update, delete ve create işlemlerinin loggable özelliğinin çalışıp çalışmadığı test ediliyor.
    • İşlemler yapıldığında log bilgilerinin doğru şekilde kaydedildiği kontrol ediliyor.
    • Statüs change olayları için özel bir loglama yapılmaması gerektiği belirtiliyor.
    1:33:36Kategori ve Diğer Modellerde Loggable Uygulaması
    • Kategori güncelleme işleminde loggable özelliğinin çalışması test ediliyor.
    • Kategori statüsünün güncellendiği bilgisi loglanıyor.
    • User, restore, force delete gibi işlemlerde de loggable özelliğin uygulanması yapılıyor.
    1:37:14Login İşlemlerinde Loggable Uygulaması
    • Login işlemlerinde loggable özelliğin uygulanması yapılıyor.
    • Otantikasyon sonrası kullanıcı bilgilerinin loglanması sağlanıyor.
    • Login işleminde loggable özelliğin doğru şekilde çalıştığı test ediliyor.
    1:40:05Diğer İşlemlerde Loggable Uygulaması
    • User register işlemi otomatik olarak loggable özelliğin çalışacağı belirtiliyor.
    • Verification işlemi sırasında loggable özelliğin uygulanması yapılıyor.
    • Sosyal medya hesabı ile login olma işlemi ve şifre sıfırlama işlemlerinde loggable özelliğin uygulanması yapılıyor.
    1:45:06Loglama İşlemleri
    • Settings güncelleme işlemi için loglama yapılmakta ve eskisi ile yenisinin loglanması gerekiyor.
    • Image upload kısmı güncelleme işlemi sırasında update log ile birlikte atılıyor.
    • Logout işlemi yapıldığında log atılıyor ve update işlemi kendiliğinden gerçekleşiyor.
    1:47:16Settings Güncelleme Sorunu
    • Settings güncelleme işlemi yapıldığında açıklama güncelleniyor ancak nerenin güncellendiği loglanmıyor.
    • Sorunun sebebi, settings'in dört değerini alamaması ve save işleminden önce güncelleme yapmaması.
    • Update işleminin save etmeden önce yapılması gerektiği ve bunun için controller'da değişiklik yapılması gerektiği belirtiliyor.
    1:50:39Log Yönetimi Ekranı Oluşturma
    • Logları görüntüleme ekranı için sidebar'a "Log Yönetimi" menüsü ekleniyor.
    • Admin klasörünün altında LogController oluşturuluyor.
    • Controller'da index fonksiyonu ile loggable verileri getirme işlemi yapılıyor.
    1:55:11Log Verilerini Görüntüleme
    • Log verileri getirildiğinde relation bilgisi ve data alanı JSON formatında görüntüleniyor.
    • Data alanını collection olarak tanımlama ve dönüştürme işlemi yapılıyor.
    • Logları paginate ile 20'er 20'er getirmek ve admin panelinde listeleme yapmak için view oluşturuluyor.

    Yanıtı değerlendir

  • Yazeka sinir ağı makaleleri veya videoları özetliyor