ක්‍රමලේඛකයින් සහ ඉංජිනේරුවන්ගේ ජනප්‍රවාද (1 කොටස)

ක්‍රමලේඛකයින් සහ ඉංජිනේරුවන්ගේ ජනප්‍රවාද (1 කොටස)

මෙය සමහර විට දෝෂ වලට සම්පූර්ණයෙන්ම ඇදහිය නොහැකි ප්‍රකාශනයන් ඇති ආකාරය පිළිබඳ අන්තර්ජාලයෙන් කථාන්දර තෝරා ගැනීමකි. සමහරවිට ඔයාටත් කියන්න දෙයක් ඇති.

වැනිලා අයිස්ක්‍රීම් වලට කාර් අසාත්මිකතා

පැහැදිලිව පෙනෙන දේ සැමවිටම පිළිතුර නොවන බවත්, කෙතරම් දුරදිග ගිය කරුණු පෙනුනත් ඒවා තවමත් සත්‍ය බවත් තේරුම් ගන්නා ඉංජිනේරුවන් සඳහා කතාවක්. ජෙනරල් මෝටර්ස් කෝපරේෂන් හි පොන්ටියාක් අංශයට පැමිණිල්ලක් ලැබිණි:

මම ඔබට ලියන දෙවන අවස්ථාව මෙය වන අතර, පිළිතුරු නොදීම ගැන මම ඔබට දොස් නොකියමි, මන්ද එය පිස්සුවක් ලෙස පෙනේ. රාත්‍රී ආහාරයෙන් පසු සෑම රාත්‍රියකම අයිස්ක්‍රීම් කන සම්ප්‍රදායක් අපේ පවුලේ අය ඇත. සෑම අවස්ථාවකදීම අයිස්ක්‍රීම් වර්ග වෙනස් වන අතර, රාත්‍රී ආහාරයෙන් පසු, මුළු පවුලම කුමන අයිස්ක්‍රීම් මිලදී ගත යුතුද යන්න තෝරා ගනී, පසුව මම ගබඩාවට යමි. මම මෑතකදී නව පොන්ටියාක් එකක් මිලට ගත් අතර එතැන් සිට අයිස් ක්‍රීම් ගැනීමට මගේ සංචාර ප්‍රශ්නයක් විය. බලන්න, මම වැනිලා අයිස්ක්‍රීම් එකක් අරන් කඩෙන් එන හැම වෙලාවකම කාර් එක ස්ටාට් වෙන්නේ නැහැ. මම වෙන අයිස්ක්‍රීම් එකක් ගෙනාවොත් කිසිම ප්‍රශ්නයක් නැතුව කාර් එක ස්ටාර්ට් වෙනවා. මොන තරම් මෝඩ කමක් තිබුනත් මට බරපතල ප්‍රශ්නයක් අහන්න ඕනේ: "මම වැනිලා අයිස්ක්‍රීම් ගෙනා විට එය ආරම්භ නොවී, මම වෙනත් අයිස්ක්‍රීම් රසයක් ගෙන එන විට එය පහසුවෙන් ආරම්භ කරන්නේ පොන්ටියාක් ගැන කුමක් ද?" "

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

ඉංජිනේරුවරයා තවත් සවස තුනකට පැමිණියේය. පළමු වතාවට අයිස් ක්රීම් චොකලට් විය. කාර් එක පටන් ගත්තා. දෙවෙනි වතාවේ ස්ට්රෝබෙරි අයිස්ක්රීම් තිබුණා. කාර් එක පටන් ගත්තා. තුන්වෙනිදා සවස ඔහු වැනිලා ගන්න කිව්වා. කාර් එක ස්ටාට් වුනේ නෑ.

තාර්කිකව තර්ක කරමින්, මෝටර් රථය වැනිලා අයිස්ක්‍රීම් වලට අසාත්මික බව විශ්වාස කිරීම ඉංජිනේරුවරයා ප්‍රතික්ෂේප කළේය. ඒ නිසා ප්‍රශ්නයට විසදුමක් ලැබෙන තුරු ඔහුගේ සංචාරය දිගටම කරගෙන යන බවට මෝටර් රථයේ හිමිකරු සමඟ මම එකඟ විය. අතරමගදී, ඔහු සටහන් කිරීමට පටන් ගත්තේය: ඔහු සියලු තොරතුරු, දවසේ වේලාව, පෙට්‍රල් වර්ගය, ගබඩාවෙන් පැමිණි වේලාව සහ ආපසු පැමිණීම යනාදිය ලියා තැබීය.

මෝටර් රථයේ හිමිකරු වැනිලා අයිස්ක්‍රීම් මිලදී ගැනීමට ගත කරන කාලය අඩු බව ඉංජිනේරුවරයාට ඉක්මනින් වැටහුණි. හේතුව ගබඩාවේ භාණ්ඩවල සැලැස්මයි. වැනිලා අයිස්ක්‍රීම් වඩාත් ජනප්‍රිය වූ අතර එය සොයා ගැනීම පහසු කිරීම සඳහා ගබඩාවේ ඉදිරිපස වෙනම ශීතකරණයක් තුළ තබා ඇත. අනෙක් සියලුම ප්‍රභේද ගබඩාවේ පිටුපස තිබූ අතර නිවැරදි ප්‍රභේදය සොයාගෙන ගෙවීමට තවත් බොහෝ කාලයක් ගත විය.

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

සදාචාරය: සම්පූර්ණයෙන්ම පිස්සු ගැටලු පවා සමහර විට සැබෑ ය.

කඩා වැටීමෙන් ඌරු මීයන්

මෙය අත්විඳීම වේදනාකාරී ය. ක්‍රමලේඛකයෙකු ලෙස, ඔබ ඔබේ කේතයට පළමුව, දෙවනුව, තෙවනුව දොස් කියන්නට පුරුදු වී සිටින අතර කොතැනක හෝ දස දහසක් ස්ථානයේ ඔබ සම්පාදකයාට දොස් පවරයි. තවද ලැයිස්තුවෙන් ඔබ දැනටමත් උපකරණයට දොස් පවරයි.

දෘඪාංග දෝෂය ගැන මගේ කතාව මෙන්න.

Crash Bandicoot ක්‍රීඩාව සඳහා, මම මතක කාඩ්පතකට පැටවීමට සහ සුරැකීමට කේතය ලිව්වෙමි. එවැනි ස්මග් ක්‍රීඩා සංවර්ධකයෙකුට, එය උද්‍යානයේ ඇවිදීමක් වැනි ය: වැඩට දින කිහිපයක් ගතවනු ඇතැයි මම සිතුවෙමි. කෙසේ වෙතත්, මම සති හයක් සඳහා කේතය නිදොස් කිරීම අවසන් කළෙමි. අතරමගදී, මම වෙනත් ගැටළු විසඳුවෙමි, නමුත් සෑම දින කිහිපයකට වරක් මම පැය කිහිපයක් සඳහා මෙම කේතය වෙත ආපසු ගියෙමි. එය වේදනාවක් විය.

රෝග ලක්ෂණය මෙසේ දිස් විය: ඔබ ක්‍රීඩාවේ වත්මන් playthrough සුරකින විට සහ මතක කාඩ්පතට ප්‍රවේශ වූ විට, සෑම විටම පාහේ සෑම දෙයක්ම හොඳින් සිදු වේ. කෙටි පටිගත කිරීමක් බොහෝ විට මතක කාඩ්පතට හානි කරයි. ක්රීඩකයෙකු සුරැකීමට උත්සාහ කරන විට, ඔහු සුරැකීමට අසමත් වීම පමණක් නොව, සිතියම විනාශ කරයි. ජරාව.

ටික වේලාවකට පසු, සෝනි හි අපගේ නිෂ්පාදක කොනී බස් බියට පත් විය. අපට මෙම දෝෂය සමඟ ක්‍රීඩාව නැව්ගත කළ නොහැකි වූ අතර සති හයකට පසුව මට ගැටලුවට හේතුව කුමක්දැයි තේරුම් ගත නොහැකි විය. කොනී හරහා, අපි වෙනත් PS1 සංවර්ධකයින් සම්බන්ධ කර ගත්තෙමු: යමෙකුට සමාන දෙයක් හමු වී තිබේද? නැත. මතක කාඩ්පත සමඟ කිසිවෙකුට ගැටළු ඇති නොවීය.

නිදොස්කරණය සඳහා ඔබට කිසිදු අදහසක් නොමැති විට, ඉතිරිව ඇති එකම ප්‍රවේශය "බෙදීම සහ ජය ගැනීම" වේ: තවමත් ගැටලුව ඇති කරන සාපේක්ෂව කුඩා කැබැල්ලක් ඉතිරි වන තෙක් දෝෂ සහිත වැඩසටහනෙන් වැඩි වැඩියෙන් කේත ඉවත් කරන්න. එනම්, දෝෂය අඩංගු කොටස ඉතිරි වන තුරු ඔබ වැඩසටහන කෑල්ලෙන් කපා දමන්න.

නමුත් වැඩේ තියෙන්නේ වීඩියෝ ගේම් එකකින් කෑලි කපලා දාන්න හරිම අමාරුයි. ඔබ ගුරුත්වාකර්ෂණය අනුකරණය කරන කේතය ඉවත් කළහොත් එය ධාවනය කරන්නේ කෙසේද? නැත්නම් අකුරු අඳිනවද?

එමනිසා, අපට සම්පූර්ණ මොඩියුල වෙනුවට ප්‍රයෝජනවත් දෙයක් කරන ලෙස පෙනී සිටින stubs සමඟ ප්‍රතිස්ථාපනය කිරීමට සිදුවේ, නමුත් ඇත්ත වශයෙන්ම දෝෂ අඩංගු විය නොහැකි ඉතා සරල දෙයක් කරන්න. අඩුම තරමේ ක්‍රීඩාවට එහෙම කිහිලිකරු ලියන්න වෙනවා. මෙය මන්දගාමී හා වේදනාකාරී ක්රියාවලියකි.

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

මෙය මට කුඩා කේත කැබැල්ලක් ඉතිරි කළේය - නමුත් එය තවමත් අහඹු ලෙස සිදුවෙමින් පවතී! බොහෝ විට සෑම දෙයක්ම හොඳින් ක්‍රියාත්මක වූ නමුත් ඉඳහිට දෝෂ ඇති විය. මම ක්‍රීඩා කේතය සියල්ලම පාහේ ඉවත් කළ නමුත් දෝෂය තවමත් ජීවමානයි. මෙය ප්‍රහේලිකාවක් විය: ඉතිරි කේතය ඇත්ත වශයෙන්ම කිසිවක් කළේ නැත.

යම් අවස්ථාවක දී, බොහෝ විට පාන්දර තුනට පමණ, මට සිතිවිල්ලක් ඇති විය. කියවීමේ සහ ලිවීමේ (ආදාන/ප්‍රතිදාන) ක්‍රියාවන්ට නිශ්චිත ක්‍රියාත්මක කිරීමේ වේලාවන් ඇතුළත් වේ. ඔබ දෘඪ තැටියක්, මතක කාඩ්පතක් හෝ බ්ලූටූත් මොඩියුලයක් සමඟ වැඩ කරන විට, කියවීම සහ ලිවීම සඳහා වගකිව යුතු පහත් මට්ටමේ කේතය ඔරලෝසු ස්පන්දනවලට අනුකූලව සිදු කරයි.

ඔරලෝසුවක් ආධාරයෙන්, ප්‍රොසෙසරයට සෘජුව සම්බන්ධ නොවූ උපාංගයක් ප්‍රොසෙසරයේ ක්‍රියාත්මක වන කේතය සමඟ සමමුහුර්ත කර ඇත. ඔරලෝසුව බෝඩ් අනුපාතය - දත්ත මාරු කරන වේගය තීරණය කරයි. වේලාවන් සමඟ ව්‍යාකූලත්වයක් තිබේ නම්, දෘඩාංග හෝ මෘදුකාංග හෝ දෙකම ව්‍යාකූල වේ. තවද මෙය ඉතා නරක ය, මන්ද දත්ත වලට හානි විය හැක.

