Фолклори барномасозон ва муҳандисон (қисми 1)

Фолклори барномасозон ва муҳандисон (қисми 1)

Ин интихоби ҳикояҳо аз Интернет дар бораи он аст, ки чӣ тавр хатогиҳо баъзан зуҳуроти комилан аҷиб доранд. Шояд шумо низ чизе гуфтан дошта бошед.

Аллергияи мошин ба яхмос ванилин

Ҳикоя барои муҳандисоне, ки мефаҳманд, ки на ҳама вақт ҷавоби аён аст ва новобаста аз он ки далелҳо то чӣ андоза дурандешанд, онҳо ҳанӯз далеланд. Шӯъбаи Понтиак аз General Motors Corporation шикоят гирифт:

Ин бори дуюм аст, ки ман ба шумо менависам ва ман шуморо барои ҷавоб надодан маломат намекунам, зеро ин девона садо медиҳад. Дар оилаи мо анъанае ҳаст, ки ҳар шаб пас аз хӯроки шом яхмос мехӯранд. Намудҳои яхмос ҳар дафъа дигар мешаванд ва пас аз хӯроки шом тамоми аҳли оила кадом яхмосро интихоб мекунанд ва баъд аз он ман ба мағоза меравам. Ман ба наздикӣ як Pontiac-и нав харидам ва аз он вақт инҷониб сафарҳои ман барои гирифтани яхмос ба мушкилот табдил ёфтанд. Бубинед, ҳар боре, ки ман яхмоси ванилинӣ мехараму аз мағоза бармегардам, мошин даркор намешавад. Агар ягон яхмоси дигар биёрам, мошин бе мушкилот ба кор медарояд. Ман мехоҳам як саволи ҷиддӣ диҳам, новобаста аз он ки он чӣ қадар аблаҳона садо медиҳад: "Дар бораи Pontiac чист, ки он вақте ки ман яхмоси ванилинӣ меоварам, онро оғоз намекунад, аммо ҳангоми овардани маззаи дигари яхмос ба осонӣ оғоз меёбад?"

Тавре ки шумо тасаввур карда метавонед, раиси дивизия ба мактуб шубҳа дошт. Аммо, ба хар хол инженерро барои тафтиш фиристодам. Вай дар хайрат монд, ки уро марди сарватманду бомаърифат, ки дар як махалли зебо зиндагй мекунад, пешвоз мегирад. Онҳо розӣ шуданд, ки фавран пас аз хӯроки шом вохӯранд, то ҳардуи онҳо ба мағозаи яхмос раванд. Он бегоҳ он ванилин буд ва вақте ки онҳо ба мошин баргаштанд, он сар намешуд.

Инженер боз се бегохй омад. Бори аввал яхмос шоколад буд. Мошин ба кор даромад. Дафъаи дуюм яхмоси тарбуз. Мошин ба кор даромад. Бегоҳи сеюм ӯ хоҳиш кард, ки ванилин бигирад. Мошин ба кор надаромад.

Оқилона фикр карда, муҳандис бовар карданро рад кард, ки мошин ба яхмоси ванилӣ аллергия дорад. Аз ин рӯ, бо соҳиби мошин розӣ шудам, ки то роҳи ҳалли мушкилоташ боздидҳояшро идома медиҳад. Ва дар роҳ ӯ ба қайд гирифт: ӯ тамоми маълумот, вақти рӯз, навъи бензин, вақти омадан ва баргаштан аз мағоза ва ғайраро навишт.

Муҳандис зуд фаҳмид, ки соҳиби мошин барои харидани яхмоси ванилинӣ вақти камтар сарф кардааст. Сабаби он дар магазин тартиб додани мол буд. Яхмоси ванилинӣ маъмултарин буд ва онро дар яхдони алоҳида дар пеши мағоза нигоҳ медоштанд, то пайдо кардани он осонтар гардад. Ва ҳамаи навъҳои дигар дар паси мағоза буданд ва барои пайдо кардани навъҳои мувофиқ ва пардохти он вақти бештар лозим буд.

Акнун савол ба сари муҳандис буд: агар аз лаҳзаи хомӯш кардани муҳаррик вақти камтар гузашта бошад, чаро мошин ба кор надаромад? Азбаски масъала вакт буд, на яхмоси ванилинй, инженер зуд чавоб ёфт: ин блоки газ буд. Ин ҳар бегоҳ рух медод, аммо вақте соҳиби мошин вақти бештарро барои ҷустуҷӯи яхмос сарф мекард, муҳаррик тавонист ба қадри кофӣ сард шавад ва ба осонӣ ба кор даромад. Ва ҳангоме ки мард яхмоси ванилинӣ харид, муҳаррик ҳанӯз хеле гарм буд ва қуфли газ барои об шудан вақт надошт.

Ахлоқӣ: Ҳатто мушкилоти комилан девона баъзан воқеӣ мебошанд.

суқути Bandicoot

Инро таҷриба кардан дардовар аст. Ҳамчун барномасоз, шумо одат кардаед, ки коди худро аввал, дуюм, сеюм... ва дар ҷои даҳ ҳазорум шумо компиляторро гунаҳкор мекунед. Ва дар поёни рӯйхат шумо аллакай таҷҳизотро айбдор мекунед.

Ин аст достони ман дар бораи хатогии сахтафзор.

Барои бозии Crash Bandicoot, ман код навиштам, то ба корти хотира бор кунад ва захира кунад. Барои чунин як таҳиягари бозии шӯҳратпараст, ин мисли сайру гашт дар боғ буд: ман фикр мекардам, ки кор чанд рӯзро мегирад. Бо вуҷуди ин, ман дар тӯли шаш ҳафта рамзро ислоҳ кардам. Дар роҳ, ман мушкилоти дигарро ҳал кардам, аммо ҳар чанд рӯз ман барои чанд соат ба ин код бармегардам. Ин азоб буд.

Аломат чунин менамуд: вақте ки шумо бозии ҷории бозӣро захира мекунед ва ба корти хотира дастрасӣ медиҳед, ҳама чиз қариб ҳамеша хуб мешавад... Аммо баъзан вақти амалиёти хондан ё навиштан бе сабабҳои маълум тамом мешавад. Сабти кӯтоҳ аксар вақт корти хотираро вайрон мекунад. Вақте ки бозигар кӯшиш мекунад, ки наҷот диҳад, вай на танҳо захира карда наметавонад, балки харитаро низ вайрон мекунад. Аҷаб.

Пас аз чанде, продюсери мо дар Sony, Конни Бус ба воҳима афтод. Мо натавонистем бозӣро бо ин иштибоҳ интиқол диҳем ва пас аз шаш ҳафта ман нафаҳмидам, ки ин мушкилот чист. Тавассути Конни, мо бо дигар таҳиягарони PS1 тамос гирифтем: оё касе бо ягон чизи шабеҳ дучор шудааст? Не. Ҳеҷ кас бо корти хотира мушкилот надошт.

Ҳангоме ки шумо дар бораи ислоҳ кардан ғояе надоред, ягона роҳи боқимонда ин “тақсим кардан ва ғалаба кардан” аст: коди ҳарчи бештарро аз барномаи хато хориҷ кунед, то он даме ки порчаи нисбатан хурд боқӣ мемонад, ки то ҳол боиси мушкилот мегардад. Яъне, шумо барномаро пора-пора бурида мемонед, то он қисме, ки хатогиро дар бар мегирад, боқӣ мемонад.

Аммо гап дар он аст, ки буридани қисмҳои бозии видео хеле душвор аст. Чӣ тавр онро иҷро кардан мумкин аст, агар шумо коди тақлидкунандаи вазниниро хориҷ кунед? Ё кашидани аломатҳо?

Аз ин рӯ, мо бояд тамоми модулҳоро бо нотаҳое иваз кунем, ки вонамуд мекунанд, ки кори фоиданок мекунанд, аммо дар асл кори хеле соддаеро иҷро кунем, ки хатогиҳоро дар бар намегирад. Мо бояд чунин асобагонро нависем, ки бозӣ ҳадди аққал кор кунад. Ин як раванди суст ва дардовар аст.

Хулоса, ман инро кардам. Ман қисмҳои бештари кодҳоро хориҷ кардам, то он даме, ки ман бо рамзи ибтидоӣ, ки системаро барои иҷро кардани бозӣ танзим мекунад, сахтафзорро оғоз мекунад ва ғайра боқӣ мондам. Албатта, дар ин марҳила ман наметавонистам менюи захиракунӣ ва боркунӣ созам, зеро ман бояд барои ҳамаи кодҳои графикӣ нотача эҷод кунам. Аммо ман метавонам худро корбар вонамуд кунам, ки экрани захиракунӣ ва боркуниро истифода мебарад (ноаён) ва хоҳиш кунам, ки захира кунам ва сипас ба корти хотира нависам.

