የፕሮግራም አውጪዎች እና መሐንዲሶች ፎክሎር (ክፍል 1)

የፕሮግራም አውጪዎች እና መሐንዲሶች ፎክሎር (ክፍል 1)

ይህ ከበይነመረቡ የተውጣጡ ታሪኮች ምርጫ አንዳንድ ጊዜ ሳንካዎች ሙሉ ለሙሉ አስገራሚ መገለጫዎች አሏቸው። ምናልባት እርስዎም የሚናገሩት ነገር ሊኖርዎት ይችላል.

ለቫኒላ አይስክሬም የመኪና አለርጂ

ለኢንጂነሮች ታሪክ ግልፅ የሆነው ነገር ሁል ጊዜ መልስ እንዳልሆነ እና ምንም እንኳን የቱንም ያህል የራቀ ቢመስልም እውነታዎቹ ናቸው። የጄኔራል ሞተርስ ኮርፖሬሽን የጶንጥያክ ክፍል ቅሬታ ደረሰው፡-

ወደ አንተ ስጽፍልህ ይህ ለሁለተኛ ጊዜ ነው፣ እናም መልስ ስላልሰጠህ አልወቅስህም፣ ምክንያቱም እብድ ይመስላል። ቤተሰባችን ከእራት በኋላ በየምሽቱ አይስክሬም የመመገብ ባህል አለን። የአይስ ክሬም ዓይነቶች በእያንዳንዱ ጊዜ ይለወጣሉ, እና ከእራት በኋላ, መላው ቤተሰብ የትኛው አይስ ክሬም እንደሚገዛ ይመርጣል, ከዚያ በኋላ ወደ ሱቅ እሄዳለሁ. በቅርቡ አዲስ ጶንጥያክ ገዛሁ እና ከዚያን ጊዜ ጀምሮ አይስ ክሬም ለማግኘት የማደርገው ጉዞ ችግር ሆኖብኛል። አየህ የቫኒላ አይስክሬም ገዝቼ ከሱቅ በተመለስኩ ቁጥር መኪናው አይነሳም። ሌላ አይስክሬም ካመጣሁ መኪናው ያለ ምንም ችግር ይጀምራል። የቱንም ያህል ሞኝነት ቢመስልም አንድ ከባድ ጥያቄ ልጠይቅ፡- “ቫኒላ አይስክሬም ሳመጣ የማይጀምር፣ ግን ሌላ የአይስ ክሬም ጣዕም ሳመጣ በቀላሉ የሚጀምረው ስለ ጶንጥያክ ምንድነው?”

እርስዎ እንደሚገምቱት, የዲቪዥን ፕሬዝዳንቱ በደብዳቤው ላይ ተጠራጣሪ ነበር. ሆኖም፣ እንዲያው ከሆነ፣ እንዲያጣራ ኢንጂነር ልኬ ነበር። በቆንጆ አካባቢ የሚኖር አንድ ሀብታምና የተማረ ሰው ማግኘቱ አስገረመው። ሁለቱ አይስክሬም ለመጠጣት ወደ ሱቅ እንዲሄዱ ከእራት በኋላ ወዲያው ለመገናኘት ተስማሙ። ያ ምሽት ቫኒላ ነበር, እና ወደ መኪናው ሲመለሱ, አይጀምርም.

ኢንጂነሩ ሶስት ተጨማሪ ምሽት መጡ። ለመጀመሪያ ጊዜ አይስክሬም ቸኮሌት ነበር. መኪናው ተጀመረ። ለሁለተኛ ጊዜ እንጆሪ አይስክሬም ነበር. መኪናው ተጀመረ። በሦስተኛው ምሽት ቫኒላ እንዲወስድ ጠየቀ. መኪናው አልተጀመረም።

በምክንያታዊነት በማመዛዘን, መሐንዲሱ መኪናው ለቫኒላ አይስክሬም አለርጂ እንደሆነ ለማመን አሻፈረኝ. ስለዚህ ለችግሩ መፍትሄ እስኪያገኝ ድረስ ጉብኝቱን እንደሚቀጥል ከመኪናው ባለቤት ጋር ተስማምቻለሁ። እና በመንገዱ ላይ, ማስታወሻ መያዝ ጀመረ: ሁሉንም መረጃ, የቀን ሰዓት, ​​የነዳጅ ዓይነት, ከመደብር መድረሻ እና መመለሻ, ወዘተ.

የመኪናው ባለቤት የቫኒላ አይስክሬም በመግዛት የሚያሳልፈው ጊዜ ያነሰ መሆኑን መሐንዲሱ ብዙም ሳይቆይ ተረዳ። ምክንያቱ በመደብሩ ውስጥ ያሉት እቃዎች አቀማመጥ ነበር. የቫኒላ አይስክሬም በጣም ተወዳጅ ነበር እና በቀላሉ ለማግኘት በሱቁ ፊት ለፊት በተለየ ማቀዝቀዣ ውስጥ ይቀመጥ ነበር። እና ሁሉም ሌሎች ዝርያዎች በመደብሩ ጀርባ ውስጥ ነበሩ, እና ትክክለኛውን ዝርያ ለማግኘት እና ለመክፈል ብዙ ተጨማሪ ጊዜ ወስዷል.

አሁን ጥያቄው ለኢንጅነሩ ነበር፡ ሞተሩ ከጠፋበት ጊዜ ጀምሮ ትንሽ ጊዜ ካለፈ መኪናው ለምን አልጀመረም? ችግሩ ጊዜ እንጂ የቫኒላ አይስክሬም ስላልሆነ መሐንዲሱ በፍጥነት መልሱን አገኘ: የጋዝ መቆለፊያ ነበር. በየምሽቱ ይከሰት ነበር, ነገር ግን የመኪናው ባለቤት አይስ ክሬምን ለመፈለግ ብዙ ጊዜ ሲያጠፋ, ሞተሩ በበቂ ሁኔታ ማቀዝቀዝ እና በቀላሉ መነሳት ጀመረ. እናም ሰውየው የቫኒላ አይስክሬም ሲገዛ ሞተሩ አሁንም በጣም ሞቃት ነበር እና የጋዝ መቆለፊያው ለመሟሟት ጊዜ አልነበረውም.

ሥነ ምግባር፡ ሙሉ በሙሉ ያበዱ ችግሮች እንኳን አንዳንድ ጊዜ እውን ይሆናሉ።

የብልሽት Bandicoot

ይህንን ማጋጠሙ በጣም ያማል። ፕሮግራመር እንደመሆንህ መጀመሪያ ኮድህን መውቀስ ትለምደዋለህ፣ ሁለተኛ፣ ሶስተኛ... እና በአስር ሺ ቦታ ላይ አንድ ቦታ ኮምፕሌተሩን ትወቅሳለህ። እና በዝርዝሩ ላይ እርስዎ አስቀድመው መሳሪያውን ይወቅሳሉ.

ስለ ሃርድዌር ስህተት የእኔ ታሪክ ይኸውና.

ለጨዋታው Crash Bandicoot፣ ወደ ሚሞሪ ካርድ ለመጫን እና ለማስቀመጥ ኮድ ጻፍኩ። ለእንዲህ ዓይነቱ የስሙግ ጨዋታ ገንቢ በፓርኩ ውስጥ እንደ መራመድ ነበር፡ ስራው ብዙ ቀናት የሚወስድ መስሎኝ ነበር። ሆኖም ለስድስት ሳምንታት ኮዱን ማረም ጨርሻለሁ። በመንገድ ላይ, ሌሎች ችግሮችን ፈታሁ, ነገር ግን በየጥቂት ቀናት ውስጥ ለጥቂት ሰዓታት ወደዚህ ኮድ እመለሳለሁ. ስቃይ ነበር።

ምልክቱ ይህን ይመስላል፡ አሁን ያለውን የጨዋታውን ጨዋታ ሲያስቀምጡ እና የማህደረ ትውስታ ካርዱን ሲደርሱ ሁሉም ነገር ሁልጊዜ ማለት ይቻላል ጥሩ ይሆናል... ነገር ግን አንዳንድ ጊዜ የማንበብ ወይም የመፃፍ ስራ ያለምክንያት ያበቃል። አጭር ቀረጻ ብዙ ጊዜ የማህደረ ትውስታ ካርዱን ይጎዳል። ተጫዋቹ ለማዳን ሲሞክር ማዳን አለመቻሉን ብቻ ሳይሆን ካርታውንም ያጠፋል. ክፋት።

ከተወሰነ ጊዜ በኋላ በ Sony, ኮኒ አውቶቡስ ውስጥ ያለን ፕሮዲዩሰር መደናገጥ ጀመረ. ጨዋታውን በዚህ ስህተት መላክ አልቻልንም፣ እና ከስድስት ሳምንታት በኋላ የችግሩ መንስኤ ምን እንደሆነ አልገባኝም። በኮኒ በኩል፣ ሌሎች የPS1 ገንቢዎችን አግኝተናል፡ ተመሳሳይ የሆነ ነገር አጋጥሞታል? አይ. ማንም በማስታወሻ ካርዱ ላይ ችግር አላጋጠመውም።

ለማረም ምንም ሃሳቦች ከሌሉዎት, የሚቀረው ብቸኛው መንገድ "መከፋፈል እና ማሸነፍ" ብቻ ነው: አሁንም ችግሩን የሚፈጥር በአንጻራዊ ሁኔታ ትንሽ ክፍልፋዮች እስኪቀሩ ድረስ ከተሳሳተ ፕሮግራም ውስጥ ተጨማሪ እና ተጨማሪ ኮድ ያስወግዱ. ይህም ማለት ስህተቱ የያዘው ክፍል እስኪቀር ድረስ የፕሮግራሙን ቁራጭ በክፍል ቆርጠህ ትሄዳለህ።

ነገር ግን ነገሩ ከቪዲዮ ጌም ውስጥ ቁርጥራጮችን መቁረጥ በጣም ከባድ ነው። የስበት ኃይልን የሚመስለውን ኮድ ካስወገዱ እንዴት ማስኬድ ይቻላል? ወይስ ቁምፊዎችን መሳል?

ስለዚህ, አንድ ጠቃሚ ነገር እንደሚያደርጉ በሚመስሉ ሙሉ ሞጁሎች መተካት አለብን, ነገር ግን በእውነቱ ስህተቶችን ሊይዝ የማይችል በጣም ቀላል ነገር ያድርጉ. ለጨዋታው ቢያንስ እንዲሰራ እንዲህ አይነት ክራንች መፃፍ አለብን. ይህ ቀርፋፋ እና የሚያሠቃይ ሂደት ነው.

ባጭሩ እኔ አድርጌዋለሁ። ጨዋታውን ለማስኬድ ስርዓቱን የሚያዋቅረው፣ የማሳያ ሃርድዌርን የሚያስጀምር፣ ወዘተ የመነሻ ኮድ እስካልተወ ድረስ ቁጥራቸው ከጊዜ ወደ ጊዜ እየጨመረ የመጣ ኮድ አስወግጃለሁ። በእርግጥ በዚህ ደረጃ የማዳን እና የመጫን ምናሌን መፍጠር አልቻልኩም ፣ ምክንያቱም ለሁሉም የግራፊክስ ኮድ ግትር መፍጠር አለብኝ። ነገር ግን (የማይታይ) ሴቭ እና ስክሪን በመጫን ተጠቃሚ መስሎኝ እና ለማስቀመጥ እጠይቃለሁ ከዚያም ወደ ሚሞሪ ካርዱ ጻፍ።

ይህ አሁንም ከላይ ያለው ችግር ያለበት ትንሽ ኮድ ትቶኛል - ግን አሁንም በዘፈቀደ እየተከሰተ ነበር! ብዙውን ጊዜ ሁሉም ነገር በትክክል ይሠራል, ነገር ግን አልፎ አልፎ ጉድለቶች ነበሩ. ከሞላ ጎደል ሁሉንም የጨዋታ ኮድ አስወግጄ ነበር፣ ነገር ግን ስህተቱ አሁንም በህይወት ነበር። ይህ ግራ የሚያጋባ ነበር፡ የቀረው ኮድ ምንም አላደረገም።

