Привет, друзья! 👋
Мы готовим статью о прокрастинации среди разработчиков и хотим узнать ваше мнение! 🤓 Поделитесь своим опытом, а самые интересные и полезные советы мы обязательно включим в нашу статью.
❓ Какая самая необычная причина прокрастинации у вас была в работе над проектом?
❓ Какой метод борьбы с прокрастинацией оказался для вас наиболее эффективным?
❓ Как вы справляетесь с когнитивной перегрузкой во время работы над сложными задачами?
Не стесняйтесь делиться своими историями и лайфхаками в комментариях! 💬 Ваш опыт может помочь другим разработчикам справиться с прокрастинацией. Спасибо за участие!
Мы готовим статью о прокрастинации среди разработчиков и хотим узнать ваше мнение! 🤓 Поделитесь своим опытом, а самые интересные и полезные советы мы обязательно включим в нашу статью.
❓ Какая самая необычная причина прокрастинации у вас была в работе над проектом?
❓ Какой метод борьбы с прокрастинацией оказался для вас наиболее эффективным?
❓ Как вы справляетесь с когнитивной перегрузкой во время работы над сложными задачами?
Не стесняйтесь делиться своими историями и лайфхаками в комментариях! 💬 Ваш опыт может помочь другим разработчикам справиться с прокрастинацией. Спасибо за участие!
👍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
Как хранить координаты точки на карте в БД?
Рассмотрим несколько возможных подходов:
1. Хранение отдельных полей с широтой и долготой:
- Создайте две числовые колонки в таблице БД, например, «latitude» и «longitude», представляющие широту и долготу соответственно.
- Для каждой точки, сохраните ее координаты в эти поля.
- При поиске точек на карте, вы можете использовать операторы сравнения или функции, поддерживаемые БД, для поиска точек в определенном радиусе или в пределах определенной географической области.
2. Использование географических типов данных:
- Некоторые реляционные БД, такие как MySQL с расширением Spatial, PostgreSQL с расширением PostGIS или SQLite с поддержкой расширения SpatiaLite, предоставляют специальные типы данных для работы с географическими объектами.
- Создайте колонку с типом данных для хранения географической информации, например, тип «Point», который позволяет хранить точку с заданными координатами.
- Сохраняйте информацию о точках на карте в этой колонке.
- Используйте функции и операторы, поддерживаемые соответствующим расширением БД, для выполнения географических запросов, таких как поиск точек в определенном радиусе или внутри границ определенного полигона.
#вопросы_с_собеседований
Рассмотрим несколько возможных подходов:
1. Хранение отдельных полей с широтой и долготой:
- Создайте две числовые колонки в таблице БД, например, «latitude» и «longitude», представляющие широту и долготу соответственно.
- Для каждой точки, сохраните ее координаты в эти поля.
- При поиске точек на карте, вы можете использовать операторы сравнения или функции, поддерживаемые БД, для поиска точек в определенном радиусе или в пределах определенной географической области.
2. Использование географических типов данных:
- Некоторые реляционные БД, такие как MySQL с расширением Spatial, PostgreSQL с расширением PostGIS или SQLite с поддержкой расширения SpatiaLite, предоставляют специальные типы данных для работы с географическими объектами.
- Создайте колонку с типом данных для хранения географической информации, например, тип «Point», который позволяет хранить точку с заданными координатами.
- Сохраняйте информацию о точках на карте в этой колонке.
- Используйте функции и операторы, поддерживаемые соответствующим расширением БД, для выполнения географических запросов, таких как поиск точек в определенном радиусе или внутри границ определенного полигона.
#вопросы_с_собеседований
👍4❤2
Советы по моделям в Laravel
В Laravel есть множество полезных функций, которые могут улучшить опыт разработки, но легко упустить некоторые из них. Вот несколько советов по работе с моделями в Laravel:
✅1. Избегайте проблемы N+1 запросов
N+1 запросы возникают, когда для каждого элемента в коллекции данных выполняется отдельный запрос к базе данных, что замедляет приложение. Чтобы избежать этого, используйте eager loading для подгрузки связанных данных заранее.
✅2. Предотвращение доступа к несуществующим атрибутам
Если вы случайно попытаетесь получить доступ к несуществующему атрибуту модели, Laravel может вернуть null, что может вызвать неожиданные ошибки. Включите функцию, которая будет выбрасывать исключение при попытке доступа к несуществующему полю.
✅3. Защита от молчаливого игнорирования атрибутов
При попытке обновить модель с использованием полей, которые не указаны в списке fillable, Laravel просто проигнорирует эти данные. Включите функцию, которая будет выбрасывать исключение в таких случаях, чтобы избежать ошибок.
✅4. Включение строгого режима
Если хотите активировать сразу все перечисленные выше проверки, используйте строгий режим моделей. Он включает предотвращение ленивой загрузки, доступ к несуществующим атрибутам и молчаливое игнорирование атрибутов.
✅5. Использование UUID вместо автонумерации
Для повышения безопасности можно использовать UUID (уникальные идентификаторы) в качестве первичных ключей или для публичных идентификаторов. Это затрудняет предсказание ID и может защитить приложение от атак.
✅6. Использование кастомных коллекций
Laravel позволяет создавать собственные коллекции моделей с дополнительными методами для удобства работы с ними.
В Laravel есть множество полезных функций, которые могут улучшить опыт разработки, но легко упустить некоторые из них. Вот несколько советов по работе с моделями в Laravel:
✅1. Избегайте проблемы N+1 запросов
N+1 запросы возникают, когда для каждого элемента в коллекции данных выполняется отдельный запрос к базе данных, что замедляет приложение. Чтобы избежать этого, используйте eager loading для подгрузки связанных данных заранее.
✅2. Предотвращение доступа к несуществующим атрибутам
Если вы случайно попытаетесь получить доступ к несуществующему атрибуту модели, Laravel может вернуть null, что может вызвать неожиданные ошибки. Включите функцию, которая будет выбрасывать исключение при попытке доступа к несуществующему полю.
✅3. Защита от молчаливого игнорирования атрибутов
При попытке обновить модель с использованием полей, которые не указаны в списке fillable, Laravel просто проигнорирует эти данные. Включите функцию, которая будет выбрасывать исключение в таких случаях, чтобы избежать ошибок.
✅4. Включение строгого режима
Если хотите активировать сразу все перечисленные выше проверки, используйте строгий режим моделей. Он включает предотвращение ленивой загрузки, доступ к несуществующим атрибутам и молчаливое игнорирование атрибутов.
✅5. Использование UUID вместо автонумерации
Для повышения безопасности можно использовать UUID (уникальные идентификаторы) в качестве первичных ключей или для публичных идентификаторов. Это затрудняет предсказание ID и может защитить приложение от атак.
✅6. Использование кастомных коллекций
Laravel позволяет создавать собственные коллекции моделей с дополнительными методами для удобства работы с ними.
❤9👍3
Используете ли вы VPN?
Anonymous Poll
16%
Нет, мне лень
24%
Очень редко по особым случаям
37%
Регулярно
23%
Почти не выключаю/каждый день