• Как вывести оставшееся время до определенного часа?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Можно прибавлять 24 часа там, где что-то меньше чего-то..

    Примерно так, наскоро. Подробно не проверял:
    function workHours(on, off, testNow = null) {
      // TODO: validate input
      const now = testNow ?? new Date().getHours();
      const a = Number(on);
      let b = Number(off);
    
      const format = (status, nextTime) => ({ status, next_time: nextTime });
    
      if (a === b) {
        return format(true, 0);
      }
    
      if (a > b) {
        b += 24;
      }
    
      if (now >= a && now < b) {
        return format(true, 0);
      }
    
      if (now < a) {
        return format(false, a - now);
      }
    
      return format(false, a + 24 - now);
    }

    Тесты

    // Тесты тесты
    const tests = [
      [9, 17, 10, { status: true, next_time: 0 }],
      [9, 17, 8, { status: false, next_time: 1 }],
      [9, 17, 17, { status: false, next_time: 16 }],
      [19, 17, 17, { status: false, next_time: 2 }],
      [19, 19, 17, { status: true, next_time: 0 }],
    ];
    
    const eq = (a, b) => Object.entries(a).every(([k, v]) => b[k] === v);
    
    tests.forEach(test => {
      const [on, off, now, expected] = test;
      const result = workHours(on, off, now);
      const testResult = eq(result, expected);
      if (testResult) {
        console.log('Passed', {on, off, now, result});
      }
      console.assert(testResult, test);
    });
    Ответ написан
    Комментировать
  • Как рассчитать коэффициент (от 0 до 1) соотношения 2-х чисел?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    const coef = success + unsuccess > 0 ? success / (success + unsuccess) : 1;
    Ответ написан
    Комментировать
  • Как можно удалить фон или получить координаты кругов?

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

    Griboks
    @Griboks
    Полная привязка к серверу на каждую кнопку. Выполнение всех критически важных операций на сервере. Тонкий клиент. Так вы сможете защититься от всевозможных домашних хакеров и усложнить жизнь пользователей в 10 раз.

    p.s.
    + Постоянные обновления, которые меняют механизм взаимодействия с сервером.
    Ответ написан
    1 комментарий
  • Как правильно осуществить продажу программы для каждой машины с тестовым периодом?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Ни один программный способ еще никому не давал 100% защиты. Люди аппаратные ключи отламывают.
    Ненужную программу ломать не будут. Непопулярную программу ломать не будут. Не тратьте на защиту слишком много времени - если программа merde - ее в любом случае не купят :)
    Ответ написан
    Комментировать
  • Как удалить прокси из браузера?

    @zkrvndm
    Софт для автоматизации
    Чтобы удалить прокси методом замены необходимо из background.js выполнить:
    await chrome.proxy.settings.set(
    	{
    		value: {
    			mode: 'pac_script',
    			pacScript: {
    				data: 'function FindProxyForURL(url, host) { return "DIRECT"; }'
    			}
    		},
    		scope: 'regular'
    	}
    );

    Это установит PAC-скрипт который будет все запросы направлять напрямую. С гарантией сбросит прошлый прокси.
    Ответ написан
    Комментировать
  • Смена роутера или танцы с бубном?

    CityCat4
    @CityCat4 Куратор тега Сетевое администрирование
    Внимание! Изменился адрес почты!
    Сейчас РТК стал хотя бы в режим моста переводить свое угребище (потому что у меня тоже стоит RT-GM-6, не думаю, что они сильно лучше).

    Что тут можно сделать:
    - позвонить в саппорт и упирать на то, что у Вас бракованная железка. Не факт, что они согласятся ее поменять, но может быть...
    - если менять откажутся, то угребище в режим моста (в этом режиме он выступает просто конвертером между оптикой и eth), за ним ставится нормальный роутер. Нормальный - это микротик. rb4011 конечно Вам излишне - такая железка контору в сто рыл держит - но rb450g или его более современные аналоги - вполне. Да, в rb450g нет wifi - это просто небольшая коробочка на пять портов.
    Ответ написан
    Комментировать
  • Смена роутера или танцы с бубном?

    @Ragnar1
    Linux teacher for beginners.
    Рекомендую взять роутер mikrotik rb5009 или rb4011, у обоих моделей присутствует sfp+.
    1.1) заказать на ali модуль и подключить провайдера напрямую.
    1.2) Либо превратить роутер rt в bridge и к нему новый роутер, тогда наличие sfp уже не так критично, но производительность у обоих моделей на высоте.

    Костыльный вариант это раскурочить роутер РТ и на ключевые элементы поставить по радиатору для ssd nvme через термопрокладку
    Ответ написан
    4 комментария
  • Как ограничить количество запросов от одного IP юзера?

    gzhegow
    @gzhegow
    aka "ОбнимиБизнесмена"
    Простой вариант.

    <?php
    session_start(); // в апи не должно быть сессии. Но вордпресс так не думает.
    
    $hour = date('Y-m-d H');
    $minute = floor(date('i') / 10);
    $key = $hour . '_' . $minute;
    
    $counts = $_SESSION['throttle'][ $ip ] ?? []; // получаем сохраненное
    $count = $counts[ $key ] ?? 0; // берем по временной марке "сейчас"
    $count++; // увеличиваем на единицу
    $counts = []; // чистим старые временные марки
    $counts[ $key ] = $count; // сохраняем новую
    $_SESSION['throttle'][ $ip ] = $counts; // закидываем обратно в ящик
    
    // проверяем, достигнут ли лимит
    if ($count >= $limit) {
      throw new \RuntimeException('Throttling limit exceeded');
    }


    Более правильный вариант, особенно в апи:

    composer require symfony/cache

    <?php
    require_once __DIR__ . '/vendor/autoload.php';
    
    $cache = new FilesystemCache('throttle', null, __DIR__ . '/cache');
    
    $hour = date('Y-m-d H');
    $minute = floor(date('i') / 10);
    $key = $hour . '_' . $minute;
    
    $cacheItem = $cache->getItem($ip);
    $counts = $cacheItem->isHit() ? $cacheItem->get() : [];
    $count = $counts[ $key ] ?? 0;
    $count++;
    $counts = [];
    $counts[ $key ] = $count;
    $cacheItem->save($counts);
    
    if ($count >= $limit) {
      throw new \RuntimeException('Throttling limit exceeded');
    }
    Ответ написан
    1 комментарий
  • Как заменить цвет пикселей cv2?

    Vindicar
    @Vindicar
    RTFM!
    В cv2 изображения - это массивы numpy, так что все трюки с индексацией из numpy работают. Очень советую их изучить.
    find = 1,2,3 # какие значения заменять
    replace = 4,5,6 # на какие значения заменять
    mask = (bgr == find)[..., 0]
    bgr[mask] = replace
    Ответ написан
    8 комментариев
  • Отправка POST данных в python и получение ответа, как сделать?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Написать небольшой бэкенд на фласке:
    from flask import Flask, request
    
    app = Flask(__name__)
    
    @app.route('/', methods=['POST'])
    def hello_world():
        result = request.form.get('login')
        return result*2
    
    
    if __name__ == '__main__':
        app.run()


    Потом кинуть запрос
    $.ajax({
            url: "http://127.0.0.1:5000",
            type: "POST",
            cache: false,
            data: {'login' : 'brepex'},
            success: (data) => {
                alert(data)
            }
        });
    Ответ написан
    Комментировать
  • Каким способом удалить шум на картинке?

    Vindicar
    @Vindicar
    RTFM!
    Максимум что тут можно сделать - пройтись алгоритмом connected component и отсеять все компоненты, у которых слишком маленькая площадь. Но и это повредит текст, например, удалит точки на i.
    Ответ написан
    Комментировать
  • Счетчик, утечка памяти?

    15432
    @15432
    Системный программист ^_^
    методы Tkinter по обновлению текста Label при вызове из разных тредов текут.

    уберите log_max.configure и log_message.configure
    Ответ написан
    2 комментария
  • Как отключить обновления windows 10 в 2022 году?

    KiGamji
    @KiGamji
    Я бы не использовал сторонние программы. Одна из них сломала мне чистую винду, на которою я установил десятки программ, пришлось потом всё делать заново.
    Я всегда пользуюсь методом редактирования групповых политик.
    Вы можете докачать редактор групповых политик. Просто запустите командную строку от имени администратора и выполните две следующие команды:
    FOR %F IN ("%SystemRoot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~*.mum") DO (DISM /Online /NoRestart /Add-Package:"%F")

    и
    FOR %F IN ("%SystemRoot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~*.mum") DO (DISM /Online /NoRestart /Add-Package:"%F")
    Ответ написан
    3 комментария
  • Как можно увеличить скорость записи в бд mysql?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Подскажите, в чем может быть проблема? Спасибо!!!
    Подсказываю: Файлы хранятся в файловой системе. Хранить файлы в бд это палка о двух концах, оба из которых засунуты в ж...
    1) Файловые системы работают с файлами гораздо лучше текстовых хранилищ.
    2) Для отдачи файлов из файлов не нужно выполнять запросы к бд, десериализацию, декодирование из жсон, а затем из базе64, и гнать как ответ от пыха к серверу. Еще и гонять туда-сюда МНОГО данных, бд такое не любит. Просто отдаешь путь к файлу и его сервер напрямую читает.
    3) Проще настраивать кэширование на стороне клиента, когда файл отдается не через скрипт, а "как файл"
    4) Хранение в базе64 - это +30% примерно к весу изображения
    И еще дохрена проблем...

    Единственный более-менее аргумент за хранение в базе картинок - отдавать их по запросу только авторизированным пользователям. И то, тут правильнее хранить путь до них, сами картинки держать опять же в фс, выше документ рута, и отдавать их через readfile();

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

    @rPman
    Что значит стопорится? зачем гадать, расставь по больше вывода в свои логи отладочной информации (когда принял запрос, обработал, отправил транзакцию, когда получил ответ от базы и т.п.) с таймингами и смотри что и где происходит в проблемный момент

    Что за пиз...ц с сериализацией картинок в base64 потом это все в json, а в базе хранить php-щным serialize?

    http post прекрасно справляется с отправкой файлов, там своя сериализация, никто не мешает миксить в запросе get и post данные

    Не храните картинки в базе данных, никак, ни блобом ни сериализацией, кто придумал этот маразм, в каком бредовом туториале это прочитали и каждый второй это реализует?

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

    p.s. в php во всех репозитариях есть красивый сериализатор igbinary, если что он в каком то смысле даже быстрее старого serialize и точно компактнее, его потихоньку в стандарт пропихивают, например можно использовать его для хранения сессий
    Ответ написан
    1 комментарий
  • Selenium+Python. Как получить изображение не сохраняя на диск?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Как-то так:
    screenshot = driver.find_element_by_css_selector('class_name').screenshot_as_png


    617c4d30687e3620291404.jpeg
    Ответ написан
    1 комментарий
  • Как вывести длину списка за последние сутки и за последний час?

    MinTnt
    @MinTnt
    Ну, это не так и сложно.
    Сначала нужно отсчитать какое время было ровно сутки назад
    time.time()-(60*60*24)
    А дальше пустить обычный цикл
    time_day_before = time()-(60*60*24)
    n = 0
    for x in lst:
    	if x < time_day_before:
    		break
    	n += 1
    		
    		
    print(n)
    Ответ написан
    7 комментариев
  • Keras: как правильно отправить numpy?

    Vindicar
    @Vindicar
    RTFM!
    Ошибка говорит, что у тебя в картинке 4 канала вместо трёх.
    Я думаю, дело в cv2.IMREAD_UNCHANGED. Зачастую RGB-изображения имеют неиспользуемый 4й байт в пикселе, для выравнивания адресов пикселей в памяти. IMREAD_UNCHANGED означает, что этот байт загружается как есть, вот и получается 4 канала.
    Попробуй заменить на IMREAD_COLOR.
    Ответ написан
    2 комментария
  • Keras: Как распознать картинку без сохранения на диск?

    new_img у вас же Numpy array?
    Его прямо можно передавать в модель:
    predictions = obj['main'].predict([new_img]) # или predict(np.array([new_img]))
    
    # и дальше
    result = obj['classes'][np.argmax(predictions[0])]
    Ответ написан
    Комментировать