Задать вопрос
  • Как сделать «заморозку» и «разморозку» интерфейса?

    @Sozdavan
    Похоже, проблема в том, что строки disable_all_buttons() и btnGo.configure(text = self.folder_source + ' >> ' + self.folder_target) выполняются до начала for цикла, а enable_all_buttons() строки btnGo.configure(text='Let's go!') и выполняются после завершения for цикла.

    Чтобы исправить это, вы можете использовать update() метод Tk класса tkinter для обновления графического интерфейса после выполнения строк disable_all_buttons() и btnGo.configure(text = self.folder_source + ' >> ' + self.folder_target) и до forзапуска цикла. Затем вы можете update() снова использовать этот метод после завершения for цикла и до выполнения строк и enable_all_buttons().btnGo.configure(text='Let's go!')

    Вот пример того, как вы можете это сделать:

    def go_copy(self):
        self.disable_all_buttons()
        self.btnGo.configure(text = self.folder_source + ' >> ' + self.folder_target)
        self.update()
    
        for path, directories, files in sorted(os.walk(self.folder_source)):
            for file in sorted(files):
                if file.endswith('.mp3'):
                    path_source = os.path.join(path, file)
                    d = os.path.basename(self.folder_source)
                    f = os.path.relpath(path_source, self.folder_source)
                    path_target = os.path.join(self.folder_target, d, f)
                    os.makedirs(os.path.dirname(path_target), exist_ok=True)
                    shutil.copyfile(path_source, path_target)
        self.update()
        self.btnGo.configure(text='Let's go!')
        self.enable_all_buttons()


    Это должно сделать кнопки отключенными во время процесса копирования и снова включить их, когда процесс будет завершен.
    Ответ написан
    1 комментарий
  • Как стилизовать стрелочки на ‹input type=“number”›?

    @Sozdavan
    Вы можете использовать appearanceсвойство CSS, чтобы изменить внешний вид стрелок на inputэлементе с typeчислом. Следующий CSS должен изменить цвет фона стрелок на прозрачный:

    input[type="number"]::-webkit-inner-spin-button, 
    input[type="number"]::-webkit-outer-spin-button {
        -webkit-appearance: none;
        margin: 0;
    }


    Обратите внимание, что это будет работать только для браузеров webkit (Chrome и Safari), и вам может потребоваться использовать префиксы для других браузеров. Кроме того, вы можете использовать background-color: transparentвместо того -webkit-appearance: none;, чтобы изменить цвет фона на прозрачный.
    Ответ написан
    Комментировать
  • Как дописать скрипт на скрытие элементов?

    @Sozdavan
    Один из способов добиться такого поведения — добавить проверку количества видимых элементов перед вызовом функции slideToggle. Если количество видимых элементов равно общему количеству элементов, вы можете использовать функцию slideToggle с другим аргументом, чтобы скрыть элементы вместо их отображения. Вот пример того, как вы можете это сделать:

    $('.more-functions').click(function(){
      var hiddenItems = $('.functions__item:hidden');
      if(hiddenItems.length > 0) {
        hiddenItems.slice(0,5).slideToggle('slow');
      } else {
        $('.functions__item:visible').slice(-5).slideToggle('slow');
      }
      //... rest of the code
    });


    Это проверит, есть ли какие-либо скрытые элементы, и если да, то отобразятся следующие 5, в противном случае будут скрыты последние 5 видимых элементов
    Ответ написан
    Комментировать
  • Как вызвать функцию которые находится внутри функции замыкания на js?

    @Sozdavan
    В JavaScript функция замыкания — это функция, которая имеет доступ к переменным в своей родительской области видимости даже после возврата родительской функции. Чтобы вызвать функцию внутри функции замыкания, вам нужно сначала вернуть внутреннюю функцию из внешней функции замыкания, а затем вызвать ее, вызвав возвращенную функцию. Вот пример:

    function outerFunction() {
      let x = "Hello";
    
      return function innerFunction() {
        console.log(x);
      }
    }
    
    let myFunction = outerFunction();
    myFunction(); // Output: "Hello"


    В этом примере outerFunction это функция закрытия, которая возвращает innerFunction. Переменная x доступна innerFunction даже после outerFunction возврата. Чтобы вызвать innerFunction, мы сначала присваиваем его переменной myFunction, вызывая outerFunction(), а затем вызываем myFunction(), что выводит «Hello» на консоль.
    Ответ написан
    3 комментария
  • Почему после закрытия окна magnificPopup блокируется весь js на странице?

    @Sozdavan
    Эта проблема может быть вызвана тем, как плагин Magnific Popup обрабатывает удаление модального окна со страницы. Плагин может удалять элементы или прослушиватели событий, которые необходимы для правильной работы другого кода JavaScript на странице. Одним из возможных решений может быть использование функции обратного вызова afterClose, предоставляемой плагином, для повторной инициализации любого необходимого кода JavaScript после закрытия модального окна. Эта функция обратного вызова вызывается после закрытия модального окна, позволяя вам запустить любой необходимый код JavaScript для восстановления функциональности вашей страницы. Другим решением может быть использование опции обратных вызовов для повторной инициализации прослушивателей событий после закрытия модального окна

    $(document).ready(function() {
        $('a.freply').magnificPopup({
            type: 'ajax',
            showCloseBtn: true,
            removalDelay: 300,
            closeBtnInside:true,
            callbacks: {
                close: function() {
                    //повторно инициализируйте свой код javascript здесь
                }
            }
        });
    });


    Также возможно, что проблема заключается в других частях вашего кода, которые вы здесь не указали, и потребуется отладить всю кодовую базу
    Ответ написан
    Комментировать
  • Как перезапускать nextjs, который подвязан к apache для отображения изменений?

    @Sozdavan
    Чтобы перезапустить приложение Next.js, привязанное к Apache, вам потребуется перезапустить сервер Apache. Обычно это можно сделать, выполнив команду sudo service apache2 restart в командной строке. Если вы вносите изменения в приложение Next.js и хотите, чтобы эти изменения отражались на веб-сайте, вам также потребуется пересобрать приложение с помощью команды npm run build или yarn build, в зависимости от того, какой менеджер пакетов вы используете. И тогда вы можете перезапустить апач.
    Ответ написан
  • Как лучше сделать transparent proxy?

    @Sozdavan
    Лучший способ настроить прозрачный прокси-сервер на второй машине через 10.37.129.30:1085 — это настроить программное обеспечение прозрачного прокси, такое как Squid, на второй машине и настроить его для пересылки трафика на прокси-сервер Socks5 на 10.37.129.30. :1085. Кроме того, вам потребуется настроить IP-переадресацию и настроить правила iptables на второй машине для перенаправления трафика на прозрачный прокси.
    Ответ написан
    1 комментарий
  • Как правильно сверстать отзывчиво шапку с разными отступами по краям страницы?

    @Sozdavan
    Чтобы создать адаптивный заголовок с разными отступами от краев страницы, вы можете использовать CSS для установки ширины и полей элемента заголовка. Вот пример того, как вы можете это сделать:

    <header>
      <h1>My website</h1>
    </header>


    header {
      width: 90%;
      margin: 0 5%;
    }


    В этом примере элемент заголовка имеет ширину 90% от ширины области просмотра и поля 0 сверху и снизу и 5% слева и справа. Это заставит заголовок занимать 90% ширины экрана с отступом в 5% с каждой стороны. Вы также можете использовать медиа-запросы для изменения стиля заголовка при разных размерах экрана, например:

    @media (min-width: 768px) {
      header {
        width: 80%;
        margin: 0 10%;
      }
    }


    Это применит новые стили, когда ширина экрана будет не менее 768 пикселей. Вы также можете использовать CSS Grid или Flexbox, чтобы сделать адаптивный заголовок с разными полями

    P.S. Если учитесь - главное пытаться и делать. Упорство и труд - всё перетрут. А дизайн на вид норм
    Ответ написан
    4 комментария
  • Как заменить стрелки слайдера на свои vue3 swiper@8.4.4?

    @Sozdavan
    Чтобы заменить стрелки в Vue3 Swiper@8.4.4, вам нужно будет использовать функциональность слота, предоставляемую библиотекой. Во-первых, вам нужно будет создать пользовательский компонент, который включает нужные вам изображения стрелок. Затем вам нужно будет использовать слоты «предыдущая кнопка» и «следующая кнопка» в компоненте swiper, чтобы заменить стрелки по умолчанию вашим пользовательским компонентом. Вот пример того, как это сделать:

    <template>
      <swiper :options="swiperOptions">
        <swiper-slide v-for="(item, index) in items" :key="index">
          {{ item }}
        </swiper-slide>
        <template v-slot:prev-button>
          <CustomArrow type="prev"/>
        </template>
        <template v-slot:next-button>
          <CustomArrow type="next"/>
        </template>
      </swiper>
    </template>
    
    <script>
    import Swiper from 'swiper';
    import CustomArrow from './CustomArrow.vue';
    
    export default {
      components: {
        Swiper,
        CustomArrow
      },
      data() {
        return {
          swiperOptions: {
            // swiper options here
          },
          items: [
            // items here
          ]
        }
      }
    }
    </script>


    Здесь CustomArrow — это пользовательский компонент Vue, который имеет два реквизита, тип и изображение, которые используются для отображения следующего и предыдущего изображений стрелок соответственно
    Ответ написан
    2 комментария
  • Как задать размер листа при отправке на печать с помошью PHP или JS?

    @Sozdavan
    В PHP вы можете использовать библиотеку TCPDF, чтобы установить размер страницы и создать файл PDF с нужными размерами. Вот пример того, как установить размер страницы 6x4 см:
    require_once('tcpdf.php');
    
    $pdf = new TCPDF('P', 'cm', array(6, 4), true, 'UTF-8', false);
    
    // ... your code to add content to the PDF ...
    
    $pdf->Output('example.pdf', 'I');


    В JavaScript вы можете использовать библиотеку jsPDF для создания и сохранения файла PDF с нужными размерами. Вот пример того, как установить размер страницы 6x4 см:

    var doc = new jsPDF('p', 'cm', [6, 4]);
    
    // ... your code to add content to the PDF ...
    
    doc.save('example.pdf');


    Обе эти библиотеки также поддерживают другие функции для добавления текста, изображений и другого содержимого в документ PDF
    Ответ написан
    6 комментариев
  • Можно ли написать JS-регулярку, которая матчит строку только если в строке четное количество вхождений какого-либо символа?

    @Sozdavan
    Невозможно написать регулярное выражение, которое будет возвращать истину только в том случае, если в строке есть четное количество любых символов, используя только регулярные выражения, потому что регулярные выражения не имеют возможности «запоминать» количество совпадающих вхождений. Одним из возможных подходов к решению этой проблемы было бы использование комбинации регулярных выражений и языка программирования. Вы можете использовать регулярное выражение для сопоставления интересующих вас символов, а затем использовать язык программирования для подсчета количества вхождений этих символов и проверки их четности. Другим возможным подходом может быть использование другого алгоритма, такого как подсчет количества вхождений каждого символа в строку, а затем проверка четности числа для каждого символа. Этот подход может быть реализован с использованием цикла и структуры данных словаря на большинстве языков программирования. Наконец, вы можете использовать другой язык со встроенной функцией для этой проблемы, например, python с его функцией Counter(), он даст вам диктовку с количеством каждого символа в строке.
    Ответ написан
    1 комментарий
  • Как правильно создать payload?

    @Sozdavan
    Чтобы корректно создать пейлоад для встроенной кнопки клавиатуры в боте Telegram или ВКонтакте, вы можете использовать строку в кодировке JSON, содержащую необходимую информацию для действия кнопки. Максимальная длина полезной нагрузки составляет 255 символов, поэтому вам нужно помнить об этом при структурировании полезной нагрузки. Вот пример полезной нагрузки для встроенной кнопки клавиатуры, которая открывает предварительный просмотр продукта:

    {
        "type": "product_preview",
        "product_id": "12345"
    }


    В этом примере поле «тип» используется для определения типа действия, которое должна выполнять кнопка, а поле «product_id» используется для указания продукта, который пользователь хочет предварительно просмотреть. Другой пример полезной нагрузки для встроенной кнопки клавиатуры, которая заказывает продукт:
    {
        "type": "order_product",
        "product_id": "54321",
        "quantity": "2"
    }


    Вы можете обработать полученные полезные нагрузки в коде своего бота, проверив поле «тип» и выполнив соответствующее действие на основе его значения. Например, вы можете использовать оператор switch или оператор if-else для обработки различных типов полезной нагрузки. Вот пример обработчика полезной нагрузки в Python:

    def handle_payload(payload):
        payload_data = json.loads(payload)
        if payload_data["type"] == "product_preview":
            product_id = payload_data["product_id"]
            # code to show product preview
        elif payload_data["type"] == "order_product":
            product_id = payload_data["product_id"]
            quantity = payload_data["quantity"]
            # code to order the product
        else:
            # handle other payload types


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

    @Sozdavan
    Вы можете использовать селектор CSS :first-child для выбора первого элемента в каждой строке и удаления левого поля. Например, вы можете использовать следующий CSS:

    .tile {
      margin-left: 10px;
    }
    
    .tile:first-child {
      margin-left: 0;
    }

    Это удалит левое поле для первого элемента в каждой строке, независимо от того, сколько элементов находится в строке или насколько широк экран
    or 
    
    .tile:nth-child(n+1) {
      margin-left: 0;
    }
    Ответ написан
  • Как в tcpdump задать номер файла в имени до расширения pcap?

    @Sozdavan
    Вы можете указать формат имени файла для tcpdump, используя параметры -C и -W. Параметр -C указывает максимальный размер файла в МБ перед созданием нового файла захвата, а параметр -W указывает максимальное количество создаваемых файлов. Например, для захвата данных в формате «name_01.pcap», «name_02.pcap» и т. д. вы можете использовать следующую команду:
    tcpdump -i any -s0 -vvv -w /home/Traces/name_%02d.pcap -C 50 -W 50 -G 21600 host 192.168.0.1


    %02d в имени файла — это строка форматирования, которая будет заменена номером файла, а число будет дополнено нулями до двух цифр. В качестве альтернативы вы можете использовать только параметр -C, и он автоматически повернет и добавит числовой суффикс к данному имени файла

    tcpdump -i any -s0 -vvv -w /home/Traces/name.pcap -C 50 host 192.168.0.1


    Это создаст такие файлы, как name_1.pcap, name_2.pcap, name_3.pcap и так далее
    Ответ написан
    3 комментария
  • Возможно ли в Python сгенерировать сразу 4 цифры, от 1 до 9, чтобы они не повторялись, и записались в разные переменные?

    @Sozdavan
    Да, в Python можно сгенерировать сразу 4 цифры от 1 до 9 без повторения и присвоить их разным переменным. Один из способов сделать это — использовать функцию random.sample из модуля random. Вот пример:

    import random
    
    # generate 4 random digits from 1 to 9 without repetition
    random_digits = random.sample(range(1, 10), 4)
    
    # assign them to different variables
    a, b, c, d = random_digits
    
    print(a, b, c, d)

    Это сгенерирует 4 случайных цифры от 1 до 9 и назначит их 4 различным переменным a, b, c, d соответственно
    Ответ написан
    1 комментарий
  • Можно ли определять версию для ПК в хроме на мобиле через медиазапрос?

    @Sozdavan
    В CSS можно использовать медиа-запросы для настройки макета веб-страницы в зависимости от размера экрана устройства. Используя правило media и указав значение min-width или max-width, вы можете применять к веб-странице разные стили в зависимости от размера экрана. Например, вы можете использовать следующий медиа-запрос для таргетинга на устройства с шириной экрана больше или равной 600 пикселям:
    @media screen and (min-width: 600px) {
      /* styles for devices with screen width >= 600px */
    }

    Другой подход заключается в использовании JavaScript для определения типа устройства пользователя и последующего применения соответствующих стилей. Также можно использовать фреймворки или библиотеки, такие как Bootstrap, Foundation, Bulma и т. д., у них есть классы и функции адаптивного дизайна, которые могут помочь в этом вопросе. Также важно помнить, что во всех случаях необходимо учитывать удобство работы с пользователем. Рекомендуется использовать подход, ориентированный на мобильные устройства. Это означает, что сначала необходимо разработать макет для мобильных устройств, а затем постепенно улучшать его для больших экранов.
    Ответ написан
    Комментировать
  • Почему display: flex ломает textbox?

    @Sozdavan
    Проблема, с которой вы сталкиваетесь, вероятно, вызвана тем, что контейнер .write-note-field имеет отступы, из-за чего элемент .input-form внутри него занимает больше места, чем кажется визуально. Когда вы устанавливаете для свойства display элемента .input-form значение flex, он занимает всю ширину и высоту родительского контейнера с отступом, поэтому вы можете щелкнуть за пределами текстового поля и активировать его. Одним из решений этой проблемы может быть удаление заполнения из контейнера .write-note-field. Как вы заметили, это решит проблему, но может не дать желаемого визуального результата. Другим решением было бы добавить указатель-events: none; в контейнер .write-note-field. Это предотвратит регистрацию кликов на контейнере и, таким образом, предотвратит активацию ввода. Другим решением было бы добавить div-обёртку вокруг формы и присвоить ей класс, например:
    <div class="form-wrapper">
        <form id="note-editor-wrapper" className="input-form" >
                <div contentEditable="true" id="note-editor" role="textbox" tabIndex={0}></div>
        </form>
    </div>

    Затем вы можете указать div-обёртке position: relative и элемент формы position: absolute, с шириной и высотой 100%. Это приведет к тому, что элемент формы полностью заполнит div-обёртку и, таким образом, сделает невозможным активацию ввода, нажав на обёртку:
    .form-wrapper {
        position: relative;
    }
    .input-form {
        position: absolute;
        width: 100%;
        height: 100%;
    }


    Вы также можете попытаться указать максимальную ширину и максимальную высоту для элемента формы, чтобы он не смог заполнить всю div-обёртку:
    .input-form {
        max-width: 100%;
        max-height: 100%;
    }


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

    .input-form {
        min-width: 100%;
        min-height: 100%;
    }


    Вы также можете попытаться указать ширину и высоту элемента формы, чтобы он не смог заполнить весь div-обёртку

    .input-form {
        width: 100%;
        height: 100%;
    }


    Вы можете попробовать эти методы и выбрать тот, который лучше всего соответствует вашим потребностям
    Ответ написан
  • Как заставить готовый скрипт JS работать только для определенного класса из HTML?

    @Sozdavan
    Да, можно изменить скрипт, чтобы он работал на конкретном классе из HTML. В коде JavaScript вы можете использовать метод querySelector или querySelectorAll, чтобы выбрать элемент (элементы) с определенным классом, а затем манипулировать этими элементами или применять к ним желаемую функциональность. Вот пример того, как вы можете использовать метод querySelector для выбора изображения с классом «glitch_effect» и применить к нему эффект сбоя с помощью библиотеки p5.js:

    // Select the image element with the class "glitch_effect"
    const img = document.querySelector('.glitch_effect');
    
    function setup() {
        // Create a canvas and set its size
        createCanvas(img.width, img.height);
        // Draw the image on the canvas
        image(img, 0, 0);
    }
    
    function draw() {
        // Apply the glitch effect to the image
        // (This would typically involve manipulating the pixels of the image)
        // ...
    }


    Точно так же, если вы хотите выбрать несколько элементов с одним и тем же классом, вы можете вместо этого использовать метод querySelectorAll, который возвращает NodeList элементов, соответствующих переданному ему селектору.

    const images = document.querySelectorAll('.glitch_effect');
    images.forEach(image =>{
        // apply effect to each image
    })

    Также важно отметить, что ваш сценарий должен располагаться после элементов, которые вы хотите выбрать. в приведенном выше примере у вас есть тег
    Ответ написан
  • Как сделать машиночитаемые "Часы работы" в HTML?

    @Sozdavan
    Вы можете использовать HTML-элементы time и span для создания машиночитаемых часов работы в HTML. Элемент «time» можно использовать для указания времени начала и окончания события, а элемент «span» можно использовать для переноса часов работы в определенный день. Вот пример:
    <p>Opening Hours:</p>
    <ul>
      <li>Monday - Friday: <time>9:00</time> - <time>17:00</time></li>
      <li>Saturday: <span class="closed">Closed</span></li>
      <li>Sunday: <time>10:00</time> - <time>16:00</time></li>
    </ul>


    В этом примере часы работы каждого дня заключены в элемент «li», а время начала и окончания указано с помощью элемента «time». Элемент «span» используется для обозначения того, что магазин закрыт в субботу. Вы также можете использовать атрибут datetime, чтобы указать дату и время в машиночитаемом формате, например:
    <p>Opening Hours:</p>
    <ul>
      <li>Monday - Friday: <time>9:00</time> - <time>17:00</time></li>
      <li>Saturday: <span class="closed">Closed</span></li>
      <li>Sunday: <time>10:00</time> - <time>16:00</time></li>
    </ul>


    В этом примере часы работы каждого дня заключены в элемент «li», а время начала и окончания указано с помощью элемента «time». Элемент «span» используется для обозначения того, что магазин закрыт в субботу. Вы также можете использовать атрибут datetime, чтобы указать дату и время в машиночитаемом формате, например:
    <time datetime="2022-09-12T09:00">9:00</time>

    Рекомендуется также включать aria-label для специальных возможностей и поисковых систем:
    <time datetime="2022-09-12T09:00" aria-label="Open at 9:00">9:00</time>


    Кроме того, вы можете использовать элемент «meta» с атрибутом «itemprop», чтобы указать часы работы вашего веб-сайта в машиночитаемом формате:
    <meta itemprop="openingHours" content="Mo-Fr 09:00-17:00">


    Также важно использовать правильный формат для атрибута контента, который можно найти в документации Schema.org для спецификации часов работы
    Ответ написан