• Как создать свое интернет радио нубу на VPS ubunu 16.04?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Сколько угодно статей в этих ваших интернетах. Например, https://habr.com/ru/post/239541/
    Ответ написан
    Комментировать
  • Как сделать проверку - автор бот или нет?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    @client.event
    async def on_message(message):
      # проверяем, что автор - не сам бот
      if message.author == bot.user:
        return
      # и что вообще автор не какой-нить бот, в том числе чужой
      if message.author.bot:
        return
      # а теперь уже можно делать свои делишки
      ...your_other_code...
    Ответ написан
    1 комментарий
  • Продажа скриптов?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Чтобы скрипты имели коммерческую ценность, они должны быть не просто особенно дороги автору.

    Во-первых, скрипты должны быть посложнее трёх с половиной очевидных строчек, иначе их проще написать самому ещё раз, чем брать какие-то чужие.

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

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

    В интернетах тысячи чьих-то личных скриптов, которые осели на страницах блогов и в закоулках гитхабов, их никто никогда не использует, потому что зачастую никто не понимает, что они делают и зачем вообще предназначены. Даже простая публикация хорошего скрипта может потребовать кучи времени - на написание документации, на добавление конфигурационного файла вместо hard coded constants, на тщательное тестирование всех вариантов функциональности и всё такое.

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

    Скорее всего, быстро станет понятно, что усилия по такой "предпродажной подготовке" не оправдывают цены, за которую это можно продать. И появится желание опубликовать это всё бесплатно, как есть, и пополнить объёмы хранящихся в закоулках гитхаба уникальных решений банальных и небанальных задач, в которых никто никогда даже разбираться не будет.
    Ответ написан
    2 комментария
  • Как вывести рандомное изображение из файла?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    В python (как и во многих других языках программирования) символ \ в строковых значениях используется для экранирования и для спецсимволов. Например, \t - табуляция, \n - перевод строки. Поэтому использовать \ в строках так просто нельзя. Нужно или указать r перед строкой для отключения подобного поведения (r'c:\telegram'), или экранировать слеши: ('c:\\telegram').
    Ответ написан
    3 комментария
  • Где и как грамотно хранить пароли и токены в приложении?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    В первую очередь надо задать себе вопрос: от кого защищать эти пароли? Какая модель угроз? Не бывает "правильно" в сферическом вакууме, любая "правильность" бывает только в предварительных условиях и сформулированных целях.

    Чаще всего для собственного приложения на собственном сервере/компьютере нет никакого смысла прятать пароли. Те же CMS массово хранят пароли от базы в открытом виде в конфиге. Распространено такие данные выносить в отдельный файл, который не вносится в используемую систему контроля версий (git и пр.), рядом кладётся пример файла, который, наоборот в репозиторий добавляется. Например, config.py и рядом config_example.py с примером фейковых данных. Это позволяет сохранить пароли и ключи от утекания в удалённые репозитории (особенно если это Open Source), позволяет не попадаться в типичную ошибку местных новичков, которые регулярно светят куски своего кода с живыми токенами, ну и заодно можно прод/тест разворачивать на одной кодовой базе - все различия будут в этом самом файле конфига.

    Если же задача сделать так, чтобы хакер, хакнувший супер-пупер приложение и получивший доступ к локальным файлам, не смог украсть эту критически важную информацию. надо сделать так, чтобы она в соседних файлах вообще не хранилась. Самый простой способ её защитить - спрашивать при запуске и хранить только в памяти приложения. Конечно, это неудобно (кто наизусть будет помнить или по частям копипастить пачку логинов-паролей-токенов?), вместо этого можно реальные данные в конфиге зашифровать неким мастер-паролем, который и спрашивать при запуске. Соответственно, злоумышленник в самом плохом случае получит зашифрованные данные, которые без мастер-пароля бесполезны. Для упрощения подобных задач существуют специальные инструменты типа уже упомянутого тут vault.
    Ответ написан
  • Потрачу ли я время зря, продолжая учиться в ВУЗ'е, который мне не нравится?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Представь себя в качестве соискателя лет через 10. Пусть в некую перспективную фирму ищут нового сотрудника, и перед глазами HR пачка почти идентичных резюме с идентичными зарплатными ожиданиям, но у всех соискателей есть высшее образование в жизненном пути, а у тебя - нет. Кого пригласят на собеседование последним?

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

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

    Пойти и отчислиться можно всегда, это не требует много времени, но потом вернуться будет сложнее, поэтому тщательно взвешивай все "за" и "против". Может, тебе просто лучше сменить направление образования? Перейти в другой вуз? Получить образование заочно?

    Достаточно странно удивляться сложности математики на профильном факультете в одном из ведущих вузов страны. Но вот насчёт программирования претензий я вообще не понимаю. Уровень программирования в математическом вузе совсем не заоблачный. Если у тебя начались проблемы от изучения такой простой и важной темы, как ООП, то это претензия уже не к вузу. Это претензия к тебе как к будущему программисту. Если ты не можешь освоить основы под руководством преподавателя, то и самообразование в этой сфере вызовет у тебя ничуть не меньше проблем. Поэтому рекомендую задуматься именно о том, действительно ли ты хочешь выбрать путь программиста?

    И поосторожнее относись к советам опытных советчиков с этого сайта. Большинство из них отличаются от среднестатистических технарей. Они явно лучше умеют самообучаться, узнавать новые технологии, находить ответы на свои вопросы. Конечно, многим из них не так уж и сложно самостоятельно освоить сложные темы, продвинуться профессионально, пройти собеседование в приличную компанию на хорошую должность, но такой уровень доступен далеко не всем.

    И я тоже, как и все, смотрю на всё с высоты своего уровня. Когда я говорю, что программирование в математическом вузе не блещет сложностью, я говорю в первую очередь о своём опыте в этом направлении. В то же время я сам видел, как даже учившиеся лучше меня студенты испытывали с этим самым программированием сложности.

    Так что и мои советы тоже не спеши принимать за руководство к действию. Решение тебе в любом случае придётся принять самому, но его не следует принимать поспешно.
    Ответ написан
    1 комментарий
  • Как авторизироваться на сайте через requests python?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    В этом файле код https://netschool.eduportal44.ru/static/dist/pages...

    Генерируется как md5(salt+md5(password)).
    Ответ написан
  • Как в данном случае обработать словарь?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    for email,items in a_dict.items():
      for item in items:
        my_send_mail(email, item)
    Ответ написан
    1 комментарий
  • После перезагрузки не запускается iptables на Ubuntu server 20.04?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Какой демон? iptables это не демон. Этот сервис просто загружает сохранённые правила из файла при старте, а при остановке ничего не делает (либо очищает таблицы, в зависимости от настройки).

    Чтобы сохранить текущие загруженные правила, надо просто вызвать netfilter-persistent save.

    Если после перезагрузки в iptables -L есть нужные правила, то всё работает правильно.
    Ответ написан
    2 комментария
  • Возможно ли спарсить номера телефонов с телеграма?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Телеграм всячески декларирует заботу о приватности пользователей, а потому активно борется с бесконтрольным получением данных о телефонах. Так что нет, в общем случае нельзя. Но единичных пользователей можно считывать, если у них не скрыт номер телефона в профиле от посторонних, с помощью клиентского API (не бота). Много пользователей сразу сканировать не получится всё равно.

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

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

    Рекомендую даже не пытаться, тем более что в целом это лишено смысла. Телеграм - мессенджер, который изначально декларирует, что пользователь идентифицируется другими пользователями НЕ по номеру телефона в качестве основного идентификатора.
    Ответ написан
    Комментировать
  • Как получить в PHP тот же результат что и в OpenSSL?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    https://stackoverflow.com/questions/34496764/php-i...

    $data = file_get_contents("data");
    $pkeyid = openssl_pkey_get_private("file://key.pem");
    openssl_sign($data, $signature, $pkeyid, OPENSSL_ALGO_SHA256);
    openssl_free_key($pkeyid);
    print base64_encode($signature);
    Ответ написан
    4 комментария
  • Как работать с api / бот discord?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Discord API использует HTTP-запросы. Поэтому потребуется любая библиотека для таких запросов (например, libcurl). А дальше курить официальную документацию по API.

    ... Но как уже тут выше упоминали, большого смысла в этом нет. Учиться на задаче, к которой язык плохо приспособлен - идея довольно странная.
    Ответ написан
    Комментировать
  • Как обстоят дела с созданием Whatsapp бота в 2021?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Да, у WhatsApp теперь есть официальный API для интеграций. Но только для бизнесов (ИП тоже можно), плюс прямой доступ к API дают только партнёрам-агрегаторам, остальным следует использовать API этих компаний. В России прямых партнёров WA всего два, но ничто не препятствует выбирать любых зарубежных агрегаторов по своему вкусу либо партнёров второго порядка. По ценам, по наличию готовых интеграций и всё такое. Например, jivosite поддерживает интеграцию с WhatsApp, но сам партнёром WhatsApp не является и предлагает зарегистрировать бизнес-аккаунт через двух других поставщиков.

    Стоит это обычно как абонентская плата (включающая определённое количество MAU - Montly Active Users) плюс плата за каждое уведомление-нотификацию, хотя некоторые поставщики предлагают и другие модели оплаты. Поясню: в WhatsApp можно слать два вида сообщений. Во-первых, можно слать сообщения-нотификации, удовлетворяющие зарегистрированным шаблонам (реклама запрещена, только сервисный трафик), они оплачиваются. Во-вторых, если пользователь сам написал сообщение (по своей инициативе или в ответ), то открывается 24-часовое окно, в рамках которого можно слать любые сообщения, даже не удовлетворяющие шаблону, причём они будут бесплатны (но каждая коммуникация с пользователем расходует лимит MAU). 24 часа считается с последнего сообщения от пользователя - предполагается, что уж за сутки надо оказать пользователю поддержку по его обращению. У каждого поставщика обычно подробно всё это написано.

    Для регистрации в таком надо завести и верифицировать в WhatsApp бизнес-аккаунт, делегировав права на его управление нужному партнёру. С учётом процесса модерации подключение легко может потребовать 2-3 недели.

    Если поставщик предлагает копеечную оплату без абонентской платы и без ограничений на количество и содержание сообщений, плюс подключение "за один день" (без модерации Facebook), то это всё нелегальные API, основанные на имитации WhatsApp Web. Использовать их рискованно, так как можно получить бан с необходимостью менять номер.
    Ответ написан
    2 комментария
  • Как постоянно обновлять данные запрашиваемы с google spreadsheet для телеграм бота?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Например, сделать загрузку данных отдельной функцией и запоминать время последнего скачивания. Если в момент вызова send_text текущее время превышает время последнего скачивания больше чем на определённую величину (5 минут, 1 час - насколько часто надо обновлять данные?), то вызвать функцию скачивания ещё раз и обновить переменную с временем последнего скачивания.
    Ответ написан
  • Как с помощью бота запросить разрешение на получение контактов пользователя?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Нужно отправить кнопку с request_contact=True, пример есть тут
    Ответ написан
    Комментировать
  • Python как вывести динамический текст?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Как-то так:
    import time
      
    def progressbar(size=10):
      for i in range(size+1):
        bar = "|"*i+"."*(size-i)
        print (f"\r[{bar}]", end='')
        time.sleep(1)
      print ()
    
    progressbar()
    Ответ написан
    Комментировать
  • Как ловить ботом сообщения из телеграм канала?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Никак, бот не имеет доступа к сообщениям в каналах. Можно использовать MTproto API (клиентское) для таких задач.

    upd: это оказалось неверно, как обсудили в комментариях. Но следует учесть, что в том же telebot вместо @bot.message_handler следует использовать @bot.channel_post_handler
    Ответ написан
  • Как отправлять самому себе сообщения через бота телеграм?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Ошибку, вообще-то надо показывать, кто ж будет решать то не знаю что?

    Но давай я повангую.

    Во-первых, Bot - это класс. Нужно создать его экземпляр:

    from aiogram import Bot
    bot = Bot(token=config.bot_token)


    Во-вторых, при этом всё равно будет ошибка coroutine was never awaited. Потому что асинхронные функции нельзя просто так вызывать из синхронного кода.

    Вызвать можно так:

    async def main():
      await bot.send_message(my_chat_id, my_message)
      await bot.close()
    
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())
    Ответ написан
    Комментировать
  • Получится ли сохранить файлы в торрентах или IPFS, на десять лет?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Не сработает. Даже востребованным у пользователей старым раздачам на том же рутрекере уже требуется поддержка со стороны группы хранителей, а чужие непонятные файлы вообще никто никогда хранить не будет. Ну и нужно понимать, что место под хранение данных - оно по определению не бесплатное. Поэтому мечты о том, что кто-то будет просто так, по доброте душевной, хранить твои гигабайты, крайне наивны.
    Ответ написан
  • Законна ли Viber рассылка?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Размещение пользователем своего номера на "доске объявлений" не означает согласие на получение рекламной информации даже от самой доски объявлений, не говоря уже о рекламе от третьих лиц и организаций.

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

    Добавлю, что если речь идёт о сервисе Viber Business Messages, то там и формально такая реклама запрещена, и рассылка по случайно собранным номерам сама по себе гарантированно и очень быстро приводит к превышению порога 5% жалоб, по которому сервис сразу же банят. Например, один такой бизнес сразу достиг 80% блокировок, после долгих переговоров и клятвенных обещаний его разбанили, но до повторного бана сервис прожил недолго.
    Ответ написан
    Комментировать