Задать вопрос
  • Можно ли как-то улучшить и упростить этот код?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Можно начать с разложения d на простые числа (это про улучшение кода в смысле перформанса).

    Вот это выражение вычисляется дважды. Там просто x меняется с положительного на отрицательный.
    (a * x * x * x) + (b * x * x) + (c * x) + d;
    А частично расчитанные слагаемые мы теряем. И потом считаем их снова. Это дефект избыточных расчетов.
    Можно над этим подумать.

    По поводу упрощения кода. Тут надо решить что тебе надо. Краткий код. Или быстрый. Это два противоречия.
    Вспоминаем "кривую Шипилёва".
    Ответ написан
    Комментировать
  • Как обозначить временный комит в Git?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Такого нет. Но ты можешь дома работать в отдельном бранче. А потом просто приходя на работу как-то вручную переносить туда коммиты или сквашить.
    Ответ написан
  • Как повторно отправить нужный мне tcp пакет?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Этого нельзя делать. Во первый повторная отправка пакетов - это не прикладная задача. Это протокольная часть и tcp сам обеспечивает tcp-retransmission. Тоесть твоё участие в этом - лишнее. Медвежья услуга.

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

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Тут - задача на смекалку. Ничего перемещать не надо. Просто фильтуем ненулевые и накапливаем их. Ведем подсчет нулевых (k штук). И формируем новый массив как конкатенацию k нулей и накопленных.

    Очень похоже на сортировку подсчетом.
    Ответ написан
  • Какая разница между фронт-энд разработчиком и разработчиком JS?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вопрос звучит типа - какая разница между машиной и ее двигателем. Ну... как-то оочень безграмотно поставлен.
    Очевидно что фронтовик должен знать JS. Иначе он не фронтовик а какой-то заяц плюшевый.
    Ответ написан
    Комментировать
  • Хочу заняться программирование БПЛА/ ИИ на БПЛА, с чего начать?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не знаком с авиацией. Но предположу что современный БПЛА такой же сложный как и хорошая операционная система. В нем будет несколько уровней управления. Или несколько одновременно работающих и независимых систем. Одна из них будет - автопилотом. Это то что будет контролировать азимут и тангаж и высоту и прочее. Компенсировать ветры и воздушные ямки. Будет другая система связанная с полу-ручным управлением. Будет третья система связнная с тактической задачей. И еще много чего. То что автор называет ИИ - это может быть либо одна из этих систем, либо все вместе взятые. Все вместе - автор не потянет. Тут нужны специальные знания из авиации. Взять какую-то одну из систем (то что он называет ИИ) и просто начать ее программировать - это профанация с моей точки зрения. Или очень поверхностный подход. Я просто не верю в эффективность подобного метода когда речь идет о технике которая дорого стоит. Но потренироваться на симуляторах - вполне себе можно.
    Ответ написан
    Комментировать
  • Как в Си вывести в консоль без записи в буфер?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Есть ли какая другая команда вывода, которая будет текст выводить только в терминал, без записи в файл?

    Да есть. Ты можешь выводить в STDERR и тогда это будет печататься на экране но в лог файл не попадет по причине такого скрипта
    ./a.out > file.log'
    Чтобы оба потока писались в лог - нужно делать так
    ./a.out 2>&1 > file.log'
    Но кажется что ты борешся не с той проблемой и не так. Для логгирования в файлы - есть специальные библиотеки.
    А работа с STDOUT/STDERR - это просто базовые абстракции любого Unix-процесса.
    Ответ написан
    4 комментария
  • Ошибка [Errno 2] No such file or directory при, что делать?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я вот щас попробовал os.listdir. Там надо бекслеши экранировать или буквочку r добавлять. Проверь.

    import os
    
    os.listdir('c:\\tmp')
    
    os.listdir(r'c:\tmp')
    Ответ написан
  • Можно ли так зашифровать компьютер?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Непонятно какая тут решается проблема. Если нужно просто что-то не держать локально то для этого есть удалённые десктопы.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Изначально софт работал отлично, но в последнее время, с увеличением объема списков - стали постоянно вылезать какие-то глюки в логике работы софта, хотя код остался неизменным. В связи с чем было принято решение переписать код на другой ЯП, конкретно выбор пал на python.

    Мне не нравится ваше решение. Чисто технически C#/Net - генерирует более совершенный исполнимый код. И он и должен работать быстрее.

    Дайте шанс c# приложению. Запустите под профайлером и найдите тот алгоритм или кусок кода который работает медленно.

    Иначе вместо одной проблемы вы получите две новых. Python не славится рациональным хранением коллекций в памяти. Может быть еще хуже.
    Ответ написан
    Комментировать
  • Как декодировать JSON содержащий кириллицу?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Можно попробовать через

    $ iconv --from-code=win1251 --to-code=utf-8 ............
    Ответ написан
    Комментировать
  • Почему именно при таком обращении к матрице мы получаем все ее элементы?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ты работаешь скорее всего не с матрицей а с зубчатым массивом (jagged array). Или его еще называют
    массив массивов. Кстати строки этого массива вовсе не обязаны быть равными. Тоесть не квадрат.
    Их можно делать разного размера. И если смотреть на них сбоку - то получается картинка "зубов".

    *(*(matrix + i) + j)
    в данном выражении идет 2 разыменования. Первый - прыжок на зуб. И второе - прыжок к нужной ячейке
    массива зуба.

    В альтернативном варианте - можно создать просто массив из 100 элементов и доступ получать по формуле

    matrix = new int[100];
    cout << matrix[j + i * 10]


    И этот подход более рациональный с точки зрения менеджера памяти. Мы выделяем 1 кусок а не 10.
    Что вобщем экономит память т.к. аллокатор может резервировать больше памяти чем мы запрашиваем.
    И с точки зрения когерентности по памяти это лучше т.к. мы точно знаем что соседние строки матрицы
    лежат физически рядом а не разбросаны черт знает где.
    Ответ написан
    3 комментария
  • Возможно ли использовать смартфон в качестве устройства графического вывода компьютера?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В этом нет особого смысла. Ведь смартфоны всегда меньше чем стандартные мониторы.

    Вот в некоторых смарт-телевизорах есть схема работы наоборот. Когда телефон - транслирует по wifi картинку а телевизор показывает. Вот это я понимаю.
    Ответ написан
    Комментировать
  • Почему нельзя использовать ^ в коде?

    mayton2019
    @mayton2019
    Bigdata Engineer
    На всякий случай. Домик - это не возведение в степень а булева операция xor.
    Ответ написан
    2 комментария
  • Изменить текст в clob по все таблице?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если CLOB длиной меньше чем 32 килобайта то его можно конвертить в varchar и решать задачу как с обычной строкой.

    Вот описание пакета DBMS_LOB и функции SUBSTR https://docs.oracle.com/cd/B19306_01/appdev.102/b1...
    Ответ написан
    Комментировать
  • Какую выбрать СУБД, если в день может быть более 11млн записей?

    mayton2019
    @mayton2019
    Bigdata Engineer
    11 миллионов inserts в день - это 127 в секунду. При такой нагрузке справится любая современная БД. Ну я не знаю таких чтоб не справлялись. Делайте только короткую буферизацию и batch-insert пачками по 100 - 1000 чтобы оптимизировать сетевой roundtrip.

    Есть специализированные NoSQL системы такие как RocksDb, Tarantool в которых именно много оптимизаций сделано было для быстрой вставки. Они выдерживают и во много раз быстрее.

    И в данной задаче нужно также спросить бизнес - как быстро данные нужны к чтению пользователя. Нужно сию секунду чтоб они отобразились на UI или можно подождать пару минут или часов.
    Ответ написан
    1 комментарий
  • Как избавиться от неспособности придумать адекватное название блокам?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я где-то читал что астрономы уже давно не дают названия планетам и звездам. Закончились у них названия. Они их нумеруют. Может быть в какой-то степени это оправдано. Если для блоков веб-дизайна нет названий то возможно им стоит давать хотя-бы номера из sequence. Или если есть указание на относительную ориентацию (север-юг или слева внизу) то можно добавлять там какой-то символ. Вот. А если у автора возникнет именно задача тесной работы со слайдером - то тогда он его просто переименует в slider и будет работать. Похоже конечно на обфускацию больше чем на конвенцию по именам. Но может быть имена не так уж важны в данном процессе.
    Ответ написан
    Комментировать
  • Как сравнить два списка с помощью хеш-кода?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Насколько я вижу хешкод нигде не хранится для ArrayList а расчитывается каждый раз. Поэтому твоя попытка срезать на повороте - скорее всего неудачна.

    int hashCodeRange(int from, int to) {
            final Object[] es = elementData;
            if (to > es.length) {
                throw new ConcurrentModificationException();
            }
            int hashCode = 1;
            for (int i = from; i < to; i++) {
                Object e = es[i];
                hashCode = 31 * hashCode + (e == null ? 0 : e.hashCode());
            }
            return hashCode;
        }


    Используй метод equals. Это будет правильный ответ на собеседовании.
    Ответ написан
    Комментировать
  • Как правильно выделить память для двумерного массива большого размера?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Это не большой размер

    2000 * 500 * sizeof(int) = 4 000 000

    4 мегабайта на каждую матрицу целых чисел. Когда-то давно во времена DOS этой памяти хватало чтобы поиграть в DOOM.
    Ответ написан
    Комментировать
  • Как сделать вложенность кэша?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Ты сам себе создал проблему. Вот какую пользу тебе дает вложенность?

    Бери правило Паретто. Вот если метод method_2 покрывает 80% нагрузки - то кешируй только его а на остальное - забей. Это будет проще и надёжнее чем придумывать какие-то немыслимые ВЛОЖЕННОСТИ которые никакого
    отношения к техникам кеширования не имеют.
    Ответ написан
    Комментировать