• Справочная: квантовая криптография на пальцах



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

      Стивен Визнер из Колумбийского университета в 1983 году предложил создать квантовые банкноты государственного образца, которые нельзя скопировать даже в том случае, если у желающего сделать это есть типографское оборудование и бумага, при помощи которых изготавливался оригинал. Вероятность изготовления точной копии оригинала, защищенного квантовыми технологиями, стремится к нулю.
      Читать дальше →
    • Пирамидальная сортировка (HeapSort)

      • Translation


      Перевод статьи подготовлен специально для студентов курса «Алгоритмы для разработчиков».




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

      Читать дальше →
      • +26
      • 11.2k
      • 6
    • Html Agility Pack — удобный .NET парсер HTML

        Всем привет!
        Как-то раз мне пришла в голову идея проанализировать вакансии размещенные на Хабре. Конкретно интересовало, есть ли зависимость между размером зарплаты и наличия высшего образования. А еще сейчас у студентов идет сессия (в том числе и у меня), то возможно кому-то уже надоело трепать нервы на экзаменах и этот анализ будет полезен.
        Так как я программист на .Net, то и решать эту задачу — парсить объявления на Хабре я решил на C#. Вручную разбирать строки html мне не хотелось, поэтому было придумано найти html-парсер, который помог бы осуществить задачу.
        Забегая вперед скажу, что из анализа ничего интересного не вышло и сессию придется сдавать дальше :(
        Но зато немножко расскажу про весьма полезную библиотеку Html Agility Pack
        Читать дальше →
      • Парсинг сайтов — а это вообще легально в России?

          По одному из определений парсинг есть синтаксический анализ информации. Человеку, не вовлечённому в конкретные задачи сбора и обработки информации для Интернет-проектов, это не говорит ни о чём. Да и само определение лишь в общих чертах обозначает огромный объём работы, которую ежеминутно совершают сотни миллионов людей и десятки миллионов роботов (хоть и виртуальных, но от этого ничуть не менее настоящих) по всему миру. А ведь эта задачка обычное для человека дело — что в сравнении цен на билеты онлайн, что в выборе подходящей электроники на сайтах магазинов… Следя за ценами и акциями в удобном мобильном приложении ближайшего к дому гипермаркета, никто из нас и не подумает окрестить себя парсером.
          image
          Читать дальше →
        • Базовые знания в безопасности сайтов

          Привет, Хабр!

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

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

          И еще, я показываю максимально простую реализацию кода. Я знаю про исключения, знаю про ORM, про предусмотренную защиту в фреймворках. Моя цель — показать наглядно, так, чтобы поняли все.

          И так, пора заканчивать со вступлением и приступать к практике.
          Читать дальше →
          • +6
          • 7.5k
          • 9
        • Регулярные выражения в Python от простого к сложному. Подробности, примеры, картинки, упражнения

          • Tutorial

          Регулярные выражения в Python от простого к сложному




          Решил я давеча моим школьникам дать задачек на регулярные выражения для изучения. А к задачкам нужна какая-нибудь теория. И стал я искать хорошие тексты на русском. Пяток сносных нашёл, но всё не то. Что-то смято, что-то упущено. У этих текстов был не только фатальный недостаток. Мало картинок, мало примеров. И почти нет разумных задач. Ну неужели поиск IP-адреса — это самая частая задача для регулярных выражений? Вот и я думаю, что нет.
          Про разницу (?:...) / (...) фиг найдёшь, а без этого знания в некоторых случаях можно только страдать.

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

          Надеюсь, вам удастся из него извлечь что-нибудь новое и полезное, даже если вы уже в ладах с регулярками.
          Читать дальше →
        • Веб скрапинг для веб разработчиков: краткое резюме

          Знание только одного подхода к веб скрапингу решает проблему в краткосрочной перспективе, но все методы имеют свои сильные и слабые стороны. Осознание этого экономит время и помогает решать задачу эффективнее.

          image

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

          • Какие есть варианты программного извлечения данных с веб-страницы?
          • Плюсы и минусы каждого подхода?
          • Как использовать облачные ресурсы для увеличения степени автоматизации?

          Статья поможет получить ответы на эти вопросы.
          Читать дальше →
        • Яндекс.Алиса и бот Telegram на PHP с единым функционалом

          Добрый день.

          На тему Telegram-ботов статей очень много, а вот про навыки для Алисы мало кто пишет, а информации как сделать единого бота я вообще не нашел, поэтому решил поделиться своим опытом о том, как сделать простого бота Telegram и навык Яндекс.Алиса для сайта, имеющих единый функционал.
          Читать дальше →
        • Правда про парсинг сайтов, или «все интернет-магазины делают это»

            В этой статье я постараюсь наиболее просто рассказать о парсинге сайтов и его основных нюансах. Моя компания занимается парсингом сайтов уже более трёх лет и ежедневно мы парсим около 300 сайтов. Я обычно открыто пишу об этом в соц.сетях (плюс мы много чего из итогов парсинга крупнейших магазинов России выкладываем бесплатно — публично), что вызывает бурные обсуждения и неодобрение со стороны пользователей. Забавно после прочтения комментариев заглядывать к себе в личку и читать сообщения с предложениями о сотрудничестве от тех же людей, кто только что осуждал нас в комментариях под постом :) Вся статья будет в формате наиболее часто задаваемых вопросов и честных ответов (материал маркетинговый, не технический).
            Читать дальше →
          • Как и зачем я писал парсер для сайта Tradingview. Автоматизация торговли своими руками

            Проблема: На текущий момент наиболее удобным и полноценным программным обеспечением (далее ПО) для автоматизации торговли на российском биржевом рынке является небезызвестный ТСЛАБ.


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


            1. Стоимость: Абонентская плата 4500р./мес+аренда виртуального сервера (1000 р./мес.)
            Это постоянная издержка ложится очень сильным бременем на финансовый результат моей торговли. Поэтому имея размер счёт в размере 500 тыс.р. и надеясь с него получить хотя бы 20% годовых, с существующими издержками вам нужно зарабатывать порядка 32-35%, чтобы выйти на плановую доходность.


            2. Нестабильность работы: Несмотря на то, что мои алгоритмы работают преимущественно с рыночными заявками (тип заявок, который предполагает 100% исполнение), мои позиции часто удваивались, либо не исполнялись вовсе.


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


            Архитектура всего проекта с текущим и функционалом и планируемыми доработками представлен на рисунке ниже.


            Читать дальше →
          • Редактируем CSV-файлы, чтобы не сломать данные



              Продукты HFLabs в промышленных объемах обрабатывают данные: адреса, ФИО, реквизиты компаний и еще вагон всего. Естественно, тестировщики ежедневно с этими данными имеют дело: обновляют тест-кейсы, изучают результаты очистки. Часто заказчики дают «живую» базу, чтобы тестировщик настроил сервис под нее.

              Первое, чему мы учим новых QA — сохранять данные в первозданном виде. Все по заветам: «Не навреди». В статье я расскажу, как аккуратно работать с CSV-файлами в Excel и Open Office. Советы помогут ничего не испортить, сохранить информацию после редактирования и в целом чувствовать себя увереннее.

              Материал базовый, профессионалы совершенно точно заскучают.
              Читать дальше →
            • Парсинг telegram каналов для агрегатора контента на PHP

              Привет, Хабр!

              Несколько лет назад я начал разрабатывать свой агрегатор контента, что бы упростить свой серфинг в сети. Изначально я парсил только rss, vk и facebook, но в прошлом году решил сделать полный рефакторинг проекта: отказаться от парсинга на клиенте, сделать нормальный back-end, использовать базу данных для хранения данных и расширить список поддерживаемых ресурсов.

              Помимо стандартного набора из rss, fb, vk, twitter, instagram, youtube я добавил поддержку произвольных открытых каналов из telegram.

              image

              Под катом пошаговая инструкция, как парсить любые каналы в telegram без регистрации и смс.
              Читать дальше →
            • Копирование данных с веб-сайта с помощью R и библиотеки rvest

              Чтобы проводить анализ данных, необходимо сначала эти данные собрать. Для этой цели есть много разных методов. В этой статье мы будем говорить о копировании данных непосредственно с веб-сайта, или о скрейпинге (scraping). На Хабре есть несколько статей о том, как сделать копирование с помощью Python. Мы будем использовать язык R (вер.3.4.2) и его библиотеку rvest. В качестве примера рассмотрим копирование данных с Google Scholar (GS).

              Читать дальше →
              • +15
              • 5.1k
              • 3
            • Не защищайте сайт от скрапинга: сопротивление бесполезно

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

              tl; dr; Нельзя.

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


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

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

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

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

              Нет, парень, нет таких способов.
              Читать дальше →
            • Управляем браузером с помощью PHP и Selenium

              Интро


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

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

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


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

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

                Когда был доеден новогодний оливье, мне стало нечего делать, и я решил скачать себе на компьютер все статьи с Хабрахабра (и смежных платформ) и поисследовать.


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


                Читать дальше →
              • Парсинг сайтов: как с точки зрения закона выглядит один из самых полезных ИТ- инструментов по миру (и в России)?

                  image

                  Попробуем рассмотреть один из лучших способов сбора информации в интернете – парсинг – с юридической точки зрения. Внимание! Эта публикация касается некоторых обще-правовых вопросов, связанных с парсингом, но не является юридической консультацией. Статья является продолжением публикации "10 инструментов, позволяющих парсить информацию с веб-сайтов, включая цены конкурентов + правовая оценка для России"

                  Парсинг – это автоматизированный процесс извлечения данных с чужого веб-сайта. Но стоит разобраться, действительно ли это один из самых полезных инструментов ИТ для сбора данных или ловушка, влекущая неизбежные проблемы с законом? Парсинг мог бы непременно стать одним из совершеннейших способов добычи контента по всей сети, но к нему прилагается оговорка: с этим инструментом очень сложно разобраться с юридической стороны. Парсинг – это процесс, посредством которого автоматизированная часть программного обеспечения извлекает данные веб-сайта, «прочесывая» многочисленные страницы. Поисковые системы как Google и Bing делают нечто подобное, когда индексируют веб-страницы, а парсинговые механизмы идут дальше и преобразовывают информацию в формат, который позволяет этими данными пользоваться, заносить в базы или электронные таблицы.
                  Читать дальше →
                • Регулярные выражения для самых маленьких

                    Привет, Хабр.

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

                    Некоторые из них для наглядности будут показаны на примере языков программирования PHP или JavaScript, но в целом они работают независимо от ЯП.

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

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

                    Поехали!


                    Читать дальше →
                  • Полное руководство по переходу с HTTP на HTTPS

                    • Translation
                    • Tutorial

                    В наше время HTTPS обязателен для каждого веб-сайта: пользователи ищут замочек в адресной строке, когда передают личные данные; Chrome и Firefox недвусмысленно помечают как небезопасные веб-сайты с формами на страницах без HTTPS; это влияет на позиции в поисковой выдаче и оказывает серьёзное влияние на приватность в целом. Кроме того, сейчас имеется несколько вариантов получить бесплатный сертификат, так что переход на HTTPS — всего лишь вопрос желания.


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

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

                    Сюда включены детальные инструкции для владельцев виртуального хостинга на cPanel, администраторов серверов Apache HTTP и nginx под Linux и Unix, а также Internet Information Server под Windows.
                    Читать дальше →
                  • Сheat-sheets «регулярные выражения»

                      Ловите 2 плаката с регулярными выражениями в форматах A2 и A3.

                      Плакаты просто идеальные, потому что красивые и полезные сразу. Распечатайте, повесьте, любуйтесь и пользуйтесь.
                      Читать дальше →