> Состоять из двух частей, разделённых символом “@”.
> Левая часть должна состоять из английских букв или цифр, может содержать точки и тире, притом после точки или тире обязательно должна следовать как минимум одна буква.
> Правая часть должна содержать хотя бы одну точку в конце, после которой должны следовать от двух до четырёх букв.
> Начинаться обе части должны с буквенных символов.
Вы неправы во всех четырёх пунктах:
— В адресе может быть больше одной '@', хотя да, одна из собак делит адрес на две логические части
— Левая часть может содержать практически любые символы, а так же пользующиеся популярностью теги, идущие после знака "+".
— Правая часть, фактически, это что угодно, к чему возможно зарезовить путь средствами днс или обратиться напрямую
— справа может оказаться ip-адрес, в том числе и ipv6
Вот вам корректный адрес:: «correct\»@ddress"@localhost
Фактически, вы можете быть уверенны только в том, что в email-адресе есть хотя бы одна '@'.
Зато как «Сжхесив» — пожалуйста. В определённый момент мозг бунтует и отказывается воспринимать символы.
Тут это даже сильнее выражено, чем в оригинале.
Я бы на вашем месте всё таки отказался от сочетаний hh и jh. Возможно всё таки в пользу применения апострофа.
hh и jh выглядят слишком синтетическими, а учитывая, что «h» — это суффикс — распознавание сочетания человеком сильно усложняется.
Не согласен. Транслитеризации пишут все, кому не лень, но это первая обратимая среди мной встреченных. Даже используемая для пластиковых карт не однозначна при обратном преобразовании.
До лично моего полного счастья остались:
— fit to screen
— выделение ссылок
— переход по элементам форм (а не по ссылкам) по табу
— система блокировки элементов а-ля 12я Опера
Багрепорт:
Сегодня прилетело обновление для браузера, которое зачем-то без вопросов подцепило расширения из хромиума.
При попытке *удалить* расширение без отключения — Vivaldi работает форк-бомбой. После — только резет системы, так как терминал уже не запустился.
При 1й попытке *отключить* расширение — Vivaldi повёл себя аналогично.
2й попытки не состоялось, потому что теперь Vivaldi нельзя запустить совсем — он начинает спамить процессами сразу после старта.
Зря вы этот вопрос совсем обошли.
И в любом случае, если вы создаёте дизайн приложения с нуля, и придерживаетесь «плоского» стиля — вектор именно то, что нужно.
А то меня тут уже просили вставить «x2 пиксельперфект» вектор…
Честно говоря, в код особо не вникал, возможно потому вас неверно понял. Теперь, кажется, понял :)
В принципе, основная проблема изкоробочного KVO в obj-c, на мой взгляд, — это «божественный метод», который уведомляется о всех изменениях в слушателей: observeValueForKeyPath. Эта проблема — причина которой я и не использую KVO.
Насколько я понял автора — это попытка решать эту проблему. Объект, который перенаправляет уведомления KVO в соответствующие им селекторы. В принципе, хуже не стало. На счёт лучше… Тоже не уверен. Вообще, можно реализовать это гораздо прозрачнее.
Например модель, отвечающая за авторизацию:
Её могут слушать как и контроллер чего-нибудь интерфейсного, так и другая модель.
Или же состояние сети. Аналогично, его могут слушать как и модели, чтобы сделать запрос к сети, когда появится доступ, так и контроллер, чтобы показать пользователю надпись, «извините, нет соединения с интернет»
Правда, я реализую это вещи по другому, но как пример — сгодятся.
Интернет — это чаще всего Reachibility, использующий NSNotificationCenter, а авторизация (как и прочие модели) — «множественные» делегаты.
> Потому-что множество хранит сильные ссылки.
Если очень хочется использовать NSSet/NSDictionary/NSArray — можно обернуть объект в NSValue:
[NSValue valueWithNonretainedObject:]
Вот сейчас ведь убедите: специально съезжу за старым модемом Flyer u12 и проверю как именно определится это совместное творение российских и китайских сумрачных гениев. Как модем или как мышь ;)
Вы сейчас наступаете на любимые грабли Opera Software:
Помимо конкретной проблемы у 0.(0)1% пользователей есть ещё и 1(0)0 разных проблем.
Не поймите неправильно, я не противник linux, но когда с решаешь одну проблему только для того, чтобы сразу же получить следующую — несколько раздражаешься.
> Левая часть должна состоять из английских букв или цифр, может содержать точки и тире, притом после точки или тире обязательно должна следовать как минимум одна буква.
> Правая часть должна содержать хотя бы одну точку в конце, после которой должны следовать от двух до четырёх букв.
> Начинаться обе части должны с буквенных символов.
Вы неправы во всех четырёх пунктах:
— В адресе может быть больше одной '@', хотя да, одна из собак делит адрес на две логические части
— Левая часть может содержать практически любые символы, а так же пользующиеся популярностью теги, идущие после знака "+".
— Правая часть, фактически, это что угодно, к чему возможно зарезовить путь средствами днс или обратиться напрямую
— справа может оказаться ip-адрес, в том числе и ipv6
Вот вам корректный адрес:: «correct\»@ddress"@localhost
Фактически, вы можете быть уверенны только в том, что в email-адресе есть хотя бы одна '@'.
Не отождествляю это название с сущностью.
Впрочем, для апострофа можно так же символ ввести… 'h Или 'h использовать для твёрдого знака
Тут это даже сильнее выражено, чем в оригинале.
hh и jh выглядят слишком синтетическими, а учитывая, что «h» — это суффикс — распознавание сочетания человеком сильно усложняется.
Как вариант:
Ъ — '
Ь — j'
«Шшешйх… Шхешйх… А, съешйх!»
Очень неудачное сочетание символов.
Vivaldi 1.0.252.3 (Сборка для разработчиков) (64 бит)
Версия 2618a2e522f5bb9a7cfaab6078355c4556b18513
И ещё багрепорт:
Ссылки со страницы vivaldi://vivaldi-urls не открываются по клику
— fit to screen
— выделение ссылок
— переход по элементам форм (а не по ссылкам) по табу
— система блокировки элементов а-ля 12я Опера
Vivaldi 1.0.249.12 (Сборка для разработчиков) (64 бит)
Версия 98fcde442927c29ad0fedb2d4801966739154abb
Сразу после запуска попросил апдейт
Сегодня прилетело обновление для браузера, которое зачем-то без вопросов подцепило расширения из хромиума.
При попытке *удалить* расширение без отключения — Vivaldi работает форк-бомбой. После — только резет системы, так как терминал уже не запустился.
При 1й попытке *отключить* расширение — Vivaldi повёл себя аналогично.
2й попытки не состоялось, потому что теперь Vivaldi нельзя запустить совсем — он начинает спамить процессами сразу после старта.
Система: OS X Yosemite 10.10.4 (14E46)
И в любом случае, если вы создаёте дизайн приложения с нуля, и придерживаетесь «плоского» стиля — вектор именно то, что нужно.
А то меня тут уже просили вставить «x2 пиксельперфект» вектор…
В принципе, основная проблема изкоробочного KVO в obj-c, на мой взгляд, — это «божественный метод», который уведомляется о всех изменениях в слушателей: observeValueForKeyPath. Эта проблема — причина которой я и не использую KVO.
Насколько я понял автора — это попытка решать эту проблему. Объект, который перенаправляет уведомления KVO в соответствующие им селекторы. В принципе, хуже не стало. На счёт лучше… Тоже не уверен. Вообще, можно реализовать это гораздо прозрачнее.
Её могут слушать как и контроллер чего-нибудь интерфейсного, так и другая модель.
Или же состояние сети. Аналогично, его могут слушать как и модели, чтобы сделать запрос к сети, когда появится доступ, так и контроллер, чтобы показать пользователю надпись, «извините, нет соединения с интернет»
Правда, я реализую это вещи по другому, но как пример — сгодятся.
Интернет — это чаще всего Reachibility, использующий NSNotificationCenter, а авторизация (как и прочие модели) — «множественные» делегаты.
Если очень хочется использовать NSSet/NSDictionary/NSArray — можно обернуть объект в NSValue:
[NSValue valueWithNonretainedObject:]
Помимо конкретной проблемы у 0.(0)1% пользователей есть ещё и 1(0)0 разных проблем.
Не поймите неправильно, я не противник linux, но когда с решаешь одну проблему только для того, чтобы сразу же получить следующую — несколько раздражаешься.