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
Как вам такое резюме? 😀 Друг прислал, мне кажется хорошее начало 👍
👍17
Выделение частного класса данных

Обычно классы всегда изначально выглядят чёткими и понятными. Они выполняют свою работу и не лезут в обязанности других классов. Однако при разработке программы добавляется новая логика. В результате некоторые классы ошибочно получают массу дополнительных обязанностей. На помощь приходит частный метод рефакторинга, известный под названием Выделение класса (Extract Class). Он позволяет соблюсти «Принцип единственной ответственности», тем самым делая классы более надёжными и устойчивыми к изменениям.

Чтобы применить этот шаблон проектирования к нужному классу, необходимо:

1. Создать новый класс, который будет иметь одну ответственность, используя методы рефакторинга: выделения поля и выделения метода.

2. Создайте связь между старым и новым классом.

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

https://ru.wikipedia.org/wiki/Выделение_частного_класса_данных
👍3
OneCode
Конкурс! Приз 500 рублей на карту 💸 Победителем станет тот, кто напишет в комментариях что можно оптимизировать в примере из этого поста. Написать нужно то, о чем я думаю 😃 и приложить полноценный пример кода. Выиграет первый правильный ответ, НО сообщение…
Итоги конкурса

Победителем стал Тарас, который предложил перенести API-токен на бекенд, чтобы пользователь не мог отправить 100500 запросов от нашего имени и потратить весь лимит.

На самом деле я думал о том, чтобы убрать лишний запрос к бекенду, потому что (кто знает специфику работы Livewire) когда мы вызываем
@this.set('foo', 'bar')
, то отправляется запрос на бекенд.

Однако Тарас предложил другую, но хорошую идею перенести API-токен на бекенд.

Таким образом мы можем совместить обе задачи:
1. Не отправлять лишних запросов к нам на сервер.
2. Скрыть от пользователя API-токен.

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

Другой вариант (на скрине) - добавить
Middleware
, в котором мы получаем страну пользователя по его IP и сразу сохраняем её в базе данных.

#contest
👍1
Интересно как много разработчиков у нас используют Cloudflare в своих или рабочих проектах?
Anonymous Poll
21%
Использую
38%
Не использую
41%
Не знаю что это
Сравнение объектов в PHP

Оператор сравнения
==
проверяет, что:
- Объекты являются экземплярами одного и того же класса.
- Все свойства объектов имею одинаковые значения.

Оператор идентичности
===
проверяет, что:
- Объекты являются экземплярами одного и того же класса.
- Объекты являются одним и тем же экземпляром.
- Все свойства объектов имею одинаковые значения.

https://www.php.net/manual/ru/language.oop5.object-comparison.php

#php
👍7
Кайфовой недели, программисты!
🔥21
Шаблон проектирования Proxy (заместитель)

Сегодня успешно использовал этот шаблон (кеширующий прокси), чтобы завернуть некоторые ответы HTTP-клиента в кэш. Потом решил заглянуть в Википедию, чтобы почитать про заместителя.

Обнаружил там занятное описание, которое не все могут понять. Вернее понять могут не только лишь все, не каждый может это сделать 😃

«Заместитель» хранит ссылку, которая позволяет заместителю обратиться к реальному субъекту (объект класса «Заместитель» может обращаться к объекту класса «Субъект», если интерфейсы «Реального Субъекта» и «Субъекта» одинаковы). Поскольку интерфейс «Реального Субъекта» идентичен интерфейсу «Субъекта», так, что «Заместителя» можно подставить вместо «Реального Субъекта», контролирует доступ к «Реальному Субъекту», может отвечать за создание или удаление «Реального Субъекта». «Субъект» определяет общий для «Реального Субъекта» и «Заместителя» интерфейс так, что «Заместитель» может быть использован везде, где ожидается «Реальный Субъект». При необходимости запросы могут быть переадресованы «Заместителем» «Реальному Субъекту».

Но почитать всё равно полезно! 👇

https://ru.wikipedia.org/wiki/Заместитель_(шаблон_проектирования)
Скинуть завтра мой пример использования шаблона Proxy?
Anonymous Poll
96%
true
4%
false
OneCode
Скинуть завтра мой пример использования шаблона Proxy?
Ребяты, спасибо за голосование! Подготовил скрины с примерами, но НЕ влезает в телегу никаким боком. Сокращать не хочется, чтобы не упустить важные детали, потому что менее опытные коллеги здесь могут не понять суть. Поэтому завтра постараюсь записать видео, где покажу клёвый пример реализации шаблона Proxy из практики. Уверен многим будет полезно. Доброй ночи!
🔥9👍7
DBngin

Бесплатная программа для MacOS, которая позволяет в пару кликов запустить сервер базы данных (PostgreSQL, MySQL, Redis), выбрав нужную версию.

https://dbngin.com

#tools #db
👍4
Сообщение от участника нашего канала 🥰 Ребята, давайте жгите, чтобы было больше таких историй! 🚀
👍9🔥6
Привет, банда! У нас юбилей 500 участников на канале 😀 Если кто-то хочет выйти - не надо! Дайте полюбоваться 😀

На самом деле это круто и спасибо вам всем, потому что наше сообщество - это каждый отдельный участник!

Я уверен, что здесь у нас только осознанные, умные и талантливые люди! Айтишники! Другие просто не могли попасть сюда 😀

Пользуясь случаем хочу напомнить, что у нас есть ещё один канал, где я выкладываю всякую фигню из жизни. Если интересно - залетай 👇

https://t.me/indigoram89_blog

ПС: про видос помню, скоро будет 🙏

Всем хороших выходных!
👍23🔥2👏1
Что выведется в консоль?

Ответь в комментах, не запуская код 😃
Как живется в США неайтишникам. Два года спустя.

https://habr.com/ru/post/666404
Фантастические уязвимости и где они обитают

Сегодня пропёрло на чтиво, так что вот ещё годнота по фронтенду и безопасности:

https://habr.com/ru/company/simbirsoft/blog/659847/
👍1
На днях понадобилось развернуть старый проект, написанный с использованием Laravel 7 и базы данных MySQL 5.7.

Первым делом я обновил Laravel до 9 версии, что кстати заняло менее часа с учетом того, что я делал каждое изменение, которое показывал GitHub.

Дальше решил перенести базу данных на PostgreSQL, потому что она по ощущениям работает быстрее и более популярна сегодня.

Смена движка базы данных оказалось новой задачей для меня.

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

Дальше начал гуглить и нашел PgLoader, созданный как раз для моей задачи.

Особых сложностей здесь не возникло - установил, запустил и всё получилось. Так что рекомендую.

К слову мне НЕ нужно было переносить сами данные, а только лишь восстановить всю структуру базы - таблицы, индексы, связи и тд. Но я думаю с данными тоже НЕ возникло бы особых проблем.

https://pgloader.io/

#tools #db #postgres #pg
👍14🔥5
Enum Style Guide

Размышления о том, как оформлять Enum в PHP.

Поддерживаю автора 👍

https://stitcher.io/blog/php-enum-style-guide

#php #enum
🔥3👏1
Media is too big
VIEW IN TELEGRAM
Прощай, мой друг…
😢2