Özel Bekleme Döndüren - Spectre Console Serisi
Spectre Console, zengin çıktı, renk ve biçimlendirme ile güzel konsol uygulamaları oluşturmanıza olanak tanıyan bir .NET kütüphanesidir. Tim Corey, "Kendinize Özgü Bekleme Dönmesi Oluşturun - Spectre Console Serisi" videosuna, Spectre Console'un sade C# konsol uygulamalarını daha görsel olarak çekici ve bilgilendirici araçlara dönüştürdüğünü hatırlatarak başlıyor. Bu derste, Tim, konsol programınızın durum ve ilerleme göstergelerini takip etmeyi kolaylaştıracak küçük ama güçlü bir özellik olan özel bir yükleme spinner'ını nasıl uygulayacağınızı gösteriyor.
Tim, 0:16'da projenin kaynak kodunun videonun altında bağlantılı olduğunu açıklıyor. İzleyicileri, kendi ortamlarında nasıl çalıştığını anlamak için ayarları değiştirerek veya özellikler ekleyerek test etmeye ve denemeler yapmaya teşvik ediyor. Bu, Windows Terminal veya Unicode karakterleri için biraz farklı davranışlar gösteren PowerShell gibi farklı terminalleri desteklemek istiyorsanız özellikle faydalıdır.
Dahili Bir Döndürücü Kullanma
Tim basit bir örnekle başlar. 0:37'de, arka planda bazı işler yürütülürken bilinen bir dönen gösterge stilini göstermek için AnsiConsole.Status kullanarak kod yazar. O, Spinner.Known.Aesthetic seçeneğini seçer ama Spectre'nin Spinner.Known listesinde birçok seçenek sunduğunu belirtir. Tim, kullanıcının ne olduğunu anlaması için yükleme çubuğunun yanına "Yükleniyor" metni ekler.
Durum bloğu içinde, Tim test amaçlı olarak Thread.Sleep(10000) — on saniye — ekler. Bu, konsolu dönen nesneyi yeterince uzun süre eylemde göstermek için zorlar. Görev tamamlandığında, 1:23'te açıkladığı gibi, döner simge otomatik olarak kaybolur. Bu, Spectre'nin bir konsol uygulamasında durumu veya ilerlemeyi göstermek için teşvik ettiği varsayılan desendir.
Özel Bir Yükleyiciye Doğru İlerlemek
1:41'de, Tim "Tamam, özel bir spinner oluşturalım," diyerek yerleşik seçeneklerin ötesine nasıl geçileceğini gösteriyor. Açıklıyor ki bazen spinnerınızı kendi projenize, marka renklerinize ya da işlediğiniz veri türüne uyacak şekilde formatlamak veya stilize etmek isteyebilirsiniz. Kendi spinner sınıfınızı yazarak çerçeveleri, zamanlamayı ve Unicode karakterleri kullanıp kullanmadığını kontrol edersiniz.
Spinner Sınıfını Oluşturma
Tim, TestSpinner.cs adlı yeni bir dosya oluşturur. 2:05'te, sınıfı public yapıyor ve Spectre'nin soyut Spinner sınıfından türetilmesini sağlıyor. O, Visual Studio'nun "soyut sınıfı uygula" özelliğini gerekli üyeleri oluşturmak için kullanır. Kendi değerlerinizi — hız, kareler ve Unicode ayarları gibi — sağladığınız yer burası, varsayılanları kullanmak yerine.
Tim, 2:18'de bunların sadece get özellikleri olduğunu vurguluyor, bu da ifade gövdeli üyeler yazmayı daha basit hale getiriyor. Bu format, spinner tanımınızı kompakt tutar ve daha sonra bakımını yapmayı veya güncellemeyi kolaylaştırır.
Çerçeve Başına Hızı Kontrol Etme
Saat 2:30'da, Tim süre ölçüm özelliğini TimeSpan.FromMilliseconds(200) olarak ayarlar. Bu, döndürücünün saniyede yaklaşık beş kare hareket edeceği anlamına gelir. O, döndürücünün daha hızlı veya yavaş çalışmasını istiyorsanız farklı bir değer seçebileceğinizi açıklar. Bu ayarı ayarlamak, komutunuzun veya işleminizin ne yaptığına bağlı olarak yükleme animasyonunuzun hissini iyileştirmenin kolay bir yoludur.
Unicode Karakterlerini İşleme
Saat 3:00'da Tim, önemli bir konuyu ele alıyor: Unicode. Visual Studio'nun yerleşik konsolunda projeyi çalıştırırken Unicode karakterlerin doğru görüntülenemeyebileceğini, bunun da hatalara veya eksik sembollere yol açabileceğini belirtir. Ancak aynı projeyi Windows Terminal veya PowerShell'de çalıştırırsanız Unicode ve emoji genellikle sorunsuz görüntülenir. Demosunda bu sorunu önlemek için özelliği false olarak ayarlar; ancak terminalinizin bunu desteklediği durumlarda true olarak ayarlayabileceğinizi de belirtir.
Bu, uygulamanıza renkli semboller, oklar veya emoji tabanlı ilerleme göstergeleri eklemeyi daha kolay hale getirir. Çerçeveleri daha zengin bilgi sağlamak için ✅, 🌧, 🔄 veya istediğiniz herhangi bir karakterle biçimlendirebilirsiniz.
Çerçeveleri Tanımlama
Bir sonraki özellik çerçeve listesidir. Saat 3:34'te Tim, bir dizi string döndüren bir ok fonksiyonu yazar. Her dize, döndürücünün bir "çerçevesi"dir. Bu örnekte bir büyük "O" ve çizgi üzerinde hareketi simüle etmek için birkaç küçük "o" kullanır.
O, temel çerçeveyi beş kez kopyalar ve yapıştırır, ardından 4:12'de her çerçevede farklı bir konumdaki bir "O"yu değiştirir. Bu, basit bir animasyon oluşturur: büyük "O" sola doğru hareket ediyor gibi görünür, sonra başa döner. Tim, 4:26'da daha fazla çerçeve ekleyerek yönü tersine çevirebileceğinizi, renk formatı ekleyebileceğinizi (Spectre, [green]text[/] gibi zengin işaretlemeleri destekler) veya konsolunuz destekliyorsa Unicode karakterleriyle deney yapabileceğinizi not eder.
İşte Tim'in TestSpinner sınıfı kodu:
using Spectre.Console;
namespaces SpectreDemos;
public class TestSpinner : Spinner
{
public override TimeSpan Interval => TimeSpan.FromMilliseconds(200);
public override bool IsUnicode => false;
public override IReadOnlyList<string> Frames =>
[
"Ooooo",
"oOooo",
"ooOoo",
"oooOo",
"ooooO"
]
}using Spectre.Console;
namespaces SpectreDemos;
public class TestSpinner : Spinner
{
public override TimeSpan Interval => TimeSpan.FromMilliseconds(200);
public override bool IsUnicode => false;
public override IReadOnlyList<string> Frames =>
[
"Ooooo",
"oOooo",
"ooOoo",
"oooOo",
"ooooO"
]
}Özel Döndürücünün Uygulanması ve Test Edilmesi
Sınıf tanımlandıktan sonra, Tim ana programına geri döner. Saat 4:42'de, Spinner.Known.Aesthetic'i yeni TestSpinner() ile değiştiriyor. Bu kadar — başka kod değişikliği gerekmez. Daha sonra yeni spinner'in eylemde olduğunu göstermek için uygulamayı saat 4:52'de çalıştırıyor.

