Библиотека пхпшника | 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
DomPDF в Laravel 10

Здесь представлено пошаговое руководство по интеграции библиотеки domPDF в проект на Laravel. Описаны этапы создания нового проекта, установки пакета domPDF, настройки Laravel, публикации конфигурации, создания контроллера для обработки PDF, формирования Blade-представления для содержимого PDF, определения маршрута и тестирования приложения с использованием сервера разработки Laravel.

Также подчеркивается гибкость и возможности использования domPDF в Laravel для генерации динамичных PDF-документов, таких как счета или отчеты, с подробными настройками. Завершается руководство призывом к исследованию потенциала domPDF в проектах Laravel.
👍10🥱61
💣 Кем вы видите себя через 5 лет: как отвечать на странные и неудобные вопросы на собеседовании

7 самых распространенных вопросов, которые точно задавали каждому из вас.

Читать статью
👍41
Как обрабатывать большие CSV-файлы в Laravel

📄 Существует эффективный способ обработки больших CSV-файлов в Laravel без ущерба производительности приложения. Вводится пакет Simple Excel от Spatie, который помогает управлять использованием памяти, возвращая LazyCollection и позволяя обрабатывать данные порциями.

🛠️ Здесь предлагается использовать Laravel Jobs для управления обработкой CSV и демонстрирует создание задачи «ImportCsv». Эта задача использует SimpleExcelReader для чтения CSV-файла, разбивки его на управляемые части и диспетчеризации другой задачи, «ImportProductChunk», для каждой части.

💼 Задача «ImportProductChunk» отвечает за вставку данных в базу данных и подчеркивает важность обеспечения уникальности, чтобы избежать обработки одних и тех же данных несколько раз.🚀

🔄 В общем, подход включает в себя разбиение CSV-файла на более мелкие части, диспетчеризацию задач для каждой части и эффективную обработку и вставку данных в базу данных, обеспечивая плавную и эффективную операцию без избыточного использования памяти.
👍7😁31
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
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 запрещена на территории РФ
1👍1
Тестирование абстрактных классов в PHP с использованием анонимных классов

Здесь обсуждается проблема тестирования функционала в абстрактных классах, на примере абстрактного класса с именем Vehicle и методом move(). Исследуются два основных подхода к тестированию: частичное мокирование и использование анонимных классов.

Рекомендуется избегать обширного мокирования, указывая на потенциальные проблемы при расширении кода. Вместо этого представлено использование анонимных классов для создания экземпляра абстрактного класса внутри тестового случая. Этот подход демонстрируется с использованием тестового фреймворка PEST, с примерами тестирования метода move() с разными сценариями.

Для повышения читаемости кода представлен хелпер-функция для создания экземпляров анонимного класса с заданной скоростью. Эта функция затем используется в нескольких тестовых случаях.
👍41
#хочу_спросить

Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
👏41
Использование памяти массива, классов и анонимных классов

🧪 В проведенных тестах сравнения эффективности использования памяти и производительности массивов и классов в PHP выявлены интересные результаты:

📊 В первом эксперименте, где создавались массивы и классы до исчерпания памяти, выяснилось, что классы демонстрируют более эффективное использование памяти. В частности, stdClass имела наименьший расход памяти, за ней следовали анонимные классы и классы с именами.

🔄 Также были проанализированы результаты на различных версиях PHP, выявив, что массивы становятся все более эффективными с появлением новых версий. В то время как классы сохраняют стабильность в отношении ресурсов, с небольшим увеличением использования памяти в PHP 8.2 из-за отсутствия динамических свойств.

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

🔍 В итоге был сделан вывод, что классы обладают более эффективным использованием памяти по сравнению с массивами, что сопровождается улучшенной общей производительностью. Важно отметить, что различия в производительности являются микрооптимизациями. Однако несмотря на эффективность использования памяти классов, выделено моменты, когда массивы могут оставаться предпочтительными, особенно при стоимости преобразования, например, при работе с результатами баз данных или структурами JSON, где широко используются ассоциативные массивы.
🥱4👍31
В чем разница между операторами DISTINCT и GROUP BY?

Операторы DISTINCT и GROUP BY в SQL используются для обработки уникальных значений, но они выполняют разные функции.

DISTINCT применяется к столбцам в операторе SELECT и возвращает уникальные значения в этом столбце.
Он удаляет дубликаты из результирующего набора.

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

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

Пример:
Допустим, у нас есть таблица «orders» с колонками «customer_id» и «total_price». Если мы хотим узнать общую сумму покупок для каждого клиента, мы бы использовали GROUP BY. Если же мы хотим получить уникальные идентификаторы клиентов, мы бы использовали DISTINCT

#вопросы_с_собеседования
👍101
🌐Здесь рассматривается эволюция протокола HTTP и возникающая потребность в обновлениях в реальном времени для веб-ресурсов.

🤔 Несмотря на популярность веба, стандартный протокол HTTP не предоставляет встроенной поддержки общения в реальном времени. Для решения этой проблемы были разработаны различные техники и протоколы, такие как Comet, Server-Sent Events, WebSocket и WebSub.

🌐 Затем внимание переходит к трём предложенным стандартам, представленным на IETF: Braid, PREP и Mercure.

🚀 Braid выделяется как наиболее амбициозный, предлагая комплексную структуру для синхронизации состояний между серверами и клиентами, включая управление версиями и разрешение конфликтов.

🌊 PREP, более скромное предложение, фокусируется на подписке на обновления и связано с сообществом Solid.

👏 В статье хвалят Braid и PREP, но отмечают их ограничения, особенно при использовании с HTTP/1.1.

