• Чем отличается Hibernate от spring Data и в принципе инструменты работы с БД?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    JDBC - это стандарт доступа к базам данных, JPA - это стандарт персистентности, Hibernate - это реализующий его ORM, Spring Data - это механизм организации репозиториев, а репозиторий - это абстракция, лежащая на уровень выше ORM. То есть Spring Data использует Hibernate, а Hibernate использует JDBC.
    Ответ написан
  • Какие best practice разработки с WordPress для новичка?

    HeadOnFire
    @HeadOnFire Куратор тега WordPress
    Laravel & WordPress Evangelist
    Во-первых, прекратите спамить всех подряд, такой подход не очень продуктивен.

    Во-вторых, у вас не вопрос. Вопрос - это как правило одна (иди хотя бы одна главная) проблема, которую можно решить одним ответом. Как правило не очень объемным, потому что S из SOLID, как мы знаем, это Single Responsibility Principle. Ваш вопрос его нарушает чуть более чем полностью. Из этого следует, что вам нужно разбить ваш вопрос на множество других. И задавать их желательно по порядку, получая ответы, применяя их в жизни, практикуясь, и только потом переходя далее. Ибо влить в мозг весь этот объем информации за раз можно только в фильме "Матрица", а мы, увы, не там.

    Тезисно пройдусь по пунктам, чтобы прояснить ситуацию.

    Хочу изучить новые инструменты и вообще понять что есть best practice в мире wp сейчас!

    Не существует единой best practice. Есть разные подходы, каждый из них имеет плюсы, минусы и право на жизнь. Все очень сильно зависит от команды, ее размера и опыта, компании и процессов, клиента, проекта, его размера и бюджета и тд. Ну а общие принципы мало отличаются от разработки в целом, будь то Symfony, Laravel, Ruby on Rails и тд.

    Я нашел много интересного, но пока не понимаю как это всё собрать воедино, что зачем нужно, много непонимания

    Это нормально. Почему - перечитайте абзац про Single Responsibility Principle выше.

    1. среду разработки использую PhpStorm, по университетской лицензии.

    Несущественно. PhpStorm отличная IDE, пожалуй лучшая для разработки на PHP в целом, WP или нет - не важно (сам использую именно ее). Но далеко не все могут использовать ее бесплатно по университетской лицензии, многие покупать не хотят, многим не нравится производительность. Стандарт ли это? Для кого как.

    2. для версий кода использую Git, храню локально и на Gitlab.

    Git - это наиболее популярная VCS на данный момент. Само использование системы контроля версий является стандартом, во всем мире разработки.

    3. при разработке пушу через SSH сразу на shared хостинг, а не на локальный сервер (никогда локальным не пользовался, а надо? каким?)

    Использование локального сервера - стандарт. Обязательно, не обсуждается. Пушить на shared - плохая практика (и пушить на прод, и shared). Изучаем про локальные сервера, Continuous Integration и Continuous Delivery. Впрочем, для WP важно понимать, что бОльшая часть проектов будет простая и небольшая, со скромным бюджетом, а там вся эта кухня может быть лишней (смотрим абзац про зависимость best practices от проекта и тд). Поэтому обычного простого деплоя по мерджу в мастер хватит. Гугл в помощь.

    4. работаю под Linux, знаком с консолью, bash, но не понимаю как использовать wp-cli, в чем он удобен?

    WP-CLI это инструмент. Использовать его - хорошо. Чем удобен / полезен поймете когда разберетесь с деплоями, автоматизацией и тд. Но не поймете если не начнете заставлять себя с ним работать.

    5. присматриваюсь к Roots и Bedrock, но не понимаю как к ним подступиться, нужно объяснение что и зачем делать, какие-то инструкции..

    Рано. Очень рано вам к ним присматриваться.

    6. хочу начать использовать composer

    Начинайте. Гуглите, материалы на эту тему есть. Будут конкретные вопросы - задавайте, будем отвечать.

    7. хочу начать писать тесты, PHPUnit?

    Если бы спрашивали за Laravel, то да. Но по WP - забудьте. Думать про тесты в WP вам рано и не нужно. Голову сломаете. Да и проекты, где это понадобится вам пока не светят.

    Сейчас как-то грустно, что wp любят поносить за его "легкий вход", "говнокод", "это не программирование" и т.д.

    Это не только сейчас и не только про WP. Добро пожаловать в прекрасный мир разработки, где каждый второй с радостью обосрёт инструмент, о котором мало что знает или потому что ему лично он не подходит / не нравится. Вырабатывайте свое личное мнение. WP сам по себе лишь инструмент. Хороший или плохой - не важно. Он решает определенные задачи, и делает это лучше / быстрее / дешевле / проще других.

    Как всё это собрать вместе?

    Постепенно. Шаг за шагом. Слона нужно есть по частям, иначе подавитесь.

    Прошу подробных ответов, по возможности со ссылками и/или инструкциями.

    Это придется накатать книгу, и не одну.

    Хочу учиться.

    Достойное желание. Учитесь, никто не мешает. Гугл, кодекс, кама и другие ресурсы в помощь.

    Бонус: запомните одну простую истину - вы не сможете что-то изучить или освоить, если не начнете с ним работать. Только на реальной практике можно понять и осознать. Можно прочитать 10 лучших книг про ООП (для примера), но пока вы не напишете, выбросите, перепишете несколько раз свой код на ООП, вы его не поймете.
    Ответ написан
  • Как написать программу которая будет выводить символы кратные двум либо чётные?

    Zoominger
    @Zoominger
    Сись админ
    символы кратные двум либо четные

    А?
    А, всё, понял.

    кратна 2 либо чётная

    Одно и то же.

    Просто в цикле делите итератор на 2 с остатком и если остаток ноль, то число чётное и выводится то, что вам надо.
    Ответ написан
  • Куда вставить код html кнопки поделиться?

    anatoly_kulikov
    @anatoly_kulikov
    Wordpress-разработчик
    За вывод записей могут отвечать несколько файлов. Без структуры темы сказать сложно, но скорее всего какой-то из этих файлов:
    - content
    - loop
    - single / page
    - index (в крайнем случае)

    Ищите в них.
    Ответ написан
  • JavaFx как получить параметры из контроллера?

    Neonoviiwolf
    пробовали в xml дать fx:id
    <Image fx:id="dialogImage" url="@image.png"/>

    в коде создать переменную в классе контролера
    @FXML
    		private Image dialogImage;

    и просто у ее вызвать метод
    if (dialogImage != null) {
    				System.err.println(String.format("The image url: %s",
    						dialogImage.impl_getUrl()));
    			}

    вроде дает же правильный ответ что то типа:
    The image url: file:/<путь к моему проекту>/src/main/resources/image.png


    a для каста Node в напр. ImageView посадите fx:id на Label
    <Label fx:id="dialogImageLabel">
              <graphic>
                <ImageView fx:id="dialogImageView" fitHeight="128" fitWidth="128" pickOnBounds="true" preserveRatio="true">
                  <image>
                    <Image fx:id="dialogImage" url="@watchglass.png"/>
                  </image>
                </ImageView>
              </graphic>
          </Label>

    и
    for (int i = 0; i != dialogImageLabel.getChildrenUnmodifiable()
    								.size(); i++) {
    Node itemNode = dialogImageLabel.getChildrenUnmodifiable().get(i);
    			if (itemNode.getClass().getName().equals("javafx.scene.image.ImageView")) {
    				ImageView imageView = (ImageView) itemNode;
    								System.err.println(String.format("The child image url: %s",
    										imageView.getImage().impl_getUrl()));
    				}
    
    }
    то же самое

    The child image url: file:/<путь к проекту>/src/main/resources/картина.png
    Ответ написан
  • Почему Android до сих пор так зависим от jvm?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Во-первых, Kotlin работает на JVM. Во-вторых, программы на C# будут выполняться на виртуальной машине CLR, что тоже не нативная платформа. В-третьих, достаточно знать назначение виртуальных машин, чтобы получить ответ на ваш вопрос. Кроссплатформенность в мобильной разработке имеет ещё большее значение, чем в какой-либо другой.

    И наконец, вы не правы в этом

    Не верю, что среда jvm когда-либо научится использовать ресурсы системы оптимальнее чем нативная платформа.

    Java-код может быть быстрее нативного. Ещё в 2009-м Джеймс Гослинг говорил:

    These days we’re beating the really good C and C++ compilers pretty much always. When you go to the dynamic compiler, you get two advantages when the compiler’s running right at the last moment. One is you know exactly what chipset you’re running on. So many times when people are compiling a piece of C code, they have to compile it to run on kind of the generic x86 architecture. Almost none of the binaries you get are particularly well tuned for any of them. You download the latest copy of Mozilla,and it’ll run on pretty much any Intel architecture CPU. There’s pretty much one Linux binary. It’s pretty generic, and it’s compiled with GCC, which is not a very good C compiler.

    When HotSpot runs, it knows exactly what chipset you’re running on. It knows exactly how the cache works. It knows exactly how the memory hierarchy works. It knows exactly how all the pipeline interlocks work in the CPU. It knows what instruction set extensions this chip has got. It optimizes for precisely what machine you’re on. Then the other half of it is that it actually sees the application as it’s running. It’s able to have statistics that know which things are important. It’s able to inline things that a C compiler could never do. The kind of stuff that gets inlined in the Java world is pretty amazing. Then you tack onto that the way the storage management works with the modern garbage collectors. With a modern garbage collector, storage allocation is extremely fast.
    Ответ написан
  • Как органичить видимость элемента на странице в зависимости от роли?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Spring
    Седой и строгий
    Из документации:
    <div sec:authorize="hasRole('ROLE_ADMIN')">
      This content is only shown to administrators.
    </div>
    Ответ написан
  • Xiaomi убивает мой сервис. Что делать?

    Zoominger
    @Zoominger
    Сись админ
    Создал сервис, в котором в OnDestroy запускаю его заново, тем самым сделав его бесконечным.

    Очевидно, что разные версии Андроида по-разному относятся к этому безобразию. Xiaomi, например, относится правильно.
    Ответ написан
  • Как сделать разные цены для разных городов Woocommerce?

    @rustam_kuliev88
    А не проще сделать города на поддомене и показывать сразу цены там, это простой вариант, конечно если городов 100+ тут не прокатит, я делал так, все было завязано на 1с, 4 города, 4 выгрузки ежедневные с разными типами цен, все прекрасно работало, при заходе определялся ip если не не точно, то были статичные ссылки на поддомены, и такой проект легче продвигать в регионах
    Ответ написан
  • Как сравнить 2 картинки на схожесть?

    @evgensoft
    https://github.com/JohannesBuchner/imagehash - исходник на питоне, но описано довольно подробно, можно перенести на другой ЯП при желании.
    Проверяет именно визуальную похожесть картинок - довольно точно..
    Ответ написан
  • Как получить элемент из коллекции при работе с iterator?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Во-первых, получайте параметризированный итератор, тогда будет возвращать не Object
    Iterator<Integer> it = list1.iterator();

    Во-вторых, вы изменяете коллекцию после того, как получили для неё итератор, это приведёт к выбросу исключения ConcurrentModificationException при попытке получить из итератора элемент.
    Ответ написан
  • Wordpress WooCommerce фильтр по части атрибута?

    Насчет атрибутов не знаю, но фильтрацию по части артикула (_sku) делает плагин WOOF
    Ответ написан
  • Как написать программу которая считает 4 числа с клавиатуры и выведет на экран самое большое из них?

    @Tim06ka
    Java developer
    Вот мой вариант в одно выражение
    IntStream.range(0, 4)
                     .mapToObj(i -> System.in)
                     .map(Scanner::new)
                     .map(Scanner::nextInt)
                     .reduce(Integer::max)
                    .ifPresent(System.out::println);
    Ответ написан
  • Как написать программу которая считает 4 числа с клавиатуры и выведет на экран самое большое из них?

    Zoominger
    @Zoominger
    Сись админ
    Сделайте цикл от 0 до 3 и суньте в него считывание в массив и отсортируйте по убыванию. Первое число - максимум.
    Ответ написан
  • Почему добавленный код в Wordpress показывается только, когда админ?

    dimasmagadan
    @dimasmagadan
    1. в коде может быть условие "показывать только для админа"
    2. на сайте может быть включено кэширование (стоять любой плагин кэширования). Тогда нужно сбрасывать кэш после правок
    Ответ написан
  • Асинхронность Node.js против Java, в чем подвох?

    leahch
    @leahch
    Я мастер на все руки, я козлик Элек Мэк :-)
    Полнейшая глупость! На данный момент: а по хорошему уже лет 10 минимум, существует куча асинхронных фреймворков и сетевых библиотек, которые работают ровно на том же самом принципе, как и nodejs.
    Примеров, у нас их есть:
    - фреймворки jooby.org, sparkjava, springboot
    - библиотеки (серверы) netty, undertow, akka
    По производительности ничуть не уступают nodejs.

    Ну а как все это работает? Есть два вида программирования, которые можно совмещать:
    Старый и много кем используемый
    - сервер ждет сетевое соединение
    - как только соединение произошло, сервер запускает процесс/поток и ему передает открытое соединение.
    В этом случае мы ограничены количеством потоков/процессов в системе, имеем большой оверхед на создание процесса/потока. Зато нам не нужно сильно заботиться о работе с сокетами.
    Новый хайповый/модерновый
    - при старте в сервере региструются обработчики данных (наши сервисы/приложения)
    - сервер открывает сокет и слушает все открытые им ранее сокеты, висит в ожидании события прихода/передачи данных на методе select/poll/epoll или побобном.
    - как только сервер получил ответ, он вызывает зарегистрированный обработчик и передает туда порцию полученных данных, принимает эти данные обратно и и отправляет в сеть на нужное соединение
    В этом случае сервер работает в один поток, просто последовательно вызывая обработчики и отдавая им данные. Быстро, очень быстро, ловко, нет накладных расходов. Зато, если какой обработчик пытается сделать блокирующую операцию - виснут все остальные обработчики, поэтому обработчики с сервером общаются сообщениями и стараются не занимать много процессорных ресурсов. Программирование получается сложное.

    Также можно совмещать эти два подхода, делая и пул потоков и работая в асинхронном режиме.

    На почитать сюда например - https://ru.wikipedia.org/wiki/Epoll
    Ответ написан
  • Java Collections асбтрактный тип List?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Гуглите про суть и смысл ООП.

    Объект абстрактного класса нельзя создать. Он на то и абстрактный, что "недоопределен" и предполагает что в классах-потомках все что надо будет доделано.

    Переменная типа List может указывать на объект любого класса-потомка.

    p.s.

    Что вышесказанно в той или иной степени касается любого языка реализующего концепцию ООП (конкретные детали реализации в разных языках могут немного отличаться, суть же остается неизменной)
    Ответ написан
  • Как правильно зарегистрировать глобальную горячую клавишу в Java под Windows?

    @antonwx Автор вопроса
    сам спросил - сам и отвечаю, а суть в том, что регистрировать надо клавишу в том же потоке, который слушает сообщения. User32.RegisterHotKey(null, 1, 0x000, KeyEvent.VK_F); идёт в run() и всё начинает работать.
    Ответ написан