Ин ба ман як пораи хурди рамзеро гузошт, ки то ҳол мушкилоти дар боло зикршударо дошт - аммо он то ҳол ба таври тасодуфӣ рух медод! Аксар вақт ҳама чиз хуб кор мекард, аммо баъзан хатогиҳо буданд. Ман қариб ҳама рамзи бозиро хориҷ кардам, аммо хато ҳанӯз зинда буд. Ин ҳайратовар буд: рамзи боқимонда воқеан ҳеҷ коре накард.

Дар баъзе мавридҳо, эҳтимол тақрибан соати сеи саҳар, фикре ба сарам омад. Амалиётҳои хондан ва навиштан (ворид/баромад) вақти дақиқи иҷроро дар бар мегиранд. Вақте ки шумо бо диски сахт, корти хотира ё модули Bluetooth кор мекунед, рамзи сатҳи пасти барои хондан ва навиштан масъули ин кор мувофиқи импулсҳои соат аст.

Бо ёрии соат дастгоҳе, ки ба протсессор мустақиман пайваст нест, бо коди дар протсессори иҷрошаванда ҳамоҳанг карда мешавад. Соат суръати интиқолро муайян мекунад - суръати интиқоли маълумот. Агар бо вақтҳо иштибоҳ вуҷуд дошта бошад, он гоҳ сахтафзор ё нармафзор ё ҳарду низ ошуфта мешаванд. Ва ин хеле бад аст, зеро маълумот метавонад вайрон шавад.

Чӣ мешавад, агар чизе дар кодекси мо вақтро ошуфта кунад? Ман ҳама чизеро, ки ба ин марбут аст, дар коди барномаи санҷиш тафтиш кардам ва мушоҳида кардам, ки мо таймери барномарезишавандаро дар PS1 то 1 кГц (1000 тик дар як сония) насб кардем. Ин хеле зиёд аст; ба таври нобаёнӣ, вақте ки консол оғоз меёбад, он дар 100 Гц кор мекунад. Ва аксари бозиҳо ин басомадро истифода мебаранд.

Энди, таҳиягари бозӣ, вақтсанҷро ба 1 кГц муқаррар кард, то ҳаракатҳо дақиқтар ҳисоб карда шаванд. Энди майли аз ҳад зиёд гузаштан аст ва агар мо ба ҷозиба тақлид кунем, мо онро то ҳадди имкон дақиқ иҷро мекунем!

Аммо чӣ мешавад, агар суръатбахшии таймер ба таври возеҳ ба вақти умумии барнома ва аз ин рӯ соате, ки суръати интиқоли корти хотираро танзим мекунад, таъсир расонад?

Ман рамзи таймерро шарҳ додам. Хатогӣ дигар рӯй надод. Аммо ин маънои онро надорад, ки мо онро ислоҳ кардем, зеро нокомӣ тасодуфӣ рӯй дод. Чӣ мешавад, агар ман танҳо хушбахт будам?

Пас аз чанд рӯз ман бори дигар бо барномаи санҷишӣ озмоиш кардам. Хатогӣ такрор нашуд. Ман ба пойгоҳи пурраи коди бозӣ баргаштам ва рамзи захиракунӣ ва боркуниро тағир додам, то таймери барномарезишаванда пеш аз дастрасӣ ба корти хотира ба арзиши аслии худ (100 Гц) аз нав барқарор шавад ва сипас ба 1 кГц дубора барқарор шавад. Дигар садамаҳо набуданд.

Аммо чаро ин тавр шуд?

Ман боз ба барномаи санҷишӣ баргаштам. Ман кӯшиш кардам, ки дар пайдоиши хато бо таймери 1 кГц намуна пайдо кунам. Дар ниҳоят ман пайхас кардам, ки хатогӣ вақте рух медиҳад, ки касе бо контроллери PS1 бозӣ мекунад. Азбаски ман худам ин корро хеле кам мекардам - ​​чаро ҳангоми санҷиши коди захиракунӣ ва боркунӣ ба ман контроллер лозим аст? - Ман ин вобастагиро ҳатто пайхас накардаам. Аммо рӯзе яке аз ҳунармандони мо интизори анҷоми санҷишам буд, - шояд ҳамон лаҳза лаънат мегуфтам, - ва асабонӣ контроллерро дар дасташ чарх зад. Хатогие рух дод. "Интизор бошед, чӣ?!" Хуб, боз ин корро кунед!»

Вақте ки ман фаҳмидам, ки ин ду ҳодиса бо ҳам алоқаманданд, ман тавонистам хатогиро ба осонӣ такрор кунам: ман сабтро ба корти хотира оғоз кардам, контроллерро кӯчондам ва корти хотираро вайрон кардам. Ба назари ман он як хатои сахтафзор менамуд.

Ман ба назди Кони омадам ва ба ӯ дар бораи кашфи худ нақл кардам. Вай маълумотро ба яке аз муҳандисоне расонд, ки PS1-ро таҳия кардааст. "Мумкин нест," ӯ ҷавоб дод, "Ин мушкилии сахтафзор буда наметавонад." Ман аз Кони хохиш кардам, ки барои мо сухбат ташкил кунад.

Муҳандис ба ман занг зад ва мо бо забони инглисии шикастаи ӯ ва японии (хеле) шикастаи ман баҳс кардем. Дар ниҳоят ман гуфтам: "Иҷозат диҳед, ки барномаи санҷишии 30-хати худро бифиристам, ки дар он ҷо ҳаракат кардани контроллер хатогиро ба вуҷуд меорад." Вай розй шуд. Гуфт, ки ин беҳудаи вақт буд ва ӯ ба кор дар лоиҳаи нав сахт банд аст, аммо таслим мешавад, зеро мо як таҳиягари хеле муҳим барои Sony будем. Ман барномаи санҷиши худро тоза кардам ва ба ӯ фиристодам.

Шоми дигар (мо дар Лос-Анҷелес будем ва ӯ дар Токио буд) ӯ ба ман занг зад ва сахт узр пурсид. Ин мушкили сахтафзор буд.

Ман намедонам, ки хато маҳз чӣ буд, аммо аз он чизе ки ман дар идораи Sony шунидам, агар шумо таймерро ба қадри кофӣ баланд таъин кунед, он ба ҷузъҳои дар motherboard дар наздикии кристали таймер халалдор мешавад. Яке аз онҳо контролери суръати интиқоли корти хотира буд, ки он инчунин суръати интиқолро барои контроллерҳо муқаррар кардааст. Ман муҳандис нестам, аз ин рӯ шояд чизеро вайрон карда бошам.

Аммо хулоса ин аст, ки дахолат байни ҷузъҳои motherboard вуҷуд дошт. Ва ҳангоми интиқоли маълумот дар як вақт тавассути бандари контроллер ва порти корти хотира бо таймер дар 1 кГц, битҳо гум шуданд, маълумот гум шуд ва корт осеб дид.

Говҳои бад

Дар солҳои 1980-ум, устоди ман Сергей нармафзорро барои СМ-1800, клони шӯравии PDP-11 навишт. Ин микрокомпьютер ба карибй дар станциям рохи охани наздикии Свердловск — узели мухимми наклиётии СССР гузошта шуд. Системам нав барои маршрути вагонхо ва обороти бор пешбинй шудааст. Аммо он як хатои озориеро дар бар мегирад, ки боиси садамаҳо ва садамаҳои тасодуфӣ гардид. Фурӯпошӣ ҳамеша вақте рух медод, ки касе бегоҳ ба хона мерафт. Аммо сарфи назар аз тафтиши ҳамаҷонибаи рӯзи дигар, компютер дар ҳама санҷишҳои дастӣ ва автоматӣ дуруст кор кард. Ин одатан ҳолати мусобиқа ё ягон хатогии дигари рақобатиро, ки дар шароити муайян рух медиҳад, нишон медиҳад. Аз зангҳои бевактии шаб хаста шуда, Сергей тасмим гирифт, ки ба асли он бирасад ва пеш аз ҳама бифаҳмад, ки чӣ гуна шароит дар саҳни ҳавлӣ боиси вайрон шудани компютер шудааст.

Аввалан, ӯ омори ҳама афтиши нофаҳмо ҷамъоварӣ кард ва графикро аз рӯи сана ва вақт сохт. Намуна равшан буд. Баъди чанд рузи дигар мушохида кардан, Сергей фахмид, ки вай ба осонй вакти нокомии системахои ояндаро пешгуй карда метавонад.

Ба зудӣ ӯ фаҳмид, ки халалдоршавӣ танҳо вақте рух медиҳад, ки истгоҳ як қатор чорвои калони шохдорро аз шимоли Украина ва ғарби Русия ба як қассобхонаи ҳамсоя равон мекард. Ин худ аз худ аҷиб буд, зеро қассобхонаро хоҷагиҳои хеле наздиктар, дар Қазоқистон ҷойгир мекарданд.

