Рубрика «php» - 68

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

Привет. Хочу пригласить бэкендеров на Backend United #1. Винегрет — митап, посвященный кросс-языковым решениям для разработки серверной части. Обсудим общие подходы и инструменты для разных языков. Вы услышите доклады от представителей Gett RnD и Avito. Встреча пройдет в среду, 18 апреля, в московском офисе Avito.

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

Backend United #1. Винегрет. Анонс - 1

Читать полностью »

Привет. Меня зовут Евгений Удодов, я сооснователь и технический директор компании Roistat. Хочу поделиться нашим опытом разработки большого и сложного продукта — системы аналитики.

TL;DR: Мы выложили на github наш Code Conventions и рассказали в статье о том, как его применять на практике.

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

За 4 года существования нашего проекта мы сделали больше 20 000 Pull Request’ов (далее PR) и под катом я расскажу, как же мы решили эти проблемы.

Code Conventions: как мы сохраняем быстрый темп разработки PHP-проекта - 1
Читать полностью »

Книга «Безопасность в PHP» (часть 2). Атаки с внедрением кода - 1

Книга «Безопасность в PHP» (часть 1)

В списке десяти наиболее распространённых видов атак по версии OWASP первые два места занимают атаки с внедрением кода и XSS (межсайтовый скриптинг). Они идут рука об руку, потому что XSS, как и ряд других видов нападений, зависит от успешности атак с внедрением. Под этим названием скрывается целый класс атак, в ходе которых в веб-приложение внедряются данные, чтобы заставить его выполнить или интерпретировать вредоносный код так, как это нужно злоумышленнику. К таким атакам относятся, например, XSS, внедрение SQL, внедрение заголовка, внедрение кода и полное раскрытие путей (Full Path Disclosure). И это лишь малая часть.

Читать полностью »

Matthias Noback (автор A year with Symfony) опубликовал цикл из трех статей, в котором описал свои взгляды на идеальную архитектру корпоративных приложений, сформировавшуюся за долгие годы практики.Первая часть является вводной и не представляет особого интереса(можно ознакомиться в оригинале). Перевод второй — по ссылке. И так как он вызвал БЕШЕННЫЙ ажиотаж(целых ДВА человека подискутировали со мной в комментах), то не перевести третью было бы преступлением.

В предыдущей статье мы обсудили разумную систему расслоения проекта, состоящую из трех слоёв:

  • Домен
  • Прикладной слой
  • Инфраструктура

Сейчас, подробно рассмотрим инфраструктурный слой.

Читать полностью »

Велосипед-CMS. Как я увлекательно провел шесть дней из-за комментария на Хабре - 1

Эта история началась с комментария к моей статье на Хабре. Точнее, с части этого комментария:

«Попробуйте постройте приложение уровня и функционала WordPress — и оно точно так же будет задыхаться от наплыва пользователей»

Я посчитал это аргументом в стиле «сперва добейся» и, в общем, прошел мимо. Но некоторое время спустя звезды сложились совершенно неожиданным образом. Во-первых, я лишился основного источника дохода. Во-вторых, после недели судорожных метаний я решил прекратить это занятие и отвлечься на что-нибудь постороннее. Где-нибудь на неделю. Растущие бюджетные дыры и случайная простуда решительно сократили список возможных развлечений.

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

Вот так сошлись звезды. А результаты этого моего эксперимента — в статье.

Читать полностью »

Пользуясь случаем, хотелось бы лишний раз напомнить о существовании сертификации PHP инженеров. На дворе уже 2018й и мир увидела PHP 7.2, сертификация постоянно обновляется. Текущая версия: ZCPE-2017. Получить сертификат сейчас, или все же дождаться выхода обновленной версии — решать вам.
Читать полностью »

DoctrineSolrBundle

Добрый день, хочу представить свой symfony 2 бандл для автоматической синхронизации Doctrine entity в Solr и последующим поиском. Бандл предназначен для работы с Solr на уровне Doctrine entity и позволяет избежать написания низкоуровневых запросов в solr. Процесс установки и подробную документацию можно посмотреть на github.

Возможности

Реализованы основные (не все) возможности поиска стандартного парсера запросов Solr:
Wildcard Searches
Fuzzy Searches
Range Searches
Boosting a Term with ^

Также реализована поддержка SuggestComponent
Читать полностью »

Как отследить загрузку файлов со своего сайта на WordPress - 1

Возникла задача отслеживания загрузок файлов с сайта (изображений, документов, видео, дистрибутивов, …), т.к. обычные сервисы статистики не могут это делать без изменения URL файлов. И статистика должна быть видна в привычном месте (например, Google Analytics или FireBase).

Перебрав несколько плагинов (большинство имеют в названии слова Download и Manager), я обнаружил, что все они организованы по принципу ручного составления списка файлов для мониторинга. И во многих из них реализованы защиты от неавторизированного скачивания, что в данной задаче избыточно. Можно было бы воспользоваться ими, но если файлов много, то в итоге:

  • слишком неудобно и долго заводить элемент под каждый файл;
  • файлы могут менять свое расположение – опять придется исправлять элемент.

В итоге сделана своя реализация в виде плагина к WordPress, в котором просто указывается каталог (относительный путь сайта) и далее происходит мониторинг загрузок его содержимого.

Ссылка на бесплатный плагин тут для тех кому информации выше достаточно. Дальше приведены примеры результатов статистик и подробности технической реализации.
Читать полностью »

Индустрия хостинга неразрывно связана с PHP, на котором полностью или частично написаны более 80% сайтов в Internet. Это сильно влияет на разработку любого софта, предназначенного для работы с хостингом — в том числе такого, как контрольная панель Plesk. Мы делаем продукт для автоматизации управления сервером, создания и конфигурации веб-сайтов и приложений, а значит, и для использования PHP. Одной из наших ключевых задач является необходимость поддерживать уже устаревшие версии PHP – сфера хостинговых услуг, как любой крупный рынок, довольно инертна, и переход на новый PHP происходит крайне медленно. Несмотря на то, что Plesk предоставляет пользователям самые свежие версии PHP в течение 48 часов после их релиза, миллионы сайтов продолжают работать на старых версиях, поэтому спрос на решения, которые могут предоставить их поддержку, остается высоким. Именно по этой причине Plesk продолжает поддерживать и EOLed-бранчи до PHP 5.2 включительно.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js