වසර දොළහක් දිග එක් කුඩා ව්‍යාපෘතියක කතාව (පළමු වරට BIRMA.NET ගැන සහ අවංකවම ප්‍රථමයෙන්)

මෙම ව්‍යාපෘතියේ උපත 2007 අවසානයේ කොතැනක හෝ මා වෙත පැමිණි කුඩා අදහසක් ලෙස සැලකිය හැකිය, එය වසර 12 කට පසුව එහි අවසාන ස්වරූපය සොයා ගැනීමට නියමිතව තිබුණි (මේ මොහොතේ - ඇත්ත වශයෙන්ම, වර්තමාන ක්‍රියාත්මක වුවද, කතුවරයාට, ඉතා සතුටුදායකයි) .

ඒ සියල්ල ආරම්භ වූයේ, පුස්තකාලයේ මගේ එවකට නිල රාජකාරි ඉටු කිරීමේ ක්‍රියාවලියේදී, පොත් (සහ සංගීතය) ප්‍රකාශනවල අන්තර්ගත වගුවල ස්කෑන් කරන ලද පෙළෙන් දත්ත පවතින දත්ත ගබඩාවට ඇතුළත් කිරීමේ ක්‍රියාවලිය පිළිබඳව මම අවධානය යොමු කළෙමි. පෙනෙන විදිහට, ලිපියේ කතුවරයාගේ නම (අපි ලිපි එකතුවක් ගැන කතා කරන්නේ නම්), මාතෘකාව වැනි ආදානය සඳහා අවශ්‍ය සියලුම දත්තවල ක්‍රමවත්භාවය සහ පුනරාවර්තනය වීමේ ගුණාංගයෙන් ප්‍රයෝජන ගනිමින් සැලකිය යුතු ලෙස සරල කර ස්වයංක්‍රීය කළ හැකිය. ලිපිය (හෝ පටුනෙහි පිළිබිඹු වන උපසිරැසි) සහ වත්මන් පටුන අයිතමයේ පිටු අංකය. මුලදී, මෙම කාර්යය ඉටු කිරීම සඳහා සුදුසු පද්ධතියක් අන්තර්ජාලයෙන් පහසුවෙන් සොයාගත හැකි බව මම ප්රායෝගිකව ඒත්තු ගැන්වුවෙමි. එවැනි ව්යාපෘතියක් සොයා ගැනීමට නොහැකි වීම නිසා යම් පුදුමයක් ඇති වූ විට, මම එය තනිවම ක්රියාත්මක කිරීමට උත්සාහ කිරීමට තීරණය කළා.

තරමක් කෙටි කාලයකට පසු, පළමු මූලාකෘතිය ක්‍රියා කිරීමට පටන් ගත් අතර, එය මම වහාම මගේ දෛනික ක්‍රියාකාරකම් වලදී භාවිතා කිරීමට පටන් ගත් අතර, එකවරම මගේ අතට පැමිණි සියලුම උදාහරණ මත එය නිදොස් කර ඇත. වාසනාවකට මෙන්, මම කිසිසේත් ක්‍රමලේඛකයෙකු නොවූ මගේ සුපුරුදු සේවා ස්ථානයේ, මම තවමත් මගේ වැඩවල දෘශ්‍යමාන “අක්‍රීය” වලින් මිදුනෙමි, එම කාලය තුළ මම මගේ මොළය දැඩි ලෙස දෝෂහරණය කරමින් සිටියෙමි - වර්තමාන යථාර්ථයන් තුළ සිතාගත නොහැකි දෙයක්, එයින් ගම්‍ය වේ. දිවා කාලයේ කරන ලද වැඩ පිළිබඳ දෛනික වාර්තා. වැඩසටහන ඔප දැමීමේ ක්‍රියාවලියට වසරකට නොඅඩු කාලයක් ගත විය, නමුත් ඉන් පසුව පවා ප්‍රති result ලය සම්පූර්ණයෙන්ම සාර්ථක යැයි හැඳින්විය නොහැක - ක්‍රියාත්මක කිරීම සඳහා සම්පූර්ණයෙන්ම පැහැදිලි නොවූ විවිධ සංකල්ප මුලදී සකස් කරන ලදී: විකල්ප අංග මග හැරිය යුතුය; මූලද්‍රව්‍ය ඉදිරියට බැලීම (පෙර මූලද්‍රව්‍ය සෙවුම් ප්‍රතිඵලවලට ආදේශ කිරීමේ අරමුණින්); සාමාන්‍ය ප්‍රකාශන (අද්විතීය වාක්‍ය ඛණ්ඩයක් ඇති) වැනි දෙයක් ක්‍රියාත්මක කිරීමට අපගේම උත්සාහය පවා. මෙයට පෙර මම ක්‍රමලේඛනය යම් තරමකට (අවුරුදු 8 ක් පමණ, නොඑසේ නම්) අත්හැර දමා තිබූ බව මම පැවසිය යුතුය, එබැවින් සිත්ගන්නාසුළු හා අවශ්‍ය කාර්යයකට මගේ කුසලතා යෙදවීමේ නව අවස්ථාව මගේ අවධානය මුළුමනින්ම අල්ලා ගත්තේය. එහි ප්‍රතිඵලයක් ලෙස ලැබෙන මූලාශ්‍ර කේතය - මගේ පැත්තෙන් එහි සැලසුමට පැහැදිලි ප්‍රවේශයන් නොමැති විට - C++ හි සමහර අංග සහ දෘශ්‍ය ක්‍රමලේඛනයේ (මුලදී එය) C භාෂාවේ වෙනස් කොටස්වල සිතාගත නොහැකි මිෂ්මාෂ් බවට පත්වීම පුදුමයක් නොවේ. Borland C ++ Builder වැනි එවැනි සැලසුම් පද්ධතියක් භාවිතා කිරීමට තීරණය කරන ලදී - "පාහේ ඩෙල්ෆි, නමුත් C හි"). කෙසේ වෙතත්, මේ සියල්ල අවසානයේ ඵල දැරුවේ අපගේ පුස්තකාලයේ දෛනික කටයුතු ස්වයංක්‍රීය කිරීමෙනි.

