Задать вопрос
  • Как транспонировать прямоугольную матрицу?

    mayton2019
    @mayton2019
    Bigdata Engineer
    На входе - матрица размром (l,c) на выходе после транспонирования размеры перевернутся и будет (c,l).

    UPD1: Ты аллоцировал матрицу А. Потом матрицу Б. И в конце удалил память только одной матрицы. Это небрежность?

    UPD2: Как-то так должно быть. Лишние параметры поудалял. Добавил матрицу Б. Где-то перевернул индексы.

    #include "stdio.h"
    #include "stdlib.h"
    
    double **input_matrix(int l, int c) {
        double **A = (double **) malloc(l * sizeof(double *));
        for (int i = 0; i < l; ++i) {
            A[i] = (double *) malloc(c * sizeof(double));
            for (int j = 0; j < c; ++j) {
                double x;
                scanf("%lf", &x);
                A[i][j] = x;
            }
        }
        return A;
    }
    
    double **trans_matrix(double **A, int l, int c) {
        double **B = (double **) malloc(c * sizeof(double *));
        for (int i = 0; i < c; ++i) {
            B[i] = (double *) malloc(l * sizeof(double));
        }
        for (int i = 0; i < c; ++i) {
            for (int j = 0; j < l; ++j) {
                B[i][j] = A[j][i];
            }
        }
        return B;
    }
    
    void print_matrix(double **A, int l, int c) {
        for (int i = 0; i < l; ++i) {
            for (int j = 0; j < c; ++j) {
                printf("%lf ", A[i][j]);
            }
            printf("\n");
        }
    }
    
    void free_matrix(double **A, int l) {
        for (int i = 0; i < l; ++i) {
            free(A[i]);
        }
        free(A);
    }
    
    int main() {
        int l, c;
        printf("Enter the number of lines: ");
        scanf("%d", &l);
        printf("Enter the number of column: ");
        scanf("%d", &c);
        
        double **A = input_matrix(l, c);
        printf("Matrix A\n");
        print_matrix(A, l, c);
    
        double **B = trans_matrix(A, l, c);
        printf("Matrix B\n");
        print_matrix(B, c, l);
    
        free_matrix(A, l);
        free_matrix(B, c);
        return 0;
    }
    Ответ написан
    Комментировать
  • Как организовать алгоритм поиска по массиву ключевых слов?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тут наверное самый лучший алгоритм - это таблица.

    Но если есть энтузиазм - можно считать редакционное расстояние. Тогда столбец с Джонни не нужен.
    Ответ написан
  • Какой SSD быстрее: SATA 3 или M.2 NVME?

    mayton2019
    @mayton2019
    Bigdata Engineer
    SATA 3.0 на уровне стандарта ограничивает скорость в 600 mb/s.

    Осталось найти лимиты на m.2 и вопрос будет закрыт.
    Ответ написан
    Комментировать
  • Как понять/выучить ООП Python?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Python - это хороший старт для карьеры, но плохой для ООП.
    Ответ написан
    9 комментариев
  • Почему в примерах книги используется i32, а не i8?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Это очень старая практика. Почти все сишники так делают. Для современных процессоров операции с 32х разрядным числом удобнее. А суждать до 8 бит нет смысла. Все равно регистр EAX так или иначе используется целиком.

    Но 8 битные целые имеют смысл если их складывать в массивы. И еще имеет смысл ужесточать
    тип когда очень важно иметь функцию которая по контракту принимает только 8 битное целое. Но это редко
    бывает. Чаще мы хотим целое число пошире. Но не 64 бита. Это перебор. Это как бутылка водки против контейнера водки.
    Ответ написан
    5 комментариев
  • Какие есть методы, чтобы спарсить гугл таблицы на python?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я думаю тут надо не парсер делать а изучить тот API который Google спецом разработал для таблиц
    https://developers.google.com/sheets/api/
    Ответ написан
  • Какой алгоритм быстрее и почему?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тебе не нужно сортировать все 10 000 000 элементов чтоб взять два минимальных. Достаточно одного прохода
    с отслеживанием двух наименьших {m1,m2} . И кейсов сравнений будет немного. Новый элемент больше - игнорируем. Новый элемент меньше обоих - вставляем в голову. Новый между ними - вставляем в центр.
    Ответ написан
    1 комментарий
  • Как я могу подключиться к локально развернутому спарку через airflow?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Попробуй сначала подключись через
    spark-shell --master ....
    Это будет доказательством что порт доступен по сети и ты все правильно сконфигурил.
    Ответ написан
  • Съезжает ли индексы после удаления записей?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Индексы, будучи созданными один раз - остаются навечно.
    Если из таблицы удалены данные (50%) - то примерно
    столько - же данных будет удалено соотвественно и из индекса.

    Дисковое пространство которое занимает индекс - обычно не освобождается.
    Тут надо читать документацию по конкретной БД. Oracle может вести себя так,
    Postgres - как-то иначе.

    P.S. Интересная терминология. Съезжает...
    P.P.S Лётчик?
    Ответ написан
    Комментировать
  • Как расставить в тексте ` вокруг символов, которые не являются буквами (русскими или англ)?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Задача разбивается на под-задачи. Найти Python функцию которая определяет что символ принадлежит к english или russian диапазону символов. Я думаю что это - стандартная задача которая тыщу раз решена.

    И второе - это "обернуть" всё оставшееся в то что хочет автор. Я не сильно понимаю по какому алгоритму надо оборачивать. Похоже как всегда кодировка побита.

    Регулярки в данной разработке - избыточны. Я думаю что нам хватит стандартного API unicode.
    Ответ написан
    Комментировать
  • Как сохранить значения нескольких переменных в С++ 17?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Используй пару (pair).

    using namespace std;
    
    pair<int,int> getInfo(int x, int y) {
      return { x+1, y+2 };
    }
    Ответ написан
    6 комментариев
  • Как работает данный фрагмент кода?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    обязательно ли именовать пакеты в Java именно так "com.javastart.NAME"

    Их можно именовать как угодно. Просто если делать интеграцию твоего приложения с другими
    библиотеками то конфликтов имен можно избежать если всегда добавлять домен + твое имя.
    Это практически всегда уникально.
    Ответ написан
    Комментировать
  • Есть ли инструменты для отслеживание памяти для Spring?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Нет таких инструментов. Утечка памяти - неформализована в терминологии Java.

    Но ее последствия видны в виде невозможности освободить память в какой-то момент времени в runtime.
    Причиной может быть некий глобальный статический объект который хранит в себе коллекции других объектов.
    Но такое программирование не запрещено. Просто надо хотя-бы знать в лицо такие глобальные объекты. Обычно это сингтоны, бины. Поскольку они - вечные - то и GC убирать их не будет.

    На ранних этапах можно делать memory-dump вашего приложения и анализировать его через Eclipse Memory
    analyzer. Там в виде гистограммы публикуется использование памяти и количество объектов. Через него например
    я видел как по хамски себя ведет postgres JDBC драйвер во время выборки.
    Ответ написан
    2 комментария
  • Как ускорить процесс получения большого объема данных?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Сложно обсуждать перформанс-проблему без исходного кода.

    Я-бы предложил как всегда ударить кувалдой. Тоесть запустить по приложению JProfiler и просто посмотреть что он покажет. Проблемных мест может быть 3. Это чтение из базы. Второе это собственно проверки и валидации. Как они реализованы? Насколько качественно? И третье это собсно запись в БД. Используется ли JDBC-batch?

    SpringQuartz, cron, view здесь вообще непричем и их наличие только путает нас и вносит новые ненужные вопросы. Лучше решать проблему как одну java-функцию с входом и выходом.
    Ответ написан
    4 комментария
  • Почему Doom портируют куда только можно?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Doom - это была одна из первых игр где была реализована в полной мере техника BSP (Binary-Space-Partition). Это позволяло в реальном времени очень быстро сортировать и рендерить полигоны без привлечения Z-Buffer. (Рендеринг был чисто прогарммный. На то время еще не было ускорителей 3Д графики и видеокарточка умела только отображать память на экран. ) Игра не была по настоящему трехмерной. А только рализовывала 1 этаж. Рендерить надо было только пол и потолок. Для каждой точки где стоял персонаж. И наклонных горизонтальных поверхностей в ней не было как раз по этой причине. Ее называли 2.5-мерной игрой. Было также много идей оптимизации вычислений. Например вместо вещественных чисел - целые 32х битные с fixed point.

    В скобках замечу что это был 1993 год и на дворе было царство Intel 286/386. Это были машины с тактовой частотой меньше ваших телефонов (Pentium только только релизнулся и еще ни у кого не был). И трехмерный Doom был прорывом. На моем тогда еще 386SX от подтормаживал но играть было можно. И со звуком для SoundBlaster. И конечно это было лучше чем Wolfenstein.

    Аналогичное было реализовано в Duke Nukem 3d. Но Дюк был менее популярен ИМХО. Были и масса других 3д игр в жанке RPG но они были не такие динамичные. Походовые в основном.

    Вобщем сегодня если вы гейм-дев то вам желательно хотя-бы ознакомиться с техниками оптимизации которые были в Doom. Можно почитать и про Quake но это просто развитие идеи BSP деревьев для полного 3D с 5 или 6 степенями свободы. Еще можно почитать про реализацию игры Esctatica. Там не на полигонах а на шариках или эллипсах реализована игровая графика. Тоже интересно.

    UPD: Заменил MMORPG на RPG.
    Ответ написан
    6 комментариев
  • Как считать из файла определенное слово, и посчитать сколько раз оно появляется в файле СИ?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Почему вопрос градуирован как "сложный"? Тебе нужен символьный буфер на 6 символов. Вот и пиши в него
    по кругу. Как только в круге появится ананас - вот и считай плюс один.

    Кстати где твоя попытка хоть написать привет-мир с файлами?
    Ответ написан
    Комментировать
  • Как получить диплом сред-спец образования программисту без техникума и 4 лет впустую?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я уже устроился на работу по специальности в крупную официальную компанию по специальности и успешно прошёл стажировку

    Ну вот если устроился и работаешь - то тебе вроде как оно и не надо. За образованием идут в двух случаях. Первое - это корочка которую требуют родители например или консервативное общество. Или гос-контора обязательно спросит ксиву при попытке туда устроиться (я-бы эту возможность не отбрасывал). И второе - эт собственно технический пласт знаний. Люди по разному учатся. Я-бы не смог учится УЖЕ работая. Это как мне кажется такой разрыв смыслов. Вот на работе тебя поставят за станок с ЧПУ и ты будешь знать досконально как ДАННЫЙ станок работает. Может даже станешь мастером по наладке. Но вот принципы на которых этот станок работает - тебе никто никогда на работе не расскажет. И не потому что это тайна. Просто всем некогда. На работе е6ошить надо как говорил мой шеф. А не книжки читать.

    Вот и думай себе. Кумекай что тебе на самом деле надо. Я знаю очень многих людей которые только в 40 лет осознали как много они не знают и что им реально нужно было когда-то ... давно получить это самое образование. Кусали локти потом. Но уже была семья.. дети.
    Ответ написан
    Комментировать
  • Как спарсить openapi?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Так ты сам этот инструмент назвал. Это и есть Swagger. А точнее swagger-codegen.

    https://swagger.io/docs/open-source-tools/swagger-...

    UPD: Добавил линку
    Ответ написан
    Комментировать
  • Бэкап Linux (Fedora)?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Хочу при помощи tar сохранить все конфиги, но метаюсь между выбором директории home и ~/.config

    Дык тебе не надо метаться. Тем более что никто не сможет ответить нужен ли тебе home целиком или нет.
    Если места достаточно то бэкапть все что можно.

    Но проблемы бэкапа только начинаются после того как он сделан. Ты разверни виртуалку и попробуй потом восстановить все конфиги (и приложения!!) с этого бэкапа. Я гарантирую сюрпризы.

    Вобщем пробуй сам. Для бэкапа всех поддиректорий с точечками - можно написать скрипт. Но проблема
    не в этом на самом деле.
    Ответ написан
    Комментировать
  • Как стоит организовать хранение данных mysql?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Скорее всего тебе нужно 2 таблицы. Users и Tasks. Вторая - дочерняя и таким образом у одного юзера есть несколько тасков или ни одной.

    Это называется Нормализация БД.
    Ответ написан
    Комментировать