• Как научиться разрабатывать большие проекты на Java, если раньше писал на PHP?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Я много писал веб на PHP (с фреймворками), но давно хотел перейти на Java, Spring и т.д.

    Поздравляю. Ты теперь откроешь для себя целую вселенную и поймешь что Java - очень разная.
    Например стоило-бы отличать Java Android и все остальное.

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

    Но в топике верно выше написали что от серверного рендеринга сейчас уходят. И современные Java-веб
    приложения обычно делают 2 команды. Первая делает только дизайн фронта. Вторая - обычно микросервисы
    которые с этим фронтом взаимодействуют. Почитай также про GraphQL. Это полезно для развития.
    И многие вещи в Java были добыты эволюционным путем. В частности такая мануфактура как
    дизайн и бизнес-логика имеют четкое разделение и это правильно. Это стабилизирует релиз
    и позволяет бизнесу делать и тестировать фичи независимо. Например фича нового REST сервиса
    может быть создана и оттестирована еще до того как готов дизайн и наоборот. Дизайн на моках
    можно показать заказчику пока сервис только в разработке.

    Оказалось, что приложению надо 3-4 минуты, только чтобы стартануть на машине разработчика.

    Это нормально. Мне попадались очень тяжелые монолиты которые на мощных машинах стартовали
    по 30-40 минут. Да и такое бывает. Это тяжелая приставка *enterprise. И конечно это идеологически
    отличает Java от PHP. Для корпоративных приложений в принипе неважно сколько они стартуют.
    Главное когад они уже стартовали и 30 минут прогревали кеши из БД например то биржа будет
    работать быстрее в runtime. Вот. А подготовку к работе можно делать и 30 минут - это тоже ОК.
    Главное что клиент это не замечает в силу закрытого опер-дня и Blue-Green deployment.
    Тоже почитай про это кстати. Полезно.

    Из-за долгих перезапусков (тем более на новом для меня проекте) разработка шла долго и мучительно.

    Могу посоветовать сфокусироваться на модульных тестах. То как ты разрабатывал раньше, сверяя
    каждый символ с браузером - может быть не эффективным. По сути если ты написал бизнес-логику
    и дизайн для нее готов и твоя задача просто проверить что функии получили на вход инпуты
    и выдали верные аутпуты - то значит задача на 99% решена и можно релизить.

    С точки зрения например корпоративного процесса разработки - любая фича разрабатывается 1 день. Это я меряю
    по себе. Беря во внимание чтение ТЗ. Разработку. Цикл тестирование. Деплойменты. Аксептенсы и прочее.
    И если тебя просят покрасить кнопочку с красного цвета на синий - ты спокойно сообщай что
    это занимает 1 день в конвейере процессов. И это нормально. Это корпоративная бюрократия.
    И Java - бюрократична. И ты главное не стрессуй а просто используй эту бюрократию в свою
    пользу. Пей кофе. Читай книги пока идет deploy pipeline.
    Ответ написан
    2 комментария
  • Как научиться разрабатывать большие проекты на Java, если раньше писал на PHP?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Как научиться разрабатывать большие проекты на Java

    Все просто.
    Нужно понимать solid и ооп.
    Уметь в декомпозицию.
    Использовать юнит-тесты.

    Почитайте Чистый Код и Эффективная Джава.

    Ну и, моё мнение, серверный рендеринг нынче не популярен, не стоит на это тратить своё время.
    Ответ написан
    Комментировать
  • Почему утверждается, что int32_t имеет ширину точно 32 бита, если он является всего лишь псевдонимом int, который может быть больше 32 бит??

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Смотрите документацию. Там действительно утверждается, что int32_t должен иметь размер ровно 32 бита ("exactly").

    Где вы взяли, что int32_t - это псевдоним int?
    Подозреваю, что там, где вы это видели, куча #ifdef и проверок архитектуры.
    Возмножно, на вашей системе, где int итак имеет 32 бита так оно и есть. При компиляции на другую архитектуру внезапно может оказаться, что int32_t - нифига не псевдоним к int.
    Ответ написан
    3 комментария
  • Почему код падает с ошибкой?

    Это что у вас вообще такое?
    count($translit>0)
    Ну и собственно текст вашей ошибки: Argument #1 ($value) must be of type Countable|array, bool given

    Вы в count передаёте в параметр булево значение, которое функция не поддерживает. Она ожидает получить в параметрах либо объект, который реализует интерфейс Countable, либо массив.

    https://www.php.net/manual/ru/function.count.php
    Ответ написан
    Комментировать
  • Исходный код языка Си?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Язык Си не является программой, по этому у него нет исходного кода. Исходный код может иметь компилятор языка, которых есть более чем один.
    Ответ написан
    Комментировать
  • PHP устарел? Стоит ли переходить на JS фреймворки?

    @HellWalk
    Не знаю откуда информация про "Headless, JS фреймворки", в моем окружении много программистов переходят с php на go. А вот чтобы с других языков переходили на php - нет ни одного. Что собственно говорит о перспективах php.
    Ответ написан
    Комментировать
  • Какие есть анализаторы трафика для windows попроще wireshark?

    Скорей всего, вам нужен не снифер, а прокси с подменой сертифката для анализа http/https, наиболее популярны
    Charles (платный), Fiddler (бесплатный), burp (есть бесплатная версия). Первые два приложения больше любят тестировщики, burp чаще используется при поиске уязвимостей.
    Ответ написан
    1 комментарий
  • Ответ в REST API?

    gscraft
    @gscraft
    Программист, философ
    Если речь про RESTful, нет, указывать status=false/true необязательно. Вы можете возвращать сразу же тело результата. Статуса требует JSON API, но оно ориентировано как раз на передачу всей информации в теле результата, то есть, не использует статусы HTTP (или используются гибридные способы).
    Ответ написан
    Комментировать
  • Какой системный язык программирования похож на Javascript?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    C++
    Ответ написан
    Комментировать
  • Программа для заметок с кодом или о коде?

    Ответ написан
    Комментировать
  • Какие есть альтернативы Electron?

    profesor08
    @profesor08
    Какие есть альтернативы Electron?

    QT

    Как они работают?

    Как обычная программа, со всеми прелестями

    Как ведут себя с точки зрения итоговой производительности?

    Отлично. electron курит в сторонке.

    В чем их плюсы и минусы как глобально так и в сравнении с Electron?

    Во всем плюсы. Единственное там нет js, но это дело вкуса.
    Ответ написан
  • Как написать программу которая распознает речь на C++?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    -Гармонический анализ, цифровая обработка сигналов, машинное обучение, практика физического эксперимента, некоторые разделы вычислительной лингвистики, математическая статистика и теория вероятностей - в качестве математической платформы (математики, которая программисту "не нужна")

    -разработка высокопроизводителных приложений, многопоточная обработка на GPU, хранение данных - специальные разделы от общей информатики

    -контейнеры, оптимизация алгоритмов, культура разработки программ на C++ - собственно, от C++
    Ответ написан
    1 комментарий
  • Лучшее решение для генерации PDF/Word под Laravel?

    Tomio
    @Tomio
    backend developer (python, php)
    knp-snappy - прекрасный вендор для генерации PDF как из html, так и из указанного урла, с сохранением всех стилей, ссылок, картинок и пр. Единственное, что заметил, - он не понимает css стиль display: flex =) В остальном всё супер. Можно сделать вывод в файл, мгновенное скачивание, и рендер на экран.
    Ответ написан
    Комментировать
  • Как найти ментора(наставника)?

    Zoominger
    @Zoominger
    System Integrator
    Зачем хорошему программисту растить себе конкурента? Подумайте.
    Ответ написан
    5 комментариев
  • Можно ли восстановить битый пиксель?

    gbg
    @gbg Куратор тега Железо
    Любые ответы на любые вопросы
    Мало смысла - обычно битый пиксель означает пробитый транзистор управления этим пикселем. Пробой такого рода необратим.
    Ответ написан
    Комментировать
  • Как вывести несколько MessageBox на C++?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    MessageBox -- модальный. Невозможно одновременно вывести несколько MessageBox из одного потока. Можно создать несколько потоков и в каждом из них вызвать MessageBox.
    Ответ написан
    Комментировать
  • Стоит ли ставить обратный слэш перед глобальными функциями?

    @l4m3r
    Это делается для ускорения работы. Стандартная функция со слешем быстрее вызывается ибо чётко задан неимспейс.

    Но, по факту, смысла в этих мизерных оптимизациях нет. Только внешний вид кода портит. В хайлоад-проектах узкое место это не пхп.

    Итого:
    Есть ли от этого какой-то прок?

    Нет.

    Этого требуют какие-то соглашения по стилю кода?

    PSR -- нет.
    Ответ написан
    Комментировать
  • Почему для SSR проекта на бэк берут НЕ Node.js?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Потому что JS настолько плох, что продолжает существование только из-за отсутствия на фронте альтернативы.
    Ответ написан
  • Существует ли какой-то оверхед при использовании CSS в Qt?

    @ittakir
    Qt сами рекомендуют стилизовать контролы именно через setStyleSheet().
    Под капотом, думаю, что просто задаются значения набору параметров виджета, а дальше видже при отрисовке просто использует эти значения, т.е. каждый кадр парсинг стиля не происходит.
    Безусловно, нужно время, чтобы распарсить текст стилей, но оно мизерное, в реальной работе я не замечал каких-то проблем с отрисовкой.
    Через stylesheet можно задавать значение и своим параметрам, достаточно только объявить их определенным образом.
    Ответ написан
    2 комментария