ඒ අතරම, වෘත්තීය මෘදුකාංග සංවර්ධකයින් පුහුණු කිරීම සඳහා පාඨමාලා හැදෑරීමට මම තීරණය කළෙමි. එහිදී මුල සිටම “ක්‍රමලේඛකයෙකු වීමට” ඉගෙන ගත හැකිද යන්න මම නොදනිමි, නමුත් ඒ වන විටත් මා සතුව තිබූ කුසලතා සැලකිල්ලට ගනිමින්, ඒ වන විට වඩාත් අදාළ වූ තාක්‍ෂණයන් තරමක් ප්‍රගුණ කිරීමට මට හැකි විය. C# ලෙස, .NET යටතේ සංවර්ධනය සඳහා Visual Studio, මෙන්ම Java, HTML සහ SQL සම්බන්ධ සමහර තාක්ෂණයන්. සම්පූර්ණ පුහුණුව වසර දෙකක් ගත වූ අතර, මගේ තවත් ව්‍යාපෘතියක ආරම්භක ලක්ෂ්‍යයක් ලෙස සේවය කළ අතර එය අවසානයේ වසර කිහිපයක් පුරා විහිදී ගියේය - නමුත් මෙය වෙනම ප්‍රකාශනයක් සඳහා මාතෘකාවකි. අවශ්‍ය ක්‍රියාකාරිත්වය ක්‍රියාත්මක කරන C# සහ WinForms හි සම්පූර්ණ කවුළු යෙදුමක් නිර්මාණය කිරීමට සහ එය සඳහා පදනම ලෙස භාවිතා කිරීමට විස්තර කරන ලද ව්‍යාපෘතියේ මා දැනටමත් ඇති වර්ධනයන් අනුවර්තනය කිරීමට උත්සාහ කළ බව මෙහිදී සටහන් කිරීම සුදුසුය. ඉදිරියට එන ඩිප්ලෝමා ව්‍යාපෘතිය.
කාලයාගේ ඇවෑමෙන්, මෙම අදහස “LIBKOM” සහ “CRIMEA” වැනි විවිධ පුස්තකාලවල නියෝජිතයින්ගේ සහභාගීත්වයෙන් එවැනි වාර්ෂික සම්මන්ත්‍රණවලදී හඬ නැගීමට සුදුසු යැයි මට පෙනෙන්නට පටන් ගත්තේය. අදහස, ඔව්, නමුත් ඒ අවස්ථාවේ මගේ එය ක්‍රියාත්මක කිරීම නොවේ. එවිට මම ද බලාපොරොත්තු වූයේ වඩා දක්ෂ ප්‍රවේශයන් භාවිතා කර යමෙකු එය නැවත ලියයි කියා ය. එක් ආකාරයකින් හෝ වෙනත් ආකාරයකින්, 2013 වන විට මගේ මූලික කටයුතු පිළිබඳ වාර්තාවක් ලිවීමට සහ සමුළුවට සහභාගී වීමට ප්‍රදානයක් සඳහා අයදුම්පතක් සමඟ එය සම්මන්ත්‍රණ සංවිධායක කමිටුවට යැවීමට මම තීරණය කළෙමි. මා තරමක් පුදුමයට පත් කරමින්, මගේ අයදුම්පත අනුමත කරන ලද අතර, සම්මන්ත්‍රණයේ ඉදිරිපත් කිරීම සඳහා එය සකස් කිරීම සඳහා ව්‍යාපෘතියේ යම් වැඩිදියුණු කිරීම් කිරීමට මම පටන් ගතිමි.

