Search
Write a publication
Pull to refresh
17
0.4
Максим @SabMakc

User

Send message

Web scraping на Node.js и проблемные сайты

Reading time14 min
Views34K

Это вторая статья в цикле про создание и использование скриптов для веб-скрейпинга на Node.js.


  1. Web scraping при помощи Node.js
  2. Web scraping на Node.js и проблемные сайты
  3. Web scraping на Node.js и защита от ботов
  4. Web scraping обновляющихся данных при помощи Node.js

В первой статье разбиралась простейшая задача из мира веб-скрейпинга. Именно такие задачи достаются веб-скрейперам в подавляющем большинстве случаев – получение данных с незащищённых HTML-страниц стабильно работающего сайта. Быстрый анализ сайта, HTTP-запросы при помощи needle (организованные при помощи tress), рекурсивный проход по ссылкам, DOM-парсинг при помощи cheerio – вот это вот всё.


В этой статье разбирается более сложный случай. Не из тех, когда приходится отказываться от взятого с боем заказа, но из тех, которые начинающему скрейперу могут сорвать дедлайн. К слову, эта задача содержалась в реальном заказе на одной международной бирже фриланса, и первый исполнитель её провалил.


Цель этой статьи (как и прошлой) – показать весь процесс создания и использования скрипта от постановки задачи и до получения конечного результата, однако темы, уже раскрытые в первой статье, освещаются здесь довольно кратко, так что начать я рекомендую с первой статьи. Тут акцент будет на анализ сайта с точки зрения веб-скрейпинга, выявление подводных камней и способы их обхода.

Читать дальше →

Коммуникации в программировании — во сне и наяву

Reading time9 min
Views12K
В детстве я считал библейскую историю про Вавилонскую башню — странноватой сказкой, пока не начал сталкиваться с аномалией непонимания людьми друг друга чуть ли не каждый день в программных проектах. Простыми словами суть истории про башенку такая: люди «кодили» большую, страшшшшную, мощщщную систему и до того усложнили архитектуру и заумничались — что стали запутываться, наступать друг другу на ноги, руки и головы и вся конструкция стала колом к чертовой матери — команда развалилась и переругалась, «фрилансеры» с дубинами в руках, глиняными дощечками (вместо ноутов) под мышкой и запасами копченого мяса разбрелись по земле.


Читать дальше →

Два по сто: самые читаемые статьи и авторы Хабра и ГТ

Reading time10 min
Views66K
Если кто не знает, на Хабре, как и Гиктаймсе, всегда можно посмотреть все самые рейтинговые статьи за всё время. Но по просмотрам ни статьи, ни авторы никак не сортируются. Список ниже отражает почти полную правду о самых читаемых статьях «Хабра» и «Гиктаймса» за всё время. Почти — потому что, к сожалению, публичный счётчик был включён только 27 сентября 2012 года (примерная дата), поэтому если вам кажется, что какие-то ваши любимые тексты эпохи, когда Хабр был более торт, недосчитались просмотров — может, вы и правы. Впрочем, отчасти фактор неработавшего ранее счётчика нивелируется мощным хвостом в виде поискового траффика, так что действительно сильные тексты в любом случае должны были получить то, что им причитается — но об этом позже.

Итак, самые топ-100 самых читаемых постов за всё время на Хабре и ГТ в сумме. Megamozg included by default, т.к. данные собраны 21 мая, уже после обратного слияния с «Хабром»:

  1. «Скрытые смайлы в Skype», G0rDi — 1599K (2009)
  2. «Взломать Wi-Fi за… 3 секунды», ushanov90 — 1511K (2012)
  3. «Взломать Wi-Fi за 10 часов», gorl — 1181K (2012)
  4. «300 потрясающих бесплатных сервисов», shimapa23 — 1052K (2015)
  5. «Пишем своё первое приложение на Android», Hoorsh — 997K (2010)
  6. «Обновление с Windows 7/8.1 до Windows 10 TP через Windows Update», akibkalo — 840K (2015)
  7. «Простая стратегия игры 2048», WhatIsGTO — 820K (2014)
  8. «Откровенные фото Дженнифер Лоуренс и еще десятков знаменитостей утекли через iCloud», Akr0n — 795K (2014)
  9. «Подарок от Skype на новый год», gmikhail94 — 781K (2013)
  10. «Wi-Fi: неочевидные нюансы (на примере домашней сети)», apcsb — 757K (2012)

