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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
Депозиты в смарт-контракт с использованием PHP, Symfony и The Soroban Technology

Криптомагнаты на месте?🤑

Основное внимание статьи уделяется демонстрации того, как взаимодействовать со смарт-контрактами, используя PHP и фреймворк Symfony, в частности, с использованием технологии Soroban для создания смарт-контрактов и языка программирования Rust для их реализации.

Смарт-контракт:
Смарт-контракт создан с использованием технологии Soroban и языка программирования Rust. Он позволяет пользователям вносить депозиты в контракт, переводя сумму с адреса пользователя на адрес контракта, тем самым увеличивая баланс контракта и уменьшая баланс пользователя.

Основные моменты кода контракта:
Контракт включает функции инициализации и депозита.
Функция 'init' инициализирует контракт, устанавливая адрес администратора, адрес токена и состояние.
Функция 'deposit' обрабатывает депозиты, проверяя, инициализирован ли контракт, переводя средства и обновляя баланс контракта.

Приложение Symfony:
Далее предоставлена инструкция по настройке приложения Symfony, размещенного на GitHub, с использованием образа Docker. Пользователи могут войти, используя предоставленные учетные данные, создавать контракты, каждый из которых имеет возможность делать депозиты. Интерфейс позволяет пользователям просматривать созданные контракты, вносить депозиты и видеть обновленные балансы.

Этот пример приложения демонстрирует, как мы можем взаимодействовать со смарт-контрактами Soroban, используя PHP и Symfony.
🔥6
Совет по безопасности: увеличьте количество проходов bcrypt

bcrypt — это функция хэширования паролей, используемая для их защиты в базах данных чтобы их не смог использовать тот, кто получит доступ к исходному кэшу. В настоящее время bcrypt является алгоритмом шифрования по-умолчанию как в Laravel, так и в самом PHP, и является наиболее безопасным вариантом хэширования паролей.


Несмотря на то что напрямую извлечь хэшированный пароль невозможно, его можно «угадать» при помощи брутфорса, генерируя миллионы/миллиарды паролей в секунду, сравнивая их с хэшем. Этот процесс позволяет взломать простые/известные пароли за несколько секунд. Более сложные пароли требуют больше времени, но с ростом вычислительной мощности время, необходимое для взлома паролей, уменьшается. Поэтому по мере роста вычислительной мощности необходимо повышать безопасность хэширования паролей.
👍9
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы

🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion

#️⃣C#

Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ
2👍1
В Laravel 11.2 были добавлены следующие возможности:

🔸Fluent Helper: Добавлена функция fluent(), которая облегчает работу с многомерными массивами. Она представляет собой удобный способ создания экземпляра объекта fluent на основе массива данных.

🔸Context Helper: Добавлена функция context(), которая упрощает управление контекстом. В зависимости от переданных аргументов вы можете добавить в контекст, получить объект контекста или извлечь его (с необязательным пользовательским значением по умолчанию).

🔸Default Value for Context Getters (Значение по умолчанию для получателей контекста): Добавлена поддержка значения по умолчанию для получателей контекста. Теперь можно указать значение по умолчанию, которое будет возвращено, если запрошенный ключ не будет найден.

и многое другое!
4👍1
#дайджест #phpdevjob

Вакансии PHP разработчиков уровня Junior

▪️PHP Developer
Санкт-Петербург. РАКЕТА ПРОДЖЕКТ — разработка ПО
Подробнее

▪️PHP разработчик
Самара. Лаборатория Интернет — разработка ПО
Подробнее

Вакансии PHP разработчиков уровня Middle

▪️PHP программист
Санкт-Петербург. СОФТПАРТ — разработка веб-сервисов для сферы торговли автозапчастями
Подробнее

▪️PHP разработчик
Удаленка. Офис в Самаре. Ит-Финанс — разработка ПО для лидогенерации и fintech компаний
Подробнее

Вакансии PHP разработчиков уровня Senior

▪️Full-Stack разработчик
Челябинск. Аспро — разработка ПО
Подробнее

▪️Старший разработчик PHP
Удаленка. Офис в Москве. АЛЬЯНС КРЕДИТ — разработка ПО
Подробнее

Понравились вакансии?
❤️ — да
🤔 — нет
3
#хочу_спросить

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

💬 Как вам вакансия на сеньора с вилкой 1-1,2 🍋 ?

#холивар
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21💯1
Что такое индексы? Как они влияют на время выполнения SELECT, INSERT?

Индексы в базах данных — это структуры данных, создаваемые для ускорения поиска и доступа к данным. Их основная цель — улучшить производительность запросов к базе данных, таких как SELECT, INSERT, UPDATE и DELETE, путем уменьшения количества записей, которые необходимо обработать для выполнения запроса.

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

Влияние индексов на время выполнения различных операций запросов:

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

INSERT: Вставка данных также может быть замедлена из-за индексов. При вставке новой записи база данных должна обновить соответствующие индексы, что может вызвать дополнительные накладные расходы по времени. Однако, правильно спроектированные индексы могут сделать вставку более эффективной, поскольку они уменьшают количество данных, которые нужно перестраивать для обновления индексов.

Общее правило состоит в том, что индексы улучшают производительность операций чтения данных (SELECT), но могут негативно сказываться на производительности операций записи данных (INSERT, UPDATE, DELETE). Поэтому при проектировании базы данных необходимо балансировать использование индексов в зависимости от требований к производительности операций чтения и записи.

#вопросы_с_собеседований
8👍1
Laravel facades vs class aliases

Здесь рассматриваются различия между фасадами (Facades) и псевдонимами классов (Class Aliases) в Laravel, а также объясняется, как они стали восприниматься сообществом Laravel как взаимосвязанные концепции.

