• А время с DS1302 всегда-всегда корректное?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    И решение, если я читаю часы-минуты-секунды и получаю в секундах 00 - то мне следует перечитать минуты ещё раз и сделать вывод.

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

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Можно.
    Это называется модули maven.
    Ответ написан
    1 комментарий
  • Можно ли в одном проекте создать несколько выполняемых или 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.
    Ответ написан
    Комментировать
  • Можно ли в одном проекте создать несколько выполняемых или jar файлов?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Да, можно. Делаете сколько нужно классов с методом main, свой jar подключаете библиотекой -cp, классы указываете по имени.
    Если же хотите, чтобы вызывался именно как -jar, то в манифесте можно указать только один main-класс.
    Ответ написан
    6 комментариев
  • Как избежать впустую расходования ресурсов при чтении из BlockingQueue Java?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Кажется, вашу проблему полностью решает project reactor

    Вот небольшое демо:

    @Test
        void testMultiproducer() throws InterruptedException {
    
            Sinks.Many<Integer> sinksA = Sinks.many().multicast().onBackpressureBuffer();
            Sinks.Many<Integer> sinksB = Sinks.many().multicast().onBackpressureBuffer();
            Sinks.Many<Integer> sinksC = Sinks.many().multicast().onBackpressureBuffer();
    
            Sinks.Many<Integer> sinkCommon = Sinks.many()
                    .multicast()
                    .onBackpressureBuffer();
    
            sinkCommon.asFlux()
                    .mergeWith(sinksA.asFlux().delayElements(Duration.ofMillis(100)))
                    .mergeWith(sinksB.asFlux().delayElements(Duration.ofMillis(200)))
                    .mergeWith(sinksC.asFlux().delayElements(Duration.ofMillis(300)))
                    .subscribe(e -> log.info("Element {}", e));  // Your consumer
            
            IntStream.range(0, 100)
                    .forEach(sinksA::tryEmitNext);  // Your producers
    
            IntStream.range(1000, 1100)
                    .forEach(sinksB::tryEmitNext);
    
            IntStream.range(2000, 2100)
                    .forEach(sinksC::tryEmitNext);
    
            Thread.sleep(10000); // Is necessary for test only
        }
    Ответ написан
    Комментировать
  • Подойдет ли mysql для работы с aiogram?

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

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Если рассматривать аналогию с php, то там каждый запрос отправляется с новым подключением к базе.
    Это не так. Соединение открывается на все время выполнения скрипта, и закрывается автоматически по завершении работы всей цепочки вызовов. В процессе, одно соединение может выполнить стопицот запросов.

    На сколько целесообразно "пытаться" держать соединение, или все же просто по аналогии с php?
    Вот тут точного ответа не дам, однако в пхп стараются избегать персистент соединения, так как пул соединений не бесконечный, и чем быстрее закроется соединение, тем быстрее можно освободить очередь для открытия нового, таким образом с небольшой задержкой можно обслужить очередь из сильно превышающей пул очереди. А с одним соединением начинается жонглирование запросами внутри 1 соединения, что приводит к блокировке кучи пользователей пользующихся 1 соединением с бд, вместо локально тормозящего 1 юзера в случае открытия/закрытия...

    Более точно можно узнать у нодеров, мои выкладки по отношению к данной платформе больше теоретические.
    Ответ написан
    3 комментария
  • Какие навыки требуются Junior программисту микроконтроллеров?

    @dima20155
    you don't choose c++. It chooses you
    1. Прежде всего, нужно знание схемотехники, но в вашем случае этот этап можно вычеркнуть.
    2. Естественно, знание основ С и С++ (синтаксиса, базовых конструкций). Советую вам использовать в своих проектах С++, поскольку зачастую вы сможете писать в стиле С без каких-либо проблем, а при необходимости воспользоваться фичами/библиотеками для С++.
    3. Навыки hardware и software отладки. Здесь просто нужна практика с любимой IDE.
    4. Понимание указателей, типов памяти (статическая, динамическая, автоматическая, регистровая). Как память выделяяется и прочее.
    5. Знание базовых структур данных. Это немного скользкий пункт, поскольку С++ предоставляет хорошую (хотя и весьма минималистичную) стандартную библиотеку STL, в которой есть большинство из необходимых структур данных, но они используют довольно много дополнительной аллокации памяти, поэтому если пишете под что-то 8битное, то имейте это ввиду.
    6. Знание git на базовом уровне сейчас важно для джуна любой IT специализации.
    7. Неплохо бы иметь базовое представление о том как устроен микроконтроллер и его архитектура.
    8. Неплохо бы понимать RTOS (FreeRTOS - классика жанра), а главное зачем он нужен, а когда он не нужен или вреден.
    9. Лично мне всегда в работе пригождается python, но это всегда сторонние задачи/автоматизация.

    P.S. Нашел ещё вот такой RoadMap.
    P.S.S. Получилось довольно объемно. Но пункты 2-5 по сути можно объединить в один. Все это можно изучить написав парочку проектов для классической STM32 + HAL.
    P.S.S.S. Сам начинал как hardware разработчик. Путь embedded разработчика начального уровня не был сложным для меня и занял не очень много времени.
    Ответ написан
    Комментировать
  • Можно ли в Spring перехватывать все исключениия у тасков и контроллеров?

    @Dmtm
    Android
    можно попробовать через аспекты https://habr.com/en/post/428548/
    Ответ написан
    Комментировать
  • Возможно ли на java сделать микросервис, который бы генерировал xls со сложной структурой и использовать его через api?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Микросервис можно
    Обращаться по api можно
    Генерировать xls можно
    Осталось понять, что вы имеете ввиду под «сложной структурой»

    Начните со знакомства с apache poi
    Ответ написан
    3 комментария
  • Возможно ли на java сделать микросервис, который бы генерировал xls со сложной структурой и использовать его через api?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Вопрос состоит из двух частей.

    1) Можно ли на java сделать микросервис? Ответ - да. Есть много готовых шаблонов типа Spring-REST
    которые являют собой почти готовые микро-сервисы.

    Например https://start.spring.io/;

    2) Генерировать XLS со сложной структурой. Тут не знаю. Насколько сложной? Что там? Вся база знаний о планете Земля со времен Шумеров? Ну для работы с XLS есть библитечка apache poi

    https://poi.apache.org/
    Ответ написан
    4 комментария
  • Подойдёт ли мини-ПК на Arduino/Raspberry pi для обучения программированию?

    @rPman
    Да, с некоторыми оговорками по тому, чего именно собираешься программировать.

    И настоятельно рекомендую не использовать малинку как основной компьютер, дорого медленно глупо. Основное место им - компактные и энергоэффективные компьютеры

    Если желаешь найти максимально дешевое железо и при этом что то программировать, настоятельно рекомендую собрать машину x86 на базе mitx материнских плат со встроенными процессорами от intel серии N, можно на их базе найти готовые 'железки' (коробка) от 10т.р.
    например на базе N5105 от 10.5т.р. (полистай там опции есть)

    Если собирать самому, настоятельно рекомендую открыть каталог твоего магазина и выбрать материнки mitx + встроенный процессор, пропуская AMD (я люблю эту компанию но встраиваемые решения от них отвратительны) и совсем уж старые версии, старее 2016г, выбирая минимальную ram по цене и любой ssd диск (если linux можно даже с флешки потерпеть какое то время, но это экономия 'на спичках', сэкономишь тысячу, потратишь нервов на сто)

    Само собой монитор клавиатура и мышка тебе нужны, но все современные (последние лет 20) телевизоры позволяют подключать к себе компьютер, так что на этом тоже можно сэкономить, но как очень временное решение. Так же можно найти БУ, за дешево, если к примеру маленький экран.

    p.s. если с деньгами совсем швах, то можно заранее потратить выделенные деньги на нормальный смартфон, купить usb-хаб с подключением к его разъему и настроить на нем debian-root, это по факту полноценный linux, в некоторых случаях можно добиться запуск почти любого приложения. Подключить монитор в данной ситуации можно через miracast/chromecast (телевизоры последние 5-10 лет) либо вместо usb хаба покупать докстанцию (это просто первая попавшаяся модель как пример) с поддержкой dp/hdmi (при выборе смартфона проверять поддержку подключения, таких мало).

    upd. p.p.s. в продолжение темы рабочего места из смартфона
    так как за работой не всегда проводится много времени, можно воспользоваться облачными решениями, найти любого провайдера с почасовой оплатой и поднимать там машину, работая на ней удаленно, к примеру селектел (дорогой) позволяет за 5р сутки за ip address + ~5р в час за 2cpu8ram10g-ssd + копейки на бакап, поднимать и выключать машину по требованию.
    Ответ написан
    2 комментария
  • Подойдёт ли мини-ПК на Arduino/Raspberry pi для обучения программированию?

    @FedorWK
    Arduino не подойдет.

    Raspberry Pi - вполне. Только желательно брать от 4GB RAM, что бы можно было запустить браузер, если нет другого ПК.
    Но в любом случае, для первоначальной настройки понадобиться другой ПК, чтобы записать Линукс на SD карту.

    Можно попробовать аналогичные альтернативные SBC, например Orange Pi или Rock Pi. Получится дешевле и в некоторых конфигурациях производительнее, но поддержка и комьюнити у Raspberry лучше.
    Ответ написан
    3 комментария
  • Как в Reactor Netty Http Server получить тело POST-запроса?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    public Publisher<Void> addReport(HttpServerRequest req, HttpServerResponse resp) {
            return req.receive()
                    .asString()
                    .doOnNext(string -> {
                        // todo :: make some handy job with string
                        System.out.println(string);
                    })
                    .flatMap(__ -> resp.status(HttpResponseStatus.OK)  
                            .addHeader(ACCESS_CONTROL_ALLOW_ORIGIN, "*")     // CORS
                            .sendString(Mono.just("")));
        }
    Ответ написан
    5 комментариев
  • Как в Reactor Netty Http Server получить тело POST-запроса?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    https://www.baeldung.com/java-netty-http-server. Здесь кажется есть ответ.
    Ответ написан
    Комментировать
  • Как использовать netty?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Общее представление можно получить из книги Maurer, Wolfthal - Netty in Action. Документацию по API читать на официальном сайте. Ну и сразу готовиться к тому, что придётся постоянно лазить за ответами в исходники, как самого Netty, так и использующих его проектов. Найти их можно на Github'е. Кроме того, стоит учесть, что без знания принципов сетевого программирования шансов на успешное освоение нет.
    Ответ написан
    Комментировать
  • Проблема c CORS запросом, как исправить?

    zorakk
    @zorakk
    полтора года веба
    Обычно запрос XMLHttpRequest может делать запрос только в рамках текущего сайта. При попытке использовать другой домен/порт/протокол – браузер выдаёт ошибку.

    Подробнее читайте на https://learn.javascript.ru/xhr-crossdomain
    Ответ написан
    1 комментарий
  • Почему преобразовывается "16" в "шестнадцать"?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Расширение браузера или браузерный перевод, скорее всего, виноваты. В браузерном API нет, емнип, встроенных средств вывода чисел прописью, соответственно, виноват либо браузер конкретного пользователя, либо что-то на стороне сервера.
    Ответ написан
    4 комментария
  • Как правильно пользоваться Java оператором If и Switch?

    noder_ss
    @noder_ss
    Линуксоид-энтузиаст и SQL разработчик
    63fe22d1a0635309932217.png
    Тут оберните результат в скобки, без скобок работает только на первую строку, а у вас их две. А на будущее - не загружайте код в виде видео, это неуважительно из-за невозможности цитировать строчки и ужастно неудобно. Просто скопируйте и вставьте в вопрос.
    Конечный код:
    if(role == 2){
    System.out.print("Текст");
    int code = Armour.nextInt();
    }
    Ответ написан
    2 комментария