Нерӯгоҳи барқи атомии Чернобил соли 1986 таркид ва партовҳои радиоактивӣ манотиқи гирду атрофро ғайриқонунӣ сохт. Минтақаҳои васеъ дар шимоли Украина, Беларус ва ғарби Русия олуда шуданд. Сергей дар вагонхои омадаистода ба дарачаи баланди радиация гумон карда, усули озмоиши ин назарияро кор карда баромад. Дозиметр доштан ба ахолй манъ карда шуда буд, бинобар ин Сергей дар вокзал дар назди якчанд нафар харбиён кайд кард. Пас аз чанд нӯшидани арак ба ӯ муяссар шуд, ки сарбозро барои чен кардани сатҳи радиатсия дар яке аз вагонҳои шубҳанок бовар кунонад. Маълум шуд, ки сатҳ аз арзишҳои муқаррарӣ чанд маротиба зиёдтар аст.

Чорво на фацат радиациям зиёд мебарорад, дарачаи он чунон баланд буд, ки дар хотираи СМ-1800, ки дар бинои назди станция вокеъ буд, тасодуфан гум шудани битхо гардид.

Дар СССР нарасидани озуқа ба амал омад ва ҳукуматдорон тасмим гирифтанд, ки гӯшти Чернобилро бо гӯшти дигар минтақаҳои кишвар омехта кунанд. Ин имконият дод, ки дарачаи умумии радиоактивй бе талафи ресурсхои пуркимат паст карда шавад. Пас аз фаҳмидани ин, Сергей фавран ҳуҷҷатҳоро барои муҳоҷират пур кард. Ва вақте ки сатҳи радиатсионӣ бо мурури замон коҳиш ёфт, суқути компютер худ аз худ қатъ шуд.

Ба воситаи қубурҳо

Замоне, Movietech Solutions барои кинотеатрҳо нармафзоре офаридааст, ки барои ҳисобдорӣ, фурӯши чиптаҳо ва идоракунии умумӣ пешбинӣ шудааст. Версияи DOS-и барномаи флагманӣ дар байни занҷирҳои кинотеатрҳои хурд ва миёна дар Амрикои Шимолӣ хеле маъмул буд. Аз ин рӯ, тааҷҷубовар нест, ки вақте версияи Windows 95 эълон шуд, ки бо навтарин экранҳои сенсорӣ ва дӯконҳои худхизматрасонӣ муттаҳид карда шуд ва бо ҳама гуна асбобҳои гузоришдиҳӣ муҷаҳҳаз шуд, он ҳам зуд маъмул шуд. Аксар вақт навсозӣ бе мушкилот гузашт. Кормандони маҳаллии IT таҷҳизоти нав насб карданд, маълумотро интиқол доданд ва тиҷорат идома ёфт. Ба истиснои вақте ки он давом накард. Вақте ки ин ҳодиса рӯй дод, ширкат Ҷеймсро, ки лақаби "Тозагар" буд, мефиристад.

Ҳарчанд ин лақаб як намуди заҳролудро пешниҳод мекунад, тозакунанда танҳо маҷмӯи инструктор, насбкунанда ва ҳама тиҷорат аст. Ҷеймс чанд рӯз дар сайти муштарӣ тамоми ҷузъҳоро ҷамъ мекард ва сипас ду рӯзи дигарро ба кормандон таълим медиҳад, ки чӣ тавр истифода бурдани системаи нав, ҳалли ҳама гуна мушкилоти сахтафзорро, ки ба вуҷуд омадаанд ва аслан ба нармафзор дар давраи навзодиаш кӯмак мекунанд.

Аз ин рӯ, тааҷҷубовар нест, ки дар ин лаҳзаҳои пурташвиш Ҷеймс саҳар ба офис омад ва то ба мизи корӣ нарасид, ӯро мудир пешвоз гирифт, ки аз кофеин зиёда аз муқаррарӣ пур шуд.

"Ман метарсам, ки шумо бояд ҳарчи зудтар ба Аннаполис, Нова Скотия равед." Тамоми системаи онҳо аз кор баромад ва пас аз як шаб бо муҳандисони онҳо кор кардан мо наметавонем бифаҳмем, ки чӣ ҳодиса рӯй дод. Чунин ба назар мерасад, ки шабака дар сервер ноком шудааст. Аммо танҳо пас аз он ки система чанд дақиқа кор кард.

— Ба низоми пештара барнагаштанд? - комилан ҷиддӣ ҷавоб дод Ҷеймс, гарчанде ки рӯҳан бо тааҷҷуб чашмонашро калон кард.

— Маҳз: мутахассиси IT-и онҳо "афзалиятҳоро иваз кард" ва тасмим гирифт, ки сервери кӯҳнаи худро тарк кунад. Ҷеймс, онҳо системаро дар шаш сайт насб карданд ва танҳо барои дастгирии мукофотӣ пардохт карданд ва тиҷорати онҳо ҳоло мисли солҳои 1950-ум пеш меравад.

Ҷеймс каме рост шуд.

— Ин гапи дигар. Хуб, биёед оғоз кунем.

Вақте ки ӯ ба Аннаполис омад, аввалин коре, ки ӯ кард, пайдо кардани аввалин театри муштарӣ буд, ки мушкилот дошт. Дар харитае, ки дар фурудгоҳ гирифта шудааст, ҳама чиз хуб менамуд, аммо гирду атрофи суроғаи дилхоҳ шубҳанок менамуд. На гетто, балки филми ноирро ба хотир меорад. Вақте ки Ҷеймс дар канори маркази шаҳр таваққуф кард, як фоҳиша ба ӯ наздик шуд. Бо назардошти андозаи Аннаполис, он эҳтимолан ягона дар тамоми шаҳр буд. Намуди зоҳирии ӯ дарҳол ба ёдаш қаҳрамони машҳуреро овард, ки дар экрани калон барои пул алоқаи ҷинсӣ мекард. Не, на дар бораи Ҷулия Робертс, балки дар бораи Ҷон Войт [ишора ба филми "Ковбой нисфи шаб" - тақрибан. хати].

Фоҳишаро ба роҳ фиристода, Ҷеймс ба кинотеатр рафт. Гирду атроф беҳтар шуда буд, аммо он ба ҳар ҳол таассуроти харобшуда медод. На ин ки Ҷеймс хеле нигарон буд. Вай пештар ба чойхои бадбахт рафтааст. Ва ин Канада буд, ки дар он ҷо ҳатто қаллобон ба қадри кофӣ хушмуомила мекунанд, ки пас аз гирифтани ҳамёнатон "ташаккур" мегӯянд.

Даромадгохи тарафи кинотеатр дар хиёбони тира буд. Ҷеймс ба сӯи дар рафт ва кӯфт. Дере нагузашта он хи-чирид ва андаке кушода шуд.

-Ту фаррош ҳастӣ? — аз дарун овози хирург баромад.

-Бале, манам... Ман омадаам, ки ҳама чизро ислоҳ кунам.

Ҷеймс ба толори кинотеатр даромад. Аз афташ, дигар илоче надошт, корман-дон ба мехмонон чиптахои когазй додан гирифтанд. Ин ҳисоботи молиявиро душвор гардонд, бигзор тафсилоти ҷолибтар расад. Аммо кормандон Ҷеймсро бо сабукӣ пешвоз гирифтанд ва фавран ӯро ба утоқи сервер бурданд.

Дар назари аввал ҳама чиз хуб буд. Ҷеймс ба сервер ворид шуд ва ҷойҳои маъмулии шубҳанокро тафтиш кард. Масъалае нест. Бо вуҷуди ин, Ҷеймс бо эҳтиёти зиёд серверро хомӯш кард, корти шабакаро иваз кард ва системаро баргардонд. Вай дархол ба кор cap кард. Кормандон боз ба фуруши билет шуруъ карданд.

Яъқуб ба Марк занг зада, ӯро аз вазъият огоҳ кард. Тасаввур кардан душвор нест, ки Ҷеймс метавонад дар атрофи худ бимонад ва бубинад, ки ягон чизи ғайричашмдошт рӯй медиҳад. Вай аз зинапоя поин рафт ва аз коргарон пурсид, ки чй шуд. Аён аст, ки система аз кор монд. Онро хомӯш ва фурӯзон карданд, ҳама чиз кор кард. Аммо пас аз 10 дақиқа система аз кор баромад.

Маҳз дар ҳамин лаҳза ҳодисаи ба ин монанд рӯй дод. Ногаҳон, системаи билетфурӯшӣ ба хатогиҳо шурӯъ кард. Кормандон оҳ кашида, чиптаҳои коғазиро гирифтанд ва Ҷеймс шитобон ба утоқи сервер рафт. Ҳама чиз бо сервер хуб ба назар мерасид.

Баъд яке аз коргарон даромад.

— Система боз кор мекунад.

Ҷеймс дар ҳайрат буд, зеро ӯ ҳеҷ коре накардааст. Аниқтараш, ҳеҷ чиз кори системаро водор намекунад. Вай аз система баромад, телефонашро бардошт ва ба хати дастгирии ширкаташ занг зад. Дере нагузашта худи ҳамон корманд вориди утоқи сервер шуд.

- Система қатъ шудааст.

Ҷеймс ба сервер нигоҳ кард. Намунаи ҷолиб ва шиноси шаклҳои гуногунранг дар экран рақс мекард - қубурҳои бетартибона печида ва ба ҳам пайваст мешаванд. Мо ҳама ин экранро дар ягон лаҳза дидаем. Он зебо намоиш дода шуда буд ва аслан гипнозкунанда буд.


Ҷеймс тугмаро пахш кард ва намуна нопадид шуд. Вай саросема ба кассаи билет даромад ва дар рох бо коргаре во-хурд, ки ба наздаш бармегашт.

— Система боз кор мекунад.

Агар шумо метавонед як facepalm равонӣ кунед, маҳз ҳамон чизест, ки Ҷеймс кард. Посбони сафҳа. Он OpenGL-ро истифода мебарад. Ва аз ин рӯ, ҳангоми кор он тамоми захираҳои протсессори серверро истеъмол мекунад. Дар натиҷа, ҳар як занг ба сервер бо гузашти вақт тамом мешавад.

Ҷеймс ба утоқи сервер баргашт, ворид шуд ва экрани экранро бо қубурҳои зебо бо экрани холӣ иваз кард. Яъне, ба ҷои экране, ки 100% захираҳои протсессорро истеъмол мекунад, ман дигареро насб кардам, ки захираҳоро истеъмол намекунад. Пас аз он ман 10 дақиқа интизор шудам, то тахмини худро тафтиш кунам.

Вақте ки Ҷеймс ба кинотеатри навбатӣ омад, вай дар ҳайрат буд, ки чӣ гуна ба мудири худ фаҳмонад, ки ӯ танҳо барои хомӯш кардани экран 800 км парвоз кардааст.

Суқути як марҳилаи муайяни моҳ

Достони воқеъӣ. Як рӯз хатои нармафзоре ба миён омад, ки аз марҳилаи моҳ вобаста буд. Як реҷаи каме вуҷуд дошт, ки маъмулан дар барномаҳои гуногуни MIT барои ҳисоб кардани наздикшавӣ ба марҳилаи воқеии Моҳ истифода мешуд. GLS ин реҷаро дар як барномаи LISP сохтааст, ки ҳангоми навиштани файл хатеро бо тамғаи вақт тақрибан 80 аломат мебарорад. Хеле кам ба назар мерасид, ки сатри аввали паём хеле дароз шуда, ба сатри дигар мебарад. Ва вақте ки барнома баъдтар ин файлро хонд, лаънат кард. Дарозии сатри аввал аз сана ва вақти дақиқ ва инчунин дарозии мушаххасоти марҳила дар вақти чопи тамғаи вақт вобаста буд. Яъне, хато аслан аз марҳилаи моҳ вобаста буд!

Нашри аввалини коғазӣ Файли жаргон (Стил-1983) як мисоли чунин сатрро дар бар мегирад, ки боиси хатои тавсифшуда гардид, аммо чопгар онро "ислом кард". Аз он вақт инҷониб, ин ҳамчун "хатои марҳилаи моҳ" тавсиф шудааст.

Бо вуҷуди ин, бо тахминҳо эҳтиёт шавед. Чанд сол пеш муҳандисони CERN (Маркази Аврупоии Тадқиқоти Ядроӣ) дар таҷрибаҳо дар коллайдери Калон-Электрон-Позитрон ба хатогиҳо дучор шуданд. Азбаски компютерҳо пеш аз ба олимон нишон додани натиҷа миқдори зиёди маълумотеро, ки ин дастгоҳ тавлид мекунад, фаъолона коркард мекунанд, бисёриҳо тахмин мезананд, ки нармафзор ба фазаи моҳ ҳассос аст. Якчанд муҳандисони ноумед ба қаъри ҳақиқат расиданд. Хатогй аз сабаби андаке тагйир ёфтани геометриям 27 километрии хал-ка дар натичаи деформациям Замин хангоми гузаштан аз Мох ба амал омад! Ин достон ба фолклори физика ба унвони “Интиқоми Нютон аз физикаи зарраҳо” ва намунаи иртибот байни соддатарин ва қадимтарин қонунҳои физика ва пешрафтатарин мафҳумҳои илмӣ ворид шудааст.

Шустани ҳоҷатхона қаторро бозмедорад

Беҳтарин хатои сахтафзор, ки ман дар бораи он шунида будам, дар қатораи баландсуръат дар Фаронса буд. Хатогӣ боиси тормози фаврии қатор шуд, аммо танҳо дар сурати мавҷуд будани мусофирон. Дар хар як чунин холат поездро аз кор баровард, тафтиш карданд, вале чизе ёфт нашуд. Пас аз он ӯро боз ба хат фиристоданд ва ӯ дарҳол ба истгоҳ афтод.

Ҳангоми яке аз санҷишҳо як инженере, ки дар қатора мерафт, ба ҳоҷатхона рафт. Вай зуд шуста шуд, BOOM! Истгоҳи фавқулодда.

Инженер бо ронанда дар тамос шуда пурсид:

— Пеш аз тормоз кардан шумо чй кор мекардед?

— Хайр, фуромаданро суст кардам...

Ин ачиб буд, зеро дар вакти кори муътадил поезд дар фуромадан даххо маротиба суръатро суст мекунад. Поезд пеш рафт ва дар фуромадани навбатй машинист огох кард:

— Ман суръати корро паст мекунам.

Ҳеҷ чиз рӯй надодааст.

— Дар вакти тормози охирин чй кор кардед? — пурсид ронанда.

- Хайр... Ман дар ҳоҷатхона будам...

-Хайр, пас ба њољатхона раву боз он кореро, ки мо ба поён меравем, кун!

Инженер ба ҳоҷатхона рафт ва вақте ки ронанда огоҳ кард: "Ман суръатро суст мекунам" обро шуста бурд. Албатта, поезд фавран истод.

Акнун онҳо метавонистанд мушкилотро дубора тавлид кунанд ва бояд сабабро пайдо кунанд.

Пас аз ду дакика онхо пай бурданд, ки сими идоракунии дурдасти двигатель (поезд яктогй двигатель дошт) аз девори каби-нети электрикй чудо шуда, дар болои реле, ки электромагнити сими туалетро идора мекард, хобидааст... Вакте ки реле. ба кор андохта шуд, вай дар сими тормоз халал ба вучуд овард ва мухофизати система аз нокомй танхо тормози фавкулоддаро дар бар гирифт.

Дарвозае, ки аз FORTRAN нафрат дошт

Чанд моҳ пеш мо мушоҳида кардем, ки пайвастҳои шабакавӣ дар материк [ин дар Ҳавайӣ буд] хеле ва хеле суст шуда истодаанд. Ин метавонад 10-15 дақиқа давом кунад ва сипас ногаҳон дубора рӯй диҳад. Пас аз чанд вақт, ҳамтои ман ба ман шикоят кард, ки пайвастҳои шабакавӣ дар қитъаи замин дар маҷмӯъ кор намекунад. Вай дорои якчанд рамзи FORTRAN буд, ки бояд ба мошине дар материк нусхабардорӣ карда шавад, аммо ин натавонист, зеро "шабака барои ба итмом расонидани боркунии FTP вақти кофӣ надошт."

Бале, маълум шуд, ки нокомии шабака вақте рух дод, ки як ҳамкор кӯшиш кард, ки файлро бо коди сарчашма дар FORTRAN ба мошини материк FTP кунад. Мо кӯшиш кардем, ки файлро бойгонӣ кунем: пас он ба осонӣ нусхабардорӣ карда шуд (аммо мошини мақсаднок кушодакунанда надошт, бинобар ин мушкилот ҳал нашудааст). Ниҳоят, мо рамзи FORTRAN-ро ба қисмҳои хеле хурд "тақсим" кардем ва онҳоро дар як вақт фиристодем. Аксари порчаҳо бе мушкилот нусхабардорӣ шуданд, аммо чанд порча нагузаштанд ё пас аз он гузаштанд сершумор кушишхо.

Вақте ки мо порчаҳои мушкилотро тафтиш кардем, мо фаҳмидем, ки онҳо як чизи умумӣ доранд: ҳамаи онҳо блокҳои тафсириро дар бар мегиранд, ки бо сатрҳои аз капитали C иборат буда, оғоз ва ба охир мерасанд (чун як ҳамкасб шарҳ доданро дар FORTRAN афзалтар медонист). Мо ба коршиносони шабака дар материк бо почтаи электронӣ ирсол кардем ва кумак хостем. Албатта, мехостанд намунаҳои файлҳои моро бубинанд, ки тавассути FTP интиқол дода намешаванд... аммо мактубҳои мо ба онҳо нарасид. Ниҳоят, мо як чизи оддӣ пайдо кардем тавсиф карданфайлҳои интиқолнашаванда чӣ гунаанд. Ин кор кард :) [Ман метавонам мисоли яке аз шарҳҳои мушкили FORTRAN-ро дар ин ҷо илова кунам? Эҳтимол арзанда нест!]

Дар охир ба мо муяссар шуд, ки онро муайян кунем. Ба наздикӣ дар байни қисми кампуси мо ва шабакаи материкӣ як дарвозаи нав насб карда шуд. Он дар интиқоли бастаҳое, ки битҳои такрории ҳарфҳои калонро дар бар мегиранд, душвории калон дошт! Танҳо чанде аз ин бастаҳо метавонанд тамоми захираҳои дарвозаро дарбар гиранд ва аз гузаштани аксари бастаҳои дигар пешгирӣ кунанд. Мо ба истеҳсолкунандаи дарвоза шикоят кардем... ва онҳо ҷавоб доданд: "Оҳ, бале, шумо бо хатогии такрории C дучор мешавед! Мо аллакай дар бораи ӯ медонем." Мо дар ниҳоят мушкилотро тавассути харидани як дарвозаи нав аз истеҳсолкунандаи дигар ҳал кардем (дар дифои собиқ, натавонистани интиқоли барномаҳои FORTRAN барои баъзеҳо бартарӣ бошад!).

Вақти мураккаб

Чанд сол пеш, ҳангоми кор дар сохтани системаи ETL дар Perl барои кам кардани хароҷоти озмоишҳои клиникии марҳилаи 40, ба ман лозим омад, ки тақрибан 000 санаро коркард кунам. Ду нафари онҳо аз имтиҳон нагузаштанд. Ин маро аз ҳад зиёд ба ташвиш наандохт, зеро ин санаҳо аз маълумоти аз ҷониби муштарӣ пешниҳодшуда гирифта шуда буданд, ки аксар вақт, гуфтан мумкин аст, ҳайратовар буд. Аммо вақте ки ман маълумоти аслиро тафтиш кардам, маълум шуд, ки ин санаҳо 1 январи соли 2011 ва 1 январи соли 2007 мебошанд. Ман гумон кардам, ки хато дар барномаи нав навиштаам мавҷуд аст, аммо маълум шуд, ки аллакай 30 сол гузаштааст. кӯҳна. Ин метавонад барои онҳое, ки бо экосистемаи нармафзор шинос нестанд, пурасрор садо диҳад. Азбаски қарори дарозмуддати як ширкати дигар дар бораи пул кор кардан, муштарии ман ба ман пардохт кард, то хатоеро ислоҳ кунам, ки як ширкат тасодуфан ва дигаре қасдан ворид кардааст. Барои он ки шумо дарк кунед, ки ман дар бораи чӣ гап мезанам, ман бояд дар бораи ширкате сӯҳбат кунам, ки хусусиятеро илова кард, ки ба хатогӣ табдил ёфт ва инчунин якчанд рӯйдодҳои ҷолибе, ки ба хатогии пурасроре, ки ман ислоҳ кардам, саҳм гузоштанд.

Дар рӯзҳои қадим, компютерҳои Apple баъзан санаи худро ба 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 сол баробар аст, аз ин рӯ Mac-ҳои кӯҳна наметавонанд санаҳои пас аз соли 967-ро идора кунанд. Ва агар батареяи система бимирад, сана аз оғози даврон ба 296 сония барқарор карда мешавад ва шумо бояд ҳар дафъае, ки компютерро фаъол мекунед (ё то он даме, ки батареяи нав харед) санаро дастӣ таъин кунед.

Бо вуҷуди ин, қарори Apple дар бораи нигоҳ доштани санаҳо ҳамчун сония аз давра маънои онро дошт, ки мо санаҳои пеш аз давраро идора карда наметавонем, ки оқибатҳои дурдаст дошт, тавре мебинем. Apple хусусиятеро муаррифӣ кард, на хато. Дар байни чизҳои дигар, ин маънои онро дошт, ки системаи оператсионии Макинтош аз "иштаи ҳазорсола" эмин буд (ки онро дар бораи бисёре аз барномаҳои Mac, ки системаҳои таърихии худро барои бартараф кардани маҳдудиятҳо доштанд, гуфтан мумкин нест).

Ба пеш. Мо Lotus 1-2-3, "замимаи қотил" -и IBM -ро истифода бурдем, ки ба оғози инқилоби компютерӣ мусоидат кард, гарчанде ки компютерҳои Apple VisiCalc доштанд, ки компютери шахсиро муваффақ гардонд. Аз руи адолат гуем, ки агар 1-2-3 пайдо намешуд, компютерхо базӯр аз кор мебаромаданд ва таърихи компютерҳои фардӣ метавонист ба таври дигар инкишоф ёбад. Lotus 1-2-3 соли 1900-ро ҳамчун соли кабиса нодуруст ҳисоб кард. Вақте ки Microsoft аввалин ҷадвали электронии Multiplan -ро нашр кард, он як қисми ками бозорро ишғол кард. Ва ҳангоме ки онҳо лоиҳаи Excel-ро оғоз карданд, онҳо тасмим гирифтанд, ки на танҳо нақшаи номгузории сатр ва сутунро аз Lotus 1-2-3 нусхабардорӣ кунанд, балки мутобиқати хатогиҳоро тавассути дидаю дониста соли 1900 ҳамчун соли кабиса баррасӣ кунанд. Ин мушкилот имрӯз ҳам вуҷуд дорад. Яъне, дар 1-2-3 ин хато буд, аммо дар Excel ин як қарори бошуурона буд, ки ҳамаи корбарони 1-2-3 метавонанд ҷадвалҳои худро ба Excel бидуни тағир додани маълумот, ҳатто агар он нодуруст бошад, ворид кунанд.

Аммо як мушкили дигар вуҷуд дошт. Аввалан, Microsoft Excel-ро барои Macintosh баровард, ки санаи то 1 январи соли 1904-ро эътироф намекард. Ва дар Excel 1 январи соли 1900 ибтидои давра ба ҳисоб мерафт. Аз ин рӯ, таҳиягарон тағирот ворид карданд, то барномаи онҳо навъи давраро эътироф кунад ва маълумотро дар дохили худ мувофиқи даврони дилхоҳ нигоҳ дорад. Microsoft ҳатто дар ин бора мақолаи тавзеҳотӣ навишт. Ва ин тасмим ба хатогии ман оварда расонд.

Системаи ETL-и ман аз муштариён ҷадвалҳои Excel гирифт, ки дар Windows сохта шудаанд, аммо онҳоро дар 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 нигоҳ дошта шуд (рақамҳо шумораи рӯзҳоро аз давра нишон медиҳанд). Ман танҳо як таҳлилгари оддиро барои истихроҷи сол аз санаи форматшуда истифода кардам ва сипас таҳлилгари Excel-ро барои истихроҷи сол аз санаи форматнашуда истифода кардам. Агар ҳарду арзиш 4 сол фарқ кунанд, пас ман медонистам, ки ман системаро бо epoch-1904 истифода мебарам.

Чаро ман танҳо санаҳои форматшударо истифода набурдам? Зеро 5 июли соли 1998 метавонад ҳамчун "Июл, 98" бо рӯзи гумшуда формат карда шавад. Мо аз он қадар ширкатҳо ҷадвалҳо гирифтем, ки онҳоро бо роҳҳои гуногун сохтаанд, ки муайян кардани санаҳо ба мо вобаста буд (дар ин ҳолат, ман). Ғайр аз он, агар Excel онро дуруст қабул кунад, мо бояд ҳамин тавр кунем!

Дар айни замой ман бо 39082 дучор шудам. Хотиррасон мекунам, ки Lotus 1-2-3 соли 1900-ро соли кабиса хисоб мекард ва ин дар Excel софдилона такрор карда шуд. Ва азбаски ин ба соли 1900 як рӯз илова карда шуд, бисёре аз вазифаҳои ҳисобкунии сана метавонанд дар ҳамон рӯз хато бошанд. Яъне, 39082 метавонад 1 январи соли 2011 (дар Mac) ё 31 декабри 2006 (дар Windows) бошад. Агар "таҳлилгари сол"-и ман соли 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, як шӯъбаи ҳоло аз байн рафта кор мекард, ки дискҳои лента ва системаҳои пневматикиро барои интиқоли лентаи баландсуръат эҷод мекард.

Онҳо дискҳоро аз нав тарҳрезӣ карданд, то онҳо тавонанд як диски марказии "А" дошта бошанд, ки ба ҳафт диски "В" пайваст шаванд ва OS хурд дар RAM, ки диски "А"-ро идора мекард, метавонад амалиёти хондан ва навиштанро ба ҳамаи дискҳои "В" вогузор кунад.

Њар боре, ки диски «А» ба кор андохта шуд, ба диски периферивии ба «А» пайвастшуда диске гузоштан лозим буд, то системаи оператсионии он ба хотираи он бор карда шавад. Ин бениҳоят ибтидоӣ буд: қудрати ҳисоббарорӣ аз ҷониби микроконтроллери 8-битӣ таъмин карда шуд.

Шунавандагони мақсадноки чунин таҷҳизот ширкатҳое буданд, ки дорои анборҳои хеле калони маълумот - бонкҳо, занҷирҳои чакана ва ғайра мебошанд, ки барои чопи зиёди тамғакоғазҳои суроғаҳо ё изҳороти бонкӣ лозим буданд.

Як муштарӣ мушкилот дошт. Дар мобайни кори чоп, як диски мушаххаси "А" метавонад корашро қатъ кунад ва боиси қатъ шудани тамоми кор гардад. Барои барқарор кардани кори диск, кормандон бояд ҳама чизро аз нав оғоз кунанд. Ва агар ин дар мобайни кори шашсоата рух дода бошад, пас миқдори зиёди вақти гаронбаҳои компютерӣ аз даст рафта, ҷадвали тамоми амалиёт вайрон мешуд.

Техникҳо аз Storage Technologies фиристода шуданд. Аммо сарфи назар аз кӯшишҳои беҳтарини онҳо, онҳо натавонистанд хатогиро дар шароити озмоиш дубора тавлид кунанд: ба назар чунин менамуд, ки он дар байни корҳои калони чопӣ рух медиҳад. Мушкилот дар сахтафзор набуд, онҳо ҳама чизеро, ки метавонистанд, иваз карданд: RAM, микроконтроллер, диски нарм, ҳар як қисми эҳтимолии диски лента - мушкилот боқӣ монд.

Баъд техникхо ба штаб занг зада, Мутахассисро даъват карданд.

Мутахассис курсӣ ва як пиёла қаҳва гирифт, дар утоқи компютерӣ нишаст - дар он рӯзҳо ҳуҷраҳо барои компютерҳо буданд - ва тамошо кард, ки кормандон як кори калони чопро дар навбат меистанд. Коршинос мунтазири нокомӣ буд - ва ин ҳам шуд. Ҳама ба Эксперт нигоҳ карданд, аммо ӯ намедонист, ки чаро ин тавр шуд. Бинобар ин у фармон дод, ки кор боз ба навбат гузошта шавад ва тамоми коргарону техникхо ба кор баргаштанд.

Мутахассис боз ба курсӣ нишаст ва мунтазири нокомӣ шуд. Тақрибан шаш соат гузашт ва нокомӣ рӯй дод. Коршинос боз ягон андеша надошт, магар ин ки ҳама чиз дар як ҳуҷраи пур аз одамон рӯй дод. Вай фармон дод, ки миссия аз нав оғоз карда шавад, боз нишаст ва интизор шуд.

Бо нокомии сеюм, Мутахассис чизеро пай бурд. Нокомӣ вақте рух дод, ки кормандон наворҳоро дар диски хориҷӣ иваз карданд. Гузашта аз ин, нокомӣ ҳамон замоне рух дод, ки яке аз кормандон аз байни як черепица дар фарш гузашт.

Фарши бардошт аз плиткаи алюминии дар баландии 6 то 8 дюйм гузошта шуда буд. Ноқилҳои сершумори компютерҳо аз зери фарши баланд гузаштанд, то касе ногаҳонӣ ба сими муҳим қадам занад. Плиткахо хеле сахт гузошта шуданд, то ки хошок ба зери фарши баланд наафтад.

Мутахассис фахмид, ки яке аз черепицахо деформация шудааст. Вакте ки коргар ба кунчи он кадам гузошт, канорхои черепица ба черепицахои хамсоя мемолиданд. Қисмҳои пластикие, ки плитаҳоро пайваст мекарданд, инчунин бо онҳо молида, микроразрядҳои статикиро ба вуҷуд меоварданд, ки халалҳои радиобасомадро ба вуҷуд меоранд.

Имрӯз, RAM аз дахолати басомадҳои радио хеле беҳтар муҳофизат карда шудааст. Аммо дар он солхо ин тавр набуд. Мутахассис дарк кард, ки ин дахолат хотираро вайрон мекунад ва бо он кори системаи оператсиониро вайрон мекунад. Вай ба хадамоти дастгирӣ занг зад, плиткаҳои нав фармоиш дод, худаш насб кард ва мушкилот аз байн рафт.

Мавҷи баланд аст!

Ҳикоя дар як утоқи сервер, дар ошёнаи чорум ё панҷуми офис дар Портсмут (ба фикрам), дар минтақаи докҳо сурат гирифтааст.

Як рӯз сервери Unix бо пойгоҳи додаҳои асосӣ ба кор даромад. Онҳо ӯро дубора ба кор андохтанд, аммо ӯ бо хушҳолӣ такрор ба такрор афтоданро идома дод. Мо тасмим гирифтем, ки ба касе аз хадамоти дастгирӣ занг занем.

Бача дастгирӣ... Ман фикр мекунам, ки номи ӯ Марк буд, аммо ин муҳим нест ... Ман фикр намекунам, ки ман ӯро мешиносам. Ин муҳим нест, дар ҳақиқат. Биёед бо Марк бимонем, хуб? бузург.

Ҳамин тавр, пас аз чанд соат Марк омад (аз Лидс то Портсмут роҳи дур нест, шумо медонед), серверро фаъол кард ва ҳама чиз бе мушкилот кор кард. Дастгирии маъмулии лаънатӣ, муштарӣ аз ин хеле хафа мешавад. Марк файлҳои сабтро аз назар мегузаронад ва ҳеҷ чизи номатлуб намеёбад. Ҳамин тавр, Марк ба қатора бармегардад (ё бо кадом намуди нақлиёте, ки ӯ омада буд, метавонист гови ланг бошад, зеро ман медонам... ба ҳар ҳол, ин муҳим нест, хуб?) ва беҳуда сарф карда, ба Лидс бармегардад. рӯз.

Худи ҳамон шом сервер боз аз кор мебарояд. Қисса ҳамон аст... сервер баланд намешавад. Марк кӯшиш мекунад, ки аз фосилаи дур кӯмак кунад, аммо муштарӣ серверро оғоз карда наметавонад.

Поезди дигар, автобус, лимуи лиму ё ягон чизи дигар, ва Марк ба Портсмут баргаштааст. Инак, сервер бе ягон мушкилот кор мекунад! Мӯъҷиза. Марк чанд соат сарф мекунад, то тафтиш кунад, ки ҳама чиз бо системаи оператсионӣ ё нармафзор мувофиқ аст ва ба Лидс меравад.

Тақрибан нисфи рӯз сервер аз кор мебарояд (инро осон кунед!). Ин дафъа ба назар оқилона ба назар мерасад, ки одамони дастгирии сахтафзорро барои иваз кардани сервер ҷалб кунед. Аммо не, пас аз тақрибан 10 соат он ҳам меафтад.

Ахвол чанд руз боз такрор шуд. Сервер кор мекунад, пас аз тақрибан 10 соат вайрон мешавад ва дар давоми 2 соати дигар оғоз намешавад. Онҳо хунуккунӣ, ихроҷи хотираро тафтиш карданд, ҳама чизро тафтиш карданд, аммо чизе наёфтанд. Сипас, садамаҳо қатъ шуданд.

Хафта бепарво гузашт... хама шод буданд. Хушбахтона, то он даме, ки ҳамааш дубора оғоз шавад. Сурат ҳамон аст. 10 соат кор, 2-3 соат бекорист...

Ва он гоҳ касе (ман фикр мекунам, ки онҳо ба ман гуфтанд, ки ин шахс ба IT рабте надорад) гуфт:

— Ин мавҷ аст!

Нидо бо нигоҳҳои холӣ пешвоз гирифта шуд ва дасти касе эҳтимол дар тугмаи занги амният дудила буд.

"Он кор бо обро қатъ мекунад."

Чунин ба назар мерасад, ки ин як консепсияи комилан хориҷӣ барои кормандони дастгирии IT аст, ки гумон аст, ки ҳангоми қаҳва нишастан солномаи Tide-ро мутолиа кунанд. Онҳо фаҳмонданд, ки ин ба ҳеҷ ваҷҳ бо обхезӣ алоқаманд нест, зеро сервер як ҳафта бе нокомӣ кор мекард.

"Ҳафтаи гузашта об паст буд, аммо ин ҳафта баланд аст."

Як истилоҳ барои онҳое, ки иҷозатномаи яхта надоранд. Мавҷҳо аз давраи моҳвора вобастаанд. Ва хангоми гардиши Замин дар хар 12,5 соат кувваи гравитационии Офтоб ва Мох мавчи мавчро ба вучуд меорад. Дар ибтидои цикли 12,5-соата обхезии баланд, дар мобайни давра пастшавй ва дар охири давра боз баланд мешавад. Аммо баробари тагйир ёфтани мадори Мох, фарки байни обхезии паст ва баланд хам мешавад. Вақте ки Моҳ дар байни Офтоб ва Замин ё дар тарафи муқобили Замин ҷойгир аст (моҳ пурра ё бе Моҳ), мо обхезии Syzygyn - баландтарин обхезиҳо ва пасттарин обхезӣ ба даст. Дар ним моҳ мо мавҷҳои чоркунҷа - пасттарин мавҷҳоро мегирем. Фарқи байни ин ду ифрот хеле кам мешавад. Давраи Мох 28 руз давом мекунад: сизигиан - чоркунча - сизигиан - чоркунча.

Вақте ки ба техникҳо моҳияти қувваҳои обхезӣ фаҳмонданд, онҳо дарҳол фикр карданд, ки бояд полисро даъват кунанд. Ва комилан мантиқӣ. Аммо маълум шуд, ки дугона дуруст будааст. Ду хафта пеш аз ин дар наэдикии идора як эсминец дуртар истода буд. Ҳар дафъае, ки мавҷ онро ба баландии муайян бардошт, пости радарии киштӣ дар сатҳи ошёнаи утоқи сервер ба итмом мерасид. Ва радар (ё таҷҳизоти ҷангии электронӣ ё ягон бозичаи дигари низомӣ) дар компютерҳо бесарусомонӣ ба вуҷуд овард.

Вазифаи парвоз барои ракета

Ба ман супориш дода шуда буд, ки системаи идоракуни ва назорати партоби мушакро (тақрибан 400 ҳазор хат) ба версияҳои нави системаи амалиётӣ, компилятор ва забон интиқол диҳам. Аниқтараш, аз Solaris 2.5.1 то Solaris 7 ва аз Verdix Ada Development System (VADS), ки дар Ada 83 навишта шудааст, то системаи Rational Apex Ada, ки дар Ada 95 навишта шудааст. VADS аз ҷониби Rational харида шудааст ва маҳсулоти он кӯҳна, гарчанде Rational кӯшиш кард, ки версияҳои мувофиқи бастаҳои мушаххаси VADS-ро амалӣ созад, то гузаришро ба компилятори Apex осон кунад.

Се нафар ба ман кӯмак карданд, ки кодро тоза тартиб диҳам. Ду ҳафта давом кард. Ва баъд ман худам кор кардам, то система кор кунад. Хулоса, ин бадтарин меъморӣ ва татбиқи системаи нармафзоре буд, ки ман бо он дучор шудам, бинобар ин барои анҷом додани порт ду моҳи дигар лозим шуд. Пас аз он система барои озмоиш пешниҳод карда шуд, ки чанд моҳи дигар тӯл кашид. Ман хатогиҳоеро, ки ҳангоми санҷиш пайдо шуданд, фавран ислоҳ кардам, аммо шумораи онҳо зуд кам шуд (коди сарчашма системаи истеҳсолӣ буд, бинобар ин, функсияи он хеле боэътимод кор мекард, ман танҳо бояд хатогиҳоеро, ки ҳангоми мутобиқшавӣ ба компилятори нав ба вуҷуд омадаанд, бартараф кунам). Оқибат, вақте ки ҳама чиз ба таври лозимӣ кор мекард, маро ба лоиҳаи дигар гузарониданд.

Ва рӯзи ҷумъа пеш аз Шукргузорӣ телефон занг зад.

Партоби мушак бояд дар давоми се ҳафта озмуда мешуд ва дар рафти санҷишҳои лаборатории ақибшуморӣ пайдарпайии фармонҳо баста шуд. Дар хаёти реалй ин озмоишро катъ ме-кард ва агар дар давоми якчанд сония баъди ба кор андохтани двигатель ба амал ояд, дар системахои ёрирасон якчанд амалиёти бебозгашт ба амал меомад, ки тайёрии дуру дароз ва гаронбахои ракетаро талаб мекунад. Ин оғоз намешуд, аммо бисёриҳо аз талафи вақт ва бисёр, пули зиёд хеле ғамгин мешуданд. Нагузоред, ки касе ба шумо нагӯяд, ки вазорати дифоъ пулро беэҳтиётона сарф мекунад — ман ҳеҷ гоҳ бо менеҷери пудратчӣ вохӯрдам, ки буҷетро дар ҷои аввал ё дуюм нагузоштааст ва баъд аз ҷадвал.

Дар моҳҳои қабл, ин даъвати ҳисобкунӣ садҳо маротиба дар вариантҳои гуногун, танҳо бо чанд ҳикмати хурд иҷро шуда буд. Ҳамин тавр, эҳтимолияти ин ҳодиса хеле паст буд, аммо оқибатҳои он хеле муҳим буданд. Ҳардуи ин омилҳоро зиёд кунед ва шумо хоҳед фаҳмид, ки хабар барои ман ва даҳҳо муҳандисону менеҷерҳо як ҳафтаи истироҳати харобиро пешгӯӣ мекард.

Ва ба ман ҳамчун шахсе, ки системаро интиқол додааст, таваҷҷӯҳ зоҳир карда шуд.

Мисли аксари системаҳои муҳими амниятӣ, бисёр параметрҳо сабт карда шуданд, аз ин рӯ муайян кардани чанд сатри код, ки пеш аз садамаи система иҷро шуда буданд, хеле осон буд. Ва, албатта, дар бораи онҳо ҳеҷ чизи ғайриоддӣ набуд; ҳамон ибораҳо дар давоми як давидан аслан ҳазорҳо маротиба бомуваффақият иҷро карда шуданд.

Мо одамонро аз Apex ба Rational даъват кардем, зеро онҳо компиляторро таҳия карда буданд ва баъзе реҷаҳои таҳиякардаи онҳо дар коди шубҳанок номида шуданд. Онҳо (ва ҳама дигарон) мутаассир буданд, ки зарурати ба решаи як мушкили дорои аҳамияти умумидавлатӣ расидан лозим аст.

Азбаски дар маҷаллаҳо ҳеҷ чизи ҷолиб набуд, мо тасмим гирифтем, ки мушкилотро дар лабораторияи маҳаллӣ такрор кунем. Ин кори осон набуд, зеро ин ҳодиса тақрибан як маротиба дар 1000 давидан рух дод. Яке аз сабабҳои шубҳанок ин буд, ки занг ба функсияи мутекси аз ҷониби фурӯшанда таҳияшуда (қисми бастаи муҳоҷирати VADS) Unlock ба кушодан оварда нарасонд. Риштаи коркарде, ки функсия ном дошт, паёмҳои тапиши дилро коркард мекард, ки номиналӣ ҳар сония меоянд. Мо басомадро ба 10 Гц, яъне 10 маротиба дар як сония баланд бардошта, ба давидан шурӯъ кардем. Тақрибан як соат пас система худашро қуфл кард. Дар гузориш, мо дидем, ки пайдарпаии паёмҳои сабтшуда ҳамон тавре ки ҳангоми санҷиши ноком буд. Мо боз якчанд давидан анҷом додем, система 45-90 дақиқа пас аз оғоз пайваста баста шуд ва ҳар дафъа дар гузориш як масир мавҷуд буд. Гарчанде ки мо аз ҷиҳати техникӣ кодҳои гуногунро иҷро мекардем - басомади паёмҳо гуногун буд - рафтори система якхела буд, аз ин рӯ мо итминон доштем, ки ин сенарияи сарборӣ як мушкилотро ба вуҷуд меорад.

Акнун ба мо лозим омад, ки дар куҷо маҳз дар пайдарпаии ифодаҳо басташавӣ рух дод.

Ин татбиқи система системаи вазифаи Адаро истифода бурд ва онро бениҳоят бад истифода бурд. Вазифаҳо як сохтори дар сатҳи баланд иҷрошавандаи ҳамзамон дар Ада мебошанд, чизе монанди риштаҳои иҷро, ки танҳо дар худи забон сохта шудаанд. Вақте ки ду вазифа бояд муошират кунанд, онҳо "вохӯрӣ муқаррар мекунанд", маълумоти заруриро мубодила мекунанд ва сипас мулоқотро қатъ мекунанд ва ба иҷрои мустақили худ бармегарданд. Бо вуҷуди ин, система ба таври дигар амалӣ карда шуд. Пас аз вохӯрии вазифаи мақсаднок, он вазифаи мақсаднок бо вазифаи дигар вохӯрд, ки баъдан бо вазифаи сеюм вохӯрд ва ғайра то анҷоми баъзе коркард. Пас аз ин, ҳамаи ин мулоқотҳо анҷом ёфтанд ва ҳар як вазифа бояд ба иҷрои худ баргардад. Яъне, мо бо гаронтарин системаи занги функсионалии ҷаҳон сару кор доштем, ки тамоми раванди “бисёркоркуниро” ҳангоми коркарди як қисми маълумоти воридотӣ қатъ кард. Ва пеш аз ин ба мушкилот оварда намерасонд, зеро интиқол хеле паст буд.

Ман ин механизми вазифаро тавсиф кардам, зеро вақте ки вохӯрӣ дархост карда шуд ё интизори анҷоми он, метавонад "гузариши вазифа" рух диҳад. Яъне, протсессор метавонад коркарди вазифаи дигареро оғоз кунад, ки барои иҷро омода аст. Маълум мешавад, ки вақте ки як супориш барои мулоқот бо вазифаи дигар омода аст, вазифаи комилан дигар метавонад ба иҷро шурӯъ кунад ва дар ниҳоят назорат ба вохӯрии аввал бармегардад. Ва ҳодисаҳои дигаре метавонанд рӯй диҳанд, ки боиси иваз шудани вазифа мешаванд; яке аз чунин ҳодисаҳо занг ба функсияи система мебошад, ба монанди чоп кардан ё иҷрои мутекс.

Барои фаҳмидани он, ки кадом сатри код боиси мушкилот мегардад, ба ман лозим буд, ки роҳи сабти пешрафтро тавассути пайдарпайии изҳорот бидуни фаъол кардани гузариши вазифа, ки аз садама пешгирӣ мекунад, пайдо кунам. Аз ин рӯ, ман натавонистам аз фоида истифода барам Put_Line()барои пешгирӣ кардани иҷрои амалиёти воридотӣ. Ман метавонистам як тағирёбандаи ҳисобкунак ё чизи шабеҳро муқаррар кунам, аммо чӣ гуна метавонам арзиши онро бинам, агар ман онро дар экран нишон дода натавонам?

Инчунин, ҳангоми тафтиши гузориш маълум шуд, ки сарфи назар аз яхбандӣ дар коркарди паёмҳои тапиши дил, ки ҳамаи амалиётҳои воридот / баромади равандро манъ кард ва аз иҷрои коркарди дигар монеъ шуд, иҷрои дигар вазифаҳои мустақил идома ёфт. Яъне, кор комилан баста нашуда буд, танҳо як силсилаи вазифаҳо (интиқодӣ).

Ин калидест, ки барои арзёбии ифодаи блоккунӣ лозим буд.

Ман бастаи Ada сохтам, ки дорои вазифа, навъи номбаршуда ва як тағирёбандаи глобалии ин намуд буд. Ҳарфҳои номбаршуда ба ифодаҳои мушаххаси пайдарпайии мушкилот вобаста буданд (масалан. Incrementing_Buffer_Index, Locking_Mutex, Mutex_Unlocked), ва сипас ба он ифодаҳои таъинот ворид карда шуданд, ки рақами мувофиқро ба тағирёбандаи глобалӣ таъин карданд. Азбаски рамзи объекти ҳамаи ин константаро дар хотира нигоҳ медошт, ивазкунии вазифаҳо дар натиҷаи иҷрои он хеле гумон буд. Мо пеш аз ҳама ба ибораҳое, ки метавонанд вазифаро иваз кунанд, шубҳанок будем, зеро басташавӣ ҳангоми иҷроиш ба амал омад, на ҳангоми баргардонидани вазифа (бо якчанд сабаб).

Вазифаи пайгирӣ танҳо дар як ҳалқа иҷро мешуд ва давра ба давра тафтиш мекард, ки оё арзиши тағирёбандаи глобалӣ тағир ёфтааст ё не. Бо ҳар як тағирот, арзиш дар файл захира карда мешуд. Сипас як интизории кӯтоҳ ва чеки нав. Ман тағирёбандаро ба файл навиштам, зеро супориш танҳо вақте иҷро мешуд, ки система онро барои иҷро ҳангоми иваз кардани вазифа дар минтақаи мушкилот интихоб кардааст. Новобаста аз он ки дар ин вазифа рӯй дод, ба дигар вазифаҳои басташуда таъсир намерасонад.

Интизор мерафт, ки вақте ки система ба нуқтаи иҷро кардани рамзи мушкилот расид, тағирёбандаи глобалӣ ҳангоми гузаштан ба ҳар як ифодаи навбатӣ аз нав барқарор карда мешавад. Он гоҳ чизе рӯй медиҳад, ки боиси иваз шудани вазифа мегардад ва азбаски басомади иҷрои он (10 Гц) аз суръати вазифаи мониторинг пасттар аст, монитор метавонад арзиши тағирёбандаи глобалиро сабт кунад ва онро нависад. Дар вазъияти муқаррарӣ, ман метавонам пайдарпайии такрории зермаҷмӯи рӯйхатҳоро гирам: арзишҳои охирини тағирёбанда дар вақти гузариш. Ҳангоми овезон, тағирёбандаи глобалӣ дигар набояд тағир ёбад ва арзиши охирини навишташуда нишон медиҳад, ки кадом ифода ба анҷом нарасидааст.

Ман кодро бо пайгирӣ иҷро кардам. Вай ях кард. Ва мониторинг мисли кори соат кор мекард.

Дар гузориш пайдарпайии интизорӣ мавҷуд буд, ки он бо арзише қатъ карда шуд, ки нишон медиҳад, ки мутекс даъват шудааст Unlock, ва супориш ичро на-шудааст, — чунон ки дар хазорхо занги пештара.

Дар айни замон муҳандисони Apex коди худро бо табларза таҳлил мекарданд ва дар мутекс ҷойеро пайдо карданд, ки дар он аз ҷиҳати назариявӣ қулф пайдо шавад. Аммо эҳтимолияти он хеле паст буд, зеро танҳо пайдарпаии муайяни рӯйдодҳо дар вақти муайян метавонад ба басташавӣ оварда расонад. Қонуни Мерфи, бачаҳо, ин қонуни Мерфи аст.

Барои муҳофизат кардани порчаи коди ба ман лозимшуда, ман зангҳои функсияи mutex (дар болои функсияи мутекси OS сохта шудааст) бо бастаи хурди аслии Ada mutex барои назорати дастрасии мутекс ба он порча иваз кардам.

Ман онро ба код ворид кардам ва санҷишро иҷро кардам. Пас аз ҳафт соат, код ҳанӯз кор мекард.

Рамзи ман ба Rational пешниҳод карда шуд, ки онҳо онро тартиб доданд, ба қисмҳо ҷудо карданд ва тафтиш карданд, ки он ҳамон равишеро, ки дар функсияҳои мушкили mutex истифода мешуд, истифода намебарад.

Ин серодамтарин баррасии коди касби ман буд 🙂 Дар ҳуҷра бо ман тақрибан даҳ муҳандис ва менеҷер буданд, даҳ нафари дигар дар конфронс буданд - ва ҳама тақрибан 20 сатри кодро тафтиш карданд.

Рамз аз назар гузаронида шуд, файлҳои нави иҷрошаванда ҷамъ оварда шуданд ва барои санҷиши расмии регрессия пешниҳод карда шуданд. Пас аз як-ду хафта озмоиши акибгох бомуваффакият гузашт ва ракета ба парвоз баромад.

Хуб, ин ҳама хуб ва хуб аст, аммо моҳияти ин ҳикоя чист?

Ин як мушкили комилан нафратовар буд. Садҳо ҳазор сатрҳои код, иҷрои мувозӣ, беш аз даҳҳо равандҳои мутақобила, меъмории бад ва татбиқи суст, интерфейсҳо барои системаҳои дарунсохт ва миллионҳо доллар сарфшуда. Фишор нест, дуруст.

Ман ягона касе набудам, ки дар ин мушкилот кор мекардам, гарчанде ки ҳангоми интиқоли ман дар маркази диққат будам. Аммо гарчанде ки ман ин корро кардам, ин маънои онро надорад, ки ман тамоми садҳо ҳазор сатрҳои кодро фаҳмидам ё ҳатто онҳоро аз назар гузаронидаам. Код ва журналхоро муҳандисон дар саросари кишвар таҳлил карданд, аммо вақте ки онҳо ба ман фарзияҳои худро дар бораи сабабҳои нокомӣ гуфтанд, барои рад кардани онҳо ҳамагӣ ним дақиқа вақт лозим шуд. Ва ҳангоме ки аз ман талаб карданд, ки назарияҳоро таҳлил кунам, ман онро ба каси дигар медиҳам, зеро бароям маълум буд, ки ин муҳандисон роҳи нодурустро пеш гирифтаанд. Садо мағрурӣ? Бале, ин дуруст аст, аммо фарзияву дархостҳоро бо сабаби дигар рад кардам.

Ман моҳияти мушкилотро фаҳмидам. Ман аниқ намедонистам, ки ин дар куҷо ва барои чӣ рӯй дод, аммо ман медонистам, ки чӣ рӯй дода истодааст.

Дар тули ин солхо ман донишу тачрибаи зиёде гун кардам. Ман яке аз пешравони истифодаи Ада будам ва бартарию манфии онро дарк кардам. Ман медонам, ки китобхонаҳои вақти Ada чӣ гуна вазифаҳоро иҷро мекунанд ва бо иҷрои параллелӣ сарукор доранд. Ва ман барномасозии сатҳи пастро дар сатҳи хотира, регистрҳо ва ассемблер мефаҳмам. Яъне ман дар соҳаи худ дониши амиқ дорам. Ва ман онҳоро барои ёфтани сабаби мушкилот истифода кардам. Ман на танҳо дар атрофи хато кор кардам, ман фаҳмидам, ки чӣ гуна онро дар муҳити хеле ҳассос пайдо кардан мумкин аст.

Чунин саргузаштхои мубориза бо код барои онхое, ки бо хусусияту шароити ин гуна мубориза ошно нестанд, чандон шавковар нест. Аммо ин ҳикояҳо ба мо кӯмак мекунанд, ки фаҳмем, ки барои ҳалли мушкилоти воқеан душвор чӣ лозим аст.

Барои ҳалли мушкилоти воқеан душвор, шумо бояд на танҳо як барномасоз бошед. Шумо бояд «тақдир»-и кодро фаҳмед, ки он бо муҳити он чӣ гуна муносибат мекунад ва худи муҳити атроф чӣ гуна кор мекунад.

Ва он гоҳ шумо ҳафтаи идонаи хароби худро хоҳед дошт.

Идома дода шавад.

Манбаъ: will.com

Илова Эзоҳ