Задать вопрос
  • Как удалить то, что устанавливает sudo sensors-detect?

    shurshur
    @shurshur
    Скорее всего, генерит конфиг типа /etc/sensors.conf.
  • Почему функция не возвращает значения?

    shurshur
    @shurshur
    НЕ НАДО засовывать message_handler внутрь функции. Это не будет работать. Не знаю, почему на сайт чуть ли не каждый день с таким приходят, где вы все это находите?

    Вместо этого нужно использовать bot.register_next_step_handler.
  • Какую последовательность нужно передавать в консоль при нажатии стрелок?

    shurshur
    @shurshur
    ESC[1;1A будет восприниматься как кнопка только в stdin, в stdout терминал может интерпретировать это как угодно плохо, а перемещение по экранчику вообще делается не стрелками, а последовательностями типа ESC[x;yH.

    Не знаю, как это реализовано в Windows, а в Linux для полноценного взаимодействия с другой программой нужно не просто пулять в stdin программы создать отдельный управляемый нашей программой псевдотерминал, который и будет stdin/stdout/stderr для программы. Иначе программа может определить, что её запустили не из терминала (гуглить isatty), и будет вести себя соответственно.
  • Можно ли бесконечное число планет выпрямить в бесконечную плоскость?

    shurshur
    @shurshur
    rPman, к предыдущему добавлю, что автор явно упомянул теорию множеств. А в ней нормально, что отрезок длиной 1 нанометр равномощен 16-мерному пространству.
  • Можно ли бесконечное число планет выпрямить в бесконечную плоскость?

    shurshur
    @shurshur
    Неправильно, плоскость континуальна, как и каждая планета. Так что к вопросу ответ, конечно, что множества равномощны, но как континуумы, а не счётные.
  • Как собрать библиотеку из кода для 16-bit ОС для работы в 32-bit \ 64-bit ОС?

    shurshur
    @shurshur
    16-битный код может исполняться 32-битным x86-процессором, поэтому тут как раз не особо проблема. Больше проблем будет вызывать этот код из своего 32-битного (например, нужно будет явно использовать 16-битные регистры и смещения) и переписать под диалект своего ассемблерного компилятора. А вообще при таком объёме может быть проще переписать с нуля, тем более что код не выглядит каким-то страшно сложным.

    А, заметил что там extrn-функция есть dos3call, вероятно это прерывание DOS 21h. Увы, тогда нет, без DOS этот код нельзя использовать. Или надо понять какие функции DOS он использует и реализовать их аналоги у себя.
  • Как собрать библиотеку из кода для 16-bit ОС для работы в 32-bit \ 64-bit ОС?

    shurshur
    @shurshur
    Сергей, такие вещи лучше оформлять комментарием к исходному вопросу, а не отдельным ответом. А ещё лучше выкладывать через сайты типа pastebin.com или gist.github.com.
  • Как редактировать список товаров в телеграм боте?

    shurshur
    @shurshur
    При такой постановке вопроса - обратиться на фриланс.
  • Разобраться с моим кодом, можно?

    shurshur
    @shurshur
    aleksandr_twitt, функция в Python тоже переменная. Например, есть встроенная функция id, но можно создать переменную id, и функцию id больше нельзя будет использовать.

    ... Хотя, на самом деле можно. Если заранее присвоить её другой переменной. Для улучшения понимания вот поигрался с функцией id:

    >>> print (id)
    <built-in function id>
    >>> python_id=id
    >>> id=123
    >>> print (id)
    123
    >>> print (python_id)
    <built-in function id>
    >>> print (python_id(id))
    9792864
    >>> print (python_id(python_id))
    140628929771536
  • Как скачать документ, книгу с защищенного сайта(только чтение) (Для примера взял книгу с открытым доступом)?

    shurshur
    @shurshur
    Ailteres1, есть очень много способов не дать скачать файлы мимо браузера.

    Первый и самый простой (но часто применяющийся и довольно эффективный против самых неискушённых пользователей) - проверка Referer. Когда пользователь скачивает файл браузером, тот подставляет в заголовок Referer адрес страницы. При скачивании можно проверить, что Referer указан и содержит родной домен сайта (а то может и что в нём конкретная страница, чтобы нельзя было наивно передавать главную страницу сайта во все запросы), и в случае отсутствия/неверности выдавать 403 вместо файла. Это также помогает от "хотлинков" - прямых ссылок с чужого сайта на свои файлы - что позволяет чужие файлы отдавать с левого сайта под видом своих собственных.

    Развитием этого способа является проверка и других заголовков. В частности, User-Agent программ-качалок часто выдаёт их, что позволяет легко закрыть простой доступ для curl и wget (да, им можно переопределить User-Agent, но неискушённый пользователь и тут может не разобраться). Или можно проверять наличие каких-нибудь Accept-Language, который современные браузеры обычно выставляют, а качалки - нет.

    Далее, можно использовать куки. Тогда без посещения сайта из браузера куки не будут выставлены. Конечно, их можно протащить в файлокачалку, но тоже не всякий справится. До кучи можно сверять заголовки: если с теми же куками придёт пользователь с другим User-Agent - это уже признак того, что он больше не использует предыдущий браузер.

    И наконец можно выдавать пользователю индивидуальные ссылки, привязанные к его IP и/или кукам, возможно имеющие срок жизни и криптографическую подпись. Если ссылки на файлы имеют вид навроде filename.png?expires=1675719469&ip=111.111.111.111&hash=43c2a45a - то это как раз такой случай.

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

    К любому сайту нужен индивидуальный подход.
  • Где взять анти-паджинатор?

    shurshur
    @shurshur
    Вова, общее решение малореально, так как реализации у всех очень разные. У кого-то подгрузка через ajax, у кого-то в ссылку передаётся номер страницы, у кого-то ещё и размер страницы может настраиваться. Плюс может быть так, что, например, число страниц в принципе ограниченно (пример: nyaa.si принципиально показывает не больше 100 страниц по любому запросу или фильтру).

    Также и полученный контент страницы надо парсить индивидуально. Например, там может быть блок рекомендаций, рекламный блок и блок основного контента, оформленные одинаковыми или похожими тэгами. И всё это надо индивидуально учитывать.

    Я довольно много всяких разных парсеров писал. Пагинаторы очень разные бывают. Некоторые показывают общее число страниц, некоторые нет (тогда приходится идти по страницам вслепую). У кого-то нумерация с 0, у кого-то с 1. Где-то страница отдаётся по номеру, где-то - по смещению. Бывает так, что первая страница отдаётся в теле, а последующие отдаются ajax, причём в ответе может быть как кусок html для вставки в страницу, так и структурированные данные в json/xml/txt/ещёкакомнитьвиде. Могут быть вставки каких-нибудь странных вещей типа вопроса "а вам действительно 18+ лет для показа последующего контента?" Ещё можно встретить сайты с вебсокетами.

    А ещё сайты бывают просто овербольшими. Уверяю, скачать 10000 страниц в один файл это не только медленно, но и неудобно.

    У меня налажен подход с готовыми функциями, которые кладут все файлы в кэш, умеют delay между запросами или expiration по времени файла. Парсить сайты с тысячами страниц (иногда ещё и тормознутые) намного удобнее, если не перекачивать уже накопленные данные. Вот, например, у меня тут кэш одного книжного сайта - 72 тыс. файлов.

    И как я уже говорил, многие сайты вяло или активно борются с качальщиками. Поэтому приходится с каждым разбираться отдельно. Кому-то достаточно полусекундные задержки, кому-то надо куки из браузера, а кому-то решать капчу каждые 1000 запросов...
  • Как получить access_hash с приватной супергруппы?

    shurshur
    @shurshur
    KPoseidon, разумеется, я читаю и вижу слово БОТ, а тут регулярно спрашивают, почему БОТ не может получить список подписчиков через БОТ API. Пользователь с собственным клиентским приложением - это не БОТ.

    Ну а так вообще надо читать документацию. Мне никогда не нужно было дампить подписчиков, поэтому я не вникал в особенности этого процесса.

    И надо не забывать, что канал в Телеграме существенно отличается от группы, работать с ними одинаково часто неверно.
  • Как скачать документ, книгу с защищенного сайта(только чтение) (Для примера взял книгу с открытым доступом)?

    shurshur
    @shurshur
    Ailteres1, скорее всего качал прямо в браузере каким-нибудь расширением, которое воспроизводит этот браузер, в том числе куки.
  • Как получить access_hash с приватной супергруппы?

    shurshur
    @shurshur
    KPoseidon, начнём с того, что бот в принципе не может получить список подписчиков через Bot API...
  • Как получить access_hash с приватной супергруппы?

    shurshur
    @shurshur
    KPoseidon, достаточно логично, что достать участников приватной группы нельзя, если в ней не состоишь и даже инвайта в неё не имеешь.
  • Где взять анти-паджинатор?

    shurshur
    @shurshur
    Вова, с другой стороны немного странно, я вроде раньше набредал на книги которые на livelib.ru были выложены с текстом, а сейчас куда ни ткнёшь - там везде "бумажная". И непонятно, есть ли там вообще тексты хоть каких-то книг?