Q: ЧТО СКАЖЕТЕ ЗА ДЖАВАРАШ? A:Худшая инвестиция в твоей жизни. Огромное количество говнокода, оторванные от жизни задачки, 1000 заданий по выводу в консоль какого-то говна.
Q: Посоны, собираюсь учить джаву по 2/5/20 часов в день. За сколько дней я выучу достаточно, чтобы зарабатывать фрилансом? A: На джаве фриланса нет. Хочешь фрилансить — дуй в ПХП/раби/1С тред.
Книги: - Head First Java, (2nd Edition) : Kathy Sierra, Bert Bates - для совсем нулячих простым языком. - Core Java (9th edition) : Cay S. Horstmann, Gary Cornell - тоже для нубасов, но на серьёзных щщах. - Thinking in Java (4th Edition): Bruce Eckel - для тех, кто уже умеет в программирование на другом языке, но хочет перекатиться. - Effective Java (2nd Edition): Joshua Bloch - для тех, кто знает джаву, но хочет перестать писать костыли. Больше здесь: http://www.proklondike.com/books/java.html - Soft Skills: The software developer’s life manual : John Sonmez - сказки на ночь.
Q: Хули все книги на английском? A: Без английского ты не нужен и можешь смело идти нахуй. Ну или в 1С-тред.
Q: Я не могу в книги. Наткнулся на джавараш, но в самом верхнем вопросе уловил нотки сарказма. С ним все правда плохо? A: Это очередной курс(выучи джаву за 60 секунд и получай 300к в месяц), основная цель которого - выкачать из тебя деньги.
Q: Я выучил кор, достаточно ли этого, чтоб взяли на работу? A: Лол, конечно нет хотя некоторым всё же везёт. Цикл статей что в каком порядке учить: http://dou.ua/lenta/articles/java-beginner-guide-1/ (заблочен РосКомПозором, юзайте прокси)
Q: Всё это хорошо, но без алгоритмов меня на работу не возьмут. A: Не беда, вот курсы от Принстонского университета: https://www.coursera.org/course/algs4partI То же самое но в бумаге: Роберт Седжвик, Кевин Уэйн - Алгоритмы на Java
>>959071 Жава была специально создана, чтобы отмывать банковские деньги в IT. Нужно было чем-то обосновывать миллиардные траты на железо и инфраструктуру. Т.к. железо становилось все быстрее и быстрее, то потребовалось создать максимально уебанский язык программирования, чтобы никакой прогресс в железе не мог преодолеть его подводные камни.
>>959096 Смотрел я на этот ГО, 100500 каких-то велосипедов, ничего толком нет путевого (я ожидал что-то типа джанги там, а там огрызки). Такой же пустой хайп как и руби, только бюджет побольше. И так вернемся к проверенным инструментам: >Кто что использует для веб-проектов?
>>959246 да, я это понимаю проблема в том, какой именно проект выбрать? для idea нашел, там все подробно рассказано а для netbeans'a написано только: "выберите "приложение Java""
>>957815 Слушай, я немного запутался окончательно с этими контроллерами. В общем, суть приложения такая - при запуске приложения делается проверка в базе, если ничего нет, то делается запрос к api и добавляет в базу Photo с ссылкой на фотку и солом (день марсианский). В общем, я пытаюсь как-то связать PhotoController с вызовом приложением, чтобы только один метод addPhoto вызывался. В нем бы делалась проверка на наличие чего-то в базе и потом новая фотка заносилась в базу. Я понял что это делается через Rest, но как его связать с контроллером. Извини, что заебываю, но ты единственный, кто помогает с этим гавном разобраться https://github.com/Kabowyad/Test-Project/tree/api-test/src/main
>>959011 (OP) > A:Худшая инвестиция в твоей жизни. Огромное количество говнокода, оторванные от жизни задачки, 1000 заданий по выводу в консоль какого-то говна. То-то большинство тестовых заданий как-будто слизано с JavaRush. 30+ лвл, ни разу не пожалел насчёт вложения. Тот кто это писал явно не захаживал дальше десятого уровня.
>>959011 (OP) Котаны, читаю Уоллса (Spring in action), как-раз дошёл до определения связывания обектов и охуел: Spring нужен для того, что бы мы могли программировать XML, когда программируем на Java? Аннотации отдельный разговор, если разрабы Spring забухают, то код с аннотациями соснёт при перекате на другой фреймворк.
>>959286 Так и есть. Сам когда-то проходил ради интереса, первые задания - пиздец на перепечатывания кода, но ведь они рассчитаны на совсем зелёных новичков, дальше идут вполне себе нормальные. Хотя я всё равно дропнул уровне так на 15, мне показалось слишком медленно, по книгам быстрее.
>>959313 Тот факт, что в этой же книге тебе прямо капсом написали "Component Scan > Java Config > Xml" тебя вообще не смутил? А вообще мне xml нравится. Очень удобно, централизовано. Если нет в проекте мудака, который не умеет импорты делать, то я выберу xml/groovy конфиг, а не скан.
Анон, что скажешь про курс "Beginner to Programmer: The Complete Java Developer Course" за авторством Tim'a Buchalka? Есть смысл на него время тратить или строго по шапке треда учиться? Сам могу только на паскале калькулятор написать. Курс мне подарили. Дарёному коню в зубы не смотрят.
>>959326 >книжки по яве Мне кажется, что бы закрепить основы самое то. Но боюсь, что этот курс окажется той же книжкой только в браузере. А почему все советуют начинать с С, если Ява это тот же С, только в прокаченный поправь, если не прав, по С качественнее туторы?
>>959334 >Мне кажется, что бы закрепить основы самое то. Смотря что ты считаешь основами.
>А почему все советуют начинать с С, если Ява это тот же С, только в прокаченный Ява с си имеет общего в основном синтаксис. Это никак не прокачанный си, слишком разные задачи. Но если ты немного поучишь си, то у тебя не будет в будущем всяких глупых вопросов вроде "почему new String("хуй") == new String("хуй") - false". Ключевое слово - немного.
>>959313 >то код с аннотациями соснёт при перекате на другой фреймворк. Нет, если они бухают с другими разрабами фреймворков которые поддерживают те же аннотации (как и xml теги).
А вообще xml - самое бестолковый и переусложненный вид настроек. Впрочем как и все в джаве. Кроме стандартной либы.
Там же как у макак - чем мудренней и запутаней - тем солиднее и пускай КПД к жопе сводится. Джава жива только лишь из-за мобильников.
>>959346 Всмысле "только из-за" мобильников? Почему тогда все предприятия крупные джаву используют? Да, во многом не удобно, да, приходится писать свои библиотеки под свои нужды. Н почему тогда другие языки почти не используют в крупных предприятиях, если джава так плоха?
>>959358 Ничего не знаю. Я уже года два проектов, где основная конфигурация на xml, не видел. Ну мы маршруты для кемла пишем в xml, потому что ява дсл - дерьмо.
>>959349 Потенциал языка измеряется в том, сколько новых проектов на нем создается. А легаси код ничего не решает (вон кобол до 2006 года был в топе по количеству написанного кода, но в 2006 ты о нем и не слышал, так же с джавой, ее спасли только мобильники)
>>959359 Много кто может в английский. Только твоя логика тут непонятна. Зачем им общаться на английском на русской борде? Вся нормальная литература, материал в интернете, сообщество -- преимущественно на английском. Соответственно, если ты не можешь в английский, то очень многое теряешь.
>без женериков Это единственное что тебя останавливает, чтобы страдать в джаве? На джаве простой веб не пишут (ты даже для ембеддед сервера взял сервлеты - насколько там надо мозги на Java EE свернуть)?
Ну натянешь потом еще спринг и хибернейт и не влезет это говно в твою vps
>>959414 >чтобы страдать в джаве? Я серьезно, хотя джава огромна, но шаг в сторону и ты с продуктом один на один. Либо как все юзай war - либо забудь про ембеддед, максимум лабы найдешь как пример.
Бесит го - возьми питон (джангу). Еще спасибо скажешь
>>959604 У нас, например, используется solr, эта хуйня для индексации данных требует sql-запросы. Для каких-то простых действий удобнее написать простенький запрос на sql или jpql. Возможно где-то вы захотите использовать фишки вашей конкретной бд. Да мало ли чего может случиться.
>>959604 я щитаю так - решить 50 задачек на sql-ex.ru - и тебе хватит этого на 95% на работе. Для всего остального будут искать именно специалиста SQL узкого профиля, а тебе оно надо?
Сап, пацаны. Решил ебашить рест-сервис на спринге. Но вот как теперь это всё тестить. Заебашил метод, который принимает дтошку @RequestBody, но как запрос теперь сделать с этой дтошкой? Просто сделать json со структурой как моя дтошка? И как вообще потом через ангуляр запросы делать? Тоже что ли джсон отправлять?
>>959758 Ну json, конечно. Настрой для этого какой-нибудь gson или jackson. Вообще, нахуя тебе Spring для rest? Взял бы православный Jersey, я бы тебя тогда даже пидором называть бы не стал.
>>959779 Я бы назвал главной проблемой го - молодость. Нормальной иде нет, бестпрактис не выработаны, с тулчейном тоже еще не разобрались. Т.е. все проблемы не в языке, а в экосистеме. В языке лично мне только эксепшнов не хватает.
>>959783 В том то и дело, что лисп до сих пор живее всех живых. Сколько прикладных языков типа дельфи и фортрана, перла и кобола уже умерло, а лисп здравствует.
>>959416 Ты сам-то пробовал эти примеры? Ни ResourceHandler, ни DefaultHandler не могут выдавать статику из JAR-файла. Внешние файлы из файловой системы выдать могут, а вот из JAR-ника - нет.
>>959779 Если дергать какой-нибудь винапи то ты обосрешься со всем. Не загоняй в абсолют, глупое ты дитя с приступами юношеского максимализма, даже джава нихера не 100% кроссплатформенная.
Что джава что го - два куска неповоротливого говна, только для первого раньше были тулзовины типа IDEA, то сейчас и го оброс IDEA - кодить на нем стало в разы приятней, чем на жабе
>>959795 А еще сервер приложений установи... В том и цель, чтобы все быстро работало, не требовало деплоя и было минимум зависимостей. Никакого Spring и EJB, разумеется.
В очередной раз убеждаюсь, что здесь сидят одни макаки, которые умеют только бездумно копипастить со StackOverflow. Без понимания принципов работы.
>>959795 Весна сплошная магия на магии. Все хорошо если у тебя CRUD, но как только нужно что-то по-серьезней и вне рамках фантазий разрабов - твоя жизнь превращается в ад.
Бывает так - что на решение задачи тратишь больше, чем ты бы мог сам написать это руками. Тру-стори
Возьми го - и сам слепи из "кусков" независимых. Ладно еще в питонах, пхп или жс понимают как строить современный веб, но в джаве же одни корпаративные индусы и них эволюция пошла по другому пути.
>>959804 Если для тебя спринг - это магия, то ты очень мало о нем знаешь. Спринг простой как двери. Ядро спринга - очень легкое и удобное. Спринг дата построен на одном абстрактном классе и простом квери генераторе. Спринг мвц вообще весь на диспетчер сервлете и трех адаптерах висит. Но ты и это не осилил, тебе и di фреймворк - магия.
>>959804 RESTful веб-сервис + front end к нему это нечто нестандартное? У меня уже есть готовое решение, написанное исключительно на сервлетах/JSP и работающее под Томкатом. Хочу просто улучшить его.
>>959811 Вот я тебе и говорю: спринг мвц либо сразу бут. Это очень удобно, тебе понравится. Посмотри туторилы прямо на офф сайте, там есть один с именем прямо из твоего вопроса.
>>959809 >Спринг простой как двери, Спринг мвц вообще весь на диспетчер сервлете и трех адаптерах висит >Ставишь брэкпоинт в контроллере и видишь стектрейс из ~50-70 вызовов.
>>959816 А знаешь что скажет типичный Ванька-индус? Он скажет "и че, время программиста дороже железа" и будет прав. Джава крутится в таких "менфреймах" что там срали на производительность. Джава != производительность. Просто почему ынтерпрайз не берет скажем пхп или питон - из-за косяков многопоточности и все. А так по железо их бы устраивало.
>>959813 На хабре пишут, что спринг тяжеловесный, приложения долго стартуют, куча зависимостей. И лучше Embedded Jetty. У меня приложение нечто вроде онлайн-игры, требуется: - высокая нагрузка (обновление страницы хотя бы 25 раз в секунду, для нескольких тысяч пользователей); - быстрая NoSQL база (здесь еще не сделал выбор); - использование ANTLR (пользователь пишет код на особом языке, который используется для управления объектами); - на front end используется canvas (пока в 2D), с большой картой, переход на которой должен быть без задержек.
>>959822 Добавь спринг кор в проект и сделай mvn dependency:tree. Долгий старт - следствие компонент скана по куче jar файлов и проксирования бинов, но если не использовать их - платить будет не за что. Сложное положение на чистых сервлетах ты не напишешь в любом случае - это позапрошлый век. А хочешь микросервисный шлак для тысяч запросов - и правда посмотри в сторону го или реактивного спринга, там должно быть лучше это все, но он в бете только
Поднят Wildfly 10. Реализовано небольшое приложение. Имеется Stateless бин с инжектированным EntityManager. Когда выполняю select запросы - все работает нормально. Как только пытаюсь выполнить persist паадет исключение
TransactionRequiredException WFLYJPA0060 Transaction is required to perform this operation
Бин отмечен одной лишь аннотацией - Stateless. Судя по докам этого должно быть достаточно, т.к. по умолчанию включается CMT режим управления транзакциями.
Однако эта блядь все равно не создает новых транзакций!
БД - MySQL. Wildfly запущен в standalone режиме.
Если нужна еще какая инфа - спрашивайте, предоставлю. Гугл подсказывает только то что транзакции должны работать нормально - и никто с похожей проблемой не сталкивался
Сейчас расковырял свой же код - в методе бина перед собственно персистом выполняется чтение из базы (через find у энтити менеджера), что в теории может приводить к закрытию транзакции, хотя это полный бред.
Ребят, тыкните носом, что нужно знать. Задача такая: есть CSV фаил, с большим кол-вом данных. Нужно его отсортировать по третьему ряду, однако при этом сказано, что наш компьютер не обладает достаточным кол-вом оперативной памяти, из этого следует, что мы не можем просто вывести всю инфу в массив и отсортировать там. А должны делать это прямо в этом CSV фаиле. Какие мысли? У меня проблема именно с реализацией всего этого без использования массива, в котором можно было бы все это реализовать. Есть мысли о создании нового CSV фаила, и добавлять туда по одной строке с минимальный значением в 3 ряду за один проход по исходному, и т.д пока не будет выведены все. Но это выглядит очень затратно и глупо. Какие, более оптимальные варианты существуют?
>>959883 Да, нужно было по внимательнее свой код поковырять. Тот самый find и падал с исключением. Самое интересное что исключение правильно обрабатывается и пишется в лог. Проблема в том что wildfly не написал в лог это исключение, поэтому я его и не замечал
>>959946 Разобрался с логированием. Не правильно передавал аргументы в метод логгера error() - там первым аргументом идет Message а не Throwable - в итоге запись не было видно.
Блять все из-за таких мелочей, а столько гемороя что я уже в реальности сомневаться стал
Привет, джаваны. Пришлось мне тут столкнуться с JSON ответами и вот вопрос: какую либу использовать? Какую использовать моветон, а какая считается классикой?
На сайте json хуева гора библ, но какую взять - хз. Ткните носом. Спасибо
джаваджедаи, подскажите пожалуйста. я вот запилил по гайду https://medium.com/@gustavo.ponce.ch/spring-boot-spring-mvc-spring-security-mysql-a5d8545d837d#.awgevgne0 сие приложение с авторизацией и регистрацией. а вот если я хочу что бы я еще мог авторизироваться например не только под ADMIN(как в примере запилиено), а например еще под REG_USER? я вот в бд добавил пользователя присвоил ему роль REG_USER. в LoginController.java добавил метод homeRegUser() с @RequestMapping(value="/reguser/home", method = RequestMethod.GET) мне теперь надо в классе SecurityConfiguration.java в методе configure(HttpSecurity http) что-то менять или как? подскажите плез
>>960039 А проверить что уже работает ты не догадался, чудило? Должно работать с тем конфигом без изменений, ибо >.anyRequest().authenticated() пропускает любой запрос от аутентифицированного юзера (в /admin/ не пропустит - там другое правило не даст).
>>960046 ружище я проверил. все именно так кк ты говоришь, когда заходишь под другим пользователем выкидывает ошибку. так и должно быть, но как мне показать например /reguser/home, если я авторизируюсь под REG_USER? вот в чем проблема немножко не понимаю в какю сторону копать. Т.е. если под админом логинюсь. он мне показывает /admin/home, а если под reguser то /reguser/home
>>959011 (OP) Здраститя. Мне требуется распечатать элементы стека, какой вариант православнее/быстрее? while(stack.peek()!=null) System.out.print(stack.pop()+" "); или for(Iterator it = stack.iterator();it.hasNext();) { System.out.println(it.next()); } ????
>>960129 for(int i=0;i<100;++i){ for (Integer it : stack) { System.out.print(it + " "); }} Выдаёт 44мс for(int i=0;i<1000000;++i) { Deque<Integer> ttt = stack; while (tmp.peek() != null) System.out.print(tmp.pop() + " "); } Выдаёт 13мс. Там такой прирост большой получается? Ну да, не нужна,не подумал, я только учусь .
>>960135 >такой прирост большой получается? Да т.к. в итераторе на 3 проверки больше (hasNext, на позицию курсора и на защиту от параллельной модификации)
>>960139 Круто, не знал. То есть если тебе не важно состояние стека, ну типа дальше нигде он не используется и служит как вспомогательная хуета внутри метода, то всегда лучше использовать цикл+полл?
>>960141 Так-то прирост не маленький, for(int i=0;i<1000000;++i) сделал, получилось 78162 13(походу как раз и з-за убирания лишней проверки ускорилось), в 6к раз быстрее что ли, лол.
>>960141 Сложный вопрос. На твои замеры очень сильно влияет System.out.print. Если заменишь на какое-нибудь банальное действие вроде присваивания, разница не будет такой уж сильной.
>>960153 for(int i=0;i<1000000;++i){ for (Integer it : stack) { //System.out.print(it + " "); }} 169мс Ну в общем-то так и казалось, просто не думал, что настолько разница дикая. Зато теперь знать буду, что с итераторами аккуратно надо, может сильно замедлить работу.
>>960156 long startTime = System.currentTimeMillis(); for(int i=0;i<1000000;++i){ for (Integer it : stack) { //System.out.print(it + " "); }} long estimatedTime = System.currentTimeMillis() - startTime; System.out.println(); System.out.println(estimatedTime); Может что-то не так делаю?
>>960159 Тто есть если я правильно понимаю, ибо нубас тот ещё, что в случае с итератором у нас за O(N) обращение к элементу идёт, а с полл за O(1) ну или типа того.
>>960165 ЛоЛ, блядь, у меня ошибка там. После первой итерации там тупо пустой стек, надо вот тут вместо it = stack.poll() it = tmp.poll(), а я и ждумаю какогто хуя такие значение получаются.
>>960170 >Deque<Integer> tmp = stack; Ты просто ссылку передал и опустошил же свой stack Тогда уж tmp = new ArrayDeque<Integer>(stack) Только время конструктора надо вычесть
>>960175 for(int i=0;i<1000000000;++i) { ArrayDeque<Integer> tmp = stack.clone(); //Integer it = null; //while((it = tmp.poll()) != null) { //System.out.print(it+" "); //} } Блин, но если ещё по два нуля добавить, то видно, что львиную долю конструктор занимает. 6181
4022 >>960179 Да ок, по таким же соображениям и юзал их всегда в общем, просто что-то запарился, хз.
>>960189 И читается в сто раз лучше. public static void main(String[] args) { ArrayDeque<Integer> stack = test(); stack.forEach((n)->System.out.print(n +" ")); } Анон, а можно как-то покрасивше записать последний форич?
>>960206 Не, это оверинжениринг уже какой-то. Красивее не в смысле чтобы побольше всего крутого было, а в смысле чтобы проще записывалось и тд, не так выразился короче. Ну я думал мало ли в явеможно как-то вроде этого, а я не в курсе просто stack.forEach(System.out::print, delimiter=" "); или SyntaxSugarPackage.map(stack,String).join(" ")
>>960206 >stack.stream().map(x -> x + " ").forEach(System.out::print); >.map(stack,String).join(" ") А, ну лол, это ноо и есть возхможно, невнимательно глядел.
Возвращаюсь сюда, поковыряв целую кучу вопрос на стэке про json и жабу. Вот распарсить простецкий json оказалось легче простого - но только если там один массив. А мне нужно распарсить json с 4 или 5 вложенными массивами. Получается распарсить только один - тот, в который все вложены. Пиздец какой-то
>>960211 А, не. Проще уже не будет. Если идти через Collectors.joining(" "), он тут же сиранёт, что у тебя инты, а не строки и придётся в любом случае map для каста вызывать. Если идти через reduce, то будет неэффективная срака навроде reduce("", (x,y) -> x + " " + y, String::concat) А ещё в итоге у тебя и там и там будет String, который придётся отдельно обернуть Arrays.stream(String::toCharArray) чтобы вызвать forEach(System.out::print). Нет пути
И вот всё, что у меня получилось, это дернуть содержимое ключа "def" и пары его ключей до начала вложенного массива. Как выдернуть, например, из массива ключи tr и другие???
Анон, есть вопрос JSR 303 (Bean Validation) и DTO. Предположим делаем мы некую UI форму на неком клиентском приложении. У исходной сущности присутствуют constraint аннотации на полях по указанному выше JSR 303. Bean Validation построен так, что его можно юзать как на сервер так и на клиенте. Все здорово. НО. Есть такая практика как формирование DTO и отправка их клиентскому приложению, дабы серверные сущности не покидали пределов сервера. Это также предотвращает падение многочисленных LazyInitializationException когда detached сущность уходит из транзакционного контекста. Однако в этом случае не удастся использовать Bean Validation на клиенте, поскольку тот уже оперирует не сущностями а DTO и в итоге нужно повторять код валидации на клиенте, либо по необходимости конвертить DTO в сущность и прогонять через валидаторы. Так как быть? Повсеместно использовать DTO на клиенте, писать дублирующийся код валидации или же допускать обработку серверных сущностей на клиенте дабы работала валидация но при этом потенциально ловить Lazy исключения?
В качестве примера могу привести проект над которым работаю в одной конторе. Там серверные сущности уходят десктопному приложению и Lazy сыпятся как из рога изобилия, не в последнюю очередь из-за криворукости тех кто работает над проектом, но все же. Я же склоняюсь к комбинированному варианту - когда для различных форм редактирования использовать полноценные серверные сущности, при этом грамотно подходить к проектированию, а для различных браузеров и списков шде серверной сущности будет многовато юзать DTO.
>>960337 В поддержку варианта с использованием серверных сущностей на формах редактирования говорит и тот факт что если юзать DTO то его структура в целом повоторит структуру серверной сущности и его кодирование будет более трудозатратным нежели использование серверной сущности (просто получается копируешь код серверной сущности в DTO) Тот же Vaadin для форм редактирование предлагает удобные биндеры которые умеют работать с JSR 303.
>>960386 Шарп вроде тоже юзают для написания веб приложений (ASP.NET). К тому же автор того поста сравнивал шарп (по всей видимости с ASP.NET) с Java и Angular, т.е. бэкенд и фронтенд жавы и шарпа
>>960548 Так как C# > Java, то перекат с сишарпа в джяву, как тут уже выше сказали, заключается только в перекате на другую инфраструктуру, ну и некоторых побочных эфектов, вроде желания рыгать с убогости жабы и того, что что в ней всё делаешь, а ничего нет.
Для переката с джявы в сишарп потребуются определённые мозгоусилия для того чтоб перейти на более продвинутый язык.
Двач, есть вот такая ошибка: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Прохожу по сайту и вижу, что Placing one (and only one) of slf4j-nop.jar slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar or logback-classic.jar on the class path should solve the problem.
Дело в том, что в lib у меня уже есть slf4j-api. И что значит поместить в класс паф? Я как только добавляю либу, сразу жму Build Class PAth.
Юзаю эклипс и в данном случае хотел бы именно с ним разобраться. Алсо, мож у меня не полный комплект файлов, всё-таки? И файл api хуйня, а нужен из списка? Полный текст ниже
If you are responsible for packaging an application and do not care about logging, then placing slf4j-nop.jar on the class path of your application will get rid of this warning message. Note that embedded components such as libraries or frameworks should not declare a dependency on any SLF4J binding but only depend on slf4j-api. When a library declares a compile-time dependency on a SLF4J binding, it imposes that binding on the end-user, thus negating SLF4J's purpose.
>>959011 (OP) Есть ли где-то НОРМАЛЬНЫЙ гайд по RxJavе? Чтобы все по полочкам было. У меня то что есть вызывает больше вопросов чем понимания? Как получить объект из обсервера?Поясните что-то за правильную архитектуру. Допустим из одного обсвервабла я получить данные, они пошли в обсервер который что-то сделал с этими данными. Как мне дальше передать данные из обсервера куда-то?
Ты обычный раб системы, у тебя все зашибись, утром ходишь на работу, это просто чудо жизнь, ты заканчиваешь школу, но ничего не понимаешь, а потом тебя находять и в армейку ты пиляешь, а в армейке край свободный - там ты станешь мужиком, по еблу ты получаешь и поставишься рачком. Круто чистишь ты сортиры и штаны - возвращаешься домой - ну теперь то ты мужик. Вот вернулся ты с армейки но куда идти тебе - на завод конечно, там то круто ты поверь, хотя можно и учится но учеба - ерунда. Работай на дядю, на клубы и яхту, выбрось свободу, иди на заводы и шахты, работай, работай на шмотки и шмары, может получишь хоть что-то, а может и пару.
>>960637 slf4j это логер обертка над всеми реализацями что появились для жавы. Соответственно сама обертка логировать не умеет и требует одну из реализаций. В твоем случае тебе нужно положить библиотеку реализицаию логирования и библиотеку которая выступит мостом между ними
Рассмотрим фреймворк Log4j2. Тебе понадобится log4j-core - собственно сама библиотека логирования log4j-api - api для подключения к другим реализациям log4j-slf4j-impl - бридж для подключения к slf4j slf4j-api - собственно она у тебя и так уже лежит, это api со стороны slf4j
Для чего такой изврат? Если ты пишешь конечный проект (какое-нибудь веб приложение) до достаточно библиотеки log4j которая является наилучшим логирующим решением. Однако в случае написания каких-либо библиотек, которые изначально подразумевается использовать в других проектах ты не знаешь наверняка какая логирующая система будет использоваться у конечных пользователей твоей библиотеки. Для этого и используется slf4j враппер - таким образом ты оставляешь выбор логирующей системы конечным юзерам твоей библиотеки. А они этот выбор осуществляют через подкладывание в класпаф API и бридж либов как я описал чуть выше.
>>960481 >кококо, джава не оверхедна, где пруфы >на >кококо а вы туда, туда посмотрите
Лол, джависты даже не отрицают, что джава оверхедный кусок говнища, раздутый одним бизнесом, чтобы грести бабло с другого. Только юный фанбой, мечтающие писать игрули на свой дешевый андроид, верят в чистоту кода джавы.
>>960756 абстракция над доступом к БД нужна? Нужна. Абстракция над над слоем DAO? нужна Абстракция над бизнес-логикой? Нужно Абстракция над вебом? Нужно Веб-сервер? Нужен
>>960759 Все просто. Всякие верстальщики Javascript и дебилы-байтоебы не понимают зачем нужны ООП, абстракции, интерфейсы. Ведь можно написать код и он будет работать без всего этого. Главное потом к нему больше не притрагиваться.
Поэтому в силу абсолютного непонимания и петросянят про абстрактные фабрики бинов и "оверхеды".
Абстрактный синглтон базы данных. Синглтон mysql Фабрика баз данных Регистри, хранящая фабрику баз данных Абстрактный строитель вывода Строитель вывода из SQL Абстрактный наблюдатель базы Наблюдатель за mysql Посредник, принимающий сообщения от наблюдателя Абстрактная стратегия выбора баз данных Стратегия выбора Mysql Абстрактный декоратор стратегии выбора базы данных Фабрика стратегий выбора баз данных Посетитель, запускаемый посредником при получении сообщения от наблюдателя Заместитель, принимающий посетителя и решающий, делегировать ли команду вывода виду Абстрактный вид Вид CLI Абстрактная фабрика видов Фабрика видов, возвращающая инстансы видов CLI Прототип CLI-вида, используемый CLI-фабрикой Абстрактная модель Абстрактный ORM ORM для Mysql Модель, работающая с MySql-ORM сущностями Абстрактная активная запись Активная запись для mysql-ORM моделей Абстрактный синглтон хранения моделей Синглтон, хранящий активные записи Абстрактный синглтон хранения видов Синглтон, хранящий CLI-виды Абстрактное мементо Мементо активной записи Mysql-ORM модели Абстрактная команда SQL-команда
>>960774 Архитектура жава-приложения: 1. договариваемся к американской компанией, что сделаем софт за половину стоимости. 2. нанимаем сотни индусов русских студентов за ЖРАТ. 3. лепим невменяемое говно из жавовских опенсорсных быдлиотек, сдобренное говнокодом студентов под управлением виабушных акхикектогов. 4. слегка проябываем дедлан, поэтому в конце добиваем код хаками, лишь бы запустилось (тем более выясняется, что акхитектогы напроектировали неудобную и нерабочую хуйню, зато по умным книжкам, которых они начиталсь). 5. ???? 6. Единоразовый PROFIT 7. Заклюючаем договора поддержки и сажаем на поддержку в 3 раза больше жавообезьян, чем было на разработке (оно и понятно, написать хуйню легко, а вот как потом её сопровождать?). 8. Дополнительный PROFIT в течение многих лет.
>>960768 нет, конечно есть перегибы. Вот на работе такой желающий перемен гик получил власть, теперь я ебусь с этим зоопарком orm, spring-data, cassandra, абстракция над кассандрой для получения SQL92, распределенный кеш, и ещё добрый десяток новомодных дилд.
Я считаю что кроме старого доброго SQL и JdbcTemplate ничего не нужно
>>960778 > Я считаю что кроме старого доброго SQL и JdbcTemplate ничего не нужно Выбрасывай JdbcTemplate нахуй и используй jOOQ. > Вот на работе такой желающий перемен гик получил власть, теперь я ебусь с этим зоопарком orm, spring-data, cassandra, абстракция над кассандрой для получения SQL92, распределенный кеш, и ещё добрый десяток новомодных дилд. И чем ты недоволен?
>>960781 >jOOQ посмотрел одним глазом. Это что-то типа QueryDSL? Если да, то: 1) Нужны некие классы с маппингом, описывающие структуру таблиц. В случае сложных запросов это проблематично 2) Невозможно понять что генерирует эта дилда, и как это дебажить. Невозможно взять запрос и скопировать его в консольку СУБД. 3) Является ли эта дилда потоко-безопасной?. С QueryDSL возникали проблемы.
>И чем ты недоволен? все эти новомодные дилды суть разворот в прошлое, во времена до создания реляционных БД. Как кстати и микросервисы
>>960759 >абстракция над доступом к БД нужна? Нужна. Зачем абстракция над доступом? Ты наверно хотел сказать про JDBC-драйвер? Но это драйвер для владельцев БД, конечно в плюс, что саны сделали стандартизированный драйвер (вообще многое что грамотно они сделали). В общем программирование от интерфейсов - это гуд. Но это фича ООП.
>Абстракция над над слоем DAO? нужна Нет, нужен стандартны DSL для доступа прям из сервиса, DAO это костыль. Если блять дебилы ставят транзакции прям над сервисами (аннотации), то какая нахуй DAO им, они уже сервис-слой привязывают к БД.
>Абстракция над бизнес-логикой? Нужно Что это и зачем это, не трогай бизнес-логику, без премии оставлю.
>Абстракция над вебом? Нужно Нету его, есть сервлеты времен CGI, а риально абстракции (набора интерфейсов) чтоб писать одинаково просто на всех embedded серверах нет. Spring mvc не абстракция, это фреймворк (тяжелый и бестолковый).
>>960789 >Нет, нужен стандартны DSL для доступа прям из сервиса, DAO это костыль. как ты тогда абстрагируешься от способа хранения данных?
>Что это и зачем это, не трогай бизнес-логику именно для этого слой бизнес-логики должен быть в отдельном слое, максимально независимом от окружения
>Нету его можно использовать сервлеты, можно использовать spring-mvc, можно ещё какую-нибудь новомодную дилду использовать. И вот как раз для безболезненной смены дилд и нужно выделять это в отдельный слой
>>960794 Да есть там сервлеты, специально для таких дебилов маркетологи заставляют добавлять это говно везде, но прячут так глубоко, что ты их не увидишь. И получается - да ваша "ХУЙНЯ_НЕЙМ" поддерживает сервлеты, берем! Дебилы, бля (с)
>>960794 >Или сервлеты оно где-то внутри создает? Оп-а! Эксперты /pr начали что-то подозревать! Ну ты же уже спизданул десятком постов выше о том, в чем не разбираешься, с полной уверенностью знатока?
>>960797 >как ты тогда абстрагируешься от способа хранения данных? Этой же DSL
>>Что это и зачем это, не трогай бизнес-логику >именно для этого слой бизнес-логики должен быть в отдельном слое, максимально независимом от окружения Сервис-уровен. У скрипто макак это моделью называют.
Запомни, иногда поддержка абстракции обходиться дороже чем если бы мы перелопатили руками. Я уже привел пример, что стало нормой вешать транзакции на сервис-слой и почему это всех устраивает? Потому что в реально никто не меняет каждый день одну БД на другую. В итоге все это сосалово для успокоения.
>>960788 Типозащищенный sqlный билдер с dsl sql-like в виде fluent interface. Поддерживает 100% всего, что можно написать на просто SQL. И предоставляет определенную абстракцию от конкретной реализации реляционной базы. > 1) Нужны некие классы с маппингом, описывающие структуру таблиц. В случае сложных запросов это проблематично Поддерживает как просто стринги в значения таблиц и колонок, так и использование автогенерируемых классов, описывающих структуру БД. С ними как раз вся годнота и есть, решая кучу проблем еще на этапе компиляции. Алсо автогенерация охуенно в devops-практики вписывается. > В случае сложных запросов это проблематично Никаких проблем. > 2) Невозможно понять что генерирует эта дилда, и как это дебажить. Невозможно взять запрос и скопировать его в консольку СУБД. Посмотри примеры - это SQL и есть. Генерирует как есть - но вообще конкретные запросы в дебаге. Оттуда копируешь и вставляешь, если нужно. > 3) Является ли эта дилда потоко-безопасной?. С QueryDSL возникали проблемы. На 100%. Объявил DSLContext одиночной фасолиной и инжекти его хоть в анус Сатаны и долби одновременно туда тысячью хуев. > все эти новомодные дилды суть разворот в прошлое, во времена до создания реляционных БД. Хуй там падал в три пизды. Если задачу можно выполнить с помощью реляционной БД - следует ее использовать. Но есть задачи, где реляционщина уже не оче. Другое дело, что noSQL всякие евангелисты и прочие барухи продвигают как замену SQL, что нихуя не верно. >>960796 Пердолик тут как раз ты, раз ебашишь plainSql в приложениях, а не делаешь это правильно.
>>960801 А теперь включи свой школьный мозг и подумай почему потребовалась абстракция над уже существующей SQL-абстракцией?? М? Давай ты сможешь понять, что в реале у каждый бд все равно есть своя специфика и приходиться надстройку делать - опять!
>>960789 > Если блять дебилы ставят транзакции прям над сервисами (аннотации), то > какая нахуй DAO им, они уже сервис-слой привязывают к БД. Сука дебил нахуй ты ебаный, я ебал.
>>960807 > Я уже привел пример, что стало нормой вешать транзакции на сервис-слой и почему это всех устраивает? Потому что транзакции это сервисная логика.
>>960815 Твой выглядел дополнением предыдущего поста ананаса. Ок, отвечу еще раз. > Кстати, ты не пердолик случаем? Ну типа: только plain sql - только хардкор! Фреймворки не нужны! Зато контроль! Нет. Это хуйня.
Единственный недостаток plainSQL - что он не проверяется на этапе компиляции. Но твоя дилда тоже не может гарантировать корректность запроса и соотстветствие структуры БД. И так и так это решается только юнит-тестами с реальными запросами к базе.
>>960814 >Потому что транзакции это сервисная логика. Ну вот приехали. Окей, я переезжаю на БД без поддержки транзакции - мой сервис слой виноват, или ты тупое говно?
>>960807 >Этой же DSL а если я захочу заменить БД на какую-нибудь заглушку для тестовых целей?
> Я уже привел пример, что стало нормой вешать транзакции на сервис-слой транзакции и предназначены для вешанья на бизнес-слой. Транзакции тесно связаны с бизнес-логикой
>>960812 И вот именно поэтому слой DAO нужно писать свой, под свою базу. А не надеяться на универсальный ORM, что он магией сделает тебе заебись. ORM тоже не гарантирует абстракцию над базами. В нем тоже нужно хуячить nativeSQL
>>960823 > Но твоя дилда тоже не может гарантировать корректность запроса и соотстветствие структуры БД. Авотхуй. Как раз для этого и сделано. У тебя нихуя не скомпилируется, если метод from проебал или тебя отвлекли и написал frm. У тебя нихуя не скомпилируется, если ты используешь несуществующую таблицу или колонку. У тебя нихуя не скомпилируется, если проебался и суешь не тот тип в колонку. И другая удобная хуйня.
пожалуй единственное для чего нужен orm - в нем удобно делать джойн связанных сущностей. Но это порочная практика, и plainSQL закономерно бьет по рукам за попытку это сделать.
окай. Поясните мне, в чем сакральный смысл spring-boot? Для меня это выглядит как вместо профессионального перфоратора взять детскую игрушку, ибо она легче, и с ней разберется даже ребенок
>>960827 >Нет, это ты долбоеб, раз решил переехать на БД без поддержки транзакций, но при этом твой код транзакционен.
Ох я ржу, а где же гибкость и вся чипуха? По твоей логике и DAO не нужно - ведь "раз решил переехать на другую БД" Дебилы, бля (с)
DAO - дает абстракцию над БД. При смене БД я меняю только DAO, за счет чего мой сервис слой остается без изменения. Если я меняю БД и это затрагивает и сервис-слой - значит ты долбаеб натянул зависимость на бизнес логику
>Джава гибка и абстрактна. >Но если я поменяю БД то это может затронут бизнес-слой. >Ко-ко-ко - это база виновата, это она такая плохая, потому что должна что-то обеспечивать (транзакционность). Лол, хуй она тебе что должна (маня-мирок джава-индусов)
>>960873 > Транзакция - группа последовательных операций с базой данных, которая представляет собой логическую единицу работы с данными. Абсолютно неверно.
С такой логикой простое выполнение select from table; select from table; является транзакцией.
Погугли еще и попробуй еще раз. После этого перейдем к зачем они нужны.
>>960874 >Транзакция - группа последовательных операций с базой данных >Сервис-слой это бизнес логика, изолированная от базы данных по средством слоя DAO Помогите Доре с логикой
>>960882 > >Транзакция - группа последовательных операций с базой данных > Абсолютно неверно. > Погугли еще и попробуй еще раз. После этого перейдем к зачем они нужны.
Дора, почему ты такая тупая шлюха? Пиздуй делать что говорят.
Сильно абстрагированные фреймворки вопреки бытующему в среде «корпоративных менеджеров» мнению, не упрощают, а напротив — радикально усложняют разработку и поддержку (см статью, собственно). Это новая религия (слаба роботам, не особо популярная в среде профессиональных разработчиков, как это может показаться после чтения Хабры) возникла из иллюзорных желаний непременной монетизации любого созданного за 15 минут кода, с легкой руки Google и иже.
Популярная нынче бизнес-модель хипстер-стартаперов: берем опенсорс-библиотеки, заворачиваем это все в наши классы и методы, называем это NewBuzzword framework, придумываем этому применение, которое конструирует «уникальное предложение», делаем набор примеров в рамках концепции «уникального предложения» и пишем документацию. Все это выкладываем в свободный доступ и потом везде пишем длинные статьи сдобренные красивой инфографикой в духе «теперь вы можете за 1 минуту написать то, на что другие тратили годы» в журналах для молодняка, а в других журналах (для бизнесменов): «реальная оптимизация бизнес-процессов с новым фреймворком NewBuzzword».
Это настолько хорошо работает, что миллионы неофитов по всему миру с легкостью индокринируются в эти новые секты. Результатом этого воистину религиозного поклонения является миллионы денег налогоплательщиков выбрашенных на ветер и километры говно-кода который никто никогда не сможет поддерживать без необходимости переписывать все заново с нуля каждый раз, когда система в какой-то своей части устаревает или требует расширения спектра применения.
>>960915 Ты спросил что такое транзакция. Чел кинул и ткнул носом что это ответственность слоя DAO Вместо конструктивного ответа - подрыв пукана, отрицание, крики что все не так.
>>960942 > Ты спросил что такое транзакция. > Чел кинул Ты чел ответил абсолютно неправильно, о чем ему сказали два человека, причем несколько раз. Ты чел порвался и начал верещать врети. > это ответственность слоя DAO Пусть ты чел прекратит обсираться с подливой и возьмется за ум.
Возьмись за ум, почитай что такое транзакции, чем они отличаются от просто выполнения нескольких операций и зачем вообще нужны. Потом прочитай зачем нужен DAO и к чему относится транзакционность. Не надоело троллить тупостью и глотать мочу?
>>960985 Окей, мало сегодня ваши жопы рвались. Что такое транзакция на сервисном слое? И самое главное зачем она там есть, если сервисный слой не имеет отношение к доступу хранения данных (т.е. провайдером данных в данном случае может быть тупо файловая система (простые файлы))?
>>961022 ...я всегда любил джавистов, они грезят надроченными теориями абстракций, готовы лепить слой за слоем из фреймворков, чтобы добиться какой-то гибкости которую никогда не используют. А в реале, когда начинаешь копать их код, понимаешь, что они умудряются запутаться в своих же абстракциях и вообще лепят противоречивые вещи.
То что так можно разводить бизнес, оно то понятно, но себя то не обманывайте.
>>961022 Смотри. У тебя может быть обращение с двумя базами данных или там обращение к бд и работа с jms. И физически у тебя будет две транзакции, но бизнес-транзакция - одна. Так на каком слое с ней обращаться?
>>961022 ты троллишь что ли? допустим у тебя несколько обращений из сервиса в разные репозитории (дао). последняя завершилась неудачно, нужно откатить предыдущие. какую-то левую хуйню про абстракции загоняешь, при чём тут это вообще
Блядь, можно пример случая, когда без интерфейсов и абстрактных классов никак\дают НУ ПРЯМ ОХУЕТЬ ЯВНОЕ ПРЕИМУЩЕСТВО. Год не притрагивался к ООП, снова до них дошел и снова не понимаю нахуя они НА ПРАКТИКЕ нужны.
>>961224 Универсальность, гибкость. Ты можешь отправлять в метод параметром любой класс, с любым набором свойств. Иными словами, объем кода сокращается и он становится более элегантным.
>>961267 т.е. ты говоришь о случае когда у нас есть некий класс А с методом, принимающим на вход объекты типа интерфейс Б, от которого могут быть наследованы классы В, Г, Д и т.д.
>>961283 >Перегрузок чего? Методов. >>961272 Опять же, ты можешь написать просто Б.Хуй(), а выполнится нужный реализованный метод у нужного класса (В.Хуй() или Г.Хуй() например).
>>961286 >Опять же, ты можешь написать просто Б.Хуй() А вот это уже интересно, а что будет если реализация есть у 2 классов и она одинаковая по параметрам?
>>961291 Реализация по параметрам и так будет одинаковой. Ты должен реализовать метод один-в-один как он описан в интерфейсе (с тем же списком параметров).
>>961295 >А это тогда что по-твоему? Батюшки, вот это я хуйню несу-то. Сам только как месяц жабу по Хортсману начал осваивать. И что самое интересное, не могу вспомнить, где нашел текст про отсутствие перегрузок. Сейчас перечитал - все есть. Чудеса, блеать.
Бляя, пасаны, кто-то ебашил на реакторе/рхжаба/реактивх? Как сделать по-нормальному несколько РЕСТ калов асинхронно, чтобы не приходилось ждать пока первый калл ответит, только потом делать второй и т.д? И чтоб кода помеьнше было, а то сука не гуглится блядь а времени особо нет.
Аноны,учусь в вузике на заочном,решил вкатиться в работу. Дали тестовое,где одна из частей задания - что бы у User была возможность дать некий Book другому User (либо положить его в кучу). Делаю все на Spring+Hibernate ,но не могу найти инфы по orm one-to-many и подобному(желательно либо на русском,либо на конкретном примере). Так же из требований - использование HQL,в офф доках не нашел таблицу соответствия запросов sql -> hql Анон,выручай
пацантрэ, абасцыте меня или убейте! не могу в спрингсекьюритиконфиге разграничить доступы к страничкам в зависимости от пользователя @Override protected void configure(HttpSecurity http) throws Exception {
.and().logout() .logoutRequestMatcher(new AntPathRequestMatcher("/logout")) .logoutSuccessUrl("/").and().exceptionHandling() .accessDeniedPage("/access-denied"); } гуглил примеры. но почему-то у меня криворукого все могут залогиниться как хотят и под правами какие сами рандомно выпадут. хелпмиплиз
Есть json такого формата. Есть иерархия классов Response, который имеет в себе массив Photo (2ой скрин). В общем, я пытаюсь HQL-ем вытащить максимальное значение max_sol (3-ий скрин). Idea говорит, что класс Rover не замаплен. Но @Table(name = "Photo") говорит, что замаплен. Где я дебил?
>>961390 Тебе нужно разделить работу с базой и работу с джсон. Так называемое "разделение ответственности". Одни классы для работы с базой, суффикс Entity, другие для json, суффикс я бы сделал JsonDto. Между ними конвертер, конвертирующий Entity в JsonDto. Это нужно чтобы структура базы не мешала структуре джсона, и наоборот. И чтобы в случае изменения базы джсон бы не пострадал.
>>961381 Во-первых, не выкладывай код напрямую сюда. Во-вторых, отформатируй нормально эту нечитаемую кашу. В-третьих, зачем там два раза страница логина? В-четвертых, я тебе, мудаку, уже выше скинул ответ на вопрос про 2 "домашние" страницы. Что за говно ты сюда приплёл вместо редиректа?
>>961324 Бляяя, короче, всё хуйня, давай сначала, походу я нихуя не шарю в реактиве и эта хуйня вообще не для паралелизации вызовов. Да ну нахуй, там столько костылей надо запиливать, чтобы добиться это паралелизации вызовов. Я ещё даже нашёл на стаковерфлоу в ответах, что типа паралезация в обсерверах хуйня и не нужна, иди нахуй. Как же тогда красиво заебашить несколько вызовов паралельных? Через акку? Она-то норм хоть к спрингу прикручивается?
>>961390 >серилизовать энтити в жсон ИДИ НАААХУУУУУЙЙЙ ПИДОРАС ЕЩЁ НЕБОСЬ СЕССИЮ ОТКРЫВАЕШЬ В ВЬЮХЕ ЧТОБЫ ДЖАКСОН СМОГ ЗАСЕРИЛИЗОВАТЬ ВСЕ ЗАВИСИМЫЕ ЭНТИТИ??
>>961424 Да нет, у меня для этого сервис есть. Который к dao обращается. Не знаю от чего у тебя так бомбит. А если и бомбит, то можешь и расписать правила хорошего тона для спринга.
>>961409 >>961409 >>Во-первых, не выкладывай код напрямую сюда. >>Во-вторых, отформатируй нормально эту нечитаемую кашу. прошу прощения http://pastebin.com/zmcd3X6E >>В-третьих, зачем там два раза страница логина? скопипастил лишнего, это все равно ничего не меняет >>В-четвертых, я тебе, мудаку, уже выше скинул ответ на вопрос про 2 "домашние" страницы. Что за говно ты сюда приплёл вместо редиректа? если я делаю по примеру у меня ошибка "There was an unexpected error (type=Method Not Allowed, status=405). Request method 'POST' not supported"
>>961437 Если сложные сущности и сложные запросы, то тем более нельзя юзать хибернейт. Ты потратишь больше времени, пытаясь запустить это и понять почему оно тормозит
>>961441 Я сейчас говорю не о говноподелках, которые ты пилишь на коленке один, а о серьёзных корпоративных приложениях, которые делаются по несколько лет и за это время ещё команда успевает пару раз смениться. И я тебе гарантирую, без JPA ты ебанёшься.
Вечер в хату, програны. Посоветуйте, какие пакеты, которые чаще всего применяются, лучше вызубрить? Их дохуя, но чувствую что чаще всего применяются несколько. И ещё вопрос, с каких реально полезных приложений для тренировки начать? Имею в виду не всякие хеллоуворды и калькуляторы, а полезные например примочки, которые при данном начальном уровене тяжело написать но хорошо в итоге натренирует.
>>961444 > Я сейчас говорю не о говноподелках, которые ты пилишь на коленке один, а о серьёзных корпоративных приложениях, которые делаются по несколько лет и за это время ещё команда успевает пару раз смениться. И я тебе гарантирую, без JPA ты ебанёшься. Угадай почему одинбанх бузинес онлайн сейчас вполне успешно переписывается в том числе и с хибернейта на поделие одного швейцарского пацанчика.
>>961444 >а о серьёзных корпоративных приложениях, которые делаются по несколько лет и за это время ещё команда успевает пару раз смениться. Для тебя это повод для гордости? Я участвовал в проекте: принять данные по xml, расшифровать и сохранить. Этот простейший круд команда из 5 человек делала в течении года, и так не до конца. При этом оно падало от перегрузки даже на тестовой среде
Следующим проектом была система такси федерального масштаба, где на серверной части был я один. Второй проект был в разы сложней, и при этом запущен в продакшен через полгода после начала работы
>>961456 > Я участвовал в проекте: принять данные по xml, расшифровать и сохранить. Этот простейший круд команда из 5 человек делала в течении года, и так не до конца. При этом оно падало от перегрузки даже на тестовой среде Лолблять почему?
>>961457 использование всех возможных дилдаков, модных в то время: BPM, хибернейт, веб-лоджик, дженкинс, оракл, ещё какие-то хрени. На компьютерах разработчиков это было не развернуть из-за оракли, bpm и кучи настроек. Тестовых серваков было пара, при этом надо было изъебываться чтобы посмотреть логи. На тестовые серваки конечно-же нельзя просто так залить, заливается через коммиты с кучей валидаций, тесты и капризный дженкинс. Ни о каком дебаге конечно не могло быть и речи. Итого пробный запуск своего кода растягивался на полдня. Ещё полдня чтобы расшифровать логи и понять что не так. Ну это примерно как в старые времена, когда программы набивали на перфокарты и отдавали на ввод операторам, а результат ты мог узнать только через пару дней, в виде текста. Плюс постоянные митинги, ибо руководство захотело поиграть во все эти скрамы и аджайлы.
>>961459 Но это больше смахивает на руожопость тех кто такую инфраструктуру породил. Гибернейт тут явно не причем. Наломать таких дров можно успешно и без БД с гибернейтом в качестве ОРМ.
>>961473 ну вот когда писал это такси, тоже использовал хибернейт. Потом пришлось выпиливать его из всех частых запросов. Оставил только на запросах для админки и диспетчеров.
>>961489 именно что постоянные гомофулсканы, подгрузка связанных сущностей вопреки запретам. Плюс при сохранении/обновлении оно обновляет все поля, даже те которые не нужно. Убрал слой Entity - памяти стало жрать в два раза меньше
>>961492 Ну например юзать гибернейт для формирования различных браузеров в системе или же отчетов - верх идиотизма. Такие структуры как правило агрегируют данные из разных таблиц в форме далекой от ваших задефайненных сущностей. В таком случае операцию будут затратны по ресурсам - здесь стоит применять Native SQL приподдержке профайлера вашей СУБД, с последующей конвертацией в POJO через ResultTransformer того же гибернейта (хотя в JPA 2.1 появился более удобный инструмент).
Это первое. Второе - понимать то с какими данными работает ваша система в конкретной ее части и далее вытягивать из базы их один раз через JPQL(HQL), дабы в дальнейшем не было кучи мелких подзапросов.
О таких вещах вообще не думают когда работают с ORM а потому получается что инструмент во всем виноват.
Помогите, пожалуйста. Что-то я не понимаю. Вот есть RestService и вылетает ошибка java.lang.NullPointerException net.yan.service.DtoConverter.convertToModel(DtoConverter.java:22) Окей, я стал в addPhoto передавать не ResponseJsonDto, а сразу массив PhotoJsonDto. Не помогло. Окей. Проверил, а получаю ли я вообще ResponseJsonDto. Да, получаю и id, imgSrc смог спокойно вытащить. Вроде бы, и конфиг правильно настроил. https://github.com/Kabowyad/Test-Project/tree/api-test/src/main/java/net/yan
>>961496 Верно подмечено - ORM это всегда компромисс. Вы получаете удобство в одной части прикладных задач, но в другой будут возникать траблы. Выходом как правило явялется гибридное решение - применять ОРМ там где ОРМ справляется хорошо, в остальных местах использовать Native SQL.
>>961513 Все зависит от объемов. Если это мелко проект - спорить не стану. При количестве сущностей около пятидесяти - native sql становится проблемой. Собственно из-за этого и стали придумывать ОРМ, что бы не писать огромную кучу кода. И тут все по Макконелу: меньше кода -> снижение сложности -> упрощение в сопровождении и меньшее шансов наклепать баги.
>>961439 > если я делаю по примеру у меня ошибка > "There was an unexpected error (type=Method Not Allowed, status=405). > Request method 'POST' not supported" Читать мы, конечно, не умеем.
помидоры, подкиньте пожалуйста идею веб аппликухи, чтобы потренироваться в спрингах, хиберах и т д, что использует большинство нормальных гребцов. за пару лет работал только с сервлетами и osgi. в связи с перекатом на другое место работы, хочу немного подготовиться. у самого в мыслях только бложики да твитторы
>>961523 >>961523 >>Ебись-дебаж сам(как и все работающие прогеры) дык я и так ебусь, параллельно тут спрашиваю малоли кто что-нибудь знает. я еще не работающий и с такой ебланской башкой я думаю раотать еще буду не скоро >>Читать мы, конечно, не умеем ну конечно ты тут один у нас читать умеешь, толкь интересно схуали метод пост нот супортед!? значт придругом конфге он супортед, стоит поменять конфиг и уже нет, куда он делся? мм?? эй метод "ПОСТ" где ты???? я порвался, можете меня уносить!
>Ты не знаешь что такое транзакция, дай определение. >На... >Все не правильно, "врети"! >Хорошо, скажите тогда правильное определение >Не скажу, но вот смотри, если тут... Дебилы бля (с)
Баранам дали DAO чтобы те отделили код от носителей данных, так джава-макаки умудрились транзакцию (вещь, исключительно специфичная для БД) - натянуть на сервис слой.
Нахуй вам тогда DAO, если вы уже запороли абстракцию, возьмите сразу Active Record в сервис слой - это будет однохуйствено (вы так же будете привязаны только к носителю реляционных БД, но как макаки не будете писать бойлерплейт).
>>961614 Да заебешься каждому мимокрокодилу что-то там доказывать. Итогом все равно будет "азаза, слив засчитан", а за ним придет следующий и все по новой.
Сами отвечают в стиле азаза. Ничего конструктивного я не увидел (даже банального "правильного" определения транзакции в контексте сервис слоя) а потом аноны плохие. Ну то есть, как бы ты на себя не дрочил сейчас (на свое ЧСВ), ты ровно такой же скам который сам только что и описал.
PS ...и да, за огрехи архитектуры топят единицы, так что не пизди что приходится часто доказывать мимокракодилам подобное.
>>959105 он не для веба создавался. net/http был впилен на скорую руку за месяц до релиза чисто ради привлечения внимания\популярности. пилить на го прикладуху типа веба - это миллионы велосипедов. на нем байтики ебать хорошо, но это типа непопулярно сегодня
>>959011 (OP) Аноны, как в RxJavе сделать цепочку обсерваблов? Вот допустим я хочу передавать данные из одного обсервабла в другой, из него в третий и т.д, а в конце получить нужный мне объект. С помощью чего это можно реализовать?
Сап джаваны, работаю макакой в тырпрайзе второй месяц. Пишу в основном на hql, но иногда пригодиться на netive sql. Пазовые вещи знаю, трудности возникают редко. Но все же, насколько важно глубокое знание sql, ну и что посоветуете почитать ?
Привет, двач-джавач. Долгая ебля с JSON принесла свои плоды и что-то стало вырисовываться. Мы имеем ответ от сервера в виде пока что говнокода - лишь бы работало и выдавало JSON-строку. Так что тут не придирайтесь. Вот она
А теперь самое главное. Когда в строке для перевода было Tale во время работы - всё работало. Теперь же выдает нуль поинтер эксепшн. Но работает со словом хелло. Вы можете сказать мол, оно ж тебе показывает, где ошибка. Так вот - ошибка в якобы вот тут
Да вот только если закомментить метод и просто распечатать линк, то мы увидим, что поле syn действительно есть и эксепшн не может появиться, потому что ответ JSON от апи построен по одному формату! В общем, работает всё раз на раз, в чём подвох-то, джаваны?
Алсо, знаю, что говнокод, извините. На слове Hello исправно выдает мне массивы значений. Вот пример вывода
hello Перевод привет Значения [hi, welcome] Синонимы [приветствие] Переводы [привет]
Пишу код на Java Swing в редакторе от NetBeans. Формочка состоит из текстового окна и кнопки. Хочу, чтоб текстовое поле было расширяемое (растягиваемое), а кнопка-нерастягиваемая наоборот (при изменении размеров окна). Сейчас набросал пикрилейтед, но похоже придется править вручную
Поясните за JNDI, а лучше - дайте какой-нибудь годный туториал, где всё будет кратко и по делу. У меня какое-то очень смутное представление о нём, то есть я понимаю, что это API для доступа к службам имен и каталогов, но нахуя? То есть мы можем по этому имени обратиться к службе, файлу или там компоненту, но зачем? Разве нет других способов? Если есть - почему именно JNDI?
>>961878 Твоя программа говорит дай говно, буду в нем рыться.
Ты не хочешь в программе зашивать адрес говна, его сорт и вид. Ты пихаешь программу в сервер приложений, где админы сервака создают и настраивают конкретные типы говен и дают им имена. И твоя программа юзает предоставленное админами говно, не заставляя тебя ебаться с конкретными реализациями говен, так как создание и настройка говна это админская работа.
А если еще в файлике с jvm пропертями сделаешь, чтобы можно было указывать конкретные имена jndi говен, чтобы твоя программа работала с говном не по конкретному имени говна, а по проперти имени говна, так вообще будешь помидоркой сука ты ебаная хуила беспардонная.
>>961555 дружище я победил наконец-то это хуету!!! во пиздец я тупой был (да таким же и остался). спасибо, что хоть немножк направлял меня, ну тоси-боси там это. кароч заебись
Суп, господа. Нужно настроить конвертацию документов из docx в pdf. Пробовал ебашить через apache.poi и docx4j (3.2.2), форматирование идёт по пизде. Попробовал docx4j 3.3.3 - работает заебись, но он на самом деле не сам конвертирует а гоняет документы на сервак и там конвертирует, хотите на локалке - купите свой сервак и разворачивайте, не вариант. Посоветуйте нормальные варианты, наверняка многие ебались с подобными задачами.
Жавач, что по FX глянуть? Вроде научился лепить формочки в Scene Builder и прикручивать ксс, но думаю, упускаю кучу основных возможностей, например биндинги, бины какие-то, обсервабл коллекции и т.д. Желательно на русском, ну или на иглише, но чтоб последовательно все, а не короткими хау-ту.
>>962495 >>962498 Лол, тупые хомячки, жрущие проприетарщину. >>962493 Выбирай Eclipse, хоть он и старый, но он свободный. Это главный критерий любого здравомыслящего программиста и вообще свободного человека.
Всем привет. Может кому советом будет не впадлу помочь, потому что не у кого толком спросить. В чем суть: На сколько сложно вообще джаверу релоцироваться из говностраны я например из Беларуси с говнообразованием в райские штаты и прочую европу? И легче ли это сделать учась в вузе там?
Кстати, а чем тогда собирать, если Maven и Gradle ненужное говно, как тут пишут? Я пытался SBT освоить, пиздец какой-то, непонятно ни хрена, документации нормальной нет.
>>962499 Пока что ничего такого не нашёл, чтобы при этом не ломалась разметка. Вообще я удивлён, я думал это достаточно часто встречающайся задача. И проблема втом, что это не просто пара обзацев текста с картинками, а ебанутые печатные форм с таблицами, прочерками, местами отформатированные пробелами и всё такое, пиздец, в общем.
>>962500 Это понятно, но мне нужна конвертация в рамках уже существующего приложения.
>>962998 Хоть хуита выглядит круто и удобно, но в функциональном стиле в легкую можно сделать нечитаемую хуиту, логику которой ты сам забудешь через неделю. Мне кажется, в разумных приделах норм. А вообще на работе до сих пор на 7 сидим, так что я с фичами 8 только поверхностно знаком.
>>963021 Да хуй знает, наверное можно как-то через опен офис, надо поискать. Пока что всё, что я узнал - пакетов для конвертации дохуя, но все они нихуёво так стоят.
Анон,можно ли в Spring security привязать авторизацю из xml файла к сущностям в бд? Ну типа у меня есть в бд таблица с User ,там есть user name="vasya" lname="popov" password="huilo",в настройках спринга висит <security:authentication-manager>,где все эти юхеры перечисленны. Можно как то донастроить в этом файле,что бы при аутентификации эта хуйня лезла в бд,связывала username из файла с username из бд и открывала операции для работы конкретно с ЭТИМ user из базы данных
Есть ли что-нибудь не связанное с вебом и Android? Раньше (года 2 назад) попадалась вакансия на микроконтроллеры, сходил на собеседование и соснул, ибо не знал OSGi.
>>963001 >Это понятно, но мне нужна конвертация в рамках уже существующего приложения. Тогда можешь и не пытаться. Или платить дохера денег. Enjoy microsoft proprietarshina
>>963088 Ладно, может можно придумать какое-то альтернативное решение? Суть в том, что у пользователя должна быть возможность просматривать превьюшки документов, хранящихся в системе, собственно поэтому и происходит конвертация доков в пдф.
>>963112 >WARNING! This project is no longer maintained The code has been moved to GitHub in the hope that somebody else will fork and maintain it. Вот это немного смутило, если честно. Да и всё равно нужен установленный ОО.
>>963107 Потому что я тупой и боюсь, что это будет сложно, а я никогда ничего такого не делал. Ну и сервер на стороне заказчика, доступа к нему нет, а я слабо представляю, как это всё должно настраиваться. Хотя, похоже что у меня нет выбора, видимо придётся так и делать.
>>963121 >Потому что я тупой и боюсь, что это будет сложно Так почитай, как сервисы на C# делать. С микрософтовским офисом он точно из коробки умеет работать, редактировать документы, выполнять VBA скрипты... На работе когда-то этим занимался. Если нужно именно на жабе - ищи библиотеки для прикручивания к ней COM/ActiveX, это единственный способ доступа к вордовскому API.
> Stream.of(huita).filter(...).forEach(...) Поясните в каком порядке это все выполняется. Я правильно понимаю что сначала массив полностью прогонится через filter, а потом то что прошло проверку еще раз в forEach? То есть 2 отдельных цикла. Тогда если мне нужно исключить всего 1 элемент, то получается O(n^n - 1), когда в обычном цикле эти 2 операции можно сделать за линейную сложность.
>>963223 нет, каждый элемент пройдёт через цепочку только один раз. первый элемент проходит через фильтр - дальше к нему применяется то, что написано в foreach, второй не прошёл фильтр - отбрасывается.
>>963018 Двачую >>962998 если в комбинаторах неоднократно что-то большее, чем method references или если лямбды из больше чем одной строки, очевидно хуйня получается. Как раз наблюдаю один такой проект - сплошная лапша нечитаемая.
>>960775 >невменяемое говно из жавовских опенсорсных быдлиотек, сдобренное говнокодом студентов под управлением виабушных акхикектогов. Люто, бешено двачую, на неделю меня хватило, но не более. В жаву больше ни ногой.По крайней мере бесплатно..
И не догадывается, что в его динамикодрисне они тоже есть, только могут называться аляповато и бессистемно, а для ридеров/райтеров в utf8, скажем, выпускают даже несовместимые версии языка/vm.
Пагни, по хардкору, что нельзя сделать на Питоне или ЖСкрипт, то что можно сделать на Джаве??? Чем он отличается и чем он особо хорош. Объясните пожалуйта буд-то вы объясняете своему инвестору, которые выделяет деньги одному из трёх стартапов, 1 - Джава, 2 - Питон, 3 - ЖаваСкрипт.
Котаны, нужен ваш совет. До недавних пор писал исключительно бекэнд, а тут внезапно потребовалось педалить ещё и фронт. Какую книгу/цикл статей можете посоветовать, чтобы в сжатые сроки уложить в голове кашу из жс, ангуляра и рактива? Сейчас каждый фикс превращается в жопную боль на весь день, потому что нет понимания, что и как там работает.
Аноны,помогите студенту. У нас есть две сущности,Студент и Книга. Книги можно давать почитать другому студенту. Для этого надо использовать три таблицы Таблица Книга(id,title) Таблица Студент(id, name) и таблица отношений книга+студент(внешний ключ на айди книги,внешний ключ на айди студента-владельца книги,айди текущего читателя) Как это сделать? Пишу на java,так что и пишу тут
Здарова чайники, нужна ваша помощь. Вкатывают в кложур, нужна ваша помощь, есть у меня файл project-stadalone.jar, как мне теперь его распростронять вреди пользователей? Не будут же они его через консоль запускать в виде java -jar target/uberjar/project-standalone.jar лол. Скажет JRE установлен на пеке, что дальше делать с этим jar архивом?
>>976911 Спасибо, о великий некромант :) Я то и сам понял, только нихуя не происходило. Была ошибка одна, но гордый жава-машин стеснялся об этом сообщить, уже пофиксил.
Q: ЧТО СКАЖЕТЕ ЗА ДЖАВАРАШ?
A:Худшая инвестиция в твоей жизни. Огромное количество говнокода, оторванные от жизни задачки, 1000 заданий по выводу в консоль какого-то говна.
Q: Посоны, собираюсь учить джаву по 2/5/20 часов в день. За сколько дней я выучу достаточно, чтобы зарабатывать фрилансом?
A: На джаве фриланса нет. Хочешь фрилансить — дуй в ПХП/раби/1С тред.
Q: Значит, я должен буду всю жизнь сидеть в опенспейсе, конвертируя XML в эксепшны? Ура, мне подходит! С чего начать?
A: Туториалы:
BEGINNER: http://myflex.org/books/java4kids/java4kids.htm
MEDIUM: http://www.tutorialspoint.com/java_technology_tutorials.htm
HARD: http://docs.oracle.com/javase/tutorial/
Книги:
- Head First Java, (2nd Edition) : Kathy Sierra, Bert Bates - для совсем нулячих простым языком.
- Core Java (9th edition) : Cay S. Horstmann, Gary Cornell - тоже для нубасов, но на серьёзных щщах.
- Thinking in Java (4th Edition): Bruce Eckel - для тех, кто уже умеет в программирование на другом языке, но хочет перекатиться.
- Effective Java (2nd Edition): Joshua Bloch - для тех, кто знает джаву, но хочет перестать писать костыли.
Больше здесь: http://www.proklondike.com/books/java.html
- Soft Skills: The software developer’s life manual : John Sonmez - сказки на ночь.
Видео:
https://habrahabr.ru/company/golovachcourses/blog/215275/ : 1000+ часов видео по Java на русском.
Q: Хули все книги на английском?
A: Без английского ты не нужен и можешь смело идти нахуй. Ну или в 1С-тред.
Q: Я не могу в книги. Наткнулся на джавараш, но в самом верхнем вопросе уловил нотки сарказма. С ним все правда плохо?
A: Это очередной курс(выучи джаву за 60 секунд и получай 300к в месяц), основная цель которого - выкачать из тебя деньги.
Q: Пока читаю, все понимаю, а сам ничего сделать не могу. Что делать?
A: Практика, больше практики.
Уровня laba1.pas: http://codingbat.com/java http://codehunt.com
Чутка серьезнее: http://programmr.com/zone/java http://codingame.com/puzzles
Рулеточка: http://postimg.org/image/xdfbvgps9/
Олимпиадка: http://codeforces.com
Примеры той-проектов: http://eax.me/programming-language-learning/
Ежедневные задачки, разделены на три уровня сложности https://www.reddit.com/r/dailyprogrammer
Q: Я выучил кор, достаточно ли этого, чтоб взяли на работу?
A: Лол, конечно нет хотя некоторым всё же везёт.
Цикл статей что в каком порядке учить: http://dou.ua/lenta/articles/java-beginner-guide-1/ (заблочен РосКомПозором, юзайте прокси)
Q: Слышал, SQL знать надо обязательно. Где его учить?
A: Начни с малого: http://www.w3schools.com/sql/default.asp
Затем переходи к: http://www.sql-ex.ru/
Q: Всё это хорошо, но без алгоритмов меня на работу не возьмут.
A: Не беда, вот курсы от Принстонского университета: https://www.coursera.org/course/algs4partI
То же самое но в бумаге: Роберт Седжвик, Кевин Уэйн - Алгоритмы на Java
Q: Я готов к первому собеседованию.
A: Проверь свои знания здесь: http://www.quizful.net/test
И здесь: http://www.careercup.com/
Q: Вопросы на собеседование.
A: http://jsehelper.blogspot.ru/2016/01/blog-post_59.html : куча вопросов с ответами не всегда правильными
http://becomejavasenior.com/blog/2015/07/01/327-inter..
Q: Какие еще ресурсы можно почитать?
A: https://android-arsenal.com/ : android
https://google.github.io/styleguide/javaguide.html : google java style
http://blog.jooq.org/ : Java, SQL, and jOOQ
http://virtualjug.com/podcast/ : подкасты
Q: Где можно пообщаться на java тематику?
- В этом ITT треде.
- https://www.reddit.com/r/java : reddit
- http://stackoverflow.com/questions/tagged/java : платформа для вопросов и ответов
Список java фреймворков, библиотек и по на любой вкус:
https://github.com/akullpp/awesome-java
Шапка треда:
http://pastebin.com/37Ldgi60
Предыдущий: https://2ch.hk/pr/res/950088.html