Задать вопрос
  • Нужно ли при разработке библиотеки следовать принципу одной ответственности?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Да можно. Это называется фасадом. Ограничение в single responsibility обычно относится к ООП и к классам.

    Вообще если ты фрилансер и делаешь просто заказ чтоб отдать его с концами - то тебе безразлично что будет внутри. Главное чтоб ты понимал. А соглашения по декомпозиции кода на части появляются только как результат
    коллективной работы над кодом. Тоесть ты должен спрашивать не qna, а свою команду как вам удобнее
    разрабатывать код.
    Ответ написан
    Комментировать
  • Как вычислить значение x mod 2 на машине Тьюринга?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В унарном виде - это как цепочка единичек. Например число 5 будет.

    _11111_

    Справа и слева должен стоять blank sysmbol. Типа признак конца ленты чтоб было что проверять.

    Тогда (5 mod 2) = 1

    И мы должны получить на ленточке просто единичку.

    _1_

    Это можно сделать поглощая пары соседних единичек. А для четного числа будет пустая лента. Тоесть остаток от деления равен нулю.

    Ну вот такой алгоритм. Дальше надо делать конечный автомат который ищет пары единичек.
    Ответ написан
    Комментировать
  • Можно ли скачать фаил pdf из встроенного просмотрщика на сайте?

    mayton2019
    @mayton2019
    Bigdata Engineer
    1) Вот тут иногда можно найти удаленные книжки

    https://web.archive.org/

    2) Если был известен MD4 или magnet link (hashcode) или еще какие-то хеши то тоже можно скачать.
    Ответ написан
    Комментировать
  • Как решить задачу на c?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Задача похожа на knapsack problem. Ее можно переформулировать как укладка вещей в рюкзаке с полным заполнением и с сохранением порядка вещей. Или еще как поиск всех сумм целых чисел 1,2,3 равных в сумме n.

    Если представить тернарное дерево где childs - это соотвественно длины прыжков (веса) - тогда задача сводится к генерации всех возможных путей в тернарном дереве где длина пути равна n. У этого дерева будет много лишних ветвей которые можно сразу отбросить на этапе обхода если частичная сумма уже больше чем n.

    Вобщем DFS.
    Ответ написан
    Комментировать
  • Что будет быстрее update или insert?

    mayton2019
    @mayton2019
    Bigdata Engineer
    предполагается нагрузка на сервис где-то рпс 70-100к
    c
    Это не большая нагрузка. Oracle лет 20 назад заявлял 500K транзакций в секунду по результатам бенчмарков.

    Данную задачу также можно решать со стороны CQRS / Event Sourcing. Тоесть посто фиксировать события гео-позиции в журналы (они могут быть распределенные) а потом уже накатывать в БД. Здесь я предполагаю что вам не требуется реал-тайм. (За 10 секунд вашего технического лага человек все равно успеет убежать за горизонт) и накинтье еще от 1 секунды до допустим 30 секунд время на фиксацию в основной БД. И получается система вполне себе почти реального времени. И в то-же время вам будет лего выдержать всплески информации и ничего не потерять.
    Ответ написан
  • Как оптмизировать INSERT-SELECT SQL запрос?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Как всегда автор не указывает тип dbms. Ох-ох-ох..

    Запрос состоит из двух функционалов. Один - это собственно выборка - и другой это вставка.
    Скорее всего медленно работает выборка в части соединения двух таблиц.
    INSERT INTO tabel0 (row_1, row_2, row_3, row_4)
    SELECT oa.row_5,
           oa.row_6,
           oa.row_7,
           nw.row_8
    FROM table1 t1
           LEFT JOIN table2 t2 on t2.row_9 = t1.row_10
    WHERE t2.row_11 IS NOT NULL;

    Вот здесь где идет join по row_9 и row_10 надо построить индексы по этим полям.
    Потом прогнать analyze по обоим таблицам.

    И запустить еще раз.

    Вставка тоже может тормозить по разным условиям (триггеры, instead-of триггеры, сложные констрейнты
    или просто сложные типы данных наподобие xml/json которые требуют много I/O). Но для начала
    надо хотя-бы с выборкой разобраться.
    Ответ написан
    3 комментария
  • Как человеку пройти сложную капчу?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ну... есть люди с разными особеностями зрения. Некоторые видят буквы. А некоторые даже печатный ровный шрифт не читают. Дислексия или что-то в этом роде.

    Скорее всего у тебя просто особенность зрения или восприятия такая.

    Для меня эта капча тоже тяжело читается. Но предпослений символ - скорее всего цифра 8.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Для выскоконагруженных интернет магазинов нет прямого доступа к категориям в БД.
    Они (категории) кешируются на стороне приложения и NGinx.

    Категории меняются редко. Ну вряд-ли в течение дня. Скорее всего на следующий день.
    Поэтому форма хранения их в таблице должна выбираться из удобства внесения изменений.
    Вот попробуйте Adjacency List. Самый первый и самый очевидный вариант.

    И не надо быть перфекционистом и ковырять грязь из под ногтей. Просто потеряте кучу времени.
    Ответ написан
    Комментировать
  • Как устроена АСУ ТП?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я не понимаю. Почему автор не мог просто поискать в википедии? Если ему просто нужно определение!

    АСУ ТП изучают в технических ВУЗ ах. Это программа обучения на несколько лет. И не задача QNA заниматься
    процессом обучения. Пускай задаст конкретный вопрос из области автоматизации производства и люди ответят.
    Ответ написан
    Комментировать
  • Почему boolean использует больше памяти чем byte?

    mayton2019
    @mayton2019
    Bigdata Engineer
    С точки зрения ассемблера - удобнее делать операции над целым числом (DWORD) 32bit. Он - же int.
    В масштабах современной памяти - безразлично выделять 1 байт или 4 байта. Все равно
    другие структуры больше захватят тысячекратно. А простота компилируемого кода - здесь важнее.

    Вот поэтому компилляторы и собирают boolean в int. А язык С++ позволяет проводить аналогии
    между int и boolean. В зависимости от контекста число может быть как числом так и логической
    величиной. (Тесная связь с ассемблером да).

    А если речь допустим идет о массиве boolean - тогда смысл в экономии есть. В Java например
    такой массив действительно будет использовать биты внутри байта.

    В базах данных например (Oracle) вообще нет булевого типа с точки зрения хранения. Там предлагают
    символьный тип 'Y' или 'N'. Это связано с дисковыми структурами хранения данных в datarow.

    Поэтому sizeof(булевый тип) будет всегда парадоксом в разных системах программирования и языках.
    Как компиллятору удобнее так и соберет.
    Ответ написан
    Комментировать
  • Как расшифровать внешний диск?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я не понимаю твоей проблемы. Ты пишешь

    Был у меня диск на ноуте, полностью шифрован veraCrypt, Именно шифрованием диска. Вводил пароль при загрузке. Все хорошо но пришло время апгрейда и диск был поменян.


    Зачем тебе нужен старый диск если ты уже переехал на новое железо? У тебя уже новые MyDocuments. Отформатируй его к чорту. И зашифруй заново если хочешь.
    Ответ написан
  • Калькулятор C++ как убрать 1.33333e+06 подобные результаты вычисления?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Предположительно ты работаешь с типами данных float или double.
    Эти типы не имеют однозначного отображения в десятичную
    систему. Такова их природа.
    Ответ написан
    Комментировать
  • Можно ли идентифицировать человека по измененному голосу?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ну если человек по жизни - шепелявый то какие питчи не накладывай то все равно будет шепелявый.
    А вообще задачу надо смотреть более широко. Не только голос но и согласные буквы. Слова-паразиты.
    Паузы. Кашель. Шмыгание носом. Просто грамотность речи. Все это маркеры которые просто
    приближают метрику к нужному человеку. Опять-же эти маркеры нужно было собирать заранее для всей выборки людей.

    Вообще во всех задачах распознавания нужно брать как можно более широкий вектор параметров.
    Ответ написан
    Комментировать
  • Как лучше сделать архитектуру сервиса с Cassandra?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Объем данных - терабайт в день. 90 МБ/с траффика в пике.
    Скорость ответа сервисов и мгновенная запись не важна, важно записать данные.


    Между первым и вторым сервисом можно поставить Kafka. Это позволит смягчить ситуацию частичной
    недоступности пишущего сервиса. Я здесь далее по топику предполагаю что Kafka и Cassandra - это облачные
    решения
    которые в приципе не падают. А если и падают то очень редко и по крайне жестким авариям датацентров.

    В этом случае в качестве точек сбоя можно просто рассматривать два ваших микросервиса.

    Еще вариант. Вообще убрать пишущий микро-сервис. Я не знаю как в кассандре. Но в bigdata есть огромное
    число т.н. коннекторов. Это что-то типа драйвера который позволяет писать стриминг в базы и наоборот.
    Например есть коннектор который пишет сразу из Kafka в таблицы Databricks. Скорее всего для кассандры
    тоже есть нечто подобное. Мне кажется с коннектором архитектурно получается проще.
    Ответ написан
    2 комментария
  • С чего начать практику администрирования без скучных книг?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Сколько тебе лет? Учишся? Работаешь?

    Протяни домашнюю сетку для игр. Сделай DNS/DHCP. Создай видео-архив чтоб все участники сети могли смотреть.
    Ответ написан
  • Как запустить Processing (Java) код при уже запущенной программе?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Есть несколько способов это сделать.

    Использовать встроенную в Java машину Nashorn которая по идее реализует JavaScript. Там такое можно сделать.

    Подключиться дебаггером к приложению запущенному в debug mode. Там по идее тоже можно выполнять какие-то команды на вычисление выражений и видеть результат.

    Но сама идея влезать в работающее приложение - не очень хорошая идея. С точки зрения безопасности и надежности. Возможно те вещи что ты хочешь могут быть закрыты через Logging или JMX или заранее протестировать все кейсы JUnit тестами в оффлайне. Сам факт того что ты хочешь чего-то в runtime говорит
    о нехватке тестового покрытия.

    Еще посмотри на jschell. Может пригодится.
    Ответ написан
  • Решить проблему This class should provide a default constructor (a public constructor with no arguments)?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Добавь такой конструктор.

    public AlarmService() {
            super();
     }
    Ответ написан
    Комментировать
  • Какой ноутбук выбрать для Linux?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я покупал HP-15" с установленным Windows-10 лет 7 назад. Там был диск на 512G. После того как я снес Windows с удивлением обнаружил ... еще один раздел на 512 который был типа служебным. Для саппорта. Переразбил для себя. Вот теперь у меня 1 Тб и Ubuntu. Profit.
    Ответ написан
    Комментировать
  • Как определить размеры посылки на картинке?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Можно попросить пользователя положить на угол посылки спичечный коробок. И далее - как-то по пропорциям.
    Ответ написан
  • Как убедиться что атомарные операции будут выполнены точно правильно?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В данном исходнике нет проблемы атомиков. Но здесь есть проблема отсутсвия синхронизации потоков а и b.
    Нужно наладить синхронизацию и дальше атомики станут приносить ощутимую пользу.
    Ответ написан
    Комментировать