• Для чего нужен PHP парсер?

    Привет! Я пишу php-parser на Go, и самый часто задаваемый вопрос: “А зачем это нужно?”

    PHP парсер это библиотека которая разбивает текст на лексемы, а затем по грамматическим правилам, описанным в форме Бэкуса-Наура, собирает AST(Абстрактное синтаксическое дерево) с которым уже можно работать в языке программирования.

    Я собрал несколько примеров где это используется.
    Читать дальше →
  • Корпоративный справочник на python

    Часто, в территориально и инфраструктурно разнесенных офисах предприятия, сотрудники пользуются «файликом» для поиска номеров других сотрудников. Это связанно либо с отсутствием нормального корп.портала, бардаком в АД либо с ее отсутствием вообще.

    Задача:

    • Создать web справочник для компании со множеством партнерских и дочерних офисов;
    • Минимальный интерфейс для пользователей;
    • Вывод информации в табличном виде и детальный вывод отдельно взятого контакта;
    • Автодонабор имени в строке поиска;
    • Обеспечить возможность редактирования записей справочника секретарями офисов;
    • Обеспечить возможность ограничения прав на редактирование справочника;
    • Возможность вывести данные отдельного предприятия;
    • Отдельное отображение общих (сервисных) номеров.
    Читать дальше →
  • Небольшой фреймворк для написания и запуска selenium тестов (Java + TestNG + ExtentReports)

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

    Сам проект находится здесь.

    Краткая инструкция по использованию приводится ниже.
    Читать дальше →
  • Перемешивание файлов в папке

    Возможно, у вас возникло желание, например, при просмотре фото в своей папке перемешать их, смотреть их в случайном порядке. Т.к. (как минимум на Windows 7) возможно только отсортировать файлы по их имени, размеру и т.д., я решил создать программу, для перемешивания нужных файлов.
    Читать дальше →
  • Тройное комбо в области парсинга данных, или как мы сделали кроулер сайтов на основе ИИ, двух тысяч прокси и Chrome API

    Задача стояла следующая: собрать данные с израильской доски объявлений, которая блокирует на входе все страны кроме Израиля и некоторых европейских (исключая Россию). Далее блокирует всех, кто ведёт себя хотя бы сколько-нибудь подозрительно. Например, при запросе страницы сайта чаще 1 раза в 3 секунды уже есть возможность попасть в бан-лист. Далее, чтобы узнать номер телефона автора объявления (без которого все остальные бесполезны) нужно пройти капчу на иврите (местный язык). Т.е. доступную только евреям. Иными словами, создатели сайта явно против того, чтобы их парсили. Но мы решили попробовать.
    Читать дальше →
  • Глоссарий ElasticSearch

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

    Примечание переводчика:
    Это перевод глоссария ElasticSearch из официальной документации.

    Устоявшихся русских терминов для данной предметной области найти не удалось. Пришлось тщательно продумывать как лучше перевести. Кривой термин будет сильно сбивать с толку новичка (а гуру глоссарий неинтересен по определению — и так всё знает). Равно нет никакой пользы от «переводов» вида shard-шард, node-нода, mapping-мэппинг. Тогда уж лучше читать в оригинале. Во избежание путаницы в скобках приведены оригинальные термины.
    Явные ошибки и опечатки прошу отправлять в личку. А вот корректность выбора терминов и формулировок определений лучше обсудить в комментариях. Предполагаю, что возможны очень разные мнения. Также, на мой взгляд, кое-что в оригинале написано не сильно удачно и понятно — можно сформулировать лучше, но в переводе старался по возможности обойтись без «отсебятины». Надеюсь на понимание. Спасибо.

    Читать дальше →
  • Как развернуть ethereum ноду для тестов смартконтрактов

    В сети уже много перепостов на тему «Где взять полную ноду к ethereum смарт-контракту для тестов». Все они либо предлагают развернуть локальную ноду, либо копируют официальную инструкцию и не решают проблемы. Публичные ноды, например infura не позволяют полноценно проводить тесты, например функция personal_unlockAccount ей не поддерживается.

    Цель данной публикации, популяризация криптовалют, это действительно просто.

    Сегодня мы создадим ноду на локальном компьютере под Windows 7, доступную из с любого компьютера в сети интернет.
    Читать дальше →
  • Процесс компиляции программ на C++

    Цель данной статьи:


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

    Читать дальше →
  • Router by Centos. Этап первый DHCP-сервер

    Введение


    Хочу создать ряд постов на тему настройки роутера на базе серверной CentOS при наличии пяти сетевых карт, трех провайдеров и двух подсетей, а также PXE boot загрузчика и фаервола. В этой статье будет рассмотрено установка и базовая настройка DHCP сервера. В статье не будет чего то особенного кроме настройки вывода логов в отдельный файл.

    Установка DHCP — сервера CentOS


    Для того что бы установить DHCP-сервер на CentOS достаточно под root or sudo выполнить следующие команды:

    yum upgrade -y
    yum install dhcp -y
    
    Читать дальше →
  • Windows 10 опять проснулся ночью, вышел из режима сна или гибернизации, решаем проблему

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

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

    Давайте подумаем, как же помочь бедняжке, ведь ничего сложного в этом не должно быть, ведь все просто и понятно простому пользователю в системе Window 10.
    Читать дальше →
  • Тяжелая терапия: лекарство от палева для MacOS

    Вы скажете, что тут и из коробки все отлично и вроде все гениально, вплоть до автогенерации такого пароля для web-сайтов, который даже зрительно не воспринимается с пятой попытки, однако, представим себе, что для нас важно защититься не только от повседневных хакеров, но и от самих разработчиков системы.
    Читать дальше →
  • Сервис DDNS от Яндекс, теперь и на BASH

    DDNS использую довольно давно, сначала был доступ к бесплатному от D-Link, потом попробовал API Яндекс. Оба устраивали, но Яндекс привлёк тем, что позволяет использовать своё доменное имя. Это удобно и более привлекательно, чем что-то за пределами РФ, на мой взгляд
    Читать дальше →
  • Добавление сторонней программы в контекстное меню Windows

    Здравствуйте. Недавно столкнулся с задачей, часть которой состояла в добавлении сторонней (для Windows) программы в запуск через контекстное меню, с передачей ей пути к файлу.

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

    Программа, для вызова из контекстного меню

    Для тестирования была написана простейшая программа на Qt/C++. Ее суть заключается в отображении полученного аргумента (пути файла):

    #include <QtCore/QCoreApplication>
    #include <iostream>
    #include <cstdlib>
    #include <QString>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
        QString com = argv[1]; //Приравнивание аргумента к переменной для определения его наличия, как такового
        if(com.size() == 0) //Если размер переменной 0, следовательно, аргумент не был передан
        {
            cout<<"Path is not passed"<<endl;
        }
        else
        {
            cout<<"Path: "<<com.toStdString()<<endl;
        }
        system("pause");
        return a.exec();
    }
    
    Читать дальше →
  • Бюджетный хакинтош ASUS K541UV для web-разработки

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

    image

    Мой интерес к этому ноутбуку ASUS возник не просто так. В первую очередь стоит отметить в качестве достоинства очень легкий вес ноутбука и наличие замечательной акустической системы Sonic Master, а также разрешение экрана 1920x1080, что прекрасно подходит не только для web-разработки, но и для просмотра фильмов или для развлечения в каких-то малых графических требований игр типа Ведьмак 2. Грубо говоря, за стоимость 580$ на момент покупки мы имеем отличную альтернативу тому же MacBook Air, но более удобный для разработчика экран и обалденные звук.
    Читать дальше →
  • Машинное обучение и анализ данных: разбор программы обучения и основные проблемы



    Машинное обучение и анализ данных — обзор Специализации от Яндекcа & МФТИ (5 курсов + финальный проект), предложенной на образовательной платформе Coursera. Статья представляет собой исключительно мнение автора как выпускника, не является рекламой и/или умышленной критикой, а скорей служит вводным инструктажем для тех, кто начинает обучение по данной тематике.

    Вам может быть полезна данная статья если:

    • Вы хотите “попробовать на вкус” программирование на Python и понять для себя основные принципы работы моделей машинного обучения, использующихся для работы с данными
    • Вы рассматриваете для себя возможность пройти какой-либо обучающий курс по данной тематике и вам интересно оценить, насколько Специализация от Яндекса & МФТИ подходит для этого
    Читать дальше →
  • Мониторинг серверов через IPMI в Zabbix

    Введение


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

    В качестве средства мониторинга у нас используется Zabbix 3.0. Вопрос аппаратного мониторинга до этого не поднимался.

    В ходе поисков способа решения данной задачи я остановился на мониторинге через IPMI. Дальнейшие поиски решения навели меня на замечательную статью Vengant Мониторинг серверов HP через iLO в Zabbix. К сожалению его решение подошло мне не полностью, поскольку ориентировано только на HP и не всегда корректно получает информацию с сенсоров. Но сам ход мыслей понравился и я решил действовать в этом же направлении.

    По итогам решения этой задачи был создано универсальное решение, которое:

    • Использует функцию Auto Discovery. Ручная работа сведена к минимуму. Достаточно добавить новый узел сети, прописать ему ip адрес IPMI и параметры аутентификации
    • Работает для всех вендоров и моделей серверов с IPMI 2.0
    • Корректно находит все сенсоры, считывает по ним информацию и рапортует если случилась беда
    Читать дальше →
  • Как сделать так, чтобы Daily/Stand-up не был похожим на встречу по статусу?

    Хотя Daily Scrum или Stand-up встречи принципиально отличаются от отчетных встреч, иногда первые становятся похожими на вторые. Чтобы этого избежать, давайте рассмотрим отличия хорошего эффективного Daily/Stand-up и не лучшей сферической встречи по статусу в вакууме, а затем будем стараться придерживаться хороших практик или избегать плохих.

    Daily Scrum / StandUp
    Встреча по статусу
    Для кого проводится?
    Для команды разработки (DevTeam).
    Для менеджера, руководителя, координатора.
    Цель встречи
    Из ScrumGuide:
    • Запланировать работу на следующие 24 часа.
    • Оптимизировать взаимодействие и производительность команды путем инспектирования работы, выполненной после предыдущей Ежедневной встречи, и предсказания предстоящей работы Спринта.
    • Улучшить коммуникации, устранить другие встречи, выявить препятствия для устранения, поощрять быстрое принятие решений, повысить уровень знаний команды разработки.

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

    Предлагаю Вашему вниманию перевод потрясающей статьи "Crypto-tokens for Small Companies?", опубликованной Daniel Blank в собственном блоге на hackernoon.com, описывающий основные моменты запуска ICO и внедрения токенов в Ваше предприятие.


    Способны ли маленькие компании урвать кусок пирога?
    Я думаю, что они способны


    В 2017 ICO собрали более $6 миллиардов для начинающих компаний, которые были достаточно смелыми для освоения этого нового и захватывающего мира.


    Но ICO чрезмерно дорогостоящая вещь: проведение успешного ICO оценивается от $500 тысяч до $1.5 миллионов. Для тысяч небольших компаний и брендов эти числа совершенно недостижимы.

    Читать дальше →
  • Уязвимость Мой Мир@Mail.Ru: слив фотографий и переписок

    На фоне новостей об утечке персональных данных из facebook, я решил вспомнить об одной интересной уязвимости, которая присутствовала в социальной сети «Мой Мир» от Mail.Ru Group.



    Воспользоваться уязвимостью можно было через REST API проекта. Ей был подвержен любой пользователь, который хотя бы раз передавал токен какому-либо приложению. Т.е. встроенные игры, oauth-авторизация и, конечно, официальные приложения iOS и Android.
    Читать дальше →
  • Понятийный аппарат искусственного интеллекта

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

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

    Робота можно научить разговаривать на любом языке мира. Робота можно научить играть в футбол. Робота можно научить рассказывать истории, водить автомобили, озвучивать новости на телевидении, продавать товары и т.д. Но как заставить робота принимать самостоятельные решения?
    Читать дальше →