Re: потыкать разработчика мордой в монитор
От: Sinclair Россия https://github.com/evilguest/
Дата: 30.07.13 06:19
Оценка: 1 (1)
Здравствуйте, ononim, Вы писали:

O>Вот из последнего, что сподвигло меня написать этот пост — открыл окошко IE в виртуалке, стал вводить URL, почти натайпал а он взял догрузился да и всунул в edit свой homepage, затерев длиннющий урл что я там уже впечатал.


O>Возникло непреодолимое желание найти индуса который делал код, который навигейтит в хоумпейж да и потыкать его в edit бокс как нашкодившего кота, приговаривая "кто это сделал? ну кто это сделал?..."

Это фича, относящаяся к секьюрити, поэтому её никогда не прибьют.
Дело в том, что адрес бар используется для двух противоречивых целей:
1. Ввести адрес, куда я хочу отнавигироваться.
2. Показать адрес, где я нахожусь сейчас.
Вторая цель крайне важна, т.к. иначе невозможно отличить phishing сайт от настоящего. (То, что 99.9% target audience неспособны это сделать даже при помощи address bar — к сожалению, не аргумент). Именно поэтому при окончании навигации браузер сбрасывает адрес на тот, который получился.
Представьте себе, что вы идёте на сайт вашего банка, который был за XSS-ен при помощи хитрого урла. В начале процесса вы посмотрели на то, что адрес начинается с корректного домена, и пошли себе набирать адрес в адресной строке. Тем временем сайт загрузился, зловредный скрипт отработал и средиректил вас на страницу логина, которая выглядит точно так же. Поскольку вы ещё не нажали Enter, отправив браузер по новому адресу, браузер находится в неустойчивом состоянии — в address bar набрано [http://rsdn.r|], а внизу — страничка с логином в "интернет банк". У вас всё ещё есть шанс передумать, и начать логиниться.

Именно против этого экзотического сценария и направлено вот это вот "вредительское" поведение браузера.

У IE есть ещё несколько прекрасных вещей в UI:
— с клавиатуры практически невозможно подняться на уровень вверх: backspace в адрес баре постоянно будет перебиваться автодополнением, которое упорно будет дописывать только что посещённый адрес
— кнопка backspace означает "navigate back", если фокус ввода не находится в текстовом поле. А поскольку фокус из поля выбивает множество событий, то, набирая текст в форме, можно запросто вернуться на страницу назад. На коннекте зарегистрированы десятки жалоб на это, но пока что очередь не доходит. Боятся сломать обратную совместимость для тех людей, которые вообще не пользуются формами в интернете, зато привыкли оперировать кнопкой backspace.
— выпадающие списки при выборе мышкой откладывают схлопывание примерно на 200 миллисекунд. Это означает, что можно ухитриться ткнуть сначала в один, а затем в другой пункт списка. Зачем вставлена эта задержка — ума не приложу, с клавиатуры всё происходит мгновенно даже в IE, а в других браузерах всё отлично и с мышью.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: потыкать разработчика мордой в монитор
От: ononim  
Дата: 30.07.13 06:44
Оценка:
S>2. Показать адрес, где я нахожусь сейчас.
S>Вторая цель крайне важна, т.к. иначе невозможно отличить phishing сайт от настоящего. (То, что 99.9% target audience неспособны это сделать даже при помощи address bar — к сожалению, не аргумент). Именно поэтому при окончании навигации браузер сбрасывает адрес на тот, который получился.
Ну какуюто такую причину я и предполагал.
А слабо сделать чтоб хоумпейдж не грузился пока я урл тайпаю? А еще лучше — чтоб грузился в кэш, без отображения и какого либо исполнения активного контента? Вобщем можно найти тыщу дел, которые делать, пока я тайпаю урл, и уж точно рендеринг хоумпейджа и исполнение скриптов с него — это явно не то что мне надо в этот момент.
Как много веселых ребят, и все делают велосипед...
Re: потыкать разработчика мордой в монитор
От: stronk2  
Дата: 30.07.13 07:00
Оценка: +4 -1
Меня больше всего раздражает, когда запускаешь какую-нибудь прогу, а сам продолжаешь печатать что-нибудь. Прога (по старой традиции говнокодеров) запускается секунд 10 даже на машине с SSD, а когда наконец заканчивает, вылезает со своим окном на самый верх и прерывает что я там печатал.
Или например после перезагрузки начинаешь печатать в поиске в стартовом меню, проходит несколько секунд, хлоп, стартовое меню закрывается само собой.
Re[3]: потыкать разработчика мордой в монитор
От: Sinclair Россия https://github.com/evilguest/
Дата: 30.07.13 07:01
Оценка: 1 (1)
Здравствуйте, ononim, Вы писали:
O>А слабо сделать чтоб хоумпейдж не грузился пока я урл тайпаю? А еще лучше — чтоб грузился в кэш, без отображения и какого либо исполнения активного контента?
Это поможет далеко не всегда. А точнее — ровно никогда: ваш homepage уже и так загрузился в кэш, поскольку он открывается на каждый запуск браузера. Поведение, которое вы наблюдаете — это как раз показ страницы из кэша.
O>Вобщем можно найти тыщу дел, которые делать, пока я тайпаю урл, и уж точно рендеринг хоумпейджа и исполнение скриптов с него — это явно не то что мне надо в этот момент.
"Замораживание" страницы будет большой неожиданностью для тех, кто просто открыл браузер, нечаянно что-то там тайпнул в адрес баре, и сидит ждёт, пока откроется его mail.ru.

Я в качестве homepage ставлю about:blank либо about:tabs, чего и вам желаю.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: потыкать разработчика мордой в монитор
От: stronk2  
Дата: 30.07.13 07:19
Оценка: :))
Здравствуйте, Sinclair, Вы писали:

S>нечаянно что-то там тайпнул в адрес баре


А не надо ничего делать случайно.
Re[4]: потыкать разработчика мордой в монитор
От: ononim  
Дата: 30.07.13 08:31
Оценка:
O>>Вобщем можно найти тыщу дел, которые делать, пока я тайпаю урл, и уж точно рендеринг хоумпейджа и исполнение скриптов с него — это явно не то что мне надо в этот момент.
S>"Замораживание" страницы будет большой неожиданностью для тех, кто просто открыл браузер, нечаянно что-то там тайпнул в адрес баре, и сидит ждёт, пока откроется его mail.ru.
Нечаянный тайпов в адрес баре — один на сто специальных тайпов, так что отмазка негодная.

S>Я в качестве homepage ставлю about:blank либо about:tabs, чего и вам желаю.

Это была vmware со спец окружением, которую прислали с другой стороны Земли. Впрочем опять же — не отмазка. Если есть функционал — его надо реализовать так, чтобы он был прежде всего _удобен_.
Как много веселых ребят, и все делают велосипед...
Re[4]: потыкать разработчика мордой в монитор
От: ononim  
Дата: 30.07.13 08:50
Оценка:
O>> Возникло непреодолимое желание найти индуса который делал код
O>> Но может вдруг ктонить из них прочитает этот пост на РСДН, проникнется (или испугается что его потыкают мордой в монитор) и таки возьмется это пофиксить
A>Индусы читают RSDN?
Кстати по поводу индусов.. Недавно дебажил софтину, как водицца без символов и исходников, софтина от IBM, вытворяла такие вещи на уровне системного API, что я был уверен, что ее писала бригада индусов, знающая, что через месяц их всех сократят и отправят ближайшим самолетом прямо в Бомбей. И вдруг я увидел в коде функцию под названием IsRussianWindows(), которая в случае русской винды меняет поведение их внутреннего аллокатора на дебажное.
Если кто либо из читающих это сообщение узнал свой собственный код — передаю пламенный превед и сообщаю, что вы тоже являетесь частью Вселенной быдлокодером.
Как много веселых ребят, и все делают велосипед...
Re: потыкать разработчика мордой в монитор
От: RonWilson Россия  
Дата: 30.07.13 09:40
Оценка:
Здравствуйте, ononim, Вы писали:

