Профиль пользователя заблокирован сроком с 12 апреля 2022 г. и навсегда по причине: спам
  • Почему программисту нужен английский?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    Как минимум для того, что-бы при сообщении вроде:
    Running as root without --no-sandbox is not supported.

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

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

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    Если у тебя в разработку сайта было вложено много миллионов денег, или слив исходников может поставить под угрозу работоспособность сайта, то тогда составляй договоры. В противном случае - это странная паранойя и ничего больше.
    Ответ написан
    Комментировать
  • Как сделать в телеботе в клавиатуре?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    После нажатия на кнопку, вызывать другую клавиатуру так-же, как ты вызывал первую.
    Ответ написан
    2 комментария
  • Pep8 как правильно переносить строку в таком варианте?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    В первую очередь это аргумент и в pep8 все довольно ясно прописано:
    The closing brace/bracket/parenthesis on multiline constructs may either line up under the first non-whitespace character of the last line of list, as in:
    or it may be lined up under the first character of the line that starts the multiline construct, as in:

    В документации Python используется первый вариант.
    Но и второй вариант более чем допустим:
    cursor.execute("""
        CREATE TABLE IF NOT EXISTS Users
        (ID INTEGER NOT NULL PRIMARY KEY,
        Text TEXT, Configuration Text)
    """)

    P.S. Лично мне гораздо удобнее избегать в аргументах формирование строк, так что я всегда делаю так:
    query = (
        'CREATE TABLE IF NOT EXISTS Users('
        'ID INTEGER NOT NULL PRIMARY KEY,'
        'Text TEXT,'
        'Configuration Text)'
    )
    cursor.execute(query)

    В целом довольно часто встречаю подобный подход.
    Ответ написан
    2 комментария
  • Почему не отправляется requests.post на сайт (ssl)?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    Сайт проверяет куки. Создай сессию, а затем делай нужные тебе запросы:
    import requests
    
    session = requests.Session()
    session.headers.update({
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'
    })
    session.get('https://www.pobeda.aero/information/booking/search_cheap_tickets/', verify=False)
    
    data = {'Culture': 'ru-RU', 'Currency': 'RUB', 'Origin': 'VKO', 'RequestType': 'MoreOffersHome'}
    response = session.post('https://www.pobeda.aero/umbraco/api/CustomTravelOffersApi/GetCustomTravelOffers', json=data, verify=False)
    
    response.json()

    oupt
    [{'departure': 'Москва',
      'arrivals': [{'image': '//static.pobeda.aero/media/1057/cheby.jpg',
        'name': 'Чебоксары',
        'currency': '₽',
        'price': '999',
        'link': {'url': 'ru/booking/select/?origin1=VKO&destination1=CSY&departure1=2020-10-13&adt1=1&tng1=0&chd1=0&inf1=0&currency=RUB',
         'target': '',
         'newTab': False},
        'umbracoSort': 0,
        'isHighlighted': False,
        'customTitle': 'Чебоксары'},
       {'image': '//static.pobeda.aero/media/1002/vladikavkaz1.jpg',
        'name': 'Владикавказ',
        'currency': '₽',
        'price': '1499',
        'link': {'url': 'ru/booking/select/?origin1=VKO&destination1=OGZ&departure1=2020-09-09&adt1=1&tng1=0&chd1=0&inf1=0&currency=RUB',
         'target': '',
         'newTab': False},
        'umbracoSort': 9,
        'isHighlighted': False,
        'customTitle': 'Владикавказ'},
       {'image': '//static.pobeda.aero/media/1006/izhevsk1.jpg',
        'name': 'Ижевск',
        'currency': '₽',
        'price': '1499',
        'link': {'url': 'ru/booking/select/?origin1=VKO&destination1=IJK&departure1=2020-09-14&adt1=1&tng1=0&chd1=0&inf1=0&currency=RUB',
         'target': '',
         'newTab': False},
        'umbracoSort': 19,
        'isHighlighted': False,
        'customTitle': 'Ижевск'},
       {'image': '//static.pobeda.aero/media/1007/kazan1.jpg',
        'name': 'Казань',
        'currency': '₽',
        'price': '1499',
        'link': {'url': 'ru/booking/select/?origin1=VKO&destination1=KZN&departure1=2020-09-08&adt1=1&tng1=0&chd1=0&inf1=0&currency=RUB',
         'target': '',
         'newTab': False},
        'umbracoSort': 10,
        'isHighlighted': False,
        'customTitle': 'Казань'},
       {'image': '//static.pobeda.aero/media/1008/kaliningrad1.jpg',
        'name': 'Калининград',
        'currency': '₽',
        'price': '1499',
        'link': {'url': 'ru/booking/select/?origin1=VKO&destination1=KGD&departure1=2020-08-24&adt1=1&tng1=0&chd1=0&inf1=0&currency=RUB',
         'target': '',
         'newTab': False},
        'umbracoSort': 18,
        'isHighlighted': False,
        'customTitle': 'Калининград'},
       {'image': '//static.pobeda.aero/media/1061/kirov.jpg',
        'name': 'Киров',
        'currency': '₽',
        'price': '1499',
        'link': {'url': 'ru/booking/select/?origin1=VKO&destination1=KVX&departure1=2020-10-05&adt1=1&tng1=0&chd1=0&inf1=0&currency=RUB',
         'target': '',
         'newTab': False},
        'umbracoSort': 16,
        'isHighlighted': False,
        'customTitle': 'Киров'},
       {'image': '//static.pobeda.aero/media/1010/krasnodar1.jpg',
        'name': 'Краснодар',
        'currency': '₽',
        'price': '1499',
        'link': {'url': 'ru/booking/select/?origin1=VKO&destination1=KRR&departure1=2020-08-24&adt1=1&tng1=0&chd1=0&inf1=0&currency=RUB',
         'target': '',
         'newTab': False},
        'umbracoSort': 15,
        'isHighlighted': False,
        'customTitle': 'Краснодар'},
       {'image': '//static.pobeda.aero/media/1001/kurgan1.jpg',
        'name': 'Курган',
        'currency': '₽',
        'price': '1499',
        'link': {'url': 'ru/booking/select/?origin1=VKO&destination1=KRO&departure1=2020-10-05&adt1=1&tng1=0&chd1=0&inf1=0&currency=RUB',
         'target': '',
         'newTab': False},
        'umbracoSort': 17,
        'isHighlighted': False,
        'customTitle': 'Курган'},
       {'image': '//static.pobeda.aero/media/1050/makhachkala.jpg',
        'name': 'Махачкала',
        'currency': '₽',
        'price': '1499',
        'link': {'url': 'ru/booking/select/?origin1=VKO&destination1=MCX&departure1=2020-08-25&adt1=1&tng1=0&chd1=0&inf1=0&currency=RUB',
         'target': '',
         'newTab': False},
        'umbracoSort': 14,
        'isHighlighted': False,
        'customTitle': 'Махачкала'},
       {'image': '//static.pobeda.aero/media/1011/minvody1.jpg',
        'name': 'Минеральные Воды',
        'currency': '₽',
        'price': '1499',
        'link': {'url': 'ru/booking/select/?origin1=VKO&destination1=MRV&departure1=2020-10-07&adt1=1&tng1=0&chd1=0&inf1=0&currency=RUB',
         'target': '',
         'newTab': False},
        'umbracoSort': 4,
        'isHighlighted': False,
        'customTitle': 'Минеральные Воды'},
       {'image': '//static.pobeda.aero/media/1012/murmansk1.jpg',
        'name': 'Мурманск',
        'currency': '₽',
        'price': '1499',
        'link': {'url': 'ru/booking/select/?origin1=VKO&destination1=MMK&departure1=2020-09-19&adt1=1&tng1=0&chd1=0&inf1=0&currency=RUB',
         'target': '',
         'newTab': False},
        'umbracoSort': 13,
        'isHighlighted': False,
        'customTitle': 'Мурманск'},
       {'image': '//static.pobeda.aero/media/1053/nab_chelny.jpg',
        'name': 'Набережные Челны',
        'currency': '₽',
        'price': '1499',
        'link': {'url': 'ru/booking/select/?origin1=VKO&destination1=NBC&departure1=2020-09-18&adt1=1&tng1=0&chd1=0&inf1=0&currency=RUB',
         'target': '',
         'newTab': False},
        'umbracoSort': 5,
        'isHighlighted': False,
        'customTitle': 'Набережные Челны'},
       {'image': '//static.pobeda.aero/media/1064/nazran.jpg',
        'name': 'Назрань (Магас)',
        'currency': '₽',
        'price': '1499',
        'link': {'url': 'ru/booking/select/?origin1=VKO&destination1=IGT&departure1=2020-09-26&adt1=1&tng1=0&chd1=0&inf1=0&currency=RUB',
         'target': '',
         'newTab': False},
        'umbracoSort': 11,
        'isHighlighted': False,
        'customTitle': 'Назрань (Магас)'},
       {'image': '//static.pobeda.aero/media/1039/perm.jpg',
        'name': 'Пермь',
        'currency': '₽',
        'price': '1499',
        'link': {'url': 'ru/booking/select/?origin1=VKO&destination1=PEE&departure1=2020-10-08&adt1=1&tng1=0&chd1=0&inf1=0&currency=RUB',
         'target': '',
         'newTab': False},
        'umbracoSort': 8,
        'isHighlighted': False,
        'customTitle': 'Пермь'},
       {'image': '//static.pobeda.aero/media/1013/petrozavodsk.jpg',
        'name': 'Петрозаводск',
        'currency': '₽',
        'price': '1499',
        'link': {'url': 'ru/booking/select/?origin1=VKO&destination1=PES&departure1=2020-09-21&adt1=1&tng1=0&chd1=0&inf1=0&currency=RUB',
         'target': '',
         'newTab': False},
        'umbracoSort': 12,
        'isHighlighted': False,
        'customTitle': 'Петрозаводск'},
       {'image': '//static.pobeda.aero/media/1025/stavropol.jpg',
        'name': 'Ставрополь',
        'currency': '₽',
        'price': '1499',
        'link': {'url': 'ru/booking/select/?origin1=VKO&destination1=STW&departure1=2020-09-03&adt1=1&tng1=0&chd1=0&inf1=0&currency=RUB',
         'target': '',
         'newTab': False},
        'umbracoSort': 7,
        'isHighlighted': False,
        'customTitle': 'Ставрополь'},
       {'image': '//static.pobeda.aero/media/1024/ufa.jpg',
        'name': 'Уфа',
        'currency': '₽',
        'price': '1499',
        'link': {'url': 'ru/booking/select/?origin1=VKO&destination1=UFA&departure1=2020-09-03&adt1=1&tng1=0&chd1=0&inf1=0&currency=RUB',
         'target': '',
         'newTab': False},
        'umbracoSort': 6,
        'isHighlighted': False,
        'customTitle': 'Уфа'},
       {'image': '//static.pobeda.aero/media/1014/anapa.png',
        'name': 'Анапа',
        'currency': '₽',
        'price': '1799',
        'link': {'url': 'ru/booking/select/?origin1=VKO&destination1=AAQ&departure1=2020-08-26&adt1=1&tng1=0&chd1=0&inf1=0&currency=RUB',
         'target': '',
         'newTab': False},
        'umbracoSort': 20,
        'isHighlighted': False,
        'customTitle': 'Анапа'},
       {'image': '//static.pobeda.aero/media/1013/nalchik1a.jpg',
        'name': 'Нальчик',
        'currency': '₽',
        'price': '1799',
        'link': {'url': 'ru/booking/select/?origin1=VKO&destination1=NAL&departure1=2020-09-17&adt1=1&tng1=0&chd1=0&inf1=0&currency=RUB',
         'target': '',
         'newTab': False},
        'umbracoSort': 21,
        'isHighlighted': False,
        'customTitle': 'Нальчик'},
       {'image': '//static.pobeda.aero/media/1016/sochi1.jpg',
        'name': 'Сочи',
        'currency': '₽',
        'price': '1800',
        'link': {'url': 'ru/booking/select/?origin1=VKO&destination1=AER&departure1=2020-08-24&adt1=1&tng1=0&chd1=0&inf1=0&currency=RUB',
         'target': '',
         'newTab': False},
        'umbracoSort': 22,
        'isHighlighted': False,
        'customTitle': 'Сочи'}]}]
    Ответ написан
    2 комментария
  • Можно ли загрузить Java приложение в Windows Store?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    Загружать в Windows Store можно только UWP приложения. Вроде как что-то можно сделать с Codename One, возможно поможет.
    Ответ написан
  • Зачем боты оставляют нереальные email на формах подписки?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    Если что, то у большого количества людей есть вторая почта, которую они используют для рандомных регистраций и подписок, чаще всего указывая рандомные имена. У меня, например, такая почта подписана именем Ahmad Shermodan. Так вот, повторю свой вопрос - на основании чего ты решил, что этот емейл является частью какой-то сети ботов? Давай свой сайт, я подпишусь со своего второго емейла и с вероятностью >90% он тоже будет помечен, как неактивный.

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

    За свой сайт можешь не беспокоиться, так как вероятнее всего это не твой случай.
    Ответ написан
    Комментировать
  • Где брать Основу-Ядро для бота?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    То, что ты хочешь - это готовый продукт, по типу botmother, pipe и прочих. Регистрируешься, платишь деньги и в конструкторе делаешь бота.
    А если ты хочешь "писать" бота, то никаких "ядер" не существует, в реальном мире люди берут что-то вроде php-telegram-bot и какой-то веб-фреймворк (да хоть symfony) для админки.
    Ответ написан
  • С чего начать изучение Azure?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    Может вообще не искал? Заходишь в список всех курсов, выбираешь "схема обучения" и смотришь. А среди них оказывается есть схема и для Azure.
    Лучше материала ты не найдешь по Azure.
    Ответ написан
  • Adsbot/3.1 чей бот?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    IP - скорее всего прокси.
    Схожий User-Agent я и сам несколько раз использовал для парсинга. Так что скорее всего тебя парсят.
    Ответ написан
  • Selenium WebDriver vs PhantomJS API?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    В плане скорости работы лучше Chrome ничего нет. Если быть точнее, то в большинстве случаев разница между Chrome/Firefox минимальная, а вот PhantomJS сильно уступает им. Вопрос только в том, какой именно производительности тебе будет достаточно: если не стоит потребность выигрывать на каждом действии любоую 1 мс, то бери то, с чем удобнее будет работать, если же вопрос производительности критичный, то можешь не смотреть в сторону PhantomJS.
    Ответ написан
    Комментировать
  • Где в сети можно хранить код и обращаться к нему из проекта на локальном ПК?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    100% безопасности не существует нигде в принципе. И я не об IT, а о всём мире в целом.

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

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    требует аргументы указывать в квадратных и круглых скобках

    Они требуют любой итерируемый объект, а не квадратные, или круглые скобки, что бы из него составить список, или кортеж. Так можно list((1, 2, 3)) и так тоже list('abc').
    Ответ написан
    Комментировать
  • Как обьденить текст в 1 сообщение?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    text = ''
    for i in range(len(t)):
        text = text + (
            f'Найдено в AVITO\n\n'
            f'<b>Объявление</b> <code>{str(i+1)}</code>\n\n'
            f'<b>Имя: </b><code>{name}</code>\n\n'
            f'<b>Название: </b><code>{t[i].getText()}</code>\n\n'
            f'<b>Адрес:</b><code>{p[i].select("span")[0].getText()}</code>\n\n'
            f'<b>Дата Публикации: </b><code>{p[i].select("span")[1].getText()}</code>'
        )
    
    bot.send_message(message.chat.id, text, parse_mode='html')
    Ответ написан
  • GET запрос работает в POSTman, но возвращает 403 в python requests?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    Ты не все заголовки передал. Postman по-умолчанию генерирует некоторые заголовки самостоятельно, вот так подключается нормально:
    headers = {
        'Host': 'ovga.mos.ru',
        'User-Agent': 'Magic User-Agent v999.26 Windows PRO 11',
        'Accept': '*/*',
        'Accept-Encoding': 'gzip, deflate, br',
        'Connection': 'keep-alive',
        'X-Requested-With': 'XMLHttpRequest'
    }
    url = 'http://ovga.mos.ru:8080/_ajax/pass/list?search={"grz":"К239ММ159"}&sort=validitydate&order=desc'
    response = requests.get(url, headers=headers)

    <Response [200]>
    Ответ написан
    Комментировать
  • Как использовать команду только один раз VK Api python?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    В БД создай поле, куда сохраняй промо-код, при активации делай проверку есть ли промо-код у данного пользователя, если есть - отклоняешь, если нет - принимаешь и добавляешь промо-код в поле.
    Ответ написан
    Комментировать
  • В чем смысл фреймворка Scrapy?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    Автоматизация процесса парсинга. Вместо того, что бы самому писать логику многопоточности, перехода по страницам, обработку/хранение данных и прочее, можно использовать Scrapy, который деляет это все из коробки.
    Ответ написан
    Комментировать
  • Как почистить html код?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    Регулярным выражением, как вариант:
    In [1]: foo = 'a:3:{s:6:"update";i:1591804805;s:8:"encoding";s:12:"utf-8";s:4:"urls";a:4:{i:991;a:2:{i:0;s:1:"/";i
       ...: :1;s:66:"<a href="https://site1.com">фильмы онлайн</a>";}i:1113;a:2:{i:0;s:1:"/";i:1;s:108:"Смотреть <a hr
       ...: ef="https://site2.net">кино</a> онлайн без регистрации";}i:1793;a:2:{i:0;s:1:"/";i:1;s:149:"Советую фильмы
       ...:  на сайте <a href="http://site3.online">site3.online</a>";}i:1822;a:2:{i:0;s:1:"/";i:1;s:73:"<a href="http
       ...: s://www.site4.org/">ФИЛЬМЫ - ЛУЧШЕЕ</a> ";}}}'
    
    In [2]: import re
    
    In [3]: a_link_pattern = re.compile(r'\<a\s.+?\<\/a\>')
    
    In [4]: for elem in a_link_pattern.findall(foo):
       ...:     print(elem)
       ...:
    <a href="https://site1.com">фильмы онлайн</a>
    <a href="https://site2.net">кино</a>
    <a href="http://site3.online">site3.online</a>
    <a href="https://www.site4.org/">ФИЛЬМЫ - ЛУЧШЕЕ</a>
    Ответ написан
    1 комментарий
  • Как хранить файлы документы в SQlite?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    В SQLite ты не можешь хранить файлы, в лучшем случае использовать её для индексирования файлов, если их будет слишком много. А вообще научись гуглить - это очень просто: пишешь в гугле "python file share bot telegram" и по первой ссылке сразу репозиторий ровно с тем, что ты хочешь, прям 1 в 1, вот оно.
    Ответ написан
  • Как нажать правой кнопкой мыши с selenium?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    Никак. Все данные в мессенджер приходят через вебсокет, на странице ничего не хранится, с буфером обмена Selenium не работает.
    Ответ написан
    Комментировать