• Является ли взаимозаменяемым опыт разработки на разных языках рамках одной платформы JVM (Java, Scala, Kotlin)?

    Jacen11
    @Jacen11
    да всем плевать сколько лет и где вы там просиживали, важны реальные знания. Есть те кто десять лет сидит и ничего толком не знают, кто то за год уже почти мидл. Учитывается главным образом как на вопросы ответите. Ну если ответы равны будут, то конечно уже посмотрят на прочее, но что то сомневаюсь что в реальном мире есть люди с одинаковыми знаниями и навыками.
    лично я устраивался без опыта на вакансиями с требованиями в несколько лет и менял стек пару раз. Один раз после трудоустройства всплыло что интервьюер забыл, что у меня нет коммерческого опыта в текущем стеке, претензий к моей работе не было
    Ответ написан
    2 комментария
  • @Bean в @Configuration и @Component. Разница?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Обычно с помощью @Bean создают объекты, которые требуют дополнительной настройки. Часто это какие-то компоненты из библиотек, например, http клиенты, пулы подключений и т.д.
    @Component и @Service используют обычно, когда ничего особенного при создании объекта не требуется.
    Ответ написан
    Комментировать
  • Почему я получаю NullPointerException?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    mediaProjection = mediaProjectionManager.getMediaProjection(Activity.RESULT_OK, null);

    очевидно что здесь у вас в результате mediaProjection = null
    в документации к методу getMediaProjection написано:

    Parameters
    resultCode int: The result code from onActivityResult(int, int, Intent).
    resultData Intent: The result data from onActivityResult(int, int, Intent). This value cannot be null.

    т.е. вторым параметром должен быть интент, и прямо сказано что он не может быть null, а вы таки ему пытаетесь подсунуть null.
    Ответ написан
    2 комментария
  • Ошибка, в чем проблема?

    al_gon
    @al_gon
    Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 1
    Очевидно,что strings содержит 1 элемент.
    Ответ написан
    Комментировать
  • Почему нельзя/можно писать бизнес-логику в sql?

    @FernandoErrNando
    Вам указывали недостатки, но, почему-то для вас "Всё минусы какие-то мутные (кроме зависимости от конкретной БД)".
    Давайте попробуем посмотреть повнимательнее:
    1. Сложность отладки и тестирования - в то время, когда я работал с такими приложениями была проблема с тем, что средства отладки были слишком неразвиты, зачастую приходилось пользоваться dbms_output и все, чтобы отладить процедуру. думаю, нормыльные даббагеры потом появились, но я уже к тому времени ушел. Как сейчас обстоит с этим в РСУБД?
    2. Затрудненная версионность - а разве не так? На больших проектах со множеством разработчиков это ещё как будет стрелять. Просто посмотрите как мучаются люди с данной проблемой https://habr.com/ru/articles/330662/, тогда как те, кто использует БЛ вне базы просто пользуются гитом
    3. Зависимость от конкретной СУБД. Вы уверены, что БД у вас всегда будет подходить под требования бизнеса на 10 лет? Что, если за 10 лет появятся задачи, которые лучше решать другими инструментами? А если появятся задачи которые можно решить только сторонними инструментами?
    4. "Ограниченные возможности языка" - можно ли решить все проблемы с помощь SQL/PL-SQL?
    5. Сложности с масштабированием/оптимизацией - здесь тоже намного сложнее все. Кэширование вы тоже на СУБД будете возлагать? Что будет, когда у вас серверов БД будет больше 1?
    6. Что насчет интеграций? Что будет, если вам надо будет ходить по АПИ в третьесторонний сервис? вы это тоже заложите в логику в БД?
    Ответ написан
  • Почему нельзя/можно писать бизнес-логику в sql?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Вопрос из серии "У меня есть своя дурацкая точка зрения, которую я ни сформулировать толком не могу, ни подкрепить никакими доводами. Давайте, переубеждайте меня!"

    Вы просто не поняли статью, которую читали.
    Там говорятся банальные вещи о том, что бизнес-логика не должна завязываться на конкретное хранилище. То есть там было сказано ровно противоположное тому что у вас. Не "БЛ нельзя писать в SQL", а наоборот - в бизнес логике не должно быть SQL. Просто потому что чистый код и разделение ответственности. Сейчас у вас SQL, завтра эластик, а послезавтра микросервис по НТТР. Да, БД, которыми пользуются все три, "осталась та же самая". Способ ходить в неё поменялся.
    Плюс тупо упрощается код, с ним проще работать. БЛ отдельно, БД - отдельно. Именно об этом и говорится в статье.

    Но могу вас утешить. Всё это говорится про более-менее сложные приложения.
    Говнокодить свою домашнюю страничку про котиков, или интернет магазин по продаже мёда с пасеки любимого дядюшки вы можете как угодно, хоть в SQL, хоть в Brainfuck-e.
    Ответ написан
    5 комментариев
  • Почему нельзя/можно писать бизнес-логику в sql?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    У каждого из подходов есть свои преимущества и недостатки.
    К недостаткам можно отнести:
    • Сложность отладки и тестирования
    • Затрудненная версионность
    • Зависимость от конкретной СУБД
    • Ограниченные возможности языка
    • Сложности с масштабированием
    • Возможные side-эффекты

    К преимуществам:
    • Уменьшение трафика
    • Цетрализованная логика
    • Безопасность данных
    Ответ написан
    9 комментариев
  • Не выводится ничего в VS code на Java?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Наверно, лучше всего сначала поискать. Например, по запросу system.out.println vscode первое, что мне вернул поисковик - это.
    Мне кажется, вы должны были уже попробовать всё это и затем прийти с вопросом: «я пробовал и так и эдак, результат такой; что я делаю не так?»
    Ответ написан
    1 комментарий
  • Не запускается Spring - приложение?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Вы используете spring-boot.
    Не нужно указывать версии hibernate. Совместимая версия уже указана в пэрент-поме спрингбута.

    hibernate-core версии 4.3.11.Final вышел в далеком 2015м во времена восьмой джавы.
    java 20 вышла в этом году.
    Вряд-ли они вместе заработают.

    Удалите эту зависимость:
    <dependency>
          <groupId>org.hibernate</groupId>
          <artifactId>hibernate-core</artifactId>
          <version>4.3.11.Final</version>
        </dependency>
    Ответ написан
  • Как исправить ошибку подключения?

    hint000
    @hint000
    у админа три руки
    якобы много устройств законнектилось, куда копать?
    копать в сторону выяснения:
    1. правда ли, что соединений так много;
    2. если правда, то кто создаёт много подключений.
    (посмотреть открытые соединения на 192.168.1.14; их количество; все ли они с сервера 1С;
    посмотреть на сервере 1С соединения в сторону 192.168.1.14; их количество; какими процессами открыты соединения; если все улики показывают, что убийца - дворецкий названная программа резервного копирования, то обратиться в их техподдержку, т.к. это коммерческий софт).

    Upd. Ну ещё проверить вручную доступность FTPS, так как много соединений может быть и потому, что программа создаёт соединение, что-то оказывается недоступно, соединение не закрывается (глюк), но делается другая попытка, т.е. создаётся ещё одно соединение и т.д. Но это только версия.
    Ответ написан
    Комментировать
  • Что быстрее SQL или Javascript?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Вопрос задан как пальцем в небо.
    Быстрее будет не отдельно взятый постгрес или сайт на js, а машина, на которой это все будет считаться.
    JS где - у пользователя в браузе, или это nodejs на сервере?
    постгрес крутится на той же машине, или на другой? Какой там процессор, сколько, сколько памяти?

    Не забывать, что если данные лежат в базе, а считать вы будете в JS, то к расчетам еще добавить время на передачу данных, поэтому чисто теоретически наверное выполнить все на постгресе должно быть быстрее.

    Но вам никто не ответит на вопрос точно. Гораздо проще провести перформанс тесты и посмотреть живые ответы.
    Ответ написан
    3 комментария
  • Что быстрее SQL или Javascript?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    В общем, чтобы не издеваться над девушкой, объясним на пальцах.

    Во-первых, заголовок у вопроса чудовищно некорректный. Это все равно что спросить, "что быстрее - пылесос или стиральная машина?"
    Во-вторых, ответ на вопрос "производить ли обработку данных в БД или же запросить все данные в клиентское приложение и обрабатывать там" совершенно очевиден: обработку данных следует производить в общем случае только в БД. Она для этого и придумана. Чтобы обрабатывать значительные объемы данных.

    Да, js тоже "может" обрабатывать большие объемы данных.
    Но чтобы значительный объем данных обработать, его сначала надо передать, полностью забив канал между сайтом и базой
    Чтобы значительный объем данных обработать, его надо сначала проиндексировать. Причем делать это каждый раз, а не использовать уже имеющийся набор индексов
    Чтобы значительный объем данных обработать, надо иметь значительный объем памяти или упасть из-за её недостатка
    Чтобы значительный объем данных обработать в многопоточном режиме (а сайт как раз является многопоточной системой), все вышеперечисленное надо умножить на количество посетителей сайта - при каждом запросе перегонять весь массив данных, выделять память, индексировать, считать. Если же вы оставляете все данные в памяти приложения, то их тогда надо как-то синхронизировать с БД. То есть вы себе собираете кучу проблем на пустом месте.

    Несомненно, из любого правила есть исключения. И бывают ситуации, когда приходится считать в приложении.
    Но на вопрос в общем виде ответ будет совершенно однозначный. Не "может так, может сяк", а только в БД.
    Ответ написан
    9 комментариев
  • Может ли Раст полноценно заменить Джаву в сфере финансовых технологий?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    На сколько я знаю, на сегодняшний день у раста проблемы с интеграциями. Брошеные либы, зависимости от версии и платформы и вот это все... (я рад бы ошибаться, возможно, г-н Василий Банников меня поправит).
    В джаве же есть спринг-бут, который умеет интегрировться хоть с чертом лысым, при этом поддерживается, развивается, выходят новые версиии...
    В большом энтерпрайзе это важно.

    Ну и у джавы, нерешаемых проблем довольно мало, чтобы от нее отказываться. На рынке есть много персонала разной квалификации, JVM - прекрасная, развивающяяся платформа.
    На расте же писать никто не умеет (по сравнению с джавой), не понятно какие у технологии перспективы, есть вышеуказанные проблемы. Чем он может заинтересоваться большой бизнес?
    Производительностью? Так и jvm достаточно производительна, во-первых, а во вторых, есть куча приложений, для которых никакой хай-лоад и никакое лоу-латенси не предусмотренно...
    Ответ написан
  • Что мешает заполнять контейнер с обобщением, если его перекинуть в параметрах метода?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    List.of(...) создает неизменяемый (иммутабельный, unmodifiable) список.
    В него нельзя ничего добавить, а вы в методе Consumer в первой же строке пытаетесь это сделать.

    Если бы вы приложили в вопрос еще и сообщение об ошибке - это было бы очевидно.
    Ответ написан
    1 комментарий
  • Что такое end-to-end тестирование?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Понятие еnd-to-end обозначает всего-навсего классификацию тестов по уровню, на котором тестируется система, и, само по себе, ничего не говорит ни о том, какие конкретно должны быть эти тесты, ни о том, какую роль они играют в общей стратегии обеспечения/проверки качества и, также, не является методикой тестирования. (Методика - это совсем другое понятие.)

    Для понимания сути этого понятия хорошо сравнить его с модульным ("нижний" уровень) и интеграционным ("средний") тестированием на каком-нибудь конкретном примере. Давайте рассмотрим некий сферический webshop в вакууме. Предположим, в нем есть 50 классов и для большинства из них написаны модульные тесты. Они проверяют исключительно функционал конкретного модуля (чаще всего, класса), т.е. тот, что зависит только от самого модуля и ни от чего чего более. Потом есть интеграционные тесты. Они проверяют корректность работы отдельных "модулей", если их собрать вместе согласно архитектурe. Например, работает ли правильно "Корзина", состоящая, в свою очередь, из 10 классов (предварительно проверенных модульными тестами), или "Корзина", подключенная к "Вебморде" и т.д. Где-то повыше в этой иерархии есть такие интеграционные тесты, которые проверяют конкретный функционал всей системы. Например, отправляется ли юзеру мейлом копия оплаченного заказа...

    И вот тут начинается самое интересное для понимания того, что такое end-to-end тестирование! Можно представить себе тест, проверяющий, что соответствующий мейл генерируется и сбрасывается SMTP серверу. Если SMTP сервер не рассматривать, как часть разрабатываемой системы, то этот тест вполне можно назвать end-to-end тестом (послали кучку HTTP запросов через "Вебморду" и проверили сброс мыла на SMTP - все зашибись!). Однако, если настройки и эксплуатация SMTP сервера - часть проекта (например, заказана разработка webshop "под ключ"), может оказаться, что это мыло будет отфильтровано каким-нибудь спам-фильтром, превысит лимит почтового ящика пользователя... короче, не дойдет до него. Тогда этот же самый тест уже нельзя считать end-to-end, а нужно бы было написать тест, проверяющий приход мыла в POP3/IMAP ящик. (Опять же, если это действительно нужно! Ибо, в зависимости от конкретных функциональных и нефункциональных требований, архитектор и QA инженер вполне могут найти возможность обеспечить адекватный контроль качества и без такого теста.)

    Таким образом, end-to-end тесты, это такие интеграционные тесты, которые воздействуют на систему через ее самые внешние интерфейсы и проверяют ожидаемую реакцию системы через эти же интерфейсы. Почему именно интеграционные? Потому, что это единственное, что можно о них сказать наверняка: они по определению не могут быть модульными тестами. А все остальное: являются ли они одновременно приемочными, нагрузочными или еще какими - зависит только от общих плана/стратегии тестирования и той роли, которые эти тесты в них играют.
    Ответ написан
    Комментировать
  • Почему Android клиент не подключается к серверу?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Лучше всего прочитать любой учебник по программированию в Android или документацию, но можно и погуглить исключение хотя бы.
    Ответ написан
    3 комментария
  • Для чего нужна аннотация @Serializable в либах Java/Kotlin?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    С точки зрения Java language, аннотации ничего не делают. Они - как каменты в коде. Но они могут быть подсказками для фреймворков которые в compile time, classloader или runtime могут что-то выполнить над кодом. 99%
    это какие-то ORM/JSon подказки которые разъясняют фреймворку что делать. Например @Table(name="emp")
    подсказка JPA то класс относится к таблице emp.

    Ваш вопрос про либы Java/Kotlin слишком общий. Ничего конкретного нельзя сказать. Но по отношению к
    Serializable, можно предположить что это гарантия что класс можно сериализовать во внешнюю память
    (оперативная или диск) и это не нарушит никакой бизнес логики. Например это DTO которая полностью
    самодостаточная. Не все сущности вообще реально сохранить. Некоторые сущности - как орграф опутывают
    всю память Java и сохранять их накладно. Как корневой объект хипа. Дешевле дампнуть всю память чем
    сохранять такие объекты поштучно. Некоторые - имеют связи с внешними ресурсами Files/Sockets и вне контекста они не имеют смысла. Есть ключевые слова языка (transient) которые запрещают сериализацию для полей.
    Есть также проблема версионности для Serializable. Сохраненная структура не трекает ваши изменения
    по коду уже после того как вы что-то сохранили. Грубо говоря это не JSON. Если вставили новое поле - можете
    старый файл и не прочитать. В качестве маркера проблемы там заводят специальное поле типа versionId или
    что-то такое. Просто для детектирования.

    Если вы хотите иметь тотальный контроль над сохранением - то определяйте Externalizable и там будут 2
    метода в которых вы контролируете Output/Input streams и сами пишете что сохранять и читать. А еще
    лучше брать библиотеки Kryo/Protobuf/Avro e.t.c. У них еще и есть оптимизации по скорости и по сжатию.
    Вы к этому придете эволюционным путем если будете писать систему где сохранение во вне - важно.

    Сериализация во внешнюю память это огромная проблема когда мы пытаемся подружить разные
    технологии (32-64 бит целые числа или разный порядок байт в машинном слове). Даже простое
    сохранение даты или строки может быть ошибочным если вы сохранили в Java а пытаетесь читать в C++.
    Нужна 100% бинарная совместимость всех структур. Вот библиотеки Протобуф и Авро
    как раз для этого создавались.
    Ответ написан
    Комментировать
  • Как делать периодические запросы без Thread.sleep?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Самое простое - это один метод помеченный аннотацией @Scheduled и второй метод с аннотацией @Async. Первый срабатывает по расписанию и вызывает второй для каждого счётчика.
    Ответ написан
    Комментировать
  • Расскажите, что это за ошибка и как ее исправить?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Похоже, у вас версия java до 17 :

    ...
    
        /**
         * The modifier {@code sealed}
         * @since 17
         */
        SEALED,
    
    
    ...
    Ответ написан
    2 комментария
  • Как сделать, чтобы приложение Java с классом Robot работало в проекте STALCRAFT?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Очень легко.
    Пишете код, тестируете его, отлаживаете, исправляете ошибки.
    Обычно все работает.
    Ответ написан
    Комментировать