Дневник by Nelex

Будет ли хотя бы неделя когда не будет чего-нибудь нового?

В целом не сказать что последих пару недель были плохими. Они были напряженными как и всегда, удалось практически закончить один сайт недвижимости с парсингом. Увы случилось так что парсить пришлось источник на 15.5к записей и все их нужно было прогнать через гуглопереводчик.

В принципе можно сказать что стоимость всех облачных(в нашем случае сервисов имеющих API) переводчиков не так уж много, да и цены у них +- одинаковые. Так вот сразу задумываешься, как на долго хватит лимита в 500 000 бесплатных символов? В принципе, как оказалось, это вообще ни о чем. Гугл при начале использовании сервиса дает 300у.е. бонусных или же 365 дней бесплатного пользования, что закончиться раньше. Сложностей в использовании самого переводчика вообще 0, для этого гугл уже подготовил удобные библиотеки. Так вот, с учетом бонусных 300у.е. + 500 000 бесплатных символов в месяц хватило этого на около 4 000 записей. В итоге пришлось выкручиваться тремя учетками так как суммы получались не маленькими. Размер записи от 500+ символов, точнее не скажу.

Вторым неприятным моментом который я не учел сразу было то что парсер я создавал достаточно простой по этому распараллеливание не учитывал. Из-за этого когда начал увеличивать скорость парсинга количеством единовременно парсящихся обьектов получился банальный race condition к базе и соответственно дубли итоговых записей. Сразу я этого не заметил, но позже добавил блок на записи по времени до 15 минут и этого вполне хватило чтобы быстро спарсить все оставшееся в весьма быстром темпе. Делал я и побыстрее парсеры, но тут цена того не стоила, так как нужно спарсить один раз. 

Как всегда сам парсер представлял из себя три стадии:

  1. Парсинг индексных страниц
  2. Парсинг страниц обьектов + перевод
  3. Конвертация в обьект в системе

При этом обмануть гугла с помощью прокси и прочей хрени не стоит даже думать, тот зараза умный и такой трюк с ним маловероятно что пройдет, вот и у меня не прошел. Пакет на 1000 проксей вылетел в момент. Благо я фиксирую когда парсер получает ошибки и инкрементирую ошибки, а следующую прокси беру рандомно с сортировкой по минимальному количеству ошибок. Но даже такое рассеивание ни к чему не приводит с гуглом, он палит реальный IP, реальный DNS и т.п. 

Естественно продвинутые гики скажут что можно сесть за туннелем и спрятать запросы к днс и прочие утечки и будут правы. Тут как всегда вопрос цены, так как был вариант проще.

И вот собственно два косяка которые выплыли из-за race condition(состояния гонки за ресурсы, а конкретнее к базе данных):

  1. Дубли доп. данных в виде картинок с планом расположения
  2. Дубли фото

И если первая проблема спокойно решилась банальным поиском совпадений картинок по совпадениям названий по каждому из обьектов, то вторая тем что пришлось запустить скрипт который брал md5 файлов по обьектам и сравнивал есть ли уже такой. То есть если говорить проще идем по обьектам, внутренний цикл по фото. Смотрим есть ли такой хеш для этого обьекта. Если есть то текущую запись удаляем и саму картинку тоже. При каждой итерации загоняем в массив запись вида обьект-хеш_картинки. И вот по ней и видим есть ли такой хеш для такой записи. Все просто и быстро, и к тому же точно.

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

Это так же может быть интересным вам

Очередной рабочий день закончен. Выводы, успехи и неудачи
Очередной рабочий день закончен. Выводы, успехи и неудачи

Еще один день закончился. Он был достаточно сложным, нужно было сделать многое. Что-то успел, что-то нет.

По ...

Добавил: Nelex

Переделал главную страницу, добавил функционал - Успехи
Переделал главную страницу, добавил функционал - Успехи

Таки занялся я переработкой главной страницы. Взял за основу шаблон лендинга, переделал и заполнил данными. ...

Добавил: Nelex

Npm vs Yarn
Npm vs Yarn

В целом я более положительно отношусь сейчас к NPM, так как мне на текущем этапе и его хватало с головой...

Да вот ...

Добавил: Nelex

Еще пару дней жесткого порно...
Еще пару дней жесткого порно...

Так то вроде прям ничего сверх-сложного, но сроки, сроки, сроки...

В целом расковырял fullcalendar достаточно сильно ...

Добавил: Nelex

Обновление ближайших планов
Обновление ближайших планов

В самое ближайшее время в планах закончить Мозговые карты, сделать страницу Релаксации(На тот случай когда ...

Добавил: Nelex

Случайные публичные видео

Причина нехватки энергии
Причина нехватки энергии

развитие мотивация усталость

Высказывание: «Я так устал. У меня совсем нет энергии», – является полностью абсурдным, в Вашем мизинце...

Добавил: Nelex 0 374

Правила Успеха Криса Гарднера
Правила Успеха Криса Гарднера

успех гарднер правила

Подписывайтесь на канал Эвана Кармайкла https://goo.gl/QYzYpk и не забывайте нажать на значок уведомлений, чтобы...

Добавил: Nelex 0 455

Как перестать БЕСПОКОИТЬСЯ и начать жить (3 ЗОЛОТЫХ СОВЕТА) - Дейл Карнеги - Как выйти из депрессии
Как перестать БЕСПОКОИТЬСЯ и начать жить (3 ЗОЛОТЫХ СОВЕТА) - Дейл Карнеги - Как выйти из депрессии

мотивация тревога стресс

Как бороться с депрессией, тревогой и страхами? 3 совета из книги Дейла Карнеги "Как перестать беспокоиться и...

Добавил: Nelex 0 620

Переломный момент - Мотивационное видео (Мотивация Х)
Переломный момент - Мотивационное видео (Мотивация Х)

воля ошибки сложности

Подписывайся на канал - https://goo.gl/zADJCf ============================== Автор видео: Артур Розенгарт Инстанрам:...

Добавил: Nelex 0 404

5 Простых Способов Демонстрировать Абсолютную УВЕРЕННОСТЬ
5 Простых Способов Демонстрировать Абсолютную УВЕРЕННОСТЬ

саморазвитие уверенность харизма

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

Добавил: Nelex 0 367