Опаньки, я сломал вашу жизнь

https://www.cooper.com/journal/2012/01/oops_i_ruined_your_life
  • Перевод
Ещё не угасла надежда на слабый сигнал Wi-Fi в аэропорту, на заряд батареи, который вот-вот заставит ноутбук вырубиться — а розетку здесь найти та ещё задача — и на то, что письмо клиенту на миллион долларов вроде ушло. И в этот момент «пожалуйста, заработай» вылезает приводящее в шок сообщение: «Упс».

image

Ошибка. Упс… возникла серверная ошибка и ваше письмо не отправилось.

Как в некоторые бросающие в дрожь моменты фильма «Американский психопат» это не очень различимое, бесстрастное сообщение от почты Gmail вонзает кинжал точно в моё сердце, мгновенно порождая отчаяние — что же пошло не так?

Несомненно, конечно, сейчас я посмотрю, что это за ошибка #001. И что?

От Google Chrome приходит сообщение об ошибке ещё бредовей, лучше от него не становится. Похоже на желание быть ещё одним куском хипстерского софта, который подражает иконкам «Макинтоша» 1984 года. Этот интерфейс смеётся вам в лицо, когда вы раздражены:

image

Вот, блин!
Что-то пошло не так в процессе отображения этой веб-страницы. Чтобы продолжить — перезагрузитесь, или откройте новую страницу.


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

Microsoft, к сожалению, рассматривает вопрос о реализации того же миленького метода мышления в модернизации синего «экрана смерти», как части своей — в остальном, вдохновляющей — новой [на момент написания статьи — прим. пер.] операционной системы Windows 8:

image

Ваш ПК столкнулся с проблемой, которую не может решить и сейчас ему потребуется перезагрузка.
Синий «экран смерти» Windows 8.


Как хорошо-то! Не иначе как мой 14-летний племянник устроился в Редмонд сообщения об ошибках сочинять.

Но — какая удача — Microsoft даёт какое-то указание. Посмотрите сообщение об ошибке — «HAL_INITIALIZATION_FAILED»… Однако, как же, — это ведь и означает синий «экран смерти». Мой компьютер полностью накрылся.

Чтобы превзойти Гугл по «упсам», сайт XBOX от Microsoft вводит восклицание «Упс!» дважды в своё сообщение об ошибке: первый раз в заголовке и затем как первое слово в пояснении к заголовку. Очевидно, после того как сорвал чьи-то планы, лучшее, что можно сделать, это снова и снова восклицать «Упс!».

image


Упс! Упс, мобильный сайт XBOX не отконфигурирован для вашего устройства. Приносим извинения за неудобства, убедитесь, что вы посещаете сайт xbox.com на десктопе.

Ага, конечно — эту страничку я полайкаю.

И не надо думать, что в некоммерческой Mozilla Foundation этих миленьких странностей в сообщениях об ошибках в браузере Firefox нет.

image

Плагин Adobe Flash упал.

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

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

image

Данное видео приватно. Извините за это.

Facebook?

image

Что-то пошло не так. Мы работаем над тем, чтобы исправить это как можно скорее. Вы сможете попробовать снова спустя какое-то время.

Как насчёт музыки с Apple iCloud?

image


iCloud не может найти данную страницу. Пожалуйста, перепроверьте запрос или попробуйте позже.

Проверим Twitter?

image

Twitter вышел за пределы возможностей. Слишком много твитов! Пожалуйста, выдержите паузу и попробуйте снова.

Есть ли выход из этого приветливого чистилища?

Модная компания Plaxo — ваша адресная книга для жизни — не только также выбрала «упс», но и ввела другой уровень наведения таинственного страха. Но тсс … эта ошибка — «наш маленький секрет».

image

Похоже, есть проблема. Вот что я вам скажу — дайте нам время устранить её, и пусть это будет наш маленький секрет. Пожалуйста, подождите 30 секунд и попробуйте снова.

Что происходит?

Вы знаете, не так давно, когда что-то в программном обеспечении создавало трудности для пользователей, то у производителей программного обеспечения было блестящее безотказное и простое решение: добавить некоторое руководство в раздел справки. Вместо траты времени на то, чтобы сделать сложное простым и очевидным, производители софта скидывали ответственность на пользователя: «Гм, не знаем, как сделать просто, почитайте мануалы».

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

image

Из фильма «Американский психопат»

Корни «упс»!


