ശനിയാഴ്ച ഉച്ചകഴിഞ്ഞ്. ഒരു കോഫിയുമായി നിങ്ങൾ ഇരിക്കുന്നു, ഒരു ചെറിയ ഫീച്ചർ വേഗത്തിൽ തീർക്കാനോ അല്ലെങ്കിൽ നിങ്ങളുടെ സൈഡ് പ്രോജക്റ്റ് ഒന്ന് മിനുക്കിയെടുക്കാനോ ആണ് നിങ്ങൾ ഉദ്ദേശിക്കുന്നത്. പത്ത് മിനിറ്റ് കഴിയുമ്പോൾ എല്ലാം നിൽക്കുന്നു. ലോജിക് സങ്കീർണ്ണമായതുകൊണ്ടല്ല. നിങ്ങൾക്ക് ഫ്രെയിംവർക്ക് മനസ്സിലാകാത്തതുകൊണ്ടുമല്ല. ഒരു ടാഗ് മാത്രം തുറന്നു കിടക്കുന്നത് കാരണം പുരോഗതി തടസ്സപ്പെടുന്നു.

ഈ വാരാന്ത്യത്തിലെ വെല്ലുവിളിയിൽ സംഭവിച്ചതും ഇതുതന്നെയാണ്. ഒരു Liquid സിന്റാക്സ് എറർ (syntax error). ടാഗ് ശരിയായി അടച്ചിരുന്നില്ല. പാഴ്സർ (parser) ഫയലിലൂടെ കടന്നുപോയി, ഒരു ക്ലോസിംഗ് സീക്വൻസിനായി കാത്തിരുന്ന സ്ഥലത്ത് ഒന്നും കണ്ടെത്താനായില്ല. അങ്ങനെ തന്നെ ബിൽഡ് പരാജയപ്പെട്ടു. പരിചയസമ്പന്നരായ ഡെവലപ്പർമാരെപ്പോലും പതറിക്കുന്നതും തുടക്കക്കാരെ ആത്മവിശ്വാസം നഷ്ടപ്പെടുത്തുന്നതുമായ ഒരു തരം ബഗ്ഗാണ് ഇത്, എന്നാൽ ഇത് കണ്ടുപിടിച്ചാൽ പരിഹരിക്കാൻ വെറും സെക്കന്റുകൾ മതി.

ഉള്ളിൽ എന്താണ് സംഭവിച്ചത്?

Shopify നിർമ്മിച്ച ഒരു ടെംപ്ലേറ്റിംഗ് ലാംഗ്വേജ് ആണ് Liquid. ഇ-കൊമേഴ്‌സ് സ്റ്റോർഫ്രണ്ടുകൾ മുതൽ GitHub Pages-ലെ Jekyll അധിഷ്ഠിത ബ്ലോഗുകൾ വരെ ഇതിലൂടെയാണ് പ്രവർത്തിക്കുന്നത്. ഇത് രണ്ട് പ്രധാന സിന്റാക്സ് പാറ്റേണുകളെ ആശ്രയിച്ചിരിക്കുന്നു. {{ page.title }} എന്നതുപോലെ ഡബിൾ കർലി ബ്രേസുകൾ (double curly braces) ഔട്ട്‌പുട്ടിനായി ഉപയോഗിക്കുന്നു. {% if user %} അല്ലെങ്കിൽ {% for item in list %} എന്നതുപോലെ കർലി ബ്രേസ് പെർസെന്റ് ചിഹ്നങ്ങൾ ലോജിക്കും ഫ്ലോ കൺട്രോളിനും ഉപയോഗിക്കുന്നു.

ഓരോ ഓപ്പണിംഗ് ടാഗിനും ഒരു പങ്കാളിയെ ആവശ്യമാണ്. ഒരു {% if %} ടാഗിന് {% endif %} ആവശ്യമാണ്. ഒരു {% for %} ലൂപ്പിന് {% endfor %} ആവശ്യമാണ്. ഒരു ക്യാപ്‌ചർ ബ്ലോക്കിന് (capture block) {% endcapture %} ആവശ്യമാണ്. ഇവ വെറും നിർദ്ദേശങ്ങളല്ല. Liquid എഞ്ചിൻ നിങ്ങളുടെ ടെംപ്ലേറ്റ് ക്രമമായി വായിക്കുന്നു. ഒരു ഓപ്പണിംഗ് കൺസ്ട്രക്ട് കാണുമ്പോൾ, അത് അതിന്റെ ഇന്റേണൽ സ്റ്റാക്കിലേക്ക് (internal stack) ഒരു ഫ്രെയിം പമ്പ് ചെയ്യുകയും കാത്തിരിക്കുകയും ചെയ്യുന്നു. ഫയൽ അവസാനിക്കുകയോ, അല്ലെങ്കിൽ പ്രതീക്ഷിച്ച ടാഗ് വരുന്നതിന് മുമ്പ് മറ്റൊരു പ്രധാന ബ്ലോക്ക് അടയുകയോ ചെയ്താൽ എഞ്ചിൻ എറർ കാണിക്കും. "tag was not closed correctly" എന്നതാണ് ഇതിന്റെ സന്ദേശം. ചിലപ്പോൾ ഒരു ലൈൻ നമ്പർ ലഭിച്ചേക്കാം. എന്നാൽ പാഴ്സർക്ക് ആ ടാഗ് വിട്ടുപോയതായി മനസ്സിലാകുന്നത് അതിന് താഴെയുള്ളവയെല്ലാം വായിച്ചു കഴിഞ്ഞാൽ മാത്രമായതുകൊണ്ട്, ആ ലൈൻ നമ്പർ തെറ്റായ സ്ഥലത്തായിരിക്കാം ചൂണ്ടിക്കാണിക്കുന്നത്.

ഒരു ഉദാഹരണം നോക്കാം. നിങ്ങൾ ഇപ്രകാരം എഴുതുന്നു എന്ന് കരുതുക:

{% for product in collections.all.products %}
  <div class="card">
    <h2>{{ product.title }}</h2>
    {% if product.available %}
      <span>In stock</span>
    {% endif %}
  </div>
{% endfor %}

ഇവിടെ മൂന്ന് ടാഗുകളും അടച്ചിട്ടുണ്ട്. ഇനി നിങ്ങൾ വേഗത്തിൽ കോപ്പി പേസ്റ്റ് ചെയ്തുകൊണ്ടിരിക്കുകയാണെന്നും, അറിയാതെ അവസാനത്തെ r ഒഴിവാക്കിയെന്നും സങ്കൽപ്പിക്കുക:

{% for product in collections.all.products %}
  <div class="card">
    <h2>{{ product.title }}</h2>
    {% if product.available %}
      <span>In stock</span>
  </div>
{% endfo %}

