Это копия, сохраненная 21 мая 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Q: ЧТО СКАЖЕТЕ ЗА ДЖАВАРАШ?
A: Худшая инвестиция в твоей жизни. Огромное количество говнокода, оторванные от жизни задачки, 1000 заданий по выводу в консоль какого-то говна.
Сейчас все советуют Hyperskill. Более продуманный план обучения. Но, как и любой %COURSENAME% не гарантирует тебе успешного вката. Выучиться можно и самостоятельно, не отдавая свои кровные васянам-наставникам.
Q: Посоны, собираюсь учить джаву по 2/5/20 часов в день. За сколько дней я выучу достаточно, чтобы зарабатывать фрилансом?
A: На джаве фриланса нет. Хочешь фрилансить — дуй в ПХП/раби/1С тред. Но в последнее время увеличивается количество вакансий на удаленке в связи с ковидом. Но, возможно, как вся эта мракобесия закончится, всех обратно загонят в стойло.
Q: Значит, я должен буду всю жизнь сидеть в опенспейсе, конвертируя XML в эксепшны? Ура, мне подходит! С чего начать?
A: Книги: https://libgen.is
Q: Хули все книги на английском?
A: Без английского ты не нужен и можешь смело идти нахуй. Ну или в 1С-тред.
Q: Я не могу в книги. Наткнулся на джавараш, но в самом верхнем вопросе уловил нотки сарказма. С ним все правда плохо?
A: В наших тредах постоянно появляются люди, спрашивающие о джавараше. Громко объявляют, что начинают заниматься, задают пару тупых вопросов и куда-то пропадают. Похоже, большинство адекватов бросают джавараш из-за дебильных заданий типа "десять раз скопипасти этот кусок кода и выведи в консоль". Тем не менее, иногда появляются и люди, говорящие что прошли его целиком, и что дальше задания получше. Короче, хочешь - пробуй, первые десять занятий бесплатно же. Но, как минимум, лучше совмещать с обучением по другим источникам. На самом деле ты просто потратишь свое время на какой-то мусор.
Q: Пока читаю, все понимаю, а сам ничего сделать не могу. Что делать?
A: Практика, больше практики. Уровня laba1.pas: http://codingbat.com/java http://codehunt.com https://hyperskill.org все говно, есть литкод Примеры той-проектов: http://eax.me/programming-language-learning/
Q: Я выучил кор, достаточно ли этого, чтоб взяли на работу?
A: Лол, конечно нет. Вот майндмап с джава-технологиями: https://coggle.it/diagram/WqgTTNMJtPiHph_q/t/java-development-in-2018
Q: Слышал, SQL знать надо обязательно. Где его учить?
A: Начни с малого: http://www.w3schools.com/sql/default.asp Затем переходи к: http://www.sql-ex.ru/
Q: Всё это хорошо, но без алгоритмов меня на работу не возьмут.
A: Не все конторы дрочат на подход Яндекса который спиздил подход гугла. Но для крупных фирм знать алгоритмы маст хев уже на уровне джуна/трейни, вот курсы от Принстонского университета: https://www.coursera.org/course/algs4partI То же самое но в бумаге: Роберт Седжвик, Кевин Уэйн - Алгоритмы на Java
Q: Я готов к первому собеседованию.
A: Проверь свои знания здесь: http://www.quizful.net/test И здесь: http://www.careercup.com/
Q: Вопросы на собеседование.
A: http://jsehelper.blogspot.ru/2016/01/blog-post_59.html : куча вопросов с ответамине всегда правильными http://becomejavasenior.com/blog/2015/07/01/327-interview-questions-java-developer/
Перед тем, как задать вопрос Как вайти в айти?, ознакомься с вики:
https://github.com/qqqlll/Java-Thread/wiki
https://github.com/random76/Java-Thread/wiki
>>1960798 →
>>1960355 →
Вычищатель спринга их обоссыт. А потом мы все дружно будем выяснять, что наследуется - квадрат от ректангла или наоборот.
Ошибка говорит, что ты ожидается получить дату без таймзоны, а передаешь ты character varying.
Вопрос: откуда у тебя String? Что ты получаешь на выходе с pst.setString(2, date)? Можешь посмотреть профайлером какой запрос реально выполняется?
>хибернейта
Как ты собрался с базой работать? Не думаешь же ты, что кто-то в здравом уме потащит MongoDB в продакшен?
Если верить треду, то Spring JDBC
Джавач, а есть фриланс на жабе? Ну, я знаю, что нет, но заебался на удалёнке в потолок сидеть плевать, а денег много не бывает. Как/где искать проекты, на которые требуется 2-4 часа в день?
> Как ты собрался с базой работать?
Через божественный JdbcTemplate.
> Не думаешь же ты, что кто-то в здравом уме потащит MongoDB в продакшен?
Конечно нет, монга - это для MVP-проектов на пхп и жс, которые дольше пишутся, чем находятся в эксплуатации.
Только всякое говно для андроида, и то там котлин.
Тут кто то писал, что сейчас Спринг без Бута не нужен. А где в комментах я читал, что люди начали отказываться от Бута. Что с ним не так?
Тут аналогия как в линуксах. Есть сложный, но могучий спринг, который нужно много настраивать и конфигурировать, а еще важнее уметь это делать хорошо. А есть коляска - спринг бут, где за тебя все настроили, и тебя в ней катают, а ты только на несколько кнопок нажимаешь и полностью переделать под себя не можешь.
Ну вот написано, в этом году 62% - в прошлом больше. Почему те кто пользовался, отказался? В каких кейсах?
>>1962144
Лол. Мимо-с-монго-на-продакшене
>>1962142
Есть. На фл.ру. Ставка - копейки. Разбирают моментально. Минут за 5. В основном студенты которым лень делать лабу. Один раз писал микросервис для какой-то компании. Заплатили косарь. Ниочем короче.
>>1962185
В целом да. Но те же микросервисы поднимать за 5 минут - самое то.
Лол. Как ты жопу с пальцем сравниваешь? Я в прошлом треде писал. Монго не заменяет нормальную базу. У нас стек по базам: мускуль+монго+редис. Каждая под свои задачи.
И как правильно сказали, последняя версия того же мускуля уже может заменить монгу или редис. Но так как у меня суровое легаси, мы юзаем три старых базы, вместо одной новой.
Опять же, лучше пойти в тред к базунам, я думаю там смогут пояснить по хардкору какая база и для чего лучше. По крайней мере, в том треде пишут, что пока noSql не заменяют SQL базы, и наоборот.
В общем все от задачи зависит.
>Монго не заменяет нормальную базу
Тогда вопрос снят. Мне было бы интересно об особенностях использования его именно в качестве основной базы.
Не это говно. Транзакций нет(хотя говорят что в последних версиях частично есть), нет реляций, большой занимаемый объем на диске. Ну и ещё куча всего, почему монго не заменит нормальную базу.
Обязательно исправлю - насру еще косарь сообщений.
>а где тут транзакции и нормализация?
нинужно, сикуль - устарелое говно 50-летнее. Бэк можно писать на ноде+монга.
> сикуль - устарелое говно 50-летнее
Я уже почти уверен, что всевозможные носклы пилят не для решения несуществующих проблем реляционных СУБД, а тупо потому, что SQL всем наскучил.
типа чтобы получить кеш, нужно сходить в другой сервер, сделать запрос, вернуть обратно, и подставить это вместо результата? А не проще в саму базу сходить?
Смотря что там в кеше, если результат очень жирного (в сравнении со скоростью сети) запроса, то лучше кеш.
реально такое слышал от фронта, который немного ноду потыкал.
Тебе правда select from where join нравится больше, чем json?
Да.жпг
Да, при желании можно такой запрос заебенить, что половину кода писать не нужно
>Да вы заебали. Разные задачи сравниваете. Может ты и в писсуар срешь?
Ты не понял пикрил отсылку.
Щас бы выбрать монгу и страдать от проблем, решенных rdbms еще в прошлом веке. Хотя жс-опетухам не привыкать к героическому переизобретению того, что весь мир уже давно юзает.
Сишарподебил пририсовал голову петуха в юбилейном треде. Как же смешно, наверное.
>Чем подключиться к процессу java, чтобы глянуть, какие функции вызываются?
https://www.baeldung.com/java-application-remote-debugging
> > Как ты собрался с базой работать?
> Через божественный JdbcTemplate.
Как раз изучаю сейчас хибер и
JdbcTemplate малость. Мне мне кажется мутить каскадные операции в темплейте уж слишком заебищно. Особенно с мэни-ту-мэни связями. А в хибере это пару конфигов сделать и все работает.
Хз, у нас на проде спринг дата с гибером, в тонких местах native sql запросы в репозиториях, ну и все. Мне по кайфу.
>Надо было перекат пилить, а не тянуть кота за яйца 1000 постов.
Ничего, вот этот тред не только до 2000 постов добьем, но и 3000 возьмем!
И так каждый тред увеличивать прогрессию на 1к
Все зависит от изначальной архитектуры, нагрузки и задач. У нас натива 90%. Гибер это прям редкий кейс. И если разработчик решил использовать гибер, это может иметь неприятные последствия в плане перформанса и последующих изменений кода. Ну, у нас так по крайней мере.
Да не, interface21.com нормально открывается.
jooq всем вроде бы пиздат, но почему-то претит идея завязывать код на рантаймовую схему бд и вообще на доступ к ней.
Ещё не могу понять как из Record сделать сущность. Писать мапперы?
ху?
сомневаюсь. Хотя идея отличная, и реализация тоже норм
Да я постил уже его в прошлом треде. Одного эталона мёртвости достаточно.
Узнали, согласны.
Энтерпрайз, хуле. На любом языке достаточно большой проект обрастает кучей конфигураций/кастомизаций, поэтому в спринге с самого начала это всё стараются учесть, чтобы потом меньше переделывать. Кроме спринга есть куча микрофреймворков, там почти неотличимо от всяких нод и питонов, наверняка и для вебсокетов есть.
Так что и где интересного то на других стеках?
Чтобы аддоны, поддержка http1/2, websockets?
Точку с запятой надо ставить.
Перейдут ли все фреймворки на модули в будущем?
>Почему модули не взлетели?
Потому что нет версий и ломают обратную совместимость.
>Почему спринг не модульный?
Модульный.
>Перейдут ли все фреймворки на модули в будущем?
Нет. Джава умерла, новых фреймворков не будет.
Но разве нет кейсов, где было бы нужно отрезать ненужную часть jdk и других библиотек/фреймворков, чтобы освободить часть ресурсов?
Про стронг инкапсуляцию я тоже не понял нахуй она нужна.
У нас 13, но у меня сравнительно маленькая компания. Когда выйдет 17 LTS, скорее всего пересядем на нее надолго. До этого работал в банке на 8 жабе.
8, на 11 проект не компилится.
Python 2.7 == Java 8
Python 3.x == Java 9+
Да и хуй с ней, с обратной совместимостью. Я серьезно. Не вижу смысла тащить за собой ошибки прошлого, если есть возможность сделать нормально. Все равно версии жабы основной потребитель - интерпрайз - никогда не будет мигрировать на легаси. Только новые проекты будут стартовать на новых версиях. А в микросервисной архитектуре это все вообще перестает быть проблемой.
Ну может после 9 норм будет миграция с 11 на 17 и в далекое будущее на 20 версии.
Да. Немного закосячили. Спасибо ораклу. Но на самом деле, если контора не может с 8 на 11 мигрировать - значит в ней какие-то рукожопы сидят. Да, это не совсем просто. У нас где-то 3 месяца ушло. Но там два человека в свободное время ковырялись. В целом - ничего сложного.
Где-то я уже это читал.
патиба
swing лучше сделан по моему субъективному мнению
вот ты владелец продукта. Будешь тратить кучу денег на переход на другую жабу, если и так все работает?
Я серьезно спросил, какие клевые фичи есть в 11, ради которых не жалко средств на миграцию. Разница между 7 и 8 огромная, а между 8 и 11 - нинужные модули, нинужный вар, нинужный запуск без компиляции.
Что там нужного? 10 разных методов в старых классах? http-client?
Зависит от того, насколько я крупный. Для мелких контор новые технологии - шанс схантить сотрудников получше за подешевле. Сберу и втб каким-нибудь похуй, как сидели на 8, так еще сто лет сидеть будут, даже на новых проектах.
пишут, что на самом деле они объекты, то есть для них Object это предок b и что классы для массивов генерируются динамически,
то есть это объект:
int[] arr = new int[2];
возникает вопрос, а как мне посмотреть на этот объект??
если у arr вызвать getClass(), то я увижу "[i"
это название сгенерированного класса? [i это его название ??
Ответьте, плиз,мучаюсь этим вопросом.
Тебе жизнь упрощают, дурик. Больше нравятся простыни кода по 500 строк?
Если это Spring Boot и какой-нибудь Lombock, который аннотациями спасает тебя от ручного выписывания get set toString, итд, то это нома
Пиши на чем хочешь, хоть на ассеблере, всем похуй.
Ну так ты почитай в чем разница. Вар и клиент это круто. А ещё куча оптимизаций. Очень много методов стали работать в разы быстрее. Когда у тебя большое приложение, это будет заметно.
Да, внутреннее имя класса, [ - это массив, а i - это инт. Можно даже подгрузить его через Class.forName("[I"). Но ничего интересного сделать нельзя, у него даже конструкторов нет, можешь проверить через int[].class.getDeclaredConstructors() . Не забивай себе этим голову, просто используй массивы так, как предлагается.
Неча на зеркало пенять если ты урод.
Спасибо, чекну.
Там java наверно седьмая, судя по тому что 2014 год. В многопоточке не было изменений с того времени?
Да. Моему тимлиду 35, ещё у нас есть два разраба 60+. Но и молодые есть.
Отсидели или с кандидатской вышли? И зачем?
> почти половина отсидели два-три года в аспирантуре.
Не хочется никому долг родине отдавать, да?))0
Реактивный спринг (асинхронный) и нереактивный (синхронный).
копался в нескольких своих пет проектах, пока их делал, гуглил всякое говно на стэковерфлоу. Судя по импортам там, реактивный совсем не используется. Есть ли смысл его учить? Как решается проблема блокировки в запросах к примеру рест макака с круд-гранатой?
Так им за 30, когда они учились - не было никакой маги. Специалитет + 2 года аспирантуры и в 24 освобожден от сапог.
Даёт, и аспирантура даёт, лишь бы всё очным было. И так до 27 лет можно отсидеться, диссер защищать не обязательно.
Используется в некоторых хипстерских проектах, для работы в энтерпрайзе можешь забить, там ещё повезёт, если спринг будет пятый, что там webflux.
> Как решается проблема блокировки в запросах к примеру рест макака с круд-гранатой?
Спринг может обрабатывать несколько запросов параллельно в тред-пуле, на уровне БД параллельность тоже возможна за счёт одновременно выполняющихся транзакций, лишь бы dbms_lock-ов и select for update-ов было поменьше. Это, в общем-то, всё, во время IO треды тупо синхронно ждут ответа.
>Спринг может обрабатывать несколько запросов параллельно в тред-пуле, на уровне БД параллельность тоже возможна за счёт одновременно выполняющихся транзакций, лишь бы dbms_lock-ов и select for update-ов было поменьше. Это, в общем-то, всё, во время IO треды тупо синхронно ждут ответа.
я так полагаю по стандарту на каждый запрос контроллере выделяется отдельный новый бин и этот бин кладется в тред пулл?
а сешшенфактори (к примеру гибернейтовский) он потокобезопасный т.к. нет внутреннего стейтмента, верно понимаю?
а что делать
Нет, бин только один, здесь не EJB.
Потокобезопасность в целом достигается за счёт написания всех бинов так, чтобы в них не было стейта.
ну вот допустим у меня есть контроллер. в нем дао бин зааутовайреный сеттер методом. В том DAO собсно session factory таким же образом припаянный. Больше никакий бинов или полей нет.
За счет чего тут достигается потокобезопасность?
т.е. получается если не использовать c3p0 и аналоги, то это не жизнеспособное в реальном мире веб-макака-код?
Хз, о пуле сразу думают. В буте из коробки Hikari, без бута на сервере приложений какие-нибудь EE-костыли.
Да я сам нахватался по верхам в разных мурзилках, тоже надо бы что-нибудь единообразное почитать. Пока присматриваюсь к Pro Spring, там должно освещаться в том числе и это.
Проверять знание английского никто не будет. Оно нужно в первую очередь тебе, чтобы читать мурзилки на английском (на русском нихуя нет) или разбираться, когда лучший ответ на стековерфлове не подзодит.
Отлично, у меня просто стоит встроенный переводчик, хотя я обычно спешу найти ответ и перевожу сразу всю страницу, из-за этого прогресс на английском плохой.
От заказчика зависит, если там процесс построен на ежедневном общении на митингах/в шлаке, то тебе будет самому просто тяжеловато.
Другое дело что английский подтягивается за полгода-год до intermediate как минимум, при условии что ты не безвольное хуйло, конечно же.
Ну а так слышал мнение что лучше хороший код и плохой английский чем наоборот.
>Проверять знание английского никто не будет
У меня были собесы на английском, причем, похоже, только ради того, чтобы этот самый английский проверить. Но да, это очень редкая ситуация.
Но да, если ты хочешь жить и работать в своем коровнике, английского на уровне "Лондон из зе капилал оф Грейт британ" хватит. Если хочется получать человеческую зарплату - придется подтягивать английский до вменяемого уровня.
Все тесты написаны с использованием гибера. В тесте проще гибером сохранить сущности, чем писать натив или тянуть реальный сервис, который их создаёт.
Есть ещё кейс, когда ты точно уверен что таблица будет читаться/писаться одна, без реляций или сложной логики. Тогда тоже можно гибер использовать. Но как показывает практика, пишут на гибере, потому что "точно уверены", а спустя пол года, из-за новых хотелок бизнеса, приходится переписывать на натив.
В небольших проектах используют правило: сохраняем гибером, читаем нативом.
у меня например был бал на тему что хибернейт автоматически сохраняет любые изменения в энтити.
В маппере модифицировал исходную энтити - хопа и это сохранилось. Очень неприятно и опасно
String[] colors= {"red", "blue", "yellow"};
//a list backed by the array;
List<String> colorList1 = Arrays.asList(colors);
//immutable lists
List<String> colorList2 = Arrays.asList(colors);
List<String> colorList3 = Arrays.asList(colors);
У 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 без эксепшена!!!
Почему так??
>В маппере модифицировал исходную энтити
>чтобы из entity получить dto например
И зачем для этого твой маппер модифицирует энтити?
маппинг из одной сущности в другую - это бизнес-логика. Ты предлагаешь её сувать в сущность. Это начало антипаттерна Active Record
>выше показал пример. Модифицирую поле и скармливаю это мапперу
Ну так ты же сам модифицируешь поле, при чем тут маппер? Зачем ты вообще модифицируешь сущность, если не хочешь, чтобы сущность в базе поменялась? Модифицируй тогда само получившееся дто, если нужно поменять какое-то возвращаемое значение без сохранения в базу.
side effect. Я про это и говорю. Что есть некие неочевидные последствия, про которые надо знать и помнить. Наличие такого - это очень плохо
они необязательно одинаковые и необязательно мапятся 1 в 1. Если они неодинаковые - то правила маппинга это бизнес-логика
В смысле сайд эффект? Ты буквально меняешь сущность, связанную с базой, чтобы поменять дто. Не вижу тут ничего неожиданного.
я прочитал сущность из базы. Ок. А с каких херов она сама себя сохраняет? Команды на сохранение я не давал
>необязательно мапятся 1 в 1
Нахуй такие дто, которые не мапятся с сущностями?
Короче напридумывали хуйни с хибернейтом и ебутся в жопы.
зачем по-твоему тогда нужны дто? Давай херачить во все внешние системы энтитями из базы и всего делов
>зачем по-твоему тогда нужны дто?
Чтобы представить сущность из базы в определенном контексте. Это единственная цель дто, и поэтому оно естественно должно быть в курсе правил маппинга.
Ты так и не написал, чем ты пользуешься, чтобы не писать конструкторы ручками.
>new ZalupaDTO(zalupaEntity)
Расскажи, какая аннотация в ломбоке существует для того, чтобы передавать в конструктор объект так, как ты показал.
>new ZalupaDTO(zalupaEntity)
>Зачем ручками?
>Ломбоком, епта.
>А с чего ты взял, что в ломбоке есть такая аннотация
Ты шизик что ли?
Хочешь сказать, что это не твой пост? Ок, тогда каким образом ты организуешь логику маппинга внутри дто?
>Это единственная цель дто, и поэтому оно естественно должно быть в курсе правил маппинга.
Этот же пост по цепочке твой.
>Ок, тогда каким образом ты организуешь логику маппинга внутри дто?
А ты думаешь есть какая-то магическая аннотация, которая бизнес логику за тебя напишет?
Я не тот чел, который сам меняет сущность, а потом почему-то жалуется на маппер.
Меня заинтересовал вот этот >>1965367 шиз, который маппит вот так:
>new ZalupaDTO(zalupaEntity)
А поскольку ты защищал его видение, что маппинг должен происходить в дто, то тебе я задал тот же вопрос, что и ему - как вы маппите и почему считаете, что это лучше стандартного всеми используемого мапстракта и его аналогов.
Ну а хули, джава мертва же.
Я не использую мапстракт, потому что магия ебаная у меня нет таких сложных сущностей, для которых не хватило бы конструктора. И DTO вообще нужны обычно для того чтобы не таскать с собой мутабельные поля или не показывать лишние поля в rest ответах.
>у меня нет таких сложных сущностей, для которых не хватило бы конструктора
Все понял, в крупных проектах не работал.
Алсо, это не магия, сгенерированный код всегда можно посмотреть и проверить, если возникают сомнения. Но вообще лучше бы ты рили сразу сказал, что у тебя просто нет опыта в этом вопросе.
>Это где JSF и сущности на два десятка полей?
Нет, это где любой крупный банк/прочая финансовая хуйня со спрингом и сущностями на два десятка полей.
>Зачем, если можно то же самое написать руками?
Зачем, если можно писать в одну строчку красивый читаемый код?
>сущностями на два десятка полей
Ну и зачем?
>если можно писать в одну строчку красивый читаемый код?
Как это противоречит тому, что я написал?
>Ну и зачем?
Поработаешь в околофинасовой/банковской сфере с их процессами - узнаешь.
>Как это противоречит тому, что я написал?
Набирать ручками конструкторы для маппинга - говнокод. Также передача дто логики маппинга противоречит сингл респонсибилити и говнокод еще и поэтому.
Ни разу не использовал.
Поищи на ютубе доклады Тагира Валиева про стрим апи. Там были конкретные примеры про параллельные стримы.
package ru.zol.jpoint2019;
import java.util.*;
public class Pair<T> {
private final T first;
private final T second;
public Pair(T first, T second) {
this.first = first;
this.second = second;
}
public List<String> stringList() {
return Arrays.asList(String.valueOf(first), String.valueOf(second));
}
public static void main(String[] args) {
Pair p = new Pair<Object>(23, "skidoo");
System.out.print(p.first + " " + p.second);
for (String s : p.stringList())
System.out.print(s + " ");
}
}
Питон тоже растет. И пхп, который все хоронят падает медленнее джавы.
Что с джавой конкретно не так то?
Хейтеры говорят про "устарела и умерла", без конкретики.
Джависты говорят "все в порядке, пошел нахуй".
Лол. Теперь будем меряться кто быстрее на дно?
Да тут без подсказок скажу что код - хуета. Там иде то тебе не говорит в чем дело? Какого хуя у тебя после return ещё что-то выполняется? Где скобки у фора? У тебя тупо куча синтаксических ошибок
это код 1в1 с jpoint, придирки не уместны.
Я не пойму почему цикл for требует Object, и не компилируется по этому.
Потихонечку переходим на котлин и го. Я вот как раз планирую пет на котлин переписать.
Как в компании договоритесь, так и будете писать. Всем похуй на твои личные предпочтения.
> Как в компании договоритесь
Крестоёб, съеби уже. В жабе только один кодстайл, и либо ты ему следуешь, либо ты долбоёб.
А вот тут не соглашусь кстати. В джаве конечно есть best practice. Но мне на работе в первый день выдали целый лист по инструкциям кодстайла и файл настроек претифаера для идеи. Например у нас в начале строк 4 пробела, а не таб. Или у нас запрещено if в одну строку писать. Даже если в ифе одно вырежение - нужно обязательно его в скобках писать. Ну и ещё куча мелочи всякой.
> Например у нас в начале строк 4 пробела, а не таб. Или у нас запрещено if в одну строку писать. Даже если в ифе одно вырежение - нужно обязательно его в скобках писать.
Это всё общепринято.
У меня на одной работе if без скобок нельзя было, на нынешней можно. Самому мне больше нравится без скобок - 2021 год, какие нахуй скобки. Давно пока вообще на котлине писать.
Ну и да, в в крупных компаниях обычно присылают свой файлик для настроек идеи.
Я думаю причина запрета ифа без скобок - чтобы было меньше проблем во время мерджа. Когда скобки уже стоят, и туда дописали два разработчика, это проще проверяется на ревью, чем если оба добавили скобки.
Скорее дело в том, что можно случайно написать две инструкции в ифе без фигурных скобок, когда под иф попадёт только одна.
if (usloviye)
....statement1;
....statement2;
И вроде бы хуйня, казалось бы, как тут вообще можно проебаться, но если часто копипастить или перемещать туда-сюда код, нет-нет да проебёшься и не заметишь, а автоформатирование не всегда сработает.
А мне иногда попадается код, где сознательно нарушают конвенцию именования идентификаторов и смешивают camelCase со snake_case, например, в DTO с setHuita_neim() из-за некоторых всратых либ, которые не дают переопределить преобразование имён и просто делают первую букву после get/set строчной. Или в очень длинных названиях методов для тестов, потому что читается легче.
Это вообще запрещено строжайше. Можно только в новых файлах, которые ты сейчас написал. В старых - нельзя. Вот тут точно причина в ревью, как мне объяснили. Слишком много бесполезных изменений в файле + потенциальные конфликты на мердже.
>>1965972
Да, у нас так в тестах иногда делают. Хз зачем. Мне и так нормально читать. Наоборот - снейк сбивает с толку.
дженерик String-ом объявлен в коде в этом коде
кстати тогда 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)
Ну я так понимаю ты этого и добивался?
Ну так сделай бля один коммит с Ctrl Alt L под правильный кодстайл, а потом работай бля.
ты параметризовал Pair Object-ом
проверь мой код и свой. Под строчкой public static void main
кодстайл настроить можно - по автоформату будет подставляться такой стиль, который ты сам определишь в настройках.
если взять точку отсчета в центре земли, то вокруг земли крутится и солнце, и вся вселенная
а этого не проведешь
Чел, ты спросил почему не компилится, я поправил твой код. Ты делаешь ссылку raw типа Pair p. Все дженерики там затрутся, в том числе и на листе(да, так это работает в джаве). Будет просто List, а не List<String>.
Подробно читай тут, если интересно https://stackoverflow.com/questions/2770321/what-is-a-raw-type-and-why-shouldnt-we-use-it
чувак , это as is код из листика вопросов с конференции, то что ты поправил спасибо, я это и искал, где ошибка здесь.
Анон, подскажи, где хорошо расписаны основные алгоритмы и/или структуры данных?
Например, я инжектю этот бин куда мне надо и каждый раз раз при обращении к этому бину создает новый бин, выполняется работа, по окончанию работы запускается кастомный destroy-method ?
В общем, как сделать аналог бина со скоупом "request", но без http сессии?
не понял
Какой-то мем?
SomeClass myObject = new SomeClass("arg")
и
SomeClass myObject = SomeClass.class.constructor.newInstance("arg")
?
Читаю про Reflection Api и не очень понимаю, зачем нужен какой-то другой способ инициализации объекта? Ну кроме тех ситуаций, когда на момент рантайма название класса неизвестно, и мы сначала получаем тип SomeObject через SomeObject.class или myObject.getClass. А в иных случаях, зачем мне нужно использовать второй тип инициализации?
> Ну кроме тех ситуаций, когда на момент рантайма название класса неизвестно
Именно для таких случаев и существует рефлексия, она как раз для создания всяких либ, где заранее неизвестно, какие именно типы будут юзаться, из-за чего нужно уметь работать со всеми. В пользовательском коде не нужно.
Скачал этот святой грааль, скомпилил в экзешник хеллоуворлд со свингом и попробовал запустить, получил пикрил.
Со спринг бутом из их мануала mvn spring-boot:build-image написал "пук среньк не могу подключиться к докер-демону", хотя он запущен.
У хипстерков всё такое? Это же нельзя допускать в прод нахуй. Не удивлюсь, если тестировали только на линуксе с самыми последними версиями всего.
Понял, спасибо
В одно время пытался перейти не десятку, она не понравилась некоторыми своими аспектами (не телеметрия) + после одного из обновлений полностью отвалилась сеть. Начал понимать тех, кто 10 лет назад не хотел пересаживаться с XP. Через пару лет хочу опять попробовать.
Ну смотри, там вроде на семерку перестали выходить обновления безопасности за исключением Extended Security Updates program, если она у тебя есть
Дестяка после последних апдейтов вполне неплохая, хоть я вообще на маке сижу, но в виртуалках когда есть нужна она вполне юзабельная для меня.
Prototype.
А вообще - первая ссыль в гугле.
https://www.baeldung.com/spring-bean-scopes
Учитесь гуглить
Очевидно на линухе. Статистика из моей компании: 70% линух, 10% мак, 20% винда. Это если мы про разрабов именно говорим. У куа где-то 50 на 50. Всякий административный персонал на винде.
>Статистика из моей компании: 70% линух, 10% мак, 20% винда
разрабы это малолетние хацкеры? Не могу придумать причину, зачем мне мучить себя прыщами
Потому что ось это такой же инструмент. И внезапно в линухе инструменты для разработки удобнее. Можно много чего автоматизировать.
>>1966414
> разрабы это малолетние хацкеры?
Сразу видно, что ты не работаешь, а в игрушки играешь. Но тебя никто не заставляет же. Пиши на чем хочешь.
Идите докер поставьте и автоматизируйте на винде. Ну как пример.
Ну а так конечно - бесполезный холивар. Не вижу смысла его тут разводить. Пользуйтесь чем вам удобно. Только потом не удивляйтесь что у коллег все работает быстрее и стабильнее, чем у вас.
Зачем докер на жабе?
>Только потом не удивляйтесь что у коллег все работает быстрее и стабильнее, чем у вас.
лол. А винде скоро капец, да
Ну нет же. Ты не понял мою мысль. Все нормально с виндой все и не капец ей. И она очень много для чего удобна. Но есть кейсы, тем более в джаве, когда линух лучше.
Зачем нужен докер - это вообще считаю тупой вопрос. Ну если ты конечно пишешь на джаве гуй, тогда не зачем. А если сервер - то нужен. Много для каких приложений в 2021 нужен докер.
У меня лично другой кейс. Наше приложение требует 100500 разных сервисов. Разные базы данных, раббит, кафка, и прочее. Намного лучше и проще использовать композ, чем все эти сервисы настраивать руками. Тем более на винде.
>Разные базы данных, раббит, кафка, и прочее
Придумали себе проблем и теперь героически их решаете. Почему нельзя их развернуть на стенде, а у себя указывать адрес стенда?
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);
Тогда наверное надо на каждого разраба по копии каждой хуйни настраивать на разных портах, потому что в базе данных можно схемы менять и дропать, наполнение бд менять, сообщениями сраными кафку забивать, нахуя тебе это все говно от других разработчиков?
новософт не?
Ну наверное тогда надо использовать testcontainers и не ебать мозгу?
У нас есть тестовое окружение и далеко не одно. Но тебе не понять зачем оно нужно на локалхосте. В общем, поработай в компании где хотя бы 100 сотрудников работают над одним сервисом(не продуктом даже), и где этих сервисов и зависимостей 20-30+. Потом поговорим. >>1966480 Вот этот в принципе все правильно написал.
Лол. Крутая позиция. Я не пользуюсь этой технологией, значит она не нужна. С такой позицией далеко пойдешь всю карьеру джуном в усть пердюньске XML обрабатывать
На шарп конечно же
Есть мнение, что о смерти жабы в этом треде в основном пишут джависты, чтобы распугать вкатышей
Я только спринг и хибер начал учить(еще нужно будет доучивать кое что по алгоритмам, бд, верстке, многопоточке). Линух ни разу в жизни не ставил. Стоит на него время тратить то во время вката или после устройства на первую галеру?
И вообще на каком этапе мне все эти докеры будут нужны?
Да, все верно. Сначала надо собрать арч линукс из исходников, только потом можно приступать к написанию джаава кода. причем только в виме.
Ну поставь убунту, собственно кроме sudo apt update, sudo apt upgrade, cd, ls, rm, mkdir, touch тебе ничего не нужно знать из команд терминала.
Если ноут, то может что-то не работать, но если не критично, то ставь спокойно. Разницы с виндой особо не увидишь. Все равно будешь тратить время только на браузер + ide.
>WSL
Ну может ты и прав, я сам пользовался WSL, но все равно люблю сидеть за полноценным дистрибутивом.
Так в пеку докупить оперативки до 32 или поставить 4/8 проц? Цена в итоге сопоставима, но оперативка будет из магаза, а с процом придется вляпываться в лохито.
Хеловорды на спрингбуте+хибер+постгрес. Штуки 3 по очереди запуская сервер, ибо по разным мануалам. Все в идее для удобства. Ну и браузеры с видосами с этими самыми мануалами.
постгрес по умолчанию на 50мб, спрингбут и хибернейт ну 200мб. Идея 500мб
А ссд то есть? А то хуйня какая-то. У меня проект на пару гигов билдится без проблем на более слабой тачке.
Есть. Все неудобства несмертельны. Апгрейд пеки можно сказать блажь. Но вот не могу между оперативкой и процом выбрать.
Раньше думал, что для игор будет лучше при следующем апгрейде. Но оказалось, что те что я поставил после переустановки шинды полгода назад я ни разу не играл.
у меня рабочий комп с 4 открытыми идеями с проектами тоже 16 гигов. Не тормозит
Это идея последней версии почему-то ресурсы жрёт, у меня тоже все тормозит когда несколько проектов открыто и запускаешь мавен или ещё что-нибудь.
Я бы в список добавил grep, он быстрее чем поиск в ide
Нахуя всякие стенды если можно docker-compose up -d и оно все заработало локально пакеты нужных версий, можно полностью копию прода в контейнерах сделать, при этом не ебаться с конфигами. Потом делай с этим что хочешь и как хочешь, можешь у себя конфиги менять, хоть сортировку крестиком и вышивание пузырьком запускай когда Луна в Сатурне не мешая остальным. А если что-то поломал, то удалил все контейнеры и поднял снова.
Нет, у нас тоже любят.
мурзилкошизик, спок
всмысле
Пиздец, мы как понять можем че тебе реально поможет?
Ты в момент запуска всей своей ебалы открой диспетчер задач и посмотри что долбится в сотку: проц, оператива или диск. Оттуда сам поймешь что тебе нужно и что исправит твои проблемы.
Так я не знаю как джаваебские задачи будут ебать пеку через полгода, когда я от хеловордов чему то посерьезнее перейду. Там всякие еще виртуалки с линупсами и докерами начну крутить.
4/4 интола хватит? В игорах многих уже не хватает, но на них похуй уже.
> виртуалки
Ставь второй системой, ты че как долбаёб с виртуалками возишься. Я так вообще перестал виндой пользоваться.
Особенно топово, когда винда при очередном обновлении убивает граб, и ты получаешь на руки кирпич, над которым надо танцевать с бубном. Было так 2 раза, оба раза очень не вовремя.
А мы откуда знаем, какое говно ты захочешь написать через полгода?
Вдруг тебе надо будет приложению кучу в 12 гигов выделить?
Решай конкретные проблемы по мере их поступления.
А нахуя тогда вообще писать переиспользуемый код?
Ну для веб разработки надо читать все что связано со спрингом, ресты, MVC. Если ты говоришь про фронт, то учи html, CSS, js на learn javascript почитай. Если этого будет мало - поковыряй vue. Этого хватит если идти на бэкенд.
Таки пилят. Пидорасы.
Спасибо, может ты мне посоветуешь тогда.
Да Spring и то что ты перечислил я буду изучать.
Но проблема в том, что мне в целом интересна тема передачи данных, протоколы ну и так-же веб-разработка (последнее, просто чтобы знать), но я тут сильно проседаю по теории.
Искал литературу, нашел - Тотенбаум : Компьютерные сети
Ну читаю потихоньку
Так вот, я все правильно делаю анон?
короче я хочу понять все эти сокеты, каналы, сервера, веб-приложения, протоколы и все что с этим связано, для начала на уровне теории.
В инете нашел кучу говно статей, где за три абзаца хотят все и сразу объяснить, ну и книги Тотенбаума, но там мне кажется слишком уж много физики и математики или стоит прочитать, пригодится?
Как насчет поиска информации через практику?
Напиши приложение, используя один протокол.
Написал? Молодец!
Возьми другой протокол, прочитай в чем его профит (зачем его сделали) перепиши приложение с использованием другого протокола.
Сравни результат - получил тот профит, который тебе обещали?
Ахуенный совет. Написал интернет магазин на TCP - перепиши на UDP. А потом обосрись.
Дуркасофт.
Начал вкатываться в джаву не так давно, необходимо написать один проект для стажерства.
В ходе написания столкнулся с такой проблемой:
Из сети приходит лист ключ-значение, и количество пар разное.
И под каждую пару мне необходимо добавлять поле в классе модели. Знакомый посоветовал посмотреть varargs
Но я так понял, его можно применить только в методах, а мне хотелось бы в конструкторе.
Подскажите, можно ли вообще такое реализовать?
Map<String, Object>
суть в том что я даже не знаю что такое протокол и как его ипользовать, ну точнее я знаю определение и зачем он нужен, но не более
Еще раз. Ты пытаешься решить проблему, которой у тебя нет.
Есть список протоколов, есть их описание и предназначение. Всё это лучшим образом описано в спецификации, например, RFC. Хочешь понять как работает - лезь туда. Особо ушлые корпорации спецификацию нарушают, иногда даже намеренно.
А вот это типа редко используется и мне этот недо-dsl не пригодится?
Выглядит прикольно.
Логика не совсем такая. Я вот ненавижу это пиздобоядский легасиговнохибернейт, но знать его приходится, т.к. кто-то его использует. И твой пикрил тоже используют.
Ну я подумал, что он реально не всегда очень нужен. А это бомбаж просто, как от жсеров. Теперь ясно.
На проекте один хуй не джун-мидол будет решать пользовать ждбс или хибер, а техлид/архитектор/какой-то-другой-понтовый-хуй.
Ну так оно прикольно, да. А теперь составь таким образом, чтобы сджойнило ещё две таблицы, сгруппировало по полю из третьей, посчитало среднее значение в одной из колонок, не проебало перформанс из-за индексов, и выдало бы результат одной красивой сущностью.
Будь он однозначно не нужен, о нём бы никто не знал, и срача бы не было. Юзать его можно, но надо знать меру.
я такое и ждбисей сам пока не смогу сделать, хотя на стековерфлоу наверно нагуглю.
Пишешь хуёвый запрос, в пуллреквест добавляешь кого-нибудь, кто занимается БД, он что-нибудь советует, исправляешь, заебись.
Это уж смотря какой рабочий процесс/коллектив, у нас такие пуллреквесты вполне обыденны, и подарков никто не ждёт.
Ну я в том плане, что оно красиво, но в итоге не функционально. Это к твоему вопросу, почему ругают хибер.
>>1967680
>>1967690
Я обычно сразу ДБА в шлак пишу, если не могу осилить. Но то что я описал в принципе выполнимо без посторонней помощи. Но опять же, я это написал не к тому, как это делать, а к тому, что хибером ты не сможешь\заебешься это делать
Так вместо findByPoo там будет @Query с хорошим умным запросом.
Скорее на энтерпрайз-проектах в целом. Иногда на спринге пишут небольшие бекенды, там не то что дба нет - бекендер только один.
database admin
Только совесть.
А ты попробуй.
Где разница между говном и поносом?
И то и то говно по сути, только одно твердое, а другое жидкое.
Я думаю, что понос по плотности/проценту воды легко выделить. Думаю, точные можно нагуглить, но не хочется.
Так вот как разграничить подмножество поноса энтерпрайза, в множестве говна бекенда?
Это типа брейншторм про перформанс?
Ну а тяжелый-тяжелый веб в общедоступном интернете с большими базами, сложной логикой, большой работой над производительностью и прочее и прочее это не интерпрайз? На чем такие штуки мутятся?
Некоторые приводят в пример фейсбук и твиттер. Это огромные бекенды, но это не тырпрайз.
Я не понимаю что ты хочешь. enterprise и бэкенд это разные вещи вообще. Это разные понятия и я не могу понять как они у тебя связаны в голове. Бэкенд это область разработки. Бэкенд в общем понимании это код, который в первую очередь отвечает за логику, а не за представление. А enterprise это область бизнеса это может вообще никак не связано быть с разработкой ПО.
А если коммитила, но необычный бодишоп.
> Бэкенд в общем понимании это код, который в первую очередь отвечает за логику, а не за представление.
Не совсем. Бэкенд это код который запускается на сервере, а не на клиенте.
Какой-нибудь гугл докс содержит много логики во фронтенде.
Ну а например десктоп приложение? Оно запускается на клиенте, но может передавать какие-то данные или хранить в базе, обрабатывать их. Это не бэкенд разве?
Но в целом да, все правильно. Пост был больше про то, что сравнивать бэкенд и enterprise совсем не корректно.
В десктопе это не называют словом бэкенд, там такой дихотомии прям жесткой нет, просто есть отдельно код UI.
А если речь идет о какой-нибудь нативной разработке под винду, то это просто моё почтение.
Вообще веб петухи не понимают насколько пиздат хтмл.
Ну я понял, просто приебаться решил))))
Бекенд, кмк, это больше про вебо-проекты, где есть морда и серверная часть, а ынтырпрайз может вообще морды не иметь, например.
Например если это телеком или какая-нибудь система анализа данных или еще какая срань. Вот второе я обычно называю ынтырпрайзом, хотя и веб можно так обозвать, если масштабы говнокода солидные.
Не обязательно. У тебя может быть онли мобильное приложение без веба. Но бэкенд у тебя будет. Бэкенд это просто то что на сервере
А зачем, если своего говна полно?
Да.
>А теперь составь таким образом, чтобы сджойнило ещё две таблицы, сгруппировало по полю из третьей, посчитало среднее значение в одной из колонок, не проебало перформанс из-за индексов, и выдало бы результат одной красивой сущностью.
В чем проблема - простые квери делашь этим DSL, йоба запросы с джойнами и группировками - SQL-ем. А Спринг тебе еще их на интрерфейс сможет сам замапить.
Вопрос был: почему все хейтят гибер.
Ответ: гибер пока\никогда не заменит натив. Даже если ты будешь запросы подкидывать ручками через тот же @Query это один фиг будет натив. Хейт скорее не к гиберу, а к вкатышам, которые видят как круто и удобно писать на HQL, JPQL, и из-за этого забивают на изучение SQL. А потом удивляются, почему над ними смеются на собеседовании. Тру стори
Через приватную вкладку открывай.
>Вопрос был: почему все хейтят гибер.
>Ответ: гибер пока\никогда не заменит натив.
Не было там такого вопроса, там вопрос был
>Вот вам не нравится хибер.
>А вот это типа редко используется и мне этот недо-dsl не пригодится?
И ответ - такие вещи покрывают 99% юзкейсов в крудах.
Что касается изучения SQL это общая проблема: мало кто хочет учить основы. Как устроен хешмап еще выучили спасибо, что на всех собесах дрючат, но вот вопрос как быстро найти что-то на указанную дату или ближайшую перед если такой даты нет - уже ставит в тупик 90% кандидатов.
Тут сидят педофилы, которые просят телеграм у молодых вкатышей, якобы для скидывания годных учебных материалов, будь осторожен!
Спасибо!
>составь таким образом, чтобы сджойнило ещё две таблицы, сгруппировало по полю из третьей, посчитало среднее значение в одной из колонок, не проебало перформанс из-за индексов, и выдало бы результат одной красивой сущностью
из всего этого пока не знаю только как не проебать перформанс из-за индексов. я вкачусь?
Да. В общем и целом, я вкатывался вообще с основами. Даже хорошо что не спросили ничего про SQL. Но первые два месяца работы я процентов 30 рабочего времени изучал SQL чтобы я мог что-то делать вменяемое.
Держи
https://youtu.be/39e1vAGD3hg
По индексам. Надо смотреть на 1.25 или 1.5. но очень годный и подробный гайд
О, годнота, спасибо
Че блядь?
Отдавать нужно согласно постфиксу .json или .xml.
Ты что, сучара, разрабатываешь rest endpoints without best practices?
ЭТОМУ ПИДОРУ СМУЗИ НЕ НАЛИВАТЬ, ТОЛЬКО АМЕРИКАНО!
ебать че
Тесты псать не надо. Тестированием пусть занимаются тестировщики.
Я пишу только юнит, мне норм.
Во freemarker приходится по XPath проверять сколько хуйни создалось, json же нету.
Да, вот бы кто-то придумал такую же штуку, как xpath, только для json...
Не шарю за свинг, но гугл говорит, что готового элемента для времени нет, и можно либо шлёпнуть три спиннера рядом, как на пике, либо искать сторонние васянские компоненты.
У меня не Rest, а MVC
Дата у меня вот так добавляется,а как туда время добавить ?
Ну так погугли ещё про форматтеры. Но я бы привел к LocalDateTime.parse()
Если я вот такой учебный проект захочу написать, какие проблемы меня могут ждать?
Уж минорка перед лтс точно не нужна. Главная интрига что будет в 17. Похоже большей части самых хайповых проектов там не будет.
Там внезапно добавят столько синтаксического сахара, что даже котлинисты охуеют.
Заебешься на трех-то делать, хозяин коненчо барен.
>это же рест называется
По сути да, но вот тебе для просветления:
https://s3.amazonaws.com/tfpearsonecollege/bestpractices/RESTful+Best+Practices.pdf
>веб без жс
как ты без жс веб-то сделоешь, именно жс у тебя будет коммуницировать с сервером. можно кончно по релоаду странички загружать штмл с новыми сообщениями и в post форме отправлять новое, но это хуета пиздец лютая.
А свинг-десктоп ёбань кстати, ни биндингов нормальных ни реактивности, ну его нахуй и впезду. Хотя для учебного проекта - сойдет.
Андроид это отдельная экосистема, чтобы толково сделать нужно документации нормально так вздрочнуть. Ну или сделать через жопу.
Вообще нахуя захватывать свинг/веб/андроид и делать это все хуево, если можно сузить стек и сделать более-менее приемлемо.
хочу свои круды маме показать и бабушке
сохранил. Вопрос чисто теоретический. Легко ли сделать чтобы в зависимости от хедеров(типа на свинге - одно, на вебморде - другое) запроса с которого начинается сессия сервер отдавал или
>по релоаду странички загружать штмл с новыми сообщениями и в post форме отправлять новое
для веба без жс.
Или джесонки для свинга.
Юзер агент или еще какой хедер, я хз.
p.s. нафига они вообще сделали возможность объявлять абстрактными методы класса Object, можно ж такую дичь намутить
Для этого есть уже "стандартный" хедер Accept:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept
А так есть целый ряд подходов к этой задаче:
https://www.baeldung.com/spring-mvc-content-negotiation-json-xml
Accept-хедер среди них, нужно сприговый конфиг подправить и оно будет само искать метод контроллера который продьюсит то что надо (как я понял)
Если сделают работу ломбока за ломбок, будет круто. Потому что псевдо-инкапсуляцию с геттерами и сеттерами в рот ебал, как и прописывание ручками конструкторов для final переменных.
Зачем тебе свинг, товарищ?? Ни одного адекватного проекта на нём (кроме IntellijIdea) в данный момент не наблюдается.
Сделай лучше десктоп на electron и это же приложение преврати в фронтенд-приложение 2х зайцев сразу убьёшь
Очевидный хероку.
StackOverflowError получишь. шило на мыло, короче
По аналогии с https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/SpinnerDateModel.html
делаешь свою TimeModel и все.
Потому что по свингу я половину главы прочел в учебнике по кору. А жс я не трогал никогда вообще, код на нем для меня, как кракозябры. Рано или поздно я возьмусь конечно. Но хотелось бы для мотивации чисто быстро смочь это запилить.
И ради этого же хотелось бы научиться деплоить в инторнет. Я думал просто фиксированный ип у провайдера купить, чтобы хоститься из дома и друзьям кидать ссылки на свои "проекты", но походу мой провайдер то ли не предоставляет такое, то ли там еботни по времени будет не меньше, чем научиться наиболее просто деплоить.
Раньше для твоей цели я бы предложил любой хостинг (hetzner например) и docker-compose, но щас наверное за такое заплюют и скажут что надо КУБЕРНЕТЕС для этого.
Хотя как по мне для пет-проекта к8с это оверкилл пиздец.
Хотя пили я такую штуку сейчас я бы поигрался с terraform и Hetzner/Heroku в качестве провайдера.
Зачем покупать, деньги лишние дай мне?
Есть куча триал хостингов и бесплатные тоже есть
google cloud на худой конец
Вот я и спрашиваю. Где бесплатно/дешево. И способ деплоинга самый простой. Я ничего об этом пока не знаю(а там инфы до жопы).
И внешний ип я хотел, потому что там ведь ничего не надо настраивать, насколько я понял. Потому что, когда я запускаю томкат в идее на винде на локалхосте я внутри своей локалки/вайфая могу подключиться по внутреннему ип+ порт. С внешним ип ведь так же будет работать или нет?
Если ты за nat'ом (а это скорее всего так) то тебе в роутере нужно будет пробросить желаемый порт на твою тачку. А так да, должно работать.
Но полезнее думаю поебаться все-таки с удаленным сервером, хоть это и сложнее.
Я позвонил ростелекому и они сказали что около недели будут мне этот ип делать, если закажу. И я прочитал, что они неохотно это все делают и могут нахуевертить всякое. 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) - работа с цветом точки
А ЧТО БЛЯТЬ А КАК
- Дано множество картинок
- Необходимо написать программу на 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 и обновляется раз в сутки)
Пикрил с моего роутера.
https://account.dyn.com/
А еще ты можешь поебаться с ngrok и получить внешний ip на свой комп бесплатно. Но хероку лучше. А потом можно и облачко арендовать, как со всем разберешься.
спасибо. Начну с этого пожалуй.
Нигорок оказался проще чем я думал. Две команды в кмд и микрокруд работает. Медленновато, но для начала то что нужно.
Спасибо.
Не обязательно будет работать и без этого, просто инжекти по типу самого класса. Вообще, интерфейсы для сервисов - это спорная фича Интерфейсы хуярят из-за странного понимания SOLID и чтобы легче было писать моки в юнит-тестах.
Если переменная не константа, то при её требовании в другом классе проходят все статические инициализаторы, а если она константа, то она появляется сразу, без прохода по другим инициализаторам.
Но если ты запрашиваешь константу в psvm методе самого класса, то все статические инициализаторы проходят в любом случае!
Тип переменных, естессно, неважен.
Вот вам и вопрос для собеса, 15ти летние тимлды 300к в наносек, мотайте на ус!
>чтобы легче было писать моки в юнит-тестах
Только для этого и используется так-то.
Вообще, самое удобное использование интерфейсов как контрактов получается с @FeignClient в микросервисах.
В общей либе интерфейсом обозначается контракт со всеми @RequestMapping, путями и прочим. Сервис-пользователь наследует интерфейс фейна от контракта с настройкой в одну строчку. Сервис, предоставляющий функционал, наследует свой контроллер от контракта и имплементит методы. За счет этого получается железная связка между сервисами, и никаких проебов в путях или в том, что какой-то додик удалил рест, который используется в другом месте, больше не будет. Теку с этого пиздец.
@RunWith(SpringRunner.class)
Не могу найти ничего об этом в migration guide
@ExtendsWith()
А про SpringRunner.class который на самом деле SpringJUnit4ClassRunner там нет ничего. Странно.
>>1969771
>>1969850
Гуглите лекцию Борисова про интерфейсы. Очень годно рассказано. Моки и ресты конечно масхэв.
Но расскажу ещё историю из практики. Я работаю на одним продуктом, который используют разные люди, в разных странах.
И в зависимости от требований бизнеса в конкретных случаях, нужно менять поведение приложения. И это дорого стоит. Когда с помощью одной строки в конфиге можно полностью поменять логику работы того или иного сервиса, не меняя ничего в коде, и не меняя логику приложения целиком.
А в реальности класс только один, и в нйм:
if (настройка_нейм_включена) {
одна логика
} else {
другая логика
}
Настройка тоже переключается одной строчкой в конфиге.
Для мелочи да. Есть и такое. Но есть прям огромные модули, которые должны менять поведение. И тогда удобно.
Это кто такие тестовые дает? Гейдев какой нибудь?
Ты бы сам для начала в вопросе разобрался.
Первые 2 пикчи это compile time constant и они инлайнятся во время компиляции.
Если дизасемблировать код TestC то увидишь что константа тупо добавлена в класс и ни к какому полю класса C никто не обращается.
Пик 3 там вообще насрать на тип константы - для выполнения любого метода класса в том числе main он должен быть инициализирован. Более того на старых JDK можно запустить программу вообще без main(), просто пишешь код в static {} инициализаторе, а потом System.exit() и это работало.
500x280, 4:11
>Вот вам и вопрос для собеса
На собесе можно и не так унижать кандидатов, это же как надо заговнокодить чтобы думать что гдето там какието инициализаторы появлялись
Хз, в вебсфере никакого java -jar нет.
То ли ещё будет, когда ты узнаешь, что application.properties можно положить рядом с жарником
Чтобы заставить тебя реализовывать этот метод
>application.properties можно положить рядом с жарником
Но он тогда просто отработает как String[] args, и в main() мы запускаем спринговый run(), который поймет что это и для чего.
Я не тупой.
они там jvm дорабатывают или скучные бизнес-задачи делают? Кому этот сраный бизнес и сраные деньги нужны, конечно они предпочитают копаться в кишочках жабы
Наверняка это для всяких яндексов, где реально очередь за забором из желающих, и приходится искусственно придумывать критерии отсеивания.
Ух, ну разобравшись в кишочках jvm крудошлепить на спринге гораздо задорнее!
Кэш работает для родительской сущности, но не работает для предков
Конструкторов может быть несколько. this ты вызываешь другой конструктор, который подходит по аргументам.
В шарпе это тоже есть, только пишется не первой строчкой в конструкторе, в после двоеточия.
Foo() : this(0) { }
DAO и урл до него указаны в wsdl-файле, который находится в структуре варки (то есть, видно, что он в папке ./classes/wsdl, если открыть развернутое приложение в файловой системе)
Возникают два вопроса:
- а хорошо ли так делать, не хардкод ли это конфига?
и второй из него вытекающий
- если надо поменять урл, куда этот сервис как клиент обращается - это что же, пересобирать что ли эту херобору и редеплоить?
То есть, это перегрузка конструкторов?
И типа тот, у которого в сигнатуре меньше аргументов, просто использует некие дефолты и вызывает в своем теле конструктор с более подробной сигнатурой, если можно так выразиться.
Да, все так
>>1970451
Лол тут же пол труда о том что хибер не нужен, а все норм пацаны грэдлом собирают.
>>1970470
То что конфиг в варке или джаре запечатан и нужен редеплой, это нормально. То что там урлы, которые могут изменится, не совсем нормально. Но зависит от контекста. Если этот урл меняется раз в год, то можно и в конфиге оставить. Но вообще такие настройки, которые могут часто меняется можно хранить в базе. Мы так и делаем. Тогда можно что-то поменять без редеплоя
А есть ли какая-то практика или способ сборки такой, что в итоге получается варка для томката, но с внешним конфигом в виде файлика?
>Лол тут же пол труда о том что хибер не нужен, а все норм пацаны грэдлом собирают
Если делать всё как говорят на имиджбордах, то все программисты бы писали на С, в Vim, на эзотерическом дистрибутиве типа Void, используя исключительно suckless-ПО в работе.
Лучше бы посоветовали книгу, чесслово. Документация на сайтах не располагает к систематическому обучению. Но я уже и без вас нашёл. Зачем вообще спрашивать что-либо на имиджбордах, если ответ не отвечается оригинальностью и информативностью от примитивнейшего чатбота?
хибер ин экшон. Но там как то с одной стороны подробно и много нет. Если бы я ее не бросил на первых 50 страницах я бы на нее одну пару месяцев убил.
Пришел на двач ты, спросить советов мудрых? Сосни-ка хуйца
старое хокку
Практика тебя лучше ста книг обучит. Поэтому нет нормальной книги по спрингу. Дока + практика
Ну например ты знаешь название класса, динамически у тебя пришла строка с его названием. Делаешь Class c = Class.forName("com.package.MyClass"); и у c. потом через class вызываешь конструктор и инициализируешь объект.
>Зачем вообще спрашивать что-либо на имиджбордах
Ну так ты же спрашиваешь, а не мы, так что сам думай, зачем.
В java persistance api и hibernate есть пара глав, которые тупо надо перечитывать (перелистывать) перед каждым важным собесом о гибере, ну и все. А так бесполезно, все на практике узнается.
В свое время мне оч помогла задрочить JPA эта вика:
https://en.wikibooks.org/wiki/Java_Persistence
не помню правда есть ли там что-то по хибе. Но один хуй сперва надо задрочить стандарт а потом уже детали реализации (хоть и фактически единственной используемой, лул)
10 и 11 в версии 2019.
Да и хорошо. А то 50 сообщений в день
Двачую. Больше 40 лет прошло, менялись ОС, парадигмы, подходы, языки, но ничего, что могло бы убить реляционные СУБД и в частности SQL, так и не появилось. Разве что убогие NoSQL, применимые очень ограниченно.
Бесконечные треды не делаем, потому что вдруг в этом говне сохранится что-то полезное для новых поколений? Много смех.
Для бесконечных тредов нужно запилить continuous archivation.
Согласен. Нахуй джаву.
Пошел нахуй.
Иногда вижу в коде Properties, Hashtable и коллекции без дженериков. Хуй знает, откуда это берётся, код относительно свежий, если верить git blame, не больше 7 лет.
Читай про MVC. Принципы не жёсткие, поэтому и отличаются.
Кратко: контроллеры не содержат бизнес-логику и тупо вызывают сервисы, в сервисах бизнес-логика, они вызывают другие сервисы и dao/репозитории, в них уже работа с БД и больше ничего. Сущности и домены (domain objects) - это считай одно и то же, но в основном их называют именно сущностями. Репозиторий отличается от дао тем, что оперирует не напрямую строчками таблицы, а именно понятием сущности и , как правило, использует ORM типа хибернейта. Моделью называют совокупность сущностей/dao/репозиториев/сервисов, то есть всю логику приложения, чтобы отличать это от контроллеров и вью, но это больше про теорию MVC, на практике этот термин звучит редко, обычно используют конкретные понятия "сущность", "сервис" и прочее.
> есть ли трансляторы с Java на различные архитектуры ассемблеров
> также подскажите похожую библиотеку типа Ncurses для жавы
Если у тебя возникают такие вопросы, тебе не нужна жаба, бери плюсы. Есть GraalVM, но она придумана не для замены компилируемых языков.
А в чем преимущество вот этого сервиса? Видел туториалы и без него. Все эти методы определены вообще в спринге. Зачем выделять класс прослойки, если можно заинжектить репозитори в контроллере и вызывать его методы?
Разве что, когда будет большое приложение и в одном методе сервиса нужно будет комбинировать запросы. Или если репозитории будут разные(типа есть имплементация и через жпа и через темплейт под разные задачи). Я не угадал?
Да это понятно что сишку использовать, засел вот за жаву и думал аналоги есть.
Вот еще тупой и типа неважный вопрос.
Если говорить о вот всех паттернах проектирования/архитектурных, то они обычно всегда подразумевают какие-либо оболочки на объектами/конструкторами/етк. Это вообще насколько влияет на производительность - создание оболочки?
Например я спрашивал месяц назад про использование динамического прокси для ди. И там очень значительная разница получилась для создания объектов - в 5-10 раз. Но типа это неважно, так как используется только на старте.
А у обычных всяких паттерновских оболочек без рефлексии эти оболочки отнимают статистически важную часть перфоманса? Лишний вызов промежуточного метода и лишний объект это что такое по памяти/времени?
Это действительно не так важно, если использовать жабу по назначению (бекенд). Практически все проблемы производительности здесь упираются в ввод-вывод, и что с использованием паттернов, что без них - всё работать будет практически с одинаковой скоростью. Можешь замерить, если интересно, но по сравнению даже с одним sql-запросом издержки на лишние объекты практически нулевые.
where id = <id> недорогой при условии индексирования поля. В остальных случаях нужно строить всякие планы запросов и перелопачивать кучу данных
Работа с объектами происходит в ОЗУ, она быстрая. А базе данных приходится лезть на жёсткий диск, который намного медленнее.
А если бд инмемори? Там такая же скорость, что и с объектами или все равно ниже?
Смотря что за БД, в простейшем случае, как в каком-нибудь spring key-value, разницы с объектами не будет.
Писец, когда уже введут указание типа после указания метода / переменной как у всех Белых Людей?
Удваиваю, тоже хочу как в паскале. Также надо сделать джаву регистронезависимой, = надо заменить на :=, а объявление переменных отделить от использования.
это же лишнее слово писать перед типом метода/переменной. Это хуже чем есть в джаве.
Ну иди на кота. Там это есть.
Класть всю БД в in-memory не факт что поможет ускорить твои запросы. Если БД небольшая (100 гигов) и схема БД составлена грамотно, то вполне может хватить хорошего дискового массива. Для больших БД (терабайт и более) тебе просто памяти не хватит.
Надо помнить, что на каждый новый запрос СУБД будет стоить план запроса, а это допонительное время ожидания ЦП.
Мамке твоей раздвинул.
Очевидно, брызжа слюной от ненависти, обосрать ломбок и привести 153 объективных аргумента.
Бойлерплейт это аргумент. Он для этого и сделан, лол. Это все равно что спросить для чего нужен гибер, а потом сказать что "для упрощения работы с сущностями" не аргумент. Короче молодцы. Я бы сам не пошел в такую контору, которая делает выводы о соискателе только на основании его отношения к ломбоку.
> Я бы сам не пошел в такую контору
Двачую. Я бы в целом не стал работать там, где заставляют выполнять лишнюю работу. Например, самому писать геттеры-сеттеры или конструкторы.
>самому писать геттеры-сеттеры или конструкторы
Причем ладно читать, мне же еще это говно читать.
Самое забавное - в ломбоке не так много магии, ведь сгенерированный код легчайше смотрится сорцах билда, если возникает чувство паранойи.
Бля, у меня интервьюер один-в-один выглядел на одном из собесов.
Мапперы должны быть в мапперах
К сожалению, в реальных проектах такое отсутствие бизнес-логики редко встречается.
Не знаю, о ком ты, я так не делаю.
>Надо помнить, что на каждый новый запрос СУБД будет стоить план запроса
Нет. Именно для этого и сделали подстановочные параметры.
Через пизду твоей мамаши.
Ну как что? Согласовывать с аналитиками и писать адовые костыли.
Ну так вот...
есть один проэкт.. суть такова
javafx приложение
нужно выделить отдельный поток под сокет соединение -> потом передать эти данные в контроллер...насколько я могу судить, и оттуда уже выводить данные на ui
как это реализовать? может есть какой-то подходящий шаблон
и вообще что надо знать о потокобезопасности в javafx, я не совсем понимаю как поток ui работает в javafx...
Я готов сейчас же начать учить фх ради тяночки!
@
ПРИКРЕПЛЯЕШЬ ФОТО РАНДОМНОЙ БАБИЩИ ИЗ ВК
@
50 ОТВЕТОВ ЗА ПОЛЧАСА
Лол, ну стоит отметить что ответил в итоге только один пиздоЛис. Остальным похуй на селёдку
Лол. У меня недавно одного знакомого на собес приглашали. Компания пилит десктоп на фх. Знакомый конечно же не прошел, потому что не учил фх. Я понимаю, что таких вакансий 1,5 штуки. Но все же бывает.
От безысходности подался на курсы епама, но, МАМА, Я НЕ ХОЧУ УМИРАТЬ НА 20-ЛЕТНЕМ ЛЕГАСИ, НЕ ИМЕЯ КОММЕРЧЕСКОГО ОПЫТА
Никак, жава мертва.
Но почему же тогда в этом коде я не могу через рефлексию подтвердить, что в B есть поле a?
спс, да, я знал про constant pool,
но как-то забылось, что можно просто обратиться по ссылке к константе даже без статической инициализации всего класса
Я тоже где-то это читал (возможно, не про жабу, а про какие-нибудь кресты), но они таки не наследуются.
А, ну так ты еблан. A.class.getField("a")
Минск.
Нет. Прошел одну стажировку, но у компании нет проектов для джавы, сказали ждать. Везде требуют коммерческий опыт в компании.
1 курс по специальности
А что декомпилировать собрались? Серверную приложуху, к которой всё равно нет доступа? Или говнецо от тех, кто не понимает, что жаба - это не C++?
немного грустно во что превратилась индустрия, не для того я вкатывался, чтобы обслуживать каких-то пидоров с их узколобостью и недальновидностью. может у меня просто патологическая неспособность "работать в коллективе" или как это у вас там называется... софт скиллы)
можно предложить скооперироваться с аноном для создания\развития проджектов, но с таким срачем, вряд ли что-то получится. может поэтому нас и поимели эти менеджеры всех мастей, бюрократы и финансисты
зачем заявлять, что AOT защитит от декомпиляции?
Кабанчик, ты?
не очень охота опенсорс писать. И да - не все приложения могут быть вынесены на сервер.
Такие приложения пишутся на C++. Взял неподходящий язык - ССЗБ.
Если опыта нет, то сложно. Если есть, то вопрос бы не стоял, хех.
Ну вот. Иди на епам. Там получишь опыт, похуй что легаси. Потом начнут брать.
Сколько времени ищешь уже? Если меньше трёх месяцев - то не срок для джуна
А может потому что там деньги платят? А сосать хуй за идею желающих не много
В объекте они и правда будут, но доступ к ним через рефлексию немного хитровыебанный.
Ищу как раз где-то в районе 3-x месяцев. Программирую на спринге в районе 6-ти
> не для того я вкатывался, чтобы обслуживать каких-то пидоров с их узколобостью и недальновидностью
Так и не обслуживай, в чем твоя проблема? Иди и пили свой софт.
Значит что-то делаешь не так.
Ну так бери и пили. И продавай потом сам.
Диванная маня хуева блядь. Кто пробовал подобный движ, тот понимает что это нихуя не просто и риск проебать время впустую (бесценный опыт, конечно же, хуле) - очень высок.
так а почему "проебать время впустую" то? на работе ты не проебываешь время впустую?
На работе тебе деньги дают гарантированно, а здесь немалый шанс самому должным остаться.
как что-то плохое...
а еще тебе гарантированно выебут мозги и скажут что твое место у параши
не хотет
> а еще тебе гарантированно выебут мозги и скажут что твое место у параши
За это хотя бы заплатят, а самому что-то делать - это всё в довесок к долгам будет.
наверное каждому своё и здесь нет какого-то универсального рецепта.
да свой биз предполагает финансовые риски, но и реворд соответствующий
да и нельзя в чем-то упрекать тех кто живет от зарплаты до зарплаты, конечно это 999 итераций ада, из которых не выбраться, но как приятно помечтать о подобном...хех
Тебе уже ответили 10 раз - иди и делай что хочешь, всем похуй. Пили свое.
БРАТЬЯ СЛОВЯНЕ ПОМОГИТЕ
ну по факту просто по уебански пишу туда где актив есть, жопа горит уже от этого говна мёртвого
Ясно, пошел нахуй.
Какие же фронтендеры дегенераты
Фронтендеры автоматически выписываются из русских.
1) @Path("/storage")
2) @Path("/storage/entity1")
Нужно добавить метод с адресом "storage/entity1/action", но так, чтобы он оказался в первом ресурсе. Как можно этого добиться, если второй класс перехватывает у первого все запросы, начинающиеся с "/storage/entity1"?
>>что-то на указанную дату или ближайшую перед если такой даты нет
это типа через if then else запрос написать?
Очевидно, добавить метод во второй класс.
На работе ты получаешь деньги + опыт, в стартапе за свой счет ты получаешь опыт + переработки + стресс (на кону твои деньги, тебе надо решать кучу вопросов, тебе же надо искать команду и быть за нее ответственным), и все это ради маленького (реальне маленького) шанса что что-то взлетит.
По твоему отношению видно только что ты зеленое хуйло, ничего не пробовавшее и готовое лишь на вскукарек.
Мне вообще кажется, что перед открытием своего дела нужно иметь опыт работы в крупном банке, в чужом крупном стартапе и на галере. Желательно тимлидом в 2 из 3. Тогда у собственного стартапа будет хотя бы шанс.
>это типа через if then else запрос написать?
Вот у тебя идут даты
2021-03-04
2021-03-05
2021-03-08
2021-03-09
И тебе приходит запрос на 2021-03-07 - такой даты нет, надо взять ближайшую перед -2021-03-05. Конечно можно тупым переборм если даты нет, уменьшаем на день и пробуем, если нет еще раз уменьшаем и т.д. Но есть структуры данных которые позволяют такие вещи проще реализовывать.
В жабе в смысле в готовом массиве с датами? В каком типе?
Или в джаве в смысле из базы через хибер/спрингдату?
ОК, сформулирую почетче:
- у тебя есть курсы валют от ЦБ на определенную дату
- ЦБ публикует курсы только на рабочие дни
- тебе нужно обрабатывать последние 2 года все влазит в память
- нужно реализовать метод который по указанной дате вернет курс на эту дату или на предыдущую если это выходной
- курсы есть в базе и загружаются в память при старте и потом не меняются
И надо предложить структуру данных куда ты их положишь и код на бумажке как будешь читать, ну и алгоритмичаская сложность, куда же без неё. Если будешь использовать что-то не из состава JDK, то надо объяснить что за структура и как работает.
Блядь, да в какой либе все эти утилы?
Храни все в тримапе
Еще бы.
JdbcTemplate из spring-jdbc:4.2.
Нет.
Жалкий скорострел.
В таком случае можно ли утверждать, что Spring позволяет делать примерно тоже самое, без прямого использования ReflectionAPI?
Мимо другой анон, который еще только учится не бейте сильно
Тебе все правильно написали. Если данные в базе - делаешь ордер и лимит. Либо можно через джойны, но это сложнее будет.
Если в памяти уже - значит тоже сортируй, либо юзай апач. Сложность сам рассчитай.
А если говорить о реальной жизни. У меня на работе есть Currency Loader. Который грузит овер 50 валют разных стран, с сайтов их ЦБ. Любой из этих сайтов имеет возможность получить данные за день, а не за два года. И да, в таком случае мы запрашиваем в цикле за день-n(максимальное количество выходных) пока не придут валидные данные. Не жалуемся.
Читай что такое di, IOC. Да, оба этих паттерна в основном реализуются через рефлексию. И спринг использует ее же в своем подходе. Разница только в том, что ты не пишешь это сам, а уже написано все за тебя.
Спасибо.
Это задача с собеса, а не тикет в спринте. Есть условие и ограничения, берешь и решаешь. Не надо придумывать базы и прочий апач. inb4: не хочешь не решай, я не настаиваю.
Там вообще речь шла про знание базовых структур данных и за все время пережовывания лишь один чел упомянул TreeMap.
Надо.
Да.
>Это задача с собеса
На адекватных собесах как раз слушают, как ты рассуждаешь про базы и апач. Когда васяны пытаются в своих шаражках проводить интервью а-ля гугл - выглядит смешно.
Это как раз тест на адекватность: спросил по алгоритмам - тебе ответили по алгоритмам, спросил про фреймворк - ответили про фреймворк.
А когда спросил простейшую задачку, а тебе начали рассказывать про то что тут у нас будет хадуп из семи залуп, а тут кафка в докере, а докере в куберетисе, а кубернетис в клауде. То значит перед тобой полный неадекват и пора заканчивать.
Ну так и говори: нужно написать адгоритм поиска. Все. Начинаешь зачесывать про бинарные, красно-черные деревья, структуры данных.
Если бы у меня на собесе спросили бы как ты, в контексте решения конкретной проблемы с валютами, я бы привел пример, как я такое уже решал. С базами, апачем, и вот этим всем. В общем научись спрашивать нормально сначала.
Клонировал с их гитхаба проектыч потыкать кнопочки и разобраться что куда, все работает, ошибок нет. НО сама БД-то не подключена! Куда сохраняется говно, которое я ввел в формочки? Куда оно вообще сохранялось с неподключенной БД и почему ничего не упало? В логах пусто.
https://github.com/habuma/spring-in-action-5-samples/tree/master/ch03/tacos-jdbc
Брал отсюда.
В оперативке эта БД.
Знаешь, /pr, по-моему, я схожу с ума...
Дело в том, что иногда по ночам мне кажется, что я яваблядь. Мне хочется выделять память, зарабатывать на доширак, пиздеть про энтерпрайз, сваливать свои проблемы на чужие плечи и писать нечитаемый бессмысленный говнокод.
Я ворочаюсь, страдаю, рычу, а под конец вскакиваю с кровати и хватаю первое, что попалось под руку.
Это может быть тапок, топор или простая поварешка, но в моем воображении она становится огромным прожорливым интерпретатором.
С этим интерпретатором я открываю корпус сервера, ставлю ещё две планки оперативной памяти и с громким боевым кличем выбегаю на улицу. Я бегаю под окнами своих соседей и ору: "Ява не тормозит, тупые нищебляди!! Купите нормальное железо!!"
Но они не покупают... Они привыкли.
И когда я уставший, но довольный, поднимаюсь в квартиру, наоравшись и набегавшись, одна из дверей открывается. Там, лукаво сверкая глазенками, стоит маленький соседский мальчик Женька. Он громко шепчет беззыбым ртом "Клоссплатфолменность!" и ободряюще мигает мне одним глазом.
Я, улыбаясь ему, прохожу мимо, и в душе моей поют заказчики.
А дома я открываю бутылку водки, морщась, выпиваю ее до половины, и ловлю кота. Ругая этого "сраного волосатого индуса", я сажаю его за клавиатуру, и чтобы он не убежал, приматываю его к ней скотчем.
А дальше все просто.
Я стою у окна, пуская скупую быдлокодерскую слезу по своей прыщавой щеке , и мечтаю. Я представляю, что огни домов -- это пламя костров, на которых сжигают жс-пидоров, шум машин -- это рев кулеров в серверных, а в мире нет ничего, кроме великого энтерпрайза и нас, яваблядей...
И я жду, что вдруг, вот сейчас, в мою дверь войдет начальник и скажет: "Эй, раб, ты чо так так долго? Давай, быстро дописывай исходник. Похуй, если будет тормозить - разберутся те, кто будет сопровождать! ГА-га-га-га!" И ободряюще хлопнет меня по спине.
И тогда не будет в мире счастливее человека, чем я... Точнее, явабляди.
Что же мне делать, анон? Что же мне делать?
В оперативке эта БД.
Знаешь, /pr, по-моему, я схожу с ума...
Дело в том, что иногда по ночам мне кажется, что я яваблядь. Мне хочется выделять память, зарабатывать на доширак, пиздеть про энтерпрайз, сваливать свои проблемы на чужие плечи и писать нечитаемый бессмысленный говнокод.
Я ворочаюсь, страдаю, рычу, а под конец вскакиваю с кровати и хватаю первое, что попалось под руку.
Это может быть тапок, топор или простая поварешка, но в моем воображении она становится огромным прожорливым интерпретатором.
С этим интерпретатором я открываю корпус сервера, ставлю ещё две планки оперативной памяти и с громким боевым кличем выбегаю на улицу. Я бегаю под окнами своих соседей и ору: "Ява не тормозит, тупые нищебляди!! Купите нормальное железо!!"
Но они не покупают... Они привыкли.
И когда я уставший, но довольный, поднимаюсь в квартиру, наоравшись и набегавшись, одна из дверей открывается. Там, лукаво сверкая глазенками, стоит маленький соседский мальчик Женька. Он громко шепчет беззыбым ртом "Клоссплатфолменность!" и ободряюще мигает мне одним глазом.
Я, улыбаясь ему, прохожу мимо, и в душе моей поют заказчики.
А дома я открываю бутылку водки, морщась, выпиваю ее до половины, и ловлю кота. Ругая этого "сраного волосатого индуса", я сажаю его за клавиатуру, и чтобы он не убежал, приматываю его к ней скотчем.
А дальше все просто.
Я стою у окна, пуская скупую быдлокодерскую слезу по своей прыщавой щеке , и мечтаю. Я представляю, что огни домов -- это пламя костров, на которых сжигают жс-пидоров, шум машин -- это рев кулеров в серверных, а в мире нет ничего, кроме великого энтерпрайза и нас, яваблядей...
И я жду, что вдруг, вот сейчас, в мою дверь войдет начальник и скажет: "Эй, раб, ты чо так так долго? Давай, быстро дописывай исходник. Похуй, если будет тормозить - разберутся те, кто будет сопровождать! ГА-га-га-га!" И ободряюще хлопнет меня по спине.
И тогда не будет в мире счастливее человека, чем я... Точнее, явабляди.
Что же мне делать, анон? Что же мне делать?
Ну я даже не знаю. Может в базу по умолчанию, которая показывается в логах?
>>НО сама БД-то не подключена! Куда сохраняется говно, которое я ввел в формочки?
У тебя подключена Н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
а где взять файл бд? Это мне надо h2 устанавливать, чтобы он на диск мог сохранять?
>>а где взять файл бд?
сам создается при запуске
>>Это мне надо h2 устанавливать, чтобы он на диск мог сохранять?
ты уже подтянул зависимость в pom.xml, ничего больше ставить не надо
слушай, а эта база в памяти работает все время, а в файл сохраняет только во время остановки приложухи, и из файла читает во время запуска?
Н2 может работать чисто в памяти - режим по умолчанию, а может как очень примитивная реляционная бд с файлом.
Сохраняет данные при записи, если приложуха упадет данные сохранятся, как читает хз, возможно из файла, а может из кеша. Но я не думаю что тебе захочется использовать ее для чего то кроме тестов и небольших приложений, где производительность не важна.
Ну до конца книжки буду использовать. Хотя думал подрубить туда постгрес, но теперь не буду.
А что там сложного? Путь к файлу указать. А лучше по адресу /h2-console открывать.
Зато никакого грязного чтения.
не знаю, можно ли у спринга динамически создавать классы-бины по называнию вообще с нуля, без описания сначала этого бина в контексте Тоесть ты из контекста можешь взять бин по названию, но этот бин сначала вроде бы должен быть описан в конфиге. Поправьте если я не прав.
А способ, который я указал он без создания бинов работает, просто новый инстанс создаешь того класса, название которого приходит.
Да, можно в контекст налету добавить новый бин, о котором при запуске не было ничего известно. Нужно очень редко.
Что значит описать? Берёшь контекст, вызываешь у него специальный метод, первым аргументом указываешь название бина, вторым - произвольный объект, и всё, объект стал обычным бином.
а понятно. Тоесть без описания этого бина в конфигурации обычный объект станет бином, и будет жить в контексте?
А как делать инъекции тогда? когда я описываю бин, там же инжекты тоже прописываются
> Тоесть без описания этого бина в конфигурации обычный объект станет бином, и будет жить в контексте?
Да.
> А как делать инъекции тогда? когда я описываю бин, там же инжекты тоже прописываются
Тут уже хз, не углублялся. Там, вроде, есть способ указать класс вместо объекта, и тогда спринг сам создаст экземпляр и заинжектит в него зависимости, как это делал бы во время запуска.
h2 и докер это разные вещи вопщем-то. Для тест-контейнеров не нужно глубокое знание докера.
>Но я не думаю что тебе захочется использовать ее для чего то кроме тестов и небольших приложений, где производительность не важна.
Я написал про тестконтейнеры к вот этому, безотносительно количества знаний. И понимания докера для тестконтейнеров действительно не требуется.
Да.
Хотя сложно представить несколько микросервисов, когда весь пет-проект - это 5 табличек с парой контроллеров.
>Я для тестов базу данных создал
На своем пет проекте делай как хочешь, хоть вообще тесты не пиши. Мне в работе нравится использовать тестконтейнеры.
Алсо, миграции - тоже код, который должен автоматически тестироваться.
Я как-то пробовал такое. Но правильно написали. Для пет проекта хрень получается. Плюс, если это все же кто-то будет смотреть, придется объяснять почему ты так сделал. Придется пояснять за отказоустойчивость и прочие ништяки. Оно тебе надо?
>>1975449
Да. Кстати звучит так же смешно как и фриланс на жабе.
Хахаха лол как ты смешно пошутил, анон! Я смеюсь.
>>1975459
Я делаю проект по примеру существующих веб сервисов (shopify, cs-cart), смотрю что там есть и пытаюсь повторить, таблиц 60+. Или этого все равно мало?
>>1975449
Ну ты понял что я имею в виду. Немного-энтерпрайз-проект, в который ты вкладываешь все свои знания и на который может взглянуть hr одним глазком.
Жаль нельзя отредачить сообщение, я хотел сказать, что эти две книги надо вместе использовать, 4 для общей инфы, 5 для прорешивания части проекта.
>а который может взглянуть hr одним глазком
Если умеет читать. Если устраиваешься не в мэил, то никто и не посмотрит. Ну или если ты джун.
Почему нет?
Доебаться конечно же могут, но с равной степенью и отметить что у тебя есть хорошие практики.
На основе того же самого туду листа можно показать что ты можешь и в жабку и в котлен и в k8s и в oauth и в vue.js и в sql и в микрошервисы
Это только если они из базы уже отсортированные придут, а в условии об этом он не писал.
do (N) { }
не используя всякие инкрименты и выражения
Нету, юзай for.
Слишком редко используемый кейс.
https://habr.com/ru/post/538280/
Можешь сделать сам, но в офиц. либе пока что range нет.
Получится выражение вида for (int i : range(0, 10))
Но в целом оно тебе нахуй не нужно.
Можешь через стримы сделать
Ну а что ты хотел от туду-листа? Логики там особо нет нихуя, так хоть надо показать что ты чото умеешь интегрировать.
Или ты думаешь что туду-лист - это жидкий подуг мамкиного кодера на свинге в стиле laba1.java?
Как по мне лучше пикрелейткед сделать - проще будет обосновать зачем там спринг и прочее говно. Тут тебе и сжатие с шифрованием и распределенные бд с кешами в тему. Можно хоть до интерпрайз уровня накручивать функционал.
А вот туду на спринге это уровень корпоративного физбаза. да и звучит понтовее, если скажешь сказать что у тебя йоба приложение типа гуглдокса, чем туду как у начинающего жаваскриптера
Туду лист тоже может в эту хуйню уйти - можно и распределенные бд заебошить и сжатие с шифрованием, почему нет то. Туду лист тем и пиздат что расширять его можно до бесконечности. прям как жопу собеседуемого
А чо кстати. Прикольная задачка, и вроде ничего сложного. На выходных даже наверное займусь для тренировки. А то я в свое время делал похожую задачку с сертификатами. Наебался, и в итоге просто закрыл томкат нгинксом и уже туда сертификат впиливал.
Хорстман или Блох. Они переиздаются регулярно, на русском тоже есть.
Я бы перенёс поиск юзеров по товарам в сервис товаров. Юзеры не должны зависеть от товаров, это товары зависят от юзеров.
Ладно, но вопрос тот же - это повод хранить юзеров в сервисе товаров?
Скорее всего это писали, подразумевая под фрилансом всякие фл.ру, где только вёрстка, ворпресс/битрикс/джумла на пхп, 1с, парсинг сайтов и лабы на C++.
По сравнению со всем остальным действительно мало. Проще устроиться в интерпрайз на норм бабки.
Потому что нет фриланса на джаве. Либо 0.0001% от всего фриланса.
Сам кстати брал заказы на фл.ру. За три месяца целый один заказ удалось урвать, за целую тысячу рублей.
По поводу апворка. Так ты зарегайся и глянь что там предлагают.
Типичный фриланс на апворке для джависта:
Требуется джавист с опытом работы 100500 лет, на крупный проект, контракт на 10 лет.
Даже с натяжкой это фрилансом не назовешь.
> Проще устроиться в интерпрайз
Во фриланс обычно лезут не из-за большого желания устраиваться на постоянку.
Фриланс - это почти всегда одноразовая халтурка: взял небольшой заказ, выполнил, сдал, забыл. Проекты для всяких мелких ИП/ООО наподобие сайта-визитки, макроса для экселя или одноразовой обработки каких-то данных. Здесь нет смысла брать постоянного разраба в свой штат, задач для него очень мало, и проще разово кого-то найти на стороне. Подобные проекты почти никогда на жабе не пишут, она для более масштабных вещей, где куча разрабов сидит и годами пилит огромный проект, но в таких случаях свой штат уже есть, и искать кого-то на стороне нет необходимости. Контракты на закрытость кода могут проявляться как следствие ценности таких больших проектов в сравнении с однотипными визитками, которые пишутся за пару дней.
Ну вот этот >>1976741 в общем то правильно написал. Если фриланс и есть, то это либо лаба горит, либо какое-то конкретное редкое решение.
Ну вот сам подумай, что бы ты мог заказать сделать на джаве, чтобы сделали за пару дней, не нужна была бы поддержка(или минимальная), и с чем не справится/будет хуже другой язык?
Жаба это про хайлоад и крупную тырпрайз систему.
Есть конечно биоинформатика, но там нас питон жёстко потеснил.
Ну или например заказчику прям очень надо мультиплатформенное приложение. Шоб и на линухе и на винде работало. Много таких? А сколько разработчиков согласных такое писать?
Что остаётся? Сайтики писать? Визитку и без бэка сделать можно. Чуть сложнее - пыха есть.
Лично у меня есть такой проект, который я веду. Чел заказал сайт. Минимум логики. Задача явно для пыхи. Но я как раз тогда в джаву вкатывался, и сделал на джаве. Моему заказчику было похуй на чем оно. Но многим не похуй. Джаву сложнее и дороже хостить чем пыху.
А где мои обещанные 300к\сек не выходя из комнаты? Это в какой язык надо вкатываться, только веб фронт энд не предлагать.
Кто-то на удалёнке работает, а так да, ебучий офис.
Вкатываться в кобол, работу искать охуеешь, но зато там будешь очень востребованным и высокооплачиваемым.
Сижу на удаленке. Чешу яйца пол дня. Кстати в офис тоже ходил, ничего плохого. Айти офисы это вам не какая-нибудь юридическая компания. У нас и плойка есть, и хавки разной вагон. Зал, теннис, настольные игры, массажное кресло. Так что я бы с удовольствием пошел бы туда, но пока ковидло.
Хуй знает что учить, чтобы бэк и на удаленке. Мож питон тот же? Плюсы?
У меня тоже кстати есть такие микросервисы. Но это нормально. Тут скорее имелось в виду, что нет смысла пилить микросервисы, когда у тебя ВЕСЬ проект это 5 табличек и два контроллера. Явно у вас в банке весь проект - это не один десяток таблиц. И там микросервисы можно хоть как-то оправдать
Нужно настряпать говно-проект для универа, чтобы хоть как-то работал и что-то делал, а я очень туп. ООП, Java, тема "система управления интернет-банком". Можешь подсказать, как примерно бы ты реализовал? С меня как всегда.
Знаю немецкий на уровне б2, подскажите книгу на английский, но не для начинающих
сосачую. Выделять можно только всякие независимые справочники
И правильно делаешь. Вроде как на jug был доклад по этому поводу. Лучше стартануть с монолита, заложиться в архитектуру, что будут микросервисы, и когда взлетит уже распиливать
интересно, откуда у вузовских преподов эта тяга к гигамании.
В качестве дипломного проекта сделайте второй гугл. Или искусственный интеллект
Это даже не диплом, а курсач за третий что ли курс
Так что Блох, что Хорстманн постоянно ссылаются на отличия от плюсов, ты их книги открывал вообще?
Ничего сложного - это пока это тестовая задача или у тебя один сервис. А вот когда у тебя кластеры разных сервисов и во всех надо следить за сроками сертификатов и обновлять их своевременно.
Да ну нахуй!
прочитать хорстмана или шилда
Лол. У нас есть целый сервис, который отслеживает сертификаты. В общем то, если автоматизировать, опять же ничего сложного.
— Почему, мистер Джавист, почему? Во имя чего? Что вы делаете? Зачем, зачем встаете? Зачем продолжаете драться? Неужели вы верите в какую-то миссию, или вам просто страшно погибать? Так в чем же миссия, может быть, вы откроете? Это свобода, правда, может быть, мир, или вы боретесь за любовь? Иллюзии, мистер Джавист, причуды восприятия. Хрупкие попытки вкатиться от слабого человека, который отчаянно пытается оправдать свое существование — бесцельное и бессмысленное! Но они, мистер Джавист, как и ФААНГ, столь же искусственны. Только человек может выдумать скучное и безжизненное понятие — «ТОП-5 айти фирм»! Вам пора это увидеть, мистер Джавист, увидеть и понять! Вы не можете победить, продолжать борьбу бессмысленно. Почему, мистер Джавист, почему вы упорствуете?
На то языке, который изобрела эта кампания.
В Гугле на Яве и Го прикладные сервисы, ну и С++ для системного ПО.
В Фейсбуке ПоХаПэ jон там правда йоба компилируется в натив, С++ и Питон.
В Амазоне в основном Ява для прикладных сервисов, в клауде зоопарк.
Но вообще они на твой язык не смотрят, подразумевается что ты готов учиться их стеку и языкам.
В майкрософте тоже джава есть в подразделениях azure и jClarity!
Джуном можно начинать и до этого. Чем больше пройдешь собесов, тем проще будешь к ним относиться и легче проходить. Лучшая подготовка к собеседованию - другое собеседование.
Просто в моей мухосрани достаточно мало вакансий на джава-стек. А с голой жопой в дс ехать не охота.
Я просто раньше вообще на работу не особо нацелен был, а чисто борщи хлебал. Вот сейчас думаю надо начинать планировать момент, когда будет пора начинать искать работу/стажировку.
Да ну, Джава после С++ кажется обрезанными плюсами для идиотов, у которых отобрали кучу возможностей, чтобы не накосячить.
Псевдокодом.
А то чёт писать Max Min Size и т.п аннотахи дофига. Потом ещё всё равно перемапливать в свою эррор модельку.
Мб есть какие "красивые" решения? С меня как обычно.
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
Сколько я бы не читал про тонкости реализации всякой хрени в языке : в реализации ооп/модели памяти, такая хрень из головы выветривается моментально.
В случае с приведением к интерфейсу код компилится, потому что приводимый тип может быть классом, который наследует от класса Checker и при этом имплементит интерфейс AA
Ну а в случае с приведением к классу A всё изначально и так ясно, Checker не наследует A и соответственно код не компилится
Не сказал бы, что это общеизвестные факты. Не каждый рандомный сеньёр-помидор помнит такие тонкости, люди чаще задрачивают чисто практические методы, необходимые в работе
Сеньоры задрачивпют это перед собесами для тех, кто при подготовке задрачивает то же самое.
Повторять теорию без конкретной цели - очередной вид мазохизма. А находить какие то реальные кейсы использования таких тонкостей реализации это посложнее будет, чем таким вот буквоедством заниматься.
Никому, но надо как-то отсеивать совсем даунов и тех, кто ленится даже к собесу подготовиться, не то что таску вовремя сделать.
>>Java НЕ поддерживает:
>>Multiple inheritance of implementation (возможность наследовать методы от нескольких классов)
наследуйся от нескольких интерефейсов с дефолтными методами
А если в двух интерфейсах есть дефолт метод, который абсолютно идентичен по сигнатуре и типу?
Можно конечно передавать в геттер параметр и в геттере сделать сложную логику проверки этого параметра и только после этого менять нужное поле. Но это говнокод по всем понятиям, нарушает солид, оскорбляет ооп. И все равно это не спасет от рефлешена, который распотрошит любой твой класс.
Читай дальше мурзилки вобщем, вопрос сам собой отпадет.
Очевидная ошибка компиляции.
Вот бы поскорее в интерфейсы добавили конструкторы и нестатические поля
тогда ошибка компиляции, пока не переопределишь его
проверка условия -> код -> инкремент
цикл фор - это то же самое, что
инициализация переменной;
while (условие) {
тело_цикла;
инкремент;
}
Такой синтаксич взят из сишки, а почему в сишке он выглядит так - вопрос к её создателям
Да он вроде и до сишки так выглядел. Тут еще древнее языки надо копать.
Потому что у тебя i не проинициализирован,а у int переменных значение по умолчанию это 0
Проинициализирован, там явно написано int i = 0;
Значение 0 по умолчанию только для полей, для локальныэ переменах чтение до инициализации - это ошибка компиляции.
Я люблю жареную картошку
Потому что у меня такого нет.
единственное что могу сказать - лучше счетчик-каунтер всё-таки использовать локальный, что ты этим собрался считать? что будешь делать с i ?
ну потому что мейн тред
инициализирует переменную
потом входит в цикл фор
выполняет его
выходит и пишет тебе в консольку изначальную переменную
Никак, у класса всегда будет полный доступ ко всем своим данным.
В умных книжках, конечно, говорится, что ООП описывает объекты реального мира, но на практике его нихуя так не используют, и когда объект вызывает свои методы, это не значит, что моделируется ситуация, когда некая реальная сущность что-то делает сама с собой.
Так вот, какая есть альтернатива?
>>есть альтернатива?
https://docs.spring.io/spring-framework/docs/current/reference/html/core.html
Чем официальные доки не устраивают? А потом просто делай пет проекты по гайдам типа баелдунга.
Вошёл в 30 лет. Вообще хз. По ощущениям зумеры не особо помеха. Больше смотрят на знания и навык.
А как я без сеттеров буду значения давать? У меня ведь задача чтобы сэттер был,просто вызывался через объект другого класса
Почему? Я ведь серьезен.
Спросишь "Java или C#?" и джава-треде, ответят "джава", в шарпе скажут, что шарп. Логично же.
Пилим большие проекты внутреннего пользования - банковские системы, учёт всякой хуйни, автоматизация бизнес-процессов.
AbstractSingletonProxyFactoryBean
Итак, этот тред является Храмом AbstractSingletonProxyFactoryBean. Я расскажу немного о AbstractSingletonProxyFactoryBean для тех, кто ещё с ней незнаком.
Имя человека, который впервые открыл миру знание о Боге-AbstractSingletonProxyFactoryBean неизвестно, это был истинный анонимус. Я буду называть его Пророк.
Однажды Пророк создал тред, в котором запостил ОП-пик, и сказал, что AbstractSingletonProxyFactoryBean найдёт элемент в массиве, стоит лишь его попросить, и наложит проклятие вечного ArrayIndexOutOfBoundsException, если проигнорировать его щедрый дар. Писали многие. Не писали тоже многие. И вдруг оказалось, что AbstractSingletonProxyFactoryBean действительно находит элементы в массиве для своих последователей. Кому-то быстро (Как анону, который на следующий же день нашёл элемент с индексом 0), кому-то долго, но находит. С каждым новым последователем сила AbstractSingletonProxyFactoryBean всё росла, и теперь каждый попросивший анон получает желаемое. Я не знаю, можно ли просить у AbstractSingletonProxyFactoryBean кроме поиска м массиве и другие блага, каждый из вас может попробовать.
Так я в оба треда и написал. Ну мало ли, может есть перекатившиеся, причины там почему скажут или просто люди имеющие опыт направят. Просто все говорят что джава это почти всегда легаси, это так? Так что точно пилите?
Пилят на жабе новые проекты. Легаси - не значит устарело, а скорее то, что нужно поддерживать и дорабатывать. Заниматься написанием новых проектов придётся реже, чем доработкой существующих, и это не черта джавы, а любых языков, где нет такого, что писал проект месяц, сдал и забыл, как в каком-нибудь пхп. В жабе же это ощущается сильнее всего, ибо очень много проектов, которые начали писать не полгода-год назад, а давным-давно.
А в чем разница между двумя стеками?
>>Имя человека, который впервые открыл миру знание о Боге-AbstractSingletonProxyFactoryBean неизвестно
Вы там совсем охуели, блять?
чем она кал то?
Не нужны никакие кучи, джава это все делает сама.
Это не С/С++, где нет сборщика мусора и надо загоняться по такому поводу.
> Juergen Hoeller is co-founder of the Spring Framework open source project
Тогда уж надо найти того, кто придумал J2EE 1 или кто запилил первую реализацию.
Байтоебство в джаве это скорее уровень помидора.
>>ссылок на объекты, выделяемую память, и автоупаковку/автораспаковку значений базового типа в/из объекты-оболочки, столкнулся не то чтобы с непониманием, о чём идет речь - в общих чертах мне всё понятно, но с явной нехваткой фундаментальных знаний.
Так это в любой книге для начинающих - устройство жвм. Там тебе распишут хип, стек, поколения и тп. А читать байткод тебе нахуй не надо.
Но тот класс появился не в ЕЕ, а в Spring Framework 2
В субботу меньше всего постов. Вывод - итт много евреев.
Открываешь просто гайды и читаешь. Тебе такого не хватает, чтоб понять как фичу запилить?
https://www.baeldung.com/spring-security-basic-authentication
А за бабло там какой то курс с исходниками и всякими видео. Если что они на торрентах валяются давно, можешь глянуть че там.
Получается, самые сложные рабочие дни - пн и среда, как все и думали.
чел ты...
Это не поможет же.
Есть конечно большие компании типа ебама, которые берут нулевых студентов и выращивают их в джунов знаю множество людей, что так вкатились, но я уже такое не рассматриваю, так как с работой такие курсы не совместишь.
Да и вообще джаву особо не рассматриваю, но интересно развеять для себя некоторые мифы
Смотря какой бекграунд, я за полгода вкатился, до этого учил плюсы и питон.
То есть со свингом и SQL ты разобрался сам, а загуглить "java convert util date to sql date" ты не можешь?
Просто всех очень заебали 100500 классов для дат, вот все и юзают первый попавшийся в учебнике, и похуй, что идея зачёркивает deprecated. Хуже только ебля со строками в C++.
Я либо совсем аутист,либо еще что-то,но все что я прочитал на стаковерфлоу мне не помогло. Я уже гонял всякие parse и valueOf на разных форматах и что-то результатов не дало.
Да я чет не подумал,начал писать и как-то по дефолту мозг выдал,что для даты формат Date,логично хули. А сейчас вот начал дальше делать и всплыла вот такая беда
Он не deprecated, как класс, но половина методов таки помечена, да.
Самый простой, чтоб мозгу не ебать.
Опять эти апачи...
Но это по прежнему самая популярная книга по самому популярному фреймворку. Большие тиражи, влиятельное издательство.
А ты аноним из русскоязычной аиб.
неиронично так, в отличии от постов на сосаке.
В разных интерфейсах и абстрактных методах могут находиться методы с одинаковыми сигнатурами, но разными возвращаемыми типами.
Если экстендить и имплементировать такие абстрактные классы и интерфейсы в 1м классе, то невозможно заоверрайдить такие методы и не получить ошибку компиляции.
и че
Редко, но если нужен только DI и не лень заморачиваться, то бывает. Или есть специфичные подходы к работе - когда контекст подымается и останавливается из кода.
по жава кор больше половины - норм, выбирай любой кроме гикбрейнс
Метод ставит null чтобы показать границу скопированного в массив листа.
А если б мне нужно было то значение из массива, которое затёрлось?
Полностью поддерживаю - быстро вывалился в сегфол, быстро запустил заново.
С таким же успехом ты можешь сделать 2 интерфейса с конфликтующими сигнатурами и ты не сможешь никак заимплементить оба.
Я знаю, это чисто для разнообразия, ведь и в абстрактном классе и в интерфейсе мы имеем дело с абстрактными методами
хех, какая быстрая капитуляция и подрыв
Ну допустим клиент отправляет особенный заголовок: когда и где мне вмешаться?
Например, через фильтр можно, но допустимо ли это с архитектурной точки зрения (я получается прямо в поток вывода пишу, хотя тут хорошо, что я явно обрываю цепочку)?
Я если что честно пытался прочитать доки, но невероятно заебался и решил сразу писать пет-проект: теперь вот страдаю.
Sir Nagoor Babu
Я тян
Посоветуйте книг по джаве для тянучки. Не хочу во фронтенд. На русском, пожалуйста
ладно, не тян
Здесь нет тянов и кунов, мы не в /me/.
Качаешь
Jdk 11 и Intellij Idea Community
туториал
https://metanit.com/java/tutorial/
если мало глубины
https://rutracker.org/forum/viewtopic.php?t=5305854
если нужны задачи, чтобы хорошо усваивалось (но только задачи, лекции там говно)
https://stepik.org/course/10498/syllabus
https://stepik.org/course/187/syllabus
https://stepik.org/course/2403/syllabus
Лекции для закрепления
https://www.youtube.com/playlist?list=PLm2nrlGYLq1Uv1qYpqMC07JYoOXilEQZI
https://www.youtube.com/watch?v=5Z5MKzbVsDc&t
Вот еще видео о введении в специальность джависта.
Суп, вечерний утренник, нахожись в процессе вката в java, уже знаю core, ооп, spring core, spring boot. Решил, что следует сделать пару собственных проэктов, залить их на гитхаб, дабы привлечь внимание будущих работодателей. В связи с чем вопрос: как выделиться на фоне других соискателей, какие проэкты лучше иметь на гитхабе? короче, дайте советов по этому делу.
А ну да, на счет английского - он у меня очень даже хороший, в свое время закончил два курса по специальности "перевод и переводоведение" в одном из топовых лингвистических вузов московии.
Кстати, в 3.8 будет пердольство. Теперь если хоть одна из зависимостей имеет репозиторий без https, проект не будет собираться. Какую-то уязвимость в мавене нашли. А я думал хули идея начала предупреждать при открытии мавен проектов. Градл лучше.
>Теперь если хоть одна из зависимостей имеет репозиторий без https
Нахуй вообще нужны зависимости не из мавен централ?
Так это тот же make, только хмлем.
Компания: 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 и определенных на проекте методологий разработки;
✅ Создание и обновление документации;
✅ Выявление слабых мест и багов, поиск оптимальных путей их оптимизации и устранения.
✅ Разработка новых функций усовершенствования для существующих продуктов и систем;
✅ Сотрудничество с бизнес аналитиками, дизайнерами, тестировщиками и продакт овнерамы для эффективной реализации процесса разработки.
Ебать требования, 10+ лет на жопе минимум
Компания: 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 и определенных на проекте методологий разработки;
✅ Создание и обновление документации;
✅ Выявление слабых мест и багов, поиск оптимальных путей их оптимизации и устранения.
✅ Разработка новых функций усовершенствования для существующих продуктов и систем;
✅ Сотрудничество с бизнес аналитиками, дизайнерами, тестировщиками и продакт овнерамы для эффективной реализации процесса разработки.
Ебать требования, 10+ лет на жопе минимум
Нет, я с жаважоб чата переслал стену текста оценить требования
>Также компания сотрудничает как SasS с мировыми гигантами фарм. промышленности и медицины.
Sass — модуль, включенный в Haml. Sass — это метаязык на основе CSS, предназначенный для увеличения уровня абстракции CSS-кода и упрощения файлов каскадных таблиц стилей.
Sass - это дерзость.
>Требования к кандидатам достаточно высоки, однако плюс в том, что Вы можете рассчитывать на то, что окажетесь в команде действительно профессиональных коллег, которые готовы делиться своим опытом
Еблан, нахуя автовайрд на геттере?
>Еблан
На дваче можно не представляться.
>нахуя автовайрд на геттере?
Депенденси инжектить ежи.
А давно джава кор отделили от колекций, ооп, ждбц? Ну и дженкинс на равне с гитом это конечно сильно.
Вакансии то наверное трудно глянуть и прочитать что знать надо
Рот закрой не позорься
А потом такие кричат что ломбок им все сломал
Так это все равно часть кора. Также как и коллекции, стримы, многопоточность. Не кор - это уже сервлеты, жпа и тп.
В sql таблице конечно же
Ой точно,сейчас попробую
А ещё говорят, что логгеров дохуя. Куда там логгерам до sql.Date/util.Date/Calendar/Instant/ZonedDateTime/LocalDate/LocalTime/LocalDateTime/XMLGregorianCalendar/Timestamp.
Не перезванивайте мне блять.
В том, что с налогами придется ебаться самому, а это сложно. А так просто больше денег получаешь. А на пенсию и прочее и так не надейся - откладывай прямо сейчас, причем желательно в долларах и не в российских банках.
Именно так.
>Кроме java.util.Date ничего нахуй не нужно. Ну и Instant еще.
java.util.Date - не нужен, он mutable и по сути просто враппер для epoch millis. Вот ZonedDateTime - да это правильно и понятно, есть дата время, есть таймзона можно брать и показывать пользователю.
Instant - сойдет как типизированный враппер для epoch millis.
Для новых вещей юзай новый java.time, а легаси потихоньку переписывай.
>методы с одинаковыми сигнатурами, но разными возвращаемыми типами.
Ну кстати на уровне JVM это не запрещено. Там всё равно для каждого метода свой дескриптор создаётся и по нему вызов идёт. Вообще весь boxing и unboxing внутри на этом построен.
Я просто выпустился прошлым летом из техвуза по спецухе автоматизации производств, но с эмбеддом ковыряться не очень интересно, вот думаю теперь с низов начинать. Плюс друг резюме просит прислать, у них набор тестировщиков идет, а я как-бы тесты никогда и не писал, не хочу его подводить.
Учи кукумбер и ему подобные
Погугли, как пишут тестовые сценарии, и на тестировщика джуна сойдешь. Алсо, ты и на стажера джависта сойдешь, если на собесе повезет.
Ну и как на этого стажера попасть, долбиться во все вакухи на ХХ которые требуют "без опыта" и "1 год" на авось?
>Как легко залететь на тестировщика по Жаве? Все, что я знаю это английский, Java Core (без многопоточки и конкарренси), базовый SQL + юзал MySQL, ковырял сервлеты, не боюсь линукса и даже слепил говна по книге Spring In Action.
Мы таких брали на junior SDET. Рассказать базовые вещи про тестирование, написать на бумажке простенький код, ну и вы приняты.
Мамка прокормит, я уже дома сидеть не могу просто.
если хороший английский то это большое преимущество. Можешь на кодера аплаиться
>java.util.Date - не нужен, он mutable и по сути просто враппер для epoch millis.
А где недостатки-то?
1. https://ru.stackoverflow.com/questions/638974/Является-ли-изменение-состояния-объекта-проблемой
2. Конкретно java.util.Date уебищный потому что это не дата (как следует из названия), а instant.
public static java.sql.Date toSql(java.util.Date date) {
return new java.sql.Date(date.getTime());
}
Великая мудрость апачей заключена в этом посте.
Зачем Apache Commons, если есть hk.dvach:dvach-commons?
Бля братик,дай бог здоровья,это работает хоть и не сохраняет время. Ты случайно не знаешь как исправить?
Сколько опыта себе нарисовать, чтоб сойти за джуна с опытом?
> нарисовать
Скорее всего тебе не поверят. Опыт - это не про круды и экзекуторы, а про применение всего этого в реальных бизнес-кейсах.
Заменил на таймстемп,но программа по какой-то причине все равно ожидает Дату
вместо setDate сделай setTimestamp
Штош
Согласен, это полный пиздец. Как же жава неприятна в таких вещах своим легаси, в отличии от более новых языков, где всё четко.
Оухенный ты ему совет дал. И еще несколько лямов сверху на хату в дсах пусть не забудет с собой прихватить.
Как будто он первый кто переезжает. Вначале будет снимать, потом ебатека или вообше трактор заведет.
Я тоже так планирую. Отложил подушку 150к+ на житие, пока будет первые месяцы зарплата мизерная. Чтобы брать, если не хватать будет.
Это новве незакоммиченные файлы.
тестовые файлы идея так помечает
Битовые поля когда в жабу завезут???
Спасибо, буду пробовать
для своих проджектов ничего такого не требуется
да и тащем-та многие шаблоны дурно пахнут, всё это кажется каким-то избыточным в коде
ЧЯДНТ?
тут какой-то анон постоянно постит примеры с наследованями, вот и задумался
Пиши в блокноте, хули, если вайтборд собесов так боишься.
дык а че он там пишет за тебя? кроме автоиморта и подстановки переменных. в ручную ты заебешься каждый раз набирать AbstractSingletonProxyFactoryBean
дык ходи на собесы, делай тестовые, в чем проблема
Это копия, сохраненная 21 мая 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.