Forwarded from Библиотека программиста | программирование, кодинг, разработка
🛡️ 8 способов защиты от манипуляций на работе
Столкнулись с эмоциональным давлением на работе? Рассказываем, как действуют манипуляторы, и как обезопасить себя.
🔗 Читать статью
🔗 Зеркало
Столкнулись с эмоциональным давлением на работе? Рассказываем, как действуют манипуляторы, и как обезопасить себя.
🔗 Читать статью
🔗 Зеркало
👍3🥱3❤1😁1
#хочу_спросить
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
❤2👾2👍1
Библиотеки и инструменты PHP
Этот впечатляющий список библиотек, инструментов и проверок для PHP предлагает разнообразные решения для различных аспектов разработки, начиная от работы с деньгами и временем, и заканчивая инструментами для тестирования, статического анализа и обеспечения безопасности. Независимо от того, создаете ли вы масштабируемый микросервис, ищете уязвимости в коде или оптимизируете работу CI-пайплайна, этот список имеет все необходимое.
Этот впечатляющий список библиотек, инструментов и проверок для PHP предлагает разнообразные решения для различных аспектов разработки, начиная от работы с деньгами и временем, и заканчивая инструментами для тестирования, статического анализа и обеспечения безопасности. Независимо от того, создаете ли вы масштабируемый микросервис, ищете уязвимости в коде или оптимизируете работу CI-пайплайна, этот список имеет все необходимое.
DEV Community
PHP libraries and tools
PHP possesses a rich ecosystem, with plenty of libraries and tools. Here is a list of them that I...
👍8❤1
Что такое денормализация? Для чего она нужна?
Денормализация – это процесс организации реляционной базы данных, при котором избегается нормализация для повышения эффективности чтения данных.
Денормализация нужна для оптимизации производительности базы данных в ситуациях, когда нужно быстро и эффективно получать данные, особенно в случаях, когда запросы на чтение данных являются частыми и требуют многих операций соединения таблиц.
Денормализация может применяться, когда нужно улучшить производительность при получении данных из базы данных за счет уменьшения количества соединений таблиц, упрощения запросов и сокращения времени выполнения запросов. Однако, важно помнить, что денормализация может привести к повышению избыточности данных и усложнению поддержки базы данных.
#вопросы_с_собеседований
Денормализация – это процесс организации реляционной базы данных, при котором избегается нормализация для повышения эффективности чтения данных.
Денормализация нужна для оптимизации производительности базы данных в ситуациях, когда нужно быстро и эффективно получать данные, особенно в случаях, когда запросы на чтение данных являются частыми и требуют многих операций соединения таблиц.
Денормализация может применяться, когда нужно улучшить производительность при получении данных из базы данных за счет уменьшения количества соединений таблиц, упрощения запросов и сокращения времени выполнения запросов. Однако, важно помнить, что денормализация может привести к повышению избыточности данных и усложнению поддержки базы данных.
#вопросы_с_собеседований
👍8❤2
Люди, которые говорят: «PHP небезопасен», - неправы
Несмотря на распространенность PHP, по-прежнему существует множество недопониманий и мифов о безопасности этого языка.
В этой статье разбираются наиболее распространенные заблуждения и убедительные аргументы в пользу того, что PHP остается надежным и безопасным выбором для современных веб-приложений.
Несмотря на распространенность PHP, по-прежнему существует множество недопониманий и мифов о безопасности этого языка.
В этой статье разбираются наиболее распространенные заблуждения и убедительные аргументы в пользу того, что PHP остается надежным и безопасным выбором для современных веб-приложений.
Hakluke
People who say “PHP is insecure” are uninformed
I hear a lot of folks parrot the opinion that PHP is somehow less secure than other languages. This simply isn't true. Here's why.
👍10👾2❤1😁1
Какой длины должны быть классы — когда «чистый» код на самом деле не так уж и хорош
🔎Это история о разработчике, который искал новую работу и наткнулся на вакансию компании, которая обещала ценить "чистый код", но с ограничением в 100 строк на класс.
Здесь появляется сложность определения оптимального размера класса, так как каждый язык программирования имеет свои стандарты и особенности. Ограничение по длине классов может подталкивать разработчиков к неудачным практикам, таким как сложные выражения в одну строку или создание множества мелких классов, которые сложно поддерживать и заменять.
❗Жесткие ограничения могут привести к ухудшению архитектуры программы и отвлечению разработчиков от создания качественных компонентов в пользу удовлетворения формальных требований.
🔎Это история о разработчике, который искал новую работу и наткнулся на вакансию компании, которая обещала ценить "чистый код", но с ограничением в 100 строк на класс.
Здесь появляется сложность определения оптимального размера класса, так как каждый язык программирования имеет свои стандарты и особенности. Ограничение по длине классов может подталкивать разработчиков к неудачным практикам, таким как сложные выражения в одну строку или создание множества мелких классов, которые сложно поддерживать и заменять.
❗Жесткие ограничения могут привести к ухудшению архитектуры программы и отвлечению разработчиков от создания качественных компонентов в пользу удовлетворения формальных требований.
Хабр
Какой длины должны быть классы — когда «чистый» код на самом деле не так уж и хорош
Привет, Хабр! Наши коллеги из beeline cloud подкинули интересную статью для перевода про разработку на PHP, плохие практики и не только. Это история о том, как правила чистого кода могут подорвать его...
👍6
Какие фронтенд технологии вам нравятся/предпочитаете использовать как PHP-разработчик? (JS-фреймворки, библиотеки и т.д.)
❤3
Ответьте на 3 вопроса, чтобы получить демо-доступ к курсу «Алгоритмы и структуры данных»
⚡️Получить демо, ответив на 3 вопроса – https://proglib.io/w/979a2896
В бесплатной части вас ждут:
1. Лекция «Производительность алгоритмов» от руководителя разработки Яндекс.Самокатов
2. Лекция «Итеративные сортировки и линейные сортировки» от аспирант департамента искусственного интеллекта ВШЭ
3. Практические задания после лекций
4. Ссылки на дополнительные материалы для самостоятельного изучения
Переходите и начинайте учиться уже сегодня!
⚡️Получить демо, ответив на 3 вопроса – https://proglib.io/w/979a2896
В бесплатной части вас ждут:
1. Лекция «Производительность алгоритмов» от руководителя разработки Яндекс.Самокатов
2. Лекция «Итеративные сортировки и линейные сортировки» от аспирант департамента искусственного интеллекта ВШЭ
3. Практические задания после лекций
4. Ссылки на дополнительные материалы для самостоятельного изучения
Переходите и начинайте учиться уже сегодня!
🥱2❤1👍1🌚1
📝 В статье обсуждаются различные подходы к моделированию операторов MongoDB в PHP для создания агрегационных конвейеров. Цель - найти лучший опыт разработчика при работе с зарезервированными ключевыми словами и сохранении читаемости кода. Рассматриваются несколько методов, включая функции с пространством имен, добавление суффиксов к именам функций, использование статических методов классов и хранение замыканий в переменных.
🌐 Первый метод: Функции в пространстве имен
Статья начинается с функций в пространстве имен, например MongoDB\Operator\eq для оператора $eq, но сталкивается с проблемами зарезервированных ключевых слов в PHP. Чтобы избежать конфликтов, рассматриваются варианты добавления префиксов, суффиксов или использования смайликов в именах функций.
🔠 Второй метод: Статические методы классов
Другой подход включает использование статических методов классов или перечислений без кейсов, которые ограничивают возможность создания экземпляров и обеспечивают более чистый синтаксис.
🌀 Третий метод: Замыкания в переменных
В заключение идут замыкания, сохраненные в переменных, что позволяет использовать синтаксис, очень похожий на MongoDB, и при этом избегать конфликтов имен.
🌐 Первый метод: Функции в пространстве имен
Статья начинается с функций в пространстве имен, например MongoDB\Operator\eq для оператора $eq, но сталкивается с проблемами зарезервированных ключевых слов в PHP. Чтобы избежать конфликтов, рассматриваются варианты добавления префиксов, суффиксов или использования смайликов в именах функций.
🔠 Второй метод: Статические методы классов
Другой подход включает использование статических методов классов или перечислений без кейсов, которые ограничивают возможность создания экземпляров и обеспечивают более чистый синтаксис.
🌀 Третий метод: Замыкания в переменных
В заключение идут замыкания, сохраненные в переменных, что позволяет использовать синтаксис, очень похожий на MongoDB, и при этом избегать конфликтов имен.
DEV Community
How to overcome PHP's naming constraints to model MongoDB operators
TL;TR: I research how to modelize MongoDB operators in PHP. From namespaced function names, to static...
👍4❤1
💻 20 лучших ноутбуков для программиста в 2023 году
Выбираем самые легкие, автономные и производительные ноутбуки для кодинга.
На карточках перечислили самые производительные. Но для кодинга есть и другие важные параметры — остальные подборки смотрите в нашей статье.
Выбираем самые легкие, автономные и производительные ноутбуки для кодинга.
На карточках перечислили самые производительные. Но для кодинга есть и другие важные параметры — остальные подборки смотрите в нашей статье.
😁13🥱4👍2
Еще один #дайджест новостей по PHP за неделю:
🔎PhpStorm 2023.3 EAP #4 — В этой сборке значительно переработали настройки пути включения PHP и реализовали возможность исключения каталогов и файлов из индексированных библиотек.
🔎Плагин Pest теперь поддерживается JetBrains. — Плагин Pest будет поставляться в комплекте с PhpStorm, начиная с версии 2023.3. Он будет разработан JetBrains, но исходный код останется открытым.
🔎Появились обучающие скринкасты Livewire. — Laravel Livewire недавно представил новую серию скринкастов, призванных сделать ваше изучение Livewire проще, чем когда-либо.
🔎Выпущена Symfony 7.0.0-BETA1 — Только что выпущена Symfony 7.0.0-BETA1. Здесь список наиболее важных изменений с версии 6.3.
🔎Неделя Symfony #877 (16–22 октября 2023 г.) — На этой неделе Symfony выпустила первую бета-версию Symfony 6.4 и первую бета-версию Symfony 7.0, чтобы вы могли протестировать их в своих собственных приложениях перед их окончательными выпусками.
🔎PhpStorm 2023.3 EAP #4 — В этой сборке значительно переработали настройки пути включения PHP и реализовали возможность исключения каталогов и файлов из индексированных библиотек.
🔎Плагин Pest теперь поддерживается JetBrains. — Плагин Pest будет поставляться в комплекте с PhpStorm, начиная с версии 2023.3. Он будет разработан JetBrains, но исходный код останется открытым.
🔎Появились обучающие скринкасты Livewire. — Laravel Livewire недавно представил новую серию скринкастов, призванных сделать ваше изучение Livewire проще, чем когда-либо.
🔎Выпущена Symfony 7.0.0-BETA1 — Только что выпущена Symfony 7.0.0-BETA1. Здесь список наиболее важных изменений с версии 6.3.
🔎Неделя Symfony #877 (16–22 октября 2023 г.) — На этой неделе Symfony выпустила первую бета-версию Symfony 6.4 и первую бета-версию Symfony 7.0, чтобы вы могли протестировать их в своих собственных приложениях перед их окончательными выпусками.
👍4
PHP-соединения и транзакции
🟠Первая часть представляет подход к открытию соединений с базой данных через создание класса, который хранит конфигурационные данные в отдельном ini-файле. Идея заключается в том, что вместо того, чтобы включать чувствительные данные (например, хост, пользователь, пароль) напрямую в исходный код при подключении к базе данных, эти данные хранятся в отдельном конфигурационном файле (config.ini).
🟠Вторая часть объясняет понятие транзакции в базах данных. Транзакция представляет собой последовательность операций, которые либо выполняются полностью, либо не выполняются вообще. Во время транзакции база данных может находиться во временно несогласованном состоянии, но после завершения транзакции или ее фиксации, все изменения применяются.
Она также рассматривает состояния транзакций (активное, частично подтвержденное, подтвержденное, неудавшееся и завершенное состояние). Важность аббревиатуры ACID (Atomicity, Consistency, Isolation, Durability) также подчеркивается.
🟠Первая часть представляет подход к открытию соединений с базой данных через создание класса, который хранит конфигурационные данные в отдельном ini-файле. Идея заключается в том, что вместо того, чтобы включать чувствительные данные (например, хост, пользователь, пароль) напрямую в исходный код при подключении к базе данных, эти данные хранятся в отдельном конфигурационном файле (config.ini).
🟠Вторая часть объясняет понятие транзакции в базах данных. Транзакция представляет собой последовательность операций, которые либо выполняются полностью, либо не выполняются вообще. Во время транзакции база данных может находиться во временно несогласованном состоянии, но после завершения транзакции или ее фиксации, все изменения применяются.
Она также рассматривает состояния транзакций (активное, частично подтвержденное, подтвержденное, неудавшееся и завершенное состояние). Важность аббревиатуры ACID (Atomicity, Consistency, Isolation, Durability) также подчеркивается.
🥱4👍2
Как настроить действительно быструю локальную среду разработки Laravel для Windows с красивыми URL-адресами (без Docker)
Эта статья представляет собой руководство по настройке быстрого и гибкого окружения разработки Laravel на Windows с использованием Windows Subsystem for Linux (WSL) и нативных установок PHP, MySQL и Nginx.
В статье представлены следующие шаги:
1️⃣Установка WSL на Windows 10 или Windows 11.
2️⃣Установка PHP в WSL с помощью apt.
3️⃣Установка Composer для управления зависимостями в Laravel.
4️⃣Установка MySQL в WSL.
5️⃣Создание нового проекта Laravel и настройка базы данных.
6️⃣Установка и настройка Nginx в WSL для обработки запросов к Laravel приложению.
7️⃣Применение настроек безопасности и оптимизация производительности, включая изменение пользователя и группы для Nginx и PHP-FPM.
Если верить автору, использование этой конфигурации позволило увеличить производительность на сложных операциях с 13 секунд до 1.5 секунды, что составляет увеличение в 800%. Это решение позволяет достичь быстрых времен ответа и более гибких настроек для разработки Laravel приложений под Windows.
https://getcomposer.org/installer
Эта статья представляет собой руководство по настройке быстрого и гибкого окружения разработки Laravel на Windows с использованием Windows Subsystem for Linux (WSL) и нативных установок PHP, MySQL и Nginx.
В статье представлены следующие шаги:
1️⃣Установка WSL на Windows 10 или Windows 11.
2️⃣Установка PHP в WSL с помощью apt.
3️⃣Установка Composer для управления зависимостями в Laravel.
4️⃣Установка MySQL в WSL.
5️⃣Создание нового проекта Laravel и настройка базы данных.
6️⃣Установка и настройка Nginx в WSL для обработки запросов к Laravel приложению.
7️⃣Применение настроек безопасности и оптимизация производительности, включая изменение пользователя и группы для Nginx и PHP-FPM.
Если верить автору, использование этой конфигурации позволило увеличить производительность на сложных операциях с 13 секунд до 1.5 секунды, что составляет увеличение в 800%. Это решение позволяет достичь быстрых времен ответа и более гибких настроек для разработки Laravel приложений под Windows.
https://getcomposer.org/installer
en.laracraft.tech
Laracraft - How to set up a high-performance local Laravel development environment for Windows with pretty URLs (without Docker)
Local Laravel environments on Windows like Vagrant/Homestead, Laravel Sail or Laragon can be really slow or resource intensive. Let's create a more native setup, which performs very very good! We managed to reduce execution time on complex operations from…
🥱16👍6
Одноразовые тесты
❗ Проблема: Дублирование Middleware
Автор рассказывает о своем опыте рефакторинга маршрутов в Laravel-проекте, где он столкнулся с проблемой дублирования middleware. Он изначально планировал вручную проверить каждый маршрут и перенести middleware из конструкторов контроллеров в файлы маршрутов, но осознал, что это потребует много времени и могло бы привести к ошибкам.
Решение: Автоматизация сравнения Middleware
🚀 Использование php artisan route:list --json -v для получения данных о маршрутах и их middleware в формате JSON.
🔍 Сравнение данных до и после изменений с использованием утилиты для сравнения JSON.
🧐 Выявление различий в middleware и обнаружение несоответствий.
Результат: Безопасные Изменения и Уверенность
🎉 548 удалений и 359 добавлений в 111 файлах без ручного тестирования.
🛠️ Избежание ошибок благодаря точному выявлению изменений в middleware.
💪 Возможность внести изменения в проект с уверенностью, что автоматические тесты обнаружат проблемы.
❗ Проблема: Дублирование Middleware
Автор рассказывает о своем опыте рефакторинга маршрутов в Laravel-проекте, где он столкнулся с проблемой дублирования middleware. Он изначально планировал вручную проверить каждый маршрут и перенести middleware из конструкторов контроллеров в файлы маршрутов, но осознал, что это потребует много времени и могло бы привести к ошибкам.
Решение: Автоматизация сравнения Middleware
🚀 Использование php artisan route:list --json -v для получения данных о маршрутах и их middleware в формате JSON.
🔍 Сравнение данных до и после изменений с использованием утилиты для сравнения JSON.
🧐 Выявление различий в middleware и обнаружение несоответствий.
Результат: Безопасные Изменения и Уверенность
🎉 548 удалений и 359 добавлений в 111 файлах без ручного тестирования.
🛠️ Избежание ошибок благодаря точному выявлению изменений в middleware.
💪 Возможность внести изменения в проект с уверенностью, что автоматические тесты обнаружат проблемы.
Tim MacDonald
Single-use tests
Tests I write are usually written in Pest or Jest. I also usually commit them to a code repository - but not all automated tests should be committed. I wrote, what I consider to be an automated test, that was a single-use test. It served it's purpose and…
❤8🤔4👍3