ஊத்திக்கினு கடிப்பதும், கடிச்சுக்கினு ஊத்திப்பதும்
கோயிஞ்சாமிக்கு ஒரு ப்ராஜக்ட் பண்ணிக்கொண்டு இருந்தான். அந்த ப்ராஜக்ட் ஒரு இணையதள கட்டுமானத்துக்கானது. அந்த ப்ராஜக்ட்டில் பயனருக்குக் காண்பிக்க ஒரு நாட்காட்டி தேவைப்பட்டது.
அந்த காலண்டரை ஜாவாஸ்க்ரிப்டில் எழுத கோயிஞ்சாமி சபதம் பூண்டான். மறு நாள் முழுதையும் இந்த ஜாவாஸ்க்ரிப்ட் காலண்டர் சாப்பிட்டுவிடும் விபரீதம் அப்பொழுது கோயிஞ்சாமிக்குக் கிஞ்சித்தும் தெரிந்து இருக்கவில்லை.
காலண்டர் ப்ரோக்ராம் ஒன்று எழுத ஆரம்பிக்கும் முன், இணையத்தில் இலவசமாகக் கிடைக்கும் code/scriptகளைப் பயன்படுத்த வேண்டாம் என்றும் முடிவு செய்திருந்தான். மறு நாள் முழுதையும் இந்த ஜாவாஸ்க்ரிப்ட் காலண்டர் சாப்ப்... சரி சரி. பில்ட்-அப் போதும். மேட்டருக்குப் போவோம்.
ஒரு காலண்டரில் என்னென்ன மாதங்கள் இருக்கிறது என்று தெரியவேண்டும். சுலபம், ஒன்று முதல் பன்னிரண்டு வரை உள்ள எண்கள். அடுத்ததாக ஒரு மாதத்தில் என்னென தேதிகள் உள்ளன என்று தெரியவேண்டும், சில மாதம் 28ஆம் தேதி வரை மட்டுமே இருக்கும், சில மாதம் 29, சிலவற்றில் 30, 31 இப்படி.
ஆக, அந்த மாதத்தில் எத்தனைத் தேதிகள் உள்ளன என்று கண்டுபிடித்து விட்டால் மற்றவை சுலபம். அதாவது கடைசித் தேதியைக் கண்டுபிடிக்க வேண்டும். ஜாவாஸ்க்ரிப்டில் ஒரு மாதத்தின் கடைசித்தேதியைக் கண்டுபிடிக்க உள்ளமைந்த ஃபங்க்ஷன் எதுவும் இல்லை என்பது கோயிஞ்சாமிக்கு உறைக்கவில்லை. எனவே நோட்பேட் திறந்து எழுத ஆரம்பித்தான். மறு நாள் முழுவதையும் இந்த ஜாவாஸ்க்ரிப்ட் காலண்டர் சாப்பிட்டுவிடும் விபரீதம் அப்பொழுத்... சரி, சரி, சரி. சஸ்பென்ஸ் கதை எழுத ஆசைப்பட்டதில் இருந்து இப்படித்தான் சம்பந்தமில்லாத இடத்தில் பஞ்ச் லைன் வந்து விழுந்துத் தொலைக்கிறது.
எனவே ஒரு மாதத்தின் கடைசி தேதியைக் கண்டுபிடிக்க கீழ்க்காணும் உத்தியைப் பின்பற்றினான்.
ஊத்திக்கினு கடிச்சுக்கறான்
----------------------
இருக்கும் தேதியுடன் ஒரு மாதம் கூட்டினால் அடுத்த மாதம் வந்து விடும். அடுத்த மாதம் வந்தவுடன் அந்த மாதத்தின் ஒன்றாம் தேதிக்கு தேதியை மாற்ற வேண்டும். பிறகு அதில் இருந்து ஒரு தேதி கழித்துவிட்டால், தற்போதைய மாதத்தின் கடைசித்தேதி கிடைத்து விடும்.
உ.தா.:
இன்றைய தேதி: 29 ஜூலை 2005
ஒரு மாதம் கூட்டினால்: 29 ஆகஸ்ட் 2005
இம்மாதத்தின் முதல் தேதி: 1 ஆகஸ்ட் 2005
இதிலிருந்து ஒரு நாள் கழித்தால்: 31 ஜூலை 2005
ஆக, ஜூலை மாதத்தின் கடைசி நாள் 31.
ஆஹா, ப்ரமாதம் ப்ரமாதம் என்று தன்னைத் தானே புகழ்ந்துகொண்டு அந்தந்த கிழமைகளில் சரியாக வருமாறு காலண்டரை உருவாக்கி வீட்டிற்கும் போய்விட்டான் பணியகத்தில் இருந்து.
கடிச்சுக்கினு ஊத்திக்கறான்
-----------------------
மறுநாள் பணியகம் வந்ததும் தான் நேற்று எழுதிய நிரலை ஒரு மேற்பார்வை பார்க்க ஆரம்பித்தான். அடடே, என்ன அதிசயம்! நேற்று மிகவும் துள்ளியமாக இயங்கிய நிரல் இன்று தப்புத்தப்பாக காட்டுகிறதே தேதிகளை!
கணிப்பொறியில் தேதியைப் பார்த்தான். 31 மார்ச் 2005 என்று காண்பித்தது (வேண்டுமென்றே மாற்றி அமைத்திருந்தான் கோயிஞ்சாமி).
ஒன்றும் பிடிபடவில்லை. பணியகத்தில் இருந்த ஃப்ரிட்ஜில் இருந்து மூன்று பாட்டில் தண்ணீரை மதியத்திற்குள் காலி செய்தும் பலனில்லை. மதியம் உணவு முடிந்ததும் நெல்லைப் பழரசம் குடித்துவிட்டு வந்தும் ஒரு பலனும் இல்லை.
பிறகு மாலை தேநீர் அருந்தியவுடன் 'பொறுத்தது போதும்!' என்று வலைப்பூக்களை மேய்ந்தான். குழுக்களில் வந்த மடல்களைப் படித்துப் பார்த்தான்.
சரி, இதை விடுவதில்லை என்ற தீர்மானத்துடன் மீண்டும் நோட்பேடை எடுத்து அந்த ஸ்க்ரிப்ட்டை ஆராய்ந்தான்.
என்னதான் நடக்கிறது என்று வரிவரியாக டீ-பக் போட்டு மீண்டும் ஆராய்ந்ததில்....
ஒரு உண்மை புலப்பட்டது.
இன்றைய தேதி: 31 மார்ச் 2005
ஒரு மாதம் கூட்டினால்: 1 மே 2005
இம்மாதத்தின் முதல் தேதி: 1 மே 2005
இதிலிருந்து ஒரு நாள் கழித்தால்: 30 ஏப்ரல் 2005
ஆக, மார்ச் மாதத்தின் கடைசி நாள் 30
:-(( :-(( :-((
ஆஹா.... இதான் மேட்டர்.
மார்ச் முப்பத்தொன்றுடன் ஒரு மாதம் கூட்டினால் சாதாரணமாக 31 ஏப்ரல் என்று வரும். ஆனால் புத்திசாலி ஜாவாஸ்க்ரிப்ட், ஏப்ரல் மாதத்தில் 30 தேதி வரைதான் என்று உணர்ந்து, மிச்சமிருக்கும் ஒரு நாளையும் கூட்டி விடுகிறது. எனவே, மே மாதம் ஒன்னாம் தேதி (மேஜர் ஆனேனே!)
இந்த ப்ரச்சனை தீரவேண்டுமென்றால், "இன்றைய தேதி" என்னவாக இருந்தாலும், அதை ஒன்றாம் தேதியாக மாற்ற வேண்டும். அடுத்த மாதம் சென்றவுடன் ஒன்றாம் தேதியாக மாற்றக்கூடாது. இப்படி எழுதினால் எல்லாம் ஓக்கே.
இன்றைய தேதி: 31 மார்ச் 2005
இம்மாதத்தின் முதல் தேதி: 1 மார்ச் 2005 (மொதல்ல கட்ச்கபா)
ஒரு மாதம் கூட்டினால்: 1 ஏப்ரல் 2005 (இப்ப ஊத்திக்கபா)
இதிலிருந்து ஒரு நாள் கழித்தால்: 31 மார்ச் 2005
கோயிஞ்சாமி நிம்மதியாக நோட்பேடை மூடிவைத்தான். இந்த நாள் முழுதையும் இந்த ஜாவாஸ்க்ரிப்ட் காலண்டர் சாப்பிட்டுவிட்ட விபரீதம் இப்பொழுது கோயிஞ்சாமிக்குக் நன்றாகத் தெரிந்தது.
ஆனால் ஊத்திக்னு கடிச்சுக்கலாம், கடிச்சுக்கினும் ஊத்திக்கலாம் என்ற தத்துவம் எப்பொழுதும் எல்லா இடத்திலும் சரிவராது என்பதை கோயிஞ்சாமி உணர்ந்து கொண்டான்.