අපගේ කේතයේ යම් දෙයක් වේලාවන් අවුල් කරන්නේ නම් කුමක් කළ යුතුද? මම පරීක්ෂණ ක්‍රමලේඛ කේතයේ මේ හා සම්බන්ධ සෑම දෙයක්ම පරීක්ෂා කළ අතර, අපි ක්‍රමලේඛගත කළ හැකි ටයිමරය PS1 සිට 1 kHz දක්වා (තත්පරයට ටික් 1000) දක්වා ඇති බව දුටුවෙමි. මෙය බෙහෙවින් වැඩි ය; පෙරනිමියෙන්, කොන්සෝලය ආරම්භ වන විට, එය 100 Hz දී ධාවනය වේ. තවද බොහෝ ක්‍රීඩා මෙම සංඛ්‍යාතය භාවිතා කරයි.

ඇන්ඩි, ක්‍රීඩා සංවර්ධක, ටයිමරය 1 kHz ලෙස සකසන්න එවිට චලනයන් වඩාත් නිවැරදිව ගණනය කරනු ඇත. ඇන්ඩි ඉක්මවා යාමට නැඹුරු වන අතර, අපි ගුරුත්වාකර්ෂණය අනුකරණය කරන්නේ නම්, අපි එය හැකි තරම් නිවැරදිව කරන්නෙමු!

නමුත් ටයිමරය වේගවත් කිරීම කෙසේ හෝ වැඩසටහනේ සමස්ත වේලාවට බලපෑවේ නම් සහ එම නිසා මතක කාඩ්පත සඳහා බෝඩ් අනුපාතය නියාමනය කරන ඔරලෝසුව කුමක්ද?

මම ටයිමර් කේතයට අදහස් දැක්වූවා. දෝෂය නැවත සිදු නොවීය. නමුත් අසාර්ථකත්වය අහඹු ලෙස සිදු වූ නිසා අපි එය නිවැරදි කළ බව මින් අදහස් නොවේ. මම වාසනාවන්ත නම් කුමක් කළ යුතුද?

දින කිහිපයකට පසු මම පරීක්ෂණ වැඩසටහන සමඟ නැවත අත්හදා බැලුවෙමි. දෝෂය නැවත සිදු නොවීය. මම නැවත සම්පූර්ණ ක්‍රීඩා කේත පදනමට ගොස් සුරැකීමේ සහ පැටවීමේ කේතය වෙනස් කළෙමි, එවිට ක්‍රමලේඛගත කළ හැකි ටයිමරය මතක කාඩ්පතට ප්‍රවේශ වීමට පෙර එහි මුල් අගයට (100Hz) නැවත සකසනු ඇත, පසුව නැවත 1kHz වෙත නැවත සකසන්න. තවත් කඩා වැටීම් තිබුණේ නැත.

නමුත් මෙය සිදු වූයේ ඇයි?

මම නැවතත් පරීක්ෂණ වැඩසටහනට පැමිණියෙමි. 1 kHz ටයිමරයක් සමඟ දෝෂයක් ඇතිවීමේ යම් රටාවක් සොයා ගැනීමට මම උත්සාහ කළෙමි. අවසානයේදී මම දුටුවේ යමෙකු PS1 පාලකයක් සමඟ ක්‍රීඩා කරන විට දෝෂය සිදුවන බවයි. මම මෙය කලාතුරකින් සිදු කරන බැවින් - සුරැකීමේ සහ පැටවීමේ කේතය පරීක්ෂා කිරීමේදී මට පාලකයක් අවශ්‍ය වන්නේ ඇයි? - මම මෙම යැපීම දුටුවේ නැත. නමුත් එක් දිනක් අපගේ කලාකරුවෙකු මා පරීක්ෂාව අවසන් කරන තෙක් බලා සිටියේය - මම ඒ මොහොතේ ශාප කරන්නට ඇත - සහ ඔහුගේ අතේ සිටි පාලකය කලබලයෙන් කරකවමින්. දෝෂයක් සිදුවී ඇත. "ඔහොම ඉන්න .. මොකක්?!" හොඳයි, එය නැවත කරන්න! ”

මෙම සිදුවීම් දෙක එකිනෙකට සම්බන්ධ බව මට වැටහුණු විට, දෝෂය පහසුවෙන් ප්රතිනිෂ්පාදනය කිරීමට මට හැකි විය: මම මතක කාඩ්පතට පටිගත කිරීම ආරම්භ කර, පාලකය ගෙන ගොස්, මතක කාඩ්පත විනාශ කළෙමි. මට එය පෙනුනේ දෘඪාංග දෝෂයක් ලෙසිනි.

මම කොනී වෙත පැමිණ මගේ සොයාගැනීම ගැන ඇයට කීවෙමි. ඇය PS1 නිර්මාණය කළ ඉංජිනේරුවෙකුට තොරතුරු ලබා දුන්නාය. "නොහැකිය," ඔහු පිළිතුරු දුන්නේ, "එය දෘඪාංග ගැටළුවක් විය නොහැක." අපි වෙනුවෙන් සංවාදයක් සංවිධානය කරන ලෙස මම කොනීගෙන් ඉල්ලා සිටියෙමි.

ඉංජිනේරුවරයා මට කතා කළ අතර අපි ඔහුගේ කැඩුණු ඉංග්‍රීසියෙන් සහ මගේ (අතිශයින්ම) කැඩුණු ජපන් භාෂාවෙන් තර්ක කළෙමු. අවසාන වශයෙන් මම කීවෙමි, “පාලකය ගෙනයාම දෝෂයක් ඇති කරන මගේ රේඛා 30 පරීක්ෂණ වැඩසටහන යැවීමට මට ඉඩ දෙන්න.” ඔහු එකඟ විය. එය කාලය නාස්ති කිරීමක් බවත්, ඔහු නව ව්‍යාපෘතියක වැඩ කිරීමට ඉතා කාර්යබහුල බවත්, නමුත් අපි Sony සඳහා ඉතා වැදගත් සංවර්ධකයෙකු වූ නිසා එය ලබා දෙන බවත් පැවසීය. මම මගේ පරීක්ෂණ වැඩසටහන පිරිසිදු කර ඔහුට යැව්වෙමි.

පසුදා සවස (අපි සිටියේ ලොස් ඇන්ජලීස්වල සහ ඔහු ටෝකියෝවේ) ඔහු මට කතා කර බැටළු ලෙස සමාව අයැද සිටියේය. එය දෘඪාංග ගැටළුවක් විය.

මම හරියටම දෝෂය කුමක්දැයි නොදනිමි, නමුත් Sony මූලස්ථානයේදී මා අසා ඇති දේ අනුව, ඔබ ටයිමරය ප්‍රමාණවත් තරම් ඉහළ අගයකට සකසා ඇත්නම්, එය ටයිමර් ස්ඵටිකය ආසන්නයේ ඇති මවු පුවරුවේ සංරචක වලට බාධා කරයි. ඒවායින් එකක් මතක කාඩ්පත සඳහා බෝඩ් අනුපාත පාලකයක් වූ අතර එය පාලකයන් සඳහා බෝඩ් අනුපාතය ද නියම කළේය. මම ඉංජිනේරුවෙක් නෙවෙයි, ඒ නිසා මට මොකක් හරි අවුලක් වෙන්න ඇති.

නමුත් අවසාන කරුණ නම් මවු පුවරුවේ සංරචක අතර බාධා ඇති වීමයි. තවද 1 kHz දී ධාවනය වන ටයිමරයක් සහිත පාලක පෝට් සහ මතක කාඩ්පත් පෝට් එක හරහා එකවර දත්ත සම්ප්‍රේෂණය කරන විට, බිටු නැති වී, දත්ත නැති වී, කාඩ්පතට හානි විය.

නරක ගවයන්

1980 ගණන්වලදී, මගේ උපදේශක සර්ජි PDP-1800 හි සෝවියට් ක්ලෝනයක් වන SM-11 සඳහා මෘදුකාංගයක් ලිවීය. මෙම ක්ෂුද්‍ර පරිගණකය සෝවියට් සංගමයේ වැදගත් ප්‍රවාහන මධ්‍යස්ථානයක් වන Sverdlovsk අසල දුම්රිය ස්ථානයක ස්ථාපනය කර ඇත. නව පද්ධතිය නිර්මාණය කර ඇත්තේ වැගන් සහ භාණ්ඩ ප්‍රවාහනය සඳහා ය. නමුත් එහි අහඹු බිඳවැටීම් සහ බිඳවැටීම් වලට තුඩු දුන් කරදරකාරී දෝෂයක් අඩංගු විය. සවස් වරුවේ යමෙකු නිවසට යන විට සෑම විටම වැටීම් සිදු විය. නමුත් ඊළඟ දවසේ සම්පූර්ණ පරීක්ෂණයක් නොතකා, පරිගණකය සියලු අතින් සහ ස්වයංක්රීය පරීක්ෂණ වලදී නිවැරදිව ක්රියා කළේය. මෙය සාමාන්‍යයෙන් ධාවන තත්වයක් හෝ යම් යම් කොන්දේසි යටතේ සිදුවන වෙනත් තරඟකාරී දෝෂයක් පෙන්නුම් කරයි. රාත්‍රියේ ඇමතුම් වලින් වෙහෙසට පත් වූ සර්ජි එහි පතුලට යාමට තීරණය කළ අතර, පළමුවෙන්ම, මාෂලින් අංගනයේ ඇති තත්වයන් පරිගණකය බිඳවැටීමට හේතු වූයේ කුමක්ද යන්න තේරුම් ගන්න.

පළමුව, ඔහු සියලු පැහැදිලි කළ නොහැකි වැටීම් පිළිබඳ සංඛ්‍යාලේඛන එකතු කර දිනය සහ වේලාව අනුව ප්‍රස්ථාරයක් නිර්මාණය කළේය. රටාව පැහැදිලි විය. තවත් දින කිහිපයක් නිරීක්ෂණය කිරීමෙන් පසු, අනාගත පද්ධති අසාර්ථක වීමේ කාලය පහසුවෙන් පුරෝකථනය කළ හැකි බව සර්ජි තේරුම් ගත්තේය.

ඔහු ඉක්මනින්ම දැනගත්තේ මෙම දුම්රිය ස්ථානය උතුරු යුක්රේනයේ සහ බටහිර රුසියාවේ සිට ගවයින් ප්‍රවාහනය කරන දුම්රිය ප්‍රමාණය අසල පිහිටි ඝාතකාගාරයකට යන විට පමණක් බව. මෙයම අමුතු දෙයක් විය, මන්ද ඝාතකාගාරය සපයනු ලැබුවේ කසකස්තානයේ වඩාත් සමීපව පිහිටි ගොවිපලවල් මගිනි.

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

ගවයින් විශාල විකිරණ නිකුත් කළා පමණක් නොව, එහි මට්ටම ඉතා ඉහළ මට්ටමක පැවතීම නිසා දුම්රිය ස්ථානයට යාබද ගොඩනැගිල්ලක පිහිටා තිබූ SM-1800 මතකයේ අහඹු ලෙස බිටු නැති විය.

සෝවියට් සමාජවාදී සමූහාණ්ඩුවේ ආහාර හිඟයක් ඇති වූ අතර බලධාරීන් චර්නොබිල් මස් රටේ අනෙකුත් ප්‍රදේශවල මස් සමඟ මිශ්‍ර කිරීමට තීරණය කළහ. මෙමගින් වටිනා සම්පත් අහිමි නොවී සමස්ත විකිරණශීලීතාවය අඩු කිරීමට හැකි විය. මේ ගැන දැනගත් සර්ජි වහාම විගමනය සඳහා ලියකියවිලි පුරවා ඇත. තවද කාලයත් සමඟ විකිරණ මට්ටම අඩු වූ විට පරිගණකය කඩා වැටීම් තනිවම නතර විය.