Надписи под карикатурным изображением жителя Нью-Йорка, появившейся в 1925 году, приписывают первое публичное появление «Упс!» («Whoopsie Daisy!»). Но реальные корни явления «опачки» можно увидеть в операционной системе Linux.

image

Пингвин Linux

Это твоя вина, пингвин. И не смотри на меня так.

На "ошибку в ядре" Linux отвечает сообщением об ошибке OOPS. Впервые использованный в 1991 году код Linux для сообщений об ошибках, возможно, вошёл в подсознание разработчиков и, в конечном итоге, привёл к сегодняшнему распространению «упс». Ниже приведён пример:

Не удалось обработать запрос страничной подкачки файлов ядра на виртуальном адресе 211e2018

c0129577

*pde = 00000000

Oops: 0000

CPU:    0

EIP:    0010:[<c0129577>]    Not tainted

Using defaults from ksymoops -t elf32-i386 -a i386

EFLAGS: 00010083

eax: d7ee5000   ebx: b420e080   ecx: c164e000   edx: c1615d04

esi: c16073d0   edi: 00000246   ebp: 000001f0   esp: d7c5de84

ds: 0018   es: 0018   ss: 0018

Process mount (pid: 25, stackpage=d7c5d000)

Stack: 00000000 c0309c00 000001f0 00000000 c01fadb7 c16073d0 000001f0 c1615a40
c1615700 c1615a40 c01fa126 00000001 000001f0 00000000 c022f793 c1615a40
00000001 00000000 000001f0 d7b6fde0 d7c5df14 0000006e bfffec0c 00000018

Call Trace: [<c01fadb7>] [<c01fa126>] [<c022f793>] [<c01f8acb>] [<c01f8720>]
[<c01f9450>] [<c0106d40>] [<c0106c4f>]

Code: 8b 44 81 18 89 41 14 83 f8 ff 75 1d 8b 41 04 8b 11 89 42 04

(Если вам интересны все эти нюансы, то разъяснение имеется у madwifi.)

Когда мило — хорошо


Поймите меня правильно — в миленьких штучках нет ничего плохого.

image

Милашка!
(С сайта Cute overload)

Миленькое работает, когда…, когда вы не ждёте ничего конкретного в данной ситуации. Как, например, когда смотрите на очаровательного ребёнка.

Ой, лапушка, он наделал в штанишки!
Уй-ти-ти, он пукнул!
Ха-ха, он отрыгнул на меня!

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

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

Так, когда компания Google была ещё молодой, модернистской и стремительно растущей, их сообщения об ошибках были действительно забавными. Такие глупенькие очаровательные гуглеры!

image

Упс! Этого не должно было случиться.
Реакция агрегатора Google Reader


Необычно!

Но теперь, когда Гугл является зарегистрированной на бирже компанией стоимостью 186 млрд. долларов, на которую мы полагаемся в вопросах важного делового общения и которая может создавать или ликвидировать целые направления работы, их милые сообщения об ошибках выглядят почти столь же «мило» как на известных фотографиях совсем юный Билл Гейтс, бросающий дискеты у себя в офисе. Другими словами, остаётся страшноватое впечатление.

Отойти от границы допустимого


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

image


MS DOS

О, да, понятное дело, ff0a8e6c не должен был указывать на HAL.DLL!

Поэтому люди, озабоченные взаимодействием с пользователями, давали указания и рекомендации. За последние три десятилетия было написано множество статей о подготовке хороших сообщений об ошибках. Здесь. Здесь ещё одна. И здесь. И здесь. И здесь. И ещё одна — авторами с Yahoo! И другая, приравнивающая сообщения об ошибках к упущенной выручке. И ещё одна, о знаменитой 404-й…

Однако сегодняшние авторы сообщений об ошибках, претендующие на оскорбляющее остроумие, качнули маятник слишком далеко в обратную сторону. Общая рекомендация использовать естественный язык, чтобы преобразовать невнятное сообщение «Ошибка: переполнение стека», реализовалась не во что-то вежливое и понятное, а в глуповатое «Упс! Вот блин!».

Нам надо поубавить тон с зашкаливающе дружелюбного пониже — текущий уровень выглядит жутко. Существует ведь некоторая золотая середина, когда разработчики могут извиниться, а программное обеспечение может предоставить пользователю вежливую подсказку о том, что делать дальше. Веб-сайт, приложение, программное обеспечение — это ваш прокол. Помогите пользователю выполнить требуемую ему задачу КАК МОЖНО БЫСТРЕЕ.

Перефразируя известное высказывание ТВ-ведущего Джона Стюарта во время дебатов кандидатов в президенты США: «упс» — совсем не то слово из трёх букв, которое я выбрал бы.
Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама
Комментарии 79
  • +5

    Самое печальное, когда тебе говорят "упс, что-то пошло не так", но при этом не говорят что именно пошло не так. Какая именно подсистема дала сбой? Может её отключить или поменять настройки или поменять на другую? Вместо того, чтобы сделать сообщения об ошибках понятными для всех, их делают непонятными ни для кого.

    • 0
      У самого подобное. Потому я при каждой ошибке заставляю свой код выплёвывать бектрейсы и подобные вещи :D
      • +16

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

        • –6

          Мечта хакера — "security by obscurity".

          • +12
            Прятанье логов в веб-сервисах — это не «security by obscurity». Это простой здравый смысл.
            • –7

              Как и любое другое прятанье, это — "security by obscurity". И наличие этого "obscurity" провоцирует программистов забивать на "security". А вот когда работаешь "в открытую", то просто не можешь "забить", потому, что знаешь, что это будет тут же обнаружено.

              • +4
                Ок, ссылку на сервис банка, компании уровня гугла и т.п. серьезного бизнеса который сообщал все «в открытую» от логов до инфраструктуры. Или вы лично считаете себя умнее всех экспертов по безопансоти в мире?

                • –2

                  Взывание к авторитету и сливание кармы — так себе аргументы.


                  Я ни разу в жизни не допустил ни SQL инъекций, ни XSS уязвимостей. Не потому, что я такой внимательный или наблюдательный или иксперт по безопасности, а потому, что строю архитектуру так, чтобы эти уязвимости исключить. Поэтому мне всегда было смешно наблюдать, как многие борются за безопасность путём "скрытия текста ошибки", "фильтрации SQL конструкций во вводе пользователя" и тому подобными простыми и неэффективными способами.

                  • +6
                    Я ни разу в жизни не допустил ни SQL инъекций, ни XSS уязвимостей.
                    А таки откуда ви знаете? :D
                    • –3

                      Оттуда же, откуда вы знаете, что не кусали свой локоть. Я просто не собирал ни SQL, ни HTML из строк. А когда всё же приходилось — использовал инструменты с автоэкранированием.

                    • 0
                      «Security through obscurity» во многих случаях вполне себе работает. Говорю это как человек, в отличие от вас, действительно ни разу в жизни не допустивший ни SQL-инъекций, ни XSS-уязвимостей. Работает, может быть, плохо и недолго, но работает. Характерный пример: когда находят уязвимость и собираются публиковать, как правило, перед публикацией посылают описание производителю и дают время на устранение уязвимости.
                    • 0

                      Недавно была атака на банки, так вот Сбербанк Онлайн выдавал пусть и не бектрейсы, но исключения Java с указанием имён пэкейджей и классов. В частности, про невозможность Hibernate подключиться к БД или ошибки рефлексии. Не то чтобы прямо что-то критичное, но я несколько удивился. Ещё раньше на запуске нынешней системы на Java у них и трейсы вылетали целиком, сейчас, вроде, убрали.

                      • 0
                        Когда сбербанк онлайн был по ддосом, он почему-то вывел произошедшее исключение, интересно, почему оно не обработалось:
                        Error 500: java.lang.SecurityException: org.hibernate.exception.GenericJDBCException: Cannot open connection
                      • +5
                        Забивать на «security» провоцирует отсутствие аудита и непрофессионализм. Никакой безопасник никогда не разрешит вывешивать логи ошибок на всеобщее обозрение.
                    • +4
                      «security by obscurity» это использовать явно дырявые решения. А кричать на каждом углу что у вас в сейфе лежит сто миллионов долларов наличкой в расчете что сейф никто не сможет взломать это просто глупость.
                      • 0

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

                      • +1

                        "security by obscurity" не значит, что obscurity это плохо. Это значит, что когда obscurity — единственный способ обеспечения безопасности — вот это плохо.

                        • –1

                          О том и речь, что "obscurity" вообще не обеспечивает никакого "security". Это как иконки на торпеде — в лучшем случае никак не повлияет, а в худшем даст ложную уверенность.

                          • +1
                            Я вот одного понять не могу, почему вы считаете это взаимоисключающими вещами? То есть никто не может и сделать безопасно, и спрятать логи?
                      • –1
                        Тут разговор в основном о вебсервисах, а это просто мечта хакера, вебсервис выдающий стектрейсы и детальные ошибки.

                        Простите, но ошибка, которая крушит браузер — на клиентской стороне. И бектрейс хакеру никакой дополнительной информации не даст — у него и так уже код весь есть.
                      • +1
                        Код в разработке и так должен выплевывать бэктрейсы, а на проде можно использовать вещи вроде rollbar чтобы видеть ошибки.
                      • 0
                        Что-нибудь вроде «По нашей статистике, 85% таких ошибок, было вызвано тем-то и тем-то… Можно попробовать то-то и то-то»
                        • НЛО прилетело и опубликовало эту надпись здесь
                          • +3
                            Очень важно дать и техническую информацию (код ошибки, системное сообщение, информация о месте возникновения -желательно со стектрейсом, если это возможно), и рекомендации обычному пользователю — и при этом не выставлять пользователя идиотом.
                            Возможно, я мнителен, но раздражают советы класса «убедитесь, что компьютер включен», что наблюдалось (да и наблюдается) особенно у МС: например, IE — сейчас уже более осмысленные сообщения при обрывах связи, но были достаточно раздражающие сообщения. Что там усугубляет — наличие кнопочки «исправить проблемы подключения», результатом которого обычно является сообщение либо «у вас все хорошо» (а проблема остается) либо «у вас нет соединения» — при этом вопрос «почему?» остается.
                            • 0
                              В МС дают такие советы из-за большого числа гневных звонков о нерабочем IE после отключения электричества в городском районе.
                          • НЛО прилетело и опубликовало эту надпись здесь
                            • –5

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

                              • НЛО прилетело и опубликовало эту надпись здесь
                                • –3

                                  Затем, чтобы при разговоре со службой поддержки / знакомым экспертом / гуглом получить разумный ответ и вариант обхода проблемы вида "Вы делаете запросы в такое-то время, когда на сервере обычно происходит обновление приложения, поэтому части запросов может не повести. Просто повторите запрос, при получении такой ошибки, пока мы не научились обновлять софт без остановки сервиса."

                                  • +3

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

                                    • –3

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

                                      • +1
                                        Тогда и сообщения пользователей уйдут в тот же завал. Вы просто не работали в серьезных компаниях (банки и т.п. фин. бизнес), там если не шевелиться в области безопасности накроется весь бизнес.
                                        • 0

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


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

                                    • НЛО прилетело и опубликовало эту надпись здесь
                                      • –1

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

                                        • НЛО прилетело и опубликовало эту надпись здесь
                                    • +3
                                      Если же код ошибки спрятан — может, программист недоглядел/поленился,

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


                                      а может компания не хочет выдавать никакой конкретики о своих ошибках. И это ее право, чесговоря.

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


                                      «наш сервер №12345 накрылся, поэтому ваша транзакция не прошла — попробуйте еще раз, и балансировщик вас перебросит на рабочий сервер»

                                      Пользователю-профессионалу это все равно ничего не даст (равносильно что-то случилось, попробуйте ещё раз), а вот хакеру будет очень полезно.

                                      • +1
                                        Даже выдача код ошибки это на самом деле огромная дыра в безопасности

                                        Это не дыра в безопасности. Дыра в безопасности — это склеивание sql строк без экранирования, отсутствие проверок при обращении к памяти и тому подобное. А скрытие подробностей ошибки — это так, присыпание дыр листочками.


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

                                        Это получится самый дешёвый и эффективный аудит безопасности, который найдёт у вас реальные дыры, а не только лишь их незамаскированность вида "стектрейс в ответе". Можно даже в теле ошибочного ответа сразу писать "Вот вам стектрейс, настройки сервера такие, сможете придумать как это эксплуатировать — получите сумму такую-то".


                                        Пользователю-профессионалу это все равно ничего не даст (равносильно что-то случилось, попробуйте ещё раз), а вот хакеру будет очень полезно.

                                        Пользователь-профессионал сможет догадаться, что кавычку надо заэкранировать, чтобы запрос сейчас прошёл, решив тем самым свою проблему. И сообщит в службу поддержки о возможной SQL инъекции, тем самым решив проблемы других пользователей и самого сервиса. А служба поддержки в срочном порядке сообщит ответственному программисту, что надо залатать дыру, а не закинет сотый тикет вида "изредка возникает 500 ошибка, поди разберись".

                                        • +3
                                          "Вот вам стектрейс, настройки сервера такие, сможете придумать как это эксплуатировать — получите сумму такую-то".

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


                                          А скрытие подробностей ошибки — это так, присыпание дыр листочками.

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

                                          • 0
                                            Если вас уже ломают, хакеру ваши предложения будут не интересны в 90% случаев.

                                            Значит надо предлагать в 10 раз больше, чтобы хакеру было выгоднее быть белым, а не чёрным. Это же рынок.


                                            А открытость вовсе не означает что на безопасность не забьют.

                                            Конечно, но мало кто будет ковыряться в носу, когда на него все смотрят. :-)

                                        • 0
                                          Даже выдача код ошибки это на самом деле огромная дыра в безопасности

                                          Ну-ну. Пахнет сокрытием самого факта ошибки: «Ошибка? В нашем ПО? Быть не может, это нормально, а Вы там не ковыряйте ничего, чтобы не ломалось!»
                                          Если уж так не хочется выдавать тех.инфо, то на худой конец можно шифровать, чтобы спецы потом расшифровали всю важную информацию.
                                    • +2
                                      В общем, мне очень нравятся понятные и полезные (сразу ясно, что делать) сообщения об ошибках. Но как разработчик я понимаю, что реализовать такое — часто очень сложно и затратно.

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

                                      • НЛО прилетело и опубликовало эту надпись здесь
                                      • +1
                                        кстати, там во-1х 3.1 (интересно где такой скрин автор вообще нашел?), во-2х автор оригинального текста там вообще сморозил редкостную херню — «Oh yeah, duh, ff0a8e6c shouldn’t have been pointing to HAL.DLL!», ну а в-3х, мне тоже интересно какая связь между досом и НТшкой, но судя по тому что текст написан без малого пять лет назад, мы этого уже не узнаем.
                                        • НЛО прилетело и опубликовало эту надпись здесь
                                          • 0
                                            ну справедливости ради, до вин2к включительно, оные системы ставили либо продвинутые пользователи, либо пользоватеЛЯМ, хотя, конечно, 2/3 инфы на этом скриншоте имеют смысл только для сотрудников мс, если вообще — INACCESSIBLE_BOOT_DEVICE обычно получалось сдуру, как я помню.
                                            • НЛО прилетело и опубликовало эту надпись здесь
                                              • 0
                                                еще точно был NT4 Terminal Server Edition, но это совсем зло.

                                                ну да, собственно почти все варианты из категории «сдуру можно и буй сломать».
                                        • 0

                                          Тоже не угадал. Там ведь латинским по синему написано: Windows NT 3.1.

                                          • НЛО прилетело и опубликовало эту надпись здесь
                                        • +2
                                          Если вы знаете, что посоветовать пользователю во время неизвестной ошибки, то это вполне известная ошибка.
                                          Известных ошибок в production быть не должно.
                                          Технический лог пользователю ничем не поможет, а хорошим тоном может быть номер ошибки и контакт, с которыми можно обратиться в поддержку, но никак не куча абракадабры.
                                          • 0

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


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


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

                                            • +1
                                              > На момент написания кода об этой ошибке было не известно.
                                              Именно поэтому невозможно подстелить солому, как вы хотите, т.е. рассказать что произошло, кроме как технических логов.
                                              > А абракадабра, зачастую, не понятна и самим программистам
                                              Причем тут создатели программы, они могут логгировать эти ошибки без показа их пользователям.
                                              > Падает через пару минут после загрузки. Никаких подсказок не даёт, почему именно на моей системе она падает.
                                              Не думаю, что куча чужих бектрейсов поможет 9999999 пользователей из 1000000. А последний потратит месяц или отправит багрепорт? И в GeForce (как и в большинстве программ) есть отправка логов.
                                        • +10

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

                                          • +4
                                            image

                                            Навеяло почему-то.
                                            • +7
                                              По мне, никакой паники и уж точно не издевательство, просто разработчики сочувствуют пользователю, у которого из-за них приложение упало в самый ответственный момент.
                                              • +6
                                                Если человек шлёт письма на миллион и не имеет при себе 3 совершенно разных мобильника трёх разных операторов, то Упс! Хорошо, наверное, быть сказочным долбокряком.
                                                • 0
                                                  Сложно представить человека, шлющего письма на миллион, обложившегося тремя мобильниками.
                                                • +3
                                                  Ошибка есть ошибка. Расшифровывать её, или попросить зайти позже, это всегда зависит от контекста. Давать расшифровку или нет, зависит от типа ошибки и способа её получения.

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

                                                  Единого рецепта правильного сообщения об ошибки, нет. Главное, что бы про это знал разработчик и максимально быстро исправил. То, что ты — доблаёб и забыл зарядить все свои 100500 гаджетов, и в аэропорту они одновременно сдохли под плохим бесплатным вайфаем — не проблема сайта. Почему почти все почти всего думают, что им что-то должны в лучшем виде всегда?
                                                  • +1
                                                    Ещё одна аналогичная и очень старая проблема: недоступность функций в программах. Например, неактивный пункт меню, который делает то, что тебе прямо щас надо сделать. И я не встречал ПО, которое объясняло, почему в данный момент именно этот пункт недоступен. Пол дня в гугле помогают понять, что это потому что какой-то драйвер не тот, железка не той версии, фаза луны не та итп.
                                                    В наше время классических меню всё меньше, но проблема осталась. Действия просто пропадают из тех мест, где они должны быть. И опять без объяснений.
                                                    • 0
                                                      Не занудства ради спрошу: а кто-нибудь пробовал такую схему?
                                                      1. Приложение выбросило исключение
                                                      2. Собрало информацию об ошибке
                                                      3. Положило в базу, выдав при этом уникальный идентификатор (во избежание длинных чисел можно использовать, например словарь лёгких слов или что-то ещё, облегчающее передачу разными способами)
                                                      4. Сообщило об этом пользователю, показав этот самый идентификатор, краткую информацию и контактные данные компании.
                                                      5. Пользователь связывается с администрацией, назвав выданный ему идентификатор.
                                                      6. Администрация передаёт запрос программистам, которые изучают запись в базе об этой ошибке и решают проблему.

                                                      Когда я работал в местном купонаторе, с нами (через наш колл-центр) связывались пользователи и партнёры при возникновении каких-либо вопросов по сайту, будь то ошибки или какие-либо другие непонятности. И происходило это на удивление часто (моей разработкой был кабинет партнёра и по нему звонили ещё чаще, чем по фронтендовым вопросам).
                                                      • 0
                                                        Если это веб-приложение, то шаги 4-6 можно заменить одним:
                                                        0. Настроить уведомление при вставке информации об ошибках в базу.
                                                        • 0
                                                          Как один из вариантов развития событий ;)
                                                          • 0
                                                            Кроме настройки уведомления необходимо ещё и продумать фильтрацию ошибок, проверку их критичности, наличия ранее точно таких же обработанных ошибок(например, создана задача в баг-трекере) и т. д., в результате на уведомления придётся либо забить, либо выделить отдельного человека на их обработку.
                                                            Эту задачу достаточно хорошо решают пользователи — если ошибка критична для пользователя — он о ней сообщит, если нет — значит мы о ней и не узнаем. Да, вариант несколько порочный, в плане — пользователь может «обидиться и уйти», но для особо критичного функционала и так должны быть автоматические проверки.
                                                          • 0
                                                            Видел несколько раз вариант с отображением ID и текстом — «Если обратитесь в техподдержку по этому поводу, пожалуйста, укажите данный ID ошибки», то есть как минимум пункты 1 — 5 реализованы(увы, запамятовал, где именно).
                                                            В сервисах анти-ддос также защиты частенько отображаются идентификаторы, которые по идее можно будет проверить в случае если система по какой-то причине ошибётся и закроет доступ «нормальному» пользователю.
                                                            • 0

                                                              Возможно, нечто подобное можно сделать через Sentry.

                                                            • +4
                                                              В MS-DOS не было синих экранов смерти. А на скриншоте показан BSOD от Windows 3.1. И в нём, кстати, написано, что пропал доступ к загрузочному диску, а вовсе не то, что
                                                              ff0a8e6c не должен был указывать на HAL.DLL

                                                              По мне так этот BSOD — достаточно информативное сообщение.
                                                              • +2
                                                                Поправочка. Windows 3.1 была 16-разрядной, а на скриншоте 32-разрядные адреса. Так что это BSOD от какого-то прародителя Windows NT — от Windows NT 3.1.
                                                                • 0
                                                                  На нём написано Windows NT 3.1…
                                                                  А Windows 3.1 вполне себе работала в 32-разрядном режиме, просто не всё было 32-разрядным.
                                                              • 0

                                                                Лично меня раздражают только умники, которые всегда считают, что в гигантах IT индустрии работают идиоты и не знают что делают. Это наивность такая или гордыня? Нет, я правда не понимаю зачем об этом вот в таком виде высказываться.
                                                                В IT существует жесткая конкуренция, что и способствует направлению и методам развития. Не нравится такой подход — найдите подходящий для вас сервис. Если это единственный, который вам подходит по каким-то причинам, но в чем-то не устраивает, так это и не должно быть идеально во всем. Всем угодить невозможно. А IT гиганты работают с огромным числом клиентов/пользователей и от их методов и качества зависит их прибыль.

                                                                • +1
                                                                  Лично меня раздражают только умники, которые всегда считают, что в гигантах IT индустрии работают идиоты и не знают что делают.
                                                                  Довольно странный вывод из статьи Вы сделали. По мне так посыл статьи диаметрально противоположный: в гигантах IT-индустрии работают умники, которые всех без исключения пользователей считают идиотами. И если этих гигантов время от времени не пинать подобными статьями, то в конце концов они окончательно забьют болт на юзеров и перестанут воспринимать конструктивную критику.
                                                                  • 0
                                                                    В IT существует жесткая конкуренция, что и способствует направлению и методам развития.

                                                                    Назовите альтернативную операционную систему, на которой можно поиграть нормально в WoW, Civ 6 и еще несколько игр, используя клиенты Curse, Discord помимо Windows.


                                                                    Назовите браузер, который можно активно и удобно использовать, но не Edge, Mozilla или Chrome.


                                                                    Ну и так далее. "Конкуренция".

                                                                  • 0

                                                                    все из-за того, что компьютерами стали пользоваться не только программисты. :)

                                                                    • 0
                                                                      Имхо это все укоренилось в самой западной культуре. Нужно улыбаться, излучать уверенность и дружелюбие, иначе ты лузер. Все наверно наблюдали, как на прошедших выборах в США несколько пожилых людей пыжились, пытаясь изобразить своего в доску парня. Сегодня только смотрел доклад Александреску на CppCon, был слегка в шоке, первое впечатление: «это какой-то клоун под наркотой».
                                                                      • 0
                                                                        Помню такой момент, когда на внутреннем ПО на работе, разработчик (который буквально в соседнем зданиии сидит) просто поленился вписать текст ошибок в базу, откуда интерфейс рассчитанный на открытие в браузере забирал записи.

                                                                        Никогда не забуду надписи вроде «Text for error #8 here» при каких-то обычных действиях, или что-то «Error #102 — try again or contact support». Обычно, решение было простым, и пользователь запросто мог бы решить проблему сам, если бы вместо непонятного диалога, был нормальный текст ошибки.
                                                                        • 0
                                                                          А что не так с приватным видео на youtube?
                                                                          • 0
                                                                            Ага, как мне нравится на сайте «Юлмарта» — «Вы сломали наш сайт, но мы его уже чиним!»

                                                                            Перекладывание ответственности на пользователя, говорите?
                                                                            • 0
                                                                              Всё просто, системы вышли из младенческого возраста, когда обратная связь была на низшем уровне вида уа-уа агу-гу 80400000 2dc8312a HAL.DLL (почему кстати из BSOD взят именно ff0a8e6c? не понял), затем стали лепетать и сюсюкать на уровне гав, мяу, му, и теперь от них уже требуются что-то более вразумительное.
                                                                              Всегда старался максимально эргономично выводить сообщения об ошибках, ещё когда писал на VBA под Access, все корневые вызовы содержали On Error Goto (handler) а там модальное окно, подробное описание и предложение написать разработчику. Это как-то по-взрослому, имхо.
                                                                              • 0
                                                                                Какова вероятность, что увидев больше информации пользователь
                                                                                — пофиксит код на серверах гугла, фейсбука и айклауда
                                                                                — найдет ошибку, исправит её и сделает ПР в код хрома
                                                                                — исправит ошибку в проприетарных драйверах в винде (кстати, журналы ошибок пишутся, там больше деталей) или флеш
                                                                                — хакнет ютуб чтобы посмотреть частное видео
                                                                                — нарастит мощности ДЦ твиттера

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