የሆነ ቦታ ላይ ምናልባትም ከጠዋቱ XNUMX ሰአት አካባቢ አንድ ሀሳብ ወደ እኔ መጣ። ማንበብ እና መፃፍ (ግቤት/ውፅዓት) ክዋኔዎች ትክክለኛ የአፈፃፀም ጊዜዎችን ያካትታሉ። ከሃርድ ድራይቭ፣ ሚሞሪ ካርድ ወይም ብሉቱዝ ሞጁል ጋር ሲሰሩ ለማንበብ እና ለመፃፍ ሃላፊነት ያለው ዝቅተኛ ደረጃ ኮድ በሰአት ጥራዞች መሰረት ይሰራል።

በሰዓት እርዳታ ከማቀነባበሪያው ጋር በቀጥታ ያልተገናኘ መሳሪያ በማቀነባበሪያው ላይ ከሚሰራው ኮድ ጋር ይመሳሰላል. ሰዓቱ የባውድ ፍጥነትን ይወስናል-መረጃ የሚተላለፍበትን ፍጥነት። በጊዜ ሂደት ግራ መጋባት ከተፈጠረ ሃርድዌሩ ወይም ሶፍትዌሩ ወይም ሁለቱም ግራ ተጋብተዋል። እና ይሄ በጣም መጥፎ ነው, ምክንያቱም ውሂቡ ሊጎዳ ይችላል.

በእኛ ኮድ ውስጥ የሆነ ነገር ጊዜውን ግራ የሚያጋባ ከሆነስ? ከዚህ ጋር የተዛመደውን ሁሉ በሙከራ ፕሮግራም ኮድ ውስጥ አረጋግጫለሁ እና የፕሮግራም ጊዜ ቆጣሪውን በ PS1 እስከ 1 kHz (1000 ትኬቶች በሰከንድ) እንዳዘጋጀን አስተዋልኩ። ይህ በጣም ብዙ ነው፤ በነባሪነት ኮንሶሉ ሲጀምር በ100 Hz ይሰራል። እና አብዛኛዎቹ ጨዋታዎች ይህንን ድግግሞሽ ይጠቀማሉ።

የጨዋታው ገንቢ የሆነው አንዲ እንቅስቃሴዎች በትክክል እንዲሰሉ ጊዜ ቆጣሪውን ወደ 1 ኪ. አንዲ ከመጠን በላይ የመሄድ አዝማሚያ አለው, እና የስበት ኃይልን ከተከተልን በተቻለ መጠን በትክክል እናደርጋለን!

ነገር ግን የሰዓት ቆጣሪውን ማፋጠን የፕሮግራሙን አጠቃላይ ጊዜ ይነካል እና ስለዚህ የማስታወሻ ካርዱን የባውድ መጠን የሚቆጣጠረው ሰዓት?

የሰዓት ቆጣሪ ኮዱን አስተያየት ሰጥቻለሁ። ስህተቱ እንደገና አልተከሰተም. ይህ ማለት ግን አስተካክለነዋል ማለት አይደለም፣ ምክንያቱም ውድቀቱ በዘፈቀደ የተከሰተ ነው። እድለኛ ብሆንስ?

ከጥቂት ቀናት በኋላ በሙከራ ፕሮግራሙ እንደገና ሞክሬ ነበር። ስህተቱ አልተደጋገመም። ወደ ሙሉ የጨዋታ ኮድ ቤዝ ተመለስኩ እና የማዳን እና ሎድ ኮድ አስተካክዬ ፕሮግራም የሚሠራው ቆጣሪ ወደ ሚሞሪ ካርዱ ከመድረሴ በፊት ወደ መጀመሪያው እሴቱ (100 ኸርዝ) ዳግም እንዲያስጀምር እና ከዚያ ወደ 1kHz እንደገና እንዲጀምር። ተጨማሪ ብልሽቶች አልነበሩም።

ግን ይህ ለምን ሆነ?

እንደገና ወደ የሙከራ ፕሮግራሙ ተመለስኩ። በ1 kHz የሰዓት ቆጣሪ ስህተት ሲከሰት የተወሰነ ስርዓተ-ጥለት ለማግኘት ሞከርኩ። ውሎ አድሮ ስህተቱ አንድ ሰው ከPS1 መቆጣጠሪያ ጋር ሲጫወት እንደሚከሰት አስተዋልኩ። እኔ ራሴ እምብዛም ስለማልሠራ - ቁጠባ እና ሎድ ኮድን በምሞክርበት ጊዜ መቆጣጠሪያ ለምን እፈልጋለሁ? - ይህን ጥገኝነት እንኳን አላስተዋልኩም. አንድ ቀን ግን አንዱ አርቲስቶቻችን ፈተናውን ልጨርስ እየጠበቀኝ ነበር - ምናልባት በዚያን ጊዜ እየረገምኩ ነበር - እና በፍርሃት ተቆጣጣሪውን በእጁ አወዛወዘው። ስህተት ተፈጥሯል. "ቆይ ምን?!" ደህና ፣ እንደገና ያድርጉት! ”

እነዚህ ሁለት ክስተቶች እርስ በርስ የተሳሰሩ መሆናቸውን ሳውቅ ስህተቱን በቀላሉ ማባዛት ቻልኩ፡ ወደ ሚሞሪ ካርዱ መቅዳት ጀመርኩ፣ መቆጣጠሪያውን አንቀሳቅሼ የማስታወሻ ካርዱን አበላሸሁ። ለእኔ የሃርድዌር ስህተት መስሎ ነበር።

ወደ ኮኒ መጣሁ እና ስለ ግኝቴ ነገርኳት። PS1 ን ለነደፉት መሐንዲሶች ለአንዱ መረጃውን አስተላልፋለች። “የማይቻል፣ የሃርድዌር ችግር ሊሆን አይችልም” ሲል መለሰ። ኮኒ ውይይት እንድታዘጋጅልን ጠየቅኳት።

ኢንጅነሩ ጠራኝና በተሰባበረ እንግሊዘኛ እና የእኔ (እጅግ) በተሰባበረ ጃፓንኛ ተከራከርን። በመጨረሻ፣ “ተቆጣጣሪውን ማንቀሳቀስ ስህተት የሚፈጥርበትን የ30 መስመር ሙከራ ፕሮግራሜን ልልክልኝ” አልኩ። እሱም ተስማማ። ጊዜ ማባከን እንደሆነ እና በአዲስ ፕሮጀክት ላይ በመሥራት በጣም እንደተጠመደ ተናግሯል፣ነገር ግን እኛ ለሶኒ በጣም አስፈላጊ ገንቢ ስለሆንን እሰጣለሁ። የሙከራ ፕሮግራሜን አጽድቼ ላከልኩት።

በማግስቱ (እኛ ሎስ አንጀለስ ነበርን እና እሱ ቶኪዮ ነበር) ጠራኝ እና በግዴለሽነት ይቅርታ ጠየቀኝ። የሃርድዌር ችግር ነበር።

ስህተቱ በትክክል ምን እንደሆነ አላውቅም፣ ነገር ግን በሶኒ ዋና መሥሪያ ቤት እንደሰማሁት፣ ሰዓት ቆጣሪውን በቂ ዋጋ ካዘጋጁት፣ በሰዓት ቆጣሪው ክሪስታል አካባቢ ባለው ማዘርቦርድ ላይ ባሉ አካላት ላይ ጣልቃ ገብቷል። ከመካከላቸው አንዱ የማስታወሻ ካርዱን የባውድ ተመን ተቆጣጣሪ ሲሆን ይህም ለተቆጣጣሪዎቹ የባውድ መጠንንም አዘጋጅቷል። እኔ ኢንጂነር አይደለሁም፣ ስለዚህ የሆነ ነገር አበላሽቼ ሊሆን ይችላል።

ነገር ግን ዋናው ነጥብ በማዘርቦርድ ላይ ባሉ ክፍሎች መካከል ጣልቃ መግባት ነበር. እና መረጃን በአንድ ጊዜ በመቆጣጠሪያ ወደብ እና በ 1 kHz በሚሰራ ማህደረ ትውስታ ካርድ ወደብ ሲያስተላልፍ, ቢት ጠፍተዋል, መረጃው ጠፍቷል እና ካርዱ ተጎድቷል.

መጥፎ ላሞች

እ.ኤ.አ. በ 1980 ዎቹ ውስጥ አማካሪዬ ሰርጌይ የሶቪዬት ክሎል ፒዲዲ-1800 ለነበረው SM-11 ሶፍትዌር ፃፈ። ይህ ማይክሮ ኮምፒዩተር በዩኤስ ኤስ አር አር አስፈላጊ የትራንስፖርት ማዕከል በሆነው በ Sverdlovsk አቅራቢያ በሚገኝ የባቡር ጣቢያ ተጭኗል። አዲሱ አሰራር የተነደፈው ፉርጎዎችን እና የጭነት ትራፊክን ለመምራት ነው። ነገር ግን ወደ የዘፈቀደ ብልሽቶች እና ብልሽቶች የሚመራ የሚያበሳጭ ሳንካ ይዟል። አንድ ሰው ምሽት ላይ ወደ ቤት ሲሄድ ሁልጊዜ መውደቅ ይከሰታል. ነገር ግን በሚቀጥለው ቀን ጥልቅ ምርመራ ቢደረግም, ኮምፒዩተሩ በሁሉም የእጅ እና አውቶማቲክ ሙከራዎች ውስጥ በትክክል ሰርቷል. ይህ ብዙውን ጊዜ በተወሰኑ ሁኔታዎች ውስጥ የሚከሰተውን የዘር ሁኔታን ወይም ሌላ አንዳንድ ተወዳዳሪ ሳንካዎችን ያሳያል። በሌሊት መደወል ሰልችቶታል ሰርጌይ ወደ ታችኛው ክፍል ለመድረስ ወሰነ እና በመጀመሪያ ፣ በማርሻል ጓሮው ውስጥ ምን ሁኔታዎች ወደ ኮምፒዩተሩ መበላሸት እንዳመሩ ተረዱ።

በመጀመሪያ ፣ የሁሉም ያልተገለጹ መውደቅ ስታቲስቲክስን ሰብስቧል እና በቀን እና በሰዓቱ ግራፍ ፈጠረ። ንድፉ ግልጽ ነበር። ለጥቂት ተጨማሪ ቀናት ከተመለከተ በኋላ ሰርጌይ የወደፊቱን የስርዓት ውድቀቶች ጊዜ በቀላሉ ሊተነብይ እንደሚችል ተገነዘበ።

ብዙም ሳይቆይ ጣቢያው ከሰሜን ዩክሬን እና ከምእራብ ሩሲያ የተጫኑ ከብቶችን በሚለይበት ጊዜ መስተጓጎሉ እንደተከሰተ ተረዳ። ይህ በራሱ እንግዳ ነበር፣ ምክንያቱም እርድ ቤቱ የቀረበው በካዛክስታን ውስጥ በጣም ቅርብ በሆኑ እርሻዎች ነው።

የቼርኖቤል የኒውክሌር ኃይል ማመንጫ በ1986 ፈንድቶ የራዲዮአክቲቭ መውደቅ በዙሪያው ያሉትን አካባቢዎች ለመኖሪያ ምቹ እንዳይሆን አድርጎታል። በሰሜናዊ ዩክሬን, ቤላሩስ እና ምዕራብ ሩሲያ ውስጥ ሰፊ ቦታዎች ተበክለዋል. በመድረሻ ሰረገላዎች ውስጥ ከፍተኛ መጠን ያለው የጨረር ጨረር በመጠራጠር, ሰርጌይ ይህንን ንድፈ ሐሳብ ለመፈተሽ ዘዴ ፈጠረ. ህዝቡ ዶዚሜትር እንዳይኖረው ተከልክሏል, ስለዚህ ሰርጌይ እራሱን በባቡር ጣቢያው ውስጥ ከብዙ ወታደራዊ ሰዎች ጋር ተመዝግቧል. ከበርካታ የቮዲካ መጠጦች በኋላ አንድ ወታደር በአጠራጣሪ ሠረገላዎች ውስጥ ያለውን የጨረር መጠን እንዲለካ ለማሳመን ቻለ. ደረጃው ከመደበኛ እሴቶች ብዙ ጊዜ ከፍ ያለ እንደነበር ታወቀ።