පයිප්ප හරහා

වරෙක, Movietech Solutions විසින් සිනමා ශාලා සඳහා මෘදුකාංග නිර්මාණය කරන ලද අතර, ගිණුම්කරණය, ප්‍රවේශපත්‍ර අලෙවිය සහ සාමාන්‍ය කළමනාකරණය සඳහා නිර්මාණය කර ඇත. ප්‍රධාන යෙදුමේ DOS අනුවාදය උතුරු ඇමරිකාවේ කුඩා හා මධ්‍යම ප්‍රමාණයේ සිනමා ශාලා ජාලයන් අතර බෙහෙවින් ජනප්‍රිය විය. එබැවින් Windows 95 අනුවාදයක් ප්‍රකාශයට පත් කළ විට, නවතම ස්පර්ශ තිර සහ ස්වයං සේවා කියෝස්ක් සමඟ ඒකාබද්ධ වී, සහ සියලු ආකාරයේ වාර්තාකරණ මෙවලම් වලින් සමන්විත වූ විට, එය ඉක්මනින් ජනප්‍රිය වීම පුදුමයක් නොවේ. බොහෝ විට යාවත්කාලීන කිරීම ගැටළු නොමැතිව සිදු විය. දේශීය තොරතුරු තාක්ෂණ කාර්ය මණ්ඩලය නව උපකරණ ස්ථාපනය කර, දත්ත සංක්‍රමණය කළ අතර, ව්‍යාපාර දිගටම කරගෙන ගියේය. එය පැවතියේ නැති විට හැර. මෙය සිදු වූ විට, සමාගම "පිරිසිදු කරන්නා" යන අන්වර්ථ නාමයෙන් හඳුන්වන ජේම්ස් යවනු ඇත.

අන්වර්ථ නාමයෙන් අශුභ වර්ගයක් යෝජනා වුවද, පිරිසිදු කරන්නා යනු උපදේශක, ස්ථාපකය සහ ජැක්-ඔෆ්-ඕල්-ට්‍රේඩ් වල එකතුවකි. ජේම්ස් සේවාලාභියාගේ වෙබ් අඩවියේ දින කිහිපයක් ගත කර සියලුම සංරචක එකට එකතු කර, නව පද්ධතිය භාවිතා කරන ආකාරය කාර්ය මණ්ඩලයට ඉගැන්වීමට, පැන නගින ඕනෑම දෘඪාංග ගැටළු නිරාකරණය කිරීමට සහ මූලික වශයෙන් මෘදුකාංගයට ළදරු අවධියේදී උපකාර කිරීමට තවත් දින කිහිපයක් ගත කරයි.

එමනිසා, මෙම කාර්යබහුල කාලවලදී, ජේම්ස් උදෑසන කාර්යාලයට පැමිණි අතර, ඔහු තම මේසයට ළඟා වීමට පෙර, කළමනාකරු විසින් සුපුරුදු පරිදි කැෆේන් පුරවාගෙන ඔහුව පිළිගනු ලැබීම පුදුමයක් නොවේ.

ඔබට හැකි ඉක්මනින් නෝවා ස්කොටියාවේ ඇනපොලිස් වෙත යා යුතු යැයි මම බිය වෙමි. ඔවුන්ගේ මුළු පද්ධතියම ක්‍රියා විරහිත වූ අතර, ඔවුන්ගේ ඉංජිනේරුවන් සමඟ රාත්‍රියක් වැඩ කිරීමෙන් පසු, අපට සිදුවූයේ කුමක්දැයි සිතාගත නොහැක. සේවාදායකයේ ජාලය අසාර්ථක වී ඇති බව පෙනේ. නමුත් පද්ධතිය මිනිත්තු කිහිපයක් ක්‍රියාත්මක වූ පසුව පමණි.

- ඔවුන් පැරණි ක්‍රමයට ආපසු ගියේ නැද්ද? - ජේම්ස් සම්පූර්ණයෙන්ම බැරෑරුම් ලෙස පිළිතුරු දුන්නේය, නමුත් මානසිකව ඔහු පුදුමයෙන් දෑස් විශාල කළේය.

- හරියටම: ඔවුන්ගේ තොරතුරු තාක්ෂණ විශේෂඥයා "ප්රමුඛතා වෙනස් කර" ඔවුන්ගේ පැරණි සේවාදායකය සමඟ පිටත් වීමට තීරණය කළේය. ජේම්ස්, ඔවුන් අඩවි හයක පද්ධතිය ස්ථාපනය කර වාරික සහය සඳහා ගෙවා ඇති අතර, ඔවුන්ගේ ව්‍යාපාරය දැන් 1950 ගණන්වල මෙන් පවත්වාගෙන යයි.

ජේම්ස් මදක් කෙළින් විය.

- ඒක තවත් කාරණයක්. හරි අපි පටන් ගමු.

ඔහු ඇනපොලිස් වෙත පැමිණි විට, ඔහු මුලින්ම කළේ ගැටලුවක් ඇති පාරිභෝගිකයාගේ පළමු රඟහල සොයා ගැනීමයි. ගුවන් තොටුපලේදී ගත් සිතියමේ සෑම දෙයක්ම විනීත ලෙස පෙනුනද අපේක්ෂිත ලිපිනය අවට ප්‍රදේශය සැක සහිත විය. ගෙටෝ නොව ෆිල්ම් නොයර් සිහිගන්වයි. ජේම්ස් නගර මධ්‍යයේ නවත්වන විට ගණිකාවක් ඔහු වෙතට පැමිණියාය. ඇනපොලිස් හි විශාලත්වය අනුව, එය බොහෝ විට මුළු නගරයේම එකම එක විය. ඇයගේ පෙනුම ක්ෂණිකව මතකයට ආවේ විශාල තිරයේ මුදලට ලිංගිකත්වය පිරිනැමූ සුප්‍රසිද්ධ චරිතයයි. නැත, ජූලියා රොබට්ස් ගැන නොව, ජෝන් වොයිට් ගැන ["මිඩ්නයිට් කව්බෝයි" චිත්‍රපටයට උපදෙසක් - දළ වශයෙන්. මාර්ගය].

ගණිකාව ඇගේ ගමනට යවා ජේම්ස් සිනමා ශාලාවට ගියේය. අවට ප්‍රදේශය හොඳ අතට හැරී ඇත, නමුත් එය තවමත් යටපත් වී ඇති බවක් ලබා දුන්නේය. ජේම්ස් ඕනෑවට වඩා කලබල වූවා නොවේ. ඔහු මීට පෙර කාලකණ්ණි තැන්වලට ගොස් ඇත. මෙය කැනඩාව වූ අතර, ඔබේ මුදල් පසුම්බිය ගත් පසු "ස්තූතියි" යැයි කීමට තරම් මුගටියන් පවා ආචාරශීලී වේ.

සිනමා ශාලාවට පිවිසෙන අතුරු දොරටුව තිබුණේ අඳුරු මංතීරුවකය. ජේම්ස් දොර ළඟට ගිහින් තට්ටු කළා. වැඩි කල් නොගොස් එය ක්‍රීක් වී මඳක් විවෘත විය.

- ඔබ පිරිසිදු කරන්නෙක්ද? - ඇතුලෙන් ගොරෝසු කටහඬක් ආවා.

- ඔව්, ඒ මමයි ... මම හැම දෙයක්ම හදන්න ආවා.

ජේම්ස් සිනමා ශාලාවට ගියේය. පෙනෙන විදිහට වෙනත් විකල්පයක් නොමැතිව කාර්ය මණ්ඩලය අමුත්තන්ට කඩදාසි ටිකට්පත් ලබා දීමට පටන් ගත්හ. මෙය මූල්‍ය වාර්තාකරණය දුෂ්කර කර ඇත, වඩාත් රසවත් තොරතුරු තබා. නමුත් කාර්ය මණ්ඩලය ජේම්ස්ව සහනයෙන් පිළිගත් අතර වහාම ඔහුව සේවාදායක කාමරයට ගෙන ගියේය.

මුලින්ම බැලූ බැල්මට සියල්ල හොඳින් විය. ජේම්ස් සර්වරයට ලොග් වී සුපුරුදු සැක සහිත ස්ථාන පරීක්ෂා කළේය. ප්රශ්නයක් නැහැ. කෙසේ වෙතත්, බොහෝ ප්‍රවේශමෙන්, ජේම්ස් සේවාදායකය වසා දමා, ජාල කාඩ්පත ප්‍රතිස්ථාපනය කර පද්ධතිය ආපසු හැරවීය. ඇය වහාම සම්පූර්ණයෙන්ම වැඩ කිරීමට පටන් ගත්තාය. කාර්ය මණ්ඩලය නැවතත් ටිකට් අලෙවි කිරීමට පටන් ගත්හ.

ජේම්ස් මාර්ක් අමතා තත්වය දැනුම් දුන්නේය. අනපේක්ෂිත දෙයක් සිදුවේදැයි බැලීමට ජේම්ස්ට අවශ්‍ය විය හැකි යැයි සිතීම අපහසු නැත. ඔහු පඩිපෙළ බැස සේවකයන්ගෙන් සිදුවූයේ කුමක්දැයි ඇසීමට පටන් ගත්තේය. පැහැදිලිවම පද්ධතිය වැඩ කිරීම නතර කර ඇත. ඔවුන් එය ක්‍රියා විරහිත කර, සියල්ල ක්‍රියාත්මක විය. නමුත් මිනිත්තු 10 කට පසු පද්ධතිය කඩා වැටුණි.

මේ මොහොතේ ඒ හා සමාන දෙයක් සිදු විය. එකපාරටම ටිකට්පත් ක්‍රමයේ දෝෂ මතු වෙන්න පටන් ගත්තා. කාර්ය මණ්ඩලය සුසුම්ලමින් කඩදාසි ටිකට්පත් අතට ගත් අතර ජේම්ස් සර්වර් කාමරයට වේගයෙන් ගියේය. සේවාදායකය සමඟ සෑම දෙයක්ම හොඳින් දිස් විය.

එවිට එක් සේවකයෙකු ඇතුළු විය.

- පද්ධතිය නැවතත් ක්රියා කරයි.

ඔහු කිසිවක් නොකළ නිසා ජේම්ස් පුදුමයට පත් විය. වඩාත් නිවැරදිව, පද්ධතිය වැඩ කරන කිසිවක් නැත. ඔහු ලොග් අවුට් වී, ඔහුගේ දුරකථනය ගෙන, ඔහුගේ සමාගමේ ආධාරක දුරකථන අංකයට කතා කළේය. ඉක්මනින්ම එම සේවකයා සර්වර් කාමරයට ඇතුළු විය.

- පද්ධතිය අක්‍රියයි.

ජේම්ස් සර්වර් එක දිහා බැලුවා. බහු-වර්ණ හැඩතලවල සිත්ගන්නාසුළු හා හුරුපුරුදු රටාවක් තිරය මත නැටීය - අවුල් සහගත ලෙස දඟලන සහ පැටලෙන පයිප්ප. අපි හැමෝම මේ screensaver එක වෙලාවක දැකලා තියෙනවා. එය ඉතා අලංකාර ලෙස විදහා දක්වන ලද අතර වචනාර්ථයෙන් මෝහනයට පත් විය.


ජේම්ස් බොත්තමක් එබූ අතර රටාව අතුරුදහන් විය. ඔහු ඉක්මනින් ටිකට් කාර්යාලයට ගිය අතර මගදී ඔහු වෙත ආපසු එන සේවකයෙකු හමු විය.

- පද්ධතිය නැවතත් ක්රියා කරයි.

ඔබට මානසික මුහුණුපොතක් කළ හැකි නම්, ජේම්ස් කළේ එයයි. තිර සුරැකුම. එය OpenGL භාවිතා කරයි. එබැවින්, ක්‍රියාත්මක වන විට, එය සේවාදායක ප්‍රොසෙසරයේ සියලුම සම්පත් පරිභෝජනය කරයි. එහි ප්‍රතිඵලයක් වශයෙන්, සේවාදායකයට ලැබෙන සෑම ඇමතුමක්ම කල් ඉකුත්වීමකින් අවසන් වේ.

