Modern bir TUI framework’ü geliştirirken öğrendiğim 7 şey
Terminal hızlıdır
- Modern terminal emülatörleri son derece gelişmiş yazılımlardır
- Donanım hızlandırmalı render kullanarak ekran titremesi azaltılabilir
- Titremeyi azaltmak için üç numara:
- Ekranı temizlemeyin, üzerine yazın
- Standart çıktıya tek seferde yazın
- Synchronized Output protokolünü kullanın
- Textual, akıcı animasyonlar sunmak için varsayılan olarak 60fps kullanır
DictView’ler şaşırtıcıdır
- Python’daki dict nesnelerinin
keys() ve items() metotları KeysView ve ItemsView döndürür
ItemsView nesnesinin simetrik farkı kullanılarak değişen öğeler kolayca bulunabilir
- Textual’da bu, CSS özellikleri değiştiğinde optimize edilmiş güncellemeler için kullanılır
lru_cache hızlıdır
functools modülündeki @lru_cache dekoratörü, fonksiyonun dönüş değerlerini önbelleğe alır
- Textual’da sık çağrılan küçük fonksiyonlarda
@lru_cache kullanılarak performans artırılır
- Önbelleklemenin gerçekten etkili olup olmadığını görmek için
cache_info() kontrol edilmelidir
Immutable nesneler en iyisidir
- Python’ın tuple’ları,
NamedTuple’ları veya frozen dataclass’ları kullanılarak immutable nesnelerin avantajlarından yararlanılabilir
- Immutable nesneler, yan etkisiz kod yazmayı kolaylaştırdığı için test ve önbellekleme daha rahat olur
Unicode art iyidir
- Unicode kutu çizim karakterleriyle hazırlanan diyagramlar dokümantasyonda çok faydalıdır
- İyi yazılmış docstring’lerle birlikte kullanıldığında büyük yarar sağlar
Kesirler doğrudur
- Python’ın
fractions modülü, kayan nokta hatalarını önleyebilir
- Textual’da ekran oranlara göre bölünürken doğru bir yerleşim elde etmek için kesirler kullanılır
Emoji berbattır
- Terminalde emoji desteği öngörülemez ve karmaşıktır
- Emojinin genişliğini kontrol etmek için Unicode veritabanı kullanılır, ancak en yeni emojiler öngörülemeyen sonuçlara yol açabilir
- Çoklu codepoint emojiler daha büyük sorunlara neden olur
GN⁺ özeti
- Bu yazı, Python terminal uygulamaları geliştirirken işe yarayan ipuçları ve püf noktaları sunuyor
- Textual framework’ünü geliştirme deneyiminden elde edilen pratik tavsiyeleri paylaşıyor
- Emoji gibi karmaşık sorunların nasıl ele alınacağını anlatarak geliştiricilere yardımcı oluyor
- Benzer işlevlere sahip projeler arasında urwid ve prompt_toolkit bulunuyor
1 yorum
Hacker News görüşü
TUI geliştiricileri Unicode, uluslararası karakterler ve emoji işleme konusunu ayrı bir proje olarak ele almak zorunda kalıyor
Textual'ın React'i taklit etmeye çalışması rahatsız edici
Textual'ı denedim ve CSS kullanmak zorundasınız
Bu TUI güzel görünüyor ama onu gerçekten kullanacağım bir senaryo aklıma gelmiyor
kitty daha fazla özellik sunuyor
Yazılım mühendislerinin TUI'lere neden bu kadar ilgi duyduğunu anlamıyorum
Monodraw yalnızca MacOS için, ancak diğer platformlarda da iyi alternatifler var
"Üzerine yaz, silme" geçmişte kullanılan bir oyun geliştirme yöntemiydi
Terminalde imleç konumunu kontrol ederek Unicode sürümünü tahmin etmenin bir yolu var
Birden fazla TUI kütüphanesini değerlendirdikten sonra, FTXUI kullanımı en kolay ve en güvenilir olanıydı