Вы видите копию треда, сохраненную 18 апреля 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
Где онемэ, блять?
оракловских туториалов наверни и жабадок параллельно
У того же Хорстманна есть Java for the Impatient
Не прям всё надо обязательно знать, но и писать как на джаве нельзя. Я бы прочитал всё, но без задрачивания, а затем бы поискал пет-проекты на js на гитхабе и посмотрел в них, что реально юзается.
Ну я так и думал.. Как же лень его учить.
Нет, на го переходит.
а, чет я проебался слегка. вот бы на свеженький лтс переити с заубавшей восьмерочки... эх....
год
и loom...
Микросервисы на Java EE.
>подскажите что нужно дрочить
хуй
>как набрать знаний
никак
>устроиться на работу
работобляди не нужны
Ок, спасибо!
Английский хотя бы до B1, дальше какой-нибудь Хорстманн, что-нибудь по SQL и спрингу, пара пет-проектов, и всё.
computer science
Накляузничено.
Вот, например, этот файл, он соответствует стандарту ISA-95?
https://gist.github.com/jerdys/604b4494e9a09790a937b077c8437d64
Есть один жарник, которого нет в Maven Central, хочу его добавить в проект, но чтобы и на тестовых и прод серверах все ок работало.
Добавил в проект, в директорию ${project.basedir}/lib/xyita/xyita-name-14.8.8.jar, прописал билд
<build>
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<file>${project.basedir}/lib/b2mml4j/B2MML4j-1.0.0.jar</file>
<groupId>org.xyu.xyita</groupId>
<artifactId>xyita-name</artifactId>
<version>14.8.8</version>
<packaging>jar</packaging>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Все ок, билд прошел. Пытаюсь добавить классы из этой зависимости в проекте – нихуя, идея не видит. Я долбоеб? Да.
ЧЯДНТ? И вообще, как лучше добавлять подобные зависимости, шоб они не только локально работали?
Есть один жарник, которого нет в Maven Central, хочу его добавить в проект, но чтобы и на тестовых и прод серверах все ок работало.
Добавил в проект, в директорию ${project.basedir}/lib/xyita/xyita-name-14.8.8.jar, прописал билд
<build>
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<file>${project.basedir}/lib/b2mml4j/B2MML4j-1.0.0.jar</file>
<groupId>org.xyu.xyita</groupId>
<artifactId>xyita-name</artifactId>
<version>14.8.8</version>
<packaging>jar</packaging>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Все ок, билд прошел. Пытаюсь добавить классы из этой зависимости в проекте – нихуя, идея не видит. Я долбоеб? Да.
ЧЯДНТ? И вообще, как лучше добавлять подобные зависимости, шоб они не только локально работали?
По хорошему - надо ставить свой прокси репозиторий Nexus/Artifactory и класть такие зависимости туда.
А так можешь попробовать добавить зависимость с scope - system
Да, хороший язык, полная свобода действий - можно писать на груви, а можно не писать на нём.
Ну, нет смысла писать на джаве, когда можно писать на груви. Там-то, в отличие от Котлина, 100% интероп с джавой.
Конечно же, смысл есть. В джаве статическая типизация, которая исключает множество трудноуловимых ошибок.
Который, конечно же, пишут везде и всегда.
Ладно, я уже сотни раз срался на эту тему, мне надоело.
Нет, пишут только там, где нет уверенности в том, что не нарвешься на эксепшены. Голову-то надо включать, когда код пишешь.
В спринге не только ORM, но и JdbcTemplate и ещё куча всего, там чистый SQL. ORM не означает отказ от SQL, в реальных проектах их используют совместно.
На чистом коре далеко не разгуляешься, учи упомянутый тобой спринг, затем пиши какой-нибудь круд-форум-борду-магазин (или что-нибудь поинтереснее, если есть фантазия).
Опечатался в ветке которая не покрыта тестами - и
Hello MissingPropertyException my old friend.
Мимо асмоеб-питонист
Перетолстил, бро.
Почему тебе не похуй?
Учи учи
Привыкай к строгой типизации, не будешь либерахой как питонисты.
Эти вообще метаются туда сюда
Хочу стринг, а потом хочу стринг в инт или в байт
говорю же либерахи
Так в чем минусы синтаксиса джавы? Мне просто интересно, я других языков то и не видел почти.
У меня пока бомбит только от генериков в сложных случаях применения(рефлексия, каррирование), голову просто сломишь. Но не уверен, что это минус, возможно для меня, как для ньюфага сложно.
Ну и большое количество бойлерплейта для самой маленькой задачи просто убедило писать его через генерацию в идее. Писать джава-код в блокноте это мучение.
Ну и половина тем в курсе по джава кору это преодоление этой самой статической типизации.
Есть один XML файл, есть один POJO класс, сгенеренный по XSD. Хочу данные с XML скастить в имеющийся класс и все заебись, но только при работе с локальным файлом. Как только я пытаюсь с интернетов скочать тот же самый файл и прогнать через JAXB в нужный мне класс – ХУЙ. Все поля null. Почему так нахуй?
Сам метод – https://pastebin.com/e8ZT8CwJ
XML – https://gist.githubusercontent.com/jerdys/e73a61c5bab1d5abfc3bfd07cd8d067d/raw/361dd43012015feff9a7eafe84725d3b7500b302/INV-20121210175555-0001L0001_01.xml
Есть опенсорс проекты на Spring Boot, чтобы увидеть как это должно выглядеть? Гугл дает конечно, но там дрисня индусская, реальные проекты есть? Или все написано сейчас на джеэсовских фреймворках без капли джавы
Ищи на гитхабе в поиске.
Найди отличия, как говорится
IntStream.range(1, 10).forEach(i -> System.out.println((float)i));
СтажировОчка. Если твой вуз не дно, то она должна быть.
Ты вообще нихуя не то написал.
Просто циклы со счетчиком не надо писать на стримах, вот и все.
>Так в чем минусы синтаксиса джавы? Мне просто интересно, я других языков то и не видел почти.
Ты сам знаешь:
>Ну и большое количество бойлерплейта для самой маленькой задачи просто убедило писать его через генерацию в идее. Писать джава-код в блокноте это мучение.
>У меня пока бомбит только от генериков в сложных случаях применения(рефлексия, каррирование), голову просто сломишь. Но не уверен, что это минус, возможно для меня, как для ньюфага сложно.
Для ньюфага дженерики и рефлексия нахуй не нужны.
Недостатки джавы являются продолжением достоинств.
Джава - простой язык, совершенно лишённый двусмысленности.
Опытный программист читает его просто боковым зрением на автопилоте.
Это вообще единственный такой язык, в этом и причина популярности.
Несравнимая с другими языками инструментальная поддержка - тоже по этой причине.
Оборотная сторона - многословность и некоторая дубовость.
Тяжело писать сложный код без IDE.
Зато с IDE писать - одно удовольствие.
Если бы this-типы сделали, было бы вообще охуенно.
>Джава - простой язык, совершенно лишённый двусмысленности.
>Опытный программист читает его просто боковым зрением на автопилоте.
А вот это двачую, даже говнокод читается легко. Чего не скажешь о собратьях спецсимвольных, особенно когда кодер экономит буквы.
>Джава - простой язык, совершенно лишённый двусмысленности.
Можно примеры о какой двусмысленности/сложности других популярных языков идет речь?
А поебацца вам не завернуть?
Это очень сложно в двух словах объяснить ньюфагу.
Загугли scala dreaded underscore, например.
>го
.Методы
.С
.Большой
.Буквы
Гуглопидары в своём репертуаре.
Просто не могут в юзабилити, блядь, вообще никак, ни одного исключения не знаю.
Я реально люто проигрываю с этих их проверок err, какое же убожество.
>Отправил резюме на саппорта, сделал тестовое (чисто саппорт, ни веба, нихуя такого не было), потом было интервью, спросили "крч а если ты сисодмен, сможешь доп задания по-техничней сделать?"
Ну я прикинул писю к носу, ни суть, делаю.
Все остальное сделал, а вот этот момент смутил, хули от меня хотят?
Поднять локально сервер (чек, на экспрессе), парсить json пост запросы по рутам(чек, express.json), а потом вот эта.
Печатать на экран в смысле? Вывод в консоли? Постман ответ получает, это сделал, или страничку хтмл генерить с ответом что-ли? Отвечать в них? В смысле мне надо рядом ок вывести, или хранить и апдейтить их, добавляя поле посткода?
Бляяяяяя, я ебанулся, самоудаляюсь из треда
>Зато с IDE писать - одно удовольствие
И даже когда надо многоступенчатую проверку на null расписать? Или телескопический конструктор. Или какое-нибудь collect(Collectors.groupingBy(
Checked exceptions вообще за гранью добра и зла, они почти как прокидывание ошибок в Go.
Джавараш такое себе... Там наилегчайшие темы разбираются по несколько уроков. В то время, пока вы в джавараше изучали консольный вывод на экран, вы бы уже могли изучать хотя бы те же переменные, условия, если повезёт - циклы
Есть бесконечное количество шитпостов, требуется написать фильтр для их отсеивания, у вас секунда.
Они и есть прокидывание ошибок в го, только в нормальном (нет) варианте.
Это когда в дженериках можно ссылаться на тип данного класса по специальному символу, типа This.
В простых случаях это не нужно, а в сложных - охуенная фича была бы.
Пример приводить лень.
Это гуглится.
Вообще всё не так.
1. В буте ты всегда можешь открыть пом.хмл и дописать зависимости, просто в буте они заранее подобраны с нужными версиями + юзается плагин spring-boot-maven-plugin для поиска точки входа и упаковки в жарник/варник. Без бута это всё придутся делать руками.
2. У бута куча автоконфигураций, которые без него надо настраивать вручную.
3. У бута есть встроенный контейнер сервлетов, по умолчанию Tomcat, и для запуска не нужно тащить отдельно сервер приложений и деплоить варник. Хотя можно и вручную заэмбеддить томкат в обычном спринге, это достаточно больно.
4. Можно и обычный спринг конфигурировать без xml, аннотации там тоже поддерживаются.
Профит не брать бут может быть, когда у тебя большой, где очень много всего кастомизируется, и бут там только помешает. Бут скорее ориентирован на микросервисы, чем на подобное.
This-типы это не про алиасы, это другое.
Это когда ты в суперклассе можешь сослаться на тип (неизвестного тебе сейчас) субкласса.
>когда у тебя большой
Сколько см?
>где очень много всего кастомизируется, и бут там только помешает
Чем помешает? Скорее, там не будет пользы от автоконфигов, они будут отключены (зачастую опять же автоматически). Но останется профит от того же встроенного сервера, от каких-то еще дополнительных плюшек типа актуатора.
Вообще часто слышу мантру "бут ориентирован на микросервисы", но не понимаю, почему в монолите смысл бута должен куда-то исчезнуть.
Ну собственно бут и нужен был, чтобы легко ебануть микросервис, с чем в общем-то бут справляется, хоть и все равно с некоторым бойлерплейтом. Но это конечно смотря с чем сравнить. Без бута, это уже микросервисом назвать язык не поворачивается.
Просто когда не было спринг бут, на спринге микросервис сделать было не дело 5 минут. Так-то почему бы и не заюзать его в монолите. Просто до того как микросервисы стали модны, никакого же бута не было, а спринг фреймворк вполне себе был состоявшимся(3 кажется версии уже)
> Сколько см?
"Большой" монолит - это просто противопоставление "маленькому" микросервису. Грань между монолитом и микросервисом - классический срач, так что комментировать не стану.
> Чем помешает? Скорее, там не будет пользы от автоконфигов, они будут отключены (зачастую опять же автоматически). Но останется профит от того же встроенного сервера, от каких-то еще дополнительных плюшек типа актуатора.
В монолите редко один жарник со встроенным сервером, обычно там большой EE-сервер приложений с соответствующими приблудами вроде JMS и JNDI. А если ещё и аатоконфигурацию отключить, от бута почти ничего и не остаётся.
Вот ты сначала сам соглашаешься, что грань размыта, а потом рисуешь картину мира, где есть либо монструозное легаси-EE, либо микро. Ну ничего же нам не мешает сделать монолит (или не-такой-уж-микро сервис) в виде джарника, если мы считаем, что так нужно.
Конечно, размыта, это просто два полюса. Чем монструознее легаси-ЕЕ - тем оно меньше располагает к использованию boot. Там часто и спринг до пятого просто так не обновишь, что там бут.
Тащемта, подход го - это unchecked expections, потому что ты никогда не знаешь, что тебе там прилетит. И это кстати очень больно, потому что в го нет даже аннотаций нормальных и ты, заложившись на то, что тебе приходит какой-нибудь sql.ErrNoRows можешь внезапно на проде обнаружить, что тебе начало приходить что-то другое из-за того, что на промежуточном слое кто-то начал врапать ошибку. И никакие линтеры (хотя бы) такое не отловят =/
В этом, собственно, и минус UncheckedExpections - хуй его знает, что там вообще вылетает, ты никогда не уверен на 100%, код становится менее надёжным, нарушается принцип "собралось - значит работает".
У checked exceptions есть только один минус (который и определил нелюбовь к ним, ну, помимо говнокодеров, которым чем проще - тем лучше), это неудобство (а точнее - невозможность) в использовании функциональщины и анонимок с таким подходом.
Истина имхо где-то посередине: ошибки однозначно должны выводиться из сигнатур функций, чтобы можно было компайл-тайм выводить типы и проверять валидность кода и проверок. Но при этом это не должно требовать описаний всех возможных ситуаций при объявлении функций, скорее компилятор должен сам на этапе написания fooA(fooB()) вывести, какая из функций какую вызывает, где и как врапаются ошибки и что вообще может из этого выйти в итоге.
Ну и обработка ещё, ошибки неудобно врапать каждый раз, исключения неудобно отлавливать в случае сложного кода.
>У checked exceptions есть только один минус, это неудобство в использовании функциональщины
Не, и до функциональщины мало кого радовала необходимость постоянно либо оборачивать, либо прописывать в throws какой-нибудь SQLException.
checked exceptions имхо были бы ок, если бы они были только механизмом, который я могу сам применить для своих кастомных исключений. Тогда я это буду делать только там, где действительно мне нужна осмысленная обработка разных ситуаций. По факту же мы имеем стандартную либу, из которой везде торчать всякие IOException, с которыми я в 90% ничего все равно не могу ничего сделать, кроме как сломаться (пробросить выше), но возиться приходится.
Наняли дурачка, который за 2к напишет им хороших отзывов. Плохих нет потому, что лохи еще не клевали на наживку.
>>847213
У меня друг пошел на эти курсы, ну где то недели 2-3 назад, говорит вот все хорошо, типа общался с выпускниками, все довольны, сидят лутают 300кк/нс. Вот я и начал задумываться, может и вправду все так хорошо
А если не по курсам то как? Что нужно учить чтобы взяли работать за еду хотя бы
У меня ссылка из шапки не открывается:э
> мы не стали использовать Hibernate и Spring Data потому что это было бы оверхедом
И теперь тут куча бойлерпрейта для работы с БД, при чём большая часть запросов — простые и Spring Data мог бы делать их из коробки в одну строку. А ещё по классу для каждой сущности для конвертации row из БД в объект.
Они ебанутые или да?
abcde -> abc, bcd, de
Сам свою лабу делай.
Почему? ORM позволяет тебе сэкономить кучу времени, а Spring Data во многих случаях вообще убирает код в слое работы с БД. При этом всегда есть опция использовать нативные запросы, если нужно делать какой-то дохуя сложный запрос.
> а в сложных - охуенная фича была бы
Это каких случаях? Когда часто-часто переименовываешь класс вручную без использования переименования в IDE? Да, сложный случай. Я бы даже сказал - тяжёлый.
В джава кор тебе хватит хорстманна. Только это совсем не вкат в энтерпрайз. Spring in action, concurrency in practice. Я катился так.
Алсо очень простые уроки для начала с низов thenewboston на ютубе. Короткие видео, от которых спать не хочется
> плюсов
Ну тогда не быстро, а очень быстро. Пролистай Хорстманна и можешь начинать тыкать спринг.
Пружинка.
Так бля сразу в спринг вкатывайся, хорстманн как справочник. Че ж ты сразу про плюсы не скзаал
Универсальный фреймворк для джавы, в нём есть почти всё - веб, очереди, SOAP, несколько способов работы с БД и другое. В основе своей спринг - это просто DI-контейнер, а всё остальное крутится вокруг него.
Чувак, то, что ты не понял, о чём речь, это нормально.
Это из области продвинутого кунфу, так что расслабься, тебе это не надо.
Хотя, можешь вот это посмотреть, например:
https://discuss.kotlinlang.org/t/this-type/1421
Это про то, что в Котлине их тоже нет.
Из комментариев:
Unfortunately, self-types are very hard to implement in the language without crippling the rest of the type system significantly
Можешь ещё погуглить прочее подобное, если есть желание.
Я вообще упомянул об этом просто потому, что несколько дней назад конкретно ёбся с задачей, где они бы не помешали. Но, в итоге, обошёлся, естественно.
> google://"self-types"
> Scala
> google://"this-types"
> TypeScript
Ясно. Да, архиполезная вещь, прям как перегрузка операций, функции, препроцессор, extension functions, if-expressions, паттерн-матчинг, генераторы списков, слайсинг и прочий сахар.
>Я вообще упомянул об этом просто потому, что несколько дней назад конкретно ёбся с задачей, где они бы не помешали.
Наследование?
огонь чтиво, согласен!
A/B тестирование
Ладно иконки, так теперь нельзя стрелочками по результатам поиска ходить
>джава кор
А что такое кор?
Ну я вот более-менее вдуплил что такое ооп, дженерики, коллекции, стрим апи, потыкал в concurrency. Это и есть кор?
Вопрос теперь как переходить к написанию хоть какого-нибудь бекенда. Насколько я понимаю, нужно вкатиться в базы данных немного, а потом засесть плотно за spring?
> Это и есть кор?
Да. Кор - это обычная джава без фреймворков и сторонник либ, когда тупо качаешь JDK и учишься им пользоваться по книжке типа Хорстманна.
> Насколько я понимаю, нужно вкатиться в базы данных немного, а потом засесть плотно за spring?
Да, сначала выучи SQL на уровне create table/select/insert/update/delete и как подключаться к СУБД через JDBC, затем можно спринг.
виртуальная машина
Библиотека для быстрой лепки CRUD и табличных форм на Swing.
С наследованием, композицией, игрой в нарды и одалисками.
Посмотри как енумы под капотом устроены, скорее всего никакие извращения с системой типов там не нужны. В AssertJ вроде тоже что-то подобное есть.
message.length() < 100
Да в общем-то и дженериками такое решается и в комметах прямо на это указали.
Мы так билдеры пишем https://pastebin.com/Ys2ELyKf
В общем малополезная хуета, уебуйте в скалотред
Спасибо, чувак.
Хотя, меня не билдер, а UI контролы + биндеры + события.
Вот такой вот паттерн:
interface Zalupa<V, C, Z extends Zalupa<V, C, Z>> {...}
решил проблему.
Век живи, век учись, хуле.
Я в последний год очень много на perl писал и на js + typescript.
Ну, и немножко деградировал.
Так, а какого хуя ты ему ответил, а мне нет? Сука, вот и помогай в этом треде, одни пидарасы вокруг.
А как лучше всего Hibernate изучать? И Spring лучше по книжкам или видео с ютуба тож подойдут?
Да.
Видео хороши для первоначального погружения в тему.
Или какой-то конкретный вопрос разобрать, который не доходит, почему-то.
А так, надо книги читать.
Вот, например - про всё сразу:
http://www.allitebooks.com/rapid-java-persistence-and-microservices/
Или отдельно про Hibernate, хотя и не очень новая:
http://www.allitebooks.com/beginning-hibernate-4th-edition/
Учусь сейчас у них. Осваиваю javacore, сдал первый модуль.
Ничего хорошего и плохого сказать не могу.
У меня деньги есть и мне просто интересно, что будет из этого я еще не знаю.
>>848060
Нужно задать себе вопрос - в чём тут наёбка?
То, что наёбка есть - не подлежит сомнению, мы же в России.
"Не наебёшь - не проживёшь" - это должно быть написано на каждой рублёвой банкноте, в том месте, где на долларах написано "In God we trust".
Так вот, я думаю, что наёбка тут в том, что они _не_ заинтересованы найти тебе действительно высокооплачваемую работу. Потому, что это сложно. И потому, что вас дохуя, а такой работы мало.
И тебя просто продадут рабом на галеру.
За 60 т.р. на руки, например.
Из которых ты будешь 2 года отдавать им по 10 т.р. каждый месяц (17%).
И это для _них_ весьма неплохо, чтоб ты знал.
Даже охуительно, я бы сказал.
Короче - деньги люди делают с оборота, а не выпуская штучных охуенных специалистов.
Охуеть 240 т.р. при минимальных раскладах, а так за 300 перевалит с учётом роста зарплаты, да за такие деньги можно купить пиздатые курсы, бумажную литературу, оплатить хз сколько часов менторства боевого синьера ещё и сдача на пиво со шлюхой останется.
Петпроект ты пилишь для себя, а не для работодателя. Суть петпроекта в том, чтобы научиться минимально делать задачи, похожие на рабочие. Его почти никогда не смотрят, максимум о нём нужно будет немного рассказать.
Желательно - когда пишешь большой энтерпрайз-проект и, возможно, андроид. Крайне нежелательно - когда пишешь десктоп.
те что то поменьше-уже нет?
типа из за тяжести джава на мелкие проэкты смысла тратить силы нет?
Можно хоть сайт-визитку, но там обычно можно обойтись пыхой/питоном/нодой, и особого смысла брать джаву нет.
Есть простая соц сеточка ака твитор и есть докер, надо с этого всего придумать тему для диплома на магистра. Чтоб какая-то новизна что-то интересное было в названии.
А по факту - планирую лить воду и обсасывать докер пол диплома на самом базовом уровне, но вот название нужно какое-то интересное, заковыристое, чтоб не придраться
Там джава создаст больше проблем, чем решит. В таких проектах обычно нужно по-быстрому наклепать скрипты (чему динамическая типизация способствует больше), залить на дешёвый хостинг (которых для джавы очень мало) и забыть. Больших требований к поддерживаемости и стабильности нет, есть куча специфичных CMS для максимально быстрого клепания. В джаве же придётся самому думать об архитектуре, что занимает время, что заказчику не очень нравится.
Можно что-нибудь около-девопсное высрать, наверняка дипломов про это писали мало. Типа "Автоматизация этапов разработки ПО для уменьшения time-to-market" и налить воды про CI/CD.
> сап двач, есть мемуары брежнева и есть гостевуха....
1. Выкидываешь соц-сетку.
2. Выкидываешь докер
3. Достаёшь кубер
4. Берёшь любой контроллер кубера и пишешь диплом по нему. Можешь свой реалиовать и описать чем ом лучше стокового.
https://github.com/kubernetes/community/blob/8decfe4/contributors/devel/controllers.md
5. Достаёшь обратно свою соц.сеть и масштабируешь её до тех размеров когда твой контроллер начинает иметь смысл (или деплоишь её туда где новый контроллер ведёт себя лучше старого).
> и обсасывать докер пол диплома на самом базовом уровне
На базовом - это каком? Будешь man 7 namespaces перепечатывать и устройство overlayfs описывать
Конечно знаю. Как по-мне это уже основа основ, потому и не упоминаю.
Не читал, но осуждаю. Там больше воды, но столько же инфы можно найти в более сухих книгах.
Есть что-то типа набора задач от простых к сложным по многопоточности, начиная с Thread, заканчивая дедлоками и проч?
Полгода работаю уже, ни разу не пользовался многопоточностью дальше чем в экзекютор контекст фьючерсами покидаться.
Мне на собес надо
Все задачи смотреть в конце соответствующих глав книги Методы программирования Блинова. Пора её уже в шапку добавлять.
>Ты тратишь деньги, чтобы зарабатывать деньги.
>Это так не работает.
Именно так это и работает. Вначале всегда нужны инвестиции, это могут быть инвестиции от государства в виде бесплатного образования, от компании в виде стажировки, от банка в виде кредита на образование, от мамы в виде бесплатного жилья и кормежки, пока корзиночка учится по тьюториалам из интернета.
Инвестиции бывают и неудачные - не вкатился. А бывают и удачные - вкатился и вернул кредит банку, вышел на работу в компанию и херачишь фичи.
У тебя везде инвестиции времени, а не денег.
Если есть какой-то промысел, который тебе может в перспективе принести профит - значит о нём с вероятностью 99% уже знают до тебя.
Ты уже должен задать себе вопрос, "а чем я лучше других?" На примере вката, ты думаешь мало людей знает про айти, а шутеечки про 300к малоизвестны за пределами 2.5 тредов? Тогда почему спрос не падает? Неужели курсов на всех не хватает?
Если бы это было так легко, отдал котлету (или взял в кредит), походил на курсы и вот ты уже рубишь капусту на удалёночке, то на завод бы никто не ходил.
ETL обыкновенный.
Непосредствеено - нельзя, разве что через сишный интерфейс, но это уже не джава. Ещё, наверное, что-то такое на уровне Unsafe можно сделать. Или поискать баги в исходниках компилятора/jvm, они всё-таки написаны на небезопасном языке, а люди не идеальны.
>У тебя везде инвестиции времени, а не денег.
Я смотрю ты внимательно читаешь
>инвестиции от государства в виде бесплатного образования, от компании в виде стажировки, от банка в виде кредита на образование
>Ты уже должен задать себе вопрос, "а чем я лучше других?" На примере вката, ты думаешь мало людей знает про айти, а шутеечки про 300к малоизвестны за пределами 2.5 тредов? Тогда почему спрос не падает? Неужели курсов на всех не хватает?
>Если бы это было так легко, отдал котлету (или взял в кредит), походил на курсы и вот ты уже рубишь капусту на удалёночке, то на завод бы никто не ходил.
То что ты описал это рискованность инвестиций и несут этот риск оба, инвестор и "предприниматель" вкатун. Государство останется без специалиста, компания получит дебила, а не сотрудника и т.д. Вкатун останется без работы. Более высокий риск, предполагает и более высокую прибыль, отсюда и цифры про которые говорит >>848283 Потому как они своих денег могут и не получить если ошиблись с инвестициями.
Но в любом случае инвестор инвестирует свои активы деньги или то, что может быть выражено в деньгах. А предприниматель инвестирует, то что в экономике называется предпринимательские способности. И как бы да - не у всех они есть, не всем везет.
Читать и писать из разных потоках несколько переменных, без синхронизации. Но это конечно не полный аналог сишного UB.
Через WSL1 докер не запустить. А в WSL2 докер всё равно работает через docker desktop.
Ясно.
Если между тобой и инвестицией появляется какой-то кабанчик с непонятными функциями, то это наёбка.
Вот это я хотел донести.
Какие могут быть причины такого поведения. Пишу в той интеледженси idea.
Чем плохо менторство, для человека без опыта?
Нихуя ты умный.
Например?
Почти. Мэйн с большой буквы.
Хех, кстати помогло.
google://java features since 8
https://advancedweb.hu/a-categorized-list-of-all-java-and-jvm-features-since-jdk-8-to-15/
Этот "кабанчик" и есть инвестор. Они тебя учат и ищут тебе работу. И берут на себя риск, что если ты окажешься тупой и необучаемый они останутся без денег.
>google://java features since 8
Я подумал, что надо на замену gopher:// вводить уже google://
Кто RFC создаст?
google:// поверх http работает, так что RFC особо объёмным не будет:
"google://<query>" заменять на "https://google.com/search?q=<query>"
я очень понимаю условия, в чем суть договора с ними? если мне например через месяц надоест, и я забью? я ведь не трудоустроился, значит ничего им не должен? а если я забью в самом конце обучения, за день до выпуска?
>В итоге я получил 11 офферов за полторы недели и успешно устроился в самое приятное место
>Cобесы - тут весело, ты просто выкладываешь резюме и тебе начинают звонить и знакомиться легионы женщин, только успевай записывать когда, с кем и на что договорился - буквально за два дня у меня были расписаны 2 недели по 4-5 собесов в день
>Место работы: Epam Systems
Это реально самое приятное место работы, в которое стремятся все java-кодеры?
чел, не ведись на тупорылую рекламу
Изучаю кор и в принципе нормально все было по примитивам.
Теперь ООП и очень туго идет в голову, просто геттере, хаш код в пизду все. ничего не понятна.
Или лучше купить пару книг по джаве и не выебываться.
Типа хеадферстджава, хорстманна, шилда?
Решаю лабы из шапки кодингбат но тоже туго.
Занимаюсь дней 30, по паре часов в раб.день(очень мало) или в выхи по часов 5.
Так прогеры все особенные дети, все правильно значится.
Все фичи либо уже давно есть в других языках, либо ненужное говно (record, например).
Да в пизду это всё. Лучше книжку почитать. Рикпил ебло 50 минут затирает про гит что можно прочитать за 5 минут, сейчас вообще про кокаин пиздит. Ну или хотя бы не русских дебилов смотреть, которые не могут в преподавание.
К чему ты это сейчас высрал? К тому, что жабу надо похоронить вместо допиливания?
Ты котлиношиз или шарпошиз?
>Рикпил ебло 50 минут затирает про гит
Ты еще яндеск практикум посотри чте они 20 минут изучают что хранится внутри папки .git до того как первый комит напишут
https://www.youtube.com/watch?v=yDSs80lu3ak
В нюфаг-треде.
Так я и не смотрю. Промотал все эти пуки, немного за версии послушал да за мавен. После крестов всё таким знакомым кажется, хоть сейчас идти работать.
>они 20 минут изучают что хранится внутри папки .git
Кстати весьма полезная вещь. Чтобы ты понимал как все устроено и не паниковал, если merge rebase пошел по бороде. Чтобы ты понимал, как восстановить исходное состояние знание как оно внутри работает - очень полезно.
>Кстати весьма полезная вещь.
Нет.
>Чтобы ты понимал как все устроено
Нахуй не нужно.
мимо 300к/нс
Абсолютно не востребованы. Невостребованнее только апплеты и java ME.
Договора нет в открытом доступе, но думаю что после увольнения по собственному, на тебя повесят долг или обяжут самому искать работу. Ну и зарплату обещают от 100к
>В Москве мы гарантируем тебе первую зарплату от 100 000 рублей.
что достаточно амбициозно, хотя тот же Дойче Банк, на своей стажировке платил такие деньги.
По косвенным признакам, мне кажется, что они сделали ставку на качество. Отбирают способных, реально их учат, работают с работодателями учат тому, что востребовано, обещают прокачивать отсутствующие скилы - так чтобы выхлоп был близок к ста процентам.
А потом, такие дебилы приходят к таким как я и хнычут - я что-то смержила и все пропало.
У нас в команде, был один такой "синьор", у которого по собственной тупости постоянно слетали настройки гита и имя пользователя вместо мыла, слетало на логин и гит сервер реджектил его пуши. Этот дебыч приходил ко мне 4 раза, с одним и тем же вопросом - почему не могу запушить. Потом все таки понял, что это за ошибка и как ее лечить. он правда всего пол года продержался у нас
>я что-то смержила и все пропало.
При обычной работе с гитом таких ситуаций не может возникнуть. Проблемы начинаются, когда надо заребейзить некоторые коммиты в ветке, которая уже смержена. Плюс в идее достаточно удобный фасад для работы с гитом.
Пидр>>850828
>А потом, такие дебилы приходят к таким как я и хнычут - я что-то смержила и все пропало.
Я обычно проект бэкаплю в папочку перед тем как мерджить и ребейзить
КОФЕ И СНЕКИ
Тебе кофе налили, за комп посадили? Ну а хули тебе ещё надо? А так от конкретного Мухосранска зависит, где-то есть вакансии за 25, где-то в столицах 80 мало. Смотри по рынку у себя.
>>1850>>850981
Насчёт всего диапазона не скажу, но могу сказать "от" – 25к в дс2. Ниже чем у меня уже не найдешь
Spring Boot и Angular. Работаю с данными, рассчитываю их, перегоняю из БД на фронт и обратно, на фронте строю таблицы и графики. Ну и так как на проекте я один, то делаю ещё всякого по немногу. Вообще работы не очень много. Работаю чуть больше года. С удовольствием бы уволился и занялся бы только Джавой, но, как мне кажется, я недостаточно знаю. Так что сейчас потихоньку заполнил пробелы в знаниях.
>>850997
Я был тупой и боялся, что вообще не найду работу и ещё дико комплексовал лол из-за её отсутствия, так что согласился на то, что предложили. На собеседовании сказал, что хватит 20-25к, вот так и вышло. Потом я узнал, что у других работников так же примерно. Вообще в этой компании немного работников, и часть из них сегодняшние или вчерашние студенты, которым платят немного, но особо ничего и не ждут.
Не понимаю, когда называют сумму ниже рынка. Если ты совсем чмоня, то согласие работать за еду тебе не поможет, т.к. возня с тобой будет стоить дороже, а если соответствуешь требованиям, то добровольно лишаешь себя денег.
Ну сейчас то я понимаю, что поступил неправильно. Тогда у меня не было никакого опыта, так что я согласился на первое попавшиеся место и первое время думал, что это идеал. Сейчас я подкорректировал свои желания в услових работы и в направлении, которым хочу заниматься. Так что когда буду искать новое место, буду умнее
Переезжать из Мухосранска в Москву - быть еще большим дауном. По 3 часа на работу добираться, жить по-соседству с таджиками в уютной студии в 25-этажке за охуевшие деньги, быть бараном в загоне в метро и тд и тп. Я когда приезжаю в города миллионники я охуеваю от того как себя начинаешь ощущать бараном в стаде. Особенно сейчас с короной всех в стойло загнали, я смотрю и жую попкорн, у меня из окна вид на лес, чистый воздух и город за час пешком можно обойти. А через год работы можно и на удаленку уйти с нормальной зарплатой, так что не все однозначно, более того некоторые учат разговорный инглиш и на апворк. Если переезжать, то покупать на авито трактор и ехать в сторону Европы.
Трактор тоже денег стоит потому и хочу подфармить для начала.
Видимо, тем, что это магия. Скрытые треды, например.
А джава - простой и недвусмысленный язык.
Этим и ценен.
В принципе, можно, наверное, на RxJava observable изобразить что-то подобное.
Project Loom
Так работает, но так неправильно:
public int getYears() {return years;}
public long getMilliSeconds() {return (long) years 365 24 60 60 1000;}
Так не работает:
public int getYears() {return years;}
public long getMilliSeconds() {return years 365 24 60 60 1000L;}
Хм, вот так вот внезапно заработало. Хмм....
public long getMilliSeconds() {return years 365L 24 60 60 * 1000;}
Всегда что-то может пойти не так, например при ребейзе по ошибке нажал accept theirs и все, твои изменения надо доставать из detached head.
рибейз вообще зло и по хорошему его не надо использовать
>>850914
>Пидр
Мог бы и не представляться, это и так очевидно.
>Я обычно проект бэкаплю в папочку перед тем как мерджить и ребейзить
Ему дали навороченную систему, которая может разруливать кучу разных конфликтных ситуаций, где информация не удаляется бесследно и можно ее восстановить. Нет блять, СЛОЖНА!!11 Я ЛУЧШЕ В ПАПОЧКУ ЗАБЕКАПЛЮ!!!11
Сказочный долбоёб!
Ну есть какие-то гении которые вообще все файнал делают что не экстендится, типа так "безопаснее", на самом деле хз, файнал вообще на мой взгляд логично в каком-то мусорном коде типа последнего наследования класса, чтобы когда ты и так говна наворотил еще сверху никто бы не наворотил
В гите же есть возможность откатить коммит, если уж облажался. Просто помню момент когда чувак изменил расширение файла через гит, вот тогда куча проблем было
При рибейзе у тебя создаются новые коммиты https://habr.com/ru/post/161009/
поэтому рибейз зло, хорошо, что на практике он редко используется
На винде сидят. Или на маке.
На линуксе сидят серверы.
Но, тут есть нюанс - 10-я винда - зло.
Я сижу на 7-й, и куда деваться дальше - непонятно.
Десктопный мак - дорого, хакинтош - геморройно, может в любой момент превратиться в тыкву.
Линукс на десктопе не возбуждает совершенно.
Так делают, чтобы строго запретить наследование.
Это редкая вещь, и в каждом случае - свои причины.
Начни с того, что поинтересуйся, почему String сделали final.
Долго юзал 7, несколько месяцев назад пересилил себя и поставил 10 с мыслью, что хватит быть ретроградом и будущее неизбежно, и буквально неделю назад вернулся обратно на 7, устав терпеть тормоза и глюки десятки, которая типа самая быстрая и стабильная. Теперь понимаю тех, кто до последнего сидел на XP. Думаю поставить линукс в дуалбут, раньше иногда сидел на нём. Ещё надеюсь, что 10 когда-нибудь станет юзабельнее, хотя за 5 лет так и не стала.
На работе винда, на серверах, скорее всего, тоже (подробностей не знаю, у нас там очень специфичные dll-ки и драйвера юзаются).
Это когда программа уже после компиляции может получить информацию о типах, работать с ними, генерировать код и т.д. Через рефлексию можно вызвать заранее неизвестный метод, имея, например, только его название в виде строки, ещё можно получить список методов/полей/конструкторов/аннотаций какого-то класса, создавать объекты заранее неизвестных классов и другое.
Используется обычно только в фреймворках и либах. Например, если какой-нибудь фреймворк должен создать объекты классов и вызвать их методы по определённым правилам, а про эти классы он знает только то, что они лежат в какой-то папке, он это сделает через рефлексию и класслоадеры. Или, например, можно восстановить реальный тип объекта, имея только ссылку Object.
Reflection - это динамика в статическом языке.
Например, можно создать объект из JSON-строки или подобного строкового описания объекта, зная его класс.
Чтобы не слишком заебаться при этом, можно использовать BeanUtils, PropertyUtils из Apache Commons.
>10-я винда - зло.
Дебилушка, там WSL, ставь любую линукс хуету и не парься. А Маке переоцененная хуета.
Вот ты прикола ради загугли десктопные клиенты для постгреса, это или ява мультплатформа будет или веб хуета. И только под винду есть нормальные, полнофункциональные клиенты.
Или, например, можно сгенерировать описание TypeScript интерфейса из Java класса - перебрать все методы, рассмотреть и преобразовать названия их типов и вывести в файл .ts, и затем работать с этим в коде веб-фронтенда.
В реальных проектах final обычно используют там где нужно гарантировать безопасность более строже чем просто конвенцией. Те же библиотеки шифрования и другие секьюрити либы довольно часто используют final на основных классах и методах.
>Ты мой комментарий, вообще, читал?
А что там читать - невнятный высер, что 10 зло, ни аргументов, ничего.
Ну впервые мне без опыта и знаний в ДС предложил 70к гросс (ну бля без 13% мистеру пыне). Но я туда не пошел, тк еще учусь в вузе, сейчас на более сложную позицию в прошлый раз требований была только java, сейчас Spring, Git, Jira, хуира и тд иду на собес на след. неделе, хз сколько предложат, если меньше 70 то хуева, зато в 20 м от дома (э то к слову о том как в ДС хуева от таджиков ехать 3 часа до работы по словам другого анона)
Спасибо за книгу анон, кроме многопоточности еще почитал, должна быть в шапке
"Джун" это очень сильно размытый термин.
Видел вакансии на ждуна, где требуют больше года опыта, но и зарплата под 120к.
Даунич без опыта это вроде трейни называется.
Подход везде тоже разный, где-то будут учить всей хуйне, где-то вот как меня например сразу бросят в дело и крутись как хочешь.
Я думаю, косарь грина на руки +- нормальная цифра в дс, если ты способен за пару часов написать типичный круд на спринге и в целом обучаем.
Говорят, что андроид. По спрингу - сразу учи Spring Boot там все очень гладко накатывается все, просто попытайся сделать свой проект. Сначала начнешь с Spring Data, соединишь с базой, потом MVC, чтобы все отобразить, Security, чтобы можно было аутентифицироваться у тебя на сайте и так далее
Если ты собираешься изучать не ВЕСЬ спринг, а только тот, который реально понадобится (core/web/data/boot), то там и учить почти нечего, за пару недель осилишь, раз уж после плюсов. А всё остальное опционально и используется в зависимости от потребностей проекта.
Насколько перспективен андроид, сказать не могу, у меня отвращение к его API, а спринг вполне перспективен.
Ну смотри, я писал проект с нулевым знанием в команде. И начал просто с гайда на spring.io - затем что-то решали добавить сразу гуглишь как это сделать - очень много видосов от индусов, но куда деваться. Кроме видосов есть статьи и, конечно, самое лучшее - stackoverflow. Просто придумай что тебе надо запилить и гугли это. Например, мне надо было добавить файловую систему, чтобы можно было агружать и просматривать картинки - нашел статью, получил минимальные знания, подробнее - гуглишь, находишь на stackoverflow, вообще по большей части гугл находил мне baeldung, а там просто несколько вариантов решения. Или мне, например, надо было узнать как сделать нормальные фильтры поиска - тут пришлось писать в телеграм-чатик для разработчиков спринга, там несколько сеньоров подробно все разъяснили, объяснили best practice и тд. В общем трудовой процесс у меня выглядел так, ничего сложного, на самом деле. Потом сам начинаешь искать дополнительные библиотеки/фреймворки по своей нужде, там примеры и документация, но это уже не совсем спринг
*Для разработчиков на спринге
Спасибо тебе.
Что есть "типичный круд на спринге"?
Сколько сущностей? Связи?
Включает ли это в себя веб-интерфейс?
Можно где-то посмотреть приблизительный пример того, что надо написать "за пару часов"?
Есть хуева туча книг с конкретными примерами, если ты читаешь по английски.
Например:
http://www.allitebooks.com/rapid-java-persistence-and-microservices/
(и прочее на этом же сайте)
Есть ещё scanlibs.com, там и русские переводы можно поискать, по спрингу/буту точно должно быть.
Вот дали тебе комп без нихуя. Голая ось и тырнет.
И ты за пару часов:
- Накатил жабу, мавен, постгрес и всю сопутствующую хуйню (ну или ладно, предположим, что всё это есть, ибо к программированию установка софта отношения имеет мало)
- Создал проект на спринг буте, у которого есть набор бизнес-сущностей, Entity для работы с базой, DTO для REST API (и сам рест апи, разумеется, тоже создан).
- Нахуярил простую веб-морду, чтобы Мариванна из бухгалтерии могла выполнять типичные CRUD-операции (Create-Read-Update-Delete).
Типа такого.
За пару часов - вы можете пойти вон в те кусты, и отсосать друг у друга ©.
А то, что ты описываешь требует несколько больше времени.
querydsl
7 лет после универа работаю в бодишопе, причём не в том, где работа в бешеном темпе дабы успеть наобещанное, а наоборот: в таком, где темп разработки очень медленный, большую часть времени делать совершенно нечего, инициативность не поддерживается и не поощряется, джава 8 наступила 2 года назад, об 11 ещё не слышали, о спринге тоже, главный билд тул - ант, новая библиотечка апрувится пол года прежде чем применяться. Кто сталкивался с такими - знает, остальным - горячо не рекомендую.
В свободное время я книжки читаю, стараюсь пробовать всякие современные технологии (докер, к8с, грэдл, кафка, носкл базы, спринг5 опять же), пробую их как-то применять в редких простеньких пет проджектах, но на работе они никому нахуй не упёрлись и поэтому реального опыта продакшн применения всей перечисленной хуйни у меня нет.
Несмотря на это я всё же решил сменить работу, пока не стало окончательно поздно. Сами понимаете какие у меня проблемы с резюме, и дальше будет только хуже.
Вопрос такой: на какой примерно уровень мне по вашему ориентироваться? Не на джуна точно, потому что джун с 7 годами опыта не пройдёт даже через hr-фильтр. Мидл? Или для мидла 7 лет тоже многовато? Я понимаю что все эти уровни не годами меряются и вообще возможно не нужны, но к сожалению реальность такова, что надо выбрать куда метить иначе шанс быть отсеянным hr-ом увеличивается.
Чё думаете вообще про ситуацию? Я мудак? Какие-то советы может будут?
Пара уточнений:
Кто-то скажет что использование анта это как ни крути проёб дев тимы, но будет не прав. В нашем случае весь существующий недоCI поддерживает только ант и мавен, при этом мавен централ заблокирован, какой-нибудь мавен плагин хуй апрувнут, корпоративный мавен репозиторий - огромная неконсистентная помойка. В таких условиях ант - адекватная вынужденная мера.
Второй момент: ничего не сказал про frontend часть. На работе GWT, который изучать - только голову почём зря забивать. Благо пока есть кому в этом говне ковыряться кроме меня. Вне работы пол курса реакта на курсере и знание jquery (который в 2020 нахуй никому не нужен, как я понимаю). Конечно можно ещё поизучать react/angular/vue но опять же вопрос: стоит ли пытаться фокусироваться на фронт технологиях и переквалифицироваться в фулстэка если реального опыта работы с фронтом на работе не было и не предвидится?
Ну и ещё в целом за собой замечаю что кодить мне нравится меньше нежели выстраивать все процессы вокруг кода. То есть я бы с бОльшим удовольствием настроил авто запуск тестов, расчёт покрытия, какой-нибудь параллельный билд, деплой, сбор и визуализацию логов, какие-нибудь авто алерты, балансеры, к8с нежели писать очередную апишку для хождения в базу, доставания данных и оборачивания в запрошенный формат. Как я понимаю, выстраивание процессов вокруг кода это и есть дев-опс? Как думаете, каковы мои шансы там без реального опыта, с одними теоретическими познаниями и большим желанием?
>>852330
Честно говоря я бы и их изучил (вроде не самая простая фигня эти ваши функциональные языки?) если бы дали внедрить. Но за 7 лет я уже окончательно убедился что это бесполезно. И это не моё выгорание, я был бы правда рад.
>Clojure, Scala
>внедрять
Он тебя троллит, лол.
Скала - полезная вещь, очень рекомендую просто для общего развития.
Ты станешь гораздо более лучшим даваёбом.
И, возможно, даже начнёшь использовать Kotlin на бекэнде.
Потому, что скала - вещь в себе, и заюзать её в ваших проектах у тебя хуй получится, инфа 100%.
Кложура - пустая ебля мозга, по большей части, если ты джаваёб.
Хочешь лиспа - читай SICP и зелёного слоника.
Если вставит - дальше сам поймёшь, что делать.
Очень рекомендую освоить Groovy в качестве скриптового языка.
Не слушай дураков, которые говорят, что груви не нужен, когда есть котлин.
Это совершенно разные вещи.
Groovy охуенен как инструмент автоматизации, для скриптов, для тестов и т.п.
Это, наверное, самый практичный язык, по крайней мере, на JVM.
Прикрутить его к имеющейся системе через веб-интерфейс, и писать скрипты прямо в окне браузера, дёргая живую систему - это бесценно. Как образец - посмотри https://groovyconsole.appspot.com
Spock, опять же и т.д. и т.п.
Пройди хотя бы 5 собесов, с 7 годами можешь слать отзывы на всё подряд, лол.
Других методов оценки себя рынком и нет.
CRUD для одной сущности. Да даже CRD хватит.
Веб-интерфейс не надо, хотя некоторые шизики просят сделать что-то такое в тестовых. Но нахуя, жаба это ж бек.
Пара часов это мой примерный прогноз, никто над тобой стоять с секундомером не будет.
Хз, зачем это ты там 7 лет сидел, надо было раньше сваливать оттуда.
Я и года не проработал, а уже по вечерам думаю, куда бы сваливать в случае чего и что подучить, чтоб денег предложили по крайней мере не меньше.
>>852354
>Скала - полезная вещь, очень рекомендую просто для общего развития.
Вот этому канистру чая бы налил.
Ок. есть прикладное программирование, а есть системное; в прикладном многопоточности не так часто напрямую касаешься, тк все уже реализовано через фреймворки. ОС на джаве конечно не пишут, а вот БД - вполне, например кассандра или зукипер написаны на джаве, там нужна многопоточность в полный рост.
Я сейчас разрабатываю сервер под хайлод для трейдинга на джаве, там тоже многопоточный код ну раза в два в неделю да приходится писать самому.
Беги оттуда, глупец. Твой опыт не релевантен.
На netty сервер делаешь?
Здарова анончики. Я студент шараги, учусь на пограммиста на последнем 4 курсе.
Вроде всё хорошо, живу и радуюсь, но немного стыдно, что за 4 курса мой максимум это создание циклов в паскале.
Короче залетел на вашу доску и тыкнул на первое знакомое название. Джава этож язык на котором игрульки писались для кнопочных? Лол, он ваще жив там в 2020?
Почитал шапку и немного хикнул. Учиться чему-то в 2020 читая книжки? Звучит прогрессивно. Короче я пошёл на рутрекер качать видео уроки по ДжаваКор. Наверное дропну после первого урока, но может и не дропну.
Эх, так много вопросов и так мало ответов...
Тебе вот ясно, а мне не очень. Кстати язык настолько мертвый, что единственный видеоурок на русском, который я нашёл на рутрекере раздают 1.5 калеки и приходится качать эту годноту со скоростью 50кб/с.
Очень неприятно.
Слишком толсто. Если бы ты не сказал про джавакор и книжки, то может и поверил бы.
эй, смузи-бой! закатывайся в джарп!
и тебе никогда не придётся сидеть в тесном оупенспейсе по 11 часов в день на просиженном стуле со сломанной спинкой
Потрясающе. У этого языка ещё и дико недружелюбное комьюнити, которое троллит безобидного нуфака-ламера меня, который всего навсего просит о помощи.
>>852850
Да-да, я не троллил чел. Я выбрал джавакор, по той-же причине, что и джаву в целом. Я слышал об этом об джавакоре, когда играл в майнкрафт. Ну, а касательно книжек я даже не могу догадаться в чём тут троллинг? Кому может прийти в голову обучаться яп на книжках? Лол, ладно там просто читать какие-то статьи или документации, но в целом обучаться на книжках это полный отстой. Я не собираюсь этим заниматься, как минимум сейчас. Кстати мой курс уже скачался и сейчас я пойду его смотреть.
джарп - это новый потрясающий язык, который собрал все плюсы джавы и шарпа
пока он только развивается, но уже скоро все сытые херочки станут в ультимативном порядке требовать от соискателей от пяти лет опыта с этой технологией
Кстати мои однокурсы, которые шарят, говорят что жава мёртвый язык и типа щас все адекваты перекатываются на СиШарп. Но я уже скачал видеокурс по Джаве, так что похуй.
>>852861
Может и по нему скачаю. Просто я слышал что веб-программисты считаются лохами и не хочу, чтобы мои знания, которые я собираюсь получать были омрачены таким ярлыком.
JS это же веб? Вроде веб.
Да какую толстоту то..
Для компилятора Void - это такой же класс, как и остальные, поэтому он расценивает его в дженериках именно как один из типов, а не отсутствие типа.
Ты не понимаешь - они принципиально разные.
Если разрешить такие кастинги, то нахуй бы вообще нужна эта статическая типизация и эта джава.
А вот не секрет, зачем ты хочешь такой кастинг?
Наверняка, это решается иначе.
Возможно, что у тебя вообще там принципиально ошибочный подход, и система типов тебе об этом толсто намекает.
Ну вот так, мне тоже много чего не нравится, но приходится мириться.
И ты всегда можешь сделать преобразование функции.
Supplier<T> funToSup(Function<Void, T> fun) {
return () -> fun.apply(null);
}
Есть список из функций с одинаковым принимаемым и возвращаемым значением. Первая и последняя функции ничего не принимает и не возвращает соответственно. Надо их красиво закомпоузить.
Ладно, я тогда придумаю другой способ внести дичь в джаву.
Javac при попытке скомпилировать код ниже на jdk 8 или 11 стектрейсит вместо ошибки.
@FunctionalInterface
interface FA { Object eval(Object ...args); }
public class Main {
public static void main(String[] args) {
System.out.println(((FA)((a, b) -> 0)).eval(0, 0));
}
}
Функция не может ничего не возвращать.
Иначе, это не функция, а эффект.
У тебя там что-то не так с дизайном.
Если у тебя вот так:
Supplier -> FunctionA -> FunctionB -> .... -> FunctionN -> Consumer,
то, начало и конец лучше держать отдельно, т.к. это не функции, и не часть конвейера, а именно что вход и выход.
А в шапке телеги нет, как это обычно в других тредах
И нахуй оно нужно? Поддержки спринга нет, вот что плохо. Причем на все остальные иде она есть и бесплатно.
Долго не пользовался виндой, отвык от пердолинга)
Алсо, изначально хотел C# или Python, но пришлось брать то, что дают.
В немецкоязычных странах очень популярна джава.
И (наверное) есть работа.
Сишарп - хуета, и не нужен.
Питон - бейсик для хипстеров, хуета без задач (кроме скриптинга бигдаты).
Так что, тебе повезло.
>@FunctionalInterface
куда ты лезеш со своими функциями, забирай это говно со скобками куда подальше, реально достаточно одного функцианально опуща который начинает срать своими скобками в проекте
Сишарп - путаный и мусорный язык.
И он воняет паскалем, потому, что создан идеологом Delphi.
А джава - язык простой и недвусмысленный.
В нём много букв, но очень мало говна.
Тут, правда, надо понимать, что "выучить язык" и "научиться программировать" - это совсем не одно и то же.
В треде активно закапывают EE, думаю, за счёт легаси протянет лет 5-10. Если там вообще нет спринга - идти не стоит.
Печальненько.
Ты серьёзно думаешь, что можно выучить какую-то технологию, и потому всю жизнь с неё кормиться и больше ничего не учить?
Специально посмотрел - все вакансии на hh, где упомянуты EJB, включают ещё хуеву тучу баззвордов, включая бут-хуют-батут. Как правило, перечисляют все, которые могут вспомнить, лол.
@Stateless
@Stateful
@Singleton
>Бизнес логика.
>EJB
>Логика
бамп
Имя метода с большой буквы - сразу на хуй, и ещё пиздюлей на дорожку отсыпать за такое.
Это пузырьковая сортировка.
Самая примитивная и неоптимальная реализация.
>Они же равны
Циклы вложенные. Пока крутится внутренний - внешний стоит.
Переменные i и j равны только на первой итерации внутреннего цикла. Т.е. эта итерация будет холостая.
Нормально настроенный эклипс называется IDEA.
закинул, но там похоже ток фантики с этой рефералки
А вот в этом случае без цикла можно обойтись, что бы по производительности и/или простоте кода было не хуже?
Примерно такой. В bar.txt прописан какой-то текст (123). В результате должно получится {"foo": "123"}.
Извините
Разве что написать свой шаблонизатор, который при виде в шаблоне файла заменил бы его название на содержимое. Вряд ли в существующих шаблонизаторах можно так вот просто прочитать файл извне, это всё-таки не языки программирования.
Да блядь, проблема не в том, чтобы именно по имени файла заменить, а в том, как это встроить в мавеновскую сборку и надо ли вообще.
Впрочем, в freemarker тех <#include> может подключаться произвольные файлы, а не только шаблоны.
>>853883
Кто тебя знает, надо тебе или нет, это ты придумал непонятно с какой целью. Напиши плагин для мавена и запусти в нём шаблонизатор, срендеренный выхлоп запиши в target/classes/template.json.
То, что в вакансиях, на уровне "смог написать пет-проект с использованием всего этого".
Думаю, что надо сделать скрипт, например, на Groovy, который делает с шаблонами то, что тебе надо.
А потом, если это как-то завязано на другие вещи, запускать его из Мавена.
Если же нужно просто генерить кучу хуиты по шаблонам, то мавен там и нахуй не сдался, сделай скрипт и генери.
В вакансиях зачастую никакой конкретики а-ля "Знание основ java и ооп/Опыт изучения n месяцев. В лучшем случае напишут про гит и чтение технической лит-ры на английском.
>>854102
Да нет там единого стандарта. Где-то ты больше селекта за год не напишешь ничего, где-то будут запросы на полстраницы. Одни ковыряют легаси, у других последняя версия жабы и постпроцессоры на спринге.
Из общего:
-Идеальное знание кора, все основные структуры данных надо знать заебись, чё там за корзины в хешмапах и почему там O(1) в O(logn) вырождается, вот эти все линкед сеты между собой отличать надо и прочее.
-SQL, обычно хватает создать пару таблиц, связать их по ключам, написать пару запросов с джойнами, агрегатными функциями, группировкой. Первые задачек 40 на sql.ex. Если видишь в вакансии диалект, то соответственно ещё и его изучи.
-Уметь на спрингбуте создать простой круд, примерно понимать что там за прокси классы создаются, бины, контекст, основные аннотации. В жопу лезть за АОП не надо, наверное.
-Понимать, что за HTTP методы такие, заголовки всякие, понимать чем IP адрес от MAC отличается, JSON туда сюда покидай по контролёрам. Видел в вакансиях упоминания всяких шифрований и прочего, но не был там, так что хз что имеется ввиду.
-В гите ничего особо знать не надо, пуш, мерж, ребейз, создай себе репозиторий, поиграйся с ним денёк другой, это несложно.
-ООП, основные понятия, любят про SOLID спрашивать, паттерны, Мартина и GoF по-любому читать придётся, тут уж никак.
-Можно ещё про stream и многопоточность расписать, но это не всегда спрашивают и используют. Если пишут, что Java 8+, то значит и про стримы спросят, если асинхронность, то будут про дедлоки мозг ебать.
>Мидл?
Хуидл. Пиши software engineer и всё.
Совет - валить. 7 лет на одном месте без роста - это перебор.
На баше.
Ждём, когда в идее сделают принудительные обновления, которые можно только отсрочить жмаканием на кнопку глубоко в настройках. И чтобы она принудительно перезапускалась при этом, прерывая сервер приложений и прогон sql-миграций.
Создал блять проект.
Найти работу будет тяжелее, во многих местах требуют корочку. Бывает, что начиная с какой-то должности требуют и магистратуру.
С большей вероятностью. Где-то требуют абстрактное "высшее техническое образование", где-то уточняют конкретные специальности - информатика и выч техника, программная инженерия и прочее.
Отлично, осталось кодить научиться.
да, действительно, хуйня какая-то
вон, зуми-зумеры на рякте за 250к этого не знают и им похуй ваще
Спринг ин экшн.
>SOLID спрашивать, паттерны, Мартина
как раз скоро хотел начать читать. Какую конкретно книжку надо читать?
Это не для погружения, это для выхода на поверхность уже.
Для погружения - Spring in Action и т.п.
Про микросервисы: https://scanlibs.com/learn-microservices-spring-boot-practical-2nd/
>>854413
Заебали форсить хуйню.
Решаю такую задачку: есть класс ShirtOrder, в нём есть три метода: ShirtOrder, который непосредственно принимает количество рубашек в заказе, есть метод getShirtQuantity, который возвращает это самое количество рубашек, и есть метод getShirt, который должен возвращать экземпляр созданной рубашки и уменьшать счетчик оставшихся рубашек на 1.
Соответственно, есть ещё класс Shirt, в котором прописаны поля цены рубашки.
Вроде бы всё реализовал, но никак не получается вернуть экземпляр этой самой рубашки. Он просит меня в скобки цену, или чего он от меня хочет вообще? Как правильно вернуть в методе эту рубашку?! ЧЯДНТ?! Подскажите пазалушта..
Ты объявил конструктор для Shirt, который принимает один аргумент -- price. Создать ноывй объект ты можешь только через этот конструктор, так что да, он просит в скобках цену
> Он просит меня в скобки цену
Да. Ты уже указываешь в конструкторе этот аргумент: public Shirt(float price) и должен его передать. Судя по тому, что getShirt принимает price, нужно этот же price передать в конструктор: Shirt shirt = new Shirt(price); И всё.
Ты какую-то хуйню написал.
Что должен делать твой класс заказа (ShirtOrder)?
Туда добавляются купленные рубашки?
Но, у тебя не добавляются.
Метод getShirt(price) - он зачем вообще?
Получить одну из добавленных рубашек по цене (они типа все разные)?
Но, он делает какую-то хуйню - за каким-то хером создаёт новую рубашку.
И где, блядь, общая сумма?
У тебя внутри должен быть список (ArrayList) shirts, куда ты будешь добавлять свои рубашки методом addShirt(nextShirt) {shirts.add(nextShirt)}
Метод getShirt должен стать getShirtByPrice(price), и он у тебя должен будет перебирать список, и возвращать рубашку с такой ценой.
Более того, это должен быть не список, а Set. Если только одна рубашка с такой ценой разрешена. А это, судя по методу getShirt() так и есть - он возвращает одну рубашку с такой ценой, а не список.
И рубашки не должны создаваться внутри, это заказ, а не рубашечная фабрика.
И у рубашки должен быть бренд и модель.
И т.д. и т.п.
Вообще, лучше поискать немного другую модель на поиграться для начала, если вообще не вдупляешь, что такое объекты и т.п.
Животные - кошечки там, собачки, уточки. Сколько ног, что говорит и т.п. - дофига примеров в учебниках.
Или автомобили - машина состоит из мотора, колёс, к-ва кресел и т.п.
>Ты какую-то хуйню написал.
С этим не спорю.
>Что должен делать твой класс заказа?
Ну, вообще это задачка с несколькими четкими условиями, три метода, ShirtOrder, getShirtQuantity, getShirt, которые расписал тут >>854721
Вот стояла задача первый метод заставить сохранять количество рубашек, второй - возвращать это количество, а в третьем - создавать одну рубашку для возврата из метода, при этом уменьшая число рубашек в заказе на 1. Если рубашки кончились - возвращать null.
Не знаю, насколько это практически применимо, и возможно выглядит, как лютая хуйня, но проверочный check вроде бы сработал.
>Вообще, лучше поискать немного другую модель на поиграться для начала, если вообще не вдупляешь, что такое объекты
Это точно.. В моём курсе есть примеры с собачками-кошечками, вот на выходных займусь как раз, буду разгонять мышление.
В любом случае, спасибо большое, что отозвался. Извиняюсь, что влез сюда со своими рубашками :)
Учебная задача же, не для прода в банк.
Понятие "цена" не обязательно предполагает финансовые вычисления, в которых ошибка представления будет иметь значение. Речь не про банк или бухгалтерию.
Ну, и лучше было бы double.
Это обучение - тестовая затея в рамках текущих всех этих цифровых экономик и всего такого. Можно было выбрать из кучи дистанционных образовательных программ, всякие там 3д-моделинги, курсы экселя для мамочек в декрете, мне вот джава приглянулась, хотя никогда не занимался. Разве что С++ в универе в своё время, да и то всего 1 курс. Курс в Томском универе разработан, сам курс нравится, очень даже, просто сроки крайне сжатые, за месяц нужно решить около 30 тестов. Сначала были простые, а сейчас вот пошло уже посложнее. Дальше будут перегрузки методов, полиморфизм, наследования всякие. Буду стараться, что ж.
Попробуй букварь, как заглавные буквы осилишь, тогда приходи.
> turbobit
Ещё можно искать в поиске документов во вконтактике, там достаточно много книг ищется, эта тоже нашлась.
ОК.
Но, по той ссылке, что дал я - она с оглавлением.
А в интернетах попадалась и без оглавления.
Просто набери в гугле "spring boot testing".
ibn4 ну бля, продуктовая разработка as is: к нужной базе нет доступа/правки в боевую базу будут вливаться только после аппрува 1488 человек, ибо древнее легаси/крупная или ключевая задача
это был вопрос уровня "бля как бы срезать углы и не заниматься этой хуйней", на который сам же и ответил за спойлерами: видать, нужно вникнуть и научиться создавать круд с локальным хранилищем без базы.
> val
final var. Ты ведь на джаве пишешь не потому, что любишь экономить буквы?
> элвис оператор
https://nipafx.dev/why-elvis-should-not-visit-java
Что есть "локальное хранилище", для начала?
И даже более того - что такое "локальное"?
Это компьютер пользователя или локальная сеть организации?
Вообще, если нужна оффлайновая работа, то тут всё непросто.
Идеально - всё вообще должно идти через "локальное хранилище" (что бы это ни значило), а в него - тупая репликация из "главного", отдельным процессом.
под локальным хранилищем имеется ввиду конструкция, когда приложение использует свою память для извлечения данных, и не ходит в базу.
Механизм можно описать так: задеплоил проект на машине пользователя --> в созданную формочку внес данные --> жмакнул на субмит (тем самым инициализировав событие - вызов http-метода типа post --> после редиректа на ту же страницу с формой отображаются только что введенные данные.
Ты про это что ли?
https://developer.mozilla.org/ru/docs/Web/API/Window/localStorage
А джава тут при чём?
https://yadi.sk/i/UBl5shLRCpZcKQ
Речь о подобном устройстве приложения: к базе нет коннекта, и при этом объекты хранятся в самом приложении.
Я (>>856028) спрашивал - что такое "локальное хранилище".
В памяти - это уже кое-что, но мало.
Это база данных в памяти? Например, h2?
Или это просто объекты в памяти?
И почему в памяти? Кто мешает сериализовать их в файлы?
И т.д. и т.п.
Тут хуева туча вопросов, и столько же ответов.
Я об этом пытаюсь тебе сказать. Никаких стандартных способов нет.
Я бы сделал (и делаю) локальный SQL сервер (на виртуальной машине) и не занимался бы ментальным онанизмом.
Но, это зависит от задачи.
Иногда удобнее иметь сериализованный объект в файле и т.п.
Посмотрел тот кусочек, где у тебя код на JS.
Так вот, местами он странный.
По массиву не делают итерацию как for (i in array), это не джава.
И $('#book-form form') - лишнее, достаточно просто $('#book-form') - id (#...) - это не класс, он должен быть уникален для страницы в целом, и уточняющие селекторы не нужны.
Ну, и колбеки (a) использовать - немножно дурной тон в наше время, для этого есть промисы (аналог CompletableFuture в java)
См., например, http://langtoday.com/?p=550
Ещё лучше использовать fetch в новых браузерах, а для IE есть polyfill
https://dev.to/adrianbdesigns/how-to-polyfill-javascript-fetch-function-for-internet-explorer-g46
Про итерацию по массиву в JS, почему нельзя использовать for .. in, хотя, он, вроде бы, работает:
https://stackoverflow.com/questions/10179815/get-loop-counter-index-using-for-of-syntax-in-javascript
Вообще, JS таит в себе кучу ловушек для человека, привыкшего писать на джаве.
>Я бы сделал (и делаю) локальный SQL сервер (на виртуальной машине) и не занимался бы ментальным онанизмом.
>
блин братка, за это обнимаю <з
временами забываю мысль, что главное "не через что", а каков конечный результат - и если его можно добиться меньшей кровью, развернув любую нужную СУБД локально, то нет смысла ебаться с хранением данным в ArrayList'e.
>>856161
думаю, что твои слова у меня тоже получится разрулить, потому как фронт формы и ресурса (книжная библиотека, которая будет усложняться и обрастать такими штуками, как ci, многопоточность, и прочими, которые сейчас для меня в новинку)
До этого был свидетелем, как друг-вкатыш при мне хуячил три месяца на js'e, и нихуя не выдал по итогу - прикрывался изучением основных основ. Естественный отбор, щито поделать :)
Отсюда сделал для себя вывод, что лучше обрастать шишками и знаниями на каком-то проектами, чем теорией, которой без параллельной разработки некуда ложиться.
Пиздец, почему вы ебанутые такие? Я сука тебе выше ответил, как решить твою проблему, но ты отвечаешь этому анону на его простыни.
мимо тестер-ручник, заебавшийся тыкать на кнопочки и прогонять эти ваши кейсы
если ты анон что предложил развернуть локальную бд и не выебываться - я воспользуюсь твоим советом)
братан, я только вкатываюсь.
Вчера блядь узнал что такое маппинг, и чем хуй отличается от контроллера: твое решение также можно реализовать, я о нем помню - заодно отвечу для себя на вопрос, чем твой подход отличается от подхода с локальной бд
Самое время закупиться.
Тем временем главный ньюфаг треда только что успешно рассадил школьников в двухмерный массив парт в классе и устроил всяческие разнообразные провер_очки, счастью нет предела! Держу в курсе!
Напиши интерфейс доступа к базе, не делай реализацию, пока не получишь доступа к базе, в чем проблема? Если тебе нужно обязательно проверять, как работает код - мокируй, тесты для кого придумали, ммм?
Это хорошо.
>Напиши интерфейс доступа к базе, не делай реализацию, пока не получишь доступа к базе, в чем проблема? Если тебе нужно обязательно проверять, как работает код - мокируй, тесты для кого придумали, ммм?
тоже зарядил задачку у себя на личной борде с:
Как там с ущербными checked exceptions? Как там без template literals? Как там без именованных параметров в методах? Как там без data-классов (нет, @Data от Ломбока и Java records не считаются)? Как там без null safety, уже пофиксил NPE? Как там без функций вне классов, уже написал очередной "утилитарный" класс с кучей static-методов? Как там без async / await? Как там без полноценного ФП?
P.S. я не хейтер, но после Котлина этих фич в Джаве реально не хватает :( У Котлина тоже есть свои недостатки, но бля, Джава как будто остановилась в развитии, потому что после 8й версии, когда ввели хоть что-то похожее на ФП, больше никаких значимых изменений не было, и это очень грустно...
> data-классов (нет, @Data от Ломбока и Java records не считаются)
@Data от ломбока делает то же самое.
Почти всё, что ты перечислил меня поначалу тоже выбешивало.
Но, внезапно, через полгода работы стал замечать, что вот это же всё просто заставляет писать вменяемый код. Не раскидывать говно по тысячам файлов, а собирать в один
>"утилитарный" класс с кучей static-методов
Или что вообще не надо такие методы писать, где параметров настолько много, что надо их именовать, лол.
Что эксепшны надо не только ловить, не ещё и обрабатывать, логгировать, дабы потом по 3 часа не искать где и почему что-то падает.
>null safety, уже пофиксил NPE
У тебя взаимоисключающие параграфы в тексте. Сам же про фп пишешь (отличная шутка, кстати, фп в котлине, ага), но неужели даже мейби не осилил?
>final var
У нас в проекте по кодстайлу положено так писать. В результате когда у тебя цепочка вызовов
findXXX().stream().map().filter().map().collect()
то хер поймешь что же у тебя там лежит в итоге только IDE спасает.
Вместо простого
Optional<UserId> userId
приходится писать
final var maybeUserId
здравствуй венгерская нотация!
В общем сэкономил пару символов и добавил вагон гемора. И кстати конструкция var var = ...; var.method() тоже доставляет.
>Как там без data-классов (нет, @Data от Ломбока и Java records не считаются)?
Вот кстати ломбоковский @Data + @Builder удобнее data классов. Нехватает наследования, но его нет ни там ни там.
Современный - не значил лучше, проще и т.п.
Более того, в наше время это часто значит совершенно обратные вещи.
И эти тест-контейнеры - весьма спорная вещь (управление контейнером изнутри).
И совсем никак не подходящая для ньюфага.
И даже просто для того, у кого не слишком дохуя времени на эту ёбалу, и нет соответствующего процесса, который бы этого требовал.
Мимо философ, наблюдавший восход и закат многих best-practices
В данном случае как раз лучше и проще. Докер образы не оставляют после себя мусора в temp или еще где-то, работают и на винде, и на линухе и не зависят от версий системы и компонент.
Докер-образы != testcontainers
Ну, и человек спрашивал очень ньюфажеский вопрос, и предложить ему в качестве ответа докер (в любом виде) - это как предложить поднять себя за волосы.
ОК, расскажи как сделать по феншую: вот есть у нас транзакция с неким количеством полей типа айди, амаунта и т.д., и у нее есть несколько подтипов: транзакция по карте, транзакция черех гугол пей, транзакция через инторнет и т.п.
Как это реализовывать без наследования? Копипастить все базовые поля? Или один мега класс с кучей опциональных полей такой вариант сразу нахуй?
Это зависит.
Но, наследования данных надо избегать всеми средствами.
Prefer composition over inheritance, вот это вот всё.
Там ещё проблема в том, что докер это про софт в контейнерах, а не про данные.
А у человека вопрос о том, как работать с клоном данных. Которые могут быть очень большими.
Докер на данные не очень ориентирован, поэтому базы там то ещё удовольствие отлаживать.
В принципе ничем не отличается от того, чтобы поднять копию СУБД на другой машине и на ней отлаживаться, держать при этом копию каталога с самими таблицами, чтобы откатывать можно было.
>Ну, и человек спрашивал очень ньюфажеский вопрос, и предложить ему в качестве ответа докер (в любом виде) - это как предложить поднять себя за волосы.
Это как раз хороший способ.
У нас был проект с базой на Оракле и доступ через хибер. Но для тестов использовали H2 in memory - ну а хули, хибер же! И все работало нормально, пока в один день у нас не отвалились все спринговые batch job-ы из-за какого-то хитровыебанного поведения Оракла. И на H2 это не теститься никак, только на предпрод энвайроменте можно затестить. В итоге вылилось все в то, что пришлось делать 3 релиза прежде чем все пофиксали. А были бы у нас докер образы с ораклом, мы бы это поймали очень быстро.
Я не тот анон, что затирает про избегать всеми средствами, но в данном примере с транзакциями композиция действительно выглядит предпочтительнее
Это вообще поведенческий шаблон, при чем тут данные?
>>856790
>Prefer composition over inheritance, вот это вот всё.
В теории - все круто, но на практике везде оказывается удобнее наследование. Потому что когда у тебя пара сотен полей посмотри спеку мастеркарда или визы, то ты просто заебешься ручками все писать. Одно дело когда у тебя в языке есть поддержка композиции, а другое когда ты должен ручками все прописывать.
Стратегия норм. Но юзать её, лишь бы не было наследования...
>findXXX().stream().map().filter().map().collect()
С:\ВасилийВалентинович\бухгалтерия\2020\сводный_отчет_ноябрь\сверка\аниме_наруто
>Это вообще поведенческий шаблон, при чем тут данные?
у нее есть несколько подтипов: транзакция по карте, транзакция черех гугол пей, транзакция через инторнет
>когда у тебя пара сотен полей
Я бы генерировал код скриптом из спецификации, заданной в той или иной форме.
Я так часто делаю.
Речь об объектах данных. Без поведения (я надеюсь, лол).
А стратегия - это инкапсуляция именно поведения (алгоритма вычислений).
Что почитать по жабе крестодебилу со стажем в пять лет?
Core Java for the Impatient.
Хорстманна пролистать без задрачивания.
Звучит невероятно, но предположу, что ты в конфиге юнит-тестов указал датасорсом реальную БД вместо hsqldb/H2.
Ты прав, спасибо.
>>858055
Такие вещи надо делать, если тебе заранее неизвестно, что в твоём коде может возникнуть исключительная ситуация.
Т.е. она (возможно) возникнет в процессе выполнения, в ответ на действия пользователя и прочие подобные факторы.
И нужно использовать RuntimeException.
Если создавать свой, то наследовать от него.
Если хочешь универсальный готовый - IllegalStateException.
Его название может подойти абсолютно к любой ситуации в рантайме.
Вкатыш, ты?
Не слушай долбоебов, если логическая ошибка, кидай свой ChE. От RTE защищайся проверками.
Ех. Метод принимает массив типа String? Перед выполнением логики проверь, что копия ссылки not null и массив имеет хотя бы один эл-т.
Да ты же упоротый, лол.
Например, я хочу перенаправить http на https трафик, но сделать это без класса конфигурации.
Там тысяча библиотек, тысяча плагинов и ради чего?
Мне надо разработать клиент-серверное приложение, с чего начать, как вообще?
Полное имя своего класса пиши, с пакетом.
Например, com.zalupa.MyYobaFormatter.
Он же у тебя в пакете, да?
Сверху в файле класса написано что-то типа package com.zalupa или даже просто package test?
Если нет - создай пакет, без пакета (default package) могут быть проблемы, не в этом случае, так в другом.
У него аж 4 варианта пути.
Я пробовал =forFormatter.MyFormatter
=IdeaProjects.Ch_5-14.forFormatter.MyFormatter
Как еще попробовать?
Какого, нахер, пути?
Путь найдёт class loader, лол.
Я же сказал - пиши имя класса - насколько я понял, у тебя это forFormatter.MyFormatter
Вот если ты это захочешь куда-то деплоить, вот там надо будет указать путь к твоей библиотеке в командной строке запуска java.
>Аноны, хочу написать свой мессенджер на микросервисах с кафкой, блекджеком и шлюхами.
Перехочешь.
Какого рода сервер?
Поросто socket или уже http(s) с чем-то полезным?
Загугли, когда определишься: java how to create ??? server.
Если http, то используют готовые серверы приложений - java ee, spring boot, более низкоуровневое - jetty embedded (руками эмбеддить, а не как в спринг буте) etc.
Вообще, охуеваю от таких вопросов космического масштаба.
не, не помогает. лог перезаписывается, но форматтер к нему не применяется. может в самой идее какие-то настройки надо запиливать?
> как лучше организовать хранение сообщений
Хранить в БД микросервиса сообщений.
> где тут использовать кафку
Для взаимодействия микросервисов. Раз уж решил упороться в микросервисы там, где они создают больше проблем, чем решают, то хуярь микросервисы "авторизация", "сообщения", "хранилище_контента", "API_endpoint", "поисковый_кеш" и "аналитика", гоняя между ними данные через кафку.
> тысяча библиотек, тысяча плагинов
Это современный тренд, привыкай. Громоздкий код с размазанной логикой, сотни классов вокруг одной маленькой фичи, вложенность вызовов методов больше 100. Есть стереотип, что так принято делать только в джаве, но я недавно ознакомился с современным фронтендом с реактами-хуяктами, у них теперь то же самое.
Надо реализовать свой кастомный контроллер для кубера и доказать что он быстрее, чем дефолтный. Деплоить в него буду свое маленькое монолитное бут гавно.
Как это все разрулить? Главное условие - как можно меньше еботни. Я так понимаю, там все на го написано, я смогу контроллер на жабе запилить и унаследовать кубером? Или только на го ? И как его быстрее сделать и оптимальнее стокового ?
Пока буду гуглить, но надеюсь, что выйдет благородный сеньор и толкнет меня в нужное русло.
Надеюсь ты тут и в расположении духа, анонас. Тема выбрана и согласована, отступать поздно, а времени неделя
>>848566
Че несешь блядь? Че за контроллер?
И что было, в итоге?
>Java
>знакомился с современным фронтендом с реактами-хуяктами
>у них теперь то же самое
Нихуя себе, ты толерантный.
"У них то же самое", ну надо же.
У них, блядь, не "то же самое", у них пиздец, какого свет не видел.
Это ёбаный ад, этот ваш современный js-тулинг.
Ещё года 4 назад вменяемые люди охуевали от этого, и писали посты про "insane js tooling" и "javascript fatigue". Причём, не вкатышы, а матёрые юниксоиды, пишущие на си, там тулинг тоже будь здоров.
Так вот, с тех пор всё стало сильно хуже, и теперь это просто неконтролируемый пиздец, расползающися под собственной тяжестью.
И няшная джава - как недостижимый идеал на фоне всего этого.
"То же самое", у них, блядь.
На самом деле - отгадка в том, что JS - это не язык, не платформа, не среда, а говно. Был, есть и будет. Там ничего нет - ни структуры, ни модулей, ни разделения на исходники и результат, ничего, одно только говно.
Один ЖС везде, который превращается в ЖС, который превращается в ЖС, остальное - просто имитация, включая TS. И когда из этого говна пытаются слепить что-то осмысленное, как у взрослых, получается просто лютейшая хуйня, под капот которой лучше никогда не заглядывать.
Ты ебанулся? 7 лет в той параше, что ты описал? Беги оттуда, дурачок. Хотя нет, стой. Сколько платят?
>>1859258 →
лолнет
Норм. Если у тебя основной продукт - мобильное приложение, то вообще не важно, на чём у тебя бэкенд, хоть спринг, хоть нода или Go.
>хуярь микросервисы "авторизация", "сообщения", "хранилище_контента", "API_endpoint", "поисковый_кеш" и "аналитика"
По какому принципу вообще надо делить микросервисы? Типа, каждый спринговый @Service в монолите - это отдельный сервис в микросервисах или как? Мимо.
Сложный вопрос, мнений много. @Service, таблицы и сущности с микросервисами не соотносятся, в одном микросервисе может быть несколько таблицы и спринговых сервисов. Микросервисы скорее делятся по большим фичам, чтобы в одном была какая-то большая область функционала и несколько маленьких вспомогательных. Главное - чтобы микросервисы не сильно зависели друг от друга, то есть чтобы не было такого, что пользователь нажал на кнопку - и микросервисы начали делать сотни запросов друг к другу, чтобы выполнить операцию (зачастую для этого необходимые данные дублируют в БД каждого микросервиса, и, например, в каждом может быть по своей таблице юзеров с уникальными дополнительными полями).
Друже, а посоветуй книжку по микросервисам со спрингом. Почитал пикрил – не зашло, да и старовато уже, как мне кажется
Понятно. Просто я открыл первый попавшийся плейлист по микросервисам, там чел вообще, как я понял, отдельный сервис делал просто для выдачи инфы по фильму. Не до такой же степени надо суживать сервис..
Заходишь на allitebooks.com и набираешь в поиске spring microservices
Там есть, что почитать, в том числе и свежее.
Также, scanlibs.com, но, там сложнее качать.
> отдельный сервис делал просто для выдачи инфы по фильму
Наверное, просто тестовый пример, чтобы показать, как это делается технически, а не best practices.
Степень определяется нагрузкой.
Смысл микросервисов - в распараллеливании задачи.
Если нагрузки нет - микросервисы не дадут ничего, кроме оверхеда.
https://scanlibs.com/spring-v-deystvii-3-izdanie/
Она старая, но, для первого знакомства пойдёт, наверное.
Нигде, даже за деньги. Можно только по 3 спрингу найти (inb4: устарела как говно динозавров), 4 и 5 тупо не переведены. По 4 есть такая хуйня: http://beginner-mercenary.blogspot.com/2018/07/spring-in-action-spring4.html , но лучше мурзилки и ютуб по спрингу смотреть, чем пытаться разобраться в этом.
А вот свежая Pro Spring ищется очень легко, если устраивает, вбей в документах в вк "spring для профессионалов".
https://scanlibs.com/spring-4-dlya-professionalov/
Это уже по Spring 4.
https://scanlibs.com/java-v-oblake/
Совсем свежачок.
Кликнуть по нему.
Для примера, в одном фреймворке PHP (Yii) есть автогенератор такой штуки, для Spring есть что-то в этом духе, или надо все вручную писать? Знаю что есть библиотеки которые генерируют frontend-формы через node.js (Vaadin, JHipster), но хотелось бы чисто на Java.
Я как понял, он с какой то версии свчинулся из GWT в node.js
https://vaadin.com/application-migration/vaadin-7
Ни слова про ноду не нашел.
Это случаем не твой вопрос? https://stackoverflow.com/questions/26504637/
> для Spring есть что-то в этом духе, или надо все вручную писать?
Обычно пишут вручную.
Вот решение: Arrays.sort(files, Comparator.comparing(File::isFile));
Объясните, почему выполнилась вторая часть задания? Почему группы папок и файлов отсортировались по пути, если это нигде явно не указано?
JDK 14, не воспроизводится.
Могу предположить, что массив files у тебя изначально был в отсортированном виде.
Может у меня работает, потому что я получаю массив с помощью listFiles? Вроде в папке они не отсортированы по имени.
В нём нужно разместить множество ключей, и потом оперировать со значениями.
Есть конструктор, который на вход принимает параметры множества.
Прописал его через LinkedHashSet, по условию.
Set<String> place = new LinkedHashSet<>();
this.place = new LinkedHashSet<>();
Теперь, есть один из методов public String setPlace(String value),
который принимает на вход строку value. Её нужно записать в Map, ассоциировать с первым попавшимся значением ключа place. Никак не воткну, как работать с этим множеством place, как его первый попавшийся элемент-то вызвать. У меня пока он либо на все ключи сразу присваивает value, либо вообще какая дичь.. Буду рад мыслям на этот счет. Внутри for метода setPlace условие так и не смог прописать.
Для этого достаточно пользоваться принципами SOLID. Читать очевидный клин код.
Тотальная. Даже Оракл на него хуй положил.
>crm
>пхп
>1c
У тебя каша в голове просто.
На пхп делают не crm, а cms, лол.
А в 1с - ну да, иногда они используют термин crm, чтобы рекламировать своё поделие.
Воообще, CRM - это Customer Relationship Management. Этим модным (сейчас) словом сейчас называют то, что лет 15 назад называли модным (тогда) ERP.
На самом деле - это просто информационная система для бизнеса, в широком смысле слова.
Если чистая джава - то Swing.
Свинг - это то, на чём написан UI в IDEA, если кто забыл.
Раздела про Swing в Java Tutorial должно быть достаточно.
Еще в интернетах есть охуенная книжка Filthy Rich Clients.
Можешь на ютубе загуглить "MVVM на Java" - есть хорошее видео на русском.
Возраст свинга и инфы по нему не должен тебя пугать - это надёжная проверенная технология.
Если не пугает джаваскрипт - то >>861843
В интернетах дохуищща готовых примеров.
Там всё не так сложно.
Только бери именно Vue.
И ни в коем случае не Angular или React.
Судя по документации, listFiles() не гарантирует никакого порядка, но у меня он тоже вернул уже отсортированный массив. Видимо, зависит от низкоуровневых особенностей конкретных ОС, полагаться на это не следует. Ну а то, как они в проводнике сортируются, вряд ли на это влияет.
Зайди в JS тред и почитай.
Ты это должен спрашивать у имеющих опыт работы с шарпом. Каких ответов ты ждешь итт?
Шарп - негодный, мусорный язык. И нишевый.
А джава - промышленный стандарт.
Так что, должны быть какие-то серьёзные, специфические причины, чтобы вкатываться именно в шарп. Если у тебя их нет - шарп тебе не нужен.
Помнится, оракл был не согласен с тем, что то, что на андроиде, можно называть джавой.
А Sun разрешал в нулевых это поделие разрабатывать.
А нахуя тебе фриланс? Есть же просто удалёнка. Сидишь на окладе, пердишь в стул, получаешь бабки.
Пиздец сгорело и задизморалило. Пойду лучше книжки читать, рыли.
Лично мне кажется, что текстом всегда воспринимается лучше и больше. Пока начетчик из курсов мыкает и пересказывает страничку из книжки ты этой книжки 5 страничек прочитаешь.
Лично мне только вот это зашло(челик в /b/ посоветовал) https://www.youtube.com/playlist?list=PL4_hYwCyhAvblhTbPQmOF4b3kilWSpOjU
Да и то, только как закрепление двухтомника Хорстманна.
Ну там для студентов мфти изучавших плюсы и структуры-алгоритмы, но мне зашло без этих знаний, разве что где-то в середине ничего не понял, когда он пару минут про конечные автоматы говорил.
> 1800 руб в месяц
Так это ж много. Когда был студентом, это было непозволительной роскошью. А книги можно скачать бесплатно без смс.
Да.
На джавараш точно не хватит.
У нас в EJB юзаются спринговые бины, половина кода подсвечивается жёлтым, но работает.
Использовал 5 лет назад реализацию Java 7.
Несколько раз эпически соснул из-за того, что эти сукины дети приципиально отказались реализовывать Java.AWT и Java.NIO.
Вот так вот просто, да. Я такой запускаю свою говноутилиту по выгрузке какой-то поебени из оракла в эксель и получаю в ебало сообщение, что "кококо мы не поддерживаем эти пакеты, соси!"
Покупай, конечно, все знают, что не купил джавараш - не джавист, и вообще херочка спросит на собесе, прошёл ли ты его, к тому же на джавараше куча историй успеха, как его прохождение помогло им устроиться на работу.
Я вот думаю купить ли на месяц гиперскилз, чтобы дорешать пару задачек. По спрингбуту там и т.д. Ибо засел на jdbc и не успею.
У вас нативные сервера на java или какие-то пулы с cgi для nginx, например?
Нативные на джаве, работают с джавовскими сокетами.
Байтоёбство на жабе.
Жабу надо прогревать, а нгинкс всегда хуярит.
Хз что-то. Надо попытаться. Но я думал эти рефералки для положения до 1 января, туда вроде и сейчас без рефералок не пускают.
Нет, создаётся только один объект.
Вызываются, чтобы проинициализировать поля базового класса, не ломая логику этих классов.
Я так понимаю, что родительские конструкторы применяются для твоего класса sub, а в конце конструктор самого sub.
Поправьте меня, если я не прав
Не совсем. Сначала у тебя вызывается конструктор sub, и в нём ты либо явно вызываешь первой строчкой базовый конструктор через super(), либо, если ты этого не сделал, неявно в самом начале вызовется конструктор по умрочанию, а если такого нет, но не скомпилится.
Посмотри про наследование в любой кгижке по кору, там это рассказывают.
Вот я как раз и писал про вариант с super(). Просто после первого поста я только об этом и стал думать.
Спасибо
За 200 в месяц можно найти, смотря какое железо нужно.
А еще, папки могут быть ссылками (хардлинками что ли) на другие папки. Короче возможны циклы.
у файла есть гора функций для проверки. если это не подойдет, то храни посещенные паты, чтобы по циклам не ходить
>>867754
> задача о поиске кратчайшего пути
Это про графы, но не про деревья. В дереве у тебя от корневой папки всегда ровно один путь.
> Есть смысл применять тут что-то сложнее BFS
Либо DFS. Смысла брать что-то сложнее нет, раз уж так работают всякие find в башах.
> папки могут быть ссылками
Можно не ходить по ним, find так и делает: https://unix.stackexchange.com/questions/14337
А если и ходить, можно вести список уже посещённых папок и не заходить, если уже там были.
Хм, значит кривую аналогию подобрал. Нет, это как раз про граф, и ссылки надо учитывать. То есть у каждой "папки" может быть несколько предков и несколько детей.
Тогда да, бери поиск кратчайшего пути. Если тебе действительно нужен кратчайший путь, а не первый попавшийся, а то так можно очень сколь угодно долго ходить между "папками".
Ну то есть через BFS? Вообще-то подойдет любой путь, не обязательно кратчайший, но мне кажется, тут разницы в алгоритме не будет.
Шиза конечно, у create должен быть параметр-билдер, тогда такое форматирование автоматом будет.
Я в книжках-то охуеваю с форматирования содержания, где приходится прикладывать линейку, чтобы не перепутать номер страницы с соседними строками, а вы ещё и в код это тащите. Туда же SQL, где при создании таблиц между названием колонки и её типом ставят 100500 пробелов.
Учу java 2,5 месяца.
Подскажите годные материалы, чтобы хорошенько задрочить коллекции, пожалуйста
С меня сотни нефти
Любая книга по кору, раздел "коллекции".
Потому что хватит платину спрашивать.
Реализаций у интерфейса может быть больше одной, и часто бывает, что заранее неизвестно, какая из реализаций будет юзаться, или будут юзаться несколько одновременно. Такое часто бывает с либами - они не могут знать, какую именно реализацию захочет пользователь либы, и поэтому принимают вместо конкретного типа интерфейс, который реализует сам пользователь. Например, интерфейс DataSource - представь, что тебе пришлось бы переписывать весь код только ради того, чтобы скормить ему другую базу данных для unit-тестов.
Смотрел какой-то курс негра с рутрекера скаченный, но чет пока смотрел его (у него там дохуя воды), половину того что было вначале забыл. Начал искать книги. Нашел книгу - Spring in Action. Посмотрел оглавление.... Судя по оглавлению, getting started гайды с офф сайта и то информативнее. Начал читать документацию типа вот этой https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#spring-core
.... ебать... скачут от одного к другому в в каждом подразделе (к примеру, в разделе про IoC/DI прыгают то на ресурс, то на МВЦ, то еще на что-то, в итоге структуры толком нет, при этом то что они пытаются назвать структурой явно не для дебилов вроде меня написано (причем я почти уверен что 80% информации из того же раздела про IoC нахуй не нужно знать. Инкапсуляция, чмо.
С раздела про AOP вообще нахуй упал в осадок (насколько я понял это что-то типа миддлвейров в PHP / Node js? Но нахуя так усложнять то, даже в документации.
Потом значит нашел книгу "Spring 5 для профессионалов" (Юлиана К.) (самая топовая была на рутрекере по сидерам после ебаной Spring in Action). И в общем она так же как и документация оправдала свое название. Не для дебилов короче. Каждый вопрос обсасывается с 10 углов, нахуй мне это надо, я же новичок.
Короче что мне блядь читать ? Продолжать читать ебаную доку и эту книгу для профессионалов? Или может есть какая-то книга/ресурс для дебилов где объемнее написано, чем Spring in action
прежде чем делать на практике нужно понять что и как. геттинг стартеды нахуй не дают представления, как и книга Spring in Action.
Судя по этому треду местами складывается впечатление что обезъяна с гранатой в спринге серьезнее чем обезьяна с гранатой во фронте на JS. Там в разы все понятнее и ты отвечаешь за то что ты делаешь, тут же магия какая-то
Spring in Action лучше взять предпоследнее издание.
Там больше уделено внимания внутреннему устройству и идеям, а в последнем - Boot и пиздец.
Также, если ты не понимаешь, зачем нужно AOP и прочее IoC/DI - значит у тебя просто нет достаточного опыта на джаве вообще. И даже понимания того, что есть джава - тоже. Упоминание пыхи, node и каких-то мидл-тварей - только подтверждает это.
Вообще, прежде чем научиться чему-то, надо сначала разучится всякой хуйне, которой ты нахватался до этого. И пыха (да и node тоже) - это то, что в первую очередь надо забыть, как страшный сон.
В качестве переходного мостика можешь использовать питон - там плохому не научат.
Тут ещё надо понимать, что один класс вполне может реализовывать несколько интерфейсов, из разных областей. Т.е. ты можешь один и тот же объект использовать в разных качествах.
Интерфейс - это как штатное расписание. И конкретный сотрудник вполне может совмещать должности, если соответствует требованиям.
Правильно ли я понимаю,что в реальных проектах интерфейсы нужны чтобы создать некую иерархию и ограничить функционал класса в нужном направлении?
Я работаю на работе со спрингом уже два года, но так и не знаю что такое бины, так как явно никогда их не использовал (если только это не код с туториалов и стаковерфлоу). Так что практика практикой, но и теорию знать надо
Говорят же тебе
>работаю на работе
Чего непонятного то? Человек работу работает, получку получает, все хорошо.
В основном расчетами, статистикой, преобразованием одних данных в другие. Ну отправкой этого добра за crud-запросы и по веб-сокетам.
Сейчас дочитаю "Concurrency на практике" и начну закрывать пробелы в знаниях Спрингс
>Вообще, прежде чем научиться чему-то, надо сначала разучится всякой хуйне, которой ты нахватался до этого. И пыха (да и node тоже) - это то, что в первую очередь надо забыть, как страшный сон.
как раз наоборот, мне пыха и нода помогли понять более менее что такое AOP и для чего оно вообще, суть та же.
>Также, если ты не понимаешь, зачем нужно AOP и прочее IoC/DI - значит у тебя просто нет достаточного опыта на джаве вообще. И даже понимания того, что есть джава - тоже. Упоминание пыхи, node и каких-то мидл-тварей - только подтверждает это.
А какой опыт ты имеешь ввиду под джавой? Решать задачки уровня коллекций, стримов и прочего говна? Как это поможет в изучении DI/ AOP и прочего говна из спринга?
В том то и прикол что нигде нет никакого нормального гайдлайна по тому как учить джаву. Тут дохуя кто советует читать хорстманна (и еще в довесок парочку книг после этого).. Но это не про DI и AOP. DI и AOP я видел только в книге Гонсалвеса по Java EE, но она ебануто написана, я ее забросил, там тоже самое что Spring in Action только еще короче.. Плюс мне в этом же треде советовали сразу на спринг прыгать. Кору я изучил (причем в нескольких вариантах).
Если у тебя есть какой-то грамотный гайдлайн по изучению джавы милости прошу, можешь накидать ресурсов книг с последовательностью изучения, возможно что-то я пропустил.
Про Spring in Action так и не понял. 620 страниц самое большое что есть на рутрекере. Чето я посмотрел доку и сравнил объемы... получается книга идет по стопам "вот вам круг, нарисуйте сову".
Профдеформация
Нет, это не так. Либо ты неудачно сформулировал.
Интерфейс - это дополнительный уровень абстракции.
Интерфейс - это набор требований, контракт, бумажка
Кто и как реализует этот контракт - всё равно.
Класс (и его экземпляр) - это реализация, в аналогии со штатным расписанием - конкретный человек Вася.
Это и есть то, что называют словом "абстракция" - тебе не важно, что это за реализация, если она соответствует заявленным требованиям. Т.е. ты абстрагируешься от деталей реализации.
В этом смысл интерфейсов.
А можно вообще всю программу сначала написать на интерфейсах, а потом уже в конце их все имплементировать? То есть сначала построить полностью архитектуру, структуру, а потом уже сделать так, чтобы код что-то делал реальное.
В теории - да, можно. Но, это слишком экстремально, мне кажется.
Без написания реализации на промежуточных этапах не обойтись.
Ведь в интерфейсе не может быть полноценного кода (кроме default-методов). А без реализации ты не поймёшь до конца, что тебе нужно.
Т.е. заранее продумать _всю_ программу, до того как начнёшь писать рабочий код - это нереально. Так делали когда-то давно, когда программы были простыми (по нынешним меркам). Сейчас другой подход - ты пишешь минимально рабочий код, а потом - рефакторишь его и добавляешь функционал.
И, как раз, на этапе рефакторинга ты можешь выделить интерфейсы, отделить их от реализации.
Рефакторинг - это когда ты не добавляешь новые фишки, а меняешь существующий код так, что он продолжает делать то же самое, но, становится более "чистым" и "красивым"- более тестируемым, расширяемым и т.п.
Хуямп, лол.
Вот вся книжка - одни задачи, и там не только коллекции:
https://scanlibs.com/java-coding-problems-programming-real-world/
Вот тут есть упражнения к каждой главе:
https://scanlibs.com/core-java-for-the-impatient/
https://scanlibs.com/core-java-se-9-impatient-2nd/
Также, ньюфагам полезно читать того же Хорстмана, Core Java, но, без "Impatient", которая в 2-х томах. Там нет упражнений, но, есть очень подробные объяснения.
Читал Хорстманна большого и проходил гиперскилз. В маленьком Хорстманне задачки не понравились и ответов к ним не нашел.
Если тому анону надо, то вот рефералка: https://hyperskill.org/join/52dfb00fc
За месяц(через месяц перестанет работать бесплатная регистрация) кроме коллекций можно еще один какой-нибудь раздел пройти. Теорию там можно скипать.
Вот думаю выбрать из трех. Две большие книжки и третья маленькая. Особенно интересно мнение по маленькой.
Очень уж лень утопать в большом талмуде.
Мимо проходил, вывалю свое мнение, вот список вопросов для экзамена Spring Proffesional знаешь ответ на каждый из них - молодец знаешь спринг, не знаешь - каждый вопрос вектор для изучения. Если считаешь что для знаний спринга нужно больше знаний чем там, можешь учить че хочешь, но на других перекладывать это не надо. То же касается и джава кор есть сертификация - есть вопросы к ней.
Мне вот кажется в будущем будут востребованы специалисты с знанием кластеризации вот я и сижу учу хадуп на будущее.
>но вроде в 64 битной винде где 2 программ файлса и не сработает так.
Там Progra~1 и Progra~2
Ещё ProgramData.
олды поймут
Classic Computer Science Problems in Java читни.
Это новая книга, она сначала вышла в варианте для питона.
А потом уже что-нибудь более теоретическое по алгоритмам.
Тут надо отделить мух от котлет - учебник по алгоритмам не должен быть привязан к языку. Там обычно псевдокод. Для начала очень хороша книга Algorithms Unlocked. И она не толстая. Это от автора знаменитого MIT'овского учебника.
А конкретно по джаве - надо книгу по структурам данных, и как они реализованы в джаве. Название, как правило, такое и есть.
Идея создавать гуй на джаве ещё хуже, чем голая консоль, и клёвого тут ничего быть не может. Но бери JavaFX, раз уж так хочется.
Чувак, десктопный UI в Java делают на Swing.
Java FX - мертворожденная хуита. Которая, по сути, и угробила десктоп на джаве. Потому, что надо было не хуйнёй страдать, а свинг допилить.
Swing - это то, на чём написан UI в IDEA.
Но, делать десктопный UI ты, с непривычки, быстро устанешь.
Поэтому, делай консоль сначала.
>>870006
>ещё хуже
Хуюже.
В JetBrains напиши про это, а то они не знают, наверное.
> Хуюже.
> В JetBrains напиши про это, а то они не знают, наверное.
Да, я уже несколько раз здесь постил, что они неправы и должны срочно переписать идею на кресты или хотя бы шарп (который теперь кроссплатформенный).
«Я всю жизнь при каждом обновлении IDEA проверяю, на чём она написана, и каждый раз это Java. Вы там ебанутые что ли все?»
Лучше оформи своё приложение как клиент-серверное и нахуярь простенький UI на Vue.js или хотя бы просто REST API, будешь через Postman взаимодействовать.
Это несложно, но пользы от этого получишь намного больше. Как верно заметили аноны выше, JavaFX, как и Swing, в хуй никому не впёрлись.
Есть же прослойка над нативным кодом - SWT. Для IDE не нужна поддержка десятков архитектур, вряд ли кто-то рабочую станцию будет делать не на 3-х популярных ОС.
Ну ладно.
Поясните за спринг. Есть spring framework, а есть spring boot - в чем разница?
И насколько долго эту хуйню осваивать, если я сениор скалист? годной работы нет нихуя
Бут - это просто надстройка (необязательная) над обычным спрингом, чтобы упросить жизнь. Без бута тебе пришлось бы вручную управлять версиями разных модулей спринга (под-фреймворков), самому писать конфиги для связывания этих модулей и самому встраивать томкат или другой контейнер сервлетов. В остальном это обычный спринг.
> И насколько долго эту хуйню осваивать, если я сениор скалист?
Через неделю уже сможешь шлепать круды.
Любой современный язык проще С++
Джава - это не совсем веб-разработка, как в каком-нибудь пхп, где пишешь фронт и бэк, отдаёшь заказчику и забываешь (хотя с джавой такое тоже бывает). Обычно это постоянная доработка большого и сложного сервера на полляма строк целой толпой кодеров, длящаяся годами, и веба в этом сервере может вообще не быть.
Спасибо, тогда просто почитаю документацию и перепишу резюме под джависта
Читал, в своё время, первое издание, в переводе некоего Портянкина, лол.
Очень хорошо пошло. Лучшая книга по джаве была. Рельно "думать на джаве".
С тех пор я давно уже не читаю ни переводы, ни учебники.
Но, слышал, что более новые переводы Thinking Java - более хуже.
Сам смотри, в общем.
Хз, не читал. Сам начинал с Хорстманна и ещё чего-то.
Ладно, спасибо еще раз.
>Ну, работа с серверами, MySQL , базами данных мне так же интересны
Но в джаве придется с ними много возиться, JDBC, ORM, транзакции.
>много возиться
Много - это по сравнению с чем?
В джаве работа с БД сделана максимально удобно, в этом и смысл.
Так стримы же не намапишь на запросы в БД, т.к. нет интроспекции. Или что ты имеешь ввиду?
я не шарпист, я скалист который выше про спринг спрашивал
Понятно, я думал, что LINQ только для коллекций. Что ж, тогда аналога и правда нет.
А он ко всем субд так может, или только mssql?
Да и не нужен он.
Работаю дата инженером, хочу перекатиться в бекенд и написание сервисов.
Пока учу спринг.
Читаю книги по спрингу, там много просто jsp вью, формы веб страниц и прочую ебалу.
Это вообще где то используется, надо знать? Я думал весь фронт сейчас на яваскрипте и делают его фронтендеры.
Просто это так скучно что ебанутся. С таким же успехом я могу дальше на спарке батчи хуярить.
Вдогонку - нужен ли хмл-конфиг или все таки мы в двацдатых уже?
Понятно, что где нибудь в легаси все это есть, мои вопросы больше за стейт оф зе арт.
Ну, пиши бекэнд, чо.
Ты, главное, на собеседовании где-нибудь, "ява" не скажи.
А то тебе прямо сразу перезвонят. А могут ещё и пизды дать.
Бамп.
Любую мальскую задачу на уровне нарисовать хуй восьмерками используя for у меня целый квест, где я просто смотря на выводимый результат правлю код, это так и должно быть?
Почему не могу сразу нормально написать циклы, получается я не понимаю как они печатают значения?
Спасибо.
Сделать тестовую класс, убрать вообще всё лишнее, чтобы были только вложенные циклы в main.
Имена переменным циклов дать не i-j (они визуально похожи), а x-y, или даже first-second.
И сидеть медитировать на этим, пока не постигнешь дзен.
Не надо это говно тащить в тред.
Если хочешь понять вложенные циклы - не надо хуи рисовать.
Напиши пузырьковую сортировку массива.
Кстати я делал такое, в итоге я половину списал. Потому что сам начал путаться. Делал так что два отсортированных массива слить, тоже отсортировав.Сам нихуя не понял, конечно же. Наверно надо еще раз попробовать. Раз я видел как это делать, наверное хуйня получается, опять же сам к этому не пришел.
>>870711
Чем-то таким и занимаюсь.
Есть способ проще - дебажить каждую строчку, там все значения будут видны на каждой итерации.
Это совершенно не то.
Смысл не в том, чтобы посмотреть значения.
А в том, чтобы построить ментальную модель, наработать интуицию.
Прорешай десяток задач на двумерные массивы где-нибудь на leetcode.com или www.codewars.com
Вот тебе отличная метафора рекурсии, из книги "How To Think About Algorithms":
Представьте ряд домов на улице, каждый следущий меньше предыдущего.
Ответ (результат) лежит в первом, ближайшем к вам, самом большом доме.
Но, у вас нет ключа.
Ключ от первого дома - в следующем, который поменьше.
Но, он тоже закрыт, и ключ от него - в следующем, который поменьше.
И так далее ...
И, наконец, последний дом - совсем маленький, вы можете просто поднять крышу и достать ключ от предыдущего дома.
Затем вы открываете все дома в обратном порядке, пока не дойдёте до первого и не получите ответ.
Лучше бы ты сам нашёл эту книгу, и посмотрел, что там написано - оно того стоит. Там есть и другие метафоры рекурсии и не только.
Но, я сегодня добрый, поэтому объясню в двух словах:
Это метафора развёрнутой рекурсии.
Дом - это инстанс проблемы. В начале - он большой.
По мере углубления в рекурсию (продвижения по улице), проблема остаётся той же концептуально, но, уменьшается в размере - домики уменьшаются, каждый следующий инстанс всё меньше и меньше.
Затем проблема становится настолько маленькой, что больше не надо уходить в рекурсию, и можно решить её просто так.
Когда ты решил самый маленький инстанс проблемы, ты получил ключ.
И затем ты выходишь из рекурсии обратно, открывая на каждом уровне дверь дома предыдущего (большего) уровня ключом, взятым на текущем.
В конце (т.е. в начале) ты получаешь полный ответ, открыв последний (первый) уровень.
Хуевый пример. Рекурсия была бы, если бы ты заходил в дом, а там еще один дом. Останавливаться надо, когда внутри оказывается ключ, а не новый дом.
Ебать ты умный.
Это метафора развёрнутой рекурсии.
Дома вынули друг из друга и расположили в ряд.
Нетренированный человек иначе не понимает.
А тренированному - уже не нужны метафоры, не нужно разворачивать - он уже наработал интуицию, и решает такие проблемы в абстрактном виде.
И да, метафора "очень маленького домика", который можно просто разломать и взять ключ - она очень важная.
В реальных проблемах (даже в итерации по массиву) ключ не лежит и не ждёт тебя в конце - его нужно _взять_ (принять решение о прекращении рекурсии и т.п.)
Забей, они хуйню обсуждают.
Можно, просто положи в resources и делай с ним что хочешь.
Через new ClassPathResource(...)
Значит программирование это не твое.
Подскажите, че лучше писать в графе "о себе" в резюме?
И стоит ли юзать сопроводительное письмо?
Что в нем писать?
Реквестирую советы, пожалуйста
Мне нужно вернуть записи, соответствующие списку введенных тегов, уже есть хибер, springDataJpa.
Как лучше сделать?
Теги записаны в строке через пробел, но это можно поменять, если необходимо.
У меня 3 варианта, которые приходят в голову:
генерировать автоматический запрос и выполнять его
SELECT * FROM News
WHERE Tags LIKE '%t1%' or Tags LIKE '%t2%' or ...
либо тупо загружать все новости и с помощью джавы сортировать.
либо как-то использовать Predicate, но пока нихуя не понял, как там это сделать.
Есть какой-нибудь паттерн, как это правильно сделать?
Вроде сделал, вопрос отменяется.
Не надо сетить (т.е. менять цену), это пиздос вообще.
Надо сделать вычисляемое поле типа "окончательная цена".
Или как-то ещё.
Где-то должно быть действие "рассчитать цену" или "применить скидки" и т.п.
Как конкретно - зависит от задачи, нужны подробности.
Может быть, например, объект Price, в который собираются все вещи, влияющие на цену, и он выдаёт реальную цену для отображения или использования в документах.
>генерировать автоматический запрос
Генерировать надо не запрос, а условие отбора (то, что после WHERE).
Predicate - это способ сгенерировать условие.
https://www.baeldung.com/jpa-and-or-criteria-predicates
И да, хранить вычисляемые вещи, в общем случае, не нужно.
Но, иногда так делают, когда это даёт значительный выигрыш в производительности.
Но, делают это не так, должна быть особая процедура расчёта (по расписанию и т.п.).
То есть, в объекте Price сделать @Transient finalPrice поле, которое в геттере будет рассчитывать цену со своего же поля price и discount?
Где он здесь нарушен?
Анонче, прямо этим и пользовался)
Лучше назвать это actualPrice.
Не очень понял про "поле".
Я имел в виду просто геттер, в котором это будет вычисляться.
Да, можно рассчитывать и записывать в переменную, но, лучше не надо, т.е. нужны особые причины, чтобы так делать.
Лишний стейт нужно убирать везде, где можно.
>>872271
К чему ты это пизданул, интересно?
Кстати, совершенно нормально, иметь несколько представлений для одного объекта.
Например, ты можешь взять твой "Товар" и "Скидки" и сделать класс "Товар в Корзине", в котором актуальная цена будет вычисляться.
Не подумал об этом. Привык писать одна таблица = одна сущность без какой-либо логики. Спасибо за наводку.
По книге Мартина "Клин код" функции должны быть максимально простыми и выполнять одну вещь.
Ну вот к примеру функция которая из списка возвращает элемент по какой-то логике. Внутри цикл перебора по списку и сравнение с значением. Зачем тестировать такую функцию? Типа тест будет проверять работают ли циклы и сравнения в яве? Это же бред. Да, они работают и не могут сломаться. Какой в этом смысл?
Я пишу тесты в двух случаях:
- есть какой-то нетривиальный алгоритм.
- интеграционный тест: предположим, у тебя есть http-ендпоинт, при запросе на который срабатывает некая бизнес-логика, которая меняет данные в базе, отдает ответ тебе и может быть еще какое-то событие куда-то посылает, я пишу тест, который реально шлет http-запрос, дальше ассерчу состояние данных в базе и ответ.
Тесты нужны в первую очередь для контроля регресса - чтобы проверять, что новые доработки не ломают старую логику.
Вроде понял что написать в катч, в тру не понятна .
Есть интерфейс класс его реализует, типа давать кредит парню или нет .
Пишу тупа
tre { chekClientForCredit(bankClient) return boolean;}
Конечно это дичь какая-то да?Надо написать код который может кинуть исключение, это что, как он выглядит.Идеально может кто скажет ответ из той части информации, что я дал.
Нет, пойду дальше гуглить.
Что, иерархию квадратов-прямоугольников, круд про шлюх и неработающий мавен в идее обсуждать интереснее?
Кстати. Вижу в вакансиях, что требуется знать Мавен.
Вопрос номер 1.
Что именно надо знать? Сам я только использовал Градл. Под использованием я подразумеваю ./gradlew run/bootRun/build и добавление зависимостей. Собственные таски писать не приходилось, только туториал читал.
Вопрос номер 2.
Везде используются Мавен только из-за того, что он раньше появился? По моему на Groovy писать легче (и меньше), чем XML. Или Мавен функциональнее, чем Градл?
>>872699
И раз уж ты завел речь о мемах. Можешь скинуть картинку с петухами, где один из них кричит что-то наподобие "бежим быстрее, там джава-машина завелась"
Тоже вкатываюсь, задаю вопросы тут иногда получаю что-то исчерпывающее, чаще хуй.
Анон, ты использовал когда нить AWS 'Stack' - я правильно понимаю что эта залупа хорошо подходит под задачу, когда надо сначала навыделять ресурсов, потом освободить ненужные, ничего не проебав?
Типа поднял кластер и кучу сопутствуюещего говна, занес это по пути в стэк, потом чтобы вручную не очищать - говоришь "очисти стек, блядина". Или я нихуя не понял инженерную мыслью амазонопидоров.
Если ты об этом "стэке"
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html
то похоже стэк у них это что-то типа транзакций. Добавляешь туда ресурсов с которыми надо что-то сделать в один присест и оно либо всё выполняется, либо остаётся как было если где-то ошибка.
> Что именно надо знать?
Уметь добавлять зависимости и плагины в помник (копипастить их с mvnrepository.org), модули, профили сборки, фазы.
> Везде используются Мавен только из-за того, что он раньше появился?
Похоже на то. Но обычно не так много причин выкидывать из проекта мавен и заменять на градл, далеко не всем нужны все фичи из градла, существующих хватает. И есть какие-то плагины, которые только для мавена, это может быть критично.
Я вкатывался в этот тред после /b/, так что у меня иммунитет к обоссыванию, лол.
Мне не сидится в таких местах, там почитаешь треды - так у каждого первого по их собственным заверениям аутизм, шизофрения, депрессия, синдром Аспергера, ПТСР, ОКР, интроверсия, социопатия, социофобия, апатия, психопатия. Один я нормальный, есть пруф от психиатра.
Это они так оправдывают своё нежелание работать.
Есть интерфейс BankWorker. Объект класса, который реализует этот интерфейс является работником банка, в задачу которого входит одобрение или отклонение заявок на кредиты.
У него есть метод checkClientForCredit, который на вход принимает экземпляр BankClient и возвращает true, если всё впорядке и кредит переданному клиенту можно выдавать, или false - если клиент не подходит под условия кредита. Также, этот метод может выбросить исключение BadCreditHistoryException, если у клиента плохая кредитная история. Или ProblemWithLawException, если у клиента есть проблемы с законом.
Ваша задача:
Реализовать метод getCreditForClient, который принимает работника банка и клиента, который хочет получить кредит. Метод должен возвращать true - если кредит выдать можно и все условия соблюдены и false если есть какие-то проблемы. Если клиенту отказали в выдаче кредита по причине плохой банковской истории - метод должен выводить в консоль сообщение "Проблемы с банковской историей", если клиенту отказали по причине проблем с законом то ничего выводить на экран не нужно.
Анон выручай
>У него есть метод checkClientForCredit, который на вход принимает экземпляр BankClient и возвращает true, если всё впорядке и кредит переданному клиенту можно выдавать, или false - если клиент не подходит под условия кредита. Также, этот метод может выбросить исключение BadCreditHistoryException, если у клиента плохая кредитная история. Или ProblemWithLawException, если у клиента есть проблемы с законом.
{Хуевый дизайн, дальше не читал.
Чёт даже на лабу не тянет.
@Override
public boolean getCreditForClient(final BankWorker worker, final BankClient client) {
try {
return worker.checkClientForCredit(client);
} catch (final BadCreditHistoryException ignored) {
log.info("Проблемы с банковской историей");
} catch (final ProblemWithLawException ignored) {
}
return false;
}
Атрибуты - это спорная фича xml.
Во многих случаях принимают решение принципиально их не использовать.
Я писал что-то типа .
public boolean (BankWorker bankWorker, BankClient bankClient) {
//тут ваш код
public class void getCreditForClient throws BadCreditHistoryException,ProblemWithLawException {
try { return checkClientForCredit(bnakClient)
}catch ( писал примерно то же, что у и у тебя){
принтил сообщение и писал ретерн правда, видимо ретерн не нужен в кажом катч}
}
}
Нет, не лаба. Задание видимо на написание своего исключения.
Я еще не понимаю что писать в try типа код который может выдать исключение, кто это такой ваш исключение .
Да в точку. Очередной вкатышь ради денег, да и еще не понимает ничего.
При создании спринг компонента можно указать @Scope(scopeName = "singelton", proxyMode=ScopedProxyMode.TARGET_CLASS) или через конфиг @ComponentScan(scopedProxy =ScopedProxyMode.TARGET_CLASS), для prototype все очевидно, но зачем спринг проксирует сингелтоны, собсно и вопрос зачем нужны singelton proxy?
А при чем тут постпроцессоры? Мы же говорим о создании кастомных объектов, имеется в виду практическая ценность, то как создаются прокси и их lifecycle в спринге я и так знаю
server.error.path=/error
возвращает правильную html страницу, но у нее, сука, не грузится изображение <img src="img/error.png">.
Если просто переходить на страницу /error, то все ок.
Для этого надо делать свой error controller, нихуя не понимаю?
Потому, что это джава тред и я надеюсь, что тут сидят не только люди, которые решают задачи на циклы нет ты иди нахуй
>>873457
Сам себе отвечаю:
You may also use <aop:scoped-proxy/> between beans that are scoped as singleton, with the reference then going through an intermediate proxy that is serializable and therefore able to re-obtain the target singleton bean on deserialization.
Можно использовать для сессий, если сессия упадет можно заранее сериализовать прокси необходимого бина и по необходимости его достать. Круто же.
Хуйня бесполезная.
Хуево выразился, просто есть ап и его бд, каким способом лучше всего его на кубере крутить
Пробовал из разных браузеров - не помогает.
Кто-нибудь с таким сталкивался?
Сейчас на джавараше добиваю кор потихоньку и есть два варианта.
Первый - продолжить обучение на ресурсе
Второй - попробовать запилить свой первый проект. Хочу сделать приложение для учета расходов с пользовательским интерфейсом(о нем я вообще пока представления не имею). Хватит ли неуверенных знаний джава кора на реализацию подобного? Понятно дело, что я буду еще кучу инфы в процессе гуглить. Вопрос состоит в том, стоит ли вкладывать время в это, не будет ли полезнее пока джавараш закончить?
делай, а то так и будешь оторванные от реальности примеры задрачивать, непонимая нахой оно нужно
>Хватит ли
Хватит.
Тут вопрос - это веб-приложение или десктопное?
На джаве сейчас десктоп делать может быть проблемно (для ньюфага).
А веб - сложновато вот так сразу.
Поэтому, найди книжку по спринг-буту и сделай пару хелловорлдов.
Потом - TODO list на буте + интерфейс на Vue.
Ни в коем случае не на React, хотя инфы и много.
И не надо пытаться сделать сразу быстро, много и хорошо.
Надо просто хоть что-нибудь сделать.
Это долго объяснять подробно, лучше поверь на слово.
Если коротко - в Vue есть шаблоны и реактивность.
В реакте нет ни того, ни другого.
Учится за 2 вечера. Нет подводных камней.
Интуитивно-понятные принципы работы.
Non-opinionated, абсолютно (в отличие от блядского реакта).
Прекрасная документация.
Опять же, если коротко - то Vue - это Angular здорового человека.
Можно делать микро-компоненты, и дёргать их из внешнего скрипта.
Можно делать шаблоны прямо в html или в <script type="text/template">...</script>
Можно делать всё без вебпака-бабеля-хуябеля-компиляции-сборки, а просто как в старые добрые времена, прямо в коде страницы писать js.
Помимо шаблонов, есть и рендер-функции и JSX, как в реакте (надо прикручивать, но это не сложно)
На практике - писать в разы легче, особенно, если ты не фулл-тайм фронтендер, а фулл-стак джаваёб.
И бери 2-й, 3-й немножко рановато пока.
Начинай с простых примеров прямо в коде html-файла, без вебпаков-бабелей.
Ахахахах
2к$. В этом основная причина почему я так долго там сидел: на жизнь мне и половины этой суммы хватает. Но сейчас я уже так заебался что готов уйти даже на меньшую зарплату, но на нормальный стек в нормальную команду без ебаных индусов.
В январе по собесам пойду, судя по рассказам тех кто уже съебал найти новую работу джавистом в моём городе вполне можно. В крайнем случае буду смотреть в сторону ремоута.
Сколько населения город?
Около миллиона, Европа.
Когда нужно создать сущность(далее Foo), которая имеет много зависимостей. Без прототайп придется создавать синглтон в котором будут все зависимости и фабрика которая передает зависимости в pojo Foo.
@Component
@AllArgsConstructor
class Factory {
Dependence0 d0;
Dependence1 d1;
...
public Foo getFoo() {
return new Foo(d0, d1, ...)
}
}
Или можно просто создать прототип, который можно получать, например, из контекста.
@Component
@Scope("prototype")
@AllArgsConstructor
class Foo {
Dependence0 d0;
Dependence1 d1;
...
}
Подтверждаю, мне нравится Ангуляр
>>874173
Этот хуй прав, бери vue.js, будет НАРМ. Для spa очень даже хорошо идет, даже если ты раньше не дрочил жс-ы.
Но не советовал бы я уходить в микросервисы, если у тебя это реально первый проект, то лучше обойдись одним жаба процессом, без ебли с докером и кубернетесом. Иначе никогда не закончишь эту залупу свою.
Потом конечно можно накрутить и auth и прочие залупо-микро-сервисы и аркестратор и прочие прелести крудошлепства.
Использую очень редко, реальный кейс попробую привести, но только кратко, для больших примеров можешь на гит хабе примеры из реальной жизни посмотреть.
Обычно его использование обусловлено архитектурой приложения, а не какими то бизнес тасками. В проекте была группа сервисов у которых был один метод: входной параметр - файл, выходной класс стратегии. Проблема была в том что каждая стратегиz внутри себя содержала разный набор компонентов и сервисов, а так же часть инфы о файле, передавать зависимости в качестве аргумента к get-методу была очень плохой идеей, потому что они были для каждой стратегии разные, и даже 4 зависимости превращали get метод в 2 строки. Решением стало к классу сервисов добавить метод @Bean, а все стратегии пометить прототайпами.
Согласен они очень узко направленные, но мне кажется хотя бы знать примерные кейсы их использования нужно, что бы постройке архитектуры не обосраться заранее. Сидеть заново изобретать сессионные бины, такое себе удовольствие. На одном проекте видел как люди в javaEE написали свой контекст и пытались его поддерживать.
Вау. Когда я только начинать работать со Спрингом, у меня была задача, для решения которой мне надо было использовать репозиторий в одном из методов сущности (репозиторий был как раз для этой сущности) и я не мог придумать ничего умнее, чем объявлять зависимость в контроллере и передавать параметром в нужный метод.
Сейчас я понимаю, что так лучше не делать, но в голове буду держать такой вариант на будущее
Ура, я смог создать объект Void, теперь можно наконец-то выпиливать устаревший boolean и заменять true/false на Optional<Void>.
Лучше бы маме посуду помыл!
что читать, на что подписаться чтобы deprecated criteria API в пятом хибернейте или фишки типа пикрелейтед не стали неожиданностью?
Насчёт функционала: новая версия Джавы выходит раз в полгода. Я за это время вижу пару постов на Хабре, про новый функционал.
Да он шутит наверное, за 20 лет работы, он должен был найти все что только можно, если бы ему было интересно
Но, ресурсы кошерно хранить в classpath (в папке в одном из пакетов, как будто это класс), и получать по имени файла в пакете, через getResourceAsStream().
Это работает и когда просто файлы, и потом, когда упакуешь в джар, всё будет работать точно так же.
Параллельно сижу на джавараше.
Вопрос, я сам ручник с 2.5 годами, сейчас хочу вкатиться в автоматизацию, что вообще нужно автоматизатору знать в java, учитывая, что на проекте используют selenium.
Java core + syntax на джавараше будет достаточно? Если нет, на что обратить внимание?
я не верю что в русскоязычном сегменте есть что-то адекватное. хабр еще можно было читать году этак в 2008м, но сейчас это помойка где кроме проплаченных рекламных постов с никому ненужной хуетой ничего не осталось. вот как они свободную регистрацию закрыли так все стремительно в говно и скатилось.
>>875059
>Да он шутит наверное, за 20 лет работы, он должен был найти все что только можно, если бы ему было интересно
где 20 лет назад можно было прочитать про лямбда-функции в жаве?
Не надо ничего на профессиональные темы по-русски.
Вообще.
А особенно - хабр.
И постепенно постигнешь дзен.
чем эта хуйня лучше хабра?
Меньше умничания и словоблудия?
Нет толпы чсвшных пидоров-ботаников-деревенщины-с-вышкой в комментах?
Но, да, медиум - та ещё параша. Мусора много.
Да ничем, тот же хабр, но на английском. Тоже тонны говна, которые надо фильтровать вручную.
BAELDUNG
Когда ищу что-то полезное и сугубо прикладное - чаще натыкаюсь на медиум, на порядок, чем на хабр, на последний - почти никогда.
Но тут наверное дело в том что гуглю в основном на английском, хотя хабор есть ведь уже на нём.
Один хуй, хабр - залупа с кармой и уютным сообществом, а эти джва фактора делят всю пользу на 0
Хабр - российский сервис для российских айтишников, и этот факт делит всю его микроскопическую пользу на ноль.
пофиксил
А что, private должно быть, чтобы только fromBoolean работал? Он намеренно сделан public, вдруг кто захочет вместо Optional юзать null.
Не знаю, вдруг поможет, всех подробностей уже не помню, но. Как то долго мучился с изображением, дело было в расширении. Файл назывался error.PNG, а я считывал error.png. В итоге в одном месте это работало, в другом нет
Ты зачем моё фото здесь постишь?
SimpleAbstractFactoryOfSimpleFactoriesOfFactories.builder().build()
Уж больно блевотно каждый раз переходить с няшного на жабку (11 пока в продакшоне)
Нет, жаба это кобол, в ней ничего нового нет и не будет, надо писать на котлине и сярпе, и вообще про этот тред забыть.
https://advancedweb.hu/a-categorized-list-of-all-java-and-jvm-features-since-jdk-8-to-15/
Тут даже не все знают, что именно "автоматизаторы" автоматизируют, а самих автоматизаторов так вообще единицы, одни разрабы.
В моём представлении автоматизатор - это точно такой же разраб со знанием всего стека, включая спринги, ораклы и сервера приложений, но вместо новых фич он пишет тесты для API/UI.
До чего же мерзотная хуйня этот ломбок, от самого названия, до самой своей ебаной костыльной сущности.
И меньше ответственности. Заказчик не видит проблемы с тестами, он видит только косяки разрабов. Автоматизатору никто не кидает скриншоты с прода без комментариев и с единственным вопросом "Почему?". Никто не заставит его остаться в пятницу до ночи срочно чинить блокеры. Все требования описаны и задокументированы по факту реализации, ничего выяснять у бизнеса не надо, дёргай себе готовые апишки и смотри аниме на втором мониторчике, попивая кофеёк.
Вполне себе даже оправдано, Projector как один из применений - когда твоя IDE крутится где-то облаке, а у тебя только морда. Мало ли какая там на облаке ахритектура, может модный уже M1 от эпл, но т.к. жаве - вроде как и пох. Может и на котлин переведут... будет вообще на нативный код
Привет это я, ломбок, ты зачем в таргет классы зашел? тебя туда кто то звал? я тебе че мешаю, урод?
Хуёк.
Да, ты говно ебаное должен быть вообще сука нахуй прозрачным для меня. Дата классы давай мне, гнида.
И иди побрейся, пидор.
>Никто не заставит его остаться в пятницу до ночи срочно чинить блокеры
На самом деле все правильно. Автотима редко ввязывается в релизную хуйню какую-то, обычно только на саппорте, провести какое-нибудь нагрузочное тестирование, БД пошатать, секьюрность. А так они занимаются регрессией и поддержкой всего проекта который уже релизнулся и работает.
С одной стороны это дикий плюс, нет никакой ебани, никто никуда не торопится, все спокойно. С другой стороны иногда движа не хватает. Автоматизаторы это что-то типа мемных сисадминов с бородатого башорга: сами по себе, чет делает, никто точно не знает, но ЗП почти как у девелоперов (но поменьше (но не всегда)).
Задачи с самым высоким приоритетом, например "ААА ПОЛОВИНА ЮЗЕРОВ НЕ МОЖЕТ ВОЙТИ В СИСТЕМУ!!1 СРОЧНО ПОЧИНИТЬ!!1".
Благодарю за ликбез.
получение сертификатов - это хорошая мотивация задрочить спецификацию языка. правда после того как оракл их сделал платными я на них забил, т.к. на мой взгляд для разработчика с опытом они особой роли не играют. но если на джуна идти то это конечно огромный плюс в резюме.
ну и по моему личному мнению полтора года на синтаксис и основную библиотеку - это просто ДОХУЯ. три месяца более чем достаточно, при наличии технического бекграунда то.
что там можно полтора года учить я вообще не представляю.
Там же мужику 40 лет, думаю он просто сидел вникал че да как, связи с возрастом + него была другая работа. Мое мнение - хорошая статья, человек без выебонов рассказал как вкатиться и то сколько реально упорства нужно приложить, что бы пройти на позицию джуна
sout ("сОут") или sout ("сАут") ?
Мне нравится "сАут". "сОут" звучит по-уебански и выговаривать труднее
Саут, конечно. Приставка/предлог "out" всегда произносится как "аут", а здесь как раз она.
>три месяца более чем достаточно
Для человека, ранее не умевшего программировать?
Нет, недостаточно.
>Хуева туча курсов, около полугода
>После этой специализации я уже более-менее разбирался в языке, но писать самому программы было еще нереально.
Бля, писать программы - может любой дурак вообще.
Писать хорошие программы - несколько сложнее.
Думаю, что основной смысл этой статьи - реклама курсов.
И курсеры, и вообще, курсов, как явления (их очень дохуя сейчас).
Ехали курсы через курсы, короче.
И человек _не_ должен думать, что вот сейчас, пара курсов - и на работу.
Он должен застрять в положении вечного студента, и откармливать курсовых кабанчиков, лол.
Есть такой феномен - можно вечно учиться чему-то (и даже неплохо сдавать экзамены), но, совершенно не уметь ничего делать практически.
Резюме - там какая-то хуйня написана.
И, не факт, что это вообще правда - рекламой воняет за километр, прямо начиная с картинки в заголовке - "пройди курсы и пей пиво в Германии".
Возможно реклама, но опять же он там описывает способ как пройти их все бесплатно.
Вопрос действительно в том, стоит ли тратить столько времени на теорию, либо лучше пробовать говнокодить в пет проектах.
он умел программировать, это раз
В университете в течение 2-х семестров мы изучали программирование на Си и С++. Ничего особенного или каких-то глубоких знаний. Сдали – забыли. Далее, будучи студентом, я писал какие-то простенькие программы на Delphi для себя.
Дальше моя карьера выглядела так:
Системный администратор
Системный инженер
ну т.е. человеку не нужно объяснять что такое модель OSI, что такое процесс, поток, куча, типы данных и прочие базовые вещи.
во-вторых, если трех месяцев недостаточно чтобы выучить как скобочки ставить и врайтер с ридером писать то человеку нужно задуматься тем ли он вообще занимается
>>876397
>Думаю, что основной смысл этой статьи - реклама курсов.
наврядли, просто это показатель того насколько глубоко в грязь зарылась планка требований к соискателю и самому себе. два года - это тащемто время прохождения магистратуры! этого достаточно чтобы проштудировать кормена и книгу дракона вдоль и поперек и написать компилятор для какого-нибудь рефала, вполне нормальная дипломная тема для магистерской программы CS.
Java Programming: Arrays, Lists, and Structured Data (4 недели)
4 недели на списки! ояебу
2 года по часу - два в день с детьми, это не тоже самое что учиться в магистратуре на мамкины деньги
джаваю этого
Зато спринг в 1,5 раз быстрее, чем джанго!
Строго говоря, ни один современный язык не компилируется напрямую в машинный код. Даже C++ на llvm компилируется в промежуточный код, который потом транслируется в микрокоды процессора, которые, в свою очередь, уже выполняются процессором.
Питон, в отличие от жабы, изначально имел возможность "пошагового" исполнения line-by-line, поэтому он считается чисто интерпретируемым языком. В жабе такая возможность появилась только в Java 9.
Любой язык интерпретируемый, ведь машинный код тоже интерпретируется процессором.
Любой язык компилируемый, ведь компиляция - это просто преобразование программы на одном языке в программу на другом, и любая программа так преобразуется перед выполнением, ведь невозможно выполнить исходник непосредственно.
Дальше будем доводить терминологию до абсурда?
>Компилируемый язык программирования — язык программирования, исходный код которого преобразуется компилятором в машинный код и записывается в файл с особым заголовком и/или расширением для последующей идентификации этого файла, как исполняемого операционной системой
Достаточно, что бы можно было выкакать исполняемый файл для ОС
Не только для ОС, для любого исполнителя
Окей, продолжаем абсурд.
Что такое машинный код? Это код, понятный некоторой абстракции, называемой "машиной". Например, виртуальной машине, не имеющей реального железа. Ведь нативный бинарник тоже можно запустить таким образом, эмулируя машину программно. А значит, такой код может быть чем угодно, например, картинкой png. Кто вообще сказал, что машина - для алгоритмов, а не показа картинок? Старая стиральная машина с алгоритмами не согласна.
Вот и выходит, что машинным кодом можно назвать вообще что угодно, будь это хоть питоний исходник. И вообразить, что существует машина, выполняющая питон аппаратно.
Ну а сигнатура может быть из нуля байтов. Ещё никто не доказал, что невозможно написать ОС, которой не нужна сигнатура экзешников. Не надо про доказательство отрицания - у нас не реальный мир, а математика, и такие доказательства возможны.
Строго говоря, команды процессора (любого современного) - это тоже что-то типа байт-кода вирт. машины, т.к. они транслируются внутри процессора уже в настоящий кондовый машинный код, о котором знают только специалисты по этим процессорам.
Собсвтенно, упомянутый мной llvm и расшифровывается как Low Level Virtual Machine, так что деление языков на компилируемые/интерпретируемые в чистом виде давно потеряло смысл.
Потому что неосиляторы. Они только Go могут осилить.
>Насколько сложно будет вкатиться в Java после 3 лет работы на C++?
Java — прямой наследник C++, попытка решить его проблемы и переделать неудачные решения. Попытка сама по себе не на 100% удачная
>Можно ли вкатиться сразу мидлом или придётся джуном?
В твоём случае можно мидлом. Если опыт на плюсах нормальный был, а не laba1.cpp
>Слышал, что в среднем Java джун получает как C++ мидл.
Как повезёт.
>Стоит ли тратить время на курсы для вкатышей
Нет. Там рассказывают про отличия if от switch, int от double и private от public. Если у тебя действительно приличный опыт на C++, ты всё это уже знаешь.
>достаточно будет прочитать книжку и задрочить сертификат?
this
Upd: Статус может быть только один.
В одной, конечно. Представь, сколько джойнов и костылей в DAO придётся городить, если их несколько.
Идея вечно подчёркивает что-то разными линиями, выделяет курсивом, жирным, жирным курсивом, цветами и ещё какой-то хуитой. Никогда не понимал всех этих обозначений, мне бы, наверное, хватило выделения кейвордов цветом и подчёркивания ошибок/варнингов.
переопределяемая переменная
Просто не обращаю внимания.
Alt+Enter нажми на таком выделении, например.
Напишет, что за хуйня, предложит пофиксить.
Не факт, что это надо фиксить, но, посмотреть полезно.
Переопределённых переменных это не касается, конечно.
Если это параметр метода, то это часто нежелательно делать (менять его).
Но, зависит от задачи.
И какое же время ориентировочно они хотят в подобных случаях?
Там написано, без жестких ограничений, но, это же нельзя год делать, например?
да фик его знает, я так и не взялась делать, на работу и без этого взяли.
>документа
Какого, блядь, документа?
С такими тех. заданиями надо задающих посылать на задание, лол.
Да хоть в key-value, какая разница? Требуется только хранить, запрашивать конкретные поля и как-то ещё обрабатывать не нужно. Так делается повсеместно.
тут работы на два-три часа максимум (если знать что такое спрингбут, но смысл тестовых заданий именно в этом - понять умеет соискатель что-то или только притворяется).
ну либо день если до этого спрингбут не ковырял.
много страшных слов которые по факту запиливаются в две строчки спринговых аннотаций.
вполне годное тестовое задание
Чтобы я мог загрузить скомпиленый байткод, декомпилировать в код, внести пару изменений и собрать обратно?
в гугле же все есть. CFR например
тестирование чего?
создание юнит тестов включено во время разработки всегда тащемто. да там кода то будет с гулькин нос на самом деле.
основная работа - настройки спринговых объектов типа дао и RestController. Бизнес-логика сводится к написанию пары обращений к БД и выводу данных в шаблонизаторе
> на два-три часа максимум
Вот только не надо пиздеть.
Нечего сказать - просто не говори ничего, лол.
Очень полезный навык, советую потренировать.
И доказывать сейчас тоже ничего не надо, я всё понял
чего так подгорело то? взъебали на собеседовании?
у меня собеседование
по яве афкорс
всё ок, если бы они не хотели что-бы я всё делал на яве 8
со стримами и ламбадами ебаными
я ничего не знаю, есть ли хороший тренер? или сайт где куча всего?
вот будет на этом сайте
https://app.codility.com/demo/take-sample-test/
А если пользуются, это фронтендеры такие рукастые и умеют пользоваться всякими #strings или жаберы вносят вклад?
У нас вместо таймлифа юзается freemarker, но не для фронта (который на реакте), а для генерации кое-каких xml-ек из шаблонов по сложным правилам.
Ты там в своем легаси настолько преисполнился, что считаешь устаревшую технологию 2011 года хорошей, а всех кто считает против, дебилами которые не разобрались? Может ты ещё и на JavaEE пишешь? Одолжи машину времени.
>Может ты ещё и на JavaEE пишешь?
Как ты узнал? Подглядываешь?
И схуяли jsp 2011 года? 2001, тогда уже.
Я не меряю технологии по годам.
JSP - компилируется в java байткод, и работает, как из ружья.
Там есть статическая типизация.
Можно делать свои теги, которые тоже компилируются.
И для всего этого есть охуенная инструментальная поддержка.
Если нужно что-то необычное - можно дописать компилятор, что я и делал пару раз.
Просто не надо использовать мейнстримное говно типа томкэта и прочего подобного.
Или монструозную хуиту от ibm.
Мир многообразен, чувак.
Попытайся это понять.
Я работал с Jsp 4 года, основная проблема низкое качество кода который генерит джаспер, если взять например веблоджик, то он страницы размером больше чем не помню сколько, будет выкидывать с ошибкой, а jsp по сравнению с html+js намного тяжелее. Так же проблема, что технологии фронтенда не стоят на месте, я бы даже сказал скачут как бешенные, могу предположить что ты фулл стек джава дев и тебе приходится заниматься и веб мордой и сервером одновременно, ты можешь назвать себя сильным фронт енд разработчиком? я нет. Конечно jsp как дешевая альтернатива хорош, но шаблонизаторы позволяют разделить обязанности, ну и это то что навязывает спринг, а для веба сейчас лучше спринга ничего нет.
Поправь где я не прав.
>И схуяли jsp 2011 года? 2001, тогда уже
Самая новая версия джаспера 2011, я считал с последнего обновление 2.1 вроде
Никогда не использовал jasper.
И у меня всё нормально.
Но, мой опыт - не показатель.
Просто удачное стечение целого ряда обстоятельств.
>jsp по сравнению с html+js намного тяжелее.
Для сервера? Да, немножко. Но, это зависит от сервера.
И это не всегда важно.
Я работаю с внутренними проектами, не на галере.
И приоритеты совершенно другие.
Сложных страниц давно не делаю, но, JSP позволяет внедрять кучу всего на стороне сервера, и клиент получает не просто html, а уже преднастроенное окружение, включая JS и т.п.
Также, фильтры активно использую.
И сессии.
В общем, хейт технологии просто потому, что её придумали 20 лет назад - это не от большого ума, как правило. Для разных задач - разные инструменты.
Золотого молотка не существует.
> Сложных страниц давно не делаю
ну так с этого и надо было начинать
нормальный грид с сортировкой, фильтрами, пагинацией и возможности выбора строк на жсп это боль. а на каком-нибудь викете пять строк кода.
ну и вообще жсп это боль. ты можешь сколько угодно расписывать как ты компиляторы пишешь и свои теги реализуешь и как это охуенно - но это все слова, а покажи ка ты нам свой код, и все станет сразу понятно.
жсп это блядь уровень пхп 2000го года, это днище ебаное, хуже него только jsf. уж лучше сразу в сервлетах хуячить в стрингбилдер, а там и до нормальных шаблонизаторов один шаг.
>На некоторых нужно обязательно быть студентом, так что не всегда вариант
Это да. Причем парадокс в том, что на стажировки в средние и мелкие конторки, которым реально нужны спецы, ищут онли профильную студентоту, а в крупных берут всех мимокрокодилов, но будешь ли ты в конце нужен - не понятно, а 3-6 месяцев на эту стажировку ты убьешь.
>>877881
Хуй знает. Уже мысли были ли в фулстак как-то вкатиться, либо вообще через какую-нибудь узкую хуйню, которую никто учить не хочет.
Я просто так уже втянулся в это ваше программирование, что мне уже все что не крутиться вокруг компов и айти не интересно совсем.
Ну даже если не примут после стажировки, за 3-6 месяцев я получу новые знания+ какой никакой опыт. Это разве не плюс?
Сам планирую попробовать идти по такому пути
Мимо вкатыш
Плюс, но для себя я вижу два минуса:
1. Знания - это хорошо, но мы то целимся на место в компании, а остальным джуны все еще не нужны по вакансиям, как я уже писал;
2. 6 месяцев нужно купац + если тебя не принимают еще минимум месяц.
Я буду пробовать все варианты, но тут меня смущают эти пункты.
Такая стажировка хоть как то оплачивается?
Вообще хотелось бы качнуться перед трудоустройством так, чтобы не с 20к начинать. А например с 50 в милионнике.
Ну и амбиции у тебя.
Софт ой стипуха на булочку в столовке и на проезд.
мимо-начинающий-бэкэнд-хуила
В Сбере 25-50 в зависимости от количества отрабатываемых часов. В ВТБ тоже примерно так.
Ты про то, что фронтендеры видят результат своего макакинга сразу, а бэкендеры должны написать дохуя кода, чтобы в json появилось одно полечко?
Честно говоря, хз. То ли привычка после крестов и линукса, то ли сам общий настрой, что функционал важнее внешнего вида, поэтому пойдёт хоть консолька, лишь бы свою задачу делала.
А что для тебя видимый результат? Кнопочка на странице? Мне посрать в целом. И более того, такое отношение я считаю достаточно примитивным. Как у тех людей, у которых есть только UI, а за ним происходит магия. Это меня даже веселит слегка: мысль, что многие люди не в состоянии понять просто лишь суть проблемы, которые я решаю, не говоря уже о самом алгоритме её решения и подводных камнях, которые я предусмотрел или нет. Как раз обилие вкатывальщиков, которые сразу же хотял получить видимый результат, вселяет в меня уверенность, что лично я не стану жертвой демпинга на рынке, и моя зп так и останется пределом мечтаний для большинства джуниоров.
>wicket
https://wicket.apache.org/learn/examples/dropdownchoice.html
Посмотри этот пример.
Чтобы сделать один ёбаный селект, надо написать хуй знает что, вообще.
На джаве, не в шаблоне.
Какие-то модели, хуйню, малофью.
И это клиентский код, блядь, не библиотечный. Т.е. такой залупы в проекте просто тонны должны быть.
Я не говорю, что это абсолютно плохо. Для большой команды - наверное хорошо. Один пишет кнопку, другой - селект, третий - див.
Но, мне подобный подход не годится в принципе, например.
>жсп это боль
Реакт жс - это боль, например.
Но, все на нём пишут, нахваливают, и просят добавки.
Некоторые мои начальники (или просто старшие проекта) были такими, когда я занимался фуллстаком. У меня бэкенд сыпет исключениями и иногда падает, но приоритет у "на фронтенде перемести кнопочку на пиксель влево". При этом это подавалось в духе: "Да пофиг на бэк, потом разберёмся. Кнопочки важнее".
Понятное дело, что заказчик видит только кнопочки и деньги платит по сути, за них
>> бэкендеры должны написать дохуя кода, чтобы в json появилось одно полечко?
Ну скорее это:
А что для тебя видимый результат? Кнопочка на странице?
> Т.е. такой залупы в проекте просто тонны должны быть.
ты просто не понимаешь о чем говоришь
селект на викете делается в две строки
в шаблоне
<select wicket:id="choise"></select>
в коде страницы:
var combo = new DropDownChoice<Person>("choise", ()->getPerson(), ()->getAllPersons());
все.
и это еще хуйня.
в викете куча вещей длелается в две строки - аяксовые асинхронные вызовы, обновление части страницы, собственные компоненты и т.д. и т.п.
то что на жсп ты будешь делать кучей мутного кода в викете делается в две строки. (именно в две, с появлением лямбд он стал супер компактным)
> Я не говорю, что это абсолютно плохо. Для большой команды - наверное хорошо. Один пишет кнопку, другой - селект, третий - див.
все ровно наоборот, нормальный фреймворк позволяет за день сделать то что на голом жсп команда из трех человек будет делать неделю и не факт что сделает. викет тут еще не лидер в плане производительности. Какой-нибудь ваадин позволяет полноценный рич-клиент сделать за пару дней.
Попробуй туториал пройди по ваадину или хотя бы видосики посмотри.
https://www.youtube.com/user/vaadinofficial/videos
То что в этих туториалах делается за час на жсп ты будешь делать дни а то и недели.
Но он очень плохо кастомизируется в плане UI, поэтому подходит только для интранета/ынтерпрайза. А викет кастомизируется на отлично, можно любую морду прилепить и его можно использовать везде.
Vaadin - это такой GWT на стероидах или что?
Стоит ли сейчас в него вкатываться, не поздновато ли?
Речь про энтерпрайз.
> Vaadin - это такой GWT на стероидах или что?
именно, у него под капотом GWT. причем в отличие от GWT не нужно ждать всей этой компиляции в жс, оно уже прокомпилировано за нас.
> Стоит ли сейчас в него вкатываться, не поздновато ли?
он вполне живой, можно и вкатиться, нужно только понимать что у него с UI все те же проблемы что и у GWT, кастомизируемость очень низкая. но для ынтерпрайза вполне норм. а если ынтерпрайз шибко жирный то можно и свой LaF на него запилить. сбер же свой скин для гвт сделал.
сам я в реальных проектах его не использовал, но когда делал пет проект был приятно поражен насколько он быстр в плане разработки.
алсо вот тебе скриншот из гугла который как бы намекает
ну и да, если по HH поискать то жирнота типа альфы, сбера, северстали и прочих монстров ищут людей со знанием ваадина, значит он будет жить еще долго, легаси страшная сила.
> JSP, JSF
> шаблонизаторы
> Vaadin
Ну и тред. По мне так лучше всякие реакты/вуе, чем обмазываться вёрсткой на сервере.
> GWT Java-to-JavaScript Compiler
Пахнет васянством, хоть и от Google.
> Пахнет васянством, хоть и от Google.
наоборот, монстрообразная оверинжиниринговая хрень, как по мне.
кровавый ынтерпрайз как он есть.
попытка сделать аналог свинга для веба.
фишка еще в том что он хорошо подходит для маленьких сайтов/приложений, но его никто там не использует так как у него огромнейшие проблемы с индексированием в поисковиках. а на больших приложениях, где он только и используется, он дичайше тормозной, как во время разработки так и во время использования.
я видел проект на GWT где компиляция занимала больше часа и браузер у пользователя потом перемалывал его минут пять на старте.
Жесть какая. Не хотелось бы с этим столкнуться. Хотя мне всегда казалось, что в таких приложениях предпочитают JSF, но я мало про это знаю.
Какого хуя сканер сканер = нью сканер, что вообще это значит, почему повторяется сканер
Тип название_переменной = значение.
В твоём случае значение - это результат вызова конструктора класса, а название конструктора, как известно, совпадает с названием самого класса.
Вместо Типа переменной может быть любой предок этого класса или реализуемый интерфейс (если не добрался до этих тем, пока не задумывайся об этом), и в таких случаях тип будет отличаться от конструктора.
Ну а саму переменную зачастую нет смысла называть сильно иначе, чем тип, потому что сразу понятно, с какой сущностью работаешь.
Я когда начинал учить джаву (после питона) тоже возмущался, какого хуя так многословно. Да и вообще зачем эти типы тупые нужны.
Но стоило мне только понять что есть что (как >>878138 написал), так сразу же всё стало невероятно логичным. А после, во время работы с джавой и джэсом одновременно, понял, что типы это круто.
И убрать шапку добавить книги с упражнениями: >>869027 + http://libgen.gs/item/index.php?md5=3C9D95782A5E3708F2CE568D9D6C7D01.
В Мы-Вам-Перезвоним треде тебе расскажут больше, чем ты хочешь знать.
Scanner scanner = Scanner.class.getConstructor(InputStream.class).newInstance(System.in)
По началу было тоже немножко дико.
Особенно когда нет того, кто по-человечески разжуёт.
Спустя пару месяцев это проходит на изич.
Двачую, первые два месяца сложно воспринималось, а теперь глаз радуется
@
ПРОДОЛЖАЯ СИДЕТЬ В ЖАБА-ТРЕДЕ
А как ещё ему прочитать ввод с клавиатуры без ООП. если в жабе даже System.in.readln() нету? Так и писать println-онли программы, пока не дочитает до главы про классы?
> error: nie naydien tip "val"
Начинать с процедурных языков, но разумеется он этого делать не будет, лучше мучаться и верить в магию.
Ну хотя бы книжечки, у Столярова есть например "Введение в профессию" называется
Если это си без плюсов, каст нахуй не нужон.
Если это си с плюсами, то нахуй не нужон уже malloc.
Не нужен, но многие зачем-то пишут. Хуй знает.
> JAVA EE 6
Там страшна не столько сама технология, сколько коллеги с которыми предстоит работать
Ну сам подумай, каким динозавром надо быть чтобы сидеть на работе ковыряя древний проект на древней технологии
Альтернативы спрингу нету, ееху прикрыли а она была единственным конкурентом, ну как конкурентом сзади спринга че то хромала, упала, а поддерживать уже некому
> Реально найти работу, не связанную со спрингом ебаным?
спринг прекрасен. ты просто не работал с EJB, особенно первыми.
>динамическая параша
Маня, попустись, во времена котлина дрочить на груви - ну это бля, не знаю, неактуально что пиздец.
Когжа жабушка была 1.6 и это была самая популярная технология в жвм-мире, да, груви и его грейлс выглядели как ПРОРЫВ нахуй.
Но щас грувям можно отвести только роль скрипто-языка. Действительно иногда удобно заебошить один файл с грабом и выполнить это дерьмище где-нибудь разово, чтобы не дрочить руками.
Держи в курсе.
Надо быть очень недалёким, чтобы не видеть разницы между груви и котлином.
Это разные вещи, под разные задачи.
То, что какие-то долбоёбы пишут конфиги и скрипты на котлине, говорит только о том, что они долбоёбы, и больше ни о чём.
Дурачок не понимает, что энтерпрайзные системы благополучно живут десятилетиями, и думает, что их каждые 5 лет переписывают на текущий хайпо-стэк.
> java concurrency in practice
Что за задачи у тебя такие, где нужно настолько глубоко задрачивать потоки, что ты читаешь талмуд на 500 страниц?
Ожидал этого ответа.
Это не то.
К Докеру, как таковому это не имеет отношения.
Есть даже мнение, что кубернетис всех немножечко подзаебал, и пора переползать на терраформ.
>Есть даже мнение, что кубернетис всех немножечко подзаебал, и пора переползать на терраформ.
Ну то есть уже кубернетис умер, ага.
собираюсь менять галеру, решил повторить все по потокам перед собесами, чтобы не осталось пробелов
Ну наконец-то хоть кто-то это спросил, а то я охуеваю с тех двух шизов, которых понимают только они сами.
Какая разница учить мертвые технологии или хайповые при условии +- одинаковой зарплаты?
ПРОСТО
Пока хайповые технологии вытесняют друг друга каждые полгода, создавая ещё больше сложностей, чем решая, "древние" "умершие" "легаси" технологии просто работают без хуйни.
Анон ну не.. Такие тексты лучше читать в оригинале, пусть и медленнее.
Нет, не работает, потому что не развивается. А якобы "устаревшие" технологии вполне развиваются, просто пользоваться ими не модно, смузихлёбы не зауважают.
По camel могу посоветовать только книгу Apache camel in action. Также на гикбрейнс недавно вышел вебинар по camel, поищи.
нафига все эти книжки нужны когда к любой апачевской бтблиотеке всегда идет подробейший юзер гайд которого хватает за глаза?
Если да то в каком плане.
А то мне сказали сиди разбирайся в море camel/apache-servicemix и море xml конфигураций, и сижу немного в ступоре что я должен здесь разбирать.
Да, с самого начала был тимлид, который рассказывал, в чём суть проекта, где что искать, как что работает, ключевые классы и конфиги, задачи в джире с расписыванием всех правок в коде.
> сиди разбирайся
Звучит как пиздец. Попробуй вопросами всех позаебать, что-нибудь должно выясниться.
да.... а мечтал о кубере, микросервисах, eureka и роутинг через зуула
Да кто говорит что нет между ними разницы? Конечно же есть.
Одно - динамическая параша, нужная только лишь когда нужно сговнять скриптец чтобы что-то быстро автоматизировать.
Другое - для написания на порядок более надежного и выразительного кода.
Но вообще если бы в котлине был аналог @Grab - я бы не стал и в скрипты тащить груви-парашу.
Ребята, помогите, пожалуйста, куда копать надо? Сделал программу, которая обращается по адресу страницы инстаграма https://www.instagram.com/АДРЕС_СТРАНИЦЫ/?__a=1.
Этот запрос возвращает json с данными об аккаунте.
Дело в том, что в intellij idea на локальном сервере всё работает ок (200 response), но когда заливаю на herokuapp, то возвращает 301 ответ (редиректит на страницу логина зачем-то меня). Делаю запрос с помощтю HttpRequest. Я так понимаю, дело в headers запроса? Они отличаются от моих на локальном сервере? Мне нужно как-то скопировать свои заголовки и задать их через код?
Я сейчас вывел на консоль request.headers() и там вообще пусто. Но, когда я добавляю свои заголовки вручную, они там появляются. Я добавил "Authorization" : "authType fhjghfjsghfsghjsf" и ничего не поменялось. На локальном сервере изначально тоже ни одного заголовка нет, но мой запрос как-то получает 200 ответ без редиректа. Как так?
Короче, тебе либо надо залогиниться передав свой данные в отдельном запросе и использовать header "Authorization" из ответа логина для дальнейших запросов.
У меня похоже, только я был не стажером, а уже полноценным работником. И мой начальник, который в программировании не особо разбирается, сказал мне сидеть и разбираться с "этим, этим и вот этим". Других программистов в компании не было. Так что сидел и разбирался. И так после института я вышел с пустой головой, то пришлось разбираться во всем. Вообще сложно разбираться в чем-то, когда не знаешь что с этим надо будет делать. Так что, как тебе уже посоветовали, позадавай вопросы, на что именно тебе обратить внимание.
Других программистов в компании не было. Да и других работников тоже не было, я один в офисе сидел. Сам начальник приезжал в офис раз в два-три месяца, обычно мы с ним переписывались и раз-два в неделю созванивались. Весь проект (фулстек) я тянул на себе (напомню, это была моя первая работа и впервые что-то большее lab1) и от этого было очень тяжело. Ну хоть зарплата была нормальной. Через год я уволился.
Это то я понимал изначально, просто когда дают тебе компоненты проекта, с фреймворками с которыми ты не то что не сталкивался, а не слышал, это я про ServiceMix, и говорят разбирайся в компонентах проекта, потом будешь рефакторить, и не видишь где логическое начало кода, потому-что всё в camel-context.xml, но это не суть, просто давно себя таким идиотом не чувствовал, прыгнул в море и *бись, хз даже какие вопросы задавать, ибо никогда не имел дело с роутингом сообщений в camel и не работал с очередями.
Спринг не нужен.
Давно уже стал более монструозной хуитой, чем было EE.
Причём, на нормальных EE серверах всё из коробки работало, а тут ёбаный колхоз какой-то.
Тут под докером подразумевается конкретная прослойка, которая используется для запуска контейнеров. Если ты создавал совместимые со стандартом контейнеры, то они запустятся в новой среде без проблем.
замени "docker" на "podman" и по сути нихуя не поменяется. Можешь даже алиас между ними сделать, если так нравится слово docker
А ещё, ебанашки не понимают, что контейнеры и докер - это не только (и не столько) облака и кубернетис (в рот бы он ебись).
> на нормальных EE серверах всё из коробки работало
И многопоток там автоматически генерировался.
Таки генерируется, свои ведь нельзя создавать.
> Причём, на нормальных EE серверах всё из коробки работало, а тут ёбаный колхоз какой-то.
ебаный колхоз у тебя в голове. ждать пять минут пока вебсфера просрется чтобы посмотреть как ты бин обновил - вот твои ЕЕ сервера. деплой томката со спрингом аналогичного функционала - 10 секунд. не говоря уже о тестировании где написание банальнейшего юниттеста какого-нибудь контроллера превращается в адовый квест.
Спасибо. А вот чтобы написать простой консольный чатик, что нужно сделать, чтобы сообщения не по очереди принимать в цикле, а в любом порядке? Потоки разные или как?
Достаточно сложно, проще найти готовый пример или сделать HTTP-сервер на каком-нибудь спринге.
Если у тебя UDP, то можно с определённым таймаутом пытаться принять сообщения с какого-то определённого порта, на который второй клиент будет что-то слать, и параллельно читать ввод с клавиатуры и отправлять данные на такой же порт второго клиента. Если TCP, то у тебя будет приложение-сервер, запущенное на одном из хостов, и приложения-клиенты, подключающиеся к этому серверу. И тут можно каждому клиенту либо юзать сразу два порта - один для входящих сообщений, один для исходящих, либо юзать только один порт, с которого ты либо отправляешь серверу пакеты вида "сервер, отправь такое-то сообщение такому-то клиенту" или "сервер, есть новые сообщения? Если да, пришли в ответ". А сервер пересылает сообщения нужным юзерам.
У тебя статическая типизация, и метод всегда будет возвращать JSONObject или null. Вопрос лишь в том, корректные ли в нём данные, это и надо проверять в юнит-тесте.
Еще раз спасибо. Ну вот самый простой для моего понимания способ - это через 2 порта. Но как сделать, чтобы методы приема/передачи работали параллельно? Каждый в своем потоке и постоянно их усыплять на пару миллисекунд?
Да, два потока. В одном ждать входящие сообщения и выводить в консоль, в другом - ждать ввода с консоли и отправлять исходящие. Можно и не усыплять, для задачи такого уровня это не проблема, пускай поток блокируется и ждёт данные из сокета или с клавиатуры.
Зачем усыплять?
И самый простой - это с 1 портом, и запросами только от клиента к серверу.
Это можно сделать и через http и работать через интернет.
Асло, зачем это тебе?
Консольный чятик ad-hoc между двумя компами делается просто через netcat, без джавы и вообще без программирования.
>Асло, зачем это тебе?
Иду по учебнику джавакора и захотелось поиграть и что-то написать по материалу главы. По хттп мне нужен статический ип. Он стоит 2 сотки в месяц. Если буду всякие спринги потом учить то тоже поиграю и куплю, а для простых сокетов пока жалко. Кстати много можно на голых сокетах написать?
> По хттп мне нужен статический ип
HTTP - это обёртка над сокетами, ты точно так же можешь запустиить http-сервер в локальной сети.
> много можно на голых сокетах написать?
Всё. что угодно - почта, FTP, HTTP, AMQP. Правда, времени реализовывать это с нуля уйдёт много.
Тебе уже сказали про локальную сеть.
Но, ты можешь запустить http даже на 127.0.0.1
А потом - совершенно бесплатно задеплоить свой чятик на Heroku, и пригласить нас пообщаться.
Алсо, это всё можно ещё и через браузер.
И на веб-сокетах.
Но, это уже будет не совсем кор.
я указываю путь и у меня загружается джсон файл.
в тесте мне нужно проверить, что при указании правильно пути возвращается не null?
что есть корректный JSONObject? файл состоящий из
{
}
?
у меня валидация объекта описана уже в другом методе
JSONObject - это джава класс, я полагаю.
И речь о том, какие данные в его полях.
Например, он может быть просто пустым.
Или с неверной датой.
Или без кода товара, например.
в этом методе мне неважно его содержание вообще. Мне главное чтобы он был, значит я могу проверить метод Assert.assertNotNull()?
Корректный = валидный.
<img alt="" th:src="*{'data:image/jpeg;base64,'+{el.image}}" style ="width:350px; height:350px"/>
Хотел вместо 350 засунуть кастомную el.width, но это так не работает
Картинка по цвету фона тоже не варик, отступ большой будет
ladno, спросил в пыхе, мб там шарят
Аноны, делаю апишку на спринг бут. Как изменить начало пагинации с 0 на 1? spring.data.web.pageable.one-indexed-parameters=true
в аппликейшн.пропертис не помогает
>чем было ЕЕ
Или ты зеленый или ты очень зеленый и неопытный, раз сравниваешь спринг с его документацией и базой знаний и гибкостью с ЕЕ стеком.
Ты бы еще по JSF скучал, блядь.
бамп вопросу.
как этот ебучий Pageable настроить, чтоб отсчет шел с 1, а не с 0? в инторнетах предлагают spring.data.web.pageable.one-indexed-parameters=true, но мне он нихуя не помогает
Я ваще от тебя узнал, что в спринге есть пагинация из коробки.
> изъян в архитектуре языка?
В каком-то смысле. Но разделение на nullable и не-nullable вводить уже поздно, да и оно выглядит как костыль. И всё равно придётся юзать nullable для инициализации структур данных с циклическими зависимостями.
> Спринг например борется с тем, чтобы вы не мучились с созданием объектов через new.
Спринг нужен для удобства управления ресурсами (БД, например), чтобы не писать код инициализации руками. Объекты, которым подобные ресурсы не нужны, так и создаются через new.
Подожди, сейчас накукарекаемся, и тогда опять будет 5 постов в день.
Сбер
Кстати да, сомневаюсь, что тут даже студенты итмо или мфти будут сидеть. Все эти треды для вкатунов или вообще для людей без образования или для тех кто закончил говновуз по ит-специальности. И для таких людей соотношение польза/усилия+время от задрачивания мощного фундамета cs очень обычно весьма низкое.
Да, а ты?
Тогда шизиков будет уже толпа.
@
НЕ ЗНАТЬ JAVA CARD
Апп апп = нем Апп()
Потому беру спринг
АпКтх ктх = факториМетодДляКонтехт()
ктх.взятьБин(Апп.сласс)
Что произойдет?
нем Апп() произойдёт который будет лежать в помойке
Вообще
>Код состояния HTTP 301 или Moved Permanently (с англ. — «Перемещено навсегда») — стандартный код ответа HTTP, получаемый в ответ от сервера в ситуации, когда запрошенный ресурс был на постоянной основе перемещён в новое месторасположение, и указывающий на то, что текущие ссылки, использующие данный URL, должны быть обновлены.
Но может быть проблема связанная с cors-политиками?
я понимаю, что мне нужны куки, для определения сессии, но как мне проверить, что этот пользователь уже отправлял данный запрос?
Имхо, сложнее. См. >>858963
>>882299
Выдавать юзеру куку, означающую, что он уже вызывал этот метод, и если эта кука потом пришла на сервер, ничего не делать.
Но если ты предполагаешь, что пользователь дофига умный и эту куку будет удалять, а ты этого не хочешь, придётся где-нибудь на сервере явно хранить список юзеров, отправлявших запрос, хоть в памяти, хоть в БД. Может, можно придумать что-нибудь с @Cacheable.
Куки - не нужны.
Если нужно надёжно - то только флаг на сервере, причём, там же, в БД (поле), и в рамках той же транзакции.
Если не нужно надёжно - то совсем не нужно.
Но, само по себе требование выглядит довольно странно.
Если поле имеет отношение к пользователю - то тут и вопроса возникнуть не должно.
А если не имеет - то при чём тут это ограничение?
>что этот пользователь уже отправлял данный запрос?
Добавлю - а если он его три дня назад отправлял?
А если в прошлом году?
В этом дизайне чего-то не хватает, понимаешь?
> Если не нужно надёжно - то совсем не нужно.
Хороший аргумент против какого-нибудь NoSQL говна, лол
>>882316
>Выдавать юзеру куку, означающую, что он уже вызывал этот метод, и если эта кука потом пришла на сервер, ничего не делать.
тоже думал над этим, но если у меня много таких запросов? типа /review/{reviewId}/like - тут получается на каждый лайк комментарию придется добавлять куку
>Но, само по себе требование выглядит довольно странно.
это мой пет проект. я просто хочу сделать так, чтоб пользователь не мог накрутить дохуллион лайков\дизлайков просто тыкая на кнопку. Причем речь идет об неавторизованных пользователях других нет, да и не будет
Если боишься накруток, то забудь про куки. Тебе придётся создать таблицу лайков с id комментария и ip лайкнувшего.
Если ты маешься с выбором то выбирай бэк, потому что вкатишься во фронт, потом захочешь в бэк, а чтобы наоборот было не видел ни разу.
1. Нахуя тебе что то кроме гет и пост? Ладно делет или пут, но патч ни разу не видел в проектах.
2. Идемпотентность. Твой апи/метод апи/метод контролера/метод сервиса обязан им быть. Потому решай это внутри самого метода. Как? Это другой вопрос.
Да не, я выбрал бэк уже. 3 месяца втыкаю
Прост интересно. Все же жужжат, что фронт для тупых.
Вот и интересно стало. Насколько фронт легче
Он не легче.
Трудность разная.
В одном случае трудность в глубину (бек), в другом - в ширину (фронт).
Жрать говно на фронте - нелегко.
С другой стороны, для многих важно визуальное воплощение результата.
В общем - это разные вещи.
Правильный ответ - фуллстак.
На фулстаке проще получить фулсак, мне кажется)
Тот же Немчинский не верит в фулстак.
Да и я тоже. Сам знаешь сколько всяких горе-вкатывальщиков (типа меня). Нам бы одну стезю освоить нормально. Да и речь не только про трейни-джунов, как я понимаю.
Я не про вкат.
Для вката это несерьёзно, конечно.
Ну, и фуллстак я считаю возможным в случаях, если фронт не слишком сложный, и его не слишком много.
Спринг нужен был изначально не для управления ресурсами.
А для управления _зависимостями_ - dependency injection.
Ну а потом туда навалили ещё самого разного говна, на все случаи жизни.
Java Back-end
За сколько месяцев изучения (с нуля) получилось вкатиться?
Или не получилось.
Учу 3 месяца. Вроде как и есть синдром самозванца и вся хуйня, но мне кажется, что я реально говно) и такое ощущение, что год надо учить, чтобы норм ся чувствовать.
Лучше совмещать вкатывание с работой.
С какого-то уровня уже можно найти работу, хотя, ты, формально, ничего серьёзного ещё не умеешь.
Многое зависит от того, где ты живёшь, и есть ли там работа.
На удалёнке ньюфагу найти работу нереально, мне кажется.
Groovy хорошо знаю, но и XML меня не смущает.
С аргументами.
Т.е., что теряешь в случае Gradle, например?
> что теряешь в случае Gradle
Может не быть специфичных плагинов, которые есть для мавена. Например https://spring.io/guides/gs/producing-web-service/
> Because Gradle does not have a JAXB plugin (yet), it involves an Ant task, which makes it a bit more complex than in Maven.
>> где ты живёшь
ДС же
>> Лучше совмещать вкатывание с работой.
Сугласен. Есть советы по стаЖЫРовкам?
У меня лично нет.
Теоретически - могло бы быть, но сейчас - нет.
Но, найти работу вообще не сложно.
Сложно найти интересную и высокооплачиваемую работу.
Могу посоветовать на деньги не смотреть вообще.
На еду хватит по-любому, какие твои годы, лол.
И не рваться в крупные и известные компании.
Также, если будешь размещать резюме на hh, например, то:
- Пиши о себе живым языком, не бойся выглядеть "глупо".
- Не прибедняйся, но и не ври слишком много.
- Давай какой-то хинт, как с тобой связаться помимо hh.
Например - напиши свой гитхаб, как бы для информации о том, что ты там накодил, а на гитхабе уже - емейл. Или что-то вроде.
Чтобы с тобой мог связаться человек, который не проплатил доступ к базе резюме на hh, они берут дорого, и ради одного человека-стажёра могут не дать денег в конторе.
Можно попробовать прямо email указать в тексте инфы в резюме, но, hh может запретить это, х.з., надо пробовать.
Ну, это не очень большая проблема, мне кажется.
Правильно ли я понимаю, что в случае Gradle ты можешь писать произвольный код для билда/деплоймента и вообще имеешь большую гибкость, а в случае Maven ограничен какими-то предопределёнными действиями, плагинами?
И важно ли это на практике?
>> Могу посоветовать на деньги не смотреть вообще.
>> какие твои годы, лол.
30lvl-kun~ :D
От голода и правда не умру. Скопил немножк
>> Также, если будешь размещать резюме на hh, например, то:
Спасибо, Анонче
Прислушаюсь к советам
>> - Пиши о себе живым языком, не бойся выглядеть "глупо".
Кста, а что писать в блоке "О себе" ?
Чет не вкуриваю.
Хобби им не нужны, навыки и опыта и так расписал в других разделах. Че им надо?
"Возбмимте мня пожалумста?"
Что ли?
Вкатун, расскажи как вкатываешься, с так понял ты прям с нуля?
Тоже вкатываюсь с нуля, но дается все очень тяжело, дай советов.
>> ты прям с нуля?
Да, можно и так сказать
Уволился с работы. Сижу уже 3 месяца втыкаю в java.
Максимально во всем себя ограничиваю(в плане развлечений), но все равно половина (если не больше) времени вылетает в трубу спасибо ебаному СДВГ.
Скачал дохуя всяких курсов по java с рутрекера. Смотрел основы. Знакомый кодер подкидывал задачки.
Первый месяц-полтора учил синтаксис, решал его задачки. Смотрел уроки.
Потом по рекомендации кодеров залез на пресловутый jrush, который многие ругают.
Дохуя воды и однотипных заданий, но зато есть структура какая/никакая. и можно "подшлифовать" основы.
Мне назначали, чтобы я прошел за 2 недели 20 лвлов, но это довольно трудно. Особенно, если проебываться.
В итоге, закончил все это за месяц (как раз под конец подписки).
Затем приступил к изучению коллекций более плотному.
Сейчас учу курсы по Spring, базы данных втыкаю (SQL и т.д).
Открываю наборы всяких "вопросов к собеседованиям" и учу ответы на них.
Параллельно все время смотрю всякие уроки на ютубе.
+Пытаюсь читать "Философию java"
Херово то, что многие кодеры (сужу по тем, которые делают видеоуроки и курсы) так-себе в искусстве объяснений.
Многие очень сухо/сложно/хуёжно объясняют. Прям толковых и понятных уроков оч мало чет.
Ниче необычного
Я сейчас читаю "Concurrency на практике" и мне нравится, но также хотелось бы разобраться так же в более низкоуровневых (я не знаю как их правильно назвать) вещах.
Читай книги по операционным системам, там это описано. Ведь каждый программист обязан это всё знать, как здесь один шиз недавно писал.
Я вспоминал его, пока писал вопрос. Но, насколько я знаю, на разных языках программирования по разному, тут одними операционными системами не обойтись.
__
Вообще я собираюсь в ближайшее время прочитать несколько книг, в том числе и по ОС что-нибудь, так эти пробелы в знаниях закрою.
Ты же хочешь найти работу (стажировку) почти нихуя не умея и не имея?
Вот поэтому.
>>882762
У тебя нет знаний и опыта.
Поэтому, нанимателю (нормальному) интересно знать, что ты за хуй такой по-жизни. И стоит ли тратить на тебя время.
Поэтому, надо рассказать, что тебе интересно, и на что у тебя есть мотивация.
>>882779
Как раз на втором ядре и запустится, скорее всего.
За это отвечает jvm и операционная система, и они будут стараться раскидать потоки по ядрам.
Возьми да проверь - добавляй по одному потоку, и смотри загрузку ядер.
>Ты же хочешь найти работу (стажировку) почти нихуя не умея и не имея?
>Вот поэтому.
вообще не понял, как это коррелирует. наоборот, в больших компаниях чаще есть вакансии на стажеров.
Я думал, что речь о каких-то минусах больших компаний, типа заявок на каждый пук и тысячелетнее ожидание, когда они выполняться.
> Чтобы с тобой мог связаться человек, который не проплатил доступ к базе резюме на hh, они берут дорого
вот кстати поддвачну. у нас открыто постоянно в течени года три-пять вакансий, так эти пидоры прислали счет на 240 тыс на следующий год, совсем охуели.
Я правильно понимаю, что в простейшем варианте тред общается с остальной программой через какой либо переданный в него при создании объект.
То есть, если у меня есть общая для всех структура с данными, в которую треды должны писать - я должен передать ее в каждый тред при создании?
Это очень по-разному. Зависит от задачи. Почитай книжку.
То, что ты описал (одна структура на все потоки) - это наиболее мозгоёбный вариант, где все прелести конкурентного доступа вылезут во всей красе.
Также, надо разделять параллелизм и конкурентность - это разные вещи, но, и то и то делается через потоки.
CRUD - это просто "создание-чтение-изменение-удаление" каких-то данных.
Любых. Любым способом.
Остальное - в гугле. И в любой книге для ньюфагов по теме веб-разработки на интересных тебе технологиях.
Java concurrency in practice.
Есть и на русском. Качество перевода - хз, смотри отзывы на озоне.
Также см. https://medium.com/javarevisited/6-multithreading-and-concurrency-books-every-java-programmer-should-read-b6a08d2aae54
И гугол по словам java thread concurrency parallel
Вообще, это очень глубокая тема, и перед тем, как в неё нырять, неплохо бы научиться находить нужную инфу в интернетах самостоятельно. И желательно по-английски.
Да у меня вроде нет с этим проблем, просто кодерки переоценивают самостоятельную гуглежку и недоценивают сбор персональных мнений.
А concurrency in practice под старую версию написана, думал появились аналоги какие то. Ну да ладно.
Из за кроссплатформенности то как запускается тред решает jvm, если зайдешь в thread.start там будет нативный метод start0 реализацию скидываю:
http://hg.openjdk.java.net/jdk10/jdk10/hotspot/file/tip/src/share/vm/prims/jvm.cpp
искать метод JVM_StartThread
Скинул просто что бы ты знал где искать. Если ты изучаешь concurrent с нуля, лучше не лезь туда, лучше всякие валатайлы с атомиками посмотри. Если уже все знаешь то лезь куда хочешь дело твое
Вроде на Хекслете что-то было. В статьях на джавараше тоже иногда бывает подобное.
Я сам ручник qa, хочу в автоматизацию влезть через годик.
Читаю хедфёрст книжку по джаве, параллельно делаю задачки, сижу на javarush. Плюс видеоуроки смотрю, когда не понятно что-то.
Пока у меня нет вообще представления что такое программирование на java, задачки я вроде понимаю, стараюсь разобраться в каждом методе, классе, что это и почему именно так и здесь используется, что вгоняет меня в еще большие дебри.
Пока я верю в то, что если я буду уделать обучению java регулярно время, то через полгода, год, я точно продвинусь и смогу найти работу джуном автоматизатором.
Сначала мне тоже дохуя чего было непонятно. Это обычное дело.
Вские конструкции типа:
Huila huila = new Huila();
Вообще были не ясны и прочее.
Сейчас я пришел к тому, что если чет непонятно - попытайся разобраться, но прям до победного не всегда есть смысл упарываться.
Просто двигайся дальше и возвращайся периодически к пробелам.
Увидишь, как они затираются постепенно
Чем отличается собеседование на джуна и на стажера?
Понимаю, что в каждой команде могут все по-своему воспринимать и порядки налаживать.
Но в целом. Какие требования для стажера?
Я думаю, формулировка "стажер" должна подразумевать то, что человек зеленый, учится, скорее всего без опыта и все такое.
Должен знать какие-то минимумы, а потом будем его натаскивать.
Можете тот самый "минимум" сформулировать?
От стажёра ждут знания кора, поверхностного знания стека и умения быстро обучаться. От джуна уже ожидают, что он может делать реальную работу. Грань, конечно, размытая.
Это, собственно, и есть стек. Конечно, надо знать sql, мавен, git и мочь сделать простейший круд на спринге. Правда, с таким уровнем могут и джуном взять.
Наверное, разница как раз в архитектуре, паттернах и бестпрактисах всяких, их от стажёра ждать не будут.
вопрос вероятно не по теме, но так как не нашел куда его пристроить, спрошу здесь.
вкрации, есть как говорится два оффера из двух пикрелейтед, внезапно прилетевших одновременно
https://career.habr.com/companies/iteco
https://career.habr.com/companies/digitalleague
условия оплаты и работы практически идентичны, пилить микросервисный бэкэнд на популярном ныне стеке spring boot, kafka, docker/openshift.
к слову, доселе не работал ни с чем из вышеперечисленного, последние лет шесть неторопливо пилил томкатный монолит на спринге, но 2020 простимулировал финансовые поиски нового и неизведанного, и благодаря неплохому сиви и двухнедельному интенсиву по прохождению интервью, получил два оффера из сабжевых аутстаффинговых контор. в первом некий проект для газпромбанка, во втором для сбера.
что выбрать? в некотором замешательстве, поскольку желательно определиться в ближайшее время.
может быть кто то работал в той или другой конторе и знаком со внутренней кухней. или имеет некие представления.
буду крайне признателен за обратную связь!
типикал интеграторы
пофигу куда идти кмк
для новичка самый ок, хорошенько поваришься в кухне и поймешь что к чему, а потом уже на что-то более денежное и интересное перекатишься
Не странно, все стажировки в дс куда писал это только для действующих студентов доступны. Правда видел еще какие-то стажировки после курсов, но я сам учу все.
Хочу узнать у анонов кто работает, берут ли к ним джунов без вышки.
>> берут ли к ним джунов без вышки.
Да везде своя кухня-кукухня, анон
Туда, куда ты попал - бзик по вышкам, видимо.
Во многие конторы берут без профильной вышки, куда-то хотят именно профильную. Каждый правит своим болотом как хочет.
Засылай дальше резюме и не останавливайся. В один момент пробьешь дно эту стену вакансий
>spring boot, kafka,
Не секрет, какого рода задачи?
И почему именно кафка а не кролик, например?
> неторопливо пилил томкатный монолит на спринге
ты не очень представляешь что такое работа в интеграторе видимо
это не один проект, который ты пилишь несколько лет, это десятки проектов за год с совершенно разным зоопарком технологий, кучей легаси, говнокода, разных систем сборок и т.д. и т.п.
томкат ты пилил, а вот тебе вебсфера, а тут жбос, а тут глассфиш а тут вообще надо полностью неблокируемую раздачу на андертоу сделать.
спринг? а вот тебе легаси проект на ежб да еще и с седьмой жавой. а вот тебе guice, а вот тебе JSF, а вот тебе стратс, а тут спрингбут, а тут ваадин, а вот GWT, а вот вообще адова опенцмс.
а еще, если попадешь на проекты для госструктур, готовся к глючным либам по интеграции со СМЭВ, криптографией и прочим прелестям пидорахенского айти.
оно конечно если ты джун то тебя посадят на один проект и ты будешь в него вникать, но как только ты вырастаешь до сеньора и выше то тебя начнут по разным проектам кидать и готовься к тому что я выше описал.
> неторопливо
забудь это слово, в интеграторах сроки горят перманентно.
Как-то так.
import com.fasterxml.jackson.databind.ObjectMapper;
ObjectMapper objectMapper = new ObjectMapper();
Socket sock = new Socket("example.com", 1234);
sock.getOutputStream().write(objectMapper.writeValueAsString(jsonobject).getBytes());
sock.close();
Решаю задачки у джетбрейнса и большие задачи(на 300-500 строчек) решаю тупо в 1-2 класса. А потом смотрю чужие решения и у залайканых людей там раскидано по 10 классам, с применением паттернов. А я даже не очень понимаю, как применять даже те паттерны, которые учил. Тут мне надолго придется засесть наверно.
Стоит этому внимание уделить побольше, пока я кор не весь еще изучил?
Груви для тебя
Так потому что ант создан по подобию тру-юниксоидного cmake
Для начала думаю запилить самый обычный рест
Вроде сам жабакод понимаю /классы, наследования, декораторы и т.п./, но от всего окружающего глаза начинают на лоб лезть
Чому у каждого файла в проекте путь из 5+ вложенных папок? Что за xmlы, почему они используются для многих вещей, но выглядят как непонятно сгенерированная хуйня? Что за сервлеты? Без томката (это какая-то надстройка над обычный апач, чтобы крутить жаву?) никак? Гредол или мавен? Они ставят одни и те же пакеты из тех же реп? В чём разница?
ты просто еще не работал с ант скриптами где овер 1000 строк
теоретическая высосанная из пальца хуита как по мне. все эти паттерны они сами самой начинают получаться когда опыта набираешься. а потом оказывается что кто-то их где-то описал уже. к тому же в 95% случаев можно сделать проще, чем описывают шаблоны.
в любом случае новичку не стоит на них заморачиваться.
Мое мнение не стоит, можешь их прочитать но использовать не советую, все эти паттерны рассчитаны на максимальную масштабируемость, которая нужна в 2 из 10 случаев. Во всех остальных случаев ты создаешь дохера классов и интерфейсов, которые никогда не будут использоваться, а будущим программистам в этой херне разбираться, а скорее всего переписывать.
> Чому у каждого файла в проекте путь из 5+ вложенных папок?
эти папки формируют полное имя класса (package.ClassName), которое должно быть уникально для всех классов загруженных в jvm
> Что за xmlы, почему они используются для многих вещей, но выглядят как непонятно сгенерированная хуйня?
используются для конфигурации многих фреймворков. раньше использовались в спринге как основной метод конфигурации, ныне заменены @Аннотациями
> Что за сервлеты? Без томката (это какая-то надстройка над обычный апач, чтобы крутить жаву?) никак?
какая-то слишком низкоуровневая фигня, до сих пор не знаю как там и че, но спринг на них работает да
> Гредол или мавен?
пофигу в целом, но гредл лучше читается
> Они ставят одни и те же пакеты из тех же реп?
репозитории ты сам указываешь
> В чём разница?
для более детальных познаний гугол, бро
Накидайте плиз хуев за щеку вопросов по джаве
Тогда пхп - это плагин для апача.
>Разница между абстрактным классом и интерфейсом.
Кто вообще сейчас юзает абстрактные классы?
Толсто. Скажи это собеседующему, он оценит.
Ну ты сравнил проектирование объекта по оопшной иерархии с тайпчекающим сахаром
Ну ты не гуглил йажа интервью квештонс никогда чтоли? Тонны вопросов в гугле лежат.
Можно ли переопределить статик метод базового класса как нестатик. Можно ли наоборот.
System.getProperty("file.separator")
Но / работает на шинде и так.
> main\resourcer?
Если только для чтения, юзай спринговый ClassPathResource или родной getClass().getResourceAsStream().
благодарю, в общем то то же пришел к тому что отличия минимальны
>>884615
соглашусь, тема с микросервисами прошла мимо, и сейчас погружаясь в теорию прифигеваю насколько всё изменилось
>>884691
честно говоря хз, бэкэнд для неких банковских процессигов. вероятно дань моде, как и микросервисы, которые сейчас повсеместно, и насколько я понимаю не везде нужны в действительности
>>884747
ну есть некоторые представления, но до этого как-то да, старался избегать подобной многопроектности. с другой стороны хотелось вкатиться в финтех, и насколько я понял большинство вакансий в этой области от интеграторов
А вы часто пользуетесь Num-Pad'ом?
Я вот собрался клаву новую брать. Подумал:
В жопу TLK, нужно полноразмерную, хуё-мое.
А потом вспомнил, что достаточно долго юзал макбук, на котором нет нампадыча и все збс было. И подумал, что в рот его ебать тот нампад.
Без home/end не оч комфортно будет, а вот намыч мб и отрезать можно. В крайнем случае, куплю отдельный модуль нам-пад.
Что скажете?
Когда пишу код, не юзаю, клавиши с обычными цифрами ближе. В остальное время иногда юзаю, но не принципиально, могу и без него.
Не страдай хуйнёй, бери стандартную полноразмерную клавиатуру с классическим расположением клавиш.
Если можешь себе позволить и не боишься шуметь по ночам - бери хорошую механику.
Если будешь брать механику - бери тип клавиш Cherry MX Brown.
Бывают ещё Red и Blue.
Лучше, конечно, прийти в геймерский магазин и потыкать самому в разное.
Но, Red - без тактильного ощущения срабатывания, а у Blue - тактильное ощущение слишком сильное, и они шумнее.
Поэтому, для набора текста народ берёт, в основном, Brown.
И это гуглится.
Та у меня есть механика на красных.
Хочу новую
Думал синие взять и тарахтеть ебать как, но чет отговаривают. Говорят, что заебусь в край.
А вообще, разговор был не про свитчи, а про формфактор.
Красные - хуйня. Это для игр.
Я с дуру купил пару лет назад, за хуевы деньги, и так и лежит в шкафу.
Синие тоже не надо.
Форм-фактор - только полноразмерная, с нумпадом.
Если есть деньги, и хочешь низкопрофильную - Logitech MX keys.
По идее - это калька с новой эппловской полноразмерной клавиатуры. Я сам не пробовал, но, народ очень хвалит.
Если это (по ощущениям) то же, что клавиатура макбука про, то должно быть очень хорошо. Думаю себе взять, но, пока не нашёл, где попробовать живьём.
Подъебнуть решил?
На самом деле, в последние годы стал популярным образ модного-молодёжного программиста-хипстера. У которого обязательно чёрный экран на мониторе или ноутбуке. Даже белым солнечным днём. И "пишет" "код" он обычно на ноутбуке. А если на большом компе, то клавиатура - обязательно эппловский ноутбучный огрызок. Этакий ложно понятый минимализм.
И пишет он обычно на ноде-жс и реакте (10 лет назад это были рельсы и руби).
Так вот, джаваёбы - люди серьёзные. Они это презирают. И используют мониторы 32 дюйма и полноразмерные клавиатуры с металлическим основанием. Чтобы этой клавиатурой можно было переебать какому-нибудь хипстеру так, чтобы из него всё смузи вылилось нахуй.
И да, мышь - Logitech MX Master 3.
Охуенно расписал.
Ну спроси, даже не знает, если все остальное норм, то скажешь что 100% покрытие на каждый класс обязан делать и все, научится, там особо ума не надо. Заебывает только их писать, но без них хз как, только с божьей помощью
> А вы часто пользуетесь Num-Pad'ом?
никогда
на самом деле очень советую мышь с клавиатурой сбоку типа пикрилейтеда
на эти кнопки настроить все самый частые кнопки - ентер, бекспейс, home, end, pgup, pgdown, n т.д. как только привыкнешь поразишься насколько это упрощает написание кода (и не только).
Я в какой-то момент заставил себя научиться кодить только с клавой, очень сильно увеличивает кпд, в редких случаях конечно без мыши не обойтись, но в целом она не нужна
>>885989
Добавлю ещё про мышь - обязательно колесо прокрутки должно быть тяжёлым металлическим маховиком, со свободным вращением, как в логитековских MX.
Чтобы можно было раз крутануть, и оно по инерции крутилось, пока не остановишь.
Это единственное, что принципиально в мыши.
И сама мышь, соответственно, должна быть достаточно массивной (но не тяжёлой, конечно).
Нахуя, когда у меня есть мышь с маховиком, и я настраиваю акселерацию, крутя маховик пальцем, так как мне удобно именно в
этот момент? Это совершенно другой экспириенс.
Дети цифровой эры не осознают всей прелести аналоговых контролов, лол.
Когда тебя настолько огромные классы, что тебе приходится покупать мышку с маховиком
У каждой сущности есть OneToMany List<Description>. Учитывая, что сущностей тысяча, а у этих сущностей может быть хуева куча описаний, не совсем хочется создавать отдельную таблицу descriptions, на которую будут ссылаться все остальные сущности. Как я могу создать таблицу xyita_table и таблицу xyita_descriptions_table, не создавая таблицу descriptions? Вариант с созданием отдельной сущности XyitaDescription на каждую сущность, очевидно, отпадает
последние лет 7 пользуюсь microsoft arc touch
недавно сломалась, пробовал перейти на новую версию, но не смог пользоваться новым скроллом
как по мне в лучшая реализация скролла, колесные у меня регулярно ломались, а здесь он хоть и сенсорный, но с эмуляцией щелчков и акселерация настроена оптимально. хотя это возможно привычки
>microsoft arc touch
Не пробовал, но, идея понятна.
Что-то среднее между эппловской мышью с тачем и эпловским же тачпадом. Да, такие вещи работают, и управление акселерацией весьма годное. По-сути - симуляция аналогового управления.
> не совсем хочется создавать отдельную таблицу descriptions, на которую будут ссылаться все остальные сущности.
почему? это единственное нормальное решение тут
Так она станет огромной пиздец. На каждую новую запись в БД появляется n записей в таблице описаний. Там с размеров потом нормально охуеть можно будет, кмк
> Так она станет огромной пиздец.
ну и что? это во первых.
во вторых - огромной, это сколько в террабайтах?
короче создавай отдельную таблицу дескрипшн и не еби себе мозги.
преждевременная оптимизация корень всех зол же. ты скорее всего не осознаешь какие размеры могут тянуть современные СУБД.
> Учитывая, что сущностей тысяча
т.е. даже если у каждого объекта тысяча описаний это всего лишь один миллион срок в БД. это вообще считай что почти нихуя.
алсо, даже если бы у тебя там были бы миллиарды строк то все равно нужно было бы создавать одну сущность а то что ты хочешь сделать, а именно создание нескольких файлов для хранения данных и индексов нужно делать средствами СУБД (например загугли table partitioning for postgres). это чисто админская задача и жава слой туда вообще не должен лезть. ну и повторяю, пока твои таблицы не достигли размера хотя бы в сотню гигабайт вообще забудь про это.
Понял, анон, спасибо
>>886589
Не надо рефлексировать, лол.
Надо вынести метод для поиска в утилитный класс (модуль, строго говоря, т.к. метод static).
И сделать общий интерфейс у этих енумов.
https://pastebin.com/rwMi5env
>На продакшене лучше так не делать.
отрефатори чтобы вместо строки был саплаер какой-нибудь и будет ок
Ну в принципе норм. Еще бы toString у всех этих классов переопределить одинаково и аннотацию @JsonValue повесить.
Как они по сравнению с ломбоком?
Хотя нашел другой вариант, он мне больше нравится. Жаль все-таки полноценных (хотя бы даже через ломбок) трейтов нет.
https://github.com/alexradzin/enumus/blob/master/README.md#Customized-`valueOf()`
Ебать, нам и один ломбок не нужен, а тут новые ломбоки пилят.
Вообще, надо описывать дата-классы в виде XSD и генерить через jaxb-maven-plugin, а иммутабельность на самом деле не нужна.
ну типа чтобы гетеры и сеттеры не писать.
тащем то высосанная из пальца херня, сложно представить ситуацию где применение этой библиотеки было бы оправдано и сильно упростило бы разработку
все эти либы они от хуевого дизайна кода. если у вас началась ебля с енумами то значит вам нужны не емумы а нормальные датабины/ентити и дао/билдеры для них.
Нет, учи спринг.
Выбираю между шарпом и джавой для бекенда в Украине.
Цель не выявить лучший, а более перспективный по времязатраности/зп/месту
>Вообще, надо описывать дата-классы в виде XSD и генерить через jaxb-maven-plugin
So enterprise, such EJB.
>>886826
>ну типа чтобы гетеры и сеттеры не писать.
А также equals/hashCode/toString/builder и проверки на обязательные поля. Когда у тебя два десятка полей замучаешься это все перегенерировать на каждое добавленное поле.
стажером может и возьмут где-нибудь
Но "знаю сервлеты" звучит дико, такого лучше на собеседовании никому не говорить. По крайней мере если ты сходу не можешь сказать, чем, например servlet-api третьей версии от второй отличается, а третья от четвертой, с пониманием механизмов реализации. Иначе мокнут тебя в говно с головой сразу же.
> Когда у тебя два десятка полей замучаешься это все перегенерировать на каждое добавленное поле.
хуита же, любая нормальная иде все это генерирует по шаблонам сама.
> чем, например servlet-api третьей версии от второй отличается, а третья от четвертой, с пониманием механизмов реализации
Со второй версией не работал, за остальные поясню без проблем, включая асинхронную/неблокирующую работу с body stream.
Ты кстати забыл пятую, которая jakarta.
Или коКОКОтлин:
enum class Admins {
Makaka, Pedalik
}
println(Admins.valueOf("Makaka"))
println(Admins.valueOf("Pedalik"))
println(try {
Admins.valueOf("Anon")
} catch (e: Exception) {
"not admin!"
})
Ну судя по dou одна хуйня. Не уверен, но в шарпе вроде не такой зоопарк технологий что по мне так плюс, но я могу ошибаться.
в чем тогда проблема мануал для спринга прочитать? вкатиться можно за один вечер.
использование енумов вместо pojo или entity - это стрельба по ногам, чреватая архитектураными проблемами
И чем ваша параша от чистой явы оличается?
enum Admins {
Makaka, Pedalik
}
public static void main(String[] array) throws Exception {
System.out.println(Admins.valueOf("Makaka"));
System.out.println(Admins.valueOf("Pedalik"));
System.out.println(Code.runQuietly(() -> Admins.valueOf("Anon"), () -> "not admin!"));
}
Наша параша отличается например тем, что:
1) енумы могут содержать вложенные поля
2) hashcode/equals будут работать примерно как в ломбоке, т.е. сравнивая поля
3) есть паттерн матчинг (свитч на стероидах)
стандартный приемчик же
public static <T> T runQuietly(CodeSupplier<T> runnable, Supplier<T> defaultObject) {
try {
return runnable.get();
} catch (Exception t) {
return defaultObject.get();
}
}
@FunctionalInterface
public interface CodeSupplier<T> {
T get() throws Exception;
}
Ого
Это считай другая парадигма, к ней придётся привыкать, используется эта наркомания часто.
1. Сгенерировать конструктор
2. Сгенерировать гетер/сетер
3. Сгенерировать equals/hashCode
4. Сгенерировать toString
5. Сгенерировать builder
6. Добавить проверку обязательного поля.
Это все не сложно, но при частых добавлениях заебывает и какие-то вещи, типа toString забыть, а потом в логах не увидеть нужное поле история из жизни.
Не пизди, билдеры идея вообще не генерирует - нужен плагин. И проверку на не нул тоже не генерирует.
Ты не шаришь просто.
Пришёл утром на работку, попил кофейка, попиздел с коллегами.
Сходил на дейли, рассказал чем занимался разумеется некоторые вещи умолчал, ввернул пару быдловатых шутеечек, тестировщицы смеются и улыбаются.
Сел за рабочую пеку, читаешь свежие засмеялся-проиграл треды на одном 27" 4K-мониторе, в то время как на другом смотришь какие-нибудь ролики с ютуба.
А вот уже и обед! Идёте с коллегами в ближайшее кафе, где обедаете за счёт работодателя.
Вернувшись с обеда, идёшь к кулеру попиздеть с коллегами и налить кофейка, после чего возвращаешься к пеке и неторопливо запускаешь идею.
Пока она грузится, смотришь вебм-треды на дваче.
Загрузилась.
Создаёшь новый класс. Генеришь идеей всё, что можно сгенерить. Неплохо так, под соточку строк вышло, можно и закоммитить.
После чего открываешь PR коллеги в гитлабе, пишешь LGTM не глядя на код, и идёшь домой
1.тут sql-ex советуют для отработки написания SQL. Чет я глянул, сперва там легко шло, но потом заданиях на 30-х че-то кудато не в ту степь пошло (какие-то запросы из подзапросов в подзапросах . Стоит ли так упарываться чтоб все это понять, чтоб взяли макакой?
Книжка у них там какая-то ебанутая, не структурированная, может посоветуете что-нибудь как все это проще разобрать?
2. Нужно ли знание реактивного стека Спринга чтоб взяли макакой? Я вроде как наконец начал осваивать дзен Спринга обычного, сервлетного, пока не до конца конечно понимаю concurrency, но тем не менее. Но чет почитал про реактивный стэк и сразу уныние наплыло.
ну и к первому дополнение напишу - разве реально в реальности макаки на JPQL/HQL/jpa/spring data пишут такую хуйню как предлагает sql-ex?
1. Смысла нет, но джойны и подзапросы знать нужно.
2. Везде юзают разные фичи спринга, но реактивность редко, во всяком случае сейчас.
sql-ex на 2-3 уровнях сложности. Да да, я уже на 2 уровне сложности обосрался. как мне все это подтянуть, есть мнения?
1.Ну джоины +- понимаю, подзапросы тоже. Всеравно, есть че посоветовать дополнительно? Почитать там например, желательно с задачами? С меня нихуя разумеется, тебе плюс в карму анон.
2.Т.е. получается в идеале лучше знать канкарренси и сервлет стек?
1. Про задачи хз, что-нибудь может быть в шапке БД-треда. По мне так для вката в джаву куда важнее опыт применения SQL-запросов в своих проектах, чем задрачивание задач в духе "вывести второе минимальное значение больше указанного в каждой группе с применением оконных функций" или "сделать умножение матриц одним запросом SELECT". Написать пару-тройку пет-проектов с использованием только SQL, вроде социалочек или бложиков, довести схемы до третьей нормальной формы, пару запросов для сборка какой-нибудь простой статистики, и всё, хватит.
2. Не знаю, что за "канкарренси и сервлет стек", в спрингах надо в первую очередь знать MVC, Data и тестики. Голые сервлеты особо не юзаются, канкарренси делается через какие-нибудь ExecutorService и @Async.
если SPA с апи то да, если SRA то зависит от фронта, наверное
Конечно, вдруг кто хакнуть захочет, лол
1.голый SQL что имеется под ним? JQPL + Spring JDBC сойдет? К примеру если я напишу парочку проектов на JPQL и еще допустим один с ORM, такое прокатит, как думаешь?
2. вот то что мне нужно было, анон.
в реальности макаки вместо SQL пишу пикрелейтед.
это, если кто не понял, реализация запроса
select * from AUTHOR a, BOOKS b where b.author_id=a.id and b.title like '%hibernate%'
так что всякие recursive join'ы ХУЙНЯ по сравнению с их реализацией в JPA.
А так то SQL нужно знать на отлично. благо он крайне прост по сравнению со стеком явы. даже его процедурные расширения типа PL/SQL и pgsql полная хуйня по сравнению с самой жавой.
я его в свое время учил по оракловым мануалам еще для oracle9i, и в них было пережевано все начиная от базовой теории заканчивая административными задачами. очень рекомендую. после оракла вам будет абсолютно похуй с какой СУБД работать.
вообще реляционные базы жава девелопер должен знать на отлично, потому что почти всегда его работа связана с ними. а когда он их не знает начинается адовый пиздец типа как в примере выше когда кодер собирался тысячу таблиц создавать потому что боялся что база не справится с его тысячью объектами.
JPQL - это уже ORM, под голым SQL подразумеваются нативные запросы, которые. например, можно выполнять в консольке СУБД. В проекте вместо консольки будет NamedParameterJdbcTemplate. С ORM, конечно, тоже нужно разобраться.
> Пришёл утром на работку
нахуй и в пизду.
10 лет уже в офисе не был и надеюсь никогда больше не оказаться
>я его в свое время учил по оракловым мануалам еще для oracle9i, и в них было пережевано все начиная от базовой теории заканчивая административными задачами. очень рекомендую. после оракла вам будет абсолютно похуй с какой СУБД работать.
а ссылочку можно?
гугли
оракловая документация в свободном доступе и ее дохуища
https://docs.oracle.com/cd/E11882_01/nav/portal_booklist.htm
для вкатывающихся наверное надо начать с этого
https://docs.oracle.com/cd/E11882_01/server.112/e40540/toc.htm
че то я прям какое-то говно мамонта откопал, вот поновее
https://docs.oracle.com/en/database/oracle/oracle-database/19/index.html
это все конечно хорошо, но че-то мне не видно чтоб там сам SQL хоть как-то рассматривался больше чем пары страниц, а специфику бд конкретной я и сам бы нашел((
ты че ленивый такой, а?
https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/sql-language-reference.pdf
если тебе 2200 страниц мало то вот еще
https://docs.oracle.com/en/database/oracle/oracle-database/19/lnpls/database-pl-sql-language-reference.pdf
https://docs.oracle.com/en/database/oracle/oracle-database/19/adfns/database-development-guide.pdf
так это уже почти как спецификация получается, я пока ее читать буду, забуду что в начале было.
Там ни практики нет, ничего. Всеравно джавадоку по спрингу читать а не референс гайд, хорошо наверное. Но не думаю что это то что мне нужно.
у оракла есть мануалы и для таких ленивых овощей как ты
https://docs.oracle.com/en/database/oracle/oracle-database/19/tdddg/2-day-developers-guide.pdf
вот конкретный гайд как вкатиться за два дня. так и называется - "как вкатится в оракл за два дня если я ленивое хуйло".
гугли ебта.
полистал оглавление, про сами запросы там всего несколько страниц, даже про джоины толком нет ничего.
Это гайд о том как вкатиться в специфику базы, ддльки там, судя по всему адмирирование, pl/sql. Для общего развития это норм, но накой мне все это сейчас
Короче лучше поищу книги на рутрекере
в любом случае спс, буду знать где что у оракла все это есть, в принципе я и планировал на оракл пересесть с mysql который пока в тестовом режиме стоит
Норм. Может тоже почитаю. Хотя 90% работы с постгресом, ну и немного мсскл + ликвибейс для миграций.
Мимо-жявапидор
почему вот так вот работает
(getClass().getResource("/text.txt").getPath())
а вот так вот
(getClass().getResource( File.separator + "text.txt").getPath())
не работает.
как получить слэш просто, а не обратный?
Должно на всех.
https://docs.oracle.com/javase/8/docs/technotes/guides/lang/resources.html
> The name of a resource is independent of the Java implementation; in particular, the path separator is always a slash (/).
файлсепаратор для файлов, а внутри жарника/варника используется /
Эй, красавчики
А можете подсказать, какие вопросы могут быть, которые не связаны с джавой напрямую.
Дают задачи на логику или чего-то подобное?
Если можно, с примерами, плз
ПОЧЕМУ ЛЮКИ КРУГЛЫЕ?
@
ВЫ УМЕНЬШИЛИСЬ ДО РАЗМЕРОВ МУХИ И ПОПАЛИ НА ДНО МИКСЕРА, ЧЕРЕЗ МИНУТУ ОН ВКЛЮЧИТСЯ, ВАШИ ДЕЙСТВИЯ?
@
ЕСТЬ ПОЕЗД, ЗАМКНУТЫЙ В КОЛЬЦО, В КАЖДОМ ВАГОНЕ МОЖНО ВКЛЮЧАТЬ И ВЫКЛЮЧАТЬ СВЕТ, КАК ПОСЧИТАТЬ КОЛИЧЕСТВО ВАГОНОВ С ПОМОЩЬЮ ЭТОГО?
В большинстве мест не спрашивают, разве что по приколу. Всерьёз только в яндексах-гуглах. Ещё слышал что-то про скорость самолёта в зависимости от ветра, там какой-то подвох, и решение не как в школьной задаче про реку и лодку.
>>889146
Есть вариант взобраться по стенке - масса позволит это сделать тупо как мухе. Ещё есть вариант выпрыгнуть, как блоха.
> А можете подсказать, какие вопросы могут быть, которые не связаны с джавой напрямую.
смотря от того куда идешь.
эйчар/ менеджер по персоналу будет задавать вопросы в духе:
почему вы выбрали нашу компанию?
почему решили писать на джаве?
в какой области вы бы хотели работать?
расскажите о себе.
что вы любите делать в нерабочее время?
какие у вас хобби?
как вы учились в школе?
пробовали ли вы писать свою игру?
с какого возраста увлекаетесь программированием?
кем вы хотели стать в детстве?
при этом ответы ей похую, будут оценивать тебя как личность, какое впечатление производишь, умеешь ли общаться, адекватен ли вообще и т.д.
тимлид будет спрашивать:
в каких проектах участвовали
опишите архитектуру своего последнего проекта
какие ваши любимые языки и почему
покажите свой код/гитхаб
что-нибудь из базовой теории - например расскажите что такое дедлок и как его воспроизвести, какие уровни изоляций транзакции бывают, что такое третья нормальная форма ну и т.д.
а люки, трамваи и палки пирса - это херня, корторая по-моему уже лет 15 как себя отжила.
> А можете подсказать, какие вопросы могут быть, которые не связаны с джавой напрямую.
смотря от того куда идешь.
эйчар/ менеджер по персоналу будет задавать вопросы в духе:
почему вы выбрали нашу компанию?
почему решили писать на джаве?
в какой области вы бы хотели работать?
расскажите о себе.
что вы любите делать в нерабочее время?
какие у вас хобби?
как вы учились в школе?
пробовали ли вы писать свою игру?
с какого возраста увлекаетесь программированием?
кем вы хотели стать в детстве?
при этом ответы ей похую, будут оценивать тебя как личность, какое впечатление производишь, умеешь ли общаться, адекватен ли вообще и т.д.
тимлид будет спрашивать:
в каких проектах участвовали
опишите архитектуру своего последнего проекта
какие ваши любимые языки и почему
покажите свой код/гитхаб
что-нибудь из базовой теории - например расскажите что такое дедлок и как его воспроизвести, какие уровни изоляций транзакции бывают, что такое третья нормальная форма ну и т.д.
а люки, трамваи и палки пирса - это херня, корторая по-моему уже лет 15 как себя отжила.
>>а люки, трамваи и палки пирса - это херня, корторая по-моему уже лет 15 как себя отжила.
Ни-ху-я
Ходил на собес на тестировщика, на аналитика (год+ назад).
И на том, и на другом собесе ебали мозг задачами логическими.
Не HR, а тех. спецы
>>890135
Вот тут разбор этой задачи:
https://tproger.ru/problems/you-are-shrunk-to-the-height-of-a-nickel-and-thrown-into-a-blender/
Как обычно - правильный ответ тот, который загадал интервьюер.
А в конце эти гении пишут:
Это объясняет, почему любое существо размером с мышь и менее может не беспокоиться и падать с любой высоты.
То есть, эти ебанаты в принципе не ориентируются в реальном мире, и не понимают, что будет, если выбросить мышь с балкона. И ни разу не видели, как маленькие насекомые или пауки избегают падать с высоты больше полуметра.
https://studopedia.net/11_9706_vliyanie-soprotivleniya-vozduha-na-skorost-padeniya-tel.html
Поэтому при уменьшении размеров тела отношение растет , а предельная скорость падения уменьшается.
То есть они вполне правы, при мизерном весе скорость падения будет меньше метра в секунду.
А столкновение с поверхностью с такой скоростью не опасно
Если кодинг на джаве превращается в пытку, если ты думаешь "бля, скорее бы осилить уже этот курс и перекатиться в реверс-инжиниринг, вот там всё просто и без хуйни", то лучше и впрямь перекат сделать.
Я думаю так везде и у всех. Периодически появляются мысли по типу: "о, у Го классный маскот, хочу писать на Но" или "Раст компилируемый, хочу писать на нем" или вообще хочу перекатиться на фронт. Всякая ерунда может в голову придти.
Если в целом программирование тебе интересно, изучаешь или уже знаешь другие языки, а с джавой как-то туго - либо неделями не открываешь с мыслью "жаба не волк, в лес не убежит", либо открываешь, читаешь два абзаца и потом либо возвращаешься к другим языкам, либо вообще запускаешь дотан - то определённо не твоё.
И если всё же учишь продолжительное время, преодолеваешь сложности несмотря на проблемы с мотивацией, но при этом у тебя вызывает отвращение мысль, что придётся сидеть в разработке огромного многолетнего проекта с не самыми свежими технологиями и вникать в сложные бизнес-требования - то тоже не твоё.
Если это всё не про тебя, то смело вкатывайся.
Одно дело мысли, совсем другое - когда начинаешь прыгать с языка на язык каждые несколько недель.
Если ты в достаточной степени терпила и попущенный, чтобы писать на языке, который по экспессивности и возможностям всегда волочится позади.
Из плюсов - быстро учится, простой синтаксис, распространенность - отсюда наличие вакансий.
А скобки в конце() один хуй забыли.
> полностью
Справочник по документации Java SE на сайте оракла.
Но вряд ли тебе это нужно. Любой популярной книги по кору хватит с головой.
Лол причем тут синтаксис.
На собеседках любят дрочить алгоритмами, структурами данных и канкаренси. Это все коре.
Проверь себя.
Напиши сходу разворот строки оптимальный и по памяти и по озу.
Или обход бинарного дерева вглубь
Или напиши тредсейфти стек используя канкаренси
С какой версии?
По 8 учи.
Обжект и его методв.
Типы,примитивы, ньюансы типа кеша строк и интежеров.
Коллекции включая новые тредсейфти. Включая нюансы раьоты хешей.
Канкаренси с футурами.
Стрим апи с опшоналами.
Алгоритмы сейджвика читать обязон. Хотя знать как работает квиксерч и б деревья.
Про типы гц и ссылок.
Забыл еще - ооп в жяве.
Про модификаторы доступа, финальные и статические поля и методы.
Дженерики. Еще но врядли их спросят жуна.
Хотя если попросят написать абстрактную фабрику - будь готов
Ты дурачка не валяй.
На собеседовании тебе дадут листочек.
Скажут - пиши разворот строки.
Ты им скажешь - пук кек смотрите сами в ждк исходники.
Интересно, задавался ли у нас хоть кто-нибудь такими вопросами, когда дописывал один из часто используемых сервисов на 5000 строчек, ни разу за много лет его так и не отрефакторив.
У меня на проектах везде cxf для соапа
почему? как раз хотим эластик начать в проект внедрять, было бы интересно если бы ты рассказал
Толку от нее хуй да нихуя, все можно и через RestHighLevelClient делать. У меня конкретно сгорело с того, что они в 3.2 версии для маппинга в json использовали обычный ObjectMapper, а в 4.0 написали свой велосипед, который внутри так же использует ObjectMapper, но настраивать его теперь нельзя. При этом апи, которое мне нужно, есть в 4.0 версии, но не в 3.2.
Теперь все в этом треде знают, что надо развернуть массив байтов, так что проблем с этом вопросом не возникнет
Теперь еще только осталось написать тредсейфти стек, очередь из двух стеков, обход бинарного дерева и еще с пару десятков типовых задач по алгоритмам и структурам данных с собеседований.
Зачем тебе это говно?
Хочешь легаси ЕЕ обмазаться?
В новых проектах встретить это врядли возможно
Не слушайте тех кто вам втирает дичь про необходимость знания некротехнологий.
Никто вас не будет спрашивать про 7 лвл явы или работу с асинхронными сервлетами и каким-нить некрожсп/жсф.
Не забивайте голову этим. Это нахуй не нужно. А в проекты или команды где нужно я б не рекомендовал идти.
Лучше учите кор 8. Ну и сахарок из 11-14. Хотя врядли вы где встретите выше 11 в продакшене. А из фреймворков - только спринг. Разумеется с бутом. Из подсистем кроме кор фреймворка обязательно спрингдату, можно ждбцтемплейты(стремится уже к легаси). Почти обязательно месаджинг, рест и возможно соап контролеры.
Ознакомьтесь с вариантами использованием котлина вместо ломбока, это на самом деле топчик и в спринге используется без особых проблем оба языка. Спрингбатч с кварцем - если планируете в банки. Ликвибейс для миграции схемы. Кеширование кофеином. Транзакционность ее типы и условия применяемости. Мож еще чо забыл...
А легаси кал типа ЕЕ - не забивайте им голову
Ну там видос был по мокито. И у объяснятора это на примере с даопаттерном было. Я гуглю про дао, а там какая-то шляпа.
Вы это. Если утверждаете что то - пруфайте.
Вот ты пруфай использование дао вместо репозиториев в спринге.
Ты прав, все используют репозитории, таблиц больше чем на 1000 записей не существует, в говнохибернейте нет проблемы N+1.
Есть контроллер на пике 1 и вью на пике 2.
Если открываю value="/", то все нормально, а если открываю value="/abc", то пик 3.
Помогите, ЧЯДНТ?
Какие? Где именно?
Какой нахуй JSP в 2021? Сейчас все нормальные люди юзают шаблонизаторы + немного хипстеров с реактом.
Написал контроллер как у тебя - всё работает, обе страницы находятся. У тебя вообще есть abc.jsp рядом с home.jsp?
>У тебя вообще есть abc.jsp рядом с home.jsp
Вроде как. Хотя я та еще обезьяна, мог и обосраться.
Это говорил анон, у которого ЕЕ на работе, а сам он вообще хочет в Go перекатиться.
Тогда вообще хз. Попробуй собрать с clean, удалить с сервера приложений и задеплоить с нуля.
Я идиот, спасибо за помощь.
Тогда другой вопрос. Какой адрес указать, чтобы все работало.
Сейчас при переходе localhost/abc, а должно быть localhost/try1/abc.
Конкретно здесь поменять не трудно, но на будущее, как правильно сделать?
в гугол
Если у тебя спринг бут, то нужно указать contextPath в application.properties ( https://stackoverflow.com/questions/20405474 ). А если не бут, то обычно это настраивается на сервере приложений.
Picture p = video.getNextFrame().
И наоборот
VideoKit vk; vk.saveFrame(p);
Video v = vk.create();
Мне нужно работать с пикселями.
А я напоминаю, что пикрил - тру вайфу настоящего жависта.
Язык программирования.
Я полностью с тобой согласен и признаю свою неправоту, и вообще я слился, всё, ты как обычно подебил, возьми пряник с полки.
Синтаксис тут действительно не причем, С++ тут несравнимо сложнее хотя бы за счет отсутствия гц и мильенам способов отсосать себе в ногу.
Тут 10 лет учиться надо нахуй, без шутеек. И все равно будешь нихуя не знать. В жабушку же вкатиться - год-джва, если ты не долбоеб.
>таблиц больше чем на 1000 записей не существует
У нас на прошлом проекте больше миллиарда записей было, данные по двум-трём столбцам фильтровались шустро. В чём проблема может быть?
>N+1
Проблема N+1 решается либо с помощью дополнительной view в БД и её сущности и репозитории в коде, либо с помощью fetch = FetchType.LAZY в описании исходной сущности. Или в этих решениях есть какие-то подводные?
Я без наездов. Просто интересно, может я чего-то не знаю.
Что это за магия? Я не работал с JSP, но возвращал из метода контроллера строки и у меня в ответ запроса приходили просто строки. Это из-за JSP и его настроек на запрос возвращаются страницы?
RestController и Controller работают по-разному. В обычном контроллере ты возвращаешь название вьюхи в виде строки, либо ModelAndView, в котором это название. Это не только про JSP, но и про thymeleaf, freemarker и прочее.
Написать класс, содержащий поле типа коллекция, содержащий только уникальные элементы, добавить в неё предустановленный список неуникальных элементов типа Integer. Отсортировать их по возрастанию, вывести
Я подума,что нужно просто создать Сет и Лист и сету присвоить лист.Но так оказалось нельзя
> Но так оказалось нельзя
List<Integer> integerList = ...;
Set<Integer> integerSet = new TreeSet<>(integerList);
TreeSet уже отсортирован и содержит уникальные элементы, надо только пройтись.
Это если не требуется реализовывать свой сет с нуля.
Понял, спасибо. Что-то я не заметил, что это обычный контроллер.
Попытался прикрутить бд, но вот этот класс ломает отображение вьюх.
Где и в чем я обосрался?
> basePackages = {"project"}
Попробуй basePackages = {"p.project"}. Но хз, при чём тут вьюхи.
И классы, кстати, правильно именовать с большой буквы.
Магия какая-то.
А что же там тогда? Ну ты понял, что я имею в виду. В го можно наспавнить тысячи горутин, базовый размер стека у них всего 2 килобайта. Когда такое будет в джаве? И что из неё выпили? Я сам не джавист, присматриваюсь просто. В эрланге тоже так можно, например. Или rust + actix.
>>891998
???
Нашёл что-то про fibers/project loom, это оно? В 15 версии релизнули, как я понял.
{
"coord": {
"lon": -122.08,
"lat": 37.39
}
Так?
private String[] coord;
private String lon;
private String lat;
Подскажите, пожалуйста.
В древней джаве 1.1 под гринтредами понимали выполнение вообще всех тредов на одном ядре. Ну то есть реализация вообще не использует механизмы мультитрединга, а просто выполняет команду за командой из разных тредов, но на одном ядре.
В Loom же подразумевается некий параллелизм, как в Go. Вводится понятие виртуальных тредов. Реализовано не полностью, даже в 15 джаве это экспериментальная фичаа.
Ну а до Loom так и будет юзааться пул тредов и диспатчер.
Не "класс внутри класса".
А свойство класса A - объект, экземпляр класса B.
Класс String уже есть в стандартной библиотеке.
А класса Coord там нет.
Но, он вполне может быть в другой библиотеке, или ты можешь написать его сам.
Типа в джаве не параллелизм сейчас?
А что?
Чем в этом смысле лучше Go (не на уровне синтаксиса и расхода ресурсов)?
Горутины, как раз таки, не выполняются в отдельных тредах, насколько я помню, они именно что виртуальные.
И как это добавляет Go параллелизма, относительно джавы?
Как по мне, так это меньше параллелизма, а не больше.
Но, он дешевле, при этом.
Гринтреды после джавы 1.1 выпилили и заменили на нативные, которые и юзаются по настоящее время, в них параллелизм. Просто это жирные треды, жрущие далеко не пару килобайт. Поэтому обычно юзается явный пул тредов.
В Go, насколько я понимаю, тоже неявно создаётся пул нативных тредов, в которых уже и запускаются горутины, но программист про это ничего не знает и просто создаёт горутину, будто это обычный тред. В джаве для юзания пула нужно явно его создать и давать по очереди таски ему на вход. Это всё равно разные механизмы, если в Go есть планировщик, приостанавливающий горутины и запускающий другие для обеспечения конкурентности, то в джаве на одном ядре таска будет выполняться от начала и до конца, а другие будут ждать в очереди, пока хоть одно из ядер освободится. Ну а в Loom хотят сделать планировщик типа как в Go.
>в Go есть планировщик, приостанавливающий горутины
Да, это я упустил из виду, когда писал.
Особенно это важно на время ввода-вывода.
>другие будут ждать в очереди, пока хоть одно из ядер освободится
Не думаю.
Это что же, на одноядерном процессоре пока 1 поток не выполнится, другие стоят? Вряд-ли.
А если поток заблокирован по вводу-выводу? А если все ядра с заблокированными потоками? Всё встанет?
Бля, не верю, надо проверять.
Не совсем правильно выразился. Скажем, будут ждать, пока хоть один из тредов в пуле (а не ядер) не освободится. Просто обычно запускают столько же тредов, сколько ядер.
> А если поток заблокирован по вводу-выводу? А если все ядра с заблокированными потоками? Всё встанет?
В пуле - да, встанет. Но остальные треды, в том числе главный тред, так и продолжат работать, они про пул ничего не знают. Вообще, в пул лучше не отправлять подобные таски, к примеру какой-нибудь гуй будет обычным тредом.
Я не понял как это работает,я когда создал
List<Integer> x = new ArrayList();
и
Set<Integer> y = new HashSet();
а потом
y=x;
У меня вылезла ошибка,что нельзя преобразовать,когда я сделал так:
y=(Set) x;
То там тоже какой-то пиздец
Или мапа.
> y=x;
> y=(Set) x;
Нельзя так делать, один не является наследником другого. Джава не знает, какой результат ты при таком приведении хочешь получить, это всё равно что пытаться привести Integer к System, например. Можно только сконвертировать олну коллекцию в другую с помощью специальных методов или конструкторов. Вот у TreeSet есть конструктор, принимающий коллекцию и наполняющий по ней свои внутренние данные.
да юзай что нравится и забей хуй. я на хайперскилле до джуна докачалась. вообще похуй на все эти советы.
Сиськи с пруфом джуна.
месяца три. но я уже питончик знала + хорошая алгоритмическая подготовка.
Вызывается этот конструктор: https://docs.oracle.com/javase/8/docs/api/java/util/TreeSet.html#TreeSet-java.util.Collection-
Он принимает коллекцию и по ней строит TreeSet. Это не приведение типов, а просто там внутри код наподобие:
for (E item : collection) {
if (!this.contains(item)) {
this.add(item);
}
}
Я лично только там въехал зачем оно все надо, в школе не понимал и забивал.
ну я всю школу математику делала, в 8 классе в физмат школе училась. яндекс лицей как раз питончик + алгоритмы. так вот.
Алгоритмы - не математика и не физика.
Алсо, надобность в (серьёзном) знании алгоритмов в реальном программировании на джаве - весьма небольшая.
>>892263
>Питон, алгоритмы
>3 месяца - и работа на джаве
Как-то не очень верится. Джава - не питон.
И что же ты смогла делать через три месяца такого, за что тебе платили?
Приведи пару примеров.
лан алгоритмическая подготовка плохо подходит под то, что я имею ввиду. я хз как это назвать, просто умение придумать какой-то алгоритм под простенькую задачу. как пример могу привести задачку с яндекс лицея на пикрил один и два. были и посложнее, просто это - единственное, что осталось. насчет ненадобности алгоритмов я согласна, но опять же не имела ввиду буквально сортировку пузырьком и тд.
>Джава - не питон.
так на курсах я и научилась в джаву очевидно. там ничего сложного нет. три месяца если что были только курсы, после них следовали еще 2 месяца вялых сайд проектов, до ума из которых доведен только один. это был дискорд бот на спринге хихи.
>И что же ты смогла делать через три месяца такого, за что тебе платили? Приведи пару примеров.
я переношу старый бекенд написанный на пхп на джаву. я единственный бэк в команде и пишу все с нуля. как бы в целом ничего особенного не делаю пока что. в основном постигаю основы по типу более глубокого изучения спринга, докера и тд. работаю всего два с половиной месяца пока что. задачи по мелочи в общем.
почему чела без опыта взяли для написания проекта с нуля - сама хз, можете даже не спрашивать. фронт у нас тоже единственный и тоже особо без опыта кстати.
А когда Loom полностью реализуют?
И ещё такой вопрос, почему так часто именно Java 8 используется в работе? Получается, Loom релизнут, а толку мало будет, всё равно ведь все старую версию используют.
Раньше был синьор, но давно не видно.
> А когда Loom полностью реализуют?
Не знает никто. Давно его ждут.
> И ещё такой вопрос, почему так часто именно Java 8 используется в работе?
В легаси очень сложно обновить версию, спринг тоже старый, даже ЕЕ не самая свежая. Например, некоторые сервера приложений на джаае больше 8 тупо падают с кучей ошибок, хотя заявлена обратная совместимость. Ну а в новвх проектах новых жаб не боятся.
>И ещё такой вопрос, почему так часто именно Java 8 используется в работе?
Потому что в 9 появились бесполезные модули, которые сломали обратную совместимость.
>>892593
И потому, что в 8-й есть апплеты и java web start.
Во внутренних разработках ими активно пользуются, но, в хипстернете ты об этом ничего не услышишь, это другой мир.
По этой же причине бизнес продолюает юзать IE-11, что вызывает лютый баттхёрт у js-смузихлёбов, которые искренне недоумевают - зачем, потому, что долбоёбы комнатные, лол.
Вообще, решения IT-гигантов, убивающие десктоп, довольно далеки от заботы о людях.
Наоборот, гиганты заботятся о себе, выдавливая корпоративных пользователей в облака, и вынуждая их платить абонентскую плату за то, что у них уже и так было, причём и лучше и дешевле.
Ну, и потому, что бритва Оккама.
Если на 8-й можно делать всё то же самое - зачем ебать мозги?
Алсо - модули - это опять облачная хуита, в реальной корпоративной жизни не нужная.
не помню уже. возможно я сама себе придумала, что так будет лучше. так в целом и оказалось. теперь тошнит от любого не джава-подобного языка.
Нет, это не нормально.
А что делать? Зависит от задачи.
Вот, например, описан буквально твой случай:
https://stackoverflow.com/questions/44915255/is-it-ok-return-http-status-404-in-the-post
400 же
А, спасибо. Не наткнулся на этот вопрос в гугле.
я так понял функцию then выполняют фигурные скобки {}
ну типа это как незаконченная фраза IF .. а где then ??
Тебе ещё рановато в этот тред, мне кажется.
Начнём с того, что ты не видишь разницы между управлением потоком вычислений (if-else) и условным _выражением_ (тернарный оператор a ? b : c)
if не имеет значения. А тернарный оператор - имеет.
Ты не можешь написать a = if (true) {1} else {2}
Но, можешь написать a = true ? 1 : 2
Понимаешь?
А then - это просто синтаксис.
Во всех си-образных языках и многих других, then просто подразумеватся, т.к. это и так понятно, и незачем засирать код лишними буквами.
То же касается и begin-end
> я переношу старый бекенд написанный на пхп на джаву. я единственный бэк в команде и пишу все с нуля.
> 3 месяца опыта
>почему чела без опыта (МЕНЯ) взяли для написания проекта с нуля - сама хз, можете даже не спрашивать. фронт у нас тоже единственный и тоже особо без опыта кстати.
У меня было 4 месяца опыта, когда мне надо было перенести бэкенд с python/django (предыдущие 4 месяца я его дорабатывал) на java/spring boot. На тот момент jav'у я знал на уровне lab1.java, о spring'е даже не слышал. Но в моём случае я ещё переносил фронт с шаблонов django на react. Так что всякое может быть, особенно в небольших компаниях, у которых нет опыта в программировании и/или это не основное направление.
да -_-
>>892852
жалко лишней команды что ли?
>Ты не можешь написать a = if (true) {1} else {2}
Но, можешь написать a = true ? 1 : 2
Понимаешь?
Я ща только вкатываюсь по курсам со skillbox и какой же там пздц.. нигде никогда ещё не видел чтобы обучение было для людей сделано - последовательно и методично от простого к сложному. У меня там уже задания идут, я должен код писать без объяснения синтаксиса и что по чём.
> По этой же причине бизнес продолюает юзать IE-11
Не совсем понял зачем бизнес продолжает поддерживать IE-11, если на нём сидят 0.00000000000000001% клиентов.
мимо-js-смузихлёб
Ну, это многое объясняет.
Хороший шанс наработать опыт, кстати.
Особенно, если не надо снимать квартиру.
Есть ещё один вопрос - у тебя девочка внутри или снаружи?
Если снаружи, то надо предъявить сиськи, иначе - нечестно.
Нет, если продукт внутренний для самих себя, то клиентов на нём будет сидеть 100%. У работников просто нет выбора.
Ты пост читал, на который отвечаешь?
Или смузи глаза залил?
В интранетах его юзают, понимаешь?
Используют, а не "поддерживают".
Но, в вашем смузинете ты никаких следов этого не найдёшь, как я уже сказал. И на смузи-проценты это не влияет.
да опыта тут предостаточно, мне курсы покупают постоянно, менеджер бывший девопс очень няшный нянчится со мной, прекрасно. живу с мамкой, так что ни за еду ни за квартиру платить не надо)
а в интернете сисек не хватает?
Добавлю, т.к. всё-равно двусмысленно получилось, зумер может не догадаться:
IE-11 используют потому, что это единственный современный (более-менее) браузер, в котором есть поддержка java-апплетов.
Хватает, конечно же, лол. Но, таковы правила.
А знаешь ли ты, что есть реализация php, написанная на java?
И это не какой-то эксперимент, а серьёзный высокопроизводительный продукт:
http://quercus.caucho.com/
Сделан он был с целью повысить быстродействие пыхосайтов на кластерном хостинге.
Не знаю, прикручивали ли это к спрингу, можно погуглить. Hessian (тоже Caucho) точно в спринге есть.
В любом случае - это просто сервлет, и прикрутить его можно куда угодно, наверное.
Для убойного быстродействия в кластере, конечно, нужен Resin.
А чтобы просто работало на уровне всей остальной спринг-чешуи, то и так сойдёт.
Это я к тому, что можно пыху переносить на джаву вообще не переписывая, или почти не переписывая. А потом постепенно допиливать.
Но, это зависит от версии пыхи, которая у вас.
> Хороший шанс наработать опыт, кстати.
наоборот, это днище, я сам такое прошел - ты сидишь изобретаешь велосипеды, на форумах что-то читаешь, пытаешься что-то сделать. по итогу творишь адову хуету о которой стыдно вспоминать. полгода работы в интеграторе стажером дадут опыта больше чем пять лет ковыряний в одно рыло с нулевым опытом.
когда у тебя знаний нет то ты не можешь даже нормально процесс разработки организовать. на нормальном месте тебе в первые же дни покажут гит, жиру, дженкинс, мавен, юниттесты (или аналоги). там будут тестировщики, аналитики, дизайнеры, верстальщики, фронтендщики, архитекторы, тимлиды и пмы. там будут системы управления временем - какой нибудь скрум, тдд, будут системы оценки производительности, дедлайны и т.д.
это не ява, но это про яву. когда человек в одиночку ведет проект как фул-стак девелопер он должен все это совмещать в себе.
если у тебя нет опыта - то нужно искать место где есть люди которые гораздо опытнее тебя не только в программировании, но и в организации процесса разработки. а если что-то сидеть в одиночку ковырять не зная как оно должно быть на самом деле то даже через 5 лет у тебя будет знаний максимум как у джуна и соответствующая зарплата, а поебашив на галерах 5 лет можно уже 300-500к в месяц делать, а то и перекатиться на тракторе куда-нибудь.
Если у кого-то появится желание поиграться с джава-пыхой, то можно просто скачать текущий Resin, там всё уже из коробки настроено.
Делаешь подкаталог в webapps, в нём пустой (или не пустой) web.xml, ну, и пишешь index.php и всё остальное, как на пыхе, с возможностью юзать джава либы.
Там админка написана на пыхе кстати, очень много всего, можно использовать как пример. Документация тоже в комплекте.
https://caucho.com/products/resin/download/gpl#download
>>892905
Да, думаю, ты прав.
Но, всё равно, когда сам решаешь проблемы - это развивает.
И многое зависит от человека, и от его подходов.
Главное, не закиснуть надолго в болоте.
> когда сам решаешь проблемы - это развивает.
проблема в том что пока у тебя нет опыта ты не видишь какие у тебя проблемы есть. проблемы - это поставленные тимлидом задачи в багтрекере, багрепорт от тестировщиков и дедлайн релиза/ сдачи проекта заказчику. а в болоте где никто не понимает что ты делаешь и, главное, ты сам не понимаешь что ты делаешь (хоть сам можешь думать иначе) какие могут быть проблемы?
> Главное, не закиснуть надолго в болоте.
если есть интерес развиваться как профессионал то валить надо сразу, если нужно до декрета досидеть то сойдет и так.
>quercus
а он еще живой? одно время (лет 15 назад) его сан, пока был жив, вместе с жруби продвигал. я думал он уже загнулся давно. да и по ссылке последний варник аж 14 года. не думаю что он современный пых сможет интерпретировать.
Он может интерпретировать php 5.
С небольшими оговорками по части некоторых пыхо-модулей.
Он был сделан для поддержки типичных пхпшных цмс того времени.
И он совершенно живой. Включён в последнюю версии Resin, от июля 2020 года.
>>892963
Припекло, хипстерок-зумерок?
Давай договоримся - ты не будешь говорить мне, что я должен делать, а я не буду говорить, куда тебе нужно идти.
> И потому, что в 8-й есть апплеты и java web start.
а что насчет https://openwebstart.com/ ?
но вообще смысл использовать апплеты в локальной сети я не вижу. запускать гуи из браузера, бороться с ограничениями прав нафига это все если любой аплет элементарно переписывается в дестктопное приложение? апплеты должны были стать тем чем стал флеш, который уже тоже благополочно прожил свою жизнь и умер. зачем сейчас что-то на них писать и поддерживать - совершенно непонятно.
плюсую 1 год работал с монолитом написанным на стеке ee, jsp, servlet и спринг с кучей xml. Ушел уже 3 года как, это конечно была моя первая работа, но единственное что я понял там это как не надо вести проекты. Тестов эти люди кстати не писали, хз как они еще живы
Вот я хочу пройти тутор по спринг-буту. И у меня идея бесплатная. Я могу создать спринг-проект на сайте спринга, засунуть его в бесплатную идею и дальше никаких ограничений или что-то не будет работать?
Ты можешь вообще без идеи это все сделать. Отличие ультимейта от комьюнити только в разных удобных интеграциях, которые упрощают работу с конкретным фреймвороком.
Если ты, говно, не умеешь читать, и не можешь понять, почему я это запостил, то сиди тихо. Или иди на хуй.
Из того, что ты написал, совершенно ясно, что ты понятия не имеешь, о чём пишешь. Причём - ни малейшего.
Попробуй, например, рассказать мне, как твои десктопные приложения будут разделять сессию с веб-приложением.
>зачем сейчас что-то на них писать и поддерживать
Затем, что это в разы менее затратно, чем писать гуй на жс-говне, вот зачем.
Не говоря уже о том, что переписывать.
Вообще охуеваю с детского сада выпускников различных курсов.
Ребята, реальная жизнь - она несколько сложнее.
>>893419
То, что ты описываешь - нормальная практика.
И тесты в таких случаях мало что дают, поэтому их и не писали.
>>893540
В бесплатной идее нет полноценной поддержки спринга.
Т.е. это будет просто обычный джава-код и т.п.
Т.е. работать всё будет, но без ништяков при написании кода.
Соси хуй и не писхуй, лол.
Однако нынешнее жс-говно вполне себе удобное в плане биндингов и реактивности.
Хорошим примером этих двух вещей является то, как это выглядит в Vue.js и как уебищно и монструозно это выглядит в Android.
Да, ты прав - оно стало лучше.
А vue - так вообще охуенно.
Я, кстати, в последние пару месяцев, регулярно устраиваю пропаганду vue (и унижение реакта) в жс треде, лол.
Но, веб-говно - это веб-говно.
Это не десктоп, и даже не близко.
Все просто привыкли уже, и смирились.
> как твои десктопные приложения будут разделять сессию с веб-приложением.
а какие тут могут быть проблемы, спринг умеет сессии в БД хранить. (впрочем это даже томкат из коробки умеет, просто со прингом их еще и доставить оттуда в десктопе легко)
> Затем, что это в разы менее затратно, чем писать гуй на жс-говне, вот зачем.
это неправда, если речь идет о стандартных компонентах то гуй на свинге сложнее в разработке чем разработка аналога на каком-нибудь ваадине. единственное разумное объяснение делать гуи на свинге - это нестандартные компоненты, а формы к документообороту клепать в разы проще на вебморде.
> Вообще охуеваю с детского сада выпускников различных курсов.
остынь, ветеран, пикрелейтед - моя первая ide
>Т.е. работать всё будет, но без ништяков при написании кода.
а что такое ништяки, можно вкратце?
да хуйня, ультимате едишн просто можно раз в месяц переставлять и все. после этого даже настройки проекта не слетают.
Стоить ставить ебаться с перестановкой ради обучения? Я просто не понял, что я могу без ультимате и что я с ней получу.
Идея клевая, хоть и тормозная. Где-то читал, что ради обучения спрингу нужно на эклипсу переходить.
https://www.jetbrains.com/lp/intellij-frameworks/
>>893723
Ещё можно активатор купить в торрентах.
>Идея клевая, хоть и тормозная.
Открой для себя SSD.
>Где-то читал, что ради обучения спрингу нужно на эклипсу переходить.
Это ты хуйню читал.
Эклипс - тупое говно. Порождение сумрачного гения IBM.
Как на ней вообще можно работать - для меня загадка.
Не говоря уже о том, что она тоже написана на джаве, и если у тебя идея тормозит, то и эклипс тоже будет.
Максимально быстро достать все после последнего '-', включая его?
В данном случае должно получиться "-0".
Помогите плиз, никак не могу понять что конкретно должны делать методы execute() и undo().
StringUtils.substringAfterLast
Ты уверен, что тебе действительно нужно "максимально быстро"?
Используй регулярку, оно будет более наглядно и future proof.
В именах классов.
public class Test{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int a = in.nextInt();
System.out.println(a);
String s = in.nextLine();
//почему оне жрет стринг s а сразу выводит
System.out.println("Hello");
System.out.println(s);
}
}
Не знаю причины, моих знаний не хватает.
Но если поменять местами и сначала спросить nextLine, а потом nextInt, то работает нормально.
В принципе, ты можешь считать строку, а потом из строки преобразовать в int:
String s = scanner.nextLine();
Integer inta = Integer.valueOf(s);
Коряво, но получишь то что надо)
Могу поделиться только рекомендацией учить джаву, а социоблядствовать, играя в изучение джавы.
Бамп вопросу.
Просто думаю себе на нг подарок сделать в виде ссд на 500, старого на 120 не хватает вообще ни на что. Отделять ли там часть памяти под другую файловую систему или нет?
Линуху вообще в глаза не видел.
Не надо ничего отделять.
Линукс надо ставить на виртуальную машину.
Работает всё быстро, а мозгоёбки в разы меньше.
Потому что там один из методов не переводит карэтку.
В джаве не задаются вопросом "почему", всё равно никак на это не повлиять. Поэтому жрём, что дают:
import java.util.Arrays;
Arrays.stream(myIntArray).max().getAsInt();
Ну а если у тебя только три инта, не проблема написать:
Math.max(Math.max(a, b), c);
спс, про массив тоже думал
Число % 10
В рот ебать те курсы, читай Spring in action последний на инглише.
По хибернейту - в рот его ебать, лучше дрочни на JPA сначала: https://en.wikibooks.org/wiki/Java_Persistence
Неявное приведение типа к даблу
Для запуска нужен некий планировщик, в зависимости от используемых фреймворков может быть что угодно. Прерывать не нужно - это полный пиздец, обсасывали много раз уже. Нужно каким-то образом слать методу сигнал, который внутри метода будет отслеживаться с последующим обычным завершением работы метода через return.
потестировать можешь даже запустив с флешки их
если будет просто интервал времени - то можно обойтись spring scheduler (гугли аннотацию @Sheduled)
если более сложное - типа выражения cron, то гугли quartz sheduler
главное не изобретай велосипедов - всё почти уже украдено за нас
>я и так огромный буст имею
Это прекрасно.
А что насчёт фотограммы буста?
Кстати, что таки имеется в виду?
И что такое "давно юзаю", если опыт 3 месяца?
Кварц - довольно продвинутая вещь.
https://www.baeldung.com/quartz
К спрингу его тоже прикручивают, можно почитать в гугле.
Самый простой способ это же из стандартного concurrent scheduledExecutor, там же можно и задать время в которое стартовать, и нужно ли запускать таску если если старая не выполнилась. Я посмотрел реализацию спринга, там именно эта штука и используется только добавь к этому перегруженность спринга, не спорю спрингом удобно, но какие ещё бонус по сравнению с стандартной реализацей?
если проект не спринговый то конечно ради шедулера не надо его цеплять
Я понимаю что должно быть жуткое легаси и т.п., но какие конкретно задачи решаются?
Парсинг хмл, джейсонов, круды ?
Процессинг данных
В догонку к первому.
Жуткого легаси не видел. Везде где работал - спринг.
А так да. Соап, jms, работа с ораклом и plsql хранимками.
Благодарю.
Про спринг есть общий вопрос: если апи рест сервиса изменяется, то это все ручками переделывается или как ?
Чем спринг перегружен?
Не добавляй модулей кроме кора.
Зато спринг дает гарантию что его таск не помрет сам по себе. Контейнер можно и в варку завернуть и задеплоить в томкат какойнить, а можно и бутовский жарник собрать.
Ну а вообще что такое прервать метод?
Таск остановить шедулером одно. А корректно завершить задачу другое
Если ты пишешь клиента на чужой рест?
В спринге очевидно ты будешь юзать фейн для этого. И тут по сути 2 разных задачи.
1. Если меняется эндпойнт сервиса.
Тогда добавляешь новые методы и правишь эндпойнт в интерфейсе, описывающем апи.
2. Если меняется схема жсона.
По сути это самое неудобное. Придется и модели для маппера подгонять. И логику
Про перегруженность я имел в виду в целом спринг перегружен, так как тебе нужно сканировать объекты, делать из них прокси и вообще верить тому, что спринг сделает за тебя всю работу, обычно так и происходит, и то что я сказал выше не является проблемой или ошибкой, просто такая реализация спринг. Если делать через стандартные методы ты получаешь больше контроля над ситуацией, а значит не получаешь неявного поведения. Мне просто было интересно может там какие то крутые фичи есть у спринга, я просто детально этот вопрос не изучал.
Про прервать, кстати я ничего не говорил, но такая возможность в стандартной реализации отсутствует, только если вырубать весть executorService, либо на уровне таски, прерывания делать, но что-то, что другое херня как по мне
Как вариант сделать проверку внутри самого метода.
Если он итерационный, то в начале итерации чекать статус задач и если активна задача - прерватьЗадачу - то выходить из цикла и завершать метод.
Назовем задачу запущенную в 6 утра A.
Если создать ещё одну отложенную задача, которая сработает например в 12 дня, и просто проставит A статус interupt.
А в задаче A будет проверка на isInterupt, то она завершится корректно и проработает +-6 часов.
Но это велосипеды конечно ещё те.
Можно напердолить акторов еще.
Супервизор управляет запуском задач. Основной актор - обслуживает сам метод. И слушает сигналы. По планировщику супервизор стартует новый актор прерыватель, тот запускается и шлет сигнал на завершение работы основному актору.
Выглядит как пиздец. Зато асинхронно
float count = (float) 0;
float a = in.nextFloat();
int c = 0;
while (a!=0.0){
count += a;
c +=1;
}
System.out.println(count/c);
}
float count = (float) 0;
int c = 0;
int a = in.nextInt();
boolean flag = true;
while (flag){
if (a == 0)
break;
count += a;
c +=1;
}
System.out.println(count/c);
}
int a = in.nextInt();
if (a == 0) break;
count += a;
c +=1;
}
System.out.println(count/c);
vможете поздравить
просто смотрю по вилкам вакансий, в среднем у жабистов они вкуснее
ниши разные. серьезные вещи на пхп никто не делает. пхп - это низкооплачиваемый макакинг, найти серьезную задачу на пхп очень непросто. пикрелейтед - типичная работа пхпшника - устанавливать GA на страницы и настраивать джумлу с вордпрессом, платить за это 300к в месяц никто не будет.
Понял.
Скорее второе, например если используется аннотация JPA, а потом модели поменялись. Ведь создаваемые таблицы тоже менять придется и уже существующие данные как-то привязывать.
это какой-то пиздец
но не так уж и страшно
а пример методов в этом controller есть? что там с mapper'ами делается?
Мапперы маппят каждый вложенный ресурс. При этом, в каждом маппере логика разная и просто использовать spring data projections не получится.
хз по паттернам не подскажу, надо бы избавиться от одинакового кода в контроллере - на первый взгляд неправильно реализован интерфейс EntityMapper - он всегда должен принимать product, а реализации сами уже будут знать что там брать - vendor, parameters и т.д. ну и метод чтобы у него был один - а не 2: toDtos или toDto. Тогда можно вынести это из контроллера, опять же реализовать интерфейс типа SuperMapper у которого будет строка в параметре и на выходе ResponseEntity<?>, и в реализации будет уже вся эта лабуда заимплеменчена - автовайрены нужные мапперы и вызов через case. А в контроллера останется только:
@GetMapping("/{id}/{type}")
получение продукта по id и вызов SuperMapper(product, type)
короче думать не охота, с наступающим бля
Че рычишь.
При приеме команд тоже выполняется некоторая логика, если бы ее не было, то мне кажется Dispatcher тоже бы подошел, а так не очень.
не понял? тебе скинуть крупные сайты на нем или что?
если
>на похопэ пишут толька лендинге
то
>на жабе пишут говнолиты из сервлетов и говна
чел, ты либо застрял в прошлом, ковыряя свое обоссаное легаси, либо сектант
Ну тут я даже хз. Зависит от того как сильно изменилась схема.
Может там добавились служебные поля которые особо и не нужны.
А может изменили структуру жсона и например переименовали массив значений, сменили тип поля или еще что. Модели, аннотации джексону, допмаршаллеры - править.
Ну а саму логику в сервисе?
У тебя как приходит в метод на входе модель от маппера - так и приходит. Если нужны новые поля - обрабатывай. Под них и сущности подправь если нужно.
Пример.
Изменился в апи формат в поля с временем создания записи.
Приходила строка с датой dd-MM-yyyy.
Стала приходить строка с iso8601 с датой, временем и таймзоной.
В моделе правишь тип поля.
Либо используешь аннотацию джексона для маппинга iso формата, либо в контроллере в цепочке создания маппера заменяешь маршаллер для локалдейт на офсетдататайм/локалдататайм.
В сервисе изменений по сути нет.
В сущности? Тут сложнее.
Если у тебя в базе поле просто дата а не дататаймстаймзоной то -
Пишешь миграцию на эту таблицу (ликвибейс то в проекте есть?) В которой средствами скл апдейтишь тип столбца и данные в таблице.
Правишь сущность привязаную к таблице.
Если миграций нет - тут я хз. Пишешь дба или кто за субд отвечает. Чтоб предусмотрели при выкате новой версии обновление субд
А. Ну либо если время наыигине нужна то в сервисе переводишь офсетдататайм в локалдейт и сохраняешь в существующей таблице
Вообще проблема времени в прогромизме как стояла так и стоит.
Ебаные локальные форматы, таймзоны и все это говно.
Потому обычно при проектировании базы используют максимально охватывающий тип дататаймстаймзоной.
А для парсинга маппинга используют кастомные маршаллеры под конкретный формат.
Ну и под конец.
Если не понимаешь о чем я про маршаллеры дататаймы то начни отсюда
https://javadeveloperzone.com/spring/spring-jackson-custom-date-format/
ArrayList<Boolean> valid = Arrays.stream(Collections.nCopies(50, true).toArray(new Boolean[0]))
.collect(Collectors.toCollection(ArrayList::new));
Зачем тебе 50 тру?
new ArrayList<>(Collections.nCopies(50, true))
commons-exec-1.3.jar okhttp-3.11.0.jar
выкатывайся нахуй
А я наоборот, из qa в java вкатываюсь, хочу в автоматизацию войти через год, а там глядишь затянет и в разрабы, но тестирование мне нравится
<modelVersion>4.0.0</modelVersion>
<groupId>MyTestProj</groupId>
<artifactId>MyTestProj</artifactId>
<version>1.0</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.0.0-alpha-7</version>
</dependency>
</dependencies>
</project>
Мавен без IDE работает. Другой вопрос в том, что на джаве в целом без IDE писать очень сложно.
дв mvn -v
Мне на почту переслали заверенный сертификат, в нем корневой, промежуточный, запрос, просто сертификат и приватный.
Что с ними делать, как добавлять?
Куда именно добавлять?
Из того, что тебе прислали, часть - сертификаты, часть - закрытые ключи.
Я бы даже предположил, что это всего 1 закрытый ключ, остальное - открытые ключи (сертификаты) - центра сертификации и какой-то корневой.
"Добавлять" тебе надо твой закрытый ключ.
В джаве отсутствует структура данных - граф, поэтому если нужна структура по которой ты будешь делать, именно что, операции с графами: объединение графов, поиск пути, поиск подграфа - то ищи какую-нибудь либу, которая тебе предоставит такую структуру. Если структура не очень сложная, то можно использовать либо дерево если нужны его методы, либо просто создай объект с ссылками на другие объекты.
С новым годом!
В Спринг, везде пишут про подключение PKCS12.
Но мне пререслали эти сертификаты, не указав вообще ничего(а тот, кто прислал, ничего не знает).
Их можно упаковать, например, через консоль в PKCS12?
А, да, похоже, можно, что-то затупил.
Если решишь закрыть сырцы и продавать софт - укажешь в использованных.
Это не спидозный жпл который требует открытия при использовании
Бамп. Для долбоебов - вопрос не про то, как сделать граф в яве, а как сделать стейт машину с распространением на соседние узлы.
Есть спринг бут с настроенным подключением к бд, юзающий хибернейт
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
Как я понимаю, все подключения с БД завязаны на сущностях, но мне нужно сделать String запрос и вернуть String.
Я не пробовал все методы EM, но, вангую, что они завязаны на сущностях.
Как в рамках всего этого сделать простой запрос, возвращающий String?
На сколько плохо использовать стандартные методы Java и, выходит, плодить подключения к БД?
> Для каждой таблицы создавать сущность не рационально
почему? ответь развернуто и будет понятно решение.
можешь делать рекусривно, вызывая методы обновления соседних узлов в самих узлах, либо через какой-нибудь визитор/обсервер, если хочешь делать логику вне классов узлов графа.
Потому что данные из них получаются в одном месте и по факту это просто строки.
Для сущности надо как минимум завести модель(не используя сервис и репозиторий/дао), получается, у меня будет несколько классов-сущностей, содержащих одно поле String и использующихся в одном месте программы. Мне кажется, это лишнее.
Да, они используются только для получения.
Т.е. таблицы одинаковы? Тогда тебе нужно
1) использовать один абстрактный класс с аннотацией @MappedSuperclass и наследовать сущности от него указывая только через аннотацию @Table название таблицы
2) Если не хочешь плодить много классов-пустышек и не нужно делать джойнов между таблицами то тогда тебе нужно разделить маппинги в каждую таблицу через persistence unit, в этом случае нужен будет только один класс сущности на всё.
3) если нужно только читать данные то можно вьюху создать
Блин чувак ты не говоришь как ты сделал граф. Но при этом хочешь решения какого то. Мне угадывать как ты данные хранишь? Ну предположу что кастомным классом нод и ребер. Значит к тебя в ноде должны хранится ребра. Какие тогда вопросы по обновлению всех связных нод могут быть.
так что долбоеб тут только ты
хз)
Вроде годные советы, буду гуглить.
Там есть разные данные, в частности, мне надо создавать запросы вроде
SELECT Name FROM worker
WHERE WORKER_ID ==
(SELECT WORKER_ID FROM job
WHERE job.reg == "2020.03.21.12.23");
Но вернуть мне надо всегда одно поле String, хотя могут быть другие разные поля.
Здесь reg будет везде одинаково называться и будет одного типа, но будет в разных таблицах.
(я сейчас бухой, не очень соображаю)
В общем, вторая часть запроса тоже содержит таблицы, сущности которых не хочется создавать, но название нужного поля у них одинаковое.
Не очень разбираюсь, но это то, что выводит хибер с флагом "show sql"? Не могу их написать, потому что не создавал сущности, по другому не знаю, как получить. Может потом пойму, когда отрезвею.
Про первое понял
https://en.wikibooks.org/wiki/Java_Persistence/Inheritance#Table_Per_Class_Inheritance
А про второе не совсем, смысл в том, чтобы в запросе указывать имя юнита и замапать несколько юнитов на один класс?
Если так, то тоже решение проблемы, спасибо.
Вроде нашел, что он на EM вешается, буду пытаться собрать вместе.
Что в Котлине кроме андроида и сахара есть, чтобы чисто для себя? Андроид не интересен, в принципе.
А ты понимаешь, вообще, откуда этот Котлин взялся, и для чего был сделан?
Узнай, и узнаешь ответ на свой вопрос.
Андроид тут ни при чём вообще.
Понять, надо тебе это или нет, можно открыв хорошую книжку по Котлину. Например, The Joy of Kotlin.
И это зависит от тебя. Если фп тебе не интересно, сахар не интересен, то тебе это не надо, скорее всего.
Какого ответа ты ждёшь?
"Не стоит, каждый двачер сосачер всё это всасывает с молоком матери" или что?
Я не читал, прекрасно себя чувствую.
по сути любой язык - синтаксический сахар в моем понимании честно сказать, уже дофига одинаковых инструментов для одинаковых задач существует, но хорошими для этих задач языки делают именно их синтаксические фичи, так вот. статическая и динамическая типизация тоже в целом-то просто синтаксический сахар, можно сказать, ведь в статике можно и на питончике писать если хочешь захотеть.
ток без шейминга за эти слова плиз, знаю, вам вряд ли они понравятся
Можно, но это не очень удобно. Поэтому либо делают джинерик на уровне класса, либо если делают на уровне метода то добавляю в входные параметры этот класс T что бы джава сама в рантайме подставила джинертк
читала около трети или около того, прикольная книга, если ты только начинаешь и уже имеешь какие-то представления о ооп. в моем случае там были изложены мои же мысли, но более структурированно и понятно.
Ты употребляешь термины, смысла которых не понимаешь.
читать нужно все
Да мне бы научиться чему-то новому. Просто буду потом делать.
Quantitative Developer
из наемных технарей выше никто не получает
больше - только люди имеющие долю в бизнесе
Пример высосанный из пальца:
class Foo {
interface A{};
interface B extends A{};
interface C extends A{};
class BImpl implements B {}
class CImpl implements C {}
static <T extends A> List<T> createArray(){
return new ArrayList<T>();
}
static <T extends A> void print(List<T> list){
System.out.println(list);
}
public static void main(String[] args) {
print(Foo.<BImpl>createArray());
print(Foo.<CImpl>createArray());
}
}
Почему опять? Ты кто?
На коболе нельзя сделать ничего, что можно сделать на Великом Котлине, на фоне которого кобол теряет свою тьюринг-полноту.
Или это совершенно другая хуйня и там другие правила?
Да, достаточно.
Да
На стажировке мы писали на обычном спринге - использовали JUnit 4(в процессе перешли на 5) + assertJ, контроллеры тестили через mockMvc. В выпускном проекте я не стал ничего сильно менять и воспользовался тем-же набором для тестов.
Spock
TESTNG
Если ты про реестр, то я ведь избавлюсь только от кучи зависимостей. Код в контроллерах все равно будет идентичен же.
А, вот как. Понял, спасибо.
круд фигня на спринге и как тестовое задание рекоммендовательная система с эластиком
Социальная сеть.
>>899193
Несколько простых страничек на хтмл без жс, можно регистрироваться, можно добавлять в друзья и писать личные сообщения (конференций не было), можно создавать паблики и постить в них что-нибудь (подписаться нельзя, но просматривать могут все). Mysql, thymeleaf, spring (boot, mvc, security, data jpa).
круд фигня - проект с хайперскилла. литералли одна сущность с одним репозиторием и парой эндпоинтов. так же basic http auth было прикручено.
рекоммендовательная система выдавала рекоммендации к статье. были статьи, кидаешь запрос на эндпоинт с ее айдишником и тебе по статье с этим айдишником выдаются статьи лучше всего подходящие по содержанию.
так там по сути и есть говно, абсолютно нулевая хуйня. примеров таких проектов дохуя. а рекоммендовательную систему я вообще у индуса спиздила.
Это и есть говно, лол. Когда приходишь на работу и видишь реальный проект на 500К строк, свой проект начинает казаться нелепым. Поработаешь сколько-то и уже можешь такие пет-проекты писать хоть за несколько часов.
Асечку?
Ну и зачем ты второй раз написал хуйню? Причем тут вообще бины, конфиги? Тебе уже пример с интерфейсом показали.
Пошёл нахуй.
Это не у спринга, а у кора - Reflection API,
но ты туда не лезь - убьет нахуй. Это вообще нарушение ООП так обращаться, нарушение DDD точно.
Если тебе нужна общая логика у реализаций интерфейса - используй default методы или реализуй абстрактный класс.
Я ебашу только геттеры
@
Все работает
Я знаю, что это рефлексия. Но у спринга наверняка уже есть готовая реализация таких штук для доступа к полям и методам.
Держи в курсе.
Может без Entity тоже сработает?
Спринг использует класс ReflectionUtils + Reflection API. Глянь там утилитный класс там много чего есть и поиск методов и.т.д. Или я опять вопрос не понял?
Ты салатик уже доел?
Дождёмся треда имени Covid-20, блять.
java.lang.IllegalStateException: No PlatformTransactionManager set
Если была бы несовместимость версий, были бы другие исключения, а тут просто не инжектится/не создается бин.
Кроме PlatformTransactionManager все работает
@SpringBootApplication должен автоматически определять этот бин, вроде как.
@Autowired висит
Хуй знает, на каком-то сайте скопировал.
Бля, все.
При чём тут ООП и ДДД?
Рефлекшн - это инструмент, и ты либо умеешь, либо не умеешь им прользоваться.
Но, да, если это не библиотечный код, то надо десять раз подумать, прежде чем использовать рефлекшн.
> то надо десять раз подумать, прежде чем использовать рефлекшн.
хуле тут думать, рефлекшн используется везде. в любой более-менее серьезной либе есть ReflectionUtil или его аналог. как работать с аннотациями без рефлекшена? макароны типа >>896038
с помощью рефлекшена превращаются в пять строчек кода. при помощи рефлекшена можно свой дсл замутить, можно писать тесты которые тестируют объекты вдоль и поперек. дохуя всего можно короче. и он очень сильно упрощает жизнь. думать нужно только над тем чтобы достаточное количество тестов написать чтобы переименование поля в классе не сломало его вызов в какой-нибудь строке.
Не согласен с тобой, рефлексию используют крайне редко и там где нет возможности сделать по другому. Она необходима это факт, но её использования лучше избегать, если её можно заменить. Либо использовать уже готовые фреймворки.
> как работать с аннотациями без рефлекшена?
АОП вообще не очень хорошая парадигма. без рефлексии аоп было бы не возможно, но ведь даже там оно используется только для скана, а дальше обычно решают проблему либо прокси объектами либо дописывают код в скомпиленные классы.
> можно писать тесты которые тестируют объекты вдоль и поперек
ты это про моки написал? или ты предлагаешь рефлекшн апи использовать в тестах?
> АОП вообще не очень хорошая парадигма.
аннотации по сути позволяют сделать декларативный код, это охуенная парадигма. спринг двумя аннотациями делает то что в чистом коде занимало бы десяток классов и создавало бы пиздец в иерархии из кучи интерфейсов. что тебе мешает в своих проектах делать так же?
это вопрос кстати чисто инерции мышления. восьмая жава привнесла лямбды которые сильно сократили объем кода. но для этого потребовалось куче народа научиться думать в функцональном стиле. но аннотации спсобны сделать не меньше. обычный жабакрок рассматриват аннотации как замену xml-конфигам, хотя это полная хуйня по сравнению с тем потенциалом что в них заложены.
> рефлексию используют крайне редко и там где нет возможности сделать по другому.
возьми любую большую библиотеку - без рефлексии она была бы невозможна. фишка рефлексии в том что она очень сильно сокращает код (но делает его хрупким), и местами это сокращение составляет не "в два-три раза", а в двести-триста раз, и совершенно глупо этим не пользоваться.
> или ты предлагаешь рефлекшн апи использовать в тестах?
а то как же. рефлекшн в тестах просто манна небесная. те же самые моки без рефлекшна были бы невозможны. рефлекшн позволяет массово тестировать бины, рефлекшн позволяет писать тесты под стайлгайды, тестировать соблюдение конвенции наименований классов полей и переменных, рефлекшн даже позволяет тестировать наличие тестов.
вообще рефлекшн - это киллер фича жабы, хотя сейчас это почти никто не осознает.
ни спринг, ни хибер, ни какое jee не были бы возможны без рефлекшна.
>хотя сейчас это почти никто не осознает.
В смысле?
Никто на этой борде, или что?
Потому, что все нормальные девелоперы осознают, активно используют, и не рефлексируют лол по этому поводу.
> В смысле?
ну сейчас когда полмира пишет на жабе рефлексировать по поводу того почему она выстрелила а не руби, оберон, смалталк или тикль особо повода нет.
Короче сам разобрался, надо создавать supplier, который возвращает EmitterProcessor. Какие-то костыли ебаные блядь, ебанина функциональная. С @StreamListener и @SendTo был нормальный человеческий подход.
Я согласен с тобой в очень многих твоих высказываниях, но в некоторых моментах я против а именно:
> что тебе мешает в своих проектах делать так же?
1. Давай сразу условимся AspectJ мертв, я пытался его поставить год назад он требует толи 6 толи 8 джаву качал с m2 последнюю версию, может он переехал куда-то по факту говоря аоп мы говорим про Spring AOP.
2. Из первого пункта мы можем работать только с объектами управляемые спрингом, да мы все ещё можем встраивать обработчики, но это значительно усложняет работу в этой области.
3. АОП плох тем, что дебажить его практически не возможно если ты только сам его не писал, поэтому тот случае который ты привел это разработка фреймворка, в этом контексте, это уместно, но большинство проектов это бизнес задачи и туда тащить АОП это смерть.
> возьми любую большую библиотеку - без рефлексии она была бы невозможна
Опять же для разработки библиотек это необходимая вещь, без неё никак, но не для обычных проектов.
> она очень сильно сокращает код (но делает его хрупким)
Что ты имеешь в виду?
> те же самые моки без рефлекшна были бы невозможны
я поэтому и спросил, что ты имеешь ввиду: реализацию через моки или прям использование рефлексии, но похоже и то и то. Я честно говоря не сторонник рефлексии в тестахкроме моков потому-что по-моему мнению у класса должен быть публичный контракт и то какими методами он его достигает меня волновать не должно TDD в числом виде. Поэтому тут скорее в другом вопрос тебе зачем приватные методы тестировать? Или зачем проверять приватные переменные?
> Что ты имеешь в виду?
ну то и имею - вмето того чтобы писать 1000 строк я пишу 50
пример: мне нужно в базе сохранять историю изменений определнных полей определнных моих классов.
решение - создаешь аннотацию @Trackable (которую ставишь у тех полей бинов которые нужно мониторить) и в абстрактном классе ДАО пишешь в методе save его обработчик. решение тривиально прозрачно и понятно, тестируется элементарно, тут даже 50 строк нет. а теперь попробуй прикинуть трудоемкость чтобы это реализовать без рефлекшена и аннотаций.
> Поэтому тут скорее в другом вопрос тебе зачем приватные методы тестировать? Или зачем проверять приватные переменные?
потому что суха теория, а древо кода цветет, пахнет и воняет периодически. в реальности тестировать нужно много чего кроме публичного контракта.
ну пример: мне нужно проверить чтобы в базе присутствовал индекс для всех определенных полей моих Entity, коих в проекте скажем сто штук. в классической теории нужно написать 100 тестов в них 100 методов, в которых вручную нужно будет вызвать проверку всех геттеров с определнным полем и проверить что в базе создался индекс для них. и которые нужно вручную обновлять всегда когда ты добавляешь новое поле в класс. понятно что это нереально и всегда будет расхождение между тестами и реальным состоянием таблиц.
а с использованием рефлекшена пишется один класс и в нем один метод (либо один метод в абстрактном классе AbstractEntityTest), который гарантированно проверит все твои бины.
> Или зачем проверять приватные переменные?
почему сразу приватные? Например, можно сделать такой тест - все булевы значения в Entity должны храниться только в виде примитива boolean а не в виде Boolean (который может иметь значение null). и заодно сразу проверить что в базе колонка с констрейтом not_null.
или сделать такой тест - все методы, возвращающие булево значение должны начинаться с is а не get. Казалось бы фигня? Но когда проект большой и над ним работает много человек такие тесты крайне полезны.
или сделать такой тест - допустим у тебя есть абстрактный тест, который проверяет твои классы, ну те же Entity или дао, или другие классы с известным интерфейсом. ну так вот - можно сделать тест, который будет проверять что у тебя присутствует тест для твоего дао и он наследуется от этого абстрактного класса. т.е. если кто-то добавил новую сущность в код то он должен будет сразу и тест написать иначе вообще ничего не соберется. ну и т.д.
> Что ты имеешь в виду?
ну то и имею - вмето того чтобы писать 1000 строк я пишу 50
пример: мне нужно в базе сохранять историю изменений определнных полей определнных моих классов.
решение - создаешь аннотацию @Trackable (которую ставишь у тех полей бинов которые нужно мониторить) и в абстрактном классе ДАО пишешь в методе save его обработчик. решение тривиально прозрачно и понятно, тестируется элементарно, тут даже 50 строк нет. а теперь попробуй прикинуть трудоемкость чтобы это реализовать без рефлекшена и аннотаций.
> Поэтому тут скорее в другом вопрос тебе зачем приватные методы тестировать? Или зачем проверять приватные переменные?
потому что суха теория, а древо кода цветет, пахнет и воняет периодически. в реальности тестировать нужно много чего кроме публичного контракта.
ну пример: мне нужно проверить чтобы в базе присутствовал индекс для всех определенных полей моих Entity, коих в проекте скажем сто штук. в классической теории нужно написать 100 тестов в них 100 методов, в которых вручную нужно будет вызвать проверку всех геттеров с определнным полем и проверить что в базе создался индекс для них. и которые нужно вручную обновлять всегда когда ты добавляешь новое поле в класс. понятно что это нереально и всегда будет расхождение между тестами и реальным состоянием таблиц.
а с использованием рефлекшена пишется один класс и в нем один метод (либо один метод в абстрактном классе AbstractEntityTest), который гарантированно проверит все твои бины.
> Или зачем проверять приватные переменные?
почему сразу приватные? Например, можно сделать такой тест - все булевы значения в Entity должны храниться только в виде примитива boolean а не в виде Boolean (который может иметь значение null). и заодно сразу проверить что в базе колонка с констрейтом not_null.
или сделать такой тест - все методы, возвращающие булево значение должны начинаться с is а не get. Казалось бы фигня? Но когда проект большой и над ним работает много человек такие тесты крайне полезны.
или сделать такой тест - допустим у тебя есть абстрактный тест, который проверяет твои классы, ну те же Entity или дао, или другие классы с известным интерфейсом. ну так вот - можно сделать тест, который будет проверять что у тебя присутствует тест для твоего дао и он наследуется от этого абстрактного класса. т.е. если кто-то добавил новую сущность в код то он должен будет сразу и тест написать иначе вообще ничего не соберется. ну и т.д.
Меньше залётной зелени.
> создаешь аннотацию @Trackable
Блин забыл написать, что пример не про логирование, потому-что это конечно идеальная ситуация для аоп. Рефликсия тут не при чем кстати, ты по итогу когда так сделаешь просто все свои методы обернешь в прокси и перед ними просто будет вызыватся твой обработчик, рефлексии тут нет.
Если я не правильно понял и ты имел в виду в абстрактном классе обрабатывать через проверку, что метод содержит аннотацию, то это можно было сделать через интерфейс маркер, но я думаю ты не об этом.
> для всех определенных полей моих Entity
Все я понял ты говоришь про интеграционные тесты, а не про юнит, вопросов больше не имею, да конечно я бы тоже рефлексию делал, это и быстрее и правильнее для таких тестов.
> все булевы значения в Entity
> все методы, ... должны начинаться с is а не get
Ну это опять же относится к интеграционным тестам, причем даже не интеграционным а типо тестирование политики компании, честно такого не встречал, но имеет место быть.
> историю изменений определнных полей
Понял ты о полях, читал жопой, ну да аоп тут напрашивается. Но это все ещё логирование.
Перед кем выебываетесь, дауничи? Духота.
МВП-тред дальше.
ты ебанушка
лал вот я смарт
>где должна храниться логика?
В сервисе
>на данный момент все в контроллере
плохо
>зачем мне и интерфейс
чтобы описать контракт и иметь возможность использования моков в тестах
>и класс ReviewsService
чтобы не иметь логики в контроллере.
Задача контроллера - описать контракт твоего апи и дернуть нужные методы нужных сервисов, максимум еще как-то провалидировать формат запроса, но это тонкий момент.
спасибо за ответ. Пользуясь случаем:
1. что подразумевается под контрактом?
2. можешь еще подсказать, зачем делать интерфейс сервиса и класс, который имплементирует его методы?
понял + принял + спасибо
Интерфейс нужен затем же, зачем абстрактные фабрики и простыни геттеров-сеттеров в POJO. Просто пиши и не задумывайся, традиция такая.
public class Main {
public static void main(String[] args) {
int count = 0;
for (int i = 0; i < 3; i++){
Scanner in = new Scanner(System.in);
count += in.nextInt();
}
System.out.println(count);
}
}
Нужно два ||, а то будет пайп.
Если я хочу провалидировать тело запроса, мне нужно это делать в отдельном методе или в методе сервиса, в котором я работаю с этим телом?
System.out.println(arr);
как отображать массивы?
Arrays::toString
Молодой человек, вам в мвп ответили
Какие косвенные штуки полезно делать, чтобы лучше кодилось?
- развивать память упражнениями?
- развивать логику задачами/хуячами
- развивать устный счет
Поделитесь, плиз
+ сразу плиз примеры упражнений/техник. Или направьте туда, где искать
Смотря какая там логика валидации.
Если проверить что передали один параметр - checkRequired() прям в методе.
Если у тебя сложная логика, с ветвлением в зависимости от типа запроса, чтение данных из базы и т.п. То выноси в отдельный класс валидатор. Или даже цепочку валидаторов.
В общем надо смотреть по месту.
> на яве под windows
лол
Идея лучше нодискас. Но тяжеловесная, сейчас хайп на Visual Studio Code - он легковесней, есть плагин для java
TyanUtil.findTyan() - пока не реализовали.
я писал в разное время на
Jbuilder
JDeveloper
netbeans
eclipse (RAD)
jidea
видел еще kdevelop, atom - написать программу в три класса сойдет, но не более.
так, вот. идея лучшая иде эвар. незнаю что там у кого тормозит, у меня ничего не тормозит. ставь комьюнити эдишн и разрабатывай.
если бы не было идеи то я бы писал на нетбинсе.
эклипс - это самый пиздец из того что что я видел. там все через жопу. а RAD - это просто филиал ада.
также +100 к удобству дает программирование под линуксами, если есть возможность (т.е. если нет необходимости использовать рутокены и прочую поебень) сразу перекатывайся.
Так, давай ка про тормоза подробнее? И мне не нужен линукс, у меня винда.
Чем именно эклипс плох?
> Чем именно эклипс плох?
всем. хотя одних хоткеев в 4 кнопки будет достаточно, поверь.
> Так, давай ка про тормоза подробнее?
никаких тормозов нет. в папке с идеей лежит файл idea64.exe.vmoptions, отредактируй его дав идее гигов восемь оперативки и все будет летать. также хорошо все свои проекты с кодом и папку с кешами идеи держать на SSD.
мифу про тормоза идеи и быстроте эклипса уже лет 15, и связаны они с тем что идея на свинге а эклипс на SWT который есть расширенное AWT. но ебана, в 2005 еще можно было это всерьез обсуждать но сейчас это просто смешно.
Идея лучше всего, но самая тяжёлая. На бюджетном ноуте её тормоза - вовсе не миф, и пользоваться ей очень больно, если у тебя всего 8 ОЗУ или меньше.
А больше ничего и нет, то импорты надо писать вручную, то кривая интеграция с мавеном. Vs code вообще не юзабелен, какие плагины ни ставь - так и остаётся в лучшем случае продвинутым текстовым редактором, с которым всё равно нужно держать открытыми терминал и файловый менеджер.
Если бы в вижуалке (не vs code) была поддержка джавы, юзал бы её.
Какую пользу принесет мне их изучение?
Почему бы просто не использовать для работы с данными ArrayList и циклы for?
Когда следует применять те знания, которые я получу после изучения?
У меня 8 озу, правда не ноут, а пк с i5-3570. IDEA не тормозила, даже когда была запущена вместе с WebStorm'ом, запущенным angular-сервером (2гб, примерно, при сборке) и docker с БД, в которую каждую секунду писалось от 100 до 1000 значений.
Она действительно тяжелая, открывается дольше (хотя ssd спасает при индексации проекта), но при этом чуть ли не за тебя пишет код.
>В старых версиях JDK конструкция System.out.print() ничего не выводила на экран — за ней должен был следовать вызов System.out.println() или System.out.flush(), который выводил содержимое всего буфера. Теперь данные выводятся на
экран немедленно.
Кто помнит те времена?
Так это вчера было.
Выводила, но когда буфер заполниться.
Ну мне интересно все-таки.
первый раз такое слышу. и вообще похоже на гон.
может и было где-то в альфаверсиях.
но в 1.1 уже такого точно не было.
ну да, вот нашел спеку 1.1
> The autoflushing of PrintStream described on page 199 has been cleaned up. If autoflush is turned on, any newline anywhere in the output causes a flush, as does any write of a byte array. If autoflush is off, no automatic flushing is done.
то есть это баг который был пофиксен еще в 1996 году. пиздец откуда это можно выкопать было.
> Какую пользу принесет мне их изучение?
огромную
> Почему бы просто не использовать для работы с данными ArrayList и циклы for?
ну да, когда у тебя есть только молоток то все вокруг гвоздь. потом мемчики будут рождаться на тему жава тормозная и жрет много памяти.
Потому что когда проект разрастётся дальше интернет-магазина, то на чём ни пиши, архитектура будет сложной. Спринги и хибернейты юзают как раз для больших проектов, а поэтому с самого начала думают, что потом это всё разрастётся, и придётся поддерживать.
А геттеры-сеттеры потому, что нет свойств, а управлять доступом как-то нужно, и тупо делать все поля public недостаточно. Да и дохуя либ, игнорирующих поля и сразу ищущих методы get и set через рефлексию, с этим тоже нужно что-то делать.
Блядь, понятно, в бухгалтерии все перепутали.
руби это такое гламурное пхп. динамическая типизация делает ее не приспособленной ни для чего кроме написания говносайтов и мелких консольных утилит
Ты хуйню написал.
Руби никакого отношения к пыхе не имеет вообще, ни в каком смысле. Это очень разные вещи.
Руби - говно, да.
Но, по совершенно иным причинам.
Программа на руби - это всегда внутренний DSL.
Т.е. ты пишешь не на руби, а на другом языке, написанном поверх руби.
Каждый раз - на другом языке.
И, внутренние DSL - всегда корявые, по определению. И чем он более развесистый - тем более корявый.
И ты каждый раз пишешь на новом корявом языке. Это пиздец.
И полная, абсолютная динамика.
Это красиво на хелловорлдах, но, в большом проекте - это пиздец.
А то, что он тормозной, и то, что там нет современных конструкций (как в современном питоне), и всё прочее - это уже на втором месте.
>>901951
Чувак, твои претензии к джаве - это претензии дилетанта.
Для таких как ты и сделали руби, собственно.
Мои претензии к джаве в том что надо дохуя кода писать, а код этот будет делать просто нихуя. Просто крудик-хуюдик library app написать можно так заебаться со всеми этими аноташками. Я вот раньше работал на php, и был у меня проект на codeigniter. И бля я прям вайбы получаю, прям та же боль как и от него. Пишешь какую-то хуйню.
> Программа на руби - это всегда внутренний DSL.
Ну а чё такого. Это же не полноценный язык, а интуитивно понятная поебень которая "бах и работает".
> динамическая типизация
Ребзь, я вам щас такую хуйню скажу. Только псс, никому. Динамическая типизация - это норм. Рили, никаких проблем от динамической типизации нет. Любые проблемы с типами контрятся ТДД, а в рубе писать не через ТДД будут только ебаклаки. В джаве разве не юзают ТДД?
> ТДД
Писать 100500 тестов тупо ради проверок, который делает компилятор в нормальных языках.
>Любые проблемы с типами контрятся ТДД
Нет. Это просто мантра дурачков.
И, когда я писал "полная динамика - это пиздец" - я _не_ имел в виду динамическую _типизацию_. Но, думаю, тебе сложно будет это понять.
Ну я позырил как выглядят тесты на JUnit, да, я бы их тоже не хотел писать)))
Java не заточена под ТДД просто. В рабби тесты наоборот помогают код писать, делают документацию, описывают спецификацию, и ещё и позволяют защитить код от случайных изменений которые всё проебут.
> Нет. Это просто мантра дурачков.
А ну признайся, пишите тестики хотя бы иногда?
> - я _не_ имел в виду динамическую _типизацию_. Но, думаю, тебе сложно будет это понять.
Там ещё два хуесоса явно про тесты сказали, поэтому воспринял как стандартный заёб про типизацию.
Полная динамика означает, что ты не поймёшь, что делает этот код, и почему, пока не ты _внимательно_ не просмотришь все исходники, до семнадцатого колена. И так - каждый раз.
Джава же - _недвусмысленный_ и однозначный язык, прежде всего.
Ты всегда понимаешь, откуда что берётся.
Нет магии, совсем.
Поэтому, джава - это промышленный стандарт.
Алсо, ты как-то поздновато начал кукарекать за руби.
Ruby hype is over, и поезд ушёл по рельсам.
> Руби никакого отношения к пыхе не имеет вообще, ни в каком смысле.
я не говорю что они похожи я говорю что они взаимозаменяемы и делят одну нишу
Долго
Ты решил сделать битовые поля?
Иногда это оправдано, но, чаще - нет, т.к. работать с ними будет заёбисто.
И лонг - 64 бита. Не думаю, что массив из 3-х енумов займёт меньше восьми байт.
long
Любой массив это заголовок объекта, около 24 байт.
А вообще для ответа на такие вопросы есть https://github.com/openjdk/jol
>что выгоднее: EnumSet.of или Arrays.asList
Это немножко разные вещи, вообще-то.
И разница тут вовсе не в "выгоде".
Хотя, EnumSet будет выгоднее однозначно.
Алсо, зачем ты вообще озаботился расходом памяти?
Попахивает дилетантскими преждевременными оптимизациями.
> Полная динамика означает, что ты не поймёшь, что делает этот код, и почему, пока не ты _внимательно_ не просмотришь все исходники, до семнадцатого колена.
Тесты почитай
> Алсо, ты как-то поздновато начал кукарекать за руби.
Да хуйня это всё двачерская. Просто раньше был хайп что руби щас выебет весь веб с своим MVC, но щас скорее PHP хайп будет. А так руби жив. Ну да, хайпа нет. Но какая разница, работа есть, платят норм, и тд.
> Ruby hype is over, и поезд ушёл по рельсам.
Ну и чё? Мне плакать начать от того что на дваче больше про руби не пишут так яро? У нас в компании руби основной язык, так же пишем на php, node и вот щас сказали что закинут меня на проект на джаве. Вот сижу учу джаву.
После руби обычно в джаваскрипт вкатываются.
В джаве смузихлёбам неуютно.
Они не понимают, что и зачем, и куда делось всё смузи.
И пытаются принести свой устав в чужой монастырь.
Вот, как ты, например.
>После руби обычно в джаваскрипт вкатываются.
Ну так вкатываюсь. Просто node не то чтобы конкурент всяким php/ruby, на нём немного разные проекты пишут.
> В джаве смузихлёбам неуютно.
Еееееесть такое. Действительно что, зачем, куда смузи делись. Сидят тут свои.
> И пытаются принести свой устав в чужой монастырь.
Да я не пытаюсь, я пытаюсь понять чё у вас монастырь такой уебанский. Я всегда считал себя таким прагматиком, который пишет не на любимом хачкеле а на том что эфективно делает свою работу. Если какой-нибудь go хорош для микросервисов, я буду жевать эту байду и делать микросервисы.
А тут меня чёт мобмит с джавы. Куда бля смузи дели, вместо смузи какой-то индийский кофе
Всегда поражался людям, которые яп меняют как перчатки.
На джаве уже сижу 4 года, до сих пор всех тонкостей не знаю и ещё целая телега знаний, которые нужно выучить. Нет я конечно могу и на js и на питоне и на го и на скале че-нить написать, но это будет ctrl+c ctrl+v, сделал и забыл.
> какой-нибудь go хорош для микросервисов, я буду жевать эту байду
Разве, что бы научиться писать на го так, что бы это реально давало выхлоп не нужно потратить несколько лет ну или месяцев работы? И да я знаю, что концепции везде примерно одинаковые, но суть же в том, что везде свои подводные камни.
> Всегда поражался людям, которые яп меняют как перчатки.
А чё тут сложного-то? Слышал анекдот про свинью и курицу? Ну тут как бы так же.
В одном проекте ты знаешь всё и принимаешь архитектурные решения, в другом ты под строгим кодревью ебошиш то что батькам впадлу писать. Концепции такие же, да. Про подводные камни на кодревью скажут. Ну так у нас в конторе принято более-менее.
Проекты-то не супер большие, не всем же ебучий банковский тырпрайз писать.
>ты под строгим кодревью ебошиш то что батькам впадлу писать
Ну если тебя такая позиция устраивает, то конечно все ок. Просто ты ж по сути знаешь все и ничего одновременно. Куда развиваться? Новый яп учить?
Подскажите если кто знает как в IntelliJ врубить хинты в цепочках вызовов, в частности в стримах вроде пикрил. После каждого вызова д.б. серый прямоугольник в котором показывается тип, который крутится в стриме. Знаю, что такая фича есть только в ultimate версии, и как-то она включалась в каком-то меню которое выплывает по какой-то горячей комбинации. Но забыл. Не то чтоб они мне нужны, но то что не могу вспомнить как их включить неимоверно бесит.
> Просто ты ж по сути знаешь все и ничего одновременно.
Ты знаешь один язык, хорошо, и остальное посредственно, чтоб делать мелкие коммиты под присмотром.
> Куда развиваться?
Туда куда рыночек порешает
> Новый яп учить?
В том числе
Это место я и так знаю, и там все включено, но хинтов все равно нет
все, разобрался. вопрос снимается. Там нужно соблюсти форматирование кода такое же как на закладке с настройкой инлэй хинтов. это я в общем-то тоже знаю, но в памяти у меня почему-то отложилось что и так работало.
там как-то по уебански все - надо во всей цепочке расставить по этажам вызовы, а я тестировал только часть выстраивая. спасибо, короче.
Читали что-нибудь из пикрил?
___
На следующей неделе начну работу искать, самое время узнать что-то новое
Почитай лучше "Object Design Style Guide" (есть на scanlibs.com)
Потом - Refactoring Мартина Фаулера (есть там же).
И, в любом случае, читать такие вещи в переводе - зашквар и неуважение к себе. Либо ищи оригинальный русскоязычный контент, либо читай по-английски.
>посмотрю первую книгу
Имей в виду, что там в примерах не джава, а универсальный псевдокод.
Что-то типа гибрида джавы-скалы-тайпскрипта-пыхи.
Но, всё понятно.
Электрон довольно легковесный, на самом деле. Он сжирает константно сколько-то МБ потому что хранит в памяти кусок браузера, но это как бы всё. Это не делает его тормозным. Шустрее него будут разве что Sublime какой-нибудь.
Ну и вим, ясное дело, вне конкуренции.
А ничего, что разница между идеей и vsc - как между каналом и канализацией, примерно?
Алсо, заебали вы все уже, ставьте ssd, и всё будет быстро.
IDEA.
Почему - попробуй и поймёшь. Или можешь поверить на слово.
Писать на Swing.
Читать - гугол.
Вот, например:
https://beginnersbook.com/2015/07/java-swing-tutorial/
Грамоздко получается по моему,его же еще заполнить нужно. Как это можно покрсивше сделать?
Вряд ли, джава вообще лаконичностью не отличается. Примеры со стримом и с сетом - самое лаконичное, что можно придумать.
Верхний пример работает,когда мы создаем новый лист,а можно уже с существующим ?
Можешь вручную обойти свой list внешним и вложенным циклом за О(n^2), искать повторы и удалять. Но изменять коллекцию во время итерации по ней просто так нельзя: https://stackoverflow.com/questions/10431981/remove-elements-from-collection-while-iterating
Если можешь сам наклепать примитивный круд с репозиторием, рестом и юнит-тестами, закоммитить и запушить, то можешь уже работать.
А что сложного?
Он же не написал интеграционные и е2е тесты.
Нетнаписал спринг батч и мессаджинг
Если ты про смысл всей конструкции, которая выделена, то это тернарный оператор, как я понял
Вот почитай
https://javarush.ru/groups/posts/ternarnyj-operator
Да. Если это говно запускаешь еще и под докером- то уже умелый мидл.
А если ты накрутил спринг бут и ЛОМБОК фубля фунахуй, и все это под кубернетесом - то ты уже уверенный синьор и в любой кофейне можешь требовать ванильный раф и смазку для жопы
EclipseLink или Hibernate?
С первым уже работал ранее, но почему-то все топят за hibernate.
Может стоит работать через средства Spring ?
Ранее пока работал со свифтом, там очень годным был Firebase. Но я как понял, его можно адекватно использовать только на андроиде или ios, для десктопного приложения чтобы его прикрутить нужны танцы с бубнами.
Спасибо заранее!
Посмотрел задание.
Сам круд то накидать - хуйня на вечер.
А вот с RSA, pkcs7, подключение по SSL - тут я б завис на несколько дней. Может там конечно все просто, а может и нет.
Да и опять же что значит "посмотреть" документ. Это скачать его прям в браузере открыть? Я ж не ебу какого он формата будет, чтоб какой-нибудь docx открыть надо будет в жаваскриптовых библиотеках ковыряться или еще чего придумывать. Вряд ли там тхт имели ввиду, если уж про криптографию упомянули.
реал
Вы видите копию треда, сохраненную 18 апреля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.