Обновить
67.3

PHP *

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

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

Простая аутентификация на PHP

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

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

Disclaimer: статья рассчитана на совершенных новичков. Умудрённые опытом разработчики ничего нового здесь не найдут, но могут указать на возможные недочёты =).

Читать далее

Как ускорить работу на macos в Docker окружении с помощью Mutagen

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

Если вы работали на macos в docker окружении, то наверняка сталкивались с проблемой в производительности, например, при работе над php проектом, операции с файловой системой (обновление пакетов composer, ребилд контейнеров symfony, etc.) занимают просто неадекватное количество времени. Об особенностях работы docker'а на macos написано уже множество статей, а также workaround'ов как заставить его работать быстрее. В этой небольшой статье покажу как в решении этой проблемы Mutagen помог мне с php проектом и быть может поможет вам.

Читать далее

Функциональные тесты на проекте: жизнь до и после (на примерах)

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

Наша команда отвечает в Skyeng за личный кабинет и CJM пользователя до оплаты. Изначально проект был написан на Symfony 4.4 и представлял собой набор слабо связанных компонентов, которые были ответственны за правила работы для фронтенда.

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

У нас были лишь юнит-тесты: каждый покрывал логику одного класса. Все тесты вместе давали покрытие основной логики кода и гарантию, что все работает правильно. Но 100% покрытие кода тесты не обеспечивали. И сейчас не обеспечивают.

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

И мы обратились к функциональным.

Читать далее

Как ускорить выборку в 1с Битрикс в 20 раз

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

Как ускорить 1С БИТРИКС и снизить кол-во запросов к БД используя ядро D7.

Пример выборки элементов IBlock с пользовательскими свойствами в один запрос.

Читать далее

PHP Дайджест № 222/3 (26 марта – 25 апреля 2022)

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

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

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

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

Читать далее

Сравнение сервисов фильтрации нецензурной лексики

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

Недавно понадобилось мне подключить мой проект (сайт на WordPress, Телеграм-канал, ВК группу) к фильтру матов и озадачился я предложениями, которые выдает интернет. Поэтому решил проанализировать те, что смог найти и составить личный список, который, надеюсь поможет коммунити Хабра.

Читать далее

Новости Yii 2022, выпуск 1

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

Всем привет!

Мы думали, что 2021 был тяжёлым годом из-за COVID. Текущий 2022 очень неприятно удивил.

Начался он с потери важного члена сообщества и отличного человека, Юлии "Insolita". Продолжился тем, что Россия начала полновесную военную операцию в Украине.

Что же мы имеем на данный момент?

Читать далее

Как мы 40% RAM освободили

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

О том, как мы столкнулись с огромными проблемами легаси сервиса фильтрации каталога и срочно начали думать, как это исправить переписать. О том, что у нас вышло с помощью redis, rabbit, bitrix -  в статье.

Читать далее

Не сажайте сотрудника для медиамониторингов вручную

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

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

Читать далее

Профилируем php на бою

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

Привет Хабр! Последняя статья про инструменты для профилирования php датируется аж  2018 годом. Но все перечисленные решения разработаны много лет назад и имеют недостатки: древний интерфейс btp (аналог pinba), оверхед xhprof и необходимость ручного запуска phpspy на stage.

Я тимлид в рекомендательном сервисе Zoon и перед моей командой стояла цель найти инструменты, которые профилируют весь код на проде 24/7 и хранят данные. Инструменты, с которыми могут работать рядовые разработчики, без доступа к проду. Инструменты, которые позволяют находить "бутылочные горлышки" за 30 секунд.

В конце 2021 года показался свет в конце туннеля, в виде системы на основе семплирующего eBFP профайлера: prodfiler

С какими трудностями мы столкнулись при настройке и что вышло в итоге - под катом.

Читать далее

Найти за полсекунды: сравниваем похожие фотографии

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

Привет, меня зовут Петр и я работаю в Badoo в команде биллинга. В этой статье я хочу поделиться своим опытом работы над пет-проектом по созданию хранилища фотографий с возможностью поиска дубликатов. Я расскажу, с каким багажом я вошел в этот проект, в чем заключалась задача и как её решал. В конце поделюсь результатами и почему я считаю, что это один из лучших проектов, которым я занимался. 

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

Казалось бы, достаточно банальная задача. Если бы не еще одно условие: хорошо бы сопоставлять фотографии с уже имеющимися: искать дубликаты и помечать их. 

Читать далее

PHP фреймворк отечественной разработки

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

Друзья, всем пример. Меня зовут Макс и я хочу познакомить вас с IsEngine framework.

Это новый фреймворк отечественной разработки для простого и быстрого создания web-приложений.

Я занимаюсь его разработкой в течение последних 5 лет. Сейчас готовлю его к релизу, и поэтому начинаю продвигать.

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

Читать далее

Joomla-дайджест за 1-й квартал 2022 года

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

На самом деле чуть больше ?. Все главные новости из мира Joomla с момента выхода предыдущего дайджеста 30 ноября 2021 года в одной статье. Традиционно наш дайджест обозревает новости, расширения, шаблоны и статьи из мира Joomla. Прошлый выпуск вы можете прочитать здесь.

Читать далее

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

Хватит говорить, что PHP мертв

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

Это не так. PHP не умер. Он жив, и до “конца жизни” ему еще очень далеко. На этом все. Как бы некоторые ни хотели, чтобы он исчез, этого не произойдет. По крайней мере, в обозримом будущем уж точно.

Читать далее

Наведите порядок! Очистка вашего PHP-приложения с помощью PHPStan

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

За то время, что я работаю PHP-разработчиком, способ написания и доставки кода сильно изменился. В ранних приложениях Symfony и Zend Framework группы PHP-FIG не существовало, а стандарты кодирования определялись на усмотрение того, кто их писал. На протяжении тех лет, когда мы наблюдали широкое распространение стандартов PSR, надежные инструменты статического анализа были несколько разрозненными. Так было до настоящего времени, пока не вышла версия 1.0 PHPStan. Давайте отметим это событие, ознакомившись с некоторыми ее возможностями.

Читать далее

Почта для домена в Telegram

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

Дважды начинал эту заметку ибо откровений и контента мало. Решая личную проблему переезда входящей почты с Yandex 360, оказалось, что бесплатных парковок "на западе" не имеется. Zoho как альтернатива, определенно, хорош, но 90 центов за домен в месяц для десятка доменов с сотней текстовых входящих показалось избыточным. На коленке был собран wizard, связывающий SendGrid и Telegram вместе.

Читать далее

Советы по работе с легаси кодом в PHP

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

Сколько раз, приходя в новую компанию, вы получали в руки “большой комок грязи“, к которому каким-то образом нужно прикручивать новый функционал?

Без документации.
Без контроля версий.
Без какой-либо надежды на душевное равновесие в будущем.

Читать далее

Свой Composer без баннеров

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

Короткий мануал их 7 шагов о том, как собрать из официальных исходников свой Composer без политических лозунгов авторов или просто внести свои изменения и подписать валидной сигнатурой.

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее