Size: a a a

2020 January 15

SS

Supreme Spirit in Modern::Perl
ну все приходит в первый раз
источник

IB

Ivan Bessarabov in Modern::Perl
я бы предложил тебе эту штуку так писать чтобы если она сдохла посередине то это было бы не фатально. заново запустил — и она бы начала с того места где в прошлый раз закончила
источник

IB

Ivan Bessarabov in Modern::Perl
есть множество способов как это можно сделать
источник

VG

Vadim Goncharov in Modern::Perl
Supreme Spirit
так, а мега-огромные – эт сколько? и вообще, насколько безопасно писать в файл и в конце делать close. поясню – у меня пул из 10к строк (доменов), я по каждому домену делаю whois и пишу в файл.
да так же, как на любом другом языке
источник

VG

Vadim Goncharov in Modern::Perl
пропадет питание - дело буферов ОС
источник

IB

Ivan Bessarabov in Modern::Perl
Я бы, наверное, взял очередь https://metacpan.org/pod/Minion, подключил бы ее в sqlite базу, сделал бы задачку для очереди которая по домену узнает expire date и записывает его в базу (тоже в sqlite) ну и мелкий скрипт, который прошел бы по изначальному файлу и создал 10_000 задач в очереди. Ну и плюс скрипт проверки, который запускаешь когда все отработало, чтобы проверить что про все домены из изначального списка есть ответ.

Хотя 10_000 это очень немного. Может быть тут очередь и лишнее звено. Думаю что можно за два для все выкачать с одной машины — где-то половину за день, потом получаешь denied, а через 24 часа когда denied уберут можно и вторую половину докачать с этого же айпишника.

Наверное, я бы для такого количества с прокси бы изначально не заморачивался (хотя нужно лучше понимать задачу, чтобы точнее выдать ответ — это нужно сделать единоразово или эту работу нужно переодически повторять)

PS и наверняка есть сервис куда можно залить эти 10_000 доменов и за небольшую денежку он тут же выдаст все expire date.
источник

SS

Supreme Spirit in Modern::Perl
Ivan Bessarabov
Я бы, наверное, взял очередь https://metacpan.org/pod/Minion, подключил бы ее в sqlite базу, сделал бы задачку для очереди которая по домену узнает expire date и записывает его в базу (тоже в sqlite) ну и мелкий скрипт, который прошел бы по изначальному файлу и создал 10_000 задач в очереди. Ну и плюс скрипт проверки, который запускаешь когда все отработало, чтобы проверить что про все домены из изначального списка есть ответ.

Хотя 10_000 это очень немного. Может быть тут очередь и лишнее звено. Думаю что можно за два для все выкачать с одной машины — где-то половину за день, потом получаешь denied, а через 24 часа когда denied уберут можно и вторую половину докачать с этого же айпишника.

Наверное, я бы для такого количества с прокси бы изначально не заморачивался (хотя нужно лучше понимать задачу, чтобы точнее выдать ответ — это нужно сделать единоразово или эту работу нужно переодически повторять)

PS и наверняка есть сервис куда можно залить эти 10_000 доменов и за небольшую денежку он тут же выдаст все expire date.
да с прокси я погорячился, насколько помню по статьям, у некоторых хуиз сервисов 10к лимит в сутки, а у других он может быть на порядок больше.

по базе – звучит вполне сносно. потом из нее в csv просто экспортить и все.

а по сервисам – да нет ничего нормального, что бы удовлетворяло и не просило писать вот такие прикладные костыли
источник

IB

Ivan Bessarabov in Modern::Perl
Ну вот, например, чуваки — https://whois.whoisxmlapi.com/
50 долларов и 10_000 получил в распаршеном виде
https://whois.whoisxmlapi.com/pricing
источник

SS

Supreme Spirit in Modern::Perl
Дорого. Когда такой пул можно за день спарсить) или 300к доменов за месяц
источник

SS

Supreme Spirit in Modern::Perl
Там помимо данных с этих доменов, нужно будет ещё определённые проверки делать уже через платные сервисы, поэтому поднимать косты не в моих интересах
источник

AK

Andrey Konovalov in Modern::Perl
Интересно, что никакого адекватного способа передать в конструктор объекта не все параметры, указав тем самым не на то, что они undef, а на то, что "ну нет его, просто нет" - без создания хеша просто не существует.
Ибо единственный способ убедиться в факте "не существования" - это сделать exists($hsh->{key})
источник

AH

Anton Horodchuk in Modern::Perl
Andrey Konovalov
Интересно, что никакого адекватного способа передать в конструктор объекта не все параметры, указав тем самым не на то, что они undef, а на то, что "ну нет его, просто нет" - без создания хеша просто не существует.
Ибо единственный способ убедиться в факте "не существования" - это сделать exists($hsh->{key})
можно еще смотреть длину @_
источник

AK

Andrey Konovalov in Modern::Perl
Anton Horodchuk
можно еще смотреть длину @_
Да, верно, но работает только для 1 параметра
источник

AK

Andrey Konovalov in Modern::Perl
А так да, согласен, для частных случаев вполне решение
источник

AH

Anton Horodchuk in Modern::Perl
если поведение метода зависит от того, есть или нет некоторое количество параметров - мне это кажется проблемой дизайна
источник

AK

Andrey Karepin in Modern::Perl
Anton Horodchuk
можно еще смотреть длину @_
после того как разматаешь?
источник

AH

Anton Horodchuk in Modern::Perl
Хотя да, если говорить про конструктор, то да, вариантов дизайна немного )
источник

AK

Andrey Konovalov in Modern::Perl
Anton Horodchuk
если поведение метода зависит от того, есть или нет некоторое количество параметров - мне это кажется проблемой дизайна
Вот, например, extension/continuation Trie-дерева: мне бы хотелось, чтобы оно могло содержать значение, а могло и не содержать никакого значения, чтобы к нему мог быть прицеплен node, а мог быть и не прицеплен вовсе.
В том же Ruby есть синтаксис вида SomeClass.new(param_name: value0, other_param_name: value1)
И это, как я понимаю, куда более "дешёвый" синтаксис, нежели сборка хеша в конструкторе из части @_ или запихивание ссылки на хеш в @_
источник

AH

Anton Horodchuk in Modern::Perl
Andrey Konovalov
Вот, например, extension/continuation Trie-дерева: мне бы хотелось, чтобы оно могло содержать значение, а могло и не содержать никакого значения, чтобы к нему мог быть прицеплен node, а мог быть и не прицеплен вовсе.
В том же Ruby есть синтаксис вида SomeClass.new(param_name: value0, other_param_name: value1)
И это, как я понимаю, куда более "дешёвый" синтаксис, нежели сборка хеша в конструкторе из части @_ или запихивание ссылки на хеш в @_
Ну, вот конкретно этот пример
SomeClass.new(param_name: value0, other_param_name: value1)
Чем отличается от
SomeClass->new(param_name => $value0, other_param_name => $value1)
?

В том же Groovy, именованные параметры неявно собираются в Map и передаются как ссылка
источник

AK

Andrey Konovalov in Modern::Perl
Anton Horodchuk
Ну, вот конкретно этот пример
SomeClass.new(param_name: value0, other_param_name: value1)
Чем отличается от
SomeClass->new(param_name => $value0, other_param_name => $value1)
?

В том же Groovy, именованные параметры неявно собираются в Map и передаются как ссылка
Тем, что в Perl из этого будет собран полноценный хеш, а в Ruby символы в конечном итоге на этапе компиляции конвертятся в целые числа.
источник