Magic string
கணினி நிரலாக்கத்தில், ஒரு மாய சரம் என்பது ஒரு புரோகிராமர் ஒருபோதும் வெளிப்புறமாக வராது என்று நம்பும் ஒரு உள்ளீடு மற்றும் இல்லையெனில் மறைக்கப்பட்ட செயல்பாட்டை செயல்படுத்துகிறது. இந்த நிரலின் பயனர் பெரும்பாலான சூழ்நிலைகளில் எதிர்பார்க்கப்படும் பதிலை வழங்கும் உள்ளீட்டை வழங்குவார். இருப்பினும், பயனர் உண்மையில் முன் வரையறுக்கப்பட்ட உள்ளீட்டை அப்பாவித்தனமாக வழங்கினால், உள் செயல்பாட்டைத் தூண்டினால், நிரல் பதில் பெரும்பாலும் பயனருக்கு மிகவும் எதிர்பாராததாக இருக்கும் (இதனால் "மந்திரமாக" தோன்றும்). பின்னணி பொதுவாக, மந்திர சரங்களை செயல்படுத்துவது நேரக் கட்டுப்பாடுகள் காரணமாகும். ஒரு டெவலப்பர் ஒரு சிக்கலை இன்னும் ஆழமாக ஆராய்ந்து ஒரு சிறந்த தீர்வைக் கண்டுபிடிப்பதற்குப் பதிலாக ஒரு விரைவான தீர்வைக் கண்டுபிடிக்க வேண்டும். எடுத்துக்காட்டாக, ஒரு பயனரின் தனிப்பட்ட விவரங்களை எடுத்து அவர்களின் கிரெடிட் கார்டு எண்ணை சரிபார்க்கும் ஒரு நிரலை சோதிக்கும் போது, ஒரு டெவலப்பர் ஒரு மாய சரம் குறுக்குவழியைச் சேர்க்க முடிவு செய்யலாம், இதன் மூலம் கிரெடிட் கார்டு எண்ணாக "* * *" இன் சாத்தியமற்ற உள்ளீட்டை உள்ளிடுவது நிரலைச் சரிபார்க்க நேரத்தை செலவிடாமல், அட்டை செல்லுபடியாகும் என்பது போல் தானாகவே தொடரும். டெவலப்பர் மாய சரத்தை அகற்ற மறந்துவிட்டால், இறுதி நிரலின் பயனர் படிவத்தை நிரப்பும்போது பிளேஸ்ஹோல்டர் கிரெடிட் கார்டு எண்ணாக "* * *" ஐ உள்ளிடுகிறார் என்றால், பயனர் கவனக்குறைவாக மறைக்கப்பட்ட செயல்பாட்டைத் தூண்டும். தீர்வு சூழ்நிலைகள்/காரணத்தின் சிக்கல்கள் பெரும்பாலும் ஒரு திட்டத்தில் அவர்கள் ஈடுபட்ட தொடக்கத்திலிருந்தே டெவலப்பரின் கட்டுப்பாட்டிற்கு வெளியே குறிப்பிடத்தக்க நேரக் கட்டுப்பாடுகள் உள்ளன. இதன் விளைவாக இந்த எதிர்ப்பு வடிவத்திற்கு வழிவகுக்கும் பொதுவான சிக்கல்கள்ஃ பூஜ்யம்! = பூஜ்யம் அல்லது ஒரு தரவு வகை பிட்வைஸை ஒரே மாதிரியான வகையுடன் ஒப்பிடாத எந்த மாறுபாடும். இது அதே மேம்பாட்டு சூழலில் (அதே நிரலாக்க மொழி மற்றும் தொகுப்பாளர்) கூட ஏற்படக்கூடிய ஒரு சிக்கலாகும். இந்த சிக்கல் எண் மற்றும் பூலியன் வகைகளுக்கு ஒரு நீண்ட வரலாற்றைக் கொண்டுள்ளது மற்றும் பெரும்பாலான தொகுப்பாளர்கள் இதை நன்கு கையாளுகிறார்கள் (பொருந்தக்கூடிய எச்சரிக்கைகள் மற்றும் பிழைகள், இயல்புநிலை தீர்மானம் போன்றவை). சரங்கள் போன்ற பூஜ்யமான வகைகள் என். யு. எல். எல்-க்கான வரலாற்று ரீதியாக வேறுபட்ட வரையறைகளின் சிரமத்தைக் கொண்டுள்ளன. உருவாக்கப்பட்ட பிழைகள்/எச்சரிக்கைகள் பெரும்பாலும் பொதுவானவை அல்லது 'சிறந்த பொருத்தம்' இயல்புநிலை பிழையாகும், அதன் செய்தி உண்மையில் என்ன நடக்கிறது என்பதை விவரிக்கவில்லை. பிழைத்திருத்தம் மூலம் சிக்கலைக் கண்காணிக்க டெவலப்பர் போதுமான தடயங்களைப் பெற முடியாவிட்டால், ஒரு குறுக்குவழியை எடுத்து, 'இயல்புநிலை' சரத்தில் குறியிடுவது, திட்டத்தை அட்டவணையில் வைத்திருக்க ஒரே வழியாக இருக்கலாம். இதற்கு ஒரு தீர்வு பூஜ்ய பொருள் வடிவத்தைப் பயன்படுத்துவதாக இருக்கலாம். ஒரு மூலையில் திட்டமிடப்பட்டது. சில நேரங்களில் ஒரு வடிவமைப்பு நேரடியானதாகவும் எளிமையானதாகவும் தோன்றுகிறது, ஆனால் திட்டமிடப்பட்ட வளர்ச்சியின் முடிவில் பெரும்பாலும் எதிர்பாராத சூழ்நிலை காரணமாக, சாத்தியமான பயனர் உள்ளீடுகளைப் பொறுத்து ஒரு தர்க்கரீதியான குறைபாட்டைக் கொண்டுள்ளது. எனவே அத்தகைய சூழ்நிலைகளைச் சமாளிக்க சிறப்பு பாதுகாப்பு/செயல்பாட்டு கொடுப்பனவுகளுடன் பயனர் உள்ளீட்டைச் செயல்படுத்த வேண்டியதன் அவசியத்தை ஒரு டெவலப்பர் உணரலாம். இது குறிப்பாக முரண்பாடாக இருக்கலாம், ஏனெனில் ஆரம்பத்தில் இருந்தே மிகவும் வலுவான வடிவமைப்பு குறைபாட்டைக் கையாள இடமளித்திருக்கும் என்பது சில நேரங்களில் தெளிவாகத் தெரியும். இருப்பினும், இது செயல்படுத்த அதிக நேரம் எடுத்திருக்கலாம், மேலும் இது KISS இன் அடிப்படை பொறியியல் கருத்துடன் முரண்பட்டிருக்கலாம், இது ஒரு வடிவமைப்பு மற்றும் செயல்படுத்தலை எளிமையாக வைத்திருக்கிறது மற்றும் ஆரம்ப தேவையான தேவைகளை மட்டுமே பூர்த்தி செய்கிறது. உலகளாவிய கொடிக்கு வெளிப்புற அணுகலை அனுமதிக்கிறது. ஒரு உலகளாவிய கொடியை ஒருபோதும் தற்செயலாகவோ அல்லது தீங்கிழைக்கவோ அமைக்க முடியாது என்ற அதிகப்படியான நம்பிக்கை (பெரும்பாலும் மிகவும் நியாயமான அனுமானம்) சோதனை மற்றும் பிழைத்திருத்த நோக்கங்களுக்காக, குறிப்பாக எளிய இடைமுகங்களைக் கொண்ட சிறிய பயன்பாடுகளுக்கு, அத்தகைய செயல்பாட்டை நியாயப்படுத்துகிறது. இருப்பினும், திட்டத்தின் விநியோகம் கணிசமாக இருந்தால், யாராவது கொடியை அமைப்பதற்கு முன்பு இது பொதுவாக ஒரு நேரமாகும். ஒரு வெளிப்படையான தீர்வு, ஒரு உலகளாவிய மாறியை ஒருபோதும் அத்தகைய முறையில் பயன்படுத்தக்கூடாது. ஒரு டெவலப்பர் கொடியை சூழ்நிலையில் அணுகக்கூடியதாக மாற்றலாம். எனவே மாய சரம் தானாகவே நிரலால் வேறு எந்த உள்ளீட்டையும் கையாளும். பின்னர் பயனர் அமைப்பை மறுஉருவாக்கம் செய்ய வேண்டும் மற்றும் பிற நிகழ்வுகளின் சில தொகுப்புகளை உருவாக்க வேண்டும், இது பயனர் இடைமுகம் புத்திசாலித்தனமாக அனுமதிக்கிறது, கொடி அமைப்பை ஏற்றுக்கொள்வதற்கு; மிகவும் சாத்தியமற்ற சூழ்நிலை, இன்னும் சாத்தியம் என்றாலும். உள்ளீட்டின் வடிவமைப்பைக் கட்டுப்படுத்துவது ஒரு சாத்தியமான பராமரிப்பு (பிழை சரிசெய்தல்) தீர்வாகும். அடிப்படையில், பயனரால் மாய சரம் கண்டுபிடிக்கப்படுவதற்கான வாய்ப்பைக் குறைப்பதற்காக, அது சரியான வடிவத்தில் உள்ளதா என்பதைச் சரிபார்க்க உள்ளீட்டு தகவலைச் சரிபார்ப்பது இதன் பொருள். எடுத்துக்காட்டுகளில் ஒரு தொலைபேசி எண்ணை சரிபார்த்து, அதில் இலக்கங்கள் மட்டுமே இருப்பதை உறுதிசெய்வது (மற்றும் ஒரு குறிப்பிட்ட அளவிற்கு இடைவெளிகள் மற்றும் நிறுத்தற்குறியீடு) அல்லது ஒரு நபரின் பெயருக்கு முன் பெயர் மற்றும் குடும்பப்பெயர் உள்ளதா என்பதைச் சரிபார்ப்பது (மற்றும் பொருத்தமாக மூலதனமாக உள்ளது) ஆகியவை அடங்கும். சரிபார்ப்பு குறியீட்டில் உள்ள மாய சரத்திற்கு ஒரு விதிவிலக்கு செய்யப்படுகிறது, இதனால் அது சரிபார்ப்பு மூலம் நிராகரிக்கப்படாது. வடிவமைப்பின் கடுமையான அமலாக்கத்தை ஒரு பயனர் விரைவாகக் கவனிக்கக்கூடும் என்பதால், வடிவமைப்பிற்கு இணங்காத சரத்தை உள்ளிட முயற்சிப்பது பயனருக்கு ஏற்படாது என்று எதிர்பார்க்கப்படுகிறது. எனவே, பயனர் மாய சரத்தை முயற்சிப்பது மிகவும் சாத்தியமில்லை. எந்தவொரு உள்ளீட்டு சரிபார்ப்பு செயல்முறையையும் போலவே, சில பயனர்களால் பயன்பாட்டின் பயன்பாட்டை தற்செயலாக கட்டுப்படுத்தும் வகையில் வடிவம் கட்டுப்படுத்தப்படவில்லை என்பதை உறுதிப்படுத்துவது முக்கியம். இதற்கு ஒரு எடுத்துக்காட்டு ஒரு நாட்டின் அமைப்பின் அடிப்படையில் தொலைபேசி எண் அல்லது அஞ்சல் குறியீடு உள்ளீட்டைக் கட்டுப்படுத்துவதாகும் (எ. கா. ஒவ்வொரு பயனரும் ஐந்து இலக்க ஜிப் குறியீட்டைக் கொடுக்க வேண்டும்), இது மற்ற நாடுகளில் வசிக்கும் முறையான பயனர்களுக்கு சிக்கல்களை ஏற்படுத்துகிறது. நோக்கம் கொண்ட அமலாக்கம் பெரும்பாலும் வடிவங்களுக்கு எதிரானது போல, ஒரு செயல்பாட்டிற்கு மாய சரங்கள் சரியான தீர்வாக இருக்கும் குறிப்பிட்ட காட்சிகள் உள்ளன. ஏமாற்றும் குறியீடுகள் மற்றும் ஈஸ்டர் முட்டைகள் எடுத்துக்காட்டுகளில் அடங்கும். மேலும், பயனர்கள் மாய சரங்களைக் கண்டுபிடிக்கும் சந்தர்ப்பங்களும் உள்ளன, அவற்றை ஏற்றுக்கொள்ள குறியிடப்படாத அமைப்புகள் உரிமம் தகடுகள் காணாமல் போவது போன்ற எதிர்பாராத முடிவுகளைத் தரக்கூடும். நிகழ்வுகள் ஒரு மந்திர சரத்தைப் பயன்படுத்துவது சிக்கல்களை ஏற்படுத்திய சில அறியப்பட்ட சம்பவங்களின் பட்டியல் பின்வருமாறு. பல்வேறு சந்தர்ப்பங்களில், வாகனப் பதிவுத் தட்டுகளில் தனிப்பயனாக்கப்பட்ட சரங்களைக் கொண்ட வாகன ஓட்டிகள் தவறான போக்குவரத்து டிக்கெட்டுகளைப் பெற்றுள்ளனர். பாதிக்கப்பட்ட டிக்கெட் அமைப்புகளில், பதிவுத் தகடு இல்லாத ஒரு காருக்கான போக்குவரத்து டிக்கெட்டை போலீஸ் அதிகாரிகள் நிரப்பும்போது, அவர்கள் "நோப்லேட்", "நோடேக்", "மிஸ்ஸிங்" அல்லது அது போன்ற எழுத்துக்களை எழுதுவார்கள். வாகன ஓட்டிகளுக்கு இந்த மதிப்புகளுடன் உண்மையான பதிவுத் தகடுகள் வழங்கப்பட்டபோது இது சிக்கல்களை ஏற்படுத்தியது, இதனால் இந்த தளம் இல்லாத வாகனங்களுக்கான எண்ணற்ற போக்குவரத்து டிக்கெட்டுகளைப் பெறத் தொடங்கியது. 1999 ஆம் ஆண்டில், ஹேக்கர்கள் ஹாட்மெயிலில் ஒரு பாதுகாப்பு குறைபாட்டை வெளிப்படுத்தினர், இது 'ஈஹ்' என்ற கடவுச்சொல்லைப் பயன்படுத்தி எந்தவொரு ஹாட்மெயில் கணக்கிலும் உள்நுழைய அனுமதித்தது. அந்த நேரத்தில் இது "இணைய வரலாற்றில் மிகவும் பரவலான பாதுகாப்பு சம்பவம்" என்று அழைக்கப்பட்டது. விமான டிக்கெட்டுகளை முன்பதிவு செய்யவோ, அரசாங்க வரி வலைத்தளங்களைப் பயன்படுத்தவோ அல்லது பயன்பாட்டு பில்களை செலுத்தவோ முடியாதது போன்ற ஆன்லைன் அமைப்புகளைப் பயன்படுத்துவதில் நல் என்ற கடைசி பெயரைக் கொண்டவர்கள் பல்வேறு சிக்கல்களைப் புகாரளித்துள்ளனர். இந்த அமைப்புகள் அவற்றின் பெயரை பூஜ்ய சுட்டிக்காட்டி என்று குழப்புவதால் இந்த சிக்கல் உருவாகிறது. கணினியைப் பொறுத்து, இது கணினி தங்கள் பெயரைக் காட்டாமலும், பயனரிடம் வேறு பெயரை உள்ளிடவும் (சில நேரங்களில் பெயர் புலம் காலியாக விடப்பட்டதாகக் கூறும் செய்தியுடன்) அல்லது பிழைச் செய்தியைக் காட்டவும் காரணமாக இருக்கலாம். மேஜிக் எண் (நிரலாக்கம்) நேர வடிவமைப்பு மற்றும் சேமிப்பு பிழைகள், மந்திரங்கள் சென்டினல் மதிப்பு (அதாவது கொடி மதிப்பு, பயண மதிப்பு, முரட்டு மதிப்பு, சமிக்ஞை மதிப்பு, போலி தரவு) கேனரி மதிப்பு, இடையக நிரம்பி வழிவதைக் கண்டறிய சிறப்பு மதிப்பு வீடியோ கேம்களின் ஏமாற்று குறியீடுகள் அதே தோற்றம் XYZZY (கட்டளை) குறிப்புகள் எதிர்ப்பு வடிவங்கள்