Подскажите идей для скриптов

123
T
На сайте с 12.10.2017
Offline
6
#11
Had:
Можете написать программу которая:

Имеется файл формата *.txt в котором ссылки на сайты столбиком, например:

...

И ссылок таких в одном файле много - 50 тысяч, 200 тысяч, миллион, 10 миллионов и т. п. Так вот, нужно чтобы данная программа брала этот файл, обрабатывала так, чтобы ссылки сверху вниз, порядок был по ТИЦ-у, от самого жирного ТИЦ-а к менее жирному и сохраняла результат также в тхт файле.

ЗЫ. Напротив ссылок специально поставил знак _ (чтобы ссылки неактивные тут были) на него внимание не обращайте, в файлах тхт ссылки без этого.

И да, нужно чтобы прога запускалась без установки на комп. Портейбл версия.

Вот это норм, попробую! Большое количество обрабатываемых урлов обещать не могу по причинам ресурсоемкости, но сама идея из разряда вот прям то что я ищу.

danforth
На сайте с 18.12.2015
Offline
153
#12
Content-pro:
Можете конечно построчно работать, но уверены что у вас оперативки хватит к примеру для сортировки?

Сортировка не требует выделения памяти. Но требует чтобы в памяти хранился слайс с данными, по которым мы сортируем.

Content-pro:
Вообще на миллионах лучше специальные инструменты использовать, ибо а а вдруг данные в два раза увеличатся с специальными инструментами у вас просто время обработки увеличиться, в случае вашего велосипеда, вполне возможно придется все переписывать)

В случае моего велосипеда, переписывать ничего не придется, так как я не представляю себе человека, загрузившего более 10 млн. урлов на проверку ТИЦ. Обработка миллиона записей займет 300 мб в оперативной памяти при самом печальном раскладе (хранить в памяти и сам URL). 10 млн. записей - 2 ГБ, а сортировка по нему займет аж целых 1.2 секунды). Я не знаю кому в здравом уме придет идея загрузить 10 млн. урлов на проверку. При желании можно сделать дисковую сортировку, а в памяти хранить только ТИЦ и номер байта с которого начинается строка. В последующем, мы просто переходим к n-ому байту в файле, и пишем его в файл отсортированный. С таким подходом мы выкинем строки из памяти, что снизит раз так в 10-15 количество потребляемой памяти, но увеличит время работы сортировки.

MapReduce это не тот инструмент, который применим в контексте данной задачи, т.к. для осуществления данного алгоритма, нужен ещё один ПК. Данные разбиваются на чанки и отправляются в кластер (Reduce), машины в кластере обрабатывают данные (Map).

Но что самое страшное в этом, это то что в данной задаче ничему особо не научишься, она скучная и не требует смекалки, все алгоритмы известны и все необходимые функции в ЯП уже есть. Открыть файл, прочитать ссылки, GET запрос, взять оттуда циферки (ТИЦ), записать в память, отсортировать, записать в файл, это скучнейшая задача которая практически ничему не учит. Ну кроме вызова функций для прям совсем новичка.

---------- Добавлено 15.10.2017 в 18:11 ----------

Tyrell:
Вот это норм, попробую! Большое количество обрабатываемых урлов обещать не могу по причинам ресурсоемкости, но сама идея из разряда вот прям то что я ищу.

Код в студию скиньте, если не стесняетесь.

Junior Web Developer
CP
На сайте с 12.08.2009
Offline
101
#13
danforth:
В случае моего велосипеда, переписывать ничего не придется, так как я не представляю себе человека, загрузившего более 10 млн. урлов на проверку ТИЦ. Обработка миллиона записей займет 300 мб в оперативной памяти при самом печальном раскладе (хранить в памяти и сам URL). 10 млн. записей - 2 ГБ, а сортировка по нему займет аж целых 1.2 секунды). Я не знаю кому в здравом уме придет идея загрузить 10 млн. урлов на проверку. При желании можно сделать дисковую сортировку, а в памяти хранить только ТИЦ и номер байта с которого начинается строка. В последующем, мы просто переходим к n-ому байту в файле, и пишем его в файл отсортированный. С таким подходом мы выкинем строки из памяти, что снизит раз так в 10-15 количество потребляемой памяти, но увеличит время работы сортировки..

Ну смотрите мы говорим о миллионах, ограничения не ставили на количество миллионов. Я понимаю что алгоритмировали задачу, но она у вас чисто теоретически сейчас обоснована на практике будет сложней, собственно для больших данных лучше использовать специальные инструменты - ну это минимумом практичней. Для обучения, лучше набрать все виды алгоритмов сортировок и каждый реализовать. Все таки большие данные это совсем другая история, тут кроме памяти задействуются и другие ресурсы, грубо говоря каждую строку вы будете как то разбивать, совершать различные манипуляции с данными, ошибки и прочее.

danforth:
MapReduce это не тот инструмент, который применим в контексте данной задачи, т.к. для осуществления данного алгоритма, нужен ещё один ПК. Данные разбиваются на чанки и отправляются в кластер (Reduce), машины в кластере обрабатывают данные (Map).

