<ошибка!>

Движенья нет, сказал мудрец брадатый.
Другой смолчал и стал пред ним ходить.
Сильнее бы не мог он возразить;
Хвалили все ответ замысловатый.
Но, господа, забавный случай сей
Другой пример на память мне приводит:
Ведь каждый день над нами Солнце ходит,

Однако ж прав упрямый Галилей.

Ошибка — несоответствие между объектом или явлением, принятым за эталон (материальный объект, решение задачи, действие, которое привело бы к желаемому результату), и объектом/явлением, сопоставленным первому.

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

Ошибкам посвящено множество афоризмов, их осмысляют философы, поэты, писатели, историки и представители других дисциплин. Так, с утверждением «на ошибках учатся» согласны многие философы-диалектики. Скептики же и агностики полагают, что все наши представления, скорее всего, ошибочны.

Зачастую грань между «правильностью» и «ошибочностью» того или иного явления столь тонка, что их невозможно различить.

Анализом ошибок (погрешностей) измерений занимаются теория вероятностей и статистика.

В философии

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

Первые с большим доверием относились к данным, полученным опытным путём, вторые же — к умозрительным размышлениям. Однако и среди тех, и среди других были агностики, полагавшие, что познание в принципе недостоверно.

Диалектика

Анализируя логические построения, философы, начиная с древнегреческих, указывали, что признаком ошибочности суждения является наличие в нем противоречий. Истинное суждение свободно от противоречий.

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

Макс Планк говорил по этому поводу: «Для настоящего теоретика ничего не может быть интереснее, чем такой факт, который вступает в противоречие с общепринятой теорией: ведь здесь собственно и начинается его работа». [источник не указан 855 дней]

Материализм

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

Фрэнсис Бэкон описал четыре источника ошибок на пути познания, которые он назвал «идолами»: «идолы рода», «идолы пещеры», «идолы площади» и «идолы театра»[1].

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

Идеалисты

Агностики

Кто-то хочет сказать обратное, но если есть предел, то ему здесь место есть в жизни.

Философия науки

В настоящее время философские аспекты вопроса об ошибочности или правильности тех или иных теорий исследует философия науки.

В психологии

Основная статья: парапраксис

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

В книге «Психопатология повседневной жизни» (1901) Фрейд показал, что с виду незначительные и бессмысленные ошибочные действия служат реализации бессознательных желаний.

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

Фрейд разделял ошибочные действия на четыре группы:

 — оговорки, описки, очитки, ослышки;
 — забывание (забывание имён собственных, чужих слов, своих намерений, впечатлений);
 — затеривание и запрятывание вещей;
 — действия «по ошибке».

Не все ошибочные действия легко понятны, однако в ходе аналитической работы с пациентом удаётся понять смысл даже самых запутанных ошибочных действий. А ошибочные действия пациента (например, забывание времени сеанса или оплаты лечения) позволяют аналитику и пациенту получить важные сведения о сопротивлении и переносе.

В науке

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

Заблуждение в научной деятельности — это, как правило, последствия вовремя не замеченных и не устранённых ошибок. Следует различать добросовестное заблуждение, которое является следствием ненамеренно сделанных ошибок и намеренную дезинформацию, которая обычно является результатом фальсификаций со стороны учёных.

В истории

В физике

В астрономии

В технике

Инструментальная ошибка — ошибка, обусловленная неточностью и недостаточной настроенностью инструмента измерения (измерительного прибора).

В космической технике

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

В теории управления

Ошибка ε — это разность между сигналом задания и сигналом обратной связи.

В медицине

Основная статья: Врачебная ошибка

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

Наиболее вопиющие ошибки широко освещаются в прессе.

Это случаи удаления не того органа или части тела (например, правой ноги вместо левой), случаи трансплантации органа, не соответствующего по группе крови, и многие другие.

В почтовом деле

  • Почтовые марки с ошибками
  • Сюжетные ошибки на почтовых марках

В уголовном праве

Основная статья: Ошибка в уголовном праве

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

Юридическая ошибка представляет собой неправильное представление лица о юридической оценке совершённого им деяния, либо юридической ответственности, связанной с его совершением[2]. Как правило, юридическая ошибка не влияет на ответственность лица («незнание закона не освобождает от ответственности»).

Фактическая ошибка — это заблуждение лица относительно фактического содержания признаков, составляющих объект и объективную сторону преступления.