ජේම්ස් නැවත සේවාදායක කාමරයට පැමිණ, ලොග් වී, හිස් තිරයක් සහිත අලංකාර පයිප්ප සහිත තිර සුරැකුම වෙනුවට ආදේශ කළේය. එනම්, ප්‍රොසෙසර සම්පත් වලින් 100% ක් පරිභෝජනය කරන තිර සුරැකුමක් වෙනුවට, සම්පත් පරිභෝජනය නොකරන තවත් එකක් මම ස්ථාපනය කළෙමි. පසුව මම මගේ අනුමානය පරීක්ෂා කිරීමට විනාඩි 10 ක් බලා සිටියෙමි.

ඊළඟ සිනමා ශාලාවට පැමිණි ජේම්ස් කල්පනා කරමින් සිටියේ ස්ක්‍රීන් සේවර් එක ක්‍රියා විරහිත කිරීමට තමා කිලෝමීටර් 800ක් පමණ පියාසර කළ බව තම කළමනාකරුට පැහැදිලි කරන්නේ කෙසේද යන්නයි.

සඳෙහි යම් අවධියකදී කඩා වැටීම

සත්ය කථාව. දිනක් සඳෙහි අදියර මත රඳා පවතින මෘදුකාංග දෝෂයක් මතු විය. සඳෙහි සත්‍ය අවධියට ආසන්න ගණනය කිරීම සඳහා විවිධ MIT වැඩසටහන් වල බහුලව භාවිතා වන කුඩා පුරුද්දක් තිබුණි. GLS විසින් මෙම ක්‍රියාවලිය LISP වැඩසටහනකට ගොඩනඟා ඇති අතර එමඟින් ගොනුවක් ලියන විට අක්ෂර 80කට ආසන්න කාල මුද්‍රාවක් සහිත රේඛාවක් ප්‍රතිදානය කරයි. පණිවිඩයක පළමු පේළිය ඉතා දිගු වී ඊළඟ පේළියට යොමු වීම ඉතා කලාතුරකිනි. වැඩසටහන පසුව මෙම ගොනුව කියවන විට එය ශාප කළේය. පළමු පේළියේ දිග නිශ්චිත දිනය සහ වේලාව මත මෙන්ම, වේලා මුද්‍රාව මුද්‍රණය කරන අවස්ථාවේ අදියර පිරිවිතරයේ දිග මත රඳා පවතී. එනම්, දෝෂය වචනාර්ථයෙන් සඳෙහි අදියර මත රඳා පවතී!

පළමු කඩදාසි සංස්කරණය ප්‍රභාකර ගොනුව (Steele-1983) විස්තර කරන ලද දෝෂයට තුඩු දුන් එවැනි රේඛාවක උදාහරණයක් අඩංගු විය, නමුත් ටයිප්සෙටරය එය "සවිකර" ඇත. එතැන් සිට මෙය විස්තර කර ඇත්තේ "සඳ අදියර දෝෂයක්" ලෙසිනි.

කෙසේ වෙතත්, උපකල්පන සමඟ ප්රවේශම් වන්න. වසර කිහිපයකට පෙර, CERN (යුරෝපීය න්‍යෂ්ටික පර්යේෂණ මධ්‍යස්ථානය) හි ඉංජිනේරුවන් විශාල ඉලෙක්ට්‍රෝන-පොසිට්‍රෝන ඝට්ටනයේ සිදු කරන ලද අත්හදා බැලීම් වලදී දෝෂ වලට මුහුණ දුන්හ. විද්‍යාඥයින්ට ප්‍රතිඵල පෙන්වීමට පෙර මෙම උපකරණය මඟින් ජනනය කරන අතිවිශාල දත්ත ප්‍රමාණය පරිගණක ක්‍රියාකාරීව සකසන බැවින්, මෘදුකාංගය චන්ද්‍රයාගේ අවධියට කෙසේ හෝ සංවේදී බව බොහෝ දෙනා අනුමාන කළහ. මංමුලා සහගත ඉංජිනේරුවන් කිහිප දෙනෙක් සත්‍යයේ පතුලට පැමිණියහ. සඳ ගමන් කිරීමේදී පෘථිවිය විකෘති වීම නිසා කිලෝමීටර් 27ක් දිග වළල්ලේ ජ්‍යාමිතියෙහි සුළු වෙනසක් නිසා දෝෂය ඇති විය! මෙම කතාව භෞතික විද්‍යා ජනප්‍රවාදයට ඇතුළු වී ඇත්තේ “අංශු භෞතික විද්‍යාව පිළිබඳ නිව්ටන්ගේ පළිගැනීම” ලෙසින් වන අතර භෞතික විද්‍යාවේ සරලම සහ පැරණිතම නීති සහ වඩාත්ම දියුණු විද්‍යාත්මක සංකල්ප අතර සම්බන්ධය පිළිබඳ උදාහරණයකි.

වැසිකිළිය සේදීමෙන් දුම්රිය නතර වේ

මම අහල තියන හොඳම Hardware bug එක තමයි ප්‍රංශයේ අධිවේගී දුම්රියක. දෝෂය නිසා දුම්රියේ හදිසි තිරිංග ඇති විය, නමුත් එහි මගීන් සිටියේ නම් පමණි. එවැනි සෑම අවස්ථාවකදීම, දුම්රිය ධාවනයෙන් ඉවත් කර, පරීක්ෂා කළ නමුත් කිසිවක් සොයාගත නොහැකි විය. ඉන්පසු ඔහුව නැවත පේළියට යවන ලද අතර, ඔහු වහාම නැවතුමට කඩා වැටුණි.

එක් පරීක්ෂාවකදී දුම්රියේ ගමන් ගත් ඉංජිනේරුවෙක් වැසිකිළියට ගියේය. ඔහු ඉක්මනින් සෝදා ගත්තේය, BOOM! හදිසි නැවතුම.

ඉංජිනේරුවරයා රියදුරු අමතා මෙසේ ඇසීය.

- තිරිංග දැමීමට පෙර ඔබ කළේ කුමක්ද?

- හොඳයි, මම බැසීමේ වේගය අඩු කළා ...

මෙය අමුතු දෙයක් විය, මන්ද සාමාන්‍ය ක්‍රියාකාරිත්වය අතරතුර දුම්රිය දුසිම් වාරයක් බැසීමේදී මන්දගාමී වේ. දුම්රිය ඉදිරියට ගමන් කළ අතර ඊළඟ බැසීමේදී රියදුරු අනතුරු ඇඟවීය:

- මම වේගය අඩු කරන්නම්.

මොකුත් වුනේ නෑ.

- අවසාන තිරිංගයේදී ඔබ කළේ කුමක්ද? - රියදුරු ඇසුවා.

- හොඳයි, මම වැසිකිළියේ හිටියා ...

- හොඳයි, එහෙනම් වැසිකිළියට ගොස් අපි නැවත පහළට යන විට ඔබ කළ දේ කරන්න!

ඉංජිනේරුවරයා වැසිකිළියට ගිය අතර, රියදුරු අනතුරු ඇඟවූ විට: "මම වේගය අඩු කරමි," ඔහු වතුර සෝදා ගත්තේය. ඇත්ත වශයෙන්ම, දුම්රිය වහාම නතර විය.

දැන් ඔවුන්ට ගැටලුව ප්‍රතිනිෂ්පාදනය කළ හැකි අතර හේතුව සොයා ගැනීමට අවශ්‍ය විය.

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

FORTRAN වෛර කළ දොරටුව

මාස කිහිපයකට පෙර අපි දැක්කා ප්‍රධාන ගොඩබිමේ [මෙය හවායි හි] ජාල සම්බන්ධතා ඉතා මන්දගාමී වන බව. මෙය විනාඩි 10-15 අතර කාලයක් පැවතිය හැකි අතර පසුව හදිසියේම නැවත ඇති විය හැක. ටික වේලාවකට පසු, මගේ සගයා මට පැමිණිලි කළේ ප්‍රධාන භූමියේ ජාල සම්බන්ධතා ඇති බවයි පොදුවේ වැඩ කරන්නේ නෑ. ඔහු සතුව FORTRAN කේතයක් තිබූ අතර එය ගොඩබිමේ ඇති යන්ත්‍රයකට පිටපත් කිරීමට අවශ්‍ය විය, නමුත් එය කළ නොහැකි වූයේ "FTP උඩුගත කිරීම සම්පූර්ණ කිරීමට ජාලය ප්‍රමාණවත් කාලයක් රඳවා නොතිබීම" නිසාය.

ඔව්, සගයකු FORTRAN හි මූල කේතය සහිත ගොනුවක් ගොඩබිමේ ඇති යන්ත්‍රයකට FTP කිරීමට උත්සාහ කළ විට ජාල අසාර්ථක වීම් සිදු වූ බව පෙනී ගියේය. අපි ගොනුව සංරක්ෂිත කිරීමට උත්සාහ කළෙමු: පසුව එය සුමටව පිටපත් කර ඇත (නමුත් ඉලක්ක යන්ත්රයට අසුරන යන්ත්රයක් නොතිබුණි, එබැවින් ගැටළුව විසඳා නැත). අන්තිමට අපි FORTRAN කේතය ඉතා කුඩා කැබලිවලට "බෙදා" එකින් එක යැව්වෙමු. බොහෝ කොටස් ගැටළු නොමැතිව පිටපත් කර ඇත, නමුත් කෑලි කිහිපයක් සමත් වූයේ නැත, නැතහොත් පසුව සම්මත විය ගණනාවක් ඇත උත්සාහයන්.

අපි ගැටලුකාරී ඡේද පරීක්ෂා කළ විට, ඒවාට පොදු යමක් ඇති බව අපි සොයා ගත්තෙමු: ඒවා සියල්ලම C ප්‍රාග්ධනයෙන් (FORTRAN හි අදහස් දැක්වීමට ප්‍රිය කරන සගයකු ලෙස) රේඛා වලින් ආරම්භ වූ සහ අවසන් වූ අදහස් කොටස් අඩංගු විය. අපි ගොඩබිමේ ජාල විශේෂඥයින්ට විද්‍යුත් තැපැල් කර උදව් ඉල්ලා සිටියෙමු. ඇත්ත වශයෙන්ම, ඔවුන්ට FTP හරහා මාරු කළ නොහැකි අපගේ ලිපිගොනු වල සාම්පල බැලීමට අවශ්‍ය විය... නමුත් අපගේ ලිපි ඒවාට ළඟා නොවීය. අන්තිමේදී අපි සරල දෙයක් ඉදිරිපත් කළා විස්තර කරන්නමාරු කළ නොහැකි ගොනු මොන වගේද. එය සාර්ථක විය :) [ගැටලු සහගත FORTRAN කමෙන්ට් එකක උදාහරණයක් මෙහි එක් කිරීමට මම නිර්භීතද? බොහෝ විට එය වටින්නේ නැත!]

අවසානයේදී අපි එය තේරුම් ගැනීමට සමත් විය. අපගේ කැම්පස් කොටස සහ ප්‍රධාන භූමි ජාලය අතර නව දොරටුවක් මෑතකදී ස්ථාපනය කරන ලදී. එය නැවත නැවතත් කැපිටල් සී කැපිටල් අඩංගු පැකට් සම්ප්‍රේෂණය කිරීමේ විශාල දුෂ්කරතා ඇති විය! මෙම පැකට් කිහිපයකින් පමණක් සියලුම ද්වාර සම්පත් ලබා ගත හැකි අතර අනෙකුත් බොහෝ පැකට් හරහා යාම වැළැක්විය හැකිය. අපි ගේට්වේ නිෂ්පාදකයාට පැමිණිලි කළෙමු ... ඔවුන් පිළිතුරු දුන්නේ ය: "ඔහ්, ඔව්, ඔබ නැවත නැවතත් C දෝෂයකට මුහුණ දී ඇත! අපි ඔහු ගැන දැනටමත් දන්නවා. ” අපි අවසානයේ වෙනත් නිෂ්පාදකයෙකුගෙන් නව ද්වාරයක් මිලදී ගැනීමෙන් ගැටළුව විසඳා ගත්තෙමු (හිටපු තැනැත්තාගේ ආරක්ෂාව සඳහා, FORTRAN වැඩසටහන් මාරු කිරීමට නොහැකි වීම සමහරුන්ට වාසියක් විය හැකිය!).

දුෂ්කර කාලය

වසර කිහිපයකට පෙර, අදියර 40 සායනික අත්හදා බැලීම්වල පිරිවැය අඩු කිරීම සඳහා පර්ල් හි ETL පද්ධතියක් නිර්මාණය කිරීමට වැඩ කරමින් සිටියදී, මට දින 000 ක් පමණ සැකසීමට අවශ්‍ය විය. ඔවුන්ගෙන් දෙදෙනෙකු විභාගය සමත් නොවීය. මෙම දිනයන් සේවාදායකයා විසින් සපයන ලද දත්ත වලින් ලබා ගත් බැවින් මෙය මට එතරම් කරදරයක් නොවීය. නමුත් මම මුල් දත්ත පරීක්ෂා කරන විට, මෙම දිනයන් ජනවාරි 1, 2011 සහ ජනවාරි 1, 2007 බව පෙනී ගියේය. මම දැන් ලියා ඇති වැඩසටහනේ දෝෂය අඩංගු බව මම සිතුවෙමි, නමුත් එය දැනටමත් අවුරුදු 30 ක් බව පෙනී ගියේය. පැරණි. මෘදුකාංග පරිසර පද්ධතිය ගැන නොදන්නා අයට මෙය අද්භූත ලෙස පෙනෙනු ඇත. වෙනත් සමාගමක් මුදල් ඉපයීමට දිගු කලක් තිස්සේ ගත් තීරණය නිසා, මගේ සේවාදායකයා මට මුදල් ගෙවා එක් සමාගමක් අහම්බෙන් සහ අනෙක හිතාමතා හඳුන්වා දුන් දෝෂයක් නිවැරදි කිරීමට. මා කතා කරන්නේ කුමක් දැයි ඔබට වැටහීමට නම්, දෝෂයක් බවට පත් වූ විශේෂාංගය එක් කළ සමාගම ගැන මෙන්ම මා විසින් සකස් කරන ලද අද්භූත දෝෂයට දායක වූ තවත් රසවත් සිදුවීම් කිහිපයක් ගැන මට කතා කළ යුතුය.

හොඳ පැරණි දිනවල, ඇපල් පරිගණක සමහර විට ස්වයංසිද්ධව ඔවුන්ගේ දිනය 1 ජනවාරි 1904 දක්වා නැවත සකසනු ඇත. හේතුව සරලයි: එය දිනය සහ වේලාව නිරීක්ෂණය කිරීම සඳහා බැටරි බලයෙන් ක්‍රියාත්මක වන “පද්ධති ඔරලෝසුවක්” භාවිතා කළේය. බැටරිය මිය ගිය විට සිදු වූයේ කුමක්ද? පරිගණක යුගයක් ආරම්භයේ සිට තත්පර ගණනින් දිනය නිරීක්ෂණය කිරීමට පටන් ගත්තේය. යුගයෙන් අප අදහස් කළේ යොමු මුල් දිනය වන අතර, Macintoshes සඳහා එය 1 ජනවාරි 1904 විය. තවද බැටරිය මිය ගිය පසු, වත්මන් දිනය නිශ්චිත දිනයට යළි සකසන ලදී. නමුත් මෙය සිදු වූයේ ඇයි?

මීට පෙර, Apple විසින් මුල් දිනයේ සිට තත්පර ගණන ගබඩා කිරීම සඳහා බිටු 32 ක් භාවිතා කරන ලදී. එක් බිට් එකකට අගයන් දෙකෙන් එකක් ගබඩා කළ හැක - 1 හෝ 0. බිටු දෙකකට අගයන් හතරකින් එකක් ගබඩා කළ හැක: 00, 01, 10, 11. බිටු තුනක් - අටෙන් එක් අගයක්: 000, 001, 010, 011, 100 , 101, 110, 111, ආදිය. 32 ට අගයන් 232 න් එකක් ගබඩා කළ හැකිය, එනම් තත්පර 4. Apple දිනයන් සඳහා, මෙය වසර 294 කට පමණ සමාන වේ, එබැවින් පැරණි Macs හට 967 න් පසු දිනයන් හැසිරවිය නොහැක. තවද පද්ධතියේ බැටරිය මිය ගියහොත්, එම දිනය යුගයේ ආරම්භයේ සිට තත්පර 296 දක්වා නැවත සකසනු ලබන අතර, ඔබ පරිගණකය සක්‍රිය කරන සෑම අවස්ථාවකම (හෝ ඔබ නව බැටරියක් මිලදී ගන්නා තෙක්) දිනය අතින් සැකසිය යුතුය.

කෙසේ වෙතත්, යුගයේ සිට දින තත්පර ලෙස ගබඩා කිරීමට Apple ගත් තීරණයෙන් අදහස් කළේ අපට පෙනෙන පරිදි දුරදිග යන ප්‍රතිවිපාක ඇති කළ යුගයට පෙර දින හැසිරවීමට නොහැකි වූ බවයි. Apple හඳුන්වා දුන්නේ දෝෂයක් නොව විශේෂාංගයකි. වෙනත් දේ අතර, මෙයින් අදහස් කළේ මැකින්ටොෂ් මෙහෙයුම් පද්ධතිය "මිලේනියම් බග්" (සීමාවන් මග හැරීම සඳහා තමන්ගේම දින පද්ධති ඇති බොහෝ මැක් යෙදුම් ගැන පැවසිය නොහැකි) ප්‍රතිශක්තිකරණ බවයි.

ඉදිරියට යන්න. පුද්ගලික පරිගණකය සාර්ථක කර ගත් Apple පරිගණක වල ​​VisiCalc තිබුනද, PC විප්ලවය දියත් කිරීමට උදවු වූ IBM හි "killer application" අපි Lotus 1-2-3 භාවිතා කළෙමු. සාධාරණ ලෙස, 1-2-3 දර්ශනය නොවූයේ නම්, පරිගණක කිසිසේත්ම ඉවත්ව නොයනු ඇති අතර පුද්ගලික පරිගණකවල ඉතිහාසය බෙහෙවින් වෙනස් ලෙස වර්ධනය විය හැකිය. නෙළුම් 1-2-3 වැරදි ලෙස 1900 අධික වසරක් ලෙස සැලකේ. මයික්‍රොසොෆ්ට් සිය පළමු පැතුරුම්පත වන මල්ටිප්ලෑන් නිකුත් කරන විට එය වෙළඳපොලේ කුඩා කොටසක් අල්ලා ගත්තේය. ඔවුන් එක්සෙල් ව්‍යාපෘතිය දියත් කරන විට, ඔවුන් තීරණය කළේ ලෝටස් 1-2-3 වෙතින් පේළි සහ තීරු නම් කිරීමේ ක්‍රමය පිටපත් කිරීමට පමණක් නොව, 1900 අධික වසරක් ලෙස හිතාමතාම සැලකීමෙන් දෝෂ අනුකූලතාව සහතික කිරීමට ය. මෙම ගැටලුව අදටත් පවතී. එනම්, 1-2-3 හි මෙය දෝෂයක් විය, නමුත් එක්සෙල් හි එය දැනුවත් තීරණයක් වූ අතර එය සියලුම 1-2-3 පරිශීලකයින්ට ඔවුන්ගේ වගු වැරදි වුවද දත්ත වෙනස් නොකර Excel වෙත ආයාත කළ හැකි බව සහතික විය.

නමුත් තවත් ගැටලුවක් විය. පළමුව, මයික්‍රොසොෆ්ට් විසින් Macintosh සඳහා Excel නිකුත් කරන ලදී, එය 1 ජනවාරි 1904 ට පෙර දින හඳුනා නොගත්තේය. තවද Excel හි, 1 ජනවාරි 1900 වන දින යුගයේ ආරම්භය ලෙස සැලකේ. එබැවින්, සංවර්ධකයින් විසින් වෙනසක් සිදු කරන ලද අතර එමඟින් ඔවුන්ගේ වැඩසටහන යුගයේ වර්ගය හඳුනාගෙන අපේක්ෂිත යුගයට අනුකූලව දත්ත ගබඩා කර ඇත. මයික්‍රොසොෆ්ට් මේ ගැන පැහැදිලි කිරීමේ ලිපියක් පවා ලිවීය. මෙම තීරණය මගේ දෝෂයට හේතු විය.

මගේ ETL පද්ධතියට Windows මත නිර්මාණය කරන ලද පාරිභෝගිකයන්ගෙන් Excel පැතුරුම්පත් ලැබුණි, නමුත් Mac මතද නිර්මාණය කළ හැක. එබැවින්, වගුවේ යුගයේ ආරම්භය 1 ජනවාරි 1900 හෝ 1 ජනවාරි 1904 විය හැකිය. සොයා ගන්නේ කෙසේද? Excel ගොනු ආකෘතිය අවශ්‍ය තොරතුරු පෙන්වයි, නමුත් මා භාවිතා කළ විග්‍රහකය එය නොපෙන්වයි (දැන් එය එසේ කරයි), සහ ඔබ නිශ්චිත වගුවක් සඳහා යුගය දන්නා බව උපකල්පනය කළේය. Excel ද්විමය ආකෘතිය තේරුම් ගැනීමට සහ විග්‍රහක කතුවරයාට පැච් එකක් යැවීමට මට වැඩි කාලයක් ගත කිරීමට ඉඩ තිබුණි, නමුත් මට සේවාදායකයා සඳහා තවත් බොහෝ දේ කිරීමට තිබුණි, එබැවින් මම ඉක්මනින් යුගය තීරණය කිරීම සඳහා හූරිස්ටික් එකක් ලිවීය. ඇය සරල විය.

Excel හි, 5 ජූලි 1998 දිනය "07-05-98" (වැදගත් ඇමරිකානු පද්ධතිය), "ජූලි 5, 98", "ජූලි 5, 1998", "5-ජූලි-98" හෝ ආකෘතියෙන් නිරූපණය කළ හැක. වෙනත් ආකෘතියක් තවත් වැඩකට නැති ආකෘතියක් (උපහාසයට කරුණක් නම්, මගේ Excel අනුවාදය ලබා නොදුන් ආකෘතිවලින් එකක් ISO 8601 වේ). කෙසේ වෙතත්, වගුව තුළ, ආකෘතිකරණය නොකළ දිනය යුග-35981 සඳහා "1900" හෝ යුග-34519 සඳහා "1904" ලෙස ගබඩා කර ඇත (සංඛ්‍යා යුගයේ සිට දින ගණන නියෝජනය කරයි). මම සරලව ෆෝමැට් කළ දිනයෙන් වර්ෂය උකහා ගැනීමට සරල විග්‍රහයක් භාවිතා කළ අතර, පසුව ෆෝමැට් නොකළ දිනයෙන් වර්ෂය උපුටා ගැනීමට එක්සෙල් විග්‍රහකය භාවිතා කළෙමි. අගයන් දෙකම වසර 4 කින් වෙනස් නම්, මම epoch-1904 සමඟ පද්ධතියක් භාවිතා කරන බව මම දැන සිටියෙමි.

ඇයි මම ආකෘතිගත දින භාවිතා නොකළේ? මන්ද යත් 5 ජූලි 1998 "ජූලි, 98" ලෙස ෆෝමැට් කළ හැක්කේ මාසය අහිමි වූ දිනය සමඟිනි. විවිධ ආකාරවලින් ඒවා නිර්මාණය කළ බොහෝ සමාගම් වලින් අපට වගු ලැබුණි, දිනයන් සොයා ගැනීම අපට (මේ අවස්ථාවේ දී, මට) භාර විය. ඊට අමතරව, Excel එය නිවැරදිව ලබා ගන්නේ නම්, අපිත් එසේ කළ යුතුයි!