ከብቶቹ ብዙ ጨረሮችን ማስለቀቃቸው ብቻ ሳይሆን፣ ደረጃው በጣም ከፍተኛ ከመሆኑ የተነሳ ከጣቢያው አጠገብ ባለ ሕንፃ ውስጥ የሚገኘውን SM-1800 የማስታወስ ችሎታን በዘፈቀደ እንዲቀንስ አድርጓል።

በዩኤስኤስአር ውስጥ የምግብ እጥረት ነበር, እና ባለስልጣናት የቼርኖቤል ስጋ ከሌሎች የአገሪቱ ክልሎች ስጋ ጋር ለመደባለቅ ወሰኑ. ይህም ጠቃሚ ሀብቶችን ሳያጡ አጠቃላይ የራዲዮአክቲቭ ደረጃን ለመቀነስ አስችሏል. ስለዚህ ጉዳይ ካወቀ በኋላ ሰርጌይ ለስደት ሰነዶችን ወዲያውኑ ሞላ። እና የጨረር መጠኑ ከጊዜ ወደ ጊዜ ሲቀንስ የኮምፒዩተር ብልሽቶች በራሳቸው ቆሙ።

በቧንቧዎች በኩል

በአንድ ወቅት, Movietech Solutions ለሲኒማዎች, ለሂሳብ አያያዝ, ለትኬት ሽያጭ እና ለጠቅላላ አስተዳደር የተነደፈ ሶፍትዌር ፈጠረ. የባንዲራ መተግበሪያ የDOS ስሪት በሰሜን አሜሪካ በሚገኙ ትናንሽ እና መካከለኛ መጠን ያላቸው የፊልም ቲያትር ሰንሰለቶች መካከል በጣም ታዋቂ ነበር። ስለዚህ የዊንዶውስ 95 እትም ይፋ ሲደረግ፣ ከቅርብ ጊዜዎቹ የንክኪ ስክሪን እና የራስ አገልግሎት ኪዮስኮች ጋር ተቀናጅቶ፣ ሁሉንም አይነት የሪፖርት ማድረጊያ መሳሪያዎች ታጥቆ፣ በፍጥነት ተወዳጅ እየሆነ መምጣቱ አያስደንቅም። ብዙውን ጊዜ ዝመናው ያለችግር ሄዷል። የአካባቢው የአይቲ ሰራተኞች አዲስ መሳሪያ ጭነዋል፣የተሰደዱ መረጃዎች እና ንግዱ ቀጥሏል። ካልቆየ በስተቀር። ይህ በሚሆንበት ጊዜ ኩባንያው "ማጽጃው" የሚል ቅጽል ስም ያለው ጄምስን ይልካል.

ምንም እንኳን ቅፅል ስሙ መጥፎ ዓይነትን የሚያመለክት ቢሆንም ማጽጃው የአስተማሪ ፣ ጫኝ እና የሁሉም-ንግዶች ጥምረት ብቻ ነው። ጄምስ በደንበኛው ድረ-ገጽ ላይ ሁሉንም አካላት አንድ ላይ በማሰባሰብ ጥቂት ቀናትን ያሳልፍ እና ከዚያም ሰራተኞቹን አዲሱን ስርዓት እንዴት እንደሚጠቀሙ በማስተማር፣ ማንኛቸውም የሃርድዌር ችግሮችን በመፍታት እና ሶፍትዌሩን ገና በለጋ እድሜው በመርዳት ሌላ ሁለት ቀናት ያሳልፍ ነበር።

ስለዚህም በዚህ አስቸጋሪ ጊዜ ጀምስ በጠዋት ቢሮ ደርሶ ጠረጴዛው ላይ ከመድረሱ በፊት ስራ አስኪያጁ ሰላምታ ሲሰጠው ከወትሮው በላይ ካፌይን ሞላው።

"ወደ አናፖሊስ፣ ኖቫ ስኮሺያ በተቻለ ፍጥነት መሄድ እንዳለብህ እፈራለሁ።" ስርዓታቸው ወድቋል፣ እና ከኢንጂነሮቻቸው ጋር አንድ ምሽት ከሰሩ በኋላ ምን እንደተፈጠረ ለማወቅ አልቻልንም። አውታረ መረቡ በአገልጋዩ ላይ ያልተሳካ ይመስላል። ግን ስርዓቱ ለብዙ ደቂቃዎች እየሄደ ከሆነ በኋላ ብቻ።

- ወደ አሮጌው ስርዓት አልተመለሱም? - ጄምስ ሙሉ በሙሉ በቁም ነገር መለሰ ፣ ምንም እንኳን በአእምሮው በመገረም ዓይኖቹን ቢያሰፋም።

- በትክክል: የ IT ባለሙያቸው "ቅድሚያ የሚሰጣቸውን ነገሮች ቀይረዋል" እና ከድሮው አገልጋይ ጋር ለመልቀቅ ወሰኑ. ጄምስ ስርዓቱን በስድስት ሳይቶች ጫኑ እና ለዋና ድጋፍ ከፍለው አሁን ንግዳቸው በ1950ዎቹ እንደነበረው ነው የሚሰራው።

ጄምስ ትንሽ ቀና አለ።

- ይህ ሌላ ጉዳይ ነው. እሺ፣ እንጀምር።

አናፖሊስ ሲደርስ መጀመሪያ ያደረገው ነገር ችግር ያለበት የደንበኛውን የመጀመሪያ ቲያትር ማግኘት ነበር። በአውሮፕላን ማረፊያው በተወሰደው ካርታ ላይ ሁሉም ነገር ጥሩ ይመስላል, ነገር ግን በሚፈለገው አድራሻ ዙሪያ ያለው ቦታ አጠራጣሪ ይመስላል. ጌቶ ሳይሆን የፊልም ኖየርን የሚያስታውስ ነው። ጄምስ መሀል ከተማ ከርብ ላይ ሲያቆም አንዲት ጋለሞታ ወደ እሱ ቀረበች። ከአናፖሊስ ስፋት አንጻር ሲታይ ምናልባት በመላው ከተማ ውስጥ ብቸኛው ሊሆን ይችላል. የእሷ ገጽታ ወዲያውኑ በትልቁ ስክሪን ላይ ወሲብን ለገንዘብ ያቀረበውን ታዋቂ ገጸ ባህሪ አስታወሰ. አይ ፣ ስለ ጁሊያ ሮበርትስ አይደለም ፣ ግን ስለ ጆን ቮይት [“እኩለ ሌሊት ካውቦይ” ለተሰኘው ፊልም ጠቃሽ - በግምት። መስመር].

ሴተኛ አዳሪዋን በመንገድ ከላከች በኋላ፣ ጄምስ ወደ ሲኒማ ሄደ። በዙሪያው ያለው አካባቢ የተሻለ ሆኖ ነበር፣ ነገር ግን አሁንም የመሮጥ ስሜት ይፈጥራል። ጄምስ በጣም ተጨንቆ ነበር ማለት አይደለም። ከዚህ በፊት ወደ መጥፎ ቦታዎች ሄዷል። እና ይህ ካናዳ ነበረች፣ ሙገሮች እንኳን ኪስዎን ከወሰዱ በኋላ “አመሰግናለሁ” ለማለት ጨዋ የሆኑባት።

የሲኒማ ቤቱ የጎን መግቢያ በዳንኪራ ውስጥ ነበር። ጄምስ ወደ በሩ ሄዶ አንኳኳ። ብዙም ሳይቆይ ጮኸ እና በትንሹ ተከፈተ።

- ንፁህ ነህ? - ኃይለኛ ድምፅ ከውስጥ ወጣ።

- አዎ, እኔ ነኝ ... ሁሉንም ነገር ለመጠገን መጣሁ.

ጄምስ ወደ ሲኒማ አዳራሽ ገባ። ሌላ አማራጭ ስለሌላቸው ሰራተኞቹ የወረቀት ትኬቶችን ለጎብኚዎች መስጠት ጀመሩ። ይህ የበለጠ አስደሳች ዝርዝሮችን ይቅርና የፋይናንስ ሪፖርት ማድረግን አስቸጋሪ አድርጎታል። ነገር ግን ሰራተኞቹ ጄምስን በደስታ ተቀብለው ወዲያው ወደ አገልጋይ ክፍል ወሰዱት።

በመጀመሪያ ሲታይ, ሁሉም ነገር ጥሩ ነበር. ጄምስ ወደ አገልጋዩ ገብቷል እና የተለመዱትን አጠራጣሪ ቦታዎች ተመለከተ። ችግር የሌም. ነገር ግን፣ ከተትረፈረፈ ጥንቃቄ የተነሳ ጄምስ አገልጋዩን ዘጋው፣ የኔትዎርክ ካርዱን ተክቷል እና ስርዓቱን መለሰ። ወዲያውኑ ሙሉ በሙሉ መሥራት ጀመረች. ሰራተኞቹ እንደገና ትኬቶችን መሸጥ ጀመሩ።

ያዕቆብም ማርቆስን ጠርቶ ሁኔታውን ነገረው። ጄምስ በዙሪያው መቆየት እና ያልተጠበቀ ነገር ቢከሰት ለማየት ይፈልግ ይሆናል ብሎ መገመት ከባድ አይደለም። ከደረጃው ወርዶ ምን እንደተፈጠረ ሰራተኞቹን መጠየቅ ጀመረ። ስርዓቱ መስራት አቁሟል። አጠፉት እና አብራው ሁሉም ነገር ሰራ። ግን ከ 10 ደቂቃዎች በኋላ ስርዓቱ ወድቋል.

ልክ በዚህ ቅጽበት ተመሳሳይ ነገር ተከሰተ። በድንገት የቲኬቱ ስርዓት ስህተቶችን መወርወር ጀመረ. ሰራተኞቹ ተነፈሱ እና የወረቀት ቲኬቶችን ያዙ ፣ እና ጄምስ በፍጥነት ወደ አገልጋይ ክፍል ሄደ። ሁሉም ነገር በአገልጋዩ ጥሩ ይመስላል።

ከዚያም አንዱ ሠራተኛ ገባ።

- ስርዓቱ እንደገና እየሰራ ነው።

ጄምስ ምንም ነገር ስላላደረገ ግራ ተጋባ። ይበልጥ በትክክል ፣ ስርዓቱ እንዲሰራ የሚያደርግ ምንም ነገር የለም። ወጥቶ ወጣና ስልኩን አነሳና የኩባንያውን የድጋፍ መስመር ጠራ። ብዙም ሳይቆይ ያው ሰራተኛ ወደ አገልጋይ ክፍል ገባ።

- ስርዓቱ ተበላሽቷል.

ጄምስ ወደ አገልጋዩ ተመለከተ። በስክሪኑ ላይ የሚደንሱ የባለብዙ ቀለም ቅርፆች ሳቢ እና የታወቀ ጥለት - በተዘበራረቀ ሁኔታ እየተጣበቁ እና እርስ በርስ የሚጣመሩ ቧንቧዎች። ሁላችንም ይህን ስክሪን ቆጣቢ በሆነ ወቅት አይተናል። በሚያምር ሁኔታ የተሰራ እና በጥሬው ሃይፕኖቲክስ ነበር።


ጄምስ አንድ ቁልፍ ተጭኖ ንድፉ ጠፋ። በፍጥነት ወደ ቲኬቱ ቢሮ ሄዶ በመንገድ ላይ ወደ እሱ የሚመለስ ሰራተኛ አገኘ።

- ስርዓቱ እንደገና እየሰራ ነው።

የአዕምሮ የፊት መዳፍ ማድረግ ከቻሉ፣ ያ ጄምስ ያደረገው ያ ነው። ስክሪን ቆጣቢ። OpenGL ይጠቀማል። እና ስለዚህ, በሚሠራበት ጊዜ, ሁሉንም የአገልጋይ ማቀነባበሪያውን ሀብቶች ያጠፋል. በዚህ ምክንያት እያንዳንዱ የአገልጋዩ ጥሪ በጊዜ ማብቂያ ያበቃል።

ጄምስ ወደ ሰርቨር ክፍል ተመለሰ፣ ገባ እና ስክሪንሴቨርን በሚያማምሩ ቱቦዎች በባዶ ስክሪን ተክቶታል። ማለትም 100% ፕሮሰሰር ሃብቶችን ከሚፈጅ ስክሪንሴቨር ይልቅ፣ ሌላ ሃብት የማይፈጅ አስገባሁ። ከዚያም ግምቴን ለማየት 10 ደቂቃ ጠብቄአለሁ።

