Не подскажете, где именно искать «у себя»? Проверил на двух ноутах в 3-х разных браузерах. Через 2-х провайдеров (мобильный билайн и местный проводной).
> Но не лучше ли быть спецом в своей области, зарабатывать на этом хорошие деньги и платить всем профессиональным строителям, собирателям табуреток, крановщикам и драконоводам за их работу?
Лучше, конечно, быть спецом в своей области.
Но блин, вы не представляете, до чего же интересно и захватывающе управлять башенным краном и укрощать драконов.
А хватит ли 4.5 вольт для раскачки контроллера зарядки в телефоне? Темболее, что при разрядке батареек напряжение падает.
Нужно 4 батарейки + простейший стабилизатор напряжения.
> Например, в вашем случае добавил бы функцию безопасной проверки наличия права на авторизацию, по которой давал бы пользователю доступ собственно к команде «Авторизовать».
Следует заметить, что во-первых, пример был взят исключительно, что называется, с потолка.
И во-вторых — мысль была такая —
— Есть id некоего пользователя.
— Проверить, имеет ли этот пользователь доступ к неким «продвинутым» фичам.
— Если имеет — авторизовываем в вызвавшей подсистеме.
Авторизация — это собственно и есть способ получить данные пользователя, проверить их валидность и определить что пользователь может а что не может.
Ну и в третьих — это имеет весьма косвенное отношение к обсуждаемому вопросу.
Собственно, тут можно обойтись и без исключений, с обычными кодами возврата. Но это, на мой взгляд не так удобно.
Имхо, сбой — это нештатная ситуация. Деление на ноль, ошибка преобразования строки в число, ошибка соединения клиентской части с серверной, итд.
В данном случае отбой при недостатке прав — это ожидаемая, штатная ситуация.
public Person authPerson(int id) throws NoSuchPersonException {
Person person = new Person(id); // бросаем NoSuchPersonException если пользователя с таким id нет
person.applySomeRulesOrSomething();
return person.auth();
}
Возвращаем объект Person если все ОК, и null если не прошла авторизация (в т.ч. у пользователя не хватает пермишенов).
Врядли это можно назвать сбоем, а вот исключительной ситуацией — вполне.
У меня VX nano уже года 4 живет, и все ОК, только лак немного облез со средней кнопки. Батареек (ААА) хватает при активном использовании где-то на 2-3 месяца.
> Помните ироническое высказывание о том, что в вашем кармане компьютер, который во много раз мощнее бортового компьютера управлявшего ракетой Гагарина?
Если мне не изменяет память, ВУ на порядки слабее тех, что сейчас используются в обычных телефонах, в свое время управляли группой спутников и полетами на Луну.
А в «ракете Гагарина» не было компьютера насколько я помню. Они тогда были очень большими, теплыми и ламповыми.
А, вот теперь понятно. А если попробовать внутри JSNI метода определить JS функцию (которую и вызывать извне) и в ней сделать вызов this.@com.google.gwt.examples.JSNIExample::myInstanceField?
Ну того что мне смогло потребоваться JSNI вполне смогло сделать.
> повесить онклик на картинку, которую перехватит GWT
Т.е. у вас есть где-то картинка, на onClick на которую вам нужно перехватить? И хандлер в JSNI-методе не срабатывал? Или в чем была проблема?
> Основные (HorizontalPanel, VerticalPanel, FlexTable, Grid) — верстают таблично
Почему вы думаете что это основные? Основные — это SimplePanel например, состоящая из 1-го div'а.
Другое дело, что проще и быстрее использовать Grid/etc.
> UI Binder при этом ну совсем никак не помогает.
Поверьте мне, это вполне удобная и полезная штука. На личном опыте ощутил.
speedtest.net рухнул под натиском хабраэффекта :(
Уже минут 10 пытается открыть себя в браузере.
Лучше, конечно, быть спецом в своей области.
Но блин, вы не представляете, до чего же интересно и захватывающе управлять башенным краном и укрощать драконов.
Нужно 4 батарейки + простейший стабилизатор напряжения.
Следует заметить, что во-первых, пример был взят исключительно, что называется, с потолка.
И во-вторых — мысль была такая —
— Есть id некоего пользователя.
— Проверить, имеет ли этот пользователь доступ к неким «продвинутым» фичам.
— Если имеет — авторизовываем в вызвавшей подсистеме.
Авторизация — это собственно и есть способ получить данные пользователя, проверить их валидность и определить что пользователь может а что не может.
Ну и в третьих — это имеет весьма косвенное отношение к обсуждаемому вопросу.
Собственно, тут можно обойтись и без исключений, с обычными кодами возврата. Но это, на мой взгляд не так удобно.
В данном случае отбой при недостатке прав — это ожидаемая, штатная ситуация.
public Person authPerson(int id) throws NoSuchPersonException {
Person person = new Person(id); // бросаем NoSuchPersonException если пользователя с таким id нет
person.applySomeRulesOrSomething();
return person.auth();
}
Возвращаем объект Person если все ОК, и null если не прошла авторизация (в т.ч. у пользователя не хватает пермишенов).
Врядли это можно назвать сбоем, а вот исключительной ситуацией — вполне.
Там есть замечательные примеры с пробросом исключений.
> 2 — оно как бы не совсем про ООП.
Оно легко адаптируется к использованию с ООП. Не нашел толкового примера на C++, но думаю мысль и из этого понятна.
Не всегда и не везде:
today.java.net/article/2006/04/04/exception-handling-antipatterns#antipatterns
stackoverflow.com/questions/2870701/risking-the-exception-anti-pattern-with-some-modifications
www.rockstarprogrammer.org/post/2007/jun/09/java-exception-antipatterns/
etc
> Кстати, мне сказали, что исключения тормозят систему…
В целом, они отрабатывают медленнее. Но, стоит ли гнаться за этими миллисекундами, если bottleneck в другом месте?
Было бы неплохо имхо.
О, спасибо, не знал этого.
Если мне не изменяет память, ВУ на порядки слабее тех, что сейчас используются в обычных телефонах, в свое время управляли группой спутников и полетами на Луну.
А в «ракете Гагарина» не было компьютера насколько я помню. Они тогда были очень большими, теплыми и ламповыми.
Ну того что мне смогло потребоваться JSNI вполне смогло сделать.
> повесить онклик на картинку, которую перехватит GWT
Т.е. у вас есть где-то картинка, на onClick на которую вам нужно перехватить? И хандлер в JSNI-методе не срабатывал? Или в чем была проблема?
> Основные (HorizontalPanel, VerticalPanel, FlexTable, Grid) — верстают таблично
Почему вы думаете что это основные? Основные — это SimplePanel например, состоящая из 1-го div'а.
Другое дело, что проще и быстрее использовать Grid/etc.
> UI Binder при этом ну совсем никак не помогает.
Поверьте мне, это вполне удобная и полезная штука. На личном опыте ощутил.
> «Можете написать свои» это бугога.
Да какие «бугога», это не так уж и сложно.
Четкое следование паттерну MVC/MVP, выделение view в отдельный класс + UiBinder творят чудеса.