Задать вопрос
  • ArgParse: mutually exclusive arguments на месте positional?

    @abcd0x00
    parser_write = subparsers.add_parser(
        'write',
        help='Write вфеф',
        usage='%(prog)s [-h] address {data|-f FILE}'
    )
    Ответ написан
  • Как превести str к нормальному виду в Python 3?

    @abcd0x00
    Нужно сначала разделить на пары, а потом в цикле склеивать.
    >>> import email.header
    >>> 
    >>> s = "=?UTF-8?B?UmVsZWFzZS5yYXI=?="
    >>> 
    >>> email.header.decode_header(s)
    [(b'Release.rar', 'utf-8')]
    >>>


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

    @abcd0x00
    Какие библиотеки использовать: numpy, ctruct?

    Никакие, это все делается средствами ядра.

    Как то же самое написать на Python3?

    Даже специальные двоичные константы есть
    >>> 0b10101 & 0b11 == 1
    True
    >>>
    Ответ написан
    3 комментария
  • Как преобразовать строку HEX значений в текст на Python 3?

    @abcd0x00
    >>> s = '0025043F043504400435043004340440043504410025043204410435044500200432'
    >>> b = bytes.fromhex(s)
    >>> b.decode('utf-16-be')
    '%переадрес%всех в'
    >>>
    Ответ написан
    7 комментариев
  • Как работает модуль getopt из стандартной библиотеки Python?

    @abcd0x00
    Используй argparse.

    Прошу объяснить пример из стандартной документации python getopt

    А к getopt эти вопросы никакого отношения не имеют, вообще никакого отношения.

    В частности откуда взять функцию usage()? Почему такие разные параметры sys.exit() и sys.exit(2)? Какую роль выполняет переменная verbose? Что делает команда assert False ...?

    usage() и verbose - это просто самодельные вещи, которые можно любыми написать.
    https://docs.python.org/3/library/sys.html#sys.exit
    https://docs.python.org/3/reference/simple_stmts.h...
    Ответ написан
    Комментировать
  • Как сделать бинарный поиск на си?

    @abcd0x00
    Как сделать бинарный поиск на си?

    Он уже сделан - функция bsearch().
    Ответ написан
    Комментировать
  • Как массово удалить файлы по имени?

    @abcd0x00
    Если пробелов в путях нет, то
    rm -f `cat list.txt`
    Если есть пробелы, то
    cat file.txt | while read f; do rm -f "$f"; done
    Ответ написан
    Комментировать
  • Какая максимально допустимая длина строки с кодом в Python?

    @abcd0x00
    2. Для чего вообще нужно это ограничение?

    У этого параметра есть несколько аспектов.
    1)
    Самая древняя причина - это размер окна редактора. Раньше терминалы были и там был стандантрный размер 80x24 (80 колонок на 24 строки). Соответственно, длинные строки некрасиво переносились или вылазили за край в невидимую область (в зависимости от редактора). Там ещё могут быть причины, но из той же области.
    2)
    Есть такое правило: один оператор - одна строка. Связано это с отладчиками. Когда в отладчике происходит ошибка в операторе, тот указывает строку, в которой ошибка. Если в строке несколько операторов, то непонятно, в каком из них ошибка, и приходится их разделять по разным строкам и прогонять всё заново. На это уходит время, время складывается в часы, часы - в дни.
    3)
    Есть обычные мозги человека, который читает код. В мозгах всё делится на сознательное и бессознательное (за пределами сознания). Сознание может удерживать не более 7 объектов одновременно. Если объектов больше, бессознательное помогает ему сгрупировать их всё равно в 7 объектов (только некоторые становятся группами). Поэтому чем длиннее строка, тем дольше ты её обдумываешь (время уходит на эти группировки лишних объектов в группы).
    4)
    Есть там ещё комментарии в некоторых языках, где для комментирования какого-то фрагмента, нужно переносить его на отдельную строку. Поэтому когда операторы на одной строке, ты не можешь один из них закомментировать тут же. То есть либо ты их разносишь по разным строкам, либо ты экономишь время и что-нибудь не проверяешь, что надо было бы проверить.
    Ответ написан
    Комментировать
  • Си. Как сделать функцию, умножающую число?

    @abcd0x00
    Тебе, конечно, предложили с указателем, но надо сделать без указателя.
    int func(int x)
    {
        return x / 10;
    }
    
    ...
    
        a = func(a);
    Ответ написан
    1 комментарий
  • Как получить доступ к файлу в закрытой папке?

    @abcd0x00
    Можешь сделать группу для чтения этого файла.
    Директории установить эту группу и дать ей право на прохождение x.
    Затем добавить пользователя, которым собираешься читать файл, в эту группу.
    (Есть там ещё такое средство, как ACL, но для начала должно хватить.)
    Ответ написан
    Комментировать
  • Как узнать кем и в каком коммите была удалена строка?

    @abcd0x00
    Есть там ещё git bisect .
    Смысл такой: делаешь shell-скрипт с grep'ом по нужной строке, который возвращает 0 или 1, в зависимости от результата этого grep'а. А потом запускаешь git bisect с этим скриптом (как - найдешь в git bisect --help).
    Ответ написан
    Комментировать
  • Существует ли менеджер SSH сессий для KDE?

    @abcd0x00
    Попробуй
    kdialog --menu Hello 1 abc 2 def
    Ответ написан
    Комментировать
  • Как сделать откат нескольких коммитов git в eclipse?

    @abcd0x00
    Сначала делаешь ветку или тег, чтобы удерживать эти неправильные коммиты, потом откатываешь master.
    git branch incorrect
    git reset HEAD~3
    Ответ написан
    Комментировать
  • Как вы систематизируете полученные знания?

    @abcd0x00
    Как вы решаете эту проблему?
    Делаете конспекты освоенного материала?
    Ведете записи на бумаге или в электронном виде?

    Делаю конспект и примеры в отдельной папке для каждой изучаемой единицы.
    Конспект делается в виде текстового файла, с принятой системой разделения записей.
    Если что-то надо запомнить, то сначала учу, а потом через какое-то время записываю (воспроизвожу) без повторения и без шпаргалок.
    Для запоминания мест в интернете использую обычный html-файл.
    В последнее время html-файл заменил на org-файл (Emacs'овский) ;)
    Ответ написан
    Комментировать
  • Что обозначает этот простой код?

    @abcd0x00
    Объяснение

    Когда делаешь
    class Application(Frame):
    то Application - это твой самодельный класс, который делается из существующего класса Frame.

    Это значит, что все объекты (экземпляры) класса Application будут двух типов одновременно - типа Application и типа Frame.

    Когда делаешь
    def __init__(self, master):
    это значит, что ты у класса Application делаешь метод __init__. При этом у класса Frame есть свой собственный метод __init__. Эти методы могут полностью различаться.

    Когда делаешь
    app = Application(root)
    ты создаёшь объект (экземпляр) класса Application. При этом ему в метод __init__ передаётся основное окно всей программы.

    app имеет сразу два типа - самодельный Application (который ты сам сделал) и существующий Frame (который уже сделали до тебя). По правилам tkinter'а, когда ты создаёшь какое-нибудь окно, его надо прилеплять к основному (так можно давать команды сразу всему дереву окон, в котором одни окна прилеплены к другим, и всё это прилеплено к основному окну).

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

    Понимаешь, у тебя app - это один объект как бы двух типов: один тип не делает ничего, в нём есть только свой __init__ и ещё там какой-то самодельный метод; а другой тип является окном со всеми методами и свойствами окна.
    Поэтому, чтобы в своём самодельном типе что-то делать, ты обращается просто к его элементам. А чтобы в существующем типе что-то делать, ты к нему получаешь доступ через super() (от слова суперкласс), а потом обращаешься к своим же элементам но через методы другого типа.

    Поэтому запись
    super(Application, self).__init__(master)
    Означает, что нужно взять метод __init__ у базового класса Frame и передать в него аргумент master, переданный в __init__ производного класса Application.
    Функция super() как бы отыскивает базовый класс у класса Application и возвращает его, а дальше уже идёт обращение к методу __init__ этого найденного класса.
    Ответ написан
    Комментировать
  • Где в регулярном выражении ошибка?

    @abcd0x00
    Где накосячил?

    Пропустит
    a@..aa
    Ответ написан
    Комментировать
  • Математическая алгоритмизация и область применения?

    @abcd0x00
    Сам я веб разработчик. Здесь все тривиально и особых сложностей не возникает.

    Потому что пользуешься всем готовым, которое уже написано другими программистами.

    Желательно с реальными примерами применения.

    Я сталкивался с веб-программистами, которые не могли свой собственный форум починить. Там, например, был баг в тегах для разметки текста или просто ссылка с запятой в конце определяла эту запятую как часть ссылки.
    Баг понятен, а как его починить? Нужен программист.
    А когда речь заходит о каких-нибудь дополнительных тегах, которых нет в природе, то об этом даже говорить не приходится. Люди не понимают даже, как протестировать собственный код.
    Ответ написан
    Комментировать
  • Что делает цикл for в данной функции bash?

    @abcd0x00
    Что делает цикл for в данной функции bash?

    Он просто берёт из num каждый символ в обратном порядке.

    digit=${num:$t:1} #????

    [guest@localhost ~]$ s=abcd
    [guest@localhost ~]$ echo "${s:0:3} ${s:0:2} ${s:2:1}"
    abc ab c
    [guest@localhost ~]$
    Ответ написан
    1 комментарий
  • Какую можете посоветовать литературу, ресурсы по указателям и динамическим массивам?

    @abcd0x00
    Используй литературу по C. Много практики с указателями есть у Прата. Но много практики не нужно, нужно хорошее объяснение, а оно есть в основной книге по C.
    Ответ написан
    Комментировать