Ошибка в коде

Миша любит это место на берегу Финского залива за то, что здесь можно сфотографировать красивый закат. «Я увлекся фотографией после пересадки костного мозга. Моим донором была девушка из Германии, — рассказывает он. — Через год после трансплантации она написала мне письмо: рассказала, что студентка, ей 24 года, и пожелала мне удачи. У меня теперь ее клетки костного мозга, ее группа крови. Возможно, из-за этого увлечения поменялись. Хотя я не знаю, фотограф ли она».

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

Миша не стесняется шрамов на руках и ногах, оставшихся после болезни . «Бывает, что дети спрашивают у своих мам, что это. Господи, ну им же интересно! В этом ничего страшного нет. Друзья из колледжа узнали на третий месяц, когда я поехал на олимпиаду как инвалид. Спрашивали: “Как с тобой могло такое быть, если ты стоишь перед нами и все нормально?”»

С Мишей действительно сейчас все нормально, потому что за него боролись — врачи НИИ им. Р. М. Горбачевой, фонд AdVita, семья. «Cмерть — это изъян жизни, ошибка в коде, — рассуждает он. — Вроде бы программа работает и вдруг ломается. В программировании, чтобы программа работала, строчку с ошибкой надо переписать. У меня получилось две ошибки: болезнь и та, что будет у всех, — которая прерывает программу. Первую исправили, а со второй нам не справиться».

Второй день рождения

Острый лимфобластный лейкоз у Миши обнаружили в 2009 году, ему было 11 лет. Сначала появилась слабость: мальчик вставал утром с постели и сразу хотел лечь обратно. Аппетита не было, кожа пожелтела. Вместо запланированной поездки на море пришлось ехать в больницу.

Там ребенку хотели поставить желтуху и отправить в инфекционное отделение, но молодая врач настояла на том, чтобы вызвать онколога из Петербурга (Миша жил в небольшом городе Тихвин в Ленинградской области). Онколог приехал — и увез мальчика с собой в Петербург.

Тот период Миша помнит плохо: в памяти всплывает лишь, как его положили на каталку, как прощался с мамой (ее не взяли в машину скорой), первый день в НИИ им. Р. М. Горбачевой — как смотрел телевизор, пока ставили капельницу, как начали химиотерапию. «В Горбачевке лежала специальная книжка для детей — в ней рассказывалось, что такое рак, лейкоциты, гемоглобин. Про смерть там, наверное, не говорилось…» После курса химиотерапии Миша вернулся в Тихвин. Из-за болезни он пропустил год в школе, но главное — рак отступил.

А через год вернулся: «Мы, как обычно, приехали, сделали пункцию и на следующий день должны были получить ответ. По-моему, врач сказал, что надо пересдать анализы, а потом мама рассказала мне, что рак вернулся. Я заплакал».

Это произошло в 2013 году: врачи объяснили, что Мише нужна пересадка костного мозга. Благотворительный фонд AdVita и семья мальчика начали сбор на поиск донора в Международном регистре — нужно было собрать миллион 800 тысяч рублей. Мама рассказывала Мише, как однажды к их дому подъехал дорогой автомобиль: незнакомые мужчина и женщина просто передали большую сумму.

Мама при сыне за это время ни разу не заплакала — Миша думает, чтобы он не падал духом. Хотя было очень тяжело: через месяц после пересадки у него начались опасные осложнения — реакция трансплантат против хозяина, когда иммунные донорские клетки воспринимают организм больного как вражеский и атакуют его. «Была сильная слабость. Кости болели, если собирался встать, то понимал, что лень даже ногу поднять». В то время Миша лежал с Максом — тому пересадили костный мозг на сутки раньше, он перенес пересадку чуть легче и мог ходить, поэтому помогал Мише как мог.

Первое время после пересадки Миша передвигался на коляске. Он сильно поправился из-за гормональной терапии — вместо обычных 66 килограммов стал весить около 90. А уже через год резко похудел до 47 килограммов: у него опять возникла реакция трансплантат против хозяина — только на коже. На руках и ногах кожу стянуло, образовались полосы, похожие на шрамы. Миша перестал есть и на месяц пересел на коляску. И его снова лечили в Горбачевке.

18 мая — дату пересадки — Миша воспринимает как свой второй день рождения: первые два года они с мамой даже устраивали праздник в этот день. Сейчас ему 20, он учится на программиста на втором курсе колледжа в Петербурге. Когда поступал, то решил начать новую жизнь и не вспоминать, что с ним произошло. Сейчас понимает, что это было глупо: забыть это невозможно, это навсегда останется с ним.

«Сложно там работать»

AdVita помогала лекарствами, помогала оплачивать комнату рядом с клиникой, когда они приезжали на лечение или обследование. В НИИ им. Горбачевой мальчику делали химиотерапию, все процедуры и пересадку костного мозга. Там же он и отвлекался от лечения: ходил к психологу, в игровую — туда можно было заезжать даже с капельницей.

«В институте работала медсестра — она была очень милой и доброй, — вспоминает Миша. — Я видел ее там где-то месяц, а потом она уволилась, как мне сказали, потому что просто не могла смотреть на все это… Мне кажется, сложно там работать… К этому же просто так не привыкнуть — смотреть на детей и взрослых, которые болеют раком».

Сама по себе трансплантация, которая была у Миши, — это просто переливание стволовых клеток, которое занимает не больше часа. Но, чтобы пересадки были возможны, необходимо нормальное бесперебойное функционирование многих лабораторий в НИИ им. Р. М. Горбачевой: иногда пациенту делают до десяти анализов в сутки в течение нескольких месяцев. Если не собрать денег на работу лаборатории тканевого типирования, за эти исследования придется платить пациентам.

В наших силах помочь детям, которые в будущем станут программистами, художниками или врачами. В наших силах помочь больнице, чтобы трансплантологи могли работать и спасать людей. Можно помочь НИИ им. Р. М. Горбачевой, перечислив 100, 200 или 500 рублей. Для бесперебойной работы лаборатории нужно миллион 100 тысяч рублей в месяц. Каждый месяц собранные средства направляются на оплату реактивов и расходных материалов, чтобы клиника могла проводить около 250 неродственных трансплантаций костного мозга ежегодно. Чтобы 250 «ошибок в коде» в год были исправлены.

Помочь

Ежемесячное пожертвование раз в месяц списывается с банковской карты или PayPal. В любой момент вы сможете отключить его.

Вы поможете нашему фонду, если добавите процент от пожертвования на развитие «Нужна помощь». Мы не берем комиссий с платежей, существуя только на ваши пожертвования.

Общая сумма пожертвования: 1 250 ₽

Скачайте и распечатайте квитанцию, заполните необходимые поля и оплатите ее в любом банке.

Пожертвование осуществляется на условиях публичной оферты

Введите ваш телефон

Введите вашу фамилию

Введите ваш телефон

Номер вашего телефона нужен, чтобы мы могли дополнительно подтвердить вашу личность и упростить вам доступ к личному кабинету. Мы не передаем ваши контактные данные сторонним организациям и не отправляем нежелательные рассылки.

Возможно, вы имели ввиду @gmail. com?

Возможно, вы имели ввиду @gmail. com?

Пожалуйста, подтвердите согласие

Пожалуйста, подтвердите согласие

Пожертвования на сумму менее 50 ₽ вы можете оформить с помощью смс или банковского перевода, тогда фонд меньше потратит на комиссию платежной системы.

  • Для активации подарочной карты вам необходимо зайти в свой личный кабинет.
  • Если вы ещё не зарегистрированы на нашем сайте, пожалуйста, пройдите процедуру регистрации.
  • В личном кабинете выберите пункт «Подарочные карты» в меню слева.
  • Введите код в поле «Код активации» и нажмите кнопку «Активировать».
  • Номинал подарочной карты будет зачислен на ваш баланс.

Вы указали новые персональные данные. Хотите чтобы мы сохранили их в личном кабинете?

На вашем счете недостаточно средств для полной оплаты пожертвования. Выберите другой способ оплаты.

Выбрать способ оплаты

Произошла техническая ошибка на нашей стороне, мы уже работаем над ее устранением, попробуйте еще раз позже.

Вы можете им помочь

Помогаем

Службы помощи людям с БАС

Хоспис для молодых взрослых

Кислородное оборудование для недоношенных детей

Обучение общению детей, не способных говорить

Спортивная площадка для бездомных с инвалидностью

Операции для тяжелобольных бездомных животных

Медицинская помощь детям со Spina Bifida

Профилактика ВИЧ в Санкт-Петербурге

Миша в своей комнате

Миша в своей комнате

Миша в своей комнате

Пожалуйста, поддержите проект «Поддержка лаборатории НИИ им. Р. Горбачевой» , оформите ежемесячное пожертвование. Сто, двести, пятьсот рублей — любая помощь важна, так как из небольших сумм складываются большие результаты.

На Ваш почтовый ящик отправлено сообщение, содержащее ссылку для подтверждения правильности адреса. Пожалуйста, перейдите по ссылке для завершения подписки.

Если письмо не пришло в течение 15 минут, проверьте папку «Спам». Если письмо вдруг попало в эту папку, откройте письмо, нажмите кнопку «Не спам» и перейдите по ссылке подтверждения. Если же письма нет и в папке «Спам», попробуйте подписаться ещё раз. Возможно, вы ошиблись при вводе адреса.

Исключительные права на фото — и иные материалы принадлежат авторам. Любое размещение материалов на сторонних ресурсах необходимо согласовывать с правообладателями.

По всем вопросам обращайтесь на mne@nuzhnapomosh. ru

Нашли опечатку? Выделите слово и нажмите Ctrl+Enter

  • ВКонтакте
  • Facebook
  • Twitter
  • Telegram
  • Instagram
  • Youtube
  • Flipboard
  • Дзен

