Библиотека пхпшника | 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
#дайджест #phpdevjob

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

Middle PHP-разработчик в КСК ЭКСПЕРТ
Москва. Разработка ПО.
Подробнее

Middle+ PHP backend developer в Чек-Ап Онлайн
Москва. IT платформа управления бизнесом.
Подробнее

PHP / Laravel Developer в KingBoost
Москва. Разработка ПО.
Подробнее

PHP developer в КОМПОТ
Москва. Разработка и поддержка IT-проектов для крупных компаний.
Подробнее

PHP-программист в SVK.Digital
Москва. Разработка цифровых продуктов.
Подробнее

Понравились вакансии?
❤️ — да
🤔 — нет
6🤔2👍1
Super-Linter

Комбинация линтеров, которую можно установить как GitHub Actions. Это может быть полезно, если у вас есть многоязычные проекты.
🤔21
Как работает Garbage Collector? Когда есть смысл вызвать?

Garbage Collector (GC) — это механизм в PHP, который автоматически освобождает память, занятую объектами, которые больше не используются в программе. Он следит за объектами в памяти и удаляет те, на которые нет ссылок или которые больше не доступны из текущего контекста программы.

GC работает путем использования алгоритма подсчета ссылок. Каждый раз, когда создается объект, счетчик ссылок на него увеличивается, и если нет ссылок на объект, счетчик уменьшается. Когда счетчик становится равным нулю, объект считается мусором и подлежит удалению GC.

При вызове GC есть несколько моментов, которые могут быть полезны:

1. Когда вы закончили использовать большой объем памяти, который является временным. Например, если вы обрабатываете большие файлы или создаете множество объектов в цикле, вызов GC после завершения таких операций поможет освободить память.

2. Когда у вас есть длительное время выполнения скрипта и вы опасаетесь, что память может исчерпаться. Хотя GC автоматически выполняет свою работу, вызов GC в явном виде может помочь освободить память раньше, чем это произойдет автоматически.

3. Когда вы создаете циклическую ссылку между объектами и планируете разорвать эти ссылки. В этом случае вызов GC может помочь устранить утечку памяти, освободив объекты с циклическими ссылками.

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

#вопросы_с_собеседований
😁93
Стратегии кэширования в Laravel

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

В целом стратегия включает в себя оптимизацию кода перед тем, как обращаться к кэшированию. Затем рассматриваются различные уровни кэширования в Laravel:

1️⃣DNS и кэширование HTML уровня хостинга: Этот подход включает кэширование на уровне DNS и хостинга с использованием служб, таких как Cloudflare, Amazon Cloudfront или Varnish. Обсуждаются плюсы и минусы данного метода.

2️⃣Кэширование HTML в Laravel: Этот уровень предполагает кэширование HTML внутри приложения Laravel, обеспечивая больший контроль. Речь идет о пакетах, таких как Page Cache от Joseph Silber и ResponseCache от Spatie, вместе с их ограничениями.

3️⃣Встроенное кэширование в Laravel: Рассматриваются встроенные механизмы кэширования Laravel, такие как Environment Configuration Caching, Route Caching, View Caching и Laravel Cache, а также их области применения.

4️⃣Мемоизация: Представлено понятие мемоизации как кэша, действующего в течение одного запроса. Приведены примеры мемоизации на уровне класса PHP и на уровне всего приложения с использованием пакета Once от Taylor Otwell.

5️⃣Кэширование запросов к базе данных: Предлагается кэширование запросов к базе данных с использованием инструментов кэширования Laravel, с акцентом на оптимизацию запросов в первую очередь.

Обсуждается важность сброса кэша для предотвращения устаревших данных, а также рассматриваются стратегии, такие как вытеснение кэша. Подчеркивается необходимость разделения постоянного и изменчивого кэширования данных в зависимости от их жизненного цикла.
👍5🎉42
Изучение Middleware в Laravel 11

В Laravel 11, выход которого назначен на первый квартал 2024 года убирают Http Kernel.

В новой версии Laravel, файл Kernel.php больше не используется, и настройка middleware происходит через новый файл bootstrap/app.php. Этот файл теперь включает в себя вызовы методов, таких как withMiddleware(), где можно добавлять, изменять и удалять middleware для различных групп, а также использовать алиасы.

Здесь представлены примеры использования нового подхода, а также сомнения автора относительно того, стоили эти изменения усилий, учитывая увеличение кривой обучения.
4🤔3😁1
Айтишники пожаловались на снижение доходов

«Коммерсант» со ссылкой на результаты опроса Российской ассоциацией электронных коммуникаций (РАЭК). 34,9% респондентов заявили о снижении доходов.

А вы лично ощутили, что ваши доходы упали за последний год?

🤔 — да, доходы снизились
❤️ — доходы только выросли
👍 — ничего не изменилось
84🤔61👍43🌚1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🍊Подборка лучших статей «Библиотеки программиста» за декабрь: сохраняй в заметки, чтобы не пропустить #самыйсок

🛠️ 17 суперинструментов для разработки фронтенда
🏃 Самоучитель по Go для начинающих: часть 3 + часть 4
 🔟🏢 ТОП-10 российских IT-работодателей
📁💡Где программисту взять идеи для портфолио
🐍📋 F-строки в Python для интерполяции и форматирования строк
🤖 Машинное обучение: что это такое и как оно работает
🌎 ТОП-10: рейтинг лучших зарубежных работодателей в IT
🐍🤖✍️ Документирование кода и проектов на Python с помощью ChatGPT
📈 Обзор рынка труда в ИТ: III квартал 2023 года
🐍⚙️ Python или Rust: что выбрать для анализа данных и машинного обучения
🧠🧩 Зачем айтишнику психолог?
🐍🧫 Создаём игру «Жизнь» Джона Конвея на Python
👨‍🎓 14 бесплатных ресурсов, которые пригодятся каждому разработчику
✍️ Почему отсутствие технической документации убьёт ваш проект?
👨‍💻 Вопросы для подготовки к собеседованию по JavaScript. Часть 1
🎄🎁 10 абсурдных подарков программисту на Новый год
😺🐙 Как разобраться в Git: краткая инструкция для джунов
🔥 12 признаков выгорания или как понять, что вам пора в отпуск
⚙️📕 Ответы на вопросы для самопроверки из книги «Тестирование Дот Ком» Романа Савина
🏦⚠️ Борьба с ошибками разработки ПО в финтехе
4🥱3
Обзор Symfony за 2023 год

Это обзор достижений Symfony в 2023 году и планы на 2024 год. В статье подчеркивается благодарность за поддержку сообщества и рассматриваются следующие ключевые моменты:

Релизы: Symfony выпустил три новых основных версии: Symfony 6.3 в мае и Symfony 6.4 (LTS) и Symfony 7.0 в ноябре. Также было опубликовано 58 обслуживаемых версий в восьми различных ветках. Требования к PHP были повышены до версии 8.2 для Symfony 7.0.

Блог и статьи: Было опубликовано 311 блогов, включая 49 статей «Новое в Symfony», поясняющих новые функции Symfony 6.3 и 6.4/7.0. Также было 52 публикации «Неделя Symfony».

События и конференции: Организовано четыре конференции, включая SymfonyCon в Брюсселе, на котором собралось более 1,200 человек. Заявлены планы на проведение конференций в 2024 году, включая SymfonyOnline, SymfonyLive Paris и SymfonyCon Vienna.

Symfony Components: Компоненты Symfony превысили 20 миллиардов загрузок в 2023 году. В этот год были выпущены новые компоненты, такие как Scheduler, Webhook and RemoteEvent, AssetMapper, а также новые пакеты для интеграции с приложениями, отправляющими электронные письма, SMS и др.

Другие важные новости: Введена сертификация Symfony 7, опубликован последний релиз Twig 2, Symfony завершил многолетнюю работу по добавлению всех типовых объявлений PHP в код Symfony, и другие события и обновления.
👍102
Как использовать cURL в PHP

сURL в PHP — инструмент, позволяющий выполнять запросы к другим веб-сайтам или серверам из кода PHP, подобно тому, как это делает веб-браузер или мобильное приложение. Описывается его применение для получения данных, отправки файлов и взаимодействия с API.

Здесь предоставляются пошаговые инструкции по использованию cURL в PHP, начиная с установки библиотеки libcurl, проверки активации cURL в PHP и написания простого примера cURL-запроса.

Далее приводятся примеры команд cURL в PHP для различных типов запросов, таких как GET, POST, сохранение данных в файл, базовая аутентификация, отправка JSON данных, использование заголовков и прокси.

В конце описываются преимущества использования cURL в PHP, такие как интеграция с веб-приложениями, автоматизированная обработка данных, обработка ошибок, динамическая настройка запросов и управление сеансами. Также упоминается Guzzle как современная альтернатива cURL в PHP.
7😁6🌚1
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