Bu test adımı önemlidir. Tim, projeyi kullanıcılarınızın kullanacağı aynı terminalde çalıştırmanızı öneriyor; böylece kodlama, renkler veya zamanlama ile ilgili sorunları erken keşfedebilirsiniz. Farklı kabuklar ve yazı tipleri, spinnerınızın nasıl göründüğünü etkileyebilir.

Unicode, Emojiler ve Renk Ekleme
Tim, saat 5:00'da, Unicode'u etkinleştirirseniz emoji veya özel karakterleri çerçeve olarak kullanmanızı engelleyen hiçbir şey olmadığını açıklar. Spectre'ın işaretlemesini kullanarak bir hava durumu çarkı, yeşil bir ilerleme çubuğu veya uygulamanıza uygun herhangi bir yaratıcı gösterim oluşturabilirsiniz. Bu, özellikle başlaması veya çalışmaya devam etmesi uzun süren komutlar için faydalıdır, çünkü kullanıcılar net görsel geri bildirimi takdir ederler.
Ayrıca, Spectre Console'un döndürücünüze renkler ve biçimlendirilmiş metin eklemeyi daha basit hale getirdiğini belirtir. Örneğin, başarılı olduğunu vurgulamak için döndürücünün yanına [green]Yükleniyor...[/] yazabilir veya gerektiğinde hataları kırmızı metinle vurgulayabilirsiniz.
Performans İpuçları ve Ayarlar
5:19'da, Tim özel bir döndürücü için ihtiyaç duyduğunuz temel unsurları özetliyor:
Zaman: her bir karenin ne kadar süre gösterileceği.
IsUnicode: Unicode/emoji ya da düz metin kullanma durumu.
- Kareler: animasyon yapacağınız string dizisi.
Çok fazla kare veya aşırı yavaş bir hız, süreciniz çok uzun değilse kullanıcıların son kareleri hiç görmeyebileceği anlamına gelir, diye uyarıyor. Burada doğru seçenekleri seçmek, çeviricinizi daha etkili hale getirir. Bu ayarlar ayrıca, tüm konsol uygulamanızı yeniden yazmadan zamanla projenizi artırmayı kolaylaştırır — daha fazla kare ekleyebilir veya zamanlamayı ayarlayabilirsiniz.
Özetle
5:38'de, Tim Spinner sınıfından miras alarak ve kendi değerlerinizi sağlayarak, konsol veya PowerShell tabanlı araçlarınız için hızlı bir şekilde özel bir yükleme göstergesi oluşturabileceğinizi gösteriyor. Bu, kullanıcılara sağladığınız bilgi ve his üzerinde daha fazla kontrol sağlar. Saat 5:47'de, izleyicilere kaynak kodunun ve dokümanlarının video açıklamasında bulunduğunu, bu sayede kendilerinin keşfedip genişletebileceklerini hatırlatıyor.
Sonuç
Tim Corey'nin videosunu izledikten sonra, özel bir Spectre Console yükleme dönücüsünün nasıl uygulanacağını tam olarak gördük: Spinner'dan miras al, bir zaman değeri sağla, Unicode desteği belirt ve çerçevelerini tanımla. Ardından, bir bilinen döndürücüyü yeni sınıfınızla değiştirerek projenize ekleyin. Tim, konsol uygulamanızın durum ve ilerleme gösterimlerini daha bilgilendirici ve güzel hale getirmek için Unicode karakterler, emojiler ve renk işaretlemesi eklemenin yollarını da belirtir.
Spectre Console'un yeteneklerini kullanarak daha net geri bildirim sağlayabilir, sorunları daha erken bulup düzeltebilir ve kullanıcıların beğeneceği güzel konsol uygulamaları oluşturabilirsiniz.

