TL;DR
- Public Livewire tablosu paketi: Blades’in tema başına dallanmasını durdurmak için bir tema-sınıf ayrımı çıkarıldı (tam yazım ayrı bir yazıda).
- Analitik kontrol paneli: zaman dilimi-bucket’lı grafikler ve Elasticsearch’in 10k sınırını aşan tam istekteki sayılar düzeltildi.
- Kullanıcı senkronizasyonu: bir Active Directory parola ayarı hatası modelin tekrar alınmasını gerektirdi.
- Üyelik platformu: beyaz etiketli markalayabilme ayarlarla yönlendirildi.
Bugün dört konu, biri kamuya açık, üçü anonim.
1. Kamu: Livewire tabloları için bir tema-sınıf ayrımı
Büyük konu. CSS sınıfları için @if($isTailwind)/@elseif($isBootstrap) ile dallanan Blade parçaları, üçüncü bir tema eklendiğinde ölçeklenemiyor. Tüm sınıf dizelerini tek bir statik, önbellek güvenli haritaya aldım ve Blades’e tek bir themeClasses('key') erişimci verdim — yeni temalar, şablonları yeniden uygulamak yerine anahtarları geçersiz kılıyor ve karakterizasyon testleri ile korunuyor. Repo: cleaniquecoders/laravel-livewire-tables. Bunu kapsayan ayrı bir yazı mevcut.
2. Analitik kontrol paneli: zaman dilimi ve sayı doğruluğu
İki ince raporlama hatası, her ikisi de adlandırmaya değer kadar genel.
Tepe saatleri bucket’laması. Saatlik grafikler, UTC üzerine çuvalanmış olduğundan “zirve saat” uygulamanın kaydırması ile yanlış çıkıyordu. Düzeltme: ölçüm sağlayıcı katmanında uygulama zaman dilimi üzerinden bucket’lama yap, UTC sonucunun üstünde uygulamada değil.
10k tavanı. Elasticsearch, varsayılan olarak hits.total‘i 10,000’de sınırlar, bu nedenle “Toplam İstekler” duraklama yapıyordu ve yoğun günlerde hata oranı matematiği yanlış gidiyordu. Düzeltme bir bayrakla yapılır:
// alt-alanı 10k tahmini yerine kesin toplamlar
$params['body']['track_total_hits'] = true;
| Hata | Temel neden | Düzeltme |
|---|---|---|
| Yanlış zirve saat | UTC üzerinden bucket’lama | Uygulama zaman diliminde bucket’lama |
| İstekler 10k ile sınırlı | ES varsayılan track_total_hits | Onu true olarak ayarlayın |
| Grafik detay çekme 500 | array_sum karışık şekillerde | Serileri önce normalize et |
Ayrıca zaman dilimini paket seviyesinde belirttim ve her uygulama için override’ı kaldırdım — düzeltme, verinin şekillendirildiği yerde olmalıdır, sonrasında yamalamak yerine.
3. Kullanıcı senkronizasyonu: AD parola sorunu
Kullanıcıları Active Directory’ye senkronize ederken, parolayı ayarlamak unicodePwd: No such attribute hatasını veriyordu. Sebep: dizin modeli, oluşturma ile parola yazımı arasında geçersiz hale geliyordu. Düzeltme: parolayı ayarlamadan hemen önce modeli tekrar alın böylece yazım canlı bir nesneye yönleniyor. Bunun, altı ay sonra acı bir şekilde yeniden keşfedilen bir şey olduğunu düşündüğüm için bir destek notu olarak yazdım.
Ayrıca bekleyen senkronizasyon uzlaştırmasını kaynağın gerçekliğine göre yönlendirdim: dizini etkilemeden önce yetkili HR sistemine karşı uzlaştırma yaparak, yetim girişimlerin birikmesini önlemek için.
4. Üyelik platformu: beyaz etiketli markalama
Altbilgi kredisi, iletişim e-postası ve marka renkleri artık sabit kodlanmış yerine ayarlarla yönlendiriliyor, böylece tek bir kod tabanı farklı markalar olarak sunulabiliyor. Standart bir değişim: tipli bir ayar nesnesi, bir yapılandırma geri dönüşü ve ondan okuyan bir Blade parçası.
Günün Thread’i
Sıkıcı katmanda doğruluk. Dört maddeden üçünün “kod düzgün çalıştı ama yanlış şeyi döndürdü” olması — bir zaman dilimi kayması, sessiz bir 10k tavanı, geçersiz bir dizin modeli. Hiçbiri hata vermiyor. Tüm bunlar, sayının gerçekten doğru olup olmadığını sorgulayarak yakalandı.
Kaynak: Orijinal Makale


