7 hal yang dipelajari saat membangun framework TUI modern
Terminal itu cepat
- Emulator terminal modern adalah perangkat lunak yang sangat canggih
- Dapat menggunakan rendering dengan akselerasi perangkat keras untuk mengurangi kedipan layar
- Tiga trik untuk mengurangi kedipan:
- Jangan bersihkan layar, timpa saja
- Tulis ke output standar sekaligus dalam satu kali kirim
- Gunakan protokol Synchronized Output
- Textual menggunakan 60fps secara default untuk memberikan animasi yang mulus
DictViews itu mengejutkan
- Metode
keys() dan items() pada dict di Python mengembalikan KeysView dan ItemsView
- Perbedaan simetris pada objek
ItemsView dapat digunakan untuk dengan mudah menemukan item yang berubah
- Di Textual, ini digunakan untuk pembaruan yang dioptimalkan saat properti CSS berubah
lru_cache itu cepat
- Dekorator
@lru_cache dari modul functools menyimpan cache nilai kembalian fungsi
- Di Textual, performa ditingkatkan dengan memakai
@lru_cache pada fungsi-fungsi kecil yang sering dipanggil
- Perlu memeriksa informasi cache (
cache_info()) untuk memastikan bahwa caching benar-benar efektif
Objek immutable adalah yang terbaik
- Anda bisa mendapatkan manfaat objek immutable dengan memakai tuple, NamedTuple, atau frozen dataclass di Python
- Dengan objek immutable, Anda dapat menulis kode tanpa efek samping sehingga pengujian dan caching menjadi lebih mudah
Seni Unicode itu bagus
- Diagram yang menggunakan karakter kotak Unicode sangat berguna untuk dokumentasi
- Jika dipakai bersama docstring yang ditulis dengan baik, hasilnya sangat membantu
Pecahan itu akurat
- Modul
fractions di Python dapat menghindari kesalahan floating point
- Di Textual, pecahan digunakan untuk membagi layar berdasarkan rasio sehingga tata letak yang akurat dapat diwujudkan
Emoji itu mengerikan
- Dukungan emoji di terminal tidak dapat diprediksi dan rumit
- Lebar emoji diperiksa menggunakan basis data Unicode, tetapi emoji terbaru dapat menghasilkan perilaku yang tidak terduga
- Emoji multi-codepoint menimbulkan masalah yang lebih besar
Ringkasan GN⁺
- Tulisan ini memberikan tip dan trik yang berguna saat mengembangkan aplikasi terminal Python
- Artikel ini membagikan saran praktis yang diperoleh dari pengalaman mengembangkan framework Textual
- Artikel ini membantu pengembang dengan menjelaskan cara menangani masalah kompleks seperti emoji
- Proyek dengan fungsi serupa antara lain urwid dan prompt_toolkit
1 komentar
Komentar Hacker News
Pengembang TUI akhirnya harus menangani Unicode, karakter internasional, dan emoji sebagai proyek terpisah
Tidak suka bahwa Textual mencoba meniru React
Setelah mencoba Textual, ternyata harus menggunakan CSS
TUI ini memang cantik, tetapi saya tidak bisa membayangkan situasi nyata untuk memakainya
kitty menawarkan lebih banyak fitur
Saya tidak mengerti mengapa software engineer begitu tertarik pada TUI
Monodraw memang hanya untuk MacOS, tetapi ada alternatif bagus di platform lain
"Timpa, jangan hapus" adalah cara pengembangan game di masa lalu
Ada cara untuk memperkirakan versi Unicode dengan memeriksa posisi kursor di terminal
Setelah mengevaluasi beberapa library TUI, FTXUI adalah yang paling mudah digunakan dan paling andal