Готовый перевод Coder Lee Yongho / Кодер Ли Ёнхо: Глава 15

Глава 15. Ошибка доступа (1)

«Эй, помощник Пак! Вы еще не устранили ошибки?» - завопил менеджер Чхве, войдя в офис.

«Менеджер».

«Мне звонил управляющий, это все очень плохо! Мы должны показать программу Совету директоров в понедельник. Что вы собираетесь делать, а?»

Бизнес-моделью Мирэ IT была SI (Системная Интеграция: клиент просит подрядчика компании создать систему и оплачивает её). Помощник менеджера Чхве был ответственным за создание системы.

(* Примечание: Помните «Гап» и «Ыль»? Гап = клиент, Ыль = подрядчик).

Как менее важный человек помощник менеджера Чхве вынужден был заискивать перед клиентом. Иначе контракт могут не продлить. И если это произойдет, его понизят в должности.

Менеджер Чхве распрашивал помощника менеджера Пака, который нерешительно отвечал.

«Так вы выяснили, в чем причина?»

«Это... Еще нет...»

*Вздох* «В чем суть ошибки?»

«Это...»

««ЭТО», «ЭТО», «ЭТО» КАКОГО ЧЕРТА ВЫ ПОДРАЗУМЕВАЕТЕ ПОД «ЭТО»?»

«ETL просто не работает».

ETL (аббревиатура - извлечение, преобразование и загрузка). Это была программа, которая извлекает и преобразовывает данные из хранилища удаленных данных и загружает их в нужное место.

«Что? Просто не работает?»

«Да...»

Менеджер Чхве говорил, будто не веря помощнику Паку.

«Попробуй запустить».

Пак запустил Putty (*свободно распространяемый клиент для различных протоколов удалённого доступа, включая SSH, Telnet, rlogin) и ввел команду для запуска программы ETL.

./miraeETL.sh

И нажал «ввод».

Оба не хотели верить в это, но ничего не вышло. Несколько минут спустя программа просто вылетела.

* Вздох * «Что, черт возьми, это за проблема?»

Менеджер Чхве вздохнул, увидев результат своими глазами. Помощник Пак был недвижим, думая, с чего ему начать. В окне протоколов не было никаких ошибок.

«Что делать, менеджер?»

«Что значит, что делать, мы должны исправить эту ошибку».

«Но протокола ошибок нет...»

«Я даже не знаю. Давайте подумаем».

Менеджер Чхве сел на свое место и повернул свой включенный ноутбук. Молчание повисло в офисе.

Спустя час менеджер Чхве позвал Ёнхо.

«Эй, г-н Ёнхо».

«Да, сэр».

«Чем вы занимаетесь сейчас?»

«Я сейчас выполняю задачу, которую дал мне помощник менеджера Ким».

«Это срочно?»

«Н... Наверное, нет».

«Тогда ты не мог бы помочь нам?»

Сегодня было воскресенье. Им необходимо было восстановить программу, чтобы завтра Совет директоров мог посмотреть текущее состояние продаж. Если программа ETL не заработает, данные по продажам посмотреть не удастся.

Это означает, что Совет директоров не сможет подтвердить текущее состояние продаж. Если проблема не буде решена вовремя, компания-заказчик будет очень недовольна. Возможно, потому, что менеджер Чхве был под большим давлением, он даже попросил Ёнхо помочь.

«Д... Да, сэр».

Ёнхо подошел к помощнику Паку и спросил.

«Помощник менеджера, чем я могу помочь?»

После его вопроса помощник Пак сказал менеджеру Чхве.

«Менеджер, он только стажер, что он может знать...»

«Вы меня не слышали? Он тот, кто устранил проблему с записью на курсы в университете Сон Мин».

«Правда?» - спросил Пак у Ёнхо.

«Ты действительно решил проблему?»

Его лицо выражало недоверие. Но с другой стороны, у него зародилась надежда.

«Мне просто повезло. Это можно найти на Stack Overfly».

Stack Overfly - крупнейший в мире форум программистов. Множество программистов пользуются этим сайтом.

«Серьезно? Так вот как вы решили это... Садитесь здесь. Проблема заключается в...»

Он вкратце рассказал Ёнхо о программе ETL и текущей ситуации. После этого Ёнхо спросил:

«Можем мы запустить программу один раз?»

«Она в любом случае не заработает, что там можно увидеть».

«Я просто хочу посмотреть сам сначала...»

Он сможет вызвать окно багов, только если увидит запуск программы своими глазами. Если есть ошибка, то она появится в окне багов.

«Хорошо».

Может быть из-за той истории, когда Ёнхо исправил ошибку в системе регистрации курсов, Пак Чольун выполнил его просьбу. И программа была запущена еще раз.

«А, оу...» - негромко воскликнул Ёнхо, смотря на ошибки в окне багов. Возможно, Чольун услышал его и поэтому спросил:

«Что такое? Ты что-то узнал?»

«……»

«Что, что такое? Говори».

Протокола ошибок не было, но Ёнхо и без него знал, что за ошибка и как её устранить. Но ведь протокола не было. Если он так быстро проанализировал проблему и сразу скажет решение, они не поверят ему. Замявшись, Ёнхо ответил Чольуну

«Случайно, вы не забыли прописать запрос try-catch для протокола ошибок?»

«Ах!»

Воскликнули и менеджер Чхве, и помощник Пак. Оператор try-catch и был ошибкой выполнения запроса в коде Java. Когда происходит ошибка, то требуется процесс обработки ошибок. Если оператор catch забыл вывести ошибку, протокол не появится».

«Согласен. Это вполне возможно».

«Понятно, почему нет протокола ошибок, но программа не работает...»

Сказал менеджер Чхве на слова Ёнхо.

20 минут спустя Ёнхо дождался подходящего момента.

«Вот сейчас будет нормально, если я все расскажу».

У него уже было готово решение. Ёнхо выжидал время, чтобы о нем сказать. Острие камня встретится с долотом. (Корейский вариант поговорки: «самое высокое дерево поймает самый сильный ветер» Означает, что если будешь привлекать много внимания, то нарвешься на неприятности). Ёнхо хотел выглядеть, как человек с обычным способностями. Его навыки ограничивались должностью стажера и опытом военной службы (корейские мужчины должны нести обязательную военную службу).

«Помощник менеджера. Я думаю, что обнаружил проблему».

«Серьезно? Где?»

«В строке 302 в классе FileTransfer».

«Подойди сюда и расскажи».

Позвал Пак Чольун Ёнхо, который работал за своим компьютером. Подойдя к нему, Ёнхо продолжил объяснения.

«В строке 302 оператор try-catch пытается вызвать файл, но файл не найден».

«Серьезно? Могу я взглянуть?»

Чольун выбрал источники и вставил в запрос catch вывода ошибок в протоколе. И запустил программу. Программа вылетела, но протокол остался.

java.io.FileNotFoundException: /homes/salesdata (нет такого файла или каталога)

в java.io.FileInputStream.open (Native Method -метод с реализацией в неуправляемом коде)

в java.io.FileInputStream. (FileInputStream.java:106)

com.mirae.FileTransfer(FileTransfer.java:302)

Протокол ошибок был в точности такой, как сказал Ёнхо. Но это не означало, что проблема решена. Сейчас они просто узнали причину.

http://tl.rulate.ru/book/587/14520

Обсуждение главы:

Всего комментариев: 2
#
Спасибо
Развернуть
#
Спасибо))
Развернуть
Чтобы оставлять комментарии Войдите или Зарегистрируйтесь