• Не могу удалить элемент input из списка - всегда удаляется последний?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Так происходит потому, что на какую бы из кнопок вы не нажали, происходит вызов метода delete1 с кодом this.todos.splice(0, 1);
    То есть, он не знает какая именно кнопка нажата, но знает, что надо выполнить splice(0, 1).

    Чтобы изменить это поведение, следует в метод delete1 передать индекс элемента, который требуется удалить:
    <button v-on:click="delete1(i)">
    delete1: function(i){
        	this.todos.splice(0, 1); // Измените splice(0, 1) таким образом, чтобы из массива удалялся элемент с индексом i
        }
    Ответ написан
  • Как сосчитать текстовую ячейку и чек-бокс как число?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    В общем случае, IF. Но тут еще и от задачи зависит. Например, SUMIF, если надо посчитать количество отметок.
    =(A1+B1-C1+if(ISBLANK(D1);0;1))*500
    Ответ написан
  • Использование методов со своими свойствами, внутри методов других классов со своими свойствами?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Вы затрудняетесь в выборе между шаблонами 'внедрение зависимостей' и 'инверсия зависимостей'. Тут нет однозначно верного решения, поскольку для этого нужно знать каким образом будет (и будет ли) расширяться поведение ваших классов в будущем.
    Исходя из описанного, я думаю, что оба способа будут иметь одинаковый результат. А в будущем вы легко сможете изменить выбранную архитектуру, если возникнет такая необходимость.
    То есть, речь о том, что проблемы можно решать по мере их поступления.
    Ответ написан
    Комментировать
  • Как решить проблему с Yandex Safe Browsing?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    теряется трафик, ведь каждый 3 пользуется Яндекс браузером

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

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Добавьте provide и inject в родителя и потомка
    // parent component
    provide('isAllUploading', isAllUploading)
    
    // child component
    const isAllUploading = inject('isAllUploading')
    Ответ написан
    Комментировать
  • Как сделать редирект через htaccess для определённого IP?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    RewriteEngine On
    
    # Проверка, что IP-адрес совпадает
    RewriteCond %{REMOTE_ADDR} ^ВАШ_IP_АДРЕС$
    
    # Правило редиректа на конкретную страницу
    RewriteRule ^.*$ /путь_к_странице [R=301,L]
    Ответ написан
  • Какой запрос сделать к базе данных?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    SELECT
        subquery.opponent_id,
        subquery.last_message_datetime,
        m.message AS last_message
    FROM (
        SELECT
            CASE
                WHEN m.from_user_id = 4 THEN m.to_user_id
                ELSE m.from_user_id
            END AS opponent_id,
            MAX(m.datetime) AS last_message_datetime
        FROM messages AS m
        WHERE m.from_user_id = 4 OR m.to_user_id = 4
        GROUP BY opponent_id
    ) AS subquery
    LEFT JOIN messages AS m ON (
        (m.from_user_id = 4 AND m.to_user_id = subquery.opponent_id)
        OR
        (m.to_user_id = 4 AND m.from_user_id = subquery.opponent_id)
    ) AND m.datetime = subquery.last_message_datetime
    Ответ написан
  • Как из динамической формы Vue передать в Laravel данные в определенном порядке?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    store() {
          // Создайте новый объект для передачи на сервер
          const formattedTranslations = {};
    
          // Пройдитесь по всем локалям и создайте нужную структуру данных
          for (const locale of this.locales) {
            formattedTranslations[locale] = {
              title: this.translations.title[locale],
              desc: this.translations.desc[locale],
            };
          }
          console.log(formattedTranslations);
          // Отправьте данные на сервер
          this.$inertia.post(route('post.store'), { translations: formattedTranslations });
        }
    Ответ написан
    1 комментарий
  • Inject/provide как сделать это красиво?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Красота не является свойством объекта. Она существует в сознании реципиента.
    Попробуйте избрать иные критерии. Например, работоспособность, масштабируемость, читаемость.
    Inject/provide вкупе с compositionApi - очень красивый, на мой взгляд, инструмент.
    Главная беда, я думаю, в том, что достаточно непросто своевременно прогнозировать иерархию компонентов, лайаутов и роутов. Отсюда и вознкиают всякие страдашки с шинами и сторами даже в задачах, которые порой можно решить и без них.
    Ответ написан
    Комментировать
  • Как правильно спроектировать БД для чатов?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Проблемы, с которыми я не могу разобраться:

    У вас не возникало никаких проблем.
    Вы занимаетесь преждевременной оптимизацией.
    Ответ написан
  • Как правильно рендерить контент?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Если это учебное задание, то оно из двух разных не связанных тем.
    Куда прописывать @click?
    Тем элементам меню, от которых вы хотите реакции от клика.

    При нажатии на определённый элемент меню, должно отображаться определённый контент
    В простом случае достаточно, чтобы в коде были все элементы, возможные для отображения. К каждому из них добавляйте условие при котором он должен отображаться.
    Например:

    spoiler
    <template>
    <MenuSection @click="selectedEl = 1"></MenuSection>
    <MenuSection @click="selectedEl = 2"></MenuSection>
    <div v-if="selectedEl  === 1"></div>
    <div v-if="selectedEl  === 2"></div>
    </template>
    <script setup>
    const selectedEl  = ref(0)
    </script>

    Нужно ли дополнительное свойство active? куда прописывать и как менять его?

    Это не свойство. Это класс, который можно применить по условию.
    Напрмер:
    spoiler
    :class="selectedEl !== 1 ? 'extraClass' : 'extraClass' + ' active'"
    <style>
    .active {
    color: red;
    }
    </style>
    Ответ написан
    Комментировать
  • Как передать пропсы через роутинг?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Во vue3 вы можете применить provide-inject.
    В родителе:
    const selected = ref({содержимое объекта})
    provide('selected', selected)

    В детях, внуках, правнуках:
    const selected = inject('selected')
    Ответ написан
    Комментировать
  • Почему максимальный битрейт меньше общего битрейта в MediaInfo?

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

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Главная сложность в том, что для каждого исходника требуются индивидуальные настройки.
    Амплитуда сигнала это одно, а воспринимаемая громкость - совсем другое.
    В индустрии это называют RMC, не понимая порой что это значит.
    Многие понимают RMS как воспринимаемую громкость в то время как это всего лишь среднеквадратичное значение уровня сигнала.
    Ухо (восприятие) работает несколько иначе. Как именно хорошо описано в учебнике Алдошиной
    А порой даже в рамках одного трека параметры требуется автоматизировать.
    В этом случае повезло. Получилось без автоматизации, но это просто случайность.
    Результат

    Я использовал плагины waves:
    Настройки
    Компрессор:
    64c6ff0ce3238046300781.png
    Лимитер:
    64c6ffb7d564f557449810.png
    Ответ написан
    Комментировать
  • Как оптимизировать таблицу с JSON строкой в mysql?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Если вы уверены в том, что в обозримом будущем вам не понадобится поиск по другим полям или вы точно не захотите сделать join с их участием, то json будет работать быстрее. И сохранять его проще.
    А если потом захотите, то придётся создать дополнительные таблицы, и сохранить как нормализованные данные.
    Но эта задача не сложна и всего лишь потенциальна (может и не понадобится).
    Ответ написан
    6 комментариев
  • Определение ассциативности массива, php

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    В php 8.1 появилась встроенная функция array_is_list()
    Примеры

    array_is_list([]); // true
    array_is_list(['apple', 2, 3]); // true
    array_is_list([0 => 'apple', 'orange']); // true
    
    // Массив начинается не с 0
    array_is_list([1 => 'apple', 'orange']); // false
    
    // Ключи массива не по порядку
    array_is_list([1 => 'apple', 0 => 'orange']); // false
    
    // Ключи массива не являются целыми числами
    array_is_list([0 => 'apple', 'foo' => 'bar']); // false
    
    // Непоследовательные ключи
    array_is_list([0 => 'apple', 2 => 'bar']); // false

    Ответ написан
    Комментировать
  • Как создать API?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Если вы хотите понять принципы API, то гуглите "rest api".
    Но ваше желание его создать весьма преждевременно.
    API не цель.
    API - средство.
    Когда он будет вам действительно необходим, вы уже будете знать что делать.
    Ответ написан
  • Не работает INSERT INTO, почему?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Если insert into вызывает ошибку из-за дубликата, это можно решить разными способами.
    1. Перед вставкой выполнить запрос, проверяющий, есть ли такая запись.
    2. Использовать insert ignore into. Это приведёт к тому, что при наличии дубликата запись не будет добавлена, но при этом выполнение скрипта продолжится.
    3. Использовать replace into. В этом случае старая запись будет заменена новой. Но если у какой-то другой таблицы создана связь с этой посредством foreign key с каскадной реакцией, это приведёт к удалению всех ссылающихся на этот ключ записей.
    4. Использовать on duplicate key update:
    insert into films (img, img_vertical, trayler...) values (:img, :img_vertical, :trayler...)
      on duplicate key update  
    set img = :imgUpd , img_vertical = :img_verticalUpd, trayler = :trayler итд  ...;

    прочее

    Часть ответа пришлось удалить, поскольку за педагогические услуги мне не платят.
    Ответ написан
  • Как сделать в MySQL изменение поля строки через время?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Вообще это очень нерационально гонять mysql почем зря каждую секунду.
    Более целесообразно при выборке вместо поля suc проверять разницу текущего времени с полем date.
    например
    select * from tableName where `date` > now() - interval 10 day

    А если suc принципиально нужен, то:
    select id, login, `date`, (`date` > now() - interval 10 day) as suc from tableName
    Ответ написан
    Комментировать
  • Как сделать редирект на ссылку в новом окне в php?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    window.open(<?php echo $r['Id']; ?>, '_blank')

    Но лучше стремиться к тому, чтобы js и php жили порознь:
    <input type="hidden" id="url" value="<?php echo $r['Id']; ?>"/>
    window.open($('#url').value, '_blank')
    Ответ написан
    4 комментария