• Во время использования бота не срабатывает с первого раза команда старт, как исправить?

    @OlegPyatakov
    pyatakov.com
    Это может быть связано с ошибками в коде бота.
    Ответ написан
    Комментировать
  • Разобраться с серваком, какой лучшие выбрать и что купить?

    @Wexter
    Может стоит доверить это работу знающему человеку?
    Ответ написан
    1 комментарий
  • Как декомпилировать exe файл скрипта на Python?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    1. Скачиваешь PyInstaller Extractor
    2. Устанавливаешь uncompyle6
    3. Распаковываешь extractor'ом exe'шник
    4. Декомпилируешь интересующие pyc-файлы с помощью uncompyle6
    Ответ написан
    Комментировать
  • Как остановить рекурсивную функцию и все ее подвызовы?

    longclaps
    @longclaps
    Ну ты далеко зашел, почти что первопроходец )
    class Catapult(Exception):
        pass
    
    def recursive(x):
        if not x:
            raise Catapult
        recursive(x - 1)
    
    try:
        recursive(10)
    except Catapult:
        print("ну слава богу")
    Ответ написан
    1 комментарий
  • Что означает знак "!" в математике?

    @xdgadd
    ML/Python/Cpp
    Это не C++, а математическая нотация. В данном случае `!` означает факториал.

    А в C++ `!` является оператором логического отрицания.
    Ответ написан
    1 комментарий
  • Python. Как вставить переменную в sql запрос?

    adugin
    @adugin Куратор тега Python
    Format String Syntax
    name = 'toster'
    option1 = f"CREATE TABLE '{name}' ..."
    option2 = "CREATE TABLE '{0}' ...".format(name)
    option3 = "CREATE TABLE '{name}' ...".format(name='toster')
    option4 = "CREATE TABLE '{name}' ...".format(**{'name': 'toster'})
    Ответ написан
    2 комментария
  • PHP vs GOLANG, парсер, на чем писать?

    t-alexashka
    @t-alexashka
    Сразу пишу legacy код
    Экономичнее на том - на чем удобнее тебе самому. Что лучше знаешь, на том и пиши.
    Ответ написан
    Комментировать
  • Как определять пользователя по компьютеру?

    Вам поможет в этом вот эта статья https://habrahabr.ru/company/oleg-bunin/blog/321294/ Банальный Browser Fingerprint, есть и готовые решения
    Ответ написан
    Комментировать
  • Как отправить файл с другого сервера в чат telegram bot?

    seoperin
    @seoperin
    Full stack web developer. Laravel / Vue
    Скачать, отправить, удалить
    Ответ написан
    Комментировать
  • Заражение вирусами в ОЧЕНЬ большой сети?

    Jump
    @Jump
    Системный администратор со стажем.
    Нужен анализ конкретной версии локера.
    Как правило такого рода программы создают временные файлы необходимые для работы, поэтому зачастую можно заблокировать его распостранение созданием этих файлов в режиме рид онли.
    Но это прокатит от XP и выше.
    На XP накатить патч для SMB

    На Win98 боюсь самое адекватное - полное запрещение SMB и перевод файлообмена на другой протокол, например FTP, btsync и прочее подобное.

    1)Вынос файловых шар на сервера с современными ОС, жесткая настройка прав, чтобы шифровальщик не мог дотянутся до всех файлов. На серверах теневые копии.
    2)Регулярное создание теневых копий на всех машинах от XP и выше. Например раз в час или в два часа.
    3)Регулярные бэкапы в формате образа диска- чтобы можно было развернуть полностью работающую ОС
    Ответ написан
    6 комментариев
  • Как добавить A-запись с ru-center?

    andrey004
    @andrey004
    домен делегирован на name-серверы 1gb.ru. следовательно делать любые изменения в днс-записях следует на 1gb.ru.

    либо можно делегировать домен куда-нибудь в другое место и управлять записями уже оттуда.
    Ответ написан
    Комментировать
  • Почему добавляется +5px?

    @kiberlain
    потому что картинка по умолчанию строчный (инлайновый) элемент. Все инлайновые элементы воспринимаются как строки текста, а так как у текста (у отдельных символов, например символ "y" имеет снизу "хвостик" ) то браузер специально добавляет отступы снизу-сверху, чтобы символы полностью поместились в строку по высоте. Поэтому, что бы картинка воспринималась не как строчный, а как блочный элемент надо задавать для неё правило display: block

    jsfiddle.net/p2btx682
    Ответ написан
    2 комментария
  • Как побеждать на олимпиадах по математике и информатике?

    Daniro_San
    @Daniro_San
    Программист
    Никак

    Знающий не говорит, говорящий не знает (Лао Цзы)


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

    От себя скажу что решать олимпиады по программированию != Хорошо программировать

    Говорю как человек в оных регулярно участвующий.

    Олимпиады приучают ко всем антипаттернам, ограничения по времени не дают найти красивое и изящное решение, заставляют копипастить и писать "лишь бы работало".

    Не веришь? Посмотри любые решения олимпиадников - на codeforces.com например.
    Там по всем стандартам ад и ужас.

    Лучше потратить время на что то действительно полезное, например на свой проект, разработка которого только в радость.
    Ответ написан
    Комментировать
  • Что сравнивается при сравнении массива с числом?

    @javedimka
    Хочу сока
    В питоне это называется списком, лучше уточнять.

    А ответом на твой вопрос является версия Python, когда ты в Python 2 сравниваешь два не одинаковых типа данных, то они сравниваются лексикографически(так это называется?), когда два названия типа сравниваются по алфавиту, т.е. тип списка это "list", тип целого числа это "int", сравнивается первая буква каждого слова, в английском алфавите буква L идет после i, т.е. порядковый номер буквы L(12) в алфавите больше, чем порядковый номер i(9), поэтому получается, что list > int (12>9), поэтому в Python 2 список больше числа с типом int (или float, decimal, по аналогии, но при этом числовые типы int, float, decimal можно успешно сравнивать между собой.)

    В Python 3 получишь ошибку:
    >>> x = [2, 3, 4, 6]
    >>> x > 1
    Traceback (most recent call last):
      File "<pyshell#2>", line 1, in <module>
        x > 1
    TypeError: unorderable types: list() > int()
    Ответ написан
    Комментировать
  • Как на python3 сделать аналог cmd?

    @javedimka
    Хочу сока
    Используй словарь.
    На твоем же примере read 2017 admin
    Функции в примере просто будут выводить все переданные аргументы:
    def create(*args):
        print("'Create' Function with given args:")
        for arg in args:
            print('%8s' % (arg))
    
    
    def read(*args):
        print("'Read' Function with given args:")
        for arg in args:
            print('%8s' % (arg))
    
    
    def update(*args):
        print("'Update' Function with given args:")
        for arg in args:
            print('%8s' % (arg))
    
    
    def delete(*args):
        print("'Delete' Function with given args:")
        for arg in args:
            print('%8s' % (arg))
    
    # Словарь с функциями. Ключом является вводимая команда.
    options = {"create": create,  "read": read, "update": update, "delete": delete}
    
    # Входим в бесконечный цикл, программа не будет завершаться после выполнения
    # первой же введенной команды.
    while True:
        # Получаем строку от пользователя и разбиваем по пробелам в список.
        # Если user input = read 2017 admin, то получим ['read', '2017', 'admin'].
        command = input("command? ->").split()
        # Используем метод словаря .get() для получения функции
        # связанной с введенной командой, записываем ее в переменную option.
        option = options.get(command[0])  # command[0] - операция индексации списка.
        # Проверяем удалось ли получить функцию связанную с командой пользователя.
        if option:
            # Если удалось, то вызываем функцию с аргументами полученными с помощью
            # операции извлечения среза и распаковки списка в отдельные аргументы.
            option(*command[1:])


    Вывод :
    command? ->read 2017 admin
    'Read' Function with given args:
        2017
       admin
    command? ->


    Бонусом небольшое объяснение про звездочку.

    Инструкция * в зависимости от того где она находится делает разные вещи(помимо умножения):

    В строке с объявлением функции ( def create(*args): ) она позволяет "запаковать" все переданные функции аргументы в один кортеж args. То есть нет необходимости указывать какие именно позиционные аргументы ожидает получить функция, можно передать любое их количество (нуль и более).

    В строке с вызовом функции ( option(*command[1:]) ) она позволяет "распаковать" все элементы последовательности в отдельные позиционные аргументы. То есть все объекты в указанной последовательности command[1:] будут передаваться в функцию как отдельные позиционные аргументы.

    В примере сверху если предварительно не распаковать command[1:] в отдельные аргументы, звездочка запакует в кортеж args целый список, т.е. получим (['2017', 'admin']) - кортеж с одним объектом внутри, что сломает наши функции, придется дополнить цикл тремя лишними символами для их работоспособности (добавить индексацию кортежа: for arg in args[0]). Если же распаковать, то получим кортеж с двумя объектами внутри, что позволит напрямую пройтись в цикле по кортежу.

    Больше информации про распаковку аргументов, индексацию списка и извлечению срезов можно найти в гугле. ( Например про родственника звездочки * двойную звездочку ** которая помогает в работе с именованными аргументами)
    Ответ написан
    Комментировать
  • Как побороть страх?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    1. Беря на работу новичка, работодатель никогда не ждет от него умения справиться с первой задачей полностью самостоятельно. Есть испытательный срок, никто не банит вас от гугла, никто не заставляет работать в одиночку над проектом. На техническом интервью вас спросят достаточно, чтобы понять хватит ли у вас технических знаний чтобы работать, или чтобы разобраться.

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

    3. Первая работа полученная на первом интервью - это весьма не частая вещь. Чем дольше будете бояться первого интервью, тем дольше вы не попадете на второе, третье, десятое и наконец то самое, где вас возьмут. Интервью это не только выяснить чего вы не знаете, это еще и выяснить что вообще делается на интересующей вас должности в интересующей вас фирме.
    Ответ написан
    3 комментария
  • Что должна вернуть функция?

    @Firik67
    Middle PHP Developer
    return прерывает выполнение функции, а print нет. Поэтому нужно сначала, вместо return, складывать все нужные значения в массив, а затем уже возвращать сам массив.
    Что то вроде этого:
    def my_list(path):
        filePaths = []
        for dirname, dirnames, filenames in os.walk(path):
            filenames = filter(lambda x: x.endswith('.html'), filenames)
            for filename in filenames:
                file = os.path.join(dirname, filename)
                filePaths.append(file)
        return filePaths
    Ответ написан
    2 комментария
  • Как подобрать примитивный парсер?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Парсер xml, либо html вам в помощь
    >>> import xml.etree.ElementTree as ET
    >>> root = ET.fromstring('<img src="some.jpg"></img>')
    >>> root
    <Element 'img' at 0x104bd5458>
    >>> root.get('src')
    'some.jpg'
    >>> root.tag
    'img'


    Хочется велосипедов - сделайте сами магию:
    >>> def some_magic(patt, str_in):
    ...     import re
    ...     patt = patt.replace('%s', '(.*)')
    ...     res = re.match(patt, str_in)
    ...     return res.groups()
    ... 
    >>>
    >>> print(some_magic('<%s=\"%s\">', '<img src="some.jpg">')) 
    ('img src', 'some.jpg')
    Ответ написан
    7 комментариев
  • Как на одной linux-машине запустить несколько сервисов, но так, чтобы каждый сервис имел уникальный ip?

    @mureevms
    Поставьте фронтэндом nginx и повесьте на один IP адрес хоть сотню сервисов на 80 порту с доступом по доменному имени.
    Ответ написан
    16 комментариев