Фактическая ошибка может быть существенной или несущественной: существенная фактическая ошибка касается юридически значимых признаков состава преступления, называемых в уголовном законе, и оказывает влияние на характер и размер ответственности лица[3], несущественная ошибка касается признаков, не влияющих на уголовно-правовую оценку деяния (например, личность потерпевшего при краже) и потому не имеет юридического значения.

См. также

Примечания

  1. См. «Афоризмы об истолковании природы и царстве человека», XLI-XLIV.
  2. Уголовное право России. Части Общая и Особенная / Под ред. А. И. Рарога. М., 2004. С. 108—109.
  3. Уголовное право России. Части Общая и Особенная / Под ред. А. И. Рарога. М., 2004. С. 109.
В этой статье не хватает ссылок на источники информации.
Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена.
Вы можете отредактировать эту статью, добавив ссылки на авторитетные источники.
Эта отметка установлена 14 мая 2011.

Ошибка

ОШИБКА

неправильность в действиях, мыслях; несоответствие между объектом или явлением, принятым за эталон (материальный объект, решение задачи, действие, которое привело бы к желаемому результату), и объектом/явлением, сопоставленным первому.Литература: [114].

Источник: Методология: словарь системы основных понятий. 2013

Ошибка

один из видов отклонений от нормативной деятельности.

Чтобы неверное действие можно было считать ошибкой, нужно чтобы человек, совершивший это действие, обладал свободой воли, личности, сознания и телесности (иначе это действие является вынужденным, пробующим, спонтанным или недействием), при этом (при наличии свободы воли, личности, сознания и телесности) человек должен иметь достаточную силу воли выполнить действие правильно (иначе это будет слабоволием), иметь личное намерение выполнить действие правильно (иначе это будет преступлением), иметь знания о том (осознавать), что является правильным действием (иначе это будет заблуждением) и физически уметь выполнять действие правильно (иначе это будет неумением) Такое определение ошибки делает природу ошибки виртуальной, поскольку переводит механизм ошибки в иную реальность, виртуальную реальность, где относительно константной реальности нет проблемы свободы и несвободы совершения действия (Н.А. Носов, Словарь виртуальных терминов).

Источник: Теория и практика разрешения виртуального конфликта, Практико-ориентированная монография

Ошибка

Свойство ошибки в том, что ее принимают за истину. Именно этим ошибка отличается от лжи (мы можем понять, что нам лгут, но не в состоянии понять, что сами ошибаемся). Поэтому ошибка всегда бывает невольной. Ошибка – это не просто ложная идея, это ложная идея, принимаемая за истинную.

В той мере, в какой она ложна, она имеет лишь отрицательное бытие (Ложность); но в той мере, в какой она является идеей, она является частью действительности и истинного мира (ведь мы действительно ошибаемся, значит, ошибка реально ложна). Вот что говорит, например, Спиноза: «Люди заблуждаются, считая себя свободными.

Это мнение основывается только на том, что свои действия они осознают, причин же, которыми они определяются, не знают» («Этика», часть II, теорема 35, схолия). Мы не потому ошибаемся, что свободны, как полагал Декарт; мы считаем себя свободными, потому что ошибаемся, и эта ошибка сама по себе – всего лишь неполная истина (ведь истинно, что мы действуем).

Люди ошибаются по незнанию или от бессилия. Ошибка не является противоположностью позитивного знания: всякое знание частично и незакончено. Следовательно, мышление это труд, и ошибка – его обязательный элемент.

Источник: Философский словарь.

6 наиболее часто возникающих ошибок HTTP и способы их устранения

Курс: Продающий лендинг для вашего бизнеса free Создайте сайт с нуля за 40 минут и запустите продажи 13 окт в 2016 Администрирование #Ошибки #HTTP/HTTPS #Безопасность #Apache

Читайте также:  Вопрос читателя: У меня просрочки по платежам в банк, пока нет возможности гасить кредит. Взыскание передали коллекторам. Но думаю, что лучше бы передали в суд, т.к на сегодняшний день начисляются огромные штрафы ежемесячно и остановить это начисление может только суд. Вопрос: как долго коллекторское агентство будет пытаться вернуть кредит до передачи дела в суд? Есть ли какие-то сроки? Спасибо.

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

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

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

Типы ошибок

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

Коды ошибок бывают положительными и отрицательными или успешными и не успешными.

Всего существует 4 типа кодов (хх — сочетание любых цифр):

  • 2xx — запрос выполнен успешно;
  • 3xx — запрос успешно перенаправлен (тоже положительный код);
  • 4xx — ошибка — документ не был отправлен пользователю, так как произошла критическая ошибка. Класс кодов 4xx предназначен для указания ошибок со стороны клиента;
  • 5xx — ошибка сервера — критическая ошибка на сервере. Коды 5xx выделены под случаи неудачного выполнения операции по вине сервера.

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

Ошибка 400

Bad Request

При переходе на сайт браузер может выдавать “400 Bad Request”. Это означает, что сервер обнаружил синтаксическую ошибку в запросе, который ввел пользователь. Однако подобная ошибка может появляться не только, когда вы вводите адрес сайта, но и, например, при входе в панель управления вашим сайтом. Причин возникновения может быть несколько:

  • блокировка браузера антивирусом;
  • блокировка брендмауэра Windows браузером;
  • большое количество файлов cookies и данных в сache;
  • перебои в работе интернета.

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

Блокировка браузера

  • Изучите настройки вашего антивируса в разделе под названием “Правила для приложений” или схожим с ним.
  • Проверьте, есть ли ваш браузер в списке, и каков уровень доверия к нему.
  • Повысьте уровень доверия к вашему браузеру, если он низкий.
  • Сохраните новые настройки и попробуйте снова зайти в панель управления.

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

Блокировка брендмауэра Windows

  • Попробуйте отключить брендмауэр на время: меню Пуск — Панель управления — Система и безопасность — Брандмауэр Windows — Включение и отключение.
  • Очистите кэш и куки.
  • Обновите страницы с ошибкой.
  • Если проблема устранена, то для завершения добавьте в брандмауэр разрешенные программы: Пуск — Панель управления — Система и безопасность — Брандмауэр — Разрешение запуска программы через брандмауэр.

Если проблема осталась — продолжайте проверку.

Cache и cookies

  • Удалите cookies и очистите cache: нажмите Shift + Ctrl + Delete в то время, когда браузер открыт.
  • Удалите ненужные файлы.
  • Проверьте работу вашего браузера.

Перебои в работе интернета

  • Свяжитесь со своим интернет-провайдером и узнайте, проводятся ли у них какие-то работы.
  • Уточните, сколько времени займут работы.

Ошибка 403

Forbidden

Ошибка 403 означает, что сервер не может выполнить запрос из-за запрета на доступ к запрашиваемым файлам или страницам. Эта ошибка может возникать по ряду причин. Рассмотрим самые распространенные:

  • Индексный файл index.html не загружен в директорию public_html вашего сайта или является некорректным. Для устранения этой ошибки создайте файл с именем index.html или переименуйте уже имеющийся файл. Возможные варианты для имени файла: index.html, index.htm или index.php.
  • Для директории, в которой находится запрашиваемый файл, установлены такие права, что веб-сервер Apache не смог прочитать файл на диске сервера. Для устранения этой ошибки попробуйте изменить права доступа в разделе, отвечающем за настройку прав.
  • Файлы сайта загружены в неправильную директорию. Для устранения этой ошибки проверьте, располагаются ли файлы сайта в директории site/public_html, где site — название вашего сайта.

Ошибка 404

Not Found

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

  • Некорректный URL, введенный в адресное поле браузера. Для устранения данной ошибки проверьте, корректно ли указана ссылка.
  • Файл, запрашиваемый по URL, отсутствует на сервере. Для устранения этой ошибки необходимо проверить наличие запрашиваемого файла в директории public_html вашего сайта.

Ошибка 500

Internal Server Error

Ошибка 500 означает, что на сервере есть внутренняя ошибка. Эта проблема может возникнуть по двум причинам:

  • Невозможно запустить скрипт. Скорее всего, указаны неправильные права доступа на папки и файлы. Если на PHP файлы скриптов, размещенных на вашем хостинге, стоят права доступа 777, то исполнение данных скриптов может быть заблокировано сервером. Происходит это из-за того, что права доступа 777 позволяют всем производить любые изменения с данным файлом, что существенно влияет на безопасность и целостность вашего сайта. Для устранения этой ошибки следует проверить права доступа на папки и файлы сайта. Для папок рекомендовано установить права доступа 755, для исполняемых скриптов 600, а для всех остальных файлов 644.
  • Неправильная инструкция в файле .htaccess или наличие в нём неподдерживаемых директив. Возможно, вы ошиблись в написании названия нужной директивы или параметров к ней. Данную ошибку можно устранить, включив лог ошибок error.log. Веб-сервер укажет вам, какую конкретно директиву он посчитал ошибочной — ее нужно будет исправить.

