По совету проверенных камрадов начал читать официальную мурзилку по Spring Data. Читаю-читаю, но до сих пор не могу понять.. а как мне это все в psvm запустить? Ну вот есть у меня User, UserRepository и UserService. Как мне затестить UserService?
>>1743265 Спасибо большое! Сейчас буду пробовать запускать.
>Ты спринг кор или спринг бут то уже освоил? Нет же, я думал спринг дата - это автономный фреймворк, которому не нужны прочие спринги. Поэтому и принялся читать по советам анонов сразу после хибернейта.
>>1743282 Мурзилка - это говняк статьи/курсы. "Справочная документация" звучит как-то сложно, поэтому пусть тоже будет мурзилкой.
>>1743308 Его наверное можно и автономно использовать, но лучше поставь себе спринг бут и не еби мозг себе и окружающим. Там гайд по хелловорлду на спрингбуте на 1 страничку. Зато у тебя сразу все заработает без регистрации и смс без конфигов в хмл. Ну и спринг тест заодно подключи - там junit и mockito уже есть.
Как сейчас правильно подключают субд к джаве? Пишу в Exlipse, юзаю MySQL. Может, для этого нужно еще что-то устанавливать, мб мавен(не ебу, если честно)? Хотелось бы изучать способ, который часто используют именно сейчас.
Как изменить имя файла в объекте File (или Path) и отдать его дальше без использования файловой системы?
Пользователь сохраняет файл, я добавляю к имени UUID и сохраняю, а теперь нужно этот файл прочитать и отдать ему с исходным названием, отрезав лишнюю часть с UUID. По гайдам его надо через File или Path копировать или переименовывать, но мне эти файлы на диске не нужны, записывать их в систему/копировать/удалять излишне. Могу конечно в ResponseEntity контролера просто указывать другое имя, но логика не должна утекать из сервиса в контроллер. Это все на спринге само собой.
Как это все реализовать? В голову приходят мысли просто сохранять исходное название отдельно и присылать его вместе с файлом от сервиса контроллеру. Но как то это костыльно выглядит. Должно же быть достаточно элегантное решение. монгу пока не пробовал, возможно она станет решением проблем
>>1743363 Ну и небольшой бонус, пока двощ опять не начали дудосить. Самый ассоциирующийся с бекендом язык у нас по-прежнему PHP, аниме в /pr/ обсуждать в целом не любят, а о работе чаще всего вспоминают пхпшники и макакаскриптеры (искать просто слово "работа" нельзя, ибо оно часто юзается в значении "помогите, почему X не работает").
Сап, пытаюсь начинать хэлоуворлдить на джава. Поясните плес ньюфагу, что происходит под капотом с хэшами объектов, когда с ними оперируют структуры коллекций для совершенствования поиска. Правильно ли я понимаю, что даже разные хэши попадают в один "сегмент" (bucket) пула хэшей (или как оно там может называться, хз, я не нашел где изучить, потому и спрашиваю)? В чем вообще прикол домножения на простое число вроде 31 в процессе переопределния hashCode()? все что мне в голову приходит, это нужно чтоб размазать диапазон значения хэшей пошире, например с 0...10 до 0...310. Но если складывание в бакеты происходит по принципу остатка от деления (хз, так ли это), то там выходит есть какое-то требование, чтоб бакетов было строго не равно числу, используемому при домножении? (иначе домножение просто смысл теряет, все равно все будет "падать" в один и тот же сегмент). Хз, кажется пояснил свои мысли как даун, но может кому-то будет понятно.
>>1743679 >даже разные хэши попадают в один "сегмент" (bucket) Ну конечно попадают, куда им еще деваться, когда домен хешей int, а бакетов всего 16 по дефолту? Взять .hashCode() у объекта это первая стадия, далее хеш приводится к индексу массива (номеру бакета) внутренней функцией hash, которая тоже что-то там гарантирует, типа что не будет больше чем 8 элементов в бакете при нормальных условиях (uniform распеределении хешей). 8 там это такое магическое число, при котором связный список переходит в дерево (нововведение в Java 8).
>>1743726 >когда домен хешей int, а бакетов всего 16 по дефолту ну вот это вот как раз и хотел увидеть достоверно. Потому что во всяких популярных статьях для вкатывальщиков иногда указывается, что назначение всей затеи просто дать возможность "искать не по набору из 100 полей, а только по хэшу". И только если есть коллизия там уже вызвать equals. Если взять это на веру, то быстрее будет даже если бакетов 4g штук, ведь искать все равно надо только во одному значению int.
>>1743755 Идея хеш-таблиц в том чтобы для каждого хеша приведенного к номеру бакета в бакете был только один элемент. Т.е. в идеале - один бакет = один элемент. Причем equals нужно вызывать в любом случае даже если всего один элемент. А любая коллизия это зло. Число бакетов есть capacity таблицы. Начинаем с 16 с загрузкой в 0.75, т.е. при достижении 12 элементов в таблице (даже если они все в одном бакете изза неудачного хешкода) таблица расширяется и элементы перераспределяются (ре-хеш). Операция дорогостоящая, поэтому важно понимать как все работает внутри и какие параметры выставлять в конструкторе.
>>1743726 Так по ссылке вообще ничего нет, кроме ссылки на Блоха, где он и сам просто говорит "так нада". >>1743825 нихрена не понял. так сколько в итоге бакетов? или это в какой-то момент вычисляется, еще и динамически меняется по мере роста хэшмапы?
>>1743876 >Так по ссылке вообще ничего нет, кроме ссылки на Блоха, где он и сам просто говорит "так нада". А чего именно ты ждал? "Так надо" потому что это уже лет 30 назад было протестировано вместе с другими числами, а потом доказано теорией - нечетное простое число, хорошо расширяет базовое число и относительно просто вычисляется (в две операции - сдвиг и вычитание).
>нихрена не понял. так сколько в итоге бакетов? Совершенно верно, они расширяются при необходимости (но не уменьшаются, поэтому нужно пересоздавать хешмапу сли много добавил а потом много удалил - она все равно места много жрать будет поюзанная но пустая). Бакеты находятся в прямой зависимости от количества элементов в коллекции, и как я выше сказал - идеально чтобы одному элементу свой бакет. Дефолтная хешмапа дачинает с 16ю бакетами и лоад фактором в 0.75, т.е. 12 элементов изначально можно добавить безопасно до первого ре-хеша.
Увидел такой говнокод в одном треде. Задача состоит в том чтоб при целочисленной делимости на 3 выводить fizz, на 5 - bazz. Если то и другое - то и то и другое. Такое вопрос: а можно как-то вместо if внутри лямбды "отпараллелить" хз как это нормально сказать стрим и там сделать filter? или такого не бывает? И еще, если запустить три раза такой стрим, но с filter + forEach, то как-то возможно синхронизировать их исполнение, чтобы они по одному элементу пропускали, а потом вставали на задержку, пропуская следующий стрим, и так далее? что-то вроде yield-return в шарпах. как вообще такое решить красиво на стримах?
>>1744212 >Это шляпа какая-то же. Казуальщина какая-то Ну вынеси map в метод. Можно через peek сделать, но это херовый метод, потому что peek может и не вызываться.
господа паграмисты 300к/наносек решил сделать для себя небольшой пет-проект в виде календаря/таск менеджера под андройд.
Реквестирую подходящую литературу по жаба фуфыкс чтобы всё это по человечески реализовать.
Есть небольшие познания в джава уровня основ языка, просто хочу сделать что-то для себя, мотивация есть, а вот с источниками знаний проблемы, посему и создаю данный тред
Почему Eclipse стандартно использует J2SE-1.5 в мавен проекте? (Я сейчас не спрашиваю, как ее поменять, если надо, сам найду). Нагуглил, вроде это версия 2004 года, другое название 5.0. Но я скачивал все последних версий, почему и зачем так?
>>1745267 Хорошо, но мавен у меня тоже последней версии. Кстати, еще вопрос, тот мавен, что в IDE и тот, что я установил в PATH один и тот же? Не пробовал до установки создавать мавен проект.
>>1744396 >>Где файл то хранится? Куда его сохраняют? На жестком диске >>В каком виде собираешься отдавать? Как обычный файл. В том же виде, в котором его загрузили.
В итоге стал передавать как массив байтов, File/Path как я понял это просто ссылка и данных в себе он не несет, а значит его передавать контроллеру бессмысленно. Имя файла хранится в базе данных, и когда нужен файл - достаю файл с диска, перегоняю в массив байтов, массив и название из базы засовываю в дто и отправляю контроллеру, а тот эти байты перегоняет в Resource, прикрепляет название и отдает пользователю. В итоге файл который пользователь скачивает имеет тоже название что и при загрузке на сайт, но на физическом носителе на серваке он хранится под своим уникальным именем вроде f467026a-bbd7-409f-846d-492793c70535.pdf
>>1745314 > Можешь дать пару слов комментариев о ней? Просто я начинал читать хедферст по самой джаве и чуть не блеванул от стилистики книжки. Я не тот чел, но скажу, что хедферст по паттернам на удивление заебись написан. В отличие от говна по джаве
Раньше в джаве все API были постпроены на наследовании. Например, экстендишься от предоставляемого класса, а дальше уже реализуешь свои велосипеды (свинг, сервлеты). А сейчас что? Просто методы дергаем как в процедурном.
>>1745314 Эрих Гамма и Ричард Хелм говорят заебись.
Выбора у тебя не так много - банда четырех по хардкору на плюсах. Хед фест - картинки и комиксы вперемешку с кодом и объяснением. Вроде как еще есть Гранд - Шаблоны проектирования, тож на джава, но его не читал, вроде как что то среднее между 1 и 2.
Вобщем читай хед фест - если потянет блевать хотя конкретно эта книга от ХФ норм, как уже отмечали выше - переключайся на Гранда.
А потом почитай почему половина этих патернов уже стали антипатернами.
>>1745314 > чуть не блеванул от стилистики книжки. есть такое. но справедливости ради, разжевано в ней все достаточно годно. Хоть и подача как для даунов. не сильно-то и блевотнее того же Файна.
Поясните ньюфагу, каким образом вызовы, вроде Thread.sleep(), воздействуют именно на поток, из которого вызваны, если они static в классе Thread? В статическом методе же невозможно получить ссылку на нестатический контекст, в том числе на this. Это какая-то магия, о которой надо не спрашивать, а просто пользоваться, или я идиот, и чего-то не понимаю в static-семантике джавы?
>>1745636 Это всё магия исполняющей среды, в данном случае JVM, статик тут не при чём. Например, когда ты вызываешь метод из какого-то потока, JVM ведь тоже как-то понимает, что запускать его нужно именно в том потоке.
>>1745662 Ну, просто эффект от выполнения чего-то вроде Math.pow(2,2); будет одинаков для любого потока, потому что никакой код не использует контекст вызова. Хотя, безусловно, вызов делается из какого-то потока. Но вызов Thread.sleep() всякий раз имеет результат, зависящий от вызывающего потока. Еще можно было бы понять, если бы потоки имели каждый свой heap, но, насколько я понимаю, треды эксплуатируют все одну кучу своего процесса. Как в одной куче могут быть разные статик-элементы для класса Thread?
>>1745681 В общем случае не одинаков. Среда должна знать, в какой поток возвращать результат, к тому же бывают ThreadLocal-переменные. "Статик-элементы" одни и те же, это сам sleep понимает, какой поток его вызвал.
>>1745662 Олсо, все что в голову приходит, это что имеет место какая-то особенность реализации, что эти классы static только для пользователя, а для исполняющей среды "не совсем static". Только в чем смысл этого? почему не вызывать sleep из под самого треда this.sleep()? чем так было бы хуже?
>>1745321 Это же прекрасно. Всегда знаешь, где, что и чем инициализируется, всегда можно в одном классе юзать несколько апишек. А при наследовании у тебя что-то неявно вызовется и ёбнет, и долго будешь искать, почему у тебя при создании объекта эксепшен. Пришлось как-то дебажить один код с целым деревом абстрактных классов и постоянно прыгать по ним, пытаясь понять, куда дальше пойдёт вызов. Как же я проклинал того, кто это придумал.
>>1745691 Погуглил немного. В целом, ясно. Думаю для вкатывальщика это слегка глубоковато и пока можно не морочиться над такими тонкостями. Спасибо за подсказки.
>>1745459 Чувак "вспылил" в относительно стрессовой ситуации и не осилил условия задачи, хотя в примерах было показано что на входе и что на выходе. Итого, выглядит это как: "Вы мне всё тут распишите досконально, а я уж вам наверчу архитектуру! Да с паттернами! Да с женериками!". А бизнес не волнуют паттерны, его волнуют деньги, которые принесёт автоматизация процессов. И, зачастую, задача инженеров, начиная с senior, а уж тем более staff, понимать и выяснять требования заказчика. И ублажать его, ага. А что поделать.
>>1745686 >this.sleep()? Можно. Ничем не хуже, только писать больше. Конечно есть отличия, гугли если интересно "java 8 wait vs sleep", но для тебя результат будет аналогичен.
Если в soursepath и classpath имеются одинаковые классы, то JDK не компилирует, а использует готовый класс? Тогда скомпилированные bin/ классы будут иметь не полный пакет, и, если, мы, допустим, вынесли некоторые ранее скомпилированные классы в отдельную папку и указали в classpath, то запустить сможем только указав в classpath директорию с этими классами?
Парни, вот смотрите, есть такая штука как Groovy. Там есть много интересных вещей, но, в основном, я вполне могу и без них обходиться. Но ещё со времён питона и его f-строк я никак не могу отделаться от мысли, что это куда удобнее, чем конкатенация. И в груви они есть - GStrings-класс, который делает как раз то, что мне нужно. Могу я как-то использовать этот класс без компилятора груви? Или может есть отдельная библиотека какая-то для такого синтаксиса строчек? Или, там, в недрах Гуавы есть что-то похожее?
Синтаксис списков и for (i in 1...10) тоже конечно очень приятны но без них моя жизнь сильно хуже не станет, учитывая существование стримов.
>>1746506 Обозначить некоторое подмножество английского языка как формальный язык для описания байт-кода. Например: The first byte is two hundred two The second byte is two hundred fifty-four The third byte is one hundred eighty-six The fourth byte is one hundred ninety
Написать тулзу для преобразования в байт-код не составит труда.
Поменял зависимость <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.20</version> </dependency> С 8.0.18 на 8.0.20, запустил компиляцию mvn clean compile, но идея выводит предупреждение "Duplicating managed version 8.0.20 for mysql-connector-java". Что можно прописать, чтобы этого не было?
>>1746990 >>1747031 Я недавно делал проект, где надо было взаимодействовать с каким-то сервисом написанном на петухоне. Приходил массив с цифрами, он мог содержать null, он мог быть null, он мог быть пустым, он мог содержать хуйню вместо цифр, блядь, это такой пиздец всё это говно ловить было.
Джаваны, как с помощью стримов отсортировать какие-то объекты, у которых есть два поля, удовлетворяющих Comparable, сначала по одному полю, а потом по второму, не нарушая первой сортировки. Например <имя шлюхи, размер сисек, цена>: Маша, 2, 1500 Даша, 3, 1500 Вера, 2, 1200 Зина, 4, 500 Корзина, 3, 1200 ___должны отсортироваться так: Вера, 2, 1200 Маша, 2, 1500 Корзина, 3, 1200 Даша, 3, 1500 Зина, 4, 500
>>1747405 удобно оказалось со шлюхами, у них много параметров можно придумать за 10 сек. Олсо, задача конечно не сложная сама по себе. Вопрос скорее правильно должен звучать, как это сделать наиболее кратко, за один проход стрима например
>>1747398 просто напиши компаратор не лямбдой, а создай класс который имплементит интерфейс Comparator в котором переопредели метод compare так, чтобы он сравнивал по двум полям
>>1747425 >>1747428 Ну, про thenComparing компаратора я знаю. Меня скорее интересует это с точки зрения мощности стримов как инструмента. Окей, пусть надо по трем полям это сделать. Можно ли например отсортировать сначала по одному полю, потом как-то собрать куски сортировки в Listы, в каждом из них зародить собственные стримы, не выходя из внешнего, и сортировать уже там, и так далее, а потом как то выйти и все это обратно разобрать в один List. Что-то такое. Учитывая что все там как-то по ебанутому работает, с конца выражения и вот это вот все, мне не хватает понимания их работы чтоб понять можно ли так в принципе
>>1747450 через thenComparing любой осел сделает. ты в шары что ли долбишься, я же написал что интересует не решение само по себе, а возможность так написать цепочку Streamов без потомСравнение
>>1747418 >за один проход стрима например Ты бы хоть почитал про стримы для начала, про промежуточные и терминальные операции, всю эту хуйню. Если коротко и с учётом, что пишу я это в пятницу и в говно, то вот допустим государство локализовало проституцию, и тебе надо посчитать цену любой шлюхи после ндс. Т.е. stream().map( whore -> whohre.getPrice() 1.2).findAny.get() не будет каждый прайс перемножать, перемножится только первый и его же тебе отдаст. >>1747438 >как-то собрать куски сортировки в Listы groupingBy()? >в каждом из них зародить собственные стримы У стримов есть метода parrallel() или как-то так. Если ты хочешь параллельно что-то хуярить. Но это мутная хуйня, вроде у Блоха упоминалось, что для того, чтобы распаралелливание начало приносить профит по производительности надо чтоб число элементов число операций было больше 100к или как-то так. Смысла в этом мало, сейчас мощности процессоров такие, что мозга ебать многопоточностью смысла мало. Всё скорее упрётся в пропускную способность интернет канала и HDD/SSD, чем процессор. Скорее ты будешь SQL запрос оптимизировать, чем распараллеливать что-то.
>>1747490 >Ты бы хоть почитал про стримы для начала, про промежуточные и терминальные операции и так все это знаю и понимаю. >надо посчитать цену любой шлюхи после ндс. збсь пример. правда, простой как 5 коп. и вообще не о том. хз зачем ты его привел. разве чтоб поучаствовать в проекте по энтерпрайзу шлюх. >Но это мутная хуйня Бля, но я бы и не стал тут спрашивать как хэлоуВорлд написать >пишу я это в пятницу и в говно кстати, заметно тем не менее, блаадарю за попытку. я понял что это говно достаточно сложное, чтоб никто на практике не стал это делать
>>1747498 Так а чё ты спрашиваешь тогда, раз понимаешь? thenComparing, тебе выше написали. Жаба там сама всё оптимизирует. Это не тот язык, где надо этим голову ломать. Хуярь бизнеслогику, делай вэлью. Капитализм, счастье, заебись.
>>1747796 ну а как ты хотел? как, блять, может быть одновременно и спизжено, и не крякнуто? я только не понимаю нахуя тебе обновления эти. ты что ли из тех клоунов которые любой софт на своем пк держит в состоянии полного максимума версии?
>>1747814 этот гей мог бы тебя разъебать по фактам, такие двачерки как ты отлетают за одно сообщение плакать в подушку, но я просто сказал тебе, чтобы ты мне не писал
По идее в репозиториях должна быть минимальная круд-логика. А если мне надо описать лютый запрос с джоинами, какой шаблон для этого использовать? Те же репозитории?
>>1748115 Хуйня. Ты на спринговые репозитории из одного интерфейса насмотрелся что ли? Под капотом там такие же лютые запросы через JdbcTemplate или че-то подобное.
>>1743038 (OP) Посоны есть пример вкатывания мидлов/синьоров в джаву с другого бекенд стэке? Это вообще имеет смысл? Хочется сложности, нагрузок и денег.
>>1748117 Но сами-то репозитории предоставляют легковесные методы, типа получить шлюху по имени, получить шлюх по ценам. А если мне надо написать запрос на получение шлюх с сотнями джоинов к другим таблицам, тысячью юнионами и тд. Уместно ли для этого использовать репозитории?
>>1748130 Это означает, что клиентский код не связан с реализацией запросов и бд, а полагается на интерфейс доступа к данным - репозиторий. Почитай фаулера шаблоны корпоративных приложений или мартина чистая архитектура
>>1748125 Спринг дата работает через орм. Запрос ты пишешь к объекту(который @Entity), а не к таблице, а спринг сам решает что к чему он джойнить будет по твоему запросу. Но если хочешь можешь конечно ебануть @Query и ебашить на чистом sql.
>>1748154 >В спринге есть замечательный методв findByExample, почитай про него. У by example много ограничений, и вообще это все боль спрингдаты - пока ты на уровне findByName все прекрасно, а как только понадобится что-то нетривиальное, то даже просто чтобы написать что-то напрямую с jpa, начинаются эти неуклюжие приседания с дополнительными интерфейсами. И начинаешь думать - не проще ли было чистым хибернейтом обойтись.
>>1748421 Чтобы использовать репозитории спринга достаточно создать интерфейс, объявить там пару методов и повесить аннотацию на main класс. Нет, зибернейт не проще. Вообще ничего проще нет.
>>1748429 Ты прежде чем отвечать пытаешься прочитать пост и понять его мысль? Как объявлением метода в интерфейсе сделать условное вон то получитШлюхуПоИмениЕслиИхБатиЛысыеИБратьяБатейМертвы?
Серьезно, сидел думал, пробовал разные решения, рисовал в тетрадке - и все равно так и не смог придумать алгоритм, который бы прошел все тесты. Пришлось подсмотреть решение, а оно оказалось таким простым, что я сейчас сижу в ахуе.
Такую тупость можно как-то исправить решением задач и написанием кода?
Интересует мнение русских реперов по поводу книженции java head first - не слишком старая ?
Юмор, конечно, на любителя, но мне нравиться как все разжевано и как медленно поднимается уровень сложности - в отличии от ебанутых курсов с курсеры и степика с их мастурбацией грейдера, сложностью и подачей материала уровня пикрелейтед хотя может я пропустил годные, посоветуете ?
>>1748441 >java head first - не слишком старая Старая она конечно, но на этом самом начальном уровне оно не критично. Если нет аллергии на этот стиль, вполне годно
>>1748467 Ну я смарт калькулятор сейчас делаю, вот там как раз была эта тема со стеками и очередями. Правда эта задача у меня как дополнительная была, хотел просто потренироваться.
Ребята, помогите пожалуйста Я свежий вкатывальщик, начинаю с Java core Начал с видео follow the white rabbit по джаве на Ютубе Короче, там 34 видео, и я только под конец понял, что походу автор не до конца раскрыл тему кор джавы Опасаюсь, что могу упустить из-за этого важные вещи и пришел с вопросом Джаву кор то по какому ресурсу лучше выучить на приемлимом уровнеперед продвижением далее?
>>1748500 >мурзилку Что за уебанская лексика у нас тут теперь >посмотришь Так смотрел, не видел там такого. Что ожидаемо для концепции by example. И много чего еще не видел, например, запросов вида "вес шлюхи меньше". О чем и толкую.
>>1748529 >запросов вида "вес шлюхи меньше" findByWeightLessThan() Нихуя ты не смотрел, там всё это есть в документации и с примерами. Это невозможно пропустить, это гуглится за 2минуты. Зря я в прошлом треде этот пример со шлюхами придумал, сдаётся мне, теперь в тред набежали их дети.
>>1748536 >findByWeightLessThan Чтобы не удержать в голове контекст беседы аж на два поста глубиной и забыть, что речь о "query by example", это чьим ребенком надо быть, интересно
>>1748537 >почему на нее такой яростный дроч здесь ну там вроде неплохо написано про джава кор. практикуясь и читая отдельные главы оттуда можно неплохо подучить кор. на русском есть, правда забыл как называется, в шапке есть название на английском
>>1748541 Про findByExample тебе другой анон написал, мне нечего добавить. Я ответил тебе про запросы уровня БольшеМеньшеЧем. Всё это есть в документации, всё это гуглится. Не понимаю, зачем задавать вопросы, на которые уже 5 лет есть ответы на том же SO. Спринг позволяет полностью отказаться от написания простых (и не очень) CRUD запросов и сосредоточиться на бизнес-логике. Обмазываться навороченными SQL конструкциями надо только во имя оптимизации, когда у тебя база в CH на сотни терабайт.
>>1748547 Да блять, что ж тут все отвечают не на то, о чем написано. Вот смотри, там был анон со своими шлюхами и примером типа поИмениЕслиИхБатиЛысыеИБратьяБатейМертвы. В жизни бывают случаи, когда нужно шлюху найти вот такую и вот сякую либо вот еще такую и может быть такую. И с вот таким братьями и такими сыновьями. Которые еще в отдельных таблицах. Ты согласен, что спрингдатовые волшебныеОченьДлинныеИВитиеватыеМетодыИгнорироватьКейс не очень пригодны для всех возможных сложных случаев? И by example тоже далеко не всегда помогает.
>>1748514 Здоровья тебе и денег Я только после твоего ответа опять полезу шапку И понял, что ебался в глаза и не видел кнопочки с книгами и так далее, там увидел Спасибо большое, продолжу изучение
>>1748553 >еще в отдельных таблицах Да спрингу похуй же, связи указывай и хоть как храни. >не очень пригодны для всех возможных сложных случаев Ясен пень, все случаи он не покрывает. Тот же CH в спринге не поддерживается и запросы приходится руками писать. Но 99% CRUD операций спринг выполнит без проблем. >ИгнорироватьКейс IgnoreCase. Я не понимаю, в чём у тебя проблема с этими методами. Там ничего волшебного нет, те же самые SQL запросы под капотом, просто не надо их писать. Или ты и геттеры/сеттеры сам пишешь, вместо ломбока?
>>1748613 >Да спрингу похуй же, связи указывай Падажжи, и для длинныхВолшебныхМетодов похуй?
>все случаи он не покрывает О, хоть где-то мы согласились. Про 99% CRUD все понятно, но бывает в жизни не только прям круд-круд уровня "юзер редактирует справочник".
>те же самые SQL запросы под капотом ДА ЛАДНО ПРАВДА ЧТО ЛИ. Заметь, кстати, я нигде не пишу о том, что ORM нинунжа и лучше писать SQL. Я об ощущениях от использования именно спрингдаты и о границах применимости ее волшебных интерфейсов.
>в чём у тебя проблема с этими методами Да не то что большие проблемы, но странно не видеть их недостатки и ограничения. Забываем даже если случаи, которые они вообще не покрывают, остается тот факт, что они могут очень быстро разрастись до неприличной совершенно и нечитаемой длины. При чем ведь часто бывает, что простое становится сложным постепенно. Можно начать с понятного findByName, а потом оказаться в ситуации, когда надо добавить очередное условие, и ты либо получаешь уродливую хуйню либо идешь переписывать весь запрос на что-то другое.
>>1748694 >>по пиратству и убыткам от этого? Как ты собираешься убытки считать? Спиратили 10 человек приложуку за 300 баксов - убытки 3к? Ты ж понимаешь что без пиратов ее покупать никто бы не стал все равно?
>>1748704 >https://kotlinlang.org/docs/reference/js-overview.html При всей моей любви к котлину, не могу понять зачем нужен kotlinjs в его текущем виде. Кажется, оно не взлетает точно так же, как все прочие попытки сделать подобное. Вообще сама по себе возможность компилировать js из джавы/котлина дает профит, только если есть много фронтэнда-кода с какой-то самостоятельной инкапсулированной логикой. Может быть для чего-то типа браузерных игр это имеет смысл.
А вот этот типичный js-код, который обновляет dom и дергает бэк, его есть смысл писать на котлине, только если в комплекте будут мощные котлиновые же либы/фреймворки, которые заменят условный реакт. А нет таких, да и не нужны, выходит.
>>1748474 Так и задумано с целью показать вывод в консоли. Если нужен лист то откати два последних шага и там коллект сделай, т.е. вместо >.map(Whore::toString) >.collect(Collectors.joining("\n")); делай >.collect(Collectors.toList());
>>1748654 >бывает в жизни не только прям круд-круд Моё уважение, если ты действительно на таком проекте. А не просто сам себе работу усложняешь. >ORM нинунжа и лучше писать SQL Так спрингдата это и есть же эволюция ORM, не? Сохранение сущностей, без заёбов о том, как в каких таблицах какие связи делать. >неприличной совершенно и нечитаемой длины А SQL запросы при это остаются приличными? Особенно учитываю эту ёбаную разметку, когда помимо самого SQL ещё и слешами всё измазывается при каждом переносе. Дальше, ты сами методы запросов не должен напрямую использовать, их будет использовать сервис. Ну и я не вижу ничего плохого, в том, чтобы смешивать и то и другое. Одни запросы писать на спринг дате, другие на чём-то другом, второе наследуешь от первого или как-то так и вот у тебя уже общий интерфейс. В котором ты хоть как методы можешь назвать.
Дочитал официальную мурзилку по спринг дате. Куда двигаться дальше, камрады? Вообще, я планировал дочитать Блоха, сесть за алгоритмы, паттерны, роберта мартина, а потом уже осваивать веб. Норм?
>>1749268 Стек по умолчанию что-то около 8 мегабайт на современных десктопных ОС. Так что его более чем хватит, если только ты не придумаешь какую-нибудь рекурсию с кучей переменных на каждом фрейме стека
>>1749214 При возврате из метода, все что аллоцировано на стеке удаляется. Вернее указатель стека сдвигается и эта область снова считается свободной для аллокации.
Помогите с идеей. Она почему то не подключает jdbc драйвер видимо. И все время выбрасывает разные ошибки. 1) Если отключаю ручной подсос драйвера в проперти, но оставляю <version>5.1.47</version> то ошибка рисунок1. 2) Если отключаю ручной ручной подсос драйвера, убераю ручной ввод версии драйвера, то ошибка рисунок2. И третий вариант, уже хуй знает когда возникает, проблема в чем то одном. Что это, и как фиксить?
>>1749938 У Мокрософта было куча технологий которые они бросили. Непонятно сколько они будут с .Net Core возиться, не закроют ли завтра. Я в курсе, что там исходники открыты, но без главного мейнтейнера проект сдохнет очень быстро.
>>1750017 Да, но он к тому моменты был практически мертв, уже все перешли на пружину. К тому же EE это только спецификация, реализации там сторонние. Так что это вполне реально поддерживать силами комьюнити.
>>1749938 Почему ты спрашиваешь здесь, а не в точкаНЕТ-треде?
На джаве больше работы, и джава-related технологии проверены временем. Кор же появился недавно, интереса к нему мало, и рекламный лозунг, что он стал кроссплатформенным, очень сомнительный, ибо всё остальное было кроссплатформенным с самого начала. Конкурентных преимуществ у него нет, даже если он реально работает.
Вообще, я пытался как-то потыкать кор на линуксе, мне он показался очень сырым. Поддержка C# в доступных компиляторах сильно отставали от его последних версий + при гуглении сложно понять, что кроссплатформенно, а что только для винды, и узнаёшь это только тогда, когда попытался у себя запустить и пытаешься понять, почему не работает.. С джавой же сразу качаешь хоть последнюю версию JVM и запускаешь без проблем жарник, собранный хоть на винде. Может, у меня руки кривые, и на самом деле проблемы с кором решаются просто, но зачем это нужно, если джава просто работает.
В общем, если бы я ненавидел джаву, я бы скорее в говноланг вкатился, чем в эту поделку.
>>1750068 Не люблю лишний раз туда заходить, но есть такое.
>>1750072 Я не знаток асп.нета, но вряд ли в плане потенциальных возможностей они сильно отличаются. О производительности же в тырпрайзе не особо думают, пока прям не припрёт.
Если я хочу постоянно обновлять какую-то картинку, представленную как bit map, и ловить нажатие клавиш, это реально сделать в браузере? Что для этого можно использовать? Что-то типо мини игры (на самом деле перемещение по Множеству Мандельброта), в десктопе уже сделал.
>>1750050 Комменты читал к видео, по которому ты проект пилишь? Возможно это особенности мускла. С постгрессом таких проблем не было.
>Кто юзает mysql: 1) создаем базу либо через консоль, либо через десктопное проложение - create database sweater 2) в application.properties прописываем: spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/sweater?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
>>1750050 В последних версиях автоимпорт перестал работать, надо принудительно качать
Господа сеньоры, а можно еще один дебиловопрос по стримам: как, в примере со шлюхами конечно же, получить количество РАЗНЫХ вариантов, например, размера сисек, в виде целого. Например для whore1, tits 2, //+ other params whore2, tits 2 whore3, tits 1 whore4, tits 1 whore5, tits 4 ответ 3, потому что есть сиськи №№1,2,4
Я подозреваю что как-то надо запилить reduce, но понять не могу как
>>1750145 >В последних версиях автоимпорт перестал работать Как он может перестать работать? Ты рофлишь так? И у меня не последняя версия 2019.3.3 build on February 11, 2020
>>1750320 годно! если я буквально дрочу на стрим АПИ, везде пытаюсь это пихать, это значит что мне надо перекатываться к функционалопидорам, или это, в целом, нормально?
>>1750347 У вас стримоз, у большинства проходит со временем. Но некоторым приходится переходить на Скалу/Кложуру. Не доводите до этого, хотя бы раз в неделю практикуйте циклы.
Поясните как изучать Спринг? Я пробовал читать квик гайды на спринг.ио, но я не очень понимаю что там происходит, хуяк, хуяк, готово! You need to create the repository that holds user records, as the following и? зачем? как? почему? что это такое? нахуй нужно?
Сап, ролидовые. Посоветуйте годный сквозной курс по Джаве для тех, кто уже умеет хорошо кодить, но на другом языке. Синтаксис понятен, типизация тоже (на фуллтайме пишу на Typescript), структуры данных/ООП знаю и юзаю каждый день. Интересует именно сжатый курс, чтобы быстро освоиться во всяких пакетных менеджерах, подводных камнях создания/запуска проекта (есть IntelliJ Idea, если что), best-practices, чтобы лучше понимать чужой код и не делать в своем распространенных, специфичных именно Джаве ошибок.
Конечная цель - лучше понимать язык, чтобы легче заходили примеры в документации йобы от Apache - Zookeper, Kafka, etc. Добра.
>>1750405 Подход такой, что да, нужно верить в магию.
> и? зачем? как? почему? что это такое? нахуй нужно? При изучении любой новой хуйни всегда замечаешь, что всё слишком взаимосвязано, и, чтобы полностью понять A, надо понять B, а чтобы понять B, надо понять A. Поэтому тупо переписываешь код с туториала, смотришь, что он работает, читаешь объяснения и начинаешь гуглить и экспериментировать.
>>1750433 ЖДБСи же слишком низкоуровневый? Я сам люблю разбираться во всем вплоть до напряжений на полевиках в процессоре, но для кровавого энтерпрайза ОРМ получше будет, не?
>>1750456 Есть хипстерский JdbcTemplate - обёртка над ждбс, у нас в основном он. ОРМ у нас не любят, много неявной магии, и часто, когда кто-то пытается его притащить, это потом выстреливает.
>>1750473 пойду чекну мурзилку по нему. самому надо забахать небольшой проектик демо-характера, пробовать лепить туда целый спринг со всем окологовном как-то кажется странным.
>>1750405 >нахуй нужно? Чтоб время экономить. Написать несколько десятков строк и получить результат, или написать одну строчку, а всё остальное напишет машина. Выбери одно и ты поймёшь нужен ли тебе спринг. Не нужно смотреть на фреймворк как на необходимость. У тебя есть труп шлюхи, тебе надо его закопать? Взял лопату и по-быстрому вырыл яму. А если у тебя Дом-2 по соседству и шлюх тебе отгружают штабелями, ты что будешь под каждую яму копать? Нахуй надо, лучше купить экскаватор. Спринг бесплатный если что. Правда ковшом надо уметь пользоваться, но и выхлоп будет соответствующий же. Далее. Ты ж не ради лулзов учишь жабу, а для работы. И вот как-то так сложилось, что умение использовать "экскаватор" требуется довольно часто. Но не везде, даже по треду посмотри. И на хибернейте, и на JDBC кто-то пишет. Давно хх не смотрел, но помню что были и без спринга вакансии. Т.е. это не прям вот обязательное требование.
>>1750417 Venkat Subramaniam - Functional Programming in Java (The Pragmatic Programmers). Там про стримы норм написано, сам читал когда вкатывался, мне понравилось. Как крутить списки, вот всю эту хуйню. Довольно короткая мне показалась, легко прочитал. Коузен К. - Современный Java. Рецепты программирования. Тоже самое, но поновее и не только про стримы. Есть на русском. Хз что тебе посоветовать даже, Блох Д.- Java. Эффективное программирование, на ум приходит, я читал, но это нихуя не сжатое же. А, во, есть же мурзилка от метанита. Короче не придумаешь!
>>1750431 Зависит от того кто гайды пишет. Вот читаю щас на баелданге регистрейшн флоу и что я вижу? Он мне в примере в страничку хтмла на тимлифе (у меня тоже тимлиф) повтыкал всякой хуйни типа <h1 th:text="#{label.form.title}">form</h1> и ни слова сука не написал что это за ссылка, пришлось отдельно гуглить, что это ссылка на параметр из пропертей из бандла меседжей (короче для интернализаации). Нахуй мне эта интерналиазация тут? А по итогу нихуя же не работает из за этого и не понятно - то ли я криво скопипастил и что то прпустил, то ли автор мудак. Ну и пропустить пару строчек кода в примере, чтоб это даже не компилировалось - тоже норма. С импортами тоже разберешься, там всего по 2-3 аналогичных варианта. Ну а что статик импорты были ты и сам догадался, правда же? хотя конечно это куда лучше, чем слушать очередной гайд на индусском на ютабе.
>>1750544 >баелданг Да, вот меня это тоже поначалу выбешивало, потом привык. Он там пишет так, будто для себя памятку составляет, т.е. самое главное запишу, а всё остальное я итак помню, поэтому пропишу. Как у шизиков в старых учебниках, 2 страницы формул, потом "очевидно, что..." и из этого какой-то вывод на ещё 2 страницы.
>>1750515 Ок, спасибки. Я юзал стримы в Node.js (юзаются например для асинхронного неблокирующего чтения большого файла, чанки которого тут же пихаются в другой стрим, или пихаются в ответ запроса), тут я так понимаю суть та же?
Подскажите плес... Пусть есть класс Whore, а внутри него вложенный нестатический класс Tit. У класса Whore есть list объектов Tit (список титек). Чтоб иметь к нему доступ, есть метод addTit(Tit tit). Я могу добавить титьку так: masha.addTit(masha.new Tit()); Внимание вопрос: Как мне предотвратить возможность такой конструкции: masha.addTit(krissy.new Tit()); короче, как не позволить добавить шлюхе сиську, привязанную к другому инсту. Можно ли для этого просто поменять какие-то модификаторы, или надо пилить какую-то ёба-логику в addTit?
>>1750982 Тут проблема в Whore.this. Нужен владелец - сделай обычный статический класс и поле owner в нем. И дальше уже можно в add() устанавливать нового владельца, а у старого делать remove() и т.д.
А вот эти скрытые ссылки на родительский объект это тяжкое наследие Java 1.2 просто не используй.
>>1750997 Ну, ведь сама идея Inner-class в джава заключается в том что у инстанса такого класса обязательно есть единственный овнер. Зачем пилить велосипеды на эту тему? Или в сообществе считается что эта тема с иннерами в джава плохая сама по себе?
>>1751019 Иннер классы это костыль который сделали чтобы можно было легко создавать листенеры. Нужен был способ лекого создания всяких листенеров, для этого замутили: - внутренние классы, которые через костыльные прокси методы имеют доступ к приватным мемберам друг друга в будущих релизах обещают сделать по нормальному - анонимные классы - замыкание которое по умолчанию захватывает this родителя, чтобы можно было легко вызывать методы родительского класса ты в классе Tits можешь вызвать любой метод Whore без дополнительных усилий
Если использовать это для чего-то еще - то тут есть куча проблем. Самая главная это неочевидность такой связи, одно дело поле owner которое явно присваивается, другое дело Tits.this которое часть компиляторной магии. Плюс это поле нельзя менять. Создание объекта через жопу.
>>1751145 Сейчас бы в 2020 не отличать маркетинговый ход, от реальности. МС всеми силами пытается примоститься в разные комьюнити, чтобы создать образ своего парня.
Как-то можно импортнуть классы, не находящиеся ни в каком пакете? Например в код класса, расположенного в пакете, нужно заимпортить класс, лежащий просто в src. Иначе код просто не видит его.
>>1751152 Реальность состоит в том, что майки поняли что проиграли битву за серверсайд (ну кроме гейдева и интеграций с офис365). Но приняли мудрое решение не копротивляться, а возглавить. Тем более что сейчас деньги в облаках и вебе, а не десктопах. Поэтому и Edge теперь на хромиуме и VS Code на JS, а не .Net Core.
>>1751174 Как же все перемешано, вроде и правильные мысли, вроде и повторил тоже что и я сказал, но в тоже время просрался.
Мне так то срать на си шарп, но его нет в крупных компаниях, потому что раньше он не был опенсорс и кроссплатформенным. Кроме примитивных галлер, никто не держит сервера на винде. Каким местом ты хотел увидеть сишарп вообще там.
>>1751190 В глаза ебешься? Я писал что отсутвие интереса у крупных компаний к .Net - снижает его и у мелких компания и индивидуальных разработчиков. Новые инструменты для разработчиков будут в первую очередь поддерживать стек самой компании. И уже потом энтузиасты допилят поддержку остальных языков. На интервью в FAANG coding chalenge доступен на Яве да Питоне, иногда С++.
Что касается хостинга, то все крупные облачные провайдеры хостят .Net с этим нет проблем.
тут в строке resultField.setText("n 2 = " + String.format("%.2f", n));
на самом деле происходит MyApplication.this.resultField.setText("n 2 = " + String.format("%.2f", n));
Но это за тебя делает компилятор. Это как раз то, про что я писал анонимный класс замыкается на объект предка и дает доступ к приватным данным. там если поля сделать приватными и прошерстить класс рефлексией еще синтетические методы для доступа к полям всплывут
>>1751433 Ну в Котлине это понятно, они не контролируют платформу и не могут добавить нужные вещи в JVM. Но когда сами авторы JVM вместо того, чтобы сделать по уму - костылят компилятором доступы. Это выглядит не очень.
>>1751201 Я учил по Шилдту в основном. Годный автор, только сухой. Издание надо новее. Правда я не професси-анал, тупо могу навелосипедить довольно многое, считаю что знаю кор. Эккеля видел очень уцененного в магазине, брать не стал, хотя хотелось: появилось ощущение что там ультрастарая джава, вроде как еще до 8-ки, когда много чего впилили
>>1751352 А что плохого что анонимный класс, либо иннер-класс, может получать в управление свое окружение, и наоборот? Это же вполне логично, учитывая семантику этих вещей, нет? Если брать тот пример из шлюхокруда, что плохого в том чтоб из сиськи написать Whore.this.doSomething()
>>1751483 Если это внутренний класс и создается внутри метода родительского - то нет никаких проблем. Так например создаются итераторы у листа.
Но в оригинальном шлюхокруде сиськи предполагается создавать все метода шлюхи, а потом еще валидировать чтоб чужую сиську не подсунули. А вот это уже трешь и угар, даже сам синтаксис mashka.new Tits() говорит - не используйте меня!
>>1751617 Это ж двач, скорее у омежек проебётся икапсуляция, начнётся рефлексия, в результате всякие мутные объекты получат доступ к приватным полям, а там уже и до изучения GC на практике недалеко, если ты понимаешь о чём я.
Анон, я чего-то не понимаю. Зачем нужна аннотация CachePut, если с ней метод всё равно всегда выполняется? Разве смысл кэша не в том, чтобы избежать кучи обращений к репозиторию? Или она с общим кэшем сотрудничает просто? Типа, для геттеров - Cacheable, а для сеттеров - CachePut?
>>1751740 CachePut - гарантированно выполняет метод. Например метод который гарантированно перечитает данные из базы. Кто-то пошарил ручками в базе и не сбросил кеши. И тогда пользователь жмет force refresh.
Есть тут синьеры помидоры ? Туплю уже целый день не могу придумать как правильно реализовать задачу.
Вообщем есть абстрактный класс драконов. От него хочу создать еще 3 класса в который будет переопределены несколько методов отвечающих за передвижение. (полет, плавание , хождение) Также у меня есть уже не абстрактные классы dragon1,dragon2,dragonN+ В них тоже должны быть переопределены методы которые отвечают за размер модельки конкретного дракона и его реальные параметры.
Также я хочу создать фабрику которой нужно будет передать builder в котором указан тип создаваемого дракона. Вопрос как лучше это все соединить ? Я не могу использовать интерфейсы по типу IcanFly, IcanSwimm потому что в них не могу переопределить методы движение.
>>1751760 У тебя ООП головного мозга. Студентик небось? В вузах любят такого говна в мозги насовать.
Например >В них тоже должны быть переопределены методы которые отвечают за размер модельки конкретного дракона и его реальные параметры. Делаешь класс Дракон с полями цвет и размер, а не абстрактный класс дракон с подклассами КрасныйМаленькийДракон и СинийБольшойДракон.
>>1751763 Я наверно глупо обьяснил. Я хочу чтобы при помощи билдера я создавал любого дракона. У менять есть моделька и его параметры (урон цвет размер), они не изменяемые , изменяется только тип перемещения (летает плавает ходит)
В конечном результате я хочу получить билдер которому я передаю параметры дракона , а он сам мне создает того который нужен.
>>1751760 Что-то ты дохуя переусложняешь. Начни с простой иерархии без фабрик с билдерами и куч интерфейсов. Лучше зарефакторить потом, как возникнет необходимость.
>>1751765 @FunctionalInterface static interface DragonBuilder { public GragonAbstractClass create(String name, int speed); }
private static DragonBuilder action(int number) { switch (number) { case 1: return Dragon1::new; case 2: return Dragon2::new; case 3: return Dragon3::new; default: return Dragon4::new; } } Чтобы работало нужно, чтобы все наследники GragonAbstractClass имели одинаковые параметры конструкторов (String name, int speed). Мимо другой тупой студент, не проверял, но можешь попробовать
>>1751790 Спасибо конечно, но проблема не в том чтобы работало. А в том чтобы выглядело красиво и работало. Свитч плохая штука в таких делах, представь что у тебя драконов 120.
public class Main { public static void main(String... args) { Dragon denie = DragonBuilder.build(dragonBuilder -> dragonBuilder.dragon(new WhoreDragonMother()) .param(3) .name("Дейнерис"));
ОПЯТЬ ВЕРНУЛАСЬ, НА ЭТОТ РАЗ С МУСОРАМИ И ЗАЯВЛЕНИЕМ ОБ ИЗНОСЕ.
@
МЕНТЫ ПОГРУЗИЛИ В БОБИК, ПОЕХАЛИ ШИТЬ ДЕЛО, ДАЛЬШЕ 2 НЕДЕЛИ ОБЕЗЬЯННИКА И ЭТАПОМ НА ТЮРЬМУ
@
НА ВХОДЕ ПРЕДЛОЖИЛИ ПОЛОТЕНЦЕ УНД ДВА СТУЛА
@
ТЕМ ВРЕМЕНЕМ МУСОРА УЖЕ ПРИДЕЛАЛИ НОГИ ВСЕМУ ИЗЪЯТОМУ В ДОМЕ ИМУЩЕСТВУ, ВКЛЮЧАЯ КАКТУС У ПЕКАРНИ, САМОЙ ПЕКАРНИ, ВСЕЙ МЕБЕЛИ И ДАЖЕ УМУДРИЛИСЬ ТОЛКНУТЬ РАКОВИНУ.
@
НАЧАЛИ ПЕРЕПИСЫВАТЬ ТВОЮ СЫЧЕВАЛЬНЮ НА ИБРАГИМА МАГОМЕТОВИЧА-ОГЛЫ И ЕГО СЕМЬЮ
@
ТЕМ ВРЕМЕНЕМ ПО ТВОЮ ЖОПУ УЖЕ БЕЗ СМАЗКИ И КОНТРАЦЕПЦИИ ГОТОВИТСЯ СИФОЗНО-ГЕПАТИТНЫЙ ЗЕКА
>>1752231 Мне кажется погромирование это не твоё. Если навестись мышкой на красненькое, там тебе прямо английским языком будет написано, что объект с таким именем уже определён и надо его переименовать.
Ребят, помогите плез. Привалила мне задачка напилить сайтец для волонтёрской организации. Бюджета нет, но вы держитесь.
Из контента будут всякие новости об их успехах и статьи как помочь другим и прочая дичь.
Вопрос, где хранить картинки можно бесплатно? Очень хотелось бы aws s3, но каждый год регать акк геморно. Смотрю на фришный план cloudinary, хватит ли его для этой идеи? Я в сервисах для хранения файлов полный ноль. Раньше пришёл на проект и уже что-то есть, все юзают. А тут надо самому найти, да и чтоб денег не надо было, жопа короче. Я уже думаю, мб с гугл драйва можно как-то по конченному вытягивать?
Поясните, когда я вижу на вакансии джуна, требование знать Спринг, это что имеется в виду? И сколько его надо изучать, чтобы знать на джуна? И как его изучать?
Небольшой вопрос по теории. Зачем в JPA такая аннотация, как GeneratedValue? Зачем ему знать, как рассчитывается ключ? Разве генерация первичного ключа - не компетенция самой СУБД?
>>1752244 >это что имеется в виду Это значит ты можешь сделать тестовое. Его не просто так дают, а чтобы проверить. >сколько его надо изучать, чтобы знать на джуна Пару вечеров, если знаешь жабу, и потом пару раз сделать такое тестовое. Ты уже нашёл вакансию - вот осталось только тестовое взять прямо там, у них же. Прям так и напиши хрюше, "дайте тестовое", она тебе на почту его вышлет. >как его изучать Без задней мысли.
>>1752251 Ну даже если так, всё равно ведь сиквенс к ключу привязывается в СУБД? Каким образом тут JPA участвует? Ему же просто надо сущность вставить, а ключ база сама сгенерирует, не?
>>1752272 >Тагир Валеев Загуглил, выдало какой-то доклад с оптимизациями хешкодов. Пиздец, заниматься оптимизацией на жабе, это всё равно, что придти в дорогой итальянский ресторан, заказать лучшее блюдо, а потом закинуть ноги на стол и попросить официанта принести мазика или кетчупа из пятёрочки. А то чёт невкусно нихуя))
>>1751793 >>1751760 Сеньор Миша на связи >Свитч плохая штука в таких делах, представь что у тебя драконов 120 Плохая штука это у тебя на ифах в >>1751770, а 120 кейсов в свиче это нормально (загугли рекомендуемую реализацию html парсера от w3c на конечных автоматах). Другое дело что 120 разных классов драконов - это уже попахивает... Я прочитал твою архитертуру и согласен с комментаторами выше - че-то у тебя переусложнено все, ты точно все хорошо понимаешь? А я вот не понял - классы "dragon1,dragon2,dragonN+" - они от кого наследуются? Они вообще точно наследуются, это точно классы, а не объекты? По описанию характеристик - размер модельки, реальные параметры - эти характеристики вполне могут быть полями и 120 классов здесь не нужно.
И еще: >я хочу создать фабрику которой нужно будет передать builder в котором указан тип создаваемого дракона В фабрику передать билдер? Нахуя тогда нужна фабрика вообще? Это ты так создаешь и конфигуришь абстрактную фабрику или прям в статик-фактори метод ебашишь? Непонятно. Может лучше фабрикой создавать билдер хотя бы? Типа: DragonBuilderFactory.create(SwimmableDragon.class).size(123).name("").build(); Подробнее на пиках. Методы create1 и create2 делают одно и то же, первый чуть проще для понимания и читабельности, второй чуть более универсальный и профессиональный.
>calling .persist() will not automatically set the id value. Your JPA provider will ensure that it is set before the entity is finally written to db. So you are right to assume that the id will be assigned when the transaction is committed. But this is not the only possible case. When you call .flush() the very same will happen.
>Thomas
>Update: Pay attention to Geek's comment, please. -> If GenerationType.Identity is used, the id will not be set by the provider before the entity is written to db. In this case id generation happens during the insert process on db level.
Почему ответ на такой очевидный вопрос приходится выискивать по крупицам. Есть аннотация, пиши в неё, кто генерирует ключ. Нахуя фреймворку эта информация? - прост))
Аноны, раскидайте по понятиям: реактивность, webflux, Kafka, event-based, корутины. Я по отдельности все понимаю, но как все эти термины живут вместе? Вот реактивность - это всякие mono и flux-ы - где там events? Пацаны, кто честный, поясните!
Похоже, я просто не разбираюсь в SQL. Оказывается, секвенсы не привязываются на уровне БД к ключам. Вот зачем аннотация-то. Ну, в своё оправдание могу сказать, что никогда до этого не сохранял из кода сущности с ключами.
>>1752253 >>сколько его надо изучать, чтобы знать на джуна >>Пару вечеров, если знаешь жабу Хуя тут гении сидят, а еще за пару вечеров осилишь ангуляр и кафку?
>>1752244 На самом деле его не так круто надо знать, рили пару вечеров как анон выше писал. Надо понимать зачем этот Spring нужен, что за DI и IOC такие, как конфигурируется и основные аннотации. Почитай по верхам и попиши примерчики. Сможешь ответить на базовые вопросы типа какие скоупы бинов в Спринге и все, велком он боард.
>>1752312 Я бы вкинул пост, как одна тян хаскель за вечер обещала выучить, но у меня нет скрина. Ты ж не знаешь его уровень. Может он опытный жаба синьёр, пару статей прочитает, аннотации запомнит и будет хуярить круды как чумачечий?
>>1752344 >>Есть хороший скан? Есть электронная версия. rutracker.org/forum/ viewtopic.php?t=1748467 Там же был какой то мегапак всех книг по жаве, его ищи сам.
>>1752360 Первая строчка в джавадоке >>Assertion utility class that assists in validating arguments. намекает что ассерт спользуется спрингом для валидации.
>>1752385 > не может же класс работать без имплементации Ты недооцениваешь спринг, он вообще парсит название метода из интерфейса и генерирует SQL-запросы ио нему.
Делал обычную 1500*1500 картинку из множества Мандельброта глубиной 10к с помощью BigDecimal 50 точностью и 100% процессора(на хуевом ноуте правда) 80 ебаных минут. Интересно было бы сравнить тоже самое в C, может быть потом перепишу алгоритм (изначально не хотел писать на C, чтобы дрочить кор). На ЮТ выкладывают ролики с 700кк глубиной/точностью 1e1500, пиздец, хотя у меня подозрение, что там считают на суперкомпьютерах.
>>1752452 Я в свинге никак, что такое класс Picture? Если в 131 строке у тебя в цикле вывод каждого нового пикселя сразу на экран, то могу сказать по опыту десктопных приложений на других языках что это очень затратно. Рисовать надо в памяти, и выводить по фреймам или по строкам хотя бы. Создавать класс Color тоже можно не надо, лучше сырой массив интов. Это статическая картинка вообще или анимация? Если статическая, то даже прорисовка каждого отдельного пиклеля из 1500*1500 это ничто по сравнению с 80 минутами, и выигрыша не получишь. Я просто волнуюсь не перерисовывают ли они там друг друга, т.е. если один пиксель из картинки рисуется только один раз то все ок, а если нет то точно есть пространство для оптимизации.
>>1752462 Взял первый попавшийся класс картинки https://introcs.cs.princeton.edu/java/stdlib/Picture.java.html вроде он не предназначен для постоянной перерисовки. Задумака такая, чтобы можно было перемещаться по множеству, нажимая клавиши на клавиатуре (с даблом неплохо работает даже с этим классом). А с BigDecimal время улетает в небеса, так что прорисовка отдельного пикселя ничто. Не разбирался, как он устроен, но, вроде, там части в Long int хранятся, точность 50 - больше двух переменных нужно из-за этого сильный скачок, возможно, хотя не разбираюсь. Завтра на вопросы отвечу, если будут, сегодня уже спать иду, анонсы.
>>1752470 В ArrayList при создании передавай предполагаемое количество элементов, а то он успевает несколько раз расшириться. Работа с многопоточностью тоже детская: - слишком много потоков, количество потоков делай по ядрам процессора - с тредами не работай, используй экзекуторы - вместо thread.join() могу посоветовать CountDownLatch
>>1752480 >>1752470 Если жесткая именно математика и много создается там объектов, то посмотреть как уменьшить количество создаваемых объектов. Еще можно от чисел с плавающей запятой перейти к целочисленным, тут придется исправлять алгоритм, всякие там ухищрения. Кстати я не знаю как там внутри BigDecimal работает, может там уже по максимуму оптимизировано. И самое главное - разбить код на виртуальные секции и измерять куски кода по времени, смотреть какой метод/цикл выполняется гораздо дольше остальных (бутылочное горлышко) и оптимизировать сперва именно там.
Когда использовать sinchronized-модификаторы у метода, а когда нет, если планируется запускать в многопоточной среде? Если есть сайд-эффекты, то однозначно да, а если есть только переназначения локальных переменных внутри самого метода, нужно ли синхронизировать его вызовы? (идея еще подчеркивает такие переменные чертой снизу)
Есть некий класс который работает с бд и высирает определенную entity, с недавних пор появилась вторая entity и у меня появился выбор: 1)Сделать ещё один класс который делает почти тоже что и первый (с очень маленькими отличиями) для второй entity 2)Сделать так чтобы эти ентити ебаные имплементировали пустой интерфейс без нихуя и переписать "некий класс который работает с бд и высирает определенную entity" так чтобы он высирал этот интерфейс вместо entity. На какой стул сесть?
>>1752754 > копьютер сайнс Смутно представляю, что это, да и похуй в целом. Впервые услышал этот термин здесь, но начал сидеть тут уже после устройства на работу. Если подразумевается информатика на уровне вуза, то да.
> sicp Ни разу не открывал. Это учебник лиспа для новичков в программировании? А прочитанную книжку по хачкилю для не-новичков можно считать?
> алгоритмов Изучал, более того, часто спрашивают на собесах. Но 20 сортировок и 30 деревьев не задрачивал.
>>1752761 Когда какой-то член не используется, есть свой паттерн шрифта в Идее - такой член пишется темно-серым цветом. Подчеркивание делается для полей, которые инициализированы, но после изменены: int someValue = 0; someValue = 5;
>>1752781 > что изучал? Стандартная хуйня - несколько сортировок, обход деревьев, бинарный поиск и т.д. Учится быстро.
> И что спрашивают? И главное, зачем? Могут так и спросить - как работает такая-то популярная сортировка. Или попросить написать её. Это минимальный фильтр, так проверяют, что чел может в алгоритмизацию, а значит, может решать хоть какие-то рабочие задачи. Иногда ещё просят решить задачу, с популярными алгоритмами в целом не связанную, но тоже про алгоритмизацию, в духе "есть двумерный массив, заполненный таким-то способом, нужно оптимально найти такие-то значения". Вот.
>>1752794 >обход деревьев Нас в универе заставили свой класс сбалансированного бинарного дерева писать. Хотя я обычное бинарное дерево с прошлой лабы достаточно быстро переписал в сбалансированное.
>>1752822 Это да, правда, на 1 курсе высирать лабы на 1000 строк кода немного пиздецово для мозга, ахуевающего все это в голове держать за раз. Хотя, может, я просто туповатый.
>>1752837 >На 1 были простейшие лабы на 30 строчек Ох, май. Ты ещё наши контрольные не видел. На препода в конце 2 семестра почти вся группа жаловалась.
>>1752878 У меня вывод дерева в файл дохуя занимает c помощью велосипедов. Еще постоянная ебля с выделением/освобождением памяти, так как писал на C-массивах и указателях. Плюс меню и доп задания. всего 1042 строчки https://pastebin.com/esheTgEw
Релейшены в JPA - мозголом куда хлеще, чем генераторы, с которыми, по сути, все сложности заключались в моих пробелах по части устройства БД. Вот на пикче. Этот маппинг значит, что в таблице vehicle будет создан столбец с айдишником владеющего им patient? И JPA будет привязанные vehicle получать именно по этому столбцу? А в таблице patient ничего не поменяется?
В мавене есть плагин с большим блоком configuration с кучей параметров. Можно его как-то вынести в отдельный проект, и потом переиспользовать в других помах? Или как-то иначе переиспользовать?
Я, конечно, не отрицаю того факта, что я тупой, но как мне такой SQL-запрос написать на QueryDSL?
select * from affiliate_programs ap left join affiliate_programs_statistics aps on ap.id = aps.affiliate_program_id where ap.deleted = false and aps.date between '2020-07-20' and '2020-08-20';
P.S. Там еще перед .from(affiliateProgram) потерялся .distinct()
>>1753254 А вот никак, насколько я знаю. Даже в двух профилях одного помника приходится копипастить. Можно сделать родительский помник и настроить в нём, но если в помнике уже используется другой родительский помник, то облом. Ещё некоторые плагины можно настроить через отдельный properties-файл, но там только ключи-значения, сложную иерархию тегов не вынести.
>>1750239 reduce он для другого, это если тебе с двумя шлюхами надо что-то сделать. Например, запилить всем наибольший размер. А так, вот, без коллекта можно так сделать long countOfSizes = whores.stream() .mapToInt(Whore::getTitsSize) .distinct() .count();
>>1753388 я еблан и там уже посоветовали этот метод. Могу сказать что проверил на списке из 999999 шлюх, посчитав макс\мин\среднее за 1000 подходов для трёх вариантов решения этой задачи. Результаты на скрине, этот метод лучший.
Если уж тут снова про стримы, тоже спрошу: можно ли как-то вычислить функцию между двумя соседними элементами стрима, и аккумулировать где-то сумму результата операции? Например, есть Лист городов, и функция getDist(town1, town2). Как с помощью стрима добыть сумму всех дистанций между последовательными городами?
>>1753624 И как? как вызвать метод не принадлежащий объекту стрима, еще и оперирующий над его двумя членами? У самого Town нет метода getDistToNext и поля nextTown, это было бы полной хуитой с точки зрения архитектуры.
>>1753628 Не слушай его - никак это стримами не сделать, кроме forEachOrdered(). reduce() вообще не так работает, у тебя есть условный ноль, есть бинарная операция и бинарная операция по комбинированию предыдущей операции.
Сап /ja/, выучил я вроде кор вернее прочел 2 тома Хорстмана, теперь хочу написать пет прожект, а что он должен делать и какой он должен быть не знаю, поэтому прошу совета у мудрого анона, пожскажите плиз тему.
>>1753735 > прочел 2 тома Хорстмана Этого вполне достаточно.
> теперь хочу написать пет прожект Интересного на одном коре много не сделать (хотя Stingray42 безуспешно пытается). Потыкай базы и спринг и пили какую-нибудь социалочку.
>>1753787 Хорошая, интересная и сложная идея, но лучше пока торопиться не буду и попробую сторонние вещи > базы и спринг подучить. >на собесе про неё не рассказывай лол, я почему то уверен что 95% айтишников это двачеры или бывшие двачеры
Если у меня страницы рендерятся на стороне сервера это у меня соап чтоле? Можно ли такой апи автоматически документировать, чем то вроде свагера для реста?
>>1753807 > Хорошая, интересная и сложная идея Ну, она довольно популярная. Разве что необычные интересные фишечки придумать.
> лол, я почему то уверен что 95% айтишников это двачеры или бывшие двачеры У меня все коллеги - нормисы лет 30-и. Даже аниме почти никто не смотрит, что там двач.
>>1753809 > Если у меня страницы рендерятся на стороне сервера это у меня соап чтоле? Нет, это разные вещи, это как сравнивать json и html. Соап - это как рест, но подход несколько другой. Рендеринг же - это просто генерация html-нек на сервере, чтобы их было видно в браузере.
>>1753721 >>1753769 Спасибо. Интерес был больше академический, Котлин пока хавал только поверхностно еще захотелось но у меня нет пока перспектив на него в работе, а жаль. В итоге запилил все в обычном fori
>>1753856 Так как мне обозвать свой сервис если я не джейсоны раздаю, а хтмл сгенереный тимлифом отдаю? Это рест или что? Я просто не понимаю как это гуглить. как уже писал, мне нужен свагер, который переварит обычный @Controller
>>1754000 > Это рест или что? Это серверный рендеринг. Так и называется. Но хочешь ты чего-то странного. Как ты собрался документировать контроллеры для вебни? Это не апи. Пользователь не будет лезть в доки и читать, что там хтмл-страница передаёт под капотом. Текст ссылок на сайте - вот и вся документация.
>>1754070 >numbers.zip(numbers.tail).map { n => n._2 - n._1 } reduceLeft (_ + _) И вот как, глядя на это строчку, что-то понять кроме того, что где-то в жопе застрял плюс
>>1754084 Скала это вообще рабочая вещь, или какая-то околоакадемическая хрень? Есть ли смысл вкатываться с Джавы я каких-то целей? Насколько сложно изучить в сравнению с джа?
>>1754099 Если тебе сам язык у функциональщина не нравиться - то не стоит. Работы мало, порог вхождения высокий. Да он позволяет писать код короче и выразительней, но только после нескольких лет обучения. А вначале у тебя будет крайне кривой скала код в стиле джавы. у самого такие проблемы
>>1754113 Особо незачем чтоб в prevBuf присваивать без автобоксинга. Но по сути операций анбоксинга здесь будет больше и лучше оставить сырой стрим микрооптимизации!!.
>>1754117 Так подсказки появляются только когда у тебя по одной операции на строку. И когда у тебя больше кажется трех (настраивается) разных стримов, т.е. для многочисленных операций возвращающих один и тот же стрим тоже не показываются.
>>1754122 >>1754125 Да я эту строчку сговнячил только что на коленке как пример. На самом деле там полно стримов есть, но давно уже пропали подсказки. И как ее не перестраивай по строкам - ничего не появляется. Олсо, раньше такой хинт вылазил и для записанного в одну строку длинного стрима. Олсо, подобное есть в вызове конструктора, когда подсказываются названия аргументов. Эта фича вполне себе работает. А хинты стримов отвалились(
>>1754125 >>1754100 О, я понял что тебе поможет. Два раза Shift -> show method chain hints -> ON А отключаются еще проще: правой кнопкой на них и снять галочку, так что да, это действительно ты что-то нажал и все пропало.
>>1754130 >>1754128 Спасибо, аноны?. Я кажется понял: просто у меня на одном компе комьюнити эдишон, а на другом алтимейт. Я похоже на ультиме это только видел, а здесь и забыл что на попиленной сижу. У попиленной даже таких пунктов не появляется в указанных местах.
>>1754142 Да блин, Миша вообще-то сказал что такое говно не для продакшена, это просто упражнение в стримоёбстве. Так-то задача на обычном цикле решается за три строчки >>1753987 для чего никакой котлин не нужен
>>1754145 >задача на обычном цикле решается за три строчки для чего никакой котлин не нужен Тут есть такой нюанс, что на котлине в функциональном стиле это тоже максимум три строчки, только более удобные, потому что одно выражение, и более понятные, потому что декларативно.
>>1754143 Да, это одна из самых сложных тем. Можно с первого-второго вопроса уже все понять. Зачем нужен volatile? Если он такой хороший, почему бы не ставить его везде? Но я не злой на самом деле, часто приходится "вытягивать" - видно что понимают, но объяснить толком не могут.
>>1754154 Вы мне льстите, уважаемый. Я никогда не сообщал такой информации)
>>1754151 Сеньор в ))). Часто дают беру собеседовать кандидатов. Нет, кстати, не так давно, треда с 16го. Не знаю чому раньше не додумался поискать такой уютный тематический тредик как ваш наш.
>>1754167 >Зачем нужен volatile? В основном для мелких атомарных операций типа x += y, и атомарной записи в лонг и дабл.
>Если он такой хороший, почему бы не ставить его везде? Потому что не обеспечивает достаточную потокобезопасность.. Короче, надо использовать AtomicXXX и не задавать вопросов. Я прошел?
>>1754187 Блин, ну сорян. Частично что-то верно, но я бы прикопался и начал раскапывать. Например, самое первое предложение: >В основном для мелких атомарных операций типа x += y Здесь я удивленно переспрошу считаете ли вы += атомарной операцией. Ну и покатился диалог)
>>1754183 Сложно сказать. Вопросы и там и там задаются одинаковые (но дойти до последних могут не все), а по ответам ты набираешь баллы. Вон анончик выше из двух вопросов ответил где-то на 0.2/2, это приблизительно потому что в реале не блиц "вопрос-ответ", а добивание вопроса полностью, вытягивание наводящими вопросами/примерами. Что ты точно обязательно должен знать это многопоточность, стримы, работа с I/O (и консоль, и файлы, и сеть), что у программ есть stdin/stdout, минимальное устройство JVM - GC + JMM, околоплавающие штуки типа мавена, консольные команды (ключи) на запуск джарника, classpath, указание размера доступной памяти, выбор GC, и даже ключ, который обязан знать каждый джун, который поможет тебе найти чому программа падает с OOM (знаешь?). Я считаю это кор. Потому что тут только джава. Тут мы не затронули ни спринг, ни хибернейт, ни EE.
>>1754167 >Зачем нужен volatile? >Если он такой хороший, почему бы не ставить его везде? В приличных домах уже считается плохим тоном такое спрашивать, слишком избито.
Лучше спросите как сделать лок на двух волатайлах.
Только обязательно добавить многопоточность и стримы, а то оракл почему-то считает что джунам можно этого не знать. Забавно. Ну и вон те штуки околоплавающие которые выше озвучил.
>>1754204 Спасибо, обязательно спрошу, только объясни что ты имеешь ввиду? На ум сразу приходит double-checked locking, но там всего один волатайл, и вряд ли ты так ошибся. Может быть ты имелл ввиду как сделать дедлок? Но тут прямой связи с волатайлами нет.
>>1754203 Все же, джуниора нанимают работать. Потому не обязательно знать, как в точности работают JVM и GC. Да и ключи для запуска жарника никому не нужны (ну, в том плане, что тебе нужно запустить -> идёшь в доку и все делаешь). И уж тем более запариваться с выбором сборщика не задача джуна.
Понимать принципы работы сборщика, в базовом виде, ну, пожалуй да, а остальное все не так важно. Важны стримы, важно понимание работы фреймворка, хотя бы на уровне того, почему тут мы возьмем аннотацию Service, а тут Component, важно знать о том, насколько странно иногда работает хибернейт и помнить про то, что иногда, все же, стоит написать запрос руками и т.д.. Джуна нанимают для работы. Да, он будет спрашивать и учиться на месте, но, все же, в первую очередь он должен уметь расширять кодовую базу, хотя бы на уровне крудов и т.д.
>>1754255 >>1754250 а вот задачки да. Алгоритмические надо бы решать без проблемно. Не на уровне "а уложись брат в столько-то метров и столько-то наносекунд", а, ну, тупо решать и уметь объяснить, почему ты решаешь именно так.
>>1754250 Не, вопрос был про кор, я и написал про кор. Спринг откладывать не нужно, если идешь туда где он используется, а это почти везде. Олимпиадных задачек я не приводил, там все реально нужное и в повседневной работе используемое, разве что I/O сети и файлов не в каждом проекте есть (обычно тут MQ для первого и логгер для второго). Алгоритмические это да, но не олимпиадные (поиск цикла в списке, уникальность числа в массиве, обязательно указать какая сложность это будет).
>>1754255 Почти, но с некоторыми деталями я могу поспорить. >не обязательно знать, как в точности работают JVM и GC У нас обязательно. В точности нет, но в общих чертах да, даже джуну. Могут ли перемещаться объекты в памяти GC'ом? Stack/Heap. Связь значения Object.hashCode() с памятью никакой)). Да это за день учится в худшем случае, вы чо. >Понимать принципы работы сборщика А я не говорил про выбор, основы - да. Отличия мавена от градла, как посмотреть дерево зависимостей, какой смысол в <parent>. Да, именно для работы, но каждый работодатель выбирает лучшего джуна всегда, потому что этих позиций не так много, основные места это мид и сеньор (может быть у вас не так?).
>>1754237 Пасиба! Но я насчитал 3 (три) волатайла чтобы это работало. А ты говорил про два. Это вопрос с двойным дном? Может быть я ошибся, завтра свежим взглядом взгляну. Кстати пока ознакамливался то вспомнил что видел эту статью несколько лет назад, но за неиспользованием забывается.
>>1754255 >ключи для запуска жарника никому не нужны (нужно запустить -> идёшь в доку) Нда, только один момент: на собеседовании уже поздно (или рано, кому как) лезть в доки, а правильный ответ на этот вопрос "здесь и сейчас" показывает что ты реально сам запускал джарники, а не только зеленый треугольничек в IDE тыкал.
>>1754312 Не совсем. Знание команд мавена это безусловно плюс, но это не отвечает на базовый вопрос: кандидат все-таки никогда не запускал джарник вне девелоперской среды.
>>1754318 Да, хотя бы java -jar. Удивлен? Интервьюер не знает твой уровень и пытается понять. Ты прошел первый этап. Далее скорее всего будет вопрос: а что делать если есть библиотечный jar, классы которого используются в основном jar'е?
>>1754325 Ну да, не ответил. Но ведь это показывает твою неопытность, так ведь? И ты ведь пойдешь сейчас гуглить этот вопрос и пытаться запустить самостоятельно если тебе это надо конечно же?
>>1754316 Но я и правда джарник запускал в последний раз год назад, когда певые хелоуворлды писал. А так или варник томкату подложить (через мавен автоматом после сборки, ибо мне лень руками его таскать), или через ембедед томкат спринга - зеленый треугольник. Там же можно и параметры прописать, только мне оно один раз пригодилось. Только я все равно не понимаю, зачем запускать из консоли, если можно запустить из идеи? Джуна то вряд ли допустят до деплоя.
>>1754332 Я-то загуглю, конечно, оказался вопрос с подвохом но следующим же вопросом будет "как упаковать исполняемый джарник, если class файлы разбросаны по папкам разной вложенности" и т.д. На этом очень легко завалить, потому что с современными IDE этих вещей почти не делают, а мозг забывает то, чем не пользуешься. Команды мавена не в счет, их мы пишем и знаем.
>>1754346 >но следующим же вопросом будет Правильно мыслишь) Но тут не "валят", не депрессируй. Тут хотят понять насколько глубоки твои знания, что ты умеешь делать, уже точно делал 100 раз, что не делал, что хотя бы примерно представляешь как делать. Все надо говорить, мысли вслух приветствуются. Поэтому ответы вида "минус-цп-звездочка" и дальше пауза это плохо, рот не должен закрываться, нужно упомянуть что делал так, или не делал но предполагаешь что это заработает потому что точно знаешь что "цп это класспас" а вот дальше не совсем уверен т.к. в последнее время деплоил под томкет. Валят это где-нибудь в яндексе, а в других конторах обычно хотят все-таки взять человека, но всегда есть порог (про яндекс просто много жалоб что он там очень высокий). >как упаковать исполняемый джарник, если class файлы разбросаны Про именно упаковать я никогда не спрашивал, это очень такие детали, а вот то что джарник бывает обычный и executable это да, милое дело, и что хотя бы примерно нужно прописать чтобы получить последний. Тут опять отталкиваются от того что в продакшене надо: запустить джарник из консоли - надо, это запуск бут приложения; собрать исполнимый или библиотечный джарник - надо; собрать руками классфайлы и написать манифест - ну такое...
>>1754345 Допустят без проблем до деплоя на тестовой среде, которых обычно не одна. Расти ты собираешься? Так вообще можно прийти к тому что запускают только девопсы, а программисты даже слов "ps rm cat grep kill" знать не должны. Нужно показывать интерес, показывать реальные скиллы: отмазка томкетом канает, отмазка спринг бута через зеленый треугольник - не канает.
>>1754349 >джарник бывает обычный И можно ли всё-таки запустить такой джарник без пересборки в исполнимый.
>>1754345 >Там же можно и параметры прописать, только мне оно один раз пригодилось Вот это желательно подтянуть, command line arguments испольузется часто и много, даже в бут приложениях с конфигом неподалеку (хотя бы указать где этот конфиг лежит, указать профиль, пароль, всякие другие вещи).
>>1754099 Можно поучить для того, чтобы лучше понимать функциональщину и типы. На работу хуй устроишься, там на полном серьёзе джунами берут джавистов с 5летним опытом.
>>1752480 Переписал таким образом. Уже лучше? Использовал вместо CountDownLatch CyclicBarrier. Но если чисто на код смотреть, не прыгая туда-сюда, не очень понятно, что происходит. В new Processing передаю CyclicBarrier один для всех потоков.
>>1754435 Чему ты удивляешься? Я так и делал. Сначала с такой же ухмылкой думал, что ну никто в 2020 не будет спрашивать методы класса обжект. Или про линкед лист. Или про двоичные деревья. Или про хешмапы. КАЖДЫЙ. ВТОРОЙ. СОБЕС. ЧТО БУДЕТ ЕСЛИ ЗАПИХНУТЬ В МАПУ ЭЛЕМЕНТЫ С НЕПРАВИЛЬНОЙ ФУНКЦИЕЙ ХЕШКОД???!???!? Или про @Component и @Service. Или про кучу и стек. Или HTTP методы. Или отличия 500ых от 400х ошибок. Или разницу IP адреса и MAC адреса. Или про джойны в бд. Ну и конечно, никто не будет давать избитые задачки на нахождение факториала, простых чисел, развороты списков, имплементацию какого-нибудь дефолтного метода или фичи из кор жабы своими руками на бумажке. Эх, с улыбкой вспоминаю этого шизика из одного банка, который меня Optional на листочке попросил имплементировать. На всю жизнь воспоминания, только ради этого стоит по собесам походить, это лучше цирка, анон, я гарантирую. Особенно когда клоун это ты. Я вот уже после второго собеседования выучил наизусть всю избитую хуйню. До сих пор где-то в телефоне лежит файл со шпаргалками про public/protected/private, О-большое для всех структур, транзитивность, рефлексивность, SOLID, полиморфизм, наследование, инкапсуляция...
>>1754275 >может быть у вас не так? Мидлов, конечно, значительно больше. Но, в целом, джунов много, растут быстро. Приходят, уходят. У нас и со стажировками программы есть, так что молодой крови достаточно. В целом, мне сложно сказать, зачем джуну может понадобится большая часть перечисленных теоретических вещей, ну, а если понадобится - загуглит или спросит. Для того наставники и есть.
Адекватен, нормально решает алгоритмические задачи и может написать простенький спринг-бекенд - в принципе, можно начинать работать и подключать к проектам.
ну, опять же, так у нас заведено, всегда может так оказаться, что в какой-то компании джава-бекендеру требуется знать как работают указатели в C++, просто потому что там считают, что это основы без которых нельзя писать программы
>>1754796 "Мурзилка" это значит поверхностно. Тот же метанит, прекрасный пример. Чтобы начать вкатываться хорошо подходит, любой даун осилит. Но дальше всё равно придётся книги читать, мурзилками не отделаешься.
>>1754496 Пожалуй самое главное - есть ли выигрыш в производительности? А так да, эститетически стало намного лучше, но еще есть над чем поработать. Начнем с более простых вещей.
1) Количество ядер можно получить так: Runtime.getRuntime().availableProcessors(). Должно дать 12 в твоем случае, проверь.
2) Цепочка if-else-if страшненькая, наверняка можно переписать хотя бы на свиче (возможно чуть подправив логику)
3) Бесконечный цикл в Processing.run(), отсутствие (видимых на скринах) условий выхода из потоков. Не надо так.
4) >вместо CountDownLatch CyclicBarrier Вот честно не знаю, так то они разные и тут ты немного изменил прежнюю логику, возможно и правда больше подошел CB, но я все еще сомневаюсь. CDL позволил бы не делить на 12 кусочков (processings), а оставить как было - 50, или поиграться с числом дальше, потыкать другие варианты. Т.е. да, задач получается больше чем потоков, это нормально, каждый поток будет выдергивать из очереди задачи пока они не кончатся. Но если в твоем случае можно разделить исходную задачу на подзадачи по количеству потоков возможно так будет даже лучше. Также CDL позволит убрать костыль из п.5
5) > Thread.sleep(20000); // main program run time Это конечно костыль. Здесь ты хочешь остановить главный поток чтоб подождать потоков на экзекуторе. Способа два.
5.1) Ждать завершения экзекутора executorService.shutdown(); // не убивает сразу и НЕ отбрасывает задачи которые уже в очереди executorService.awaitTermination(20, TimeUnit.SECONDS); executorService.shutdownNow(); // отбрасывает задачи в очереди и пытается остановиться чуть более жестко Способ по поведению полностью аналогичный твоему но более правильный: ждем 20 сек, ниче не происходит (экзекутор все еще работает, т.к. условий выхода из потоков нет, внутри Processing.run() бесконечный цикл), прибиваем экзекутор. Кстати в реальной жизни этот алгоритм (с бесконечными потоками) сломан, т.к. shutdownNow() (сюрприз) не может сделать ничего сверхестесственного по убийству потоков, и если они у тебя в коде не завершаются сами или повисли то экзекутор никогда не остановится -> утечка памяти и ресурсов
5.2) CDL Здесь главный поток может легко просто сделать cdl.await() и все, ждем завершения задач. В общем случае это выглядит как то так: int cycles = 0; while (cycles < 10) { CDL cdl = new CDL(12); for (0..11) { executorService.submit(...); } cdl.await(); cycles++; } В данном случае в Processing.run() нет бесконечного цикла, метод будет спроектирован так чтоб рассчитать все и завершиться. Processing объекты можно сделать одноразовыми или переиспользуемыми, не суть. Такой способ (с конечными вычислениями в потоках) более предпочтителен.
>>1754870 Почему вместо доступа к полям через точку все клепают тысячи геттеров-сеттеров? А вот никто не знает, но все пишут, так исторически сложилось. И сделать ничего нельзя - куча либ вообще игнорирует поля и сразу ищет get и set,
>>1754867 Спасибо большое, анон, все учту. >Пожалуй самое главное - есть ли выигрыш в производительности? Засекал на коленках на секундомер, было то же самое, надо что-то более технологичное попробовать.
>>1754870 >>1754876 Вы зеленые чтоли или на полном серьезе? Инкапсуляция же. Да-да, вы можете сказать что теоретически предполагалось использовать в сеттерах логику для валидации, но на практике это не рекомендуется. А я иногда так делаю, мне пох, это удобно. И в геттарах тоже. И потом: иммутабельность. Зеленые конечно не поймут что и для чего, но вот например задача: шлюха, которая должна сама маинтейнить свои сиськи: >class Whore { private List<Tit> tits; } Ну и вот получается что через точечку whore.tits - получаем полный неограниченный доступ на ЗАПИСЬ в сиськи, можем сделать три, пять, ни одной. А если через геттер: >public List<Tit> getTits() { return new ArrayList<Tit>(this.tits); } То вызывающий код не может сделать нам нихуя. Впитывайте, заебали.
>>1754877 Да. Ещё можно юзануть ломбок. который все так ненавидят, для генерации get и set, но их всё равно придётся вызывать самому. Ну или юзать котлин.
>>1754891 >Няш, че такой агрессивный? На самом деле нет, эта экспрессия чтоб лучше усваивали материал. Помогает?)
Конструкторы не помогут полностью, это замена сеттерам. Они помогают с иммутабельностью - полностью исключить сеттеры из класса (боже храни новую аннотацию @ConstructorBinding), но как конструкторы защищят от примера с доступом к листу выше? Только get.
>>1754894 > как конструкторы защищят от примера с доступом к листу выше А это не простой геттер в тонком дата-классе, а бизнес-логика уже пошла. Классический геттер тупо возвращает ту же ссылку, а ты возвращаешь хуйню, наёбывая того, кто вызывает.
>>1754893 >Ну ты и пидор Ниче не могу сказать в свое оправдание, наверное ты прав. Однако, зная проблему, я абузю эти штуки более аккуратно. Например, по контракту мутабельный класс не должен возвращать null. Но юзер не засеттил поле. Я не сеттю поле за него, я возвращаю дефолтный объект. Миллион примеров такого поведения в SDK.
>>1754899 Выше кто-то упомянул тонкие дата-классы? Я не заметил. Классический пускай и возвращает, а геттер в иммутабельном классе не допускает доступа к своим членам. О чем ты споришь? Возвращаешь сырую ссылку -> non-thread-safe класс, со всеми вытекающими, точка. Справедливости ради хочу заметить что лично я не возвращаю новую коллекцию на геттерах, это не разумно, но это классический книжный пример нарушения иммутабельности, алло. Другой пример - присвоить полю переданную ссылку коллекции в конструкторе вместо создания своей собственной.
>>1754870 Потому что с прямым доступом ты можешь захуячить туда абсолютно что угодно, а это может противоречить бизнес-логике. Например в int weightOfWhore ты можешь передать минус 45 кг. Ясное дело, что вес у шлюхи всегда положительный. Через сеттер ты можешь вписать эту проверку и проворачивать на хую тупого юзера каждый раз, когда он пытается что-то такое сделать
Ку, анон. Вот закончил профильную вышку и сижу пока размышляю. Актуально ли в 2к20 мейнить жаву на бэк энде или теперь из основных инструментов на бэке есть более перспективные варианты? Как я понимаю, например, в ведроид уже особо не перекатишься из-за kotlin. Да и как-то дебажить легаси код особо удовольствия не доставляет, а с жавой, по моему зелёному субъективному мнению, придётся по большему счету заниматься именно этим. Но мб это мои розовые очки и всё на самом деле не совсем или далеко не так.
>>1754950 Меня подбешивает, что весь код в идее от него становится красным. Вывод типов проёбывается нахуй, non static method cannot be referenced from a static context и ты сидишь блядь как фувлыжник, смотришь в код, где блядь ты с типами ошибся. Фувлыжно сидишь. Без ломбока я сразу нахожу где ошибка, например. Но вообще, штука очень удобная. Надо её в кор встраивать и пилить полную поддержку везде, тогда будет вообще круто. На другой стороне весов - а нахуй это вообще надо? Есть же alt + insert и ты получаешь тоже самое.
>>1754981 Я когда выбирал, то намеренно шёл на какую-то проверенную хуйню, чтоб она не сдохла КЁМ через полгода, как я вкачусь. Жаба везде, банки, блядь, хуянки, гос.аппарат. Может и сдонет, но я к тому времени уже и сам сдохну. Про легаси - а в чём тут минус? Перед тобой будет огромная куча кода, сиди, изучай, перенимай опыт. Ты молодой, шутливый, а на самом деле, сидеть и править 2 строчки кода раз в день и получать за это стабильную зарплату это не самый плохой вариант, который может с тобой произойти. Сам недавно вкатился, сначала был на какой-то старой хуйне, сделал фичу - через 3 месяца её начали выкатывать, я к тому времени уже и забыл что я делал. Потом поставили на другой проект, с одной стороны это охуенно интересно, когда из сраного голого помника вырастает хуйня на десятки тысяч строк кода, классно работать в связке с фронтом, когда в реальном времени что-то меня приходится, править, обсуждать это всё, смотреть как топ-менеджеры реагируют на говно, что ты высрал. С другой - прибегает ПМ, "вот хуйня от заказчика, к четвергу должна быть готова". А сейчас среда... И дрочишься часов 8, забывая пообедать.
>>1754867 >Бесконечный цикл в Processing.run(), отсутствие (видимых на скринах) условий выхода из потоков. Не надо так. Там с помощью эксепшенов выход из цикла.
>>1754983 но он не становится..? Ты же плагин ставишь вместе с зависимостью. alt+insert, ну, во-первых визуально кода больше становится, во-вторых, ну, например, с аннотацией Data Pojo выглядит просто как набор полей (чем он и является), а все иквалсы, хеши, геттеры и сеттеры обеспечит ломбок, да и билдер самому писать, ну, фу
>>1755108 В райнтайме ничего не происходит, там будет тот же байт-код, будто написал всё сам. При компиляции процессор аннотаций ломбока тупо вставляет определения методов, и дальше они компилируются.
>>1755113 >При компиляции процессор аннотаций ломбока тупо вставляет определения методов, и дальше они компилируются То есть просто в этом же файле дописывает код, правильно?
>>1755120 Нет, исходный файл остаётся как есть. Процессор аннотаций запускается самим компилятором джавы и всё делается в памяти. Считай, что это вроде экстеншена для компилятора.
>>1754275 >Но я насчитал 3 (три) волатайла чтобы это работало. А ты говорил про два. Это вопрос с двойным дном? Нет, это я просчитался. Давно реализовывал - уже успел все забыть.
Делаю рест апи на спринг бут, вопрос такой, мужики,: как лучше возвращать json когда объектом это не очень хорошо делать, к примеру, когда некоторые данные нужно сокрыть, то есть у объекта юзер к примеру нужно сокрыть пассворд при возвращении. Раньше я делал через хешмапы и вручную вставлял в нее все параметры, но, подозреваю, не самый лучший метод, подскажите пожалуйста.
>>1755519 Создать отдельный класс-DTO со структурой, похожей на Entity, но только с полями, предназначеными для клиента, а не с вообще всеми. Каждый раз конвертировать Entity в эту DTO и возвращать клиенту. Просто из соображений безопасности. Хорошо ещё, что ты заметил, что у тебя там поле с паролем, а если бы нет, и задеплоил на прод? Один раз так забудешь - и привет от хацкиров. А если у тебя там ещё какой-нибудь @OneToMany, и передашь ты не только один пароль, а целый список паролей связанных юзеров?
>>1755537 А затем кому-нибудь другому понадобится новая колонка таблице, и он её добавит в Entity, ничего не зная про твои аннотации и думая, что этот объект никогда не передаётся на клиент как у всех нормальных людей.
>>1755526 ну я только учусь, так что какой прод=) а если вот нужно много представлений объекта? или к примеру в случае с PagingAndSortingRepository, он же возвращает Page<Object>, как мне быстро сконвертировать его в Page<ObjectDTO>?
>>1755551 Обычно для этого пишут ещё один конструктор или статик метод, в сложных случаях - сервис-конвертер. Ну и последовательность вызовов сеттеров/других конструкторов внутри. Если нужно преобразовать коллекцию, то со стримами будет удобно: objects.stream(ObjectDTO::new).collect(...)
>>1755546 >добавит в Entity, ничего не зная Решается настройками, при которых передаются только явно отмеченные свойства >у всех нормальных людей Дай угадаю, это те же нормальные люди, у которых каждый класс в коде обязательно продублирован интерфейсом
>>1755559 > Дай угадаю, это те же нормальные люди, у которых каждый класс в коде обязательно продублирован интерфейсом Именно. А также по отдельной сущности на каждый SQL-запрос и по простыне паблик геттеров-сеттеров там, где они не нужны.
>>1755551 >>как мне быстро сконвертировать его в Page<ObjectDTO>? в StringUtils есть метод для мапинга (не помню какой, может так и называется map), но в глубину он не замапит(если у тебя в этом энтити другие энтити и их тоже надо преобразовать), лучше использовать modelmapper/dozer/mapstruct. Ну или свой мапер напиши. Хоть на генериках, хоть тупо статичными методами Utils.convertObjectToDto (если не генерики - то для каждого преобразования придется метод писать)
>>1743107 А смысл в вышке? Например у меня друг учиться в унике и там за 4 года обучения не разу не было Java, только C, C++ и основы веб (html, css и js). И какие по твоему у такого челика преимущества перед парнем который прочитал Шилда и просмотрел кучу лекций по Java, Spring, Hibernate?
>>1755786 >А смысл в вышке? >у меня друг учиться в унике Блять, я не смог удержаться.
Ну а серьезно, уже миллион раз обсуждали: многие работодатели просто требованием это ставят и все. Вот например на пике: загрузить необходимые документы в систему, обязательное поле. И что ты сделаешь? Это же как типа начальная проверка долбоеб ты или нет, по сути ничего не проверяет кроме дисциплины. Но надо. Такие блять правила. Конечно вкатываться можно и без В/О, но только через небольшие конторки - а оно тебе надо - отсекать сразу пласт компаний которые тебя бы потенциально взяли? И потом, в ДС (по слухам) есть для студентов всякие стажировки в луксофтах/кроках.
>>1755799 > есть для студентов всякие стажировки в луксофтах/кроках. А ещё в сберах и втб как минимум. Причём ты реально должен числиться в вузе, и если уже закончил, то на стажировку не берут, лол.
>>1755799 Разве диплома из колледжа будет не достаточно? Мне казалось, что смотрят больше на скиллы. Но в любом случае сам планирую после колледжа идти на вышку заочно, но только потому что хочу свалить из этой страны. А рабочая виза только с вышкой идёт(
>>1755811 >Разве диплома из колледжа будет не достаточно? >рабочая виза только с вышкой идёт( Ну ты сам все сказал. Много где вышка идет как само собой разумеющееся, а на кандидатов без в/о как на недолюдей смотрят, как расизм, натурально. Будет ли достаточно диклома из колледжа или в/о по кулинарии это решает конкретный работодатель, у некоторых требования разнятся, но многие, если не большинство, требуют именно вышку по специальности/околоспециальности (на программера - инженер, физик, математик).
>смотрят больше на скиллы Смотрят в первую очередь на проекты, а скиллы без проектов это такое: долго проверять умеешь или нет, риск брать или вообще начинать возьню с таким кандидатом когда сейчас сразу доступны кандидаты получше.
>>1755816 По новейшим программерским понятиям не рекомендуется каким-либо образом изменять параметры, переданные в метод (добавление в Model/ModelMap), а только возвращать значения (new ModelAndView()). Иногда лень такие контейнеры лепить, или чтоб быстро проверить, тогда изменяешь, а иначе - делаешь как положено.
Максимум что позволяется сделать с параметром переданным в метод - перезаписать полностью, т.е. использовать под свои нужды как буфер, т.к. это переменная на стеке и ее изменение ничем не грозит вызывающему коду.
>>1755945 Есть, но меньше, я же выше написал: твой путь лежит через мелкие конторы, можешь и через крупные тоже, но сразу уточняй что нет вышки и следи за реакцией, а то обидно будет пройти два собеса (HR и техническое), а потом тебя не примут из-за этой вот "мелочи", еще и обидятся что время их потратил. А лучше каждому работодателю это говори как можно раньше, типа "не будет ли это проблемой, уважаемые?" Параллельно учись на заочке, лучше сразу в СШАшной, если англ. позволяет. У нас коллега так делал (не вкат, а заочка американская), и потом туда уехал, но уже после диплома. Только я требований не знаю, может там тоже требуют вышку местную для зачисления. Могу уточнить какой универ если надо.
>>1756113 Это одна из верхних строчек вакансий, которые я получил по запросу "джун жаба" в дс. В среднем в каждом 10ом требуется корка нормальных вузов.
>>1756152 Я смог, сижу на удалёнке теперь, тоже в потолок плюю. Но ещё и зарплата капает. Ты сам для себя выбирай, будешь ли ты пытаться, терпеть насмешки уебанов, каждый раз вытираться, вставать, потом пытаться ещё раз, до тех пор пока не получится или сдашься и упадёшь кверху лапками.
>>1756296 - OkHttp для низкоуровневой работы с запросами (для REST или других выебонов). - Jsoup для парсинга статических страниц. - HtmlUnit для парсинга динамических страниц.
>>1756517 Для удобства. Колонка может быть "student_id_in_this_table_и_ещё_20_слов", а поле просто id. Ты же не всегда имеешь возможность создавать и изменять бд. С JoinColumn там вроде запросов меньше будет или что-то такое. >>1756566 Зумерская хуйня. Пару раз попадал на собеседование общаясь там с лидом напрямую. Иногда там проскакивают вакансии, которых нет на хх. Но в целом хуита для даунов. Как и любой чатик всё скатывается в фажество чуть быстрее, чем сразу.
там можно поспрашивать вопросы по разработке и поискать работу, может кто ищет. Еще по моему опыту хорошо работает пост в линкедине, если его лайкнет много народу.
>>1756605 >>Колонка может быть "student_id_in_this_table_и_ещё_20_слов", а поле просто id Просто я вижу что в ентити 10полей и все называются ровно так, как в @Column(name). Если там будет ебанутое название, то можно прописать руками, но зачем дублировать то что и так очевидно? Это ж как раз таки не удобно и только загромождает код.
>>1756764 Потому что explicit обычно лучше чем implicit - нагляднее, меньше "магии". Но не до абсурда конечно, когда иногда это становится слишком verbose, и начинаются появляться инструменты типа ломбока, генерирующие тебе аксессоры/мутаторы. Это правило везде прослеживается, не только про колонночки. Если что-то явно написано то это можно в случае чего быстро изменить/дописать, не вводя новую сущность. В примере с аннотациями на колонночки при пуше в гит изменений, например, у тебя будет "изменение строки", а не "новая строка", что может тоже влиять на восприятие (семантика коммита будет - изменение, потому что ты именно изменил поле, а не добавил). А еще вот пример лично мой: я ставлю всегда скобки вокруг тела в форах и ифах, даже если там в теле только один стейтмент: то же самое правило - explicit лучше чем implicit - мне так удобнее видеть блок, плюс можно легко в блок дописать новый стейтмент и будет всего одна строка в гите, а не три строки если к одному стейтменту без скобок дописать еще один с добавлением этих скобок.
>>1756827 О, ты вроде что-то понимаешь, расскажи про гит. Я вот хуярю один коммит - один таск. Т.е. мне говорят "почини вот это". Я делаю, и заливаю. Иногда там одна строчка, иногда 20. Или "добавь функционал". И это тоже один коммит, хотя там может быть 2 репозитория, 3 новых сервиса, 5 сущностей и ещё в других классах изменения. Как правильно?
>>1756839 Это тебе должен объяснять твой менеджер проекта. Если ты сам коммитишь в мастер, то разницы нет и ты все делаешь правильно - в первом случае у тебя багфикс, во втором добавление фичи. Добавление фичи можно разделять на несколько коммитов, например ты целую неделю над фичей работаешь и вполне можешь несколько точек успеть создать. Только не пуши коммиты сразу, по одному, чтобы они, из незавершенной фичи, перемежались с другими коммитами других людей. Коммити в отдельную ветку (git checkout -b <branch_name>). А потом по завершении фичи есть два варианта: 1) просто мердж в мастер, тогда параллельная ветка сливается с последним коммитом мастера, "вливается" в него; 2) ребейз (иногда со squash'ем - чтоб всего один коммит получился) - перемещение твоей ветки на топ коммит мастера. Вот как именно вы захотите в своем проекте так и делаете. Обычно финал добавления в мастер - мердж или ребейз - делает специально выделенный человек, предварительно проверив код, а ты просто ветки свои ему пушишь.
>>1756839 >>1756874 Да, еще забыл, если отвечать прям на вопрос "а как мне разделять изменения на коммиты?": главное правило - каждый коммит не должен ничего ломать, т.е. продукт, после очередного коммита должен запускаться и работать, без ошибок компиляции например, даже если типа ничего не добавилось. Объясню на твоем примере: допустим у тебя "2 новых репозитория, 3 новых сервиса, 5 сущностей и ещё в других классах изменения", которые эти все новые классы используют. Т.к. новые классы создаются раньше, чем их использование в других классах, можно их коммитить отдельно. Понедельник: создал энтити и репозиторий, набросал зачатки сервиса, написал тесты, проверил что работают энтити и репо. И в конце дня коммитишь репо и энтити, но не сервис, а т.к. эти классы никто не использует еще, то коммит ничего не ломает. И так всю неделю новые классы хуячишь которые нигде не используются, кроме твоего "грязного" состояния гита, а в пятницу уже коммитишь весь сервис (что само по себе тоже ничего не сломает, ведь он нигде еще не используется), потом коммитишь уже вставку сервиса в другие классы. Аккуратно следишь чтобы не было такого что закоммитил сначала связку, а потом уже новый класс - это плохо.
>>1756874 >>1756883 >главное правило - каждый коммит не должен ничего ломать Ну я так и думал. Спасибо за развёрнутый ответ. Сущности по отдельности хуярить, когда их никто даже не использует ещё, это чёт какая-то хуёвая затея на мой взгляд.
>>1756883 > каждый коммит не должен ничего ломать, т.е. продукт, после очередного коммита должен запускаться и работать, без ошибок компиляции например Эх, вот бы этому ещё всегда следовали.
>>1756900 В смысле? Кто-то действительно так косячит? Меня ебут и за всякие мелочи, вроде нейминга переменных. Если после моего коммита что-то по пизде пойдёт, боюсь я из офиса выйду через окно.
>>1756883 >каждый коммит не должен ничего ломать, т.е. продукт, после очередного коммита должен запускаться и работать, без ошибок компиляции Схуяли? В фича бранче у тебя полная свобода действий, ломай как хочешь.
Если у тебя огромный проект и ты делаешь какой-то рефакторинг который касается всего проекта, то ты просто не сможешь работать так, чтобы каждый коммит ничего не ломал.
>>1756922 Да, действительно, есть такие случаи поймал меня, тоже так делаю. Речь была скорее про публичные ветки, но даже в личных стараюсь придерживаться того правила, однако это не всегда удается.
>>1756892 Я не говорю на каждый класс прям отдельный коммит хуярить, нет, но лично мне нравится разбивать: этап подготовки - коммитим новые классы, этап связки - коммитим использование новых классов в различных местах. Это позволяет в случае чего прыгнуть на этап подготовки и что-то добавить, переписать историю оттуда (разумеется только пока ветка еще локальная).
>>1756919 У нас не ебут, даже иногда бывает, что в мастере некомпилирующийся код. Особого смысла ебать и нет - до релиза времени полно, сотню раз все успеют всё поправить и протестировать.
>>1757038 >Почему хибернейт легаси? Потому что какой-то местный дурачок форсит словосочетание "легаси хибернейт". Вместо того чтобы писать, допустим, "говнохибернейт", раз уж он так ему не нравится.
>>1757064 Смотрит, т.к. пуллреквест делаешь на него. Но в браузере можно что-то и не досмотреть, особенно когда дохуя изменений. Ну, есть давным-давно сломанный плагин для запуска анализатора и предварительной сборки по пуллреквесту, но чёт никто не чинит, всем похуй.
Вопрос к энтерпрайз-рабочим, у вас проверяли военник при устройстве на работу? Только наличие или болезни тоже смотрели? Например если у меня стоит, что я не годен по 18 статье (по дурке), то могут послать нахуй? Особенно интересуют банки.
>>1756827 >>я ставлю всегда скобки вокруг тела в форах и ифах Даже в таком случае? По мне так без скобок не всегда плохо, если это умещается в 1 строку.
if (flag1) { return false; } if (flag2) { return false; }
if (flag1) return false; if (flag2) return false;
Получилось как свич, только без свича. А вот писать в 2 строки без скобок - конечно свинство.
>>1757111 У меня в одном зелёном банке, подозреваю, только наличие смотрели. Не знаю. Они берут твои документы, записывают данные и возвращают, и это уже при непосредственном оформлении уже после всех собесов и согласований, так что вряд ли они пошлют нахуй в самый последний момент.
Налажил 10000 эксепшенов, прежде чем смог подключиться к MySql и сделать простенький запрос. Вот настоящий драйв от программирования, когда вместо красной консоли видишь одну строчку 'Total number of books in the table : 2', зато столько эмоций сразу.
>>1757157 Прописал другой плагин аутентификации Апнул коннектор до совместимой версии с MySql После апа прописал mvn clean package, так как появилась новая ошибка Пришлось прописать версию компилятора mvn Исправил ошибку с временной зоной И запустилось
>>1757168 > временной зоной Мне когда-то пришлось в URL для подключения кроме этого добавить ещё десяток ключей про кодировки, SSL и хуй знает что ещё, хотя у всех в примерах вообще ничего такого не было. Может, с конфигами мускла что-то не так было.
>>1757134 Да, даже в таком случае. Я подозреваю что ты показываешь early-exit - механизм раннего выхода из метода при неудовлетворении каких либо условий или параметров. У меня это обычно выглядит так, см. пикрилы. Я могу в любой момент захуярить там вывод в лог или ассерт, блок всегда к этому готов. Я на автомате уже так пишу: "if () {}", а потом расставляю внутренности. А если в идее то макросами: ifn, fori.
>>1757135 >>1757111 Нну, как раз-таки потом же идет проверка безопасниками, в самом конце, уже когда технари и hr одобрили, так что вполне могут и развернуть.
>>1757227 Мне безопасники разок звонили ещё до подписания документов (забыл кое-что заполнить в анкете), правда, в то время они знали обо мне только родной город, инфу о родственниках, где учился и ещё что-то. Понапроверять они успели бы что угодно - с собеса до выхода на работу у меня прошёл месяц.
>>1757310 Здесь у всех в среднем столько, по крайней мере, кого я спрашивал. Бюрократии много, бесконечные согласования, ожидания исполнений, пока документ дойдёт до самого главного, пока у него найдётся время. Никто никуда не торопится.
>>1757810 >>Откуда пакет javax берется? Зз JRE. Анотацию Id лучше импортировать стандартную(javax), а не спринговую. Вместо Date лучше использовать LocalDate - меньше будет проблем с бд.
>>1757865 Конкретно у меня это настолько обыденный офис, что вместо нас могли бы сидеть 50-летние тёти и заниматься делопроизводством в ворде и экселе. Есть кухня с кофеваркой, есть стол для пинг-понга, пара диванов. Ну и кабинеты, где сидим по 10-15 человек.
>>1752452 Переписал на c++, и там и там на даблах без длинной арифметики. Ни коим образом не научное сравнение, за который сеньер или миддл постучат по головушке. Но все равно потратил пару часов и написал то же самое на с++ и SFML Graphics. Думал, будет быстрее, но вышло в несколько раз медленнее, так что хз, как это трактовать. Логическая часть точно такая же, работа с тредами примитивная, не было желания сейчас вникать в них на с++. Делаешь больше 1 треда - становится быстрее, значит, многопоточность работает(-с). Пикчу рендерил, в ргба, а не ргб из-за особенностей сфмл, но прям такой большой разницы не должно быть. Ебли с синтаксисом больше. Получил обратный эффект от того, что ожидал. Хотя это как сравнивать время, за которое ты пропрыгаешь вокруг стадиона на пружине или проедешь на самокате. Хуйня, но почему бы и нет.
>>1758601 Привет, я тот анон что тебе комментил про улучшения. Объяснить можно тем, что у тебя похоже действительно работа с графикой сжирает больше времени чем вычисления. Тебе надо отделить код вычислений от кода на вывод, а то у тебя там перемешано было все. Грубо говоря надо так:
largeCalculations() можно и нужно распараллеливать, а вывод распараллеливать не надо. В largeCalculations() не должно быть кода на вывод, потоки там не должны знать ничего о SFML или Picture, в идеале они даже в цвета не должны превращать результаты вычислений (но это уже от алгоритма зависит, можно так сделать в твоем случае или нет я не знаю, т.к. не знаю алгоритм), просто возвращать массив даблов например, а уже потом промежуточная функция переводит это в массив цветов, а третья - выводит на экран.
При такой компоновке кода тебе нужно будет сравнить только время реальных вычислений на построение массива результатов, а оно должно быть предполагаемо меньше в си хотя бы из-за работы на одних даблах.
>>1758705 У меня есть один статик массив не синхронизированный, к которому я обращаюсь из потоков, не залезающих на на одинаковые пиксели. Один поток - одна область пикселей. Вычисления происходят в run() функции (набрался привычек от жабы) и именно ее я параллелю. Методы и поля пришлось сделать статик, когда игрался с потоками, возможно было правильнее без статика обойтись (что, если статик контент по умолчанию синхронизируется, а я не знаю, хотя вряд ли). По уму надо избавиться от конструктора и сделать сеттер на статик контент в такой реализации и конструктор в прайват секции, чтобы вообще не плодить объекты. Сейчас на ноуте нет нужной версии VS, чтобы исправить. Потоки создаются в void MLogic::main(). Изменение текстуры после joinа всех логических потоков, вывод в отдельной функции. >При такой компоновке кода тебе нужно будет сравнить только время реальных вычислений на построение массива результатов, а оно должно быть предполагаемо меньше в си хотя бы из-за работы на одних даблах. Тоже об этом думал. Завтра замерю. Код https://dumpz.org/bEhFE4ZZ3FnB
Скорее всего, java лучше оптимизирует вычисления внутри классов (тут ещё работа со статик переменными). Слишком мало работы с указателями, чтобы C/C++ был быстрее. Замерить вычисления надо, чтобы точно понять.
>>1758932 Глянул в исходниках 8, там чары, в 14 - байты. Интересно. Возможно, в одной из спецификаций джавы это даже описывается. Но это долго копаться надо, чтобы найти.
>>1758901 Начиная с Java 9 там массив байтов, до этого был массив чаров. Изменение называется "Compact Strings". Смысл в том что если строка содержит только символы ISO 8859-1 (Latin-1), то она хранится "компактно" в представлении один символ-один байт, иначе - в обычном UTF16 по два байта на символ, с суррогатными парами и прочим. https://www.baeldung.com/java-9-compact-string
>>1759377 Он как раз наоборот же спросил, дано: >List<S> is considered to be a supertype of List<? super T> Из твоего примера List<Number> это supertype List<? super Integer> из дано и должно быть как раз numbers = integers, но так нельзя.
А еще так нельзя: List<Number> numbers = List.of(1, 1.0); // Cannot resolve method 'of(int, double)' И так: List<? super Integer> integers = List.of(1, "2"); // Cannot resolve method 'of(int, String)' И если первое исправляется легко, это ошибка внимательности, то что ты имелл ввиду под вторым совершенно неясно, очевидно что стринг вообще в другой ветке иерархии, а Object не добавишь.
>>1759478 > а как это работает? Как если сделать List<Object>, а потом привести к List<? super Integer>. List<? super Integer> это ведь не более чем List, в который можно положить Integer. Так что как бы ничего не нарушается.
>>1759490 List<Number> numbers = List.of(1, 1.0); List<? super Integer> integers = List.of(1, "2", numbers.get(0), new Object(), new ArrayList<String>(1)); // Ok
В чем отличие от Object? Integer тут вообще никаким боком. Другой анон
>>1759492 Тут как бы правая сторона осполняется ДО левой и поэтому никаких интеджеров еще нет, результат правой стороны - List<Object>, а уже потом при присвоении накладывается ограничение.
The surprising feature in the declaration " Enum<E extends Enum<E>> " is the fact that the newly defined class Enum and its newly defined type parameter E appear in the bound of that same type parameter. It means that the Enum type must be instantiated for one of its subtypes.
Как понять последнее предложение? В чем его смысл?
>>1759514 > It means that the Enum type must be instantiated for one of its subtypes. Это значит что этот Энум тип должен быть инстанциирован для одного из его подтипов. Напиши сам, да посмотри что получится.
Стоит читать "Философия Java" в 2020, посленее издание которого было в 2006. По оглавлению некоторые вещи сильно подробнее, чем Шилдт или Хорстман, да и объем тоже отпугивает.
Возможно ли в Java скейлить содержимое (AWT canvas) JFrame по размеру фрейма? То есть что бы я мог изменить размер фрейма а всё отображаемое было на пропорционально на своих местах и позиция мыши также пропорционально читалась. В фулл скрине я знаю как такое сделать, а вот в оконном режиме нет.
Это нормально, что в коде есть интерфейсы вроде WhoreService и по одному сервису на каждый из них вроде WhoreServiceImpl. Или это гофчанка и нормальные люди так не пишут?
>>1760016 В дикой природе такое встречается сплошь и рядом, как и много другой хуйни. Но нет никакого смысла плодить такие интерфейсы, не делай так. Если действительно потом понадобится несколько реализаций, тогда и отрефакторишь, это тривиально.
>>1760016 >нормальные люди Смотря что ты подразумеваешь под этим. На какой-нибудь галере, где главное это сделать побыстрее, отдать заказчику и съебаться в закат - там можно хоть одной стеной текста хуярить всё в одном классе. В продуктовой же конторе, которая сама свой код поддерживает и постоянно улучшает, вроде какого-нибудь московского банка - ебут за все проёбы. DRY,SOLID, просто метод на страницу ебанул, неправильно назвал переменную/класс/метод, скобку не так поставил - получаешь пизды, на код-ревью с тебя смеются, показывают пальцем, неделю сидишь рядом с туалетом.
>>1760052 > банк Ахахах, на нашем проекте всем похуй, хоть определённый кодстайл и есть. Каждый файл наполовину выделен идеей из-за дубликатов, 5 POJO с одинаковыми полями и конвертеры между ними, методы на 200 строчек, куча классов со своими костылями и общим наследниками вместо одного универсального решения, в базе 10 таблиц для одного и того же вместо одной. Но это не от хорошей жизни, обычно времени на рефакторинг тупо нет, и пишут обычно так, чтобы говнокод хотя бы не растекался.
>>1760052 Да, все так. Есть места "вроде какого-нибудь банка", где, как тут недавно замечали, "никто никуда не торопится". Там совершенно нормально, когда отдел хорошо оплачиваемых специалистов неделю решает вопрос о правильности имени переменной. Туда за такой работой и идут. А есть другие места, где больше думают о реальном выхлопе, об эффективности, о производительности труда...
>>1760058 Зачем ты там работаешь? Платят хорошо? >>1760061 >думают о реальном выхлопе Высрать побыстрее бажное неподдерживаемое говно это не выхлоп, это высер. >об эффективности Если ты под эффективностью погромиста подразумеваешь SLOC - то несомненно! >о производительности труда Какая нахуй может быть производительность, когда всё как в посте выше? Неделя уйдёт на то, чтобы разобраться в ебучей лапше, ещё неделя на то, чтобы добавить туда ещё одну макаронину, месяц потом твоя мать икать будет, когда тестировщики будут её вспоминать, вылавливая новые баги. В то время как с нормальной архитектурой ты на ходу можешь добавлять новый функционал, почти никак не влиять на старый и в случае чего другой человек может взглянуть на код и быстро понять что и как там работает.
>>1760067 >Высрать побыстрее бажное Не так сложно прийти к той мысли, что "побыстрее бажное" и "неделю согласовывать имена переменных" - это всего лишь две противоположных крайности, а не единственно возможные варианты
>всё как в посте выше Где-то как в посте выше, где-то нет
Так а если вернуться от общих рассуждений к конкретике. Допустим, у на продуктовая контора, которая "...постоянно улучшает". Надо ли нам возле каждого WhoreService обязательно иметь одноименный интерфейс? Что именно мы этим улучшаем и какую практическую задачу решаем?
>>1760072 >Что именно мы этим улучшаем и какую практическую задачу решаем? Спроси у того, кто так делает. Думаю, ответят, что делают это потому что спринг за них всё связывает. >>1760085 >Средне по рынку Я вот так и не понял до сих пор сколько это. На хх одни циферки, на деле другие. Как на базаре, сколько наторгуешь, столько и дадут.
>>1760089 >Спроси у того, кто так делает Где-то тут был автор поста >>1760052 который в ответ на этот вопрос начал объяснять, что в продуктовой-то конторе огого. Надеялся у него спросить, но подевался что ли куда-то.
Подскажите плез , читаю сейчас Герберт Шилдт Java 8. Полное руководство 9-е издание . Все достаточно понятно , но тут нет никаких заданий для практики , где можно попрактиковаться находясь еще на уровне изучения языка помимо CodeWars ?
>>1760103 Требования в вакансиях, в целом, не врут. - Spring (Core, Data, MVC, транзакции) и EE (EJB, JMS, JNDI) - Понимать SOAP/REST - Oracle или Postgres на уровне DDL/DML - JUnit/TestNG - Желательно JS/React, но не обязательно. - алгоритмы/структуры данных - также можно потыкать какой-нибудь шаблонизатор freemarker, попарсить XML и т.д. - ну и очевидные мавен с гитом. Прям задрачивать всё это не нужно, хватит знаний от написания пары пет-проектов на этом стеке.
>>1760092 Вот и я к 80 потихоньку подошёл почти за полгода. Что делать, если вдруг вылечу с работы через год-другой (мало ли что может случиться), сколько просить, не представляю. Если на ждуна я ещё мог понять среднее, от 60 до 100, то вот мидлы и выше это уже какая-то размытая хуета. Одни на 160 ищут людей с 10 годами опыта, другие на 300к с парой лет. Сложна. >>1760093 Это всё мои посты. И я тебе свою версию назвал. Для DI это делается.
>>1760127 Всякое бывает. У меня один знакомый фронтендер за полгода вообще до 150 поднялся, до этого не работал никогда. Всё сильно от организации зависит, от проекта, от тебя самого, от левой пятки нанимателей. И миддлами тоже разных людей везде считают. Я бы где-нибудь через год претендовал на 100-120. Хуй знает. Со мной не торговались, просто по факту уже прислали оффер с суммой.
>>1760127 >Это всё мои посты. И я тебе свою версию назвал. Столько шума было, а как дошли до сути, так "хз, я джун, но в серьезных банках так делают..."
>Для DI это делается DI прекрасно работает и без интерфейсов. Что по своей сути, что конкретно в спринге и аналогах
>>1760138 >где-нибудь через год претендовал на 100-120 Один в один мысли. А потом то что? Когда можно запросить к примеру 200к и чтоб на тебя не посмотрели как на идиота? Для меня это пока что тайна. >>1760149 То, что я ждун не делает меня слепым и глухим. Тимлид ебёт за запах в коде всех, независимо от должности. Можешь дальше смеяться с GoF и прочего. Я вот чётко усвоил, что без этого подняться выше макаки не получится.
>>1760166 Объяснить, в чем конкретно тут суть запаха и при чем тут GoF ты не можешь, но четко усвоил, что надо копать от забора до обеда, а свою голову не включать, а то выебут. Ок, это тоже путь.
Гайз, можно вкатиться без знания Спринга и Хибернейта? Даже не на джуна, а на оплачиваемую стажировку. Из того что знаю: Java core, SQL, git, паттерны, maven. Базовый уровень, разумеется. Немного html, css. Профильного образования нет.
>>1760168 >Объяснить Поопытней кого поищи, чтоб он тебе объяснял. Мишу попроси, например. Свою точку зрения я высказал. Делаешь интерфейс, делаешь реализацию, потом где надо спринг это всё подтянет и соберёт. Принцип открытости/закрытости. Захочешь ты чего-то особенного, понадобится когда-нибудь GayWhoreServie, достаточно будет просто другую имплементацию сделать и аннотацию поставить, чтоб не было неоднозначности. "Потом отрефакторю, если понадобится". Ахуенные истории. На деле оно понадобится, когда там уже 9000 других сервисов на этой хуйне будет завязано и исправлять всё надо будет чуть дольше, чем сделать нормально с самого начала. Буквально вот на днях с этим столкнулся. >при чем тут GoF У меня сейчас это в голове. До этого только читал про это, теперь на практике постигать начинаю, как и где это всё применять надо, чтоб методы на 100+ строк не лепить и прочий треш. И чёт нихуя не смешно от того, что мои же ошибки кто-то 30 лет назад делал, рефакторил, а потом ещё и книгу написал, как правильно. >надо копать от забора до обеда, а свою голову не включать, а то выебут. Ок, это тоже путь. Да, и так пару лет нон-стоп, минимум. Это ты ещё забыл самое главное. Развиваться постоянно и учиться на ошибках, в том числе и чужих.
>>1760177 > потом где надо спринг это всё подтянет И без этого тоже подтянет, поверь мне
>понадобится когда-нибудь GayWhoreServie, достаточно будет просто А если не понадобится? Попробуй прикинуть, сколько в твоих проектах всего подобных сервисов и сколько из них тех, где и правда понадобилось.
>"Потом отрефакторю, если понадобится". Ахуенные истории. Буквально вот на днях с этим столкнулся. Штука в том, что именно такой рефакторинг - выделить интерфейс - это буквально кнопка в IDE, да и без нее было бы достаточно тривиально. Поэтому что-то мне подсказывает, с чем-то иным ты столкнулся. Не, бывают, конечно, случаи, когда и правда стоит сразу заложить какую-то гибкость. Если есть понимание, что она с высокой вероятностью будет нужна, и если расходы на нее прямо сейчас при этом не слишком велики. Но не по принципу "не задумываясь хуярим на каждый чих, а то вдруг понадобится".
>Да, и так пару лет. Это ты ещё забыл самое главное. Знал бы ты, как забавно для меня звучат эти поучения
>>1760163 А это не спринговый стек. Вместо EJB в спринге IoC (@Autowired и т.д.), они в целом по сложности/фичам аналогичны. JMS - честно говоря, хз, у нас над ним куча обёрток, и обычно юзаем их, а не javax.jms.* напрямую. JNDI - тоже обёртки, но там и учить нечего. Надо ли знать, зависит от проекта. У нас куча легаси-говна на EE, проект изначально создавался вообще без спрингаю Но во многих других проектах только спринг.
>>1760166 > Когда можно запросить к примеру 200к и чтоб на тебя не посмотрели как на идиота? Для меня это пока что тайна. К тому времени уже будешь всю эту кухню понимать, и появится реальная уверенность в своих знаниях. Сможешь с полпинка вникать даже в самый хуёвый код, и знать, что всем от тебя нужно, даже если они этого не говорят. Ну, это предположение, я не сильно о долгосрочной перспективе сейчас парюсь, до этого пока как до луны.
>>1760197 >А если не понадобится? Ну и заебись. 2 строчки кода больше написал, вот это потеря. >есть понимание, что она с высокой вероятностью будет нужна Обычно ты нихуя не знаешь, делаешь то, что говорят. А потом приходит пм и говорит, что надо бы ещё вот это добавить. В изначально ущербную архитектуру это добавить сложнее, чем заранее перестраховаться и сделать задел на будущее. >Знал бы ты, как забавно для меня звучат эти поучения Не знаю, мне похуй. Ты спросил - я ответил. Или погоди. Ты выебнуться пытаешься? На харкаче? Где каждый второй это помидор 300к на удалёнке? >>1760219 >К тому времени уже будешь всю эту кухню понимать >знать, что всем от тебя нужно, даже если они этого не говорят Вот я по этому поводу парюсь больше всего. Ведь по сути, большую часть времени хуярю код. Мне по сторонам смотреть то и некогда, а проебать момент, когда скилы уже вырастут несколько выше текущего оклада, как-то не хочется.
>>1760228 >2 строчки кода больше написал Таскать по интерфейсу на каждый спринговый бин в проекте это далеко-далеко не 2 строчки.
>Обычно ты нихуя не знаешь, делаешь то, что говорят Да-да, если ты рядовой, то делаешь то, что говорят, а то придет сержант и выебет, а как в жизни иначе, надо уметь вертеться. Все ок, дальше не интересно.
>>1760228 > проебать момент, когда скилы уже вырастут Этот момент будет сложно пропустить. Ты заметишь, что больше не бывает такого, что сидишь неделю над непонятым багом, а потом поправляешь одной строчкой. Что решаешь задачи быстрее, чем они были оценены. Что с тобой советуются и даже зовут поревьюить чей-то код.
>>1760235 >каждый спринговый бин Это уже шизофазия. Вызови врача тому, кто так делает, он кажись, помирает. >делаешь то, что говорят, а то придет сержант и выебет, а как в жизни иначе Иначе только на мамкиных борщах сидеть. >>1760238 Это разве не уровень помидора уже?
>>1760252 > Это разве не уровень помидора уже? В целом, да, но для него это уже давно само собой разумеется + ещё много чего сверху. Мидол же только начинает что-то понимать.
Вот бы мне чужой код понимать. Пока читаю конец метода, забываю что там было в начале, в голове не получается удержать всю логику. Хотя, возможно, это из-за того, что я кроме стандартной либы ничего не читал, где почти все реализовано будто сишниками с их битовыми операциями головного мозга.
>>1760252 >Это уже шизофазия Слушай, а это мы неплохо продвинулись по сути вопроса. Так может уже выходит, что не обязательно нужно иметь WhoreService в виде интерфейса c WhoreServiceImpl, и можно как-то эти случаи различать - когда нужен интерфейс, и когда нет? Если бы ты в изначальном посте по теме о чем-то таком писал, а не начинал в том духе, что лишь бы тимлид не выебал, меньше было бы непонимания.
>>1760257 Огромные методы - ещё ладно. Хуже, когда долго что-то дебажишь, прыгаешь по фреймам стека, наконец-то дошёл до конца метода, возвращаешься в место вызова и вспоминаешь, что это всё была только первая строчка во внешнем методе, а там ещё 30 других вызовов, и за каждым кроется по такому же огромному куску кода, и в каждый надо вникать.
>>1760260 Ты бы изначальным примером взял какую-нибудь шлюхину титьку, а не целый сервис, может так и было бы. Хотя не. Тоже хуёвый пример. Сразу на ум приходит целая иерархия. >>1760257 Я как-то быстро привык. Первые недели 2 пиздос был, потом норм. Хотя, возможно, если сменить работу, то всё повторится.
>>1760274 >Ты бы изначальным примером взял какую-нибудь шлюхину титьку Я не знаю, что за иерархии титек ты себе представляешь и что именно тебя заставляет делать твой тимлид, но тот анон с вопросом про интерфейсы скорее всего имел в виду именно что эдакую шизофазию, которую и правда можно встретить. Когда код, как обычно, полон типичных сервисов-синглтонов с бизнес логикой (по размещению заказов на шлюх), но при этом каждый, сука, с интерфейсом. Ну просто потому что интерфейсы это хорошо, и буква D из SOLID велит юзать интерфейсы, да и вообще "вдруг понадобится".
>>1760286 Под сервисом я представляю какую-то хуйню, которая будет в разных местах использоваться, возможно по разному. Титьки - ну хотя бы натуральные/силиконовые. И шлюха же может их менять. Т.е. уже можно интерфейс делать и его в шлюхе указывать а не конкретный класс. >Когда код, как обычно, полон типичных сервисов-синглтонов с бизнес логикой (по размещению заказов на шлюх), но при этом каждый, сука, с интерфейсом >сервис >по размещению заказов на шлюх >синглтон Ахуенные истории. Тут 15 лет опыта не надо иметь, чтоб понять, что их будет чуть больше одного. Пример говно. Не надо в одну кучу сваливать объект, который очевидно будет в одном экземпляре и сервис, где само название уже намекает. >что именно тебя заставляет делать твой тимлид "Покажи где он тебя трогал..."
>>1760295 >Ахуенные истории. Пример говно. Перестал успевать за твоей мыслью. Чего будет больше одного? Сервис по размещению заказов не может быть синглтоном? На это намекает само название "сервис"? Это имеет в любом случае отношение к интерфейсам?
ООПшные иерархии разновидностей сисек это отдельная история (и так ли их вообще много в энтерпрайзе), но в первоначальном вопросе было про сервис, а это слово и правда намекает, только, кажется, не на то, о чем ты думаешь.
>>1760309 В моём воображении сервис почему-то явно никак не может быть синглтоном. Это штука, которая что-то обрабатывает и отдаёт результат. Уже подразумевается, что способы обработки могут быть разные. Вызвать шлюху с мобильного, через приложение, через сайт, разные бд шлюх, скидочки по праздникам.
>>1751473 Почитай разные книги, посмотри что больше нравится. Новшества Java 7 можно отдельно глянуть в книгах Хортсмана, например. Стримы и лямбды тоже отдельно в современных книхах есть. Java 9 нужна далеко не везде, но и по ней есть отдельные книги.
>>1759589 >>1760487 Как по мне, Философия Java больше подойдёт тем, у кого уровень ниже, а свободного времени больше. В противном случае следует читать Хортсмана. На русском даже есть
>>1760471 Даже если для вызова через сайт и приложение разные сервисы, ничто не мешает каждому из них в отдельности быть синглтоном. Разных сервисов (классов) может быть много, но каждый из них нужен в одном экземпляре. На всякий случай напомню, что в спринге все бины по умолчанию это синглтоны. Оглядись, они повсюду.
А даже если и не синглтоны, к вопросу об интерфейсах это все прямого отношения не имеет. Ну да и уже хер с ними.
>>1760441 У меня обратная ситуация - на спринге приложения писать интересно, а как учить кор я хз. Писать унылую сортировку пузырьком, laba1 и машинные тесты javarush/codewars/hackerrank/leetcode.
>>1760593 А нахуя тогда вообще это читать? Лучше уж мурзилку какую для быстрого старта, а потом что посовременней осилить, где стримам и прочему уделено больше времени. А для более глубокого понимания ООП и паттернов наворачивать более специализированную литературу. Того же Мартина и Фаулера. Начитаются про свои свичи и 5ую жабу и долбят потом свои макарошки.
>>1760597 >как учить кор Коузен Кен, Современная жаба. Мне зашла легко, этого уровня тебе точно на ждуна хватит. 250 страниц всего, есть на русском. Не помню разве что про женерики там, придётся отдельно где-то обмазаться этими PECS.
>>1760771 > Стратегия Ура, десяток классов вместо нескольких строчек. не зря там выше писали про измерение эффективности программиста в количестве LOC.
>>1760787 Никак не обойтись, а также желательно никогда не юзать циклы и if и реализовывать всё через ПАТТЕРНЫ, чтобы занимало в 100 раз больше места и было настолько же непонятно.
>>1760787 Какой-то человек (не знаю кто это, но вроде норм, в закладки добавил) рассказывает про свич конструкцию, как она появляется на начальном этапе, как потом разрастается до хуеты из 250 кейсов. Рассказывает о том, что это всегда начинается с 2-3, ведь на начальном этапе никто не может предсказать сколько кейсов действительно будет. А потом добавляется ещё один. А потом кто-то ещё добавляет один. И т.д. Рассказывает о том, что никто не хочет это говно рефакторить до тех пор, пока что-нибудь по пизде не пойдёт и в жопу ебать не начнут уже тимлида, а тот соответственно начинает ебать всех остальных уже без вазелина и вот это всё. >>1760790 Ты знаешь, вот я тебя тут даже поддвачну. Последние примеры с инжектами автовайред в методах интерфейсов это пиздец. Ну то есть, когда он начал делать отсылочки на скалу, я примерно понял, что он хочет и зачем. Но это пиздец. Такое применять на крудах для шаурмечной у Ашота никто не будет. Рядовая макака эту хуйню не повторит никогда, уж лучше свитч. А команду таких вот выпускничков топовых московских вузов себе могут позволить далеко не все.
>>1760804 >рассказывает про свич конструкцию, как она появляется на начальном этапе, как потом разрастается до хуеты Так а бин без интерфейса можно сделать или нет, я так и не понял. Опять не по теме что ли
>>1760814 >>Так а бин без интерфейса можно сделать или нет, я так и не понял. Компонент? Можно, но это как то не интерпрайзно получится. Помидор должен нахуячить десять слоев абстракции по паттернам с алгоритмами, чтоб понятно было за что ему платят 300к/нсек.
>>1760814 Нельзя. Лучше не смотри, там не то что бин без интерфейса, там вообще срака. Он там имплиситно спрингом мапу собирает по айди бинов. Т.е. Map<Id, Interface> для всех бинов. Скала головного мозга, это ещё хуже чем GoF. Как только в коде появляется дохуя имплиситов порог входа взлетает невообразимо, магия спринга и хибернейта покажется мурзилкой.
>>1760914 Так есть же сайты с анкетами. Все как полагается: фото, отзывы, фильтрация по услугам, местонахождению, цене, фигуре. Как в интернет магазине заказать.
>>1760919 Так эти сайты все же недалеко ушли от формата тупой доски объявлений. В 2020 уже надо так, чтобы тыкнул пару раз пальцем в телефон и все, к тебе едут. И потом с карты само списалось.
>>1760939 >так джавадоки удобнее Это кстати единственный адекватный аргумент, который тут пока звучал. А дальше, как мне кажется, стоит взвесить, настолько ли разница в этом удобстве велика и важна, чтобы ради неё фактически удваивать количество классов.
>>1760989 В том-то и дело, что ничего, потому что нахуй никому не нужно. Читаешь талмуд по спрингу, про все эти постпроцессооы, контексты, эвенты, аспекты, прототипы, а потом из всего спринга юзаешь только @Autowired, @Service, Data, JdbcTemplate и @RestController.
>>1760993 А что из себя вообще контекст представляет? В доке слабо объяснили. Как я понял, отдельный контекст для сервисов, отдельный для контроллеров или типа того, не?
>>1761044 Ну да. Ничего круче заебавшего всех процедурного программирования по сей день не придумали. Те же бины в спринге - это по сути модули с процедурами, а больше обычно ничего не юзают. Любые попытки сделать что-то сложнее превращают отладку в ад, хотя в идеале всё выглядит красиво.
>>1761076 >Ничего круче заебавшего всех процедурного программирования по сей день не придумали. Где-то в параллельной вселенной при этом существуют сторонники DDD и rich domain model. Как там у них дела, интересно
Подскажите пожалуйста, как тестировать методы (в JUnit), которые должны вешать блокировку чего-либо на определенное время? Например, есть у меня верификация пользователя, он 3 раза ввел неправильно логин/пароль и я ему вешаю запрет на логин на 10 минут. Вот как мне протестировать, что это действительно 10 минут, что при повторных попытках ввода время блокировки не продлевается и что в этот промежуток времени верификация не работает? Ну или просто у меня чат-бот, который я хочу, чтобы отключался на 1 минуту и в этот момент ему нельзя было задать какой-либо вопрос, а он бы только отсчитывал время до пробуждения.
>>1761603 Я бы ничего не ждал (да и вряд ли подобное есть в junit), а вместо этого в начале и конце метода с тестом лез в базу, смотрел, сколько осталось до снятия бана, и сравнивал.
>>1761603 Эта аннотация не для твоего случая. Время инжектить просто и все. Как ты текущее время получаешь? Если из какого-то источника, то мокаешь этот источник, если напрямую в метод передаешь, то подставляешь нужное тестируемое время параметром.
>>1761616 Здорово. Я бы посмотрел как ты будешь тестировать валидность токенов, которые выданы на день, месяц, год... Mockito тебе изучить надо в любом случае, а конкретно здесь архитектура такая должна быть, что ты время должен получать внешним источником - либо напрямую в метод - validateTime1(LocalDateTime now), либо заворачиваешь в сервис, сервис инжектишь в сервис проверки (в этом случае сервис получения времени можно будет мокать).
>>1761629 Добра тебе. По поводу день, месяц, год, я думаю, что это вопрос того, на какое именно время я хочу блокировать. У меня пока стоит задача до 1 минуты. Про Mokcito почитал, видимо нужно изучать. Еще раз спасибо.
>>1761629 Смотрю многние говорят что моки это плохо и надо юнит тесты писать без моков и показывает в примерах какие то хэлоуворлды. А у меня сервисы которые лезут к другим сервисам и к репе. Я вот не пойму они все таки имеют ввиду свои хэлоуворлды, а сервисы ЭТО ДРУГОЕ (только у меня такой логики не так уж много - утилитные классы разве что проверять). Или я что то делаю не так? У меня обычно тесты выглядит так
>>1761699 >многние говорят что моки это плохо и надо юнит тесты писать без моков Да? Кто так говорит и почему плохо? А вообще говорят много чего, у нас тут давеча вот if-else из языка выпилить предлагали. Другое дело, что ситуации бывают разные и тесты для них разные тоже.
>when(WhoreRepo.getByTitSize(anyInteger)) По моему опыту на попытках мокать/стабить работу с БД не уедешь дальше каких-то самых простых случаев. Лучше поднимать настоящую БД и заполнять ее данными.
>>1761699 Не слышал чтобы говорили что моки это в принципе плохо. Есть такое мнение, что мокать нужно только интерфейсы, но не имплементации, и я могу сказать что не согласен. Типа тест не должен знать деталей реализации. Но это именно тест интерфейса, а я хочу протестировать свою реализацию, поэтому идите нахер, я пишу тесты классов. Любой инструмент нужно юзать с головой, и наверное есть случаи злоупотребления, но я о них не знаю или не помню. Тесты это вообще мое личное пространство - если упадет моя реализация именно я буду виноват, что мой класс что-то не сделал. Поэтому я пишу тесты как удобно лично мне. У меня, например, есть своя мини-либа с рефлекшеном для тестов приват методов и других страшных вещей. Кто-то пишет либы для тестов статик-методов. Этому всему можно найти применение, ведь под конец дня главное чтобы продукт работал (пусть даже и со свичами).
Так что ты пока делаешь все правильно, а люди с "передовой", с прогрессивным мышлением, еще не до конца оформили эту свою идею бест практиками, паттернами и прочим.
>>1761717 А тем кто скажет, что мои классы потом будет поддерживать кто-то другой, для вас есть аргумент - буква O из SOLID (да и другие буквы тоже). Наследуйтесь, оверрайдите, с нуля реимплементируйте, а потом тестируйте "прогрессивно", по-научному, как угодно.
Есть полгода опыта джуном, но очень давно (ещё до 8 Джвавы, но со спрингом 3). Хочу сейчас опять вкатиться. Последние 2 раза, когда ходил собеседоваться, я жидко оподливился на банальный вопросах о том, для чего нужен спринг. Начал читать Про Спринг 5 в переводе. Ощущение, что я делаю что-то не так. Подскажите, куда направить своё свободное время, чтобы сделать это наиболее эффективно?
>>1761817 Там слышал в каком-то AS запрещено вообще свои потоки создавать, он вместо тебя многопоточность делает сам. Вот это кайф наверное, не надо учить одну из сложных частей кора.
>>1761825 И правильно, ресурсы должны менеджиться сервером приложений, а не вручную, меньше вероятность неправилтного их юзания и последующих трудноуловимых багов. Юзкейсов у тредов не так много, да и в EE-мирке никто не перформансом не гонится.
>>1761825 >в каком-то AS запрещено вообще свои потоки создавать О, это чудесная тема. Там ведь не то что буквально запрещено, так что поток не заработает, а просто в спеке записано, что не следуют так делать, потому что, дескать, AS не обязан обеспечить в твоем потоке корректную работу всяких ежб. Реально при этом обычно все работает, нечему там особо не работать. Но бывало, видишь, что сидят какие-нибудь чуваки и не решаются создать поток, даже для какой-то ерунды, где не нужны ресурсы ASа. Прочитали же, что нельзя, так что мало ли. И вместо этого пердолятся через какие-то EE-подпорки. Потом наконец какой-то смельчак сделает поток, он прекрасно работает, и все такие - а чо так можно было. Дивный мир.
посовтуйте библиотеку пишу клиент для своего рест апи, нужна либра для хттп реквестов, не могу найти ничего годного, пишу на котлине кстати а еще как отправить хттпс реквест? или это на сервере надо настроить чтобы только хттпс был?
>>1761674 Я надеялся, что ты что-то посоветуешь! Я уже спрашивал тут как-то на тему того, как можно проверить лежат ли объекты определенного класса в листе или нет, до сих пор твой код вкуриваю. Спасибо большое!
Анон суть такова. Есть один сервис, и у него есть методы. Когда я к нему закидывают стрингу, некоторые из них возвращают мне лист ДТО с какими то данными или пустой лист. А некоторые только ДТО. Так вот лучше все таки обернуть это все в объект СервисРеспонс в который можно закинуть и ДТО и информацию об ошибке, если что-то пошло не так. Или просто возвращать Optional (если пустой -понятно что ошибка, но не понятно в чем) или же выкидывать эксепшены с информацией об ошибке? И что с эксепшенами? Трайкетчить это говно? Делать обычный, а не рантаймв стиле 7 жавы? Склоняюсь к респонсу, но думаю не оверинжиниринг ли это. Мне уже как то удобней стало создать дто с одним полем, чем просто булин или стринг вернуть.
>>1762414 Если ты хочешь показывать сообщения об ошибке, очевидно через эксепшены, трайкечить в коде, вызываемый сервис. Хотя я бы просто опшиналы возвращал.
>>1743038 (OP) Молю помогите, сегодня установил андроид студио 3.0.1, делая все по гайду с курсеры. Так вот там при установке надо дополнительно загрузить несколько библиотек, в том числе и Android SDK tools (не платформ тулс не билд тулс а просто тулсы ебучие). По скринам у чела была возможность загрузить прямо из SDK мэнеджера внутри студии, но у меня этой ебалы не было. В результате нихуя не работает. Я нашел эти тулсы архивом в инете, но куда его распаковывать не ебу. Помогите плз я нулевый совсем и тупой.
>>1762751 там есть встроенный мастер их закачки, но там нет нужной ебалы, в настройках покопался вроде тоже нет, но он есть в инете. собсна вопрос в том, куда мне архив со всеми тулсами распаковать.
>>1762780 хорошо, я попробую, спасибо. но когда я просто запустил рабочее пространство он изначально выдал ошибку и не предложил дозагрузить что-либо. в пизду, вообще пойду дальше теорфиз учить, не дано мне вашим программированием заниматься.
>>1762963 Правда. Ну может не за 1.5 часа, но за пару вечеров точно учится. Сразу после этого можно писать как на джаве с чуть другим синтаксисом, потом надо еще немного времени, чтобы освоиться и начать что-то делать более "идеоматично".
>>1763042 Нет, спринг, увы, так не учится. Впрочем, могу уточнить - котлин за пару вечеров в том случае, если ты не тупой и если джаву знаешь достаточно давно и уверенно.
>>1763075 Не совсем понял твою идею. Контроллер обратился к методу, а тут рантайм эксепшен. Спринг эксепшен хендлер перехватил эксепшен и вернул ModelAndView пользователю с вставленным описанием ошибки? Так?
>>1763042 У большинства знание спринга = Autowired+Service+RequestMapping. 2.5 аннотации, понятных по названию, можно выучить за полчаса. Само собой, если заниматься вещами чуть сложнее крудов и/или обмазываться паттернами, тут уйдёт дохуища времени, но почитай тред. Всё что чуть сложнее вызывает негативную реакцию. "REEE у тебя гофчанка, используй свич, мы так 10 лет делали и ты делай! " "REEE, хибернейт со своей магией не нужен, идите вы нахуй, я буду делать всё через JDBC, мне Transactional вообще нахуй не упал!" "Spel, какой нахуй spel, ни нужен, я сказал!" И так далее.
>>1763187 Я хотел сказать, что если всё, что чуть сложнее основ отбрасывать с аргументацией "ни нужна", то выучить спринг за пару вечеров это вполне посильная задача.
>>1763235 Смотря что считать интересным. Дрочки алгоритмов, оптимизации и прочего здесь сравнительно немного. Джава - не обязательно веб, а любой бекенд как таковой, хоть у тебя сокеты, вебсокеты, SOAP, очереди сообщений, REST. Кому-то это интересно.
>>1763247 Ну вот алгоритмы и оптимизация в целом интересно, да. Правда боюсь, что перекачусь на плюсики, а буду хуярить формочки на Qt или MFC каком-нибудь. Ну или под железки что-то писать, а это ну хз, не особо вкатывает и перспективы так себе.
>>1763251 Хз, особой разницы нет, с помощью чего создаётся окошко для контекста OpenGL. А дальше LWJGL.
>>1763252 В формочках на самом деле тоже может быть полно задач оптимизации и алгоритмов, но это должна быть какая-нибудь САПР, а не хуйня из пары окошек. Но в железках будет точно.
Тут ещё многое упирается в то, есть ли у тебя тонна времени и усидчивости, чтобы осилить плюсы и найти на них норм работу, потому что это намного сложнее, чем в джаве. Я вот решил не рисковать, хотя сам изначально хотел плюсы (да и до сих пор хочу).
>>1763235 Мне мои задачи нравятся. Не только очередной круд писать, а оптимизировать запросы к бд, например, думать об архитектуре, сделать что-то асинхронно по возможности. Иногда есть нестандартные вещи, например сделать какой-то алгоритм для обработки хуйни_нейм, которого нет в библиотеках. Вообще нравится думать о том, как реализовать то, что хочет пм в проект добавить, так чтобы и быстро, и красиво, и понятно всё получилось. Но я джун, может и заебёт со временем, хз.
>>1763181 >"REEE, хибернейт со своей магией не нужен, идите вы нахуй, я буду делать всё через JDBC, мне Transactional вообще нахуй не упал!" Это все до первого инцидента с утечкой конешенов из-за некорректной работы afterCommit() Вот тогда то и начинаешь ценить простой JDBC.
>>1763732 Это не поломка, это ДТП да еще с тяжелыми последствиями в виде нескольких прод инцидентов и недели потраченной на исследования, написание пула с трассировкой кто берет конекшены и прочее.
Тут проблема в том, что фреймворк делает за тебя магию. И надо очень хорошо разбираться, что там под капотом, чтобы не выстрелить в ногу. В тред дампах у тебя будет только спринг и ожидания на блокировках. А если ты руками все делаешь - у тебя первый же дамп покажет, где ты облажался.
И я не утверждаю что @Transactional не нужен, я говорю про то что у него тоже есть проблемы.
>>1763675 Кого его? Хибер? Да нужно, т.к. он много где используется.
Хай, анончики, поясните долбаебу за уместность использования интерфейсов: вот у меня есть классы Downloader и ImageDownloader, первый отвечает за загрузку документов, второй соответственно картинок. Логика их взаимодействия такая: class Downloader{ download(несколько, аргументов){ //..... //некоторый код //..... ImageDownloader().downloadImage(аргумент); } }
class ImageDownloader{ downloadImage(аргумент){ //..... //парсинг документа (аргумента) //..... downloadFromField(некоторые, аргументы); } downloadFromField(некоторые, аргументы){ //загрузка и сохранение изображения } }
Так вот я тут почесал репу и подумал: а может лучше Настя лучше написать интерфейс, сделать от него имплементс в выше описанных классах и реализовать какой-нибудь там download..()?
>>1764178 Интерфейсы не нужны только ради интерфейсов. Если у тебя много кода, которые что-то скачивает, но не знает, что именно, т.к. реальный объект передаётся извне, то лучше сделать интерфейсами. Если такого нет - забей. А ещё можно придумать какой-нибудь DownloadStrategy.
>>1764637 Жду не дождусь. Наконец-то дефолтную версию джавы поменяют с 5 на 8, а maven-war-plugin по умолчанию больше не будет ругаться на отсутствие web.xml.
>>1765561 a = Integer.parseInt(new StringBuilder(Integer.toString(a)).reverse().toString()); Не, ну можно, конечно, сделать цикл, где ты будешь b умножать на 10 и прибавлять остаток от деления a на 10, а саму a делить на 10, пока не будет 0, но мы ведь не в C++-треде.
>>1765594 >Есть переменная int a = 55234; >как её перевернуть, чтобы вышло a = 43255? Значит тип поменяться не должен, при этом число должно перевернуться.
>>1765573 Ну вообще эти перевороты числа и надо делать интежеровским делением и остатком. Мне препод не засчитывал, говорил, что я со строкой манипуляции делаю, а он мне число дал.
А я вот сел за доку по спринг бут, думал "э-ге-гей, сейчас мне расскажут про интересные хипстерские технологии", открываю, а там 500 страниц сухой конфигурации всякой хуйни.
>>1765603 На любом статическом языке. Это тупо алгоритмическая задачка, а переворот строки это уже другая задача. В проектах ты вряд ли будешь переворачивать цифры.
>>1765628 Короче, ты охуеешь, но разные джавы показывают разное значение. Я на openjdk 14 запускал, сейчас запустил на openjdk 8, она вообще показала 1290x730.
>>1765641 Да, сейчас в IDEA запустил через Java 11, всё нормально работает. Окно такое большое так как у меня 125 масштабирование стоит, главное что внутри окна всё правильно считает. Спасибо вам! Один бы я до такого не додумался.
Что-то от модульности в джаве 9 у меня остаются ощущения неествественности и неудобста. Ими действительно кто-то пользуется, реально собирают дистрибутив JRE с помощью jdeps и jlink, или все тупо ставят JDK на прод?
О, я понял. Жре теперь надо качать здесь: https://adoptopenjdk.net/releases.html И никакой мозгоебли ради уменьшения рантайма на какие-то 50 метров. Всё сложнее и сложнее. Лучше уж закрытие сорцы и коммерческая лицензия, ей-богу.
>>1765969 Чтобы не устанавливать идею на продовский сервер. Меня интересует именно рантайм на проде, при разработке-то понятно, что JDK будет в любом случае.
Скоро закончу свой говновуз по ит специальности и надо бы решиться куда идти, выбор стоит между java разработчикомм и тестировщиком. Куда проще попасть и где проще будет работать в дальнейшем обычному средне-специалисту?
>>1766337 Работать надо там, где тебе нравится. Или хотя бы не возникает неприязни от собственной деятельности. По-другому ты не сможешь жить, будет вот это т.н. выгорание.
>>1766346 Я проебался и попал в около государственную компанию... А там был пиздец никак не относящийся к тому,что я хотел попробывать, 1с битрикс пхп и прочее
>>1766353 Для меня и то и другое всё же будет просто работой, а сейчас просто смену курса делаю, ибо нравился питон, но не смог залететь никуда на стажировки с ним, ибо там требовались мальчики математики и аналитики, а не я. В джаве пугает пока объём необходимый для старта, но нравится то, что она распространена везде где только можно и с работой проблем не будет, если приложить должные усилия, а в тестировании напрягает проходить через ручного тестера.
Пс, жители двачей, среди вас тут знает хорошие конфы для JVM комьюнити?
Я знаю как минимум одну, которая основана спикерами известных конференций (JPoint, Joker), там часто можно встретить "звёзд". Но тем не менее, известны ли более локальные?
>>1766366 >просто работой И как скоро ты начнёшь лезть на стену от этой работы? Жаба это стабильность, но раз ты вчерашний студень, то уж лучше бы ещё с питоном повозился. Мне кажется там больше всякой хипстерской хуйни, не так скучно, как ковырять очередное легаси.
>>1766415 Ну на самом деле это полезно, если нету опыта в построении устойчивых систем.
Даже задача про написание CRUD приложения без использования баз данных и транзакций, JDBC темплейтов и тд уже очень интересная. Один раз мне дали такую на собесе, наши обсуждения ушли достаточно далеко
>>1766449 Задача была такая: 1) Напишите rest api сервис с помощью spring boot 2) данные храните в оперативной памяти, они не должны быть персистентными
Прикол задачи заключался в том, что как написать потокобезопасный код, который не испортит данные, когда запросы прилетают на воркер
Что будет со спрингом, если есть 3 класса компонента A B C. А принимает В autowired, B принимает С, а С принимает А. Те, цикл получается. Не скомпилируется?
>>1766470 Это уже вопрос реализации. Я лично хранил в обычной HashMap'е, но доступ к данным был через Reentrant Read/Write lock. Безусловно, ConccurentHashMap'а всё это имеет под капотом и доступ на чтение тоже идет через read lock, но мне было важно показать, что я понимаю принцип работы мьютекса и как нужно ставить блокировки, какие стандартные библиотеки использовать и тд.
В итоге мне задали достаточно интересные вопросы, мы поболтали на тему многопоточности
>>1766403 То и значит. Случайно наткнулся на легаси туториал по javaee5 от оракла, там была тема "the duke’s bank application", плюс еще нашел пару статеек, решил потом реализовать через спринги. Вообще, хотелось бы не только перевод денег с одного акка на другой, ну как получится.
>>1766516 Тогда начни с чего-то попроще, куда тебе целую банковскую систему писать.
Сначала рекомендую разобраться с тем, как в принципе работает транзакция, что есть под капотом у движков SQL, тот же transaction log.
А то при создании банковской системы нужно не только учитывать правильный конкурентный доступ к данным, но так же стоит учитывать идемпотентность операций, ретраи, ролбэки
Еще для начала можно почитать очень полезные книжки и посмотреть курсы по многопоточности
>>1766529 А чего волноваться? Думаю у каждого разработчика со временем возникает необходимость в собеседовании. Кто-то делает это раз в пол года, чтобы узнать свою актуальную цену на рынке6 кто-то реже, кто-то чаще. Я сам хожу, вот за весну был на 3-4 собесах (три из них это сбертех)
>>1766520 Если в банках так заботятся с роллбэками, почему до сих пор нельзя вернуть отправленные деньги хотя бы в первые 30 минут? Ни в одном банковском приложении такого нет.
>>1766616 Транзакции так не работают. Если ты отправил деньги, и они упали на чужой счёт, то транзакция уже закоммитилась. Закоммиченную транзакцию нельзя отменить, можно только провести ещё одну транзакцию, противоположную по действию. Но это именно две транзакции, а не откат первой. Но даже если бы можно было откатить, это всё равно не сработает. Банк - это сложная распределённая система из сотен сервисов, транзакции живут только в рамках одного сервиса, из-за чего, кстати, микросервисная архитектура плохо уживается с таким использованием транзакций. Ну а почему нельзя вернуть отправленные деньги - это не техническое ограничение, а бизнес-требование. Сам я об этом не знаю, но подозреваю, что чтобы не кинули никого (оплатил в магазине, сразу откатил транзакцию и убежал, к примеру).
Поясните за гиперскилл пожалуйста Типа я могу им неделя+месяц+месяц бесплатно пользоваться, а потом 25 баксов в месяц придется отваливать? Алсо после прохождения всей джавы на данном ресурсе через проекты будут ли иметься навыки для поиска работы джуном, или ещё пахать и пахать? Заранее спасибо
Хочу написать парсер, но парсинг сайта требует селениум, а брать запросы апи через приложение на андроиде я не умею.
Как можно подсмотреть апи в приложении? Достаточно ли открыть через Apktool приложуху и походить по коду, или может ваершарк какой-то поставить и посмотреть урлы, которые, вероятно, будут по https?
>>1767857 Если у сайта вообще есть апи, целесообразнее научиться его использовать. Бывает и такое, что апи можно использовать свободно, а парсинг детектится и банится (потому что рендерить хтмл намного тяжелее, чем гонять жсонки). Ну а если нет, ваершарком охуеешь копаться, даже если хттп. Проще смотреть исходники.
В метод передается два разных List. Как по-умному сразу по двум последовательно пройтись? Чтобы без повторений кода, без вынесения цикла/стрима в отдельный метода и вызывания два раза.
>>1768100 > круды Наглый пиздёж. В основном придётся писать service layer, то есть тонны бизнес-логики. А "круды" пишутся мгновенно и сразу забываются. Скучно ли тебе копаться в бизнес-логике, решай сам.
>>1768106 >бизнес-логике А вот что это? Я просто немного из далекой сферы, студент, пишу на плюсах разную геометрию, расчеты на прочность, МКЭ, вот это все. Думал в джаву вкатиться, но непонятно, какие вообще задачи вы решаете.
Какую книгу по Спринг Буту прочитать если знаешь только синтаксис языка? А то по книгам которые я пытался начать читать, складывается ощущение , будто авторы думают, что я уже знаю какие-то основы.
>>1768117 Я вот сейчас пишу штуки для расчета сопромата - потом инженер может на компьютере загрузить геометрическую модель и прога посчитает нагрузки и деформации, и инженеру уже не нужно все вычисления делать вручную, как это было 100 лет назад.
А что у вас? Какие-нибудь конкретные примеры есть?
>>1768114 Сложно сказать "в общем". Это куча алгоритмов, сильно завязанная на предметную область и бизнес-требования. Приложение - это ведь не просто обёртка над данными в табличках, но и всевозможные обработки и преобразования, отправка сообщений в другие системы, обновление статусов и прочих характеристик бизнес-сущностей с учётом их жизненного цикла, что-то написать в лог для безопасников, что-то отправить в аналитику и т.д.
>>1768160 Насколько же годный ответ! Сначала подумал, что это ирония, а потом задумался, вспомнил свой опыт и понял, а ведь так оно и есть. Лучше и не скажешь. Для работы нужен опыт, для опыта нужна работа. Больше сыра = больше дырок = меньше сыра. >>1768172 Отрицание это первая стадия, насколько я помню. Не ёрничай, а лучше подумай как разорвать этот круг.
>>1768172 Хорошо было, когда они сидели в своём загоне и не высовывались, а теперь скоро весь /pr превратится в филиал /b. Пиздец. Даже в /s не так токсично.
>>1768228 >когда они сидели в своём загоне Ты про вкатывальщиков? "Сап дващ, какие курсы проплатить, чтоб через месяц 300к получать? Сам 30лвл, вышки нет."
>>1768119 >Я вот сейчас пишу штуки для расчета сопромата А джавист может писать, например, штуку для расчета комиссии при заказе шлюхи переводе денег между счетами. Только расчета не в смысле перемножения чисел по формуле, а в смысле учета всех бизнес-требований, которые на нее влияют. Куда именно переводим? Кто такой отправитель и сколько он уже переводил в этом месяце? Нет ли сейчас каких-то временных скидок-акций, которые отключают эту комиссию? И прочее и прочее в таком духе. В процессе может быть придется и в свою БД запросы поделать, и к другим системам обратиться, сделать с ними интеграцию. Задача и во всей бизнес-логике не запутаться, и при этом сделать что-то надежное и не совсем уж тормозное.
>>1768297 > Почему все упирается в business логику? Любой бэкенд же можно написать на буте или нет? Ты вообще понимаешь, о чем пишешь? Причем тут бизнес логика и фреймворк? Ты можешь хоть на иврите писать, если заказчик ожелает остаться на этом довольным
>>1768452 > Ты вообще понимаешь, о чем пишешь? Нет. > Причем тут бизнес логика и фреймворк? Везде, где упоминается Spring, говорится о бизнес логике, поэтому кажется, что в другом его использовать, как пересекать пустыню на лошади. Он слишком сложен или не удобен для остальных не бизнес задач? Например, если я захочу сделать бэкенд сайта с регистрацией пользователей и покупками какой-нибудь еба-хуйни, это бизнес логика? Или написать Двач бизнес логика? Почему лучше что-то, а не Спринг в таком случае? Или, например, вообще не иметь дело с вебом, но использовать какие-нибудь части вроде бинов, то же самое, что использовать мужику менструальную чашу?
>>1768467 > А это смотря что считать энтерпрайзом. Крупный интернет-магазин, например, это он или нет? Ну какой-нибудь wildberries - конечно интерпрайз
>>1768473 > > Ты вообще понимаешь, о чем пишешь? > Нет. > > Причем тут бизнес логика и фреймворк? > Везде, где упоминается Spring, говорится о бизнес логике, поэтому кажется, что в другом его использовать, как пересекать пустыню на лошади. Переведи два слова: "бизнес" и "логика" на понятный тебе язык. На крайняк уже можно было и загуглить.
>>1768484 Тогда, я думаю, сложно не согласиться, что на джаве скорее пишут тот бэк, что ближе к wildberries, чем к какому-нибудь магазинчику электрочайников (который на пхп)
>>1768487 > Переведи два слова: "бизнес" и "логика" на понятный тебе язык Бизнес, это когда Вася обкашливает вопросики с родственником по маминой линии. Логика - из А следует Б из Б следует С, значит, из А следует С. Ну и хули я тут должен понять, сделать теорию относительности бизнес логики? >Бизнес-логика — в разработке информационных систем — совокупность правил, принципов, зависимостей поведения объектов предметной области (области человеческой деятельности, которую система поддерживает). Иначе можно сказать, что бизнес-логика — это реализация правил и ограничений автоматизируемых операций. Является синонимом термина «логика предметной области» (англ. domain logic). Бизнес-логика задает правила, которым подчиняются данные предметной области.
Это получается типо ООП для какой-то области, которую мы пишем. Весьма расплывчато, но можно еще понять.
Вкатиться джава стажером или джуном на неполный день вообще возможно? В Москве. Везде где смотрел, нужны на полный день люди. А мне нужно как-то обучение в вузе еще совмещать.
>>1768531 Если студентик из норм вуза, то, скорее всего, тебе будут доступны программы стажировки в крупных конторах. Если вкатывальщик, то, скорее всего, ничего не найдешь.
>>1768579 А как их искать, эти стажировки? В университет никто не приходит и не зовет, кроме разве что мейла. Пытался вкатиться в яндекс стажером, но как оказалось я слишком тупой для них
>>1768511 > > Переведи два слова: "бизнес" и "логика" на понятный тебе язык > Бизнес, это когда Вася обкашливает вопросики с родственником по маминой линии. Логика - из А следует Б из Б следует С, значит, из А следует С. Слушай, может все-таки формочки на js шлепать? С такими проблемами будет тяжело бэк писать
>>1768531 > Везде где смотрел, нужны на полный день люди. А мне нужно как-то обучение в вузе еще совмещать. Работаю со 2-го курса. Нахуй тебе сидеть в универе каждый день по 3-4 пары? Ты в МГУ/Бауманке учишься, чтоб так дрочить на свой вузик? Всегда можно договориться с работодателем, чтоб отпустил на экзамен/зачет, либо взять на этот день больничный. В универ практически не ходил. Только чтоб сдать какие-то работы, на зачеты и экзамены. С таким подходом закончил бакалавриат, а затем и магу. Главное общаться со своей группой, чтоб быть в курсе событий
>>1768646 Тоже так планирую, к середине или концу 2 курса пойти на стажировку или работу. Проблемы только с хуевый английским, а он для стажёров нужен.
>>1768713 вот есть у меня пакетная функция print в папке c:\code\print, как ее мне влключить в других файлах? Писать напрямую import c:\code\print; или как?
>>1768714 У тебя пакеты начинаются с какой-то директории package com.myprog.spring; в данном случае с папки com. Дефолтный пакет не используй. Ну и дальше ты указываешь через точку путь к папке класса, потом имя публичного класса. Что значит пакетная функция, может, тебе в другой тред?
Поясните за REST API. Через фронт запрос с телом класса формирует JS, те, там надо описать точно такой же класс, как в Java, и такой же класс для ответа? А если мы общаемся сугубо через бэкенд, можно импортить класс контроллера и пользоваться его методами, или надо тоже отправлять запросы?
>>1768823 Не обязательно класс, изначально это тупо жсонка. Да и классы в жс - так, сахарок для объектов. И можно работать с объектом напрямую, почти как в джаве мапа с определёнными ключами.
>>1768646 У меня лабы по многим предметам, их нужно очно сдавать и защищать. Ну и физра еще в этом году будет, ее нельзя проебывать. Поэтому вообще никак не вариант полностью проебывать вуз.
>>1768928 > У меня лабы по многим предметам, их нужно очно сдавать и защищать. Ну и физра еще в этом году будет, ее нельзя проебывать. Поэтому вообще никак не вариант полностью проебывать вуз. Я тебя, наверное, удивлю, но лабы и физра есть у любого студента вуза. Лабы, хуябы , курсачи можно сдать в конце семестра, либо вообще в следующем/через один. Физру можно купить за условный сертификат в спортмастер на косарь преподу. Пиздец, с таким подходом можно и до сдачи диплома сидеть тупить в универе у мамки на шее. А потом в армию еще сходить не забыть. Но вообще, поступай как знаешь. Я твоих способностей пиздеть, крутиться и договариваться с людьми не знаю, поэтому насоветую тебе тут сейчас на отчисление.
>>1769267 Я вот тоже довольно поздно (курсу к третьем) понял, всё, что ты сейчас пишешь. Это же школьник вчерашний, он не понимает ещё, как вообще можно уроки прогулять и с преподом за бабло договориться. Не дави на него так.
Я не сомневаюсь что это уже миллион раз спрашивали, и даже выше в этом треде, но может кто посоветовать современную книгу по джаве? Три раза спрашивал, три раза скидывали книги 1997 года. ОП - ХУЙ, НЕ ДОБАВИЛ FAQ В ШАПКУ
Выбираю технологию программирования, думаю насчёт Java в первую очередь. На старте 2 вышки айтишных (краснодипломных), опыт 1С Программистом 3 года, которая заебла, дорос до 100к+ ЗП даже в городе с 600к населения на Дальнем Востоке, но я рот ебал до конца жизни в этом болоте оставаться.
Есть финансовая подушка, которая позволит год не работать. Также много на C/C++ кодил (все 6 лет универа, дипломные проекты тоже на нём всё). Какие-то стартовые навыки по ООП тоже есть, книжки читал.
Буду перекатываться к Москве с финансовой подушкой, где есть вакансии на нормальные технологии программирования. Интересует бизнес-логика, разработка под мобилы неинтересна. 1. КАКОЙ уровень владения английским надо (B2 хватит ?) 2. КАКОЙ конкретной фреймворк надо изучать 3. ЕСТЬ ЛИ комплексные курсы по стеку технологий, который нужно знать jav'исту ? Без объяснения, что такое циклы, переменные, классы и т.д. 3. Как обстоит дела с языком запросов там. Я правильно понимаю, что есть какая-то ORM'ка ? И тогда какая.
>>1769527 Это не Оп хуй, а ты настолько тупой, что не можешь перейти по ссылкам в ОП-посте и ознакомиться со всеми вопросами вкатышей. В том числе и про книги
>>1769579 Нужно иметь в виду, что во многих вакансиях почти не расписывают стек, и "уверенное значение java" включает знание всего популярного стека, особенно если в такой вакансии ещё и опыт требуют. Да и андроидовских вакансий немало.
>>1769578 Я дюк юниверсити проходил - мне понравилось. Начал изучение джавы с написания дешифровщика по методу частотного анализа и написания цепей маркова. Сан диего какой то невнятный и устаревший с гвт и эклипсом - что делает его похожим на любой индусский курс. Рис не пробовал.
>>1769267 >Физру можно купить за условный сертификат в спортмастер на косарь преподу
Лабы и курсачи если и можно сдать в конце семестра, то с физрой у нас все строго и уже лет 15 как ничего не покупается, к большом у сожалению. И людей реально отчисляют из-за одной физры.
>>1769267 >с таким подходом можно и до сдачи диплома сидеть тупить в универе у мамки на шее Кстати в топ вузах очень много кто так делает. Иначе вылетишь за через 1.5 наносекунды, если начнешь работать на 3 курсе.
>>1768646 Отучился в бауманке кстати в прошлом году на робототехника, отходил почти на все пары, диплом со средним баллом 4.5, ни разу не работал, с 3 курса просто с ноутом сидел на последних рядах и лениво ковырял пердун и курсачи, гордость не позволяла их купить за 5-6к оглядываясь назад, лучше бы я их купил, они сожрали месяца два моей жизни в часах. Денюжка была с различного рода шабашек на фрилансе, телеботы, боты для любимой игры, чтобы автоматизировать процесс гриндилова и всякие задачки долбоебам и т.п.
Щас я понял, что пердун говно и собираюсь ПЕРЕАБУЦЦА чтобы в офисе сидеть. Но фактического опыта-то у меня нет, интересно, смогу ли я найти стажировку на жабе\котлине и как это гуглить.
>>1769964 Ммм, халявная кафедра с айти уклоном. Лично видел, как самых конченных долбоебов вытягивали на тройку, а еще у вас нет Карпачева, который меня в академ отправил за незнание теоретической механики.
Я тебе мало чего скажу за нее, извини. Но общий посыл - на втором курсе сукаблядь не смей расслабляться, 90% отчислений происходят на 1-2 курсах, потому что уженешкольник забивает хер на учебу и затягивает все сроки, после чего умирает на преподе факере и берет академ.
А так в целом в даунке похуй на посещения, у меня на 4 курсе 80% потока не ходило на пары, ыыы
Впервые в жизни прошёл iq-тест. До этого даже задачек ни разу не видел. Проходил сразу, без особых заморочек. Вот такой результат получил на пикрил. Смогу ли я, в перспективе, составить конкуренцию гениальным синьорам из мехматов с их пятизнаками icq? Или лучше пойти красить кнопки в мобилки? Алсо делитесь своими результатами.
>>1771236 >>1771238 Тест проверяет твою способность решать простые задачки в короткие сроки. А по поводу конкуренции - 99% времени ты будешь решать однотипные задачи, многократно решенные до тебя, зачастую не связанные с программированием
>>1771371 >Тест проверяет твою способность решать простые задачки в короткие сроки. Кстати, я догадывался, что там учёт времени идёт, но не был уверен. Я нередко долго соображаю, хотя вроде почти всегда нахожу решение.
>А по поводу конкуренции - 99% времени ты будешь решать однотипные задачи, многократно решенные до тебя Понял, спасибо за ответ. Просто мне всегда казалось, что в бэке много алгоритмов и мат.логики, поэтому боялся оказаться ситуации, когда начну и в какой-то момент уже не потяну.
>>1771444 >много алгоритмов и мат.логики Этого нигде нет в большом количестве, забей. Алгоритмы нужны только для того, чтобы на собеседованиях не обосраться жидко.
>>1771669 >Алгоритмы нужны только для того, чтобы на собеседованиях не обосраться жидко. Возможно, ты прав, так как у меня нет практического опыта, ориентировался исключительно по требованиям в хороших вакансиях и необходимой теоретической базе. Плюс те же конференции, типа джиконф и джокер посмотрел, где крутые спикеры выступают. Посмотрел, построение какой-нибудь отказоустойчивой, оптимизированной архитектуры веб-приложений, или работа какой-нибудь очереди я смотрел доклад о апач кафка выглядит довольно интересно для меня. Понимаю, что там люди с колоссальным опытом а не я - лох с дивана. Но все-равно смотрю, там, к примеру, какие-то мат.расчеты отказоустойчивости формулами из, видимо, тервера, которые я не очень понимаю. Вообще я не полный ноль в математике, более-менее в универе её тянул, но как-то не особо удовольствия доставляет. Поэтому был некий страх, что не осилю профессию на хорошем уровне.
>>1771744 Можешь вообще не переживать. математика даже в датасаенсе далеко не везде юзается, что там про бекенд говорить.
> мат.расчеты отказоустойчивости формулами Этим почти никто не занимается, да и знают про это немногие. Да и даже если заниматься, но не заморачиваться, там расчётные формулы на уровне методичек для лаб по физике.