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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вот был документик. Про семантическое версионирование https://semver.org/lang/ru/
    Ответ написан
    7 комментариев
  • Как лучше организовать промежуточную таблицу?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не нужна тебе никакая промежуточная таблица. Соедини все 3 штуки в одну таблицу по Id и будет все прекрасно.
    Ответ написан
    Комментировать
  • Почему современные языки отказываются от ООП?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Они не отказываются. Скорее происходит отказ от "парадигмы" разработки. Языки стали мульти-парадигменные. Посмотрите на С++20 или Scala. Их невозможно положить в коробочку ООП или ФП. В них есть почти полный набор фич и оттуда и отсюда. И с каждым годом число фич растет и граница размывается. Нашим потомкам будет вообще непонятно где идет раздел.

    По поводу golang. Это язык ограниченной разработки. Его создавали специально чтобы порог вхождения был низкий. Фактически делали лайтовый С++ которому можно обучить школьника за 14 дней. Но с перформансом выше чем у Питона. Поэтому выражать какие-то сложные конструкции на типах там скорее всего не получится. У golang есть свой манифест. Я забыл как он называется и где он. Вобщем там довольно четко обоснованно почему такие принципы и почему такая идеология.
    Ответ написан
    1 комментарий
  • Как реализовать досрочное завершение команды в bash?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Непонятно зачем тут google? Если тебе нужен доступ к деловым ресурсам по работе - то и пингуй их.
    Даже более того. Не пингуй а просто сигнализируй когда твои jobs упали. А то куча ненужных событий
    идет. Мы и так живем в мире переизбытка информации...
    Ответ написан
  • Правильно ли я использую исключения в java?

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

    Но обычно на исключения строятся такие кейсы которые неудобно ловить проверкой условия. Например ошибки I/O. И логика обработки этих ошибок обычно глобальна. Например целая процедура завершается когда нет доступа к сети. И безразлично где конкретно процедура упала. Нет сети - сразу на выход.

    И тут надо не 2 попытки делать а цикл do-while:

    do {
       input = askForInput();
    } while(input < 0);


    Кроме того sc.nextInt() бросает 3 вида исключений которые ты как-то не заметил. Их тоже надо отработать.
    Ответ написан
    Комментировать
  • Правильное ли решение к задаче про "среднее время доступа к слову"?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Откуда взято это утверждение?
    Если показатель успешного поиска в кэш-памяти составляет 95 %
    Ответ написан
  • Где применяют python помимо веба и data science?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Питон активно применяется инженерами НЕ из сегмента It. Химиками. Физиками. Металлургами. Строителями.

    Жестокая ирония но часто его выбирают не по желанию а потому что ничего другого бесплатного под рукой не оказалось. Вот отсюда и проистекает его широкое распространение. А по рейтингам tiobe, он перегнал С++ и Java.

    Тоесть реально на вопрос "где" можно ответить - "везде".
    Ответ написан
    Комментировать
  • Python в образе на базе alpine - все плохо?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Python в образе alpine это не плохо. Это просто параноидально секюрно. Безопасники считают что alpine настолько ограничен что потенциальный злоумышленник даже если получит консоль - все равно ничего не сделает. Даже листинг файлов не просмотрит. Вот такая парадигма. Плюс альпин - маленький. Грузится быстро. Хотя кому какое дело? Мне вообще все равно сколько образ грузится. Плевать короче. Но может комуто важно.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    В любой информационной системе я-бы выделял single-source-of-truth (типа главный источник правды) и этот главный источник должен быть согласован сам с собой всегда. Будет ли это дисковый файл. Kafka, или база PG - неважно. Важно что он будет арбитром в спорных ситуациях.

    В ситуации с потерей электричества что вы описали - совершенно невозможно правильно восстановить обе системы. Одна из ник полюбому будет опережать другую. В high-load системах она будет опережать не на 1 на на сотню транзакций например. Честно я даже не могу придумать алгоритм восстановления. Особенно если часы где-то разошлись на милисекунду и одна из систем сделала update на уже вставленные данные.

    Мне нравится вариант когда мы сразу пишем информацию в Postgres и делаем commit (по правилам которые нужны бизнесу) и дальше уже индексируем содержимое базы эластиком. После аварийного ребута я будут знать что PG содержит именно то что было закоммичено. То что нужно тоесть. Эластик будет просто догонять.
    Ответ написан
    Комментировать
  • Параллельные запрос как уязвимость?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Эта проблема к браузерам не имеет никакого отношения. Это можно рассмотреть как несогласованность транзакций при работе с балансом пользователя. Если развивать идею то так можно и 2 кредита взять.
    Воспроизвести ее можно и без бразуеров.

    Вобщем если 2 потока работают с одной разделяемой volatile переменной баланса то возможна ситуация когда проверка баланса и его обновление выполняются в различных потоках что приводит к ошибке списания средств. 100% новичков попадают в эту ловушку просто не зная что мультипоточка - коварна и может прервать выполнение вашего треда в любую милисекунду и передать управление другому потоку в этом же коде.

    Гипотетический код на несуществующем языке который делает блокирование баланса перед проверкой.
    boolean withdraw(account : Long, amount : Decimal) : boolean = {
      with(account.lock()) {
        if (account.balance >= amount) {
          account = account - amount;
          return true;  
        } else {
          return false;
        }
      }
    }

    И код на SQL (ближе к Oracle-диалекту).

    SELECT amount FROM accounts WHERE accountID = :accountId FOR UPDATE;
    
    UPDATE ... 
    
    COMMIT ...;
    Ответ написан
    Комментировать
  • Как включить mod_rewrite в docker compose (nginx-proxy + php:*.*.*-apache)?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Попробуй взять образ jwilder/nginx-proxy и внести в него нужные изменения. Я думаю там будет 1 строчка.
    Ответ написан
  • Путь развития сетевого инженера/администратора?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Иди на гос-предприятие. Там легче устроится. Потом оглядись и дальше как пойдет.
    Ответ написан
    Комментировать
  • Зарезервированные СНИЛС?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Хм. Там как в банковской карте - последняя цифра контрольная. 9 цифр + 1.
    Тоесть всего 1 млрд корректных номеров и 9 млрд некорректных которые никогда
    никому не выдадут. Отключи в своей системе контроль этой цифры и бери рандомное
    из диапазона вот этих некорректных.
    Ответ написан
    2 комментария
  • Как называется символ "?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Лучше всего искать в справочниках Unicode https://en.wikipedia.org/wiki/List_of_Unicode_char...
    В разделе базовой латиницы его называют Quotation Mark. Українською мовою этот символ называют "в лапках".
    Еще называют двойная кавычка. В XML его называют & quot ;
    Ответ написан
  • Почему может не запускаться autovacuum?

    mayton2019
    @mayton2019
    Bigdata Engineer
    А если ты вручную запустишь вакуум - это влияет на LiveTuples / DeadTuples ?
    Ответ написан
  • Фильтр по части строки?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Значит сразу скажу что у меня для вас - плохие новости. DynamoDb как и многие ему подобные облачные key-value решения расчитаны на выборку по сету ключевых полей. Обычно это хеш-ключ и ключ диапазона. В этом случае вы платите немного. Если вдруг вы решили выбирать по не-ключевым полям это уже будет другое тип запроса. Называется scan. Его можно писать на любом языке разработки но суть в том что будет выбрана ВСЯ таблица. Если она большая - то charge за текущий период вас неприятно удивит. Фиксить это почти невозможно. Это неправильный дизайн и неправильное использование AWS Dynamo. Вам следует вообще отказаться от использования Dynamo и думать над тем как НЕ делать сканов в будущем. Можете теоретически создать индекс по хвосту от строки. Но индекс с точки зрения Динамо - это копия таблицы просто по другому расположенная и реплицируемая. Вобщем не советую тоже.
    Ответ написан
    3 комментария
  • Что значит умение использовать GNU?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тут-же из контекста все понятно. Вакансия С++. Gnu == gcc.
    Ответ написан
    3 комментария
  • Что требуется чтоб разместить html сайт на VPS?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ну обычно регистрируют публичное имя. И запрашивают сертификат для https. Я-бы с этого начал.
    Ответ написан
  • Можно ли обновить пакеты разархивировав образ в папку?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вот по ссылке один господин редактирует дистрибутивы Ubuntu на образах.
    https://www.unixmen.com/edit-iso-files-using-mkiso...

    Но он использует только mkisofs и mount -t iso9660 -o loop ...

    Я думаю что ничего тут сделать нельзя. Надо вот так вот и работать. Как с архивом zip. Короче последовательный он и readonly. А редактирование на лету - это опция других файловых систем которые read-write.
    Я так думаю.
    Ответ написан
  • Ошибка с данными. invalid literal for int() with base 10: ''?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вот здесь в скобочках
    if int(i[0])==int(ch_id) and int(mesid)>int(i[1]):
    идет попытка кастовать строку в число десятичной системы но неудачно. Видимо строковый литерал не похож на число.

    Воспроизведение подобной ошибки
    >>> int("555")
    555
    >>> int("555x")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: invalid literal for int() with base 10: '555x'
    Ответ написан
    Комментировать