Расскажите о шаблонах GRASP.
Шаблоны GRASP (General Responsibility Assignment Software Patterns) — это набор принципов проектирования объектно-ориентированного кода, которые помогают определить, какие классы или объекты будут выполнять конкретные задачи и ответственности. Они помогают улучшить структуру кода, делая его более гибким, читаемым и поддерживаемым.
Ниже представлены основные шаблоны GRASP:
1. Expert (Эксперт) — данный шаблон назначает ответственность объекту, который обладает наиболее полной информацией для выполнения определенной задачи. Таким образом, эксперт в данном контексте является наиболее квалифицированным объектом для выполнения определенной операции.
2. Creator (Создатель) — данный шаблон определяет, что объект должен быть ответственным за создание других объектов. То есть, если объект А тесно связан с объектом В и может быть считаться его создателем инициализации, то объект А должен брать на себя ответственность за создание объекта В.
3. Controller (Контроллер) — данный шаблон назначает объекту ответственность контроля за интерфейсом пользователя и управления потоком данных. Контроллер обрабатывает пользовательский ввод и инициирует действия в системе.
4. Low Coupling (Низкая связанность) — данный шаблон подразумевает, что объект должен иметь наименьшую возможную зависимость от других объектов. Это достигается путем использования абстракций и интерфейсов, чтобы объекты могли взаимодействовать, не зная подробности друг о друге.
5. High Cohesion (Высокая связность) — данный шаблон подразумевает, что каждый класс должен представлять собой логическую единицу функциональности. Класс должен иметь одну ответственность и хорошо определенный смысл.
6. Indirection (Индиректирование) — данный шаблон назначает объекту посредническую роль для связи между другими объектами. То есть, объект А не обращается напрямую к объекту В, а связь между ними возникает через объект-посредник.
7. Polymorphism (Полиморфизм) — данный шаблон направлен на использование полиморфизма в объектно-ориентированном программировании. Полиморфизм позволяет работать с разными типами объектов через один и тот же интерфейс, что делает систему более гибкой и расширяемой.
#вопросы_с_собеседований
Шаблоны GRASP (General Responsibility Assignment Software Patterns) — это набор принципов проектирования объектно-ориентированного кода, которые помогают определить, какие классы или объекты будут выполнять конкретные задачи и ответственности. Они помогают улучшить структуру кода, делая его более гибким, читаемым и поддерживаемым.
Ниже представлены основные шаблоны GRASP:
1. Expert (Эксперт) — данный шаблон назначает ответственность объекту, который обладает наиболее полной информацией для выполнения определенной задачи. Таким образом, эксперт в данном контексте является наиболее квалифицированным объектом для выполнения определенной операции.
2. Creator (Создатель) — данный шаблон определяет, что объект должен быть ответственным за создание других объектов. То есть, если объект А тесно связан с объектом В и может быть считаться его создателем инициализации, то объект А должен брать на себя ответственность за создание объекта В.
3. Controller (Контроллер) — данный шаблон назначает объекту ответственность контроля за интерфейсом пользователя и управления потоком данных. Контроллер обрабатывает пользовательский ввод и инициирует действия в системе.
4. Low Coupling (Низкая связанность) — данный шаблон подразумевает, что объект должен иметь наименьшую возможную зависимость от других объектов. Это достигается путем использования абстракций и интерфейсов, чтобы объекты могли взаимодействовать, не зная подробности друг о друге.
5. High Cohesion (Высокая связность) — данный шаблон подразумевает, что каждый класс должен представлять собой логическую единицу функциональности. Класс должен иметь одну ответственность и хорошо определенный смысл.
6. Indirection (Индиректирование) — данный шаблон назначает объекту посредническую роль для связи между другими объектами. То есть, объект А не обращается напрямую к объекту В, а связь между ними возникает через объект-посредник.
7. Polymorphism (Полиморфизм) — данный шаблон направлен на использование полиморфизма в объектно-ориентированном программировании. Полиморфизм позволяет работать с разными типами объектов через один и тот же интерфейс, что делает систему более гибкой и расширяемой.
#вопросы_с_собеседований
👍9❤2
Распространенные ошибки PHP: Решение часто встречающихся проблем
Некоторые ошибки просты и легко устранимы, но другие могут быть немного сложнее. Здесь рассказано про некоторые из наиболее распространенных ошибок и предложены решения, которые помогут вам быстро их устранить.
Некоторые ошибки просты и легко устранимы, но другие могут быть немного сложнее. Здесь рассказано про некоторые из наиболее распространенных ошибок и предложены решения, которые помогут вам быстро их устранить.
DEV Community
Common PHP Errors: Solutions to Frequently Encountered Issues
PHP is a powerful scripting language widely used for web development, but like any language, it's...
🥱7👍4👏1🌚1
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍3
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
👉Переводчик и автор оригинальных статей
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
👉Переводчик и автор оригинальных статей
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
job.proglib.io
Вакансии в медиа «Библиотека программиста»
Количество проектов в редакции постоянно растет, так что нам всегда нужны специалисты
👍1
Использование Twig для визуализации Markdown
Шаблонизатор Twig можно использовать для генерации не только HTML, но и других форматов контента, таких как Markdown, JSON и простой текст. Этот подход позволяет создавать универсальные решения для работы с данными в различных каналах.
Пример демонстрирует, как с помощью Symfony HTTP Client получить данные о рецепте с внешнего API и вывести их в формате Markdown. В статье подробно описаны шаги по интеграции нескольких компонентов Symfony: HTTP-клиента для работы с API и Twig для обработки и вывода данных.
Шаблонизатор Twig можно использовать для генерации не только HTML, но и других форматов контента, таких как Markdown, JSON и простой текст. Этот подход позволяет создавать универсальные решения для работы с данными в различных каналах.
Пример демонстрирует, как с помощью Symfony HTTP Client получить данные о рецепте с внешнего API и вывести их в формате Markdown. В статье подробно описаны шаги по интеграции нескольких компонентов Symfony: HTTP-клиента для работы с API и Twig для обработки и вывода данных.
DEV Community
Using Twig for rendering Markdown with PHP
Twig is a go-to templating engine for rendering HTML when developing web applications with...
👍5
💬 Вы когда-нибудь ощущали, что не заслуживаете той зарплаты, которую получаете?
❤️ — да, знакомо это чувство
👍 — я считаю, что получаю ровно столько, сколько заслуживаю
🤔 — мне наоборот кажется, что мне недостаточно много платят
#интерактив
❤️ — да, знакомо это чувство
👍 — я считаю, что получаю ровно столько, сколько заслуживаю
🤔 — мне наоборот кажется, что мне недостаточно много платят
#интерактив
🤔109❤37👍19🥰2😢1
Reli
Это профилировщик выборки или профилировщик памяти, написанный на PHP, который считывает информацию о запуске виртуальной машины PHP извне процесса. Вы можете обнаружить узкие места производительности или утечки памяти в своих скриптах, не меняя целевой скрипт и не загружая расширения.
Это профилировщик выборки или профилировщик памяти, написанный на PHP, который считывает информацию о запуске виртуальной машины PHP извне процесса. Вы можете обнаружить узкие места производительности или утечки памяти в своих скриптах, не меняя целевой скрипт и не загружая расширения.
GitHub
GitHub - reliforp/reli-prof: A sampling profiler or a memory profiler for PHP written in PHP, which reads information about running…
A sampling profiler or a memory profiler for PHP written in PHP, which reads information about running PHP VM from outside the process. You can find performance bottlenecks or memory leaks of your ...
👍8
Forwarded from Библиотека нейросетей | ChatGPT, Midjourney, DeepSeek, Sora
⚡️Разыгрываем флагманский смартфон
«Библиотека программиста» разыгрывает один из трех смартфонов на выбор:
🔹Samsung Galaxy S24 Ultra на 1 ТБ
🔹Xiaomi 14 Ultra на 512 ГБ
🔹iPhone 16 Pro Max на 512 ГБ
🔥 А еще 99 участников розыгрыша получат скидку 50% на наш курс Базовые модели ML и приложения!
Промокод будет действителен до 20 ноября.
Условия просты:
→ подписаться на Библиотека нейротекста
→ подписаться на Библиотека нейрозвука
→ подписаться на Библиотека нейрокартинок
→ нажать на кнопку «Участвовать» под этим постом
Итоги появятся 30 октября в 20:00 по московскому времени в нашем канале Библиотека программиста. Затем мы свяжемся с победителем, который сам выберет смартфон. Тем, кто получит промокод, мы вышлем его в течение недели после окончания розыгрыша.
⚠️ Убедитесь, что вам можно написать в личные сообщения или следите за результатами — если мы не сможем с вами связаться, то не сможем и отправить приз. Доставить мы можем только в города России и Беларуси.
«Библиотека программиста» разыгрывает один из трех смартфонов на выбор:
🔹Samsung Galaxy S24 Ultra на 1 ТБ
🔹Xiaomi 14 Ultra на 512 ГБ
🔹iPhone 16 Pro Max на 512 ГБ
🔥 А еще 99 участников розыгрыша получат скидку 50% на наш курс Базовые модели ML и приложения!
Промокод будет действителен до 20 ноября.
Условия просты:
→ подписаться на Библиотека нейротекста
→ подписаться на Библиотека нейрозвука
→ подписаться на Библиотека нейрокартинок
→ нажать на кнопку «Участвовать» под этим постом
Итоги появятся 30 октября в 20:00 по московскому времени в нашем канале Библиотека программиста. Затем мы свяжемся с победителем, который сам выберет смартфон. Тем, кто получит промокод, мы вышлем его в течение недели после окончания розыгрыша.
⚠️ Убедитесь, что вам можно написать в личные сообщения или следите за результатами — если мы не сможем с вами связаться, то не сможем и отправить приз. Доставить мы можем только в города России и Беларуси.
Автоматизация извлечения переводов в Laravel с помощью пользовательской команды Artisan
Здесь рассказано о создании пользовательской команды Artisan, которая просканирует вашу кодовую базу Laravel, извлечет весь текст, используемый в помощнике __(), и выведет переводы в JSON-файл для конкретной локали.
Здесь рассказано о создании пользовательской команды Artisan, которая просканирует вашу кодовую базу Laravel, извлечет весь текст, используемый в помощнике __(), и выведет переводы в JSON-файл для конкретной локали.
DEV Community
Automating Laravel Translation Extraction with a Custom Artisan Command
Translations play a crucial role in making your Laravel application accessible to users in multiple...
👍7🤔3🥱1
«Как я делал систему сбора данных на провинциальном заводе и что из этого вышло»
Автор делится историей о том, как воплощал свой Pet-проект в рамках промышленного предприятия и к чему это привело.
Автор делится историей о том, как воплощал свой Pet-проект в рамках промышленного предприятия и к чему это привело.
Хабр
Как я делал систему сбора данных на провинциальном заводе и что из этого вышло
Привет, Хабр! Меня зовут Валерий, и я проработал инженером на заводе шесть лет. Звучит как начало занятий по групповой психотерапии для выгоревших сотрудников, но о моём выгорании и причинах этого я...
👍5
🧪 Чем заменить Postman: 5 отличных инструментов для разработки API
Postman долгое время был основным инструментом для разработки и тестирования API, но сейчас для большинства разработчиков его ограничения стали перевешивать преимущества. Рассмотрим альтернативные инструменты, которые могут предложить больше возможностей, чем Postman — даже в бесплатной версии.
👉Читаем здесь
Postman долгое время был основным инструментом для разработки и тестирования API, но сейчас для большинства разработчиков его ограничения стали перевешивать преимущества. Рассмотрим альтернативные инструменты, которые могут предложить больше возможностей, чем Postman — даже в бесплатной версии.
👉Читаем здесь
🥱8🎉4👍2
У каждого такое было...
Давайте в комментариях соберём лучшие отмазки для айтишников.
Начинаем: «Не баг, а фича». Продолжаем 👇
Давайте в комментариях соберём лучшие отмазки для айтишников.
Начинаем: «Не баг, а фича». Продолжаем 👇
👍5
💻🤔 Код сожаления: 10 ошибок, о которых жалеют даже опытные программисты
В программировании полно разных путей и нет единственно правильного способа достичь вершины мастерства. Но есть общие ловушки.
✔️Читать статью
В программировании полно разных путей и нет единственно правильного способа достичь вершины мастерства. Но есть общие ловушки.
✔️Читать статью
👍5
Глубокое погружение в сессии в Laravel
При создании приложений Laravel почти гарантированно придется иметь дело с сессиями. Они являются фундаментальной частью веб-разработки.
В этой статье рассказано о том, что такое сессии, как они работают в Laravel и как вы можете работать с ними в своих приложениях.
Затем будет показано, как можно взаимодействовать с сессиями, используя «классы сессий», чтобы избежать распространенных ошибок, которые часто встречаются при работе над приложениями Laravel, а также, как можно тестировать данные сессий в Laravel.
При создании приложений Laravel почти гарантированно придется иметь дело с сессиями. Они являются фундаментальной частью веб-разработки.
В этой статье рассказано о том, что такое сессии, как они работают в Laravel и как вы можете работать с ними в своих приложениях.
Затем будет показано, как можно взаимодействовать с сессиями, используя «классы сессий», чтобы избежать распространенных ошибок, которые часто встречаются при работе над приложениями Laravel, а также, как можно тестировать данные сессий в Laravel.
Laravel News
A Deep Dive into Sessions in Laravel - Laravel News
A Deep Dive into Sessions in Laravel
🔥6👍2🎉1
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
📊🚀 Почему все говорят о Kafka?
Хочешь узнать, как обрабатывать миллионы событий в секунду и почему такие гиганты, как Netflix и Uber, без ума от Kafka? Давай разберемся, как этот инструмент может превратить поток данных в золотую жилу для твоего проекта.
Читать статью
Хочешь узнать, как обрабатывать миллионы событий в секунду и почему такие гиганты, как Netflix и Uber, без ума от Kafka? Давай разберемся, как этот инструмент может превратить поток данных в золотую жилу для твоего проекта.
Читать статью
👍3