ඒ සමගම මට 39082 හමු විය. නෙළුම් 1-2-3 1900 අධික වසරක් ලෙස සැලකූ බවත්, මෙය Excel හි විශ්වාසවන්තව පුනරාවර්තනය වූ බවත් මම ඔබට මතක් කරමි. මෙය 1900 වර්ෂයට එක් දිනක් එකතු කළ බැවින්, බොහෝ දින ගණනය කිරීමේ කාර්යයන් එදිනම වැරදි විය හැකිය. එනම්, 39082 1 ජනවාරි 2011 (මැක් මත) හෝ දෙසැම්බර් 31, 2006 (වින්ඩෝස් මත) විය හැකිය. මගේ “වසර විග්‍රහකය” 2011 වර්ෂය ආකෘතිගත අගයෙන් උපුටා ගත්තේ නම්, සියල්ල හොඳින් තිබේ. නමුත් Excel විග්‍රහකය භාවිතා කරන්නේ කුමන යුගයක්ද යන්න නොදන්නා නිසා, එය පෙරනිමියෙන් epoch-1900 වෙත පැමිණ, 2006 වර්ෂය නැවත ලබා දෙයි. මගේ යෙදුමේ වෙනස අවුරුදු 5ක් බව දුටුවා, එය දෝෂයක් ලෙස සලකා, එය ලොග් කර, ආකෘතිකරණය නොකළ අගයක් ආපසු ලබා දුන්නා.

මෙය මඟහරවා ගැනීමට, මම මෙය ලිව්වෙමි (ව්‍යාජ කේතය):

diff = formatted_year - parsed_year
if 0 == diff
    assume 1900 date system
if 4 == diff
    assume 1904 date system
if 5 == diff and month is December and day is 31
    assume 1904 date system

ඉන්පසු දින 40ම නිවැරදිව විග්‍රහ කර ඇත.

විශාල මුද්රණ රැකියා මධ්යයේ

1980 ගණන්වල මුල් භාගයේදී, මගේ පියා Storage Technology හි සේවය කළේය, එය දැනට අක්‍රියව පවතින අංශයක් වන අතර එය අධිවේගී ටේප් පෝෂණය සඳහා ටේප් ඩ්‍රයිව් සහ වායුමය පද්ධති නිර්මාණය කළේය.

ඔවුන් ධාවක ප්‍රතිනිර්මාණය කරන ලද අතර එමඟින් එක් මධ්‍යම “A” ධාවකයක් “B” ධාවක හතකට සම්බන්ධ කළ හැකි වන අතර, “A” ධාවකය පාලනය කරන RAM හි කුඩා OS මඟින් සියලුම “B” ධාවකයන් වෙත කියවීමේ සහ ලිවීමේ මෙහෙයුම් පැවරිය හැකිය.

"A" ධාවකය ආරම්භ කරන සෑම අවස්ථාවකම, මෙහෙයුම් පද්ධතිය එහි මතකයට පැටවීම සඳහා "A" වෙත සම්බන්ධ කර ඇති පර්යන්ත ධාවකයට නම්ය තැටියක් ඇතුල් කිරීම අවශ්ය විය. එය අතිශයින් ප්රාථමික විය: පරිගණක බලය 8-bit microcontroller මගින් සපයන ලදී.

එවැනි උපකරණ සඳහා ඉලක්කගත ප්රේක්ෂකයින් වූයේ ඉතා විශාල දත්ත ගබඩා සහිත සමාගම් - බැංකු, සිල්ලර දාම, ආදිය - ලිපින ලේබල් හෝ බැංකු ප්රකාශයන් ගොඩක් මුද්රණය කිරීමට අවශ්ය විය.

එක් සේවාදායකයකුට ගැටලුවක් විය. මුද්‍රණ කාර්යයක් මධ්‍යයේ, එක් විශේෂිත ධාවකයක් “A” ක්‍රියා කිරීම නැවැත්විය හැකි අතර, එමඟින් සම්පූර්ණ කාර්යය ඇණහිටීමට සිදුවේ. ධාවකයේ ක්‍රියාකාරිත්වය යථා තත්වයට පත් කිරීම සඳහා, කාර්ය මණ්ඩලයට සියල්ල නැවත ආරම්භ කිරීමට සිදු විය. මෙය සිදු වූයේ පැය හයක කාර්යයක් මධ්‍යයේ නම්, මිල අධික පරිගණක කාලය විශාල ප්‍රමාණයක් අහිමි වූ අතර සම්පූර්ණ මෙහෙයුමේ කාලසටහන කඩාකප්පල් විය.

ස්ටෝරේජ් ටෙක්නොලොජීස් වෙතින් කාර්මිකයන් යවන ලදී. නමුත් ඔවුන්ගේ උපරිම උත්සාහය නොතකා, පරීක්ෂණ තත්ව යටතේ දෝෂය ප්‍රතිනිෂ්පාදනය කිරීමට ඔවුන්ට නොහැකි විය: එය විශාල මුද්‍රණ රැකියා මධ්‍යයේ සිදු වූ බවක් පෙනෙන්නට තිබුණි. ගැටලුව දෘඪාංග නොවේ, ඔවුන් හැකි සෑම දෙයක්ම ප්රතිස්ථාපනය කළා: RAM, ක්ෂුද්ර පාලකය, floppy ධාවකය, ටේප් ධාවකයේ සෑම සිතාගත හැකි කොටසක් - ගැටලුව දිගටම පැවතුනි.

ඊට පස්සේ කාර්මික ශිල්පීන් මූලස්ථානයට කතා කරලා Expert ට කතා කළා.

විශේෂඥයා පුටුවක් සහ කෝපි කෝප්පයක් අතට ගෙන, පරිගණක කාමරයේ වාඩි වී-ඒ දවස්වල පරිගණක සඳහා වෙන් වූ කාමර තිබුණා- සහ කාර්ය මණ්ඩලය විශාල මුද්රණ කාර්යයක් පෝලිම් කරන ආකාරය බලා සිටියේය. විශේෂඥයා අසමත් වීමක් සිදු වන තෙක් බලා සිටියේය - එය සිදු විය. හැමෝම විශේෂඥයා දෙස බැලූ නමුත් මෙය සිදු වූයේ මන්දැයි ඔහුට වැටහුණේ නැත. එබැවින් ඔහු රැකියාව නැවත පෝලිම් කරන ලෙස නියෝග කළ අතර, සියලු කාර්ය මණ්ඩලය සහ කාර්මික ශිල්පීන් නැවත සේවයට පැමිණියහ.

විශේෂඥයා නැවතත් පුටුවේ වාඩි වී අසාර්ථක වීමට බලා සිටීමට පටන් ගත්තේය. පැය හයක් පමණ ගත වූ අතර අසාර්ථක විය. සෑම දෙයක්ම සිදු වූයේ මිනිසුන්ගෙන් පිරුණු කාමරයක බව හැර විශේෂඥයාට නැවතත් අදහසක් නොතිබුණි. ඔහු මෙහෙයුම නැවත ආරම්භ කිරීමට නියෝග කර, නැවත වාඩි වී බලා සිටියේය.

තුන්වන අසාර්ථකත්වය වන විට, විශේෂඥයා යමක් දුටුවේය. විදේශීය ධාවකයක පුද්ගලයින් ටේප් වෙනස් කිරීමේදී අසාර්ථකත්වය සිදුවිය. එපමණක් නොව, එක් සේවකයෙකු බිම ඇති ටයිල් එකක් හරහා ගමන් කිරීමත් සමඟම අසාර්ථකත්වය සිදු විය.

උස් බිම අඟල් 6 සිට 8 දක්වා උසට ඇති ඇලුමිනියම් ටයිල් වලින් සාදා ඇත. කිසිවකුට අත්වැරදීමකින් වැදගත් රැහැනක පෑගීම වැලැක්වීම සඳහා පරිගණකවල වයර් ගණනාවක් උස් බිම යටට දිව ගියේය. උස් බිමට යටින් සුන්බුන් ඇතිවීම වැළැක්වීම සඳහා උළු ඉතා තදින් තබා ඇත.

එක් ටයිල් එකක් විකෘති වී ඇති බව විශේෂඥයාට වැටහුණි. සේවකයෙකු එහි කෙළවරට පා තැබූ විට, ටයිල් එකේ දාර යාබද උළු මත අතුල්ලයි. උළු සම්බන්ධ කරන ලද ප්ලාස්ටික් කොටස් ද ඒවා සමඟ අතුල්ලන ලද අතර එමඟින් ගුවන් විදුලි සංඛ්‍යාත බාධා ඇති කළ ස්ථිතික ක්ෂුද්‍ර විසර්ජන ඇති විය.

අද වන විට RAM රේඩියෝ සංඛ්‍යාත මැදිහත්වීම් වලින් වඩාත් හොඳින් ආරක්ෂා වී ඇත. නමුත් එම වසරවලදී මෙය එසේ නොවීය. මෙම මැදිහත්වීම මතකය කඩාකප්පල් කරන බව විශේෂඥයා වටහා ගත් අතර, එය සමඟ මෙහෙයුම් පද්ධතියේ ක්රියාකාරිත්වය. ඔහු ආධාරක සේවාව අමතා, නව ටයිල් ඇණවුම් කර, ඒවා තමා විසින්ම ස්ථාපනය කර, ගැටළුව අතුරුදහන් විය.

වඩදිය වැඩියි!

කතාව සිදු වූයේ පෝර්ට්ස්මූත් හි කාර්යාලයක හතරවන හෝ පස්වන මහලේ (මම හිතන්නේ) ඩොක්ස් ප්‍රදේශයේ සේවාදායක කාමරයක ය.

දිනක් ප්‍රධාන දත්ත ගබඩාව සහිත Unix සේවාදායකය බිඳ වැටුණි. ඔවුන් ඔහුව නැවත ආරම්භ කළ නමුත් ඔහු සතුටින් නැවත නැවතත් වැටෙන්නට විය. උපකාරක සේවාවෙන් කෙනෙකු ඇමතීමට අපි තීරණය කළෙමු.

සපෝට් එකා... මම හිතන්නේ එයාගේ නම මාර්ක් කියලා, ඒත් කමක් නෑ... මම හිතන්නේ මම එයාව දන්නේ නැහැ. කමක් නෑ ඇත්තටම. අපි මාර්ක් සමඟ රැඳී සිටිමු, හරිද? මහා.

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

එදිනම සවස නැවතත් සේවාදායකය බිඳ වැටේ. කතාවත් එහෙමයි... සර්වර් එක නගින්නෙ නෑ. මාර්ක් දුරස්ථව උදව් කිරීමට උත්සාහ කරයි, නමුත් සේවාදායකයාට සේවාදායකය ආරම්භ කළ නොහැක.

තවත් දුම්රියක්, බස් රථයක්, ලෙමන් මෙරිංගු හෝ වෙනත් ජරාවක්, සහ මාර්ක් නැවතත් පෝර්ට්ස්මූත් වෙත පැමිණ ඇත. බලන්න, සේවාදායකය කිසිදු ගැටළුවක් නොමැතිව ආරම්භ වේ! ආශ්චර්යය. මාර්ක් මෙහෙයුම් පද්ධතිය හෝ මෘදුකාංගය සමඟ සියල්ල පිළිවෙලට තිබේදැයි පරීක්ෂා කිරීමට පැය කිහිපයක් ගත කර ලීඩ්ස් වෙත පිටත් වේ.

දවසේ මැද භාගයේදී සේවාදායකය බිඳ වැටේ (එය පහසු කර ගන්න!). මෙවර සේවාදායකය ප්‍රතිස්ථාපනය කිරීම සඳහා දෘඩාංග ආධාරක පුද්ගලයින් ගෙන ඒම සාධාරණ බව පෙනේ. නමුත් නැහැ, පැය 10 කට පමණ පසු එය ද වැටේ.

