Altbilgi içeriğine atla
Iron Academy Logo
C# Uygulaması
C# Uygulaması

Diğer Kategoriler

Verileri Ekranda Canlı Olarak Değiştirme - Spectre Console Serisi

[[academy-video-youtube({"vid": "hG5_h1JKtPs", "start_time": "0", "title": "Ekranda Veriyi Canlı Olarak Değiştirme - Spectre Console Serisi", "creator": "Tim Corey", "length": "9m 17s"})]]

Spectre.Console, düz siyah-beyaz komut satırının ötesinde güzel konsol uygulamaları oluşturmanıza olanak tanıyan bir .NET kütüphanesidir. Tim Corey, "Ekranda Veriyi Canlı Olarak Değiştirme – Spectre Console Serisi" adlı videosunda Spectre Console canlı görüntüleme özelliğini gösterir. Bu özellik, konsol uygulamalarınızın içinde ilerlemeyi görüntülemenize ve verileri gerçek zamanlı olarak güncellemenize olanak tanır.

Bu makalede Tim'in videosunu adım adım izleyeceğiz, her şeyi nasıl yaptığına ve nasıl açıkladığına göstereceğiz.

Canlı Görüntülemeye Giriş

Tim, Spectre.Console'u açıklayarak ve konsol uygulamalarınızı nasıl görsel çekici hale getirdiğini açıklayarak başlar. Bu seride, her ders kısa bir örnektir ve kaynak kod açıklamada bağlantılıdır.

Bu dersin, mevcut verilerin ekranda nasıl değiştirileceği ve gerçek zamanlı güncellemeler için canlı görüntüleme özelliğinin nasıl kullanılacağına odaklandığını açıklıyor. Tim ayrıca izleyicileri daha fazla eğitim kaynakları için iamtimcorey.com adresine abone olmaya ve ziyaret etmeye teşvik ediyor.

Veri için Yeni Bir Tablo Oluşturma

Tim, zaten başlık, dersler ve saat sütunlarına sahip yeni bir tablo oluşturduğunu gösteriyor. Bu tablo, bir API'den çekilen kurs bilgilerini işlemek için kullanılacak.

Ayrıca ders adı, ders sayısı ve ders uzunluğuna saat olarak sahip güçlü tipte özelliklere sahip CourseInfo adında bir kayıt türü tanıtıyor. Bu, API yapısını yansıtır ve güçlü bir şekilde tiplenmiş bir şekilde metni kolayca çıkarmasına olanak tanır.

Toplamların daha sonra görüntülenebilmesi için tablo altbilgileri açık durumda. Tim, bu düzenin Spectre'nin güzel konsol uygulamaları için desteklediği birçok keyfi widgettan biri olduğunu belirtiyor.

Canlı Görüntüyü Başlatma

Tim, canlı görüntülemeyi başlatmak için AnsiConsole.Live(table).StartAsync(...) yöntemini kullanır. Uzun süre çalışan görevlere ihtiyaç duymuyorsanız, eşzamansız olmayan bir Start() fonksiyonunun da bulunduğunu belirtir.

Konsolun yeni satırlar geldikçe tazelenebilmesi için kodunu bir asenkron bağlam içinde sarmalar. Bu, mevcut terminalin ekranı temizlemeden çıktıyı yeniden çizebilme yeteneklerini gösterir.

Veri Alma ve İlerlemeyi Görüntüleme

Canlı bağlamın içinde, Tim 1'den 31'e kadar bir int dizin kullanan bir for döngüsü yazar çünkü örnek API 31 ders listeler. Her indeks için, API verilerini almak üzere bir yardımcı sınıf yöntemini çağırır.

Bu yardımcı, ham JSON dizgesini güçlü tipte bir CourseInfo nesnesine dönüştürür. Tim, API'yi toplu olarak değil, bir kez kurs çağırarak göstermeyi amaçlıyor - konsol ortamında uzun süreli görevleri simüle etmenin harika bir örneği.

Eğer sadece bir istek yapmayı istemiş olsaydı, URL'deki /i'yi kaldırabilirdi ama "zaman içinde şeylerin gelmesini göstermek için" birden fazla çağrıda bulunuyor.

Satırlar Ekleme ve Çıktıyı Güncelleme

Her döndürülen CourseInfo örneği ile, Tim tabloya.AddRow(...) çağrısında bulunarak kursun başlığı, ders sayısı ve saat cinsinden uzunluğu ile yeni bir satır oluşturur. Değerleri dönüştürmek için gerekirse $ formatında dize interpolasyonu kullanır ve .ToString()'i çağırır.

Bu, tabloların her geçişte yeni satırlarla nasıl oluşturulabileceğini ve Spectre'nin satırları dinamik olarak nasıl güncelleyebileceğini gösterir. Ayrıca tür uyuşmazlıkları gibi olası sorunları yakalamayı, dönüşümleri açık bir şekilde yaparak gösterir.

Özel Altbilgiler ve Çalışan Toplamlar

Sonrasında, Tim sütunlara özel altbilgiler eklemenin yolunu gösterir. Tablolara.Columns[0].Footer'i mevcut indirilen derslerin sayısını göstermek için ayarlar. Bunu ikinci ve üçüncü sütunlar için dupliklr eder, ancak bu sefer tüm derslerde ders sayılarını ve toplam saatleri toplar.

Bu şekilde kullanıcı, bir bakışta kaç ders ve kaç saat biriktiğini görebilir. Bu, canlı verilerin yanı sıra değer toplamlarını görüntülemek için Spectre'nin kontrollerini kullanmanın gerçek bir örneğidir.

