Прошлый: >>1608778 (OP)Q: Поздно ли вкатываться в айти в 20/30/40/100 лет?А: Нет, не поздно.https://github.com/random76/Java-Thread/wikihttps://github.com/qqqlll/Java-Thread/wiki
>>1620524 →>тот анон который думает укатиться с дотнета в жавамирКстати, у нас на работе есть крутой дотнетчик, который тоже решил перекатиться. Но выбрал он не жабу, а ноду и тайпскрипт. Перекатился, думаю, по тем же причинам, но я его порасспрашиваю.
>>1620982Звучит уже как патология, хотя скорее всего речь про фронтент? Они там уже как взрослые, себе пару ультимативных йоб запилили, это тебе не верстальщик с jquery.
>>1621074Там такое говнястое api на ноде. Вот радость с сбалансированного, продизайненного языка нырнуть в пучину дерьма.
В прошлом треде озадачился вопросом, как с помощью Мавена менеджить зависимости в веб приложении (без Мавена Хибернейт не ставится, да и всё равно понадобится рано или поздно). Анон посоветовал плагин для embedded Tomcat. Собственно вопрос: я нашёл следующее http://tomcat.apache.org/maven-plugin-2.0/tomcat7-maven-plugin/usage.htmlЭто оно? Если да, то можно ли где-нибудь почитать нормальный гайд по этому плагину? А то информация разбросана вообще непонятно как. Настройки вообще не описаны, только их список нашёл, инструкцию по деплоингу собираю по разным васянским сайтам, куча нюансов, вообще не упомянутых в документации.
Есть Spring Boot webapp, собирается мавеном в war. Внутри war в корне есть META-INF, WEB-INF.Как сделать/что прописать чтобы в корневой META-INF добавлялся файл при сборке?Хочу положить context.xml для томкэта. Пишут что в src/main/resources надо положить META-INF с нужным контентом, но в этом случае пользовательский META-INF появляется тут:/WEB-INF/classes/META-INF/...а надо чтоб в корневой/META-INF/...
>>1621179Научите парня уже собирать толстые джарники и писать на embedded сервере спринг бута. Хера он варниками страдает
>>1621192В микросервисы я уже умею, а тут я хочу наоборот, по-старинке, хостить несколько аппов на одном сервлет контейнере. И для тонкой настройки каждого приложения хотел побаловаться с context.xml.
>>1621223Я только что с JAX-RS/PayaraFish ушел.>>1621217>хостить несколько аппов на одном сервлет контейнереЗачем? У меня есть десяток (and counting) небольших телеграм ботов и других инструментов с рестом, хочу хостить в одном месте всё. Никакого хайлоада, простая эргономика.
>>1621227Хотя бы потому что так порт один юзается, а не у каждого embedded свой. Конечно можно единую точку входа сделать выставив вперед nginx и проксипасить на разные порты, но это же при развернывании нового аппа править конфиг nginx, это лениво, проще вар задеплоить в контейнер.
>I found a few posts that claim that this also works with Tomcat 8, but it's not clear how to configure maven plugin to run Tomcat version 8, instead of version 7.Этот васянский плагин - точно единственный способ использовать Мавен в веб аппе? Как-то это подозрительно выглядит.
>>1621369Я пока пытаюсь просто запустить уже сделанный проект через Мавен. Но tomcat7:run даёт слишком старую версию контейнера, которая не поддерживает какие-то фишки, которые есть в некоторых зависимостях. Поэтому я ищу, как настроить версию запускаемого контейнера.
>>1621375А почему нельзя просто взять томкат, подсунуть ему взорваный варник в шеб-апп и запустить томкат?
>>1620861 (OP)Пиздец, ебал я в рот эту идею. По мере добавления новых мавенвоских модулей в проект она их не подцепляла и максимум подсвечивала синтаксис. Отладка работала только в декомпилированных классах, их исходники игнорились. Куча классов подчёркивалась красным из-за "незарезолвенных" импортов. При этом мавен всё собирал без проблем. Синхронизация не помогала. Реимпорт не помогал. Инвалидация кеша не помогала. Помогло только удаление папки .idea, блеать. Жду, когда в следующий раз придётся это проделать.Но ничего лучше нет.
>>1621383Потому что тогда Мавен не будет за меня ресолвить зависимости, и надо будет их загружать в либ или ещё куда-то.
>>1621392Ты чо, ебобо?1. Собираешь всю хуйню мавеном в экплоуженый варник.2. Натравливаешь на эту папку томкат.3.???4. Профит.Вся жизнь так программировали до спрингбута.
>>1621390А ты не проебал маленькое такое окошечко с предложением на автоимпорт? Без него новые зависимости перечитываются редко никогда.
>>1621396Хорошо хоть, что проблема всего лишь в кешах. Если бы обход по дереву модулей был реализован криво, так бы и пришлось смириться, что не работает.
>>1621400>Собираешь всю хуйню мавеном в экплоуженый варникТак ведь получится то же самое, что если бы я руками всё загрузил в папку либ?
>>1621402Не проебал, всегда жмакал. Даже специально добавлял/удалял пустые строки в помник, чтобы заставить идею повторно его распарсить.
>>1621404>Если бы обход по дереву модулей был реализован криво, так бы и пришлось смириться, что не работает.Либо завести баг на багрекере идеи. Но тебе лень.
>>1621410Это не баг, это хуёво настроенные зависимости в помнике.Я это проходил кучу раз. Как переехали на спрингбут ни разу не случалось.
>>1621410Он заведён до меня, я выяснил, пока гуглил. Проблема ещё и в том, что обновлять софт я сам не могу.
>>1621413>Как переехали на спрингбут ни разу не случалось.В чем проблема сделать у себя так же, как в спринг буте? Там стандартные фичи мавена используются.>>1621416>Проблема ещё и в том, что обновлять софт я сам не могу.Ха-ха, ну ты и лох, а я обновился с 2018 если не более ранней на 2019 идею и у меня хуй встал.
>>1621413Ничего подозрительного в помниках не видел, все теги <module> и <parent> были на месте. Даже навигация церез ctrl по ним работала. Но вот лежит один модуль, и в нём всё норм, а рядом лежит другой похожий модуль с практические таким же помником, но идея его игнорит.
>>1621409Ну, я про конечный результат.Вообще, я за это беспокоюсь в свете того, что я не смог таким же образом установить руками Хибернейт. Все зависимости поставил (одну), код скомпилировался, но не заработал. Устанавливал по инструкции, шаг за шагом. В итоге анон мне посоветовал либо танцевать обскурные танцы с бубном, либо брать Мавен и ставить как все.Вот я и думаю. Сможет ли Мавен всё нормально сделать? Или дело вообще не в этом?
>>1621375Еще раз, ты что пытаешься сделать и чем тебе не подходит вариант с распакованным/запакованным варником? Мавен собирает варник на таргете package и на таргете site (вроде site, если нет то deploy) копирует в tomcat/webapps. Тот следит за изменениями и автодеплоит. Чем эта схема плоха?
>>1621438>Чем эта схема плоха?Тем, что гораздо удобнее все запускать одной кнопкой из проекта, прям как со спрингбутом. Без отдельно стоящих томкатов.
>>1621464Спринг бут запускается либо в докере, либо через Run Configuration, нахера возиться с плагинами?
>>1621466>Спринг бутЕсли есть спрингбут, то незачем, конечно. Но там анон только-только хибернейт с мавеном осваивает, может оно ему не надо пока.
>>1621464Так-то мавен тоже одной кнопкой запускается (пик 1), но я тебя услышал, ты скорее всего имелл ввиду что запаковка это лишний этап для быстрого дебага, и тут я согласен. Хотя это же ты там писал команду tomcat7:run? Мне кажется что это не кнопка, больше похоже на команду в консоли. В общем я не знаю этот плагин. Но я не понимаю всё же зачем нужен лишний плагин когда в идее это нативно делается (пик 2). Да, все еще нужен будет standalone tomcat, но как по мне это даже лучше - условия приближенные к продакшену.А еще могу посоветовать юнит-тесты вместо студенческого воркфлоу "изменил пару строк - перезапустил все приложение".
>>1621493> пик 1К вопросу об уёбищьности против консоли. Если человек юзает консоль ты ему тупо пишешь:mvn packageон тебе если надо копирует выво консоли.UI-банаты же постят картинки со стрелочками и пояснениями куда, в каком порядке жмякать.
>>1621513Да я обожаю консоли, выдохни. Но человек попросил кнопку и я вынужден показать ему кнопку, даже две.
>>1621522Я не консолеёб я мимо котлиноёб, но стоит заметить, если ранее уже была написана команда, то повторное использование - это всего лишь одна стрелочка вверх (ну и enter)
>>1621375>>1621464Ну так и зачем запускать tomcat плагином, но не standalone, если можно в этом случае напрямую запускать спринг бут на деве с embedded tomcat? А на проде уже собираешь раз в день мавеном и грузишь куда надо.
>>1621584>это всего лишь одна стрелочка вверх (ну и enter)Ну то есть столько же, сколько мышкой, но с доп условием.
>>1621584>>1621619Бросишь фразу "одной кнопкой" в значении легко и просто (не надо волочить сбоку томкат) - начинают занудный срач про консоль или гуй, как будто, блять, enter на клавиатуре это не кнопка. Другие в 5й раз спросят "зачем xxx, если есть спрингбут". Я хуею с контингента.
>>1621624На мышку надо рукой отвлечься и еще её покатать.Если считать по количеству прерываний процессора, стрелка "вверх" победила.
>>1621645>хуею с контингентаТак и есть. Вчера спросили как context.xml в топовый META-INF засунуть в спринг буте; в итоге решили что нужно переезжать на vert.x %)Ну так-то чо, здесь не стаковерфлоу, здесь более философские вещи обсуждаются, спроси хоть котлиноёба.
>>1621645Пик 1А зачем каждый раз мавен дергать? IDE предлагает компиляцию и так вроде? Пик 2На крайняк можно выставить таску в меню компиляции и дергать по хоткею (хотя я чаще клацаю по кнопке)
Как найти работу джунскую? Какой проект запилить на се? Или на ее? Или он должен быть обязательно на спринге?
>>1621140Охуительно удобная штука для домашних поделок. Может запускать embedded или подключаться к уже работающему томкэту. А главное — даёт возможность отладки в IDEA Community.В простейшем случае выглядит так. Добавляешь настройку плагина в свой pom.xml, в элемент <build><pluginManagement><plugins> (там, где maven добавляет по умолчанию свои плагины), такую настройку: <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <port>8080</port> <path>/myapp</path> </configuration> </plugin>где /myapp - адрес, по которому будет работать твоя приложуха.Работает всё это по команде mvn tomcat7:run. Чтобы запустить из Идеи, нужно добавить Run Configuration с этой командой.>>1621375Ппоставь себе девятый томкэт и пропиши его в настройки плагина. Он же умеет не только embedded запускать, но и подключаться к другому контейнеру. Если ещё надо, могу написать, как настроить.
>>1621840Это точно нужная в современных реалиях хуйня? Я что-то сомневаюсь. Выглядит как говно мамонта:- 404 на картинке-логотипе- последняя версия - SNAPSHOT- датируется 2014м- заявлена поддержка Tomcat7, когда позавчера десятка вышлаСайт явно заброшен, как и разработка. Что плагин еще делает помимо деплоя с настраиваемым context-path? Обычным курлом можно того же добиться, не говоря уже что современная идея это поддерживает искаропки.
Таблицу в javaFX вообще можно заполнить БЕЗ ObservableList? Объекты, которые я помещаю в таблицу уже хранятся в массиве, и менять мне этого не надо. А везде гайды с ебаным списком.
>>1621888>современная идея это поддерживает искаропкиКоммьюнити-версия не поддерживаетОн просто работает. Я его использую для учебных целей, меня пока всё устраивает. Приложение деплоится, код отлаживается, профит.
>>1621888>Что плагин еще делает помимо деплоя с настраиваемым context-pathЗапускает встроенный контейнер, что удобно (тут же все любят спрингбут?). Но именно этот плагин, да, стар и заброшен. Для новых томкатов может быть есть какой-то другой, или можно использовать jetty, как я выше советовал.
>>1621919>Запускает встроенный контейнерСам плагин содержит в себе контейнер или он отдельно скачивается или подтягивается из установленного? Иначе от семерки-то наверно мало пользы, сервлеты 3.0, вебсокеты только-только появились. Да и версия семерки получается несвежая и с багами, давно пофикшенными в сегодняшних семерках.
>>1621911>>1621919>>1621934Для обучения он как раз-таки слабо подходит: обущающийся по-определению еще "зеленый" и наверняка столкнется с тем что какая-то фишечка из гайда не будет работать и он не будет понимать что с этим делать, ведь он делает все по гайду.
public String getUnitName() { String db_query = "select unit_name from fm"; try { mySql.dbQuery(db_query, resultSet -> { while (resultSet.next()) { final String unit_name = resultSet.getString("unit_name"); } }); } catch (Exception e) { LOGGER.error("Failed get unit_name from fm.", e); } return unit_name; } Будет работать или почему не работает?В системе разбираться даже Аллах не сможет, единственный костыль не ходит, говноява хуже червя, а у Анона прошу помощи.
>>1621950Синтаксически все верно. Работать будет при условиях:1) mySql проинициализирована и у нее есть коннект к бд2) У mySql есть метод dbQuery, принимающий строку и лямбду, и кладущий в лямбду стандартный резалт сет3) В самой ьазе данных есть таблица fm с полем unit_name(3) не так критично - код работать все равно будет, выкинет эксепшн
>>1621954Ну, всё логично.Таблица есть, метод есть, коннект есть.Ответа от бд нет.Сейчас проверю, связанно с интерфейсами и взаимодействием или бд неопределённо себя ведёт, потому что рядом в коде есть похожие куски, откуда и брался копипаст.
Хм, тестовый ответ возвращается.Наверное, неправильно вопрос поставил.Выше по коду к БД обращаются, но возвращают либо булевое значение, либо ничего. Так что у меня интерес к тому, будет ли возвращаться само значение, потому что на практике этого не вижу.
>>1621954>Синтаксически все верноИзвиняюсь, не верно. Поидее тут ошибка компиляции на 540 строке т.к. unit_name во внутреннем scope объявлен.
>>1621962Синтаксичиски верно, так как именно с объявлением внутри и final компилится, но если обновлять вне - кидает ошибку.
>>1621957Так что с учетом этой правки - >>1621962 - в результате вызова всей функции должно будет возвращаться значение unit_name из последней строки резалт сета.
>>1621968Idk, тут тоже восьмёрка, но gradle не валит ошибками, как если объявлять вне пространства. Судя по SO, ругается на то, что оно в цикле и нужен final, с которым трудности.мимо не явист, поэтому извините за нубство
Какие вообще сферы деятельности у компаний чаще всего в энтерпрайзе? Услуги или производство чего-либо? Торговля?
>>1621969Давай решать проблемы по очереди. Вот так измени чтобы с лямбдой не ебаться. Измененные строки: 544, 548, 555.
Какой ide для java посоветуете? пробовал intellij, но по не понятным мне причинам, он у меня лагает, или придётся смирится с лагами, ибо лучше него нет?
>>1621965Может быть оно и не компилится на самом деле. Легко проверить из консоли:javac /путь/до/класса.java>>1621988Дело в том что лямбды они по идее не должны иметь т.н. side effects (привет forEach). Считается что ты резалт сет должен внутри обработать и забыть про него, не возвращая ничего во внешний мир. Еще для проверки работает ли оно вообще, компилится ли, вызывается ли, можно вывод сделать: LOGGER.info("hello") между 546-547 (1) и между 547-548 (2). Только (2) недостаточно, вдруг там резалт сет пустой по какой-то причине.А если надо все-таки вернуть что-то из лямбды, тогда такие варианты:1) враппер, например, массив на картинке, либо коллекции2) поле класса можно использовать в лябдах
>>1622011Не знаю, скомпилится ли, потому что система.Не знаю, как оно отдельно работать будет. А сборщик и в нормальном состоянии ругается на всё.Да, это имеет смысл, потому что в коде, который упоминал, как раз заполняются поля классов.А про присланный пример с массивом подумал, что это такой-то явовский грязный хак.Вроде собирается пока. И если переменные сами по себе не возвращаются, в отличии от массивов один хер указатели, что этим компайлерам не нравится :c, то проблема почти решена.Осталось всего зайти по голень в ангуляр-парашу и приписать сеты к написанному гету. :3
>>1622002>intellijНу он самый лучший на мой взгляд: красивый, функциональный, много чего умеет, классные хот-кеи, напр. Ctrl+W, теперь жить без него не могу. Лагало как? Пикрил отключать пробовал? Если hdd а не ssd, еще и старенький, то может и лагать.Если не идею то даже не знаю, я только эклипс пробовал, нно это такое. Рабочая штука конечно, но медленная, корявенькая и тд
>>1621934И так, и так. Если не указываешь сервер явно, он запускает свою embedded семёрку. Но можно указать ему свой установленный томкэт, и приложение развернётся на нём.
>>1622021нажимаю ентр, а оно могло на секунду зависнуть.после отлагивает, но фриз в 300/400 мс есть. hdd на 7200, со всем справляется, кроме прог от jetbrains
>>1622011>>1622017Заработало :3Спасибо, Анончик. Не думаю, что додумался бы прочитать про доступ к разным типам данных в разных скопах.
>>1622002Два стула, idea и eclipse выбирать тебеРазумеется есть ребятки которые сидят и на виме с плагинами и на vscode, но в основном два стула
>>1622017>Не знаю, как оно отдельно работать будетКомпиляция? А не надо чтобы оно отдельно работало, надо было просто посмотреть будет ли ошибка компайлера как пикрил или нет. Может там к грейдле еще какие инструменты предварительной обработки участвуют, а javac дал бы чистейший результат.>явовский грязный хакТак оно и есть, это хак, так говнокодить нельзя. Но это быстрый способ получить результат с минимальными изменениями окружающего кода.>>1621988Еще можно изменить while на if в 547 строке. Поидее у тебя там одна строка в таблице всего раз тебе while подошел? Если строк допустим 10 то после while в результат попадет последняя строка, а после if - первая. В общем-то этот код не подходит для обработки нескольких строк в том виде в котором он есть, т.к. из метода возвращается одно значение, а резалт сет может содержать много.
>>1622002У меня на стареньком компе с лялихом дико тормозит, до полной невозможности работы, на относительно новом с виндой ещё ничего, но тоже не ожидаешь такой подставы от "лучшей IDE в мире".
>>1622029Ну, костыль состоит в методе, который возвращает одно значение из таблицы, да. И хоть в таблице строк много, запрос же должен вернуть лишь одну строку?Про while/if да, так написал с самого начала, потому что одно значение, просто от бессилия пробовал по-разному.>>1622029Это хак на хаке, потому что по системе вызываются методы, которые по цепочки приводят к.. Они, блять, просто открывают сокет и пишут в него, например, просто "get". И даже найдя место, где серверный сокет создаётся, не смог найти обработчик. Поэтому пришлось к такому методу "методу" прибегнуть.>javacПросто привык, что при компейляции большого проекта куча зависимостей, о коих компилятор сообщит не дойдя до самого кода.Может в яве по-другому, конечно. Но пока что работает.
>>1622052>запрос же должен вернуть лишь одну строку?>select unit_name from fmНет. Таким запросом возвращается один столбец (unit_name) по всем существующим сотням-миллионам строк таблицы, так что while перебирает их все, постоянно затирая предыдущее значение, и возвращает последнее, а if вернет первую строку и выйдет. Изменения SQL запроса нужны, но я логику вашу не знаю. Можно поставить LIMIT 1; и будет тупо одна строка возвращаться, нельзя гарантировать какая именно, а можно предикат написать типа WHERE id = 1 или WHERE name LIKE '%world%'.
>>1622073Блин, очень знакомое что-то, в 15-16 годах под глассфиш писал.Обновления сервера не было? Ну там типа админы без ведома девелоперов ночью апдейтнули сервер приложений.
>>1622073как вариант, в класспас, пробралась лишняя зависимость, и подгрузилась первой; либо вариант от джентльмена выше
>>1622076>>1622083Я вчера немного игрался с настройками, но, вроде, ничего критичного не делал. Только юзера добавил (уже убрал) и менял пару раз порт.Сейчас убрал jar вообще из всех мест, где она предполагается. Ошибка осталась. То есть, видимо, и правда где-то в класспасе что-то не то. Сейчас собираюсь его проверить. Если наберу в консоли echo %path%, это будет та самая переменная, которую использует класслоадер?
Можно ли на Яве написать покерного бота? Это хороший Пэт проект для работодателя? В голову ничего больше не приходит.
>>1622093>Если наберу в консоли echo %path%, это будет та самая переменная, которую использует класслоадер?Хуйню, похоже, какую-то написал. Но я правда не в курсе, какие пути берутся в класспас, кроме базовых классов и -ср.
>>1622093>echo %path%Детектит в тебе очень начинающего %)Нет, это переменная среды и к джаве относится только тем что оттуда собственно ищется java. А класспас можно посмотреть в команде запуска джавы, например ps -ef | grep java в линуксах
>>1622098>Детектит в тебе очень начинающего %)Да я уже покаялся. Просто не понимаю вообще, откуда может эта библиотека браться, если я её отовсюду удалил. Вот и предполагаю всякие небылицы.
>>1622104Весь класспас обычно в командной строке передается. Для не-винды выше написал, а в винде можно в process explorer посмотреть.
>>1622073Just in case, аппсервер может предоставлять некоторые зависимости (например, Java EE), которые у тебя прописаны в pom.xml. В таком случае нужно им проставить <scope>provided</scope>.
>>1622113>>1622114>>1622122В общем, заработало обратно. Оставил архив только в одной папке из двух. Может быть, он как-то самостоятельно восстанавливался во второй папке, когда я его оттуда удалял.Спасибо анону, сам бы я, наверное, и не подумал на classpath так сразу.
Как же заебало разворачивать приложения. Всю последнюю неделю только и делаю, что деплою что-то куда-то.
>>1622213Все уже автоматизировано до меня. Я просто хочу код писать, а не перебирать параметры деплоя.
Надо ли идти в qa, если не берут в джуны, с целью перекатывания в девелопмент, позже? Или это тупиковая ветвь развития?
>>1622289Чисто qa тупиковая, т.к. почти непересекающийся скиллсет. Можешь в автоматизаторы попробовать, там хотя бы погромировать будешь и фреймворками обмазываться сможешь
>>1622304Вот пишут автоматизированное тестирование по, проект по внедрению oracle siebel crm. Что это все значит? Чё платят автоматизатооам? Надо ли вообще, все это?
>>1622309>Что это все значит?Значение очевидно>Чё платят автоматизатооам?Деньги>Надо ли вообще, все это?Нет
>>1622289Ну смотри, работает это так:ты идёшь куа-джуном, работаешь, пусть даже что-то автоматизируешь на каком-нибудь селениуме или типа того, короче мало мальски программируешь, тебя повышают, до куа-джуна+, ну ты работаешь дальше и работаешь, того и гляди, куа-мидлом поставят, заебись. И тут ты рашаешь, что пора в программирование. Вот только никто тебя мидром не возьмёт. Пойдёшь заново джуном.Проще подрочить какие-нибудь курсы, да пойти на джуна девелопера сразу.Нет, есть конечно мифический сценарий, где ты работаешь пол года куа-джуном, параллельно задрачивая погромирование, а потом свитчишся в девелопера, но это скорее из области фантастики.У нас в конторе были куа, которые не смогли в девелопмент и пошли в куа, но они там в куа и оставались, потому что тупые. А если куа попадается толковый, то ему проще переквалифицировать в автоматизатора, чем начинать всё с начала джуном.
>>1622289Иди в автоматизаторы. Головняков меньше, з\п чуть меньше, есть возможность вката в дев потом.
>>1622379> Требуют выучить аннотацию @Test и класс AssertionsНикогда не понимал таких требований. Как не понимал "Умение пользоваться Jira". Ещё бы стековерфлов в требования написали, блеать.
>>1621520Ну так кто тебе мешает писать консольные команды? А он уже пусть разбирается где в UI эта кнопочка.>>1621522Вот только мышьку надо еще переместить, а еще меню Мавена может быть скрыто и дерево проекта свернуто.
>>1622447Тут везде есть свои затраты, но я в общемто-то и не писал про скорость.Речь шла о том, что использование консоли:1. Требует более глубокого понимания как работает система, будь то git или Maven.2. Консольные команды проще передать кому-то, чем объяснять какую кнопочку жмякать.3. Консольные команды не привязаны к IDE - перешел ты с IDEA на Visual Studio, все твои навыки работы с git остались с тобой.
>>1622377Да, там есть запары, но не уровня "у меня в браузернейм не работает кнопка увеличения хуя", фикс чего занимает пару дней просто потому, что разрабатывали браузер левой пиздой пятки.Передаю привет разработчикам Сафари, btw.
>>1622459Бессмысленный спор. Вообще по настроению выбираю консоль или тыкнуть. Главный минус консоли - помнить команды, даже если ты их давно не юзал.
Что надо выучить чтобы в жаву из .нета успешно перекатиться? Планирую собеседование через неделю, из знаний жавы только то что спринг монструозная хуйня и что сахарный диабет жавистам не грозит.
>>1622486Когда привык коммитить и пушить через иде, запросто забываешь даже то, нужно ли ставить / между origin и master.
>>1622489Собрался за неделю вкатиться в стек джавы, который сам называешь монстроуозным? Ага, щас.Собственно, нужно знать основные вещи спринга (core, data, jdbc, test, boot), разбираться в мавене и, возможно, иметь представление о EE (те же сервлеты). Ещё хибернейт, поиграться с одним из серверов приложений, хотя бы томкатом и, вроде, всё.
>>1622493Да я думаю микропет накатать на спрингбуте а остальное на работе уже догнать если возьмут без снижения зп лолМне интереснее скорее что нужно к собеседованию знать, как в >>1622503 корочехотя наверное эффективнее у Гугла спросить, наверняка списки вопросов с 2000 не менялись
>>1622493>>1622503>>1622505>>1622507>>1622515>>1622520Самое главное-то не упомянули..КЕМ ВЫ ВИДИТЕ СЕБЯ ЧЕРЕЗ 5 ЛЕТЕСЛИ БЫ ВЫ МОГЛИ ПОГОВОРИТЬ С ЛЮБОЙ ИСТОРИЧЕСКОЙ ЛИЧНОСТЬЮ КТО БЫ ЭТО БЫЛ И ПОЧЕМУНАЗОВИТЕ ВАШИ СЛАБЫЕ СТОРОНЫМЫ ВАМ ПЕРЕЗВОНИМ
>>1622527>ЕСЛИ БЫ ВЫ МОГЛИ ПОГОВОРИТЬ С ЛЮБОЙ ИСТОРИЧЕСКОЙ ЛИЧНОСТЬЮ КТО БЫ ЭТО БЫЛ И ПОЧЕМУВерцингеторикс.Потому что он был одним из тех, кто просто любил жизнь!
>>1622527>ЕСЛИ БЫ ВЫ МОГЛИ ПОГОВОРИТЬ С ЛЮБОЙ ИСТОРИЧЕСКОЙ ЛИЧНОСТЬЮ КТО БЫ ЭТО БЫЛ И ПОЧЕМУМартин Лютер!
Господа джависты, есть jar-утилита, ее как бы можно запустить по двойному клику (в винде). Но получается так, что джарник отрабатывает без консоли. Можно конечно через консоль и запускать или батник сделать, но хотелось бы узнать, можно ли как-то вывод перенаправить (или что-то где-то подкрутить), чтобы консоль все-таки сама появлялась и ты был вывод утилиты?Просто так-то она пишет только во время ошибки (записываю в файл), но хотелось чтобы прям консолька появилась и там весь лог посмотреть сразу.
>>1622710Напиши батник-зарускатор. По умолчанию жарники исполняет javaw, который да, скрывает консоль.Либо можно через какой-нибудь swing создать окно с текстовым полем и срать туда.
>>1622683Помимо того, что тебе уже порекомендовали, есть ассерты. Но это не куски кода, это небольшие выражения для логических проверок, и методы там вызывать хоть и можно, но не желательно, потому что side effects. И чисто технически, ассерты все равно "попадают" в релизный код, просто не исполняются.
>>1622710Запускают по двойному клику обычно экзешник-лаунчер, а не jar-ник. Параметры, с которыми лаунчер запускает jar-ник обычно лежат рядом в ini-файле, либо можно на живую посмотреть в process explorer.Я не верю что у тебя прям .jar файл запускают по даблклику, потому что .jar не является исполнимым файлом MS Windows, и для этого нужно в реестре прописывать кто будет такой файл запускать. Если какая-то твоя прога так сделала, то проверь в реестре и узнаешь что является лаунчером.
>>1622792> ЛегчеНу да, и тесты для динамической дрисни, делающие проверки, которые в лигосижабе есть из коробки, пишутся легко и мгновенно.
>>1622807Ты недооцениваешь степень умственной неполноценности некоторых экземпляров. Я например пару дней назад проходил интервью где мне на полном серьёзе затирали что проекту над которым предстоит работать уже 10 лет, но каждые 2 года они переписывают его почти с нуля, релизят, находят новые модные технологии и начинают всё с начала. Чувак к слову именно "модные" и говорил, я даже подумал что он траллирует так.
>>1622807>тесты для динамической дрисниНинужны. Пока ты пишешь тесты, конкурент уже делает питч бизнес-ангелу где-нибудь в LA.
Народ, помогите, пожалуйста.Написал простенькую прогу на java, на компе. Недавно начал изучать язык и слышал, что он кроссплатформенный и что много приложения на андроид написаны на java.Так вот, у меня есть пару классов-файлов .java, как мне их запустить на андроид?Если я правильно понимаю файлы .java уже скомпилированы и мне нужна виртуальная машина для их запуска, и в архитектуре андроида она есть(Dalvik, но сейчас что-то другое). В общем, помогите, кому не сложно, что нужно делать, хотя бы примерно?
>>1622917С андроидом не всё так просто. Там не обычная jvm, а своя, и работает она со своими форматами. Оракл даже судился с гуглом из-за этогоНо ты можешь положить файлы .java в проект на андроиде и собрать там. Возможно, заработает.
>>1622917Я не понимаю, вас гуглить не учили? Первая же ссылка. Как ты дальше будешь программу писать?От себя добавлю что ты неправильной дорогой идешь, сталкер, проще скачать андроид студию и подключать свои классы туда. "Кроссплатформенный" тут всмысле и на windows, и на бубунту, и на кофеварке, но не на андроиде.
>>1622995>в котлине нет точек с запятымиСерьезно? А как тогда no-op стейтменты писать? Без них же код становится совершенно нечитаемым!
сап жабаны, кто может знает какие видео курсы по жаве, начальный уровень хотя бы, что бы обьясняли про жава машину как там память работает и всякие другие интересные штуки. Наподобие видеокурсов хтмлкокодемии. Слышал про ITVDN но хз где найтии слитые курсы. Если у кого есть ссылка на трекер или хотябы где лежит, буду благорадарен
>>1623037>начальный уровень хотя бы, что бы обьясняли про жава машину как там память работает и всякие другие интересные штукивот у этого парня https://shipilev.net/ нормально для новичков. всякие интересные штуки, как ты просил
В россии нет энтерпрайза, у нас гопники и хачики бизнесом мутят и там максимум 1с склад юзают.>>1623062Новичку будет интересно про бенчмарки String'ов? У него еще и сайт на табличной верстке, буэ.
>>1623082Да там тоже не так уж много. Лишь маска цивилизованности у вчерашних дикарей, как общество "Белая перчатка".
>>1623136А sun закрывали глаза на это и не подавали иск. Только при смене руководства на оракл это началось.
>>1622752>Я не верю что у тебя прям .jar файл запускают по даблкликуВсю жизнь так запускал (причем и питоновские файлы тоже. Хз, сам попробуй. В реестре тоже самое что у тебя.
>>1623037>>1623062Не, там интересные штуки уже для олимпиадников, а мне для нюфань. Структуированную и последовательную лучше бы в формате видео. Думал у вас в шапке будет но там ссылок на видео курсы нету. У вас шапка вообще какая то скучная, даже у фронтендеров лучше.
>>1623179Попробуй заменить javaw.exe на java.exe в той строчке. Гугл пишет, что >отличается от java.exe тем, что при его работе не отображается окно команд
>>1622995Какой-то обиженный пук в лужу. Тута я. Еще утром вам покушать приносил>>1622633И мне же еще надо гнездо гофером палкой растормошить.>>1622584 →Нет времени на контент, надо йоба-софт на котлин переписывать. Сам себя не перепишет, а часики то тикают.Дал Бреслав котлин, даст и среду разработки.
>>1623002Да, теперь точка запятой не роскошь, а средство разделения выражений.https://pl.kotl.in/gbS5Y9mpi
>>1623228Код в UTF-8, а в памяти UTF-16, как везде. Дело в том что UTF-8 компактная, но "ебанутая" - в ней символ может занимать 1 байт, 2, 3 или 4 байта. И работа с ней сложнее чем с UTF-16, где возможны случаи только 2 байта или 4 байта для суррогатных пар. Ну тоесть UTF-8 не поддерживает свойство "кратно 2", что при работе с памятью вызывает определенные трудности.
>>1623237>>1623228Например, строка UTF-8:FF FFFF FF FF FFFFFFFF FF FF FF FFFFтогда как строка в UTF-16:FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFFДаже количество символов в UTF-8 не подсчитаешь если не прочтешь всю строку. А в UTF-16 это просто bytes/2. Потом уже ввели работу с суррогатными парами и с тех пор str.length() считает неправильно если в строке есть символы по 4 байта из старших "планов" (Unicode planes)
>>1623141Где-то в нулевых мелкомягкие пытаются увести и сделать свою жабу. Сан судится и наказывает. Мелкие - плохиеДесятые гугл уводит и делает свою vm - оракл судится и наказывает. Но почему-то плохой оракл
>>1623217Нужно больше точек с запятой, так чтоб еще в javascript пересыпалось, а то там через раз пишут.Эх, Семён Семёныч...
>>1623341Мелкие пытались проделать своё EEE с жабой. Дошли уже до второго E, вот сан и понял, что добром это не закончится.Да и так понятно, что они все пидорасы-копирасты
>>1622683Есть способ с константами public static final boolean DEBUG = false;если в коде писать: if(DEBUG) { ... }то компилятор выбросит этот код или наоборот оставит без условия вообще смотра что там true или false.Тут вопрос в том, что значение DEBUG должна быть константа времени компиляции, выкрутасы типа getDebugValue() не пройдут. Так что тут или переключать значение в исходниках или делать предпроцесинг исходников во время билда.Тут вопрос зачем? Если просто перфоманса ради, то JIT эффективно устранит условие if(DEBUG) если DEBUG это static final переменная. Заморачиваться с полным вырезанием имеет смысл если софт публичный, а дебаг логика содержит что-то секретное.
>>1623179>>1623188Консоль java.exe закроется сразу после того как java приложение отработает. Чтобы консоль осталась открытой надо её через cmd /k выполнять.
>>1623380Ну так тут надо модифицировать само приложение, плюс если оно не стартанет из-за ошибки конфин не найден то консоль закроется.
>>1623388Там идея в том, что не нужно железобетонно переходить, скачивай хоть все версии какие хочешь и какую-то из них включай как default. Точнее как current.
>>1623383Я, кстати, видел (или приснилось) как собирали джарники сразу в скрипт прям (сразу по соседству в баш и батник)
>>1623387А javaw на java в реестре менять это кроссплатформенно?Для кроссплатформенности и bat, и sh поставляют вместе.
Господа матерые джависты, если ли в джаве/котлине де-факто стандарт аннотаций, который бы показывал какие классы это публичное API и его нужно юзать и читать, а какие классы, это внутренние кишки и вспомогательное "нутро"?Я просто думал свои аннотации накатить, но потом подумал что по-любому такое уже кто-то делает, че велосипедить.
В джаве неудобно писать. Эти точки с запятой скучные. Их ставишь, ставишь, все одно и то же. И грузится все долго, старт спринга надо секунд 30 ждать, а нода за 8 секунд стартует.
>>1623705Так старт самого спринга это и есть старт хелловорлда. Большие приложения стартуют дольше в основном за счет своих инициализаций, в которых спринг не виноват.
>>1623037спасибо за то что не помогли как обычно, я нашел свои видео, и теперь смотрю изучаю что такое байты и биты, больше в ваш тред не приду так как не помогаете.
>>1624043>а я что потвоему делаю? >больше в ваш тред не приду так как не помогаете. пиздишь как русский
Итак, учу джаву уже с сентября 2019. Ранее опыта в программировании не было вообще. Учился в основном на джавараш, но, будучи на 20-25 уровнях, понял, что прогресс обучения дико торомозится из-за постоянного зависания на какой-нибудь сложной задаче. Стал смотреть видосы Алишева, читать книжки по алгоритмам, повторять вопросы и ответы на собеседованиях - то, что ранее было непонятно, вся эта куча стала более менее раскидываться по полочкам. В итоге, на данный момент более менее разобрался в коре, изучил SQL на уровне базовых запросов и простые команды Git. Продолжаю дрочить джавараш.Планирую повторить многопоточность и приступать к EE-фичам и спрингу. Вот только беспокоит, что к какому-либо самостоятельному проекту я так и не пришёл. По сути, за плечами знание теории и синтаксиса. Реально ли вообще найти работу джуна/стажера без портфолио в СПб?
>>1624051>Реально ли вообще найти работунет (а те собесы куда попадешь завалишь изза того что не знаешь олимпиадные задачи) живи теперь с этим. >портфолио Ты вот наверное был вебмакакой да? Считай это приговором.
>>1624061Под портфолио имел ввиду гитхаб со своими проектами. Друг недавно устроился джуном после джавараш и видосов по Спрингу. Из проектов на гитхабе был только повтор кода по видео. Но он перед тем, как начал серьезно учиться, ушёл с работы и из дома не вылезал, штудирая книги и задачи на джавараш.
>>1624055Чтобы видя только URI без другого контекста, можно было автоматически распознать, что это строчка для JDBC. Очень редко, но всё же иногда это требуется.
>>1624070как там в 2010? сейчас просят инплейс мержсорт минимум не говорю уже про прочие задачки с олимпиад.
>>1624066>>1624073Мне просто интересно, кто именно этим префиксом пользуется. ДрайверМенеджер? Так ему это не надо. Сама база? Но зачем? Это как-то влияет на то, в каком виде возвращаются результаты?
>>1624071>Друг недавно устроился джуном То друг, а не ты>ушёл с работы и из дома не вылезалВангую появилась возможность подвязки в каком нибудь месте, сказали подтяни возьмем. Он и рванул. Адекватные люди не дропают работу ради нихуя.Впрочем ты начнешь оправдываться, что он сам, ведь ты свечку держал когда его брали.
>>1624095Ну вот скажи, например: зачем в адресной строке браузера нужны префиксы http/https? Браузер может и сам разобраться, чо там, а пользователю это не интересно.
>>1624105То есть от наличия/отсутствия этого префикса зависит, в каком виде будут отправлены результаты? Например, если jdbc, то в том виде, в котором они, по каким-то причинам, определены спецификацией?
>>1624095>>1624055Странный вопрос. А зачем нужен префикс http(s) в урлах? Его тоже никто "не использует": в HTTP хедере он передается, только хост и адрес ресурса относительно хоста. "Не использует" в кавычках потому что это все-таки не совсем так - по схеме (эта часть урла называется по-научному "scheme") определяется как именно клиенту общаться с сервером, по какому протоколу. Так же и в jdbc. Подозреваю что ничего другого там поставить сейчас нельзя, еще не придумали, но это же задел на будущее, может потом будет jdbcs. Возможно и с http не подозревали что когда-то другая схема появится для передачи именно HTTP, но люди-архитекторы они такие создания умные - могут думать наперед. Возвращаясь к jdbc - наверняка в клиенте, будь то драйвер менеджер или непосредственно драйвер, стоит проверка if (!scheme.equals(THE_ONE_AND_ONLY_ACCEPTABLE_SCHEME)) throw new Unsupported...
>>1624120Но ведь это же никому не интересно. Как не интересны порт, с которого делается запрос, какие именно там хелеры, сколько IP-пакетов, через какие шлюзы. Так зачем пользователю в принципе давать знать про http, если браузер может выяснить это полным перебором по десяткам протоколов, переходя к следующему в случае ошибки?
>>1624128А меня вот больше раздражает не http, а www. Ебучая приставка из девяностых, никак не сдохнет. Хотя с текущей тенденцией заводить все больше и больше хипстерских доменных зон действительно разпознать интернет-адрес становится всё сложнее. Пишет тебе челик, "подскочи на karasique.meme", и хуй проссышь это его ебучий скайп с такой фамилией, или корпоративный аккаунт почты без домена компании...
>>1624116>в HTTP хедере он передается, только хост и адрес ресурса относительно хостаон не передается, конечно же
>>1624142Это как пример хипстерского домена. Так-то я обожаю виндоус, еще со времен 98.inb4: почему рот в говне?
>>1624097Вангую ты сам вкатыш и специально дизморалишь конкурентов, потому что нихуя не умеешь и ссышь.Или чсв хуесос из мфти или шитмо.
>>1624147Ну типа угадал, я вкатыш, который повидал дохуя шизов и чсв хуесосов из мфти и шитмо, кто дают такие задачки на собесах.Но почему я плохой в твоем воображении?
>>1624151Ну ты как-то агрессивно начал надсмехаться, хоть жавараш и говнище. Я другой анон, если что.
>>1624166Сорян, что что реальная оценка окружающей действительности вам кажется агрессивной. Мыж вроде не в сшп пока еще.
>>1624292Не, нет таких. Либо ты спрингогосподин и против перекатов после 500, либо ты котлинохолоп, послушавший питона-искусителя.
>>1624623Да, всё заебись.Что за дичь? Ещё пару тредов назад шарписты были такие бравые и пророчили смерть джавы, а сейчас аж собираются перекатываться в неё.
>>1623465Публичное API это немного размытое понятие: - есть классы с которых надо начинать - тут обычно в тьюториале пишут- есть классы которые для продвинутого использование - тут обычно документация или JavaDoc- в целом - все что public - то публичное API разной степени продвинутости, все что не public - то или приватное или advanced API
>>1624728Какой же ИТ юмор тупой. Серьезно, когда-нибудь задумайтесь насколько туп этот юмор. Он выглядит как шутки про матан или физику от студентов которые только вкатываются и узнают новые понятия и свойства хахаха биссектриса это взбесившиеся крыса И хватит форсить это динамичное и однопоточное говно - питон. Тем более, когда есть божественный котлин, с вменямым sdk, а не продукт больной фантазии какого мужика вечно, блядь, лезешь в SO чтобы узнать как эта известная херня делается именно на питоне, ебанные "не такие как все" кодеры.
>>1622683В application.properties:logging.level.com.seriouscompany.seriousbusiness.SeriousClass=DEBUGВ SeriousClass:@Component@Slf4jpublic class SeriousClass {public void myAwesomeMethod() {log.debug("My debug message!");} }
>>1624643Самоподдув треда закончился. Раньше это вообще был тред мертвее жабьего, периодически тонувший, потом пришел какой-то анимешник и их шапку сделал про язык багофф!
>>1625027Slf4j - это типа универсальный интерфейс к другим логгерам. Полезно если разрабатываешь библиотеку которая может использоваться в проектах с разными логгерами - просто надо будет подключить соответвующий бекенд, Это была его основная фишка.Но теперь и log4j тоже так устроен - API отдельно, сам логгер - отдельно. И тоже возможны варианты, в том числе и logback.
Прошел короче джавараш и там доп курсы еще с ним шли. Вроде более менее нормально, но вроде и все это же есть и бесплатно. Для шарпа один в один professorweb. Такое. Ну для не самых быстрых и по большой скидке сойдет за год со скрипом.
error: incompatible types: String cannot be converted to boolean if ((unit_name = Utils.readFile(filename))) {Что делать, господа жависты?
Или иначе.Есть машина. rootfs каждую перезагрузку стирается. Сначала брал данные из БД, о чём недавно писал, но, оказывается, бд тоже стирается при перезагрузки. Видимо, хуком каждый раз перезаписывается, ведь вроде бы находится на разделе, который не перезаписывается с перезагрузкой.Сейчас хотел брать/записывать строку в файл. Но может ещё какие-то варианты лучше будут?
>>1625092Нет.>>1625094Не знаю.>>1625130Я бы и эту жабу в руки не взял. Но долг перед Родиной зовёт окунуться мордой в это.>>1625164Так код быстрее работает. Мне так на дваче сказали.>>1625166 Сейчас взял всякие FileUtils из модуля, который уже был подкручен, но пикрил выбесил. Как жависты жрут эти 500 уровней с try-except. Пиздец же.
>>1625192>Так код быстрее работает. Мне так на дваче сказали.А ответил, что не тупой. Приоритет оператора =
>>1625081Привет.>unit_nameЭто с тобой мы во вторник лямбды решали?Операция присвоения (=) имеет меньший (самый наинизший кстати) приоритет чем операция сравнения (!=). Скобочки правильно расставь.Но это не решит всех твоих проблем. Сравнение строки с "-1" тоже невозможно. Зато у строки есть .isEmpty()
Пришёл. Узнал, что то, что должно работать, не работает. Пинаю хуи во время сборки йобы.>>1625204>>1625213Это же было ирония, ну.>>1625213Да, вновь привествуем.Да, проблем не решит. Он сейчас вовсе выдаёт 404 в какой-то момент.А, как писал выше, хоть варинт с бд рабочий, но отчасти, потому что БД с каждой перезагрузкой машины перезаписывается.
>>1625208Пришёл одним из первых, запилил сегодня одну фичу и сейчас пилю вторую. Когда все уходили праздновать, съебался раньше всех, ибо скучно.Выходные долгие, будет очень скучно.
>>1625130Так уныло, серо, пресно..Куда как интереснее писать вот такое живое, яркое, броское:Files.lines(Paths.get(fileName)).forEach(System.out::println);
Когда использовать class.getResource()?, а когда class.getClassLoader().getResource()? До сих пор не понимаю, объясните.
Где можно почитать про то, как и в каком порядке расставлять филды, методы, вложенные классы и тд? Или без разницы?шизоид-перфекционист
>>1625578>>1625583Спасибо.>>1625581Очень хотел бы посмотреть, не составит труда завтра кинуть в тред?
>>1625377Пример на котлине читает построчно. Чтобы все за раз скушать:File(fileName).readLines()File(fileName).readText()
У меня есть ArrayList который содержит в себе <Integer [][]>, то есть двухмерных массив. С помощью massiveName.contain(new Integer {a, b}) я проверяю наличие элемента в массиве, но это почему то не работает. При использовании обычного ArrayList, без массива всё ок. Как быть?
>>1625896>содержит в себе <Integer [][]>, то есть двухмерных массив>list.contain(new Integer[] {a, b})Ты говоришь двумерный массив, но добавляешь одномерный с двумя элементами.Все просто: методы коллекций ArrayList.contains() и другие, напр. Map.putIfAbsent(), используют Object.equals() для определения есть ли элемент в коллекции. Если List<Integer> или List<String>, это работает потому что и у Integer, и у String метод equals переопределен и с помощью него проверяется равенство. Но ни у одного массива этот метод не переопределен и содержит стандартную имплементацию от Object.equals(), которая проверяет лишь равенство ссылок. Тебе нужно делать вместо массива свой собственный тип данных (класс) с переопределенными в нем методами equals() и hashCode(), только в этом случае коллекции будут нормально работать так как ты ожидаешь.
Сап, такой вопрос. Java, как первый язык - это нормально? Или до него лучше выучить Python, или даже паскаль какой-нибудь чтобы легче далось. Или нет разницы с какого начинать и можно начинать с джавы?
>>1625950Полагаю Java вполне подойдет. Это пример "стандартного" языка, в ней есть все фишечки, которые нужно разобрать новичку: статическая типизация, модификаторы доступа, ламбды.
>>1625896>>1625947>System.out.println("Arrays.equals(iArr1, iArr2): " + Arrays.equals(iArr1, iArr2)); // trueЕще добавлю что именно для этого случая - проверки массивов на равенство - был добавлен статический метод Arrays.equals(). Но в твоем случае тебе это не поможет, т.к. в лист не передать компаратор для contains() - только для sort(). Но в своем кастомном классе вполне можно вызывать Arrays.equals() внутри твоего собственного equals(). А вот как ты переопределишь hashCode() тут дело твое: equals() и hashCode() нужно переопределять только вместе.Общий вердикт такой: ты используешь неправильный тип данных для своей задачи. Тебе точно нужны именно массивы? Или у тебя там всегда будет лишь два элемента (насколько я вижу это координаты x, y)? В твоем случае можно и нужно создать собственный тип данных - класс. Это не так сложно как звучит. Читай, делай.
>>1625947>>1625959Кароче я не хочу думать и просто сделал список где каждый нечётный номер - x, а каждый чётный - y
>>1625947Ну вообще я хочу всё таки по-человечески сделать. Значит мне нужен свой тип данных. Это будет класс:public class WorldMesh { public WorldMesh(int x, int y) {// конструктор и две нужные переменные }}Потом создание массива:ArrayList<WorldMesh> world = new ArrayList<WorldMesh>();И добавление туда элементов:WorldMesh.add(new WorldMesh(573, 278));Так же должно быть? А вот про переопределение методов equals() и hashCode(), я вообще не понял. Что такое переопределение хотя бы.
>>1626046> А вот про переопределение методов equals() и hashCode(), я вообще не понял.Тогда тебе срочно нужно читнуть 3 глава, 1 и 2 параграф.
>>1626129>перекрывание вместо overrideПочему хотя бы не переопределение? Тошнит же.И вообще, я в идее alt+enter жмякну и мне все переопределит.
>>1626151Может у тебя проблемы с энергией, повышенная утомляемость? Витамины может нужно, меньше фапать.
>>1626046Совершенно верно, начало положено. Про переопределение тебе лучше конечно читнуть как выше посоветовали. Вкраце это переопределение метода в классе-наследнике. В Java все объекты неявно наследуются от Object, поэтому у каждого объекта есть методы которые есть в классе Object, в частности equals и hashCode. Но они имеют дефолтную не очень полезную реализацию, и поэтому в своем классе мы их переопределяем, добавляя нужный функционал.Методы equals и hashCode тесно связаны: equals проверяет равны ли объекты, а hashCode проверяет, могут ли быть равны объекты теоретически. Если два объекта имеют разный хэшкод, то объекты гарантированно разные, а если хэшкод совпадает, то объекты могут быть как равны, так и не равны. Хэшкод это быстрая предварительная проверка, префильтр, перед тем как вызывать медленный equals. Еще по хэшкодам формируются корзины (buckets) чтобы группировать объекты. И еще хэшкод не должен меняться после добавления объекта в коллекцию, иначе все по пизде пойдет.Вот полная реализация твоего класса, обращайся.
>>1626297Он просто data class WorldMeh(val x : Int, val y : Int) напишет наверное.Как и на джаве, надо только подождать середины марта.
>>1626325>И почему не Objects.hashCode(this)Я не думаю что здесь есть "правильный" вариант. Разработчик сам определяет значения хэшкода для его класса исходя из предположений о количестве объектов этого класса в коллекции, например. Если хочешь положиться на стороннюю реализацию - вперед, никто же не запрещает. Тут же я, во-первых, хотел продемонстрировать как это делать вручную, потому что это учебный пример в первую очередь, и во-вторых, performance-wise лучше написать свою простую формулу чем ощущать всю мощь рефлекшена и цепочки внутренних вызовов. Микрооптимизация, ну. А если серьезно, то я не смотрел реализацию этих методов, но даже и так понятно что общий случай сделать сложно, что все очень субъективно. А %16 это опять же во-первых чтобы показать как легко определять корзины, во-вторых, интуитивно "16 корзин хватит всем" (c).
Можно ли сделать юнит-тесты с помощью рефлексии? Вот у меня с лабы 100500 стратегий сортировки, как мне сделать отдельный тест на каждую из них, просто пройдя по циклу for (var streategy : strategies) ? Потому что сейчас у меня один тест на все стратегии.
>>1626363Лично я не понял что ты хочешь. У тебя же есть и базовый абстрактный класс, и интерфейс. Ну вот первый пикрил с рефлекшеном, но это можно сделать и без, как на втором.
>>1626395ну некрасиво же, не хочу плодить темлейтный код. Хотя, есть ли смысл в отдельном тесте на каждую стратегию? Я ведь и так проверяю каждую из них и если какая-то не сработает, то с логов пойму какая именно>>1626396ubuntu mono
>>1626458>ну некрасиво же, не хочу плодить темлейтный код@Testpublic void test_BubbleStratedy() {doTest(BubbleStrategy.class) или new BubbleStrategy()}Реализацию doTest пишешь одну на всех.
>>1626494Лучше пусть объяснят, как он методы изобретает, которых в сорцах вообще нет. И аннотации тоже мы не ставим.
>>1626494CRUD = Create Read Update DeleteОбычные операции с данными (обычно БД)Repository это паттерн доступа к данным, который рекомендуют на замену DAO, потому что он позволяет абстрагироваться от непосредственно самого доступа. Но внутри репозитори все равно зачастую используют те же DAO. Еще один уровень абстракции.
>>1626494>>1626504Ну а в частном случае это интерфейс спринга, для доступа к данным опять жеhttps://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/repository/CrudRepository.html
Че вы делаете, когда написали какое-то решение, а потом находите уже готовое в какой-то библиотеке? Причем, ваше решение уже работает и поддерживать его не надо.
>>1626633Тогда, просто скинь ей фото хуя, тем самым ты намекнешь на секс, и уже она сама станет более активна.
>>1626648Чел я с людьми в офисе вообще не разговариваю, о чем ты. Да и зачем мне секс, когда я подрочить могу.
>>1626644Безопасность. Во внешнем мире смогут сделатьUnsafeStates.getStates()[0] = 'ОП-Хуй';Если это не твоя оригинальная задумка - возвращать ссылку на изменяемую сущность - то так действительно лучше не делать.
>>1626651И кто из них это написал?В любом случае, иммутабельности на джаве нет.Хотя, ты можешь каждый раз возвращать копию массива. В большинстве случаев нахуй не нужно.
>>1626653>В большинстве случаев нахуй не нужноВ большинстве может и не нужно, но для некоторых случаев парни даже CopyOnWriteArrayList написали.
>>1626656Комментарий "Не делайте так" скорее указывает на общую рекомендацию, а не на такие случаи. Часто ты видишь использование CopyOnWriteArrayList? Я даже Collections.unmodifiableList не вижу.
>>1626644Для сохранения иммутабельности, помимо копирования всего массива каждый раз, можно добавить в апи вот такой метод:getState(int stateId) { / провеки индекса / return states[stateId]; }>>1626659Нет, не часто. Я бы даже сказал что наверное не видел вообще. Но он есть %)
>>1626675А если нужно перебирать, предоставляешь итератор. Или наоборот, процессишь у тебя, попросив консьюмер.
>>1626681Эксельщик, а у тебя есть график ненужных в джаватреде вещей? К аннотациям и лямбдам надо добавить иммутабельные коллекции.
>>1626685Такой график построить намного сложнее, это не просто сводная таблица по датам, тут нужно в каждом сообщении искать "не нужно".