PHP-SPX простой профайлер трейсер для PHP
Работая с различными PHP проектами часто приходится дебажить приложение чтобы найти и исправить ошибку. Во многих случаях вполне хватает xDebug, однако он не подходит для всех задач. Иногда нужно понять почему та или иная страница долго загружается, что съедает так много памяти или просто как работает большой и запутанный код.
https://habr.com/ru/articles/505192/
👉 @php_lib
Работая с различными PHP проектами часто приходится дебажить приложение чтобы найти и исправить ошибку. Во многих случаях вполне хватает xDebug, однако он не подходит для всех задач. Иногда нужно понять почему та или иная страница долго загружается, что съедает так много памяти или просто как работает большой и запутанный код.
https://habr.com/ru/articles/505192/
👉 @php_lib
👍2
Обзор NativePHP. Инструмент для создания собственных нативных desktop приложений на Laravel
В этой статье я сделаю обзор NativePHP, который появился на Laracon US 2023. Видеообзор, который я сделал, вызвал большой интерес у аудитории, и я решил оформить статью про NativePHP, для тех кто любит читать.
https://habr.com/ru/articles/761740/
👉 @php_lib
В этой статье я сделаю обзор NativePHP, который появился на Laracon US 2023. Видеообзор, который я сделал, вызвал большой интерес у аудитории, и я решил оформить статью про NativePHP, для тех кто любит читать.
https://habr.com/ru/articles/761740/
👉 @php_lib
👍4
Простая аутентификация на PHP
Многие новички до сих пор попадают в тупик при написании простейшей аутентификации в PHP. На Тостере с завидной регулярностью попадаются вопросы о том, как сравнить сохраненный пароль с паролем полученным из формы логина. Здесь будет краткая статья-туториал на эту тему.
Disclaimer: статья рассчитана на совершенных новичков. Умудрённые опытом разработчики ничего нового здесь не найдут, но могут указать на возможные недочёты =).
Для написания системы аутентификации будем использовать базу данных MySQL/MariaDB, PHP, PDO, функции для работы с паролями, для построения интерфейса возьмём bootstrap.
Полный код примера доступен на гитхабе: ссылка на Github.
👉 @php_lib
Многие новички до сих пор попадают в тупик при написании простейшей аутентификации в PHP. На Тостере с завидной регулярностью попадаются вопросы о том, как сравнить сохраненный пароль с паролем полученным из формы логина. Здесь будет краткая статья-туториал на эту тему.
Disclaimer: статья рассчитана на совершенных новичков. Умудрённые опытом разработчики ничего нового здесь не найдут, но могут указать на возможные недочёты =).
Для написания системы аутентификации будем использовать базу данных MySQL/MariaDB, PHP, PDO, функции для работы с паролями, для построения интерфейса возьмём bootstrap.
Полный код примера доступен на гитхабе: ссылка на Github.
👉 @php_lib
Хабр
Простая аутентификация на PHP
Многие новички до сих пор попадают в тупик при написании простейшей аутентификации в PHP. На Тостере с завидной регулярностью попадаются вопросы о том, как сравнить сохраненный пароль с паролем...
👍6
Разблокировка Real-Time с помощью WebSockets в Laravel с помощью Soketi
Представьте себе создание веб-приложений, которые реагируют мгновенно, где обновление данных и взаимодействие происходят в мгновение ока. Добро пожаловать в мир веб-разработки в реальном времени. В этой статье мы попытаемся создать простой пример использования соединения WebSocket в приложении Laravel с помощью Soketi.
Мы познакомимся с Soketi, установим необходимые инструменты и настроим Laravel для работы с WebSockets. К концу статьи у вас будет готова базовая система WebSocket.
https://fajarwz.com/blog/unlocking-real-time-with-websockets-in-laravel-with-soketi/
👉 @php_lib
Представьте себе создание веб-приложений, которые реагируют мгновенно, где обновление данных и взаимодействие происходят в мгновение ока. Добро пожаловать в мир веб-разработки в реальном времени. В этой статье мы попытаемся создать простой пример использования соединения WebSocket в приложении Laravel с помощью Soketi.
Мы познакомимся с Soketi, установим необходимые инструменты и настроим Laravel для работы с WebSockets. К концу статьи у вас будет готова базовая система WebSocket.
https://fajarwz.com/blog/unlocking-real-time-with-websockets-in-laravel-with-soketi/
👉 @php_lib
👍4
3 года работы с AWS Lambda в режиме lift-and-shift
Давайте определимся с ситуацией. Мы ищем возможность масштабирования PHP-приложения. Погуглив, мы выяснили, что наиболее масштабируемым сервисом является AWS Lambda. Он не поддерживает PHP нативно, но у нас есть https://bref.sh. Кроме того, у нас есть книга Serverless Visually Explained, в которой рассказывается о том, что нужно знать, чтобы запустить PHP на AWS Lambda. Но у нас есть проект 8-летней давности, который не был разработан с нуля как бессерверный. Это не наследие. Не совсем. Он хорошо работает, имеет приличное тестовое покрытие, над ним работает горстка инженеров, и пока что он успешен. Просто она не была рассчитана на горизонтальное масштабирование. Что теперь?
https://blog.deleu.dev/lift-and-shift-aws-lambda/
👉 @php_lib
Давайте определимся с ситуацией. Мы ищем возможность масштабирования PHP-приложения. Погуглив, мы выяснили, что наиболее масштабируемым сервисом является AWS Lambda. Он не поддерживает PHP нативно, но у нас есть https://bref.sh. Кроме того, у нас есть книга Serverless Visually Explained, в которой рассказывается о том, что нужно знать, чтобы запустить PHP на AWS Lambda. Но у нас есть проект 8-летней давности, который не был разработан с нуля как бессерверный. Это не наследие. Не совсем. Он хорошо работает, имеет приличное тестовое покрытие, над ним работает горстка инженеров, и пока что он успешен. Просто она не была рассчитана на горизонтальное масштабирование. Что теперь?
https://blog.deleu.dev/lift-and-shift-aws-lambda/
👉 @php_lib
Bref
Bref – Simple and scalable PHP with serverless
Bref is a framework to write and deploy serverless PHP applications on AWS Lambda.
👍2
Совет по безопасности: увеличьте количество раундов bcrypt
Приветствую вас, друзья! На этой неделе мы отправимся в интересный и сложный мир, исследуя хэширование паролей, и рассмотрим очень простое изменение, которое вы должны сделать в своих приложениях для повышения безопасности, основываясь на двух PR, которые я недавно отправил в Laravel. Если возникнет интерес, я могу углубиться в тему хэширования в одной из следующих статей, а пока мы просто рассмотрим основы.
https://securinglaravel.com/p/security-tip-increase-your-bcrypt
👉 @php_lib
Приветствую вас, друзья! На этой неделе мы отправимся в интересный и сложный мир, исследуя хэширование паролей, и рассмотрим очень простое изменение, которое вы должны сделать в своих приложениях для повышения безопасности, основываясь на двух PR, которые я недавно отправил в Laravel. Если возникнет интерес, я могу углубиться в тему хэширования в одной из следующих статей, а пока мы просто рассмотрим основы.
https://securinglaravel.com/p/security-tip-increase-your-bcrypt
👉 @php_lib
Securing Laravel
Security Tip: Increase Your bcrypt Rounds
[Tip#58] It's time to upgrade your bcrypt rounds to 12 (or higher)!
👍4
Генерация аватаров с инициалами на PHP
Для мобильного приложения я занимаюсь фронтенд-разработкой, и дизайн включает в себя множество аватаров. К сожалению, у нас нет аватаров наших пользователей. К счастью, у нас есть их имена, и я узнал из Outlook и Trello, что можно сделать отличные аватары с инициалами пользователя. В этом посте я покажу, как это сделать с помощью PHP.
https://tqdev.com/2022-generate-avatars-initials-php
👉 @php_lib
Для мобильного приложения я занимаюсь фронтенд-разработкой, и дизайн включает в себя множество аватаров. К сожалению, у нас нет аватаров наших пользователей. К счастью, у нас есть их имена, и я узнал из Outlook и Trello, что можно сделать отличные аватары с инициалами пользователя. В этом посте я покажу, как это сделать с помощью PHP.
https://tqdev.com/2022-generate-avatars-initials-php
👉 @php_lib
👍4
🔥 Совет по Laravel: wherePivot.
В отношениях "многие-ко-многим" можно добавить операторы
👉 @php_lib
В отношениях "многие-ко-многим" можно добавить операторы
where
в таблицу pivot, используя метод `wherePivot
`.👉 @php_lib
👍6
Советы по работе с Laravel: Views
Совместное использование одной переменной с несколькими представлениями.
Возникала ли у вас необходимость в совместном использовании одной переменной с несколькими представлениями в Laravel? Вот простое решение.
👉 @php_lib
Совместное использование одной переменной с несколькими представлениями.
Возникала ли у вас необходимость в совместном использовании одной переменной с несколькими представлениями в Laravel? Вот простое решение.
use App\Models\Post;
use Illuminate\Support\Facades\View;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
if (Schema::hasTable('posts')) {
View::share('recentPosts', Post::latest()->take(3)->get());
}
}
}
👉 @php_lib
👍4👎1
Встраиваем Lua в PHP через FFI
Foreign Function Interface — это перспективная альтернатива для традиционных PHP-расширений.
Сегодня мы будем разбирать FFI-библиотеку для работы с liblua5 из PHP, которая позволит исполнять скрипты на Lua из нашего приложения.
https://habr.com/ru/companies/vk/articles/681400/
👉 @php_lib
Foreign Function Interface — это перспективная альтернатива для традиционных PHP-расширений.
Сегодня мы будем разбирать FFI-библиотеку для работы с liblua5 из PHP, которая позволит исполнять скрипты на Lua из нашего приложения.
https://habr.com/ru/companies/vk/articles/681400/
👉 @php_lib
👍2
Расшифровка функций пустых значений в PHP: Когда какие функции использовать
В PHP проверка пустых значений является распространенной операцией, и существует несколько способов ее выполнения. Понимание различий между использованием !, is_null() и isset() очень важно, поскольку каждый из них проверяет различные условия:
https://dev.to/salmazz/php-check-for-empty-values-vs-isnull-vs-isset-vs-isempty-46k4
👉 @php_lib
В PHP проверка пустых значений является распространенной операцией, и существует несколько способов ее выполнения. Понимание различий между использованием !, is_null() и isset() очень важно, поскольку каждый из них проверяет различные условия:
https://dev.to/salmazz/php-check-for-empty-values-vs-isnull-vs-isset-vs-isempty-46k4
👉 @php_lib
👍4
Представляем Laravel Pulse. 💓
Pulse позволяет с первого взгляда определить производительность и использование продакшена. Отслеживайте медленные задания и конечные точки, находите наиболее активных пользователей и многое другое.
На следующей неделе на GitHub. Подарок от Laravel для вас.
https://pulse.laravel.com/
👉 @php_lib
Pulse позволяет с первого взгляда определить производительность и использование продакшена. Отслеживайте медленные задания и конечные точки, находите наиболее активных пользователей и многое другое.
На следующей неделе на GitHub. Подарок от Laravel для вас.
https://pulse.laravel.com/
👉 @php_lib
👍7
Совет по безопасности: увеличьте количество раундов bcrypt
https://securinglaravel.com/p/security-tip-increase-your-bcrypt
👉 @php_lib
https://securinglaravel.com/p/security-tip-increase-your-bcrypt
👉 @php_lib
👍2
Исповедь ничтожества
Эта статья - история моей карьеры. Я не уверен, есть ли тут хоть какая-либо ценность для сообщества, но возможно кто-то узнает в какой-либо части истории себя, и, опять же, возможно какие-то моменты помогут ему проанализировать свою карьеру и не повторить моих ошибок. В общем - это история тридцатилетнего разработчика-недоучки с раздутым самомнением, который наконец осознал, что вся та исключительность, про которую ему намекали и в которую он свято верил - это точно не про него.
P.S. Извиняюсь за кликбейтный заголовок, но, мне кажется, он лучше всего описывает содержание этой статьи.
P.P.S. Очень много текста внутри.
https://habr.com/ru/articles/683674/
👉 @php_lib
Эта статья - история моей карьеры. Я не уверен, есть ли тут хоть какая-либо ценность для сообщества, но возможно кто-то узнает в какой-либо части истории себя, и, опять же, возможно какие-то моменты помогут ему проанализировать свою карьеру и не повторить моих ошибок. В общем - это история тридцатилетнего разработчика-недоучки с раздутым самомнением, который наконец осознал, что вся та исключительность, про которую ему намекали и в которую он свято верил - это точно не про него.
P.S. Извиняюсь за кликбейтный заголовок, но, мне кажется, он лучше всего описывает содержание этой статьи.
P.P.S. Очень много текста внутри.
https://habr.com/ru/articles/683674/
👉 @php_lib
Хабр
Исповедь ничтожества
Эта статья - история моей карьеры. Я не уверен, есть ли тут хоть какая-либо ценность для сообщества, но возможно кто-то узнает в какой-либо части истории себя, и, опять же, возможно какие-то моменты...
👍2👎2🤔1
Типичный Swagger без гмо
Кто из нас не был одурманен сказками про свагер? Мол, добавь эту волшебную штуку — да заживешь! Но плата за магию — зеленое болото нотаций. А нельзя ли обойтись только типизацией самого php?
https://habr.com/ru/articles/775056/
👉 @php_lib
Кто из нас не был одурманен сказками про свагер? Мол, добавь эту волшебную штуку — да заживешь! Но плата за магию — зеленое болото нотаций. А нельзя ли обойтись только типизацией самого php?
https://habr.com/ru/articles/775056/
👉 @php_lib
Хабр
Типичный Swagger без гмо
Кто из нас не был одурманен сказками про свагер? Мол, добавь эту волшебную штуку — да заживешь! Но плата за магию — зеленое болото нотаций. А нельзя ли обойтись только типизацией самого php? (Спойлер:...
👍2
Совет Laravel 🔥
В конструктор запросов Laravel входит функция `
👉 @php_lib
В конструктор запросов Laravel входит функция `
lockForUpdate()
`. Она останавливает любые обновления или другую общую блокировку выбранной записи до тех пор, пока транзакция не будет завершена.👉 @php_lib
👍5
Как успешно пройти собеседование на php-программиста? Рассказывает Айгуль Билык, HR-директор компании Hopper IT👇
👉 Заранее подумайте, как будете презентовать себя на интервью. Постарайтесь, чтобы ваша речь была не дольше 2-3 минут.
👉 Подготовьте ответы на самые популярные вопросы HR. Это поможет не теряться во время беседы.
👉 Внимательно ознакомьтесь с вакансией и ее требованиями. Подготовьте пример того, как вы использовали нужные работодателю скиллы на прежнем месте работы и как это помогло компании.
👉 Освежите в памяти нужные знания – и теорию, и практику. Это особенно пригодится на техническом этапе интервью.
👉 Внимательно ознакомьтесь с вакансией и требованиями работодателя. Подготовьте пример того, как вы использовали их раньше в своей работе.
👉 Посмотрите на YouTube записи публичных собеседований на подобные вакансии – это поможет понять, как проходит интервью и что могут спрашивать.
Не бойтесь ходить на собеседования и откликаться на вакансии! Посмотреть, кто прямо сейчас нужен в Hopper IT, можно здесь: https://vk.cc/cmH3yi
👉 Заранее подумайте, как будете презентовать себя на интервью. Постарайтесь, чтобы ваша речь была не дольше 2-3 минут.
👉 Подготовьте ответы на самые популярные вопросы HR. Это поможет не теряться во время беседы.
👉 Внимательно ознакомьтесь с вакансией и ее требованиями. Подготовьте пример того, как вы использовали нужные работодателю скиллы на прежнем месте работы и как это помогло компании.
👉 Освежите в памяти нужные знания – и теорию, и практику. Это особенно пригодится на техническом этапе интервью.
👉 Внимательно ознакомьтесь с вакансией и требованиями работодателя. Подготовьте пример того, как вы использовали их раньше в своей работе.
👉 Посмотрите на YouTube записи публичных собеседований на подобные вакансии – это поможет понять, как проходит интервью и что могут спрашивать.
Не бойтесь ходить на собеседования и откликаться на вакансии! Посмотреть, кто прямо сейчас нужен в Hopper IT, можно здесь: https://vk.cc/cmH3yi
👍3👏1
Когда использовать трейты?
Когда использовать трейты? Никогда.
Ну, можно считать, что у трейта есть несколько преимуществ:
Преимущества
Если вы хотите повторно использовать некоторый код между несколькими классами, использование трейта - это альтернатива расширению класса. В этом случае трейты могут быть лучшим вариантом, поскольку они не становятся частью иерархии типов, т. е. класс, использующий трейты, не является "экземпляром этого трейта".
Трейт может избавить вас от ручного копирования/вставки, предлагая вместо этого копирование/вставку во время компиляции.
https://matthiasnoback.nl/2022/07/when-to-use-a-trait/
👉 @php_lib
Когда использовать трейты? Никогда.
Ну, можно считать, что у трейта есть несколько преимуществ:
Преимущества
Если вы хотите повторно использовать некоторый код между несколькими классами, использование трейта - это альтернатива расширению класса. В этом случае трейты могут быть лучшим вариантом, поскольку они не становятся частью иерархии типов, т. е. класс, использующий трейты, не является "экземпляром этого трейта".
Трейт может избавить вас от ручного копирования/вставки, предлагая вместо этого копирование/вставку во время компиляции.
https://matthiasnoback.nl/2022/07/when-to-use-a-trait/
👉 @php_lib
👍4❤1
Мутации в микросервисах: ставим задачу
Всем привет! Меня зовут Эмин Чернов, я руководитель платформенных команд и архитектор в компании Профи. Сегодня расскажу про то, как мы столкнулись с проблемой консистентных изменений данных в микросервисах и каким образом планируем её порешать.
https://habr.com/ru/articles/770122/
👉 @php_lib
Всем привет! Меня зовут Эмин Чернов, я руководитель платформенных команд и архитектор в компании Профи. Сегодня расскажу про то, как мы столкнулись с проблемой консистентных изменений данных в микросервисах и каким образом планируем её порешать.
https://habr.com/ru/articles/770122/
👉 @php_lib
👍4