OneCode
1.38K subscribers
634 photos
64 videos
3 files
535 links
Full Stack на PHP, Laravel и всё, что с этим связано.
YouTube: https://www.youtube.com/@onecode_blog
Download Telegram
Создание фронтенда НЕ покидая PHP 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Изменение состояния сущности

Изображения (скрины) отправлю в следующем сообщении.

Наши модели и база данных содержат поля, отвечающие за состояние сущности.

Например, пользователь может быть заблокирован или РАЗблокирован.

Способ 1

В этом случае можно добавить в таблицу
users
поле
blocked
с типом
boolean
.

Тогда админ сможет блокировать пользователя, переключая чекбокс в админке.

Этот пример я накидал на первом изображении 👇

Проблема

Рано или поздно админ спросит - а когда был заблокирован этот юзер?

Начинающий разработчик скорее всего пожмёт плечами и скажет, что таких данных нет.

А опытный разработчик заглянет в логи и ответит на поставленый вопрос.

Если, конечно, значения поля НЕ менялось напрямую в базе данных 😁

Решение

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

(Способ 2)

Для решения этой задачи, можно вместо
boolean
для поля
blocked
использовать дату и время, например
timestamp
с возможностью НЕ указывать значение (nullable).

В таком случае мы получаем всё тоже самое (переключатель ```null/datetime```) + имеем дату блокировки пользователя.

Этот пример показан на втором изображении 👇

Признавайся, делал так?

Проблема

Однако этот способ тоже НЕ идеальный, потому что здесь есть дата блокировки пользователя, НО нет даты его РАЗблокировки 😁

Получается, что задача решена наполовину, а для нас (хацкеров) это НЕприемлемо.

Решение

Логичное решение - добавить отдельное поле для хранения времени изменения переключателя.

Способ 3

Этот вариант сочатает в себе оба предыдущих способа и, наверно, является наиболее универсальным.

Теперь главное НЕ забыть обновлять дату и время ```blocked_at``` в момент изменения поля
blocked
.

Внимание на третье изображение 👇

Проблема

Но помимо поля
blocked
у юзера есть много других полей.

И тут возникает логичный вопрос - добавлять дополнительное поле с временем изменения к каждому из полей юзера?

То есть по-хорошему, мы хотим знать какие поля менялись? когда менялись? и значения ДО и ПОСЛЕ?

Решение

Начинающий разработчик, возможно, действительно начнёт добавлять отдельные поля.

Хотя бы для некоторых свойств пользователя (самых важных).

Но мы же не такие? Мы будем думать над универсальным "оружием".

А кто-то пойдёт гуглить готовое решение. Лентяй 🫵

Способ 4

Все выходные мы думали над решением и есть же!

1. Можно создать отдельную модель, например
Change
(изменение).

2. Привязываем эту модель к любой другой модели нашего приложения (через трейт HasChanges).

3. Указываем какие поля мы хотим отслеживать (через абстрактный метод в трейте).

4. На основе событий модели (created, updated) наш трейт автоматически записывает историю в базу данных (таблица changes).

5. Мы в любой момент видим лог всех изменения наших записей: дату, время, значения ДО и ПОСЛЕ.

Изображение НЕ прилагаю. Предлагаю тебе самому подумать на решением 😝

Итог

Подобное решение иногда раально упрощает жизнь.

Особенно, если пользователь заявляет, что его аккаунт взломали 😃

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

Ставь лайк, если полезно! Может запишем видео на эту тему.

ПС: если руками лазить в базу, то тут ничего не поможет 😁

ППС: если ооочень хочется, то можно 😉

#php #laravel #db #bool #boolean
🔥4
🔥2👍1
😁14🔥3
Парни, не поверите.

Решил с 1 сентября подвинуть дела и продолжить запись видосов.

В итоге мотоцикл свалился, как снег на голову - какие тут видосы 😃

Теперь вчера уже подготовил материал для видео, проверил микрофон - сегодня хотел записать.

В итоге мобилизация - какой тут видос 😃
Привет, всем!

Ребят по зарез нужен разраб на работу на Laravel в компанию.

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

Так вот нужен бэкендер. ЗП от 100 до 160 тыс. руб. в месяц.

Кому интересно, пишите мне в личку, свяжу с тим-лидом для собеса.
👍5
This media is not supported in your browser
VIEW IN TELEGRAM
👍7🤔1💩1
Грядущая версия Livewire 3 - пушка! 🔥

https://laravel-news.com/livewire-v3-features

#livewire
👍2
Приложение ВКонтакте удалено из AppStore

Из магазина приложений для iOS пропала соцсеть «ВКонтакте» (VK) и другие приложения экосистемы VK, в том числе Mail.ru, «VK Музыка» и «VK Клипы». В Google Play (приложения для Android) они были доступны.

https://www.forbes.ru/tekhnologii/478335-apple-ob-asnila-blokirovku-prilozenij-vk-v-app-store

#vk
🔥3👎1
Модель ветвления Git Flow

В статье описан вариант организации веток в гите - какие ветки создавать и за что они отвечают 👍

https://bitworks.software/2019-03-12-gitflow-workflow.html

#git #gitflow
👍3
Нагрузочное тестирование

Иногда полезно проверить какую нагрузку может выдержать наш проект.

Для этого проводят нагрузочное тестирование - эмуляция поведения пользователей.

Обычно это выглядт, как отправка большого количества HTTP-запросов на маршруты (URL) нашего проекта.

K6 - бесплатная библиотека для проведения нагрузочного тестирования на JS.

Документация простая, поэтому первые тесты можно запустить буквально за 20 минут.

Помимо этого они предлагают платное облачное решение через их UI (личный кабинет).

https://k6.io

#k6 #test
👍7
Новая версия Laravel 9.32

Новый синтаксис передачи атрибутов в blade-компоненты.

Старый синтаксис тоже работает.

Так же теперь можно приводить данные к типам
integer
и
float
сразу при получении из запроса.

Эти и другие обновления:
https://laravel-news.com/laravel-9-32-0
2
Здравия желаю, товарищи! бойцы 😄

Если пропустили сообщение, то повторю 🙂

Мы с семьёй переехали в Турцию на машине 🚘

Уже нашли жильё, открыли счета в банке и даже купили сим-карты 🤣

Если интересно как и что у нас получается - залетай в наш второй канал 👇

@indigoram89_blog

Всем кайфовой недели! 🚀

Вольно! 😁
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍1
То чувство, когда добавил индексы в базу данных и получил x10 ускорение 😁
😁5👍1
Laravel Venture

Laravel из коробки даёт крутую систему очередей, но иногда возникают более сложные задачи.

Например, создание цепочек последовательных действий в очереди:

- Загрузить видео на сервер
- Оптимизировать видео
- Транскрибировать видео
- Перевести на другие языки
- Уведомить подписчиков
- И тд

Пакет Laravel Venture позволяет создавать мощную систему асинхронных задач в очереди.

Судя по документации всё довольно просто, поэтому имеем в виду этот полезный инструмент в арсенале современного веб-ремесленника 🙂

https://laravel-venture.com

#laravel #queue #venture
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3