Comments 31
> И если таких элементов более одного — домен валиден.
Неверное утверждение. Во-первых, сервис может крутиться в локальной сети. test@local или что-то вроде.
Во-вторых — вспоминается приватная сокращалка урлов, висевшая на домене http://to.. Вполне может быть, что там висит и e-mail.
Неверное утверждение. Во-первых, сервис может крутиться в локальной сети. test@local или что-то вроде.
Во-вторых — вспоминается приватная сокращалка урлов, висевшая на домене http://to.. Вполне может быть, что там висит и e-mail.
Во первых, мы же не будем отправлять почту на test@local? да и для этого есть lvh.me
Во вторых… а приведите пожалуйста пример.
Во вторых… а приведите пожалуйста пример.
Разработчики библиотеки agsxmpp и пары irc-клиентов тоже так думали.
Про сокращатель ссылкок на to. была статья на хабре, после чего его приватным и сделали.
Примера не приведу, нет времени гуглить, да и не уверен, что найду. Но гипотетически это возможно )
К тому же ICANN начала выдавать доменные имена частным компаниям. Ждите пользователей с доменом типа @canon.
Вообще — статья, хм, важная в этом вопросе, кто-то не будет писать лишний костыль в ненужном месте. Но вот само утверждение — вводит в заблуждение.
Про сокращатель ссылкок на to. была статья на хабре, после чего его приватным и сделали.
Примера не приведу, нет времени гуглить, да и не уверен, что найду. Но гипотетически это возможно )
К тому же ICANN начала выдавать доменные имена частным компаниям. Ждите пользователей с доменом типа @canon.
Вообще — статья, хм, важная в этом вопросе, кто-то не будет писать лишний костыль в ненужном месте. Но вот само утверждение — вводит в заблуждение.
# ловим исключение, если в адресе русские или китайские символы
http://例え.テスト/ (японский, а не китайский, но, думаю, парсеру пофиг)
пример.испытание/
и т.д.
Недавно тут пробегал перевод одной статьи, вывод в которой мне очень понравился: «Просто пошлите пользователю письмо». habrahabr.ru/post/175375/
Это позволит не только проверить валидность e-mail, но также чудесным образом проверит принадлежность e-mail конкретному пользователю.
Это позволит не только проверить валидность e-mail, но также чудесным образом проверит принадлежность e-mail конкретному пользователю.
Не поддерживается IDN.
1.rb:
1.rb:
# -*- encoding : utf-8 -*-
require 'mail'
Mail::Address.new('info@регистратор.рф')
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/mail-2.5.4/lib/mail/elements/address_list.rb:29:in `initialize': Mail::AddressListsParser can not parse |info@регистратор.рф| (Mail::Field::ParseError) Reason was: Expected one of , (, !, #, $, %, &, ', *, +, -, /, =, ?, ^, _, `, {, |, }, ~, ", ., @, :, <, [ at line 1, column 6 (byte 6) after @ from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/mail-2.5.4/lib/mail/elements/address.rb:181:in `new' from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/mail-2.5.4/lib/mail/elements/address.rb:181:in `parse' from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/mail-2.5.4/lib/mail/elements/address.rb:32:in `initialize' from 1.rb:5:in `new' from 1.rb:5:in `<main>'
Gmail тоже не считает этот адрес верным. Уже принят стандарт на адреса электронной почты с кириллицей?
1-й показатель валидности: в адресе есть ровно одна @
2-й показатель валидности: пользователь нажал на ссылку в пришедшем письме
Зачем что-то большее?
2-й показатель валидности: пользователь нажал на ссылку в пришедшем письме
Зачем что-то большее?
Затем, что не нужно выделять ресурсы на формирование и отправку письма на несуществующий адрес. Не нужно обрабатывать исключения кидаемые почтовым клиентом при отправке писем на инвалидные адреса.
В адрес может быть больше одного символа @. Читайте RFC.
Предлагаю использовать для логина только email.
Вот там как раз неподалеку была статья про SOPPA, которая как раз запрещает так делать, если нет гарантии, что пользователю есть 13 лет :)
У нас тут синтаксическое дерево, природа и свойства которого, для меня, чуть менее чем полностью непостижимы. Знаю только то, что синтаксическое дерево, в отличии от регекспа не рекурсивно по своей природе.Лажа, АСТ в общем случае рекурсивно, но может быть нерекурсивно в частных случаях.
Это же дерево не граф, обработка дерева может быть рекурсивной, а не само дерево.
AST — это дерево. Дерево можно определить так: Tree a = Empty | Node a (Tree a) (Tree a). И где оно нерекурсивно?
А что означает эта ваша запись?
AST — конечное, помеченное, ориентированное дерево
Дерево — это связный ациклический граф. Связность означает наличие путей между любой парой вершин, ацикличность — отсутствие циклов и то, что между парами вершин имеется только по одному пути.
В википедии неправильно?
А так я конечно могу ссылок намешать так что ацикличность сохраняться не будет. Но тогда эта утка перестанет крякать.
AST — конечное, помеченное, ориентированное дерево
Дерево — это связный ациклический граф. Связность означает наличие путей между любой парой вершин, ацикличность — отсутствие циклов и то, что между парами вершин имеется только по одному пути.
В википедии неправильно?
А так я конечно могу ссылок намешать так что ацикличность сохраняться не будет. Но тогда эта утка перестанет крякать.
А что означает эта ваша запись?Простое определение бинарного дерева. Читать: дерево вершин типа
a
— пустое дерево либо вершина, содержащая значение типа a
и два дерева типа a
Дерево — это связный ациклический граф.Да, и?
Связность означает наличие путей между любой парой вершин, ацикличность — отсутствие циклов и то, что между парами вершин имеется только по одному пути.Нет. Ацикличность — отсутствие циклов, она не запрещает наличия более одного пути между вершинами.
Graph { a->b, a->c, b->d, c->d }
является DAG, но не является деревом.В википедии неправильно?Запросто.
Вернёмся к AST, возьмём какую-нибудь нетривиальную грамматику (например, порождаемую rfc2822):
ccontent = ctext / quoted-pair / comment
comment = "(" *([FWS] ccontent) [FWS] ")"
Очевидно, что данная грамматика рекурсивна, и AST на её основе тоже будет таковым.
Я, простите, не все понял из ваших примеров. Буду следовать википедиевскому заблуждению: для моего дерева между вершинами только один путь, иначе я перестаю с таким деревом работать как с деревом. С деревьями я привык работать без рекурсий. Ваш пример Graph { a->b, a->c, b->d, c->d } я деревом не считаю, в случае с множественными родителями я теряю приемы и алгоритмы нерекурсивной обработки деревьев: nested sets например.
Ваш пример Graph { a->b, a->c, b->d, c->d } я деревом не считаювы до слов «является DAG, но не является деревом» дочитали или нет?
Смысла спорить не вижу, вы не читаете ответы. За сим откланиваюсь.
Sign up to leave a comment.
Ruby: про email вообще и ради валидации без регекспов, в частности