பன்னிரண்டு வருடங்கள் நீளமான ஒரு சிறிய திட்டத்தின் கதை (முதல் முறையாக BIRMA.NET பற்றி வெளிப்படையாகவும் நேரடியாகவும்)

இந்த திட்டத்தின் பிறப்பு 2007 இன் இறுதியில் எங்காவது எனக்கு வந்த ஒரு சிறிய யோசனையாகக் கருதப்படலாம், இது 12 ஆண்டுகளுக்குப் பிறகுதான் அதன் இறுதி வடிவத்தைக் கண்டுபிடிக்க விதிக்கப்பட்டது (இந்த நேரத்தில் - நிச்சயமாக, தற்போதைய செயல்படுத்தல், படி ஆசிரியருக்கு, மிகவும் திருப்திகரமாக உள்ளது) .

நூலகத்தில் எனது அப்போதைய உத்தியோகபூர்வ கடமைகளை நிறைவேற்றும் செயல்பாட்டில், புத்தகம் (மற்றும் இசை) வெளியீடுகளின் உள்ளடக்க அட்டவணைகளின் ஸ்கேன் செய்யப்பட்ட உரையிலிருந்து தரவை உள்ளிடும் செயல்முறை தற்போதுள்ள தரவுத்தளத்தில் உள்ளது என்பதை நான் கவனித்தேன். கட்டுரையின் ஆசிரியரின் பெயர் (நாம் கட்டுரைகளின் தொகுப்பைப் பற்றி பேசினால்), தலைப்பு போன்ற உள்ளீட்டிற்குத் தேவையான அனைத்து தரவையும் ஒழுங்குபடுத்துதல் மற்றும் மீண்டும் மீண்டும் செய்யக்கூடிய தன்மை ஆகியவற்றைப் பயன்படுத்தி, கணிசமாக எளிமைப்படுத்தப்பட்டு தானியங்குபடுத்தப்படலாம். கட்டுரை (அல்லது உள்ளடக்க அட்டவணையில் பிரதிபலிக்கும் வசனம்) மற்றும் தற்போதைய உள்ளடக்க அட்டவணையின் பக்க எண். முதலில், இந்த பணியைச் செய்வதற்கு ஏற்ற ஒரு அமைப்பை இணையத்தில் எளிதாகக் காணலாம் என்று நான் நடைமுறையில் நம்பினேன். அத்தகைய திட்டத்தை என்னால் கண்டுபிடிக்க முடியவில்லை என்ற உண்மையால் சில ஆச்சரியங்கள் ஏற்பட்டபோது, ​​அதை நானே செயல்படுத்த முயற்சிக்க முடிவு செய்தேன்.

சிறிது நேரத்திற்குப் பிறகு, முதல் முன்மாதிரி வேலை செய்யத் தொடங்கியது, அதை நான் உடனடியாக எனது அன்றாட நடவடிக்கைகளில் பயன்படுத்தத் தொடங்கினேன், அதே நேரத்தில் என் கைக்கு வந்த அனைத்து எடுத்துக்காட்டுகளிலும் பிழைத்திருத்தம் செய்தேன். அதிர்ஷ்டவசமாக, எனது வழக்கமான பணியிடத்தில், நான் எந்த வகையிலும் ஒரு ப்ரோக்ராமர் இல்லை, நான் இன்னும் என் வேலையில் காணக்கூடிய "வேலையில்லா நேரத்தை" விட்டுவிட்டேன், அந்த நேரத்தில் நான் என் மூளையில் தீவிரமாக பிழைத்திருத்தம் செய்து கொண்டிருந்தேன் - இது தற்போதைய யதார்த்தங்களில் கிட்டத்தட்ட நினைத்துப் பார்க்க முடியாத விஷயம். பகலில் செய்யப்படும் வேலை பற்றிய தினசரி அறிக்கைகள். நிரலை மெருகூட்டுவதற்கான செயல்முறை ஒரு வருடத்திற்குக் குறையாமல் மொத்தமாக எடுத்தது, ஆனால் அதன் பிறகும் முடிவை முற்றிலும் வெற்றிகரமானது என்று அழைக்க முடியாது - செயல்படுத்துவதற்கு முற்றிலும் புரிந்துகொள்ள முடியாத பல வேறுபட்ட கருத்துக்கள் ஆரம்பத்தில் அமைக்கப்பட்டன: விருப்பமான கூறுகள் தவிர்க்கப்பட வேண்டும்; உறுப்புகளை முன்னோக்கிப் பார்ப்பது (முந்தைய கூறுகளை தேடல் முடிவுகளில் மாற்றும் நோக்கத்திற்காக); வழக்கமான வெளிப்பாடுகள் (இது ஒரு தனித்துவமான தொடரியல் கொண்டது) போன்றவற்றைச் செயல்படுத்துவதற்கான எங்கள் சொந்த முயற்சியும் கூட. இதற்கு முன்பு நான் நிரலாக்கத்தை ஓரளவு கைவிட்டிருந்தேன் என்று நான் சொல்ல வேண்டும் (சுமார் 8 ஆண்டுகள், இல்லையென்றால்), எனவே எனது திறமைகளை ஒரு சுவாரஸ்யமான மற்றும் அவசியமான பணிக்கு பயன்படுத்துவதற்கான புதிய வாய்ப்பு என் கவனத்தை முழுமையாக ஈர்த்தது. இதன் விளைவாக உருவான மூலக் குறியீடு - அதன் வடிவமைப்பிற்கான தெளிவான அணுகுமுறைகள் இல்லாத நிலையில் - சி++ இன் சில கூறுகள் மற்றும் காட்சி நிரலாக்கத்தின் அம்சங்கள் (ஆரம்பத்தில் அது) சி மொழியில் வேறுபட்ட துண்டுகளின் கற்பனைக்கு எட்டாத குழப்பமாக மாறியதில் ஆச்சரியமில்லை. போர்லாண்ட் சி ++ பில்டர் - "கிட்டத்தட்ட டெல்பி, ஆனால் சி இல்") போன்ற வடிவமைப்பு அமைப்பைப் பயன்படுத்த முடிவு செய்யப்பட்டது. எவ்வாறாயினும், இவை அனைத்தும் இறுதியில் எங்கள் நூலகத்தின் அன்றாட நடவடிக்கைகளை தானியக்கமாக்குவதில் பலனளித்தன.