Tim, pencereyi "pinlenmeden" açarak sayıların arttığını görebilirsiniz. Ayaklıkların Spectrenin sunduğu yerleşik stillerden biri olduğunu; sınırlar, işaretleme ve temalar gibi olduğunu açıklar.

Her Eylemden Sonra Bağlamı Yenileme

Tim, canlı görüntülemelerle ilgili 'kritik olan şeyi' vurgular: her değişiklikten sonra mutlaka context.Refresh() çağrısında bulunun. Bu, terminalin çıktınızı yeni verilerle yeniden çizmesini sağlar. Bunu yapmazsanız, satırlarınız, altbilgileriniz veya farklı renkler, canlı oturum bitene kadar görünmez.

Hata Ayıklama ve İstisna Yönetimi

Kodu ilk çalıştırdığında, Tim bir Dizim Dışı İstisnası alır. Hatasını—sütun dizimlerini (0,1,2 değil 0,2,3 olduğunu) yanlış sayıyor—ve bunu düzeltiyor.

Bu, Spectre.Console'da bile hataları yakalamanız ve dizimlerinizin ve argümanlarınızın doğru olduğundan emin olmanız gerektiğini nazikçe hatırlatır.

Spectre Console Modifying Data Live 1 related to Hata Ayıklama ve İstisna Yönetimi

Canlı Görüntüyü Aksiyonlu İzleme

Tim, düzeltilmiş kodu çalıştırır ve canlı görüntüyü aksiyonlu gösterir: satırlar ekleniyor, toplamlar güncelleniyor ve altbilgi birleşik değerleri gösteriyor.

"1.652 ders", "403,5 saat" ve "31 toplam ders" olarak veriler içeri girdikçe görebilirsiniz. Bu, güçlü bir örnek olan Spectre Console canlı görüntüsünü terminaliniz içinde bir kontrol panosu gibi hissettiren bir aksiyon sağlar.

Spectre Console Modifying Data Live 2 related to Canlı Görüntüyü Aksiyonlu İzleme

Sadece Altbilgilere Odaklanmak

Değişiklikleri daha görünür hale getirmek için, Tim satır ekleme kodunu yorumlar, böylece sadece altbilgiler güncellenir. Bu, kaydırılmayan veriler olmadan bile toplamları canlı takip edebileceğinizi gösterir.

Tim ayrıca, sayılar arttığında (örneğin, 9'dan 10'a) Spectre'nin otomatik olarak sütun genişliğini ayarladığını belirtir. Bu, kütüphanenin genişlikleri ve biçimi otomatik algılamasının küçük ama güçlü bir örneğidir.

Spectre Console Modifying Data Live 3 related to Sadece Altbilgilere Odaklanmak

Tabloların Ötesinde – Keyfi Widgetlar ve Temalar

Tim, canlı görüntüleme ile sınırlı olmadığını açıklar. Kullanıcı girdisi istemek veya hatta bir çubuk grafiği gibi panel gibi keyfi widgetlarda da uygulayabilirsiniz. Metni güncelleyebilir, farklı renkleri vurgulayabilir, özel renk kodlu temaları uygulayabilir veya döndürücüler ekleyebilirsiniz.

Mavi, yeşil veya gri gibi stilleri değiştirebileceğinizi ve temalarınıza uyacak şekilde çalışabileceğinizi, hatta iç içe geçmiş düzen veya widgetlarla çalışabileceğinizi belirtiyor. Bu esneklik, Spectre'nin diğer ekosistemlerdeki (hatta bazıları python ile yazılmış olan) zengin konsol araçlarından 'ağır bir şekilde ilham aldığını' ancak .NET için uyarlanmış olmasını sağlar.

Asenkron vs. Senkron Canlı Görüntüleme Başlangıcı

Tim, neden asenkron versiyonu kullandığını açıklar: çünkü API çağrılarını bekliyordu. Güncellemeleriniz asenkron değilse await olmadan sadece Start() çağırabilirsiniz.

Bu seçim, uzun süre çalışan görevlerle bile etkileyici kalan güzel konsol uygulamaları oluşturmanıza yardımcı olur.

Sonuç

Tim, videosunda, konsol içindeki verileri güncelleyip, toplayıp ve yenileyebilen bir Spectre Konsol canlı ekranını nasıl oluşturacağınızı gösterdi.

Bu, kullanıcı girdisi istemek, widget eklemek veya farklı renkler ve özel renk kodlu temalarla panolar oluşturmak için harika bir temel oluşturur. Spectre'nin metni kolayca çıktı verme, işaretleme kullanma ve paneller veya ağaçlar gibi kontroller oluşturma yeteneğiyle birleştirildiğinde, terminalinizin içinde dinamik .NET uygulamaları oluşturabilirsiniz.

Tim'in gösterimi, Spectre.Console ile sadece kontrol panoları değil, aynı zamanda canlı güncellenen tablolar, döndürücüler ve diğer widgetlar oluşturabileceğinizi gösteriyor. Bu, düz bir konsolu gerçek zamanlı, etkileşimli bir araca çevirmenin pratik bir örneğidir — ve kullanıcılarınıza "iyi kodlamalar" demenin güzel bir yoludur.

Hero Worlddot related to Verileri Ekranda Canlı Olarak Değiştirme - Spectre Console Serisi
Hero Affiliate related to Verileri Ekranda Canlı Olarak Değiştirme - Spectre Console Serisi

Sevdiğiniz Şeyleri Paylaşarak Daha Fazla Kazanın

.NET, C#, Java, Python veya Node.js ile çalışan geliştiriciler için içerik oluşturuyor musunuz? Uzmanlığınızı ek gelire dönüştürün!

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara