-
Git की auto-correct सुविधा बहुत तेज़ क्यों है
- Git की auto-correct सुविधा गलत टाइप किए गए command को चलाने से पहले 0.1 सेकंड इंतज़ार करती है.
- यह समय इंसानी आंख झपकने के समय के बराबर है, इसलिए इस पर प्रतिक्रिया देना मुश्किल है.
- यह सुविधा Git maintainer द्वारा सुझाई गई time unit की गलतफ़हमी और गलत configuration से उत्पन्न हुई.
-
यह सुविधा कैसे डिज़ाइन की गई?
- डिफ़ॉल्ट रूप से Git गलत command नहीं चलाता.
- मिलते-जुलते command सुझाकर बाहर निकल जाना इसका default behavior है.
- 2008 में Johannes Schindelin ने मिलते-जुलते command खोजकर चलाने वाला patch जोड़ा.
- Alex Riesen ने
help.autocorrect setting के ज़रिए इसे configurable बनाया.
help.autocorrect को 1 पर सेट करने से command 0.1 सेकंड बाद चलती है.
-
सही setting value क्या है?
10 पर सेट करने से 1 सेकंड तक इंतज़ार होता है.
- documentation के अनुसार configurable values इस प्रकार हैं:
0: सुझाया गया command दिखाता है.
- positive value: दिए गए 0.1 सेकंड के बाद command चलाता है.
immediate: command तुरंत चलाता है.
prompt: सुझाया गया command दिखाता है और चलाने के लिए prompt दिखाता है.
never: सुझाया गया command न चलाता है, न दिखाता है.
prompt setting सबसे तर्कसंगत हो सकती है.
-
Git अनुमान कैसे लगाता है?
- Git command का अनुमान लगाने के लिए एक साधारण modified Levenshtein distance algorithm का उपयोग करता है.
- अगर दूरी एक निश्चित सीमा से ज़्यादा हो, तो यह अनुमान नहीं लगाता.
- उदाहरण के लिए,
git bass का अनुमान rebase के रूप में लगाया जाता है, लेकिन bassa का नहीं.
-
मेरा छोटा-सा सुधार
- मैंने एक छोटा patch लिखा ताकि
1 value को "immediate" के रूप में समझा जाए.
- Git maintainer ने कहा कि सभी boolean string values को सही तरीके से interpret किया जाना चाहिए.
- अगर यह patch लागू हो जाता है, तो Git के future versions अब आपकी प्रतिक्रिया की गति की परीक्षा नहीं लेंगे.
1 टिप्पणियां
Hacker News राय
यह किस्सा मज़ेदार है कि Hal Finney ने 70 के दशक में Mattel Intellivision सिस्टम के लिए BASIC interpreter लिखते समय error message को घटाकर "EH?" कर दिया था
setting का नाम स्पष्ट न होने से समस्या पैदा हुई।
help.autocorrect_enabledजैसा कोई साफ़ नाम होना चाहिए थाint timeoutकी जगहint timeout_msecनाम देना चाहिएयह ख़राब design लगता है। मौजूदा setting value की दोबारा व्याख्या करके उसे बदलने से बचना चाहिए
help.autocorrectका setting argument किसी non-standard unit में मापा जाना अच्छा नहीं है। इसे boolean और decimal के रूप में सेट करना बेहतर होगायह "creeping featurism" का एक अच्छा उदाहरण है। यह अनावश्यक जटिलता पैदा करता है
deciseconds unit के इस्तेमाल पर चर्चा नहीं हुई थी। xmobar भी इसी तरह की समस्या झेल रहा है
help.autocorrectsetting को 1 पर सेट करने पर 100ms रुककर आगे बढ़ता है। एक नई setting जोड़नी चाहिए थीinnodb_flush_log_at_trx_commitभी ऐसी ही गलती शामिल करता हैजब autocorrect को 3 seconds पर सेट किया गया, तो वह खतरनाक और सुरक्षित behavior में फ़र्क नहीं कर पाया, और ग़लत टाइप किए गए command से shell history दूषित हो गई
command ग़लत टाइप होने पर, 100ms timeout से पहले cancel करने के लिए तुरंत ctrl-C दबाया जा सकता है
deciseconds एक non-standard unit है। delay को milliseconds या seconds में बताना ज़्यादा सामान्य है
reaction time stimulus के प्रकार पर निर्भर करता है। auditory, visual से तेज़ होता है, और tactile सबसे तेज़ होता है (90 - 180 ms)