ඒ වන විට, ව්‍යාපෘතියට දැනටමත් BIRMA යන නව නමක් ලැබී තිබුණි, විවිධ අමතර (එතරම් සම්පූර්ණයෙන් ක්‍රියාත්මක නොවූ නමුත් උපකල්පනය කරන ලද) හැකියාවන් ලබාගෙන ඇත - සියලුම විස්තර මගේ වාර්තාවෙන් සොයාගත හැකිය.

ඇත්තම කිව්වොත්, BIRMA 2013 සම්පූර්ණ දෙයක් ඇමතීමට අපහසු විය; අවංකවම කිවහොත්, එය කඩිමුඩියේ සාදන ලද ඉතා අනවසර යාත්‍රාවකි. කේතය සම්බන්ධයෙන් ගත් කල, IRBIS 64 හැඩතල ගැන්වීමේ භාෂාව (සහ ඇත්ත වශයෙන්ම, ISIS පද්ධතිය ද -) විග්‍රහ කරන්නා සඳහා යම් ආකාරයක ඒකාබද්ධ වාක්‍ය ඛණ්ඩයක් නිර්මාණය කිරීමට තරමක් අසරණ උත්සාහයක් හැර ප්‍රායෝගිකව විශේෂ නවෝත්පාදන කිසිවක් නොතිබුණි. චක්‍රීය ව්‍යුහයන් ලෙස වරහන් සහිතව; ඇයි ඒ වෙලාවේ මම හිතුවේ ඒක හරිම ලස්සනයි කියලා). විග්‍රහ කරන්නා බලාපොරොත්තු රහිතව මෙම සුදුසු ආකාරයේ වරහන් කව මත පැකිලී ගියේය (වරහන් තවත් කාර්යභාරයක් ඉටු කළ බැවින්, එනම්, විග්‍රහ කිරීමේදී මඟ හැරිය හැකි විකල්ප ව්‍යුහයන් සලකුණු කළහ). BIRMA හි එවකට සිතා ගැනීමට අපහසු, අසාධාරණ වාක්‍ය ඛණ්ඩය පිළිබඳව වඩාත් විස්තරාත්මකව දැන හඳුනා ගැනීමට කැමති සියල්ලන්ම මම නැවත වරක් මගේ වාර්තාවට යොමු කරමි.

සාමාන්‍යයෙන්, මගේම විග්‍රහකය සමඟ අරගල කිරීම හැර, මෙම අනුවාදයේ කේතය සම්බන්ධයෙන් මට තවත් කීමට කිසිවක් නැත - .NET කේතයේ සාමාන්‍ය විශේෂාංග කිහිපයක් සංරක්ෂණය කරමින් පවතින මූලාශ්‍ර C++ බවට ප්‍රතිලෝම පරිවර්තනය කිරීම හැර (අවංකව කිවහොත්, එයයි. තේරුම් ගැනීමට අපහසු , හරියටම සියල්ල ආපසු ගෙන යාමට මා පෙලඹවූයේ කුමක්ද - සමහර විට මගේ මූල කේත රහසිගතව තබා ගැනීමට ඇති සමහර මෝඩ බිය, එය කොකා-කෝලා හි රහස් වට්ටෝරුවට සමාන දෙයක් ලෙස).

ඉලෙක්ට්‍රොනික නාමාවලියකට දත්ත ඇතුළත් කිරීම සඳහා ගෙදර හැදූ වැඩපොළක පවතින අතුරු මුහුණත සමඟ ප්‍රතිඵලයක් ලෙස ලැබෙන ඩීඑල්එල් පුස්තකාලය යුගල කිරීමේ දුෂ්කරතාවයන්ට හේතුව ද මෙම මෝඩ තීරණය විය හැකිය (ඔව්, මම තවත් වැදගත් කරුණක් සඳහන් කළේ නැත: මෙතැන් සිට, සියල්ල BIRMA "එන්ජිම" හි කේතය අපේක්ෂා කළ පරිදි, එය අතුරු මුහුණත කොටසෙන් වෙන් කර සුදුසු DLL හි ඇසුරුම් කර ඇත). කෙසේ වෙතත්, මෙම අරමුණු සඳහා වෙනම වැඩපොළක් ලිවීමට අවශ්‍ය වූයේ ඇයි, කෙසේ වෙතත්, එහි පෙනුම සහ පරිශීලකයා සමඟ අන්තර්ක්‍රියා කිරීමේ ක්‍රමය තුළ, IRBIS 64 පද්ධතියේ එකම වැඩපොළ “Catalogizer” නිර්ලජ්ජිත ලෙස පිටපත් කර ඇත - මෙය වෙනම ප්‍රශ්නයකි. කෙටියෙන් කිවහොත්: එය මගේ උපාධි ව්‍යාපෘතිය සඳහා අවශ්‍ය ශක්තිමත්භාවය ලබා දුන්නේය (එසේ නොමැති නම් දිරවිය නොහැකි විග්‍රහ කිරීමේ එන්ජිම පමණක් කෙසේ හෝ ප්‍රමාණවත් නොවීය). ඊට අමතරව, C++ සහ C# යන දෙකෙහිම ක්‍රියාත්මක කර ඇති මගේම මොඩියුල සමඟ Cataloger වැඩපොළේ අතුරු මුහුණත ක්‍රියාත්මක කිරීමේදී සහ මගේ එන්ජිමට සෘජුවම ප්‍රවේශ වීමේදී මට යම් දුෂ්කරතා ඇති විය.

