Библиотека пхпшника | 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
#хочу_спросить

Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
👏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
Как построить SaaS за выходные

SaaS расшифровывается как «Software as a Service» (Программное обеспечение как услуга). Это модель предоставления программного обеспечения, при которой приложения предоставляются через интернет на основе подписки. Вместо того чтобы пользователи устанавливали и обновляли программное обеспечение на своих компьютерах, они получают к нему доступ через веб-браузер.

Это подробное руководство о том, как быстро создать SaaS-приложение за выходные. В нем подчеркивается использование существующих шаблонов и инструментов для ускорения процесса разработки, позволяя фокусироваться на бизнес-логике и маркетинге.

Основные этапы включают выбор технологического стека, создание бизнес-логики, настройку биллинга, разработку документации, создание стартовой страницы и выбор хостинга. В конце подчеркивается важность маркетинга и продаж для успешного внедрения программного продукта.
👍4😁31👾1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🤖 Итоги недели в мире ИИ и обзоры новых сервисов

Мы написали статью на VC, которая основана на очередном выпуске нашей рассылки про последние новости и тенденции в мире ИИ. Залетайте и читайте!

👇Ниже — мини-подборка из статьи 👇

📰 Новости

▫️ OpenAI объявила о запуске долгожданного магазина кастомных чат-ботов.
▫️ В Пасадене (штат Калифорния) открывается первая закусочная CaliExpress by Flippy, полностью управляемая ИИ.
▫️ NVIDIA выпустила модель для распознавания речи Parakeet, которая по всем показателям превосходит OpenAI Whisper.
▫️ Использование ИИ в совместном научном проекте Microsoft и Тихоокеанской северо-западной национальной лаборатории в течение недели помогло определить новый элемент, который поможет снизить на 70% использование лития в батареях. Без ИИ такое исследование заняло бы по меньшей мере 20 лет.
▫️ Компания ByteDance выпустила новую модель MagicVideo-V2 для генерации видео.

🛠 Инструменты

◾️ Auto Wiki — генерирует вики-документацию для GitHub репозиториев.
◾️ Code to Flow — визуализирует, анализирует и объясняет код, написанный на всех популярных языках и фреймворках.
◾️ Concepto — платформа для создания прототипов веб-приложений.
◾️ Afforai — выполняет суммаризацию, перевод и поиск по множеству документов.
◾️ Corgea — исправляет уязвимые фрагменты кода.
◾️ Jan — опенсорсный оффлайновый чат-бот.
◾️ Plus AI — плагин для Google Slides: делает профессиональные презентации, персональные и командные дашборды, любые отчеты.

🤙 Сделай сам

🔸 WikiChat — опенсорсный инструмент для коррекции галлюцинаций с помощью информации из Википедии.
🔸 Подробная шпаргалка и советы по созданию продвинутых RAG.
🔸 OpenVoice — опенсорный инструмент для мгновенного клонирования голоса.

🎓 Туториалы

🔹 Туториал по работе с новым API Query Pipelines показывает примеры создания простых линейных цепочек и сложных ациклических графов из модулей LlamaIndex.
🔹 Туториал по объединению LLM с помощью mergekit детально разбирает 4 основных метода объединения моделей.

#чтопроисходит
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61🥰1
📝 Интеграция сторонних API с Http-фасадом в Laravel

В статье:
Подробное руководство по интеграции сторонних API в Laravel с использованием структуры пользовательских классов для запросов и клиентов. Упор на использовании фасада Http в Laravel для обеспечения последовательности, более простого тестирования и уменьшения зависимостей.

1️⃣Добавление конфигурации Google Books в Laravel:

🗝️ Хранение ключа API и URL в файле .env.
🛠️ Добавление конфигурации в файл config/services.php.

2️⃣Создание класса ApiRequest:

🚀 Класс для построения HTTP-запросов к API.
🛠️ Методы для установки HTTP-метода, URI, заголовков, параметров запроса и тела.
🌐 Статические методы для создания экземпляров ApiRequest для конкретных HTTP-методов.

3️⃣Создание абстрактного класса ApiClient:

🛠️ Абстрактный базовый класс для выполнения HTTP-запросов к API.
🚀 Предоставляет метод для отправки ApiRequest и методы для получения и авторизации базового запроса.
📘 Подклассы должны реализовать метод baseUrl для указания базового URL API.

4️⃣Реализация GoogleBooksApiClient:

🚀 Конкретная реализация базового класса ApiClient для API Google Books.
🛠️ Методы для получения базового URL и авторизации запроса для API Google Books.

5️⃣Создание действия для запроса книг по названию:

🚀 Класс действия (QueryBooksByTitle) для запроса книг по названию из API Google Books.
🌐 Использует GoogleBooksApiClient и ApiRequest для формирования и отправки запроса.

🔚 В конце представлен бонусный раздел по написанию тестов для классов ApiRequest, ApiClient и GoogleBooksApiClient с использованием Pest PHP, демонстрируя, как обеспечить правильную настройку и поведение этих классов.
5
#дайджест #phpdevjob

Вакансии недели для джунов 👨🏻‍🏫

PHP Developer в Новые Технологии
Санкт-Петербург. Разработка, внедрение и сопровождение ПО.
Подробнее

Junior Backend разработчик в PROFFIT GO
Набережные Челны. Цифровая экосистема решений для управления автопарками.
Подробнее

Junior full-stack developer в SBX Group
Рязань. Разработка ПО.
Подробнее

PHP-программист в Intelsib
Новосибирск. Поисковое продвижение, контекстная реклама, поисковый аудит.
Подробнее

Junior Backend PHP разработчик в GILMARK
Москва. Интернет-маркетинговое агентство.
Подробнее

Понравились вакансии?
❤️ — да
🤔 — нет
9👍1
Загрузка файлов напрямую с клиента на S3, не затрагивая файлы вашего Laravel-приложения.

Здесь обсуждается традиционный подход к обработке загрузки файлов в веб-приложениях, особенно в PHP и Laravel, где файлы обрабатываются сервером перед сохранением в службе хранения, такой как Amazon S3.

🔄 Предлагается альтернативный метод: файлы не касаются веб-сервера, а загружаются с клиента в S3.

Альтернативный подход включает следующие шаги:

1. Пользователь выбирает файл для загрузки.
2. JavaScript-клиент отправляет метаданные файла на бэкэнд.
3. Бэкэнд проверяет размер файла и тип контента, генерирует подписанный URL для ожидающего файла и отправляет его клиенту.
4. Клиент загружает файл напрямую в S3, используя подписанный URL.
5. После загрузки клиент уведомляет бэкэнд, что файл успешно загружен.
6. Бэкэнд создает необходимые записи в базе данных, связанные с загруженным файлом.

💻 Предоставлены кодовые фрагменты, включая объект значения SignedUrl и класс для генерации URL в S3. Также демонстрируется, как интегрировать эту логику в контроллер Laravel для обработки загрузки файлов.

💾Бэкэнд дополнительно рассматривается с точки зрения проверки метаданных файла, создания соответствующих моделей Eloquent и перемещения файлов из временных в постоянные каталоги в S3.
👍101