Как стать автором
Обновить
26.2
Рейтинг

PHP *

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

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

Разница между python и php

Разработка веб-сайтов *PHP *Python *Программирование *Анализ и проектирование систем *

Год назад я полностью перешел в разработку на Python. До этого около 4-х лет писал в основном на PHP. В процессе работы я постоянно сравнивал эти 2 языка и сейчас решил уложить это все в одной статье, чтобы структурировать плюсы и минусы. Для вас эта статья может быть полезна, чтобы разобраться, какой выбрать для ваших задач.

Читать далее
Всего голосов 24: ↑9 и ↓15 -6
Просмотры 3.3K
Комментарии 8

Новости

PHP-скрипт для защиты от парсинга и ботов

Информационная безопасность *PHP *
Recovery mode
Из песочницы
Tutorial

PHP-скрипт для защиты от парсинга и ботов, нагружающих сервер "мусорными" запросами и затрудняющий парсинг.

Читать далее
Всего голосов 31: ↑12 и ↓19 -7
Просмотры 6.6K
Комментарии 51

Управление приватными php репозиториями с помощью Composer и Satis

Блог компании OTUS PHP *Программирование *
Перевод

Как у организации, создающей вручную несколько качественных сайтов в год, у нас быстро возникла необходимость извлечения максимальной выгоды из определенного набора базовых средств. Несмотря на то, что некоторые из них были публичными или аутсорсными, как, например, наш фреймворк Wonderwp или библиотека pew.js, остальные мы бы хотели по возможности оставить приватными.

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

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Просмотры 600
Комментарии 2

Laravel: разработка пакетов

PHP *TDD *Laravel *
Tutorial

Каждый разработчик рано или поздно сталкивается с необходимостью повторного использования собственного кода. В проектах PHP для этих целей создаются пакеты, устанавливаемые с помощью Composer. При этом пакеты могут быть абстрагированы от каких-либо фреймворков, либо могут быть предназначены для использования в конкретном PHP-фреймворке. В данной статье рассказывается о том, как создать PHP-пакеты для фреймворка Laravel, но материал будет полезен и тем, кто собирается разрабатывать любые другие PHP-пакеты (как публичные, так и приватные).

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

Данная статья в большей мере ориентирована на начинающих разработчиков.

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 1.9K
Комментарии 0

Скрапинг с Goutte (crawler). Парсинг сайтов с использованием библиотеки Goutte

PHP *
Recovery mode

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

Читать далее
Всего голосов 2: ↑0 и ↓2 -2
Просмотры 1.3K
Комментарии 2

4.04: День веб-мастера. Дело пахнет нафталином?

Блог компании RUVDS.com Разработка веб-сайтов *PHP *HTML *Серверное администрирование *
Впервые с веб-мастером я столкнулся в 2009 году. На вид это был типичный ботаник, который пришёл на встречу в кафе и шустро начал рисовать на бумаге схему будущего сайта. В тот момент он почему-то решил, что я и есть предприниматель, которому нужен сайт магазина чешского стекла. Но я был системным администратором большой компании и просто помогал знакомому договориться с джедаем сайтостроения. Мой собеседник сыпал умными словами, однако, суть была простой: фактически он предлагал стандартный сайт на Joomla, но мне собирался продать это минимум как разработку экстра-класса. Скоро мне надоела эта болтовня, я выдал свой ИТ-бэкграунд и мы расстались, покурив на прощание на крыльце. Мастер уехал на Toyota Land Cruiser, я на Ниве. Много думал. Сайт другу в итоге сделал веб-мастер из Самары: быстро, качественно, по разумной цене. На Joomla, конечно. Нет уже ни сайта, ни бизнеса, ни моей компании, судьбу веб-мастера я невольно отслеживал несколько лет среди френдов — он ушёл в энтерпрайзную Java-разработку. 

Так получается, что веб-мастеринг тоже — того, всё? 


Олдовый котик машет лапкой из олдового web 1.0. Кстати, многие лендинги и сайты выглядели как раз в стилистике этой картинки: куча цветов, максимум информации, непонятные клипарты и неизменный WordArt с самыми забористыми шрифтами
Читать дальше →
Всего голосов 36: ↑36 и ↓0 +36
Просмотры 6.6K
Комментарии 10

PHP Дайджест № 222/2 (22 февраля – 25 марта 2022)

Разработка веб-сайтов *PHP *Symfony *Yii *Laravel *

Дисклеймер: Нет, это не дайджест авторства Романа Пронского. К сожалению, у меня нет достоверной информации - будет ли выходить его дайджест далее.

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

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

Читать далее
Всего голосов 29: ↑28 и ↓1 +27
Просмотры 4.4K
Комментарии 24

Авторизация пользователей в системе через сервер аутентификации Blitz Identity Provider (bitrix + slim + react)

PHP *API *ERP-системы *
Из песочницы

В данной статье мы рассмотрим систему аутентификации пользователей и внешних систем в личном кабинете через сервер аутентификации Blitz Identity Provider. 

Согласно требованиям проекта, который мы рассмотрим здесь в качестве примера, взаимодействие клиентской и серверной частей должно происходить по Rest API, реализованном на микрофреймворке Slim. Для авторизации пользователей необходимо провести интеграцию с сервером аутентификации Blitz Identity Provider, который в свою очередь интегрирован с внутренней системой единого входа заказчика (SSO). Это мастер-система, определяющая возможность доступа и уровень доступа пользователя для личного кабинета является Blitz. Поэтому при каждой авторизации пользователя в системе обновляется уровень доступа по данным из Blitz. 

Данные в личный кабинет должны приходить из систем хранения информации (ERP и SRM) и управления учетными записями пользователей, также использующие Rest Api Личного кабинета. Эти системы должны проходить аутентификацию напрямую в ЛК.

Содержание:

Описание системы Blitz Identity Provider и протокола авторизации OAuth 2.0

Схема работы личного кабинета с Blitz

Аутентификация React-приложения в системе

Аутентификация внешних систем

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 1.5K
Комментарии 7

Новое в Joomla 4.1

CMS *Разработка веб-сайтов *Open source *PHP *Joomla *

15 февраля 2022 года вышла Joomla 4.1. В неё привнесено более 200 изменений, включающих как исправления ошибок, патчи совместимости с PHP 8, так и новый функционал. О новинках пойдёт речь в этом небольшом обзоре.

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 3K
Комментарии 5

Кэш HTML на стороне NGINX с помощью Redis

PHP *Nginx *Laravel *
Tutorial

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

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

Читать далее
Всего голосов 3: ↑0 и ↓3 -3
Просмотры 1.5K
Комментарии 17

Magento 2. Добавление картинок в динамический массив

PHP *Разработка под e-commerce *Magento *
Из песочницы

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

Читать далее
Всего голосов 4: ↑3 и ↓1 +2
Просмотры 632
Комментарии 1

API Вконтакте: автопостинг записей в сообщество Вконтакте

PHP *ВКонтакте API *
Из песочницы

Сегодня мы с вами рассмотрим скрипт для автопостинга записей с сайта в сообщество Вконтакте. Вы научитесь работать с API вконтакте, создавать свои приложения, писать парсеры для отправки запросов в Вконтакте. Всю работу мы будем прописывать на языке PHP.

Читать далее
Всего голосов 3: ↑2 и ↓1 +1
Просмотры 1.9K
Комментарии 4

Дженерики в PHP

Разработка веб-сайтов *PHP *
Перевод

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

Давайте поговорим о том, что такое дженерики, почему PHP их не поддерживает и что, возможно, нас ждёт в будущем.

Читать далее
Всего голосов 16: ↑9 и ↓7 +2
Просмотры 3.6K
Комментарии 8

Контракты. Что это и с чем едят. Часть 1

PHP *ООП *
Из песочницы

Многие из вас, вероятно, слышали об упоминаний контрактов во время обсуждения кода. Фразы наподобие "Код должен соблюдать контракт интерфейса", "Юнит-тестами тестируется не код, а контракт класса", "Тестируйте не код, а контракты" и т.п. Сегодня постараемся понять, что такое контракты и что они дают.

Читать далее
Всего голосов 8: ↑4 и ↓4 0
Просмотры 4K
Комментарии 10

Joomla 4: классы JText и Text. Из неопубликованного

CMS *Разработка веб-сайтов *PHP *Joomla *

Попытаюсь рассказать здесь о некоей коллизии, с которой столкнулся, переписывая старый свой модуль Joomla 3 под Joomla 4. Материал, хочу надеяться, будет интересен профессиональным разработчикам расширений Joomla, несмотря на то обстоятельство, что автор данного текста таковым не является, давно отойдя не только от программирования под Joomla, но и вообще от кодинга на PHP.

Читать далее
Всего голосов 5: ↑3 и ↓2 +1
Просмотры 803
Комментарии 12

Отображение данных из подписанного ЭЦП PDF-файла в Joomla

CMS *Разработка веб-сайтов *Криптография *PHP *Joomla *
Tutorial

На Joomla CMS сделано очень много сайтов для образовательных учреждений самого разного уровня и сложности. На сайты образовательных учреждений распространяется (на момент написания статьи) Приказ Рособрнадзора от 14.08.2020 №831, согласно которому документация должна быть на сайте образовательного учреждения в текстовом и табличном виде, а так же в виде файлов, подписанных электронной подписью (ЭЦП, ЭП).

Данная статья показывает, как можно автоматизировать отображение данных о подписанте из PDF-файлов применительно к Joomla CMS (и не только), дабы избежать огромного количества ручной работы при изменении документации.

В конце статьи прикладывается ссылка на скачивание готового плагина для Joomla 3 и 4.

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 2.4K
Комментарии 7

Архитектура на «микросервисах» в монолите: проект из практики

Блог компании Конференции Олега Бунина (Онтико) Блог компании Skyeng PHP *Node.JS *Микросервисы *

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

На старте было просто: связаться с нами можно было только через почту. Входящим ящиком был IMAP, исходящим — SaaS сервис по отправке почты, забрать письма с которого было то еще приключение. Мы смотрели на заголовки и соединяли письма в цепочки, как в любом почтовике: Gmail, Outlook. В таком виде передавали операторам. 

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

Так появился проект линковка.

Читать далее
Всего голосов 19: ↑19 и ↓0 +19
Просмотры 6.5K
Комментарии 2

Организация PHP-тестов с большими массивами данных

Тестирование IT-систем *PHP *TDD *Тестирование веб-сервисов *

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

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

В результате был написан скрипт, который позволяет извлекать массивы данных из php-файлов, а также из обычных текстовых файлов, и подставлять эти данные в код теста. Позже этот скрипт был оформлен в php-пакет test-data-provider.

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 1.8K
Комментарии 2

Автоматические имена роутов Laravel

PHP *Laravel *

Часто разработчики при создании проектов пренебрегают именованием маршрутов по разным причинам, например, когда они вообще не обращаются к ним используя метод `route()`. Это обусловлено архитектурой приложения и в этом нет ничего зазорного. Но есть и такие проекты, где имена маршрутов являются неотъемлемой частью проекта, но случается так, что не ко всем идёт применение имён. Об этом мы и поговорим.

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Просмотры 2.4K
Комментарии 40

Вклад авторов

Работа

PHP программист
211 вакансий