мне вот другое интересно в этом IE — почему если его запустить и, пока он тупит, нажать кнопку Tools то там задисаблены пункты Internet Options и еще какие-то? Зачем это сделано?
Re[5]: потыкать разработчика мордой в монитор
От: Pzz Россия https://github.com/alexpevzner
Дата: 30.07.13 10:37
Оценка:
Здравствуйте, iLikeCookies, Вы писали:

LC>Категорически не согласен. Есть печальный опыт, много лет назад, когда я работал в одной компании мы как раз пытались сделать такую штуковину. Вроде бы идеальная картинка, заказчики сами себе рисуют UI кидая контролы на форму и получают идеальную и под себя интерфейс, полностью кастомизируя продукт под себя. А также, мы разгружаем программистов от бесполезного формошлепства и даем это дело делать профессионалам, специальным дизайнерам. Собственно автором этого движка, контролов и редактора UI был я, главный формошлепщик


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

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

LC>Вообще, вся проблема как мне кажется в правильном организации взаимодействия дизайнер — программист. Для нас тогда идеальным оказался вариант дизайнер рисующий формы в фотошопе, отдающий проджект менеджеру на утверждение, который в свою очередь аппрувит ее и выдает программистам в качестве приложения к ТЗ. В случае, когда дизайнер рисует UI сам, то у него возникает много вопросов, постоянно бегает к программистам отвлекая их от работы, например, он может не знать к каким именно данным модели забиндить эти контролы, а это знает только программист. Чтобы это знал и дизайнер, программисту нужно каждый раз отвлекаясь отвечать дизайнеру или писать спеку на каждый чих. Что является явными издержками производства. Выгоднее оказалось иметь full stack программистов.


А зачем дизайнеру вообще знать такое слово, как "забиндить контролы к данным модели"?

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

LC>ЗЫЫ: на данный момент моя компания занимается разработкой приложений по схеме: web service + mobile client + web client, и удивительно, что и здесь как мне кажется выгоднее использовать full stack программистов, не разделяя их на front-end, back-end и mobile.


У программистов мозги по другому устроены, чем у нормальных людей. Поэтому пользовательский интерфейс, придуманный программистом, редко бывает удобным. Впрочем, пользователи, похоже, уже привыкли и смирились.
Re[2]: потыкать разработчика мордой в монитор
От: maxkar  
Дата: 30.07.13 15:35
Оценка: +2
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, ononim, Вы писали:


O>>Вот из последнего, что сподвигло меня написать этот пост — открыл окошко IE в виртуалке, стал вводить URL, почти натайпал а он взял догрузился да и всунул в edit свой homepage, затерев длиннющий урл что я там уже впечатал.


