Задать вопрос
  • Что такое код общего назначения и код специального назначения?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    foonfyrick,
    таймкод 8:51
    https://www.youtube.com/watch?v=SZLdme0zvV4

    я понял.
    Начнем с того, что в видео затрагиваются аспекты Clean Code. Можете прочитать книгу Роберта Мартина - Clean Code или например, пройти небольшой курс по рефакторингу - https://refactoring.guru/refactoring/course
    Что касается вашего вопроса, то тут речь идет во-первых, о SOLID принципах.
    S - single responsibility principle (принцип единственной ответственности). Т.е. один класс должен иметь одно назначение. Например, создание класса Сотрудник, который и готовит еду и подает и моет посуду и т.д. не совсем корректно. Но можно создать класс Сотрудник и расширить его такими классами, как Повар, Официант и Уборщик, каждый из которых будет готовить, подавать еду и мыть посуду соответственно.
    Также сказанное им в видео можно соотнести к ISP (interface segregation principle). Принцип разделения интерфейсов. Например, предположим, что у вас есть интерфейс МФУ, в котором имеются методы print(), scan() и fax(). Если у вас есть класс для МФУ, который имплементирует этот интерфейс, то все ок, так как в этом устройстве есть все функции. Другое дело, что если некий класс Принтер имплементирует интерфейс МФУ, но при этом он может реализовать метод print(), получается что 2 остальных метода он не может реализовать, но должен. Соответственно, принцип ISP рекомендует разделить общий интерфейс на несколько частей.
    Также например, pojo класс не должен являться также "утильным" классом или сервисным классом.
    Ответ написан
    Комментировать
  • Как решить ошибку при mvn compile?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Во-первых, если вы уж решили собирать проект на сервере, то можно вместо maven использовать maven wrapper. А еще лучше запускать приложение в контейнере docker.

    теперь проект собирается, запускается, но работает некорректно. Человек посылает сообщение боту, в консоли видно что бот обращается к бд, но сообщений никаких не отсылает

    Можно попробовать проект подебажить. Для этого запустите jar при помощи mvnDebug, а затем средствами IDE подключитесь к серверу и добавив точки остановки, продебажьте проект.
    Ответ написан
    1 комментарий
  • Как в Java правильно сравнить строку полученную из БД с другой строкой?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Строки в Java сравниваются через equals(). Другое дело, что при сравнении возвращается false.
    Исключите следующие моменты:
    - запись в БД может быть в uppercase или lowercase или camelCase и т.д. Потому возвращается false
    - в исходной строке или в строке из БД могут содержатся кириллические символы
    - кодировка хранимой информации в БД отличается от utf8
    если не получится решить вопрос, то скиньте ссылку на гит
    Ответ написан
    Комментировать
  • Как и за какой период стать Junior Java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    При упорном труде можно за 1 год изучить основы java. С другой стороны, все индивидуально. Можно и за 5 лет ничему не научиться. Все зависит от вас.

    Обучаюсь кстати в JavaRush

    Знаю нескольких разработчиков, которые пошли на курсы, так как знаний полученных на JavaRush не хватило вовсе.

    К вопросу о том, что нужно изучить по Java, тут зависит от направления, которое вас интересует. Т.е. enterprise или android разработка.

    Базовая программа применимая и к enterprise и к android:
    - java core (JCF, Mutlithreading, Stream API, reflection, annotation, jdbc)
    - структуры данных и алгоритмы, паттерны проектирования
    - Build tools: Maven, Gradle
    - VCS - git
    - основы TCP / IP
    - основы OOP, SQL (ACID, уровни изоляции)

    Для enterprise:
    - java enterprise (jsp, jstl, servlet), tomcat, jetty
    - Spring Framework (Spring MVC, Spring Data, Thymeleaf, Spring Boot, Spring Security) основы REST
    - Hibernate (ORM), HQL
    - aws / heroku
    - возможно разные CICD (circleci, travis)
    - jira, confluence, trello

    Для android:
    - kotlin
    - Android API
    - ORM фреймворки (ormlite, room и возможно другие)
    - Firebase

    Вот, отсюда можете глянуть на программу занятий по Java Core - https://www.dist.it-academy.by/course/java-develop...
    А отсюда взять программу Java Enterprise - https://www.dist.it-academy.by/course/java-develop...
    Ответ написан
    Комментировать
  • На java ничего не создают?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Скажу честно, сам довольно долго не хотел изучать Java, так как начитался всяких статей от разработчиков. Там было и про то, какая Java медленная, сложная и что вообще умирает или даже умерла. И знаете, когда вы только начинаете изучать тот или иной язык, то вы обычно, стараетесь прислушаться к мнению "экспертов" и сразу же отметаете тот или иной язык. Например, одним из "минусов" языка java было то, что на ней не пишут драйвера, не пишут серьезные игры, не пишут операционные системы и десктопный софт. Но с таким же успехом можно это соотнести и к JS. На нем тоже не пишут OS или драйвера. Хоть десктопный софт пишут на JS (ElectronJS), но назвать его серьезным довольно сложно.

    Соответственно, выбирайте не язык, а направление (backend, frontend, mobile, desktop, gamedev). А затем согласно выбранному направлению выберите наиболее подходящий для этого язык.
    Java - enterprise, web, mobile (android)
    JS, PHP - web, erp, mobile (react native),
    Python - data science, machine learning, erp, web
    C# - enterprise, web, gamedev
    C++ / C - gamedev, desktop, drivers

    Понятное дело, что если потребуется написать игру на Java, то для нее есть огромное количество движков и библиотек (libgdx, jmonkey), но лучше конечно же это сделать на C# (Unity) или C++ (Unreal Engine).
    Если интересует android разработка, то лучше начать изучать Java / Kotlin (лучше Kotlin). Если хотите быстро штамповать сайты, то PHP, Python и т.д.

    Java стабильный язык, фреймворки на нем появляется не так часто, как это происходит на JS..
    Также я рекомендовал бы вам попробовать разные сферы разработки, чтобы разобраться в том, куда лежит душа. Я попробовал и фронт-энд и бэкенд и мобайл и т.д. И остановился на бэкенд. Возможно, что вам понравится automation QA или еще что-нибудь. В общем, можете смело начинать изучение любого языка (Java, JS, Python) и развивайтесь дальше

    К тому же, знание одного языка недостаточно на мой взгляд. Писать бэкенд не зная как функционирует фронт или наоборот сложно, но можно. А значит, вам нужно изучить языки и для фронта и бэка для лучшего понимания.
    Ответ написан
    Комментировать
  • Какой IDE выбрать вместо Borland C++?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    А почему не CLion ? Вроде тоже хороший IDE. Либо Visual Studio.
    Ответ написан
    Комментировать
  • Насколько важно знать алгоритмов в яп Java и какие алгоритмы нужны?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Рекомендую прочитать книгу Роберт Лафоре - Структуры данных и алгоритмы Java.
    К вопросу о том, сколько алгоритмов нужно знать скажу, что достаточно знать базовые алгоритмы и пожалуй, владеть английским, чтобы при необходимости уметь разобраться в нужном.
    Базовые:
    - линейный поиск
    - двоичный поиск
    - пузырьковая сортировка
    - быстрая сортировка

    А так можно покопаться в других алгоритмах тоже (алгоритм Беллмана-Форда, алгоритм Дейкстры, алгоритм А*, кодирование Хаффмана, алгоритм ruin & recreate для решения VRP &TRP, ханойская башня и т.д.). Сам сейчас разбираюсь с некоторыми из них, так как приходится применять их в проекте.

    Кстати, есть простое приложение для андроид, которое описывает суть разных алгоритмов при помощи инфографики.
    https://play.google.com/store/apps/details?id=wiki...

    А вот, тут репозиторий с алгоритмами на Java
    https://github.com/TheAlgorithms/Java
    Ответ написан
    Комментировать
  • Проблема с кодировкой с postgresql в IDEA, как решить?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Проверьте кодировку используюмую в БД.
    Также попробуйте к урл для подключения к Бд добавить ?useUnicode=yes&characterEncoding=UTF-8
    Например,
    jdbc:postgresql://localhost:5432/example_db?useUnicode=yes&characterEncoding=UTF-8
    Ответ написан
  • Как вывести дерево рубрик записей с самими заголовками статей?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    По сути это можно сделать по средство навигационного меню, Но так как на сайте будет много рубрик и записей необходимо это автоматизировать

    Наверное, не самая лучшая идея для этого использовать нав. меню.
    Однако, это можно сделать средствами РНР и WP Codex.

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

    При помощи условных тегов проверяете является ли просматриваемая страница страницей рубрики и если да, то циклом перебираете рубрику и получаете ее дочерние рубрики и выводите их в виде меню. А если страница из single(), т.е. страница записи, то получаете рубрику, к которой принадлежит эта статья и циклом получаете 5 статей из этой рубрики и выводите их заголовки со ссылками.

    Проверить является ли просматриваемая страница страницей категории (или архива):
    https://wp-kama.ru/function/is_category
    https://wp-kama.ru/function/is_archive

    Проверить является ли просматриваемая страница страницей записи:
    https://wp-kama.ru/function/is_singular
    https://wp-kama.ru/function/is_single

    Получить рубрику присвоенную к этой статье:
    https://wp-kama.ru/function/wp_get_post_categories
    https://wp-kama.ru/function/get_the_category

    Получить статьи из указанной рубрики:
    https://wp-kama.ru/function/wp_query
    Для получения из выбранной категории обратите внимание на это:
    https://wp-kama.ru/function/wp_query#categories

    Сниппеты готовых меню в виде дерева:
    https://www.jqueryscript.net/blog/Best-Tree-View-P...
    https://bootsnipp.com/snippets/Pax
    docs.offlajn.com/vertical-menu/11-menu-navigation-...

    Или можете поискать готовые плагины:
    Например, https://wordpress.org/plugins/post-categories-tree/
    Гуглим - wordpress category tree view
    Ответ написан
  • Выбивает ошибку в классах Java, что изменить или почитать на будущее?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Прочитайте любую книгу по Java.
    Можете начать с Г. Шилдт - Руководство по Java для начинающих.
    А насчет ошибки:
    у вас в одном java файле (Main.java) содержится 2 public класса
    public class Main{} 
    public class BANKACCOUT{}

    Также обратите внимание на Java naming convention. Вместо названия класса BANKACCOUT должно быть BankAccount
    Ответ написан
    Комментировать
  • Какой курс java выбрать?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    It-Academy (https://www.it-academy.by/)
    2-3 месяца Java Fundamentals
    3-4 месяца Java Enterprise
    + помогают с трудоустройством.
    Но скажу заранее, знаний полученных на любых курсах недостаточно, чтобы стать крепким джуном. В любом случае вам нужно прочитать определенный минимум книг, иметь багаж теоретических знаний и притом не только Java, но и sql, xml, regex, json. Владеть английским (на уровне чтения тех. документации). Изучить алгоритмы и структуры данных и т.д.
    А вообще поищите аналогичные вопросы на этом сайте. Уже не первый раз всплывают подобные вопросы и было дано много развернутых ответов
    Ответ написан
    7 комментариев
  • Как работает класс Calendar в этом коде?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    В прошлом вопросе вы же сказали, что решили вопрос.

    Как решить проблему с «Unable to create converter for class»?
    На виртуальном устройстве в настройках был установлен часовой пояс GTM-0, а у меня +2. Это и решило проблему.


    А я еще тогда обратил ваше внимание на то, что время у вас и так указано в миллисекундах.
    public static Calendar getDate() {
    Calendar date = Calendar.getInstance();
    date.setTimeInMillis(timestamp * 1000);
    return date;
    }

    А сеттер setTimeInMillis принимает время в миллисекундах. Так зачем вы умножаете timestamp на 1000?
    Не нужно умножать на 1000. Иначе вы в качестве текущего года получаете 53152 вместо 2021

    Вот, для наглядности:
    public static void main(String[] args) {
        long timestamp = System.currentTimeMillis();
        Calendar calendar = Calendar.getInstance();
    // Ваш код:
        calendar.setTimeInMillis(timestamp * 1000);
        System.out.println(calendar.getTime());
    // Мой код:
        calendar.setTimeInMillis(timestamp);
        System.out.println(calendar.getTime());
      }
    Ответ написан
  • Как вынести отдельное количества продукта с листа java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    А какое отношение клиентская часть имееть к серверному?
    При добавлении количества товара в input общая цена не изменяется

    Это срабатывает на клиенте и тут может помочь JavaScript, а не Java

    Как вынести отдельное количества продукта с листа java?

    Не думаю, что вопрос корректен, если честно. Вам нужно на клиенте суммировать стоимость товара внутри корзины. Соответственно. вынесение товаров в отдельный лист на сервере не поможет
    Ответ написан
  • Как добавить значения в json массив?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Вот, решениe для Jackson:
    https://stackoverflow.com/questions/43981487/how-t...
    Вот, решение для Gson:
    https://stackoverflow.com/questions/47111676/gson-...
    Вот, решение для SImple Json:
    https://stackoverflow.com/questions/50402343/how-t...
    Ответ написан
    Комментировать
  • Подходит ли книга Брюса Эккеля "Философия Java" для изучения ЯП с полного нуля?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Если выбираешь именно между книгами по Java, то можешь присмотреться к следующим:
    Г. Шилдт - Java руководство для начинающих (или например, ,Java Head First O'Reilly)
    Далее подойдет Б. Эккель - Философия Java
    Также можно еще Г.Шилдт - Полное руководство по Java
    Затем можно глянуть на Рауль-Габриэль Урма - Современный язык Java

    Ну и конечно же прочитать такие книги, как:
    Clean Code,
    Роберт Лафоре - Структуры данных и алгоритмы java,
    Дж. Блох - Java. Эффективное программирование
    Ответ написан
    Комментировать
  • Почему возникает ошибка компиляции Android приложения?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Реимпортируйте класс R..
    Затем почистите кеш (Invalidate cache & restart) и перезапустите заново. Должно помочь.
    Также проверьте есть ли в xml такой id R.id.textViewTitle
    Ответ написан
    1 комментарий
  • ITextPDF - Java. Почему не отображаются шрифты на кириллице?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Cannot resolve constructor 'Paragraph(java.lang.String, com.itextpdf.text.Font)'

    Очевидно, что такого конструктора не существует. Посмотрите, в исходниках какие конструкторы существуют.
    Вот, например, документация
    https://kb.itextpdf.com/home/it5kb/examples/using-fonts
    https://www.tutorialspoint.com/itext/itext_setting...
    Ответ написан
    Комментировать
  • Как обращаться к классу через интерфейс?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    В фреймворках например, в том же Spring, реализован такой принцип, как DI (dependency injection). Все сводится к тому, что вы можете внедрить интерфейс, вместо самой реализации. Это упрощает процесс тестирования и разработки, так как вы можете "подсунуть" другую реализацию этого интерфейса. Например, на production вам нужно подключиться к реальной БД и использовать соответствующие репозитории, а во время тестирования вы можете замокать другие реализации интерфейса.
    Допустим, что у вас есть интерфейс IServer с методом connect()
    А реализации у него могут быть разные. Например,
    FtpConnect implements IServer,  SshConnect implements IServer
    Соответственно, внедрив зависимость IServer в код, вы можете указать какая реализация данного интерфейса должны быть внедрена.
    Посмотрите на фреймворки:
    Guice -
    https://www.baeldung.com/guice
    Dagger -
    https://dagger.dev/
    Ответ написан
  • Как указывать параметр запроса "кириллицей" на OpenWeatherMap?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Вот, что написано в документации по поводу названия городов.
    By city name. Input the city name or its part and get the list of the most proper cities in the world. Example - Lon or Lond or London. The more precise city name you put the more precise list you will get. To make it more precise put the city's name or its part, comma, the name of the county or 2-letter country code. You will get all proper cities in chosen county. The order is important - the first is city name than comma than county. Example - Lon, UK or Lon, GB or London, GB or Lon, England. By geographic coordinates.


    Соответственно, с кириллицей не работает. Но вы можете добавить такой функционал. Например, в приложении заведите enum с англ. и с русскими названиями городов. Например, LONDON ("London", "Лондон")

    Организовал ввод названия города через меню и вот таким образом

    Я бы например, сделал бы не ввод названия города, а выбор из выпадающего списка. А то мало ли на какой языке пользователь решит ввести название города.
    Ответ написан
  • Зачем нужны типы данных byte и short в Java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Зачем в языке программирования так много типов данных?
    Особенно byte или short, ведь их полностью заменяет int. Зачем они нужны? В чем их профит?

    Тип данных int занимает 4 байта, а byte - 1 байт, а short - 2 байта.
    Соответственно, в условиях ограниченной памяти нужно использовать только соответствующие типы примитивов.

    60436b2020216873254157.png
    Ответ написан