Задать вопрос
  • Количество строк кода от *.coffee и *.py файлов на баше?

    @abcd0x00
    find -type f \( -name '*.coffee' -o -name '*.py' \) -exec cat {} \; | wc -l
    Ответ написан
    Комментировать
  • Как линкуются .cpp файлы к файлам .h?

    @abcd0x00
    Как он понимает, что реализация в file.cpp?

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

    В итоге, file.h file.cpp main.c становятся как бы одним файлом.
    Ответ написан
    5 комментариев
  • Код C, который не будет работать в C++?

    @abcd0x00
    int f()
    {
        return 1;
    }
    
    int main(void)
    {
        f(1, 2);
        return 0;
    }
    Ответ написан
    Комментировать
  • Как изучить язык приближенно к 100%?

    @abcd0x00
    Думаю, что лучшим способом будет просто перелопатить всю документацию от А до Я и забить на другие ресурсы. Это правильные мысли?

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

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

    @abcd0x00
    Как создаются линии?

    https://ru.wikipedia.org/wiki/European_Article_Number
    https://ru.wikipedia.org/wiki/Universal_Product_Code

    При проектировании структуры кода, в условиях ещё не слишком развитой электроники, было важным сделать его как можно более простым для считывания сканером и упростить аппаратную часть самого сканера. Одной из сложностей была проблема вероятного считывания кода в обратном направлении, то есть считывания кода на товаре, который кассир поднёс к сканеру «вверх ногами». Поэтому очень важно было, чтобы чередование полос было одинаковым в обоих направлениях — сначала тёмный штрих, потом белый, потом опять тёмный и так далее.


    Много нюансов там, связанных с аппаратурой и человеческим фактором. Поэтому логика кодирования такая, немного странноватая.
    Ответ написан
    Комментировать
  • Как стянуть изменения в с сервера GIT?

    @abcd0x00
    Можешь использовать
    git fetch ветка
    Это стягивание коммитов без их вливания в проект.

    После просмотра коммитов можешь делать
    git merge ветка
    Так ты можешь и коммиты скачивать, и на любые ветки переходить.
    Ответ написан
    Комментировать
  • Как из html вытащить url по определенной маске?

    @abcd0x00
    Нужно выбрать все ссылки, а потом из них выбрать те, которые удовлетворяют критерию. Именно так, по частям, потому что как источник ссылок может поменяться независимо от критерия, так и критерий выбора может поменяться независимо от источника.
    Ответ написан
    Комментировать
  • Верен ли такой подход к изучению программирования?

    @abcd0x00
    Калькулятор почти готов, но меня просто угнетает то, что я не сам его написал.

    Это важный вопрос. Пока ничего не пишешь сам, копирование чужого может казаться лёгким. Но однажды ты хочешь написать свою программу и ты задумываешься "А будет ли она моей? Не будет ли там чужих кусков под какими-то чужими правами?". Хорошо, если там ничего особенного не будет (свободные лицензии и всё такое). Но может быть и так, что ты станешь зарабатывать на своей программе (совершенно неожиданно для себя самого). И тогда автор какого-нибудь куска, которого не было никогда видно, тут же проснётся и спросит тебя "А где моя доля за труд?". Ты захочешь её (его часть) убрать и тут столкнёшься со вторым вопросом, лежащим в той же плоскости "А как её убрать? Я же не умею, потому что привык только копировать".

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

    Это важный вопрос. Да, все копируют код по мере возможности, есть даже такая директива: можешь скопировать или написать - скопируй. Но это относится к тем, кто уже умеет писать это всё. Это очень важное отличие - дурачка, который копирует, и профессионала, который копирует. Если ты не умеешь, то рано или поздно придётся что-то делать своими силами (писать с нуля или сильно переделывать чьё-то) и ты не сможешь, потому что никогда себя не развивал в этом. А мозг устроен очень просто: если ты задействовал в нём какие-то центры, то они всё запоминают и задействуют потом; если же ты не задействовал нужные центры, то мозгу просто нечего вспоминать. Копирование кода не задействует синтезирующие части мозга.
    Ответ написан
    Комментировать
  • Где ошибка в коде(Динамичные структуры данных)?

    @abcd0x00
    /**/
          if (t % 2 == 0)
          {
            Node *tmp = (Node*)malloc(sizeof(Node));
            p3->next = tmp;
            tmp->data = p3->data;
            tmp->next = NULL;
          }

    Тут утечка памяти. Когда ты делаешь p3->next = tmp , бесследно пропадает указатель, который был в p3->next .
    Ответ написан
  • Создание программы по преобразованию текста в изображение. В каком направлении искать решение?

    @abcd0x00
    Обычно цифры-картинки записываются в ряд в изображении, а программа просто вырезает из этого ряда нужную.

    Есть начальные навыки программирования (Делфи, лет 10 назад), и интерес создать штуку самому.

    Можешь использовать C++/Qt. Для создания оконных приложений - Qt Creator.
    Ответ написан
    Комментировать
  • Какой инструмент вывода конкретного кода ошибки из файла использовать?

    @abcd0x00
    Надо этот файл перевести в словарь

    Чтобы такая запись
    Код ошибки: 10
    "Ошибка в среде"
    http://site/topic/777
    http://site/topic/111


    Преобразовывалась в такую
    {10: ('Ошибка в среде', ['http://site/topic/777', 'http://site/topic/111'])}


    Пример
    >>> d = {10: ('Ошибка в среде',
    ...           ['http://site/topic/777', 'http://site/topic/111']),
    ...      37: ('Не удалось инициализировать драйвер этого устройства (Код 37)\n'
    ...           '(Операция не выполнена) Запрошенная операция не выполнена',
    ...           ['http://site/topic/555'])}
    >>> d[10]
    ('Ошибка в среде', ['http://site/topic/777', 'http://site/topic/111'])
    >>> d[37]
    ('Не удалось инициализировать драйвер этого устройства (Код 37)\n(Операция не выполнена) Запрошенная операция не выполнена', ['http://site/topic/555'])
    >>> 
    >>> print(d[37][0])
    Не удалось инициализировать драйвер этого устройства (Код 37)
    (Операция не выполнена) Запрошенная операция не выполнена
    >>>

    Ответ написан
    Комментировать
  • Чего то я не понял с функциями из библиотеки string.h?

    @abcd0x00
    Все функции из пакета возвращают число int.

    Во-первых, string.h - это не пакет, а набор объявлений для группы функций из стандартной библиотеки функций языка C. То есть библиотека включает в себя вообще все функции, а файлы с объявлениями позволяют подключать (объявлять) их только нужными группами.

    Во-вторых, не все функции для работы со строками возвращают int. Это ты сам придумал, где-то что-то перепутав. Строковые функции бывают разными - и возвращающими int, и возвращающими char *, и возвращающими size_t. Функция strstr() возвращает char * - указатель на начало найденной подстроки, либо NULL, если подстрока не найдена.

    Если тебе нужно определить позицию найденной подстроки в строке, то нужно из адреса этой подстроки вычесть начало всей строки.
    Ответ написан
    Комментировать
  • Верно ли, что чем сильнее "разрознен" массив чисел, тем больше времени займет его сортировка (допустим, пузырьком)?

    @abcd0x00
    Очень похоже на сортировку слиянием и пирамидальную сортировку. Чтобы не изобретать эти сортировки (которые, естественно, быстрее пузырьковой), лучше найди их описание и реализуй каждую по отдельности.
    Ответ написан
    Комментировать
  • Как сделать красивый текст в терминале?

    @abcd0x00
    И сразу второй вопрос, как создаются такие окна в терминале, которые реагируют на мышь?

    Есть программы, в которых реализованы окна для использования в скриптах.

    Для консоли - пакет dialog.
    Для графического интерфейса - пакеты kdialog, xdialog, gtkdialog, yad.
    Ответ написан
    Комментировать
  • Как сделать массовую замену куска текста из нескольких строк в множестве файлов?

    @abcd0x00
    Проблема в том, что нужно отредактировать блоки с текстом в несколько строк.

    Для sed'а это не проблема, просто его надо знать чуть дальше, чем s///.
    Ответ написан
    Комментировать
  • Как преобразовать маску в диапазон ip?

    @abcd0x00
    Ответ написан
    Комментировать
  • Почему происходит пропуск функции считывания строки gets_s?

    @abcd0x00
    Вызов gets_s() проскакивает потому, что при вводе по cin ты нажимаешь Enter в конце. Когда нажимаешь Enter, в поток посылается символ перевода строки и остаётся там. А потом gets_s() видит его и считает введённой строкой. Поэтому ты должен после cin выполнить cin.get()

    Пример
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int n;
        char c;
    
        cin >> n;
        cin.get(c);
    
        cout << n << " " << int(c) << endl;
        return 0;
    }


    Вывод
    [guest@localhost cpp]$ .iso++ t.cpp -o t
    [guest@localhost cpp]$ ./t
    123
    123 10
    [guest@localhost cpp]$


    Вот это число 10 - это код символа \n (символа перевода строки).
    Ответ написан
    Комментировать
  • Как работает размещающий оператор new?

    @abcd0x00
    но КУДА происходит его запись?

    Это ошибка в книге. Такие бывают при косяках издательства.
    Ответ написан
    Комментировать
  • Как при помощи bash создать и трансформировать дерево директорий в .json?

    @abcd0x00
    Нужно написать пару функций, одна из который рекурсивная. Одна функция отвечает за вывод директории, а другая - за вывод файла. Директорная функция вызывает саму себя для директорий и файловую функцию - для файлов. А файловая функция возвращает путь к файлу.

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

    @abcd0x00
    Есть книжка по архитектуре UNIX, вот в ней можешь найти все принципы устройства.
    "Архитектура операционной системы UNIX." Бах Морис

    Можешь и какие-нибудь упрощённые книжки поискать для поверхностного изучения.


    1. Если директива и файл это просто inode с разным флагом внутри него, тогда откуда VFS или ядро знает что условно в папке /etc/ лежат всякие файлы(другие inodes) - это я пока не понял, не могу найти ни каких внутренних ссылок между собой файлов и директорий ?!

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

    Где вообще этот жуткий "/" хранится?

    В файловой системе (в заголовке) записан адрес на диске, где начинается самый первый inode. Потом он читается и из него получаются адреса последующих inode.
    А сам inode представляет из себя метаданные (данные о данных), где указаны всякие флажки и адрес на диске, где хранится уже содержимое файла.
    Ответ написан
    Комментировать