Ошибка 502

Bad Gateway

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

  • Проблемы в работе прокси-сервера. Для устранения этой ошибки попробуйте набрать в адресной строке браузера ссылку на какой-либо другой сайт. Тем самым вы можете проверить, есть ли доступ в Интернет вообще. Если вы обнаружили, что доступ в Интернет есть, но ваше обращение к конкретному сайту все равно дает ошибку 502, попробуйте удалить файлы cookies в браузере.
  • Нехватка ресурсов сервера. Это может означать, что нагрузка на сервер превышает ресурсы, доступные на выбранном тарифе хостинга. Уточните у своего хостинг-провайдера информацию о тарифах с большим объемом ресурсов и, в случае необходимости, увеличьте оперативную память или доступный объем диска.

Ошибка 503

Service Temporarily Unavailable

У каждого аккаунта на сервере хостинга есть определенное количество рабочих процессов, выделенное в соответствии с выбранным тарифным планом.

Работа с запросами ведется в порядке очереди, они поступают на сервер, где легкие запросы обрабатываются мгновенно, а тяжелые – медленно. Всякая очередь ограничена тем или иным количеством запросов.

Если новый запрос находится за пределами этой границы, принят он не будет, и вместо результата браузер выдаст оповещение “Сервис временно недоступен”.

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

1. Зависание скриптов при передаче больших статичных файлов через PHP. Скрипты работают определенное время, а не постоянно. При окончании времени работы скрипта прерывается передача файла, соответственно, файл не будет передан полностью, а также запрос оставит процесс веб-сервера работать еще длительное время. Устранить ошибку вы сможете посредством следующих шагов:

  • Проверить все компоненты и плагины вашей CMS, отключая их по очереди, и найдите самые тяжёлые или испорченные, при работе которых загрузка сайта замедляется. По возможности откажитесь от таких компонентов или поищите более быстрый аналог.
  • Проверить наличие у вас медленных запросов — в папке logs вашего аккаунта создается файл mysql-slow.log. Информация в этом файле обновляется раз в сутки и содержит только самые проблемные SQL-запросы.
  • Если в PHP-скриптах используются Include-функции, загружающие части движка, расположенные на одном аккаунте, убедитесь, что в них используется локальный путь, а не URL вида «http://…». Наличие URL заставляет сервер делать дополнительный HTTP-запрос — это занимает лишнее время и сильно замедляет загрузку сайта.

2. Большое количество запросов к серверу. Причин возникновения таких запросов несколько:

  • Загружаемый ресурс разбит/содержит ссылки на слишком больше число файлов (картинки, таблицы стилей JS-скрипты), которые подгружаются через отдельные запросы. В этом случае следует объединить ресурсы в один файл, где это возможно.
  • DDoS-атаки, флуды, спамы в комментарии также могут вызывать большое количество запросов. В случае DDoS-атаки необходимо определить ее тип, и, согласно ее уровню, предпринять действия по устранению. Подробнее про DDoS-атаки вы можете прочитать в статье «DDoS-атаки: взгляд со стороны Timeweb».

Справочник по кодам статуса HTTP — Вебмастер. Справка

Справочники

Перечень кодов HTTP-статуса, использующихся при перенаправлении запроса (коды 3xx).

Код Ошибка Описание
300 Множественный выбор Затребованный URL обозначает более одного ресурса, и робот не смог однозначно определить, к какой странице URL относится (получен код 300 Multiple Choices). Исправьте заголовки или укажите ресурс правильно, и тогда робот сможет проиндексировать страницу.
301 Ресурс перемещен навсегда Документ уже не используется сервером, а ссылка перенаправляет на другую страницу (получен код 301 Moved Permanently). Так как пользователи не смогут увидеть подобные документы, показывать их в поиске не имеет смысла, и робот их не индексирует. Однако робот проиндексирует страницу, на которую установлено перенаправление, если она доступна.
302 Ресурс временно перемещен Запрошенный ресурс временно находится под другим адресом (получен код 302 Found). Так как пользователи не смогут увидеть подобные документы, показывать их в поиске не имеет смысла, и робот их не индексирует. Однако робот проиндексирует страницу, на которую установлено перенаправление, если она доступна.
303 Смотрите другой ресурс Запрошенный ресурс находится под другим адресом и его следует запрашивать, используя метод GET (получен код 303 See Other). Если вы хотите, чтобы указанная страница находилась в поиске, она должна отвечать кодом 200.
304 Ресурс не изменялся Получен код 304 Not Modified. Если страница не изменилась с момента последнего обращения робота, рекомендуется выдавать этот код. Это ускорит индексирование и уменьшит трафик.
305 Следует использовать прокси Доступ к затребованному ресурсу может осуществляться только через прокси-сервер, указанный в заголовке Location (получен код 305 Use Proxy).
307 Временное перенаправление Затребованный ресурс был временно переведен на другой адрес, который необходимо прописать в Location (получен код 307 Temporary Redirect).
Читайте также:  Вопрос читателя: Несколько семей проживают в доме без прописке более 15 лет, но земля была продана. Как быть и что делать? Заранее спасибо за ответ.

Содержит перечень кодов HTTP-статуса, использующихся для обозначения возможных ошибок в клиентском запросе (коды 4xx).

Код Ошибка Описание
400 Неверный запрос/Bad Request Запрос не может быть понят сервером из-за некорректного синтаксиса.
401 Неавторизованный запрос/Unauthorized Для доступа к документу необходимо вводить пароль или быть зарегистрированным пользователем.
402 Необходима оплата за запрос/Payment Required Внутренняя ошибка или ошибка конфигурации сервера.
403 Доступ к ресурсу запрещен/Forbidden Доступ к документу запрещен. Если вы хотите, чтобы страница индексировалась, необходимо разрешить доступ к ней.
404 Ресурс не найден/Not Found Документ не существует. Если вы удалили какой-то раздел сайта, можно с помощью robots.txt запретить роботу обращаться к нему. Если такой страницы на сайте никогда не существовало, игнорируйте эту ошибку, возможно, кто-то поставил некорректную ссылку на ваш сайт.
405 Недопустимый метод/Method Not Allowed Метод, определенный в строке запроса (Request-Line), не дозволено применять для указанного ресурса, поэтому робот не смог его проиндексировать.
406 Неприемлемый запрос/Not Acceptable Нужный документ существует, но не в том формате (язык или кодировка не поддерживаются роботом).
407 Требуется идентификация прокси, файервола/Proxy Authentication Required Необходима регистрация на прокси-сервере.
408 Время запроса истекло/Request Timeout Сайт не передал полный запрос в течение установленного времени и робот разорвал соединение.
409 Конфликт/Conflict Запрос конфликтует с другим запросом или с конфигурацией сервера.
410 Ресурс недоступен/Gone Затребованный ресурс был окончательно удален с сайта.
411 Необходимо указать длину/Length Required Сервер отказывается принимать запрос без определенного заголовка Content-Length. Поправьте заголовки на своем сервере;— тогда в следующий раз робот сможет проиндексировать страницу.
412 Сбой при обработке предварительного условия/Precondition Failed При проверке на сервере одного или более полей заголовка запроса обнаружено несоответствие (сбой или ошибка при обработке предварительного условия).
413 Тело запроса превышает допустимый размер/Request Entity Too Large Сервер отказывается обрабатывать запрос потому, что размер запроса больше того, что может обработать сервер.
414 Недопустимая длина URI запроса/Request-URI Too Long Сервер отказывается обслуживать запрос, потому что запрашиваемый роботом URI (Request-URI) длиннее, чем сервер может интерпретировать.
415 Неподдерживаемый MIME тип/Unsupported Media Type Сервер отказывается обрабатывать запрос, потому что тело запроса имеет неподдерживаемый формат.
416 Диапазон не может быть обработан/Requested Range Not Satisfiable Сервер отказывается обрабатывать запрос, потому что значение поля Range в заголовке запроса указывает на недопустимый диапазон байтов.
417 Сбой при ожидании/Expectation Failed Сервер отказывается обрабатывать запрос, потому что значение поля Expect в заголовке запроса не соответствует ожиданиям.
422 Необрабатываемый элемент/Unprocessable Entity Сервер не в состоянии обработать один (или более) элемент запроса.
423 Заблокировано/Locked Сервер отказывается обработать запрос, так как один из требуемых ресурсов заблокирован.
424 Неверная зависимость/Failed Dependency Сервер отказывается обработать запрос, так как один из зависимых ресурсов заблокирован.
426 Требуется обновление/Upgrade Required Сервер запросил апгрейд соединения до SSL, но SSL не поддерживается клиентом.
429 Слишком много запросов/Too Many Requests Отправлено слишком много запросов за короткое время. Это может указывать, например, на попытку DDoS-атаки. Ответ может сопровождаться заголовком Retry-After, который указывает, через какое время можно повторить запрос. Яндекс не учитывает этот заголовок.

