Telegram Web Link
PHP Extended Type System v0.1.0

Пыхари, сегодня мы наконец-то увидим, как я на чём-то ставлю тег, пусть и 0.1.0!

Встречаемся через час на уютном PHP Point!

https://youtu.be/5c0WdgAnH_k
Варианты нейминга конструктора типов для php-extended-type-system/type. Отличается только имя конструктора, всё остальное одинаковое.
Предпраздничная головоломка!

Разберём потом на стриме.
👨‍🔬 Новая лекция от Пыха. LRU мемоизация

Что такое мемоизация, как её абстрагировать и отрефакторить по TDD на LRU-алгоритм. 40 минут.

https://boosty.to/phpyh/posts/c4ba0a19-cfa2-41ec-903b-ede36fd5d28a
Эффективность кэширования

Недавно на консультации разработчик показывал HTTP-кэширование главной страницы. Мне сразу бросилось в глаза, что для проверки If-Modified-Since в базу делается целая пачка далеко не лёгких запросов с join-ами, которые выясняют, как давно изменялись сущности, участвующие в рендеринге. Я предложил проверить, действительно ли это быстрее, чем просто отдать страницу.

Пару лет назад в докладе Павла Паршикова я познакомился с формулой целесобразности кэширования:

rp + (r + c + w)(1 - p) < c

c — стоимость выполнения кэшируемой операции,
0 < p < 1 — вероятность попадания в кэш (hit),
r — стоимость чтения и валидации кэша,
w — стоимость записи в кэш.

После упрощения:

r + w(1 - p)
———————————— < c
p

Получается, что кэширование имеет смысл тогда, когда взаимодействие с ним обходится дёшево, а вероятность хита близка к 1.

Как правило, наибольшее внимание уделяют p, подразумевая, что сам кэш достаточно быстрый. Но r не стоит недооценивать. В описанной в начале поста ситуации именно стоимость валидации оказалась слишком высокой, из-за чего кэширование потеряло смысл.
Initial Pelican — Initial

Субботний оффтоп, важный для меня и, надеюсь, приятный для вас.

Мы с группой Initial Pelican (я в ней играю на барабанах) наконец-то выпустили свой первый альбом «Initial». Его можно послушать на всех стриминговых площадках, кроме Apple Music (если кто-то там работает, попинайте коллег, плиз 😆). Также мы дропнули на YouTube уже второй ролик со студии. Переходите по ссылке, надевайте наушники и смакуйте! Буду ждать ваши впечатления в комментариях.

🎧 Spotify
🎧 Яндекс.Музыка
🎧 YouTube
🎧 VK Музыка
🎧 Мультиссылка на все сервисы
👍 Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
Наводим порядок в composer.json

Если вы, как и я, испытываете наслаждение от автоматизированного порядка, могу порекомендовать пакет ergebnis/composer-normalize. Он упорядочивает ключи composer.json в соответсвии со схемой, после чего структура файла становится логичной и узнаваемой. Под капотом, кстати, используется ergebnis/json-normalizer — он решает задачу нормализации JSON в общем случае и может быть полезен сам по себе.

Интеграция в проект предельно проста:

composer req --dev ergebnis/composer-normalize
composer normalize
git commit -am 'Навёл порядок в composer.json!'

Ну и закрепляем наши усилия, добавив в CI-пайплайн composer normalize --dry-run.

https://github.com/ergebnis/composer-normalize
Нужно ли отбивать пробелами оператор конкатенации?

Несколько лет подряд у меня был ответ "нет", потому что в PHP-CS-Fixer concat_space по умолчанию выставлен в none и я привык так писать ещё со времён контрибьютинга в Symfony.

Но на новой работе коллеги ставят пробелы. Почитал новый PER Coding Style: "All binary arithmetic, comparison, assignment, bitwise, logical, string, and type operators MUST be preceded and followed by at least one space". Документация подтверждает, что конкатенация относится к строковым операторам. Получается, что если следовать рекомендации, то пробелы надо ставить...
Пыхарь, ты отбиваешь пробелами оператор конкатенации?
Anonymous Poll
92%
'Д' . 'а'
8%
'Не'.'т'
<?php

fclose(STDIN);
var_dump(is_resource(STDIN));
2025/07/04 09:13:25
Back to Top
HTML Embed Code: