• Установить windows на диск 1, а загрузчик нужен на диске 2. Как установить загрузчик для windows на другой диск?

    Если вам нужно переустановить систему так, чтобы загрузчик оказался на диске 2, а сама система на диске 1, то я предлагаю сделать следующее:

    1. Вытащить диск 1.
    2. Установить систему на диск 2. Загрузчик установится на тот же диск.
    3. Вставить диск 1.
    4. Установить систему на диск 1. Установщик увидит, что в компьютере уже есть раздел с загрузчиком и добавит новую систему в него.
    5. Загрузиться в новую систему - при запуске должно появится бут-меню с двумя windows 10, надо угадать какая из них на диске 1 и выбрать ее.
    6. Убрать систему на диске 2 из BCD. Можно попробовать BOOTICE, "конфигурацию системы" или bcdedit /delete. После этого в загрузчике останется одна система (по идее загрузчик отображаться после этого не будет).
    7. Удалить все разделы, кроме раздела загрузчика с диска 2 (их должно быть 2 или 3 - основной, MSR и recovery). Разделы кроме основного нельзя удалить через управление дисками, используйте сторонние утилиты.
    8. Создать на диске 2 обычный раздел на весь диск.

    Note: я не проверял, сработает это или нет, но когда я один раз ставил систему на новый ssd, не отключив старый hdd, то загрузчик на ssd не установился, и когда я отключил hdd, система перестала загружаться.

    И еще: это удалит все данные и систему с обоих дисков.

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

    class _ContextState(enum.Enum):
       ...
    
    class AsyncSocket(Context):
        def __init__(self, *args):
            self._state = _ContextState.INITIAL

    Если короче, то:
    1. вложенные классы - это плохо
    2. названия классов всегда в PascalCase
    3. как и методы, классы могут быть приватными, если их название начинается с символа подчеркивания
    4. если все объекты класса предназначены только для внутреннего использования, то этот класс можно сделать приватным


    Хотя иногда все же можно использовать вложенные классы, но только если они приватные и нужны только в одном классе:
    class Context:
        class _State(enum.Enum):
            ...
    
        def __init__(self):
            self._state = Context._State.INITIAL
    Ответ написан
  • Почему функция ShellExecute() не может открыть папку?

    Попробуйте так:
    ShellExecute(NULL, NULL, L"\\\\10.10.2.1\\17_Проекты\\Библиотека", NULL, NULL, SW_SHOWNORMAL);
    Ответ написан
    Комментировать
  • Почему html разный?

    А у меня и в режиме исходного кода, и в инспекторе, и даже на самой странице цифры такие же, как у Вас в исходном коде. Предположу, что все дело в авторизации, а точнее в том, что цифры на странице, которую отдает сервер (исходный код) - это просто заглушка, а реальные данные передаются позже через js/xhr. Ищите в инспекторе на вкладке "сеть" нужные запросы и пытайтесь их повторить.
    Второй вариант - selenium - это по сути полноценный браузер, который будет управляться из вашей программы.
    Ответ написан
    Комментировать
  • Изменяться ли координаты ярлыка корзины если изменить разрешение экрана?

    Как уже сказали в комментариях, чтобы открыть корзину есть более простые способы. В Windows можно сделать так:
    import os
    os.startfile("shell:RecycleBinFolder")

    В линуксе все зависит от используемого файл-менеджера, но чаще всего сработает:
    import os
    os.system("gvfs-open trash://")
    Ответ написан
    Комментировать
  • Python, как сделать много запросов и получить ответ без ошибок?

    Во-первых, НИКОГДА не мешайте многопоточность с асинхронностью. Асинхронность придумали для того, чтобы не делать потоки.

    Если я правильно понял, то Вы хотите сделать программу, которая проверяет работоспособность множества сайтов одновременно.
    Смотрите:
    Как можно увеличить либо число потоков, либо просто число проверок за раз?

    Делайте несколько "воркеров" - то есть просто запускайте программу несколько раз. НО делать это на одном устройстве все равно скорее всего не будет никакого смысла, так как основная нагрузка будет на сеть, а не на процессор.

    Предварительно я их распихиваю по нескольким серверам, к примеру 5 шт. Значит на один сервер выходит 20 тысяч за раз. Все эти задачи сначала попадают в свои БД, на своих серверах, а потом их можно сливать в одну общую таблицу. Но можно и читать данные из разных серверов ...

    Вот именно так. Но базу данных можно делать одну на все сервера (sqlite не подойдет, mysql или postgreesql будут не плохим вариантом). Вы делаете основной сервер, где будет БД и 1 воркер и множество доп. серверов с 1 воркером на каждом, которые подключаются к БД на основном.

    Дальше стоит понять, чем асинхронный запрос отличается от синхронного.
    Запрос
    6102683738193554639408.png
    (максимально упрощенно, обычно все сложнее).
    1. Синхронный: все время, отмеченное красным программа не работает, Ваша ОС приостанавливает ее выполнение. Получается, что программа одновременно может выполнять лишь один запрос, при этом большую часть времени она ничего не делает.
    2. Асинхронный: ОС сразу возвращает ответ, типа "будет сделано" и программа может работать дальше. Но вам ведь нужен конкретный ответ, поэтому asyncio пока ждет ответа от ОС (которая ждет ответа от сервера), может выполнять другие задачи (например, начинать другие запросы). Теперь ваша программа может делать несколько запросов одновременно, их количество зависит уже от ОС и сети.

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

    ОС будет сама отслеживать таймауты для каждого запроса отдельно. Таймаут можно указать руками при создании запроса, если этого не сделать, то он будет равен 5 минут (что для синхронного запроса ооочень много, но для асинхронного сойдет). Про таймаут можно почитать в документации.

    Про задачи в asyncio. Чтобы выполнить несколько функций (псево)параллельно используется функция asyncio.gather():
    async def make_request(address):
        ...
        return address, response  # чтобы потом можно было понять, на что это ответ
    
    async def main():
        urls = [...]
        reqs = []
        for url in urls:
            reqs.append(make_request(url))  # Обратите внимание на отсутствие await, нам не нужно ждать завершения сейчас
    
        results = await asyncio.gather(reqs)  # gather объединяет несколько корутин в одну, теперь мы ждем, пока выполнятся все запросы
        # теперь results - list[tuple[<address>, <response>]]
        for url, result in results:
            print(...)  # print можно делать и в обработчике, тут уже зависит от того, что вы хотите сделать с ответом

    Есть и другие способы запуска задач (ensure_future и create_task, возможно они вам больше подойдут).

    Как правильно обрабатывать ответы, если будет приходить много данных за раз?

    Каждый ответ обрабатывайте отдельно. Прямо сразу после запроса (в примере в функции make_request). Вот пример из документации.

    Когда пишете код с aiohttp не забывайте, что async with session.get(...) as resp: и есть запрос. async with по сути внутри себя содержит await, поэтому пока выполняется такой код может выполниться еще несколько параллельных задач.

    Еще отлаживать асинхронный код довольно сложно, поэтому используйте логирование (можно начать с обычных print-ов, только не print("xx") и print("yy"), а print(f"Starting request to {url}...") и print(f"Got response from {url}...") - иначе вы не сможете понять, какой сайт долго отвечает, сколько по времени выполняется запрос к 1 сайту (тут поможет logging и метки времени) и на каком количестве запросов программа виснет).
    Ответ написан
    4 комментария
  • Чем жертвовать ОЗУ или процессором?

    Смотря что программировать. JetBrains IDE не потребляют больше 4 гб озу (конкретно у меня), но и к процу не слишком требовательны (базовые функции вроде автодополнения у меня и на кор2дуо работали почти без тормозов).
    Компилировать что-то большое на ноуте бесполезно. Для компиляции нужны и ядра, и память.
    Еще стоит учесть, что в ноутах процессор не будет работать на максимальной частоте все время. И чем выше частота, тем быстрее он нагреется и начнет троттлить. По этому стоит смотреть еще и на систему охлаждения (если это не две комплектации одной модели).
    Ответ написан
  • Как вставить в Telegraph картинку ссылкой по api?

    вставить любым способом картинку в Telegraph контент

    Можно, через тег img.

    есть ли возможность скрыть адрес сервера

    Нет, но можно загружать картинки на сервера телеграф.

    ограничить доступ к серверу только с Telegraph

    В теории можно, но лучше не надо. Проблема в том, что у телеграфа как бы несколько клиентов - веб версия и приложения на андроид и ios. Каждый из них можно определить (например в браузере есть referrer), но не факт, что это будет работать правильно и не сломается с каким-нибудь обновлением телеграмма.

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

    Если вы хотите организовать защиту от скачивания, то удачи вам. Твиттер (если я ничего не путаю) режет картинки на вертикальные полосы.
    Ответ написан
    Комментировать
  • Почему при json.dump() Json объекты не разделяются запятой?

    Скорее всего ваш код выполняется несколько раз. При многократном вызове json.dump() содержимое файла не очищается, новые данные просто дописываются в конец файла.
    Ответ написан
    Комментировать
  • Как написать скрипт на python, который будет делать скриншот определённых мест экрана?

    Можно сделать скриншот на устройстве через adb:
    adb shell screencap -p /sdcard/screen.png
    adb pull /sdcard/screen.png
    adb shell rm /sdcard/screen.png
    Ответ написан
    Комментировать
  • Что не так с моим кодом(Будильник)?

    Он выведет "Проснись!!!", если установить будильник на текущее время (т.е. чтобы он сработал сразу). А все потому, что надо в каждой итерации заново узнавать текущее время через what_time(), вместо сравнения с переменной t2

    def Alarm(t1, t2):
        while t1 != what_time():
          time.sleep(1)  
        print("Проснись!!!")


    И еще: хранить время в строках и все время сравнивать их не самое лучшее решение. Гораздо быстрее и удобнее хранить и сравнивать время как число.
    Ответ написан
    5 комментариев
  • Как работает __new__ в Python 3?

    __new__(cls, *args, **kwargs) - всегда classmethod. Вызывается для создания экземпляра класса, перед вызовом __init__. Новый экземпляр создается вызовом object.__new__(cls) (также вместо явного указания object можно использовать super()). Его должен вернуть __new__.
    Ответ написан
    Комментировать
  • Как исключить из syslog-ng вывод какой либо программы?

    Судя по примеру вашего лога вам нужно отключить логирование sudo (или перенести его в отдельный файл).
    Например так:
    # sudo visudo /etc/sudoers
    Defaults logfile=/var/log/sudolog
    Defaults syslog=off
    Ответ написан
    Комментировать