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.) Монахиня Хвайда была вызвана в офис учителя Банзена. Он со своим учеником Джишином ожидал её. Банзен сказал: “Счастливый день для Вас, юная монахиня! Так как Вы получаете удовольствие от поиска скрытых истин и наблюдения за наказанием виновных, у меня для Вас есть развлекательная задача”. “Я служу ради Храма, а не ради себя”, - ответила Хвайда с обязательным поклоном. Но её живот уже напрягся: без сомнения это было началом её наказания за незаконное проникновение на запретные земли Храма. “Редкая, но надоедливая ошибка мучает клан Следа Слона уже в течении некоторого времени”, - сказал учитель, передавая монахине распечатку. - “Наши журналы базы данных показывают, что приходит неправильный SQL-запрос, но тщательный поиск по нашему коду нигде не находит такой запрос. Найдите исходник. Я даю Вам неделю”. Хвайда изучила бумаги: “Нескольких минут должно быть достаточно. Могу ли я взять терминал учителя?” Брови Банзена взлетели вверх. Они с учеником переглянулись, и он подвинул ноутбук к монахине. Хвайда изучила распечатку, набрала что-то, посмотрела на экран, снова взглянула на распечатку и так несколько раз. “Здесь”, - сказала она, наконец, повернув экран к учителю. Курсор находился над SQL фрагментом с пропущенной правой скобкой. “Если я вернусь на своё рабочее место, то я смогу проследить использование этого кода и воспроизвести ошибку, которую видели в журналах. Затем мы сможем исправить дефект”. “Иди”, - сказал Банзен Хвайде. Своему ученику он сказал: “Проследи”. Когда они оба подошли к келье Хвайды, Джишин прошептал: “Скорость Вашей диагностики удивительна”. “Это простая задача”, - сказала Хвайда, передавая распечатку монаху. - “Неправильный запрос начинается с WHERE 1=1. Это пахнет динамической генерацией SQL: и хотя начальное условие тривиально, его значение TRUE позволяет разработчику добавлять любое количество реальных условий в виде простых AND-условий. Я сама использовала этот приём при реализации поисковых форм с дополнительными полями. Когда я узнала его, я стала искать в нашем коде отдельные AND-условия”. “Не поймите меня неправильно”, - сказал Джишин. - “Я не удивился, что Вы смогли сразу решить задачу. Я удивился, что Вы сделали это, несмотря на предложенную неделю. Это пахнет амбициями: и хотя начальная задача тривиальна, Ваша правдивость позволяет моему учителю доверить Вам любое количество реальных задач”. Хвайда вздохнула: “Это тоже верно. Если бы я делала вид, что эта проблема достаточно сложна, чтобы потратить на неё дни усилий, то Банзен мог бы подумать, что я либо лгу, либо некомпетентна. Либо мог просто сесть рядом со мной. Это именно то, что он на самом деле хотел обнаружить”. Джишин кивнул: “Иногда тест служит цели, потому что ответ настолько очевиден.” Перевод Sergey Malenkov. Отрывок из The Codeless Code, созданная Qi (qi@thecodelesscode.com). При условии, в соответствии с условиями Creative Commons Attribution-NonCommercial 3.0 Unported License. |