Many thanks to Tristan Morris for creating a beautiful illustrated hardcover print edition of the site |
|||||||||||||||||
(Sorry, this page has not been translated by the translator you selected.) Новый монах клана Следа Слона заметил, что все братья, находящиеся под опекой учителя Бавана, отвечают на вопросы быстро, без малейшего промедления. Те же, кто замешкается, получают резкий удар по голове посохом учителя, после чего они должны хранить молчание остаток дня, если, конечно, не потеряют сознание от удара. Молодой монах спросил одного из братьев: “Почему Баван наказывает тех, кто задерживается с ответом?” “Потому что он считает, что они думают”, - сказал старший монах. Он указал на ряд черепов, установленных над учительской дверью. Одни были старые и пыльные, а другие выглядели так, будто недавно расстались с прежними владельцами, но у каждого на лбу были вырезаны учителем слова НЕ ДУМАЙ. Старший монах оставил молодого обдумывать алгоритм Бавана. Через некоторое время эти же два монаха всю ночь работали над обновлением одной из старейших баз данных документов клана. Критические системы были отключены на время перемещения старых документов на новые сервера. Скрипт перемещения выполнялся несколько часов, пока в самом конце не упал из-за незначительной проблемы. Скрипт был запущен повторно, но, так как рассвет быстро приближался, монахи решили, что необходимо пропускать все документы, которые уже были перемещены во время первого запуска. Когда во второй раз стала быстро пропускаться та часть базы данных, что уже была обработана в первый раз, Баван заметил нечто любопытное. На экран стали выводиться многие тысячи сообщений, выглядящих примерно так: document 2677091: skipped (already exists) document 2677092: skipped (already exists) document 2677093: skipped (already exists) Тем не менее, время от времени можно было заметить вариант, выглядящий следующим образом: document 2677094: skipped (already exists) (** source is newer) “В чём разница?” - спросил Баван. “Не могу сказать”, - быстро ответил старший монах. Баван фыркнул и дал ему пощёчину тыльной стороной ладони. Затем он повернулся к молодому монаху. “В чём разница?” - повторил он. В этот момент, пока мысли молодого монаха метались между рукой учителя и его посохом, на него снизошло озарение. “Часы смещены”, - заявил молодой монах. - “Когда мы берём исходный документ со старого сервера, мы сохраняем время его последнего изменения, а затем создаем документ на новом сервере. Однако, если системные часы не согласованы, то скрипт иногда считает, что исходный документ изменился после создания нового”. Учитель на самом деле нашёл небольшое расхождение времени между двумя серверами. Он одобрительно кивнул и ушел, оставив молодого монаха наслаждаться пониманием алгоритма Бавана. День спустя Баван повелел клану собраться у его офиса. Пока все ожидали появления учителя, старый монах прошептал, что Баван потратил целый день, собирая окончательные доказательства того, что именно из-за разницы в показаниях часов выводились те непонятные сообщения. “И он их нашёл?” - спросила монахиня. “Ничего похожего”, - сказал старый монах. - “По правде говоря, один сервер был случайно оставлен работающим во время перемещения документов, так что пользователи всё ещё делали правки в старой базе данных. Второй запуск скрипта пропускал эти документы, выдавая то предупреждающее сообщение. Когда запросы стали обращаться к новой базе данных, последующие правки пользователя сделали невозможным восстановление утраченных изменений. Это большой позор для нашего клана”. Дискуссия резко оборвалась, когда из офиса появился Баван с лестницей, по которой он поднялся и установил на дверью новый блестящий череп. Форма черепа напомнила того молодого монаха, которого никто не видел в течение дня. Как и прежде, на лбу были вырезаны слова НЕ ДУМАЙ. А на челюсти, невидимой для любого стоящего под дверью, но вполне заметной, пока учитель нёс череп, было ещё одно слово - ЗНАЙ. Перевод Sergey Malenkov. Отрывок из The Codeless Code, созданная Qi (qi@thecodelesscode.com). При условии, в соответствии с условиями Creative Commons Attribution-NonCommercial 3.0 Unported License. |