1 पॉइंट द्वारा GN⁺ 2025-01-20 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 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 टिप्पणियां

 
GN⁺ 2025-01-20
Hacker News राय
  • यह किस्सा मज़ेदार है कि Hal Finney ने 70 के दशक में Mattel Intellivision सिस्टम के लिए BASIC interpreter लिखते समय error message को घटाकर "EH?" कर दिया था

  • setting का नाम स्पष्ट न होने से समस्या पैदा हुई। help.autocorrect_enabled जैसा कोई साफ़ नाम होना चाहिए था

    • setting के नाम में unit शामिल होनी चाहिए। उदाहरण के लिए, int timeout की जगह int timeout_msec नाम देना चाहिए
  • यह ख़राब design लगता है। मौजूदा setting value की दोबारा व्याख्या करके उसे बदलने से बचना चाहिए

    • help.autocorrect का setting argument किसी non-standard unit में मापा जाना अच्छा नहीं है। इसे boolean और decimal के रूप में सेट करना बेहतर होगा
  • यह "creeping featurism" का एक अच्छा उदाहरण है। यह अनावश्यक जटिलता पैदा करता है

  • deciseconds unit के इस्तेमाल पर चर्चा नहीं हुई थी। xmobar भी इसी तरह की समस्या झेल रहा है

    • छोटे numbers को milliseconds की बजाय seconds समझा जा सकता है
  • help.autocorrect setting को 1 पर सेट करने पर 100ms रुककर आगे बढ़ता है। एक नई setting जोड़नी चाहिए थी

    • MySQL का innodb_flush_log_at_trx_commit भी ऐसी ही गलती शामिल करता है
  • जब autocorrect को 3 seconds पर सेट किया गया, तो वह खतरनाक और सुरक्षित behavior में फ़र्क नहीं कर पाया, और ग़लत टाइप किए गए command से shell history दूषित हो गई

    • 1 साल बाद इसे disable करने का फ़ैसला लिया गया
  • command ग़लत टाइप होने पर, 100ms timeout से पहले cancel करने के लिए तुरंत ctrl-C दबाया जा सकता है

  • deciseconds एक non-standard unit है। delay को milliseconds या seconds में बताना ज़्यादा सामान्य है

  • reaction time stimulus के प्रकार पर निर्भर करता है। auditory, visual से तेज़ होता है, और tactile सबसे तेज़ होता है (90 - 180 ms)