Читать дальше →

Как и какой выбрать мобильный интернет? Декодируем GSM

Reading time6 min
Views58K

В настоящее время огромное количество людей, проживающих в городах и районных центрах, а особенно в удалении от них испытывает сложности с возможностью выбора проводника услуг для качественно использования таких благ цивилизации как цифровое телевиденье, интернет, радио и просто решить, для примера, какого оператора мобильной связи выбрать из возможных для качественной и надежной телефонной связи в данном месте (Мегафон, Билайн, МТС, TELE2 и др.). Как правило в лучшем случае это решается опросом соседей «какую связь используете Вы?» и, полагаясь на их ответ приобретаете необходимую сим карту оператора мобильной связи, а потом сталкиваетесь с тем что не слышно, нет связи, интернета, а как же тогда читать хабр, итд.
Читать дальше →

Игры для программистов

Reading time7 min
Views53K

Снова здравствуйте, сегодня мы поговорим о таком вообще-то необычном явлении, как игры про программирование. Или игры для программистов. Короче говоря, игры, где чаще всего нельзя напрямую решать какие-то проблемы, а нужно составлять указания и инструкции для их решения. Итак, для кого они вообще?
Читать дальше →

Web scraping при помощи Node.js

Reading time10 min
Views146K

Это первая статья в цикле про создание и использование скриптов для веб-скрейпинга при помощи Node.js.


  1. Web scraping при помощи Node.js
  2. Web scraping на Node.js и проблемные сайты
  3. Web scraping на Node.js и защита от ботов
  4. Web scraping обновляющихся данных при помощи Node.js

Тема веб-скрейпинга вызывает всё больше интереса как минимум потому, что это неисчерпаемый источник небольших, но удобных и интересных заказов для фрилансеров. Естественно, что всё больше людей пытаются выяснить, что это такое. Однако, довольно трудно понять, что такое веб-скрейпинг по абстрактным примерам из документации к очередной библиотеке. Гораздо проще разобраться в этой теме наблюдая за решением реальной задачи шаг за шагом.


Обычно, задача для веб-скрейпинга выглядит так: есть данные, доступные только на веб-страницах, и их надо оттуда вытащить и сохранить в неком удобоваримом формате. Конечный формат не важен, так как конвертеры никто не отменял. По большей части речь о том, чтобы открыть браузер, пройтись мышкой по ссылкам и скопипейстить со страниц нужные данные. Ну, или сделать то же самое скриптом.


Цель этой статьи – показать весь процесс создания и использования такого скрипта от постановки задачи и до получения конечного результата. В качестве примера я рассмотрю реальную задачу вроде тех, какие часто можно найти, например, на биржах фриланса, ну, а в качестве инструмента для веб-скрейпинга будем использовать Node.js.

Читать дальше →

Контроль качества воздуха (со2 и температуры) в офисе и дома, своими руками

Reading time3 min
Views45K
Все началось с того что я работаю в офисе, где как водится нет нормальной вентиляции. Зато есть много народу, кому-то все время жарко, другим постоянно дует.

Для контроля качества воздуха в помещении знать температуру недостаточно. Даже с кондиционером часто бывает прохладно, но душно. Спертый воздух. Оказалось, на это больше всего влияет концентрация со2. Когда я узнал стоимость готовых приборов хотел от этой идеи отказаться. Но случайно увидел описание оптического датчика концентрации со2 MH-Z19.

image
Читать дальше →

Конкурс по программированию на JS: Классификатор слов (дополнение)

Reading time3 min
Views18K
Спасибо всем, кто уже поучаствовал или собирается участвовать в нашем конкурсе по программированию!

Мы решили опубликовать ряд важных разъяснений к правилам, чтобы помочь участникам избежать типичных ошибок. Обидно было бы дисквалифицировать интересное решение из-за чисто технической ошибки.

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

Для отправки работ осталась ещё неделя. Если этот пост помог Вам найти ошибку, ещё есть время её исправить.

Английская версия этого поста размещена на GitHub.

Часто задаваемые вопросы

Читать дальше →

Цели против ценностей

Reading time3 min
Views7.3K
Пытаемся разобраться в конфликте между управлением по целям и управлением по ценностям.

image

Эпиграф: «В теории нет разницы между теорией и практикой. На практике она есть»

