Задать вопрос
  • Что определяет выбор адреса сайта из всех, возвращённых DNS-сервером?

    @Hardoman
    DevOps
    Во-первых, клиенты кэшируют у себя dns ответы на срок жизни TTL записи и обращаются к последнему использованному до бесконечности, если эта запись ещё актуальна.
    Во-вторых, при первом обращении выбирается первая доступная запись.
    Клиент по очереди в списке опрашивает их и возьмёт первую рабочую.
    В этой ситуации уже задача DNS сервера каждый раз возвращать список в разном порядке. Он это может делать по разным алгоритмам, чаще всего по round-robin, иногда по меньшему пингу или первому ответившему.
    Ответ написан
    Комментировать
  • Есть ли кд на отправку подарков от имени бота?

    @Nick331045
    Спасибо тебе SAFDADWAEAWE за токен бота и id чатов

    Один пользователь может получить подарок от бота только один раз
    После получения подарка бот не может отправить этому же пользователю другой подарок
    Бот имеет общее ограничение на количество подарков, которые он может отправить
    Возможны временные ограничения (например, на количество подарков в день)
    infinity_polling() нужно вызывать только один раз в конце скрипта
    Ответ написан
    1 комментарий
  • Как обойти ошибку создания уникального индекса?

    @Dementor
    программист, архитектор, аналитик
    Можно ли со стороны SQL это решить ? Например, с помощью скрипта SQL который бы отслеживал запись и при возникновении ошибки переименовал объект допустим ?

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

    Ошибка осталась, хотя по всем объектам дубли больше не найдены.

    Я бы на ваш месте не угадывал, а проверил бы поля из индекса IDD для таблицы dbo.SC31 - если скуль ругается, то вы точно что-то пропустили. Сделайте SELECT с GROUP BY этим полям и HAVING COUNT(*) > 1
    Ответ написан
    Комментировать
  • Сменил MAC адрес на Hyper V, пропало подключение к интернету как вернуть?

    @Dieman666
    ну не удивительно
    новый мак - новый ip
    возвращайся на хостовую систему/шлюз и решай вопрос
    Ответ написан
    Комментировать
  • Как обмануть Instagram, чтобы думал, что я в другой стране?

    CityCat4
    @CityCat4 Куратор тега VPN
    Жил да был черный кот за углом...
    Я дам оригинальный ответ - сменить страну проживания :)
    Ответ написан
    1 комментарий
  • Почему неправильно парсится файл на микротик?

    @MaxKozlov
    Как-то вы очень уж сложно парсите.

    скрипт как функция. в отдельном файлике
    ########## 
    #  Input: file name
    
    :local fn $1
    #:local fn "text.txt"
    
    :local content [/file get $fn contents]
    :local datalen [:len $content]
    :local fi 0
    :local idx 0
    :local res [:toarray ""]
    
    #:put $datalen
    
    do {
      :local cr [:find $content "\n" $fi]
      if ([:typeof $cr] = "nil") do={
        :set cr $datalen
      }
    #  :put "fi: $fi, cr: $cr, idx: $idx"
      :local line [:pick $content $fi $cr]
    #  :put $line
      :set ($res->$idx) $line
      :set fi ($cr + 1)
      :set idx ($idx + 1)
    } while ($fi <= $datalen)
    
    :return $res


    Использовать
    :local file2array [:parse [/system script get func_file2array source]]; local lines [$file2array text.txt]; :foreach i in=$lines do={ :put $i }


    Ну или всё в один скрипт запихнуть

    p.s. а ошибка, наверное, где-то в районе :set lineEnd [:find $content "\n" $lastEnd ] ;
    если ничего не нашлось, в переменную пишется nil, а тут никакой проверки на это и следующий поиск сначала начинается. зато есть странная проверка :if ( [ :len $content ] = 0 ) do={
    Ответ написан
    2 комментария
  • Как позиционировать виджеты tkinter?

    Vindicar
    @Vindicar
    RTFM!
    Если ты используешь менеджер pack(), используй параметр anchor для выравнивания вдоль другой оси. expand и fill - для заполнения вдоль другой оси.
    Ответ написан
    Комментировать
  • Как позиционировать виджеты tkinter?

    @oneLEAM
    Можно попробовать так:
    self.edir.pack(side=TOP, anchor=W, padx=10)
    и
    self.console.pack(side=BOTTOM)
    Ответ написан
    Комментировать
  • Как избежать перегрева ТВ приставок с помощью формата видео?

    @Zerg89
    Mp4 это не совсем формат это контейнер
    А форматы такие
    Видеопотоки: MPEG-H Part 2 (H.265/HEVC), H.264/MPEG-4 Part 10, MPEG-4 Part 2, H.262/MPEG-2 Part 2, H.261/MPEG-1 Part 2.
    Аудиопотоки: MPEG-4 Part 3, MPEG-2 Part 7, MPEG-1 Audio Layer III, MPEG-1 Audio Layer II, MPEG-1 Audio Layer I.
    Субтитры: MPEG-4 Part 17.

    Снизить температуру может аппаратное декодирование соответсвенно надо подгонять под формат поддерживаемый процессором приставки но будет ли значительная разница покажут только тесты
    Ответ написан
    1 комментарий
  • Как применить стиль и разметку из примера?

    TTATPuOT
    @TTATPuOT
    https://code.patriotovsky.ru/
    То, что вы предоставили - это формат шаблонизатора Pug. Ещё такие штуки называют препроцессорами HTML. Они аналогичны препроцессорам CSS: Sass, SCSS и другим. Позволяют меньше писать и кому-то нравятся больше. В чём-то удобнее и, самое главное, умеют работать с JavaScript.

    В вашем случае, чтобы получить чистый HTML достаточно нажать на кнопку View Compiled HTML:
    63cd4b6a0cb32326210456.png
    Ответ написан
    1 комментарий
  • Как извлечь ресурсы добавляемые через EmbeddedResources.Add на другой стороне?

    @romazhan
    Вам нужно использовать класс Assembly и метод GetManifestResourceStream. Например, чтобы получить поток данных для встроенного ресурса с именем mainVoice.mp3, вы можете использовать следующий код:
    Assembly assembly = Assembly.LoadFrom(@"путь к скомпилированному файлу");
    Stream stream = assembly.GetManifestResourceStream("mainVoice.mp3");

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

    Важно указать имя ресурса с учетом того, что он может быть вложен в папку ресурсов. Например: (folder/resource) Resources/mainVoice.mp3 -> Resources.mainVoice.mp3.

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

    Чтобы скопировать поток в массив байтов:
    using (MemoryStream memoryStream = new MemoryStream())
    {
        stream.CopyTo(memoryStream);
        byte[] resourceBytes = memoryStream.ToArray();
    }

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

    Также можно использовать класс StreamReader для чтения ресурса из потока данных. Например, чтобы считать ресурс как текстовую строку:
    using (StreamReader reader = new StreamReader(stream))
    {
        string resourceText = reader.ReadToEnd();
    }
    Ответ написан
    1 комментарий
  • Какой .NET framework выбрать для консольного приложения?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    4.7.2

    но я бы рекомендовал NET 6 + self contained
    то есть размер будет ~30-40 мб и никаких зависимостей
    Ответ написан
    2 комментария
  • Как создать билдер на C#?

    yarosroman
    @yarosroman Куратор тега C#
    C# the best
    Ответ написан
    Комментировать
  • Как перенести игры xiomi на sd карту?

    @rPman
    BadCat, нет

    гугл уничтожил (буквально, специально) все инструменты локального offline резервного копирования и восстановления приложений android еще лет 10 назад, оставив методы на откуп производителя оборудования, которые все поголовно адекватными не являются.

    adb backup ... может сделать полную копию данных включая сами apk приложений и публичные и приватные данные приложений, но восстановить их не получится (adb restore отработает но ничего не произойдет, в логах android ошибки на неверный формат архива)

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

    xiaomi предлагает свои инструменты резервного копирования, помню я попробовал - они не сработали, подгадив очень сильно.

    p.s. при наличии root инструменты резервного копирования и восстановления есть
    Ответ написан
    2 комментария
  • Не могу разобраться с web socket и ajax. Как все таки обновлять данные на Flask сервере без F5?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Подключаем jquery к html:
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    </head>


    Вообще, вариантов конечно много, но в общем случае можно сделать так:
    Разбить таблицу и основной файл на два html дока

    index.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    </head>
    <body>
        <div class='once'>
      <table id="logs">
          {% include 'table.html' %}
      </table>
    </div>
    
    <script>
    
    function updateTable() {
        $.ajax({
            url: "/",
            type: "get",
            success: function(response) {
                $("#logs").html(response);
            }
        });
    };
    
    setInterval(updateTable, 3000);
    </script>
    </body>
    </html>


    table.html
    <thead>
      <tr>
        <th>Логи кассы</th>
      </tr>
    </thead>
    <tbody>
      {% for logs in atolbuff %}
        <tr>
          <td>{{logs}}</td>
        </tr>
      {% endfor %}
    </tbody>


    В html файле каждые 3000 м.сек (3 сек) отправляется get на /. Опять же, можно сделать отдельный эндпоинт, можно слать POST, можно это, можно то и тд.

    В самомо боте проверяем что за запрос пришел, подобные запросы называются XHR. Если нам пришел XHR запрос (из ajax каждые 3 сек), то рендерим нашу таблицу и возвращаем её. Если это был обычный запрос, то рендерим index.
    @app.route("/")
    def hello_world():
        
        atolbuff = [random.choices(string.ascii_lowercase, k=10) for x in range(3)]
        
        if request.is_xhr:
            return render_template('table.html', atolbuff=atolbuff)
        
        else:
            return render_template('index.html', atolbuff=atolbuff)


    В JS'e получаем результат функции render_template('table.html') и через jQuery заменяем им html элемента с id logs (таблица в моем случае):

    function updateTable() {
        $.ajax({
            url: "/",
            type: "get",
            success: function(response) {
                $("#logs").html(response);
            }
        });
    };


    + пару импортов
    from flask import Flask, render_template, request
    Ответ написан
    4 комментария
  • Как сделать динамическое обновление страницы js?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    То, как вы пытаетесь сделать очень быстро положит сервер.
    Нужен реалтайм - используйте сокеты.
    Ответ написан
    2 комментария
  • Как заблокировать повторное выполнение subprocess.Popen() в веб приложении на Flask?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Полагаю, оптимальным решением будет использовать Singleton
    Ответ написан
    Комментировать
  • Как создать двойной loop python?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    for a,b in zip(aList, bList):
        print(a,b)
    Ответ написан
    1 комментарий
  • Как добавить счетчик в цикл?

    lxstvayne
    @lxstvayne
    Люблю Python
    familiya = ['Петров','Иванов','Сидоров']
    
    for n, f in enumerate(familiya, start=1):
        print(f'{f}_{n}')
    Ответ написан
    Комментировать