आधुनिक TUI फ्रेमवर्क बनाते हुए सीखी गई 7 बातें
टर्मिनल तेज़ है
- आधुनिक terminal emulator बहुत परिष्कृत software हैं
- hardware-accelerated rendering का उपयोग करके screen flicker को कम किया जा सकता है
- flicker कम करने के तीन तरीके:
- स्क्रीन को साफ़ न करें, उस पर overwrite करें
- standard output में एक बार में लिखें
- Synchronized Output protocol का उपयोग करें
- Textual डिफ़ॉल्ट रूप से 60fps का उपयोग करता है ताकि smooth animation मिले
DictViews चौंकाने वाले हैं
- Python dicts की
keys() और items() methods, KeysView और ItemsView लौटाती हैं
ItemsView object के symmetric difference का उपयोग करके बदले हुए items आसानी से खोजे जा सकते हैं
- Textual में CSS properties बदलने पर optimized updates के लिए इसका उपयोग होता है
lru_cache तेज़ है
functools module का @lru_cache decorator function के return value को cache करता है
- Textual में performance सुधारने के लिए अक्सर कॉल होने वाले छोटे functions पर
@lru_cache का उपयोग किया गया
cache_info() देखकर यह जाँचना चाहिए कि caching प्रभावी है या नहीं
immutable objects सबसे बेहतरीन हैं
- Python के tuples, NamedTuples, या frozen dataclasses का उपयोग करके immutable objects के फ़ायदे लिए जा सकते हैं
- immutable objects इस्तेमाल करने से side effects रहित code लिखा जा सकता है, जिससे testing और caching आसान हो जाती है
Unicode art अच्छा है
- Unicode box characters से बने diagrams documentation में बहुत उपयोगी होते हैं
- अच्छी तरह लिखे गए docstring के साथ इनका उपयोग बहुत मददगार होता है
fractions सटीक हैं
- Python का
fractions module floating point errors से बचा सकता है
- Textual में स्क्रीन को अनुपात के अनुसार बाँटते समय fractions का उपयोग करके सटीक layout लागू किया जाता है
emoji भयानक हैं
- terminal में emoji support अप्रत्याशित और जटिल है
- emoji की width जाँचने के लिए Unicode database का उपयोग किया जाता है, लेकिन नए emoji अप्रत्याशित परिणाम दे सकते हैं
- multi-codepoint emoji और बड़ी समस्या पैदा करते हैं
GN⁺ की संक्षिप्त जानकारी
- यह लेख Python terminal application development के लिए उपयोगी tips और tricks देता है
- Textual framework के development अनुभव से मिली व्यावहारिक सलाह साझा करता है
- emoji जैसी जटिल समस्याओं से निपटने के तरीके समझाकर developers की मदद करता है
- समान प्रकार की functionality वाले projects में urwid और prompt_toolkit शामिल हैं
1 टिप्पणियां
Hacker News राय
TUI डेवलपर्स को Unicode, अंतरराष्ट्रीय अक्षरों और emoji handling को एक अलग प्रोजेक्ट की तरह संभालना पड़ता है
rivo/tviewऔरrivo/unisegपैकेजों में भी आईTextual के React की नकल करने की कोशिश से असंतोष है
Textual इस्तेमाल करके देखा, और उसमें CSS का इस्तेमाल करना ही पड़ता है
यह TUI दिखने में सुंदर है, लेकिन इसे वास्तव में कहाँ इस्तेमाल किया जाएगा, यह समझ नहीं आता
kitty ज़्यादा features देता है
समझ नहीं आता कि software engineers TUI में इतनी दिलचस्पी क्यों लेते हैं
Monodraw सिर्फ MacOS के लिए है, लेकिन दूसरे platforms पर भी अच्छे विकल्प हैं
"overwrite, don't erase" पुरानी game development पद्धति थी
terminal में cursor position देखकर Unicode version का अनुमान लगाने का एक तरीका है
wcwidthसे परेशान होकर कभी इस तरीके का इस्तेमाल किया गया थाकई TUI libraries का मूल्यांकन करने पर FTXUI सबसे आसान और भरोसेमंद लगा