• Управляем браузером с помощью PHP и Selenium

    Интро


    Всем привет! Сегодня я расскажу вам о том, как с помощью PHP можно работать с Selenium.

    Чаще всего это бывает необходимо, когда перед вами стоит задача написать автотесты для web интерфейса или свой парсер/краулер.

    С Википедии
    «Selenium — это инструмент для автоматизации действий веб-браузера.
    В большинстве случаев используется для тестирования Web-приложений, но этим не
    ограничивается. В частности, реализация Selenium WebDriver для браузера phantomjs
    часто используется как веб-граббер.»


    Мы рассмотрим следующие нюансы:

    • Использование Behat/Mink для соединения с Selenium
    • Запуск Selenium в docker, и удаленный доступ по VNC
    • Расширим функционал Behat с помощью Extension Feature
    Читать дальше →
  • Больше, чем государство: Британская Ост-индская торговая компания



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

      Это бизнес, который внезапно стал больше Англии, повлиял на технический прогресс, развязал пару войн и перебил сотни тысяч людей. На половине планеты следы этой компании — от «Садов Компании» близ мыса Доброй Надежды до упоминаний в современных фильмах вроде «Пиратов Карибского моря». Бизнес впечатлял.

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

      Первый способ решения проблемы был прост как полено — перекредитоваться и зализать раны, а потом медленно отдавать занятое. Но вот только Амстердам давал под 14% в месяц, и поэтому слегка окосевшие от голландской наглости англичане брать отказались.

      Оставалось думать. Это было непривычно, поэтому результат тоже получился неожиданный.
      Читать дальше →
    • Нумерация двоичных деревьев

        Как пронумеровать все двоичные деревья? Как на КДПВ: “дерево” из одного листа будет первым, дерево из двух листов вторым, второе дерево с ещё одной веткой, исходящей из корня – третьим. А как найти номер произвольного дерева в такой схеме?

        КДПВ
        Читать дальше →
      • Не защищайте сайт от скрапинга: сопротивление бесполезно

        • Перевод
        За последнее десятилетие я реализовал много проектов, связанных с агрегацией и анализом контента. Часто агрегация включает в себя снятие данных со сторонних сайтов, то есть скрапинг. Хотя я стараюсь избегать этого термина. Он превратился в некий ярлык, с которым связано много заблуждений. Основное заблуждение в том, что веб-скрапинг можно заблокировать с помощью X, Y, Z.

        tl; dr; Нельзя.

        С точки зрения бизнеса


        На прошлой неделе я встретился с высокопоставленным руководителем из отрасли, в которой развиваю свой бизнес GO2CINEMA. Без сомнения, это один из самых умных и знающих людей в киноиндустрии.

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

        Я посоветовался с этим человеком насчёт поиска инвестиций. Он предложил свою помощь и попросил подготовить анализ всех способов блокировки моего текущего бизнеса, включая скрапинг контента (с технической и юридической точек зрения). Я подготовил необходимые документы и поделился с ним перед нашей встречей. Его реакция была примерно такой:

        Да, тщательное исследование. Но всё-таки есть способы, чтобы тебя заблокировать. *ухмыляется*

        Нет, парень, нет таких способов.
        Читать дальше →
      • Requiem for a Dream

          Пролог


          — Ты, главное, не ссы! Держись меня, делай как я, и все будет чики-пуки.

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

          — Коль, давай посерьезнее. — Жанна строго посмотрела на круглую самодовольную рожу. Потом перевела взгляд на новенького. — Сергей, не слушай этого старого коня. Борозды он, конечно, не испортит, но и целины не поднимет.

          Сергею пришлось улыбнуться — все-таки начальник пошутил, и вроде не совсем безнадежно.

          — Мы на тебя возлагаем большие надежды, Сережа. Николай у нас под завязку загружен текучкой — ее очень много. Мы понимаем, что действуем неэффективно, где-то что-то упускаем, используем устаревшие технологии и подходы… Но у нас реально нет времени остановиться, подумать, посмотреть, поучиться. Как писал Кови — наточить пилу.

          Сергей понимающе покивал головой. Он не знал, кто такой Кови, но метафору понял.

          — Ты — молодой, целеустремленный, не обремененный обязательствами и связями, амбициозный, и очень умный программист. У тебя за плечами очная Бауманка. Мы ждем от тебя новой струи свежего вохдуха, скачка в развитии наших систем, прорыва облачных технологий. Так, и только так!

          — Спасибо, Жанна Ивановна. Я буду стараться.

          — Никакого отчества, просто Жанна! Велкам в нашу команду, Сережа!
          Читать дальше →
        • Для новичков: 5 советов по GitHub

          • Перевод
          image Alyson La, Data science в GitHub: В октябре этого года я отпраздновала свой пятилетний юбилей работы в GitHub. 5 лет назад я была бухгалтером, который ничего не знал о программировании, не говоря уже об использовании Git и GitHub.

          Теперь я энтузиаст Data Scientist, который знает некоторые вещи о написании кода с помощью Git & GitHub. Частично благодаря изучению этих технологий я сделала этот карьерный переход.

          Но даже работая в GitHub, изучать Git и GitHub было сложно! Поэтому я хочу поделиться 5-ью советами по использованию GitHub с другими людьми, новичками программирования.

          Совет № 1: Измените редактор по умолчанию


          Для многих людей текстовый редактор при использовании Git через терминал — VIM. VIM может быть ужасным, страшным для нового или казуального хакера. Или даже для ветеранов-хакеров как @haacked.

          image

          Если вы когда-нибудь столкнетесь с конфликтами слияния (а вы их встретите, см. совет №4), вы попадете в VIM, чтобы исправить конфликт, и вам нужно будет знать конкретные команды VIM для редактирования документа иначе вам захочется плакать. Больше года у меня была заметка на мониторе для напоминания основных команд VIM, таких как i (для редактирования) и: wq (для сохранения и выхода). Чтобы избежать боли, вы можете просто выбрать другой текстовый редактор.
          Читать дальше →
        • Конец прокрастинации или что такое ИКИГАИ?

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

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



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

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

            Под катом рассказ Петра Людвига на конференции Aletheia Business 2017 о том, как положить конец прокрастинации используя три простых инструмента. Как только вы внедрите их в свою жизнь, вы сразу заметите разницу. Вы будете более продуктивны, почувствуете себя счастливее и у вас появится больше энергии.


            Читать дальше →
          • Где создаются миры: рабочие места 22 разработчиков игр

            • Перевод
            image

            Разработчики видеоигр — это демиурги, создающие вселенные и яркую реальность из сплетения загадочных скриптов. Но даже божественным сущностям нужно рабочее место. В конце концов, PlayStation не было бы без WorkStation. Как и игра, рабочее место автора раскрывает что-то о его ценностях, эстетике, интересах или страхах.

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

            Группа разработчиков игр со всего мира согласилась показать нам свои рабочие места и рассказать, в каких условиях сегодня создаются новые миры.
            Читать дальше →
          • Решаем задачи без самобалансирующихся деревьев в Python

              Многие задачи на алгоритмы требуют знания определённых структур данных. Стек, очередь, куча, динамический массив, двоичное дерево поиска — нечасто решение алгоритмической задачи обходится без использования чего-либо из них. Однако, качественная их реализация — нетривиальная задача, и при написании кода всегда хочется по максимуму обойтись использованием стандартной библиотеки языка.

              Что касается Python, то в нём есть почти всё.

              • Динамический массив — встроенный тип list. Он же поддерживает и стековые операции: .append() и .pop().
              • Хэш-таблица — встроенные типы set и dict, а также неизменяемый брат сета frozenset.
              • Куча — list со специальными операциями вставки и удаления, реализованными в модуле heapq.
              • Двусторонняя очередь — это описанный в модуле collections тип deque.

              Но вот самобалансирующегося дерева поиска, как такового, в стандартной библиотеке нет. А жаль!

              В этой статье я разберу несколько алгоритмических задачек, подразумевающих решение с помощью двоичного дерева, и покажу, чем в разных ситуациях его можно заменить в Питоне.
              Покажите мне картинки и код!
            • Начинающему веб-мастеру: делаем одностраничник на Bootstrap 4 за полчаса

              • Перевод
              Фреймворк Bootstrap — это свободный набор инструментов для создания интерфейсов сайтов и веб-приложений. Его возможности ориентированы исключительно на фронтенд-разработку. Bootstrap — проект весьма популярный, о чём, например, говорит то, что он занимает (по состоянию на начало марта 2018-го года) второе место по количеству звёзд на GitHub.


              Если вы хотите освоить Bootstrap, в частности, его самую свежую, четвёртую версию, значит, этот материал подготовлен специально для вас. Здесь, на небольшом сквозном примере, который реально освоить за полчаса, будут продемонстрированы основы Bootstrap, разобравшись с которыми вы вполне сможете сделать что-то своё, использовав этот фреймворк.
              Читать дальше →