Перечень кодов HTTP-статуса, использующихся для обозначения возможных ошибок сервера (коды 5xx).

Код Ошибка Описание
500 Внутренняя ошибка сервера/Internal Server Error Сервер столкнулся с непредвиденным условием, которое не позволяет ему выполнить запрос.
501 Метод не поддерживается/Not Implemented Сервер не поддерживает функциональные возможности, требуемые для выполнения запроса. Этот ответ соответствует состоянию, когда сервер не распознает метод запроса и не способен обеспечить его для любого ресурса.
502 Ошибка шлюза/Bad Gateway Сервер, действуя в качестве шлюза или прокси-сервера, получил недопустимый ответ от следующего сервера в цепочке запросов, к которому обратился при попытке выполнить запрос.
503 Служба недоступна/Service Unavailable Возникла ошибка из-за временной перегрузки или отключения на техническое обслуживание сервера.
504 Время прохождения через межсетевой шлюз истекло/Gateway Timeout Сервер, при работе в качестве внешнего шлюза или прокси-сервера, своевременно не получил отклик от вышестоящего сервера, к которому он обратился, пытаясь выполнить запрос.
505 Версия НТТР не поддерживается/Version Not Supported Сервер не поддерживает или отказывается поддерживать версию HTTP-протокола, которая используется в сообщении запроса робота.
507 Недостаточно места/Not Extended Сервер не может обработать запрос из-за недостатка места на диске).
510 Отсутствуют расширения/Not Extended Сервер не может обработать запрос из-за того, что запрашиваемое расширение не поддерживается.

Написать в службу поддержки

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

Была ли статья полезна?

Ошибки допускают все. Исключений не бывает

Изображение с сайта zerut.ru

Изображение с сайта zerut.ru

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

https://www.youtube.com/watch?v=Fi1fNchEQek

Я написал две статьи посвященные ошибками. «Ругать или предлагать анализ и решение? О критике старых электронных схем.» и «Ошибки бывают и в промышленных системах». В х к этим статьям некоторые задавали вопрос:

Других критиковать легко, а сам то? Ни разу не ошибался что ли?

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

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

Предметная ситуация

Для одной небольшой разработки, по просьбе знакомых, мне потребовалось формировать последовательность импульсов. Что это за разработка я опишу в отдельной статье, она может быть интересной, но отношения к теме ошибки не имеет.

Эта последовательность импульсов не была особо сложной, но ее формирование на дискретных элементах, например, таймерах, было не таким простым и требовало применения нескольких микросхем. Поэтому было принято решение использовать простенький микроконтроллер.

Нужно отметить, что это было единичное изделие. То есть сделал, отдал, забыл.

Мне нравятся 8-битные микроконтроллеры PIC Microchip, поэтому я выбрал PIC10F200 в корпусе SOT23-6. Это очень простой микроконтроллер, в котором есть всего один 8-битный таймер, а программа не может быть длиннее 255 команд. Большего мне и не требовалось. Зато этот микроконтроллер дешев и имеет удобный корпус.

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

8-битный таймер Timer0 есть во всех микроконтроллерах Microchip. Вот его блок-схема для PIC10F200 (и всех прочих микроконтроллеров Baseline)

Блок-схема Timer0 микроконтроллеров PIC Microchip семейства Baseline (из документации Microchip)

Блок-схема Timer0 микроконтроллеров PIC Microchip семейства Baseline (из документации Microchip)

Здесь для нас важно лишь то, что таймер состоит из 8-битного регистра-счетчика TMR0 на вход которого можно подавать через предварительный делитель (Prescaler) тактовые импульсы от системного тактового генератора микроконтроллера.

Каждый дошедший до TMR0 импульс вызывает увеличение его содержимого на 1, то есть, инкрементирует этот регистр.

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

В более мощных микроконтроллерах факт переполнения регистра-счетчика таймера учитывается в отдельном регистре в виде флага T0IF, который можно проверять и изменять программно. Но для семейства Baseline факт переполнения таймера можно определить только проверив регистр TMR0 на равенство нулю.

8-битные микроконтроллеры PIC Microchip (я сейчас не говорю о семействе PIC18) относятся к RISC микроконтроллерам (процессорам), то есть имеют сокращенный набор команд. Команда проверки содержимого регистра для этих микроконтроллеров отсутствует. Простейшим способом проверить регистр на нуль без его изменения является команда

movf f,f

Эта команда выполняет пересылку содержимого регистра f в него же. То есть содержимое регистра не изменяется, зато устанавливается флаг Z в регистре STATUS, если содержимое регистра нулевое.

Это настолько стандартная практика проверки регистра на 0, что следующий фрагмент пишут почти не задумываясь

Пример проверки содержимого регистра на 0

Пример проверки содержимого регистра на 0

Вместо команды btfss можно использовать команду btfsc, при этом переход на метку LNZ будет выполнен если содержимое регистра нулевое.

Команда btfss (Bit Test F, Skip if Set) выполняет проверку указанного бита (в примере бит Z) в указанном регистре (в примере регистр STATUS). Если бит установлен, то следующая за btfss команда пропускается. Для команды btfsc (Bit Test F, Skip if Clear) следующая команда будет пропущена если бит сброшен.

Читайте также:  Человек, который в данный момент является отцом моей дочери (1 год 11 месяцев), бросил уже две семьи?

Собственно ошибка

Ну вот мы и добрались до самого интересного.

Что бы сформировать временной интервал мы должны установить коэффициент деления для Prescaler. Внутренний генератор микроконтроллера работает на частоте 4 МГц, но выполнение каждой команды занимает 4 такта.

Таким образом, машинный цикл составляет 1 мкс (частота 1 МГц). Нам нужны миллисекундные интервалы, причем особая точность не требовалась, поэтому я выбрал максимально возможный коэффициент деления 1:256.

Теперь инкремент регистра TMR0 у нас выполняется каждые 256 мкс. Мне нужна длительность импульса порядка 40 мс, поэтому в регистр TMR0 будем загружать -160. Да, именно минус, так как регистр таймера инкрементируется. Остается только дождаться обнуления TMR0 и нужный временной интервал будет сформирован.

Без установки коэффициента деления фрагмент программы выглядит так

Формирование задержки на 40 мс. Здесь есть ОШИБКА!

Формирование задержки на 40 мс. Здесь есть ОШИБКА!

Это фрагмент программы с ОШИБКОЙ! Нет, все ранее приведенные рассуждения верны, но вот в реализации есть критическая ошибка! Видите ее? Подскажу, она в команде movf. Все еще не видно? Цикл ожидания обнуления регистра таймера никогда не кончится! В чем же дело?

В чем же ошибка?

Поиск этой ошибки занял некоторое время. Дело в том, что я очень редко работаю с микроконтроллерами семейства Baseline, поэтому такая вот проверка и ожидание переполнения таймера тоже требуется крайне редко.

Обычно просто проверяется состояние флага переполнения соответствующего таймера. А с точки зрения компилятора, да и опыта программирования для PIC, код абсолютно корректен.

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

А дело в том, что предварительный делитель, тот самый Prescaler, в микроконтроллере тоже реализован в виде счетчика.

При этом каждая операция записи в регистр TMR0 вызывает сброс счетчика Prescaler (содержимого, а не коэффициента деления), то есть, отсчет начинается сначала.

Дополнительно, инкремент запрещается в течении 2 машинных циклов после каждой записи в TMR0. Теперь понимаете в чем ошибка? Все еще нет?

Команда

movf TMR0,f

выполняет считывание содержимого регистра TMR0, что нам и требуется, и его ЗАПИСЬ обратно в регистр. А это приводит к сбросу счетчика предварительного делителя. Наш фрагмент программы существенно короче 256 команд, поэтому на выходе Prescaler никогда не будет сформирован импульс инкремента регистра-счетчика таймера. Вот она, ОШИБКА!

А как влияет запрет инкремента в течении 2 циклов после записи в регистр таймера? Конечно, влияет но в нашем случает эта проблема не успела проявиться. Большинство команд в 8-битных микроконтроллерах PIC (я не говорю про PIC18) выполняется за один машинный цикл. Исключение составляют команды переходов и вызова подпрограмм, которые выполняются за 2 цикла.

Команды btfss и btfsc выполняются за 1 цикл, если следующая команда не пропускается, и за 2 цикла, если пропускается. В нашем случае, если временной интервал еще не истек, команда btfss будет выполняться один цикл, а команда goto два цикла. То есть, всего 3 цикла между проверками регистра TMR0. Поэтому шансы на инкремент у таймера все таки есть.