S>Представьте себе, что вы идёте на сайт вашего банка, который был за XSS-ен при помощи хитрого урла. В начале процесса вы посмотрели на то, что адрес начинается с корректного домена, и пошли себе набирать адрес в адресной строке. Тем временем сайт загрузился, зловредный скрипт отработал и средиректил вас на страницу логина, которая выглядит точно так же. Поскольку вы ещё не нажали Enter, отправив браузер по новому адресу, браузер находится в неустойчивом состоянии — в address bar набрано [http://rsdn.r|], а внизу — страничка с логином в "интернет банк". У вас всё ещё есть шанс передумать, и начать логиниться.


Ну тогда это очень плохо реализованная защита.
Представьте себе, что фишинг-сайт загрузился не полностью (вот он из принципа не отдает последние 4Кб странички). А браузер страничку уже начал рендерить. Поэтому внутри 'фишинговой страницы' можно и кликнуть. Или пользователь загрузил себе фишинговый сайт, понял, что это не то. Начал вводить правильный адрес в адресную строку, ввел полностью и отвлекся. Ну там в аську ушел или еще куда-то. В результате в адрес-баре правильный url, а сайт — неправильный.

S>Именно против этого экзотического сценария и направлено вот это вот "вредительское" поведение браузера.


Если уж делать, то делать нужно консистентно:
1. При отсутствии фокуса в адресной строке там всегда выводить текущий адрес страницы. Соответственно, при потере фокуса все введенное сбрасывается.
2. Если пользователь начал что-то вводить, это "убирать" в процессе ввода нельзя. Никогда. Вот когда приложение потеряет фокус, можно делать все, что угодно.
3. Проблему с догрузкой и прочим нужно решать не блокировкой. Нужно запрещать действия, если в URL-бар что-то введено. Т.е. первый клик мышкой на странице в этом случае рисует какую-нибудь анимашку в направлении адресой строки, мигает 10 раз этой строкой и противно пищит спикером. А уже второй клик на странице позволяет выполнить на ней нужное действие.

Вообще, если делать пункт 3, пункт 1 не нужен/не обязателен (иногда полезно терять фокус, чтобы в адресную строку что-нибудь докопировать).
Re[4]: потыкать разработчика мордой в монитор
От: maxkar  
Дата: 30.07.13 15:46
Оценка: +1
Здравствуйте, Pzz, Вы писали:

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


А вы тоже смешиваете двух разных человек. У гуманитариев обычно очень тяжело с понятием "состояния программы". Ну вот не понимают это (даже в неформальном виде). Экранами — мыслят. Состоянием — нет. Поэтому дизайн гуманитариев очень часто бывает неполным (т.е. не понятно, что в разных условиях происходит). Они действительно могут мыслить в основном в терминах действий. И это на самомд деле плохо. Поэтому если пользователь сделал A, B и C, на экране отображается одно. А если пользователь сделал B, C и A (с тем же общим результатом), на экране может отображаться совсем другое. И логичного объяснения этому нет.

Вот описанием поведения интерфейса и выводимой информации (с расписанными акцентами и т.п.) должен заниматься скорее технический человек. Что-то ближе к аналитикам (но с пониманием, для чего делаются интерфейсы и вообще в UI). Затем это описание дается дизайнеру (гуманитарию). Там в общих чертах расписано, что и как выводится ("это нужно выделить, это — имеет небольшой приоритет"). Может быть, аниматору. Они уже пытаются нарисовать дизайн. А потом все итеративно доводится до состояния (иногда не ложится что-то в интерфейс и нужно это куда-нибудь перетащить, за отдельное окошко/клик и т.п.). Потом уже отдается кодеру.

Это можно делить на трех человек. Можно не делить. Зависит от команды. Я вот красиво рисовать не умею. Совсем. Мне художник необходим. А вот в совмещении кодирования с описанием и формализацией поведения UI я ничего плохого не вижу. В любом случае, программисту нужно представлять, что и для чего делается в интерфейсах, а не просто "кодировать дизайн".
Re[3]: потыкать разработчика мордой в монитор
От: VladFein США  
Дата: 30.07.13 15:59
Оценка: +1
Здравствуйте, maxkar, Вы писали:

M>Если уж делать, то делать нужно консистентно...


Эту проблему можно было бы решить двумя целевыми контролами:
1. Куда Вы хотите пойти
2. Где Вы находитесь (read-only)

Учитывая современную тенденцию "перегрузки" контролов (address bar / search bar combo), я этого не ожидаю.
Re[6]: потыкать разработчика мордой в монитор
От: ononim  
Дата: 30.07.13 18:59
Оценка: +1
Pzz>Мой пойнт заключается в том, что дизайн пользовательского интерфейса, и, собственно, программирование — это разные профессии, и они редко удачно совмещаются в одном человеке. А вовсе не в том, что заказчик должен сам для себя формочки рисовать. Он же тупой, и сам не знает, чего хочет.

Фигня в том что дизайн пользовательского интерфейса обычно не включает в себя такие вещи как переключение фокуса. Дизайнер вам нарисует формочки, программист их реализует, ну а то что при показывании эти формочки скажем 10 раз стырят фокус у текстового редактора, затем передернут системное разрешение и трижды кукарекнут в динамики — это "особенности реализации" которые с одной стороны дизайнером никак не учитываются, а программист на них кладет болт. Для UI нужен совершенно иной специалист, не классический программист, и не классический, а специалист именно по UI, причем идеальный такой специалист — это ИМХО сам пользователь, но беда в том что дикий юзер не умеет формализовать да и осознавать свои желания, ему в помощь нужен профессиональный формализатор, причем не такой, который будет говорить что смена фокуса на ровном месте фигня и даже фича, а который понимает что это очень важная проблема, стоящая того чтобы переписать всю при необходимости архитектуру приложения нафиг, и умеющий довести это до технарей. Т.е. должна быть система както такая:
     Пул диких юзеров (альфа тестеры) 
              |             |
              |             |
              V             V
      Специалист            Специалист по
     по UI дизайну     функционалу (техсуппорт)
        ^       ^      ^          ^
        |        \   /            |
        |         QA              |
        |          |              |
        V          V              V
      R&D (ПМ, архитект и остальная шобла, знающая чем ++i отличается от i++)
Как много веселых ребят, и все делают велосипед...
Re: потыкать разработчика мордой в монитор
От: Gorbatich  
Дата: 31.07.13 08:29
Оценка: -1
Здравствуйте, ononim, Вы писали:

O>Вот из последнего, что сподвигло меня написать этот пост — открыл окошко IE в виртуалке, стал вводить URL, почти натайпал а он взял догрузился да и всунул в edit свой homepage, затерев длиннющий урл что я там уже впечатал.

O>Возникло непреодолимое желание найти индуса который делал код, который навигейтит в хоумпейж да и потыкать его в edit бокс как нашкодившего кота, приговаривая "кто это сделал? ну кто это сделал?..."
O>Фух, высказался.
O>Господа быдлокодеры, быдлоархитекторы, быдло-ui-дизайнеры. Пожалуйста, смените работу, а?..

У меня все работает.
Re[2]: потыкать разработчика мордой в монитор
От: omgOnoz  
Дата: 31.07.13 09:02
Оценка:
Вообще-то тупит любой браузер на старте.
Re[3]: потыкать разработчика мордой в монитор
От: RonWilson Россия  
Дата: 31.07.13 09:03
Оценка:
Здравствуйте, omgOnoz, Вы писали:

O>Вообще-то тупит любой браузер на старте.


так ладно тупит, но зачем он делает недоступными пункты меню? или там какая-то страшная привязка меню к еще не загрузившимся частям? судя по сырцам ничего такого там нет, но меню все равно ведет себя странно
Re[4]: потыкать разработчика мордой в монитор
От: omgOnoz  
Дата: 31.07.13 09:47
Оценка:
RW>так ладно тупит, но зачем он делает недоступными пункты меню? или там какая-то страшная привязка меню к еще не загрузившимся частям? судя по сырцам ничего такого там нет, но меню все равно ведет себя странно
Может приложение не до конца проинициализировать, и в таком состоянии приложения — смысла в меню нет
Re[5]: потыкать разработчика мордой в монитор
От: RonWilson Россия  
Дата: 31.07.13 09:49
Оценка:
Здравствуйте, omgOnoz, Вы писали:

RW>>так ладно тупит, но зачем он делает недоступными пункты меню? или там какая-то страшная привязка меню к еще не загрузившимся частям? судя по сырцам ничего такого там нет, но меню все равно ведет себя странно

O>Может приложение не до конца проинициализировать, и в таком состоянии приложения — смысла в меню нет

но пункт меню настройки по сути вызывает cpl панели управления по настройки IE логика тогда вообще непонятна
Re[6]: потыкать разработчика мордой в монитор
От: omgOnoz  
Дата: 31.07.13 10:03
Оценка:
RW>но пункт меню настройки по сути вызывает cpl панели управления по настройки IE логика тогда вообще непонятна
Как приложение инициализируеться, если во время его загрузки будут менять настройки?
А ты можешь запустить cpl IE когда IE стартует?
Re[7]: потыкать разработчика мордой в монитор
От: RonWilson Россия  
Дата: 31.07.13 10:05
Оценка:
Здравствуйте, omgOnoz, Вы писали:

RW>>но пункт меню настройки по сути вызывает cpl панели управления по настройки IE логика тогда вообще непонятна

O>Как приложение инициализируеться, если во время его загрузки будут менять настройки?
O>А ты можешь запустить cpl IE когда IE стартует?

это некислую такую скорость надо иметь владения мышкой чтобы успеть запусть cpl и залезть в меню IE, так что не вариант. тем более, ну что такого? ну меняет он настройки, он что успел то и взял
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.