Ответы пользователя по тегу C++
  • Какой выбрать вектор дальнейшего обучения?

    @mantyr
    Пишу много Golang кода с удовольствием:)
    Читайте много книг, в идеале все по выбранному направлению и процентов 30-40% от смежных.

    Если конкретно по информационной безопасности то надо знать:
    • компилируемые языки, Си, Си++
    • разбираться в ядре операционной системы, можно ограничиться только миром Linux, а можно пройтись по всем основным, "Ядро Linux. Описание процесса разработки" Роберт Лав, у Таненбаума много потрясающих книг на тему распределённых систем и операционок как таковых, в чём-то базовые вещи
    • понимать алгоритмы - здесь вам в помощь бессмертные труды Кнута
    • желательно знать парочку интерпретируемых языков что бы искать баги и чинить уязвимости по всем фронтам
    • разбираться в компиляторах и понимать машинный код хотя бы на базовом уровне
    • разбираться в виртуализации, ключевые слова: kvm, quemu, xen, lxc, openvz, virtuozzo, docker, vagrant, прочеее...


    Читать https://www.opennet.ru и www.linux.org.ru , по сетям nag.ru
    Определиться со сферой деятельности и копать более углублённо по ней.
    Ответ написан
    3 комментария
  • [Большой txt ~1 гб] как обработать?

    @mantyr
    Пишу много Golang кода с удовольствием:)
    1) удалить в txt последние 2 столбца (ибо не используются)
    - если есть возможность не обрабатывать данные которые не нужны то так и нужно поступить.
    2) загнать txt в sql -> обработать там.
    - бессмысленное занятие
    3) возможно есть что-то для больших файлов у c++.
    - суть разбора больших файлов (1, 10, 100, 1000 гигабайт на файл и больше) в том что бы читать его чанками по несколько байт (размер выбирается исходя из задачи) и анализ файла в поточном виде (не загружать его весь в память).

    Алгоритм:
    1. читаете поточно по N байт
    2. при нахождении \n считаете что началась новая строка
    3. как только собрали строку - делаете с ней что хотите, в данном случае разбиваете по-пробельно (explode(" ", $str); пример из php, но не суть)
    4. закидываете в некий результирующий массив третью ячейку в качестве значения и первые две ячейки в качестве ключа, если данные уже были то суммируете.

    Конечно это не спасёт от величины результирующего массива равного количеству уникальных ключей (ячейки x y). Для этого применяют mapReduce, но для вашей задачи он избыточен.

    Вариант как избавиться от большого результирующего массива:
    1. алгоритм прежний
    2. записываете значение в mysql или любую другую базу в виде
    INSERT INTO result_table
    SET
        key = ".$key.",
        value = ".$value."
    ON DUPLICATE KEY UPDATE value = value + ".$value."

    Где result_table.key PRIMARY KEY
    Ответ написан
    7 комментариев
  • Си или Go для приложения по обработке сетевого трафика до 1.5М пакетов/с?

    @mantyr
    Пишу много Golang кода с удовольствием:)
    Для обработки сетевого трафика больше подойдёт модуль ядра Linux написанный на Си. Если кто-то умеет такое делать на Golang - дайте знать, с удовольствием послушаю, почитаю на эту тему... Агрегированные же данные (прилетающие от такого модуля) вполне хорошо обрабатывать на Golang (в этом случае можно не заморачиваться одной железкой, а поставить сразу несколько распределив по ним трафик).

    P.S. Возможно речь идёт не о linux, но в топике это как-то отдельно не оговаривалось.
    Ответ написан
    4 комментария