• Как посчитать количество подряд идущих одинаковых записей SQL?

    i229194964
    @i229194964
    Веб разработчик
    -- Выбираем все столбцы из вашей таблицы и добавляем два новых столбца:
    -- NewGroup - показывает, начинается ли новая группа записей
    -- GroupCount - показывает количество подряд идущих групп для каждой записи
    SELECT
      Date,
      Check,
      Time,
      Product,
      Qty,
      Price,
      -- Если предыдущая запись имеет ту же дату и чек, что и текущая, то это не новая группа
      -- В противном случае, это новая группа
      CASE
        WHEN LAG(Date) OVER (ORDER BY Date, Time, Check) = Date AND LAG(Check) OVER (ORDER BY Date, Time, Check) = Check THEN 0
        ELSE 1
      END AS NewGroup,
      -- Используем функцию SUM с условием для подсчета количества подряд идущих групп
      SUM(CASE
        WHEN LAG(Date) OVER (ORDER BY Date, Time, Check) = Date AND LAG(Check) OVER (ORDER BY Date, Time, Check) = Check THEN 0
        ELSE 1
      END) OVER (ORDER BY Date, Time, Check) AS GroupCount
    FROM
      YourTable
    ORDER BY
      Date, Time, Check

    пример запроса для получения максимального числа подряд идущих записей для каждого дня
    -- Используем подзапрос с предыдущим запросом для получения максимального числа подряд идущих групп для каждой даты
    SELECT
      Date,
      MAX(GroupCount) AS MaxGroupCount
    FROM (
      SELECT
        Date,
        Check,
        Time,
        Product,
        Qty,
        Price,
        -- Аналогично предыдущему запросу, создаем столбец NewGroup и используем функцию SUM с условием для подсчета количества подряд идущих групп
        CASE
          WHEN LAG(Date) OVER (ORDER BY Date, Time, Check) = Date AND LAG(Check) OVER (ORDER BY Date, Time, Check) = Check THEN 0
          ELSE 1
        END AS NewGroup,
        SUM(CASE
          WHEN LAG(Date) OVER (ORDER BY Date, Time, Check) = Date AND LAG(Check) OVER (ORDER BY Date, Time, Check) = Check THEN 0
          ELSE 1
        END) OVER (ORDER BY Date, Time, Check) AS GroupCount
      FROM
        YourTable
    ) t
    -- Группируем по дате и выбираем максимальное значение GroupCount для каждой даты
    GROUP BY
      Date
    Ответ написан
  • Как получить термин для текущего кастом поста без таксономии?

    i229194964
    @i229194964
    Веб разработчик
    function get_custom_post_term() {
        global $wpdb;
        $post_id = get_the_ID(); // Получаем ID текущего поста
        $term = $wpdb->get_var( $wpdb->prepare(
            "SELECT t.name
            FROM {$wpdb->prefix}term_taxonomy AS tt
            INNER JOIN {$wpdb->prefix}term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
            INNER JOIN {$wpdb->prefix}terms AS t ON t.term_id = tt.term_id
            WHERE tt.taxonomy = 'curr_post_tax' AND tr.object_id = %d",
            $post_id
        ) );
        return $term;
    }

    Вы можете вызвать эту функцию в вашей сингл-странице и использовать результат для создания хлебных крошек
    $current_term = get_custom_post_term();
    echo '<div>Home>Catalog>Term>'.$current_term.'</div>';
    Ответ написан
    Комментировать
  • Есть ли альтернатива 1С-Битриксу?

    i229194964
    @i229194964
    Веб разработчик
    OpenCart, Magento, WooCommerce .
    Ответ написан
    Комментировать
  • Как проскроллить вниз чата, если есть изображения?

    i229194964
    @i229194964
    Веб разработчик
    const chat = document.getElementById('chat');
    
    // Создание нового наблюдателя за изменениями в chat
    const observer = new MutationObserver(() => {
      // Если chat.scrollHeight изменилось, прокрутите до нижнего края chat
      if (chat.scrollHeight !== chat.dataset.scrollHeight) {
        chat.scrollTo(0, chat.scrollHeight);
        chat.dataset.scrollHeight = chat.scrollHeight;
      }
    });
    
    // Настройка конфигурации наблюдателя
    const config = { attributes: true, childList: true, subtree: true };
    
    // Запуск наблюдателя за изменениями
    observer.observe(chat, config);
    Ответ написан
    Комментировать
  • Как сделать корректный переход на обычный скролл?

    i229194964
    @i229194964
    Веб разработчик
    Вот пример кода который вы можете использовать
    const swiper = new Swiper('.swiper-container', {
      // настройки Swiper
    });
    
    swiper.on('transitionEnd', function () {
      const activeSlide = swiper.slides[swiper.activeIndex];
      const section4 = activeSlide.querySelector('.section-4');
      if (section4) {
        section4.scrollIntoView({ behavior: 'smooth' });
      }
    });
    Ответ написан
  • Почему когда задаю эффект "fade" и параметр "loop" не переключаются слайды?

    i229194964
    @i229194964
    Веб разработчик
    Чтобы решить эту проблему, вы можете использовать опцию "autoplay" вместо "loop".
    const hero_slider = new Swiper('.hero-slider', {
        modules: [Navigation, EffectFade],
        effect: "fade",
        fadeEffect: {
            crossFade: true
        },
        autoplay: {
            delay: 5000, // время задержки между слайдами
            disableOnInteraction: false, // слайды будут продолжать автоматически переключаться при нажатии на кнопки навигации
        },
        navigation: {
            nextEl: '.khutorok-slider-button_next',
            prevEl: '.khutorok-slider-button_prev',
            disabledClass: "khutorok-slider-button_disabled",
        },
    });
    Ответ написан
  • AttributeError: 'Client' object has no attribute 'find' как исправить ошибку?

    i229194964
    @i229194964
    Веб разработчик
    Проблема может устаревший Api
    замените строку
    weather = await client.find(message.text)
    на
    weather = await client.get(message.text)
    Ответ написан
    Комментировать
  • Как передать данные из setup() в data() в компоненте Vue?

    i229194964
    @i229194964
    Веб разработчик
    можно воспользоваться вычисляемым свойством (computed property).
    <template>
      <div>{{ news }}</div>
    </template>
    
    <script>
    import { useStore } from 'pinia'
    
    export default {
      setup() {
        const userStore = useStore() // store Pinia
    
        // создание вычисляемого свойства для передачи данных из setup() в data()
        const newsData = computed(() => {
          return userStore.news
        })
    
        // возвращаемые значения
        return {
          newsData
        }
      },
      data() {
        return {
          news: []
        }
      },
      // наблюдатель изменения вычисляемого свойства
      watch: {
        newsData(val) {
          this.news = val
        }
      }
    }
    </script>
    Ответ написан
  • Как решить проблему с typescript в nuxt3?

    i229194964
    @i229194964
    Веб разработчик
    необходимо указать тип данных res.data, который должен соответствовать интерфейсу I_Home
    home.value = res.data as I_Home;
    <HomeIntro v-if="home.value && home.value.home_intro && home.value.home_intro.image"
               :image="home.value.home_intro.image" />
    Ответ написан
  • CSS свойство outline на андроиде работает как надо, а на айфоне - неправильно. Почему?

    i229194964
    @i229194964
    Веб разработчик
    Проблема может быть в том то что iphone использует safari. Которые имеют свой свойство отображение css свойств.
    Вы можете использовать CSS свойство -webkit-appearance, чтобы задать стандартный внешний вид элементов формы для Safari на iPhone.
    -webkit-appearance: none;
    border-radius: 90px;
    border: 4px solid var(--white);
    Ответ написан
    Комментировать
  • Почему phpMyAdmin игнорирует код из config.inc.php?

    i229194964
    @i229194964
    Веб разработчик
    попробуйте добавить следующую строку в начало файла config.inc.php.
    <?php
        error_reporting(E_ALL);
        ini_set('display_errors', TRUE);
        ini_set('display_startup_errors', TRUE);
    Ответ написан
  • Как найти несколько подмножеств одного надмножества в python?

    i229194964
    @i229194964
    Веб разработчик
    для этой задачи можно использовать алгоритм пересечения множеств .
    sets = [['/img0.jpg '],
            ['/img1.jpg'],
            ['/img10.jpg'],
            ['/img11.jpg', '/img9.jpg'],
            ['/img12.jpg', '/img15.jpg'],
            ['/img11.jpg', '/img13.jpg', '/img8.jpg', '/img9.jpg'],
            ['/img14.jpg'],
            ['/img15.jpg'],
            ['/img16.jpg'],
            ['/img14.jpg', '/img17.jpg'],
            ['/img18.jpg'],
            ['/img19.jpg', '/img22.jpg'],
            ['/img2.jpg'],
            ['/img19.jpg', '/img20.jpg', '/img21.jpg', '/img22.jpg'],
            ['/img19.jpg', '/img21.jpg', '/img22.jpg'],
            ['/img22.jpg'],
            ['/img23.jpg'],
            ['/img3.jpg'],
            ['/img3.jpg', '/img4.jpg'],
            ['/img0.jpg', '/img5.jpg'],
            ['/img6.jpg'],
            ['/img2.jpg', '/img7.jpg'],
            ['/img11.jpg', '/img8.jpg', '/img9.jpg'],
            ['/img9.jpg']]
    
    super_set = set(sets[0]) # берем первое подмножество
    
    # последовательно вычисляем пересечения супермножества с каждым из подмножеств
    for s in sets[1:]:
        super_set = super_set.intersection(set(s))
    
    # удаляем из супермножества все элементы, которые не принадлежат пересечению
    for s in sets:
        super_set.difference_update(set(s) - super_set)
    
    # оставшиеся элементы супермножества и будут искомым результатом
    result = sorted(list(super_set))
    print(result)
    Ответ написан
    Комментировать
  • Объясните, пожалуйста, как для Google Sheets сделать скрипт автоматического экспорта конкретного листа в PDF?

    i229194964
    @i229194964
    Веб разработчик
    Можно использовать следующий скрипт
    function exportSheetToPDF() {
      // Получаем активный Spreadsheet (гугл таблицу)
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      
      // Получаем лист по его имени
      var sheet = ss.getSheetByName('Имя листа');
      
      // Экспортируем лист в PDF
      var url = ss.getUrl();
      url = url.replace(/edit$/,'');
      var sheetId = sheet.getSheetId();
      var pdfName = sheet.getName() + ".pdf";
      var pdfUrl = url + 'export?exportFormat=pdf&format=pdf' +
          '&size=letter' +
          '&portrait=true' +
          '&fitw=true' +
          '&sheetnames=false&printtitle=false' +
          '&pagenumbers=false&gridlines=false' +
          '&fzr=false' +
          '&gid=' + sheetId;
      var options = {
        headers: {
          'Authorization': 'Bearer ' +  ScriptApp.getOAuthToken(),
        }
      }
      var response = UrlFetchApp.fetch(pdfUrl, options);
      var blob = response.getBlob().setName(pdfName);
      
      // Сохраняем PDF в Google Drive
      var folder = DriveApp.getFolderById('ID папки');
      folder.createFile(blob);
    }
    Ответ написан
    1 комментарий
  • Как разделить заказ на две посылки в woocommerce?

    i229194964
    @i229194964
    Веб разработчик
    Для разделения заказа на две посылки с разными периодами отправки и расчета стоимости доставки.
    Используйте плагин Advanced Shipment Tracking for WooCommerce.
    Ответ написан
    Комментировать
  • Как выводить все данные из таблицы на python aiogram?

    i229194964
    @i229194964
    Веб разработчик
    вот код для того чтобы получить все данные из таблицы promocodes.
    import sqlite3
    from aiogram import Bot, Dispatcher, types
    from aiogram.types import ParseMode
    from aiogram.utils import markdown
    
    # подключение к базе данных
    conn = sqlite3.connect('promocodes.db')
    cursor = conn.cursor()
    
    # создание бота и диспетчера
    bot = Bot(token='TOKEN')
    dp = Dispatcher(bot)
    
    # обработка команды /promo
    @dp.message_handler(commands=['promo'])
    async def send_promocodes(message: types.Message):
        # получение данных из таблицы
        cursor.execute('SELECT username, how_promo FROM promocodes')
        data = cursor.fetchall()
    
        # форматирование данных в виде строки
        text = ''
        for row in data:
            text += f"{row[0]} - {row[1]}\n"
    
        # отправка данных в чат
        await message.answer(text, parse_mode=ParseMode.MARKDOWN)
    
    # запуск бота
    if __name__ == '__main__':
        executor.start_polling(dp, skip_updates=True)
    Ответ написан
  • Почему не отправляется текст из selenium в телеграм бот aiogram python?

    i229194964
    @i229194964
    Веб разработчик
    Проблема заключается в том, что текст, который вы пытаетесь отправить боту, может содержать невидимые символы, которые не отображаются в выводе.
    Из-за этого текст может быть не видимым для бота, и сообщение может показаться пустым.
    import re
    
    # ...
    
    texts = driver.find_elements(By.TAG_NAME, 'p')
    for t in texts:
        # Очистка текста от невидимых символов
        cleaned_text = re.sub(r'[^\x20-\x7E]', '', t.text)
        await bot.send_message(message.chat.id, text=cleaned_text)
    Ответ написан
    Комментировать
  • Можно ли ограничить прокрутку страницы до определенного блока?

    i229194964
    @i229194964
    Веб разработчик
    Да можно
    window.addEventListener('scroll', function() {
      var myBlock = document.getElementById('myBlock');
      var scrollPosition = window.scrollY + window.innerHeight;
      var blockPosition = myBlock.offsetTop + myBlock.offsetHeight;
      
      if (scrollPosition >= blockPosition) {
        window.scrollTo(0, blockPosition - window.innerHeight);
      }
    });
    Ответ написан
    1 комментарий
  • Как победить ошибку curl?

    i229194964
    @i229194964
    Веб разработчик
    Ошибка указывает на то что соединение по протоколу SOCKS4 не может быть установлено с вашим прокси-сервером.
    Попробуйтеcurl --socks5 <адрес_прокси>:<порт> <адрес_сайта>
    Ответ написан
  • Почему в LIKE возвращает пустой результат?

    i229194964
    @i229194964
    Веб разработчик
    Данная проблема чаще всего возникает различия строк сравнения между PostgreSQL. Версия 15 может использовать другие настройки по умолчанию.
    В PostgreSQL сравнение строк зависит от настройки collation.
    Попробуйте изменить настройки collation для PostgreSQL 14, чтобы они соответствовали настройкам версии 15.
    return User::where("name", "LIKE", "%{$query}%")->collate('utf8mb4_general_ci')->get();
    Ответ написан
    2 комментария
  • Как распаковать app.asar файл если появляется ошибка errno: -2?

    i229194964
    @i229194964
    Веб разработчик
    это ошибка возникает когда указанный путь или каталог не может быть найден.
    Может быть вы выполняете команду из не правильного каталога где нету файла app.asar.
    Перейдите в каталог где нах-ся файл app.asar.
    И выполните команду
    asar extract app.asar test
    Убедитесь то что у вас установлена @electron/asar
    Или установите его
    npm install -g @electron/asar
    Ответ написан