Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
11.3K subscribers
1.34K photos
20 videos
26 files
4.03K links
Все самое полезное для пхпшника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/bca892d6

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
Как выполнять команды Laravel Artisan с использованием эндпоинтов

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

Вместо традиционного подхода через cPanel или SSH можно создать API-эндпоинт для обработки команд, таких как миграции базы данных или очистка кеша.

Шаги:

1️⃣Создание контроллера (например, CommandController) с помощью Artisan.
2️⃣Добавление маршрута в Api routes для обработки API-запроса к созданному контроллеру.
3️⃣В контроллере создание метода runCommand, который выполняет Artisan-команду, используя переданную команду в API-запросе, и возвращает результат выполнения.
4️⃣Для безопасности API-точки создание Middleware (например, DebugModeOnly), которое позволяет выполнение команд только в режиме отладки. Регистрация Middleware в ядре приложения.
5️⃣Присвоение Middleware к созданному маршруту в Api.php.
👍9🎉21
Что означает сложность алгоритма?

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

Существуют два основных типа сложности алгоритма: временная сложность и пространственная сложность.

Временная сложность алгоритма оценивает время, необходимое для его выполнения, в зависимости от размера входных данных. Обычно время выполнения алгоритма измеряется в тактах процессора или в секундах. Примеры временной сложности включают константную сложность O(1) (выполнение за постоянное время), линейную сложность O(n) (выполнение занимает время, пропорциональное размеру входных данных) и квадратичную сложность O(n^2) (выполнение занимает время, пропорциональное квадрату размера входных данных).

Пространственная сложность алгоритма оценивает объем памяти, необходимый для его выполнения, в зависимости от размера входных данных. Обычно пространственная сложность измеряется в байтах. Примеры пространственной сложности включают константную сложность O(1) (не зависит от размера входных данных), линейную сложность O(n) (потребляет память, пропорционально размеру входных данных) и квадратичную сложность O(n^2) (потребляет память, пропорционально квадрату размера входных данных).

#вопросы_с_собеседований
👍11🔥32😁2
Forwarded from Библиотека программиста | программирование, кодинг, разработка
This media is not supported in the widget
VIEW IN TELEGRAM
🎉18🥱4
Использование stdClass в PHP

stdClass в PHP предоставляет возможность создавать объекты динамически без явно определенной структуры класса. Вот несколько сценариев, когда stdClass может быть полезен:

✔️Динамическое создание объектов:
stdClass позволяет создавать объекты без ограничений, связанных с определенной структурой класса, что идеально подходит для хранения произвольных данных.

✔️Работа с JSON:
stdClass удобен при декодировании JSON-строк в объекты PHP с использованием json_decode, особенно при работе с динамическими JSON-структурами.

✔️Взаимодействие с динамическими данными:
stdClass упрощает присвоение свойств для обработки данных из внешних источников, таких как API, где структура данных может изменяться.

✔️Динамический возврат объектов:
Функции или методы могут легко возвращать динамические объекты с использованием stdClass.

Однако, стоит учесть, что stdClass предоставляет гибкость для создания объектов на лету, но не обладает той же надежностью, что и классы в объектно-ориентированном программировании.
🌚8👏62😁2🎉2
Как легко создать PDF-файл из HTML в Symfony с помощью WeasyPrint

Те разработчики, которые сталкивались с созданием PDF-документа, понимают, почему другие разработчики избегают работы с ним.🧐

🔍Snappy и wkhtmltopdf, рекомендуемые инструменты для Symfony, но они имеют свои ограничения, такие как устаревшие движки и проблемы безопасности.

🐍WeasyPrint описывается как решение на основе Python, создающее PDF-документы из HTML с сильной поддержкой пагинации и соблюдением веб-стандартов для печати.

🔑Ключевые особенности WeasyPrint включают поддержку пагинации📃, создание документов высокого качества, включая документы PDF/A, закладки, гиперссылки, векторные изображения и базовую поддержку форм PDF. 🚨В статье подчеркивается важность рассмотрения мер безопасности при работе с пользовательскими вводами.

🛠️Приводится практический пример, демонстрирующий, как рендерить HTML с использованием Twig-шаблонов в приложении Symfony и генерировать PDF с использованием WeasyPrint.
👍31
Forwarded from Библиотека программиста | программирование, кодинг, разработка
Подборка лучших статей «Библиотеки программиста» за ноябрь: сохраняй в заметки, чтобы не пропустить #самыйсок

🗺️ Дорожная карта Go-разработчика в 2023 году
🧑‍💻 6 карьерных советов программисту
⚖️ 25 курсов, книг и подкастов для развития критического мышления
🐍🎨 Генерация красивых QR-кодов с помощью Python
🔈16+ лучших нейронок для синтеза речи
FAQ по трудоустройству: разбираем самые популярные вопросы
👨‍💻 7 типов «сложных» разработчиков
Дорожная карта DevOps-инженера в 2023 году
❤️🙏 Путь к мечте: как инвалидность не помешала стать разработчиком и продолжить борьбу за здоровье
👀 6 способов привлечь внимание работодателя
🤖📜 Искусственный интеллект: краткая история
🔤 Азбука SQL в примерах (часть 1 + часть 2)
🔢 Как научиться решать сложные задачи
🏆 Самые популярные языки программирования 2023
📰 10 признаков фейковой вакансии
🏃 Самоучитель по Go для начинающих (часть 1 + часть 2)
⚛️ 45 вопросов для подготовки к собеседованию по React
🐍 5 задач для подготовки к собеседованию по Python
🐍🤖✍️ Документирование кода и проектов на Python с помощью ChatGPT
🔥51👍1🎉1
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы

#️⃣C#

Библиотека шарписта
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие профильные каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика

💼Каналы с вакансиями

Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ
👍43🥱1
Как реализовать простую очередь в Symfony

Реализация простой системы очередей в Symfony с использованием компонента Messenger и Redis в качестве транспортного уровня включает несколько шагов:

1️⃣Установка необходимых пакетов: Используйте Composer для установки компонента Symfony Messenger и адаптера Redis.

2️⃣Настройка транспорта: Настройте подключение к серверу Redis в файле .env, указав расположение сервера и желаемое имя очереди.

3️⃣Создание сообщения и обработчика: Используйте команды Symfony console для создания классов сообщения и соответствующего обработчика. Эти классы представляют данные для отправки и логику, которая будет выполнена при получении сообщения.

4️⃣Маршрутизация сообщения к транспорту: Настройте компонент Messenger для связывания класса сообщения с желаемым транспортом в файле messenger.yaml.

5️⃣Отправка сообщения: Используйте службу MessageBusInterface для отправки сообщений из различных частей приложения, таких как контроллеры или службы.

6️⃣Получение сообщения: Используйте команду messenger:consume, чтобы запустить рабочий процесс, прослушивающий указанный транспорт и выполняющий соответствующий обработчик. Можно запускать несколько рабочих процессов параллельно для увеличения пропускной способности.

Особенность компонента Messenger заключается в гибкости, позволяющей реализовывать различные паттерны обмена сообщениями и использовать различные транспорты помимо Redis, такие как AMQP, Doctrine, Amazon SQS, Google Pub/Sub и др.
👍7😁32
Выбираем подходящий PHP-фреймворк для проекта

Здесь обсуждаются различные PHP-фреймворки и их пригодность для различных типов проектов, предоставляя исследования Laravel, Symfony, Yii, Slim и Laminas (Mezzio). Вот некоторые тезисы:

Laravel:

🟠Популярен в PHP-сообществе, баланс между сложностью и функциональностью.
🟠Подходит для B2B-решений, проектов с высокой нагрузкой и сложной бизнес-логикой.
🟠Включает готовые решения для общих задач, поддерживающее сообщество, и Laravel Octane для оптимизации производительности.

Symfony:

🟠Гибкий и настраиваемый фреймворк с активным сообществом.
🟠Используется в крупных корпоративных проектах, таких как Spotify и Yahoo.
🟠Более сложный чем Laravel, с более высоким порогом входа, но предлагает решения для различных случаев.

Yii:

🟠Объектно-ориентированный MVC-фреймворк с генерацией CRUD.
🟠Используется для приложений любой сложности, но утрачивает популярность в сравнении с Laravel.
🟠Известен быстрым развитием, соблюдением принципа DRY, и Ajax-виджетами для валидации данных.

Slim:

🟠Микрофреймворк для простых, но мощных веб-приложений и API.
🟠Быстрый и легкий, подходит для маленьких задач, где Symfony и Laravel могут быть избыточны.
🟠Используется для небольших API, микросервисов и отдельных сервисов в рамках монолита.

Laminas (Mezzio):

🟠Mezzio — это форк Zend Framework, созданный для модульных приложений.
Подходит для различных целей, в основном для API и микросервисов.
Хорошая поддержка, совместимость с Swoole и богатые библиотеки для синхронизации с внешними сервисами.
👍10🥱62
Зачем создавать собственные исключения?

Исключения предназначены для обработки неожиданных ситуаций, и их использование особенно полезно при взаимодействии с внешними ресурсами, такими как сторонние API. В случае поддержки публичных API рекомендуется использовать исключения при обнаружении некорректных входных данных, чтобы предотвратить попадание их в основную часть приложения.

Статья сравнивает встроенные исключения с собственными. Рекомендуется создавать собственные исключения для обработки конкретных случаев, которые могут быть ловлены другими частями кода, вместо использования общего встроенного исключения. Приведены примеры использования обоих видов исключений.

Следует осторожно обращаться с блоками catch, ведь есть шанс «поглощения» исключений. Например, при работе с базой данных, критические ошибки следует допускать и записывать в лог, чтобы обеспечить прозрачность отслеживание проблем.
👍62🤩1
В чем разница между WHERE и HAVING?

WHERE и HAVING являются двумя различными операторами условий в языке SQL, которые используются для фильтрации данных.

Оператор WHERE используется в выражении SELECT для фильтрации строк до их группировки и агрегации. Он определяет условия, которым должны соответствовать отдельные записи перед тем, как они будут включены в результирующий набор данных.

В примере оператор WHERE фильтрует строки таблицы employees и выбирает только те строки, где значение столбца 'department' равно 'Sales'.

Оператор HAVING используется после операции GROUP BY в выражении SELECT для фильтрации результатов группировки и агрегации. Он определяет условия, которым должны соответствовать группы записей, чтобы они были включены в результирующий набор данных после группировки.

В примере оператор HAVING фильтрует результаты группировки таблицы employees и выбирает только те группы записей, где количество сотрудников больше 5.

Таким образом, основная разница между WHERE и HAVING заключается в том, что WHERE фильтрует строки до группировки и агрегации, а HAVING фильтрует результаты после группировки и агрегации.

#вопросы_с_собеседований
👍156🥱4🔥21
🤔Некоторые разработчики недооценивают полезность трейтов, обвиняя в «переинжиниринге» или «преждевременной абстракции». Однако, не следует обобщать все случаи использования трейтов, вот яркий пример их эффективного применения в Laravel.

🌐 Практический пример: Livewire Toaster:
Создается пакет «Livewire Toaster» для управления всплывающими уведомлениями, используя трейты и декораторы. Подчеркивается «умное» управление временем отображения сообщений и легкость в использовании.

💻 Реализация:
Автор предоставляет код для регистрации коллекторов в сервис-контейнере Laravel с использованием метода extend. Он демонстрирует создание декораторов, таких как «AccessibleCollector» и «TranslatingCollector».
👍43🔥3🎉2🌚2
📈 Обзор рынка труда в ИТ: III квартал 2023 года

В этой статье обсудим зарплату программистов в III квартале 2023 года, динамику вакансий, тенденции рынка труда в ИТ и многое другое. Присоединяйтесь!

Читать статью
👏7🌚31😁1
Недокументированная возможность в Phpstorm: нативная консоль php -a с автодополнением из IDE

В PhpStorm есть хитрость, позволяющяя использовать консоль PHP как альтернативу Python Console. Здесь рассказывается о возможности интегрировать консоль PHP с IDE, добавив возможность отладки, что обеспечивает автодополнение и другие функции IDE в консоли PHP.
🔥12👍3🥱3