Нашли опечатку? Выделите слово и нажмите Ctrl+Enter

  1. Значение настоящей публичной оферты
    1. Настоящая публичная оферта («Оферта») является предложением Благотворительного фонда помощи социально-незащищенным гражданам «Нужна помощь» («Фонд»), реквизиты которого указаны в разделе 5 Оферты, заключить с любым лицом, кто отзовется на Оферту («Донором»), договор пожертвования («Договор») на реализацию уставных целей Фонда, на условиях, предусмотренных ниже.
    2. Оферта является публичной офертой в соответствии с пунктом 2 статьи 437 Гражданского кодекса Российской Федерации.
    3. Оферта вступает в силу со дня, следующего за днем размещения ее на Сайте в сети Интернет: takiedela. ru, sluchaem. ru, 365.nuzhnapomosh. ru, beznadege. net, nuzhnapomosh. ru, https://nuzhnapomosh. ru/donate/.
    4. Оферта действует бессрочно. Фонд вправе отменить Оферту в любое время без объяснения причин.
    5. В Оферту могут быть внесены изменения и дополнения, которые вступают в силу со дня, следующего за днем их размещения на Сайте Фонда.
    6. Недействительность одного или нескольких условий Оферты не влечет недействительности всех остальных условий Оферты.
    7. Местом размещения Оферты считается город Москва, Российская Федерация.
    1. Сумма пожертвования: сумма пожертвования определяется Донором.
    2. Назначение пожертвования: реализация уставных целей Фонда.
    1. Договор заключается путем акцепта Оферты Донором.
    2. Оферта может быть акцептована Донором любым из следующих способов:
      1. путем перечисления Донором денежных средств в пользу Фонда платежным поручением по реквизитам, указанным в разделе 5 Оферты, с указанием назначения пожертвования «пожертвование на Благотворительную программу “Нужна помощь. ру», а также с использованием платежных терминалов, пластиковых карт, электронных платежных систем и других средств и систем, позволяющих Донору перечислить Фонду денежные средства;
        При получении безадресного пожертвования на расчетный счет по реквизитам, Фонд самостоятельно конкретизирует его использование, исходя из статей бюджета, утвержденных Советом фонда, являющихся неотъемлемой частью деятельности Фонда либо направляет их на расходы на административные нужды Фонда в соответствии с Федеральным законом №135 от 11.08.1995 г. «О благотворительной деятельности и добровольчестве (волонтерстве)».
      2. путем помещения наличных денежных средств (банкнот или монет) в ящики (короба) для сбора пожертвований, установленные Фондом или третьими лицами от имени и в интересах Фонда в общественных и иных местах.
      1. Совершая действия, предусмотренные данной Офертой, Донор подтверждает, что ознакомлен с условиями и текстом настоящей Оферты, уставными целями деятельности Фонда, осознает значение своих действий, имеет полное право на их совершение и полностью принимает условия настоящей Оферты.
      2. Донор имеет право на получение информации об использовании пожертвования. Для реализации указанного права Фонд размещает на сайте:
        1. информацию о суммах пожертвований, полученных Фондом, в том числе о суммах пожертвований, полученных для оказания Фондом помощи каждому конкретному проекту;
        2. отчет о целевом использовании полученных пожертвований, в том числе для оказания Фондом помощи каждому конкретному проекту;
        3. отчет об использовании пожертвований в случае перемены целей, на которые направляется пожертвование. Донор, не согласившийся с переменой цели финансирования, вправе в течение 14 календарных дней после публикации указанной информации потребовать в письменной форме возврата денег.

        Благотворительный фонд помощи социально-незащищенным гражданам «Нужна помощь»

        Адрес: 119270, г. Москва, Лужнецкая набережная, д. 2/4, стр. 16, помещение 405
        ИНН: 9710001171
        КПП: 770401001
        ОГРН: 1157700014053
        р/с 40703810701270000111
        в ТОЧКА ПАО БАНКА «ФК ОТКРЫТИЕ»
        к/с 30101810845250000999
        БИК 044525999

        Благотворительного фонда помощи социально-незащищенным гражданам «Нужна помощь» в отношении обработки персональных данных и сведения о реализуемых требованиях к защите персональных данных

        Как искать и исправлять ошибки в коде

        Представляем перевод статьи «How to fix bugs, step by step», опубликованный сайтом tproger. ru.

        ошибки в коде

        Искать ошибки в программах — непростая задача. Здесь нет никаких готовых методик или рецептов успеха. Можно даже сказать, что это — искусство. Тем не менее есть общие советы, которые помогут вам при поиске. В статье описаны основные шаги, которые стоит предпринять, если ваша программа работает некорректно.

        Шаг 1: Занесите ошибку в трекер

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

        1. Вы забыли какую-то важную деталь об ошибке, например, в чем она заключалась.
        2. Вы могли делегировать ее кому-то более опытному.

        Трекер поможет вам не потерять нить размышлений и о текущей проблеме, и о той, которую вы временно отложили. А если вы работаете в команде, это поможет делегировать исправление коллеге и держать все обсуждение в одном месте.

        Вы должны записать в трекер следующую информацию:

        1. Что делал пользователь.
        2. Что он ожидал увидеть.
        3. Что случилось на самом деле.

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

        Шаг 2: Поищите сообщение об ошибке в сети

        Если у вас есть сообщение об ошибке, то вам повезло. Или оно будет достаточно информативным, чтобы вы поняли, где и в чем заключается ошибка, или у вас будет готовый запрос для поиска в сети. Не повезло? Тогда переходите к следующему шагу.

        Шаг 3: Найдите строку, в которой проявляется ошибка

        Если ошибка вызывает падение программы, попробуйте запустить её в IDE под отладчиком и посмотрите, на какой строчке кода она остановится. Совершенно необязательно, что ошибка будет именно в этой строке (см. следующий шаг), но, по крайней мере, это может дать вам информацию о природе бага.

        Шаг 4: Найдите точную строку, в которой появилась ошибка

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

        Если вы отслеживаете выполнение программы в отладчике, то вы можете пройтись назад по стектрейсу, чтобы найти ошибку. Если вы находитесь внутри функции, вызванной внутри другой функции, вызванной внутри другой функции, то стектрейс покажет список функций до самой точки входа в программу (функции main() ). Если ошибка случилась где-то в подключаемой библиотеке, предположите, что ошибка все-таки в вашей программе — это случается гораздо чаще. Найдите по стектрейсу, откуда в вашем коде вызывается библиотечная функция, и продолжайте искать.

        Шаг 5: Выясните природу ошибки

        Ошибки могут проявлять себя по-разному, но большинство из них можно отнести к той или иной категории. Вот наиболее частые.


          Вы начали цикл for с единицы вместо нуля или наоборот. Или, например, подумали, что метод. count() или. length() вернул индекс последнего элемента. Проверьте документацию к языку, чтобы убедиться, что нумерация массивов начинается с нуля или с единицы. Эта ошибка иногда проявляется в виде исключения Index out of range .
          Ваш процесс или поток пытается использовать результат выполнения дочернего до того, как тот завершил свою работу. Ищите использование sleep() в коде. Возможно, на мощной машине дочерний поток выполняется за миллисекунду, а на менее производительной системе происходят задержки. Используйте правильные способы синхронизации многопоточного кода: мьютексы, семафоры, события и т. д.
        1. Неправильные настройки или константы
          Проверьте ваши конфигурационные файлы и константы. Я однажды потратил ужасные 16 часов, пытаясь понять, почему корзина на сайте с покупками виснет на стадии отправки заказа. Причина оказалась в неправильном значении в /etc/hosts , которое не позволяло приложению найти ip-адрес почтового сервера, что вызывало бесконечный цикл в попытке отправить счет заказчику.
        2. Неожиданный null
          Бьюсь об заклад, вы не раз получали ошибку с неинициализированной переменной. Убедитесь, что вы проверяете ссылки на null , особенно при обращении к свойствам по цепочке. Также проверьте случаи, когда возвращаемое из базы данных значение NULL представлено особым типом.
        3. Некорректные входные данные
          Вы проверяете вводимые данные? Вы точно не пытаетесь провести арифметические операции с введенными пользователем строками?
        4. Присваивание вместо сравнения
          Убедитесь, что вы не написали = вместо == , особенно в C-подобных языках.
        5. Ошибка округления
          Это случается, когда вы используете целое вместо Decimal , или float для денежных сумм, или слишком короткое целое (например, пытаетесь записать число большее, чем 2147483647, в 32-битное целое). Кроме того, может случиться так, что ошибка округления проявляется не сразу, а накапливается со временем (т. н. Эффект бабочки).
        6. Переполнение буфера и выход за пределы массива
          Проблема номер один в компьютерной безопасности. Вы выделяете память меньшего объема, чем записываемые туда данные. Или пытаетесь обратиться к элементу за пределами массива.
        7. Программисты не умеют считать
          Вы используете некорректную формулу. Проверьте, что вы не используете целочисленное деление вместо взятия остатка, или знаете, как перевести рациональную дробь в десятичную и т. д.
        8. Конкатенация строки и числа
          Вы ожидаете конкатенации двух строк, но одно из значений — число, и компилятор пытается произвести арифметические вычисления. Попробуйте явно приводить каждое значение к строке.
        9. 33 символа в varchar(32)
          Проверяйте данные, передаваемые в INSERT , на совпадение типов. Некоторые БД выбрасывают исключения (как и должны делать), некоторые просто обрезают строку (как MySQL). Недавно я столкнулся с такой ошибкой: программист забыл убрать кавычки из строки перед вставкой в базу данных, и длина строки превысила допустимую как раз на два символа. На поиск бага ушло много времени, потому что заметить две маленькие кавычки было сложно.
        10. Некорректное состояние
          Вы пытаетесь выполнить запрос при закрытом соединении или пытаетесь вставить запись в таблицу прежде, чем обновили таблицы, от которых она зависит.
        11. Особенности вашей системы, которых нет у пользователя
          Например: в тестовой БД между ID заказа и адресом отношение 1:1, и вы программировали, исходя из этого предположения. Но в работе выясняется, что заказы могут отправляться на один и тот же адрес, и, таким образом, у вас отношение 1:многим.

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

        Шаг 6: Метод исключения

        Если вы не можете найти строку с ошибкой, попробуйте или отключать (комментировать) блоки кода до тех пор, пока ошибка не пропадет, или, используя фреймворк для юнит-тестов, изолируйте отдельные методы и вызывайте их с теми же параметрами, что и в реальном коде.

        Попробуйте отключать компоненты системы один за другим, пока не найдете минимальную конфигурацию, которая будет работать. Затем подключайте их обратно по одному, пока ошибка не вернется. Таким образом вы вернетесь на шаг 3.

        Шаг 7: Логгируйте все подряд и анализируйте журнал

        Пройдитесь по каждому модулю или компоненту и добавьте больше сообщений. Начинайте постепенно, по одному модулю. Анализируйте лог до тех пор, пока не проявится неисправность. Если этого не случилось, добавьте еще сообщений.

        Ваша задача состоит в том, чтобы вернуться к шагу 3, обнаружив, где проявляется ошибка. Также это именно тот случай, когда стоит использовать сторонние библиотеки для более тщательного логгирования.

        Шаг 8: Исключите влияние железа или платформы

        Замените оперативную память, жесткие диски, поменяйте сервер или рабочую станцию. Установите обновления, удалите обновления. Если ошибка пропадет, то причиной было железо, ОС или среда. Вы можете по желанию попробовать этот шаг раньше, так как неполадки в железе часто маскируют ошибки в ПО.

        Если ваша программа работает по сети, проверьте свитч, замените кабель или запустите программу в другой сети.

        Ради интереса, переключите кабель питания в другую розетку или к другому ИБП. Безумно? Почему бы не попробовать?

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

        Шаг 9: Обратите внимание на совпадения

        1. Ошибка появляется всегда в одно и то же время? Проверьте задачи, выполняющиеся по расписанию.
        2. Ошибка всегда проявляется вместе с чем-то еще, насколько абсурдной ни была бы эта связь? Обращайте внимание на каждую деталь. На каждую. Например, проявляется ли ошибка, когда включен кондиционер? Возможно, из-за этого падает напряжение в сети, что вызывает странные эффекты в железе.
        3. Есть ли что-то общее у пользователей программы, даже не связанное с ПО? Например, географическое положение (так был найден легендарный баг с письмом за 500 миль).
        4. Ошибка проявляется, когда другой процесс забирает достаточно большое количество памяти или ресурсов процессора? (Я однажды нашел в этом причину раздражающей проблемы «no trusted connection» с SQL-сервером).

        Шаг 10: Обратитесь в техподдержку

        Наконец, пора попросить помощи у того, кто знает больше, чем вы. Для этого у вас должно быть хотя бы примерное понимание того, где находится ошибка — в железе, базе данных, компиляторе. Прежде чем писать письмо разработчикам, попробуйте задать вопрос на профильном форуме.

        Ошибки есть в операционных системах, компиляторах, фреймворках и библиотеках, и ваша программа может быть действительно корректна. Но шансы привлечь внимание разработчика к этим ошибкам невелики, если вы не сможете предоставить подробный алгоритм их воспроизведения. Дружелюбный разработчик может помочь вам в этом, но чаще всего, если проблему сложно воспроизвести вас просто проигнорируют. К сожалению, это значит, что нужно приложить больше усилий при составлении багрепорта.

        Полезные советы (когда ничего не помогает)

        1. Позовите кого-нибудь еще.
          Попросите коллегу поискать ошибку вместе с вами. Возможно, он заметит что-то, что вы упустили. Это можно сделать на любом этапе.
        2. Внимательно просмотрите код.
          Я часто нахожу ошибку, просто спокойно просматривая код с начала и прокручивая его в голове.
        3. Рассмотрите случаи, когда код работает, и сравните их с неработающими.
          Недавно я обнаружил ошибку, заключавшуюся в том, что когда вводимые данные в XML-формате содержали строку xsi:type=’xs:string’ , все ломалось, но если этой строки не было, все работало корректно. Оказалось, что дополнительный атрибут ломал механизм десериализации.
        4. Идите спать.
          Не бойтесь идти домой до того, как исправите ошибку. Ваши способности обратно пропорциональны вашей усталости. Вы просто потратите время и измотаете себя.
        5. Сделайте творческий перерыв.
          Творческий перерыв — это когда вы отвлекаетесь от задачи и переключаете внимание на другие вещи. Вы, возможно, замечали, что лучшие идеи приходят в голову в душе или по пути домой. Смена контекста иногда помогает. Сходите пообедать, посмотрите фильм, полистайте интернет или займитесь другой проблемой.
        6. Закройте глаза на некоторые симптомы и сообщения и попробуйте сначала.
          Некоторые баги могут влиять друг на друга. Драйвер для dial-up соединения в Windows 95 мог сообщать, что канал занят, при том что вы могли отчетливо слышать звук соединяющегося модема. Если вам приходится держать в голове слишком много симптомов, попробуйте сконцентрироваться только на одном. Исправьте или найдите его причину и переходите к следующему.
        7. Поиграйте в доктора Хауса (только без Викодина).
          Соберите всех коллег, ходите по кабинету с тростью, пишите симптомы на доске и бросайте язвительные комментарии. Раз это работает в сериалах, почему бы не попробовать?

        Что вам точно не поможет

        1. Паника
          Не надо сразу палить из пушки по воробьям. Некоторые менеджеры начинают паниковать и сразу откатываться, перезагружать сервера и т. п. в надежде, что что-нибудь из этого исправит проблему. Это никогда не работает. Кроме того, это создает еще больше хаоса и увеличивает время, необходимое для поиска ошибки. Делайте только один шаг за раз. Изучите результат. Обдумайте его, а затем переходите к следующей гипотезе.
        2. «Хелп, плиииз!»
          Когда вы обращаетесь на форум за советом, вы как минимум должны уже выполнить шаг 3. Никто не захочет или не сможет вам помочь, если вы не предоставите подробное описание проблемы, включая информацию об ОС, железе и участок проблемного кода. Создавайте тему только тогда, когда можете все подробно описать, и придумайте информативное название для нее.
        3. Переход на личности
          Если вы думаете, что в ошибке виноват кто-то другой, постарайтесь по крайней мере говорить с ним вежливо. Оскорбления, крики и паника не помогут человеку решить проблему. Даже если у вас в команде не в почете демократия, крики и применение грубой силы не заставят исправления магическим образом появиться.

        Ошибка, которую я недавно исправил

        Это была загадочная проблема с дублирующимися именами генерируемых файлов. Дальнейшая проверка показала, что у файлов различное содержание. Это было странно, поскольку имена файлов включали дату и время создания в формате yyMMddhhmmss . Шаг 9, совпадения: первый файл был создан в полпятого утра, дубликат генерировался в полпятого вечера того же дня. Совпадение? Нет, поскольку hh в строке формата — это 12-часовой формат времени. Вот оно что! Поменял формат на yyMMddHHmmss , и ошибка исчезла.

        Источники:

        https://takiedela. ru/2019/08/oshibka-v-kode/

        https://techrocks. ru/2018/03/29/how-to-find-and-fix-bugs/

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: