Задать вопрос
  • Можно ли в одном проекте создать несколько выполняемых или jar файлов?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Значит смотри. Что такое несколько выполняемых файлов. Это просто несколько jar-файлов в которых просто есть нужный манифест. Я достигал это с помощью профилей и с помощью Makefile который уже автоматизировал сборку проекта. Вот пример проекта с двумя main артифактами. Приведу только ключевые фрагменты которые есть суть.

    pom.xml
    <profiles>
        <profile>
          <id>java</id>
          <properties>
            <main.class.name>org.example.JavaTemplate</main.class.name>
            <jar.name>java-template</jar.name>
          </properties>
        </profile>
        <profile>
          <id>java-kafka-producer</id>
          <properties>
            <main.class.name>org.example.kafka.JavaKafkaProducerTemplate</main.class.name>
            <jar.name>java-kafka-producer-template</jar.name>
          </properties>
        </profile>
       ....
    <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.2.0</version>
            <configuration>
              <archive>
                <manifest>
                  <addClasspath>true</addClasspath>
                  <Main-Class>${main.class.name}</Main-Class>
                </manifest>
              </archive>
              <finalName>${jar.name}</finalName>
            </configuration>
          </plugin>

    Makefile
    java-kafka-producer-template: build
    	mvn package -DskipTests -Pjava-kafka-producer
    	cp -f target/java-kafka-producer-template.jar ./bin/
    
    build: clean
    	mvn install dependency:copy-dependencies
    	cp -f target/dependency/* ./bin/
    	rsync src/main/resources/shell/* ./bin
    
    clean:
    	rm -fr bin/*
    	mkdir -p bin/
    ...


    Сразу скажу что я не искал коробочного решения в виде готового gradle/maven плагина. Я просто скриптовал последовательность действий для нескольких сборок. Фактически я делал несколько компилляций проекта с разными параметрами. Я думаю что я достиг своей цели не заморачиваясь java-перфекционизмом или зависимостью от IDE.
    Ответ написан
    Комментировать
  • Как вывести список всех документов в MongoDB?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ответ написан
    Комментировать
  • Какой физический / геометрический смысл в формуле - «стандартная ошибка»?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тебе не стоит искать физический или геометрический смысл прям везде.

    Математика тем и характерна что вводит абстракции такого уровня, которым нельзя привязать ничего
    физического. Например дисперсия имеет размерность квадрата измеряемой величины. Тоесть если ты меряешь
    вес слонов в килограмах, и дисперсия получается - килограмм в квадрате. Вот что это за физический смысл?
    Безсмыслица. Переводишь координаты точки в кватернион. И у трехмерной точки появляется четвертое измерение.
    Какой у него физический смысл? А никакого. Просто линейная комбинация других измерений.

    А если ты полезешь в мир физики элементарных частиц - то там вообще есть такие забавные эффекты
    что ты не можешь одновременно измерять координаты частицы и ее скорость точно. Или одно или другое.
    Ответ написан
  • Как шифровать текст в python?

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

    Вот исходя из этих принципов и проектируются надежные и безопасные системы. А если автор надеется на то что непопулярный алгоритм шифрования его спасёт - то он сильно ошибается. На этом погорели многие самоуверенные архитекторы. Они тоже надеялись что на незнании можно делать секрет. В принципе вся военная секретная переписка до 20 го века базировалась на предположении что противник не знает. А современная - уже считает что это не главное. А главное - как быстро мы сможем заменить скомпрометированный ключ на новый. И эта замена как раз и есть замена алгоритма. Потому что ключ в крипторгафии и это и есть секретность. А сами алгоритмы вообще ни разу ни секретных. Это кстати - требование. Под сертификацию идут обычно публично известные алгоритмы и их обсуждают. Их анализируют. Их брутфорсят. И только благодаря этому процессу они и являются надежными.
    Ответ написан
    Комментировать
  • Как произвести аналитику изменений и определить причину роста объёма базы?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не знаю как щас. А лет 10 назад базы обслуживал DBA. Это был инженер и хозяйственник. Кроме того что он знал бизнес. Он также знал примерный объем таблиц в гигабайтах и в миллионах строк. Не обязательно все а хотя-бы топ 10. И даже если какая-то из них внезапно опухла - то это было-бы лакмусом того что в системе что-то пошло не так. (Я в бытность DBA-администраторства знал примерно сколько в день растут таблицы бизнес-фактов и сколько архивных логов накатывает Oracle). Обычно схема даже очень сложных систем состоит из справочников которые не растут. И из таблиц бизнес-операций которые и нужно держать под наблюдением. И их не очень много.

    Вот тут пишут как посмотреть размер таблиц https://stackoverflow.com/questions/21738408/postg...

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

    И внезапный рост бизнес-данных - это не вопрос к qna. Это вопрос ко всем отвественным которые платят за железо и софт и сам программный продукт 1С.
    Ответ написан
    Комментировать
  • Как вывести Линукс из бесконечного свопа?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тебя-же никто не заставляет открывать все под Хром. В конце концов мы живем в эпоху браузерного либерализма.

    Установи себе Mozilla, Edge. Может на них утечка памяти не будет так фатальна.
    Ответ написан
  • Можно ли собрать apk используя тоьько jdk?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Дело в том что Google использует свою jvm бинарно не совместимую с Sun/Oracle jvm.
    Поэтому я могу спорить на виски что не взлетит никак.
    Ответ написан
    Комментировать
  • Какой способ шифрования использовать для хранения API ключей в БД?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Все поставщики облачных сервисов (Amazon, MS Azure) включают службы хранения ключей.
    https://azure.microsoft.com/en-us/products/key-vault
    https://aws.amazon.com/kms
    Вот надо их и использовать.

    Если вы берете на себя шифрование секретов своими методами - то надо обсудить насколько
    надежны ваши методы и какие усилия надо будет сделать экстренно если исходник утек или
    ключ скомпрометирован. Это - вопрос в духе законов Керхгофа.
    Ответ написан
    Комментировать
  • Как запустить контейнер docker?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Поудаляй все базы графаны и прометеуса. Это вернет компоуз в некое нулевое состояние с которого ты начинал.
    Ответ написан
    5 комментариев
  • Почему скалярное произведение не нормализованных и коллинеарных векторов разное при изменении их точек?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Все правильно. Так и должно быть.
    Ответ написан
    Комментировать
  • Как авторизируется первый пользователь БД?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Первого админа добавляет владелец (owner) системы. Дальше права должны раздаваться по иерархии. Если у админа есть "with admin option" - то он может соотв плодить новых админов и так далее.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вопрос интересный. Я-бы спросил - какой смысл должно нести это время? Все простые варианты добавить к таблице счетчик времени - вызывают много вопросов. Начиная от того как быть с delete. И как быть MVCC. Можно просто рассмотреть парочку кейсов где 2 пользователя одновременно вставляют и удаляют строки и еще по разному коммитят и откатывают изменнеия и получается нехилое число парадоксов.

    Аналогия с файловой системой - неуменстна. Файлы - работают в режиме dirty mode. Тоесть сразу фиксируют результат опреации. А таблица в БД в этом смысле похожа на git-репозитарий со множеством бранчей. Тоесть мультиверсионная вселенная. И подытожить ее состояние в любой момент времени так дешево не получиться.

    Для нужд аудита изменений - самое простое создать поле last_update_timestamp в таблиах например. И туда добавлять время бизнес-операции.

    Еще для аудита практически во всех dbms есть опции. Для Oracle например есть audit table.
    Аудит обычно пишет имя пользователя и время действия и время таблицы над которой действие было.
    Для MSSQL тоже есть свой API.
    Ответ написан
    5 комментариев
  • Сколько вкладок в браузере Google Chrome я смогу открыть одновременно, если обзаведусь 128 гигабайтами оперативной памяти?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Мне кажется что даже Google не тестировал свою разработку на такие странные лимиты.

    1 310 720 вкладок? Их невозможно увидеть глазами во первых. Да и что за пользователь будет такой фигнёй страдать. Техническая интуиция подсказывает что до того как мы достигнем миллиона - в системе сработают другие лимиты. На количество handles в Windows или какой-то счетчик или пул просто переполнится потому что сильно был не расчитан на такое извращенное использование.

    Память в 128 здесь вобщем непричем. И если на закрытых вкладках java-машина паркуется то и активные страницы кода и данных можно сложить в swap.
    Ответ написан
    Комментировать
  • Можно ли сказать, что Гит работает на блокчейне?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Нет. Гит не является блокчейном потому-как в него не закладывались требования по кворуму и гарантий уникальности и нефальсифицируемости истории.

    В git нет понятия блок. И нет алгоритмов POW для подтверждения потраченной работы.

    В git владелец может убить master-бранч что само по себе - принципиально невозможно в криптовалютных проектах

    UPD: Почему я привлекаю именно юзкейс криптовалют. Потому что в наше время блокчейн плотно ассоциирован именно с этой технологией. Хотя само по себе определение блокчейна может быть либеральнее чем я описал. Например POW может и не быть. Просто рассматривая git надо обозначить его сравнительные недостатки чтоб не было в теме попыток спекулировать просто на похожести этих двух технологий. Да они в чем-то похожи но блокчейн во много раз строже по безопасности. Ведь хранение журнала фин-операций - особая и деликатная задача.
    Ответ написан
    3 комментария
  • Есть ли какой довод переходить на Linux Mint с Ubuntu?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я-бы посмотрел на количество человек в команде разработки. И еще можно глянуть баг-трекер.
    Если там дефекты висят по пол-года - то это тревожный сигнал о том что не стоит
    с ним связываться. Ведь эти дефекты - будут у тебя.

    Времена когда люди гонялись за операционками остались в 2000х. Особого смысла менять один
    декстоп на другой нет. По возможностям они все примерно одинаковы. И если что и осталось выбирать
    то это - надежность патчей и оперативность их выкатывания.

    Недостатки Убунту описывал сам Столлман. По его мнению эта ОС слегка ... стучит на своих пользователей.
    На современном языке - собирает телеметрию. В каком объеме собирает и как - никто не знает.
    Никто такой вопрос кроме Столлмана видимо не поднимал. Но даже если так ... какие гарантии
    что Минт не делает тоже самое?
    Ответ написан
    4 комментария
  • Подойдет ли mysql для работы с aiogram?

    mayton2019
    @mayton2019
    Bigdata Engineer
    При 700 наверное вообще любая БД подойдет.
    Но тут надо еще отметить что архитектура БД выбирается исходя из наиболее типичных запросов.
    Например для установления дружбы между людей в соц-сетях и для принятия маркетинговых решений
    берут графовую БД. Для хранения сета вариативных документов - берут Mongo. Для финансовых транзакций
    с историей - берут классические реляционные типа Oracle/PG.
    Ответ написан
    Комментировать
  • Как происходит работа с api?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не нужно тебе брать таких заказов. Просто если ты задаешь такой вопрос - то ты находишся где-то на самом старте Web API. И сколько у тебя вопросов еще будет если ты вдруг возьмешь аванс и приступишь к работе?

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Доступ к истории проекта закрывать нельзя. Это противоречит идеологии версионного контроля. В старых версиях кроме sensitive info могут быть знания по предметной области. Нам в разработке с одним банком очень помог анализ истории. По крайней мере мы поняли некоторые причины дефектов мультипоточки.

    То что пароли и токены коммитились - это epic fail, но лучше их обновить чем поступать как тупо. Вы-же не хотите походить на пришельцев-бюрократов расы "вогонов" (из романа Дугласа Адамса) которые уничтожили планету Земля только потому что им надо было шоссе построить в космосе.
    Ответ написан
    Комментировать
  • Как посчитать количество одинаковых цифр в 4-х значном числе?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Можно попробовать решить обратную зачачу. Генерировать все с 3 одинаковыми.

    Например.
    111x = генератор для последовательности 1111,1112,1113....1119
    11x1 = для 1111, 1121,1131....


    А потом - отфильтровать те которые не заходят в заявленный диапазон.
    Ответ написан
    Комментировать