Фасады в Laravel представляют собой прокси-объекты для объектов, хранящихся в контейнере служб (Service Container). Если объект привязан к контейнеру служб под именем 'my-service', вы можете вызывать его методы, используя статические методы фасада.

При вызове статического метода на этом фасаде вызывается магический метод __callStatic(), извлекается служба 'my-service' из контейнера, и вызов перенаправляется к этому экземпляру.

Псевдонимы классов позволяют разработчикам создавать альтернативные имена для классов с помощью функции class_alias. Например:

class_alias(MyClass::class, 'BonzuPippinpaddleopsicopolisTheThird');

Это может быть удобно, когда нужно использовать классы с длинными полностью квалифицированными именами (FQCN) в представлениях или когда использование операторов use не уместно.

Основное недопонимание заключается в том, что Laravel по умолчанию создает псевдонимы для всех своих фасадов, делая их доступными как будто они находятся в глобальном пространстве имен. Это привело к тому, что многие в сообществе Laravel перепутали фасады с псевдонимами классов.
👍32🔥1
«Как мы разрабатывали сервис расчета стоимости доставки для ритейлера»

Представьте: вы — крупный производитель и ритейлер товаров для дома, который обрабатывает в сутки тысячи заказов по всей стране. Но при этом у вас нет единого алгоритма расчета стоимости доставки — из-за этого суммы почти всегда разные, иногда завышенные. Менеджеры вручную корректируют стоимость доставки до значений, которые не отпугнули бы клиента. При этом покупатели часто слышат разные цены от специалистов колл-центра и офлайн-магазинов. А после — оставляют жалобы или даже отказываются от покупки.

Здесь рассказывается о том, как был разработан и внедрён сервис расчёта стоимости доставки.
👍31
Гайд по мягкому удалению в Laravel

🔄 Мягкие удаления в веб-приложениях позволяют удалять данные без их окончательного удаления из базы данных. Вместо этого устанавливается флаг, указывающий, что данные были удалены, что позволяет их восстановить при необходимости. В Laravel мягкие удаления реализуются с использованием столбца deleted_at с отметкой времени.

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

🛠️ Чтобы реализовать мягкие удаления в Laravel, вы используете трейт SoftDeletes в вашей модели и добавляете столбец deleted_at в таблицу базы данных. Модели мягких удалений могут быть восстановлены или окончательно удалены с использованием предоставленных методов.

🧪 Тестирование софт-удалений включает в себя проверку правильности софт-удаления, восстановления или окончательного удаления моделей, а также проверку запросов на исключение или включение софт-удаленных моделей в зависимости от задуманного. Необходимо быть осторожным с использованием фасада DB, чтобы избежать случайного запроса софт-удаленных данных.
4👍2🔥2😁1
#дайджест новостей по PHP за неделю:

🔎Выпущены PHP 8.2.18, PHP 8.3.6 & PHP 8.1.28 — Команда разработчиков PHP объявляет о немедленной доступности PHP 8.2.18, PHP 8.3.6 и PHP 8.1.28. Это релиз безопасности.

🔎Команда Laravel выпустила v11.4 — с новым фасадом исключений, поддержкой Enum в методе Collection::mapinto() и многое другое.

🔎Basset — альтернативный способ загрузки ассетов CSS & JS

🔎Неделя Symfony #902 (8-14 апреля 2024 г.)
👍3🔥21
Глубокое погружение в оптимальные настройки PHP-FPM

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

Раздел по устранению неполадок советует проверять журналы PHP-FPM на предупреждения о настройке max_children, которая определяет максимальное количество дочерних процессов, которые PHP-FPM может породить. Также выделяется важность контроля за потреблением памяти, который можно отслеживать с помощью команд, таких как htop или free -hl.

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

Проведение тестирования различных вариантов менеджера процессов рекомендуется с использованием ApacheBench, с результатами, показывающими неожиданные различия в производительности между статическим, динамическим и по требованию настройками. Кроме того, в статье обсуждаются дополнительные параметры, такие как slowlog для отслеживания медленных запросов и параметры аварийного перезапуска для обработки отказов процессов.
👍12
Настраиваем Windows WSL для локальной разработки Laravel

В этой небольшой статье рассказывается, как правильно настроить WSL в Windows 11 для локальной разработки Laravel-приложения. Мы собираемся установить php, mysql, nginx и composer, а также отредактировать файл hosts в самом Windows.
10👍5🥱5
Какая система типов используется в PHP? Опишите плюсы и минусы.

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

Плюсы:

✔️Гибкость: Динамическая типизация делает PHP очень гибким языком программирования, позволяя быстро писать и изменять код.

✔️Простота использования: Не нужно явно объявлять типы переменных, что упрощает написание кода, особенно для новичков.

✔️Легкость внесения изменений: Поскольку типы переменных могут быть изменены в любой момент, изменение структуры данных или логики программы может быть более легким и менее разрушительным.

✔️Меньше кода: Нет необходимости явно приводить типы или выполнять проверки на соответствие типов, что может сократить объем кода.

Минусы:

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

Уменьшение производительности: Проверка типов во время выполнения может негативно сказаться на производительности приложения, особенно в больших и сложных проектах.

Меньшая надежность: Поскольку типы переменных могут изменяться во время выполнения, это может привести к неожиданному поведению программы и усложнить ее понимание и поддержку.

Трудности в документации и отладке: Из-за динамической типизации может быть сложно определить типы переменных и их ожидаемое поведение, что может затруднить документирование кода и отладку ошибок.

#вопросы_с_собеседований
10