Проба пера. Звук говно, но впредь будем за этим следить.
https://youtu.be/9tBh7jwO170
https://youtu.be/9tBh7jwO170
YouTube
Обсуждение проблемы Laravel Livewire пакета
В этом видео мы с Алексеем разбираем некоторе проблемы #Laravel #Livewire
Наше новое видео, звук уже лучше. Скоро купим микрофоны!
https://youtu.be/Yv74M_r_AKY
https://youtu.be/Yv74M_r_AKY
YouTube
Про Laravel, Spiral и пятиминутку с Валентином Удальцовым
Ссылка на подкаст https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5zb3VuZGNsb3VkLmNvbS91c2Vycy9zb3VuZGNsb3VkOnVzZXJzOjE1MzUxOTY1My9zb3VuZHMucnNz/episode/NjRhYzc5YjMtMGJmNC00Y2VmLTg0NDgtNDIxYTBkYjJmOGU3?ep=14
Картинка к предыдущему подкасту
https://t.me/ebanoePHP/755
https://t.me/ebanoePHP/755
Telegram
ebanoePHP
Пояснение для дебилов:
- Подъезжает Laravel на ламбо. RoadRunner (полицейский) предъявляет ему требование Long Running
- Laravel берёт Octane и отпиливает ноги
- RoadRunner смотрит на калеку
- На фоне пробегает Spiral Framework
- Spiral Framework проектировался…
- Подъезжает Laravel на ламбо. RoadRunner (полицейский) предъявляет ему требование Long Running
- Laravel берёт Octane и отпиливает ноги
- RoadRunner смотрит на калеку
- На фоне пробегает Spiral Framework
- Spiral Framework проектировался…
Вы только посмотрите на эту крутотень!
Мельком показываем xhprof с багрегатором
https://youtu.be/h9JLmRRHZ48
Мельком показываем xhprof с багрегатором
https://youtu.be/h9JLmRRHZ48
YouTube
Релизим Spiral Framework 3.6 | xhprof в Buggregator
- Релиз Spiral Framework 3.6
https://github.com/spiral/framework/releases/tag/3.6.0
- Вопросы из глубинки
- Демонстрация профайлинга (xhprof) в Buggregator и Spiral
https://github.com/buggregator/spiral-app
https://github.com/spiral/profiler
Заходите…
https://github.com/spiral/framework/releases/tag/3.6.0
- Вопросы из глубинки
- Демонстрация профайлинга (xhprof) в Buggregator и Spiral
https://github.com/buggregator/spiral-app
https://github.com/spiral/profiler
Заходите…
Скоро запроцессится ещё одно
https://youtu.be/lpOax1iGVkE
Релизим Spiral инсталлятор, сосисочная вечеринка на 6 персон
https://youtu.be/lpOax1iGVkE
Релизим Spiral инсталлятор, сосисочная вечеринка на 6 персон
Новый видосик.
Смотрим новую бенч-либу
https://youtu.be/bQqbyjuaQ_I
Смотрим новую бенч-либу
TheDragonCode/benchmark
и бенчим функции поиска по массиву по dotted path
в #Yii #Laravel и #Spiralhttps://youtu.be/bQqbyjuaQ_I
YouTube
🚀Бенчмаркинг функций поиска по массиву, изучаем #Spiral фичи и обсуждаем контрибьютинг в #opensource
В этом видео мы рассмотрим три интересные темы, которые могут помочь вам улучшить ваши навыки разработки и внести свой вклад в сообщество:
1️⃣ Бенчмаркинг функций для поиска по массиву:
Мы проведем тесты на производительность функций поиска используемых…
1️⃣ Бенчмаркинг функций для поиска по массиву:
Мы проведем тесты на производительность функций поиска используемых…
Рассматриваем Storybook в контексте обновления фронтовой части нового Buggregator.
Поверхностное рассмотрение демонстрационного проекта
https://youtu.be/Zk9E3ZBDtb8
Вуху, у нас есть чат! Теперь наши высеры можно комментировать! :)
Поверхностное рассмотрение демонстрационного проекта
Ticket Booking
, в котором интегрировано всё сразу: #Spiral, #Zipkin, #Birddog, #OpenTelemetry, #Grafana, #RoadRunner, #Centrifugo и #Temporalio. https://youtu.be/Zk9E3ZBDtb8
Вуху, у нас есть чат! Теперь наши высеры можно комментировать! :)
YouTube
🔥 Обсуждение #Buggregator #Storybook, Ticket Booking с #OpenTelemetry и Real-time Chat с #Centrifugo
В этом видео мы погрузимся в мир разработки и обсудим следующие темы:
1️⃣ Будущее и текущая стадия разработки #Buggregator. Мы поговорим о #Storybook, #Nuxt3 и #Vue3, которые были внедрены в проект.
2️⃣ Рассмотрим систему Ticket Booking - демо проект показывающий…
1️⃣ Будущее и текущая стадия разработки #Buggregator. Мы поговорим о #Storybook, #Nuxt3 и #Vue3, которые были внедрены в проект.
2️⃣ Рассмотрим систему Ticket Booking - демо проект показывающий…
PHP Fart Time
https://youtu.be/IGRI4I_nnQM Репка с бечами https://github.com/php-fart/benchmarks-serializers
Хотел, было, добавить детализации в тексте поста, но при работе с цифрами бенчей возникли вопросы.
Как этот инструмент считает avg?
Оказывается, при расчёте среднего значения исключаются 10% максимальных и 10% минимальных значений. Not bad.
Как этот инструмент считает avg?
Оказывается, при расчёте среднего значения исключаются 10% максимальных и 10% минимальных значений. Not bad.
Пилим очереди в Spiral Framework с различными сериализаторами.
- JSON
- Native serializer
- Symfony Serializer
- Laravel Serializable Closure
- protobuf
- valinor
https://youtu.be/f2YvmYFkAyo
- JSON
- Native serializer
- Symfony Serializer
- Laravel Serializable Closure
- protobuf
- valinor
https://youtu.be/f2YvmYFkAyo
YouTube
Тестируем очереди в Spiral Framework с различными сериализаторами. #queue #spiral
Тестируем очереди в Spiral Framework с различными сериализаторами.
- JSON
- Native serializer
- Symfony Serializer
- Laravel Serializable Closure
- protobuf
- valinor
Ссылки
1. PSR-7 - https://www.php-fig.org/psr/psr-7/
2. PER - https://www.php-fig.org/per/coding…
- JSON
- Native serializer
- Symfony Serializer
- Laravel Serializable Closure
- protobuf
- valinor
Ссылки
1. PSR-7 - https://www.php-fig.org/psr/psr-7/
2. PER - https://www.php-fig.org/per/coding…
#Hint
А я напомню, что атрибуты можно использовать и в PHP 7.4 с помощью пакета
А я напомню, что атрибуты можно использовать и в PHP 7.4 с помощью пакета
spiral/attributes:^2.7
https://t.me/isPHPdying/143Telegram
PHP умирает?!
#Article #Типизация #php
#️⃣ Типизация PHP
Наверное буду кэпом, если скажу, что следование строгим типам и избежание неявных преобразований уменьшает магичность кода, что ведёт к стабильности и надёжности.
Поэтому в коде Spiral, Cycle и других наших продуктов мы используем строгую типизацию, где это возможно.
Вроде тема понятная, но... это же PHP. А значит без нюансов не обойтись 💩
⭕️ declare(strict_types=1);
Прям из доки: по умолчанию, PHP будет преобразовывать значения неправильного типа в ожидаемые. ...
Можно включить режим строгой типизации на уровне файла.
В этом режиме, тип значения должен строго соответствовать объявленному, иначе будет выброшено исключение
Единственным исключением из этого правила является передача значения типа
⚠️ На вызовы из внутренних функций, действие
Обратите внимание на предупреждение. Многие core-функции не следуют строгости типов.
Например,
А вот
Рефлексия тоже не следует строгости. Поэтому вместо
Оно, может, чуть медленнее, но зато надёжнее.
Теперь к костылям.
⭕️ Типизация переменных
С помощью несложного текучего костыля можно привязать тип к переменной.
Не делайте так.
⭕️ PHP 8.2
Типы
Зачем это надо? Для вариантности. Например, при расширении метода возвращаемое значение с
Завезли DNF (Disjunctive Normal Form).
Вот такого мутанта теперь можно будет встретить в коде:
ℹ️ Всегда явно указывайте тип nullable параметров (
ℹ️ Тип
ℹ️ Тип
Как же принять callable и записать в свойство? Например так:
Может у вас есть какие-то мысли, нюансы или лайфхаки вокруг типов PHP? Поделитесь в комментариях
#️⃣ Типизация PHP
Наверное буду кэпом, если скажу, что следование строгим типам и избежание неявных преобразований уменьшает магичность кода, что ведёт к стабильности и надёжности.
Поэтому в коде Spiral, Cycle и других наших продуктов мы используем строгую типизацию, где это возможно.
Вроде тема понятная, но... это же PHP. А значит без нюансов не обойтись 💩
⭕️ declare(strict_types=1);
Прям из доки: по умолчанию, PHP будет преобразовывать значения неправильного типа в ожидаемые. ...
Можно включить режим строгой типизации на уровне файла.
В этом режиме, тип значения должен строго соответствовать объявленному, иначе будет выброшено исключение
TypeError
.Единственным исключением из этого правила является передача значения типа
int
туда, где ожидается float
.⚠️ На вызовы из внутренних функций, действие
strict_types
не распространяется.Обратите внимание на предупреждение. Многие core-функции не следуют строгости типов.
Например,
array_map()
и array_filter()
сделают неявное приведение типов.print_r(array_map(fn(int $a, int $b) => $a + $b, [1, '10', 3], [4, 5, '1e2']));
---
Array (
[0] => 5
[1] => 15
[2] => 103
)
А вот
call_user_func()
будет ругаться на несоответствие типов.Рефлексия тоже не следует строгости. Поэтому вместо
newInstanceArgs
/newInstance
в фабрике контейнера у нас $instance = new $class(...$arguments);
.Оно, может, чуть медленнее, но зато надёжнее.
Теперь к костылям.
⭕️ Типизация переменных
С помощью несложного текучего костыля можно привязать тип к переменной.
function makeInt(int &$i): void
{
static $list = [];
$list[] = $obj = new class() {
public int $i;
};
$obj->i = &$i;
}
$int = 1;
makeInt($int);
$int = 42; // 42
$int = 'foo'; // Fatal error: Uncaught TypeError: Cannot assign string...
Не делайте так.
⭕️ PHP 8.2
Типы
null
, false
и true
теперь можно использовать автономно.Зачем это надо? Для вариантности. Например, при расширении метода возвращаемое значение с
bool
можно сузить до true
или false
, а nullable (?Foo
) — до null
. Таких кейсов в библиотеках не мало.Завезли DNF (Disjunctive Normal Form).
Вот такого мутанта теперь можно будет встретить в коде:
(Countable&Traversable)|array
ℹ️
Что интересно, nullable-сахар (?Foo
) был добавлен в PHP 7.1 ещё до Union Types.ℹ️ Всегда явно указывайте тип nullable параметров (
?Foo $foo = null
) а не полагайтесь только на значение null
по умолчанию (Foo $foo = null
).ℹ️ Тип
never
был добавлен в PHP 8.1. Но он вряд ли вам пригодится, если вы гоняете на RoadRunner.ℹ️ Тип
callable
существует только в сигнатурах функций и методов. Его нельзя указать для свойств, а значит и в Promoted properties не засунуть. А всё потому, что в разных контекстах callable
может быть разным.Как же принять callable и записать в свойство? Например так:
// A class declaration
private \Closure $callback;
public function __construct(callable $callback)
{
$this->callback = $callback(...);
}
Может у вас есть какие-то мысли, нюансы или лайфхаки вокруг типов PHP? Поделитесь в комментариях
Апрельский PHP Annotated
https://blog.jetbrains.com/phpstorm/2023/04/php-annotated-april-2023/
https://blog.jetbrains.com/phpstorm/2023/04/php-annotated-april-2023/
The JetBrains Blog
PHP Annotated – April 2023 | The PhpStorm Blog
Greetings everyone! Welcome to the April installment of PHP Annotated, where we’ll catch up on the most exciting things that have happened in the PHP world over the last month, including curated news,
#ВредныеСоветы
⚠ Не используйте FINAL!
Есть хорошие программисты, которые топят за FINAL, а есть успешные люди.
⚠ Не используйте FINAL!
Есть хорошие программисты, которые топят за FINAL, а есть успешные люди.
https://samwho.dev/load-balancing/
Наглядно и очень интересно.
В связи с тем, что таких нагрузок вы всё-равно не достигните, в конце статьи всё-же можно поиграться на симуляторе.
Наглядно и очень интересно.
В связи с тем, что таких нагрузок вы всё-равно не достигните, в конце статьи всё-же можно поиграться на симуляторе.
#МыслиВслух
https://t.me/samdark_blog/103
Примерный перевод последнего абзаца:
Чтобы избежать проблем с производительностью, вызванных тяжелой инициализацией, крайне важно откладывать инициализацию как можно дольше. Поступая таким образом, вы можете быть уверены, что приложение будет работать гладко, независимо от сложности дерева зависимостей.
В умирающей модели инициализировать всё приходится заново. Однако, если ваше приложение не умирает, то инициализацию можно считать бесплатной, а в некоторых случаях отложенная инициализация может быть даже вредной.
Это я к чему. Нет универсального рецепта. Всё зависит. От приложения, от того как оно работает, от сервисов, которые нужно инициализировать, и которые не нужно.
Крутой доклад от @alexndrnovikov
Наш всратый доклад
https://t.me/samdark_blog/103
Примерный перевод последнего абзаца:
Чтобы избежать проблем с производительностью, вызванных тяжелой инициализацией, крайне важно откладывать инициализацию как можно дольше. Поступая таким образом, вы можете быть уверены, что приложение будет работать гладко, независимо от сложности дерева зависимостей.
В умирающей модели инициализировать всё приходится заново. Однако, если ваше приложение не умирает, то инициализацию можно считать бесплатной, а в некоторых случаях отложенная инициализация может быть даже вредной.
Это я к чему. Нет универсального рецепта. Всё зависит. От приложения, от того как оно работает, от сервисов, которые нужно инициализировать, и которые не нужно.
Крутой доклад от @alexndrnovikov
Наш всратый доклад