තත්වය දින කිහිපයක් නැවත නැවතත් සිදු විය. සේවාදායකය ක්‍රියා කරයි, පැය 10 කට පමණ පසු බිඳ වැටෙන අතර ඊළඟ පැය 2 සඳහා ආරම්භ නොවේ. ඔවුන් සිසිලනය, මතක කාන්දුවීම් පරීක්ෂා කළා, ඔවුන් සියල්ල පරීක්ෂා කළා, නමුත් කිසිවක් සොයා ගත්තේ නැහැ. එවිට කඩා වැටීම් නතර විය.

සතිය ගෙවිලා ගියේ නොසැලකිලිමත්ව... හැමෝම සතුටින්. සියල්ල නැවත ආරම්භ වන තුරු සතුටුයි. පින්තූරයත් ඒ වගේමයි. පැය 10ක් වැඩ, පැය 2-3ක් වැඩ අක්‍රිය...

එතකොට කෙනෙක් (මම හිතන්නේ එයාලා මට කිව්වා මේ පුද්ගලයාට තොරතුරු තාක්ෂණයට කිසිම සම්බන්ධයක් නැහැ කියලා)

"එය වඩදිය!"

විස්මයාර්ථය හිස් බැල්මකින් හමු වූ අතර, යම් කෙනෙකුගේ අත ආරක්ෂක ඇමතුම් බොත්තම වෙත පැකිලෙන්නට ඇත.

"එය වඩදිය සමඟ වැඩ කිරීම නවත්වයි."

IT සහය සේවකයන්ට මෙය සම්පූර්ණයෙන්ම ආගන්තුක සංකල්පයක් ලෙස පෙනෙනු ඇත, කෝපි සඳහා වාඩි වී සිටින අතරතුර Tide Yearbook කියවීමට ඉඩක් නැත. සර්වර් එක ෆේල් නැතුව සතියක් වැඩ කරපු නිසා මේක වඩදිය බාදියට කිසිම විදියකින් සම්බන්ධ කරන්න බෑ කියලයි ඔවුන් පැහැදිලි කලේ.

"පසුගිය සතියේ වඩදිය අඩුයි, නමුත් මේ සතියේ එය ඉහළයි."

යාත්‍රා බලපත්‍රයක් නැති අය සඳහා කුඩා පාරිභාෂිතයක්. වඩදිය චන්ද්ර චක්රය මත රඳා පවතී. තවද පෘථිවිය භ්‍රමණය වන විට, සෑම පැය 12,5 කට වරක් සූර්යයාගේ සහ චන්ද්‍රයාගේ ගුරුත්වාකර්ෂණ බලය උදම් රළ ඇති කරයි. පැය 12,5 ක චක්‍රයේ ආරම්භයේ දී වඩදිය බාදිය ඇති වන අතර චක්‍රයේ මධ්‍යයේ ඉබ්බා ඇති අතර අවසානයේ නැවත වඩදිය බාදිය ඇත. නමුත් චන්ද්‍රයාගේ කක්ෂය වෙනස් වන විට අඩු වඩදිය හා වඩදිය අතර වෙනසද වෙනස් වේ. චන්ද්‍රයා සූර්යයා සහ පෘථිවිය අතර හෝ පෘථිවියේ ප්‍රතිවිරුද්ධ පැත්තේ (පූර්ණ සඳ හෝ සඳ නොමැති) සිටින විට, අපට Syzygyn වඩදිය බාදිය ලැබේ - ඉහළම වඩදිය සහ අඩුම වඩදිය. අර්ධ සඳේදී අපට චතුරස්රාකාර වඩදිය බාදිය ලැබේ - අඩුම වඩදිය. අන්ත දෙක අතර වෙනස බොහෝ සෙයින් අඩු වේ. චන්ද්ර චක්රය දින 28 ක් පවතී: syzygian - quadrature - syzygian - quadrature.

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

රොකට්ටුව සඳහා පියාසර මෙහෙයුම

විශාල (රේඛා 400 ක් පමණ) රොකට් දියත් කිරීමේ පාලන සහ අධීක්ෂණ පද්ධතියක් මෙහෙයුම් පද්ධතියේ නව අනුවාද, සම්පාදක සහ භාෂාව වෙත ගෙනයාමේ කාර්යය මට පැවරී ඇත. වඩාත් නිවැරදිව, Solaris 2.5.1 සිට Solaris 7 දක්වා සහ Ada 83 හි ලියා ඇති Verdix Ada Development System (VADS) සිට Ada 95 හි ලියා ඇති Rational Apex Ada පද්ධතිය දක්වා. VADS Rational විසින් මිලදී ගන්නා ලද අතර එහි නිෂ්පාදනය වූයේ යල්පැන ඇති නමුත්, Apex compiler වෙත සංක්‍රමණය පහසු කිරීම සඳහා Rational විසින් VADS-විශේෂිත පැකේජවල අනුකූල අනුවාද ක්‍රියාත්මක කිරීමට උත්සාහ කළද.

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

ඒ වගේම ස්තුති දිනට පෙර සිකුරාදා දුරකථනය නාද විය.

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

පෙර මාසවලදී, මෙම ගණන් කිරීමේ අභියෝගය සිය ගණනක් විවිධ වෙනස්කම් වලින් ධාවනය කර ඇති අතර, සුළු ඉක්කාවන් කිහිපයක් පමණි. එබැවින් මෙය සිදුවීමේ සම්භාවිතාව ඉතා අඩු නමුත් එහි ප්රතිවිපාක ඉතා වැදගත් විය. මෙම සාධක දෙකම ගුණ කරන්න, එවිට ප්‍රවෘත්ති මට සහ ඉංජිනේරුවන් සහ කළමනාකරුවන් දුසිම් ගණනකට විනාශ වූ නිවාඩු සතියක් පුරෝකථනය කර ඇති බව ඔබට වැටහෙනු ඇත.

ඒ වගේම සිස්ටම් එක පෝට් කරපු කෙනා විදියට මට අවධානය යොමු වුණා.

බොහෝ ආරක්‍ෂක-විවේචනාත්මක පද්ධති මෙන්ම, බොහෝ පරාමිති ලොග් වී ඇත, එබැවින් පද්ධතිය බිඳ වැටීමට පෙර ක්‍රියාත්මක කරන ලද කේත පේළි කිහිපයක් හඳුනා ගැනීම තරමක් පහසු විය. ඇත්ත වශයෙන්ම, ඔවුන් ගැන අසාමාන්‍ය කිසිවක් නොතිබුණි; එම ප්‍රකාශන එකම ධාවන කාලය තුළ වචනාර්ථයෙන් දහස් වාරයක් සාර්ථකව ක්‍රියාත්මක කර ඇත.

අපි Apex එකේ අයව Rational එකට කැඳෙව්වේ ඒ අය තමයි compiler එක Develop කරපු නිසා සහ ඒ අය හදපු routines සමහරක් සැක සහිත කේතයෙන් කියන නිසා. වචනාර්ථයෙන් ජාතික වැදගත්කමකින් යුත් ගැටලුවක මුලට යාමේ අවශ්‍යතාවක් ඇති බව ඔවුන් (සහ අන් සියල්ලන්ම) පැහැදුණා.

සඟරාවල රසවත් කිසිවක් නොතිබූ බැවින්, දේශීය රසායනාගාරයක ගැටලුව ප්රතිනිෂ්පාදනය කිරීමට උත්සාහ කිරීමට අපි තීරණය කළා. මෙම ඉසව්ව දළ වශයෙන් ලකුණු 1000කට වරක් සිදු වූ බැවින් මෙය පහසු කාර්යයක් නොවීය. එක් සැකකටයුතු හේතුවක් වූයේ වෙළෙන්දා විසින් සංවර්ධනය කරන ලද mutex ශ්‍රිතයකට ඇමතුමක් (VADS සංක්‍රමණ පැකේජයේ කොටසක්) Unlock අගුලු හැරීමට තුඩු දුන්නේ නැත. ශ්‍රිතය ලෙස හැඳින්වූ සැකසුම් නූල සෑම තත්පරයකම නාමිකව පැමිණෙන හෘද ස්පන්දන පණිවිඩ සකසන ලදී. අපි සංඛ්‍යාතය 10 Hz දක්වා, එනම් තත්පරයට 10 වතාවක් දක්වා ඉහළ නංවා ධාවනය ආරම්භ කළෙමු. පැයකට පමණ පසු පද්ධතිය අගුලු දමා ඇත. ලොගයේ, වාර්තාගත පණිවිඩවල අනුපිළිවෙල අසාර්ථක පරීක්ෂණයේදී සමාන බව අපි දුටුවෙමු. අපි තවත් ධාවන කිහිපයක් සිදු කළෙමු, පද්ධතිය ආරම්භයේ සිට මිනිත්තු 45-90 කට පසුව අඛණ්ඩව අවහිර කරන ලද අතර, සෑම අවස්ථාවකදීම ලොගය එකම මාර්ගයක් අඩංගු විය. අපි තාක්‍ෂණිකව විවිධ කේත ක්‍රියාත්මක කළත් - පණිවිඩ සංඛ්‍යාතය වෙනස් - පද්ධතියේ හැසිරීම එක හා සමානයි, එබැවින් මෙම පැටවීමේ දර්ශනය එකම ගැටළුවක් ඇති කරන බව අපට විශ්වාස විය.

දැන් අපට ප්‍රකාශන අනුපිළිවෙලෙහි හරියටම අවහිර කිරීම සිදු වූයේ කොතැනදැයි සොයා ගැනීමට අවශ්‍ය විය.

මෙම පද්ධතිය ක්‍රියාත්මක කිරීම Ada කාර්ය පද්ධතිය භාවිතා කළ අතර එය ඇදහිය නොහැකි තරම් දුර්වල ලෙස භාවිතා කළේය. Tasks යනු Ada හි ඉහළ මට්ටමේ සමගාමීව ක්‍රියාත්මක කළ හැකි නිර්මාණයකි, ක්‍රියාත්මක කිරීමේ නූල් වැනි දෙයක්, භාෂාව තුළම පමණක් ගොඩනගා ඇත. කාර්යයන් දෙකක් සන්නිවේදනය කිරීමට අවශ්‍ය වූ විට, ඔවුන් "රැස්වීමක් සකසා", අවශ්‍ය දත්ත හුවමාරු කර, පසුව හමුවීම නවතා ඔවුන්ගේ ස්වාධීන ක්‍රියාත්මක කිරීම් වෙත ආපසු පැමිණේ. කෙසේ වෙතත්, පද්ධතිය වෙනස් ආකාරයකින් ක්රියාත්මක විය. ඉලක්ක කාර්යයක් හමුවීමෙන් පසුව, එම ඉලක්ක කාර්යය වෙනත් කාර්යයක් සමඟින්, පසුව තුන්වන කාර්යයක් සමඟින්, සහ යම් සැකසීමක් අවසන් වන තෙක් නැවත නැවතත් සිදු විය. මෙයින් පසු, මෙම සියලු හමුවීම් අවසන් වූ අතර සෑම කාර්යයක්ම එය ක්‍රියාත්මක කිරීමට ආපසු යාමට සිදු විය. එනම්, අපි ලෝකයේ වඩාත්ම මිල අධික ශ්‍රිත ඇමතුම් පද්ධතිය සමඟ කටයුතු කරමින් සිටි අතර, එය ආදාන දත්තවල කොටසක් සකසන අතරතුර සම්පූර්ණ “බහු කාර්ය” ක්‍රියාවලියම නතර කළෙමු. මීට පෙර, ප්‍රතිදානය ඉතා අඩු බැවින් පමණක් ගැටළු ඇති නොවීය.

මම මෙම කාර්ය යාන්ත්‍රණය විස්තර කළේ රැස්වීමක් ඉල්ලා සිටින විට හෝ සම්පූර්ණ කිරීමට බලාපොරොත්තු වූ විට, "කාර්ය මාරුවක්" සිදුවිය හැකි බැවිනි. එනම්, ප්‍රොසෙසරයට ක්‍රියාත්මක කිරීමට සූදානම් වන වෙනත් කාර්යයක් සැකසීම ආරම්භ කළ හැකිය. එක් කාර්යයක් තවත් කාර්යයක් සමඟ හමුවීමට සූදානම් වූ විට, සම්පූර්ණයෙන්ම වෙනස් කාර්යයක් ක්‍රියාත්මක කිරීම ආරම්භ කළ හැකි අතර, අවසානයේදී පාලනය ප්‍රථම හමුවීමට ආපසු යාම සිදුවේ. කාර්යය මාරු වීමට හේතු වන වෙනත් සිදුවීම් සිදුවිය හැකිය; එවැනි එක් සිදුවීමක් වන්නේ mutex මුද්‍රණය කිරීම හෝ ක්‍රියාත්මක කිරීම වැනි පද්ධති කාර්යයකට ඇමතුමකි.

ගැටලුව ඇති කරන්නේ කුමන කේත රේඛාවද යන්න තේරුම් ගැනීමට, මට කාර්ය ස්විචයක් අවුලුවාලීමකින් තොරව ප්‍රකාශ අනුපිළිවෙලක් හරහා ප්‍රගතිය වාර්තා කිරීමට ක්‍රමයක් සොයා ගැනීමට අවශ්‍ය විය, එමඟින් බිඳවැටීමක් සිදු වීම වළක්වයි. ඒ නිසා මට ප්‍රයෝජන ගන්න බැරි වුණා Put_Line()I/O මෙහෙයුම් සිදු නොකිරීමට. මට කවුන්ටර විචල්‍යයක් හෝ ඒ හා සමාන දෙයක් සැකසිය හැක, නමුත් මට එය තිරය මත ප්‍රදර්ශනය කළ නොහැකි නම් එහි අගය මා දකින්නේ කෙසේද?

එසේම, ලඝු-සටහන පරීක්ෂා කිරීමේදී, හෘද ස්පන්දන පණිවිඩ සැකසීමේදී කැටි කිරීම, ක්‍රියාවලියේ සියලුම I/O මෙහෙයුම් අවහිර කිරීම සහ අනෙකුත් සැකසුම් සිදු කිරීම වලක්වාලීම තිබියදීත්, වෙනත් ස්වාධීන කාර්යයන් අඛණ්ඩව ක්‍රියාත්මක වන බව පෙනී ගියේය. එනම්, කාර්යය සම්පූර්ණයෙන්ම අවහිර නොකළ අතර, (විවේචනාත්මක) කාර්ය දාමයක් පමණි.

අවහිර කිරීමේ ප්‍රකාශනය ඇගයීමට අවශ්‍ය ඉඟිය මෙය විය.

මම Ada පැකේජයක් සෑදුවෙමි, එහි කාර්යයක්, ගණන් කළ වර්ගයක් සහ එම වර්ගයේ ගෝලීය විචල්‍යයක් අඩංගු වේ. ගණන් කළ හැකි වචන ගැටලු සහගත අනුපිළිවෙලෙහි නිශ්චිත ප්‍රකාශනවලට බැඳී ඇත (උදා. Incrementing_Buffer_Index, Locking_Mutex, Mutex_Unlocked), ඉන්පසු එයට අනුරූප ගණන් කිරීම ගෝලීය විචල්‍යයකට පැවරෙන පැවරුම් ප්‍රකාශන ඇතුළත් කරන ලදී. මේ සියල්ලේ වස්තු කේතය මතකයේ නියතයක් ගබඩා කර ඇති බැවින්, එය ක්‍රියාත්මක කිරීමේ ප්‍රති result ලයක් ලෙස කාර්ය මාරු කිරීම අතිශයින් අපහසු විය. කාර්යය ආපසු මාරු කරන විට (හේතු කිහිපයක් නිසා) ආපසු පැමිණීමට වඩා ක්‍රියාත්මක කිරීමේදී අවහිර වීම සිදු වූ බැවින්, කාර්යය මාරු කළ හැකි ප්‍රකාශන පිළිබඳව අපි මූලික වශයෙන් සැක කළෙමු.

ලුහුබැඳීමේ කාර්යය සරලව ලූපයක් තුළ ක්‍රියාත්මක වූ අතර ගෝලීය විචල්‍යයේ අගය වෙනස් වී ඇත්දැයි බැලීමට වරින් වර පරීක්ෂා කරනු ලැබේ. සෑම වෙනස්කමකින්ම, අගය ගොනුවකට සුරැකිණි. එවිට කෙටි රැඳී සිටීම සහ නව චෙක්පතක්. මම ගොනුවට විචල්‍යය ලිව්වේ ගැටළුව ප්‍රදේශයේ කාර්යය මාරු කිරීමේදී පද්ධතිය ක්‍රියාත්මක කිරීම සඳහා එය තෝරාගත් විට පමණක් කාර්යය ක්‍රියාත්මක වූ බැවිනි. මෙම කාර්යයේදී කුමක් සිදු වුවද, වෙනත් සම්බන්ධයක් නැති අවහිර කළ කාර්යයන් කෙරෙහි බලපාන්නේ නැත.

පද්ධතිය ගැටළුකාරී කේතය ක්‍රියාත්මක කිරීමේ ස්ථානයට ළඟා වූ විට, එක් එක් ඊළඟ ප්‍රකාශනය වෙත ගමන් කරන විට ගෝලීය විචල්‍යය යළි පිහිටුවනු ඇතැයි අපේක්ෂා කරන ලදී. එවිට කාර්යය මාරු වීමට හේතු වන යමක් සිදුවනු ඇති අතර, එහි ක්‍රියාත්මක කිරීමේ සංඛ්‍යාතය (10 Hz) අධීක්ෂණ කාර්යයට වඩා අඩු බැවින්, මොනිටරයට ගෝලීය විචල්‍යයේ අගය ග්‍රහණය කර එය ලිවිය හැකිය. සාමාන්‍ය තත්වයකදී, මට ගණන් කිරීමේ උප කුලකයක පුනරාවර්තන අනුපිළිවෙලක් ලබා ගත හැකිය: කාර්යය මාරු කරන අවස්ථාවේ විචල්‍යයේ අවසාන අගයන්. එල්ලෙන විට, ගෝලීය විචල්‍යය තවදුරටත් වෙනස් නොවිය යුතු අතර, ලියා ඇති අවසාන අගයෙන් පෙන්නුම් කරන්නේ කුමන ප්‍රකාශනය සම්පූර්ණ නොකළේද යන්නයි.

මම ලුහුබැඳීම සමඟ කේතය ධාවනය කළෙමි. ඔහු ශීත විය. ඒ වගේම අධීක්ෂණය ඔරලෝසු වැඩ වගේ වැඩ කළා.

ලොගයේ අපේක්ෂිත අනුක්‍රමය අඩංගු වූ අතර, එය mutex ලෙස හඳුන්වනු ලබන අගයකින් බාධා විය. Unlock, සහ කාර්යය සම්පූර්ණ කර නැත - පෙර ඇමතුම් දහස් ගණනක සිදු වූ පරිදි.

Apex ඉංජිනේරුවන් මෙම අවස්ථාවේදී ඔවුන්ගේ කේතය දැඩි ලෙස විශ්ලේෂණය කරමින් සිටි අතර න්‍යායාත්මකව, අගුලක් සිදුවිය හැකි ස්ථානයක් mutex හි සොයා ගන්නා ලදී. නමුත් එහි සම්භාවිතාව ඉතා අඩු විය, මන්ද යම් නිශ්චිත වේලාවක සිදුවන සිදුවීම් මාලාවක් පමණක් අවහිර වීමට හේතු විය හැක. මර්ෆිගේ නීතිය යාලුවනේ, එය මර්ෆිගේ නීතියයි.

මට අවශ්‍ය කේත කොටස ආරක්ෂා කිරීමට, මම එම කෑල්ලට mutex ප්‍රවේශය පාලනය කිරීම සඳහා mutex ශ්‍රිත ඇමතුම් (OS mutex ක්‍රියාකාරීත්වය මත ගොඩනගා ඇත) කුඩා දේශීය Ada mutex පැකේජයක් සමඟ ප්‍රතිස්ථාපනය කළෙමි.

මම එය කේතයට ඇතුළු කර පරීක්ෂණය ධාවනය කළෙමි. පැය හතකට පසුවත් කේතය ක්‍රියාත්මක විය.

මගේ කේතය තාර්කික වෙත ඉදිරිපත් කරන ලද අතර, එහිදී ඔවුන් එය සම්පාදනය කර, එය විසුරුවා හැර, ගැටළුකාරී මුටෙක්ස් ශ්‍රිතයන්හිදී භාවිතා කරන ලද ප්‍රවේශයම එය භාවිතා නොකළ බව පරීක්ෂා කරන ලදී.

මෙය මගේ වෘත්තීය ජීවිතයේ වඩාත්ම ජනාකීර්ණ කේත සමාලෝචනයයි 🙂 මා සමඟ කාමරයේ ඉංජිනේරුවන් සහ කළමනාකරුවන් දස දෙනෙකු පමණ සිටියහ, තවත් දස දෙනෙකු සම්මන්ත්‍රණ ඇමතුමක සිටියහ - ඔවුන් සියල්ලෝම කේත පේළි 20 ක් පමණ පරීක්ෂා කළහ.

කේතය සමාලෝචනය කර, නව ක්‍රියාත්මක කළ හැකි ගොනු එකලස් කර විධිමත් ප්‍රතිගාමී පරීක්ෂණ සඳහා ඉදිරිපත් කරන ලදී. සති කිහිපයකට පසු, ගණන් කිරීමේ පරීක්ෂණය සාර්ථක වූ අතර රොකට්ටුව ගුවන් ගත විය.

හොඳයි, ඒ සියල්ල හොඳයි, නමුත් කතාවේ තේරුම කුමක්ද?

එය සම්පූර්ණයෙන්ම පිළිකුල් සහගත ගැටලුවක් විය. කේත පේළි සිය දහස් ගණනක්, සමාන්තර ක්‍රියාත්මක කිරීම, දුසිමකට අධික අන්තර් ක්‍රියාදාමයන්, දුර්වල ගෘහ නිර්මාණ ශිල්පය සහ දුර්වල ක්‍රියාත්මක කිරීම, කාවැද්දූ පද්ධති සඳහා අතුරුමුහුණත් සහ ඩොලර් මිලියන ගණනක් වියදම් කර ඇත. පීඩනයක් නැහැ, හරි.

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

මම ගැටලුවේ ස්වභාවය තේරුම් ගත්තා. එය සිදුවන්නේ කොතැනද, ඇයි දැයි මම හරියටම නොදනිමි, නමුත් සිදුවන්නේ කුමක්දැයි මම දැන සිටියෙමි.

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

එවැනි අරගලයක ලක්ෂණ සහ කොන්දේසි ගැන හුරුපුරුදු නොවන අයට කේතය සමඟ අරගලයේ එවැනි කථා ඉතා රසවත් නොවේ. නමුත් ඇත්ත වශයෙන්ම දුෂ්කර ගැටළු විසඳීමට අවශ්‍ය දේ තේරුම් ගැනීමට මෙම කථා අපට උපකාර කරයි.

ඇත්ත වශයෙන්ම දුෂ්කර ගැටළු විසඳීම සඳහා, ඔබ වැඩසටහන්කරුවෙකුට වඩා වැඩි යමක් විය යුතුය. කේතයේ "ඉරණම", එහි පරිසරය සමඟ අන්තර් ක්රියා කරන ආකාරය සහ පරිසරයම ක්රියා කරන ආකාරය ඔබ තේරුම් ගත යුතුය.

එවිට ඔබට ඔබේම විනාශ වූ නිවාඩු සතියක් ලැබෙනු ඇත.

දිගටම කරගෙන යාමට.

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

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