ጀምስ ቀጣዩ ሲኒማ ቤት ሲደርስ ስክሪን ቆጣቢውን ለማጥፋት 800 ኪሎ ሜትር ብቻ እንደበረረ ለስራ አስኪያጁ እንዴት ማስረዳት እንዳለበት እያሰበ ነበር።

በተወሰነ የጨረቃ ደረጃ ላይ ብልሽት

እውነተኛ ታሪክ. አንድ ቀን በጨረቃ ደረጃ ላይ የተመሰረተ የሶፍትዌር ስህተት ተከሰተ። ወደ ትክክለኛው የጨረቃ ምዕራፍ ያለውን ግምት ለማስላት በተለምዶ በተለያዩ የኤም.አይ.ቲ ፕሮግራሞች ውስጥ ጥቅም ላይ የሚውል ትንሽ መደበኛ ስራ ነበር። GLS ይህንን መደበኛ ተግባር ወደ LISP ፕሮግራም ገንብቷል ይህም ፋይል በሚጽፉበት ጊዜ ወደ 80 ቁምፊዎች የሚጠጋ የጊዜ ማህተም ያለው መስመር ያወጣል። የመልእክቱ የመጀመሪያ መስመር በጣም ረጅም ሆኖ ወደሚቀጥለው መስመር የሚያመራ መሆኑ በጣም አልፎ አልፎ ነበር። እና ፕሮግራሙ በኋላ ይህን ፋይል ሲያነብ, ተሳደበ. የመጀመሪያው መስመር ርዝመት በትክክለኛው ቀን እና ሰዓት ላይ እንዲሁም በጊዜ ማህተም በሚታተምበት ጊዜ የደረጃ ዝርዝር መግለጫው ርዝመት ይወሰናል. ያም ማለት ትኋኑ በጨረቃ ደረጃ ላይ የተመሰረተ ነው!

የመጀመሪያው የወረቀት እትም የጃርጎን ፋይል (ስቲል-1983) ወደተገለጸው ስህተት የሚመራ የእንደዚህ ዓይነት መስመር ምሳሌ ይዟል፣ ነገር ግን የጽሕፈት መኪናው “አስተካክሏል። ይህ ከዚያን ጊዜ ጀምሮ እንደ "የጨረቃ ደረጃ ስህተት" ተብሎ ተገልጿል.

ሆኖም ግን, በግምቶች ይጠንቀቁ. ከጥቂት አመታት በፊት ከ CERN (የአውሮፓ የኑክሌር ምርምር ማዕከል) መሐንዲሶች በትልቁ ኤሌክትሮን-ፖዚትሮን ኮሊደር ላይ በተደረጉ ሙከራዎች ላይ ስህተቶች አጋጥሟቸዋል. ኮምፒውተሮች ውጤቱን ለሳይንቲስቶች ከማሳየታቸው በፊት በዚህ መሳሪያ የሚመነጨውን ከፍተኛ መጠን ያለው መረጃ በንቃት ስለሚያካሂዱ፣ ብዙዎች ሶፍትዌሩ እንደምንም የጨረቃን ደረጃ እንደሚነካ ይገምታሉ። ብዙ ተስፋ የቆረጡ መሐንዲሶች እውነቱን ጨረሱ። ስህተቱ የተከሰተው ጨረቃ በምትገባበት ወቅት ምድር በመበላሸቱ 27 ኪሎ ሜትር ርዝመት ባለው ቀለበት ጂኦሜትሪ ላይ ትንሽ በመቀየር ነው! ይህ ታሪክ ወደ ፊዚክስ ፎክሎር ውስጥ ገብቷል "የኒውተን በቀል በክፍልፋይ ፊዚክስ" እና በጣም ቀላል እና ጥንታዊ የፊዚክስ ህጎች እና በጣም የላቁ ሳይንሳዊ ጽንሰ-ሀሳቦች መካከል ያለው ግንኙነት ምሳሌ ነው።

ሽንት ቤቱን ማጠብ ባቡሩን ያቆማል

እስካሁን የሰማሁት ምርጥ የሃርድዌር ስህተት ፈረንሳይ ውስጥ ባለ ከፍተኛ ፍጥነት ያለው ባቡር ላይ ነው። ይህ ስህተት ባቡሩን ድንገተኛ ብሬኪንግ አስከተለ፣ ነገር ግን ተሳፋሪዎች ካሉ ብቻ ነው። በእያንዳንዱ እንዲህ ዓይነት ሁኔታ, ባቡሩ ከአገልግሎት ውጭ ተወስዷል, ተረጋግጧል, ነገር ግን ምንም አልተገኘም. ከዚያም ተመልሶ ወደ መስመሩ ተላከ, እና ወዲያውኑ ተበላሽቷል.

በአንደኛው ቼክ በባቡሩ ላይ የሚጓዝ መሐንዲስ ወደ መጸዳጃ ቤት ሄደ። ብዙም ሳይቆይ ታጠበ፣ BOOM! የአደጋ ጊዜ ማቆሚያ።

ኢንጂነሩ ሾፌሩን አነጋግረው እንዲህ ሲሉ ጠየቁት።

- ፍሬን ከማቆምዎ በፊት ምን እያደረጉ ነበር?

- ደህና፣ ቁልቁለቱን ቀነስኩ...

ይህ እንግዳ ነገር ነበር፣ ምክንያቱም ባቡሩ በተለመደው ቀዶ ጥገና ወቅት በደርዘን የሚቆጠሩ ጊዜ የመውረድን ፍጥነት ይቀንሳል። ባቡሩ ቀጠለና በሚቀጥለው ቁልቁል ሾፌሩ አስጠነቀቀ፡-

- ቀስ በቀስ ልቀንስ ነው።

ምንም አልተፈጠረም።

- በመጨረሻው ብሬኪንግ ወቅት ምን አደረጉ? - ሾፌሩን ጠየቀ.

- ደህና ... ሽንት ቤት ውስጥ ነበርኩ ...

- ደህና ፣ ከዚያ ወደ መጸዳጃ ቤት ይሂዱ እና እንደገና ስንወርድ ያደረጉትን ያድርጉ!

መሐንዲሱ ወደ መጸዳጃ ቤት ሄደ እና ሹፌሩ “እየዘገየሁ ነው” ብሎ ሲያስጠነቅቅ ውሃውን አጠበ። እርግጥ ነው, ባቡሩ ወዲያውኑ ቆመ.

አሁን ችግሩን እንደገና ማባዛት እና መንስኤውን መፈለግ ያስፈልጋቸው ነበር.

ከሁለት ደቂቃ በኋላ የሞተር ብሬክ ሪሞት ኮንትሮል ኬብል (ባቡሩ በእያንዳንዱ ጫፍ አንድ ሞተር ነበረው) ከኤሌክትሪክ ካቢኔው ግድግዳ ላይ ተለያይቶ የመጸዳጃ ቤቱን ሶላኖይድ በሚቆጣጠረው ቅብብል ላይ ተኝቶ አስተዋሉ... ሪሌይ ሲደረግ። በርቶ ነበር፣ በብሬክ ገመዱ ውስጥ ጣልቃ ገብነትን ፈጥሯል፣ እና የስርአት መከላከያው ከብልሽቶች መከላከል በቀላሉ የድንገተኛ ብሬኪንግን ያካትታል።

FORTRANን የሚጠላ መግቢያ በር

ከጥቂት ወራት በፊት በዋናው መሬት ላይ [ይህ በሃዋይ ውስጥ ነበር] ያለው የአውታረ መረብ ግንኙነቶች በጣም እና በጣም ቀርፋፋ መሆናቸውን አስተውለናል። ይህ ለ 10-15 ደቂቃዎች ሊቆይ ይችላል ከዚያም በድንገት እንደገና ይከሰታል. ከተወሰነ ጊዜ በኋላ ባልደረባዬ በዋናው መሬት ላይ ያለው የአውታረ መረብ ግንኙነት ቅሬታ አቀረበልኝ በአጠቃላይ አይሰራም. በዋናው መሬት ላይ ወደሚገኝ ማሽን መቅዳት የሚያስፈልገው የFORTRAN ኮድ ነበረው ነገር ግን አልቻለም ምክንያቱም "አውታረ መረቡ የኤፍቲፒ ጭነት እስኪጠናቀቅ ድረስ በቂ ጊዜ አልያዘም"።

አዎ፣ አንድ ባልደረባ በFORTRAN ውስጥ ያለውን የምንጭ ኮድ የያዘ ፋይል በዋናው መሬት ላይ ወዳለው ማሽን ኤፍቲፒ ለማድረግ ሲሞክር የአውታረ መረብ ብልሽቶች ተከስተዋል። ፋይሉን በማህደር ለማስቀመጥ ሞክረናል፡ ከዚያም ያለችግር ተቀድቷል (ነገር ግን የታለመው ማሽን ማራገፊያ ስላልነበረው ችግሩ አልተፈታም)። በመጨረሻም የFORTRAN ኮድን ወደ ትናንሽ ቁርጥራጮች ከፋፍለን አንድ በአንድ ልከናል። አብዛኛዎቹ ቁርጥራጮች ያለችግር የተገለበጡ ናቸው ፣ ግን ጥቂት ቁርጥራጮች አላለፉም ፣ ወይም ከዚያ በኋላ አልፈዋል ብዙ ሙከራዎች.

ችግር ያለባቸውን አንቀጾች ከመረመርን በኋላ አንድ የሚያመሳስላቸው ነገር እንዳለ ደርሰንበታል፡ ሁሉም ካፒታል ሲን ባካተቱ መስመሮች የተጀመሩ እና የሚያበቁ የአስተያየት ማገጃዎች ይዘዋል (እንደ ባልደረባ በ FORTRAN ውስጥ አስተያየት መስጠትን ይመርጣል)። በዋናው መሬት ላይ ያሉ የኔትወርክ ባለሙያዎችን በኢሜል ልከናል እና እርዳታ ጠየቅን። በእርግጥ በኤፍቲፒ በኩል ሊተላለፉ የማይችሉ የፋይሎቻችንን ናሙናዎች ለማየት ፈልገው ነበር... ደብዳቤዎቻችን ግን አልደረሱላቸውም። በመጨረሻም አንድ ቀላል ነገር አመጣን መግለፅየማይተላለፉ ፋይሎች ምን እንደሚመስሉ ሠርቷል :) [ችግር ካለባቸው FORTRAN አስተያየቶች ውስጥ አንዱን ምሳሌ ልጨምርልህ? ምናልባት ዋጋ የለውም!]

በመጨረሻ ለማወቅ ችለናል። በእኛ የካምፓስ ክፍል እና በዋናው ኔትወርክ መካከል አዲስ መግቢያ በቅርቡ ተጭኗል። ተደጋጋሚ አቢይ ሆሄያትን የያዙ እሽጎችን ለማስተላለፍ ትልቅ ችግር ነበረበት! ከእነዚህ እሽጎች ውስጥ ጥቂቶቹ ብቻ ሁሉንም የመተላለፊያ መንገዶችን ሊወስዱ እና አብዛኛዎቹ ሌሎች እሽጎች እንዳያልፉ ሊከላከሉ ይችላሉ። ለጌትዌይ አምራቹ ቅሬታ አቅርበን ነበር... እነሱም መለሱ፡- “አዎ፣ አዎ፣ እርስዎ የሚደጋገሙ ሲ ስህተት አጋጥሞዎታል! ስለ እሱ አስቀድመን እናውቃለን። በመጨረሻ ከሌላ አምራች አዲስ መግቢያ በር በመግዛት ችግሩን ፈታነው (በቀድሞው መከላከያ የ FORTRAN ፕሮግራሞችን ማስተላለፍ አለመቻል ለአንዳንዶች ጥቅም ሊሆን ይችላል!)

አስቸጋሪ ጊዜያት

ከጥቂት አመታት በፊት፣ ምዕራፍ 40 ክሊኒካዊ ሙከራዎችን ወጪዎችን ለመቀነስ በፔርል ውስጥ የኢቲኤል ስርዓት ለመፍጠር እየሰራሁ ሳለ፣ ወደ 000 የሚጠጉ ቀኖችን ማካሄድ ነበረብኝ። ሁለቱ ፈተናውን አላለፉም። ይህ ብዙም አላስቸገረኝም ምክንያቱም እነዚህ ቀናት የተወሰዱት ከደንበኛ ከሚቀርብ መረጃ ነው ብዙ ጊዜ የሚገርም ነው እንላለን። ዋናውን መረጃ ሳጣራ ግን እነዚህ ቀናቶች ጥር 1 ቀን 2011 እና ጥር 1 ቀን 2007 ናቸው። ስህተቱ አሁን በጻፍኩት ፕሮግራም ውስጥ እንዳለ አስቤ ነበር፣ ግን ጊዜው 30 ዓመት ሆኖታል አሮጌ. ይህ የሶፍትዌር ስነ-ምህዳርን ለማያውቁት ምስጢራዊ ሊመስል ይችላል። በሌላ ኩባንያ ገንዘብ ለማግኘት ባደረገው የረጅም ጊዜ ውሳኔ ምክንያት፣ አንዱ ኩባንያ በአጋጣሚ ሌላውን ሆን ብሎ ያስተዋወቀውን ስህተት ለማስተካከል ደንበኛዬ ከፈለኝ። እኔ የማወራውን እንድትረዱ፣ ስህተቱን ያበቃውን ባህሪ ስለጨመረው ኩባንያ እና እንዲሁም ላስተካከልኩት ሚስጥራዊ ስህተት አስተዋፅዖ ስላደረጉ ጥቂት አስደሳች ክስተቶች ማውራት አለብኝ።

በድሮው ዘመን፣ አፕል ኮምፒውተሮች አንዳንድ ጊዜ በድንገት ቀኑን ወደ ጥር 1, 1904 እንደገና ያስጀምሩ ነበር። ምክንያቱ ቀላል ነበር፡ ቀኑንና ሰዓቱን ለመከታተል በባትሪ የሚሰራ “የስርዓት ሰአት” ተጠቅሟል። ባትሪው ሲሞት ምን ሆነ? ኮምፒውተሮች ቀኑን በሴኮንዶች ብዛት መከታተል የጀመሩት ከአንድ ዘመን መጀመሪያ ጀምሮ ነው። ኢፖክ ስንል ዋቢውን ኦሪጅናል ቀን ማለታችን ነው፣ እና ለ Macintoshes ጥር 1, 1904 ነበር። እና ባትሪው ከሞተ በኋላ፣ የአሁኑ ቀን ወደተገለጸው እንደገና ተቀናብሯል። ግን ይህ ለምን ሆነ?

ከዚህ ቀደም አፕል ከመጀመሪያው ቀን ጀምሮ የሰከንዶችን ብዛት ለማከማቸት 32 ቢት ይጠቀማል። አንድ ቢት ከሁለት እሴቶች አንዱን ማከማቸት ይችላል - 1 ወይም 0. ሁለት ቢት ከአራቱ እሴቶች አንዱን 00, 01, 10, 11. ሶስት ቢት - ከስምንት አንድ እሴት: 000, 001, 010, 011, 100 , 101, 110, 111, ወዘተ. እና 32 ከ 232 እሴቶች አንዱን ማለትም 4 ሰከንድ ማከማቸት ይችላል። ለአፕል ቀኖች፣ ይህ ከ294 ዓመታት ገደማ ጋር እኩል ነው፣ ስለዚህ የቆዩ ማኮች ከ967 በኋላ ቀኖችን ማስተናገድ አይችሉም። እና የሲስተም ባትሪው ከሞተ, ከዘመናት መጀመሪያ ጀምሮ ቀኑ ወደ 296 ሰከንድ እንደገና ይጀመራል, እና ኮምፒውተሩን በከፈቱ ቁጥር (ወይም አዲስ ባትሪ እስኪገዙ ድረስ) ቀኑን እራስዎ ማዘጋጀት አለብዎት.

ይሁን እንጂ አፕል ከዘመናት በኋላ ቀኖችን በሴኮንዶች ለማከማቸት መወሰኑ ከዘመናት በፊት ያሉትን ቀኖች ማስተናገድ አልቻልንም ማለት ነው, ይህም እንደምናየው ብዙ መዘዝ አስከትሏል. አፕል አንድ ባህሪን አስተዋወቀ እንጂ ስህተት አይደለም። ከሌሎች ነገሮች በተጨማሪ ይህ ማለት የማኪንቶሽ ኦፕሬቲንግ ሲስተም ከ"ሚሊኒየም ስህተት" (እገዳዎችን ለማቋረጥ የራሳቸው የቀን ስርዓቶች ስላላቸው ስለ ብዙ ማክ አፕሊኬሽኖች መናገር አይቻልም) ማለት ነው።

ቀጥልበት. የኮምፒዩተር አብዮትን ለማስጀመር የረዳውን ሎተስ 1-2-3 የሆነውን የIBM "ገዳይ አፕሊኬሽን" ተጠቅመን ነበር፣ ምንም እንኳን አፕል ኮምፒውተሮች ቪሲካልክ ቢኖራቸውም የግል ኮምፒዩተሩን ስኬታማ አድርጎታል። በፍትሃዊነት ፣ 1-2-3 ባይታይ ኖሮ ፒሲዎች በጭንቅ አይነሱም ነበር ፣ እና የግል ኮምፒዩተሮች ታሪክ በጣም በተለየ ሁኔታ ሊዳብር ይችል ነበር። ሎተስ 1-2-3 እ.ኤ.አ. 1900ን ልክ እንደ መዝለል አመት ታይቷል። ማይክሮ ፕላን የመጀመሪያውን የተመን ሉህ ሲያወጣ የገበያውን ትንሽ ድርሻ ያዘ። እና የኤክሴል ፕሮጄክትን ሲጀምሩ ከሎተስ 1-2-3 የረድፍ እና የአምድ ስያሜ አሰራርን ለመቅዳት ብቻ ሳይሆን 1900ን ሆን ተብሎ እንደ መዝለል አመት በማየት የሳንካ ተኳሃኝነትን ለማረጋገጥ ወስነዋል። ይህ ችግር ዛሬም አለ። ስለዚህ በ 1-2-3 ውስጥ ስህተት ነበር, ነገር ግን በ Excel ውስጥ ሁሉም 1-2-3 ተጠቃሚዎች ውሂቡን ሳይቀይሩ ጠረጴዛዎቻቸውን ወደ ኤክሴል ማስመጣት እንዲችሉ በጥንቃቄ ውሳኔ ነበር, ምንም እንኳን ስህተት ቢሆንም.

ግን ሌላ ችግር ነበር. በመጀመሪያ ማይክሮሶፍት ኤክሴልን ለ Macintosh አወጣ ከጃንዋሪ 1, 1904 በፊት ያሉትን ቀናት አላወቀም. እና በኤክሴል ውስጥ ጃንዋሪ 1, 1900 የዘመኑ መጀመሪያ ተደርጎ ይቆጠር ነበር። ስለዚህ ገንቢዎቹ ፕሮግራማቸው የዘመኑን አይነት እንዲያውቅ እና በተፈለገው ዘመን መሰረት በራሱ ውስጥ የተከማቸ መረጃ እንዲሰጥ ለውጥ አድርገዋል። ማይክሮሶፍት ስለዚህ ጉዳይ ገላጭ ጽሁፍ ጽፏል። እና ይህ ውሳኔ የእኔን ስህተት አስከተለ።

የእኔ ኢቲኤል ሲስተም በዊንዶውስ ላይ ከተፈጠሩ ደንበኞች የ Excel ተመን ሉሆችን ተቀብሏል ነገር ግን በማክ ላይም ሊፈጠር ይችላል። ስለዚህ በሠንጠረዡ ውስጥ ያለው የዘመን መጀመሪያ ጥር 1, 1900 ወይም ጥር 1, 1904 ሊሆን ይችላል. እንዴት ለማወቅ? የኤክሴል ፋይል ቅርፀቱ አስፈላጊውን መረጃ ያሳያል፣ ነገር ግን የተጠቀምኩበት ተንታኝ አላሳየውም (አሁን ያደርጋል) እና ለተወሰነ ሰንጠረዥ ዘመንን ያውቃሉ ብዬ ገምት። የኤክሴል ሁለትዮሽ ፎርማትን በመረዳት እና ለተንታኙ ጸሃፊው ፕላስተር በመላክ ብዙ ጊዜ ማሳለፍ እችል ነበር፣ነገር ግን ለደንበኛው ብዙ የምሰራው ብዙ ነገር ነበረኝ፣ስለዚህ ዘመንን ለማወቅ በፍጥነት ሂውሪስቲክ ፃፍኩ። እሷ ቀላል ነበረች።

በኤክሴል፣ እ.ኤ.አ. ጁላይ 5 ቀን 1998 በ"07-05-98" (ጥቅም የለሽ የአሜሪካ ስርዓት) ፣ "Jul 5, 98", "July 5, 1998", "5-Jul-98" ወይም ቅርጸት ሊወከል ይችላል. ሌላ ፎርማት።ሌላ የማይጠቅም ፎርማት (የሚገርመው፣ የእኔ የ Excel ስሪት ካላቀረባቸው ቅርጸቶች አንዱ ISO 8601 ነው።) ነገር ግን፣ በሠንጠረዡ ውስጥ፣ ያልተቀረፀው ቀን እንደ "35981" ለኤፕ-1900 ወይም "34519" ለኤፒ-1904 ተቀምጧል (ቁጥሮቹ ከዘመናት በኋላ ያሉትን ቀናት ብዛት ያመለክታሉ)። በቀላሉ አመቱን ከተቀረፀው ቀን ለማውጣት ቀላል ተንታኝ ተጠቀምኩኝ፣ ከዚያም የExcel parserን ተጠቅሜ ቅርጸት ከሌለው አመት ለማውጣት። ሁለቱም እሴቶች በ 4 ዓመታት ቢለያዩ እኔ ከኤፖክ-1904 ጋር ስርዓት እየተጠቀምኩ እንደሆነ አውቃለሁ።

ለምን የተቀረጹ ቀኖችን ብቻ አልተጠቀምኩም? ምክንያቱም ጁላይ 5, 1998 የወሩ ቀን በመጥፋቱ "ሐምሌ 98" ተብሎ ሊቀረጽ ይችላል. በተለያዩ መንገዶች የፈጠሩት ከብዙ ኩባንያዎች ሠንጠረዦችን ተቀብለናል ስለዚህም ቀኖቹን ለማወቅ በእኛ (በዚህ ጉዳይ ላይ እኔ) ነበር። በዛ ላይ ኤክሴል በትክክል ከሰራ እኛም እንዲሁ አለብን!

በተመሳሳይ ጊዜ 39082 አጋጠመኝ. ሎተስ 1-2-3 1900ን እንደ መዝለል አመት ይቆጥረዋል, እና ይህ በታማኝነት በኤክሴል ውስጥ ተደግሟል. እና ይህ ወደ 1900 አንድ ቀን ስለጨመረ ፣ ብዙ የቀን ስሌት ተግባራት ለዚያ ቀን ስህተት ሊሆኑ ይችላሉ። ማለትም፣ 39082 ጥር 1 ቀን 2011 (በማክ ላይ) ወይም ታኅሣሥ 31፣ 2006 (በዊንዶው ላይ) ሊሆን ይችላል። የእኔ “ዓመት ተንታኝ” 2011ን ከተቀረፀው እሴት ካወጣ፣ ሁሉም ነገር ጥሩ ነው። ነገር ግን የኤክሴል ተንታኙ ምን አይነት ኢፖክ ጥቅም ላይ እንደሚውል ስለማያውቅ፣ ወደ ኤፖክ-1900 ነባሪ ሆኗል፣ 2006 ዓ.ም. ማመልከቻዬ ልዩነቱ 5 ዓመት እንደሆነ አይቷል፣ እንደ ስህተት ቆጥሮ፣ አስገብቶ፣ እና ቅርጸት የሌለው እሴት መለሰ።

ይህንን ለመረዳት ይህንን (pseudocode) ጻፍኩ፡-

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ዎቹ መጀመሪያ ላይ አባቴ በስቶሬጅ ቴክኖሎጂ ውስጥ ሰርቷል፣ አሁን በጠፋው ክፍል የቴፕ ድራይቮች እና የሳንባ ምች ስርዓቶች ለከፍተኛ ፍጥነት ቴፕ መመገብ።

ድራይቮቹን በአዲስ መልክ የነደፉት አንድ ማዕከላዊ “A” ድራይቭ ከሰባት “ቢ” ድራይቮች ጋር የተገናኘ ሲሆን በ RAM ውስጥ ያለው “A” ድራይቭን የሚቆጣጠረው ትንሽ ኦኤስ ኦፕሬሽን ለሁሉም “ለ” አንጻፊዎች ውክልና መስጠት ይችላል።

በእያንዳንዱ ጊዜ መንዳት "A" በጀመረ ጊዜ የስርዓተ ክወናውን ወደ ማህደረ ትውስታው ለመጫን ከ "A" ጋር በተገናኘው ተጓዳኝ ድራይቭ ውስጥ ፍሎፒ ዲስክ ማስገባት አስፈላጊ ነበር. እጅግ በጣም ጥንታዊ ነበር፡ የኮምፒውተር ሃይል የቀረበው በ8-ቢት ማይክሮ መቆጣጠሪያ ነው።

ለእንደዚህ አይነት መሳሪያዎች የታለመላቸው ታዳሚዎች ብዙ የአድራሻ መለያዎችን ወይም የባንክ መግለጫዎችን ማተም የሚያስፈልጋቸው በጣም ትልቅ የመረጃ ማከማቻዎች - ባንኮች፣ የችርቻሮ ሰንሰለቶች፣ ወዘተ ያላቸው ኩባንያዎች ነበሩ።

አንድ ደንበኛ ችግር ነበረበት። በኅትመት ሥራ መካከል አንድ የተለየ ድራይቭ "A" ሥራውን ሊያቆም ይችላል, ይህም ሥራው በሙሉ እንዲቆም ያደርገዋል. የማሽከርከር ስራውን ወደነበረበት ለመመለስ ሰራተኞቹ ሁሉንም ነገር ዳግም ማስጀመር ነበረባቸው። እና ይህ በስድስት ሰዓት ሥራ መካከል ከተከሰተ ፣ በጣም ውድ የሆነ የኮምፒተር ጊዜ ጠፋ እና አጠቃላይ የቀዶ ጥገናው መርሃ ግብር ተስተጓጉሏል።

ቴክኒሻኖች ከማከማቻ ቴክኖሎጂዎች ተልከዋል። ነገር ግን የተቻለውን ያህል ጥረት ቢያደርጉም, በፈተና ሁኔታዎች ውስጥ ስህተቱን እንደገና ማባዛት አልቻሉም: በትላልቅ የህትመት ስራዎች መካከል የተከሰተ ይመስላል. ችግሩ ሃርድዌር አልነበረም፣ የቻሉትን ሁሉ ተክተዋል፡ RAM፣ microcontroller፣ ፍሎፒ ድራይቭ፣ እያንዳንዱ ሊታሰብ የሚችል የቴፕ ድራይቭ ክፍል - ችግሩ ቀጠለ።

ከዚያም ቴክኒሻኖቹ ዋና መሥሪያ ቤቱን ጠርተው ኤክስፐርቱን ጠሩ።

ባለሙያው ወንበርና አንድ ኩባያ ቡና ያዘ፣ በኮምፒዩተር ክፍሉ ውስጥ ተቀምጦ - በዚያን ጊዜ ለኮምፒዩተሮች የተሰጡ ክፍሎች ነበሩ - እና ሰራተኞቹ ትልቅ የህትመት ስራ ሲሰለፉ ተመለከተ። ኤክስፐርቱ ውድቀት እስኪመጣ እየጠበቀ ነበር - እና አደረገ. ሁሉም ሰው ኤክስፐርቱን ተመለከተ ፣ ግን ይህ ለምን እንደ ሆነ አላወቀም። ስለዚህ ሥራው እንደገና እንዲሰለፍ አዘዘ, እና ሁሉም ሰራተኞች እና ቴክኒሻኖች ወደ ሥራ ተመለሱ.

ኤክስፐርቱ እንደገና ወንበሩ ላይ ተቀመጠ እና ውድቀትን መጠበቅ ጀመረ. ስድስት ሰዓት ያህል አለፉ እና ውድቀቱ ተከስቷል. ሁሉም ነገር በሰዎች የተሞላ ክፍል ውስጥ ከመከሰቱ በስተቀር ኤክስፐርቱ እንደገና ምንም ሀሳብ አልነበረውም. ተልእኮው እንደገና እንዲጀመር አዝዞ ተቀምጦ ጠበቀ።

በሦስተኛው ውድቀት ኤክስፐርቱ አንድ ነገር አስተውሏል. አለመሳካቱ የተከሰተው ሰራተኞቹ በውጭ አገር ድራይቭ ውስጥ ካሴቶችን ሲቀይሩ ነው። ከዚህም በላይ ውድቀቱ የተከሰተው ከሠራተኞቹ አንዱ ወለሉ ላይ ባለው የተወሰነ ንጣፍ ውስጥ እንደሄደ ነው.

ከፍ ያለ ወለል የተሠራው ከ 6 እስከ 8 ኢንች ከፍታ ላይ ከተቀመጡ የአሉሚኒየም ንጣፎች ነው. ማንም ሰው በድንገት አስፈላጊ የሆነውን ገመድ እንዳይረግጥ ለመከላከል በርካታ የኮምፒዩተሮች ሽቦዎች ከፍ ካለው ወለል በታች ሮጡ። ከፍ ካለው ወለል በታች ፍርስራሾች እንዳይገቡ ለመከላከል ሰድሮች በጣም በጥብቅ ተዘርግተዋል።

ኤክስፐርቱ አንደኛው ሰድር የተበላሸ መሆኑን ተገነዘበ። አንድ ሰራተኛ ጥግውን ሲረግጥ የንጣፉ ጠርዞች በአቅራቢያው ባሉት ንጣፎች ላይ ተፋጠጡ. ንጣፎቹን የሚያገናኙት የፕላስቲክ ክፍሎችም ከነሱ ጋር ተሽጠዋል፣ ይህ ደግሞ የሬድዮ ፍሪኩዌንሲ ጣልቃ ገብነትን የሚፈጥሩ የማይክሮ ዲስቻርሶችን አስከትሏል።

ዛሬ ራም ከሬዲዮ ፍሪኩዌንሲ ጣልቃገብነት በእጅጉ የተጠበቀ ነው። በእነዚያ ዓመታት ግን ይህ አልነበረም. ኤክስፐርቱ ይህ ጣልቃ ገብነት የማስታወስ ችሎታውን እንደሚያስተጓጉል ተገነዘበ, እና ከእሱ ጋር የስርዓተ ክወናው አሠራር. የድጋፍ አገልግሎቱን ደውሎ አዳዲስ ንጣፎችን አዝዞ ራሱ አስገባና ችግሩ ጠፋ።

ከፍተኛ ማዕበል ነው!

ታሪኩ የተከናወነው በፖርትስማውዝ (እንደማስበው) በቢሮው አራተኛ ወይም አምስተኛ ፎቅ ላይ ባለው የአገልጋይ ክፍል ውስጥ ነው ።

አንድ ቀን ዋናው ዳታቤዝ ያለው የዩኒክስ አገልጋይ ተበላሽቷል። እንደገና አስነሳው፣ ግን በደስታ ደጋግሞ መውደቁን ቀጠለ። ከድጋፍ አገልግሎት ወደ አንድ ሰው ለመደወል ወሰንን.

የድጋፍ ሰጪው ሰው... ስሙ ማርክ ይባል ነበር፣ ይህ ግን ምንም አይደለም... የማውቀው አይመስለኝም። ምንም አይደለም, በእውነቱ. ከማርክ ጋር እንጣበቅ፣ እሺ? በጣም ጥሩ.

ስለዚህ, ከጥቂት ሰዓታት በኋላ ማርክ መጣ (ከሊድስ ወደ ፖርትስማውዝ ብዙ ርቀት አይደለም, ታውቃለህ), አገልጋዩን አብራ እና ሁሉም ነገር ያለችግር ሠርቷል. የተለመደው የተረገመ ድጋፍ፣ ደንበኛው በዚህ ጉዳይ በጣም ይበሳጫል። ማርክ የምዝግብ ማስታወሻ ፋይሎችን ይመለከታል እና ምንም የሚጎድል ነገር አላገኘም። እናም ማርክ ወደ ባቡሩ ተመለሰ (ወይ በየትኛዉም አይነት የትራንስፖርት አይነት እኔ የማውቀው ላም ሊሆን ይችላል... ለማንኛውም ምንም አይደለም እሺ?) እና አባክኖ ወደ ሊድስ ይመለሳል። ቀኑ።

በዚያው ምሽት አገልጋዩ እንደገና ተበላሽቷል። ታሪኩ አንድ ነው... አገልጋዩ አይነሳም። ማርክ በርቀት ለመርዳት ይሞክራል፣ ነገር ግን ደንበኛው አገልጋዩን መጀመር አይችልም።

ሌላ ባቡር፣ አውቶቡስ፣ የሎሚ ሜሪንግ ወይም ሌላ መጥፎ ነገር፣ እና ማርክ ወደ ፖርትስማውዝ ተመልሷል። ተመልከት፣ አገልጋዩ ያለምንም ችግር ይጫናል! ተአምር። ማርክ ከስርዓተ ክወናው ወይም ከሶፍትዌር ጋር ሁሉም ነገር ትክክል መሆኑን በማጣራት ብዙ ሰዓታት ያሳልፍ እና ለሊድስ ጉዞ ይጀምራል።

በእኩለ ቀን አካባቢ አገልጋዩ ይበላሻል (ቀላል ይውሰዱት!). በዚህ ጊዜ አገልጋዩን ለመተካት የሃርድዌር ድጋፍ ሰዎችን ማምጣት ምክንያታዊ ይመስላል። ግን አይሆንም፣ ከ10 ሰአታት በኋላ ደግሞ ይወድቃል።

ሁኔታው ለብዙ ቀናት ይደግማል። አገልጋዩ ይሰራል፣ ከ10 ሰአታት በኋላ ይሰናከላል እና ለሚቀጥሉት 2 ሰዓታት አይጀምርም። ማቀዝቀዝን፣ የማስታወሻ ፍንጣቂዎችን፣ ሁሉንም ነገር ፈትሸው፣ ነገር ግን ምንም አላገኙም። ከዚያም ብልሽቶቹ ቆሙ.

ሳምንቱ በግዴለሽነት አለፈ... ሁሉም ተደስተው ነበር። ሁሉም ነገር እንደገና እስኪጀምር ድረስ ደስተኛ ነኝ። ስዕሉ ተመሳሳይ ነው. የ10 ሰአት ስራ፣ ከ2-3 ሰአታት የእረፍት ጊዜ...

እናም አንድ ሰው (ይህ ሰው ከ IT ጋር ምንም ግንኙነት እንደሌለው የነገሩኝ ይመስለኛል) እንዲህ አለ።

" ማዕበሉ ነው!"

ጩኸቱ ከባዶ እይታ ጋር ተገናኝቷል፣ እና የአንድ ሰው እጅ በደህንነት ጥሪ ቁልፍ ላይ ሳያመነታ አልቀረም።

"ከማዕበል ጋር መስራት ያቆማል."

ይህ ለቡና ተቀምጠው የዓመት መጽሃፉን ማንበብ ለማይችሉ የአይቲ ድጋፍ ሰጪ ሰራተኞች ሙሉ በሙሉ ባዕድ ሀሳብ ይመስላል። ይህ በምንም መልኩ ከማዕበሉ ጋር ሊገናኝ እንደማይችል አስረድተዋል ምክንያቱም አገልጋዩ ሳይሳካለት ለአንድ ሳምንት ሲሰራ ቆይቷል።

"ባለፈው ሳምንት ማዕበሉ ዝቅተኛ ነበር፣ በዚህ ሳምንት ግን ከፍተኛ ነው።"

የመርከብ ፈቃድ ለሌላቸው ትንሽ የቃላት አነጋገር። ማዕበል በጨረቃ ዑደት ላይ የተመሰረተ ነው. እና ምድር ስትዞር በየ 12,5 ሰዓቱ የፀሐይ እና የጨረቃ የስበት ኃይል ማዕበል ይፈጥራል። በ 12,5-ሰዓት ዑደት መጀመሪያ ላይ ከፍተኛ ማዕበል አለ, በዑደቱ መካከል ኢቢቢ አለ, እና በመጨረሻው ላይ እንደገና ከፍተኛ ማዕበል አለ. ነገር ግን የጨረቃ ምህዋር እየተቀየረ ሲሄድ በዝቅተኛ እና ከፍተኛ ማዕበል መካከል ያለው ልዩነትም እንዲሁ ነው። ጨረቃ በፀሐይ እና በምድር መካከል ስትሆን ወይም ከምድር ተቃራኒው ጎን (ሙሉ ጨረቃ ወይም ጨረቃ የለም) ፣ የሳይዚጊን ማዕበል - ከፍተኛው ከፍተኛ ማዕበል እና ዝቅተኛ ዝቅተኛ ማዕበል እናገኛለን። በግማሽ ጨረቃ ላይ አራት ማዕበል እናገኛለን - ዝቅተኛው ማዕበል። በሁለቱ ጽንፎች መካከል ያለው ልዩነት በእጅጉ ይቀንሳል. የጨረቃ ዑደት ለ 28 ቀናት ይቆያል: syzygian - quadrature - syzygian - quadrature.

ቴክኒሻኖቹ ስለ ማዕበል ኃይሎች ምንነት ሲብራሩ ወዲያው ፖሊስ መጥራት እንዳለባቸው አሰቡ። እና በጣም ምክንያታዊ። ግን ዱዳው ትክክል ነበር ። ከሁለት ሳምንት በፊት አንድ አጥፊ ከቢሮው ብዙም ሳይርቅ ቀረ። ማዕበሉ ወደ አንድ ከፍታ ባሳደገ ቁጥር የመርከቡ ራዳር ፖስት በአገልጋዩ ክፍል ወለል ደረጃ ላይ ያበቃል። እና ራዳር (ወይም የኤሌክትሮኒክስ የጦር መሳሪያ ወይም ሌላ ወታደራዊ አሻንጉሊት) በኮምፒውተሮች ውስጥ ትርምስ ፈጠረ።

ለሮኬቱ የበረራ ተልዕኮ

ትልቅ (ወደ 400 ሺህ የሚጠጉ መስመሮች) የሮኬት ማስጀመሪያ ቁጥጥር እና ቁጥጥር ስርዓትን ወደ አዲሱ የስርዓተ ክወናው ስሪቶች፣ አቀናባሪ እና ቋንቋ የማዘዋወር ኃላፊነት ነበረብኝ። በትክክል ከ Solaris 2.5.1 እስከ Solaris 7 እና ከ Verdix Ada Development System (VADS) በአዳ 83 የተጻፈው በAዳ 95 ወደ ራሽናል አፕክስ አዳ ሲስተም የተጻፈ ነው። VADS የተገዛው በምክንያታዊ ነው እና ምርቱ ጊዜው ያለፈበት፣ ምንም እንኳን Rational ወደ Apex ማጠናቀር የሚደረገውን ሽግግር ለማቃለል ተኳዃኝ የሆኑ የVADS-ተኮር ጥቅሎችን ለመጠቀም ቢሞክርም።

ኮዱን በንጽህና እንዳጠናቀር ሶስት ሰዎች ረድተውኛል። ሁለት ሳምንታት ፈጅቷል. እና ከዚያ ስርዓቱ እንዲሰራ ለማድረግ በራሴ ሰራሁ። ባጭሩ ያጋጠመኝ እጅግ የከፋው የሶፍትዌር አርክቴክቸር እና ትግበራ በመሆኑ ወደቡን ለማጠናቀቅ ተጨማሪ ሁለት ወራት ፈጅቷል። ከዚያም ስርዓቱ ለሙከራ ገብቷል, ይህም ብዙ ተጨማሪ ወራት ፈጅቷል. በሙከራ ጊዜ የተገኙትን ስህተቶች ወዲያውኑ አስተካክዬ ነበር ፣ ግን ቁጥራቸው በፍጥነት ቀንሷል (የምንጩ ኮድ የምርት ስርዓት ነበር ፣ ስለሆነም ተግባራቱ በአስተማማኝ ሁኔታ ሰርቷል ፣ ከአዲሱ ማቀናበሪያ ጋር መላመድ ላይ የተነሱትን ስህተቶች ብቻ ማስወገድ ነበረብኝ)። ውሎ አድሮ ሁሉም ነገር እንደ ሚገባው ሲሰራ ወደ ሌላ ፕሮጀክት ተዛወርኩ።

እና ከምስጋና በፊት ባለው አርብ ስልኩ ጮኸ።

የሮኬቱ ማስወንጨፊያ በሦስት ሳምንታት ውስጥ መሞከር ነበረበት ፣ እና በቆጠራው የላብራቶሪ ምርመራዎች ወቅት ፣ የትዕዛዙ ቅደም ተከተል ተዘግቷል። በእውነተኛ ህይወት, ይህ ፈተናውን ያስወገደው, እና እገዳው ሞተሩን ከጀመረ በጥቂት ሰከንዶች ውስጥ ከተከሰተ, በረዳት ስርዓቶች ውስጥ ብዙ የማይቀለበስ ድርጊቶች ይከሰታሉ, ይህም ረጅም - እና ውድ - የሮኬቱን ዝግጁነት ይጠይቃል. አይጀመርም ነበር ግን ብዙ ሰዎች በጊዜና ብዙ ገንዘብ በማጣታቸው በጣም ይናደዱ ነበር። ማንም ሰው እንዳይነግሮት የመከላከያ ዲፓርትመንት ገንዘብን በግዴለሽነት ያጠፋል—በጀት አንደኛ ወይም ሁለተኛ ያልሰጠ፣በመርሐግብር ተከትሎ የኮንትራት ሥራ አስኪያጅ አጋጥሞኝ አያውቅም።

በቀደሙት ወራት፣ ይህ የመቁጠር ፈተና በብዙ ልዩነቶች በመቶዎች ለሚቆጠሩ ጊዜያት ተካሂዶ ነበር፣ ይህም በጥቂት ጥቃቅን ችግሮች ብቻ ነው። ስለዚህ ይህ የመከሰት እድሉ በጣም ዝቅተኛ ነበር, ነገር ግን ውጤቶቹ በጣም ጠቃሚ ነበሩ. እነዚህን ሁለቱንም ምክንያቶች ያባዙ እና ዜናው ለእኔ እና ለብዙ መሐንዲሶች እና አስተዳዳሪዎች የተበላሸ የበዓል ሳምንት እንደሚተነብይ ትገነዘባላችሁ።

እና ስርዓቱን እንዳስተላለፍኩት ሰው ትኩረት ተሰጥቶኝ ነበር።

ልክ እንደ አብዛኞቹ የደህንነት-ወሳኝ ስርዓቶች፣ ብዙ መመዘኛዎች ገብተዋል፣ ስለዚህ ስርዓቱ ከመበላሸቱ በፊት የተፈጸሙትን ጥቂት የኮድ መስመሮች መለየት በጣም ቀላል ነበር። እና በእርግጥ በእነሱ ውስጥ ምንም ያልተለመደ ነገር አልነበረም ፣ ተመሳሳይ አገላለጾች በተመሳሳይ ሩጫ በሺዎች ለሚቆጠሩ ጊዜያት በተሳካ ሁኔታ ተፈጽመዋል።

ከኤክስክስ የመጡ ሰዎችን ወደ ራሽናል ጠርተናል ምክንያቱም ማቀናበሪያውን ያዳበሩት እነሱ በመሆናቸው እና አንዳንድ ያዳበሩዋቸው አሰራሮች በጥርጣሬ ኮድ ውስጥ ተጠርተዋል. እነሱ (እና ሁሉም) የችግሩን ምንጭ በትክክል ማግኘት እንደሚያስፈልግ አስደነቃቸው።

በመጽሔቶቹ ውስጥ ምንም የሚስብ ነገር ስላልነበረ ችግሩን በአካባቢው ላብራቶሪ ውስጥ እንደገና ለማባዛት ወሰንን. ክስተቱ በ1000 ሩጫዎች አንድ ጊዜ ስለተከሰተ ይህ ቀላል ስራ አልነበረም። አንዱ የተጠረጠረበት ምክንያት በሻጭ ላደገው mutex ተግባር (የ VADS ፍልሰት ጥቅል አካል) ጥሪ ነው። Unlock ወደ መክፈቻ አላመራም. ተግባሩን የጠራው የማቀነባበሪያ ክር በየሰከንዱ በስም የሚደርሱ የልብ ምት መልእክቶችን አስተናግዷል። ድግግሞሹን ወደ 10 Hz ማለትም በሰከንድ 10 ጊዜ ከፍ አድርገን መሮጥ ጀመርን። ከአንድ ሰአት በኋላ ስርዓቱ እራሱን ተቆልፏል. በምዝግብ ማስታወሻው ውስጥ, የተቀዳው መልእክቶች ቅደም ተከተል ባልተሳካው ሙከራ ወቅት አንድ አይነት መሆኑን አይተናል. ብዙ ተጨማሪ ሩጫዎችን አድርገናል፣ ስርዓቱ ከ45-90 ደቂቃዎች በኋላ በተከታታይ ታግዷል፣ እና በእያንዳንዱ ጊዜ ምዝግብ ማስታወሻው ተመሳሳይ መንገድ ይይዛል። ምንም እንኳን በቴክኒካል የተለየ ኮድ ብንሰራም - የመልዕክቱ ድግግሞሽ የተለየ ነበር - የስርዓቱ ባህሪ ተመሳሳይ ነበር, ስለዚህ ይህ የጭነት ሁኔታ ተመሳሳይ ችግር እንደሚፈጥር እርግጠኞች ነበርን.

አሁን በአገላለጾች ቅደም ተከተል ውስጥ በትክክል እገዳው የት እንደተከሰተ ማወቅ ያስፈልገናል.

ይህ የስርአቱ አተገባበር የአዳ ተግባር ስርዓትን ተጠቅሟል፣ እና በሚገርም ሁኔታ ተጠቅሞበታል። ተግባራት በአዳ ውስጥ ከፍተኛ ደረጃ በአንድ ጊዜ ሊተገበር የሚችል ግንባታ ነው፣ ​​እንደ የአፈጻጸም ክሮች ያለ፣ በራሱ ቋንቋ ውስጥ ብቻ ነው የተሰራው። ሁለት ተግባራትን መግባባት ሲፈልጉ, "እንደገና ያዘጋጃሉ", አስፈላጊውን መረጃ ይለዋወጣሉ, ከዚያም ንግግሩን አቁመው ወደ ገለልተኛ አፈፃፀማቸው ይመለሳሉ. ይሁን እንጂ ስርዓቱ በተለየ መንገድ ተተግብሯል. የታለመው ተግባር እንደገና ከተቀየረ በኋላ፣ ያ ዒላማው ተግባር በሌላ ተግባር ተለወጠ፣ ከዚያም በሦስተኛ ደረጃ እንደገና ተመለሰ እና የተወሰነ ሂደት እስኪጠናቀቅ ድረስ። ከዚህ በኋላ, እነዚህ ሁሉ ስራዎች ተጠናቅቀዋል እና እያንዳንዱ ተግባር ወደ አፈፃፀሙ መመለስ ነበረበት. ማለትም፣ በአለም ላይ በጣም ውድ ከሆነው የተግባር ጥሪ ስርዓት ጋር እየተገናኘን ነበር፣ይህም የግቤት ውሂቡን በከፊል ሲያካሂድ አጠቃላይውን “ብዙ ስራ መስራት” አቁሟል። እና ከዚህ በፊት ችግሩ በጣም ዝቅተኛ ስለሆነ ብቻ ወደ ችግሮች አላመራም.

