Comments 31
> И если таких элементов более одного — домен валиден.
Неверное утверждение. Во-первых, сервис может крутиться в локальной сети. test@local или что-то вроде.
Во-вторых — вспоминается приватная сокращалка урлов, висевшая на домене http://to.. Вполне может быть, что там висит и e-mail.
Неверное утверждение. Во-первых, сервис может крутиться в локальной сети. test@local или что-то вроде.
Во-вторых — вспоминается приватная сокращалка урлов, висевшая на домене http://to.. Вполне может быть, что там висит и e-mail.
+3
Во первых, мы же не будем отправлять почту на test@local? да и для этого есть lvh.me
Во вторых… а приведите пожалуйста пример.
Во вторых… а приведите пожалуйста пример.
0
Разработчики библиотеки agsxmpp и пары irc-клиентов тоже так думали.
Про сокращатель ссылкок на to. была статья на хабре, после чего его приватным и сделали.
Примера не приведу, нет времени гуглить, да и не уверен, что найду. Но гипотетически это возможно )
К тому же ICANN начала выдавать доменные имена частным компаниям. Ждите пользователей с доменом типа @canon.
Вообще — статья, хм, важная в этом вопросе, кто-то не будет писать лишний костыль в ненужном месте. Но вот само утверждение — вводит в заблуждение.
Про сокращатель ссылкок на to. была статья на хабре, после чего его приватным и сделали.
Примера не приведу, нет времени гуглить, да и не уверен, что найду. Но гипотетически это возможно )
К тому же ICANN начала выдавать доменные имена частным компаниям. Ждите пользователей с доменом типа @canon.
Вообще — статья, хм, важная в этом вопросе, кто-то не будет писать лишний костыль в ненужном месте. Но вот само утверждение — вводит в заблуждение.
+2
# ловим исключение, если в адресе русские или китайские символы
http://例え.テスト/ (японский, а не китайский, но, думаю, парсеру пофиг)
пример.испытание/
и т.д.
+2
Недавно тут пробегал перевод одной статьи, вывод в которой мне очень понравился: «Просто пошлите пользователю письмо». habrahabr.ru/post/175375/
Это позволит не только проверить валидность e-mail, но также чудесным образом проверит принадлежность e-mail конкретному пользователю.
Это позволит не только проверить валидность e-mail, но также чудесным образом проверит принадлежность e-mail конкретному пользователю.
+4
Не поддерживается 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>'
0
Gmail тоже не считает этот адрес верным. Уже принят стандарт на адреса электронной почты с кириллицей?
0
1-й показатель валидности: в адресе есть ровно одна @
2-й показатель валидности: пользователь нажал на ссылку в пришедшем письме
Зачем что-то большее?
2-й показатель валидности: пользователь нажал на ссылку в пришедшем письме
Зачем что-то большее?
+1
Затем, что не нужно выделять ресурсы на формирование и отправку письма на несуществующий адрес. Не нужно обрабатывать исключения кидаемые почтовым клиентом при отправке писем на инвалидные адреса.
0
В адрес может быть больше одного символа @. Читайте RFC.
+3
Предлагаю использовать для логина только email.
Вот там как раз неподалеку была статья про SOPPA, которая как раз запрещает так делать, если нет гарантии, что пользователю есть 13 лет :)
0
У нас тут синтаксическое дерево, природа и свойства которого, для меня, чуть менее чем полностью непостижимы. Знаю только то, что синтаксическое дерево, в отличии от регекспа не рекурсивно по своей природе.Лажа, АСТ в общем случае рекурсивно, но может быть нерекурсивно в частных случаях.
-1
Это же дерево не граф, обработка дерева может быть рекурсивной, а не само дерево.
0
AST — это дерево. Дерево можно определить так: Tree a = Empty | Node a (Tree a) (Tree a). И где оно нерекурсивно?
0
А что означает эта ваша запись?
AST — конечное, помеченное, ориентированное дерево
Дерево — это связный ациклический граф. Связность означает наличие путей между любой парой вершин, ацикличность — отсутствие циклов и то, что между парами вершин имеется только по одному пути.
В википедии неправильно?
А так я конечно могу ссылок намешать так что ацикличность сохраняться не будет. Но тогда эта утка перестанет крякать.
AST — конечное, помеченное, ориентированное дерево
Дерево — это связный ациклический граф. Связность означает наличие путей между любой парой вершин, ацикличность — отсутствие циклов и то, что между парами вершин имеется только по одному пути.
В википедии неправильно?
А так я конечно могу ссылок намешать так что ацикличность сохраняться не будет. Но тогда эта утка перестанет крякать.
+1
А что означает эта ваша запись?Простое определение бинарного дерева. Читать: дерево вершин типа
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 на её основе тоже будет таковым.
0
Я, простите, не все понял из ваших примеров. Буду следовать википедиевскому заблуждению: для моего дерева между вершинами только один путь, иначе я перестаю с таким деревом работать как с деревом. С деревьями я привык работать без рекурсий. Ваш пример Graph { a->b, a->c, b->d, c->d } я деревом не считаю, в случае с множественными родителями я теряю приемы и алгоритмы нерекурсивной обработки деревьев: nested sets например.
-1
Ваш пример Graph { a->b, a->c, b->d, c->d } я деревом не считаювы до слов «является DAG, но не является деревом» дочитали или нет?
Смысла спорить не вижу, вы не читаете ответы. За сим откланиваюсь.
0
Sign up to leave a comment.
Ruby: про email вообще и ради валидации без регекспов, в частности