അല്ലെങ്കിൽ ഒരു വലിയ HTML ബ്ലോക്കിന് താഴെയായിരിക്കുക എന്നതുകൊണ്ട് നിങ്ങൾ {% endfor %} പൂർണ്ണമായും മറന്നുപോയതാകാം. എഞ്ചിൻ {% for % കാണുന്നു, ലൂപ്പ് രജിസ്റ്റർ ചെയ്യുന്നു, പക്ഷേ അതിന്റെ പങ്കാളിയെ കണ്ടെത്താൻ കഴിയുന്നില്ല. Shopify-യുടെ കാര്യത്തിൽ, ഇത് മുഴുവൻ തീമും കംപൈൽ ചെയ്യുന്നതിൽ പരാജയപ്പെടാൻ കാരണമാകുന്നു. Jekyll-ൽ, GitHub Pages നിങ്ങൾക്ക് ബിൽഡ് ഫെയിലർ ഇമെയിൽ അയക്കും. ലോക്കൽ ഡെവലപ്‌മെന്റിൽ ഒരു ക്രിപ്റ്റിക് സ്റ്റാക്ക് ട്രാസ് (stack trace) ലഭിച്ചേക്കാം. ഒരു ചെറിയ ടാഗ് വിട്ടുപോയാൽ പോലും മുഴുവൻ പൈപ്പ്‌ലൈനും നിലയ്ക്കും.

ചെറിയ തെറ്റുകളുടെ ഭീകരത

ഈ തെറ്റുകൾ അത്രത്തോളം ദേഷ്യം പിടിപ്പിക്കുന്നതാണ്, കാരണം തെറ്റിന്റെ വലിപ്പത്തിനനുസരിച്ചല്ല ഇവയുടെ പ്രത്യാഘാതവും ഉണ്ടാകുന്നത്. നിങ്ങൾ ഡാറ്റാബേസ് തെറ്റായി രൂപകൽപ്പന ചെയ്തിട്ടില്ല. നിങ്ങൾ തെറ്റായ അൽഗോരിതം തിരഞ്ഞെടുത്തിട്ടുമില്ല. നിങ്ങൾ ഒരു ചെറിയ അക്ഷരം മാത്രം മറന്നുപോയി. ചെറിയ തെറ്റുകൾ വലിയ ബഗുകൾക്ക് കാരണമാകുന്നു. ആ വിട്ടുപോയ {% endif %} ഒരു വരി മാത്രം തകരാറിലാക്കുന്നില്ല. അത് ഒരു ചെയിൻ റിയാക്ഷൻ പോലെ പടരുന്നു. കണ്ടീഷൻ എവിടെ അവസാനിക്കുന്നു എന്നതിനെക്കുറിച്ച് പാഴ്സർ ആശയക്കുഴപ്പത്തിലാകുമ്പോൾ, അതിന് താഴെയുള്ള ഓരോ വരിയും തെറ്റായതാണെന്ന് അത് തെറ്റായി വ്യാഖ്യാനിച്ചേക്കാം. ഇരുപത് വരികളുള്ള ഒരു ടെംപ്ലേറ്റ് പെട്ടെന്ന് അറുപത് വരികളുള്ള എറർ ഔട്ട്‌പുട്ട് നൽകിയേക്കാം, അതിൽ മിക്കതും തെറ്റായ വിവരങ്ങളായിരിക്കും.

ഒരു ചെറിയ അക്ഷരം മറന്നുപോകുമ്പോൾ നിങ്ങൾ ഇത്തരം തെറ്റുകൾ നേരിടേണ്ടി വരുന്നു, നിങ്ങളുടെ തലച്ചോറ് ഇതിനായി തയ്യാറല്ലായിരിക്കും. മനുഷ്യർ കോഡ് വായിക്കുന്നത് പാറ്റേണുകൾ തിരിച്ചറിഞ്ഞാണ്. നമ്മൾ ഉദ്ദേശിച്ച കാര്യം മനസ്സിലാക്കുന്നു. if ഉം അതിനോട് ചേരുന്ന ലോജിക്കും കാണുമ്പോൾ നമ്മൾ അതിന്റെ അതിര് ഊഹിച്ചെടുക്കുന്നു. എന്നാൽ കമ്പ്യൂട്ടർ അങ്ങനെ ചെയ്യുന്നില്ല. അത് ഓരോ അക്ഷരമായി, മുകളിൽ നിന്ന് താഴേക്ക്, യാതൊരു സംശയവും ഇല്ലാതെ വായിക്കുന്നു. ഒരു പങ്കാളി ടാഗിനായി കാത്തിരിക്കെ ഫയലിന്റെ അവസാനം എത്തുമ്പോൾ അത് പരാജയപ്പെടുന്നു. ആ വിടവ് കണ്ടെത്താൻ പാഴ്സറിനെപ്പോലെ ചിന്തിക്കാൻ കഴിയുന്ന ഒരു ഡെവലപ്പർ ആയി മാറുകയാണ് നിങ്ങളുടെ ജോലി.

ഇത് Liquid-ൽ മാത്രം സംഭവിക്കുന്നതല്ല. Python-ലെ ഒരു തുറന്ന ബ്രാക്കറ്റ്, Markdown-ലെ ഒരു വിട്ടുപോയ ബാക്ക്‌ടിക് (backtick), JavaScript-ലെ ഒരു ബ്രേസ്, HTML-ലെ ഒരു ആംഗിൾ ബ്രാക്കറ്റ് എന്നിവയും ഇതേപോലെയാണ്. ഈ വാരാന്ത്യത്തിലെ വെല്ലുവിളി പഠനത്തിനായി Liquid ഉപയോഗിച്ചു എന്ന് മാത്രം, എന്നാൽ ഇതിന് പിന്നിലെ പാഠം നിങ്ങൾ ഉപയോഗിക്കുന്ന എല്ലാ ഭാഷകൾക്കും ബാധകമാണ്. സിന്റാക്സ് എന്നത് വ്യാകരണമാണ്, വ്യാകരണം വിട്ടുവീഴ്ചയില്ലാത്തതാണ്.

ഇവ എങ്ങനെ കണ്ടെത്താം?

ഇത്തരം സാഹചര്യങ്ങളിൽ, ആദ്യം ഫയൽ മുഴുവൻ പരിഭ്രമത്തോടെ വായിക്കാനാണ് നമ്മൾ ശ്രമിക്കാറുള്ളത്. അത് ഒഴിവാക്കുക. പരിഭ്രമത്തോടെ വായിക്കുമ്പോൾ നിങ്ങളുടെ തലച്ചോറ് തെറ്റുകൾ സ്വയം തിരുത്തി വായിക്കുന്നതുകൊണ്ട് നിങ്ങൾ വിട്ടുപോയ ആ അക്ഷരം ശ്രദ്ധിക്കാതെ പോയേക്കാം. പകരം, വ്യവസ്ഥാപിതമായി (systematically) പ്രവർത്തിക്കുക.

നിങ്ങളുടെ ടാഗുകൾ കൃത്യമായി പൊരുത്തപ്പെടുത്തുക. ഫയലിലൂടെ ഓരോന്നായി കടന്നുപോവുക, ഓരോ ഓപ്പണിംഗ് ടാഗും ഉച്ചത്തിൽ പറയുകയോ പേപ്പറിൽ എഴുതുകയോ ചെയ്യുക. for-ന് endfor വേണം. if-ന് endif വേണം. unless-ന് endunless വേണം. capture-ന് endcapture വേണം. നിങ്ങൾ ബ്ലോക്കുകൾ നെസ്റ്റ് (nest) ചെയ്യുകയാണെങ്കിൽ, മനസ്സിൽ ഒരു കൗണ്ടർ ഉപയോഗിച്ച് എണ്ണം കൂട്ടുക. ഒരു for-നുള്ളിൽ ഞാൻ ഒരു if തുറക്കുമ്പോൾ, ഫയൽ അവസാനിക്കുന്നതിന് മുമ്പ് എനിക്ക് തീർക്കേണ്ട രണ്ട് ഉത്തരവാദിത്തങ്ങളാണ് അവ.

നിങ്ങളുടെ എഡിറ്റർ ഉപയോഗിക്കുക. നിങ്ങൾ പതിവായി Liquid ഉപയോഗിക്കുന്നുണ്ടെങ്കിൽ, അതിന്റെ ഗ്രാമർ തിരിച്ചറിയുന്ന ഒരു സിന്റാക്സ് ഹൈലൈറ്റർ (syntax highlighter) ഇൻസ്റ്റാൾ ചെയ്യുക. Visual Studio Code-ൽ Liquid ടാഗുകളെ മങ്ങിയ നിറത്തിലോ അല്ലെങ്കിൽ കളർ കോഡ് ചെയ്തോ കാണിക്കുന്ന എക്സ്റ്റൻഷനുകൾ ലഭ്യമാണ്. ഒരു ക്ലോസിംഗ് ടാഗ് തെറ്റാണെങ്കിൽ, കളർ പാറ്റേൺ മാറുന്നത് കാണാം. ചില ലിന്ററുകൾ (linters) കംപൈൽ ചെയ്യുന്നതിന് മുമ്പ് തന്നെ ക്ലോസ് ചെയ്യാത്ത ബ്ലോക്കുകൾ കണ്ടെത്താൻ സഹായിക്കും. Vim അല്ലെങ്കിൽ Neovim ഉപയോഗിക്കുന്നവർ vim-liquid പോലുള്ള ഒരു പ്ലഗിൻ ഉപയോഗിക്കുന്നതിനെക്കുറിച്ചോ അല്ലെങ്കിൽ മാച്ചിംഗ് ടാഗുകൾ ഹൈലൈറ്റ് ചെയ്യാൻ Tree-sitter കോൺഫിഗർ ചെയ്യുന്നതിനെക്കുറിച്ചോ ചിന്തിക്കുക. ഈ ടൂളുകൾ ചിന്തിക്കേണ്ട ആവശ്യകത ഇല്ലാതാക്കുന്നില്ല, പക്ഷേ അവ തെറ്റുകൾ എളുപ്പത്തിൽ തിരിച്ചറിയാൻ സഹായിക്കുന്നു.

നിങ്ങളുടെ ടെംപ്ലേറ്റ് ബൈനറി സെർച്ച് (Binary search) ചെയ്യുക. എറർ മെസ്സേജ് ലൈൻ 200-നെയാണ് ചൂണ്ടിക്കാണിക്കുന്നതെങ്കിലും അവിടെ ഒന്നും തെറ്റായി കാണുന്നില്ലെങ്കിൽ, യഥാർത്ഥ പ്രശ്നം ഒരുപക്ഷേ അതിന് മുകളിൽ ആയിരിക്കാം. ടെംപ്ലേറ്റിന്റെ താഴത്തെ പകുതി കമന്റ് ഔട്ട് (comment out) ചെയ്യുക. അത് ബിൽഡ് ആകുന്നുണ്ടോ? ഉണ്ടെങ്കിൽ, എറർ കമന്റ് ചെയ്ത ഭാഗത്താണ്. അതിൽ പകുതിയുടെ കമന്റ് മാറ്റുക (uncomment). തകരാറുള്ള ഭാഗം മാത്രം കണ്ടെത്തുന്നത് വരെ ഇത് ആവർത്തിക്കുക. ഇത് സാവധാനമാണെന്ന് തോന്നാമെങ്കിലും, നിരാശപ്പെട്ട് ഒരേ ഇരുനൂറ് വരികൾ ആറ് തവണ വായിക്കുന്നതിനേക്കാൾ വേഗത ഇതിനുണ്ട്.

നിങ്ങളുടെ ഇൻക്ലൂഡുകൾ (includes) പരിശോധിക്കുക. {% include %} അല്ലെങ്കിൽ {% render %} വഴി മോഡുലാർ ഫ്രാഗ്മെന്റുകളെ (modular fragments) സപ്പോർട്ട് ചെയ്യാൻ Liquid-ന് സാധിക്കും. ക്ലോസ് ചെയ്യാത്ത ടാഗ് മെയിൻ ഫയലിൽ തന്നെയാകണമെന്നില്ല. അത് പാരന്റ് ടെംപ്ലേറ്റ് ഉൾക്കൊള്ളുന്ന ഒരു സ്നിപ്പറ്റിനുള്ളിൽ (snippet) ആയിരിക്കാം. ഇവിടെയാണ് വെർഷൻ കൺട്രോൾ (version control) നിങ്ങളുടെ ജോലി എളുപ്പമാക്കുന്നത്. ഒരു 'diff' റൺ ചെയ്യുക. അവസാനമായി വിജയകരമായി ബിൽഡ് ചെയ്തതിന് ശേഷം എന്തൊക്കെ മാറ്റങ്ങൾ വന്നു എന്ന് നോക്കുക. പലപ്പോഴും ഉത്തരം ചുവപ്പിലും പച്ചയിലും വ്യക്തമായി കാണാം.

ഇൻഡന്റേഷൻ (Indentation) ഒരു ഡോക്യുമെന്റേഷൻ ആണ്. നിങ്ങളുടെ {% if %} കോളം സീറോയിൽ തുടങ്ങുകയും അതിന് അനുബന്ധമായ {% endif %} ഒരു നെസ്റ്റഡ് സ്ട്രക്ചറിനുള്ളിൽ ഇൻഡന്റ് ചെയ്യുകയും ചെയ്യുന്നുണ്ടെങ്കിൽ, വിഷ്വൽ അലൈൻമെന്റ് (visual alignment) ഉപയോഗിച്ച് ആ വ്യത്യാസം നിങ്ങൾക്ക് പെട്ടെന്ന് തിരിച്ചറിയാം. നിങ്ങളുടെ HTML, Liquid ടാഗുകൾ ഒരേ ഇൻഡന്റേഷൻ രീതി പിന്തുടരുകയാണെങ്കിൽ, തെറ്റായ സ്ഥാനത്ത് ഇരിക്കുന്ന ടാഗുകൾ നിങ്ങളുടെ കണ്ണുകൾക്ക് പെട്ടെന്ന് കാണാൻ സാധിക്കും.

യഥാർത്ഥ പാഠ്യപദ്ധതി

വീക്കെൻഡ് ചലഞ്ചുകൾ (Weekend challenges) പ്രധാനമാണ്, കാരണം നിങ്ങൾ യഥാർത്ഥത്തിൽ ജോലി ചെയ്യുന്ന സാഹചര്യങ്ങളെ അവ കൃത്യമായി അനുകരിക്കുന്നു. നിങ്ങളെ നിരീക്ഷിക്കാൻ ഒരു മാനേജരും ഇല്ല. സമയപരിധിയുടെ സമ്മർദ്ദവുമില്ല. നിങ്ങൾ കഴിവ് വർദ്ധിപ്പിക്കാനോ അല്ലെങ്കിൽ വിനോദത്തിനോ വേണ്ടിയാണ് കോഡിംഗ് ചെയ്യുന്നത്, എന്നാൽ ഒരു ചെറിയ പിശക് നിങ്ങളെ തടയുന്നു. ആ നിമിഷമാണ് യഥാർത്ഥ പാഠം. ഡീബഗ്ഗിംഗിനെക്കുറിച്ച് വായിച്ചാൽ മാത്രം നിങ്ങൾക്ക് ഡീബഗ്ഗിംഗ് പഠിക്കാൻ കഴിയില്ല. പുറത്ത് കറങ്ങി നടക്കാൻ ആഗ്രഹിക്കുമ്പോൾ, ഒരു തകരാറിലായ ബിൽഡിനെ നോക്കി ഇരിക്കുമ്പോഴാണ് നിങ്ങൾ അത് പഠിക്കുന്നത്; ഒരു എറർ മെസ്സേജിനെ വിമർശനമായല്ല, മറിച്ച് ഒരു ഡാറ്റയായി കാണാൻ നിങ്ങൾ സ്വയം ശീലിപ്പിക്കുന്നു.

ഈ പിശകുകൾ പരിഹരിക്കാൻ പഠിക്കുക, കാരണം അവ ഒരിക്കലും പൂർണ്ണമായും ഇല്ലാതാകില്ല. പത്ത് വർഷത്തെ പ്രവൃത്തിപരിചയത്തിന് ശേഷവും ഒരു വെള്ളിയാഴ്ച രാത്രി ഡെപ്ലോയ് (deploy) ചെയ്യുന്ന സമയത്ത് നിങ്ങൾ ഒരു ക്ലോസിംഗ് ടാഗ് മറന്നുപോയേക്കാം. ഒരു ജൂനിയർ ഡെവലപ്പറും സീനിയർ ഡെവലപ്പറും തമ്മിലുള്ള വ്യത്യാസം തെറ്റുകൾ ഇല്ലാത്തതുകൊണ്ടല്ല, മറിച്ച് തെറ്റുകൾ തിരുത്തി മുന്നോട്ട് പോകാനുള്ള വേഗതയാണ്. സീനിയർ ഡെവലപ്പർ സിന്റാക്സ് എറർ കാണുന്നു, പാറ്റേൺ തിരിച്ചറിയുന്നു, സാധ്യതയുള്ള കാരണങ്ങൾ പരിശോധിക്കുന്നു, എന്നിട്ട് മുന്നോട്ട് പോകുന്നു. എന്നാൽ ജൂനിയർ ഡെവലപ്പർ മുഴുവൻ ടൂൾചെയിനും (toolchain) തകരാറിലാണോ എന്ന് സംശയിക്കുന്നു. ആവർത്തിച്ചുള്ള പരിശീലനം ആ പ്രതികരണശേഷി (reflex) വളർത്തുന്നു.

കമ്മ്യൂണിറ്റി പങ്കാളിത്തം ഇത് വേഗത്തിലാക്കുന്നു. ഒരു വീക്കെൻഡിൽ ഒന്നിലധികം ആളുകൾ ഒരേ തകരാറുള്ള ടെംപ്ലേറ്റ് പരിഹരിക്കാൻ ശ്രമിക്കുമ്പോൾ, ഒറ്റയ്ക്ക് ഇരിക്കുമ്പോൾ ഒരു ഡെവലപ്പർക്കും കാണാൻ കഴിയാത്ത പാറ്റേണുകൾ തെളിഞ്ഞുവരുന്നു. നെസ്റ്റഡ് for ലൂപ്പുകൾക്കുള്ളിൽ മാത്രമാണ് എറർ വരുന്നത് എന്ന് ഒരാൾ ശ്രദ്ധിച്ചേക്കാം. സാധാരണയായി സംഭവിക്കുന്ന ലിക്വിഡ് ടാഗ് വ്യത്യാസങ്ങൾ കണ്ടെത്താൻ സഹായിക്കുന്ന ഒരു ഷെൽ സ്ക്രിപ്റ്റ് മറ്റൊരാൾ പങ്കുവെച്ചേക്കാം. അറിവ് സൂക്ഷിച്ചുവെക്കുമ്പോഴല്ല, മറിച്ച് പങ്കുവെക്കുമ്പോഴാണ് അത് വർദ്ധിക്കുന്നത്. ഈ ചലഞ്ചെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾ വായിക്കാനും മറ്റുള്ളവർ ഇത് എങ്ങനെ കൈകാര്യം ചെയ്തു എന്ന് കാണാനും ഈ Dev.to പോസ്റ്റ് സന്ദർശിക്കുക. ഒരേ പ്രശ്നങ്ങൾ നേരിടുന്നവരുമായി ആശയവിനിമയം നടത്താൻ ആഗ്രഹിക്കുന്നുണ്ടെങ്കിൽ, ടെലിഗ്രാമിലെ ഈ ഓപ്ഷണൽ ലേണിംഗ് കമ്മ്യൂണിറ്റിയിൽ നിങ്ങൾക്ക് ചേരാം.

ചുരുക്കത്തിൽ

സിന്റാക്സ് എററുകളെ നിങ്ങളുടെ യഥാർത്ഥ ജോലിയുടെ തടസ്സങ്ങളായി കാണരുത്. അവ ജോലിയുടെ തന്നെ ഭാഗമാണ്. ഈ വീക്കെൻഡിലെ ബിൽഡ് തകരാറിലാക്കിയ ലിക്വിഡ് ടാഗ് യഥാർത്ഥത്തിൽ ടെംപ്ലേറ്റ് എഞ്ചിനെക്കുറിച്ചല്ലായിരുന്നു. അത് നിങ്ങളുടെ തലച്ചോറ് ഊഹിക്കാൻ ശ്രമിക്കുമ്പോൾ കൃത്യതയോടെ വായിക്കാൻ സ്വയം പരിശീലിപ്പിക്കുന്നതിനെക്കുറിച്ചായിരുന്നു. കഴിഞ്ഞ ആഴ്ച നിങ്ങൾ എഴുതിയ ഒരു ഫയൽ തുറക്കുക. നിങ്ങൾ ഉപയോഗിച്ച ടാഗുകൾ പരിശോധിക്കുക. ഓരോന്നും കൃത്യമായി അടച്ചിട്ടുണ്ടെന്ന് ഉറപ്പുവരുത്തുക. ലൂപ്പുകൾ ക്ലോസ് ചെയ്യുക. കണ്ടിഷണലുകൾ (conditionals) ശരിയാക്കുക. എന്നിട്ട് ഓരോ അക്ഷരവും കൃത്യമായി എഴുതിക്കൊണ്ട് വീണ്ടും നിർമ്മാണത്തിലേക്ക് മടങ്ങുക.