ይህንን የተግባር ዘዴ ገለጽኩለት ምክንያቱም ሪንዴዝቭስ ሲጠየቅ ወይም ይጠናቀቃል ተብሎ ሲጠበቅ "የተግባር ማብሪያ / ማጥፊያ" ሊከሰት ይችላል። ማለትም ፕሮሰሰሩ ለመፈጸም ዝግጁ የሆነ ሌላ ስራ መስራት ሊጀምር ይችላል። አንድ ተግባር በሌላ ተግባር ለመድገም ሲዘጋጅ ሙሉ ለሙሉ የተለየ ተግባር መፈፀም ሊጀምር ይችላል እና በመጨረሻም መቆጣጠሪያው ወደ መጀመሪያው ሂደት ይመለሳል። እና ሥራው እንዲለወጥ የሚያደርጉ ሌሎች ክስተቶች ሊከሰቱ ይችላሉ; ከእንደዚህ አይነት ክስተት አንዱ እንደ ሙቴክስ ማተም ወይም ማስፈጸም የመሰለ የስርዓት ተግባር ጥሪ ነው።

የትኛው የኮድ መስመር ለችግሩ መንስኤ እንደሆነ ለመረዳት የተግባር መቀየሪያን ሳላነሳ በተከታታይ መግለጫዎች መሻሻል የምመዘግብበትን መንገድ መፈለግ ነበረብኝ ይህም ብልሽት እንዳይከሰት ይከላከላል። ስለዚህ መጠቀሚያ ማድረግ አልቻልኩም Put_Line()የ I/O ስራዎችን ላለመፈጸም. የቆጣሪ ተለዋዋጭ ወይም ተመሳሳይ የሆነ ነገር ማዘጋጀት እችል ነበር፣ ግን በስክሪኑ ላይ ማሳየት ካልቻልኩ ዋጋውን እንዴት ማየት እችላለሁ?

እንዲሁም የምዝግብ ማስታወሻውን በሚመረምርበት ጊዜ ፣ ​​ምንም እንኳን የልብ ምት መልእክቶች ሂደት ውስጥ ቀዝቀዝ ያለ ቢሆንም ፣ የሂደቱን ሁሉንም የ I/O ሥራዎችን ያገደው እና ሌሎች ሂደቶች እንዳይከናወኑ የሚከለክል ቢሆንም ፣ ሌሎች ገለልተኛ ተግባራት መከናወናቸውን ቀጥለዋል ። ያም ማለት ሥራው ሙሉ በሙሉ አልተዘጋም, (ወሳኝ) የተግባር ሰንሰለት ብቻ ነው.

የማገጃውን አገላለጽ ለመገምገም የሚያስፈልገው ፍንጭ ይህ ነበር።

አንድ ተግባር፣ የተዘረዘረ አይነት እና የዚያ አይነት አለምአቀፋዊ ተለዋዋጭን የያዘ የአዳ ጥቅል ሰራሁ። ቁጥራቸው የበዛ ቃል በቃል ለተወሰኑ የችግር ቅደም ተከተሎች (ለምሳሌ፦ Incrementing_Buffer_Index, Locking_Mutex, Mutex_Unlocked), እና ከዚያ ተዛማጁን ቆጠራ ለአለምአቀፍ ተለዋዋጭ የሚመደብ የምደባ መግለጫዎችን አስገባ። የእነዚህ ሁሉ የቁስ ኮድ በቀላሉ ቋሚ ማህደረ ትውስታን ስለሚያከማች በአፈፃፀሙ ምክንያት የተግባር መቀያየር በጣም የማይቻል ነበር። ስራውን ወደ ኋላ ሲቀይሩ (በተለያዩ ምክንያቶች) ከመመለስ ይልቅ እገዳው የተከናወነው በአፈፃፀም ላይ ስለሆነ ስራውን ሊቀይሩ የሚችሉ አገላለጾችን በዋናነት እንጠራጠራለን።

የመከታተያ ስራው በቀላሉ በ loop ውስጥ ይሮጣል እና የአለምአቀፉ ተለዋዋጭ እሴት ተቀይሮ እንደሆነ ለማየት በየጊዜው ይፈትሹ። በእያንዳንዱ ለውጥ እሴቱ ወደ ፋይል ተቀምጧል። ከዚያ ትንሽ መጠበቅ እና አዲስ ቼክ. ተለዋዋጭውን ወደ ፋይሉ ጻፍኩት ምክንያቱም ስራው የተከናወነው በችግሩ አካባቢ ያለውን ተግባር ሲቀይሩ ስርዓቱ እንዲፈፀም ሲመርጥ ብቻ ነው. በዚህ ተግባር ውስጥ የሆነው ምንም ይሁን ምን በሌሎች ፣ የማይዛመዱ የታገዱ ተግባራት ላይ ተጽዕኖ አያሳድርም።

ስርዓቱ ችግር ያለበትን ኮድ የማስፈፀም ደረጃ ላይ ሲደርስ ወደ እያንዳንዱ ቀጣይ አገላለጽ ሲሄድ የአለምአቀፍ ተለዋዋጭ ዳግም ይጀመራል ተብሎ ይጠበቃል። ከዚያ ስራው እንዲቀየር የሚያደርግ አንድ ነገር ይከሰታል እና የአፈፃፀም ድግግሞሽ (10 Hz) ከክትትል ተግባሩ ያነሰ ስለሆነ ተቆጣጣሪው የአለምአቀፍ ተለዋዋጭ እሴትን ይይዛል እና ይጽፋል። በተለመደው ሁኔታ ውስጥ ፣ የተግባር ማብሪያ / ማጥፊያው ጊዜ ፣ ​​የተለዋዋጭ የመጨረሻዎቹ እሴቶች ተደጋጋሚ የቁጥር ቅደም ተከተል ማግኘት እችላለሁ። በሚሰቀልበት ጊዜ፣ አለማቀፉ ተለዋዋጭ መለወጥ የለበትም፣ እና የተፃፈው የመጨረሻው እሴት የትኛው አገላለጽ እንዳልተጠናቀቀ ያሳያል።

ኮዱን በክትትል ሮጥኩት። ቀዘቀዘ። እና ክትትልው እንደ ሰዓት ስራ ይሰራል።

ምዝግብ ማስታወሻው የሚጠበቀው ቅደም ተከተል ይዟል፣ ይህም ሙቴክስ መጠራቱን በሚያመለክተው እሴት ተቋርጧል Unlock, እና ስራው አልተጠናቀቀም - በሺዎች በሚቆጠሩ የቀድሞ ጥሪዎች ላይ እንደሚታየው.

የApex መሐንዲሶች በዚህ ጊዜ ኮዳቸውን በትኩረት ሲመረምሩ ነበር እና በቲዎሪ ደረጃ መቆለፊያ ሊፈጠር የሚችልበት በ mutex ውስጥ ቦታ አግኝተዋል። ነገር ግን በተወሰነ ጊዜ ውስጥ የተከሰቱት የተወሰኑ ተከታታይ ክስተቶች ብቻ ወደ እገዳ ሊያመራ ስለሚችል የእሱ ዕድል በጣም ዝቅተኛ ነበር. የመርፊ ህግ፣ ሰዎች፣ የመርፊ ህግ ነው።

የሚያስፈልገኝን የኮድ ቁራጭ ለመጠበቅ የ mutex ተግባር ጥሪዎችን (ከOS mutex ተግባር በላይ የተሰራውን) በትንሽ ቤተኛ Ada mutex ጥቅል ተክቼ ወደዚያ ክፍል mutex መድረስን ለመቆጣጠር።

በኮዱ ውስጥ አስገባሁት እና ፈተናውን ሮጥኩ። ከሰባት ሰዓታት በኋላ ኮዱ አሁንም እየሰራ ነበር።

የእኔ ኮድ ወደ ራሽናል ገብቷል፣ እነሱ አጠናቅረው፣ ፈትተውት እና ችግር በሚፈጥሩ የ mutex ተግባራት ውስጥ ጥቅም ላይ የዋለውን ተመሳሳይ አካሄድ እንዳልተጠቀመ አረጋግጠዋል።

በሙያዬ ውስጥ በጣም የተጨናነቀው የኮድ ግምገማ ይህ ነበር

ኮዱ ተገምግሟል፣ አዲስ ሊተገበሩ የሚችሉ ፋይሎች ተሰብስበው ለመደበኛ የድጋሚ ፈተና ገብተዋል። ከጥቂት ሳምንታት በኋላ፣ የመቁጠር ፈተናው ተሳክቶ ሮኬቱ ተነስቷል።

እሺ፣ ያ ጥሩ ነው፣ ግን የታሪኩ ፋይዳ ምንድን ነው?

ፍፁም አስጸያፊ ችግር ነበር። በመቶ ሺዎች የሚቆጠሩ የኮድ መስመሮች፣ ትይዩ አፈጻጸም፣ ከደርዘን በላይ የመስተጋብር ሂደቶች፣ ደካማ አርክቴክቸር እና ደካማ አተገባበር፣ ለተከተቱ ስርዓቶች በይነገጽ እና በሚሊዮኖች የሚቆጠር ዶላር ወጪ። ምንም ጫና የለም, ትክክል.

እኔ ብቻ አይደለሁም በዚህ ችግር ላይ የምሰራው፣ ምንም እንኳን የማስተላለፊያውን ስራ በምሰራበት ጊዜ ትኩረቴ ላይ ብሆንም። ነገር ግን ያደረግኩት ቢሆንም፣ ይህ ማለት ግን በመቶ ሺዎች የሚቆጠሩ የኮድ መስመሮችን ተረድቼአለሁ፣ ወይም ስልኳቸው። ኮዱ እና ሎግዎቹ በመላ ሀገሪቱ በሚገኙ ኢንጂነሮች የተተነተኑ ቢሆንም የውድቀቱ መንስኤ የሆኑትን መላምቶቻቸውን ሲነግሩኝ ለማስተባበል ግማሽ ደቂቃ ብቻ ፈጅቶብኛል። እናም ንድፈ ሃሳቦችን እንድመረምር ስጠየቅ ለሌላ አሳልፋለሁ ምክንያቱም እነዚህ መሐንዲሶች በተሳሳተ መንገድ እየሄዱ እንደሆነ ግልጽ ሆኖልኝ ነበር። ትዕቢት ይመስላል? አዎ፣ ይህ እውነት ነው፣ ግን መላምቶችን እና ጥያቄዎችን በሌላ ምክንያት ውድቅ አድርጌያለሁ።

የችግሩን ተፈጥሮ ተረድቻለሁ። የት እንደ ሆነ ወይም ለምን እንደሆነ በትክክል አላውቅም ነበር፣ ግን እየሆነ ያለውን ነገር አውቃለሁ።

ባለፉት ዓመታት ብዙ እውቀትና ልምድ አከማችቻለሁ። አዳን ከመጠቀም አቅኚዎች አንዱ ነበርኩ እና ጥቅሞቹን እና ጉዳቶቹን ተረድቻለሁ። የAda runtime ቤተ-ፍርግሞች እንዴት ተግባራትን እንደሚይዙ እና ትይዩ አፈጻጸምን እንዴት እንደሚይዙ አውቃለሁ። እና ዝቅተኛ ደረጃ ፕሮግራሚንግ በማህደረ ትውስታ፣ በመመዝገቢያ እና በመሰብሰብ ደረጃ ተረድቻለሁ። በሌላ አነጋገር በኔ መስክ ጥልቅ እውቀት አለኝ። እና የችግሩን መንስኤ ለማግኘት ተጠቀምኳቸው. በትልች ዙሪያ ብቻ አልሰራሁም፣ በጣም ሚስጥራዊነት ባለው የሩጫ ጊዜ አካባቢ እንዴት እንደምገኘው ተረድቻለሁ።

ከኮድ ጋር እንደዚህ ያሉ የትግል ታሪኮች እንደዚህ ዓይነቱን ትግል ባህሪዎች እና ሁኔታዎች በደንብ ለማያውቁ ሰዎች በጣም አስደሳች አይደሉም። ነገር ግን እነዚህ ታሪኮች በጣም አስቸጋሪ ችግሮችን ለመፍታት ምን እንደሚያስፈልግ እንድንገነዘብ ይረዱናል.

በጣም ከባድ ችግሮችን ለመፍታት ፕሮግራመር ብቻ ከመሆን በላይ መሆን አለቦት። የኮዱን "እጣ ፈንታ", ከአካባቢው ጋር እንዴት እንደሚገናኝ እና አከባቢው እራሱ እንዴት እንደሚሰራ መረዳት አለብዎት.

እና ከዚያ የእራስዎ የተበላሸ የበዓል ሳምንት ይኖርዎታል።

እንዲቀጥል.

ምንጭ: hab.com

አስተያየት ያክሉ