Задать вопрос
  • Как назвать классы заказа для паттерна "Состояние"?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    Попробуйте вместо попыток натянуть сову на глобус, а задачу на паттерн, действовать от простого. Пусть заказ бывает бесплатным. У заказа есть флаг "является ли он бесплатным". Мы даже можем воспользоваться возможностями языка и прикрутить какой-то геттер для надежности, чтобы флаг менялся в зависимости от устанавливаемой цены (в примерах условно JS):
    class Order {
        get isFree() { return this.price === 0; }
    }

    Мы можем прям сюда присобачить и оплату, но допустим мы не хотим, чтобы заказ что-то знал об урлах для оплаты. Ему это не надо. Заказ - это список товаров, какой-то статус завершенности, адрес доставки и.т.д. Он про данные, не про процессы. Путь будет обработчик, который может провести заказ как кассир в пятерочке:
    class Order { /* --- */ }
    
    class Сashier {
        proceed(order) {
            const url = order.isFree ? "free url" : "paid url";
            // ...редиректим, проводим оплату, предлагаем пакетик и кофе по акции
        }
    }

    Допустим у нас есть много платежных систем, там все сложно. Инфраструктура - не кассира дело. Ок, дадим ему доступ к адаптеру, который скрывает все за собой и проводит непосредственно оплату.
    class Order { /* --- */ }
    
    class PaymentHandler {
        charge(price) {
            // ...редиректим куда надо, в зависимости от цены и привязанной карты
        }
    }
    
    class Cashier {
        proceed(order) {
            const isSuccess = PaymentHandler.charge(order.price);
            
            if (isSuccess) {
                // заказ прошел
            } else {
                throw new Error('ГААААААЛЯЯЯ ОТМЕЕЕЕНА!!!!');
            }
        }
    }

    Получается четкое разделение ролей. Заказ - про данные, кассир - про процесс, обработчик оплаты - про муть с платежными системами. Возможно, что даже флаг isFree не особо нужен у заказа. И, возможно, что к паттерну "состояние" мы не придем, потому что он в первую очередь решает проблему бесконечного количества комбинаций флагов, но если нет флагов, то нет и проблемы. И.т.д. Развивайте конструкции по мере их естественного появления. Тогда проблем с именованием будет на порядок меньше. Потому что каждое слово в коде отражает какую-то заранее сформированную сущность в алгоритмах в голове.
    Ответ написан
    2 комментария
  • Как синхронизировать проекты между компьютерами?

    @rPman
    syncting или rsync (если подойдет ручное управление) и git (не смешивая их).

    syncting хорошо работает с большими данными и любыми схемами передачи данных (вплоть до источник -> смартфон пользователя offline, смартфон -> целевая машина, и так же обратно, т.е. без интернета)

    git - дисциплинирует ставить 'точки в правильных местах', т.е. вы работаете не абы как а до commit-а, даже если вы один работаете, это дает вам историю изменений, которая может и нужна очень редко, но метко.
    Ответ написан
    Комментировать
  • Какие последствия за использования Cloudflare сейчас в РФ?

    @Attacks
    Прочитал, что сейчас могут быть какие-то последствия от Роскомнадзор.

    Прошу прислать ссылки, где прочитал это, т. к. сам столкнулся с проблемами (подробнее ниже).

    Из выдачи в Яндексе ты не вылетишь, однако, как с этим столкнулся я сам, аж на двух своих доменах, и еще один юзер хабра (ознакомься, там тоже есть полезные ответы), сайт может отлететь во внереестровую блокировку ТСПУ, если айпи WAF клауда, который тебе присвоится, окажется в реестре заблокированных ресурсов РКН.

    Я им писал по этому поводу и вот какой ответ я получил от РКН на своё обращение:
    Здравствуйте,
    Сетевые адреса 172.67.128.164, 104.21.2.29, 172.67.217.176, 104.21.70.11 включены в Единый реестр в соответствии со ст. 15.1 Федерального закона от 27.07.2012 № 149-ФЗ «Об информации, информационных технологиях и о защите информации».
    В рамках ведения единого реестра доменных имен, указателей страниц сайтов в сети Интернет и сетевых адресов, позволяющих идентифицировать сайты в сети Интернет, содержащие информацию, распространение которой в Российской Федерации запрещено (далее - единый реестр), Роскомнадзор после признания информации запрещенной, направляет уведомление провайдеру хостинга, обслуживающему доменное имя распространителя этой информации. Провайдер хостинга, в свою очередь, уведомляет владельца доменного имени и любой из них: владелец сайта или провайдер хостинга, удаляет запрещенную информацию.
    В случае непринятия мер Роскомнадзор включает доменное имя, указатель страницы сайта и сетевой адрес в единый реестр, а оператор связи обязан ограничить доступ к запрещенной информации.
    Ограничение доступа к запрещенной информации по сетевому адресу является крайней мерой, предпринимаемой оператором связи в случае технической невозможности ограничения доступа по доменному имени или указателю страницы сайта.
    В случаях использования ограничения доступа по сетевому адресу, ограничению могут быть подвергнуты и другие веб-ресурсы, расположенные на этом адресе.

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

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

    За дополнительной информацией рекомендуем Вам обратиться к провайдеру хостинга и (или) оператору связи.


    То есть говорят, что блокировка от РКН это уже крайняя мера, и что прежде чем сайт будет внесен в их реестр, они пошлют обращение в регистратор и/или хостинг (я пользуюсь РЕГ.РУ, к слову), дабы уже они послали мне письмо, что у меня содержится что-то запрещенное на сайте, и я обязан это удалить.
    Спойлер: мне, конечно же, никто ничего не посылал. Мои домены просто перестали работать в РФ, с интервалом блокировок в несколько дней.

    А ещё, можно сказать, они ткнули на то, что мне следовало использовать отечественных хостинг-провайдеров, которые добросовестно соблюдают российское законодательство по блокировке доступа к ресурсам, запрещенным в РФ, — что я и делаю, у меня из неотечественного только клаудфлейр. ¯\_(ツ)_/¯

    На текущий момент сервисы мониторинга доступности ping-admin.com и globalcheck.net выдают печальные результаты, check-host.net со своих нод в РФ показывает "Broken pipe", а сам я при попытке зайти на сайт с этих доменов сталкиваюсь просто с тем, что страница не грузит, а конкретнее - грузит бесконечно. Тем временем я перескочил с кф на AEZA и написал еще одно обращение в РКН с просьбой рассмотреть проблему и снять внереестровую блокировку, пока что тишина, и домены продолжают не работать в РФ. В случае чего, дополню.
    Ответ написан
    5 комментариев
  • Как называют "сервисный сбор" в корзине?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Упаковка/сборка заказа, можно даже сделать ее бесплатной от какой-то суммы.
    Ответ написан
    1 комментарий
  • Как загрузить патч другого разработчика?

    yesbro
    @yesbro
    Думаю, помогаю думать
    Есть несколько вариантов.

    1) Сделать свой форк, внести туда эти изменения. Дальше использовать его подключая либу через гитхаб или сделать свой пакет через packegist.

    2) Использовать https://github.com/khanhvu14/rating/tree/patch-1 подключая через гитхаб с указанием определенной ветки.

    https://stackoverflow.com/questions/33525885/compo...

    Код вот такой. Обязательно надо указать что `minimum-stability` теперь `dev`
    "repositories": [
        {
          "type": "git",
          "url": "https://github.com/khanhvu14/rating.git"
        }
      ],
      "minimum-stability": "dev",
      "require": {
        "rennokki/rating": "dev-patch-1"
      }


    Тут мы даем инструкцию компоузеру, что для пакета rennokki/rating надо использовать ветку patch-1, а найти ее мы можем в репозитории https://github.com/khanhvu14/rating.git. Что бы это все сработало обязательно надо ключу minimum-stability задать значение dev.
    Ответ написан
    5 комментариев
  • Как разделить заказ в маркетплейсе?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    Мне нужно разделить заказ по вендорам.
    Разделите логически, а не физически, используя составной ключ: код заказа, код производителя.
    Ответ написан
    1 комментарий
  • Как свойства объекта сделать массивами?

    Seasle
    @Seasle Куратор тега JavaScript
    Object.fromEntries(Object.entries(...).map(([key, value]) => [key, [value]]));
    Ответ написан
    3 комментария
  • Как получить доступ к свойству?

    @ForSureN1
    frontend dev
    Попробуй так
    errors[`fees.${index}.fee`]
    Ответ написан
    Комментировать
  • Почему не переключается php на новую версию на сервере?

    Adler_lug
    @Adler_lug
    Я может что-то не понял, но какое отношение имеет выполняемый в каталоге сайта php -v к тому, что использует nginx?
    phpinfo() в браузере какую версию показывает?
    Ответ написан
    6 комментариев
  • Как сделать так, чтобы длинный текст не выдавлилвал цену из блока?

    Fragster
    @Fragster
    помогло? отметь решением!
    https://play.tailwindcss.com/gHtpfh8F2Q но эти бездумные миллион вложенных флексов смешанных со space-x все равно сжечь
    Ответ написан
    1 комментарий
  • Очищать корзину после оплаты или нет?

    Adamos
    @Adamos
    Если хочется хранить корзину в БД - так вам ее все равно хранить после оформления заказа.
    Сделайте таблицу, где большинство полей - NULL до момента оформления заказа (цены и проч. для отображения берется с текущих карточек). Выборка текущей корзины - по order_id = NULL. Заказ оформлен - текущая корзина опустела, товары естественным порядком перекочевали в заказ.
    Ответ написан
    9 комментариев
  • Как отцентрировать по вертикали?

    @Speakermen
    Так?
    .parent{
      position: relative;
    }
    .child{
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
    }
    Ответ написан
    1 комментарий
  • Почему картинка сжимается?

    Get-Web
    @Get-Web Куратор тега CSS
    Front-End Developer
    Потому что картинка в вашем случае это флекс элемент, точнее даже её обертка.
    Добавьте к обертке shrink-0
    Ответ написан
    Комментировать
  • Как запустить computed в VUE3?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Ключевое слово в качестве имени переменной - что за бред?
    Как достучаться до параметров из script setup - читаем документацию.
    У вычисляемого свойства нет сеттера - так пусть будет функцией, объект не нужен.

    Исправляем:

    const props = defineProps({
      showBgBlue: {
        type: Boolean,
        default: true,
      },
    });
    
    const mainClass = computed(() => props.showBgBlue ? 'bg-blueGray-50 py-12' : 'bg-white');
    Ответ написан
    5 комментариев
  • IT компании + судимость?

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

    2. Когда погасите судимость устройтесь на работу(Примут там где нет СБ). Средним классом вы станете однозначно.

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

    Так что смелее
    Ответ написан
    Комментировать
  • Как засетать свойство в такой конструкции?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Используй стрелочную функцию вместо обычной и почитай как работает this в javascript.
    Ответ написан
    2 комментария
  • Писать ли Unit-тесты до готовности MVP?

    @jazzus
    Дело не только в поддержке кода. С тестами, если писать их до фичи, имхо самая продуктивная и быстрая разработка.
    Во-первых это детальное тз. А любое тз ускоряет процесс.
    Во-вторых не нужно шлепать браузером при кажом чихе. Заполнять формы руками и т.д. Плюс если несколько ролей доступа или связанные процессы, то руками проверять геморой.
    В третьих поддерживает код в дальнейшем, незаменим при рефакторинге и является отличной документацией. Нужно вспомнить процесс и какая логика - печатаешь тест на принтере и вспоминаешь под кофеек. Короче рекомендую.
    Ответ написан
    2 комментария
  • Как покрасить разные элементы в dropdown в разные цвета?

    ktim8168
    @ktim8168
    Frontend Developer
    .dropdown-item:hover {
      background-color: blue;
      color: white;
    }
    
    .dropdown-item:hover .badge {
      background-color: white;
      color: blue;
    }
    Ответ написан
    Комментировать
  • Как извлечь дату из ячейки?

    datka
    @datka
    UPD
    spoiler
    5f30f6be6b439006308689.png5f30f6c38cf1f431875942.png5f30f6c81844d068087216.png5f30f6cca8a44906658550.png5f30f6d36cfce928420150.png5f30f6d87a60a680394680.png

    spoiler
    old
    5f30d88e8dceb990357787.png
    5f30d897aa2a4132546244.png
    5f30d89e88b0a699593123.png
    Каждый не нужный столбик выбираете и жмете на на Do not import column
    5f30d8a508cd1094509492.png
    Ответ написан
    4 комментария