அதே நேரத்தில், தொழில்முறை மென்பொருள் உருவாக்குநர்களைப் பயிற்றுவிப்பதற்கான படிப்புகளை எடுக்க முடிவு செய்தேன். புதிதாக "புரோகிராமராக இருக்க" கற்றுக்கொள்வது உண்மையில் சாத்தியமா என்று எனக்குத் தெரியவில்லை, ஆனால் அந்த நேரத்தில் என்னிடம் ஏற்கனவே இருந்த திறன்களைக் கருத்தில் கொண்டு, அந்த நேரத்தில் மிகவும் பொருத்தமான தொழில்நுட்பங்களில் ஓரளவு தேர்ச்சி பெற முடிந்தது. C#, NET இன் கீழ் மேம்பாட்டிற்கான விஷுவல் ஸ்டுடியோ, அத்துடன் ஜாவா, HTML மற்றும் SQL தொடர்பான சில தொழில்நுட்பங்கள். முழு பயிற்சியும் மொத்தம் இரண்டு ஆண்டுகள் ஆனது, மேலும் என்னுடைய மற்றொரு திட்டத்திற்கான தொடக்க புள்ளியாக செயல்பட்டது, இது இறுதியில் பல ஆண்டுகளாக நீட்டிக்கப்பட்டது - ஆனால் இது ஒரு தனி வெளியீட்டிற்கான தலைப்பு. விவரிக்கப்பட்ட திட்டத்தில் ஏற்கனவே இருந்த மேம்பாடுகளை மாற்றியமைத்து, தேவையான செயல்பாட்டைச் செயல்படுத்தும் C# மற்றும் WinForms இல் ஒரு முழு அளவிலான சாளர பயன்பாட்டை உருவாக்குவதற்கும், அதை அடிப்படையாகப் பயன்படுத்துவதற்கும் நான் முயற்சித்தேன் என்பதை இங்கே குறிப்பிடுவது பொருத்தமானது. வரவிருக்கும் டிப்ளமோ திட்டம்.
காலப்போக்கில், இந்த யோசனை “LIBKOM” மற்றும் “CRIMEA” போன்ற பல்வேறு நூலகங்களின் பிரதிநிதிகளின் பங்கேற்புடன் இதுபோன்ற வருடாந்திர மாநாடுகளில் குரல் கொடுப்பதற்கு தகுதியானது என்று எனக்குத் தோன்றியது. யோசனை, ஆம், ஆனால் அந்த நேரத்தில் நான் அதை செயல்படுத்தவில்லை. மேலும் திறமையான அணுகுமுறைகளைப் பயன்படுத்தி யாராவது அதை மீண்டும் எழுதுவார்கள் என்று நான் நம்பினேன். ஒரு வழி அல்லது வேறு, 2013 க்குள் எனது ஆரம்ப வேலைகள் குறித்த அறிக்கையை எழுதி மாநாட்டில் பங்கேற்பதற்கான மானியத்திற்கான விண்ணப்பத்துடன் மாநாட்டு ஏற்பாட்டுக் குழுவுக்கு அனுப்ப முடிவு செய்தேன். எனக்கு சற்று ஆச்சரியமாக, எனது விண்ணப்பம் அங்கீகரிக்கப்பட்டது, மேலும் மாநாட்டில் விளக்கக்காட்சிக்குத் தயாரிப்பதற்காக திட்டத்தில் சில மேம்பாடுகளைச் செய்யத் தொடங்கினேன்.

அந்த நேரத்தில், திட்டம் ஏற்கனவே BIRMA என்ற புதிய பெயரைப் பெற்றது, பல்வேறு கூடுதல் (அவ்வளவு முழுமையாக செயல்படுத்தப்படவில்லை, மாறாக கருதப்பட்டது) திறன்களைப் பெற்றது - அனைத்து விவரங்களையும் எனது அறிக்கையில் காணலாம்.

உண்மையைச் சொல்வதென்றால், BIRMA 2013ஐ முழுமையாக அழைப்பது கடினமாக இருந்தது; வெளிப்படையாகச் சொல்வதானால், இது அவசரத்தில் செய்யப்பட்ட மிகவும் ஹேக்கி கிராஃப்ட். குறியீட்டைப் பொறுத்தவரை, IRBIS 64 வடிவமைத்தல் மொழியை நினைவூட்டும் தோற்றத்தில், பாகுபடுத்திக்கு ஒருவித ஒருங்கிணைந்த தொடரியல் உருவாக்க ஒரு உதவியற்ற முயற்சியைத் தவிர, நடைமுறையில் சிறப்பு கண்டுபிடிப்புகள் எதுவும் இல்லை (உண்மையில், ISIS அமைப்பும் - அடைப்புக்குறிக்குள் சுழற்சி கட்டமைப்புகள்; ஏன் அந்த நேரத்தில் அது மிகவும் அழகாக இருப்பதாக நான் நினைத்தேன்). பாகுபடுத்துபவர் நம்பிக்கையின்றி பொருத்தமான வகை அடைப்புக்குறிகளின் வட்டங்களில் தடுமாறினார் (அடைப்புக்குறிகளும் மற்றொரு பாத்திரத்தைச் செய்ததால், அவை பாகுபடுத்தலின் போது அவை தவிர்க்கப்படக்கூடிய விருப்ப கட்டமைப்புகளைக் குறிக்கின்றன). கற்பனை செய்ய கடினமான, நியாயப்படுத்தப்படாத BIRMA தொடரியல் பற்றி இன்னும் விரிவாக அறிந்துகொள்ள விரும்பும் அனைவரையும் அக்கால அறிக்கைக்கு மீண்டும் குறிப்பிடுகிறேன்.

பொதுவாக, எனது சொந்த பாகுபடுத்தியுடன் போராடுவதைத் தவிர, இந்த பதிப்பின் குறியீட்டைப் பற்றி நான் எதுவும் கூறவில்லை - .NET குறியீட்டின் சில பொதுவான அம்சங்களைப் பாதுகாக்கும் அதே வேளையில் ஏற்கனவே உள்ள ஆதாரங்களை C++ ஆக மாற்றுவதைத் தவிர (உண்மையாகச் சொல்வதானால், இது புரிந்துகொள்வது கடினம் , எல்லாவற்றையும் பின்னோக்கி நகர்த்துவதற்கு என்னைத் தூண்டியது - ஒருவேளை எனது மூலக் குறியீடுகளை ரகசியமாக வைத்திருப்பதற்கான சில முட்டாள்தனமான பயம், இது கோகோ கோலாவின் ரகசிய செய்முறைக்கு சமமானது போல).

ஒரு மின்னணு அட்டவணையில் தரவை உள்ளிடுவதற்காக வீட்டில் தயாரிக்கப்பட்ட பணிநிலையத்தின் தற்போதைய இடைமுகத்துடன் விளைந்த DLL நூலகத்தை இணைப்பதில் உள்ள சிரமங்களுக்கு இந்த முட்டாள்தனமான முடிவு காரணமாக இருக்கலாம் (ஆம், நான் மற்றொரு முக்கியமான உண்மையைக் குறிப்பிடவில்லை: இனிமேல், அனைத்தும் BIRMA "இன்ஜின்" குறியீடு எதிர்பார்த்தபடி இருந்தது, அது இடைமுகப் பகுதியிலிருந்து பிரிக்கப்பட்டு பொருத்தமான DLL இல் தொகுக்கப்பட்டுள்ளது). இந்த நோக்கங்களுக்காக ஒரு தனி பணிநிலையத்தை எழுதுவது ஏன் அவசியம், எப்படியிருந்தாலும், அதன் தோற்றத்திலும் பயனருடன் தொடர்பு கொள்ளும் முறையிலும், IRBIS 64 அமைப்பின் அதே பணிநிலைய “கேட்டலாஜிசர்” ஐ வெட்கமின்றி நகலெடுத்தது - இது ஒரு தனி கேள்வி. சுருக்கமாக: இது எனது பட்டமளிப்பு திட்டத்திற்கான எனது அப்போதைய வளர்ச்சிகளுக்கு தேவையான உறுதியை அளித்தது (இல்லையெனில் ஜீரணிக்க முடியாத பாகுபடுத்தி இயந்திரம் மட்டும் எப்படியோ போதாது). கூடுதலாக, C++ மற்றும் C# இரண்டிலும் செயல்படுத்தப்பட்ட எனது சொந்த தொகுதிகளுடன் கேடலாஜர் பணிநிலையத்தின் இடைமுகத்தை செயல்படுத்துவதில் சில சிரமங்களைச் சந்தித்தேன், மேலும் எனது இயந்திரத்தை நேரடியாக அணுகினேன்.

