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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
Скрытый код

🔎В данной статье автор рассматривает проблему взаимодействия между расширениями Xdebug и OPcache в PHP-приложениях, особенно при использовании встроенного веб-сервера PHP. Проблема заключается в том, что Xdebug и OPcache переопределяют обработчик компиляции файлов PHP, и это может привести к тому, что точки останова (breakpoints), установленные в редакторе кода, не работают правильно при каждом запросе к приложению.

Автор обнаружил, что порядок загрузки этих расширений в php.ini имеет большое значение. Если OPcache загружается перед Xdebug, то он может "потерять" точки останова, так как не вызывает обработчик компиляции файлов, установленный Xdebug.

Для решения этой проблемы автор предлагает несколько вариантов:

🟠Загружать Xdebug после OPcache: Согласно документации, Xdebug должен быть загружен после OPcache в php.ini. Это гарантирует правильное взаимодействие между расширениями.

🟠Отключить OPcache: Если OPcache не используется в проекте, его можно просто отключить, установив opcache.enable=0 в php.ini.

🟠Контролировать порядок загрузки через наименование файлов конфигурации: Если используется несколько файлов конфигурации (например, xdebug.ini и opcache.ini), можно управлять порядком загрузки, именуя файлы таким образом, чтобы Xdebug загружался после OPcache. Например, xdebug.ini можно назвать 99-xdebug.ini, а opcache.ini 10-opcache.ini, чтобы убедиться, что Xdebug загружается последним.

🟠Убедиться, что Xdebug и OPcache указаны в правильном порядке в одном файле конфигурации: Если используется только один файл конфигурации, убедитесь, что строки zend_extension=opcache и zend_extension=xdebug расположены в правильном порядке.

Автор также упоминает о том, что начиная с версии Xdebug 3.3, в Diagnostic Log будет включено предупреждение о том, что Xdebug должен быть загружен после OPcache. Предупреждение будет содержать ссылку на документацию, объясняющую проблему и возможные решения.
👍81
Какие методы авторизации используют для построения API?

При построении API в PHP разработчики обычно используют различные методы аутентификации и авторизации, чтобы обеспечить безопасность и контроль доступа к ресурсам:

1. Токены доступа (Access Tokens): Это один из наиболее распространенных методов для аутентификации в API. После успешной аутентификации пользователь получает токен, который затем отправляется с каждым запросом API. Сервер API проверяет токен для разрешения доступа к ресурсам.

2. HTTP Basic Authentication: Пользовательские учетные данные (имя пользователя и пароль) отправляются в заголовке запроса. Однако, этот метод не является безопасным, так как учетные данные могут быть перехвачены.

3. Bearer Token Authentication: Это расширение для токенов доступа, где токен отправляется в заголовке Authorization как Bearer [access_token].

4. JWT (JSON Web Tokens): JWT - это компактный и самосодержащийся способ представления информации между двумя сторонами. Он может быть подписан (для обеспечения целостности данных) и зашифрован (для обеспечения конфиденциальности). JWT часто используются вместе с токенами доступа.

5. OAuth 2.0: Это открытый стандарт протокола аутентификации и авторизации, позволяющий приложениям получать доступ к ресурсам от имени пользователя. OAuth 2.0 поддерживает различные методы авторизации, включая авторизацию по паролю, авторизацию по коду подтверждения, и т.д.

6. API Keys: Каждый запрос к API содержит уникальный ключ (токен) для аутентификации. Обычно, этот ключ передается в заголовке запроса.

#вопросы_с_собеседований
🥱10👍82😁1
Создание отказоустойчивого кода: использование возможностей объектов-значений

Эта статья обсуждает концепцию объектов-значений (value objects) в программировании и почему они являются полезным инструментом для улучшения качества приложения и улучшения читаемости кода.

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

Статья также подчеркивает разницу между объектами-значениями и объектами передачи данных (Data Transfer Objects, DTOs). В отличие от DTO, объекты-значения учитывают бизнес-логику и обеспечивают корректность данных, а не только их типы. Это делает объекты-значения более надежными и предсказуемыми при обработке данных в приложении.
👍81
Forwarded from Библиотека программиста | программирование, кодинг, разработка
Очевидно, что в открытом виде пароли в базе никто уже не хранит. Хранить хеш пароля — не всегда хорошая идея, т. к. его можно восстановить по радужным таблицам.

Решение — добавлять уникальную соль к паролю, что позволит получить уникальный результат хеширования для каждого пароля. И если даже вашу базу взломают, алгоритм формирования пары пароль + соль никто не узнает 🤷‍♂️

📌Как в таком случае проверить пароль?

1️⃣Пользователь вводит пароль.
2️⃣Система извлекает соответствующую соль из БД.
3️⃣Система добавляет соль к паролю и хеширует его. Назовем хешированное значение H1.
4️⃣Система сравнивает H1 и H2, где H2 — это хеш, хранящийся в базе данных. Если они одинаковы, пароль действителен.

👉 Более детально данный вопрос рассмотрен в визуальном руководстве.
🥱17👍112
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍31😁1
Open-source проект для изучения данных вашего подключения к Интернету.

"WebSpeedReport" - это проект с открытым исходным кодом, который использует Speedtest CLI для сбора данных о подключении к интернету и предоставляет пользователю удобный интерфейс для их отображения.

1️⃣ Получение и Хранение Данных

✔️Использует Symfony и MySQL для получения данных от Speedtest CLI и сохранения их в базе данных.
✔️консольный пакет Symfony для выполнения команд Speedtest и обработки данных.

2️⃣ Отображение Данных

✔️Использует PHP для бэкэнда и TailwindCSS для стилизации интерфейса.
✔️Предоставляет простой дашборд с основной информацией и таблицу с результатами тестов.
✔️Пользователи могут просмотреть подробности каждого теста, нажав на "Загрузить больше".
👍62
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🛡️ 8 способов защиты от манипуляций на работе

Столкнулись с эмоциональным давлением на работе? Рассказываем, как действуют манипуляторы, и как обезопасить себя.

🔗 Читать статью
🔗 Зеркало
👍3🥱31😁1
#хочу_спросить

Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
2👾2👍1
Библиотеки и инструменты PHP

Этот впечатляющий список библиотек, инструментов и проверок для PHP предлагает разнообразные решения для различных аспектов разработки, начиная от работы с деньгами и временем, и заканчивая инструментами для тестирования, статического анализа и обеспечения безопасности. Независимо от того, создаете ли вы масштабируемый микросервис, ищете уязвимости в коде или оптимизируете работу CI-пайплайна, этот список имеет все необходимое.
👍81
Что такое денормализация? Для чего она нужна?

Денормализация – это процесс организации реляционной базы данных, при котором избегается нормализация для повышения эффективности чтения данных.

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

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

#вопросы_с_собеседований
👍82
Люди, которые говорят: «PHP небезопасен», - неправы

Несмотря на распространенность PHP, по-прежнему существует множество недопониманий и мифов о безопасности этого языка.

В этой статье разбираются наиболее распространенные заблуждения и убедительные аргументы в пользу того, что PHP остается надежным и безопасным выбором для современных веб-приложений.
👍10👾21😁1
Какой длины должны быть классы — когда «чистый» код на самом деле не так уж и хорош

🔎
Это история о разработчике, который искал новую работу и наткнулся на вакансию компании, которая обещала ценить "чистый код", но с ограничением в 100 строк на класс.

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

Жесткие ограничения могут привести к ухудшению архитектуры программы и отвлечению разработчиков от создания качественных компонентов в пользу удовлетворения формальных требований.
👍6
Какие фронтенд технологии вам нравятся/предпочитаете использовать как PHP-разработчик? (JS-фреймворки, библиотеки и т.д.)
3
Ответьте на 3 вопроса, чтобы получить демо-доступ к курсу «Алгоритмы и структуры данных»

⚡️Получить демо, ответив на 3 вопроса – https://proglib.io/w/979a2896

В бесплатной части вас ждут:

1. Лекция «Производительность алгоритмов» от руководителя разработки Яндекс.Самокатов

2. Лекция «Итеративные сортировки и линейные сортировки» от аспирант департамента искусственного интеллекта ВШЭ

3. Практические задания после лекций

4. Ссылки на дополнительные материалы для самостоятельного изучения

Переходите и начинайте учиться уже сегодня!
🥱21👍1🌚1
📝 В статье обсуждаются различные подходы к моделированию операторов MongoDB в PHP для создания агрегационных конвейеров. Цель - найти лучший опыт разработчика при работе с зарезервированными ключевыми словами и сохранении читаемости кода. Рассматриваются несколько методов, включая функции с пространством имен, добавление суффиксов к именам функций, использование статических методов классов и хранение замыканий в переменных.

🌐 Первый метод: Функции в пространстве имен

Статья начинается с функций в пространстве имен, например MongoDB\Operator\eq для оператора $eq, но сталкивается с проблемами зарезервированных ключевых слов в PHP. Чтобы избежать конфликтов, рассматриваются варианты добавления префиксов, суффиксов или использования смайликов в именах функций.

🔠 Второй метод: Статические методы классов

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

🌀 Третий метод: Замыкания в переменных

В заключение идут замыкания, сохраненные в переменных, что позволяет использовать синтаксис, очень похожий на MongoDB, и при этом избегать конфликтов имен.
👍41
💻 20 лучших ноутбуков для программиста в 2023 году

Выбираем самые легкие, автономные и производительные ноутбуки для кодинга.

На карточках перечислили самые производительные. Но для кодинга есть и другие важные параметры — остальные подборки смотрите в нашей статье.
😁13🥱4👍2