පොදුවේ ගත් කල, පුදුමයට කරුණක් නම්, ඉදිරි වසර හතර සඳහා මගේ “වැඩ අශ්වයා” බවට පත්වීමට නියමිතව තිබුණේ අනාගත BIRMA.NET හි තරමක් අවුල් සහගත මූලාකෘතියයි. මේ කාලය තුළ මම අවම වශයෙන් දිගුකාලීන අදහසක් නව, වඩාත් සම්පූර්ණ ලෙස ක්‍රියාත්මක කිරීම සඳහා මාර්ග සෙවීමට උත්සාහ නොකළ බව පැවසිය නොහැක. වෙනත් නවෝත්පාදනයන් අතර, විකල්ප මූලද්‍රව්‍ය ඇතුළත් කළ හැකි කැදැලි චක්‍රීය අනුපිළිවෙලවල් දැනටමත් තිබිය යුතුව තිබුණි - ප්‍රකාශනවල ග්‍රන්ථ නාමාවලිය සහ වෙනත් විවිධ රසවත් දේවල් සඳහා විශ්වීය සැකිලි පිළිබඳ අදහස මම ජීවයට ගෙන ඒමට යන්නේ එලෙස ය. කෙසේ වෙතත්, එකල මගේ ප්‍රායෝගික ක්‍රියාකාරකම් වලදී, මේ සියල්ලට අඩු ඉල්ලුමක් තිබූ අතර, ඒ වන විට මා සතුව තිබූ ක්‍රියාත්මක කිරීම පටුන ඇතුළත් කිරීමට ප්‍රමාණවත් විය. ඊට අමතරව, අපගේ පුස්තකාලයේ සංවර්ධනයේ දෛශිකය කෞතුකාගාර ලේඛනාගාර ඩිජිටල්කරණය, වාර්තාකරණය සහ මට එතරම් උනන්දුවක් නොදක්වන වෙනත් ක්‍රියාකාරකම් දෙසට වඩ වඩාත් අපගමනය වීමට පටන් ගත් අතර, අවසානයේ මට එයින් ඉවත් වීමට බල කෙරුණු අතර, එය කැමති අයට මග හැරියේය. මේ සියල්ල ගැන වඩාත් සතුටු වන්න.

පරස්පර විරෝධි ලෙස, සාමාන්‍ය දිගු කාලීන ඉදිකිරීම් ව්‍යාපෘතියක සියලුම ලක්‍ෂණ ඒ වන විටත් තිබූ BIRMA ව්‍යාපෘතිය දිගු කලක් බලා සිටි නව ජීවයක් ලබා ගැනීමට පටන් ගත්තේ මෙම නාටකාකාර සිදුවීම් වලින් පසුවය! නිෂ්ක්‍රීය සිතුවිලි සඳහා මට වඩා නිදහස් කාලයක් තිබුණි, මම නැවතත් ඒ හා සමාන දෙයක් සෙවීම සඳහා ලෝක ව්‍යාප්ත වෙබ් පීරන්නට පටන් ගතිමි (වාසනාවකට මෙන්, දැන් මට මේ සියල්ල කොතැනක හෝ පමණක් නොව GitHub මත සෙවීමට දැනටමත් අනුමාන කළ හැකිය), සහ කොහේ හරි මෙම වසරේ ආරම්භයේ දී, මම අවසානයේ නොසැලකිය යුතු නම යටතේ සුප්රසිද්ධ විකුණුම් බලකායේ අනුරූප නිෂ්පාදනයක් හමු විය ගොර්ප්. එය විසින්ම, එවැනි විග්‍රහ කිරීමේ එන්ජිමකින් මට අවශ්‍ය සෑම දෙයක්ම පාහේ කළ හැකිය - එනම්, අත්තනෝමතික, නමුත් පැහැදිලිව ව්‍යුහගත පෙළ වලින් තනි කොටස් බුද්ධිමත්ව හුදකලා කිරීම, අවසාන පරිශීලකයා සඳහා තරමක් පරිශීලක-හිතකාමී අතුරු මුහුණතක් ඇති අතර, එවැනි තේරුම්ගත හැකි සාරය ඇතුළුව. රටාවක්, සැකිල්ලක් සහ සිදුවීමක් සහ ඒ සමඟම නිත්‍ය ප්‍රකාශනවල හුරුපුරුදු වාක්‍ය ඛණ්ඩය භාවිතා කරයි, එය විග්‍රහ කිරීම සඳහා නම් කරන ලද අර්ථකථන කණ්ඩායම්වලට බෙදීම හේතුවෙන් අසමසම ලෙස වඩාත් කියවිය හැකිය.

