OneCode
1.39K subscribers
629 photos
60 videos
3 files
525 links
Full Stack на PHP, Laravel и всё, что с этим связано.
YouTube: https://www.youtube.com/@onecode_blog
Download Telegram
Парсинг сайтов

Я никогда особо не интересовался парсингом сайтов, потому что мне это НЕ интересно.

Однако знаю, что многие любят эту тему, поэтому вот интересная статья с ответами на вопросы.

Кстати, если не вкурсе, то парсинг - это вытаскивание информации со страниц сайтов. Например, вытащить и сохранить в свою базу данных товары и цены с mvideo.

https://vc.ru/dev/496144-20-mln-rubley-v-god-na-parsinge-saytov

#parsing
👍3
Спешу поделиться радостью

Осуществилась давняя мечта - приобрёл роцкерский мотоцикл.

Как ребёнок, не спал пару ночей от радости 🤣 Мужики поймут!

Конечно сезон покатушек уже закончился, потому что покупка спонтанная и неожиданная.

Так что катаюсь крайние деньки, но уже могу сказать, что ездить на этом малыше не просто, но кайфово!

Желаю тебе тоже побольше таких ярких моментов и хороших выходных!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥6🎉5
Как работает цикл событий в JavaScript

Полезная статья для понимания механизма асинхронной работы JS.

https://habr.com/ru/post/680846/

#js #async
👍3
Просмотр логов в Laravel

Тестирую бесплатный пакет для просмотра логов.

Первое впечатление - нравится! 🙂

https://arunas.dev/log-viewer-for-laravel

Приятно работать, когда есть качественные готовые решения 😍

#laravel #log #logs #logging
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
This media is not supported in your browser
VIEW IN TELEGRAM
🔥10👍4
Пакет для автоматического создания и удаления дополнительных серверов

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

Или у нас есть очереди, которые обрабатывают разное кол-во задач. То густо, то пусто 😃

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

Это позволяет сильно экономить на серверах.

Получается такой мини-кубернетис с автоматическим горизонтальным масштабированием.

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

https://spatie.be/docs/laravel-dynamic-servers/v1/introduction

#laravel #server #servers
👍5
Профессиональный разработчик 👇
Обработка PDF

Куча инструментов для работы с PDF - конвертация, редактирование, наложение водяных знаков и тд.

Есть программный интерфейс (API) 👌

https://www.ilovepdf.com

#pdf
👍9
Laravel + Inertia + Vue (React)

Пошаговая инструкция по разработке простого проекта на современном стеке.

https://bootcamp.laravel.com

#laravel #inertial #bootcamp
🔥9👍3
Laracon - конференция Laravel

На конференции, помимо прочего, показали, что с помощью Laravel Livewire теперь можно создавать настоящие SPA с серверным рендерингом через привычный шаблонизатор Blade - практически без JavaScript!

Ссылка на фрагмент, где Калеб (разработчик Livewire и AlpineJS) показывает этот функционал:

https://youtu.be/f4QShF42c6E?t=7949

#laracon
🔥7
Создание фронтенда НЕ покидая 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