Там вроде основная фишка это параллельные вычисления, я особо не работал с большими данными, но немного работал с R, там векторизация работает довольно шустро, типа если знаем длину вектора, рубим, обрабатываем параллельно, потом склеиваем назад в один вектор.

Профессиональный frontend: JS, html,css, Single-Page App (/ru/forum/964386)
H
На сайте с 01.04.2014
Offline
571
Had
#14
Tyrell:
Вот это норм, попробую! Большое количество обрабатываемых урлов обещать не могу по причинам ресурсоемкости, но сама идея из разряда вот прям то что я ищу.

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

danforth:
В случае моего велосипеда, переписывать ничего не придется, так как я не представляю себе человека, загрузившего более 10 млн. урлов на проверку ТИЦ. Обработка миллиона записей займет 300 мб в оперативной памяти при самом печальном раскладе

У меня на компе 16 гигов памяти физической + кеш. Ради интереса глянул базы свои, многие по 400-500 мегабайт, напомню это файлы тхт с ссылками. Глянул ради интереса одну из баз своих, 7 миллионов ссылок там. Но даже если ТС сделает прогу на 2-3 млн будет круто. Ну или меньше тоже.

danforth
На сайте с 18.12.2015
Offline
153
#15
Content-pro:
Там вроде основная фишка это параллельные вычисления, я особо не работал с большими данными, но немного работал с R, там векторизация работает довольно шустро, типа если знаем длину вектора, рубим, обрабатываем параллельно, потом склеиваем назад в один вектор.

Параллельные вычисления можно организовать и в одном инстансе, используя функции Map и Reduce (условно), но это не станет моделью MapReduce. Почитайте на вики, там основное условие - несколько ПК в кластере. Суть в том, что если нужно обработать очень много данных, мы просто добавляем инстансы в кластер и все ускоряется. Это модель для горизонтального масштабирования. Конкретно то что вы имеете ввиду называется embarrassingly parallel (на рус. чрезвычайная параллельность), это задачи которые могут быть распаралелены тупым циклом, и где не нужна синхронизация данных и результаты вычислений не зависят друг на друга (например, результат тиц для сайта site1.ru никак не влияет на результат для сайта site2.ru).

Content-pro:
но она у вас чисто теоретически сейчас обоснована на практике будет сложней, собственно для больших данных лучше использовать специальные инструменты - ну это минимумом практичней.

Да, можно поднять базу. Там есть индексы, можно спокойно писать, она будет расти на диске и не будет выжирать оперативку. Но удобно ли, если допустим я захочу запустить проверку на ноуте, но при этом там нету базы. Отталкиваться нужно от требований, которые есть. Готовые инструменты безусловно рулят, но в некоторых случаях можно отказаться от громоздких решений и написать что-то свое, уж опыта и знаний на выходе будет больше.

Had:
У меня на компе 16 гигов памяти физической + кеш. Ради интереса глянул базы свои, многие по 400-500 мегабайт, напомню это файлы тхт с ссылками. Глянул ради интереса одну из баз своих, 7 миллионов ссылок там. Но даже если ТС сделает прогу на 2-3 млн будет круто. Ну или меньше тоже.

Это все круто конечно, но хоть убей не пойму зачем 7 млн. сайтов ТИц мониторить. Я даже не уверен что такое количество можно спарсить с яндекса, т.к. через 10 запросов начнутся капчи. И сколько прокси под это дело нужно?

CP
На сайте с 12.08.2009
Offline
101
#16
danforth:
Это все круто конечно, но хоть убей не пойму зачем 7 млн. сайтов ТИц мониторить. Я даже не уверен что такое количество можно спарсить с яндекса, т.к. через 10 запросов начнутся капчи. И сколько прокси под это дело нужно?

Мне тоже дико интересно зачем это всё)

H
На сайте с 01.04.2014
Offline
571
Had
#17
danforth:
Я даже не уверен что такое количество можно спарсить с яндекса, т.к. через 10 запросов начнутся капчи. И сколько прокси под это дело нужно?

Речь не про спарсить. Они у меня эти базы есть. Парсить никто не собирается.

danforth:
Это все круто конечно, но хоть убей не пойму зачем 7 млн. сайтов ТИц мониторить.

Чтоб отсеять все у которых ТИЦ небольшой.

danforth
На сайте с 18.12.2015
Offline
153
#18
Had:
Речь не про спарсить. Они у меня эти базы есть. Парсить никто не собирается.

Чтобы получить ТИЦ, его нужно взять со страницы. Это называется спарсить)

VoV@
На сайте с 22.09.2007
Offline
196
#19

Нужен скрипт, в который вводишь реквизиты своего счёта в банке, и сумму денег. Потом жмёшь на кнопку и эта сумма поступает на указанный счёт.

Откуда переводятся деньги - не важно, лишь бы на счёте прибавлялось.

🚬

⭐ Разработка Андроид-приложений (Xamarin C#). ⭐ Разработка ASP.NET (WebForms, MVC, WebAPI, Core). ⭐ Цой жив!
H
На сайте с 01.04.2014
Offline
571
Had
#20

Вы так сейчас ТС-у дадите задание сделать кнопку бабло.

123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий