Q: ЧТО СКАЖЕТЕ ЗА ДЖАВАРАШ? A: Худшая инвестиция в твоей жизни. Огромное количество говнокода, оторванные от жизни задачки, 1000 заданий по выводу в консоль какого-то говна. Сейчас все советуют Hyperskill. Более продуманный план обучения. Но, как и любой %COURSENAME% не гарантирует тебе успешного вката. Выучиться можно и самостоятельно, не отдавая свои кровные васянам-наставникам.
Q: Посоны, собираюсь учить джаву по 2/5/20 часов в день. За сколько дней я выучу достаточно, чтобы зарабатывать фрилансом? A: На джаве фриланса нет. Хочешь фрилансить — дуй в ПХП/раби/1С тред. Но в последнее время увеличивается количество вакансий на удаленке в связи с ковидом. Но, возможно, как вся эта мракобесия закончится, всех обратно загонят в стойло.
Q: Значит, я должен буду всю жизнь сидеть в опенспейсе, конвертируя XML в эксепшны? Ура, мне подходит! С чего начать? A: Книги: https://libgen.is
Q: Хули все книги на английском? A: Без английского ты не нужен и можешь смело идти нахуй. Ну или в 1С-тред.
Q: Я не могу в книги. Наткнулся на джавараш, но в самом верхнем вопросе уловил нотки сарказма. С ним все правда плохо? A: В наших тредах постоянно появляются люди, спрашивающие о джавараше. Громко объявляют, что начинают заниматься, задают пару тупых вопросов и куда-то пропадают. Похоже, большинство адекватов бросают джавараш из-за дебильных заданий типа "десять раз скопипасти этот кусок кода и выведи в консоль". Тем не менее, иногда появляются и люди, говорящие что прошли его целиком, и что дальше задания получше. Короче, хочешь - пробуй, первые десять занятий бесплатно же. Но, как минимум, лучше совмещать с обучением по другим источникам. На самом деле ты просто потратишь свое время на какой-то мусор.
Q: Всё это хорошо, но без алгоритмов меня на работу не возьмут. A: Не все конторы дрочат на подход Яндекса который спиздил подход гугла. Но для крупных фирм знать алгоритмы маст хев уже на уровне джуна/трейни, вот курсы от Принстонского университета: https://www.coursera.org/course/algs4partI То же самое но в бумаге: Роберт Седжвик, Кевин Уэйн - Алгоритмы на Java
>>1960809 → >>1960798 → >>1960355 → Вычищатель спринга их обоссыт. А потом мы все дружно будем выяснять, что наследуется - квадрат от ректангла или наоборот.
Перекатываю реквест. Аноны, киньте годные статьи, где объясняется многопоточность, как работают треды, локи, форкжоинпулы, экзекутеры, как все параллелится и тд. Только чтобы было реально понятно. В прошлых тредах сеньор кидал задачки, смотрел решения и мало что понял, почему и зачем написали именно так.
>>1961952 Ошибка говорит, что ты ожидается получить дату без таймзоны, а передаешь ты character varying. Вопрос: откуда у тебя String? Что ты получаешь на выходе с pst.setString(2, date)? Можешь посмотреть профайлером какой запрос реально выполняется?
>>1961875 (OP) Джавач, а есть фриланс на жабе? Ну, я знаю, что нет, но заебался на удалёнке в потолок сидеть плевать, а денег много не бывает. Как/где искать проекты, на которые требуется 2-4 часа в день?
>>1962127 > Как ты собрался с базой работать? Через божественный JdbcTemplate. > Не думаешь же ты, что кто-то в здравом уме потащит MongoDB в продакшен? Конечно нет, монга - это для MVP-проектов на пхп и жс, которые дольше пишутся, чем находятся в эксплуатации.
>>1962181 Тут аналогия как в линуксах. Есть сложный, но могучий спринг, который нужно много настраивать и конфигурировать, а еще важнее уметь это делать хорошо. А есть коляска - спринг бут, где за тебя все настроили, и тебя в ней катают, а ты только на несколько кнопок нажимаешь и полностью переделать под себя не можешь.
>>1962127 >>1962144 Лол. Мимо-с-монго-на-продакшене >>1962142 Есть. На фл.ру. Ставка - копейки. Разбирают моментально. Минут за 5. В основном студенты которым лень делать лабу. Один раз писал микросервис для какой-то компании. Заплатили косарь. Ниочем короче. >>1962185 В целом да. Но те же микросервисы поднимать за 5 минут - самое то.
>>1962238 Лол. Как ты жопу с пальцем сравниваешь? Я в прошлом треде писал. Монго не заменяет нормальную базу. У нас стек по базам: мускуль+монго+редис. Каждая под свои задачи. И как правильно сказали, последняя версия того же мускуля уже может заменить монгу или редис. Но так как у меня суровое легаси, мы юзаем три старых базы, вместо одной новой. Опять же, лучше пойти в тред к базунам, я думаю там смогут пояснить по хардкору какая база и для чего лучше. По крайней мере, в том треде пишут, что пока noSql не заменяют SQL базы, и наоборот. В общем все от задачи зависит.
>>1962248 >Монго не заменяет нормальную базу Тогда вопрос снят. Мне было бы интересно об особенностях использования его именно в качестве основной базы.
>>1962252 Не это говно. Транзакций нет(хотя говорят что в последних версиях частично есть), нет реляций, большой занимаемый объем на диске. Ну и ещё куча всего, почему монго не заменит нормальную базу.
>>1962277 > сикуль - устарелое говно 50-летнее Я уже почти уверен, что всевозможные носклы пилят не для решения несуществующих проблем реляционных СУБД, а тупо потому, что SQL всем наскучил.
>>1962275 типа чтобы получить кеш, нужно сходить в другой сервер, сделать запрос, вернуть обратно, и подставить это вместо результата? А не проще в саму базу сходить?
Щас бы выбрать монгу и страдать от проблем, решенных rdbms еще в прошлом веке. Хотя жс-опетухам не привыкать к героическому переизобретению того, что весь мир уже давно юзает.
Чем подключиться к процессу java, чтобы глянуть, какие функции вызываются? VisualVM + Btrace не пашет (проблема в virtualvm, там чет фиксили, без толку), об intrace ваще молчу (лет 7 назад последний релиз). Неужели нет такого, чтобы подключился к процессу в
Чем подключиться к процессу java, чтобы глянуть, какие функции вызываются? VisualVM + Btrace не пашет (проблема в virtualvm, там чет фиксили, без толку), об intrace ваще молчу (лет 7 назад последний релиз). Неужели нет такого, чтобы подключился к процессу в два клика? Как в ollydbg. Геморрой с этой джавой
>>1962144 > > Как ты собрался с базой работать? > Через божественный JdbcTemplate. Как раз изучаю сейчас хибер и JdbcTemplate малость. Мне мне кажется мутить каскадные операции в темплейте уж слишком заебищно. Особенно с мэни-ту-мэни связями. А в хибере это пару конфигов сделать и все работает.
>>1962547 Ну он вроде написал что у него пет-проект. Можно и с гибером и с темплейтом поиграться. В бою же в итоге будешь программировать на SQL. >>1962502 С другой стороны - сами виноваты. Надо было перекат пилить, а не тянуть кота за яйца 1000 постов.
>>1962597 Все зависит от изначальной архитектуры, нагрузки и задач. У нас натива 90%. Гибер это прям редкий кейс. И если разработчик решил использовать гибер, это может иметь неприятные последствия в плане перформанса и последующих изменений кода. Ну, у нас так по крайней мере.
я не могу нигде найти ничего про конфигурацию бинов через xml на спринге. я уже заебался, никакой инфы нетууууууууууууууууууууууууууууууууууууууууууууу
>>1962864 >>1962850 конфигурирование бинов черех хмл топ тема, не понимаю почеум ей щас мало пользуются. Мб кто-нибудь знает какие-нибудь ресурсы по этой теме? даже в доках спринга мало инфы об этом
>>1963165 Энтерпрайз, хуле. На любом языке достаточно большой проект обрастает кучей конфигураций/кастомизаций, поэтому в спринге с самого начала это всё стараются учесть, чтобы потом меньше переделывать. Кроме спринга есть куча микрофреймворков, там почти неотличимо от всяких нод и питонов, наверняка и для вебсокетов есть.
>>1963704 >Почему модули не взлетели? Потому что нет версий и ломают обратную совместимость. >Почему спринг не модульный? Модульный. >Перейдут ли все фреймворки на модули в будущем? Нет. Джава умерла, новых фреймворков не будет.
>>1963718 Но разве нет кейсов, где было бы нужно отрезать ненужную часть jdk и других библиотек/фреймворков, чтобы освободить часть ресурсов? Про стронг инкапсуляцию я тоже не понял нахуй она нужна.
>>1963671 У нас 13, но у меня сравнительно маленькая компания. Когда выйдет 17 LTS, скорее всего пересядем на нее надолго. До этого работал в банке на 8 жабе.
>>1963759 Да и хуй с ней, с обратной совместимостью. Я серьезно. Не вижу смысла тащить за собой ошибки прошлого, если есть возможность сделать нормально. Все равно версии жабы основной потребитель - интерпрайз - никогда не будет мигрировать на легаси. Только новые проекты будут стартовать на новых версиях. А в микросервисной архитектуре это все вообще перестает быть проблемой.
>>1963759 Да. Немного закосячили. Спасибо ораклу. Но на самом деле, если контора не может с 8 на 11 мигрировать - значит в ней какие-то рукожопы сидят. Да, это не совсем просто. У нас где-то 3 месяца ушло. Но там два человека в свободное время ковырялись. В целом - ничего сложного.
>>1964013 Я серьезно спросил, какие клевые фичи есть в 11, ради которых не жалко средств на миграцию. Разница между 7 и 8 огромная, а между 8 и 11 - нинужные модули, нинужный вар, нинужный запуск без компиляции. Что там нужного? 10 разных методов в старых классах? http-client?
>>1964052 Зависит от того, насколько я крупный. Для мелких контор новые технологии - шанс схантить сотрудников получше за подешевле. Сберу и втб каким-нибудь похуй, как сидели на 8, так еще сто лет сидеть будут, даже на новых проектах.
Читаю про массивы в java, пишут, что на самом деле они объекты, то есть для них Object это предок b и что классы для массивов генерируются динамически, то есть это объект: int[] arr = new int[2]; возникает вопрос, а как мне посмотреть на этот объект?? если у arr вызвать getClass(), то я увижу "[i" это название сгенерированного класса? [i это его название ?? Ответьте, плиз,мучаюсь этим вопросом.
>>1964018 Тебе жизнь упрощают, дурик. Больше нравятся простыни кода по 500 строк? Если это Spring Boot и какой-нибудь Lombock, который аннотациями спасает тебя от ручного выписывания get set toString, итд, то это нома
>>1964078 Ну так ты почитай в чем разница. Вар и клиент это круто. А ещё куча оптимизаций. Очень много методов стали работать в разы быстрее. Когда у тебя большое приложение, это будет заметно.
>>1964092 Да, внутреннее имя класса, [ - это массив, а i - это инт. Можно даже подгрузить его через Class.forName("[I"). Но ничего интересного сделать нельзя, у него даже конструкторов нет, можешь проверить через int[].class.getDeclaredConstructors() . Не забивай себе этим голову, просто используй массивы так, как предлагается.
Зумер 20 лвл, устроился в жавакантору, а тут деды 30+, а то и 40+, самому молодому 26. В qa работают милфы, которые мне в матери годятся. Это норма для жава мира?
Смотрю доку по спрингу, и вижу там два направления. Реактивный спринг (асинхронный) и нереактивный (синхронный). копался в нескольких своих пет проектах, пока их делал, гуглил всякое говно на стэковерфлоу. Судя по импортам там, реактивный совсем не используется. Есть ли смысл его учить? Как решается проблема блокировки в запросах к примеру рест макака с круд-гранатой?
>>1964320 Используется в некоторых хипстерских проектах, для работы в энтерпрайзе можешь забить, там ещё повезёт, если спринг будет пятый, что там webflux. > Как решается проблема блокировки в запросах к примеру рест макака с круд-гранатой? Спринг может обрабатывать несколько запросов параллельно в тред-пуле, на уровне БД параллельность тоже возможна за счёт одновременно выполняющихся транзакций, лишь бы dbms_lock-ов и select for update-ов было поменьше. Это, в общем-то, всё, во время IO треды тупо синхронно ждут ответа.
>>1964343 >Спринг может обрабатывать несколько запросов параллельно в тред-пуле, на уровне БД параллельность тоже возможна за счёт одновременно выполняющихся транзакций, лишь бы dbms_lock-ов и select for update-ов было поменьше. Это, в общем-то, всё, во время IO треды тупо синхронно ждут ответа. я так полагаю по стандарту на каждый запрос контроллере выделяется отдельный новый бин и этот бин кладется в тред пулл? а сешшенфактори (к примеру гибернейтовский) он потокобезопасный т.к. нет внутреннего стейтмента, верно понимаю?
>>1964387 ну вот допустим у меня есть контроллер. в нем дао бин зааутовайреный сеттер методом. В том DAO собсно session factory таким же образом припаянный. Больше никакий бинов или полей нет. За счет чего тут достигается потокобезопасность?
>>1964441 Да я сам нахватался по верхам в разных мурзилках, тоже надо бы что-нибудь единообразное почитать. Пока присматриваюсь к Pro Spring, там должно освещаться в том числе и это.
>>1964665 Проверять знание английского никто не будет. Оно нужно в первую очередь тебе, чтобы читать мурзилки на английском (на русском нихуя нет) или разбираться, когда лучший ответ на стековерфлове не подзодит.
>>1964670 Отлично, у меня просто стоит встроенный переводчик, хотя я обычно спешу найти ответ и перевожу сразу всю страницу, из-за этого прогресс на английском плохой.
>>1964670 >Проверять знание английского никто не будет У меня были собесы на английском, причем, похоже, только ради того, чтобы этот самый английский проверить. Но да, это очень редкая ситуация.
СНГ программисты не палятся. Но да, если ты хочешь жить и работать в своем коровнике, английского на уровне "Лондон из зе капилал оф Грейт британ" хватит. Если хочется получать человеческую зарплату - придется подтягивать английский до вменяемого уровня.
>>1964732 Все тесты написаны с использованием гибера. В тесте проще гибером сохранить сущности, чем писать натив или тянуть реальный сервис, который их создаёт. Есть ещё кейс, когда ты точно уверен что таблица будет читаться/писаться одна, без реляций или сложной логики. Тогда тоже можно гибер использовать. Но как показывает практика, пишут на гибере, потому что "точно уверены", а спустя пол года, из-за новых хотелок бизнеса, приходится переписывать на натив. В небольших проектах используют правило: сохраняем гибером, читаем нативом.
>>1965148 у меня например был бал на тему что хибернейт автоматически сохраняет любые изменения в энтити. В маппере модифицировал исходную энтити - хопа и это сохранилось. Очень неприятно и опасно
У List метод remove существует в 2х ипостасьях: boolean remove(Object o); E remove(int index);
со 2ми всё ясно: неизменяемые они и всё, так что если вызвать remove (оба варианта) вылетает UnsupportedOperationException
но вот с backed by the array List непонятка: если на нем вызывать E remove(int index); то вылетит UnsupportedOperationException но вот если использовать boolean remove(Object o); вылезет просто false без эксепшена!!! Почему так??
>>1965373 >выше показал пример. Модифицирую поле и скармливаю это мапперу Ну так ты же сам модифицируешь поле, при чем тут маппер? Зачем ты вообще модифицируешь сущность, если не хочешь, чтобы сущность в базе поменялась? Модифицируй тогда само получившееся дто, если нужно поменять какое-то возвращаемое значение без сохранения в базу.
>>1965394 >зачем по-твоему тогда нужны дто? Чтобы представить сущность из базы в определенном контексте. Это единственная цель дто, и поэтому оно естественно должно быть в курсе правил маппинга.
>>1965400 >new ZalupaDTO(zalupaEntity) Расскажи, какая аннотация в ломбоке существует для того, чтобы передавать в конструктор объект так, как ты показал.
>>1965414 >Ок, тогда каким образом ты организуешь логику маппинга внутри дто? А ты думаешь есть какая-то магическая аннотация, которая бизнес логику за тебя напишет?
>>1965420 Я не тот чел, который сам меняет сущность, а потом почему-то жалуется на маппер.
Меня заинтересовал вот этот >>1965367 шиз, который маппит вот так: >new ZalupaDTO(zalupaEntity)
А поскольку ты защищал его видение, что маппинг должен происходить в дто, то тебе я задал тот же вопрос, что и ему - как вы маппите и почему считаете, что это лучше стандартного всеми используемого мапстракта и его аналогов.
>>1965426 Я не использую мапстракт, потому что магия ебаная у меня нет таких сложных сущностей, для которых не хватило бы конструктора. И DTO вообще нужны обычно для того чтобы не таскать с собой мутабельные поля или не показывать лишние поля в rest ответах.
>>1965429 Алсо, это не магия, сгенерированный код всегда можно посмотреть и проверить, если возникают сомнения. Но вообще лучше бы ты рили сразу сказал, что у тебя просто нет опыта в этом вопросе.
>>1965431 >Алсо, это не магия, сгенерированный код всегда можно посмотреть и проверить, если возникают сомнения. Зачем, если можно то же самое написать руками? >>1965430 >крупных проектах Это где JSF и сущности на два десятка полей?
>>1965433 >Это где JSF и сущности на два десятка полей? Нет, это где любой крупный банк/прочая финансовая хуйня со спрингом и сущностями на два десятка полей.
>Зачем, если можно то же самое написать руками? Зачем, если можно писать в одну строчку красивый читаемый код?
>>1965434 >сущностями на два десятка полей Ну и зачем? >если можно писать в одну строчку красивый читаемый код? Как это противоречит тому, что я написал?
>>1965436 >Ну и зачем? Поработаешь в околофинасовой/банковской сфере с их процессами - узнаешь.
>Как это противоречит тому, что я написал? Набирать ручками конструкторы для маппинга - говнокод. Также передача дто логики маппинга противоречит сингл респонсибилити и говнокод еще и поэтому.
>>1965834 Питон тоже растет. И пхп, который все хоронят падает медленнее джавы. Что с джавой конкретно не так то? Хейтеры говорят про "устарела и умерла", без конкретики. Джависты говорят "все в порядке, пошел нахуй".
>>1965832 Да тут без подсказок скажу что код - хуета. Там иде то тебе не говорит в чем дело? Какого хуя у тебя после return ещё что-то выполняется? Где скобки у фора? У тебя тупо куча синтаксических ошибок
>>1965902 А вот тут не соглашусь кстати. В джаве конечно есть best practice. Но мне на работе в первый день выдали целый лист по инструкциям кодстайла и файл настроек претифаера для идеи. Например у нас в начале строк 4 пробела, а не таб. Или у нас запрещено if в одну строку писать. Даже если в ифе одно вырежение - нужно обязательно его в скобках писать. Ну и ещё куча мелочи всякой.
>>1965924 > Например у нас в начале строк 4 пробела, а не таб. Или у нас запрещено if в одну строку писать. Даже если в ифе одно вырежение - нужно обязательно его в скобках писать. Это всё общепринято.
>>1965924 У меня на одной работе if без скобок нельзя было, на нынешней можно. Самому мне больше нравится без скобок - 2021 год, какие нахуй скобки. Давно пока вообще на котлине писать. Ну и да, в в крупных компаниях обычно присылают свой файлик для настроек идеи.
>>1965930 Я думаю причина запрета ифа без скобок - чтобы было меньше проблем во время мерджа. Когда скобки уже стоят, и туда дописали два разработчика, это проще проверяется на ревью, чем если оба добавили скобки.
>>1965939 Скорее дело в том, что можно случайно написать две инструкции в ифе без фигурных скобок, когда под иф попадёт только одна. if (usloviye) ....statement1; ....statement2; И вроде бы хуйня, казалось бы, как тут вообще можно проебаться, но если часто копипастить или перемещать туда-сюда код, нет-нет да проебёшься и не заметишь, а автоформатирование не всегда сработает.
У меня на работе есть легаси код, который скоро будет отмечать совершеннолетие. Так там открывающая фигурная скобка с новой строки. Когда приходится в этих классах ковыряться - глаз дёргается.
>>1965965 А мне иногда попадается код, где сознательно нарушают конвенцию именования идентификаторов и смешивают camelCase со snake_case, например, в DTO с setHuita_neim() из-за некоторых всратых либ, которые не дают переопределить преобразование имён и просто делают первую букву после get/set строчной. Или в очень длинных названиях методов для тестов, потому что читается легче.
>>1965971 Это вообще запрещено строжайше. Можно только в новых файлах, которые ты сейчас написал. В старых - нельзя. Вот тут точно причина в ревью, как мне объяснили. Слишком много бесполезных изменений в файле + потенциальные конфликты на мердже. >>1965972 Да, у нас так в тестах иногда делают. Хз зачем. Мне и так нормально читать. Наоборот - снейк сбивает с толку.
>>1965906 кстати тогда runtimeException: Exception in thread "main" java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.String (java.lang.Integer and java.lang.String are in module java.base of loader 'bootstrap') at ru.zol.jpoint2019.Pair.main(Pair.java:18)
>>1966100 Это я в курсе. Просто говорю что видел такой кодстайл в старых файлах. >>1966109 Лол. Я предложил сделать это на первой же неделе работы. Меня на хер послали с этой инициативой. Так что работаем так. мыши ели кактус
как в спринге создать одноразовый бин? Например, я инжектю этот бин куда мне надо и каждый раз раз при обращении к этому бину создает новый бин, выполняется работа, по окончанию работы запускается кастомный destroy-method ? В общем, как сделать аналог бина со скоупом "request", но без http сессии?
Есть ли какая-то разница в создании объектов через: SomeClass myObject = new SomeClass("arg") и SomeClass myObject = SomeClass.class.constructor.newInstance("arg") ?
Читаю про Reflection Api и не очень понимаю, зачем нужен какой-то другой способ инициализации объекта? Ну кроме тех ситуаций, когда на момент рантайма название класса неизвестно, и мы сначала получаем тип SomeObject через SomeObject.class или myObject.getClass. А в иных случаях, зачем мне нужно использовать второй тип инициализации?
>>1966331 > Ну кроме тех ситуаций, когда на момент рантайма название класса неизвестно Именно для таких случаев и существует рефлексия, она как раз для создания всяких либ, где заранее неизвестно, какие именно типы будут юзаться, из-за чего нужно уметь работать со всеми. В пользовательском коде не нужно.
>>1966336 Скачал этот святой грааль, скомпилил в экзешник хеллоуворлд со свингом и попробовал запустить, получил пикрил. Со спринг бутом из их мануала mvn spring-boot:build-image написал "пук среньк не могу подключиться к докер-демону", хотя он запущен. У хипстерков всё такое? Это же нельзя допускать в прод нахуй. Не удивлюсь, если тестировали только на линуксе с самыми последними версиями всего.
>>1966358 В одно время пытался перейти не десятку, она не понравилась некоторыми своими аспектами (не телеметрия) + после одного из обновлений полностью отвалилась сеть. Начал понимать тех, кто 10 лет назад не хотел пересаживаться с XP. Через пару лет хочу опять попробовать.
>>1966360 Ну смотри, там вроде на семерку перестали выходить обновления безопасности за исключением Extended Security Updates program, если она у тебя есть Дестяка после последних апдейтов вполне неплохая, хоть я вообще на маке сижу, но в виртуалках когда есть нужна она вполне юзабельная для меня.
>>1966402 Очевидно на линухе. Статистика из моей компании: 70% линух, 10% мак, 20% винда. Это если мы про разрабов именно говорим. У куа где-то 50 на 50. Всякий административный персонал на винде.
>>1966406 >Статистика из моей компании: 70% линух, 10% мак, 20% винда разрабы это малолетние хацкеры? Не могу придумать причину, зачем мне мучить себя прыщами
>>1966409 Потому что ось это такой же инструмент. И внезапно в линухе инструменты для разработки удобнее. Можно много чего автоматизировать. >>1966414 > разрабы это малолетние хацкеры? Сразу видно, что ты не работаешь, а в игрушки играешь. Но тебя никто не заставляет же. Пиши на чем хочешь.
Идите докер поставьте и автоматизируйте на винде. Ну как пример. Ну а так конечно - бесполезный холивар. Не вижу смысла его тут разводить. Пользуйтесь чем вам удобно. Только потом не удивляйтесь что у коллег все работает быстрее и стабильнее, чем у вас.
>>1966421 Ну нет же. Ты не понял мою мысль. Все нормально с виндой все и не капец ей. И она очень много для чего удобна. Но есть кейсы, тем более в джаве, когда линух лучше. Зачем нужен докер - это вообще считаю тупой вопрос. Ну если ты конечно пишешь на джаве гуй, тогда не зачем. А если сервер - то нужен. Много для каких приложений в 2021 нужен докер. У меня лично другой кейс. Наше приложение требует 100500 разных сервисов. Разные базы данных, раббит, кафка, и прочее. Намного лучше и проще использовать композ, чем все эти сервисы настраивать руками. Тем более на винде.
>>1966426 >Разные базы данных, раббит, кафка, и прочее Придумали себе проблем и теперь героически их решаете. Почему нельзя их развернуть на стенде, а у себя указывать адрес стенда?
>>1966459 HWND WINAPI CreateWindow(LPCSTR lpClassName, LPCSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HANDLE hInstance, LPVOID lpParam);
>>1966435 Тогда наверное надо на каждого разраба по копии каждой хуйни настраивать на разных портах, потому что в базе данных можно схемы менять и дропать, наполнение бд менять, сообщениями сраными кафку забивать, нахуя тебе это все говно от других разработчиков?
>>1966435 У нас есть тестовое окружение и далеко не одно. Но тебе не понять зачем оно нужно на локалхосте. В общем, поработай в компании где хотя бы 100 сотрудников работают над одним сервисом(не продуктом даже), и где этих сервисов и зависимостей 20-30+. Потом поговорим. >>1966480 Вот этот в принципе все правильно написал.
>>1966435 Лол. Крутая позиция. Я не пользуюсь этой технологией, значит она не нужна. С такой позицией далеко пойдешь всю карьеру джуном в усть пердюньске XML обрабатывать
Так надо мне линукс ставить или нет? В каждом треде адепты линуха, 2/3 ютуб-учителей из под линуха. Я только спринг и хибер начал учить(еще нужно будет доучивать кое что по алгоритмам, бд, верстке, многопоточке). Линух ни разу в жизни не ставил. Стоит на него время тратить то во время вката или после устройства на первую галеру? И вообще на каком этапе мне все эти докеры будут нужны?
>>1966582 Ну поставь убунту, собственно кроме sudo apt update, sudo apt upgrade, cd, ls, rm, mkdir, touch тебе ничего не нужно знать из команд терминала. Если ноут, то может что-то не работать, но если не критично, то ставь спокойно. Разницы с виндой особо не увидишь. Все равно будешь тратить время только на браузер + ide.
>>1966582 Считаю что тратить на это время специально не стоит. Докеры и прочая хуета нужны ближе к концу обучения, и больше для расширения твоего кругозора. Правильно написали. Поставь в дабл бут. Поиграйся. Попробуй. Но вот прям специально себя пересаживать не стоит. >>1966426-кун
И еще один вопрос немного не в тему. Короче у меня пека 4/4 проц и 16 оперативка. Недостаток оперативки уже чувствую, когда 3 проекта с хеловордами в идее. Ну а проц пока не трогал больших даже по меркам туториалов проектов, но круды с хибером уже долговато билдятся. Так в пеку докупить оперативки до 32 или поставить 4/8 проц? Цена в итоге сопоставима, но оперативка будет из магаза, а с процом придется вляпываться в лохито.
>>1966618 Хеловорды на спрингбуте+хибер+постгрес. Штуки 3 по очереди запуская сервер, ибо по разным мануалам. Все в идее для удобства. Ну и браузеры с видосами с этими самыми мануалами.
>>1966653 Есть. Все неудобства несмертельны. Апгрейд пеки можно сказать блажь. Но вот не могу между оперативкой и процом выбрать. Раньше думал, что для игор будет лучше при следующем апгрейде. Но оказалось, что те что я поставил после переустановки шинды полгода назад я ни разу не играл.
>>1966596 Это идея последней версии почему-то ресурсы жрёт, у меня тоже все тормозит когда несколько проектов открыто и запускаешь мавен или ещё что-нибудь.
>>1966435 Нахуя всякие стенды если можно docker-compose up -d и оно все заработало локально пакеты нужных версий, можно полностью копию прода в контейнерах сделать, при этом не ебаться с конфигами. Потом делай с этим что хочешь и как хочешь, можешь у себя конфиги менять, хоть сортировку крестиком и вышивание пузырьком запускай когда Луна в Сатурне не мешая остальным. А если что-то поломал, то удалил все контейнеры и поднял снова.
>>1966596 Пиздец, мы как понять можем че тебе реально поможет? Ты в момент запуска всей своей ебалы открой диспетчер задач и посмотри что долбится в сотку: проц, оператива или диск. Оттуда сам поймешь что тебе нужно и что исправит твои проблемы.
>>1966946 Так я не знаю как джаваебские задачи будут ебать пеку через полгода, когда я от хеловордов чему то посерьезнее перейду. Там всякие еще виртуалки с линупсами и докерами начну крутить. 4/4 интола хватит? В игорах многих уже не хватает, но на них похуй уже.
>>1967046 Особенно топово, когда винда при очередном обновлении убивает граб, и ты получаешь на руки кирпич, над которым надо танцевать с бубном. Было так 2 раза, оба раза очень не вовремя.
>>1966984 А мы откуда знаем, какое говно ты захочешь написать через полгода? Вдруг тебе надо будет приложению кучу в 12 гигов выделить? Решай конкретные проблемы по мере их поступления.
>>1967172 Ну для веб разработки надо читать все что связано со спрингом, ресты, MVC. Если ты говоришь про фронт, то учи html, CSS, js на learn javascript почитай. Если этого будет мало - поковыряй vue. Этого хватит если идти на бэкенд.
>>1967268 Спасибо, может ты мне посоветуешь тогда. Да Spring и то что ты перечислил я буду изучать. Но проблема в том, что мне в целом интересна тема передачи данных, протоколы ну и так-же веб-разработка (последнее, просто чтобы знать), но я тут сильно проседаю по теории. Искал литературу, нашел - Тотенбаум : Компьютерные сети Ну читаю потихоньку Так вот, я все правильно делаю анон?
>>1967354 короче я хочу понять все эти сокеты, каналы, сервера, веб-приложения, протоколы и все что с этим связано, для начала на уровне теории. В инете нашел кучу говно статей, где за три абзаца хотят все и сразу объяснить, ну и книги Тотенбаума, но там мне кажется слишком уж много физики и математики или стоит прочитать, пригодится?
>>1967362 Как насчет поиска информации через практику? Напиши приложение, используя один протокол. Написал? Молодец! Возьми другой протокол, прочитай в чем его профит (зачем его сделали) перепиши приложение с использованием другого протокола. Сравни результат - получил тот профит, который тебе обещали?
Есть строка обозначающая тип вольера. Вольер может менять свой тип при удалении оттуда всех животных. Что хранить в переменной при отсутствии животных? Null? Строковую константу с инфой об этом? Что является лучшей практикой?
Прувет. Начал вкатываться в джаву не так давно, необходимо написать один проект для стажерства.
В ходе написания столкнулся с такой проблемой: Из сети приходит лист ключ-значение, и количество пар разное.
И под каждую пару мне необходимо добавлять поле в классе модели. Знакомый посоветовал посмотреть varargs Но я так понял, его можно применить только в методах, а мне хотелось бы в конструкторе.
>>1967502 Еще раз. Ты пытаешься решить проблему, которой у тебя нет. Есть список протоколов, есть их описание и предназначение. Всё это лучшим образом описано в спецификации, например, RFC. Хочешь понять как работает - лезь туда. Особо ушлые корпорации спецификацию нарушают, иногда даже намеренно.
>>1967630 Логика не совсем такая. Я вот ненавижу это пиздобоядский легасиговнохибернейт, но знать его приходится, т.к. кто-то его использует. И твой пикрил тоже используют.
>>1967641 Ну я подумал, что он реально не всегда очень нужен. А это бомбаж просто, как от жсеров. Теперь ясно. На проекте один хуй не джун-мидол будет решать пользовать ждбс или хибер, а техлид/архитектор/какой-то-другой-понтовый-хуй.
>>1967630 Ну так оно прикольно, да. А теперь составь таким образом, чтобы сджойнило ещё две таблицы, сгруппировало по полю из третьей, посчитало среднее значение в одной из колонок, не проебало перформанс из-за индексов, и выдало бы результат одной красивой сущностью.
>>1967676 Ну я в том плане, что оно красиво, но в итоге не функционально. Это к твоему вопросу, почему ругают хибер. >>1967680 >>1967690 Я обычно сразу ДБА в шлак пишу, если не могу осилить. Но то что я описал в принципе выполнимо без посторонней помощи. Но опять же, я это написал не к тому, как это делать, а к тому, что хибером ты не сможешь\заебешься это делать
>>1967938 Я думаю, что понос по плотности/проценту воды легко выделить. Думаю, точные можно нагуглить, но не хочется. Так вот как разграничить подмножество поноса энтерпрайза, в множестве говна бекенда?
>>1968171 Ну а тяжелый-тяжелый веб в общедоступном интернете с большими базами, сложной логикой, большой работой над производительностью и прочее и прочее это не интерпрайз? На чем такие штуки мутятся?
>>1968245 Я не понимаю что ты хочешь. enterprise и бэкенд это разные вещи вообще. Это разные понятия и я не могу понять как они у тебя связаны в голове. Бэкенд это область разработки. Бэкенд в общем понимании это код, который в первую очередь отвечает за логику, а не за представление. А enterprise это область бизнеса это может вообще никак не связано быть с разработкой ПО.
>>1968276 Ну а например десктоп приложение? Оно запускается на клиенте, но может передавать какие-то данные или хранить в базе, обрабатывать их. Это не бэкенд разве? Но в целом да, все правильно. Пост был больше про то, что сравнивать бэкенд и enterprise совсем не корректно.
Бекенд, кмк, это больше про вебо-проекты, где есть морда и серверная часть, а ынтырпрайз может вообще морды не иметь, например.
Например если это телеком или какая-нибудь система анализа данных или еще какая срань. Вот второе я обычно называю ынтырпрайзом, хотя и веб можно так обозвать, если масштабы говнокода солидные.
>>1967659 >А теперь составь таким образом, чтобы сджойнило ещё две таблицы, сгруппировало по полю из третьей, посчитало среднее значение в одной из колонок, не проебало перформанс из-за индексов, и выдало бы результат одной красивой сущностью. В чем проблема - простые квери делашь этим DSL, йоба запросы с джойнами и группировками - SQL-ем. А Спринг тебе еще их на интрерфейс сможет сам замапить.
>>1968462 Вопрос был: почему все хейтят гибер. Ответ: гибер пока\никогда не заменит натив. Даже если ты будешь запросы подкидывать ручками через тот же @Query это один фиг будет натив. Хейт скорее не к гиберу, а к вкатышам, которые видят как круто и удобно писать на HQL, JPQL, и из-за этого забивают на изучение SQL. А потом удивляются, почему над ними смеются на собеседовании. Тру стори
>>1968492 >Вопрос был: почему все хейтят гибер. >Ответ: гибер пока\никогда не заменит натив. Не было там такого вопроса, там вопрос был >Вот вам не нравится хибер. >А вот это типа редко используется и мне этот недо-dsl не пригодится? И ответ - такие вещи покрывают 99% юзкейсов в крудах.
Что касается изучения SQL это общая проблема: мало кто хочет учить основы. Как устроен хешмап еще выучили спасибо, что на всех собесах дрючат, но вот вопрос как быстро найти что-то на указанную дату или ближайшую перед если такой даты нет - уже ставит в тупик 90% кандидатов.
>>1967659 >составь таким образом, чтобы сджойнило ещё две таблицы, сгруппировало по полю из третьей, посчитало среднее значение в одной из колонок, не проебало перформанс из-за индексов, и выдало бы результат одной красивой сущностью из всего этого пока не знаю только как не проебать перформанс из-за индексов. я вкачусь?
>>1968735 Да. В общем и целом, я вкатывался вообще с основами. Даже хорошо что не спросили ничего про SQL. Но первые два месяца работы я процентов 30 рабочего времени изучал SQL чтобы я мог что-то делать вменяемое. Держи https://youtu.be/39e1vAGD3hg По индексам. Надо смотреть на 1.25 или 1.5. но очень годный и подробный гайд
У меня есть база данных заявок резервирования,в нее я вношу данные через свинг формочку и все было неплохо,пока не появилась надобность добавлять время. У меня есть два столбца в базе которые представляют собой время начала заявки и время окончания. Так вот,как мне вбивать время в поля типа Timestamp ? Когда мне нужно было вбивать только дату меня очень выручил jDateChooser,может есть какой-нибудь готовый drag and drop элемент для нетбинса? Или же просто подскажите как мне визуализировать ввод времени и как потом конкатенировать это значение к уже готовой строке даты. Заранее благодарен всем за ответы
>>1969065 Не шарю за свинг, но гугл говорит, что готового элемента для времени нет, и можно либо шлёпнуть три спиннера рядом, как на пике, либо искать сторонние васянские компоненты.
А можно замутить клиент-сервер, типа чатика, чисто на джавке на трех платформах: свинг-десктоп и андроид с передачей json-ками(это же рест называется?) и веб с шаблонизаторами без всяких js? Если я вот такой учебный проект захочу написать, какие проблемы меня могут ждать?
>веб без жс как ты без жс веб-то сделоешь, именно жс у тебя будет коммуницировать с сервером. можно кончно по релоаду странички загружать штмл с новыми сообщениями и в post форме отправлять новое, но это хуета пиздец лютая.
А свинг-десктоп ёбань кстати, ни биндингов нормальных ни реактивности, ну его нахуй и впезду. Хотя для учебного проекта - сойдет.
Андроид это отдельная экосистема, чтобы толково сделать нужно документации нормально так вздрочнуть. Ну или сделать через жопу. Вообще нахуя захватывать свинг/веб/андроид и делать это все хуево, если можно сузить стек и сделать более-менее приемлемо.
>>1969505 сохранил. Вопрос чисто теоретический. Легко ли сделать чтобы в зависимости от хедеров(типа на свинге - одно, на вебморде - другое) запроса с которого начинается сессия сервер отдавал или >по релоаду странички загружать штмл с новыми сообщениями и в post форме отправлять новое для веба без жс. Или джесонки для свинга. Юзер агент или еще какой хедер, я хз.
"Как выстрелить себе в ногу в Джаве" p.s. нафига они вообще сделали возможность объявлять абстрактными методы класса Object, можно ж такую дичь намутить
>>1969491 Если сделают работу ломбока за ломбок, будет круто. Потому что псевдо-инкапсуляцию с геттерами и сеттерами в рот ебал, как и прописывание ручками конструкторов для final переменных.
>>1969521 Зачем тебе свинг, товарищ?? Ни одного адекватного проекта на нём (кроме IntellijIdea) в данный момент не наблюдается. Сделай лучше десктоп на electron и это же приложение преврати в фронтенд-приложение 2х зайцев сразу убьёшь
>>1969534 Потому что по свингу я половину главы прочел в учебнике по кору. А жс я не трогал никогда вообще, код на нем для меня, как кракозябры. Рано или поздно я возьмусь конечно. Но хотелось бы для мотивации чисто быстро смочь это запилить. И ради этого же хотелось бы научиться деплоить в инторнет. Я думал просто фиксированный ип у провайдера купить, чтобы хоститься из дома и друзьям кидать ссылки на свои "проекты", но походу мой провайдер то ли не предоставляет такое, то ли там еботни по времени будет не меньше, чем научиться наиболее просто деплоить.
Раньше для твоей цели я бы предложил любой хостинг (hetzner например) и docker-compose, но щас наверное за такое заплюют и скажут что надо КУБЕРНЕТЕС для этого.
Хотя как по мне для пет-проекта к8с это оверкилл пиздец.
Хотя пили я такую штуку сейчас я бы поигрался с terraform и Hetzner/Heroku в качестве провайдера.
>>1969572 Вот я и спрашиваю. Где бесплатно/дешево. И способ деплоинга самый простой. Я ничего об этом пока не знаю(а там инфы до жопы). И внешний ип я хотел, потому что там ведь ничего не надо настраивать, насколько я понял. Потому что, когда я запускаю томкат в идее на винде на локалхосте я внутри своей локалки/вайфая могу подключиться по внутреннему ип+ порт. С внешним ип ведь так же будет работать или нет?
>>1969594 Я позвонил ростелекому и они сказали что около недели будут мне этот ип делать, если закажу. И я прочитал, что они неохотно это все делают и могут нахуевертить всякое. 180 рублей в месяц не так много. Но наверно хероку лучше, гугл по запросу его выдает и всякие мануалы. Там вроде триальные часы какие то.
- Дано множество картинок - Необходимо написать программу на Java, которая распознает, какие карты лежат на столе (только по центру картинки). Например, на этой картинке https://i.gyazo.com/65658f6ab114de07d5c08d5f81324dc7.png на столе лежат карты 4hQd7s - Тестирование программы будет осуществляться на аналогичных картинках, которых нет в исходном множестве - Допускаются ошибки в распознавании не более 3% от общего количества распознанных карт - Нельзя использовать готовые библиотеки для распознавания текста. Необходимо написать свой алгоритм распознавания карт - На распознавание одного файла не должно уходить более 1 секунды - Исходный код решения задачи не должен быть длиннее 500 строк с нормальным форматированием
- Программу нужно предоставить в виде, готовом к запуску на Windows десктопе. Файл run.bat параметром принимает путь до папки с картинками. В консоль распечатывается результат в виде "имя файла - карты" для всех файлов папки - Программу нужно предоставить с исходными файлами - В исходных файлах должен быть ВЕСЬ код, который был использован для решения задачи - Программу нужно предоставить в виде ссылки на ZIP-файл. Ссылки на на репозитории, например на github, не принимаются
Рекомендации:
- У автора этой задачи решение заняло 100 строк кода. У лучшего на данный момент кандидата - 160 строк. Ничего страшного, если ваше решение занимает 500 строк. Однако, если больше и это - не комментарии, то стоит задуматься
Для решения задачи рекомендуется использовать следующие функции, встроенные в Java:
- BufferedImage img = ImageIO.read(f); - зачитка картинки из файла - ImageIO.write(img, "png", f); - запись картинки в файл - img.getWidth(); img.getHeight(); - рамеры картинки - BufferedImage img1 = img.getSubimage(x, y, w, h); - взятие области в картинке - img.getRGB(x, y); - взятие цвета точки по координате - Color c = new Color(img.getRGB(x, y)); c.getRed(); c.getGreen(); c.getBlue(); c.equals(c1) - работа с цветом точки
Щас современные роутеры уже умеют работать с провайдерами всяких dyn dns сервисов (грубо говоря когда домен привязывается к твоему временному ip и обновляется раз в сутки)
>>1969605 А еще ты можешь поебаться с ngrok и получить внешний ip на свой комп бесплатно. Но хероку лучше. А потом можно и облачко арендовать, как со всем разберешься.
>>1969761 Не обязательно будет работать и без этого, просто инжекти по типу самого класса. Вообще, интерфейсы для сервисов - это спорная фича Интерфейсы хуярят из-за странного понимания SOLID и чтобы легче было писать моки в юнит-тестах.
А вы знали, что такой прикол есть в джаве, я вот каждый раз забываю. Если переменная не константа, то при её требовании в другом классе проходят все статические инициализаторы, а если она константа, то она появляется сразу, без прохода по другим инициализаторам. Но если ты запрашиваешь константу в psvm методе самого класса, то все статические инициализаторы проходят в любом случае! Тип переменных, естессно, неважен.
Вот вам и вопрос для собеса, 15ти летние тимлды 300к в наносек, мотайте на ус!
>>1969771 >чтобы легче было писать моки в юнит-тестах Только для этого и используется так-то. Вообще, самое удобное использование интерфейсов как контрактов получается с @FeignClient в микросервисах. В общей либе интерфейсом обозначается контракт со всеми @RequestMapping, путями и прочим. Сервис-пользователь наследует интерфейс фейна от контракта с настройкой в одну строчку. Сервис, предоставляющий функционал, наследует свой контроллер от контракта и имплементит методы. За счет этого получается железная связка между сервисами, и никаких проебов в путях или в том, что какой-то додик удалил рест, который используется в другом месте, больше не будет. Теку с этого пиздец.
>>1969761 >>1969771 >>1969850 Гуглите лекцию Борисова про интерфейсы. Очень годно рассказано. Моки и ресты конечно масхэв. Но расскажу ещё историю из практики. Я работаю на одним продуктом, который используют разные люди, в разных странах. И в зависимости от требований бизнеса в конкретных случаях, нужно менять поведение приложения. И это дорого стоит. Когда с помощью одной строки в конфиге можно полностью поменять логику работы того или иного сервиса, не меняя ничего в коде, и не меняя логику приложения целиком.
>>1969896 А в реальности класс только один, и в нйм: if (настройка_нейм_включена) { одна логика } else { другая логика } Настройка тоже переключается одной строчкой в конфиге.
>>1969836 Ты бы сам для начала в вопросе разобрался. Первые 2 пикчи это compile time constant и они инлайнятся во время компиляции. Если дизасемблировать код TestC то увидишь что константа тупо добавлена в класс и ни к какому полю класса C никто не обращается.
Пик 3 там вообще насрать на тип константы - для выполнения любого метода класса в том числе main он должен быть инициализирован. Более того на старых JDK можно запустить программу вообще без main(), просто пишешь код в static {} инициализаторе, а потом System.exit() и это работало.
>>1970056 >application.properties можно положить рядом с жарником Но он тогда просто отработает как String[] args, и в main() мы запускаем спринговый run(), который поймет что это и для чего. Я не тупой.
>>1970052 они там jvm дорабатывают или скучные бизнес-задачи делают? Кому этот сраный бизнес и сраные деньги нужны, конечно они предпочитают копаться в кишочках жабы
Подсоны, есть один сервис, собранный в виде варки, крутится на доисторическом томкате и является клиентом другого сервиса. DAO и урл до него указаны в wsdl-файле, который находится в структуре варки (то есть, видно, что он в папке ./classes/wsdl, если открыть развернутое приложение в файловой системе)
Возникают два вопроса: - а хорошо ли так делать, не хардкод ли это конфига? и второй из него вытекающий - если надо поменять урл, куда этот сервис как клиент обращается - это что же, пересобирать что ли эту херобору и редеплоить?
>>1970240 То есть, это перегрузка конструкторов? И типа тот, у которого в сигнатуре меньше аргументов, просто использует некие дефолты и вызывает в своем теле конструктор с более подробной сигнатурой, если можно так выразиться.
>>1970473 Да, все так >>1970451 Лол тут же пол труда о том что хибер не нужен, а все норм пацаны грэдлом собирают. >>1970470 То что конфиг в варке или джаре запечатан и нужен редеплой, это нормально. То что там урлы, которые могут изменится, не совсем нормально. Но зависит от контекста. Если этот урл меняется раз в год, то можно и в конфиге оставить. Но вообще такие настройки, которые могут часто меняется можно хранить в базе. Мы так и делаем. Тогда можно что-то поменять без редеплоя
>>1970537>>1970500 >Лол тут же пол труда о том что хибер не нужен, а все норм пацаны грэдлом собирают Если делать всё как говорят на имиджбордах, то все программисты бы писали на С, в Vim, на эзотерическом дистрибутиве типа Void, используя исключительно suckless-ПО в работе. Лучше бы посоветовали книгу, чесслово. Документация на сайтах не располагает к систематическому обучению. Но я уже и без вас нашёл. Зачем вообще спрашивать что-либо на имиджбордах, если ответ не отвечается оригинальностью и информативностью от примитивнейшего чатбота?
>>1970601 хибер ин экшон. Но там как то с одной стороны подробно и много нет. Если бы я ее не бросил на первых 50 страницах я бы на нее одну пару месяцев убил.
>>1966331 Ну например ты знаешь название класса, динамически у тебя пришла строка с его названием. Делаешь Class c = Class.forName("com.package.MyClass"); и у c. потом через class вызываешь конструктор и инициализируешь объект.
>>1970605 В java persistance api и hibernate есть пара глав, которые тупо надо перечитывать (перелистывать) перед каждым важным собесом о гибере, ну и все. А так бесполезно, все на практике узнается.
не помню правда есть ли там что-то по хибе. Но один хуй сперва надо задрочить стандарт а потом уже детали реализации (хоть и фактически единственной используемой, лул)
>>1970899 Двачую. Больше 40 лет прошло, менялись ОС, парадигмы, подходы, языки, но ничего, что могло бы убить реляционные СУБД и в частности SQL, так и не появилось. Разве что убогие NoSQL, применимые очень ограниченно.
>>1970978 Иногда вижу в коде Properties, Hashtable и коллекции без дженериков. Хуй знает, откуда это берётся, код относительно свежий, если верить git blame, не больше 7 лет.
Есть где то, где почитать про все элементы архитектуры бекенда? Все эти репозитории, контроллеры,модели, сущности, дао, домены, сервисы и прочее. Что из этого синонимы, что с чем связано, почему разделено именно так. А то я смотрю-читаю 3-4 туториала параллельно и везде их применяют немного по-разному и объясняют совсем вскользь.
>>1971126 Читай про MVC. Принципы не жёсткие, поэтому и отличаются. Кратко: контроллеры не содержат бизнес-логику и тупо вызывают сервисы, в сервисах бизнес-логика, они вызывают другие сервисы и dao/репозитории, в них уже работа с БД и больше ничего. Сущности и домены (domain objects) - это считай одно и то же, но в основном их называют именно сущностями. Репозиторий отличается от дао тем, что оперирует не напрямую строчками таблицы, а именно понятием сущности и , как правило, использует ORM типа хибернейта. Моделью называют совокупность сущностей/dao/репозиториев/сервисов, то есть всю логику приложения, чтобы отличать это от контроллеров и вью, но это больше про теорию MVC, на практике этот термин звучит редко, обычно используют конкретные понятия "сущность", "сервис" и прочее.
Гамарджоба аноны, подскажите, а есть ли трансляторы с Java на различные архитектуры ассемблеров, также подскажите похожую библиотеку типа Ncurses для жавы и сайтец с хитрожопыми задачками для неё же.
>>1971189 > есть ли трансляторы с Java на различные архитектуры ассемблеров > также подскажите похожую библиотеку типа Ncurses для жавы Если у тебя возникают такие вопросы, тебе не нужна жаба, бери плюсы. Есть GraalVM, но она придумана не для замены компилируемых языков.
>>1971145 А в чем преимущество вот этого сервиса? Видел туториалы и без него. Все эти методы определены вообще в спринге. Зачем выделять класс прослойки, если можно заинжектить репозитори в контроллере и вызывать его методы? Разве что, когда будет большое приложение и в одном методе сервиса нужно будет комбинировать запросы. Или если репозитории будут разные(типа есть имплементация и через жпа и через темплейт под разные задачи). Я не угадал?
>>1971236 Да, это для больших приложух, где методы в сервисах не однострочные. Но думать об этом надо заранее, чтобы меньше потом переписывать. >>1971149 Забей на подробности, уже этого хватит на всю жизнь.
>>1971246 Вот еще тупой и типа неважный вопрос. Если говорить о вот всех паттернах проектирования/архитектурных, то они обычно всегда подразумевают какие-либо оболочки на объектами/конструкторами/етк. Это вообще насколько влияет на производительность - создание оболочки? Например я спрашивал месяц назад про использование динамического прокси для ди. И там очень значительная разница получилась для создания объектов - в 5-10 раз. Но типа это неважно, так как используется только на старте. А у обычных всяких паттерновских оболочек без рефлексии эти оболочки отнимают статистически важную часть перфоманса? Лишний вызов промежуточного метода и лишний объект это что такое по памяти/времени?
>>1971250 Это действительно не так важно, если использовать жабу по назначению (бекенд). Практически все проблемы производительности здесь упираются в ввод-вывод, и что с использованием паттернов, что без них - всё работать будет практически с одинаковой скоростью. Можешь замерить, если интересно, но по сравнению даже с одним sql-запросом издержки на лишние объекты практически нулевые.
>>1971306 where id = <id> недорогой при условии индексирования поля. В остальных случаях нужно строить всякие планы запросов и перелопачивать кучу данных
>>1971331 Удваиваю, тоже хочу как в паскале. Также надо сделать джаву регистронезависимой, = надо заменить на :=, а объявление переменных отделить от использования.
>>1971314 Класть всю БД в in-memory не факт что поможет ускорить твои запросы. Если БД небольшая (100 гигов) и схема БД составлена грамотно, то вполне может хватить хорошего дискового массива. Для больших БД (терабайт и более) тебе просто памяти не хватит. Надо помнить, что на каждый новый запрос СУБД будет стоить план запроса, а это допонительное время ожидания ЦП.
Мы на собесах специально спрашивали про отношение кандидата к ломбоку. Если он положительно о нём отзывался и не мог внятно аргументировать его необходимость (бойлерплейт не аргумент), то шёл искать работу в др. месте. Нам с такими не по пути.
>>1971462 Бойлерплейт это аргумент. Он для этого и сделан, лол. Это все равно что спросить для чего нужен гибер, а потом сказать что "для упрощения работы с сущностями" не аргумент. Короче молодцы. Я бы сам не пошел в такую контору, которая делает выводы о соискателе только на основании его отношения к ломбоку.
>>1971490 > Я бы сам не пошел в такую контору Двачую. Я бы в целом не стал работать там, где заставляют выполнять лишнюю работу. Например, самому писать геттеры-сеттеры или конструкторы.
Посоны, я няшная тян, 10 из 10. Пруфов не будет. Ну так вот... есть один проэкт.. суть такова javafx приложение нужно выделить отдельный поток под сокет соединение -> потом передать эти данные в контроллер...насколько я могу судить, и оттуда уже выводить данные на ui как это реализовать? может есть какой-то подходящий шаблон и вообще что надо знать о потокобезопасности в javafx, я не совсем понимаю как поток ui работает в javafx...
>>1971909 Лол. У меня недавно одного знакомого на собес приглашали. Компания пилит десктоп на фх. Знакомый конечно же не прошел, потому что не учил фх. Я понимаю, что таких вакансий 1,5 штуки. Но все же бывает.
Где-то читал, что класс наследник наследует абсолютно все поля от родительского класса, даже, если они private, просто наследник не может их использовать из-за ограничений видимости. Но почему же тогда в этом коде я не могу через рефлексию подтвердить, что в B есть поле a?
>>1970026 спс, да, я знал про constant pool, но как-то забылось, что можно просто обратиться по ссылке к константе даже без статической инициализации всего класса
>>1972186 А что декомпилировать собрались? Серверную приложуху, к которой всё равно нет доступа? Или говнецо от тех, кто не понимает, что жаба - это не C++?
да похер на вакансии, пилите свой софт. докажите всем этим офисным петухам, кто настоящий батя немного грустно во что превратилась индустрия, не для того я вкатывался, чтобы обслуживать каких-то пидоров с их узколобостью и недальновидностью. может у меня просто патологическая неспособность "работать в коллективе" или как это у вас там называется... софт скиллы) можно предложить скооперироваться с аноном для создания\развития проджектов, но с таким срачем, вряд ли что-то получится. может поэтому нас и поимели эти менеджеры всех мастей, бюрократы и финансисты
>>1972131 Ну вот. Иди на епам. Там получишь опыт, похуй что легаси. Потом начнут брать. Сколько времени ищешь уже? Если меньше трёх месяцев - то не срок для джуна
>>1972192 > не для того я вкатывался, чтобы обслуживать каких-то пидоров с их узколобостью и недальновидностью Так и не обслуживай, в чем твоя проблема? Иди и пили свой софт.
Диванная маня хуева блядь. Кто пробовал подобный движ, тот понимает что это нихуя не просто и риск проебать время впустую (бесценный опыт, конечно же, хуле) - очень высок.
>>1972983 > а еще тебе гарантированно выебут мозги и скажут что твое место у параши За это хотя бы заплатят, а самому что-то делать - это всё в довесок к долгам будет.
>>1972995 наверное каждому своё и здесь нет какого-то универсального рецепта. да свой биз предполагает финансовые риски, но и реворд соответствующий да и нельзя в чем-то упрекать тех кто живет от зарплаты до зарплаты, конечно это 999 итераций ада, из которых не выбраться, но как приятно помечтать о подобном...хех
Срочно нид хелп с пасалем. Сам фротендер подзалупный, другу срочно нужно 1 задание с табулированием фукции и средним арефмитическим. Его уже разок ебанули за копипаст, второй раз не прокатит скатать. Есть уже рабочий правильно код, его нужно переписать чтобы препод не доебался БРАТЬЯ СЛОВЯНЕ ПОМОГИТЕ
Джаваны, помогите пожалуйста решить задачку на JAX RS, конкретно на Resteasy. Есть два ресурса с class-level маппингами: 1) @Path("/storage") 2) @Path("/storage/entity1") Нужно добавить метод с адресом "storage/entity1/action", но так, чтобы он оказался в первом ресурсе. Как можно этого добиться, если второй класс перехватывает у первого все запросы, начинающиеся с "/storage/entity1"?
На работе ты получаешь деньги + опыт, в стартапе за свой счет ты получаешь опыт + переработки + стресс (на кону твои деньги, тебе надо решать кучу вопросов, тебе же надо искать команду и быть за нее ответственным), и все это ради маленького (реальне маленького) шанса что что-то взлетит.
По твоему отношению видно только что ты зеленое хуйло, ничего не пробовавшее и готовое лишь на вскукарек.
>>1973950 Мне вообще кажется, что перед открытием своего дела нужно иметь опыт работы в крупном банке, в чужом крупном стартапе и на галере. Желательно тимлидом в 2 из 3. Тогда у собственного стартапа будет хотя бы шанс.
>>1973921 >это типа через if then else запрос написать? Вот у тебя идут даты 2021-03-04 2021-03-05 2021-03-08 2021-03-09 И тебе приходит запрос на 2021-03-07 - такой даты нет, надо взять ближайшую перед -2021-03-05. Конечно можно тупым переборм если даты нет, уменьшаем на день и пробуем, если нет еще раз уменьшаем и т.д. Но есть структуры данных которые позволяют такие вещи проще реализовывать.
>>1974083 Я про Яву говорил >Как устроен хешмап еще выучили спасибо, что на всех собесах дрючат, но вот вопрос как быстро найти что-то на указанную дату или ближайшую перед если такой даты нет - уже ставит в тупик 90% кандидатов. А на SQL >>1974091 limit и order by.
>>1974140 ОК, сформулирую почетче: - у тебя есть курсы валют от ЦБ на определенную дату - ЦБ публикует курсы только на рабочие дни - тебе нужно обрабатывать последние 2 года все влазит в память - нужно реализовать метод который по указанной дате вернет курс на эту дату или на предыдущую если это выходной - курсы есть в базе и загружаются в память при старте и потом не меняются
И надо предложить структуру данных куда ты их положишь и код на бумажке как будешь читать, ну и алгоритмичаская сложность, куда же без неё. Если будешь использовать что-то не из состава JDK, то надо объяснить что за структура и как работает.
>>1970646 В таком случае можно ли утверждать, что Spring позволяет делать примерно тоже самое, без прямого использования ReflectionAPI? Мимо другой анон, который еще только учится не бейте сильно
>>1974175 Тебе все правильно написали. Если данные в базе - делаешь ордер и лимит. Либо можно через джойны, но это сложнее будет. Если в памяти уже - значит тоже сортируй, либо юзай апач. Сложность сам рассчитай. А если говорить о реальной жизни. У меня на работе есть Currency Loader. Который грузит овер 50 валют разных стран, с сайтов их ЦБ. Любой из этих сайтов имеет возможность получить данные за день, а не за два года. И да, в таком случае мы запрашиваем в цикле за день-n(максимальное количество выходных) пока не придут валидные данные. Не жалуемся.
>>1974617 Читай что такое di, IOC. Да, оба этих паттерна в основном реализуются через рефлексию. И спринг использует ее же в своем подходе. Разница только в том, что ты не пишешь это сам, а уже написано все за тебя.
>>1974621 Это задача с собеса, а не тикет в спринте. Есть условие и ограничения, берешь и решаешь. Не надо придумывать базы и прочий апач. inb4: не хочешь не решай, я не настаиваю.
Там вообще речь шла про знание базовых структур данных и за все время пережовывания лишь один чел упомянул TreeMap.
>>1974649 >Это задача с собеса На адекватных собесах как раз слушают, как ты рассуждаешь про базы и апач. Когда васяны пытаются в своих шаражках проводить интервью а-ля гугл - выглядит смешно.
>>1974659 Это как раз тест на адекватность: спросил по алгоритмам - тебе ответили по алгоритмам, спросил про фреймворк - ответили про фреймворк. А когда спросил простейшую задачку, а тебе начали рассказывать про то что тут у нас будет хадуп из семи залуп, а тут кафка в докере, а докере в куберетисе, а кубернетис в клауде. То значит перед тобой полный неадекват и пора заканчивать.
>>1974649 Ну так и говори: нужно написать адгоритм поиска. Все. Начинаешь зачесывать про бинарные, красно-черные деревья, структуры данных. Если бы у меня на собесе спросили бы как ты, в контексте решения конкретной проблемы с валютами, я бы привел пример, как я такое уже решал. С базами, апачем, и вот этим всем. В общем научись спрашивать нормально сначала.
Помогите, я не вьезжаю нихуя. Делаю по Spring In Action 5 (кто-нибудь имел дело с этой серией книг? Очень много ошибок в коде и код в целом вперемешку), заканчиваю главу где надо сделать свои schema.sql и собственно базу данных поднять.
Клонировал с их гитхаба проектыч потыкать кнопочки и разобраться что куда, все работает, ошибок нет. НО сама БД-то не подключена! Куда сохраняется говно, которое я ввел в формочки? Куда оно вообще сохранялось с неподключенной БД и почему ничего не упало? В логах пусто.
Знаешь, /pr, по-моему, я схожу с ума... Дело в том, что иногда по ночам мне кажется, что я яваблядь. Мне хочется выделять память, зарабатывать на доширак, пиздеть про энтерпрайз, сваливать свои проблемы на чужие плечи и писать нечитаемый бессмысленный говнокод. Я ворочаюсь, страдаю, рычу, а под конец вскакиваю с кровати и хватаю первое, что попалось под руку. Это может быть тапок, топор или простая поварешка, но в моем воображении она становится огромным прожорливым интерпретатором. С этим интерпретатором я открываю корпус сервера, ставлю ещё две планки оперативной памяти и с громким боевым кличем выбегаю на улицу. Я бегаю под окнами своих соседей и ору: "Ява не тормозит, тупые нищебляди!! Купите нормальное железо!!" Но они не покупают... Они привыкли. И когда я уставший, но довольный, поднимаюсь в квартиру, наоравшись и набегавшись, одна из дверей открывается. Там, лукаво сверкая глазенками, стоит маленький соседский мальчик Женька. Он громко шепчет беззыбым ртом "Клоссплатфолменность!" и ободряюще мигает мне одним глазом. Я, улыбаясь ему, прохожу мимо, и в душе моей поют заказчики. А дома я открываю бутылку водки, морщась, выпиваю ее до половины, и ловлю кота. Ругая этого "сраного волосатого индуса", я сажаю его за клавиатуру, и чтобы он не убежал, приматываю его к ней скотчем. А дальше все просто. Я стою у окна, пуская скупую быдлокодерскую слезу по своей прыщавой щеке , и мечтаю. Я представляю, что огни домов -- это пламя костров, на которых сжигают жс-пидоров, шум машин -- это рев кулеров в серверных, а в мире нет ничего, кроме великого энтерпрайза и нас, яваблядей... И я жду, что вдруг, вот сейчас, в мою дверь войдет начальник и скажет: "Эй, раб, ты чо так так долго? Давай, быстро дописывай исходник. Похуй, если будет тормозить - разберутся те, кто будет сопровождать! ГА-га-га-га!" И ободряюще хлопнет меня по спине. И тогда не будет в мире счастливее человека, чем я... Точнее, явабляди. Что же мне делать, анон? Что же мне делать?
>>1974763 >>НО сама БД-то не подключена! Куда сохраняется говно, которое я ввел в формочки? У тебя подключена Н2, значит все хранится в оперативке. Пропиши в апликашн проперти строки ниже, если хочешь в файл сохранять. Ну и в саму бд можно зайти при запущенном приложении по адресу localhost:8080/h2-console
spring.datasource.url=jdbc:h2:file:C:/java/h2_files/ads_db путь к файлу бд spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password= spring.h2.console.enabled=true spring.h2.console.path=/h2-console
>>1974837 >>а где взять файл бд? сам создается при запуске >>Это мне надо h2 устанавливать, чтобы он на диск мог сохранять? ты уже подтянул зависимость в pom.xml, ничего больше ставить не надо
>>1974877 Н2 может работать чисто в памяти - режим по умолчанию, а может как очень примитивная реляционная бд с файлом. Сохраняет данные при записи, если приложуха упадет данные сохранятся, как читает хз, возможно из файла, а может из кеша. Но я не думаю что тебе захочется использовать ее для чего то кроме тестов и небольших приложений, где производительность не важна.
>>1974617 не знаю, можно ли у спринга динамически создавать классы-бины по называнию вообще с нуля, без описания сначала этого бина в контексте Тоесть ты из контекста можешь взять бин по названию, но этот бин сначала вроде бы должен быть описан в конфиге. Поправьте если я не прав. А способ, который я указал он без создания бинов работает, просто новый инстанс создаешь того класса, название которого приходит.
>>1975200 Что значит описать? Берёшь контекст, вызываешь у него специальный метод, первым аргументом указываешь название бина, вторым - произвольный объект, и всё, объект стал обычным бином.
>>1975210 а понятно. Тоесть без описания этого бина в конфигурации обычный объект станет бином, и будет жить в контексте? А как делать инъекции тогда? когда я описываю бин, там же инжекты тоже прописываются
>>1975224 > Тоесть без описания этого бина в конфигурации обычный объект станет бином, и будет жить в контексте? Да. > А как делать инъекции тогда? когда я описываю бин, там же инжекты тоже прописываются Тут уже хз, не углублялся. Там, вроде, есть способ указать класс вместо объекта, и тогда спринг сам создаст экземпляр и заинжектит в него зависимости, как это делал бы во время запуска.
>>1975266 >Но я не думаю что тебе захочется использовать ее для чего то кроме тестов и небольших приложений, где производительность не важна. Я написал про тестконтейнеры к вот этому, безотносительно количества знаний. И понимания докера для тестконтейнеров действительно не требуется.
>>1975415 >Я для тестов базу данных создал На своем пет проекте делай как хочешь, хоть вообще тесты не пиши. Мне в работе нравится использовать тестконтейнеры. Алсо, миграции - тоже код, который должен автоматически тестироваться.
>>1975435 Я как-то пробовал такое. Но правильно написали. Для пет проекта хрень получается. Плюс, если это все же кто-то будет смотреть, придется объяснять почему ты так сделал. Придется пояснять за отказоустойчивость и прочие ништяки. Оно тебе надо? >>1975449 Да. Кстати звучит так же смешно как и фриланс на жабе.
>>1975446 >>1975459 Я делаю проект по примеру существующих веб сервисов (shopify, cs-cart), смотрю что там есть и пытаюсь повторить, таблиц 60+. Или этого все равно мало?
>>1975449 Ну ты понял что я имею в виду. Немного-энтерпрайз-проект, в который ты вкладываешь все свои знания и на который может взглянуть hr одним глазком.
>>1975539 Жаль нельзя отредачить сообщение, я хотел сказать, что эти две книги надо вместе использовать, 4 для общей инфы, 5 для прорешивания части проекта.
А нет в джаве какой-то упрощённой версии цикла, когда я хочу чтобы код выполнился N раз, типа просто do (N) { } не используя всякие инкрименты и выражения
https://habr.com/ru/post/538280/ Можешь сделать сам, но в офиц. либе пока что range нет. Получится выражение вида for (int i : range(0, 10)) Но в целом оно тебе нахуй не нужно.
>>1976247 Как по мне лучше пикрелейткед сделать - проще будет обосновать зачем там спринг и прочее говно. Тут тебе и сжатие с шифрованием и распределенные бд с кешами в тему. Можно хоть до интерпрайз уровня накручивать функционал. А вот туду на спринге это уровень корпоративного физбаза. да и звучит понтовее, если скажешь сказать что у тебя йоба приложение типа гуглдокса, чем туду как у начинающего жаваскриптера
Туду лист тоже может в эту хуйню уйти - можно и распределенные бд заебошить и сжатие с шифрованием, почему нет то. Туду лист тем и пиздат что расширять его можно до бесконечности. прям как жопу собеседуемого
>>1976287 А чо кстати. Прикольная задачка, и вроде ничего сложного. На выходных даже наверное займусь для тренировки. А то я в свое время делал похожую задачку с сертификатами. Наебался, и в итоге просто закрыл томкат нгинксом и уже туда сертификат впиливал.
В юзер сервисе есть поиск юзеров, в том числе и по заказанным ими товарам (по полям товаров). Это повод хранить в юзер сервисе репликацию таблицы товаров из сервиса товаров?
>>1976655 Скорее всего это писали, подразумевая под фрилансом всякие фл.ру, где только вёрстка, ворпресс/битрикс/джумла на пхп, 1с, парсинг сайтов и лабы на C++.
>>1976655 Потому что нет фриланса на джаве. Либо 0.0001% от всего фриланса. Сам кстати брал заказы на фл.ру. За три месяца целый один заказ удалось урвать, за целую тысячу рублей. По поводу апворка. Так ты зарегайся и глянь что там предлагают. Типичный фриланс на апворке для джависта: Требуется джавист с опытом работы 100500 лет, на крупный проект, контракт на 10 лет. Даже с натяжкой это фрилансом не назовешь.
>>1976735 Фриланс - это почти всегда одноразовая халтурка: взял небольшой заказ, выполнил, сдал, забыл. Проекты для всяких мелких ИП/ООО наподобие сайта-визитки, макроса для экселя или одноразовой обработки каких-то данных. Здесь нет смысла брать постоянного разраба в свой штат, задач для него очень мало, и проще разово кого-то найти на стороне. Подобные проекты почти никогда на жабе не пишут, она для более масштабных вещей, где куча разрабов сидит и годами пилит огромный проект, но в таких случаях свой штат уже есть, и искать кого-то на стороне нет необходимости. Контракты на закрытость кода могут проявляться как следствие ценности таких больших проектов в сравнении с однотипными визитками, которые пишутся за пару дней.
>>1976735 Ну вот этот >>1976741 в общем то правильно написал. Если фриланс и есть, то это либо лаба горит, либо какое-то конкретное редкое решение. Ну вот сам подумай, что бы ты мог заказать сделать на джаве, чтобы сделали за пару дней, не нужна была бы поддержка(или минимальная), и с чем не справится/будет хуже другой язык? Жаба это про хайлоад и крупную тырпрайз систему. Есть конечно биоинформатика, но там нас питон жёстко потеснил. Ну или например заказчику прям очень надо мультиплатформенное приложение. Шоб и на линухе и на винде работало. Много таких? А сколько разработчиков согласных такое писать? Что остаётся? Сайтики писать? Визитку и без бэка сделать можно. Чуть сложнее - пыха есть. Лично у меня есть такой проект, который я веду. Чел заказал сайт. Минимум логики. Задача явно для пыхи. Но я как раз тогда в джаву вкатывался, и сделал на джаве. Моему заказчику было похуй на чем оно. Но многим не похуй. Джаву сложнее и дороже хостить чем пыху.
И чего, вы все прям в офис ходите на смену? Каждый день лицезреть бесячие лица сотрудников, сидеть под надзором, ни тебе яйца почесать ни порнушку поскролить в перерывах. А где мои обещанные 300к\сек не выходя из комнаты? Это в какой язык надо вкатываться, только веб фронт энд не предлагать.
>>1976755 Кто-то на удалёнке работает, а так да, ебучий офис. Вкатываться в кобол, работу искать охуеешь, но зато там будешь очень востребованным и высокооплачиваемым.
>>1976755 Сижу на удаленке. Чешу яйца пол дня. Кстати в офис тоже ходил, ничего плохого. Айти офисы это вам не какая-нибудь юридическая компания. У нас и плойка есть, и хавки разной вагон. Зал, теннис, настольные игры, массажное кресло. Так что я бы с удовольствием пошел бы туда, но пока ковидло. Хуй знает что учить, чтобы бэк и на удаленке. Мож питон тот же? Плюсы?
>>1976892 У меня тоже кстати есть такие микросервисы. Но это нормально. Тут скорее имелось в виду, что нет смысла пилить микросервисы, когда у тебя ВЕСЬ проект это 5 табличек и два контроллера. Явно у вас в банке весь проект - это не один десяток таблиц. И там микросервисы можно хоть как-то оправдать
Анончик, на тебя последняя надежда, можешь помочь? Нужно настряпать говно-проект для универа, чтобы хоть как-то работал и что-то делал, а я очень туп. ООП, Java, тема "система управления интернет-банком". Можешь подсказать, как примерно бы ты реализовал? С меня как всегда.
>>1976944 И правильно делаешь. Вроде как на jug был доклад по этому поводу. Лучше стартануть с монолита, заложиться в архитектуру, что будут микросервисы, и когда взлетит уже распиливать
>>1976970 >>что конкретно почитать >>1976626 То что ты знаешь плюсы, не значит что ты знаешь жаву, ты просто быстрее въедешь в некоторые темы, но отличий там полно даже в базовых вещах. Ну и джава кор - это только начало пути.
>>1976482 Ничего сложного - это пока это тестовая задача или у тебя один сервис. А вот когда у тебя кластеры разных сервисов и во всех надо следить за сроками сертификатов и обновлять их своевременно. Да ну нахуй!
>>1977062 — Почему, мистер Джавист, почему? Во имя чего? Что вы делаете? Зачем, зачем встаете? Зачем продолжаете драться? Неужели вы верите в какую-то миссию, или вам просто страшно погибать? Так в чем же миссия, может быть, вы откроете? Это свобода, правда, может быть, мир, или вы боретесь за любовь? Иллюзии, мистер Джавист, причуды восприятия. Хрупкие попытки вкатиться от слабого человека, который отчаянно пытается оправдать свое существование — бесцельное и бессмысленное! Но они, мистер Джавист, как и ФААНГ, столь же искусственны. Только человек может выдумать скучное и безжизненное понятие — «ТОП-5 айти фирм»! Вам пора это увидеть, мистер Джавист, увидеть и понять! Вы не можете победить, продолжать борьбу бессмысленно. Почему, мистер Джавист, почему вы упорствуете?
>>1977139 В Гугле на Яве и Го прикладные сервисы, ну и С++ для системного ПО. В Фейсбуке ПоХаПэ jон там правда йоба компилируется в натив, С++ и Питон. В Амазоне в основном Ява для прикладных сервисов, в клауде зоопарк.
Но вообще они на твой язык не смотрят, подразумевается что ты готов учиться их стеку и языкам.
>>1977202 Джуном можно начинать и до этого. Чем больше пройдешь собесов, тем проще будешь к ним относиться и легче проходить. Лучшая подготовка к собеседованию - другое собеседование.
>>1977330 Просто в моей мухосрани достаточно мало вакансий на джава-стек. А с голой жопой в дс ехать не охота. Я просто раньше вообще на работу не особо нацелен был, а чисто борщи хлебал. Вот сейчас думаю надо начинать планировать момент, когда будет пора начинать искать работу/стажировку.
Ребят, есть у кого примеры проектов с хорошей валидацией на спринге для реквест параметров? java\kotlin А то чёт писать Max Min Size и т.п аннотахи дофига. Потом ещё всё равно перемапливать в свою эррор модельку. Мб есть какие "красивые" решения? С меня как обычно.
Также нельзя использовать конструкции типа super.super, из класса наследника можно получить доступ только к родителю с помощью qualifier super, к родителей родителей нельзя.
Java НЕ поддерживает: multiple inheritance of state (возможность наследовать поля от нескольких классов) Multiple inheritance of implementation (возможность наследовать методы от нескольких классов) Java поддерживает: multiple inheritance of type (то есть возможность наследовать от нескольких интерфейсов и проходить проверку на "is a" связь типа если C extends B, а B implements A, то C это и B и A) https://docs.oracle.com/javase/tutorial/java/IandI/multipleinheritance.html
Статический метод интерфейса нельзя вызвать с помощью класса его имплементировавшего, только напрямую с использованием имени интерфейса. А вот с обычным классом так можно
>>1977885 Сколько я бы не читал про тонкости реализации всякой хрени в языке : в реализации ооп/модели памяти, такая хрень из головы выветривается моментально.
Компилятор не применяет к приведению интерфейсов те же правила, что у приведению классов В случае с приведением к интерфейсу код компилится, потому что приводимый тип может быть классом, который наследует от класса Checker и при этом имплементит интерфейс AA Ну а в случае с приведением к классу A всё изначально и так ясно, Checker не наследует A и соответственно код не компилится
>>1977898 Не сказал бы, что это общеизвестные факты. Не каждый рандомный сеньёр-помидор помнит такие тонкости, люди чаще задрачивают чисто практические методы, необходимые в работе
>>1977916 Повторять теорию без конкретной цели - очередной вид мазохизма. А находить какие то реальные кейсы использования таких тонкостей реализации это посложнее будет, чем таким вот буквоедством заниматься.
Ребята,а я могу как-нибудь сделать чтобы у класса не было возможности устанавливть значение собственных полей? Вот например у меня есть класс Сотрудник с полем "зарплата",как я могу сделать так чтобы сэттер зарплаты был доступен только через объект класса Менеджер ?
>>1977884 >>Java НЕ поддерживает: >>Multiple inheritance of implementation (возможность наследовать методы от нескольких классов) наследуйся от нескольких интерефейсов с дефолтными методами
>>1978245 Можно конечно передавать в геттер параметр и в геттере сделать сложную логику проверки этого параметра и только после этого менять нужное поле. Но это говнокод по всем понятиям, нарушает солид, оскорбляет ооп. И все равно это не спасет от рефлешена, который распотрошит любой твой класс. Читай дальше мурзилки вобщем, вопрос сам собой отпадет.
>>1978369 Проинициализирован, там явно написано int i = 0; Значение 0 по умолчанию только для полей, для локальныэ переменах чтение до инициализации - это ошибка компиляции.
>>1978314 ну потому что мейн тред инициализирует переменную потом входит в цикл фор выполняет его выходит и пишет тебе в консольку изначальную переменную
>>1978245 Никак, у класса всегда будет полный доступ ко всем своим данным. В умных книжках, конечно, говорится, что ООП описывает объекты реального мира, но на практике его нихуя так не используют, и когда объект вызывает свои методы, это не значит, что моделируется ситуация, когда некая реальная сущность что-то делает сама с собой.
Начал спринг по spring in action изучать, но книга(как уже в треде упомянули) лютейший кал(начал 5ед., взял потом 6ед., а там все такой же пиздец с кодом) Так вот, какая есть альтернатива?
Аноны, как вообще по ощущениям - в энтерпрайзе конкуренция с зумерами и конкуренция в целом в ДСах и других городах есть? Сильная? Или когда говорят про айти-пузырь имеют в виду только веб макак?
>>1978470 В энтерпрайзе примерно такая хуйня: >>1964266 , и это не преувеличение. Вкатываться в основном все хотят в питон и JS, с жирными проектами на жабе связываться немногие хотят.
>>1978493 Спросишь "Java или C#?" и джава-треде, ответят "джава", в шарпе скажут, что шарп. Логично же. Пилим большие проекты внутреннего пользования - банковские системы, учёт всякой хуйни, автоматизация бизнес-процессов.
>>1978501 >>1978502 То есть мне нужно сделать класс Зарплата,туда нахуячить геттеры и сеттеры и в сэттер передавать сотрудника,которому нужно повысить зп и менеджера,который типо повышает. Так что ли ?
>>1978462 Итак, этот тред является Храмом AbstractSingletonProxyFactoryBean. Я расскажу немного о AbstractSingletonProxyFactoryBean для тех, кто ещё с ней незнаком. Имя человека, который впервые открыл миру знание о Боге-AbstractSingletonProxyFactoryBean неизвестно, это был истинный анонимус. Я буду называть его Пророк.
Однажды Пророк создал тред, в котором запостил ОП-пик, и сказал, что AbstractSingletonProxyFactoryBean найдёт элемент в массиве, стоит лишь его попросить, и наложит проклятие вечного ArrayIndexOutOfBoundsException, если проигнорировать его щедрый дар. Писали многие. Не писали тоже многие. И вдруг оказалось, что AbstractSingletonProxyFactoryBean действительно находит элементы в массиве для своих последователей. Кому-то быстро (Как анону, который на следующий же день нашёл элемент с индексом 0), кому-то долго, но находит. С каждым новым последователем сила AbstractSingletonProxyFactoryBean всё росла, и теперь каждый попросивший анон получает желаемое. Я не знаю, можно ли просить у AbstractSingletonProxyFactoryBean кроме поиска м массиве и другие блага, каждый из вас может попробовать.
>>1978512 Так я в оба треда и написал. Ну мало ли, может есть перекатившиеся, причины там почему скажут или просто люди имеющие опыт направят. Просто все говорят что джава это почти всегда легаси, это так? Так что точно пилите?
>>1978524 Пилят на жабе новые проекты. Легаси - не значит устарело, а скорее то, что нужно поддерживать и дорабатывать. Заниматься написанием новых проектов придётся реже, чем доработкой существующих, и это не черта джавы, а любых языков, где нет такого, что писал проект месяц, сдал и забыл, как в каком-нибудь пхп. В жабе же это ощущается сильнее всего, ибо очень много проектов, которые начали писать не полгода-год назад, а давным-давно.
В общем, хз в тот тред пишу или нет, но посоветуйте, если знаете, книг на тему байтоёбства. Я на стажера-джависта задрачиваюсь уже какое-то время, читал книгу по джаве, и когда дошёл до обсуждения ссылок на объекты, выделяемую память, и автоупаковку/автораспаковку значений базового типа в/из объекты-оболочки, столкнулся не то чтобы с непониманием, о чём идет речь - в общих чертах мне всё понятно, но с явной нехваткой фундаментальных знаний. В общем, хочется какую-нибудь книжку по "основам", где объяснялись бы вещи на уровне обсуждения динамических куч памяти и прочих таких вещей. Или джависту-стажёру подобное нахуй не нужно, и я загоняюсь?
>>1978543 > Juergen Hoeller is co-founder of the Spring Framework open source project Тогда уж надо найти того, кто придумал J2EE 1 или кто запилил первую реализацию.
>>1978541 Байтоебство в джаве это скорее уровень помидора. >>ссылок на объекты, выделяемую память, и автоупаковку/автораспаковку значений базового типа в/из объекты-оболочки, столкнулся не то чтобы с непониманием, о чём идет речь - в общих чертах мне всё понятно, но с явной нехваткой фундаментальных знаний. Так это в любой книге для начинающих - устройство жвм. Там тебе распишут хип, стек, поколения и тп. А читать байткод тебе нахуй не надо.
>>1978626 Открываешь просто гайды и читаешь. Тебе такого не хватает, чтоб понять как фичу запилить? https://www.baeldung.com/spring-security-basic-authentication А за бабло там какой то курс с исходниками и всякими видео. Если что они на торрентах валяются давно, можешь глянуть че там.
Анончики, а правда ли все эти страшилки, что Джаву и всю ее экосистему для веб-разработки нужно изучать 2-3 года, прежде чем вкатиться на джунскую позицию? Есть конечно большие компании типа ебама, которые берут нулевых студентов и выращивают их в джунов знаю множество людей, что так вкатились, но я уже такое не рассматриваю, так как с работой такие курсы не совместишь. Да и вообще джаву особо не рассматриваю, но интересно развеять для себя некоторые мифы
>>1979105 Просто всех очень заебали 100500 классов для дат, вот все и юзают первый попавшийся в учебнике, и похуй, что идея зачёркивает deprecated. Хуже только ебля со строками в C++.
>>1979101 Я либо совсем аутист,либо еще что-то,но все что я прочитал на стаковерфлоу мне не помогло. Я уже гонял всякие parse и valueOf на разных форматах и что-то результатов не дало.
>>1979105 Да я чет не подумал,начал писать и как-то по дефолту мозг выдал,что для даты формат Date,логично хули. А сейчас вот начал дальше делать и всплыла вот такая беда
>>1979204 Но это по прежнему самая популярная книга по самому популярному фреймворку. Большие тиражи, влиятельное издательство. А ты аноним из русскоязычной аиб.
Как выстрелить себе в ногу в Java В разных интерфейсах и абстрактных методах могут находиться методы с одинаковыми сигнатурами, но разными возвращаемыми типами. Если экстендить и имплементировать такие абстрактные классы и интерфейсы в 1м классе, то невозможно заоверрайдить такие методы и не получить ошибку компиляции.
>>1978551 Редко, но если нужен только DI и не лень заморачиваться, то бывает. Или есть специфичные подходы к работе - когда контекст подымается и останавливается из кода.
Как же странно работает toArray метод, в случае, когда массив в который пихается list содержит другие не null значения. Метод ставит null чтобы показать границу скопированного в массив листа. А если б мне нужно было то значение из массива, которое затёрлось?
Господа, как перехватить запросы не от SPA-клиента, чтобы зарендерить собственно SPA в spring web? Ну допустим клиент отправляет особенный заголовок: когда и где мне вмешаться? Например, через фильтр можно, но допустимо ли это с архитектурной точки зрения (я получается прямо в поток вывода пишу, хотя тут хорошо, что я явно обрываю цепочку)? Я если что честно пытался прочитать доки, но невероятно заебался и решил сразу писать пет-проект: теперь вот страдаю.
>>1961875 (OP) Суп, вечерний утренник, нахожись в процессе вката в java, уже знаю core, ооп, spring core, spring boot. Решил, что следует сделать пару собственных проэктов, залить их на гитхаб, дабы привлечь внимание будущих работодателей. В связи с чем вопрос: как выделиться на фоне других соискателей, какие проэкты лучше иметь на гитхабе? короче, дайте советов по этому делу.
А ну да, на счет английского - он у меня очень даже хороший, в свое время закончил два курса по специальности "перевод и переводоведение" в одном из топовых лингвистических вузов московии.
>>1979899 Кстати, в 3.8 будет пердольство. Теперь если хоть одна из зависимостей имеет репозиторий без https, проект не будет собираться. Какую-то уязвимость в мавене нашли. А я думал хули идея начала предупреждать при открытии мавен проектов. Градл лучше.
>>1979925 Зависимости из корпоративного репозитория во внутренней сети без Интернета, например. Хотя у нас там https >>1979902 Все, кто юзает такие репозиториями, первым делом загуглят, каким флагом в settings.xml эту проверку выключить, пропишут у себя и забудут.
Вакансия: Senior Java API developer Компания: AWWCOR, Inc, аутстаф Локация: 100% удалённая работа З/П вилка: $3500–5000
Ищем скиловых Senior Java API разработчиков присоединиться к американскому проекту, который разрабатывает одну из самых известных вакцин от COVID.
Бриф по позиции:
Senior Java API developer. $ 3500-5000 / месяц в зависимости от Вашей экспертности. Полный день; отдаленно; На долго. Бенефит: Long-term бонус ≈ $ 13 000 раз в три года = 8.33% от Вашего дохода за этот период; 16 оплачиваемых выходных в год. Ежегодное ревью зп + бонус.
Что нужно: 10+ в бэкенд на enterprise проектах, из них 5+ на Java; ООП / SQL, MySQL; Upper Intermediate English.
Проект: 11 лет на рынке. Компания производит достаточно известные продукты для анализа данных клинических испытаний. Также компания сотрудничает как SasS с мировыми гигантами фарм. промышленности и медицины. Интернациональная команда.
☝️ Требования к кандидатам достаточно высоки, однако плюс в том, что Вы можете рассчитывать на то, что окажетесь в команде действительно профессиональных коллег, которые готовы делиться своим опытом.
Если звучит хорошо, велкам к деталям:
✅ Принципиально важно долгосрочный опыт работы - 10+ лет на enterprise проектах (❌не фриланс): Вы понимаете, что такое масштабные распределенные системы и массивные базы данных; есть опыт по интеграции. Если вы все 10 лет работали именно с Java - это супер! Если раньше Вы работали с JS / Python - это преимущество для нас, если это был PHP, например - это ок. В данном контексте, нас интересует Ваш общий опыт в разработке на крупных проектах.
✅ 5+ лет релевантного практического опыта в backend разработке именно на Java: Spring, JPA, Jersey JAX-RS;
✅ Экспертные знания OOП; RESTful API; баз данных - SQL, Aurora MySQL и др;
✅ навыки письменной и устной коммуникации на английском языке на уровне достаточном для привлечения к регулярным онлайн митапив (честный Upper Intermediate / B2 или выше).
✅ Замечательные навыки общения в международном коллективе; Мы ищем морально-зрелых личностей, которые могут работать одинаково комфортно, как самостоятельно, так и в команде.
Стек проекта: Java, Node.js, Angular 9, AWS, SQL и другие базы данных; немного Python.
Будет плюсом
✅ Опыт с Amazon Web Services, а именно практические навыки построения и управления инфраструктурой, развернутой в AWS.
✅ Релевантная высшее образование.
Предлагаем:
✅ Действует бонусная программа: Long-term бонус ≈ $ 13 000 раз в три года = 8.33% от Вашего дохода за этот период; Ежегодное ревью + бонус на основе Вашего перформанса.
✅ Проект имеет систему PTO (paid time off): один выходной предоставляется за каждый месяц Вашей фулл тайм работы = 12 PTO в год; Дополнительно начисляется 1 PTO раз в квартал. Таким образом, у Вас есть 16 оплачиваемых дней в году, которые Вы можете потратить на отпуск, или как Вам заблагорассудится.
✅ Удаленно, полный день, длительно. ✅ 40 часов в неделю; Пн-Пт; График работы может быть +/- гибким, однако ориентируйтесь на с 9 до 18:00 по Киеву.
Процесс:
1. Регистрация на сайте AWWCOR 2. Вступительное собеседование + проверка уровня английского. 3. Встречи для технического интервью (2 этап). 4. Оффер и сотрудничество.
Обязанности: ✅ Разработка с помощью Java и SQL; ✅ Написание стабильного, эффективного кода, который подлежит тестированию и адаптации; ✅ Написание / применение юнит тестов к передаче кода QA команде; ✅ Обеспечение соблюдения логики дизайна, стандартов PCI / SOX и определенных на проекте методологий разработки; ✅ Создание и обновление документации; ✅ Выявление слабых мест и багов, поиск оптимальных путей их оптимизации и устранения. ✅ Разработка новых функций усовершенствования для существующих продуктов и систем; ✅ Сотрудничество с бизнес аналитиками, дизайнерами, тестировщиками и продакт овнерамы для эффективной реализации процесса разработки.
>>1979969 >Также компания сотрудничает как SasS с мировыми гигантами фарм. промышленности и медицины. Sass — модуль, включенный в Haml. Sass — это метаязык на основе CSS, предназначенный для увеличения уровня абстракции CSS-кода и упрощения файлов каскадных таблиц стилей.
>>1979969 >Требования к кандидатам достаточно высоки, однако плюс в том, что Вы можете рассчитывать на то, что окажетесь в команде действительно профессиональных коллег, которые готовы делиться своим опытом
>>1979651 А давно джава кор отделили от колекций, ооп, ждбц? Ну и дженкинс на равне с гитом это конечно сильно. Вакансии то наверное трудно глянуть и прочитать что знать надо
Товарищи,по какой причине когда я пытаюсь запихнуть дату в столбец с форматом Timestamp мне джава все равно говорит что ожидает тип java.sql.Date ? Что это за колдовство?
>>1980112 А ещё говорят, что логгеров дохуя. Куда там логгерам до sql.Date/util.Date/Calendar/Instant/ZonedDateTime/LocalDate/LocalTime/LocalDateTime/XMLGregorianCalendar/Timestamp.
>>1980349 В том, что с налогами придется ебаться самому, а это сложно. А так просто больше денег получаешь. А на пенсию и прочее и так не надейся - откладывай прямо сейчас, причем желательно в долларах и не в российских банках.
>>1980128 >Кроме java.util.Date ничего нахуй не нужно. Ну и Instant еще. java.util.Date - не нужен, он mutable и по сути просто враппер для epoch millis. Вот ZonedDateTime - да это правильно и понятно, есть дата время, есть таймзона можно брать и показывать пользователю. Instant - сойдет как типизированный враппер для epoch millis.
>>1979364 >методы с одинаковыми сигнатурами, но разными возвращаемыми типами. Ну кстати на уровне JVM это не запрещено. Там всё равно для каждого метода свой дескриптор создаётся и по нему вызов идёт. Вообще весь boxing и unboxing внутри на этом построен.
Как легко залететь на тестировщика по Жаве? Все, что я знаю это английский, Java Core (без многопоточки и конкарренси), базовый SQL + юзал MySQL, ковырял сервлеты, не боюсь линукса и даже слепил говна по книге Spring In Action.
Я просто выпустился прошлым летом из техвуза по спецухе автоматизации производств, но с эмбеддом ковыряться не очень интересно, вот думаю теперь с низов начинать. Плюс друг резюме просит прислать, у них набор тестировщиков идет, а я как-бы тесты никогда и не писал, не хочу его подводить.
>>1980424 >Как легко залететь на тестировщика по Жаве? Все, что я знаю это английский, Java Core (без многопоточки и конкарренси), базовый SQL + юзал MySQL, ковырял сервлеты, не боюсь линукса и даже слепил говна по книге Spring In Action. Мы таких брали на junior SDET. Рассказать базовые вещи про тестирование, написать на бумажке простенький код, ну и вы приняты.
Умею писать простенькие круды на спринге, разбираюсь как там хешмапаы всякие устроены, могу запускать всякие экзекутор сервисы, знаю уровню изоляции и прочие лефт джойны. Сколько опыта себе нарисовать, чтоб сойти за джуна с опытом?
Бля че делать котаны, куда податься?В моем мухосранске вакансий мизер. Конкуренция 20 человек на место. На интервью ебут 3-4 чела 1.5 часа начиная от класс лоадеров до хибернейта. Но в конце ответ один - Знания хорошие, но нам нужен синьор к-ый за 2 часа вкурит наше говно мамонта и будет пахать за зп стажера, сори, но иди в хуй. Пиздец печаль.
я вот не особо понимаю ООП, наверное потому что не работал с большими проджектами со сложной иерархией наследования и тп... для своих проджектов ничего такого не требуется да и тащем-та многие шаблоны дурно пахнут, всё это кажется каким-то избыточным в коде ЧЯДНТ?
наверное вопрос в том ООП это что-то вроде религии или РЕАЛЬНО тебе просто необходимо всё описывать через интерфейсы и создавать какие-то сложные конструкции
тут какой-то анон постоянно постит примеры с наследованями, вот и задумался
Пасаны, учу жаву. Как в intellij idea уменьшить уровень подсказок, а то совсем однокнопочное программирование, она сама код за тебя пишет, я нихуя не запоминаю. Раньше это делалось в правом нижнем углу, был значок "мужика в кепке (похожий на марио)" и там можно было уровень выбрать, высокий, низкий, и отключено сейчас мужика убрали. Хочу чтобы подсказки появлялись по требованию ctrl + пробел.
Мужики ку, мне нужно для курсача написать программу, которая имитирует покупки в онлайн магазине чая.При этом нужно использовать абстрактные классы и полиморфизм.Что посоветуете первым делом сделать, ибо по Яве я вкатился неудачно.
>>1985167 дык а че он там пишет за тебя? кроме автоиморта и подстановки переменных. в ручную ты заебешься каждый раз набирать AbstractSingletonProxyFactoryBean