பொதுவாக, விந்தை போதும், வருங்கால BIRMA.NET இன் இந்த விகாரமான முன்மாதிரிதான் அடுத்த நான்கு ஆண்டுகளுக்கு எனது "வேலைக்காரனாக" ஆக இருந்தது. இந்த நேரத்தில், நீண்டகால யோசனையின் புதிய, முழுமையான நடைமுறைக்கான வழிகளைக் கண்டுபிடிக்க நான் குறைந்தபட்சம் முயற்சிக்கவில்லை என்று சொல்ல முடியாது. பிற கண்டுபிடிப்புகளில், விருப்பமான கூறுகளை உள்ளடக்கியிருக்கக்கூடிய உள்ளமைக்கப்பட்ட சுழற்சி வரிசைகள் ஏற்கனவே இருந்திருக்க வேண்டும் - வெளியீடுகள் மற்றும் பல்வேறு சுவாரஸ்யமான விஷயங்களின் நூலியல் விளக்கங்களுக்கான உலகளாவிய வார்ப்புருக்கள் பற்றிய யோசனையை நான் உயிர்ப்பிக்கப் போகிறேன். இருப்பினும், அந்த நேரத்தில் எனது நடைமுறை செயல்பாடுகளில், இவை அனைத்தும் சிறிய தேவையாக இருந்தது, மேலும் உள்ளடக்க அட்டவணையை உள்ளிடுவதற்கு அந்த நேரத்தில் நான் கொண்டிருந்த செயலாக்கம் போதுமானதாக இருந்தது. கூடுதலாக, எங்கள் நூலகத்தின் வளர்ச்சியின் திசையன் அருங்காட்சியக காப்பகங்களின் டிஜிட்டல் மயமாக்கல், அறிக்கையிடல் மற்றும் எனக்கு ஆர்வமில்லாத பிற செயல்பாடுகளை நோக்கி மேலும் மேலும் விலகத் தொடங்கியது, இது இறுதியில் அதை விட்டு வெளியேற என்னை கட்டாயப்படுத்தியது, விரும்புவோருக்கு வழிவகுத்தது. இவை அனைத்திலும் மிகவும் மகிழ்ச்சியாக இருங்கள்.

முரண்பாடாக, இந்த வியத்தகு நிகழ்வுகளுக்குப் பிறகுதான், அந்த நேரத்தில் ஏற்கனவே ஒரு பொதுவான நீண்ட கால கட்டுமானத் திட்டத்தின் அனைத்து சிறப்பியல்பு அம்சங்களையும் கொண்டிருந்த BIRMA திட்டம், அதன் நீண்டகாலமாக எதிர்பார்க்கப்பட்ட புதிய வாழ்க்கையை எடுக்கத் தொடங்கியது! செயலற்ற எண்ணங்களுக்கு எனக்கு அதிக நேரம் கிடைத்தது, இதேபோன்ற ஒன்றைத் தேடி நான் மீண்டும் உலகளாவிய வலையை சீப்ப ஆரம்பித்தேன் (அதிர்ஷ்டவசமாக, இப்போது இதையெல்லாம் எங்கும் அல்ல, GitHub இல் தேடலாம் என்று நான் ஏற்கனவே யூகிக்க முடிந்தது), மேலும் எங்காவது இந்த ஆண்டின் தொடக்கத்தில், நான் இறுதியாக ஒரு சிறிய பெயரில் நன்கு அறியப்பட்ட சேல்ஸ்ஃபோர்ஸ் நிறுவனத்திடமிருந்து தொடர்புடைய தயாரிப்பைக் கண்டேன். கோர்ப். அத்தகைய பாகுபடுத்தும் இயந்திரத்திலிருந்து எனக்குத் தேவையான அனைத்தையும் இது செய்ய முடியும் - அதாவது, தன்னிச்சையான, ஆனால் தெளிவாக கட்டமைக்கப்பட்ட உரையிலிருந்து தனிப்பட்ட துண்டுகளை புத்திசாலித்தனமாக தனிமைப்படுத்துகிறது, அதே நேரத்தில் இறுதி பயனருக்கு மிகவும் பயனர் நட்பு இடைமுகம் உள்ளது, இது போன்ற புரிந்துகொள்ளக்கூடிய சாராம்சங்கள் உட்பட. ஒரு முறை, டெம்ப்ளேட் மற்றும் நிகழ்வு, அதே நேரத்தில் வழக்கமான வெளிப்பாடுகளின் பழக்கமான தொடரியல் ஆகியவற்றைப் பயன்படுத்துகிறது, இது பாகுபடுத்துவதற்காக நியமிக்கப்பட்ட சொற்பொருள் குழுக்களாகப் பிரிப்பதன் காரணமாக ஒப்பிடமுடியாத அளவிற்கு படிக்கக்கூடியதாகிறது.

