Задать вопрос
  • Как в Linux задать переменную в кавычках?

    shurshur
    @shurshur
    andreymamontov,

    echo "export VAR=\"value\"" >> /etc/environment && source /etc/environment


    Можно же просто попробовать, вместо /etc/environment используя для экспериментов какой-нибудь безопасный файл типа /tmp/test_environment.
  • Как получить ссылку на функцию из класса?

    shurshur
    @shurshur
    FOUREX, код делает то, что в нём написано.

    self.new_alias будет ссылкой не на исходную функцию new_alias, а на функцию wrapper из декоратора. Эта функция возвращает те значения, которые переданы в параметрах декоратора. Исходную функцию она не вызывает. При вызове декорированной функции будут, конечно, возвращены значения из декоратора - что и наблюдается в реальности.

    Если грубо представить, то декоратор заменяет исходную функцию другой функцией wrapper, которая может вызвать, а может и не вызвать исходную. Сама функция декоратора при этом вызывается один раз - в момент описания класса.

    Например, можно завести в классе статический список Aliases.commands_list (общий на все экземпляры класса), а декоратор будет в него добавлять. Примерно так:

    def command(function, *, name:str, args:dict):
        def wrapper(*args, **kwargs):
            return function(*args, **kwargs)
        Aliases.commands_list.append({"name":name,"args":args})
        return wrapper
    
    class Aliases:
        commands_list = []
    
        @property
        def commands(self) -> tuple:
            return tuple(self.commands_list)
    
        @command(
            command="новый алиас",
            args={"алиас": "str"}
        )
        def new_alias(self, message: types.Message):
            ...


    Я бы посоветовал посмотреть, как подобную задачу решают взрослые библиотеки с декораторами такого типа (обработчики команд для telegram, для discord...).
  • Как ограничить частоту нажатий кнопки?

    shurshur
    @shurshur
    mihamihali, например, после выполнения запроса отправить новую клавиатуру со следующим сообщением.
  • Как ограничить частоту нажатий кнопки?

    shurshur
    @shurshur
    mihamihali, в порядке занудства замечу, что никакая библиотека в вопросе не упомянута. Но вообще обычно никто не делает для этого проверку двойного нажатия, так как для однократных кнопок можно просто сделать onetime-клавиатуру (исчезнет после нажатия кнопки), а если клавиатура не одноразовая, то как бы и задумано, что на её кнопки можно нажимать неоднократно.
  • Что нужно для своего сервиса отправки смс?

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

    shurshur
    @shurshur
    Alexey Zolotarev, тогда можно попробовать финский нож:

    1. В grub у ядра указываем параметр init=/bin/bash

    2. Загружаемся.

    3. mount -o rw,remount /

    4. Вручную правим что нам нужно.

    5. mount -o ro,remount /

    6. reboot

    Вообще говоря, нужное находится в файле /etc/default/keyboard и можно в нём порядок раскладок и переключатель поменять.
  • Как переключиться с русской на английскую раскладку в консоли tty?

    shurshur
    @shurshur
    Попробуй dpkg-reconfigure keyboard-configuration. Правда это придётся делать уже после логина.

    А вообще вероятно надо грузиться в recovery и вручную ковыряться уже.
  • Можно ли отследить текст нажатой инлайн кнопки в телеграмм?

    shurshur
    @shurshur
    Роман Бурч, название на кнопке не содержит информацию, которая передаётся в бота.

    9 функций делать не надо. Достаточно одной функции, которая будет обрабатывать разные значения.
  • Влладалаьаьыджввла?

    shurshur
    @shurshur
    Не существует универсального способа поимки читов, как и не существует универсального способа обмана игры. Это может быть весьма творческим процессом с обеих сторон, сильно зависящим от конкретной игры.

    Читал где-то недавно, что один товарищ написал очень умного бота, который активно мочил NPC, но если в близкой окрестности появлялся живой игрок, то он останавливался, как будто игрок AFK. Но админы игры всё же заметили в его поведении и статистике что-то неладное, а чтобы поймать его на горяченьком, просто слегка сдвигали его на очень короткое расстояние во время боя. Короткие перемещения себя бот не замечал и в вычислениях не учитывал, на том и погорел.

    Я приведу пример не про игры, просто из практики. Был некий сайт с голосовалкой. Страница голосования содержала длинный текст, в конце которого можно было проголосовать, разгадав капчу. Все действия пользователя в этом разделе сайта логгировались, а потом использовались для последующего поведенческого анализа. В частности, была очень простая метрика накруток: если голос оставлен меньше, чем через 5 секунд, то голос постфактум исключался. Разработчик специально проверил, что при самом тщательном усердии открытие страницы, промотка её до конца и ввод капчи не могут занять меньше 7 секунд.

    Через год капчу решили заменить на интеграцию с соцсетями, и там тоже было много интересного. Куча голосов с аккаунтов, страницы которых выдавали 404 или имели имена типа Sljlffffq Ufewfhr. Распределение по странам у накрученных показывало 20-50% иностранцев, а распределение по времени суток было весьма нетипичным (специфичность конкурса означала, что 99% голосов будут не просто от русских, а вообще от москвичей в UTC+3). В общем, кто накручивал, тех было прям очень сильно видно. Более того, поиском в гугле по честным лидерам голосования можно было найти море упоминаний "прошу проголосвать" на тематических форумах, в аккаунтах соцсетей заинтересованных поддерживающих, а по накрутчикам вообще ничего не находилось, вообще никакого источника подобной активности нельзя было увидеть.

    Так что укрыться от пристального внимания и детального анализа достаточно сложно, особенно если данные анализирует достаточно внимательный и дотошный человек.
  • Что означает символ @ в правах макос?

    shurshur
    @shurshur
    TemaKam, ну значит реально есть что-то ещё. К слову, макось создаёт на неродных файловых системах файл .DS_store с какими-то данными, а при штатном создании zip-архивов в них ещё помещается какой-то мусор.

    На самом деле в Linux тоже бывает POSIX extended attributes, возможно что-то подобное.
  • Что означает символ @ в правах макос?

    shurshur
    @shurshur
    TemaKam, я лет 10 уже не щупал макось, да и тогда не особо в ней ковырялся, только решал спонтанные задачи. Поэтому не разбираюсь в её особенностях. Может, в ней acl просто через @ и показываются?
  • Как использовать вк для предачи данных?

    shurshur
    @shurshur
    Выглядит как какое-то извращение, потому что проще написать свой сервер, например, на вебсокетах, и использовать его для обмена данными.
  • Что означает символ @ в правах макос?

    shurshur
    @shurshur
    TemaKam, в Linux может отображаться @ как признак того, что это симлинк, при некоторых ключах ls, например, ls -F. Но у имени файла, а не около прав. При наличии нестандартных acl там будет +, а не @
  • Как посчитать метрику предсказательной функции дифференцируемыми методами?

    shurshur
    @shurshur
    Вероятность p <=0,5 значит что событие не случится.


    Почему?
  • Как проверить работает ли бот или нет?

    shurshur
    @shurshur
    Asriel, я думал речь об общении между ботами, а не о проверке токена. Ну так можно просто дёргать /getMe у бота по url или создав объект бота в любимой библиотеке и вызвать от него bot.get_me(). Но глубокого смысла такого действия не понимаю.
  • Как пинговать сайт скриптом, запущенным на хероку?

    shurshur
    @shurshur
    Думается мне, что на Heroku и текст будет английский, и формат вывода будет из Linux, и кодировка cp866 не при делах... Не говоря уже о том, что и самого ping может не быть в песочнице, в которой запускается приложение.
  • Как сделать чат бота вк который будет присылать данные из БД?

    shurshur
    @shurshur
    Можно и даже разумно класть информацию в какой-нибудь менеджер очереди типа rabbitmq (не вместо базы, а совместно с ней). Можно класть информацию об изменениях в отдельную таблицу в самой базе. Можно версионировать записи в таблице, поднимая version при каждом изменении (если используемая база поддерживает триггеры, это можно даже автоматизировать), тогда бот будет запрашивать записи с version больше последней известной.
  • В чём разница между S3 CEPH и S3 HCP?

    shurshur
    @shurshur
    Любой "аналог" это всегда условность. Дело в том, что S3 - это 1) протокол 2) функционал 3) конкретная реализация.

    В своё время тестировал riak cs и в нём не было поддержки S3 SIGv4. К счастью, большинство клиентов S3 поддерживают принудительное использование SIGv2, поэтому было решаемо, но всё же. Это довольно простой и в то же время реальный пример отличий.

    Поддержка протокола S3 означает, что сервис умеет отвечать на запросы в соответствии с протоколом, но насколько глубоко он поддерживается? Там можно назначать метаданные файлам, генерировать preshared url или поддерживается lifecycle policy?

    С точки зрения функционала вообще есть ли в этом сервисе то, что нужно? Например, умеет ли он вообще удалять файлы по истечении TTL, даже если формальное назначение lifecycle policy проходит без ошибок?

    И с точки зрения реализации не факт, что всё будет работать так же, как в AWS. Например, если в AWS положить миллион файлов, то он прожуёт спокойно. А если положить в minio миллион файлов на один уровень вложенности, то будет очень грустно. Всё потому, что minio хранит каждый файл в виде каталога с шифрованным blob и метаданных в json. Запрос списка файлов вызывает миллион вызовов stat, и это ни фига не быстро, особенно на HDD. Причём ни фига не очевидно, что так будет, если исходить только из наличия поддержки S3 и формальной информации о том, что миллион туда положить можно (да, можно, но если класть неправильно, будут нюансы).

    Конкретно с Ceph не имел дело, а про HCP вообще первый раз слышу. Привёл общие соображения. Надо смотреть официальную информацию о поддержке фич (что поддерживается и насколько полноценно), гуглить опыт реальных пользователей, ну и, конечно, тестировать в своих условиях.