Обновить
63.9

PHP *

Скриптовый язык общего назначения

Сначала показывать
Порог рейтинга
Уровень сложности

Парсинг постов из telegram каналов на PHP

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров92K
Привет, Хабр!

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

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

image

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

[UPDATE 2019-03-12]
Мой новый пост про парсинг телеграм каналов: habr.com/ru/post/354000. Более качественный код, микросервисы с открытым исходным кодом и новый публичный сервер для тестов.
[UPDATE 2023-10-08]
Важное напоминание: Телеграмм не разрешает парсить аудиторию каналов. Используя серверный клиент можно получить только те данные, которые видны в обычном, оффициальном приложении.
Читать дальше →

PHP-Дайджест № 126 (12 – 25 февраля 2018)

Время на прочтение2 мин
Количество просмотров16K


Свежая подборка со ссылками на новости и материалы. В выпуске: игра-головоломка, Yii 2.0.14, PHP-DI 6.0 и другие релизы, предложение о неизменяемых классах из PHP Internals, порция полезных инструментов, и многое другое.
Приятного чтения!
Читать дальше →

Migrate API и с чем его едят. На примере миграции форума Drupal 7. Часть 1

Время на прочтение14 мин
Количество просмотров6.6K
Migrate API и с чем его едят. На примере миграции форума по Drupal 7. Часть 1
Данное руководство является переводом статьи.

Хотелось бы поделиться своим опытом миграции форума с Drupal 7 на Drupal 8, а также рассказать о проблемах, с которым пришлось столкнуться во время этого процесса, а также об инструментах, которые я использовал. Кроме этого я расскажу о подводных камнях, которые встретились при миграции форума и терминов к нему.
Читать дальше →

Настройка среды разработки: кофейная гуща (Часть 2)

Время на прочтение5 мин
Количество просмотров6.1K
Настройка среды разработкиПривет, дорогой читатель!
В этот раз я хочу поделиться своим результатом настройки персонального окружения для работы с различными PHP-based проектами с использованием Puppet. В данной статье описываются результаты, которые были получены в процессе изучения и написания Puppet конфигурации.

Данная статья написана с целью показать один из способов это сделать. Я не хочу призывать к действию, а только делюсь тем, с чем я столкнулся, что сделал и как использую.

Статья будет очень длинной с уклоном в техническую сторону. Прошу под «кат».
Читать дальше →

Yii 2.0.14

Время на прочтение9 мин
Количество просмотров19K

Команда Yii рада представить новую версию PHP фреймворка: Yii 2.0.14. В неё вошло более сотни улучшений и исправлений, включая исправления безопасности.


В релиз вошли несколько изменений, которые могут повлиять на уже работающие приложения. Эти изменения описаны в UPGRADE.md.


Спасибо сообществу Yii за помощь в выпуске этого обновления!


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


Этот релиз знаменателен тем, что становится последним релизом в версии Yii 2.0, содержащим улучшения. Это значит, что мы сконцентрируем силы на разработке версии 2.1.x, в которую войдёт много новых улучшений, которые невозможно включить в ветку 2.0.х из-за ограничений по сохранению обратной совместимости. Несмотря на это, ветка 2.0.х будет получать исправления и улучшения безопасности. Сроки окончания поддержки 2.0.х будут объявлены вместе с релизом версии 2.1.


Убедитесь что версия фреймворка в composer.json прописана верно (~2.0.14) и вы не обновитесь на 2.1 случайно, когда он релизнется.


Ниже мы рассмотрим самые интересные улучшения и исправления релиза. Полный список можно, как обычно, найти в CHANGELOG.

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

ООП без «О»

Время на прочтение3 мин
Количество просмотров9.5K

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

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

Интеграция Asterisk и Битрикс24

Время на прочтение9 мин
Количество просмотров74K

В сети есть разные варианты интеграции IP-АТС Asterisk и CRM Битрикс24, но мы, все таки, решили написать свою.

По функционалу все стандартно:

  • Кликом на ссылку с номером телефона клиента в Битрикс24, Asterisk соединяет внутренний номер пользователя, от имени которого это клик совершен, с номером телефона клиента. 
В Битрикс24 фиксируется запись о звонке и по окончании вызова подтягивается запись разговора.
  • На Asterisk поступает звонок извне — в интерфейсе Битрикс24 показываем карточку клиента тому сотруднику, на номер которого этот звонок прилетел.
    Если такого клиента нет, откроем карточку создания нового лида.
    Как только звонок завершен, отражаем это в карточке и подтягиваем запись разговора.

Под катом расскажу как все настроить у себя и дам линк на github — да-да, забирайте и пользуйтесь!
Читать дальше →

PaEndpointBundle — альтернатива контроллерам Symfony

Время на прочтение3 мин
Количество просмотров3.4K
Основным способом для обработки запросов в Symfony являются контроллеры. С возможностью описывать роутинг непосредственно в контроллерах (аннотациями) жизнь стала еще лучше. Но использование аннотаций при наследовании контроллеров вызывает проблемы — для каждого дочернего контроллера необходимо заново прописывать роутинг. А ведь в crud-приложения типична ситуация, когда есть базовый контроллер и множество дочерних, которые наследуют логику базового контроллера, и роуты для которых можно было бы генерировать автоматически.
Читать дальше →

Разворачиваем автоматизацию за пару часов: PHPUnit, Selenium, Composer

Время на прочтение8 мин
Количество просмотров28K
Привет, Хабр! Меня зовут Виталий Котов, я работаю в Badoo, в отделе QA. Большую часть времени занимаюсь автоматизацией тестирования. Недавно я столкнулся с задачей максимально быстро развернуть Selenium-тесты для одного из наших проектов. Условие было простое: код должен лежать в отдельном репозитории и не использовать наработки предыдущих автотестов. Ах, да, и нужно было обойтись без CI. При этом тесты должны были запускаться сразу после изменения кода проекта. Отчёт должен был приходить на почту.

Собственно, опытом такого развёртывания я и решил поделиться. Получился своего рода гайд «Как запустить тесты за пару часов».

Поехали!


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

PHP-Дайджест № 125 (29 января – 11 февраля 2018)

Время на прочтение3 мин
Количество просмотров17K

Свежая подборка со ссылками на новости и материалы. В выпуске: Laravel 5.6 и другие релизы, свежие RFC из PHP Internals, порция полезных инструментов, и многое другое.
Приятного чтения!


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

Обновляем расширение Intl в PHP 7 на Linux Ubuntu 16.04

Время на прочтение3 мин
Количество просмотров26K
Программисты делятся на два типа: консерваторы, для которых переход на новую версию равносилен перелёту на другую планету (если читаешь это из Windows XP — поздравляю, это ты); и Викторы Цои, чьи сердца и глаза требуют перемен, и обновляют всё и вся при первой возможности. Если ты второго типа, и у тебя уже стоит последняя версия PHP на последней LTS версии Ubuntu, но покоя не даёт то, что расширение Intl использует устаревшую версию библиотеки ICU, или тебе просто понравились картинки из «Аватара» — добро пожаловать под кат! (Картинок больше не будет.)

Аватар

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

Как поднять проект на PHP в Docker под Windows

Время на прочтение6 мин
Количество просмотров19K

Чем является статья


Статья является набором простых, понятных инструкций и советов для пользователей Docker под Windows. Статья поможет разработчикам на PHP быстро поднять проект. Описываются проблемы и их решения. Статья полезна тем, кто не обладает бесконечным ресурсом времени, чтобы глубоко копаться в проблемах докера под Windows. Автор был бы бесконечно признателен, если бы ему ранее встретилась подобная статья и автор бы съэкономил бы много сил и времени. Текст может содержать ошибки и неточности.

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

Ваш пакет Composer сломан: обновите идентификатор лицензии

Время на прочтение2 мин
Количество просмотров7.7K

image


Если вы, как и я:


  • являетесь мэйнтейнером какой-либо библиотеки или фреймворка;
  • ваша библиотека или фреймворк выпущены под какой-либо свободной лицензией
  • ваша библиотека или фреймворк доступны к установке через Composer и размещены на сервисе Packagist;

то у вас, возможно, есть проблемы, о которых вы и не подозреваете.

Загляните под кат, чтобы узнать, что нужно сделать уже сегодня!

Ближайшие события

Операция «Ы» и новая библиотека ABI

Время на прочтение3 мин
Количество просмотров4K
Рад приветствовать тебя, дорогой читатель!

В данной статье пойдет речь о новой библиотеке «ABI Model Pattern». Наверное, было бы логично предоставить какой-то пример, чтобы показать все возможности этой библиотеки, но вот и нетушки… Сейчас я опишу только достаточный минимум, чтобы познакомить тебя с ней, предоставить твоему воображению создать правильную картинку и использовать её для реализации всех идей, которые придут тебе в голову.

image

Если подумать, каким образом можно создавать необходимые модели и поддерживать соответствие данных оным? Возникает следующая мысль:
Читать дальше →

Дружим gRPC с долгоживущим проектом, PHP и фронтендом

Время на прочтение11 мин
Количество просмотров23K


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


Мы расскажем о том, как объединить внешнее API с внутренним и что делать, если у вас много кода на PHP, но хочется воспользоваться преимуществами gRPC.

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

Отслеживаем действия пользователя с помощью CSS

Время на прочтение4 мин
Количество просмотров27K

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


Также здесь мы рассмотрим метод, как получить поведенческую информацию от пользователей используя только HTML и CSS.


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


Так или иначе, эта информация поможет вам понять один нестандартный метод отслеживания поведения пользователей, который на данный момент нельзя "отключить" (в настройках) или заблокировать (плагинами вроде AdBlock или Ghostery).

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

Хочу как у YouTube

Время на прочтение11 мин
Количество просмотров43K

Вы когда-нибудь задумывались как устроен ID видео на YouTube?
Возможно, вы уже знаете/нашли ответ, но, как показали обсуждения на Stack Overflow, многие понимают эту технологию неправильно. Если вам интересно изучить что-то новое, добро пожаловать под кат.


Хочу как у YouTube
Читать дальше →

История взлома одного WordPress плагина — или о том, как вы допускаете уязвимости в своих проектах

Время на прочтение7 мин
Количество просмотров16K
Давным давно, когда я был молод и писал сайты на PHP, я написал SEO плагин для маскировки внешних ссылок для Wordpress. Поскольку с воображением у меня плохо, то назвал его WP-NoExternalLinks. За всю историю у него было 360.000 установок и, кажется, до 50.000 активных установок.

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

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

Numphp — работа с числовыми векторными массивами и матрицами

Время на прочтение3 мин
Количество просмотров4.8K
Сегодня я бы хотел продолжить рассказ про замечательную библиотеку для работы с числовыми массивами в php numphp. Ранее я уже делал краткий обзор на неё тут. С тех пор библиотека обросла функционалом, и, что самое главное, научилась работать с многомерными массивами или матрицами. Про них, в основном и будет идти речь.

Без лишних вступлений сразу пример того, как можно создать матрицу 3 на 4, используя возможности numphp.

$matrix = new np_array([[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]);

// matrix
[[ 0,  1,  2,  3],
 [ 4,  5,  6,  7],
 [ 8,  9, 10, 11]]
Читать дальше →

Опыт веб-разработки при создании игры «Составь слова»

Время на прочтение7 мин
Количество просмотров9.6K
image

Хочу поделиться своим опытом работы над веб-проектом: реализацией игры «Составь слова». Игра представляет собой известную головоломку, в которой нужно составлять разные слова из одного длинного слова.

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