Понимание сериализации в PHP
Сериализация (или serialization) - это процесс преобразования данных в формат, который можно сохранить или передать. В PHP сериализация выполняется с использованием специального формата, который представляет различные типы данных, такие как булевы значения, null, целые числа, числа с плавающей запятой, строки, массивы и объекты.
Булевы значения сериализуются так:
✅"b:0;" для false и "b:1;" для true.
✅Null представляется как "N;".
✅Целые числа сериализуются как "i:значение;",
✅числа с плавающей запятой как "d:значение;".
✅Сериализованные строки содержат информацию о длине строки и выглядят так: "s:[длина]:"[значение]"".
Массивы сериализуются с использованием "a:[количество элементов]:{...элементы}", где каждый элемент представлен в формате "ключ;значение;". Объекты сериализуются с использованием "O:[длина класса]:"[класс]":[количество свойств]:{...свойства}". Сериализация может также обрабатывать защищенные и приватные свойства объектов, добавляя специальные символы к их именам.
Этот процесс позволяет сохранять данные в формате, который можно легко передавать или хранить, и восстанавливать их обратно в их первоначальное состояние.
Сериализация (или serialization) - это процесс преобразования данных в формат, который можно сохранить или передать. В PHP сериализация выполняется с использованием специального формата, который представляет различные типы данных, такие как булевы значения, null, целые числа, числа с плавающей запятой, строки, массивы и объекты.
Булевы значения сериализуются так:
✅"b:0;" для false и "b:1;" для true.
✅Null представляется как "N;".
✅Целые числа сериализуются как "i:значение;",
✅числа с плавающей запятой как "d:значение;".
✅Сериализованные строки содержат информацию о длине строки и выглядят так: "s:[длина]:"[значение]"".
Массивы сериализуются с использованием "a:[количество элементов]:{...элементы}", где каждый элемент представлен в формате "ключ;значение;". Объекты сериализуются с использованием "O:[длина класса]:"[класс]":[количество свойств]:{...свойства}". Сериализация может также обрабатывать защищенные и приватные свойства объектов, добавляя специальные символы к их именам.
Этот процесс позволяет сохранять данные в формате, который можно легко передавать или хранить, и восстанавливать их обратно в их первоначальное состояние.
ryangjchandler.co.uk
Understanding Serialisation in PHP
Exploring software development with PHP, JavaScript, Rust, and beyond.
👍23
Что такое OWASP?
OWASP - это акроним, расшифровывающийся как Open Web Application Security Project.
OWASP - это некоммерческая организация, которая занимается исследованием и обеспечением безопасности веб-приложений. Она обладает обширным контентом, включающим методологии, инструменты, стандарты и руководства по обеспечению безопасности веб-приложений.
В рамках OWASP разработаны множество проектов, включающих в себя руководства по безопасности, топ-10 уязвимостей веб-приложений, инструменты для сканирования и тестирования безопасности, образцы кода и многое другое.
Знание OWASP и умение применять его рекомендации является важным для php-разработчика, так как помогает защитить веб-приложения от распространенных уязвимостей, таких как инъекции SQL, межсайтовый скриптинг (XSS), утечка конфиденциальной информации и другие.
#вопросы_с_собеседований
OWASP - это акроним, расшифровывающийся как Open Web Application Security Project.
OWASP - это некоммерческая организация, которая занимается исследованием и обеспечением безопасности веб-приложений. Она обладает обширным контентом, включающим методологии, инструменты, стандарты и руководства по обеспечению безопасности веб-приложений.
В рамках OWASP разработаны множество проектов, включающих в себя руководства по безопасности, топ-10 уязвимостей веб-приложений, инструменты для сканирования и тестирования безопасности, образцы кода и многое другое.
Знание OWASP и умение применять его рекомендации является важным для php-разработчика, так как помогает защитить веб-приложения от распространенных уязвимостей, таких как инъекции SQL, межсайтовый скриптинг (XSS), утечка конфиденциальной информации и другие.
#вопросы_с_собеседований
👍12❤1
Многочисленные варианты использования оператора многоточия "..." в PHP.
Здесь рассмотрены различные варианты использования оператора многоточия (или оператора "остального") в PHP, который широко используется в различных контекстах:
1️⃣Вариадические функции и методы: Оператор многоточия позволяет определять функции и методы, которые могут принимать переменное количество аргументов.
2️⃣Распаковка массива: Оператор многоточия может распаковывать массив значений и передавать их как аргументы функции или методу
3️⃣Объединение вариативных массивов: Оператор многоточия используется для объединения нескольких массивов в один
4️⃣Первоклассные вызовы: В PHP 8.1 и выше, оператор многоточия позволяет передавать вызываемый объект (например, функцию или метод) как замыкание в другие функции.
Здесь рассмотрены различные варианты использования оператора многоточия (или оператора "остального") в PHP, который широко используется в различных контекстах:
1️⃣Вариадические функции и методы: Оператор многоточия позволяет определять функции и методы, которые могут принимать переменное количество аргументов.
2️⃣Распаковка массива: Оператор многоточия может распаковывать массив значений и передавать их как аргументы функции или методу
3️⃣Объединение вариативных массивов: Оператор многоточия используется для объединения нескольких массивов в один
4️⃣Первоклассные вызовы: В PHP 8.1 и выше, оператор многоточия позволяет передавать вызываемый объект (например, функцию или метод) как замыкание в другие функции.
Amit Merchant - A blog on PHP, JavaScript, and more
The many uses of “…” ellipsis operator in PHP
With the evolution of PHP to its modern version, the one operator that has been used thoroughly across various places is the ellipsis operator (...).
👍9
Загрузка ассоциаций по запросу в Symfony
В данной статье рассматривается важный аспект работы с Doctrine в Symfony - загрузка связанных сущностей по запросу. Обычно Doctrine использует отложенную загрузку (Lazy Load), что может вызвать множество запросов к базе данных при доступе к связанным данным.
Автор представляет задачу: реализовать эндпоинт для получения книг с возможностью динамической загрузки связанных сущностей по запросу. Предложено два решения:
🔎Первое решение: Используется Doctrine с параметром EAGER для жадной загрузки связанных сущностей. Однако это приводит к проблеме лишних JOIN-ов и не позволяет загружать ассоциации по запросу.
🔎Второе решение: Вдохновленное концепцией "with" в Laravel, представлена альтернативная реализация с использованием Symfony pipeline. Загрузка связанных сущностей становится более гибкой и позволяет загружать ассоциации по запросу, обрабатывая их динамически в пайплайне.
В данной статье рассматривается важный аспект работы с Doctrine в Symfony - загрузка связанных сущностей по запросу. Обычно Doctrine использует отложенную загрузку (Lazy Load), что может вызвать множество запросов к базе данных при доступе к связанным данным.
Автор представляет задачу: реализовать эндпоинт для получения книг с возможностью динамической загрузки связанных сущностей по запросу. Предложено два решения:
🔎Первое решение: Используется Doctrine с параметром EAGER для жадной загрузки связанных сущностей. Однако это приводит к проблеме лишних JOIN-ов и не позволяет загружать ассоциации по запросу.
🔎Второе решение: Вдохновленное концепцией "with" в Laravel, представлена альтернативная реализация с использованием Symfony pipeline. Загрузка связанных сущностей становится более гибкой и позволяет загружать ассоциации по запросу, обрабатывая их динамически в пайплайне.
Хабр
Загрузка ассоциаций по запросу в Symfony
Всех приветствую! Стандартно Doctrine загружает сущности отложено (Lazy load). Это означает, что данные взаимосвязей фактически не загружаются до тех пор, пока не будет явный вызов свойства....
👍6❤1🌚1
Сколько лет опыта по вашему должен иметь мидл?
🥱6👍3
EnumConcern
Это пакет, предназначенный для улучшения использования возможностей Enum с помощью набора удобных методов. Этот пакет включает файл Trait, который позволяет легко обрабатывать Enum.
Это пакет, предназначенный для улучшения использования возможностей Enum с помощью набора удобных методов. Этот пакет включает файл Trait, который позволяет легко обрабатывать Enum.
GitHub
GitHub - emreyarligan/enum-concern: A PHP package for effortless Enumeration handling with Laravel Collections 📦 ✨
A PHP package for effortless Enumeration handling with Laravel Collections 📦 ✨ - emreyarligan/enum-concern
🥱9👍4🌚2❤1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
Подборка лучших статей «Библиотеки программиста» за сентябрь: сохраняй в заметки, чтобы не пропустить #самыйсок
📕 ТОП-9 книг по языку программирования Go в 2023 году: от новичка до профессионала
🐍 Дорожная карта Python-разработчика в 2023 году
🎓💼 ТОП-9 не самых очевидных компаний для стажировки в ИТ
☕🛣️ Дорожная карта Java-разработчика в 2023 году
🦸⚡ 9 способов настройки градиента цели для поддержания мотивации
⚒️ ТОП-27 плагинов для Visual Studio Code в 2023
🔎💼🗺️ Как программисту искать (и найти) работу за границей в 2023 году
🔝 Приоритизация задач по методу MoSCoW: как за 5 минут научиться грамотно расставлять приоритеты
🤖 Создание собственного ИИ-бота на Python за 33 строчки кода
📊 Как я входил в IT? Результаты опроса «Библиотеки программиста»
📕 ТОП-9 книг по языку программирования Go в 2023 году: от новичка до профессионала
🐍 Дорожная карта Python-разработчика в 2023 году
🎓💼 ТОП-9 не самых очевидных компаний для стажировки в ИТ
☕🛣️ Дорожная карта Java-разработчика в 2023 году
🦸⚡ 9 способов настройки градиента цели для поддержания мотивации
⚒️ ТОП-27 плагинов для Visual Studio Code в 2023
🔎💼🗺️ Как программисту искать (и найти) работу за границей в 2023 году
🔝 Приоритизация задач по методу MoSCoW: как за 5 минут научиться грамотно расставлять приоритеты
🤖 Создание собственного ИИ-бота на Python за 33 строчки кода
📊 Как я входил в IT? Результаты опроса «Библиотеки программиста»
🔥2🌚1
Новые каналы по PHP🎉
Готовимся к собеседованиям по PHP и проверяем себя на практических задачках: «Библиотека программиста» запустила два канала специально для PHP-разработчиков и тех, кто хочет ими стать👨🏫
Подписывайтесь:
👉Библиотека собеса по PHP — тут мы готовимся к интервью
👉Библиотека задач по PHP — тут решаем задачи, проходим тесты и изучаем код
Готовимся к собеседованиям по PHP и проверяем себя на практических задачках: «Библиотека программиста» запустила два канала специально для PHP-разработчиков и тех, кто хочет ими стать👨🏫
Подписывайтесь:
👉Библиотека собеса по PHP — тут мы готовимся к интервью
👉Библиотека задач по PHP — тут решаем задачи, проходим тесты и изучаем код
🥱5👍2
В PHP существуют функции parse_ini_string и parse_ini_file, которые используют встроенный парсер PHP для обработки INI-конфигурационных файлов. Этот парсер поддерживает наследование значений из системных переменных окружения и констант PHP, объявленных на момент парсинга текста. С версии PHP 8.3 добавлена поддержка синтаксиса значений по умолчанию для переменных окружения.
Однако, эти возможности могут представлять уязвимость безопасности данных, таких как переменные окружения и константы PHP. Пример такой атаки - предоставление конфигурационного файла, который может заставить сервер раскрыть свои собственные переменные окружения и константы.
PHP предоставляет параметры конфигурации, позволяющие отключить автоматическое преобразование типов, а также подстановку переменных окружения и констант. Путем использования флага INI_SCANNER_RAW в параметрах parse_ini_file и parse_ini_string, можно отключить эту автоматическую обработку и повысить безопасность обработки пользовательских INI-значений. Однако, важно помнить, что без явного указания этого флага функции будут уязвимы к подобным атакам.
Подробнее
Однако, эти возможности могут представлять уязвимость безопасности данных, таких как переменные окружения и константы PHP. Пример такой атаки - предоставление конфигурационного файла, который может заставить сервер раскрыть свои собственные переменные окружения и константы.
PHP предоставляет параметры конфигурации, позволяющие отключить автоматическое преобразование типов, а также подстановку переменных окружения и констант. Путем использования флага INI_SCANNER_RAW в параметрах parse_ini_file и parse_ini_string, можно отключить эту автоматическую обработку и повысить безопасность обработки пользовательских INI-значений. Однако, важно помнить, что без явного указания этого флага функции будут уязвимы к подобным атакам.
Подробнее
PHP.Watch
Security considerations when parsing user-provided INI strings and files
Security considerations when parsing user-provided INI strings and files using `parse_ini_string` and `parse_ini_file` functions.
❤6
Делаем web сервер из старого Android смартфона, без root
Статья описывает процесс превращения старого Android-устройства (в данном случае Xiaomi Mi 4c) в полноценный веб-сервер с использованием программ Termux, Nginx, PHP-FPM и MariaDB. В ходе статьи автор показывает, как установить необходимые компоненты, настроить их взаимодействие и запустить WordPress на устройстве. Важным моментом является возможность управления сервером через SSH и SFTP, что делает процесс управления и разработки удобным.
вот основные шаги, если захотите повторить:
🟠Установка Termux, эмулятора терминала с минимальным Linux окружением, на Android-устройстве.
🟠Установка и настройка OpenSSH для удаленного доступа к устройству.
🟠Установка и настройка Nginx для обслуживания статических веб-страниц и настройка поддержки PHP-FPM для обработки динамических контентных страниц.
🟠Установка MariaDB для работы с базой данных WordPress.
🟠Запуск и настройка WordPress на Android-устройстве.
Статья описывает процесс превращения старого Android-устройства (в данном случае Xiaomi Mi 4c) в полноценный веб-сервер с использованием программ Termux, Nginx, PHP-FPM и MariaDB. В ходе статьи автор показывает, как установить необходимые компоненты, настроить их взаимодействие и запустить WordPress на устройстве. Важным моментом является возможность управления сервером через SSH и SFTP, что делает процесс управления и разработки удобным.
вот основные шаги, если захотите повторить:
🟠Установка Termux, эмулятора терминала с минимальным Linux окружением, на Android-устройстве.
🟠Установка и настройка OpenSSH для удаленного доступа к устройству.
🟠Установка и настройка Nginx для обслуживания статических веб-страниц и настройка поддержки PHP-FPM для обработки динамических контентных страниц.
🟠Установка MariaDB для работы с базой данных WordPress.
🟠Запуск и настройка WordPress на Android-устройстве.
Хабр
Делаем web сервер из старого Android смартфона, без root
Главная идея была в том, чтобы проверить возможно ли из старого Android устройства сделать "полноценный" сервер с nginx, php-fpm, MariaDB и запустить на этом Wordpress. Оказывается можно и при этом с...
👍23😁8
В PHP существует мощный функционал, называемый поздним статическим связыванием (LSB), который позволяет дочерним классам использовать статические свойства и методы родительского класса через ключевое слово "static". Это предоставляет гибкость и динамичность в разработке программного обеспечения.
Здесь рассматривается пример использования позднего статического связывания в веб-приложении с базой данных. В данном примере есть базовый класс "Database", содержащий общие функции для работы с базой данных, и два подкласса "User" и "Product", представляющих объекты в приложении. Позднее статическое связывание позволяет им динамически формировать запросы к базе данных, что делает систему более гибкой и легкой в обслуживании.
Здесь рассматривается пример использования позднего статического связывания в веб-приложении с базой данных. В данном примере есть базовый класс "Database", содержащий общие функции для работы с базой данных, и два подкласса "User" и "Product", представляющих объекты в приложении. Позднее статическое связывание позволяет им динамически формировать запросы к базе данных, что делает систему более гибкой и легкой в обслуживании.
DEV Community
A real life example of using Late Static Binding in PHP.
Introduction: In the world of software development, creating flexible and dynamic systems...
🥱12👍7
Какая разница между MyISAM и InnoDB? В каких случаях и что лучше применять?
MyISAM и InnoDB - это два самых распространенных типа таблиц в MySQL. Отличия между ними заключаются в следующем:
1. Система хранения данных: MyISAM использует таблицы с фиксированной длиной строк, в то время как InnoDB использует таблицы с переменной длиной строк. Это означает, что MyISAM обычно быстрее при выполнении операций чтения, а InnoDB более эффективен при выполнении операций записи.
2. Транзакции и целостность данных: InnoDB поддерживает ACID-транзакции (Atomicity, Consistency, Isolation, Durability - Атомарность, Согласованность, Изолированность, Устойчивость). Это означает, что в случае сбоя данных, InnoDB может откатить все изменения, сохраняя целостность данных. MyISAM не поддерживает транзакции и не обеспечивает такую же уровень целостности данных.
3. Блокировка таблиц: MyISAM блокирует всю таблицу во время выполнения операции записи, в то время как InnoDB блокирует только строки, с которыми происходит операция. Это означает, что InnoDB обычно более подходит для многопользовательских приложений, где множество операций происходит одновременно.
4. Внешние ключи: InnoDB поддерживает внешние ключи (foreign keys), что облегчает поддержку связей между таблицами и обеспечивает целостность данных. MyISAM не поддерживает внешние ключи.
Итак, в каких случаях что лучше использовать:
- Если нагрузка на базу данных состоит главным образом из операций чтения, то MyISAM может быть предпочтительнее из-за его более высокой производительности.
- Если приложение требует поддержку транзакций (например, при обработке платежей или других критически важных операций), или имеется необходимость в внешних ключах для поддержания целостности данных, то InnoDB является более подходящим выбором.
В отличие от MyISAM, InnoDB также более рекомендуется при работе с многопользовательскими приложениями, где одновременно выполняется много операций записи и требуется высокий уровень целостности данных.
#вопросы_с_собеседований
MyISAM и InnoDB - это два самых распространенных типа таблиц в MySQL. Отличия между ними заключаются в следующем:
1. Система хранения данных: MyISAM использует таблицы с фиксированной длиной строк, в то время как InnoDB использует таблицы с переменной длиной строк. Это означает, что MyISAM обычно быстрее при выполнении операций чтения, а InnoDB более эффективен при выполнении операций записи.
2. Транзакции и целостность данных: InnoDB поддерживает ACID-транзакции (Atomicity, Consistency, Isolation, Durability - Атомарность, Согласованность, Изолированность, Устойчивость). Это означает, что в случае сбоя данных, InnoDB может откатить все изменения, сохраняя целостность данных. MyISAM не поддерживает транзакции и не обеспечивает такую же уровень целостности данных.
3. Блокировка таблиц: MyISAM блокирует всю таблицу во время выполнения операции записи, в то время как InnoDB блокирует только строки, с которыми происходит операция. Это означает, что InnoDB обычно более подходит для многопользовательских приложений, где множество операций происходит одновременно.
4. Внешние ключи: InnoDB поддерживает внешние ключи (foreign keys), что облегчает поддержку связей между таблицами и обеспечивает целостность данных. MyISAM не поддерживает внешние ключи.
Итак, в каких случаях что лучше использовать:
- Если нагрузка на базу данных состоит главным образом из операций чтения, то MyISAM может быть предпочтительнее из-за его более высокой производительности.
- Если приложение требует поддержку транзакций (например, при обработке платежей или других критически важных операций), или имеется необходимость в внешних ключах для поддержания целостности данных, то InnoDB является более подходящим выбором.
В отличие от MyISAM, InnoDB также более рекомендуется при работе с многопользовательскими приложениями, где одновременно выполняется много операций записи и требуется высокий уровень целостности данных.
#вопросы_с_собеседований
👍18🥱8
Шаблоны проектирования PHP: Active Record
Active Record - это шаблон проектирования, который включает в себя класс с методами сохранения данных и бизнес-логики. Однако он нарушает принцип единственной ответственности, так как класс сочетает в себе множество обязанностей. Для решения этой проблемы предлагается создать родительский класс, который реализует методы сохранения данных универсальным способом.
✔️Этот подход называется Layer Supertype.
🔎Приведен пример работы с Active Record. В данном примере создается класс Product, который содержит методы для работы с продуктами в базе данных SQLite. Класс имеет статическое свойство conn для хранения соединения с базой данных и переменную data для хранения данных продукта.
Класс Product содержит методы для выполнения различных операций с базой данных, таких как поиск продукта по ID, выборка всех продуктов с возможностью фильтрации, удаление продукта и сохранение (включая добавление и обновление).
Приведенный код также включает примеры тестирования методов:
🟠INSERT
🟠UPDATE
🟠выборка всех продуктов из базы данных.
Active Record - это шаблон проектирования, который включает в себя класс с методами сохранения данных и бизнес-логики. Однако он нарушает принцип единственной ответственности, так как класс сочетает в себе множество обязанностей. Для решения этой проблемы предлагается создать родительский класс, который реализует методы сохранения данных универсальным способом.
✔️Этот подход называется Layer Supertype.
🔎Приведен пример работы с Active Record. В данном примере создается класс Product, который содержит методы для работы с продуктами в базе данных SQLite. Класс имеет статическое свойство conn для хранения соединения с базой данных и переменную data для хранения данных продукта.
Класс Product содержит методы для выполнения различных операций с базой данных, таких как поиск продукта по ID, выборка всех продуктов с возможностью фильтрации, удаление продукта и сохранение (включая добавление и обновление).
Приведенный код также включает примеры тестирования методов:
🟠INSERT
🟠UPDATE
🟠выборка всех продуктов из базы данных.
DEV Community
PHP Design Patterns: Active Record
What is Active Record? Active Record is a design pattern that features a class that has...
🥱7👍5
Forwarded from Библиотека программиста | программирование, кодинг, разработка
👨🎓Подборка бесплатных инструментов, курсов и ресурсов для освоения SQL и баз данных
✏️ Полный курс по базам данных НИУ ВШЭ, СПБПУ и центра CS, который познакомит с методами структурированного хранения данных, основами SQL, принципами использования баз данных в приложениях и многим другим
✏️ SQLBolt — серия интерактивных уроков и упражнений для изучения SQL прямо в браузере
✏️ PostgreSQL Tutorial — исчерпывающее пособие по PostgreSQL
✏️ The Internals of PostgreSQL — полезный ресурс для изучения внутреннего устройства PostgreSQL
✏️ DB-Engines — коллекция полезной информации о реляционных СУБД и NoSQL
✏️ SQLZoo — подборка учебных пособий как для новичков, так и для профи
✏️ SQL Tutorial — видеогайд по SQL от FreeCodeCamp
✏️ PopSQL — инструмент для совместного изучения SQL и выполнения SQL-запросов
✏️ Полный курс по базам данных НИУ ВШЭ, СПБПУ и центра CS, который познакомит с методами структурированного хранения данных, основами SQL, принципами использования баз данных в приложениях и многим другим
✏️ SQLBolt — серия интерактивных уроков и упражнений для изучения SQL прямо в браузере
✏️ PostgreSQL Tutorial — исчерпывающее пособие по PostgreSQL
✏️ The Internals of PostgreSQL — полезный ресурс для изучения внутреннего устройства PostgreSQL
✏️ DB-Engines — коллекция полезной информации о реляционных СУБД и NoSQL
✏️ SQLZoo — подборка учебных пособий как для новичков, так и для профи
✏️ SQL Tutorial — видеогайд по SQL от FreeCodeCamp
✏️ PopSQL — инструмент для совместного изучения SQL и выполнения SQL-запросов
👍9🔥2
Совет по безопасности: увеличьте количество проходов bcrypt
Статья обсуждает важность безопасности в веб-разработке, фокусируясь на механизме хеширования паролей. Она подчеркивает увеличение вычислительной мощности компьютеров и необходимость постоянного обновления методов хеширования для защиты от брутфорс-атак.
Здесь рассматриваются изменения, внесенные в Laravel, включая увеличение количества проходов bcrypt с 10 до 12. Это увеличение замедляет процесс хеширования, обеспечивая более высокий уровень безопасности.
Статья обсуждает важность безопасности в веб-разработке, фокусируясь на механизме хеширования паролей. Она подчеркивает увеличение вычислительной мощности компьютеров и необходимость постоянного обновления методов хеширования для защиты от брутфорс-атак.
Здесь рассматриваются изменения, внесенные в Laravel, включая увеличение количества проходов bcrypt с 10 до 12. Это увеличение замедляет процесс хеширования, обеспечивая более высокий уровень безопасности.
Хабр
Совет по безопасности: увеличьте количество проходов bcrypt
Приветствую! На этой неделе мы отправимся в интересный и сложный мир механизм хэширования паролей, и рассмотрим очень простое изменение, которое Вы должны сделать в своих приложениях для повышения...
👍2
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍2😁1
Использование Hashid с Laravel (вместо UUID)
Статья обсуждает различные методы создания идентификаторов в базах данных, сосредотачиваясь на сравнении увеличиваемых целочисленных идентификаторов с уникальными строковыми идентификаторами (UUIDs) и методом Hashid.
Автор исследует преимущества и недостатки каждого метода и предоставляет решение в виде использования Hashid - метода для генерации коротких и уникальных строковых идентификаторов из чисел.
В статье также рассматривается реализация Hashid в Laravel-приложении
Статья обсуждает различные методы создания идентификаторов в базах данных, сосредотачиваясь на сравнении увеличиваемых целочисленных идентификаторов с уникальными строковыми идентификаторами (UUIDs) и методом Hashid.
Автор исследует преимущества и недостатки каждого метода и предоставляет решение в виде использования Hashid - метода для генерации коротких и уникальных строковых идентификаторов из чисел.
В статье также рассматривается реализация Hashid в Laravel-приложении
👍4👾3🥱1
Forwarded from PHP jobs — вакансии по PHP, Symfony, Laravel
#дайджест #phpdevjob
Вакансии недели для джунов 👨🏻🏫
PHP-разработчик в NeoFamily
Санкт-Петербург. Онлайн-школа по подготовке к ЕГЭ.
Подробнее
PHP-программист в ЛЕКО
Тверь. Разработка крупных интернет-проектов.
Подробнее
Программист PHP в SRLab
Севастополь. Разработка индивидуальных решений для бизнеса.
Подробнее
Junior PHP-программист в Скобеев и Партнеры
Тамбов. ИТ-услуги и эталонный сервис.
Подробнее
Программист PHP в ИНТАСК
Воронеж. Разработка ПО для электронной торговли.
Подробнее
Понравились вакансии?
👍 — да
👎 — нет
Вакансии недели для джунов 👨🏻🏫
PHP-разработчик в NeoFamily
Санкт-Петербург. Онлайн-школа по подготовке к ЕГЭ.
Подробнее
PHP-программист в ЛЕКО
Тверь. Разработка крупных интернет-проектов.
Подробнее
Программист PHP в SRLab
Севастополь. Разработка индивидуальных решений для бизнеса.
Подробнее
Junior PHP-программист в Скобеев и Партнеры
Тамбов. ИТ-услуги и эталонный сервис.
Подробнее
Программист PHP в ИНТАСК
Воронеж. Разработка ПО для электронной торговли.
Подробнее
Понравились вакансии?
👍 — да
👎 — нет
spb.hh.ru
Вакансия PHP-разработчик в Санкт-Петербурге, работа в компании NeoFamily (вакансия в архиве c 12 октября 2023)
Зарплата: не указана. Санкт-Петербург. Требуемый опыт: 1–3 года. Полная занятость. Дата публикации: 10.10.2023.
🥱8👍2