Хорошая заметка в телеграм канале Александра Макарова с кратким обзором htmlx и альтернатив: https://t.me/samdark_blog/116
Не слышали про htmlx? В двух словах: делаем шаблонизацию на бэкенде, в браузер приезжает готовый html код, но в некоторых местах этого html кода с помощью атрибутов мы декларативно описываем динамическое поведение (примеры на скриноте - это список из документации).
Плюсы:
- не нужно писать JS код
- не нужно собирать и компилировать фронтенд
- декларативный синтаксис, достаточно простой
- на самом деле htmlx не какая-то новая библиотека однодневка, а уже заматеревшее решение
Минусы:
- Совсем гибкий UI аля SPA построить не получится. Но это и не входит в задачи библиотеки.
Альтернативы?
- альтернатив много, история развития этого подхода богатая, см заметку в блоге Александра (https://t.me/samdark_blog/116)
- либо перестать генерировать html шаблоны на PHP бэкенде и делать фронтенд на фронтенд фреймворках, тут порекомендую видео от Ивана Поддубного с его накопленным опытом: https://youtu.be/POogPQm_PcE
Не слышали про htmlx? В двух словах: делаем шаблонизацию на бэкенде, в браузер приезжает готовый html код, но в некоторых местах этого html кода с помощью атрибутов мы декларативно описываем динамическое поведение (примеры на скриноте - это список из документации).
Плюсы:
- не нужно писать JS код
- не нужно собирать и компилировать фронтенд
- декларативный синтаксис, достаточно простой
- на самом деле htmlx не какая-то новая библиотека однодневка, а уже заматеревшее решение
Минусы:
- Совсем гибкий UI аля SPA построить не получится. Но это и не входит в задачи библиотеки.
Альтернативы?
- альтернатив много, история развития этого подхода богатая, см заметку в блоге Александра (https://t.me/samdark_blog/116)
- либо перестать генерировать html шаблоны на PHP бэкенде и делать фронтенд на фронтенд фреймворках, тут порекомендую видео от Ивана Поддубного с его накопленным опытом: https://youtu.be/POogPQm_PcE
🔥8👎1😁1💩1
Прочитал статью предлагающую ряд принципов типа SOLID, но немного других (см репост ниже 👇)
Эти принципы, и старые добрые SOLID, и предложенные автором статьи, звучат, с одной стороны, убедительно, но с другой стороны, всегда можно найти к чему придраться и устроить жаркий спор относительно «правильного» понимания или применения.
И тут у меня появилась «первоапрельская» идея - надо больше разных принципов! Причём не от анонимов из блогов, в от известных исторических личностей.
Эти принципы, и старые добрые SOLID, и предложенные автором статьи, звучат, с одной стороны, убедительно, но с другой стороны, всегда можно найти к чему придраться и устроить жаркий спор относительно «правильного» понимания или применения.
И тут у меня появилась «первоапрельская» идея - надо больше разных принципов! Причём не от анонимов из блогов, в от известных исторических личностей.
👏1
Forwarded from Леонид Черненко
Статья про параметры CUPID:
https://dannorth.net/2022/02/10/cupid-for-joyful-coding
Автор предлагает писать код ориентированный на CUPID, вместо следования устаревшим по его мнению принципам SOLID.
Отличная статья, каждый из параметров заслуживает пристального рассмотрения, аргументация на высоком уровне )
Краткое определение параметров:
C - Composability, возможность блоков кода "стыковаться" друг с другом
U - Unix philosofy, делай что-то одно, но хорошо
P - Predictability, отсутствие сюрпризов в коде
I - Idiomatic, единообразный, узнаваемый стиль
D - Domain-based, код основанный на предметной области
https://dannorth.net/2022/02/10/cupid-for-joyful-coding
Автор предлагает писать код ориентированный на CUPID, вместо следования устаревшим по его мнению принципам SOLID.
Отличная статья, каждый из параметров заслуживает пристального рассмотрения, аргументация на высоком уровне )
Краткое определение параметров:
C - Composability, возможность блоков кода "стыковаться" друг с другом
U - Unix philosofy, делай что-то одно, но хорошо
P - Predictability, отсутствие сюрпризов в коде
I - Idiomatic, единообразный, узнаваемый стиль
D - Domain-based, код основанный на предметной области
Dan North & Associates Ltd
CUPID—for joyful coding
What started as lighthearted iconoclasm, poking at the bear of SOLID, has developed into something more concrete and tangible. If I do not think the SOLID principles are useful these days, then what would I replace them with? Can any set of principles hold…
🥴6🌚4👍3👎1
Итак, принципы программирования по заветам Марксизма-Ленинизма от Владимира Ильича: LENIND
L - Labor Equality Principle (Принцип равенства труда): Все элементы кода должны иметь равные возможности для исполнения. Избегайте привилегирования каких-либо частей кода за счет других. Каждая функция, метод или класс должны иметь равный доступ к ресурсам и возможности для выполнения своих задач.
E - Economic Efficiency Principle (Принцип экономической эффективности): Максимизируйте использование ресурсов. Оптимизируйте ваш код для достижения максимальной производительности с минимальными затратами. Всякий излишек должен быть устранен.
N - Necessity Principle (Принцип необходимости): Каждый элемент кода должен быть необходимым и иметь цель. Избегайте бесцельного кода. Если часть кода не способствует общей цели программы, она должна быть исключена.
I - International Solidarity Principle (Принцип международной солидарности): Код должен быть написан таким образом, чтобы его можно было легко использовать, модифицировать и понимать в любой точке мира. Это включает в себя учет локализации и интернационализации, использование ясных комментариев и документации, а также придерживание стандартов кодирования.
N - No Exploitation Principle (Принцип нон-эксплуатации): Код не должен злоупотреблять своими ресурсами или зависимостями. Избегайте ситуаций, когда одна часть кода "эксплуатирует" другую, используя больше ресурсов, чем необходимо, или принуждая ее выполнять задачи за себя.
D - Dictatorship of the Proletariat Principle (Принцип диктатуры пролетариата): Код должен служить интересам большинства пользователей. Конечные пользователи - это "пролетариат" вашего кода, и его нужно разрабатывать с учетом их потребностей и интересов. Вы должны активно слушать отзывы и требования пользователей и стремиться их удовлетворить.
L - Labor Equality Principle (Принцип равенства труда): Все элементы кода должны иметь равные возможности для исполнения. Избегайте привилегирования каких-либо частей кода за счет других. Каждая функция, метод или класс должны иметь равный доступ к ресурсам и возможности для выполнения своих задач.
E - Economic Efficiency Principle (Принцип экономической эффективности): Максимизируйте использование ресурсов. Оптимизируйте ваш код для достижения максимальной производительности с минимальными затратами. Всякий излишек должен быть устранен.
N - Necessity Principle (Принцип необходимости): Каждый элемент кода должен быть необходимым и иметь цель. Избегайте бесцельного кода. Если часть кода не способствует общей цели программы, она должна быть исключена.
I - International Solidarity Principle (Принцип международной солидарности): Код должен быть написан таким образом, чтобы его можно было легко использовать, модифицировать и понимать в любой точке мира. Это включает в себя учет локализации и интернационализации, использование ясных комментариев и документации, а также придерживание стандартов кодирования.
N - No Exploitation Principle (Принцип нон-эксплуатации): Код не должен злоупотреблять своими ресурсами или зависимостями. Избегайте ситуаций, когда одна часть кода "эксплуатирует" другую, используя больше ресурсов, чем необходимо, или принуждая ее выполнять задачи за себя.
D - Dictatorship of the Proletariat Principle (Принцип диктатуры пролетариата): Код должен служить интересам большинства пользователей. Конечные пользователи - это "пролетариат" вашего кода, и его нужно разрабатывать с учетом их потребностей и интересов. Вы должны активно слушать отзывы и требования пользователей и стремиться их удовлетворить.
😁31👍7🤡4🥴3🔥2💩2👨💻1
📚Пятиминутка самообразования в субботу: Есть три основных операции с использованием ссылок: присвоение по ссылке, передача по ссылке и возврат по ссылке.
https://www.php.net/manual/ru/language.references.whatdo.php
https://www.php.net/manual/ru/language.references.whatdo.php
👍6
📚Пятиминутка самообразования в воскресенье: Памятка PHP/GoLang разработчику для подготовки к собеседованиям https://backendinterview.ru
backendinterview.ru
Введение - Backend interview
Книжка для подготовки к собеседованию на должность backend developer
👍31❤3😭1
Прочитал сегодня на Reddit:
- laravel is apple
- symfony is android
- your own framework is linux distro buit by you
https://redd.it/1439ccf
- laravel is apple
- symfony is android
- your own framework is linux distro buit by you
https://redd.it/1439ccf
Reddit
From the PHP community on Reddit
Explore this post and more from the PHP community
😁22🤣10👎4👍3🤔2🔥1💩1🤨1
В продуктах JetBrains появится AI помощник (аля Copilot)! На базе того же OpenAI. Ждём в PhpStorm!
https://blog.jetbrains.com/idea/2023/06/ai-assistant-in-jetbrains-ides/
https://blog.jetbrains.com/idea/2023/06/ai-assistant-in-jetbrains-ides/
The JetBrains Blog
AI Assistant in JetBrains IDEs | The IntelliJ IDEA Blog
Update, Dec 6: JetBrains AI Assistant is generally available with v.2023.3 or JetBrains IDEs and ReSharper. Read more in the dedicated post. This week’s EAP builds of all IntelliJ-based IDEs an
🔥40👍4🤔3
Laravel Livewire v3 + Filament v3 beta выйдут 20 июля на Laracon US.
Roadmap Filament v3 на GitHub: https://github.com/orgs/filamentphp/projects/2/views/13
Roadmap Filament v3 на GitHub: https://github.com/orgs/filamentphp/projects/2/views/13
👍6
Forwarded from Сергей Предводителев
🌿 Про минимальное количество аргументов для variadic-параметров в PHP
При использовании variadic-параметров в некоторых случаях нужно ограничить минимальное количество элементов. Это можно сделать с помощью проверки внутри метода:
При использовании variadic-параметров в некоторых случаях нужно ограничить минимальное количество элементов. Это можно сделать с помощью проверки внутри метода:
public function eat(string ...$foods): voidНо можно избавится от проверки и ввести это ограничение другим способом:
{
if (empty($foods)) {
throw new LogicException('Need to eat something.');
}
// ...
}
public function eat(string $food, string ...$moreFood): voidПричём это будет работать как в классическом варианте:
{
$foods = [$food, ...$moreFood];
// ...
}
$pet->eat('apple', 'meat', 'bread');
Так и с помощью распаковки массива:$foods = ['apple', 'meat', 'bread'];Периодически использую этот подход на практике, позволяет задать дополнительные условия на уровне сигнатуры метода.
$pet->eat(...$foods);
👍26❤5🔥3🤡1
Интерпретатор PHP скомпилированный в WASM и установленный через npm - теперь вы можете запустить PHP код и для этого даже не понадобится устанавливать PHP! Но понадобится Node.js: https://redd.it/14pq3r7
https://reddit.com/link/14pq3r7/video/oofemralhs9b1/player
https://reddit.com/link/14pq3r7/video/oofemralhs9b1/player
Reddit
From the laravel community on Reddit
Explore this post and more from the laravel community
💩24😁17🤯3
Знаете как в Linux удалить французский язык?
(комментаний на всякий случай: это шутка, команда не удаляет французский язык, но может удалить важные файлы в системе)
rm -fr /(комментаний на всякий случай: это шутка, команда не удаляет французский язык, но может удалить важные файлы в системе)
🤡47😁26👎5🔥5🤬4💩4👍3🤮2
Forwarded from Laravel World
This media is not supported in your browser
VIEW IN TELEGRAM
Релиз Herd
Среда разработки Laravel-проектов под macOS. Включает в себя всё необходимое, в том числе PHP и nginx.
https://herd.laravel.com/
Среда разработки Laravel-проектов под macOS. Включает в себя всё необходимое, в том числе PHP и nginx.
https://herd.laravel.com/
💩25🤡12🤔8👍4🥱1🥴1
Хорошая статья про важные причины выбора микросервисной или монолитной архитектуры 👇 Заодно подпишитесь на канал моего старого коллеги по подкастам, Антон знает о чём пишет