💡 Автор вводит альтернативную идею, вдохновленную кодом 103 Early Hints, предлагая новый класс статуса (7XX) для отправки ответов после основного ответа. Этот подход направлен на улучшение эффективности и совместимости с HTTP/2 и HTTP/3.

🔄 Несмотря на инновации, представленные Braid и PREP, в статье признается сложность развертывания постоянных соединений в текущей веб-экосистеме.

🛣️ Затем представлен протокол Mercure как прагматичное решение, которое работает с существующими веб-стандартами, концентрируя обновления в одном URL или «хабе». Простота Mercure и его совместимость с различными существующими технологиями подчеркиваются, делая его практичным выбором для обновлений в реальном времени в текущем веб-пейзаже.
👍21🔥1
Защита JPG-файлов от копирования с помощью Exif и IPTC-тегов

Существует проблема, когда тщательно созданные фотографии для статьи впоследствии классифицируются Яндексом как «малополезный контент». В течение года другие статьи, использующие украденные изображения, занимали лучшие позиции по SEO-запросам.

Для предотвращения подобных ситуаций автор предлагает использовать текстовые мета-теги в изображениях, такие как Exif и IPTC. Он рассматривает каждый из этих форматов и предоставляет примеры PHP-кода для чтения и записи соответствующих данных. Он также рекомендует использовать нейросети, фотостоки или стандартные изображения для избежания штрафов за нарушение авторских прав.
😁7👍51🤔1🥱1
Согласно данным Upgraded Points, каждый седьмой сотрудник на удаленке продуктивно работают лишь 3-4 часа в день. Люди не возвращаются в офисы, потому что у них есть возможность отдыхать дома.

Как вы считаете, люди правда тратят по 3-4 часа на работу?
👍42🌚5🤔3🥱31
Искусство валидации в Laravel

Это обзор системы валидации в Laravel.
Здесь подробно рассматриваются различные техники и функциональности валидации, начиная с основных принципов и заканчивая более сложными сценариями.

Вы узнаете, как осуществлять базовую валидацию форм, настраивать пользовательские сообщения об ошибках, работать с массивами, проводить уникальную валидацию для полей, обрабатывать даты, создавать условные правила валидации, работать с файлами и многим другим.
🥱6👍31
#дайджест новостей по PHP за неделю:

🔎Laravel 10.40 — с методом ограничения числа, помощником в стиле APA, настройкой пути к ресурсам Vite и многим другим. — Команда Laravel выпустила версию 10.40 с методом ограничения числа, помощником по строкам регистра заголовков в стиле APA, настройкой пути к активам Vite и бмногим другим.

🔎Неделя Symfony #889 (8–14 января 2024 г.) — На этой неделе деятельность разработчиков была сосредоточена на исправлении ошибок во всех поддерживаемых и будущих версиях Symfony.

🔎Bagisto выпустили новое мобильное приложение с открытым исходным кодом для продавцов. — Bagisto теперь имеет мобильное приложение с открытым исходным кодом для торговцев. Это позволяет вам легко запустить собственное мобильное приложение для вашего магазина. Вы можете легко настроить важные части, такие как заголовок приложения, заставку, значок приложения и многое другое.

🔎Filament: чего ожидать в 2024 году.
👍31
Создание автономных двоичных файлов PHP-приложений с использованием статического PHP CLI

🚀В статье рассматривается использование Static PHP CLI (SPC) для преобразования проектов на PHP в отдельные исполняемые двоичные файлы, предоставляя пошаговое руководство на примере Laravel Zero.

SPC автоматизирует компиляцию PHP SAPI в статические двоичные файлы с учетом расширений, что позволяет создавать один двоичный файл со всеми зависимостями и настройками.

💡 Преимущества:

Независимость от установки PHP.
Улучшенная переносимость.
Более широкие возможности распространения.

Процесс включает создание приложения Laravel Zero, построение его в виде PHAR, подготовку и установку SPC, скачивание необходимых пакетов и компиляцию статических двоичных файлов.

Хотя этот метод предоставляет преимущества, такие как отсутствие зависимостей от установки PHP, у него есть недостатки:

Трудоемкий процесс.
Большие размеры двоичных файлов.
Ограничения по изменению исходного кода после компиляции.

Принятие этого метода иллюстрируется примерами, такими как Swoole CLI, Hyperf, Webman, Laravel Herd и FrankenPHP.
🔥52
Создание автоматизированного конвейера документации на PHP с помощью Autodocs и GitHub Actions

Библиотека Autodocs предназначена для упрощения создания высококастомизируемых автоматизированных документаций на основе шаблонов Markdown. Совместно с приложением Minicli, она предоставляет уровень абстракции и структуру, на основе которых можно создавать собственную фабрику документации.

Этот проект создан, чтобы облегчить процесс поддержки документации для Chainguard Images, который теперь поддерживает более тысячи страниц документации в рамках рабочего процесса на основе GitHub с запусками каждую ночь.

Страницы определяются как классы, следующие определенному интерфейсу. Источники данных могут быть загружены автоматически как JSON-файлы кэша, что облегчает распределенные настройки, где данные поступают из различных источников. Этот распределенный подход упрощает интеграцию Autodocs с существующими рабочими процессами и конвейерами, особенно при использовании GitHub Actions.

Также включено пошаговое руководство по созданию демонстрационного приложения Autodocs для генерации персональных README-страниц на GitHub. Она включает следующие шаги:

1️⃣Создание демонстрационного приложения Minicli.
2️⃣Настройка опций Autodocs.
3️⃣Регистрация службы Autodocs.
4️⃣Создание команды сборки.
5️⃣Создание страницы документации.
6️⃣Запуск демонстрационного процесса с использованием GitHub Actions (необязательно).
👍61