පොදුවේ ගත් කල, මම තීරණය කළේ මෙයයි ගොර්ප් (මෙම නමේ තේරුම කුමක්දැයි මම කල්පනා කරමි? සමහර විට යම් ආකාරයක "සාමාන්ය දිශානත නිත්ය විග්රහයක්"?) - මම දිගු කලක් තිස්සේ සොයන දේ හරියටම. ඇත්ත වශයෙන්ම, මගේ අවශ්‍යතා සඳහා එය ක්ෂණිකව ක්‍රියාත්මක කිරීමේදී මෙම එන්ජිමට මූලාශ්‍ර පෙළෙහි ව්‍යුහාත්මක අනුපිළිවෙලට දැඩි ලෙස අනුගත වීම අවශ්‍ය වූ ගැටලුවක් විය. ලොග් ලිපිගොනු වැනි සමහර වාර්තා සඳහා (එනම්, ඒවා සංවර්ධකයින් විසින් ව්‍යාපෘතිය භාවිතා කිරීම සඳහා පැහැදිලි උදාහරණ ලෙස තබා ඇත), මෙය බෙහෙවින් සුදුසු ය, නමුත් පරිලෝකනය කළ පටුන එකම පෙළ සඳහා, එය කළ නොහැක්කකි. සියල්ලට පසු, පටුනක් සහිත එම පිටුවම "පටුන", "අන්තර්ගතය" යන වචන වලින් ආරම්භ කළ හැකි අතර, අපේක්ෂිත විශ්ලේෂණයේ ප්‍රතිඵලවල (සහ ඒවා අතින් කපා ඉවත් කිරීමට අපට අවශ්‍ය නොවන වෙනත් මූලික විස්තර) සෑම අවස්ථාවකදීම අපහසු වේ). ඊට අමතරව, කර්තෘගේ නම, මාතෘකාව සහ පිටු අංකය වැනි පුනරාවර්තන මූලද්‍රව්‍ය අතර, පිටුවේ යම් කසළ ප්‍රමාණයක් අඩංගු විය හැකිය (උදාහරණයක් ලෙස, චිත්‍ර සහ අහඹු අක්ෂර), එය කිරීමට හැකිවීම සතුටක් වනු ඇත. විසන්ධි කරනවා. කෙසේ වෙතත්, අවසාන අංගය තවමත් එතරම් වැදගත් නොවීය, නමුත් පළමුවැන්න නිසා, පවතින ක්‍රියාත්මක කිරීම යම් ස්ථානයක සිට පෙළෙහි අවශ්‍ය ව්‍යුහයන් සෙවීම ආරම්භ කළ නොහැකි විය, නමුත් ඒ වෙනුවට එය මුල සිටම සරලව සකසන ලදී, සොයා ගත්තේ නැත. එහි සඳහන් රටා සහ... මගේ කාර්යය අවසන් කළා. පැහැදිලිවම, පුනරාවර්තන ව්‍යුහයන් අතර අවම වශයෙන් යම් ඉඩක් ලබා දීම සඳහා යම් වෙනස් කිරීමක් අවශ්‍ය වූ අතර, එය මා නැවත වැඩට ගෙන ගියේය.

