Пятиминутка PHP
2.87K subscribers
334 photos
27 videos
827 links
Подкаст о PHP, DBA, архитектуре, DevOps. Авторское мнение о современных трендах в веб-разработке и интересные беседы с гостями. Темы про СУБД, Linux, DevOps

Автор: @petrmyazin
Download Telegram
Недавно я занялся настройкой новой операционной системы macOS, начиная с нуля. В этот раз решил опробовать развёртывание PHP-разработки с использованием Laravel Herd (https://herd.laravel.com) — приложения, включающего в себя готовые бинарные файлы PHP, nginx и DNSMasq.

Установка прошла гладко, согласно инструкции, и с первой попытки заработало всё, включая Xdebug.

Однако, изучение документации выявило, что в основе Laravel Herd лежат разработки Laravel Valet, что вызвало у меня смешанные чувства. Несколько лет назад я уже сталкивался с Laravel Valet и тогда его баги заставили меня отказаться от использования, оставив после себя негативные впечатления.

В целом, философия Laravel Valet, как и всего Laravel, заключается в том, что множество "магии" скрыто от разработчика, который не должен вникать в детали работы системы — она просто работает. Этот подход имеет свои преимущества.

Однако, то, что мне категорически не нравится в Laravel Valet, так это то, что вся гибкость настройки конфигурации nginx перекладывается с файла конфигурации nginx на так называемые Valet Drivers, написанные на PHP. На первый взгляд, работа с Drivers может показаться проще, чем настройка nginx, но это кажется неестественным и оторванным от реальных условий производственной среды, где, в конечном итоге, всё равно приходится работать с конфигурацией nginx.

Для тех, кто не знаком с Laravel Valet, вот интересный и, возможно, шокирующий факт: все запросы обрабатываются через некий файл server.php, который, благодаря системе Drivers, заменяет собой роутинг на уровне nginx. Это означает, что вместо использования директив location в конфигурации nginx, мы имеем набор условий if в PHP-коде.

Более того, через инфраструктуру Valet проходят даже HTTP-запросы на получение статических файлов. Например, когда браузер запрашивает my-site.test/logo.png, запрос проходит через множество PHP-кода внутри Laravel Valet. Файл определяется с помощью file_exists(), и контент logo.png в итоге отдаётся через PHP-FPM, что кажется довольно необычным решением. 🙈
🤯34🤮29👍6😁2😢1💩1😐1
Опублликован видео-плейлист прошедшей конференции Laracon EU 2024, видео продолжают добавляться каждый день: https://youtube.com/playlist?list=PLMdXHJK-lGoBx3Nq2jHgrU7DGsJNi1nwi&si=1TUwqXqg01wFBr_h
🔥10👍4
Актуально сегодня
😁57🔥4👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Блоггер заморочился и снял на slow motion задержку при рендере букв в редакторе Zed против VSCode
😁46🤡9👍6👏2🔥1
В PhpStorm в панели Project есть иконка Expand All - рекурсивно раскрывает все директории в дереве проекта, таким образом можно посмотреть всё и сразу.

В реальной жизни это значит, что будут раскрыто всё дерево внутри vendor и node_modules - представляете сколько там директорий и как будет выглядеть отображение ВСЕГО во вкладке Project?

Я иногда промахиваюсь и нажимаю эту кнопку. Развёртывание идёт постепенно, общий UI не блокируется, и в этот момент нужно как можно быстрее успеть нажать соседнюю кнопку Collapse All, тогда процедура Expand All прервётся.

Но если не нажать Collapse All вовремя, то PhpStorm спустя прау десятков секунд просто зависает в попытке развернуть все директории в дереве! 🤦

Только что в очередной раз попал в эту ситуацию: случайно нажал Expand All и не нажал вовремя Collapse All - редактор завис.

Я проверил все настройки и не нашел как отключить эту мину.

Подозреваю, что эта кнопка может быть полезна для просмотра дерева мини-проекта или какого-то демо репозитория из 5 папок. Т.е. примерно никогда.

Причём этот опаснейший элемент интерфейса является частью всей платформы Idea. Т.е., например, разработчики больших Java проектов на Idea также страдают?

👩‍💻👩‍💻👩‍💻👩‍💻👩‍💻👩‍💻👩‍💻

Совершенно не понятно, зачем в интерфейс профессионального продукта для разработки сложных проектов добавлена кнопка у которой нет реального практического применения, но есть побочный эффект "повесить редактор с вероятностью 99%".
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74💯7🤔65😁5😈3😡3🤮2🥱2👎1👏1
Инсайты из мира Laravel
Forwarded from Laravel World
Тейлор сменил тип компании с Laravel LLC (Общество с ограниченной ответственностью) на свежезарегистрированную Laravel Holdings, Inc (Корпорация). Занятно, что создана она не Арканзасе, родном штате Отвела, а в Делавэре.

Либо собирается скупать другие компании, либо привлекать капиталы. Плюс с сайта был убран список сотрудников, возможно, в связи с тем, что планируется резко увеличить их число. Разрабы трудятся — лавэха мутится.
😁25👍6🤔4
Forwarded from PHP Digest
«Своя игра» по PHP на канале CutCode

Вы можете задать сейчас вопросы участникам викторины.

Самые интересные вопросы будут разобраны на игре, а их авторы получат возможность поучаствовать в следующей игре и получить мерч!

🕛 13 марта в 19:00 (мск)

🔹 Александр Макаров
🔹 Кирилл Несмеянов
🔹 Адель Файзрахманов

🎬 https://www.youtube.com/watch?v=WNIAO0kEk7U
🔥29
Плотность релизов Filament хороша! Активно пилят: https://github.com/filamentphp/filament/releases

(tldr: это админка на Laravel Livewire)
😁12🔥6👍2💩2
Распределённый p2p аналог GitHub: https://radicle.xyz/
💩13🤔9👍3🥴3🔥1
Зачем нужно много ядер CPU? Чтобы эффективно проверять проект с PHPStan!
😁56👍14😱10🤨4
Forwarded from Авва
В мире компьютерной безопасности сегодня интересный день. Точнее, он начался вчера вечером, когда немецкий разработчик Андрес Фройнд опубликовал отчет о тайной лазейке (бэкдор), которую он обнаружил в новых версиях широко используемой библиотеки для сжатия liblzma (часть архиватора xz). Лазейка позволяет взломщикам заходить через SSH на системы, в которых установлены эти новые версии - к счастью, похоже, что это всего несколько дистрибутивов Линукса в их до-релизовых версиях.

Всех очень впечатлило, насколько эта лазейка была сделана хитро, и как взломщик или взломщики серьезно поработали над тем, чтобы замести следы:

- взломщик под именем/псевдонимом Jia Tan почти два года (!) участвовал в разработке опенсорсного пакета xz, завоевал доверие его мейнтейнеров и получил доступ к прямому коммиту в его репозиторию. Он сделал больше 700 коммитов, лишь малая часть которых медленно подготовила код для лазейки

- основной код лазейки спрятан в тестовых файлах проекта (примеры "плохих" и "хороших" архивов)

- исходный код, который включает лазейку в собственно библиотеку, вообще не является частью основной репозитории в Github. Он спрятан в тар-архивах двух последних релизов, которые обычно используются мейнтейнерами дистрибутивов. То есть есть таг релиза, есть архив, якобы собранный из репозитории в момент этого тага, но на самом деле в нем есть крохотная добавка; в самой репозитории ее нет

- эта добавка прячется в конфигурационной магии autoconf, которую все ненавидят лютой ненавистью и никто никогда не заглядывает внутрь

- она проверяет, когда исходники конфигурируют именно для постройки дебиан-пакета или RPM-пакета (т.е. то, что будут делать мейтейнеры дистрибутивов), и только в этом случае вынимает из тестовых файлов определенные куски и добавляет в код библиотеки

- внутри библиотеки код лазейки заменяет несколько функций, которые работают с символьными таблицами библиотек во время их подгружения. Затрачены специальные усилия, чтобы имена функций не появлялись в двоичном коде. Что именно дальше делает код лазейки, до конца еще не ясно, но он обрабатывает сам символьные таблицы библиотек, и видимо находит то, что имеет отношение к SSH серверу, и что-то там заменяет. Это еще проверяют сейчас.

- интересно, что openssh, стандартный SSH-сервер под линуксом, не использует библиотеку liblzma, в которую вставили эту лазейку, но несколько популярных дистрибутивов добавляют в него поддержку уведомлений системы, systemd, а библиотека libsystemd уже в свою очередь использует liblzma.

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

Взломщик допустил только одну ошибку: код лазейки, когда он работает как часть openssh, довольно медленно обрабатывает эти символьные таблицы, или что он еще там делает, и даже неудачная попытка логина на такую систему занимает на полсекунды дольше, чем обычно. Андрес Фройнд заметил эти полсекунды задержки. Они его раздражали. Он решил найти, какой новый баг к этому приводит, и нашел эту лазейку.

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

Теперь все думают, что надо было/надо теперь делать по-другому, и как обнаружить следующую лазейку такого типа - или предыдущую, если она уже есть и никто не знает! - не опираясь на удачу и героическую занудливость Андреаса Фройнда.
😱54👍17🔥9👏4🌚1
Пишу код, указал строковый ключ в массиве, Copilot привычно для меня автодополнил значением после => (в данном случае верно угадал значение по окружающему контексту).

Но я заметил кое-что необычное, Copilot написал для меня комментарий в конце строки.

В комментарии написано: опечатка в 'default - пригляделся, и правда, я опечатался!

Такого поведения я ещё не видел, интересно.
👍54🤔12👎4🗿3😐2👀2😁1🫡1
Статья с обзором расширений для Raycast (macOS) на тему PHP и Laravel: https://aleksandertabor.com/blog/best-raycast-extensions-for-laravel-php-developers

В основном эти расширения дают быструю навигацию по документации.
👎9🥴3👍1
Опробовал новый ИИ-чат от Яндекса, пока отвечает уверенно: https://a.ya.ru/
😁63👍15👎6💯6🔥21🤔1
Привет! На связи Podlodka Crew, организатор IT-мероприятий по разным технологиям и языкам.
Уже 22 апреля мы запускаем четвертый сезон конференции по PHP. Тема — практика работы с базами данных. 💻

Этот сезон прольёт свет на все, даже самые неожиданные, аспекты работы с базами. Приготовьтесь: будет много практики и реальных кейсов. Redis, Doctrine, Elasticsearch, нюансы PostgreSQL, изучим уровни изоляции транзакций, проектирование и масштабирование, и множество интересных инструментов и решений.

💚 Научимся проектировать базы данных. Николай Кокоулин из ВсеИнструменты проведёт воркшоп по проектированию и рефакторингу. В том числе разберём нестандартные типы данных и антипаттерны. А ещё узнаем, как ускорить работу с данными и проанализируем методы индексации.

💙 Выясним, как использовать Redis в качестве внешней памяти приложений. Вместе с Дмитрием Кирилловым, CTO 1С-Старт выйдем за границы кэша и начнём управлять памятью.

💚 Полюбим Doctrine и попрактикуемся его использовать. Обсудим требования, возможные проблемы и сценарии вместе с Михаилом Камориным из Skyeng.

💙Узнаем, насколько просто начать использовать Elasticsearch вместе с Игорем Филипповым из Zendrop. На этом воркшопе каждый сможет выполнить несколько задач и освоить базовые операции с технологией из PHP кода.

💚Обсудим масштабирование и оптимизацию проектов на PHP вместе с Александром Макаровым, CEO ASAPIRL.

💙 И, наконец, посмотрим на эпичную битву сторонников и противников использования ORM в лице Кирилла Несмеянова и Валентина Удальцова.

Это не все сессии конференции, ещё больше подробностей — в следующем анонсе.
А пока успейте забрать билет со скидкой для ранних пташек:
https://podlodka.io/phpcrew
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11
Forwarded from OpenNews (HK-47)
Уязвимость в Glibc, эксплуатируемая через скрипты на PHP
В стандартной Си-библиотеке Glibc выявлена уязвимость (CVE-2024-2961), приводящая к переполнению буфера при преобразовании специально оформленных строк в кодировке ISO-2022-CN-EXT функцией iconv(). Выявивший проблему исследователь планирует 10 мая выступить на конференции OffensiveCon с докладом, в анонсе которого упоминается возможность эксплуатации уязвимости через приложения на языке PHP. Заявлено, что проблема затрагивает всю экосистему PHP и некоторые приложения.
😱27👍4🤔3😢1
Приветствую всех PHP-разработчиков!
Подготовка второго выпуска игры-викторины в стиле "Своей игры" в разгаре! Валентин Удальцов, Алексей Гагарин и Пётр Мязин уже который день штудируют библиотеки чтобы поразить вас своей эрудицией. Каждый из них рассчитывает только на победу!

Викторина будет проходить в прямом эфире на нашем YouTube-канале CutCode. С учётом опыта первой игры мы сделали вопросы более простыми, чтобы игра прошла еще активнее. Можете смотреть эфир офисом и играть своей командой!

Приглашаем поддержать участников, проверить свои знания и просто хорошо провести время. До встречи на викторине!

https://www.youtube.com/watch?v=ef0LPaVNJLs

Вопросы участникам можно задать тут
👍22🥴4🗿3