Задать вопрос
  • Администрирование Linux - актуально ли?

    @abcd0x00
    Ты раздели работу и знания. У нас в стране учёные не зарабатывают ничего, хотя знают дофига. Если ты думаешь "вот я научусь и стану зарабатывать", ты глубоко ошибаешься. Зарабатывать будут всё те же, кто и зарабатывал.
    Если свои знания, которые у тебя есть, продать не можешь, то и новые точно так же не продашь.
    На ПФРы, налоговые, суды, вузы и больницы даже не вздумай равняться. Это бюджетные организации, где абсолютно законно на всех экономят, как только могут.
    Почему сайт госуслуг такой беспонтовый и нерабочий?
    Потому что он стоит три копейки, а куплен у того мальчика сынка чьего-нибудь. А разница, выделенная из бюджета на всё это, пошла куда надо (отделочные работы помещений, которые делают свои отделочные фирмы, которые и не отделочные вообще, и вообще не фирмы).
    Вспомни космодром Восточный, куда вбухали такие бабки, а потом оказалось, что рабочим не выплачивали зарплату полгода.

    В общем, остаётся тебе только одно - повышать квалификацию в той области, которую ты уже знаешь. Ты занимался сисадминством, вот и продолжай расти в этом направлении. В удалённом администрировании есть потребность у людей. А если найдёшь своего заказчика, то он станет твоим постоянным заказчиком. Главное, чтобы ты мог сделать всё, мог решить проблему, мог решить задачу, был надёжен и предсказуем.
    Ответ написан
    9 комментариев
  • Стоит ли зацикливаться на непонятной теме?

    @abcd0x00
    Так вот, стоит ли мне зацикливаться сейчас на этом и правда ли то, что если я не пойму этого сейчас, то никогда не пойму?

    Ты поймёшь потом, когда пройдёшь весь материал, необходимый для понимания этого. Есть такие вещи, которые непонятны без промежуточных данных.
    Это как в пятиэтажном доме: чтобы подняться на третий этаж, нужно подняться на второй этаж, а чтобы подняться на второй этаж, нужно подняться на первый этаж.
    Вот ты как бы с площадки между первым и вторым пытаешься подняться на третий и сам этого не понимаешь, потому что тебе кажется, что ты уже на втором.
    Значит, что-то не прошёл, раз не понимаешь.
    Ответ написан
    Комментировать
  • Как составить регулярное выражение python?

    @abcd0x00
    Сначала надо отыскать нужные строки, а потом их разбирать.
    Код
    >>> import re
    >>> 
    >>> text = """
    ... abc
    ... first:
    ... 10, 20, 30, 40, 50
    ... 
    ... def
    ... second:
    ... 600, 700, 800, 900, 1000
    ... 
    ... ghi
    ... """
    >>> 
    >>> list(map(re.compile(r'\d+').findall,
    ...          re.findall(r'(?:\d+(?:, )?)+', text)))
    [['10', '20', '30', '40', '50'], ['600', '700', '800', '900', '1000']]
    >>>

    Ответ написан
    Комментировать
  • Более правильный путь изучения языка программирования. Какой он?

    @abcd0x00
    1) Ведь не достаточно знать один язык?

    Недостаточно.
    Должен быть один язык основной (компилируемый язык). Это нужно, чтобы один раз написать программу, которая будет надёжно работать сто лет без изменений.
    Должен быть один язык дополнительный (скриптовый язык). Это нужно, чтобы быстро писать скрипты по автоматизации рутинных действий (не только мелких, но и комплексных), которые нужно периодически менять под обстановку.
    Их надо знать хорошо оба.

    Остальные языки можно знать настолько, насколько нужно.

    Многие советуют начать с SICP. Так ли это?

    Я бы не советовал. Она довольно слабая, так как сделана для средних (тупых) американцев. Для развития мышления надо изучать саму математику (не школьную, конечно).
    Если ты тупой, эта книжка тебе ничего не даст, а математику ты не освоишь вообще. Если ты умный, эта книжка не даст и малой части того, что нужно знать.

    3) Обязательно ли при изучении программирования нужно чётко представлять про интерпретатор и системы счисления, как внутри всё работает и т.д.?

    Да. Готовься к тому, что это придётся узнавать. Потому что, когда надо будет делать программу, ты должен будешь знать всё к тому времени и времени на изучение неизученного не будет.
    Это как будто ты приезжает во Францию и тебе говорят, чтобы ты ехал в столицу, а ты спрашиваешь "простите, а как называется ваша столица, чтобы я знал куда ехать?", а тебе не говорят. Это нужно было учить в школе, как и остальные 100500 всяких нюансов о мире.
    Ответ написан
    Комментировать
  • Непонятная ситуация с iostream!?

    @abcd0x00
    Попробуй так
    int z(12345);
    std::cout << "Z: " << z << std::endl;
    Ответ написан
  • Какой результат будет?

    @abcd0x00
    Это вычисление в наборе ASCII.
    У каждого символа в наборе есть свой позиционный номер (нумерация с нуля).
    В ASCII символы 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 идут по порядку, поэтому и их числовые коды идут по порядку - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57.
    Какой бы цифровой символ мы не взяли, его значение в числовом виде можно узнать, отняв от его позиции позицию нуля.

    Большинство компиляторов базируются на таблице ASCII, но это нигде не закреплено. Если компилятор будет базироваться на другой таблице, то этот код может не сработать, если в ней цифры стоят не рядом или вообще идут не по порядку.
    Ответ написан
    Комментировать
  • [Большой txt ~1 гб] как обработать?

    @abcd0x00
    Я бы сначала разделил исходный файл на несколько разных файлов, где каждый файл хранит одинаковые x y.
    Потом каждый из этих файлов по очереди превращал в одну строку и сбрасывал её в общий файл вывода.
    Ответ написан
    Комментировать
  • Как работает функция rand()?

    @abcd0x00
    Не понимаю, что именно генерирует функция rand()

    rand() генерирует одно целое число.

    не понимаю зачем использовать остаток от деления

    Операция взятия остатка от деления используется для установки верхней границы числа.

    Если вычислить 12345 % 7, то результат будет меньше 7.
    Если вычислить 12346 % 7, то результат будет меньше 7.
    Если вычислить 123456789 % 7, то результат будет меньше 7.

    Операция взятия остатка от деления одного числа на другое никакого отношения к функции rand() не имеет.
    Ответ написан
    Комментировать
  • Какой путь для написания конкретной программы наиболее эффективен для новичка?

    @abcd0x00
    Кратко о программе которую я хочу написать. Это база данных собственных ошибок (в разных областях)

    Это описание похоже на excel-файл, не более.

    Qt Creator не полностью автоматизирован, поэтому многие вещи там нужно писать вручную. А чтобы писать вручную, надо разбираться в том, как там всё устроено.
    Ответ написан
    Комментировать
  • Как на английский переводится "инструкция"?

    @abcd0x00
    statement - оператор
    operator - операция (+, -, *, /)
    expression - выражение
    assertion - утверждение
    condition - условие
    instruction - инструкция
    operation - операция (действие)

    while (cond) {
        f1();
        f2(); f3();
    }

    Оператор while с условием cond содержит в своём теле три оператора, каждый из которых является вызовом функции.
    Ответ написан
    Комментировать
  • Что за место в терминале?

    @abcd0x00
    Владимир Жданов:
    Что за команда "`"(гравис) в командной оболочке bash?

    man bash

    Command Substitution
           Command substitution allows the output of a command to replace the com‐
           mand name.  There are two forms:
    
                  $(command)
           or
                  `command`
    
           Bash performs the expansion by executing command and replacing the com‐
           mand substitution with the standard output of  the  command,  with  any
           trailing newlines deleted.
    Ответ написан
    Комментировать
  • Объясните ошибку в простой задаче [Python]?

    @abcd0x00
    >>> def f():
    ...     return sum(int(input()) == 0 for _ in range(int(input())))
    ... 
    >>> print(f())
    5
    0
    2
    0
    2
    0
    3
    >>>
    Ответ написан
    Комментировать
  • Как и как Вы следите за новостями с сфере Ваших интересов и новостями в IT в целом?

    @abcd0x00
    1)
    У меня есть html-файл, который хранит ссылки на каждодневные полезные ресурсы.
    Это типа закладок в браузере, только лучше, потому что ты сам выбираешь внешний вид и оно одинаково выглядит в любом браузере любой версии.
    2)
    На рабочем столе прикреплены виджеты для сбора rss с разных разделов, которые обновляются сами.
    На один сайт с разными разделами нужен один виджет, а виджетов на рабочем столе можно сделать около десяти, а рабочих столов четыре.
    3)
    А для занятий и хранения информации есть множество разных org-файлов.
    Это похоже на гипертекст, когда один упорядоченный файл ссылается на другой упорядоченный файл. Файлы могут ссылаться друг на друга или в интернет или даже на свои собственные позиции в тексте, а ещё могут ссылаться на запуск программы (удобно книги читать в pdf). Внутри можно хранить данные в табличном виде, где таблицы динамически форматируются сами. Поэтому ссылки на программы можно хранить прямо в таблицах, которые сами форматируются.
    Картинка
    53a11eb3b5304fccbaaa39f44f9d633e.png
    Ответ написан
    Комментировать
  • Как запретить доступ к Apache из интернет?

    @abcd0x00
    blockport_except_localhost()
    {
        iptables -A INPUT ! -s localhost -p tcp --dport "$1" -j DROP
        iptables -A INPUT ! -s localhost -p udp --dport "$1" -j DROP
        iptables -A OUTPUT ! -d localhost -p tcp --sport "$1" -j DROP
        iptables -A OUTPUT ! -d localhost -p udp --sport "$1" -j DROP
    }
    
    blockport_except_localhost 80
    Ответ написан
    Комментировать
  • Можно ли в Python во float отбросить k знаков после запятой?

    @abcd0x00
    >>> n = 17.212123445
    >>> n = int(n * 100) / 100
    >>> n
    17.21
    >>>
    Ответ написан
    Комментировать
  • Разница работы с памятью С и С++?

    @abcd0x00
    Почитай про сериализацию. Вот по тому же принципу нужно преобразовать структуру в однозначный поток байт, передать его, а потом преобразовать поток байт обратно в структуру. Так у тебя структуры могут быть устроены по разному, но при этом будут заполнены одинаково.
    Ответ написан
    Комментировать
  • Стоит ли учиться писать скрипты на bash?

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

    Когда внешний интернет пропадает
    Код
    # Print popup message
    # Say(message, seconds)
    Say()
    {
        kdialog --passivepopup "$1" ${2:-3}
    }
    
    # Ping server until it wakes up
    # Connect([site="www.yandex.ru"
    #         [, count=1
    #         [, interval=3
    #         [, message="connected"]]]])
    Connect()
    {
        local site="www.yandex.ru"
        local count=1
        local interval=3
        local message="connected"
    
        [ "$1" = "--help" ] && {
            echo "usage: $FUNCNAME [site[, count[, interval[, message]]]]"
            echo "       $FUNCNAME $site $count $interval $message"
            return 1
        } 1>&2
        [ -n "$1" ] && site="$1"
        [ -n "$2" ] && count="$2"
        [ -n "$3" ] && interval="$3"
        [ -n "$4" ] && message="$4"
    
        while ! ping -c $count "$site"; do
            sleep $interval;
        done
        Say "$message"
    }



    Когда надо клип с YouTube скачать
    Код
    # Download YouTube video in selected format
    # Ytf(url, ofile[, fmt=18])
    Ytf()
    {
        [ $# -eq 0 -o "$1" = "--help" ] && {
            echo "usage: $FUNCNAME url ofile [fmtn=18]"
            echo "       $FUNCNAME http://youtube 12345.flv"
            echo "       $FUNCNAME http://youtube 12345.flv 19"
            return 1
        } 1>&2
        n=${3:-18}
        youtube-dl -c -f "$n" "$1" -o "$2"
    }



    Иногда нужно размер файла узнать
    Код
    # Check access to url like a browser
    # SpiderB(url[, agent])
    SpiderB()
    {
        agent=${2:-Wget}
        wget --spider --user-agent="$agent" "$1"
    }

    Ответ написан
    Комментировать
  • Как работать с однонаправленными списками?

    @abcd0x00
    У нас есть две вспомогательных структуры это структура хранящая первый элемент списка (для того, чтобы знать с чего начинать) и структура для хранения последнего элемента (не совсем понимаю для чего).

    Голова нужна, чтобы получать доступ к элементам.
    Хвост нужен, чтобы добавлять новые элементы.

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

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

    @abcd0x00
    Тоже путался, потом пошёл другим путём. Взял самые популярные книги по ассемблеру и установил всё, что надо для занятий по ним. Важно не самую свежую поставить, а чтобы заниматься можно было.
    Получилось: Абель + DosBox + несколько трансляторов.
    [guest@localhost PROGRAMS]$ ls
    ASM86  HIEW_650  MASM61  TASM  TECH60
    [guest@localhost PROGRAMS]$

    Сейчас занимаюсь в MASM61 и TASM.
    А вот TECH60 - это типа справочника по функциям операционной системы.
    Ответ написан
    Комментировать