பொதுவாக, இது ஒன்று என்று நான் முடிவு செய்தேன் கோர்ப் (இந்த பெயரின் அர்த்தம் என்ன என்று எனக்கு ஆச்சரியமாக இருக்கிறது? ஒருவேளை சில வகையான "பொது சார்ந்த வழக்கமான பாகுபடுத்தி"?) - நான் நீண்ட காலமாக தேடிக்கொண்டிருக்கிறேன். உண்மைதான், எனது சொந்தத் தேவைகளுக்காக அதை உடனடியாகச் செயல்படுத்துவதில் சிக்கல் ஏற்பட்டது, இந்த எஞ்சினுக்கு மூல உரையின் கட்டமைப்பு வரிசையை மிகவும் கண்டிப்பாகப் பின்பற்ற வேண்டியிருந்தது. பதிவு கோப்புகள் போன்ற சில அறிக்கைகளுக்கு (அதாவது, திட்டத்தைப் பயன்படுத்துவதற்கான தெளிவான எடுத்துக்காட்டுகளாக அவை டெவலப்பர்களால் வைக்கப்பட்டன), இது மிகவும் பொருத்தமானது, ஆனால் ஸ்கேன் செய்யப்பட்ட உள்ளடக்க அட்டவணைகளின் அதே உரைகளுக்கு, இது சாத்தியமில்லை. எல்லாவற்றிற்கும் மேலாக, உள்ளடக்க அட்டவணையுடன் அதே பக்கம் "உள்ளடக்க அட்டவணை", "உள்ளடக்கங்கள்" மற்றும் பிற பூர்வாங்க விளக்கங்களுடன் தொடங்கலாம். ஒவ்வொரு முறையும் சிரமமாக உள்ளது). கூடுதலாக, ஆசிரியரின் பெயர், தலைப்பு மற்றும் பக்க எண் போன்ற தனிப்பட்ட கூறுகளுக்கு இடையில், பக்கத்தில் ஒரு குறிப்பிட்ட அளவு குப்பைகள் இருக்கலாம் (உதாரணமாக, வரைபடங்கள் மற்றும் சீரற்ற எழுத்துக்கள்), இது முடிந்தால் நன்றாக இருக்கும். துண்டிக்கப்பட்டது. இருப்பினும், கடைசி அம்சம் இன்னும் குறிப்பிடத்தக்கதாக இல்லை, ஆனால் முதல் காரணமாக, ஒரு குறிப்பிட்ட இடத்திலிருந்து உரையில் தேவையான கட்டமைப்புகளைத் தேடத் தொடங்கவில்லை, ஆனால் ஆரம்பத்தில் இருந்தே அதை வெறுமனே செயலாக்கியது, கண்டுபிடிக்கப்படவில்லை. அங்கு குறிப்பிட்ட வடிவங்கள் மற்றும்... என் வேலையை முடித்தேன். வெளிப்படையாக, மீண்டும் மீண்டும் வரும் கட்டமைப்புகளுக்கு இடையில் குறைந்தபட்சம் சிறிது இடைவெளியை அனுமதிக்க சில ட்வீக்கிங் தேவைப்பட்டது, அது என்னை வேலைக்குத் திரும்பச் செய்தது.

மற்றொரு சிக்கல் என்னவென்றால், இந்தத் திட்டம் ஜாவாவில் செயல்படுத்தப்பட்டது, மேலும் தற்போதுள்ள தரவுத்தளங்களில் (இர்பிஸின் “கேட்டலாகர்” போன்றவை) தரவை உள்ளிடுவதற்கான பழக்கமான பயன்பாடுகளுடன் இந்தத் தொழில்நுட்பத்தை இடைமுகப்படுத்துவதற்கான சில வழிகளை எதிர்காலத்தில் செயல்படுத்த திட்டமிட்டிருந்தால், குறைந்தபட்சம் இதை C# மற்றும் .NET இல் செய்யவும். ஜாவாவே ஒரு மோசமான மொழி என்பதல்ல - உள்நாட்டு நிரல்படுத்தக்கூடிய கால்குலேட்டரின் செயல்பாட்டை (ஒரு பாடத்திட்டத்தின் ஒரு பகுதியாக) செயல்படுத்தும் ஒரு சுவாரஸ்யமான சாளர பயன்பாட்டைச் செயல்படுத்த நான் ஒருமுறை அதைப் பயன்படுத்தினேன். மற்றும் தொடரியல் அடிப்படையில் இது அதே சி-ஷார்ப் போலவே உள்ளது. சரி, இது ஒரு பிளஸ் மட்டுமே: ஏற்கனவே உள்ள திட்டத்தை இறுதி செய்வது எனக்கு எளிதாக இருக்கும். எவ்வாறாயினும், சாளரத்தின் (அல்லது மாறாக, டெஸ்க்டாப்) ஜாவா தொழில்நுட்பங்களின் அசாதாரண உலகில் மீண்டும் மூழ்க நான் விரும்பவில்லை - எல்லாவற்றிற்கும் மேலாக, மொழியே அத்தகைய பயன்பாட்டிற்கு "தகுதியாக" இல்லை, மேலும் நான் மீண்டும் மீண்டும் செய்ய விரும்பவில்லை. முந்தைய அனுபவம். வின்ஃபார்ம்ஸுடன் இணைந்து சி# டெல்பிக்கு மிக நெருக்கமாக இருப்பதால், நம்மில் பலர் ஒரு காலத்தில் தொடங்கினோம். அதிர்ஷ்டவசமாக, தேவையான தீர்வு மிக விரைவாக கண்டுபிடிக்கப்பட்டது - திட்டத்தின் வடிவத்தில் IKVM.NET, இது ஏற்கனவே உள்ள ஜாவா நிரல்களை நிர்வகிக்கப்பட்ட .NET குறியீட்டிற்கு மொழிபெயர்ப்பதை எளிதாக்குகிறது. உண்மை, அந்த நேரத்தில் அந்தத் திட்டம் ஏற்கனவே ஆசிரியர்களால் கைவிடப்பட்டது, ஆனால் அதன் சமீபத்திய செயலாக்கம் மூல நூல்களுக்குத் தேவையான நடவடிக்கைகளை வெற்றிகரமாகச் செய்ய எனக்கு அனுமதித்தது. கோர்ப்.