තවත් ගැටළුවක් වූයේ ව්‍යාපෘතියම ජාවා හි ක්‍රියාත්මක කර ඇති අතර, පවතින දත්ත සමුදායන් (ඉර්බිස්ගේ “කැටලොගර්” වැනි) වෙත දත්ත ඇතුළත් කිරීම සඳහා හුරුපුරුදු යෙදුම් සමඟ මෙම තාක්‍ෂණය අතුරුමුහුණත් කිරීමේ ක්‍රම කිහිපයක් ක්‍රියාත්මක කිරීමට මම අනාගතයේදී සැලසුම් කළේ නම්, අවම වශයෙන්. මෙය C# සහ .NET වලින් කරන්න. ජාවාම නරක භාෂාවක් බව නොවේ - ගෘහස්ථ වැඩසටහන්ගත කළ හැකි කැල්කියුලේටරයක (පාඨමාලා ව්‍යාපෘතියක කොටසක් ලෙස) ක්‍රියාකාරීත්වය ක්‍රියාත්මක කළ සිත්ගන්නා කවුළු යෙදුමක් ක්‍රියාත්මක කිරීමට මම වරක් එය භාවිතා කළෙමි. තවද වාක්‍ය ඛණ්ඩය අනුව එය එකම C-sharp වලට බෙහෙවින් සමාන ය. හොඳයි, මෙය ප්ලස් එකක් පමණි: පවතින ව්‍යාපෘතියක් අවසන් කිරීම මට පහසු වනු ඇත. කෙසේ වෙතත්, මට මෙම තරමක් අසාමාන්‍ය කවුළු (හෝ ඒ වෙනුවට, ඩෙස්ක්ටොප්) ජාවා තාක්‍ෂණයන් වෙත නැවත ඇද වැටීමට අවශ්‍ය නොවීය - සියල්ලට පසු, භාෂාවම එවැනි භාවිතය සඳහා “අනුරූප” නොවූ අතර, මම කිසිසේත්ම පුනරාවර්තනය වීමට ආශා නොකළෙමි. පෙර අත්දැකීම. සමහර විට එය හරියටම විය හැක්කේ WinForms සමඟ එක්ව C# අප බොහෝ දෙනෙක් වරක් ආරම්භ කළ Delphi වලට වඩා සමීප බැවිනි. වාසනාවකට මෙන්, අවශ්ය විසඳුම ඉතා ඉක්මනින් සොයා ගන්නා ලදී - ව්යාපෘතියේ ස්වරූපයෙන් IKVM.NET, දැනට පවතින ජාවා වැඩසටහන් කළමනාකරණය කළ .NET කේතයට පරිවර්තනය කිරීම පහසු කරයි. ඇත්ත, ඒ වන විටත් කතුවරුන් විසින් ව්‍යාපෘතියම අත්හැර දමා තිබුණි, නමුත් එහි නවතම ක්‍රියාත්මක කිරීම මඟින් මූලාශ්‍ර පාඨ සඳහා අවශ්‍ය ක්‍රියාමාර්ග ඉතා සාර්ථකව සිදු කිරීමට මට හැකි විය. ගොර්ප්.

එබැවින් මම අවශ්‍ය සියලුම වෙනස්කම් සිදු කර, විෂුවල් ස්ටූඩියෝවේ නිර්මාණය කරන ලද .NET Framework සඳහා ඕනෑම ව්‍යාපෘතියකට පහසුවෙන් “පික්අප්” කළ හැකි සුදුසු ආකාරයේ DLL එකකට ඒ සියල්ල එකලස් කළෙමි. මේ අතරතුර, ආපසු ලැබුණු ප්‍රතිඵල පහසු ඉදිරිපත් කිරීම සඳහා මම තවත් ස්ථරයක් නිර්මාණය කළෙමි ගොර්ප්, වගු දර්ශනයක සැකසීමට පහසු වන අනුරූප දත්ත ව්‍යුහයන් ආකාරයෙන් (පේළි සහ තීරු දෙකම පදනම ලෙස ගනිමින්; ශබ්ද කෝෂ යතුරු සහ සංඛ්‍යාත්මක දර්ශක දෙකම). හොඳයි, ප්රතිඵල සැකසීම සහ ප්රදර්ශනය කිරීම සඳහා අවශ්ය උපයෝගිතා ඉතා ඉක්මනින් ලියා ඇත.

එසේම, ස්කෑන් කරන ලද පටුන පෙළෙහි පවතින සාම්පල විග්‍රහ කිරීමට ඉගැන්වීම සඳහා නව එන්ජිම සඳහා සැකිලි අනුවර්තනය කිරීමේ ක්‍රියාවලිය විශේෂ සංකූලතා ඇති කළේ නැත. ඇත්ත වශයෙන්ම, මට මගේ පෙර සැකිලි වෙත යොමු වීමට පවා අවශ්‍ය නොවීය: මම මුල සිටම අවශ්‍ය සියලුම සැකිලි නිර්මාණය කළෙමි. එපමණක් නොව, පද්ධතියේ පෙර අනුවාදය සමඟ වැඩ කිරීමට නිර්මාණය කර ඇති සැකිලි, ඒවායේ ආධාරයෙන් නිවැරදිව විග්‍රහ කළ හැකි පෙළ සඳහා තරමක් පටු රාමුවක් සකසා ඇත්නම්, නව එන්ජිම දැනටමත් සලකුණු වර්ග කිහිපයක් සඳහා සුදුසු විශ්වීය සැකිලි සංවර්ධනය කිරීමට හැකි වී තිබේ. වරක්. මම ඕනෑම අත්තනෝමතික පටුන පෙළක් සඳහා යම් ආකාරයක විස්තීරණ අච්චුවක් ලිවීමට පවා උත්සාහ කළෙමි, කෙසේ වෙතත්, ඇත්ත වශයෙන්ම, සියලු නව හැකියාවන් මට විවෘත වුවද, විශේෂයෙන්, එකම කැදැලි පුනරාවර්තන අනුපිළිවෙල ක්‍රියාත්මක කිරීමේ සීමිත හැකියාව ද ඇතුළුව ( උදාහරණයක් ලෙස, වාසගම සහ මුල් අකුරු පේළියක කතුවරුන් කිහිප දෙනෙකු), මෙය මනෝරාජිකයක් බවට පත් විය.

සමහර විට අනාගතයේදී මෙටා-සැකිලි පිළිබඳ නිශ්චිත සංකල්පයක් ක්‍රියාත්මක කිරීමට හැකි වනු ඇත, එමඟින් පවතින සැකිලි කිහිපයකට අනුකූල වීම සඳහා මූලාශ්‍ර පෙළ එකවර පරීක්ෂා කිරීමට හැකි වනු ඇත, පසුව, ලබාගත් ප්‍රති results ල අනුව, තෝරන්න වඩාත් සුදුසු එකක්, යම් ආකාරයක බුද්ධිමත් ඇල්ගොරිතමයක් භාවිතා කරයි. නමුත් දැන් මම තවත් ප්රශ්නයක් ගැන වඩාත් සැලකිලිමත් විය. විග්‍රහ කරන්නෙක් වගේ ගොර්ප්, එහි සියලු බහුකාර්යතාව සහ මා විසින් සිදු කරන ලද වෙනස් කිරීම් තිබියදීත්, මගේ ස්වයං-ලිඛිත විග්‍රහ කරන්නාට පළමු අනුවාදයේ සිටම කළ හැකි එක් සරල දෙයක් කිරීමට එය තවමත් සහජයෙන්ම නොහැකි විය. එනම්: මෙම කොටස් අතර ඇති අවකාශයන්හි දී ඇති පෙළෙහි අඩංගු දේ ගැන කිසිසේත් උනන්දු නොවූ අතරම, නිවැරදි ස්ථානයේ භාවිතා කරන ලද අච්චුව තුළ සඳහන් කර ඇති වෙස් මුහුණට ගැලපෙන සියලුම කොටස් මූලාශ්‍ර පෙළෙන් සොයා ගැනීමට සහ උපුටා ගැනීමට ඔහුට හැකියාව තිබුණි. මේ වන විට, මම නව එන්ජිම තරමක් වැඩි දියුණු කර ඇති අතර, වර්තමාන ස්ථානයේ සිට එවැනි වෙස් මුහුණු වල දී ඇති අනුපිළිවෙලක හැකි සියලුම නව පුනරාවර්තන සෙවීමට එයට ඉඩ සලසයි, සම්පූර්ණයෙන්ම අත්තනෝමතික අක්ෂර කට්ටල පෙළෙහි පැවතීමේ හැකියාව ඉතිරි කරයි. අනාවරණය වූ පුනරාවර්තන ව්‍යුහයන් අතර කොටු කර ඇති විග්‍රහයේදී ගණන් නොගත්. කෙසේ වෙතත්, අනුරූප වෙස්මුහුණ භාවිතයෙන් පෙර කොටස සෙවීමේ ප්‍රති result ලය නොසලකා ඊළඟ වෙස් මුහුණ සැකසීමට මෙය නොහැකි විය: විස්තර කර ඇති පෙළ ව්‍යුහයේ දැඩි බව තවමත් අක්‍රමවත් අක්ෂර අත්තනෝමතික ඇතුළත් කිරීම් සඳහා ඉඩ ලබා දුන්නේ නැත.

මට හමු වූ පටුන උදාහරණ සඳහා මෙම ගැටළුව තවමත් එතරම් බැරෑරුම් බවක් නොපෙනේ නම්, වෙබ් අඩවියක අන්තර්ගතය විග්‍රහ කිරීමේ සමාන කාර්යයකට නව විග්‍රහ කිරීමේ යාන්ත්‍රණයක් යෙදීමට උත්සාහ කරන විට (එනම් එකම විග්‍රහ කිරීම), එහි සීමාවන් මෙහි ඇත, ඔවුන් ඔවුන්ගේ සියලු පැහැදිලිව පෙනී සිටියේය. සියල්ලට පසු, වෙබ් සලකුණු කොටස් සඳහා අවශ්‍ය වෙස් මුහුණු සැකසීම තරමක් පහසුය, ඒ අතර අප සොයන දත්ත (උපුටා ගත යුතු) ස්ථානගත කළ යුතුය, නමුත් විග්‍රහකයාට වහාම ඊළඟට යාමට බල කරන්නේ කෙසේද? සමාන ඛණ්ඩනයක්, හැකි සියලුම ටැග් සහ HTML ගුණාංග තිබියදීත්, ඒවා අතර ඇති අවකාශයේ තැබිය හැකිද?

ටිකක් කල්පනා කරලා මම තීරණය කළා සේවා රටා කිහිපයක් හඳුන්වා දෙන්න (%සියල්ල_පෙර) и (%all_after), මූලාශ්‍ර පෙළෙහි අඩංගු විය හැකි සෑම දෙයක්ම ඒවා අනුගමනය කරන ඕනෑම රටාවකට (වෙස්මුහුණකට) පෙර මඟ හැර ඇති බව සහතික කිරීමේ පැහැදිලි අරමුණ ඉටු කරයි. එපමණක් නොව, නම් (%සියල්ල_පෙර) මෙම සියලු අත්තනෝමතික ඇතුළත් කිරීම් සරලව නොසලකා හැරියේය (%all_after), ඊට ප්‍රතිවිරුද්ධව, පෙර ඛණ්ඩයෙන් මාරු වීමෙන් පසු ඒවා අපේක්ෂිත කොටසට එකතු කිරීමට ඉඩ ලබා දේ. එය තරමක් සරල බව පෙනේ, නමුත් මෙම සංකල්පය ක්‍රියාත්මක කිරීම සඳහා දැනටමත් ක්‍රියාත්මක කර ඇති තර්කය බිඳ නොදැමීම සඳහා අවශ්‍ය වෙනස් කිරීම් කිරීමට මට නැවත Gorp මූලාශ්‍ර හරහා පීරීමට සිදු විය. අවසානයේදී, අපි මෙය කිරීමට සමත් විය (මුලින්ම, ඉතා දෝෂ සහිත වුවද, මගේ විග්‍රහකය ක්‍රියාත්මක කිරීම ලියා ඇති අතර, ඊටත් වඩා වේගවත් - සති කිහිපයකින්). මෙතැන් සිට, පද්ධතිය සැබවින්ම විශ්වීය ස්වරූපයක් ගත්තේය - එය ක්රියාත්මක කිරීමට පළමු උත්සාහයෙන් වසර 12 කට නොඅඩු කාලයකට පසුව.

ඇත්ත වශයෙන්ම, මෙය අපගේ සිහින වල අවසානය නොවේ. නොමිලේ ව්‍යාකරණ ක්‍රියාත්මක කිරීම සඳහා පවතින ඕනෑම පුස්තකාලයක් භාවිතා කරමින් ඔබට C# හි Gorp අච්චු විග්‍රහකය සම්පූර්ණයෙන්ම නැවත ලිවිය හැක. මම හිතන්නේ කේතය සැලකිය යුතු ලෙස සරල කළ යුතු අතර, දැනට පවතින ජාවා මූලාශ්රවල උරුමය ඉවත් කිරීමට මෙය අපට ඉඩ සලසයි. නමුත් පවතින එන්ජින් වර්ගය සමඟ, විවිධ වෙබ් අඩවි වලින් විවිධ දත්ත විග්‍රහ කිරීම ගැන සඳහන් නොකර, මා දැනටමත් සඳහන් කර ඇති මෙටා-සැකිලි ක්‍රියාත්මක කිරීමේ උත්සාහයක් ඇතුළුව විවිධ රසවත් දේවල් කිරීමටද හැකිය (කෙසේ වෙතත්, මම බැහැර නොකරමි. දැනට පවතින විශේෂිත මෘදුකාංග මෙවලම් මේ සඳහා වඩාත් සුදුසු බව - මට තවමත් ඒවා භාවිතා කිරීමේ සුදුසු අත්දැකීමක් නොමැත).

මාර්ගය වන විට, මෙම ගිම්හානයේදී මට දැනටමත් Salesforce තාක්ෂණයන් භාවිතා කරන සමාගමකින් (මුල් පිටපතෙහි සංවර්ධකයා) විද්‍යුත් තැපෑලෙන් ආරාධනයක් ලැබී ඇත. ගොර්ප්), රීගා හි පසු වැඩ සඳහා සම්මුඛ පරීක්ෂණයක් සමත් වන්න. අවාසනාවකට මෙන්, මේ මොහොතේ මම එවැනි නැවත ස්ථානගත කිරීම් සඳහා සූදානම් නැත.

මෙම ද්‍රව්‍යය යම් උනන්දුවක් ඇති කරන්නේ නම්, දෙවන කොටසේදී මම විකුණුම් බලකායේ භාවිතා කරන ක්‍රියාත්මක කිරීමේ උදාහරණය භාවිතා කරමින් සැකිලි සම්පාදනය කිරීම සහ පසුව විග්‍රහ කිරීම සඳහා වන තාක්ෂණය වඩාත් විස්තරාත්මකව විස්තර කිරීමට උත්සාහ කරමි. ගොර්ප් (මගේම එකතු කිරීම්, දැනටමත් විස්තර කර ඇති ක්‍රියාකාරී වචන කිහිපයක් හැර, අච්චු වාක්‍ය ඛණ්ඩයේම පාහේ කිසිදු වෙනසක් සිදු නොකරයි, එබැවින් මුල් පද්ධතිය සඳහා සියලුම ලියකියවිලි පාහේ ගොර්ප් මගේ අනුවාදය සඳහා ද සුදුසු ය).

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න