• Как работать текстовыми файлами?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Потому что нормальный алгоритм работы с мелкими текстовиками следующий:

    открыть файл на чтение (man open - внимание, не потоковый fopen, а простой open!)
    получить размер файла из элемента оглавления каталога (man stat)
    выделить память размером с файл (man calloc)
    прочитать весь файл целиком (man read)
    закрыть файл (man close)
    и после этого парсить полученный буфер как угодно вдоль и поперек, не забывая конечно, что портить его не надо :)

    Ну или вот так наверно понятнее будет:
    #define NUL 0
      #define ERR -1
      int i;
      short int handle;
      struct stat sb;
      char *name="/tmp/testfile.txt";
      char *data;
    
      if ((handle = open(name, O_RDONLY)) < NUL)
        return ERR;
    
      stat(name, &sb);
      data = (char *) сalloc(sb.st_size + 1);
      i = read(handle, data, sb.st_size);
      close(handle);

    На выходе - массив data с данными файла.
    Ищещь перевод строки ('\n') и переставляешь указатель ЗА него (если нужно конвертить число в цифру то после перестановки на место перевода строки пишешь '\0' и используешь atoi() - на выходе длина строки, которая идет в качестве контроля, чтобы на SIGSEGV случайно не выскочить.
    Потом от нового положения указателя цикл по длине строки с поиском по таблице замен.

    Вот блин...ведь мамой клялся, что подсказывать не буду...
    Ответ написан
    1 комментарий
  • Как сократить число в периоде?

    0xD34F
    @0xD34F
    Ну так 3/180 - это вы целыми числами оперируете. Отсюда и 0 в результате. Попробуйте 3.0/180. Или 3/180.0.
    Ответ написан
    Комментировать
  • Как с помощью CPack добавить в deb пакет 3rd party library?

    @Xano
    Если нужно именно включить в deb-пакет - то нужно прописать install для всех зависимостей
    https://cmake.org/cmake/help/v3.11/command/install.html

    Но, может, лучше прописать зависимости от определенных пакетов?..
    https://cmake.org/cmake/help/v3.11/module/CPackDeb.html
    CPACK_DEBIAN_PACKAGE_DEPENDS
    Ответ написан
    3 комментария
  • Сколько можно зарабатывать на C++ в 14 лет?

    @Noortvel
    Студент, изучаю C++ второй год, никто не берет на работу. Хороший ответ?
    Ответ написан
    5 комментариев
  • Сколько можно зарабатывать на C++ в 14 лет?

    @m0nym
    1. Школьник ничем не отличается, пока работодатель/заказчик не видит/не слышит его (или его документы).
    2. 2 - недели - это не программист. Начинающий программист - это от двух лет опыта.
    3. С++ довольно редкий в наше время инструмент, работы по нему крайне мало.
    4. Сейчас огромное количество "войтивайти". Потому работать в ближайшее время придется только "за еду".
    5. Хорошо платят только квалифицированным специалистам
    Ответ написан
    Комментировать
  • Как правильно следует избавляться от вложенных циклов?

    villiwalla
    @villiwalla
    HTML-верстка
    Обходы каталогов даже с чтением файлов в этих каталогах лучше делать через рекурсию.
    Ответ написан
    6 комментариев
  • Как в opencv определить доминирующий цвет?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    За минуту нагуглил пример из документации и несколько статей - раз, два, три. Ещё минута понадобилась на то, чтобы проверить работу кода:
    import cv2
    import numpy as np
    from sklearn.cluster import KMeans
    from collections import Counter
    
    
    def get_dominant_color(image, k=4):
        image = image.reshape((image.shape[0] * image.shape[1], 3))
    
        clt = KMeans(n_clusters = k)
        labels = clt.fit_predict(image)
    
        label_counts = Counter(labels)
    
        dominant_color = clt.cluster_centers_[label_counts.most_common(1)[0][0]]
    
        return list(dominant_color)
    
    
    bgr_image = cv2.imread('image.png')
    hsv_image = cv2.cvtColor(bgr_image, cv2.COLOR_BGR2HSV)
    dom_color = get_dominant_color(hsv_image)
    dom_color_hsv = np.full(bgr_image.shape, dom_color, dtype='uint8')
    dom_color_bgr = cv2.cvtColor(dom_color_hsv, cv2.COLOR_HSV2BGR)
    output_image = np.hstack((bgr_image, dom_color_bgr))
    cv2.imshow('Dominant Color', output_image)
    cv2.waitKey(0)
    Ответ написан
    1 комментарий
  • Почему нет профсоюза IT-работников?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Imho все адекватные люди аполитичны и предпочитают тратить время на зарабатывание денег.
    В текущих реалиях проще эмигрировать, чем тратить время на это вот все.

    А про забастовку, ну право смешно. Вы реально считаете что правительство рассматривать it отрасль как социально значимую? Это скорее что-то непонятное, мешающее свету из телевизора проникать глубь народных масс.

    Тем более что государственных то it компаний практически нет. Будете бастовать внутри своей коммерческой структуры - никому кроме этой структуры вы не навредите.

    Поднимите столько хайпа что государство обратит внимание на регулирование работников - вот тут то вы и взвоете по настоящему.
    Ответ написан
    10 комментариев
  • Broadcast и способы борьбы с ним?

    @Gansterito
    Изоляция клиентов (vlan на свич + изоляция клиентских портов, или vlan на клиента).
    Ответ написан
    Комментировать
  • Broadcast и способы борьбы с ним?

    fzfx
    @fzfx
    18,5 дм
    против бродкаста есть super vlan и ip unnumbered, но это должна быть поддержка со стороны коммутаторов, далеко не в каждом это есть. ну и настраивается это дело не двумя щелчками, в больших сетях это проектировать надо.
    против нешироковещательного трафика - коммутаторы L3 и фильтрация по портам/IP.
    лично мне сложно ответить что-то более конкретное без более подробных сведений о сети и её назначении.
    Ответ написан
    1 комментарий
  • Роутер работает в режиме свитча? Или же нет?

    Moskus
    @Moskus
    Чтобы спорить о разности сущностей не безграмотно, нужно определить, в чем реальная разница между ними.
    Router, в общем и идеальном случае - устройство для межсетевой маршрутизации и работает, главным образом, на третьем слое по модели OSI.
    Switch, в общем и идеальном случае - устройство для перенаправления пакетов внутри сети и работает, главным образом, на втором слое по модели OSI.

    Всё то, что мы используем в повседневной практике, часто содержит сразу несколько разных устройств в одном. Например, та коробка, которая служит шлюзом между вашей домашней сетью и Ethernet-сетью провайдера, работает как router, потому что отвечает за маршрутизацию между двумя сетями. Но она же работает и как switch для вашей внутренней сети (когда пакет от вашего ноута идет прямо на ваш принтер, а не всем остальным и не в сеть провайдера). И разделить этот функционал нельзя ни физически, ни программно.

    В вашем случае "главный роутер" выполняет функцию маршрутизации между внутренней сетью и сетью провайдера. А второе устройство (которое беспроводное) - вопрос чуть более сложный. Если оно не служит шлюзом (т.е. на Wifi-клиентах, которые подключены к нему, адресом default gateway настроен адрес "главного роутера"), не является DHCP-сервером для своих клиентов, и так далее, то оно выполняет функцию конвертера среды и switch. А если оно раздает клиентам адреса, управляет ими в отдельной логической сети, а само является клиентом в подсети "главного роутера" (так чаще всего бывает, если все настраивается автоматически), то оно таки выполняет функции роутера.
    Ответ написан
    9 комментариев
  • Как в коде менять размер виджета Qt?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    doc.qt.io/qt-5/layout.html - это для адаптивности.
    А так просто есть методы для установки размеров виджетов, например resize.
    Ответ написан
    Комментировать
  • Как сделать курс "протоколы и интерфейсы информационных систем" интересным?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Начните с простого, с протокола RS-232, его как минимум можно смотреть осцилографом, причём - самым простым.
    Далее - сделайте распределенную сеть на RS-485, введите маркеры и адресацию.
    Поговорите про аналоговые модемы, потом расскажите по DSL (ADSL/HDLS).
    Переходите к кодированию ТВ-сигналов, вот здесь уже можно и на телевизоре крестик рисовать через STM32 например,
    Далее - технология цифровой передачи DVB-S (-C), тоже достаточно просто. Тут же помехозащищенное кодирование RS (Reed-Solomon), перемежение. Факультативом - пишем восстановление блоков данных, рассказываем про массивы RAID.
    Рассказываем про параллельные линии, начиная от параллельного порта, через Centronics, SCSI-8/16, всяким шинам данных типа VME, переходим к современным протоколам работы памятью.
    Дальше - коммутация, начиная от телеграфа к телефонии и заканчивая каким нибудь Infiniband и мультисервисными сетями типа ethernet 10/40Gb со всеми вытекающими.

    Ну и возвращаемся к последовательным высокоскоростным линиям SATA/Ethernet/PCI-e.

    По интерфейсам, начинаем с терминалов RS-232 и заканчиваем WEB, наверное, как ни парадоксально.

    PS. Хорошо бы учесть специфику слушателей... Если это будущие "бухгалтеры", тогда, что я написал - для них overflow будет...

    PPS. Вынесу наверх...
    Увы, на мой взгляд, нельзя вот так просто объяснить как этот ftp/gopher/http/GUI работает, без хотя бы введения в "а что у нас есть такое протокол, и почему он возник..." (А возник как раз из-за симплекса и телеграфа, еще до телефона, а то и раньше, начиная с сигнальных костров и тамтамов).
    Также, наверное, бестолково объяснять дизайн современных интерфейсов без истории сигнализации лампочками, технологий ввода информации (да перфокарта, клавиатура, мышь, дисплей)
    Ответ написан
  • Где поискать опенсорс проекты на С++?

    Nipheris
    @Nipheris Куратор тега C++
    А как вы искали, если не секрет? Я хочу узнать, как искать так, чтобы ничего не найти.

    Запрос "c++ open source projects" даёт первой же ссылкой набирающие популярность C++-проекты на гитхабе, среди которых TensorFlow, биткоин, OpenCV, Электрон, Solidity и прочие монстры индустрии. Время поиска - ~20 секунд.
    Ответ написан
    1 комментарий
  • Необходимо передать некий массив с одного процесса на другой, Как это сделать?

    Разделяемая память.
    Ответ написан
    Комментировать
  • Что означает эта строка(модификатор в макросе)?

    GavriKos
    @GavriKos
    Это не модификатор. Это имя макроса. А дальше - его тело. Теперь везде в коде MYLIBAPI заменится на тело.
    Ответ написан
    Комментировать
  • C++ - как заполнить динамический массив элементами меньше 6 из другого динам. массива?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    У вас же C++:

    #include <algorithm>
    ...
    
    std::copy_if(std::begin(srcArray), std::end(srcArray), std::begin(dstArray), 
                 [](auto && elem) { return elem < 6; });


    Ну там back_inserter в случае вектора может быть. Кстати, в С++ надо использовать vector или array.
    Как сделать генератор случайных чисел можно посмотреть тут: www.cplusplus.com/reference/random/.

    Итого, ваша задача сведётся к 4-5 строчкам кода.
    Ответ написан
    Комментировать
  • Нахождение найменьшего значения RGB?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Чёрно-белое изображение имеет два цвета - чёрный и белый.
    Изображение в оттенках серого имеет один канал.
    Если у вас три канала (RBG) - то это полноцветное изображение.
    Яркость (или светимость) точки можно посчитать по одной из формул, в зависимости от цветовой модели:
    L = 0.2126 * R + 0.7152 * G + 0.0722 * B
    L = 0.299 * R + 0.587 * G + 0.114 * B
    L = sqrt(0.299 * R * R + 0.587 * G * G + 0.114 * B * B)
    Ответ написан
    Комментировать