Для пчеловода вопрос противостояния пчел и меда не стоит, это две части единого целого. В теории цели и ценности являются двумя частями единого гармоничного подхода к развитию. Достижение цели должно отвечать на вопрос «что делать?», а соблюдение ценностей на вопрос «как делать?».

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

Что такое ценность? Если приводить физическую аналогию – то это потенциал поля. Это понимание того, где я нахожусь и каким я должен быть, потому что ценности – это то, что я должен соблюдать, где я уже должен был оказаться.

Что же такое цель? Это вектор из текущего положения, это некая точка, где меня еще нет. Чтобы достичь этой точки, надо приложить действие, до нее надо добраться.

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

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

DuckDuckGo пожертвовали 225000$ различным OpenSource проектам

Reading time4 min
Views8.2K


Два с половиной месяца назад в блоге DuckDuckGo появилась запись, где владельцы поисковика собирали номиналистов на получение пожертвований. Сегодня стали известны те самые проекты, которым DuckDuckGo оказывает финансовую помощь в 2016 году. Ниже предлагаю список счастливчиков.

Читать дальше →

Конкурс по программированию на JS: Классификатор слов

Reading time5 min
Views73K
Компания Hola объявляет начало весеннего конкурса по программированию! Призовой фонд увеличен:

  1. Первое место: 3000 USD.
  2. Второе место: 2000 USD.
  3. Третье место: 1000 USD.
  4. Возможно, мы решим отметить чьи-то чрезвычайно оригинальные решения двумя специальными призами в 400 USD.
  5. Если Вы отправите кому-то ссылку на этот конкурс, поставив наш адрес в CC, и этот человек займёт призовое место, Вы получите половину суммы приза (разумеется, не в ущерб награде победителя). За одного победителя такую награду может получить только один человек — тот, кто отправил ссылку первым.

Мы ищем талантливых программистов, поэтому авторы интересных решений будут приглашены на собеседования.

Опубликовано дополнение: Тестовая программа, часто задаваемые вопросы, типичные ошибки.
Опубликовано дополнение: О ходе тестирования.


Правила


На этот раз мы решили попробовать что-то новенькое: для разнообразия, этот конкурс — не на производительность кода.

Условия конкурса на английском языке размещены на GitHub. Ниже — перевод на русский язык.

Читать дальше →

Самая популярная игра в App Store — «Змейка»

Reading time2 min
Views19K
Это не обычная «Змейка», а ее MMORPG версия



Утверждение «новое — это хорошо забытое старое» справедливо в отношении многих вещей. Это касается технологий, отношений и даже игр. На данный момент первое место в рейтинге игрушек App Store занимает «Змейка», только не обычная, а MMORPG. Игрушка простая, но красочная и увлекательная (иначе она и не попала бы на первое место рейтинга, надо полагать).

Slither.io переносит игрока в мир косоугольной проекции, разделенный сотами-шестиугольниками. На поле во множестве лежат бонусы — еда для змейки, которая позволяет ей расти. Также присутствуют и другие пресмыкающиеся, которые хотят одного — вырасти. Рост практически неограничен, но нужно избегать столкновения с другими змейками. Если наталкиваются на вас — все хорошо, противник исчезает, а на его месте остается «еда». Если на кого-то наталкиваетесь вы, то ваши бренные останки подбирает какой-то другой, более удачливый игрок.
Читать дальше →

Ищем замену Digital Ocean среди отечественных хостинговых компаний

Reading time14 min
Views74K
Я поклонник виртуальных серверов, так как в большинстве случаев они дают больше свободы и возможностей чем классический виртуальный хостинг и при этом удобнее в эксплуатации по сравнению с выделенными серверами.
Всего три года назад практически не было альтернативы виртуальным серверам от Digital Ocean. В России аналогичных сервисов практически не было. А цены на зарубежные предложения начинались с 5 долларов США в месяц, что в пересчёте по тогдашнему курсу составляло около 150 рублей и было сравнимо с обычным хостингом. Однако, когда доллар и евро подскочили в цене в два раза пользоваться услугами зарубежных провайдеров стало весьма накладно.
Читать дальше →

Cocos Creator

Reading time2 min
Views48K
Месяц назад китайцы зарелизили Cocos Creator. Что это такое? Это как Unity3d, только с 2-мя симками и телевизором. И бесплатно.

image

Удивительно, но эта довольно значимая новость для разработчиков игр на хабре осталась незамеченной.

Сейчас я исправлю это недоразумение и кратко расскажу про Cocos Creator (если совсем кратко это надстройка над Cocos2d, повторяющая редактор Unity).

Читать дальше →

Любимые административные грабли интернетчика

Reading time4 min
Views4.2K


Вторая серия, начинать читать можно тут.

Пару недель назад меня пригласили почитать что-то полезное на секции разработчиков на конференции Digital Оттепель в Нижнем Новогороде. Времени было очень мало и я накидал любимые организационные грабли, по которым скачут 90% интернет-компаний, которых мне доводилось консультировать. Конечно, есть шанс, что мне просто везло. Но я что-то мало верю в такое роковое везение на разные города и разные масштабы.

В итоге наковырял некоторую пачку, с которой и предлагаю поиграть в Капитана Очевидность
Читать дальше →

Лень как признак гениальности. 4 вида лени и нужно ли с ней бороться

Reading time10 min
Views122K
image

Бывало с вами такое, что нужно что-то сделать, но не хочется. Лень.

Лень иногда настолько сильна, что человек сдаётся и подчиняется ей. Лень всевластна и вездесуща, говорят она родилась задолго до нас.
Лень часто называют самым большим пороком человека, но так ли она плоха на самом деле? Давайте разберёмся.
Итак, что же такое лень.
По определю В.И. Даля это
«отвращение от труда, от дела, занятий; наклонность к праздности и тунеядству».

На самом деле лень это такое явление можно рассматривать значительно шире.
Рассмотрим несколько основных вариантов проявления лени:
Читать дальше →

RESTful Visual Editor

Reading time3 min
Views21K


Всем привет!
Хочу представить вам собственную разработку для создания API-документации. Она еще немного «сыровата», поскольку я уделил ей всего неделю, кроме того, я не являюсь веб-разработчиком. Однако на данном этапе, с целью написания API-документации для своего будущего проекта, она меня полностью устраивает.

Сама разработка находится на GitHub: github.com/gatools/restful-visual-editor

Заинтересовавшихся — милости прошу под кат.
Читать дальше →

Angular 2 Beta, обучающий курс «Тур героев» часть 1

Reading time6 min
Views60K

Часть 1 Часть 2 Часть 3 Часть 4


Вступление


Эта статья основана на документации Angular 2 и представляет собой перевод двух статей — Вступление и Редактор героя.


Используется Angular 2 release is beta.12.


Тур героев: обзор


Наш великий план — построить приложение для кадрового агентства героев. Даже героям нужна работа!


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

Читать дальше →

За год Google проанализировал 760 тыс. взломов сайтов и анонсировал новый инструмент оповещения веб-мастеров

Reading time2 min
Views15K
За время исследования, проводимого с июля 2014 по июнь 2015 года, работниками компании Google было выявлено 760 935 фактов взлома 313 190 сайтов, которые компания определила как потенциально опасные для пользователя, о чем говорится в соответствующем докладе. Собранная статистика была использована для разработки новой системы уведомлений для веб-мастеров, которая будет информировать последних о взломе сайта.

Разработка была представлена на 25-м Международном World Wide Web-консорциуме, там же, где другие работники Google анонсировали свой черновик протокола передачи данных между веб-страницами и USB-устройствами.

image
Читать дальше →

Angular 2 и внедрение зависимостей

Reading time19 min
Views75K

Вторая версия ангуляра всё ближе к релизу и всё больше людей начинают интересоваться им. Пока что информации по фреймворку не так много, особенно на русском языке, и всё чаще начинают возникать вопросы по некоторым темам.


Одна из тем, вызывающая много вопросов — внедрение зависимостей. Некоторые люди не сталкивались с подобной технологией. Другие не до конца понимают, как она работает в рамках Angular 2, так как привыкли к другим реализациям, которые бывают в других фреймворках.


А разгадка кроется в том, что DI во втором ангуляре действительно несколько отличается от других, и связано это в первую очередь с общим подходом и философией 2-й версии. Заключается она в том, что сущностями из которых строится всё приложение, являются компоненты. Сервисный слой, роутер, система внедрения зависимостей — вторичны и они имеют смысл только в рамках компонента. Это очень важный момент, который лежит в основе понимания архитектуры нового фреймворка.

Читать дальше →

Information

Rating
3,535-th
Location
Россия
Registered
Activity