Forwarded from Beer::PHP 🍺 (Кирилл Сулимовский)
The Everybody Poops Rule (Все какают)
👉 Как мне кажется отличная аллегория, которая применима к программированию. Все мы постоянно сталкиваемся с ситуациями, когда в коде приходится идти на компромиссы. Иногда из-за нехватки времени, иногда для избежания оверинжиниринга, иногда из-за несовершенства системы, нехватки знаний и т.д. И мы сознательно оставляем в коде "дерьмо", ведь не каждая часть нашего приложения должна быть идеальной.
📌 Все какают. Но дома это делают не в каждой комнате. У вас есть специальная комната, в которой вы какаете, ставите дверь, и только там это делаете.
Да, звучит странно, но зато хорошо запоминается 😂
❗️ Важно понимать, что этот процесс управляемый. Данное правило как раз помогает с этим жить при помощи сокрытия и инкапсуляции. Если код изолирован — не важно, что скрывается за интерфейсом. Главное, что мы гадим в определенных частях и "держим дверь закрытой".
👍 Конечно, у подобных мест тоже следует определить стандарты. То есть нельзя совсем забить и втулить туда какой-то
❗️ Также то, что вы можете всё изолировать — не значит, что это нужно делать всегда и везде. Прежде чем это сделать задайте себе несколько вопросов:
• Как часто код будет использоваться?
• Как долго его можно не трогать?
• Является ли это основным доменом в вашей компании? (здесь лучше этого не делать)
👍 Еще круче — сразу планировать возможный рефакторинг. То, что сегодня вы изолировали может понадобиться бизнесу в будущем или где-то аукнуться в самый неподходящий момент. Круто быть к этому готовым. Лучше всего это место задокументировать, чтобы точно знать о всех отклонениях.
#junior #oop #source
👉 Как мне кажется отличная аллегория, которая применима к программированию. Все мы постоянно сталкиваемся с ситуациями, когда в коде приходится идти на компромиссы. Иногда из-за нехватки времени, иногда для избежания оверинжиниринга, иногда из-за несовершенства системы, нехватки знаний и т.д. И мы сознательно оставляем в коде "дерьмо", ведь не каждая часть нашего приложения должна быть идеальной.
📌 Все какают. Но дома это делают не в каждой комнате. У вас есть специальная комната, в которой вы какаете, ставите дверь, и только там это делаете.
Да, звучит странно, но зато хорошо запоминается 😂
❗️ Важно понимать, что этот процесс управляемый. Данное правило как раз помогает с этим жить при помощи сокрытия и инкапсуляции. Если код изолирован — не важно, что скрывается за интерфейсом. Главное, что мы гадим в определенных частях и "держим дверь закрытой".
👍 Конечно, у подобных мест тоже следует определить стандарты. То есть нельзя совсем забить и втулить туда какой-то
God Object с методами в 1000 строк, вызывающие запросы к БД в foreach. Здесь важно найти баланс. Это тоже непростая работа. Помните, положив код "за дверь" он не становится лучше, а значит учитывайте риски того, что вам придётся его переписывать.❗️ Также то, что вы можете всё изолировать — не значит, что это нужно делать всегда и везде. Прежде чем это сделать задайте себе несколько вопросов:
• Как часто код будет использоваться?
• Как долго его можно не трогать?
• Является ли это основным доменом в вашей компании? (здесь лучше этого не делать)
👍 Еще круче — сразу планировать возможный рефакторинг. То, что сегодня вы изолировали может понадобиться бизнесу в будущем или где-то аукнуться в самый неподходящий момент. Круто быть к этому готовым. Лучше всего это место задокументировать, чтобы точно знать о всех отклонениях.
#junior #oop #source
А может на PHP?
☀️PHP Дайджест № 204 (17 – 31 мая 2021) https://habr.com/ru/post/560158/
Для тех кому лень читать я буду в течении нескольких дней выкладывать короткие и самые интересные отрывки из дайджеста
Большое обновление популярной ORM. Под капотом поддержка атрибутов PHP 8, типизированные свойства, и другое
https://www.doctrine-project.org/2021/05/24/orm2.9.html
https://www.doctrine-project.org/2021/05/24/orm2.9.html
www.doctrine-project.org
New Release: Doctrine ORM 2.9 with Attributes, Typed Properties, more - Doctrine: PHP Open Source Project
The Doctrine Project is an open-source PHP project that is home to home to several PHP libraries primarily focused on database storage and object mapping. The core projects are the Object Relational Mapper (ORM) and the Database Abstraction Layer (DBAL) it…
❓Как скомпилировать PHP из исходников — Подробная инструкция. [EN]
https://thephp.website/en/issue/how-to-compile-php/
https://thephp.website/en/issue/how-to-compile-php/
thephp.website
How to compile PHP from Source
I write this short guide as an effort inspired by Joe Watkins' (krakjoe) post on the existing Bus Factor present in the PHP language. Knowing how to compile PHP will open one of the few doors necessary for contributing to the PHP language. Once you get familiar…
📦Статья об SSL-сертификатах, о том, как их установить, как получить бесплатный сертификат и зачем они вообще нужны. [EN]
https://www.cloudflare.com/learning/ssl/what-is-an-ssl-certificate/
https://www.cloudflare.com/learning/ssl/what-is-an-ssl-certificate/
Серия видео от Мартина Клепмана, автора книги "Высоконагруженные приложения", о распределенных системах, из которой вы узнаете:
1. Про RPC;
2. Об основных проблемах распределенных систем;
3. Как добиться отказоустойчивости;
4. Как синхронизировать время;
5. Про широковещательные оповещения;
7. О так называемой Eventual Consistency;
8. Двухфазовых коммитах и многом другом.
https://www.youtube.com/playlist?list=PLeKd45zvjcDFUEv_ohr_HdUFe97RItdiB
1. Про RPC;
2. Об основных проблемах распределенных систем;
3. Как добиться отказоустойчивости;
4. Как синхронизировать время;
5. Про широковещательные оповещения;
7. О так называемой Eventual Consistency;
8. Двухфазовых коммитах и многом другом.
https://www.youtube.com/playlist?list=PLeKd45zvjcDFUEv_ohr_HdUFe97RItdiB
Интересное обсуждение на тему того, почему code review – это плохо.
https://www.youtube.com/watch?v=IDj3x__YZgE
https://www.youtube.com/watch?v=IDj3x__YZgE
YouTube
CodeReview:долго, пл*хо, дорого /Ф. Дельгядо, В. Фабриченко, А. Агейченко, В. Дмитриев, В. Шароватов
Понравилось видео и хочешь узнать что-то еще про тимлидство? Забирай весь плейлист на https://is.gd/kChYnl или купи билет на следующий сезон конференции https://is.gd/auKynm
Подпишись на канал – каждую неделю мы выкладываем новые видео про то, как устроена…
Подпишись на канал – каждую неделю мы выкладываем новые видео про то, как устроена…
🧜🏻♀️Библиотека для удобного поиска по json с помощью декларативного языка jmespath.
https://github.com/jmespath/jmespath.php
https://github.com/jmespath/jmespath.php
GitHub
GitHub - jmespath/jmespath.php: Declaratively specify how to extract elements from a JSON document, in PHP
Declaratively specify how to extract elements from a JSON document, in PHP - jmespath/jmespath.php
🧛🏻♀️В статье подробно разобрана работа с циклами в Blade.
https://rappasoft.com/blog/working-with-at-blade-loops
https://rappasoft.com/blog/working-with-at-blade-loops
Rappasoft
Working with @blade $loops
Everyone knows about looping data in Blade files, but have you seen these lesser known features?
👑Использование нескольких пользовательских моделей в Laravel Jetstream
https://laravel.demiart.ru/multiple-user-models-with-laravel-jetstream/
https://laravel.demiart.ru/multiple-user-models-with-laravel-jetstream/
Уроки Laravel
Использование нескольких пользовательских моделей в Laravel Jetstream
Когда я создавал свой новый проект, то начал с установки каркаса аутентификации Laravel Jetstream. Но мне нужно было несколько моделей пользователей: Developer — для разработчиков, и Recruiter — для р