Forwarded from PHP Digest
Голосование по енамам в PHP
https://wiki.php.net/rfc/enumerations#voting
Подробнее про предложение можно прочитать в дайджесте № 194. А пока давайте проведем свое альтернативное голосование.
https://wiki.php.net/rfc/enumerations#voting
Подробнее про предложение можно прочитать в дайджесте № 194. А пока давайте проведем свое альтернативное голосование.
Forwarded from PHP Digest
Насыплю сверху про enum:
Кто еще не разобрался, или не понимает зачем, вот отличная статья на эту тему
https://habr.com/ru/post/541246/
Ну и из релизов: в четверг вышли патч версии php:
В 7.3 - один багофикс с soap,
В 7.4 - довольно внушительная пачка фиксов, там и кор и mysqli.
Довольно угарный фикс - php падал, если исходник > 4 гигов. Мне просто любопытно посмотреть код того, кто обнаружил эту багу)))
Вот сама бага https://bugs.php.net/bug.php?id=80523
Кто еще не разобрался, или не понимает зачем, вот отличная статья на эту тему
https://habr.com/ru/post/541246/
Ну и из релизов: в четверг вышли патч версии php:
В 7.3 - один багофикс с soap,
В 7.4 - довольно внушительная пачка фиксов, там и кор и mysqli.
Довольно угарный фикс - php падал, если исходник > 4 гигов. Мне просто любопытно посмотреть код того, кто обнаружил эту багу)))
Вот сама бага https://bugs.php.net/bug.php?id=80523
Хабр
Enum в PHP 8.1 — для чего нужен enum, и как реализован в PHP
Через несколько дней заканчивается голосование по первой итерации реализации enum в PHP 8.1 . Уже видно, что голосов “за” гораздо больше, так что давайте кратко...
Чем себя занять в моменты, когда на работе нужно написать много рутинного кода, ну или задачи по-просту не интересные? Кто-то ходит по собесам просто ради интереса, кто-то пишет пет проекты, а кто-то фрилансит. В перерывах между пет-проектами лично я люблю решать небольшие конЕчные (не конЧЕнные=)) задачки.
Как это работает? Вам дается задание, область написания кода и кнопка "test", по нажатию на которую запускаются автотесты, проверяющие ваш код. В некоторых заданиях дополнительно еще ограничено время. Кстати, обычно очень широкий выбор языков программирования.
Вот совсем коротенький список, буду рад, если в комментариях дополните:
1. www.hackerrank.com Платформа запущена в 2012 году. Помимо просто решения задач предлагает еще получить сертификаты в той или иной области, а также есть площадка для поиска работы. По сути, хакерранк это топовая платформа, которая также используется крупными компаниями для найма на работу через решение задач. К примеру - ежегодный Badoo конкурс о найме на работу в Лондон - размещался именно там.
2. www.codewars.com - очень похожая на первую, однако тут упор сделан на писькомерство. При регистрации вам выдают, кажется, 8 кю (8 уровень, как в карате-до), и по решению задач присваивают новый кю/дан. После решения задачи вы попадаете на экран, на котором есть полный список всех решений всех пользователей с лайками по категориям "бест практис" и "самое умное решение". Самое топовое решение наверху. Можно его форкнуть и улучшить. Ну и можно контрибьютить - добавлять свои задания
Как это работает? Вам дается задание, область написания кода и кнопка "test", по нажатию на которую запускаются автотесты, проверяющие ваш код. В некоторых заданиях дополнительно еще ограничено время. Кстати, обычно очень широкий выбор языков программирования.
Вот совсем коротенький список, буду рад, если в комментариях дополните:
1. www.hackerrank.com Платформа запущена в 2012 году. Помимо просто решения задач предлагает еще получить сертификаты в той или иной области, а также есть площадка для поиска работы. По сути, хакерранк это топовая платформа, которая также используется крупными компаниями для найма на работу через решение задач. К примеру - ежегодный Badoo конкурс о найме на работу в Лондон - размещался именно там.
2. www.codewars.com - очень похожая на первую, однако тут упор сделан на писькомерство. При регистрации вам выдают, кажется, 8 кю (8 уровень, как в карате-до), и по решению задач присваивают новый кю/дан. После решения задачи вы попадаете на экран, на котором есть полный список всех решений всех пользователей с лайками по категориям "бест практис" и "самое умное решение". Самое топовое решение наверху. Можно его форкнуть и улучшить. Ну и можно контрибьютить - добавлять свои задания
Недавно появилась парочка интересных переводов о зловредах в php.
Первый настоятельно рекомендую к прочтению, как минимум для общего развития. Сама по себе идея проста до гениальности - мы берем пару невидимых символов (например - пробел и табуляция), и считаем, что они "1" и "0". Кодируем наш скрипт в бинарный формат, заменяем единицы и нули нашими невидимыми символами, и - вуаля!
#backdoor #уязвимость
Подробности тут https://telegra.ph/Nevidimye-simvoly-skryvayushchie-veb-shell-v-zlovrednom-kode-na-PHP-02-18
Второй - не особенно-то и актуальный для PHP - взлом через менеджер зависимостей (composer для PHP) путем подмены приватного пакета на публичный.
https://telegra.ph/Zashchita-ot-uyazvimosti-Dependency-Confusion-v-PHP-s-pomoshchyu-Composer-02-18
Первый настоятельно рекомендую к прочтению, как минимум для общего развития. Сама по себе идея проста до гениальности - мы берем пару невидимых символов (например - пробел и табуляция), и считаем, что они "1" и "0". Кодируем наш скрипт в бинарный формат, заменяем единицы и нули нашими невидимыми символами, и - вуаля!
#backdoor #уязвимость
Подробности тут https://telegra.ph/Nevidimye-simvoly-skryvayushchie-veb-shell-v-zlovrednom-kode-na-PHP-02-18
Второй - не особенно-то и актуальный для PHP - взлом через менеджер зависимостей (composer для PHP) путем подмены приватного пакета на публичный.
https://telegra.ph/Zashchita-ot-uyazvimosti-Dependency-Confusion-v-PHP-s-pomoshchyu-Composer-02-18
Telegraph
Невидимые символы, скрывающие веб-шелл в зловредном коде на PHP
В ноябре мы писали о том, как злоумышленники используют инъекции JavaScript для загрузки зловредного кода из файлов CSS. Поначалу незаметно, что эти инъекции содержат что-то, кроме безобидных правил CSS. Однако при более тщательном анализе файла .CSS обнаруживается…
Что ждет PHP в 2021?
Узнаем 27 февраля на большом стриме.
🎤 2 доклада: о WebRTC от Ильи Левина из Skyeng, о gRPC — от Антона Жукова из ManyChat.
🏄 Острые дискуссии, мнения о 2020, планы на 2021. В эфир придут:
- Никита Попов (PHP core team)
- Дмитрий Елисеев (ElisDN)
- Валентин Удальцов (Пых)
- Роман Пронский (PHP-дайджест)
- Александр Макаров (Yii)
- Сергей Жук (Между Скобок)
- Константин Буркалев (SDCast)
- Петр Мязин (Пятиминутка PHP)
- Антон Околелов (Цинковый прод)
- Николай Пучко (PHPToday)
🎁 Покажем итоги опроса про лучшее из мира PHP за 2020, разыграем фирменного слоника и целый пул других подарков.
Трансляции в 11:00 (Москва/Минск), 10:00 — Киев
Узнаем 27 февраля на большом стриме.
🎤 2 доклада: о WebRTC от Ильи Левина из Skyeng, о gRPC — от Антона Жукова из ManyChat.
🏄 Острые дискуссии, мнения о 2020, планы на 2021. В эфир придут:
- Никита Попов (PHP core team)
- Дмитрий Елисеев (ElisDN)
- Валентин Удальцов (Пых)
- Роман Пронский (PHP-дайджест)
- Александр Макаров (Yii)
- Сергей Жук (Между Скобок)
- Константин Буркалев (SDCast)
- Петр Мязин (Пятиминутка PHP)
- Антон Околелов (Цинковый прод)
- Николай Пучко (PHPToday)
🎁 Покажем итоги опроса про лучшее из мира PHP за 2020, разыграем фирменного слоника и целый пул других подарков.
Трансляции в 11:00 (Москва/Минск), 10:00 — Киев
В последнее время, собеседуя backend-разработчиков заметил нехорошую тенденцию. Люди не очень в SQL. Когда-то давно, когда я начинал, еще не были так распространены ORM, да и большинство кода даже не использовало ООП. И не было другого выхода, кроме как писать "сырые" запросы. (Да и сырыми их тогда никто не называл).
Сейчас общество как будто развращено симфонями и ларавелями, и, особенно, по начинающим разработчикам это заметно.
И сейчас хочу поделиться с вами статейкой о том, как узнать, почему написанный вами (или ORMкой) запроспедалит работает медленно.
#mysql #explain #профилирование
https://habr.com/ru/company/citymobil/blog/545004/
Сейчас общество как будто развращено симфонями и ларавелями, и, особенно, по начинающим разработчикам это заметно.
И сейчас хочу поделиться с вами статейкой о том, как узнать, почему написанный вами (или ORMкой) запрос
#mysql #explain #профилирование
https://habr.com/ru/company/citymobil/blog/545004/
Хабр
Читаем EXPLAIN на максималках
Многим, кто работает с MySQL, известно, что команда EXPLAIN используется для оптимизации запросов, получения информации об использованных и возможных индексах. Большинство разработчиков и...
А вы умеете писать sql запросы?
Anonymous Poll
56%
Любой сложности
35%
Ну прочитать, вставить, удалить строку
9%
Зачем? ORM за меня все делает
Все мы умеем настраивать веб сервер. Как минимум это нужно даже на локалке, чтобы развернуть проект.
Но зачастую такая настройка вида "лишь бы работало". И если для локалхоста этого вполне достаточно, то на сервер такую конфигурацию выгружать не стоит, не покурив внимательно мануалы.
В частности - вот какие уязвимости можно допустить просто по незнанию в конфигах nginx
#уязвимость #nginx #вебсервер
https://telegra.ph/CHastye-oshibki-v-nastrojkah-Nginx-iz-za-kotoryh-veb-server-stanovitsya-uyazvimym-03-16
Но зачастую такая настройка вида "лишь бы работало". И если для локалхоста этого вполне достаточно, то на сервер такую конфигурацию выгружать не стоит, не покурив внимательно мануалы.
В частности - вот какие уязвимости можно допустить просто по незнанию в конфигах nginx
#уязвимость #nginx #вебсервер
https://telegra.ph/CHastye-oshibki-v-nastrojkah-Nginx-iz-za-kotoryh-veb-server-stanovitsya-uyazvimym-03-16
Telegraph
Частые ошибки в настройках Nginx, из-за которых веб-сервер становится уязвимым
Nginx — это веб-сервер, на котором работает треть всех сайтов в мире. Но если забыть или проигнорировать некоторые ошибки в настройках, можно стать отличной мишенью для злоумышленников. Detectify Crowdsource подготовил список наиболее часто встречающихся…
Forwarded from SecAtor
Вчера злодеи скомпрометировали внутренний репозиторий PHP и добавили бэкдор в исходный код.
Первым бэкдор обнаружил чешский программист Майкл Воржишек, который обратил внимание на подозрительный кусок кода и задался вопросом, что тот должен делать. Оказалось, что выполнять код через вызов функции zend-eval-string, содержащийся с подстрокой zerodium (это такая американская компания, покупающая 0-day, видимо хакеры пошутили), передаваемой в HTTP-заголовках.
Сегодня один из основных членов команды PHP Никита Попов подтвердил, что вчера был добавлен вредоносный код от его имени и от имени другого члена команды Расмуса Лердорфа. Он сообщает, что его учетная запись не была скомпрометирована, а взломан был именно сервер репозитория, в связи с чем они переедут на GitHub.
Атака на цепочку поставок.
Первым бэкдор обнаружил чешский программист Майкл Воржишек, который обратил внимание на подозрительный кусок кода и задался вопросом, что тот должен делать. Оказалось, что выполнять код через вызов функции zend-eval-string, содержащийся с подстрокой zerodium (это такая американская компания, покупающая 0-day, видимо хакеры пошутили), передаваемой в HTTP-заголовках.
Сегодня один из основных членов команды PHP Никита Попов подтвердил, что вчера был добавлен вредоносный код от его имени и от имени другого члена команды Расмуса Лердорфа. Он сообщает, что его учетная запись не была скомпрометирована, а взломан был именно сервер репозитория, в связи с чем они переедут на GitHub.
Атака на цепочку поставок.
GitHub
[skip-ci] Fix typo · php/php-src@c730aa2
Fixes minor typo.
Signed-off-by: Rasmus Lerdorf <rasmus@lerdorf.com>
Signed-off-by: Rasmus Lerdorf <rasmus@lerdorf.com>
В PHP 8.1 скорее всего появятся файберы.
Вот вам статейка на русском о том, что это такое, и как можно будет использовать
https://telegra.ph/Fibery--novaya-ficha-v-PHP-81-04-16
Ну а за самим RFC можно следить тут https://wiki.php.net/rfc/fibers
И милости просим в комменты, если есть уже идеи, как будете использовать их в своих проектах
#fibers #асинхронность #корутины
Вот вам статейка на русском о том, что это такое, и как можно будет использовать
https://telegra.ph/Fibery--novaya-ficha-v-PHP-81-04-16
Ну а за самим RFC можно следить тут https://wiki.php.net/rfc/fibers
И милости просим в комменты, если есть уже идеи, как будете использовать их в своих проектах
#fibers #асинхронность #корутины
Telegraph
Fiber’ы — новая фича в PHP 8.1
PHP пытается восполнить недостаток возможностей в своей кодовой базе, и Fiber’ы — одно из значимых нововведений. Они появились в PHP 8.1 в конце 2020 и привнесли в язык своего рода асинхронное программирование. Файберы представляют собой легковесные потоки…
2 доклада по Symfony на митапе PHP NN сообщества
Трансляция стартует 24 апреля в 11:00 (Мск)
🎤 Как переделать Symfony-проект в целое направление (Денис Юрьев, Skysmart от Skyeng)
🎤 Как структурировать код, чтобы не получить большой ком грязи (Валентин Удальцов, ведущий каналов Пых и PHP Point)
Будет возможность включиться голосом в митап с вопросами 🐘
Трансляция стартует 24 апреля в 11:00 (Мск)
🎤 Как переделать Symfony-проект в целое направление (Денис Юрьев, Skysmart от Skyeng)
🎤 Как структурировать код, чтобы не получить большой ком грязи (Валентин Удальцов, ведущий каналов Пых и PHP Point)
Будет возможность включиться голосом в митап с вопросами 🐘
Не мокайте то, чем вы не владеете! Моканье классов третьесторонних библиотек - довольно скользкая дорожка.
Перевел статейку авторов PHPUnit. Перевод на хабре https://habr.com/ru/post/554318/, оригинал тут https://thephp.cc/news/2021/04/do-not-mock-what-you-do-not-own
#тестирование #phpunit #unittest
P.S. На самом деле в статье взят самый простой пример, и оборачивание всех сервисов фреймворка в отдельный слой своих классов - на мой взгляд - оверхед. Но в некоторых местах это действительно нужно сделать так (ну или похоже), как описано в статье
Перевел статейку авторов PHPUnit. Перевод на хабре https://habr.com/ru/post/554318/, оригинал тут https://thephp.cc/news/2021/04/do-not-mock-what-you-do-not-own
#тестирование #phpunit #unittest
P.S. На самом деле в статье взят самый простой пример, и оборачивание всех сервисов фреймворка в отдельный слой своих классов - на мой взгляд - оверхед. Но в некоторых местах это действительно нужно сделать так (ну или похоже), как описано в статье
Хабр
Не мокайте то, чем вы не владеете
Прим. переводчика: само правило достаточно старое, да и пример, приведенный в статье - на мой взгляд самый простой. Поэтому статья подойдет скорее для новичков,...
Отличная статья от автора канала Beer::PHP, где он на пальцах показывает принцип подстановки Лисков, с примерами "хорошо/плохо"
Все тут https://telegra.ph/Princip-podstanovki-Barbary-Liskov-predusloviya-i-postusloviya-04-24
#solid #liskov #design
Все тут https://telegra.ph/Princip-podstanovki-Barbary-Liskov-predusloviya-i-postusloviya-04-24
#solid #liskov #design
Telegram
Beer::PHP 🍺
Тут публікуються короткі замітки про PHP, Linux, Unit Testing, DB, OOP тощо, витяги зі статей, книг, відео, курсів та інших матеріалів.
Тепер тобі більше не потрібно перегортати тонни інформації ;)
@genkovich — написати автору каналу.
Тепер тобі більше не потрібно перегортати тонни інформації ;)
@genkovich — написати автору каналу.
Возможно, вы уже знаете об этом, но я все равно напишу:
Проверять свои composer зависимости на предмет известных уязвимостей можно просто добавив в dev зависимости пакет:
composer require --dev roave/security-advisories:dev-latest
Это простой metapackage, в котором в директиве conflict описаны известные версии библиотек с уязвимостями. Т.е. при попытке установить пакет с уязвимостью вы получите ошибку на уровне composer require.
Ссылка на github: https://github.com/Roave/SecurityAdvisories
Проверять свои composer зависимости на предмет известных уязвимостей можно просто добавив в dev зависимости пакет:
composer require --dev roave/security-advisories:dev-latest
Это простой metapackage, в котором в директиве conflict описаны известные версии библиотек с уязвимостями. Т.е. при попытке установить пакет с уязвимостью вы получите ошибку на уровне composer require.
Ссылка на github: https://github.com/Roave/SecurityAdvisories
GitHub
GitHub - Roave/SecurityAdvisories: :closed_lock_with_key: Security advisories as a simple composer exclusion list, updated daily
:closed_lock_with_key: Security advisories as a simple composer exclusion list, updated daily - Roave/SecurityAdvisories
Всем привет! Прошу прощения за долгое молчание, жизнь приперла к стенке, и пришлось отбиваться =) Пришлось переезжать, и все лето ушло на переезд и обустройство на новом месте.
Сегодняшний пост будет скорее для маководов, хотя и для линуксоидов тула подойдет, но, местами - не автоматически.
Речь про warden.dev. Warden - это консольная утилита для управления контейнерами, идельно подходит для Magento, а также для Symfony, Laravel, Showare, Commonalities.
На маке работает довольно шустро, умеет:
- Включать-выключать xdebug по наличию куки из расширения Xdebug Helper автоматически
- Поднимать новые хосты всего в несколько команд
- Https из коробки без самостоятельных настроек
- Portainer, Traefik, MailHog уже включены.
- Удобное управление версиями через .env файл - поменял php с 7.2 на 8.0, или elasticsearch с 6 на 7.4, перезагрузил, готово.
- Автоматически прописывает хосты на macos, не нужно топать в /etc/hosts
Ну и если понадобится что-то уж совсем кастомное - всегда можно поправить любые конфиги, добавить инструкции в docker-compose или поменять docker-образ
Ссылочка:
https://warden.dev/
#docker #warden #docker-compose
Сегодняшний пост будет скорее для маководов, хотя и для линуксоидов тула подойдет, но, местами - не автоматически.
Речь про warden.dev. Warden - это консольная утилита для управления контейнерами, идельно подходит для Magento, а также для Symfony, Laravel, Showare, Commonalities.
На маке работает довольно шустро, умеет:
- Включать-выключать xdebug по наличию куки из расширения Xdebug Helper автоматически
- Поднимать новые хосты всего в несколько команд
- Https из коробки без самостоятельных настроек
- Portainer, Traefik, MailHog уже включены.
- Удобное управление версиями через .env файл - поменял php с 7.2 на 8.0, или elasticsearch с 6 на 7.4, перезагрузил, готово.
- Автоматически прописывает хосты на macos, не нужно топать в /etc/hosts
Ну и если понадобится что-то уж совсем кастомное - всегда можно поправить любые конфиги, добавить инструкции в docker-compose или поменять docker-образ
Ссылочка:
https://warden.dev/
#docker #warden #docker-compose
Какими докер-тулами вы пользуетесь?
Список сильно короткий, поэтому если пользуетесь еще чем-то - смело пишите в комментарии!
Список сильно короткий, поэтому если пользуетесь еще чем-то - смело пишите в комментарии!
Anonymous Poll
26%
Traefik
30%
Portainer
30%
MailHog
34%
Другое (написать в комменты)
Стрим к релизу PHP 8.1
25 ноября в 19:00 обсудим в онлайне апдейты релиза и PHP Foundation. А 4 компании поделятся опытом, как перевозили проекты на 8.0: от причин переезда и ожиданий до результатов и практических советов.
Вести стрим будут: Валентин Удальцов (Пых), Александр Макаров (Yii), Роман Пронский (PHP Digest)
Расскажут, как переезжали на 8.0: Валентин Назаров (Skyeng), Александр Данковцев (Авито), Максим Фомичев (ManyChat), Иван Корноухов (Badoo)
Детали и тайминг собрали тут.
25 ноября в 19:00 обсудим в онлайне апдейты релиза и PHP Foundation. А 4 компании поделятся опытом, как перевозили проекты на 8.0: от причин переезда и ожиданий до результатов и практических советов.
Вести стрим будут: Валентин Удальцов (Пых), Александр Макаров (Yii), Роман Пронский (PHP Digest)
Расскажут, как переезжали на 8.0: Валентин Назаров (Skyeng), Александр Данковцев (Авито), Максим Фомичев (ManyChat), Иван Корноухов (Badoo)
Детали и тайминг собрали тут.
YouTube
PHP 8.1, запуск PHP Foundation и истории переезда на 8.0 от Skyeng, ManyChat, Badoo и Авито
Соберемся обсудить, что 8.1 нам готовит, и запуск PHP Foundation. А еще послушаем, как ребята из 4 компаний проекты на 8.0 перевозили: с чем столкнулись и что советуют.
Стрим ведут Валентин Удальцов (Пых, PHP Point), Александр Макаров (Yii, PHP Russia),…
Стрим ведут Валентин Удальцов (Пых, PHP Point), Александр Макаров (Yii, PHP Russia),…
🔴 Релиз PHP 8.1, запуск PHP Foundation и истории переезда на 8.0
Прямо сейчас в эфире стрим, подключайтесь!
https://www.youtube.com/watch?v=5D337gaVPa4
Прямо сейчас в эфире стрим, подключайтесь!
https://www.youtube.com/watch?v=5D337gaVPa4
YouTube
Релиз PHP 8.1, запуск PHP Foundation и истории переезда на 8.0
Обсудим апдейты нового релиза и новость о создании PHP Foundation — фонда в поддержку языка. А еще послушаем, как ребята из 4 компаний проекты на 8.0 перевозили: с чем столкнулись и что советуют.
https://opencollective.com/phpfoundation — о том, как поддержать…
https://opencollective.com/phpfoundation — о том, как поддержать…