Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 14, 2013 17:56:25

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

Как будет "fail silently" по-русски?

>Как будет “fail silently” по-русски?
“сломаться тихо/безшумно”

py.user.next
“тихо сбоить”
имеется в виду, что если происходит ошибка, это не должно оставаться незамеченным
как раз наоборот
py.user.next
Errors should never pass silently.
хорошая практика, да
FishHook
Django проглотит без исключений.
это и есть пример “fail silently”


Отредактировано bismigalis (Апрель 14, 2013 18:07:31)

Офлайн

#2 Апрель 15, 2013 02:03:42

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9879
Репутация: +  853  -
Профиль   Отправить e-mail  

Как будет "fail silently" по-русски?

Lexander
Нет такого правила.
есть

Lexander
Я привел пример, где такое поведение практикуется.
и что дальше ?

Lexander
Кроме шаблонизаторов, система логгирования тоже работает в режиме fail silently.
запись в лог в случае ошибки - это не “fail silently”

для того и утверждения сделаны (assert'ы), чтобы программа просто выпадала, всё останавливалось и пользователь заметил
если программа неправильная, с ошибкой, то она работает неправильно
если программа продолжает неправильно работать, то получается неправильный результат
поэтому она всегда должна сообщать об ошибке, явно или в журнал, чтобы её исправили



Офлайн

#3 Апрель 15, 2013 02:58:12

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Как будет "fail silently" по-русски?

py.user.next
есть
Есть, но оно прикладное.
Но не распространяется на все программирование, поэтому не является общим, как вы утверждаете.
py.user.next
запись в лог в случае ошибки - это не “fail silently”
Не запись в лог, а “система логгирования”.
Она использует принцип “послал и забыл”.
А если что-то в лог не записалось, то это такую ошибку игнорируют.
Знаете зачем ее игнорируют?



Офлайн

#4 Апрель 15, 2013 09:29:23

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

Как будет "fail silently" по-русски?

bismigalis
“сломаться тихо/безшумно”
учитывая что подразумевается продолжение работы, то “сломаться” не совсем точно отражает. Я нашёл как лучше превести в данном контексте fail - “сбой, сбоИть”. Тогда превод “сбоИть незаметно”

Офлайн

#5 Апрель 16, 2013 07:44:33

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9879
Репутация: +  853  -
Профиль   Отправить e-mail  

Как будет "fail silently" по-русски?

Lexander
Но не распространяется на все программирование, поэтому не является общим, как вы утверждаете.
оно настолько же общее, насколько общ отказ от goto

Lexander
Не запись в лог, а “система логгирования”.
в чём же функция системы логирования (журналирования), если не запись в журнал ?

Lexander
А если что-то в лог не записалось, то это такую ошибку игнорируют.
чтобы программа оставалась неправильно, а выглядела красиво

Lexander
Знаете зачем ее игнорируют?
я не знаю, про что речь
пример конкретный приведи



Отредактировано py.user.next (Апрель 16, 2013 07:44:58)

Офлайн

#6 Апрель 16, 2013 15:37:14

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Как будет "fail silently" по-русски?

py.user.next
в чём же функция системы логирования (журналирования), если не запись в журнал ?
Принцип применим не к функции системы, а ко всей системе.
Поэтому я подчеркиваю разницу.
py.user.next
чтобы программа оставалась неправильно, а выглядела красиво
Нет. Система логгирования - это вспомогательная система, без которой работоспособность системы в целом не должна страдать. В том числе, если вспомогательная система сбоит.
Кроме того, ее особенность в том, что она всегда последняя в цепочке обработки ошибки.

По вашему, если ошибка происходит при записи в лог-файл, то программе следует бы просто вылетать с ошибкой? Так красиво?

py.user.next
пример конкретный приведи
Если при записи в лог-файл возникает ошибка, ее следует проигнорировать в подавляющем большинстве систем.
Потому что прикладная программа не только не может повлиять на ошибку, но часто даже не знает причину ее возникновения.

Если антивирус заблокировал лог-файл, если возникла аппаратная ошибка, система логгирования никак не может решить эту проблему.

Отдельная песня - программы для обслуживания производственных агрегатов в реальном времени.
Там вылет программы - это остановка производственного процесса,- ЧП.

А сообщить об ошибке можно только путем крэша, т.к. остальные стандартные потоки типа stderr либо уже заняты, либо перенаправлены в этот самый файл, либо вообще перенаправлены в dev/null.
Поэтому такую ошибку игнорируют. Иногда используют альтернативную систему сообщений: mail, sms, sys log. Но это, как говорят, зависит от…



Офлайн

#7 Апрель 19, 2013 08:25:58

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9879
Репутация: +  853  -
Профиль   Отправить e-mail  

Как будет "fail silently" по-русски?

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

Lexander
А сообщить об ошибке можно только путем крэша
речь идёт про несообщение об ошибке

Lexander
Поэтому такую ошибку игнорируют.
и она остаётся неисправленной

Lexander
По вашему, если ошибка происходит при записи в лог-файл, то программе следует бы просто вылетать с ошибкой?
нет, программа должна сообщить об этом программисту, если это случай внутреннего сбоя программы, а не результат внешнего воздействия (если определить не может, то это внутренний сбой)



Отредактировано py.user.next (Апрель 19, 2013 08:27:04)

Офлайн

#8 Апрель 19, 2013 10:36:18

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Как будет "fail silently" по-русски?

py.user.next
нужно вернуть код ошибки
Куда? Кто ее обрабатывать будет?
py.user.next
речь идёт про несообщение об ошибке
Вот потому и не сообщают.
py.user.next
и она остаётся неисправленной
Да. И что с того?
py.user.next
программа должна сообщить об этом программисту, если это случай внутреннего сбоя программы, а не результат внешнего воздействия (если определить не может, то это внутренний сбой)
Еще раз. Лог-файл - это последняя инстанция. Как вы собираетесь сообщать программисту?

ЗЫ
Я вам больше скажу, есть еще такое понятие как Silence Warnings.
Угадайте где используется ;)



Офлайн

#9 Апрель 20, 2013 08:57:46

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как будет "fail silently" по-русски?

Lexander
Куда? Кто ее обрабатывать будет?
Не обязательно ее обрабатывать, надо о ней сообщить.
Куда? Да хоть в консоль, хоть в MessageBox.



Офлайн

#10 Апрель 20, 2013 15:33:13

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Как будет "fail silently" по-русски?

FishHook
Не обязательно ее обрабатывать, надо о ней сообщить.Куда? Да хоть в консоль, хоть в MessageBox.
… если есть такая возможность. Если ее нет - в соответствии с алгоритмом, например, fail silently.
Вывод в консоль то, обычно, тоже в лог-файл перенаправляется.
Что касается GUI приложений, то я, навскидку, не могу придумать, где нужно подавлять сообщения об ошибках без какой-либо реакции.

Но это мы чуть в сторону ушли, контекст нашего с py.user.next обсуждения - система логгирования.
Его и моя фраза касается только этого частного случая.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version