எனவே, தேவையான அனைத்து மாற்றங்களையும் செய்து, விஷுவல் ஸ்டுடியோவில் உருவாக்கப்பட்ட .NET ஃபிரேம்வொர்க்கிற்கான எந்தத் திட்டங்களாலும் எளிதாக "பிக்-அப்" செய்யக்கூடிய, பொருத்தமான வகையின் DLL இல் அனைத்தையும் இணைத்தேன். இதற்கிடையில், திரும்பிய முடிவுகளின் வசதியான விளக்கக்காட்சிக்காக மற்றொரு அடுக்கை உருவாக்கினேன் கோர்ப், அட்டவணைக் காட்சியில் செயலாக்க வசதியாக இருக்கும் தொடர்புடைய தரவு கட்டமைப்புகளின் வடிவத்தில் (வரிசைகள் மற்றும் நெடுவரிசைகள் இரண்டையும் அடிப்படையாக எடுத்துக் கொள்ளுங்கள்; அகராதி விசைகள் மற்றும் எண் குறியீடுகள் இரண்டும்). சரி, முடிவுகளை செயலாக்குவதற்கும் காண்பிப்பதற்கும் தேவையான பயன்பாடுகள் மிக விரைவாக எழுதப்பட்டன.

மேலும், உள்ளடக்க அட்டவணைகளின் ஸ்கேன் செய்யப்பட்ட உரைகளின் தற்போதைய மாதிரிகளை அலசுவதற்கு கற்பிப்பதற்காக புதிய இயந்திரத்திற்கான வார்ப்புருக்களை மாற்றியமைக்கும் செயல்முறை எந்த சிறப்பு சிக்கல்களையும் ஏற்படுத்தவில்லை. உண்மையில், எனது முந்தைய டெம்ப்ளேட்களை நான் பார்க்க வேண்டிய அவசியமில்லை: புதிதாக தேவையான அனைத்து டெம்ப்ளேட்களையும் உருவாக்கினேன். மேலும், கணினியின் முந்தைய பதிப்பில் வேலை செய்ய வடிவமைக்கப்பட்ட வார்ப்புருக்கள் அவற்றின் உதவியுடன் சரியாகப் பாகுபடுத்தக்கூடிய உரைகளுக்கு மிகவும் குறுகிய கட்டமைப்பை அமைத்தால், புதிய இயந்திரம் ஏற்கனவே பல வகையான மார்க்அப்களுக்கு ஏற்ற உலகளாவிய வார்ப்புருக்களை உருவாக்குவதை சாத்தியமாக்கியது. ஒருமுறை. எந்தவொரு தன்னிச்சையான உள்ளடக்க அட்டவணைக்கும் ஒருவித விரிவான டெம்ப்ளேட்டை எழுத முயற்சித்தேன், இருப்பினும், நிச்சயமாக, எல்லா புதிய சாத்தியக்கூறுகளும் எனக்காகத் திறக்கப்பட்டாலும், குறிப்பாக, அதே உள்ளமைக்கப்பட்ட தொடர்ச்சியான தொடர்களை செயல்படுத்துவதற்கான வரையறுக்கப்பட்ட திறன் உட்பட ( உதாரணமாக, குடும்பப்பெயர்கள் மற்றும் முதலெழுத்துக்கள் ஒரு வரிசையில் பல ஆசிரியர்கள்), இது ஒரு கற்பனாவாதமாக மாறியது.

