В чем разница между методами dd() и dump()?
В Laravel методы dd() и dump() используются для вывода отладочной информации, но между ними есть некоторые различия:
Метод dd() (Dump and Die):
dd() расшифровывается как «Dump and Die».
Он выводит отладочную информацию и сразу завершает выполнение скрипта. Это удобно, когда нужно быстро остановить выполнение программы и просмотреть значения переменных или других данных.
Пример использования:
Метод dump():
dump() просто выводит отладочную информацию, но не останавливает выполнение скрипта. Это полезно, когда нужно просмотреть данные на разных этапах выполнения программы, не прерывая её работу.
Пример использования:
Таким образом, основное отличие заключается в том, что dd() завершает выполнение программы, а dump() — нет.
#вопросы_с_собеседований
В Laravel методы dd() и dump() используются для вывода отладочной информации, но между ними есть некоторые различия:
Метод dd() (Dump and Die):
dd() расшифровывается как «Dump and Die».
Он выводит отладочную информацию и сразу завершает выполнение скрипта. Это удобно, когда нужно быстро остановить выполнение программы и просмотреть значения переменных или других данных.
Пример использования:
$data = [1, 2, 3];
dd($data);
// Выведет содержимое переменной $data и остановит выполнение скрипта.
Метод dump():
dump() просто выводит отладочную информацию, но не останавливает выполнение скрипта. Это полезно, когда нужно просмотреть данные на разных этапах выполнения программы, не прерывая её работу.
Пример использования:
$data = [1, 2, 3];
dump($data);
// Выведет содержимое переменной $data, но скрипт продолжит выполнение.
Таким образом, основное отличие заключается в том, что dd() завершает выполнение программы, а dump() — нет.
#вопросы_с_собеседований
👍6😁5
CSV и PHP8.4+
Здесь обсуждаются изменения в PHP 8.4, касающиеся обработки CSV-файлов, и их влияние на разработчиков и библиотеку league/csv, которая является популярным инструментом для работы с CSV в PHP.
В новой версии PHP 8.4 будут введены новые функции, такие как асимметричная видимость и хуки для свойств, но также будут изменения в старых функциональностях, в частности, в обработке CSV.
Разработчикам рекомендуется обновить свой код, чтобы использовать пустую строку для параметра экранирования и избежать предупреждений о депрекации. В статье приводятся примеры кода с пояснениями, как это сделать.
Здесь обсуждаются изменения в PHP 8.4, касающиеся обработки CSV-файлов, и их влияние на разработчиков и библиотеку league/csv, которая является популярным инструментом для работы с CSV в PHP.
В новой версии PHP 8.4 будут введены новые функции, такие как асимметричная видимость и хуки для свойств, но также будут изменения в старых функциональностях, в частности, в обработке CSV.
Разработчикам рекомендуется обновить свой код, чтобы использовать пустую строку для параметра экранирования и избежать предупреждений о депрекации. В статье приводятся примеры кода с пояснениями, как это сделать.
👍6🎉3🔥1👏1
Yaml — король мета-описаний
На Хабре уже опубликовано несколько статей о Yaml, однако они выглядят однобоко и не раскрывают его истинную природу. В этой статье будет сделана попытка исправить этот недостаток, рассказав о Yaml в положительном контексте. Детальное описание синтаксиса стандартного Yaml здесь приводиться не будет, так как в Интернете и на самом Хабре имеется множество материалов на эту тему, ссылки на которые также можно найти в данной статье. Материал предназначен для тех, кто уже знаком с Yaml, но, возможно, испытывает к нему неприязнь.
На Хабре уже опубликовано несколько статей о Yaml, однако они выглядят однобоко и не раскрывают его истинную природу. В этой статье будет сделана попытка исправить этот недостаток, рассказав о Yaml в положительном контексте. Детальное описание синтаксиса стандартного Yaml здесь приводиться не будет, так как в Интернете и на самом Хабре имеется множество материалов на эту тему, ссылки на которые также можно найти в данной статье. Материал предназначен для тех, кто уже знаком с Yaml, но, возможно, испытывает к нему неприязнь.
Хабр
Yaml — король мета-описаний
На Хабре, было несколько статей о Yaml, но мне кажется все они однобоки и не раскрывают его истинную природу. Я попробую это исправить и рассказать о Yaml в положительном контексте. Не буду вновь...
🥱2👍1
Привет, друзья! 👋
Мы готовим статью о прокрастинации среди разработчиков и хотим узнать ваше мнение! 🤓 Поделитесь своим опытом, а самые интересные и полезные советы мы обязательно включим в нашу статью.
❓ Какая самая необычная причина прокрастинации у вас была в работе над проектом?
❓ Какой метод борьбы с прокрастинацией оказался для вас наиболее эффективным?
❓ Как вы справляетесь с когнитивной перегрузкой во время работы над сложными задачами?
Не стесняйтесь делиться своими историями и лайфхаками в комментариях! 💬 Ваш опыт может помочь другим разработчикам справиться с прокрастинацией. Спасибо за участие!
Мы готовим статью о прокрастинации среди разработчиков и хотим узнать ваше мнение! 🤓 Поделитесь своим опытом, а самые интересные и полезные советы мы обязательно включим в нашу статью.
❓ Какая самая необычная причина прокрастинации у вас была в работе над проектом?
❓ Какой метод борьбы с прокрастинацией оказался для вас наиболее эффективным?
❓ Как вы справляетесь с когнитивной перегрузкой во время работы над сложными задачами?
Не стесняйтесь делиться своими историями и лайфхаками в комментариях! 💬 Ваш опыт может помочь другим разработчикам справиться с прокрастинацией. Спасибо за участие!
👍3
Топ-5 стратегий кэширования
➡️ Реальное использование:
🔹 Cache Aside + Write Through: обеспечивает согласованную синхронизацию кэша/БД, позволяя при этом осуществлять контроль заполнения кэша во время чтения. Немедленные записи в базу данных могут нагружать БД.
🔹 Read Through + Write Back: абстрагирует БД и хорошо справляется с потоком трафика записи, задерживая синхронизацию. Однако это сопряжено с риском большей потери данных, если кэш выйдет из строя до синхронизации буферизованных записей с базой данных.
👉 Источник
➡️ Реальное использование:
🔹 Cache Aside + Write Through: обеспечивает согласованную синхронизацию кэша/БД, позволяя при этом осуществлять контроль заполнения кэша во время чтения. Немедленные записи в базу данных могут нагружать БД.
🔹 Read Through + Write Back: абстрагирует БД и хорошо справляется с потоком трафика записи, задерживая синхронизацию. Однако это сопряжено с риском большей потери данных, если кэш выйдет из строя до синхронизации буферизованных записей с базой данных.
👉 Источник
👍6
#дайджест новостей по PHP за неделю:
🔎Стратегии предварительной выборки активов с Vite в Laravel 11.21 — На этой неделе команда Laravel выпустила версию 11.21, которая включает стратегии предварительной выборки активов для Vite, удобный метод принудительного уничтожения моделей с мягким удалением, обновления помощников для тестирования и многое другое.
🔎Symfony 7.1 с новыми возможностями
🔎PHP 8.4.0 Beta 3 теперь доступен для тестирования — Команда PHP рада сообщить о выходе PHP 8.4.0, Beta 3. Это первая бета-версия, продолжающая цикл выпуска PHP 8.4, примерный план которого указан в PHP Wiki.
🔎Неделя Symfony #921 (19-25 августа 2024 года) — На этой неделе в грядущей версии Symfony 7.2 была добавлена возможность рендеринга блока Twig с атрибутом Template, улучшен Serializer с конвертером имен из змеиного регистра в верблюжий, а также добавлена поддержка новых операторов в компоненте ExpressionLanguage.
🔎Стратегии предварительной выборки активов с Vite в Laravel 11.21 — На этой неделе команда Laravel выпустила версию 11.21, которая включает стратегии предварительной выборки активов для Vite, удобный метод принудительного уничтожения моделей с мягким удалением, обновления помощников для тестирования и многое другое.
🔎Symfony 7.1 с новыми возможностями
🔎PHP 8.4.0 Beta 3 теперь доступен для тестирования — Команда PHP рада сообщить о выходе PHP 8.4.0, Beta 3. Это первая бета-версия, продолжающая цикл выпуска PHP 8.4, примерный план которого указан в PHP Wiki.
🔎Неделя Symfony #921 (19-25 августа 2024 года) — На этой неделе в грядущей версии Symfony 7.2 была добавлена возможность рендеринга блока Twig с атрибутом Template, улучшен Serializer с конвертером имен из змеиного регистра в верблюжий, а также добавлена поддержка новых операторов в компоненте ExpressionLanguage.
👍4❤2
Эта статья посвящена потенциальным уязвимостям, связанным с использованием слабого сравнения (==) в PHP. В отличие от строгого сравнения (===), слабое сравнение не учитывает типы данных и может привести к непредсказуемым результатам, что делает код уязвимым для атак.
PHP Loose Comparison (Слабое сравнение в PHP)
Слабое сравнение происходит, когда два значения сравниваются оператором ==, который не проверяет типы данных. PHP пытается привести сравниваемые значения к общему типу перед сравнением, что может приводить к неожиданным результатам. Например, строка 'string' при сравнении с true будет считаться эквивалентной true.
Уязвимые сценарии
Автор приводит два примера, где слабое сравнение может стать причиной серьезных проблем:
✔️Небезопасная система авторизации:
Пример с проверкой логина и пароля, где хакер может подменить значения на true, что приведет к успешной авторизации даже при неправильных данных.
✔️Небезопасная авторизация с использованием switch:
В этом примере хакер может получить доступ к привилегиям администратора, просто подставив true в качестве значения $_POST['user_role'], так как switch-case также использует слабое сравнение.
Смягчение уязвимостей
Чтобы избежать таких проблем, рекомендуется использовать строгое сравнение (===), которое проверяет и значение, и тип данных. Также, начиная с PHP 8.0, можно использовать конструкцию match, которая работает как switch, но использует строгое сравнение, что делает код более безопасным.
PHP Loose Comparison (Слабое сравнение в PHP)
Слабое сравнение происходит, когда два значения сравниваются оператором ==, который не проверяет типы данных. PHP пытается привести сравниваемые значения к общему типу перед сравнением, что может приводить к неожиданным результатам. Например, строка 'string' при сравнении с true будет считаться эквивалентной true.
Уязвимые сценарии
Автор приводит два примера, где слабое сравнение может стать причиной серьезных проблем:
✔️Небезопасная система авторизации:
Пример с проверкой логина и пароля, где хакер может подменить значения на true, что приведет к успешной авторизации даже при неправильных данных.
✔️Небезопасная авторизация с использованием switch:
В этом примере хакер может получить доступ к привилегиям администратора, просто подставив true в качестве значения $_POST['user_role'], так как switch-case также использует слабое сравнение.
Смягчение уязвимостей
Чтобы избежать таких проблем, рекомендуется использовать строгое сравнение (===), которое проверяет и значение, и тип данных. Также, начиная с PHP 8.0, можно использовать конструкцию match, которая работает как switch, но использует строгое сравнение, что делает код более безопасным.
👍15😁7🔥2❤1🌚1
Топ модулей для распознавания рекапчи на Python, Node js и PHP
В эпоху автоматизации большинство решений находится в свободном доступе. И речь идет не только о решении задач по математике, но и о более сложных задачах, таких как парсинг данных или, как в данном случае, распознавание рекапчи. Однако, как выбрать подходящий модуль? Ведь доступ к технологиям имеют как добросовестные разработчики, так и мошенники.
Был проведен анализ рынка модулей для распознавания капчи, и на основе этого составлен субъективный топ модулей для трех популярных языков программирования.
В эпоху автоматизации большинство решений находится в свободном доступе. И речь идет не только о решении задач по математике, но и о более сложных задачах, таких как парсинг данных или, как в данном случае, распознавание рекапчи. Однако, как выбрать подходящий модуль? Ведь доступ к технологиям имеют как добросовестные разработчики, так и мошенники.
Был проведен анализ рынка модулей для распознавания капчи, и на основе этого составлен субъективный топ модулей для трех популярных языков программирования.
Хабр
Топ модулей для распознавания рекапчи на Python, Node js и PHP
В наш век автоматизации большинство решений можно найти в свободном доступе, и я говорю сейчас не про решение задач по математике, а чуть более сложные задачи, типа парсинга данных, и как в нашем...
👍5
Как хранить координаты точки на карте в БД?
Рассмотрим несколько возможных подходов:
1. Хранение отдельных полей с широтой и долготой:
- Создайте две числовые колонки в таблице БД, например, «latitude» и «longitude», представляющие широту и долготу соответственно.
- Для каждой точки, сохраните ее координаты в эти поля.
- При поиске точек на карте, вы можете использовать операторы сравнения или функции, поддерживаемые БД, для поиска точек в определенном радиусе или в пределах определенной географической области.
2. Использование географических типов данных:
- Некоторые реляционные БД, такие как MySQL с расширением Spatial, PostgreSQL с расширением PostGIS или SQLite с поддержкой расширения SpatiaLite, предоставляют специальные типы данных для работы с географическими объектами.
- Создайте колонку с типом данных для хранения географической информации, например, тип «Point», который позволяет хранить точку с заданными координатами.
- Сохраняйте информацию о точках на карте в этой колонке.
- Используйте функции и операторы, поддерживаемые соответствующим расширением БД, для выполнения географических запросов, таких как поиск точек в определенном радиусе или внутри границ определенного полигона.
#вопросы_с_собеседований
Рассмотрим несколько возможных подходов:
1. Хранение отдельных полей с широтой и долготой:
- Создайте две числовые колонки в таблице БД, например, «latitude» и «longitude», представляющие широту и долготу соответственно.
- Для каждой точки, сохраните ее координаты в эти поля.
- При поиске точек на карте, вы можете использовать операторы сравнения или функции, поддерживаемые БД, для поиска точек в определенном радиусе или в пределах определенной географической области.
2. Использование географических типов данных:
- Некоторые реляционные БД, такие как MySQL с расширением Spatial, PostgreSQL с расширением PostGIS или SQLite с поддержкой расширения SpatiaLite, предоставляют специальные типы данных для работы с географическими объектами.
- Создайте колонку с типом данных для хранения географической информации, например, тип «Point», который позволяет хранить точку с заданными координатами.
- Сохраняйте информацию о точках на карте в этой колонке.
- Используйте функции и операторы, поддерживаемые соответствующим расширением БД, для выполнения географических запросов, таких как поиск точек в определенном радиусе или внутри границ определенного полигона.
#вопросы_с_собеседований
👍17🤔2❤1
Состояние дженериков и коллекций
На сайте PHPFoundation вышла интересная статья, которая посвящена внедрению дженериков. В ней рассматриваются различные подходы к этой проблеме и их текущее состояние.
На сайте PHPFoundation вышла интересная статья, которая посвящена внедрению дженериков. В ней рассматриваются различные подходы к этой проблеме и их текущее состояние.
thephp.foundation
State of Generics and Collections
The PHP Foundation — Supporting, Advancing, and Developing the PHP Language
👍9
Forwarded from Proglib.academy | IT-курсы
💀 Как гарантированно провалить собеседование: 10 верных способов
В интернете можно найти много статей с советами, как идеально пройти собеседование: что говорить, как говорить, как себя вести, с чем приходить, как готовиться, где готовиться, какую информацию предварительно изучить. В общем, инструкций — вагон. Но, если честно, не очень хочется повторяться. Поэтому мы подготовили шуточную статью, как точно провалить собеседование.
Чтобы не завалить собеседование — забирайте наш курс:
🔵 Базовые модели ML и приложения
🔗 Ссылка на статью
В интернете можно найти много статей с советами, как идеально пройти собеседование: что говорить, как говорить, как себя вести, с чем приходить, как готовиться, где готовиться, какую информацию предварительно изучить. В общем, инструкций — вагон. Но, если честно, не очень хочется повторяться. Поэтому мы подготовили шуточную статью, как точно провалить собеседование.
Чтобы не завалить собеседование — забирайте наш курс:
🔗 Ссылка на статью
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩1
Преимущества написания чистого, поддерживаемого кода.
Здесь обсуждается важность написания чистого и поддерживаемого кода. Автор, имеющий двадцатилетний опыт программирования, признаёт, что ранее его основной целью было просто заставить код работать, не задумываясь о его качестве и поддерживаемости. Но после знакомства с Laravel он начал обращать внимание на чистоту кода и его удобочитаемость для других разработчиков.
Почему важно писать чистый код:
✔️Высокое качество кода: Обдумывая код и стараясь сделать его максимально чистым, вы автоматически улучшаете его качество.
✔️Удобочитаемость: Чистый код проще для понимания, что облегчает работу другим разработчикам.
✔️Лёгкость поддержки: Чистый и понятный код легче поддерживать, так как снижается риск ошибочных изменений.
✔️Самодокументирование: Чистый код может не требовать дополнительных комментариев, так как он уже говорит сам за себя.
✔️Простота тестирования: Структурированный код с соблюдением принципов единственной ответственности и разделения обязанностей легче тестировать.
✔️Простота для новых разработчиков: Новым членам команды проще разобраться в чистом коде, что ускоряет их адаптацию.
Простые техники для написания чистого кода:
🔸Соблюдение стандартов и соглашений: Следуйте общепринятым стандартам (например, PSR-12), а также рекомендациям вашей команды.
🔸Использование типов: Строгое типизирование делает код более читаемым и понятным.
🔸Описание переменных и методов: Используйте описательные имена для переменных и методов, чтобы код был самодокументируемым.
🔸Пространство для кода: Добавляйте отступы между блоками кода для улучшения его читаемости.
🔸Ранний выход, отсутствие else, отрицательные проверки: Эти подходы помогают упростить логические блоки и делают код более читаемым.
🔸Избегайте временных переменных: Если переменная используется только один раз, её можно исключить, чтобы уменьшить ментальную нагрузку.
🔸Минимизация вложенности: Старайтесь избегать глубоких вложенных структур, чтобы код не становился запутанным.
Здесь обсуждается важность написания чистого и поддерживаемого кода. Автор, имеющий двадцатилетний опыт программирования, признаёт, что ранее его основной целью было просто заставить код работать, не задумываясь о его качестве и поддерживаемости. Но после знакомства с Laravel он начал обращать внимание на чистоту кода и его удобочитаемость для других разработчиков.
Почему важно писать чистый код:
✔️Высокое качество кода: Обдумывая код и стараясь сделать его максимально чистым, вы автоматически улучшаете его качество.
✔️Удобочитаемость: Чистый код проще для понимания, что облегчает работу другим разработчикам.
✔️Лёгкость поддержки: Чистый и понятный код легче поддерживать, так как снижается риск ошибочных изменений.
✔️Самодокументирование: Чистый код может не требовать дополнительных комментариев, так как он уже говорит сам за себя.
✔️Простота тестирования: Структурированный код с соблюдением принципов единственной ответственности и разделения обязанностей легче тестировать.
✔️Простота для новых разработчиков: Новым членам команды проще разобраться в чистом коде, что ускоряет их адаптацию.
Простые техники для написания чистого кода:
🔸Соблюдение стандартов и соглашений: Следуйте общепринятым стандартам (например, PSR-12), а также рекомендациям вашей команды.
🔸Использование типов: Строгое типизирование делает код более читаемым и понятным.
🔸Описание переменных и методов: Используйте описательные имена для переменных и методов, чтобы код был самодокументируемым.
🔸Пространство для кода: Добавляйте отступы между блоками кода для улучшения его читаемости.
🔸Ранний выход, отсутствие else, отрицательные проверки: Эти подходы помогают упростить логические блоки и делают код более читаемым.
🔸Избегайте временных переменных: Если переменная используется только один раз, её можно исключить, чтобы уменьшить ментальную нагрузку.
🔸Минимизация вложенности: Старайтесь избегать глубоких вложенных структур, чтобы код не становился запутанным.
👍7🥱3
#хочу_спросить
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
👍1
LLPhant — комплексная PHP-инфраструктура генеративного искусственного интеллекта
Эта платформа разработана так, чтобы она была максимально простой, но при этом предоставляла вам инструменты, необходимые для создания мощных приложений. Он совместим с Symfony и Laravel.
На данный момент поддерживается только OpenAI, если вы хотите использовать другие LLM, вы можете использовать genossGPT в качестве прокси.
Эта платформа разработана так, чтобы она была максимально простой, но при этом предоставляла вам инструменты, необходимые для создания мощных приложений. Он совместим с Symfony и Laravel.
На данный момент поддерживается только OpenAI, если вы хотите использовать другие LLM, вы можете использовать genossGPT в качестве прокси.
GitHub
GitHub - LLPhant/LLPhant: LLPhant - A comprehensive PHP Generative AI Framework using OpenAI GPT 4. Inspired by Langchain
LLPhant - A comprehensive PHP Generative AI Framework using OpenAI GPT 4. Inspired by Langchain - LLPhant/LLPhant
👍3🤔1