Özel Bekleme Spinner - Spectre Console Serisi
[[academy-video-youtube({"vid": "3Hl3k87UvpY", "start_time": "0", "title": "Özel Bekleme Döndürücüsü Oluşturma - Spectre Console Serisi", "creator": "Tim Corey", "length": "6m 12s"})]]
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, "Özel Bekleme Döndürücüsü Oluşturma - Spectre Console Serisi" videosunu basit C# konsol uygulamalarını daha görsel olarak çekici ve bilgi verici araçlara dönüştürdüğünü hatırlatarak başlatıyor. Bu derste, izlemesi daha kolay hale getiren basit ama güçlü bir özellik olan özel bir yükleme döndürücüsünün nasıl uygulanacağını gösteriyor.
0:16'da Tim, proje için kaynak kodun videonun altında bağlı olduğunu açıklıyor. İzleyicilere kendi ortamlarında nasıl çalıştığını anlamak için ayarları değiştirmelerini veya özellikler eklemelerini öneriyor. Özellikle Windows Terminal veya PowerShell gibi farklı terminalleri desteklemek istiyorsanız yardımcıdır, çünkü Unicode karakterleri için biraz farklı davranışlar gösterirler.
Dahili Döndürücü Kullanma
Tim, basit bir örnekle başlıyor. 0:37'de, arka planda bazı işler çalışırken bilinen bir döndürücü stilini göstermek için AnsiConsole.Status kullanarak kod yazıyor. Spinner.Known.Aesthetic seçiyor ancak Spectre, Spinner.Known listesinde birçok seçenek sunduğunu belirtiyor. Tim, döndürücünün yanında "Yükleniyor" ifadesi ekleyerek kullanıcının ne olduğunu bilmesini sağlıyor.
Durum bloğunun içinde, Tim bir Thread.Sleep(10000) — on saniye — ekleyerek sadece test için. Bu, konsolun döndürücüyü yeterince uzun bir süre çalışırken göstermesini zorlar. Görevin tamamlandıktan sonra döndürücünün otomatik olarak kaybolduğunu açıklıyor. Bu, Spectre'nin bir konsol uygulamasında durum veya ilerlemeyi göstermek için teşvik ettiği varsayılan desendir.
Özel Döndürücüye Doğru İlerleme
1:41'de Tim, "Tamam, özel bir döndürücü oluşturalım" diyor, yerleşik seçeneklerin ötesine nasıl geçileceğini gösteriyor. Kendi projenizle, marka renklerinizle veya hatta işlediğiniz veri türüyle uyuşan şekilde döndürücünüzü biçimlendirmek veya stilize etmek istediğiniz zamanlar olduğunu açıklıyor. Kendi döndürücü sınıfınızı yazarak, kareleri, zamanlamayı ve Unicode karakterleri kullanıp kullanmayacağını kontrol edersiniz.
Döndürücü Sınıfı Oluşturma
Tim, TestSpinner.cs adında yeni bir dosya oluşturuyor. 2:05'te sınıfı genel hale getiriyor ve Spectre'nin soyut Spinner sınıfından türetmesini sağlıyor. Visual Studio'nun "soyut sınıfı uygula" özelliğini kullanarak gerekli üyeleri oluşturuyor. Bunlar yerine kendi hız, kareler ve Unicode ayarları gibi değerlerinizi sağlayacağınız yerdir.
Bu, zamanın sadece okunabilir özellikler olduğunu ve ifade gövdeli üyeler yazmayı daha basit hale getirdiğini özellikle belirtiyor. Bu biçim, döndürücü tanımınızı kompakt tutar ve daha sonra bakımı veya güncellemesi kolaylaştırır.
Kare Başına Hızı Kontrol Etme
2:30'da Tim zamanlama özelliğini TimeSpan.FromMilliseconds(200) olarak ayarlıyor. Bu, döndürücünün saniyede yaklaşık beş kare hareket edeceği anlamına gelir. Daha hızlı veya daha yavaş çalışmasını isterseniz farklı bir değer seçebileceğinizi açıklıyor. 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
3:00'da Tim, Unicode'u önemli bir konuyu ele alıyor. Visual Studio'nun yerleşik konsolunda projenizi çalıştırdığınızda, Unicode karakterlerinin doğru bir şekilde renderlenmeyebileceğini, hata veya eksik sembollere neden olabileceğini belirtiyor. Ancak, aynı projeyi Windows Terminal veya PowerShell'de çalıştırırsanız, genellikle Unicode ve emoji düzgün görüntülenir. Demo sırasında, bu sorunu önlemek için property'i false olarak ayarlar, ancak terminaliniz destekliyorsa true olarak ayarlayabileceğinizi belirtiyor.
Bu, uygulamanıza renkli semboller, oklar veya hatta emoji tabanlı ilerleme göstergeleri eklemeyi kolaylaştırır. Çerçeveleri ✅, 🌧, 🔄 veya daha zengin bilgi sağlamak istediğiniz herhangi bir karakterle biçimlendirebilirsiniz.
Kareleri Tanımlama
Sonraki property, kare listesidir. 3:34'te, bir dizi string döndüren bir ok fonksiyonu yazıyor. Her string, döndürücünün bir "kare"sidir. Örneğinde büyük bir "O" ve çizgi boyunca hareketi simüle etmek için birkaç küçük "o" kullanır.
Temel kareyi beş kez kopyalayıp yapıştırıyor, ardından her karede farklı bir konumda bir "O" değiştiriyor. Bu, basit bir animasyon oluşturur: büyük "O" sola sağa hareket ediyormuş gibi görünür, ardından başlangıca geri döner. 4:26'da Tim, yön değiştirmek için daha fazla kare ekleyebileceğinizi, renk biçimlendirmesi (Spectre, [green]text[/] gibi zengin işaretlemeleri destekler), veya terminaliniz destekliyorsa Unicode karakterleri ile denemeler yapabileceğinizi not alıyor.
Tim'in TestSpinner sınıf kodu burada:
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üyü Uygulama ve Test Etme
Sınıf tanımlandıktan sonra Tim ana programına geri dönüyor. 4:42'de Spinner.Known.Aesthetic'i yeni TestSpinner() ile değiştiriyor. Bu kadar—başka bir kod değişikliği gerekmez. Uygulamayı 4:52'de çalıştırarak yeni döndürücünün eylemdeki halini gösteriyor.

Bu test aşaması önemlidir. Tim, projenizi kullanıcılarınızın kullanacağı aynı terminalde çalıştırmanızı öneriyor, böylece kodlama, renkler veya zamanlamayla ilgili sorunları erken bir aşamada bulabilirsiniz. Farklı kabuklar ve yazı tipleri döndürücünüzün nasıl görüneceğini etkileyebilir.

Unicode, Emojiler ve Renk Ekleme
5:00'da Tim, Unicode'u etkinleştirmeniz durumunda herhangi bir şeyin emojiler veya özel karakterleri kareler olarak kullanmanızı engellemediğini açıklıyor. Spectre'nin işaretlemesini kullanarak hava durumu döndürücüsü, yeşil bir ilerleme çubuğu veya uygulamanıza uygun herhangi bir yaratıcı gösterim oluşturabilirsiniz. Bu, başlaması uzun süren veya çalışmaya devam eden komutlar için özellikle yararlıdır, çünkü kullanıcılar net görsel geri bildirimleri takdir eder.
Spectre Console'un döndürücünüze renkler ve biçimlendirilmiş metin eklemeyi daha basit hale getirdiğini de belirtiyor. Örneğin, başarıyı vurgulamak için döndürücünün yanına yeşil Yükleniyor... metni yazabilir veya gereken yerlerde kırmızı metinlerle hataları vurgulayabilirsiniz.
Performans İpuçları ve Ayarlar
5:19'da Tim özel bir döndürücü için ihtiyaç duyduğunuz anahtar şeyleri özetliyor:
Zaman: Her çerçevenin ne kadar süre gösterileceği.
IsUnicode: Unicode/emoji veya düz metin kullanıp kullanmayacağınız.
- Kareler: Animasyonunu yapacağınız string dizisi.
Çok fazla çerçeve veya çok yavaş bir hızın, kullanıcıların son çerçeveleri asla görmemesi anlamına gelebileceği konusunda uyarıyor, özellikle işleminiz çok uzun değilse. Burada doğru seçenekleri seçmek döndürücünüzü daha etkili hale getirir. Bu ayarlar aynı zamanda projenizi zamanla artırmayı kolaylaştırır—döndürücüyü tamamen yeniden yazmadan daha fazla çerçeve ekleyebilir veya zamanlamayı ayarlayabilirsiniz.
Sonuç
5:38'de Tim, Spinner sınıfından türeterek ve kendi değerlerinizi sağlayarak konsol veya PowerShell tabanlı araçlarınız için hızlıca özel bir yükleme göstergesi oluşturabileceğiniz gösteriyor. Bu, kullanıcılara sunduğunuz bilgi ve his üzerinde daha fazla kontrol sağlar. 5:47'de izleyicilere kaynak kodun ve belgelerin video açıklamasında yer aldığı hatırlatılıyor, böylece kendiniz keşfedip genişletebilirsiniz.
Sonuç
Tim Corey'nin videosunu takip ederek, özel bir Spectre Console yükleme döndürücüsünü nasıl uygulayacağınızı tam olarak gördük: Spinner'dan türetmek, zamanlama değeri vermek, Unicode desteğini belirtmek ve karelerinizi tanımlamak. Ardından, projenize eklemek için bilinen bir döndürücüyü yeni sınıfınızla değiştirin. Tim ayrıca Unicode karakterleri, emojiler ve renk biçimlendirmeleri eklemenin yollarını gösteriyor, böylece konsol uygulamanızın durum ve ilerleme görüntülemelerini daha bilgi verici ve güzel hale getirebilirsiniz.
Spectre Console'un yeteneklerini kullanarak, daha net geri bildirim sağlayabilir, sorunları daha erken bulabilir ve düzeltmek ve kullanıcıların keyif aldığı güzel konsol uygulamaları oluşturabilirsiniz.