ஒருவேளை எதிர்காலத்தில் மெட்டா-வார்ப்புருக்களின் ஒரு குறிப்பிட்ட கருத்தை செயல்படுத்த முடியும், இது ஒரே நேரத்தில் கிடைக்கக்கூடிய பல வார்ப்புருக்களுடன் இணங்குவதற்கான மூல உரையை சரிபார்க்க முடியும், பின்னர், பெறப்பட்ட முடிவுகளுக்கு ஏற்ப, தேர்ந்தெடுக்கவும் மிகவும் பொருத்தமானது, சில வகையான அறிவார்ந்த வழிமுறையைப் பயன்படுத்துகிறது. ஆனால் இப்போது நான் மற்றொரு கேள்வியைப் பற்றி அதிகம் கவலைப்பட்டேன். ஒரு பாகுபடுத்தி கோர்ப், அதன் அனைத்து பன்முகத்தன்மை மற்றும் நான் செய்த மாற்றங்கள் இருந்தபோதிலும், எனது சுய-எழுதப்பட்ட பாகுபடுத்தி முதல் பதிப்பிலிருந்து செய்ய முடிந்த ஒரு எளிய விஷயத்தை இன்னும் இயல்பாகவே செய்ய இயலாது. அதாவது: சரியான இடத்தில் பயன்படுத்தப்பட்ட டெம்ப்ளேட்டிற்குள் குறிப்பிடப்பட்ட முகமூடியுடன் பொருந்தக்கூடிய அனைத்து துண்டுகளையும் மூல உரையிலிருந்து கண்டுபிடித்து பிரித்தெடுக்கும் திறன் அவருக்கு இருந்தது, அதே நேரத்தில் இந்த துண்டுகளுக்கு இடையில் உள்ள இடைவெளிகளில் கொடுக்கப்பட்ட உரையில் என்ன இருக்கிறது என்பதில் ஆர்வமில்லை. இதுவரை, நான் புதிய எஞ்சினை சற்று மேம்படுத்தியுள்ளேன், தற்போதைய நிலையில் இருந்து அத்தகைய முகமூடிகளின் கொடுக்கப்பட்ட வரிசையின் அனைத்து சாத்தியமான புதிய மறுநிகழ்வுகளையும் தேட அனுமதிக்கிறது, இது முற்றிலும் தன்னிச்சையான எழுத்துக்களின் தொகுப்புகளின் உரையில் இருப்பதற்கான வாய்ப்பை விட்டுவிடுகிறது. பாகுபடுத்தலில் கணக்கிடப்படாதது, கண்டறியப்பட்ட மீண்டும் மீண்டும் வரும் கட்டமைப்புகளுக்கு இடையில் இணைக்கப்பட்டுள்ளது. இருப்பினும், தொடர்புடைய முகமூடியைப் பயன்படுத்தி முந்தைய பகுதியைத் தேடுவதன் முடிவுகளைப் பொருட்படுத்தாமல் அடுத்த முகமூடியை அமைப்பதை இது சாத்தியமாக்கவில்லை: விவரிக்கப்பட்ட உரை கட்டமைப்பின் கண்டிப்பு இன்னும் ஒழுங்கற்ற எழுத்துக்களின் தன்னிச்சையான சேர்க்கைகளுக்கு இடமளிக்கவில்லை.

நான் சந்தித்த உள்ளடக்க அட்டவணைகளின் எடுத்துக்காட்டுகளுக்கு, இந்த சிக்கல் இன்னும் தீவிரமாகத் தெரியவில்லை என்றால், ஒரு வலைத்தளத்தின் உள்ளடக்கங்களைப் பாகுபடுத்தும் அதே பணிக்கு (அதாவது அதே பாகுபடுத்துதல்) புதிய பாகுபடுத்தும் பொறிமுறையைப் பயன்படுத்த முயற்சிக்கும்போது, ​​​​அது வரம்புகள் இங்கே உள்ளன, அவை அவற்றின் அனைத்து வெளிப்படைத்தன்மையுடன் தோன்றின. எல்லாவற்றிற்கும் மேலாக, வலை மார்க்அப்பின் துண்டுகளுக்கு தேவையான முகமூடிகளை அமைப்பது மிகவும் எளிதானது, அவற்றுக்கிடையே நாம் தேடும் தரவு (பிரித்தெடுக்கப்பட வேண்டும்) இருக்க வேண்டும், ஆனால் பாகுபடுத்தி உடனடியாக அடுத்த இடத்திற்குச் செல்ல எப்படி கட்டாயப்படுத்தலாம் ஒரே மாதிரியான துண்டு, சாத்தியமான அனைத்து குறிச்சொற்கள் மற்றும் HTML பண்புக்கூறுகள் இருந்தபோதிலும், அவற்றுக்கிடையேயான இடைவெளிகளில் வைக்க முடியுமா?

கொஞ்சம் யோசித்த பிறகு, ஓரிரு சேவை முறைகளை அறிமுகப்படுத்த முடிவு செய்தேன் (%all_before) и (%all_after), மூல உரையில் உள்ள அனைத்தும் அவற்றைப் பின்தொடரும் எந்தவொரு வடிவத்திற்கும் (முகமூடி) முன் தவிர்க்கப்படுவதை உறுதி செய்யும் வெளிப்படையான நோக்கத்திற்காக சேவை செய்கிறது. மேலும், என்றால் (%all_before) இந்த தன்னிச்சையான சேர்க்கைகள் அனைத்தையும் வெறுமனே புறக்கணித்தது (%all_after), மாறாக, முந்தைய துண்டிலிருந்து நகர்ந்த பிறகு அவற்றை விரும்பிய துண்டில் சேர்க்க அனுமதித்தது. இது மிகவும் எளிமையானதாகத் தெரிகிறது, ஆனால் இந்த கருத்தை செயல்படுத்த, ஏற்கனவே செயல்படுத்தப்பட்ட தர்க்கத்தை உடைக்காதபடி, தேவையான மாற்றங்களைச் செய்ய கோர்ப் மூலங்களை மீண்டும் சீப்பு செய்ய வேண்டியிருந்தது. இறுதியில், நாங்கள் இதைச் செய்ய முடிந்தது (முதலில், மிகவும் தரமற்றதாக இருந்தாலும், எனது பாகுபடுத்தியின் செயலாக்கம் எழுதப்பட்டது, இன்னும் வேகமாக - ஓரிரு வாரங்களில்). இனிமேல், இந்த அமைப்பு உண்மையிலேயே உலகளாவிய வடிவத்தை எடுத்தது - அதைச் செயல்படுத்துவதற்கான முதல் முயற்சிகளுக்கு 12 ஆண்டுகளுக்குப் பிறகு.

நிச்சயமாக, இது எங்கள் கனவுகளின் முடிவு அல்ல. இலவச இலக்கணத்தை செயல்படுத்த, கிடைக்கும் நூலகங்களில் ஏதேனும் ஒன்றைப் பயன்படுத்தி, கோர்ப் டெம்ப்ளேட் பாகுபடுத்தியை C# இல் முழுமையாக மீண்டும் எழுதலாம். குறியீடு கணிசமாக எளிமைப்படுத்தப்பட வேண்டும் என்று நான் நினைக்கிறேன், மேலும் இது ஏற்கனவே இருக்கும் ஜாவா மூலங்களின் வடிவத்தில் பாரம்பரியத்தை அகற்ற அனுமதிக்கும். ஆனால் தற்போதுள்ள வகை எஞ்சினுடன், நான் ஏற்கனவே குறிப்பிட்டுள்ள மெட்டா-வார்ப்புருக்களை செயல்படுத்தும் முயற்சி உட்பட பல்வேறு சுவாரஸ்யமான விஷயங்களைச் செய்வது மிகவும் சாத்தியம், பல்வேறு வலைத்தளங்களிலிருந்து பல்வேறு தரவைப் பாகுபடுத்துவதைக் குறிப்பிடவில்லை (இருப்பினும், நான் நிராகரிக்கவில்லை. தற்போதுள்ள சிறப்பு மென்பொருள் கருவிகள் இதற்கு மிகவும் பொருத்தமானவை - அவற்றைப் பயன்படுத்துவதில் எனக்கு இன்னும் பொருத்தமான அனுபவம் இல்லை).

இந்த கோடையில், சேல்ஸ்ஃபோர்ஸ் தொழில்நுட்பங்களைப் பயன்படுத்தும் ஒரு நிறுவனத்திடமிருந்து (அசல் டெவலப்பர்) மின்னஞ்சல் மூலம் எனக்கு ஏற்கனவே அழைப்பு வந்துள்ளது. கோர்ப்), ரிகாவில் அடுத்த வேலைக்கான நேர்காணலில் தேர்ச்சி. துரதிர்ஷ்டவசமாக, இந்த நேரத்தில் நான் அத்தகைய மறுசீரமைப்புகளுக்கு தயாராக இல்லை.

இந்த பொருள் சில ஆர்வத்தைத் தூண்டினால், இரண்டாவது பகுதியில் சேல்ஸ்ஃபோர்ஸில் பயன்படுத்தப்படும் செயல்படுத்தலின் உதாரணத்தைப் பயன்படுத்தி வார்ப்புருக்களை தொகுத்து பின்னர் பாகுபடுத்துவதற்கான தொழில்நுட்பத்தை இன்னும் விரிவாக விவரிக்க முயற்சிப்பேன். கோர்ப் (எனது சொந்த சேர்த்தல்கள், ஏற்கனவே விவரிக்கப்பட்டுள்ள ஓரிரு செயல்பாட்டு சொற்களைத் தவிர, வார்ப்புரு தொடரியலில் எந்த மாற்றமும் செய்யவில்லை, எனவே அசல் அமைப்பிற்கான அனைத்து ஆவணங்களும் கோர்ப் எனது பதிப்பிற்கும் ஏற்றது).

ஆதாரம்: www.habr.com

கருத்தைச் சேர்