Если не сбрасывать Prescaler.

Что делать? Как исправить ошибку? Мы должны избегать записи в регистр TMR0 во время проверки. Это возможно только в том случае, если результат использующейся для проверки его содержимого команды записывается куда то еще, а не в регистр TMR0. На самом деле вариантов у нас не много. Самым простым будет замена столь привычной команды

  • movf TMR0,f
  • на
  • movf TMR0,w

но это приведет к порче содержимого рабочего регистра WREG. Если это недопустимо, то WREG нужно предварительно где-нибудь сохранить. Итак, фрагмент программы без ошибки будет выглядеть так

Формирование задержки на 40 мс. Здесь ошибка исправлена

Формирование задержки на 40 мс. Здесь ошибка исправлена

Вот теперь все правильно и работает именно так, как требуется.

Почему эта ошибка стала возможной?

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

Работа с таймерами в микроконтроллерах довольно проста и стандартна. Настроили. Загрузили в счетчик нужно значение. Подождали окончания счета. Автоматическое обнуление счетчика предварительного делителя при записи в регистр-счетчик таймера абсолютно естественно и логично.

Оно выполняется не только для 8-битного Timer0, но и для 16-битных таймеров, например, Timer1. Иначе просто нельзя. И это упрощает работу с таймерами когда переполнение можно отследить опрашивая соответствующий бит или используя прерывания (в Baseline нет прерываний).

Это настолько естественно, что на него не обращают внимания, как мы часто не замечаем, что дышим, или что у нас бьется сердце.

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

Заключение, или немного пофилософствуем

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

Страшно ли совершать ошибки? Это зависит от очень многого. В ситуациях подобных описываемой последствия ошибки минимальны и проявляются только для ошибшегося, меня в данном случае, дополнительными затратами времени.

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

Если это что то не очень серьезное, например, игрушка или редко используемая самоделка, то ее «зависание» раз в месяц-два будет неприятным, но не критичным. Если это прибор, который используется в длительном, или трудно воспроизводимом, эксперименте, то дело совсем другое.

А в предельном случае может быть и «ракета самоуничтожилась»… И даже «ракета прилетела не туда забыв самоуничтожиться из-за программного сбоя»….

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

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

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

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

Нет, это не индульгенция вроде «ошибаюсь как хочу и ничего не боюсь»! Ошибок нужно стараться избегать. Плохо, когда человек упорствует и не желает признавать и исправлять свои ошибки, хоть на них ему указывают.

Иногда, на форумах это наглядно видно, реакция ошибающегося бывает даже агрессивной.

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

  • Ошибаться плохо, но избежать этого практически не возможно. Особенно, во время разработки или обучения.
  • Нужно опасаться не столько ошибок, сколько не выявленных ошибок и их последствий, когда они попадают в готовое изделие. Да, я говорю о технических ошибках. Тестировать нужно максимально тщательно. Опытная эксплуатация необходима.
  • НЕДОПУСТИМО отказываться признавать и исправлять свои ошибки!
  • Помните, на ошибках учатся. Всегда изучайте причину появления своей ошибки и собственно ошибку. Во всех аспектах. Если ошибка от недостатка, или неточности, знаний, то нужно восполнять пробелы. Если ошибка от невнимательности, то стараться в дальнейшем быть внимательнее. Если от небрежности, то стараться быть аккуратнее и точнее. Помните, все, что нас не убивает, делает нас сильнее. Это касается и наших ошибок, в том числе. Если на них учиться, конечно.
  • Учитесь не только на своих ошибках, но и на чужих. Отличная схема или программа, которые вы нашли и использовали, безусловно, помогут вам. Но еще больше могут помочь схема или программа с ошибкой, когда эта ошибка найдена и описана самим автором или кем то еще. И втройне полезнее, если ошибку найдете и исправите вы сами. Это кажется парадоксальным, но это дает вам опыт. А это самое ценное.
  • Ну и последний пункт, для новичков, для тех, кто еще учится. Не бойтесь своей неопытности, опыт дело наживное! Все когда то были начинающими и все допускали ошибки, иногда еще глупее ваших. Если вы будете действительно стремиться к знаниям, если будете упорно трудиться (а это бывает ох как не легко иногда), то без сомнения сможете стать отличными специалистами! Но при этом, став специалистами, не забывайте времена, когда сами были начинающими и неопытными.

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *