возможно ли тест: множественный запрос (напр. 100 раз в сек) от одного и того же IP, т.е.
что-бы обнаружить атаку? как организована такая защита на Slim?
как лучше организовать защиту? Будет о защите на уроках?
Дмитрий Елисеев
Да, добавим Rate Limiter.
Arunas
Срасибо
Ruslan
Странно, чтоб сайт на PHP сам боролся с DDOS. Просто поставьте ограничение в фаерволе ведь он наверное для этого. Да и вообще по ситуации, есть различные ситуации - разные решения.
Алексей
Согласен. Если по серьезному начнут ddos-ить, то в первую очередь ляжет сервер. До web приложения не дойдет
Ruslan
rate limit можно наложить на любой порт и на 80, 443 тоже.
Denis
В чем разница между PhpUnit и Codeception?
Почему во всех уроках используете PhpUnit?
Дмитрий Елисеев
Codeception построен поверх PHPUnit, дополняя его своими модулями для готовых фреймворков и позволяя делать функциональные и приёмочные тесты в своём Cest-стиле.
Он с модулями удобен как быстрое решение для готовых фреймворков, но неудобен для кастомных проектов с вынесенным фронтендом.
Поэтому мы возьмём оригинальный PHPUnit для тестов API, отдельный JS-фреймворк для тестов JS и отдельный BDD-фреймворк для приёмочных тестов всей системы.
Юрий
Дмитрий, спасибо за урок, все замечательно, а был ли у Вас опыт использования мутационного тестирования? Если да, то что думаете по этому поводу? Спасибо.
Дмитрий Елисеев
Особо не использовал из-за медленной работы, но вещь полезная.
Sergei
Дмитрий, подскажите любезно, что с правами не так. Винда =/ Докер и консоль от администратора запущено. Докер ап работет исправно, сайт поднимается. А вот make init. Ерунда какая то, есть идеи? Спасибо.
docker-compose run --rm api-php-cli composer install
Loading composer repositories with package information
Nothing to install or update
Generating autoload files
docker run --rm -v /cygdrive/c/projects/demo-auction/api:/app -w /app alpine chmod 777 var
chmod: var: No such file or directory
make: *** [Makefile:27: api-permissions] Error 1
Дмитрий Елисеев
А что выводит команда ls ?
docker run --rm -v ${PWD}/api:/app -w /app alpine ls -l
Sergei
$ docker run --rm -v ${PWD}/api:/app -w /app alpine ls -l
total 0
Дмитрий Елисеев
Docker-демон не видит виртуальную папку /cygdrive, которая. существует только в консоли Git.
Установите Make for Windows и запускайте команды в консоли PowerShell.
Sergei
Установил эту утилиту, выполняю её из powerShell:
ocramius/package-versions: Generating version class...
ocramius/package-versions: ...done generating version class
docker run --rm -v /api:/app -w /app alpine chmod 777 var
chmod: var: No such file or directory
make: *** [api-permissions] Fehler 1
PS C:\Users\Symfony\Projects\demo-auction>
Странно, а остальные команды работают
Дмитрий Елисеев
В -v /api:/app адрес должен подставляться из ${PWD} абсолютный C:\Users\...
Sergei
Странное поведение, потому что PWD в консоли работает:
Nothing to install or update
Generating autoload files
ocramius/package-versions: Generating version class...
ocramius/package-versions: ...done generating version class
docker run --rm -v C:/Users/Symfony/Projects/demo-auction/api:/app -w /app alpine chmod 777 var
PS C:\Users\Symfony\Projects\demo-auction>
Дмитрий Елисеев
Значит та консоль подменяет $PWD на свой /cygdrive
Sergei
Скорее всего. Но конкретно предыдущий лог из консоли это из powershell и make утилиты. и PWD в повершелле работает корректно.
попробуйте выполнить команду composer dump-autoload
Rodion
Всем добрый вечер. У кого то зависает загрузка видео на скорости 1.25 или 1.5? C интернетом перебоя нет. Это не в первый раз.
kashamamina
их не может быть, а если и случаются то зависят от Vimeo, так как он используется для размещения видео
Дмитрий Елисеев
Зависания были раньше, когда использовался файловый хостинг. Сейчас после перехода на Vimeo проблем со скоростью нет.
Александр
Дмитрий, я хотел сам поставить phpunit,
docker-compose run --rm api-php-cli composer require --dev phpunit/phpunit
не дало
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Conclusion: don't install phpunit/phpunit 9.2.4
- Conclusion: don't install phpunit/phpunit 9.2.3
- Conclusion: don't install phpunit/phpunit 9.2.2
- Conclusion: don't install phpunit/phpunit 9.2.1
- Conclusion: remove sebastian/diff 3.0.2
- Installation request for phpunit/phpunit ^9.2 -> satisfiable by phpunit/phpunit[9.2.0, 9.2.1, 9.2.2, 9.2.3, 9.2.4].
- Conclusion: don't install sebastian/diff 3.0.2
- phpunit/phpunit 9.2.0 requires sebastian/diff ^4.0 -> satisfiable by sebastian/diff[4.0.0, 4.0.1].
- Can only install one of: sebastian/diff[4.0.0, 3.0.2].
- Can only install one of: sebastian/diff[4.0.1, 3.0.2].
- Installation request for sebastian/diff (locked at 3.0.2) -> satisfiable by sebastian/diff[3.0.2].
Installation failed, reverting ./composer.json to its original content.
Ладно , взял код из комита - Added JSON response test
make init
docker-compose run --rm api-php-cli vendor/bin/phpinput --help
и в итоге - /usr/local/bin/docker-php-entrypoint: exec: line 9: vendor/bin/phpinput: not found
что где пропустил не пойму подскажите ?
Дмитрий Елисеев
Попробуйте удалить папку vendor и поставить через composer require снова. Если не получится, то сделайте сначала composer remove phpunit/phpunit, а потом снова requre.
Александр
phpunit в вендоре есть при любом раскладе и переустановке. Но все равно при запуске от любого коммита и после переустановки при вводе команды
docker-compose run --rm api-php-cli vendor/bin/phpinput --help
ответ один
/usr/local/bin/docker-php-entrypoint: exec: line 9: vendor/bin/phpinput: not found
Дмитрий Елисеев
Не phpinput, а phpunit
Александр
ага точно, походу ночью лучше спать ))))
Roman Korolov
Спасибо!
Андрей
Добрый день, Дмитрий.
У меня phpunit 9.3.8 и psalm 3.14.2.
Plalm выдает ошибку одинаковую для всех файлов Unit тестов, сами тесты работают нормально:
ERROR: PropertyNotSetInConstructor - src/Http/Test/Unit/EmptyResponseTest.php:10:7 - Property App\Http\Test\Unit\EmptyResponseTest::$backupStaticAttributes is not defined in constructor of App\Http\Test\Unit\EmptyResponseTest and in any methods called in the constructor (see https://psalm.dev/074)
class EmptyResponseTest extends TestCase
Подскажите в чем может быть проблема?
Дмитрий Елисеев
Можно добавить глобальное подавление этой ошибки для всех тестов в psalm.yml:
Большая просьба. Добавьте пожалуйста в .gitignore папки .idea.
У всех редакторы могут быть разные. В Git для этого можно указать глобальный игнор:
и добавлять папки своих редакторов туда:
Спасибо
Большое спасибо!
спасибо за замечательный урок.
возможно ли тест: множественный запрос (напр. 100 раз в сек) от одного и того же IP, т.е. что-бы обнаружить атаку? как организована такая защита на Slim? как лучше организовать защиту? Будет о защите на уроках?
Да, добавим Rate Limiter.
Срасибо
Странно, чтоб сайт на PHP сам боролся с DDOS. Просто поставьте ограничение в фаерволе ведь он наверное для этого. Да и вообще по ситуации, есть различные ситуации - разные решения.
Согласен. Если по серьезному начнут ddos-ить, то в первую очередь ляжет сервер. До web приложения не дойдет
rate limit можно наложить на любой порт и на 80, 443 тоже.
В чем разница между PhpUnit и Codeception? Почему во всех уроках используете PhpUnit?
Codeception построен поверх PHPUnit, дополняя его своими модулями для готовых фреймворков и позволяя делать функциональные и приёмочные тесты в своём Cest-стиле.
Он с модулями удобен как быстрое решение для готовых фреймворков, но неудобен для кастомных проектов с вынесенным фронтендом.
Поэтому мы возьмём оригинальный PHPUnit для тестов API, отдельный JS-фреймворк для тестов JS и отдельный BDD-фреймворк для приёмочных тестов всей системы.
Дмитрий, спасибо за урок, все замечательно, а был ли у Вас опыт использования мутационного тестирования? Если да, то что думаете по этому поводу? Спасибо.
Особо не использовал из-за медленной работы, но вещь полезная.
Дмитрий, подскажите любезно, что с правами не так. Винда =/ Докер и консоль от администратора запущено. Докер ап работет исправно, сайт поднимается. А вот make init. Ерунда какая то, есть идеи? Спасибо.
А что выводит команда
ls
?Docker-демон не видит виртуальную папку /cygdrive, которая. существует только в консоли Git.
Установите Make for Windows и запускайте команды в консоли PowerShell.
Установил эту утилиту, выполняю её из powerShell:
Странно, а остальные команды работают
В
-v /api:/app
адрес должен подставляться из${PWD}
абсолютныйC:\Users\...
Странное поведение, потому что PWD в консоли работает:
Прописал прямо путь, ошибок не выбросило.
Значит та консоль подменяет
$PWD
на свой/cygdrive
Скорее всего. Но конкретно предыдущий лог из консоли это из powershell и make утилиты. и PWD в повершелле работает корректно.
Но ошибка все равно сыпется. Ерунда какая то :(
Я на винде прописал путь так и все работает: docker run --rm -v //${PWD}/api://app -w /app alpine chmod 777 var
Неа, с двойными слэшами тоже не работает :( Только абсолютный путь
У меня таже проблема, ломается на этом месте. Подскажите, что мы хотим добится в этом месте?
Если только установить права на var. Но если ,я не запущу эту команду, то получу теже права:
Можно ли в данном случае обойтись без абсолютного пути? ${PWD}/api
Да, только устанавливаем права. Для docker-compose нужны относительные пути, а для docker требуются только абсолютные.
docker run --rm -v $$PWD/api:/app -w /app alpine ls -l
попробуйте так.
echo $$PWD
Дошел до 27 минуты, у меня не видны тесты:
А phpunit.xml настроен верно?
Я в тупиковых ситуациях смотрю ваши комиты и беру от туда:
попробуйте выполнить команду composer dump-autoload
Всем добрый вечер. У кого то зависает загрузка видео на скорости 1.25 или 1.5? C интернетом перебоя нет. Это не в первый раз.
их не может быть, а если и случаются то зависят от Vimeo, так как он используется для размещения видео
Зависания были раньше, когда использовался файловый хостинг. Сейчас после перехода на Vimeo проблем со скоростью нет.
Дмитрий, я хотел сам поставить phpunit,
не дало
Ладно , взял код из комита - Added JSON response test
и в итоге - /usr/local/bin/docker-php-entrypoint: exec: line 9: vendor/bin/phpinput: not found
что где пропустил не пойму подскажите ?
Попробуйте удалить папку vendor и поставить через
composer require
снова. Если не получится, то сделайте сначалаcomposer remove phpunit/phpunit
, а потом сноваrequre
.phpunit в вендоре есть при любом раскладе и переустановке. Но все равно при запуске от любого коммита и после переустановки при вводе команды
ответ один
Не
phpinput
, аphpunit
ага точно, походу ночью лучше спать ))))
Спасибо!
Добрый день, Дмитрий.
У меня phpunit 9.3.8 и psalm 3.14.2. Plalm выдает ошибку одинаковую для всех файлов Unit тестов, сами тесты работают нормально:
Подскажите в чем может быть проблема?
Можно добавить глобальное подавление этой ошибки для всех тестов в
psalm.yml
:У меня phpunit 9 ругается на отсутствие @covers. Дописал к классу теста @covers JsonResponse и он перестал это делать.
Test\Unit\Http\JsonResponseTest::testObject This test does not have a @covers annotation but is expected to have one
UPD: досмотрел видео до конца и директивы в конфиге
Или войти через: