Q: Поздно ли вкатываться в айти в 20/30/40/100 лет?
А: Нет, не поздно.
Q: Cобираюсь учить джаву по 2/5/20 часов в день. За сколько дней я выучу достаточно, чтобы зарабатывать фрилансом?
A: На джаве фриланса нет. Хочешь фрилансить — дуй в ПХП/раби/1С тред.
Q: Хули все книги на английском?
A: Без английского ты не нужен и можешь смело идти нахуй. Ну или в 1С-тред.
Q: Что скажете за джавараш?
Если вкатываешься с нуля, то можешь написать пару "хеллоу ворлдов" до 10 лвла. Дальше курс рассчитан на ленивых и не умеющих читать книжки людей. Количество говнокода зашкаливает, годных задачек пару штук на весь курс. В любом случае решать тебе.
Анончик помоги Caused by: java.lang.SecurityException: Invalid signature file digest for Manifest main attributes Выскакивает когда я подключаю arquillian через dependencyManagement <artifactId>arquillian-bom</artifactId> <version>1.4.1.Final</version> Я хуй знает нахуя оно пытается подписывать и как это отключить нахуй
почему джава такой ублюдочный язык? даже простая операция- получение и разбор жсона занимающая на пхп 7 строчек на джаве это больше 100 строк, 2 сторонних библиотеки и полдня времени?
Поясните простыми словами, что такое JavaBean и зачем он нужен? Что такое model в MVC? Что такое JSP и зачем он нужен, кто генерирует JSP, почему нельзя заменить его на HTML страницу?
Сап, после двух месяцев самостоятельного обучения, начал потихоньку писать первый проект, попутно применяя полученные знания/техники и столкнулся с такой проблемой: я понимаю как работают классы, методы, объекты и тд, но не понимаю когда и что лучше применить. Например, я пытаюсь написать подобие электронной школы, то есть где хранятся оценки, дата по ученикам, расписания, все такое. И вот постоянно ломаю голову для чего создавать отдельный класс, массив, объект и прочие вещи. Например создавать ли отдельные классы для отдельных предметов(уроков), использовать ли наследование при этом, либо вообще не создавать классов для этого, а вносить всю дату непосредственно в объекты(учеников). И подобные вопросы встают на каждом шагу. Вопрос: стоит ли мне сейчас над этим так задумываться, или просто делать как удобно? Я свободно владею английским, но не могу найти подходящее объяснение в каких именно ситуациях что использовать, лишь определения по типу "что такое класс", а это и так понятно.
Двач, полный ноль в програмировании, хочу вкатиться. В моей мухосрани открываются курсы по яве, при одной компании. Требования пздц низкиеу меня с английским туго, а там всего лищь а1-а2 надо, поэтому хочу туда попасть. Основное требование это >базовые навыки программирования с использованием любого объектно-ориентированного языка Я в душе не ебу что такое ООП, и за сколько можно выучить джаву, чтоб жойти до этого самого ООП. И базовые навыки это на сколько? До 8 февраля подача документов
>>1333474 Всё, что является объектом - класс, урок, школа, расписание и т.д, можно и нужно сделать классом. К наследованию подходи осторожно - не применяй его там, где оно не нужно, и не плоди сложные иерархии. Предпочитай композицию наследованию.
Очевидно, что учителя и ученика можно занаследовать от абстрактного пёрсона, а вот лицей и школу разными классами делать не стоит - они должны отличаться стратегиями преподавания. Школа-интернат может наследовать интерфейс школы и тем самым декорировать как лицей, так и обычную школу, добавляя в эти классы новое поведение. Это тебе для затравки, а дальше думай сам. Можешь закодить и закинуть на гитхаб, что получится.
Но для начала настоятельно рекомендую ознакомиться, что такое SOLID, а потом прочитать Head First Design Patterns, где эта концепция раскрывается вместе с основными паттернами проектирования.
Есть enum класс с несколькими final int полями. Есть кусок кода заточенный на производительность. Есть два стула написать: x = object.getMyPropertyValue() или объявить свойство public final и написать x = object.myPropertyValue
Где: public int getMyPropertyValue() { return myPropertyValue }
Аргументы за первый вариант: Это правильно с точки зрения кода Аргументы против первого варианта: Вызов функции ради извлечения четырёх байт - не круто Аргументы за второй метод: Это должно работать быстрее Аргументы против второго варианта: Код менее читабельный.
Сидел ебал я себе мозг, а потом вспомнил о такой херне как оптимизация при компиляции и компоновка коротких методов в inline функции с последующим вынесением их в целевой код. Но я нихера не помню, будет ли вынесено чтение private/protected метода или нет? Сейчас что-то этот пункт в описание найти не могу, там только говориться о коротких методах. Выберите мне стул
Если кому-то надо написать заебенный КрУД на Спринге, советую взять PetClinic. Офигенный CRM, в нём тонна примеров того, как надо. Хочу написать на его основе ПО для местного приюта животных, с доступом для кураторов животных, отслеживанием прививок, сбором денег.
Посоны, в Спринге есть аннотация @Autowired, которая судя по документации заменяет сеттеры и геттеры при связи репозитория, сервиса и контроллера. Правильно ли я понимаю, что это ужасный, построенный на рефлексии, костыль, который лучше не использовать?
>>1333630 >Посоны, в Спринге есть аннотация @Autowired, которая судя по документации заменяет сеттеры и геттеры при связи репозитория, сервиса и контроллера. Правильно ли я понимаю, что это ужасный, построенный на рефлексии, костыль, который лучше не использовать? А на чём ему ещё быть? Но он теоретически не так страшен, так-как по "уму" должен использоваться единожды при инициализации глобальных переменных.
>>1333604 Сложнее инлайнить методы, которые могут быть переопределены в сабклассах. С private или static методом вероятность наоборот будет выше. Попробуй это и проверь, инлайнится или нет. http://normanmaurer.me/blog/2014/05/15/Inline-all-the-Things/ Но оно должно того стоить - т.е. JIT должна посчитать метод достаточно горячим, чтобы от этого был профит. С позиции дизайна, Джош Блок считает, что раскрытие иммутабельного final поля неоднозначно, но допустимо.
>>1333630 Нет, ты понял неправильно. Почитай сначала, что такое inversion of control. @Autowired это добро, и эта аннотация не заменяет ни геттеры, ни сеттеры. Спринг даёт тебе IoC-контейнер и сам управляет инициализацией классов и внедрением зависимостей. @Autowired означает, что в поле твоего экземпляра нужно засунуть экземпляр другого класса из контейнера. Причем хорошей практикой является использование интерфейса, чтобы Спринг сам заинжектил подходящую реализацию. Реализация может быть выбрана на основе профиля, мок-реализация может быть использована в интеграционных тестах, и т.д.
И не используй @Autowired с private полями, желательно всё инжектить с помощью конструкторов.
Как в Идее настроить положение курсора после автокомплита? Например, надо написать Set<Integer>, я набираю на клавиатуре Set<Int в этом месте появляется подсказка, я жму Enter> И курсор остается внутри скобки, перед > Типа вот так Set<Integer |>, а я же хочу вот так Set<Integer> |, чтобы без лишних нажатий набрать имя переменной и не жать End. Я что-то не понимаю? Это можно настроить?
Если в универе не прогуливал философию, то помнишь, что Аристотель выводил форму и материю.
Представь стакан в своей голове, он нематериален – это форма, т.е. класс. Он не занимает никакого пространства.
По форме создается сущность – т.е. форма, заполненная материей (стакан на твоем столе). Это объект, созданный по некому классу. Он физически есть на диске в виде байтиков. Эти объекты по разному заполнены материей (отличаются свойствами (значением полей), один стакан толще, другой выше), тем самым, объекты одного класса отличаются друг от друга (помимо ссылки). У любого объекта есть метод .toEquals(), переопределив его можно сравнивать объекты одного класса.
Кроме того, объекты делятся на низшие (т.н. POJO или DTO) и высшие.
Кроме того, есть интерфейсы. Взять тот же стакан – основная его цель это удерживать жидкость. Т.е. он имеет некий контракт. Если он выглядит как стакан, но не имеет дна – это не стакан, т.к. он не отвечает контракту (интерфейсу) на удерживание воды – она будет выливаться.
>>1333630 При чем тут вообще сервисы/репозитории? Это аннотация для автоматической подстановки зависимостей (бинов) из спринг-контейнера. Вообще весь спринг - это сплошная рефлексия, включая @Autowired. Короче говоря, не понял ты ничего.
https://pastebin.com/iDwyKyki Достаточно MVC-шно? Или лучше метод updateColor перенести в контроллер? И еще запуск приложения через метод init это какая-то хуита, но для FX я не нашел других вариантов.
Посоветуйте пожалуйста годные книги по спрингу (желательно в переводе, но не критично), на ютубе стоющих видосов не нашел. А документацию читать для меня тяжело.
>>1334150 смари читаешь >>1334152 если не заходит и хочешь понять как внутреняя магия работает то читаешь спринг про 4 или смотришь доклад Борисова спринг потрошитель
а вообще официальные мануалы/ документации нормас вроде
Аноны, можно в swagger ui заменить тип параметра? Например в методе: public void foo(@RequestBody String bar) {...} необходимо, чтобы вместо String отображался другой класс, но использовать класс прямо в параметре не могу.
Посоны, как вернуть результат из блока try catch? есть код вида String yoba;<-результат вернуть сюда try{ разные действия; yoba=результат разных действий; }catch{} Вывод(йоба);
1. В большинстве случаев в Spring.boot+Hibernate люди оборачивают методы класса-Репозитория методами класса-Сервиса, и из Контроллера вызывают уже эти классы. В отдельных случаях из Контроллера вызывают напрямую классы Репозитория. В чём плюсы?
2. Я написал метод поиска элемента по названию. Создаю форму, получаю искомое значение, перебираю Репозиторий, выбираю совпадения, вывожу их. Все верно?
>>1334594 >2. Я написал метод поиска элемента по названию. Создаю форму, получаю искомое значение, перебираю Репозиторий, выбираю совпадения, вывожу их. Все верно?
>>1334594 1. репозиторий отвечает за сохранение/получение данных в бд, а сервис за обработку этих данных. можешь менять реализацию репозитория (запилить все через JDBC, например) или сервиса(после извлечения firstName добавить к нему "tvoya_mamka"), и если они сохраняют/расширяют уже имеющиеся интерфейсы, то все заебись будет. вся эта делается, чтобы твоя абстракция не зависела от конкретной реализации. 2. для себя - сойдет, но в спринге есть JpaRepository, например, который все делает без тебя. читай документацию.
>>1334716 >2. для себя - сойдет, но в спринге есть JpaRepository, например, который все делает без тебя. читай документацию. Там есть только 1) findById(id) - очевидный вариант 2) findOne() - хз, как он работает, но возвращает 1 результат. А я написал поиск с выводом списка подходящих вариантов (похожие названия и иные поля).
>>1334757 Для поиска по id я использую, тут всё просто. Optional<Book> book = this.bookRepository.findById(id);
@Override public Book getBook(Integer id) { //return bookRepository.findOne(id); Optional<Book> book = this.bookRepository.findById(id); if (book.isPresent()) { return book.get(); // If a value is present in this Optional, returns the value, otherwise throws NoSuchElementException. } else { return null; } }
Но допустим, мне нужно создать форму поиска, позволяющую искать книгу по заголовку (пользователь может внести, например, только заголовок). Моя конструкция выглядит так:
@GetMapping("/books/search") public String showSearchForm(Model model) { Book book = new Book(); model.addAttribute("book", book); return "/books/searchForBook"; }
@PostMapping("/processSearchForm") public String processSearchForm(Book bookToFind, Model model) { List<Book> foundBooks = new ArrayList<>(); // strict search by ID if (bookToFind.getId() != null) { foundBooks.add(bookService.getBook(bookToFind.getId())); } // search by title & author else { for (Book currentBook : bookService.getAllBooks()) { if (bookToFind.getBookTitle()!= "" && currentBook.getBookTitle().toLowerCase().contains(bookToFind.getBookTitle().toLowerCase())) { foundBooks.add(currentBook); } else if (bookToFind.getBookAuthor() != "" && currentBook.getBookAuthor().toLowerCase().contains(bookToFind.getBookAuthor().toLowerCase())) { foundBooks.add(currentBook); } } } model.addAttribute("books", foundBooks); return "/books/booksList"; }
Это позволяет мне получать список со всеми книгами, в заголовке которых есть искомая строка.
1. Для чего мне нужен findOne в данной схеме? 2. При попытке реализовать findOne(Book book) у меня подсвечивается ошибка: inferred type s for type parameter s is not within its bound should extend...
Конструкция Optional<Book> book = this.bookRepository.findOne(Optional.of(bookToFind)); не помогает.
>>1334767 Какой ты хуйней страдаешь, открой уже петклиник да посмотри как там сделано. Я не видел, но наверняка там используется интерфейс CRUDRepository и нет такого говна в контроллере.
// allow parameterless GET request for /owners to return all records if (owner.getLastName() == null) { owner.setLastName(""); // empty string signifies broadest possible search }
// find owners by last name Collection<Owner> results = this.owners.findByLastName(owner.getLastName()); if (results.isEmpty()) { // no owners found result.rejectValue("lastName", "notFound", "not found"); return "owners/findOwners"; } else if (results.size() == 1) { // 1 owner found owner = results.iterator().next(); return "redirect:/owners/" + owner.getId(); } else { // multiple owners found model.put("selections", results); return "owners/ownersList"; } }
И репозиторий:
public interface OwnerRepository extends Repository<Owner, Integer> {
/ Retrieve {@link Owner}s from the data store by last name, returning all owners whose last name <i>starts</i> with the given name. @param lastName Value to search for @return a Collection of matching {@link Owner}s (or an empty Collection if none found) / @Query("SELECT DISTINCT owner FROM Owner owner left join fetch owner.pets WHERE owner.lastName LIKE :lastName%") @Transactional(readOnly = true) Collection<Owner> findByLastName(@Param("lastName") String lastName);
>>1334767 Зачем ты фильтруешь в джаве, когда есть sql? Пишешь метод в BookRepository: List<Book> findByTitle(String title). Все. По поводу findOne. Он использует EntityManager.getReference(...) и возвращает прокси (НИКОГДА null), и если объект не найден, то при первом обращении к этому прокси вывалится EntityNotFoundException (см. доки на EntityManager).
>>1334805 >CRUDRepository >сам генерирует все необходимые методы для поиска чего угодно по любым полям >Там есть все методы для всех полей, которые у тебя есть в твоей сущности
>>1334802 >Зачем ты фильтруешь в джаве, когда есть sql? На данном этапе я работаю с h2. Когда пропишу все методы работы с объектами, переключусь с h2 на SQL.
>Пишешь метод в BookRepository: List<Book> findByTitle(String title). Спасибо.
>По поводу findOne. Он использует EntityManager.getReference(...) и возвращает прокси (НИКОГДА null), и если объект не найден, то при первом обращении к этому прокси вывалится EntityNotFoundException (см. доки на EntityManager). Спасибо.
>>1334809 Бтв, я перепутал, не findOne, а getOne. Если тебе нужно найти по произвольным полям, причем некоторые могут быть null, попробуй query by example.
Создал проект Spring Initializr. Запихнул в него index.html со скриптом. Скрип посылает запрос get. @GetMapping метод принимает запрос и возвращает строку. Скрипт отправлявший запрос отлавливает строку, вплоть до этого момента всё работает как и ожидалось. Но затем содержимое html-страницы подменяется строкой (если был прописан @RESTController, иначе в ответ на запрос GET возвращается хуйня).
Есть один джун (я), год опыта разработки, пилю круды с mybatis, поебошился с бинфакторипостпроцессорами и рефлексией, неплохо знаю oracle, в принципе знания норма. Единственная популярная вещь которую не трогал это hibernate и прочие ORM. Джун хочет съебать из этой страны. Английский в порядке. Откуда начинать? Пока зарегался на linkedin, но что делать дальше непонятно.
Я вообще неправильно отправлял запрос GET. Я обращался к localhost:8080, и поэтому ответ подменял собой index.html. Сейчас обращаюсь к localhost:8080/controller и всё отрабатывает как надо. Единственная проблема - браузер постоянно цепляет старую версию скрипта, которая посылает запрос на localhost:8080. Старый файл с яваскриптом цепляется из кэша браузера?
Пацаны, если мой английский недостаточно хорош чтобы читать книги в оригинале, могу ли я spring in action третье издание переведённое прочитать? Много потеряю?
Кто может объяснить, или скинуть годную статью по теме как происходит взаимодействие backend(Spring) с frontend(JS). Нагуглил про AJAX и прочее, но это только еще больше меня запутало. Раньше старался не лезть в мир фронтенда, но обстоятельства заставили. Например представим ситуацию: моя задача написать на серверной стороне спринговое веб-приложение которое ходит в бд и возвращает данные для отображения на странице. Как это сделать по-современному? Потому что раньше я делал это только через jsp и прочие статические вьюхи, без js на стороне клиента. Интересно как это происходит в реальном мире?
>>1335460 REST на бекенде (@RestController и иже с ним), и какой-нибудь способ слать HTTP запросы с фронта (в каком-нибудь Angular.js эта штука есть из коробки). Фронт ходит по REST эндпоинтам и получает данные с бекенда. Ну, это если коротко.
>>1335490 Да ты открой гайды по спринг буту. Там есть 5 минутные гайды, где собирают такой рест сервис. Да, обычно отдача инфы идет в формате JSON, реже в XML. Иногда бывает, что нужно отдать какой-нибудь файл, например - тут отдаешь бинарный поток. Обычно делается так - один докер контейнер, в котором крутится nginx и твой фронт. nginx раздает статику и хранит в себе твою фронт-логику. Также nginx проксирует запросы к твоему API через себя и к твоему Spring Boot (или что там у тебя) приложению, которое развернуто в другом докер контейнере. Такие дела.
>>1335541 >2) Что за хипстерские maven враперы? Для сборки и запуска без установленного maven
>Чем пользовался? Доки мануалы книги? >Сколько времени потратил? Туториалы + документация. Потратил довольно много времени на чтение, само приложение пишется быстро. Думаю, суммарно вышло по несколько часов в течение дней четырёх. 90% - чтение.
>>1332596 Я вот после джавы - жабаскрипт осиливаю. Пиздец это говно кривое. Просто пиздец. Как на нем писать. Зная немного С и питон не лезет вообще, организм прям отторгает.
Создает ли использование в сервис-эксепшенах @ResponseStatus зависимость сервис-слоя от веб-слоя? И вообще правильно ли использовать эксепшены в сервисах, если, например, сущность не найдена, или лучше возвращать Optional.empty?
>>1335612 >зачем пустую строку проверяшь наркоман >null хотел написать? Если пользователь оставляет строку поиска пустой, она возвращает "", а не null
>>1335611 >ещё раз напишешь скобку на новой строке приеду и руки тебе отломаю сишник ебаный но... но соглашение о стиле кода...
Spring MVC CRUDАноним27/01/19 Вск 11:41:40#108№1335760
Сломал голову и гугл не помог. Сделал круд, даже кириллицу отображает нормально (та ещё проблема)
И я решил сам себя взломать мамкин хакер В форме отправляю теги, но они все отображаются просто как текст! Пишу в форме <h1>Fuck</h1> Вывод получаю такой же <h1>Fuck</h1> (смотрю результирующий html, там лишних тегов нет, но эти теги не подсвечиваются ) С кодировкой что-то наверное?
>>1335760 А ты блядь сам понял! В хроме если по F12 код смотреть то там он не подсвечивает теги потому что это блядь не теги а < и > И у видеть это можно только если нажать редактировать как html!
Стало красиво и аккуратно: @PostMapping("/processSearchForm") public String processSearchForm(Book bookToFind, Model model) { model.addAttribute("books", bookService.getBookByFields(bookToFind)); return "/books/booksList"; }
часто стал видеть ОЧЕНЬ положительные отзывы о javarush, а мне как раз нужна хорошая практика и задачки.. скажите плз стоит ли тратить деньги (которых немного ибо студент) на их подписку, если нет то какие есть альтернативы ему? можете предлагать англоязычные, тк с ним все ок
>>1335835 >>1335812 Поясняю за Javarush. Это сервис автоматической проверки кода. Ты пишешь код по заданию, валидатор проверяет код. Начинаешь с хелло ворд, но уже скоро пишешь маленькие приложения, работаешь с потоками, файлами, объектами. Бывают очень заковыристые задачи. Валидатор в 90% случаев проверяет точно, при этом у тебя есть возможность решить поставленную задачу несколькими путями. Будет несколько задач, где валидатор будет лютовать. Теория там вся из книг, но теорию ты можешь почерпнуть без них, из книг и туториалов. То есть вся фишка Javarush вовсе не в каких-то лекциях, семинарах, вебинарах, прочей лабуде уровня Skillbox, а именно в получении сотен часов простой практики. Быстро пробежавь Javarush с нуля, можешь переходить к фреймворкам вроде Спринга, писать веб-приложения и КрУДы для баз данных, после чего идти и работать. Мне лично Javarush много дал, я доволен.
>>1335836 Осваиваешь синтаксис. + читаешь всякие хед ферст / кук бук с паттернами/алгоритмами. И дальше ПРОСТО: Пиши свое что нибудь, неважно что. Калькулятор, часы, радио, генератор лабиринтов + решение этих лабиринтов (поиск в ширину), игры на любом движке, говномикросервисы, что угодно. И пока ты это будешь писать будешь решать реальные задачи. Копать стаковерфлоу и дрочить с самыми банальными моментами, которые потом войдут в подкорку.
Блядь, хуилы, вы мне напомнили как я будучи безработным студентом задрачивал codewars. Такая параша, господи прости меня. Какие-то математичкеские задачки, операции над массивами, хуета ебаная которая нахуй никому не нужна, про саму джаву и её особенности ноль. Даже коллекции нормально не присутсвовали по моему. Абсолютная трата времени, аж забомбило немного.
>>1335895 > Такая параша, господи прости меня. Какие-то математичкеские задачки, операции над массивами Вот кстати на Javarush упор именно в специфику Java и ООП. Все адаптеры, врапперы, паттерны.
Но в целом мне теперь Javarush кажется полностью пройденным этапом.
аноны, насколько хорошо нужно знать jsp/jsf и шаблонизаторы типа thymeleaf? достаточно ли просто знать, что это за хуйня и уметь применять, чтобы демонстрировать работоспособность веб-страничек приложения?
>>1335897 ООП, коллекции, но на самом деле по java я не так много знал (голый jdbc, зачем-то сервлеты и сё). В основном вывез за счёт того, что хорошо знал SQL/работу баз данных (транзакции блокировки хуё моё) и что шёл на стажёра. Если бы сейчас снова с нуля учил, я честно не знаю, откуда можно начать. У спринг бута например есть туториалы, но они сводятся к тупому копипасту без объяснений, книжки в отрыве от практики тоже пользы мало принесут. >>1335904 Я чутка глянул их программу, вроде адекватно выглядит. Только цену не нашёл, если там какие-нибудь 100к как у мейл.ру, проще стажёром пойти куда-нибудь.
Господа, я тут абсолютно зелёный, но поставил перед собой охуеть какую нетривиальную задачу, а именно - отпарсить 2д карту в игровой мир. Это вообще осуществимо? С какой стороны подойти?
>>1336161 Картинку. Попробовал щас свинг прикрутить, вроде прикрутился, но что дальше делать - не ебу, графовый обход по гексагонам и преобразование неведомым хуем гексагона в элемент игрового мира, мейби, но я хз
Я делаю недосервис блогов, сделал функцию закрепления постов. Вопрос: как лучше отдавать закреплённые посты на клиент? Делать отдельный эндпоинт /blogs/:blogId/blog-posts/pinned vs Включать закреплённые посты в ответ на запрос /blogs/:blogId/blog-posts, если запрашивается самая первая страница
Парни, отправляю через Angular.js на Spring Boot REST эндпоинт GET запрос и он(спринг) молчит, вообще никаких сообщений. Хотя если через браузер - выдает json как положено. Накопал про какой-то CORS, попробовал добавить аннотацию @CrossOrigin на @GetMapping - нихуя. Кто знает в чем проблема?
Антоны, хелп ми плиз!Аноним28/01/19 Пнд 22:17:44#155№1336984
Пилю CRUD на Spring. Java + jdbc Как по понятиям сделать? Мне нужно сделать валидацию данных / защиту от дурака. В каком месте нужно это делать? Сам думаю что в сервисе, хотя хз Controller тут только получаю нужные String и передаю дальше Service тут проверяю корректность данных, парсинг и создание переменных нужных типов (вроде int, float). Чистые данные идут в жопу далее DAO тут дёргаю анус базу данных через preparedStatement Model тут просто POJO
>>1336984 >Мне нужно сделать валидацию данных / защиту от дурака. >В каком месте нужно это делать? В контроллере. По крайней мере если речь о формате данных, а не о бизнес-правилах.
>Controller тут только получаю нужные String Spring MVC уже прекрасно умеет парсить параметры в инты и флоаты. Сервисы для круда могут быть вообще не нужны.
>Нужно ли тут делать DTO? Нет
Java вкатальщик знатно охуевает!Аноним29/01/19 Втр 11:17:48#159№1337278
Пилю CRUD на Spring. Java + JSP + JDBC + MySQL Сколько же я говна нахлебался пока кириллица начала работать на всех этапах. В JSP нужно указать! В JDBC тоже нужно указать! В MySQL тоже само собой! Ох ты блядь сука!
>>1337278 Решил ещё по умному при старте системы загружать shema.sql и data.sql! И тут подлянка, весь гугл сломал пока понял. Нужно то всего в properties 5 параметров datasource указать и в pom.xml подключить ещё одну зависимость.
Тем более для запросоебов уже давно придумали HQL, а бизнеслогика на джойнах и тем паче - на вендорлокнутых аналитических расширениях - это сразу вон из профессии и го бомжевать да перед пенсионерами оракла и фокспро 90х выёбываться.
сап программач, вкатился в джаву и пытаюсь устроиться джуном в местную галеру, написал тестовый круд на spring boot с гибернейтами, спринг секьюрити, спринг датой и прочими вытекающими из этого. Проект им вроде зашёл, позвали на техническое собеседование, пообещали нормально поспрашивать. За кор джаву и кор спринга вывезу, но намекнули что будут ебать за многопоточность, в которой я ну совсем не шарю, не сталкивался. Может кто пояснить для чего она вообще реально будет нужна джуну, ну и мб ссылок покидать на статьи для быстрого вката в эту тему
>>1337349 Делал тестовый после внутренних курсов галеры для быдлостудентоты(коей сам и являюсь), собственно после них меня и решили не выгонять, а дать шанс. Теперь вот техническое. Стоит наверное сказать, что до этого про джаву просто что-то слышал и начал буквально с нуля. Так за 3 месяца и успел кое что узнать, но остались пробелы кое-где.
>>1337333 Почитай про synchronized, volatile, про immutable классы и зачем это нужно в многопоточности, виды локов. Знаешь, я когда-то писал себе небольшой конспект по многопоточности(чтобы быстро вспомнить всю эту фигню, страниц 5) - могу тебе скинуть скрины в телегу
>>1337650 Смари кароче наверное ты видел подобные блоки где-нибудь static{ тут инициализация static переменных } Это называется блок статической инициализации Так вот тобой вышеуказанное, это аналогичная херня, только не статическая, а для каждого объекта, то есть при инициализации объекта через конструктор, этот блок будет выполняться, такие дела Смысл делать или нет решать тебе, я с таким никогда не сталкивался все всяких хитровыебанных квизов на знание возможностей языка. Синьеры-помидоры поправьте если я обосрался где нить
>>1337650 >Оборачивание в скобки даёт нам эдакую вариацию чего-то вложенного, где после выполнение все объекты cg почистит и переменные фсё?
Как и в любом с-подобном языке оборачивание в скобки создает безымянный scope, работающий аналогично прочим scope - if(){},for(){},while(),{} int method(){} и.т.д. То есть да, переменные и объекты инициализированные в scope за его пределами убираются из стека/попадают в GC.
Сап, начал читать хорстмана, перехожу с плюсов на жабу, но скоро новый сем, и времени будет на чтение мало, хочу просто заняться практикой, мб что то вроде sololearn только с серьёзными задачами после не сильно углубленного курса есть? Хорстмана летом прочту для закрепления. Если что то такое есть, киньте ссыль.
Начал изучать джаву четыре месяца назад, работая ежедневно по 12 часов грузчиком-экспедитором, во время работы читая учебники - успел пока познакомиться с Хорстманном и Thinking in Java. В свободное время решаю задачи на кодеварс и жавараше; начал писать одного простого бота для хтмл-игры, но, реализовав основной функционал, не стал доделывать графический интерфейс (пробежал эти главы мельком). Потихоньку сдвинулась с мертвой точки способность придумывать логику решения поставленной задачи, но с цифрами работать отвык - математика вылетела из головы ещё где-то в восьмом классе, а в университете я учился всего полгода, получая по этому предмету стабильно неуды. Вспоминается английский постепенно, который по выпуску из школы у меня был на уровне адвансед. Собираюсь увольняться, чтобы стабильно весь день практиковать навыки написания кода. Эти четыре месяца можно сказать потрачены впустую - с таким уровнем знаний, как у меня, я мог бы разве что претендовать на место в курсе-стажировке, но увы, они сейчас в Москве доступны исключительно студентам или выпускникам вузов. На позицию джуниора с моим булькающим Java Core можно пока даже не засматриваться - необходимы как минимум фреймворки и SQL. Немного поискав в Интернете информацию о Spring и Hibernate, столкнулся с мнением, которое мне интуитивно близко по духу - программисты критикуют засилье коллег, чьи способности ограничиваются муштрой фреймворка, советуя обучение тому, на чем эти фреймворки работают, плюс часто упоминая необходимость ориентации в архитектуре (этого я не понимаю сейчас совсем). Я эту исповедь к чему пишу: самостоятельное обучение технологиям, которые требуются на позицию джуниора, релевантно задаче найти в кратчайший срок работу? Или больше смысла будет в трате денег на то, что меня кто-то направит и объяснит актуальные, необходимые в работе шаблоны? Единой точки зрения в Сети я не нашел, а мое увлечение чтением тематической литературы как будто в этом вопросе - наименее действенный выбор.
>>1338408 >Или больше смысла будет в трате денег на то, что меня кто-то направит и объяснит актуальные, необходимые в работе шаблоны? Методики обучения тех, "кто не умеет, но учит" за деньги могут отличаться от "актуальных, необходимых в работе шаблонов", западзывать на n-лет. Не торопись дарить деньги таким людям.
Самое надежное это подучить уровень английского до возможности чтения, а лучше понимания на слух, и читать/смотреть актуальные курсы, лекции. На том же удеми есть более-менее актуальные курсы, которые продаются на торрентах по цене интернет-траффика (https://freecoursesite.com/ ищи java, hibernate, spring и прочие buzzwords, поглядывая на список требуемого в вакансиях на hh.ru). Конечно же, на изучение всего этого уйдет какое-то кол-во времени, также без гарантии трудоустройства.
Анон, подскажи как в своём веб приложении на сервлетах сделать регистрацию + авторизацию, в гугле реально не могу найти нормальной инфы. Нельзя же просто ебануть атрибуты и гонять их туда без шифрования или ещё какой-то защиты? Как вообще это всё работает?
Тогда или ванильный Java EE 8 и жирные интырпрайз-сервера на 32+ГБ, там есть хуитки, или велосипедь сам на сессиях и кукисах. Проблема "не гонять без шифрования" решается HTTPS.
>>1338675 ООП. Алгоритмы и их сложность(самые бесполезные знания, но зачем то это постоянно спрашивают). Структуры данных. Возможно конкарренси в общих чертах. HTTP, возможно. Сукель скорей всего. Вон сверху лежит список вопросов.Выкидываешь оттуда фреймворки и дж-эс (если его нет в вакансии) вот это и будут спрашивать.
>>1338735 А да анончик, забыл добавить, что 90% спрашиваемого ты никогда не применишь в практике, потому что для дерганья БД за анус через спрингдатку даже понимания инкапсуляции не надо
Салют, господа. Планирую выкатиться из своей галеры в енеми компанию. Опыт 2 года. Беспокоит вопрос, нормально ли скиллов, которые я знаю, мб добрый анон даст совет, что подкачать буду рад.
Сейчас у меня в арсенале есть: Java(до 11 версии основные фичи), Spring(IoC, MVC, Security, Boot), Hibernate, RabbitMQ, Kafka, RDBMS(Postgres, юзал MySQL но не смогу за них пояснить преимуществах/недостатках), NoSQL(CouchDB), Groovy.
Из окольных тем небольшой опыт работы с JS, React, Electron, NodeJS, WebSocket.
Паттерны проектирования, опыт код ревью и бест практик чистого кода знаком, использую.
Подскажите, что еще хорошо было бы подтянуть? Буду благодарен? Нужно ли шарить за протоколы сети TCP/IP, и т.д.?
Какие шансы в 18 лет без образования найти работу джуном? Это вообще сильно важно? Или там будут смотреть только на знания. Очень боюсь что меня пошлют нахуй из-за того что ещё слишком юн.
>>1339084 Ну для джуна хуйня всякая, java core эксэпшоны, multithreading, коллекции, инпут оутпут и прочая ебота из руководства Шилдта , oop, sql, jdbc, сервлеты ебаные, jsp, мавены там всякие с иксэмэлями, всё хочу в спринг забурится но сложно пока.
>>1339088 на само деле Spring на ур-не для джуна ез освоить. Посоветую использовать стартовать используя Spring Boot. Реализую свой-мини проектик на MVC
Что эта за красная хуйня ? Делаю всё шаг за шагом за афффтором пружины в действии 5, у него все работает, у меня не может определить этот красный метод. Я не понимаю что это, он такого нигде в коде не создавал, такой метод не гуглица, как быть ананасы ?
Взял курсовую на разработку программы шифрования и дешифрования по ключам. Есть какие-нибудь туториалы по различным видам шифрования, использованию XOR, анализу и дешифровке? Просто тема слишком абстрактная, хочется конкретики, поэтому прошу подтолкнуть в нужном направлении.
>>1338991 Нихуёвый такой арсенал >Нужно ли шарить за протоколы сети TCP/IP, и т.д.? Если собираешься в веб - да. Всё ж зависит от того, на какое место хочешь податься
В RestController есть параметр: @RequestBody @Valid @NotEmpty List<Foo> values, нужно проверить, что лист не пуст, но аннотации не триггерятся. В чем проблема?
Уважаемые господа, я сижу околосисадмином в ынтырпрайзе, но поскольку позиция есть только для дева, мне сказали начинать потихоньку прогромировать на жабе (а я и не против).
Так вот, с чего конкретно начать? Учтите, что у меня нет технического образования, но есть работа в IT (что я делаю: файловые скрипты, то запарси, это автоматизируй, найди и выеби того, кто сожрал весь дискспейс, schedulers, немного ETL, немного дотнета, немного линупсов).
Стать программистом - моя мечта, и я близок к ее реализации, как никогда. Помахите.
>>1339397 Может из тебя хотят толкового DEVOPSа сделать а ты не понял намёка? Если прям хочешь погромировать по пробовать, бери любой язык и начинай решать простые олимпиадные задачки типо как на acmp.ru Если сделаешь первые 50 (отсортируй по сложности и начинай с простых) задач и не захочешь всё бросить, то у тебя есть все шансы.
>>1339459 Все добавлено. Почему-то спринг триггерит только аннотации внутри класса (когда помечаешь аннотациями поля класса + @Valid на объекте). Аннотации на самом объекте, как у меня в примере, не работают.
Братишки, подскажите Решил остановится на Жабе, скачал курс от ITVDN, но сразу появилась загвоздка, что гайд 16-го года и там используется Java SE 8, а сейчас уже есть 11. Вот вопрос, ставить 8 как на курсах версию или 11?
Ребятушки, помогите. Я начинающий программист в колхозной конторе на 700 человек. По всем показателям и требованиям JAVA подходит как основной язык разработки.
Но у моего начальника какие-то предрассудки по поводу Java. "Все, что касается как-то Java постоянно выбивало ошибку то там, то там".
Я не хочу, чтобы отдел продолжал катиться в сторону C#/Python - все, что нужно нашему отделу это Java
Как можно смотивировать начальника на дальнейшее развитие в сторону Java? Ну, то есть, отдел разработки не против. Нужны какие-то мотивационные статьи
>>1339906 Ну во первых, если тебе кажется, то не обязательно так и есть, а во вторых, если ты его уломаешь на жабу и потом что-то случится он тебя с говном сожрёт.
Сап, жаваны. Я тут пишу тестовое в одну контору. И впервые пишу DAO классы через jpa. Постоянно ощущение, что делаю какое-то говно, но из знакомых никто подобное не делал. По сему пишу сюда, может кто может выделить десять минут, поскролить три класса наискось и сказать где я не прав?
>>1340341 Это именно требование такое - голый jpa, без Springa (или EJB) для управления транзакциями? В реальном мире такое довольно редко встречается. Даже если так, копипаста из открытия транзакции, коммита и т.п. в каждом методе - это пиздец, выноси это все в отдельный общий код. Свой маленький TransactionManager можешь сделать.
Что еще бросилось в глаза - flush нет необходимости каждый раз делать, a remove не будет работать работать в таком виде, надо сначала смерджить сущность с этим EntityManager.
>>1340348 >голый jpa, без Springa (или EJB) Тоже подумал, что как-то странно, но в тз ничего про спринг не написано. Так бы просто навесил везде @transactional из спринга. это же так работает?
>интерфейсы Мне - абсолютно не зачем, но когда меня учили делать dao, то делали интерфейсы. Полагаю что это такая общепринятая практика, вдруг понадобятся разные реализации. мне то ясен хуй не понадобятся
>>1340288 Это на ждуна? Какие там требования в вакансии (по технологиям)? Ты прям по этому vadin-у упарывался или для тестового по быстрому обмазываешься?
>>1340377 Вообще первый раз с ваадином буду разговаривать. До этого в свинге малёха формочки делал. Вроде похоже.
Я хз какая это вакансия. Написано нужен опыт работы 2 года в ИТ компании, при этом у меня в резюме написано, что я нигде не работал, но они решили кинуть мне тестовое.
>>1340382 >Вообще первый раз с ваадином буду разговаривать Сейчас развелось дохуя русскоязычных ресурсов где круды на спринге разжевывают! На тестовое задание мне кажется стараются специально редкую хуиту дать и проверить как ждун будет манулы на англицком читать и разбираться по коду что и как делать.
А что значит >круды на спринге Там что есть какие-то встроенные инструменты для вёрстки? Насколько я знаю там можно просто через html+css+js или всякие jsp.
>>1332296 (OP) Зачем в вакансиях пишут "опыт работы с Hibernate"? Разве Spring Data недостаточно? И если нет, то какой лучший способ изучить данную технологию?
>>1340599 BTW, где достать High-Performance Java Persistence? На либгене лежит обрезанная версия в 200 страниц. Когда на амазоне в книге более 400 страниц.
>>1332659 Ебать сколько лишнего говна, для такой простой задачи. Какой же все-таки php красивый язык. Не то что ЭТО. Как же я рад что являюсь PHP разработчиком, настоящий программист, не то что вы джава-макаки! ёпта.
>>1340632 Забл добавить еще, что не хуёво так админю *nix системы. Потому что php разраб - это еще и админ/devops. А вы как видите командную строку, сретесь от страха...
>>1340341 Как писали выше - копипаст кода. Это можно исправить написав универсальные методы через лямбды. Подключи логгер. Может быть попробовать сделать один параметризованный интерфейс dao? Добавить слой service, где будут кроме crud специфические методы для работы с сущностями.
>>1340665 Нормально, только зелени маловато, такую тудушечку нужно край за неделю делать, без паники, итого за месяц 4-круда, каждый раз ты будешь чуть усложнять и добавлять новые фишечки.
>>1340671 > зелени маловато Углублялся в чтение шилдта. >>1340671 > такую тудушечку нужно край за неделю делать Я хочу сейчас дописать это всё на сервлетах, а потом переписать под спринг и хибернейт.
>>1340651 >параметризованный интерфейс dao Вот так хотел, но столкнулся с проблемой, что мне в findAll или других findХуяйнд надо вызывать namedQuery и туда передавать Client.class например. Так же NamedQuery имеют имена типа "Client.findAll".
>Как писали выше - копипаст кода Вот за это и переживал, не знаю как выкрутиться. Про какие универсальные методы ты говоришь? Можешь дать пример? я знаю что такой лямбды, просто не совсем понял о чём ты конкретно
>>1340706 Ну и говнокода ты наворотил. Загружать драйвер можно 1 раз в статическом блоке, необязательно каждый раз это делать. Почему поля в JdbcConnection не приватные? Сделай статический метод run, который возвращал бы новый Connection, а close вообще убери, Connection и так AutoCloseable, закрывай в try. И в твоей ловле эксепшенов нет вообще никакого смысла, что толку, что ты их поймал, если вызывающий код не сможет дальше работать, поскольку к бд подключения нет? Лучше добавить throws или перевыкинуть RuntimeException. Короче, переделывай.
Где взять нормальный гайд по запуску моих хеллоуворлдов на винде двойным кликом по ярлыку? Везде какие-то многоходовые страдания и танцы с прописыванием чего-то там в консоли или установкой jarfix которая ничего не даёт. Не могут же люди так мучиться с каждой прогой, должен быть способ здорового человека?
>>1340801 Да уже сделал по сути. Остались только преломления, но я не вижу смысла их делать без полупрозрачных объектов, а с ними я не очень разобрался. А потом кроме сфер сделать полигоны, и останется только интерфейс прикрутить.
Сап двачеры. Работаю на C++ в местной недоконторе, получаю мало так как в моей мухосрани нет компаний, работающих на этих технологиях. Хочу свичнуться в джаву, этого дохуя.
Посоветуйте: 1. Курс/Книги/Чёт ещё по джаве, где бы не рассказывали что такое переменная, класс и прочую банальщину. Java rush говно. 2. Идею для петпроджекта. Сам я думаю написать себе кошелёк для криптовалюты, так как им бы я и сам с удовольствием пользовался, не дело в том, что там негде применить базы данных и elasticsearch какой-нибудь. У меня с ними такой себе опыт работы, так как я в основном low level код пишу, с базами знаком очень слабо. 3. На каком уровне можно апплаиться на работу? Я уже второй год работаю программистом на C++, опыт в разработке есть. Понятно, что потребуется акклиматизация, но ведь я ж не совсём зелёный типа. Если у кого-то есть опыт свча - делитесь историями.
>>1340835 Сперва чекай вакансии на ждунов и смотри что там нужно по технологиям, запили фейка на хх и проси тестовые задания, там поймёшь что нужно. 1) По яве видосики технотрека майловского, годнота! 2) Круды, круды, круды, начни с простых, без гибернатов 3) Иди на честного ждуниора, ты там самый бодрый будешь среди вкатальщиков после жидбрейнса
>>1340835 Я тоже вкатывальщик, но попробую посоветовать. Certification Guide от Mala Gupta - пролистать, чтобы понять, зачем в Java string pool, зачем при конкатенации использовать StringBuilder, что такое боксинг/анбоксинг, как Java хендлит overflow/underflow у примитивов и т.п. Это базовые вещи, без знания которых можно писать код, но лучше их всё-таки знать.
Далее, освежи свои знания по ООП. Можно навернуть Head First Design Patterns. Часть книги устарела (особенно где там про удаленные вызовы), но другая вполне себе актуальна и по сей день, так как основы ООП за прошедшие 20 лет не сильно изменились. Наверни статьи про Dependency Injection и Inversion of Control.
Набей руку в SQL по sql-ex.ru.
Ознакомься с основыми коллекциями: ArrayList, LinkedList, HashMap, TreeMap, и как они работают внутри (базово, естественно). Ты должен суметь объяснить, что для ArrayList получение элемента работает за константное время, а для LinkedList за линейное. Получи общее преставления о работе со Streams.
Далее всё зависит от того, как быстро ты хочешь вкатиться. Если время поджимает, то посмотри какою-нибудь серию видео по Spring на udemy или youtube. Какое-то конкретное посоветовать не могу - мне они все довольно быстро начали казаться говном. Но они хороши для получения общего представления, чтобы не смотреть как баран на новые ворота.
Проект естественно должен собираться через maven. Для получения базового проекта с зависимостями используй https://start.spring.io/ тыкаешь switch to full version и выбираешь Web, JPA, H2, MySQL. Таким образом ты получаешь возможность легко и быстро приступить к созданию приложения на Spring MVC и Spring Data, используя встроенные Tomcat и ин-мемори базу H2. H2 для разработки: каждый раз при старте приложения создаётся схема и данные - схема создаётся автоматом по аннотациям Entity-классов, а данные грузишь через Spring Data репозитории (которые построены на базе Хибернейта). А MySQL - для прода.
Также можно где-нибудь спереть шаблон со стилями и картинками и красиво выводить данные через Thymeleaf при околонулевых знаниях html/css, но это сугубо по желанию.
Если есть время попердолиться с Java подольше, то можешь параллельно читать Effective Java и Modern Java in action. Я начал первую - могу сказать, что местами реально читается непросто, книжка для опытных программеров.
>>1340924 Я конечно не авторитетный критик, но в глаза бросается следующее. У тебя классы Transactional и, например, ClientDAOImpl, делают по сути разные вещи - один управляет транзакцией а другой достаёт данные. Но они почему-то в одной иерахии. Может сделать класс Transactional обычным классом и включать его в ClientDAOImpl через конструктор?
>>1340970 У меня с JPA маловато опыта, но вот какие еще мысли: у тебя при каждом вызове transaction() вызывается initTransaction();
Смотрим что происходит в этом методе: 1) entityManagerFactory.createEntityManager(); - его действительно нужно каждый раз пересоздавать? У меня сомнения на этот счёт. Но даже если всё-таки требуется, то для него справедливо всё то же самое, что я опишу ниже для EntityTransaction.
2) this.entityTransaction = this.entityManager.getTransaction(); Не думаю, что это хорошая идея. Scope каждого объекта должен быть минимальным. Следовательно транзакция должна запрашиваться в методе transaction(), и ссылка на полученный экземпляр будет жить ровно столько, сколько выполняется метод.
После завершения работы метода ссылка на транзакцию автоматически улетает со стека, и GC сможет уничтожить объект транзакции, если entityManager тоже от него избавиться. Твой же код держит ссылку на транзакцию, хотя больше он её никогда не воспользуется - ведь всё равно вызовется getTransaction() и ссылка перезатрётся.
Метод closeTransaction() можно оставить как есть, просто передавать транзакцию внутрь метода параметром.
Еще один подводный камень - это потокобезопасность. Представим, что два потока одновременно выполняют this.entityManager.getTransaction() - если метод возвращает разные объекты, то первый будет потерян, второй обхект будет помещён в поле класса. В итоге оба потока продолжат работать с одной и той же транзакцией, и я хз, к чему это приведёт.
Кто как инициализирует данные в бд? Вот есть например приложение на спринге, для его работы нужна база с заполненными справочниками. Схему генерит хибер, пес бы с ней, а вот данные откуда брать - хз. Есть вариант использовать data.sql файл, но это не очень интересно для разработки, т.к. чтобы он работал, нужно при перезапуске все из базы вытирать. Запустил дебаг - потерял результаты работы с базой из предыдущего запуска. На сервере-то, понятное дело, это не проблема, там хоть в скрипт деплоя можно делит-инсерты вкрутить, и никому не помешает. Пока что решил вопрос слушателем contextReloadEvent, и ручками дозабиваю базу, сохраняя все некоторое дерьмо, которое там уже накоплено, но это костыль, да и чем больше справочников, тем больше этого, по сути, ненужного кода придется поддерживать.
>>1341799 Спринг и гибернейт придумали жидорептилоиды из майкрософта, чтобы сгубить родную Жабушку. И проклятые модули пришли от них же. Надо все писать на сервлетах и JDBC, вручную запускать Tomcat и деплоить, вот это по-нашему, православному.
>>1340917 Это был не я бро. >Почему поля в JdbcConnection не приватные Потому что я юзаю их в других классах. > Сделай статический метод run, который возвращал бы новый Connection А в чём смысл? Зачем везде создавать новые конекшоны и прочее если можно их прописать в jdbcConection и пользовать везде?
Поясняю как проводятся собесы на джава мидл+синера (был на днях)
– просыпаешься в 14.50 дня, берешь банку пива из холодильника чтобы опохмелиться – в 3.00, собес (без камеры) – поясняешь по ооп своими словами (выдал определение по Аристотелю через форму и материю) – поясняешь по основным методам объекта (equals, hash-чето-там, что те, кто используют clone – люди не особо умные) – неспешно поясняешь по спрингу, после рассказываешь пару историй из нелегкой жизни спринг девелопера, все все понимают, слышышь кивания и взгласы обобрения даже без камеры, 30 секунд молчания – спрашивают про java concurrency, говоришь, что сам не сталкивался, но вот читал, что .... ответ всех устраивает, идем далее – вопрос по БД – нормализация, индексы, транзакция – на расслабоне все поясняешь со всеми trade offs, дело двух минут, все сталкивались, все все понимают – какой-от легкий вопрос про структуры, типа чем list отличается от likedlist (на деле посложнее), как-то на опыте выруливаешь, остальное договаривает интеврьюер, под твои возгласы, что эта хуйня нигде, по сути, не используется, "ага, это и хотели услышать" – вопрос про хайповую джава технологию, отвечаю, что не успел выделить времени на ее изучение, но вот знаю того-то, кто сталкивался и все не так однозначно
Ну вот как-то так.
Разумеется, потом уже были более материальные вопросы про зарплату, легаси на проекте (и заверения, что я буду работать только на хипстерских с контейнерами и кубером), что чем именно я хочу заниматься.
>>1342353 Так он и есть свой, и всё остальное своё, везде создаётся новый jdbcConection со своими конекшонами и оттуда всё это пользуется. Посмотри скрины ещё раз.
>>1342509 только я немного не понял как именно можно юзать классы, в какой задаче, я был на плюсах, потом пришлось изза универа на си перейти, и там подход к решению простых задач совсем не тот, там можно функций насоздавать навпример чтобы в массиве найти макс. элемент и переместить его вместо 1 элемента, это 2-3 функции, а с классом как работать, просто рандомный класс создать и туда методов напихать и в мейне заюзать?
>>1342511 У тебя в трех методах используется один и тот же Connection по одной только тебе известной причине. Зачем тебе вообще метод run, если он выполняет функцию конструктора, ммм? Зачем тебе prepared statement/result set внутри класса, если можно просто снаружи создать переменные? А их кстати тоже закрывать надо, ты в курсе, и делать это надо в finally, а не просто close писать.
>>1332296 (OP) Аноны, я тут вот: https://sourceforge.net/p/jstego/code/HEAD/tree/ нашёл да-да, откопал какую-то недопиленную прогу. Тут, по ссылке - исходник на JAVA, и jar-файл тоже доступен к закачке (Files -> Download -> jstego-0.3.jar). Попытался запустить из под командной строки: >java -jar jstego-0.3.jar
Вроде запускается, но не пашет нифига.
Помимо алгоритма f5 steganography, который, кстати, на JavaScript'е имплементирован вот тут: https://github.com/username1565/js-jpeg-steg В этом JAR-файле есть ещё какой-то интересный алгоритм jsteg.
Если кто из спецов, может допилить его, был бы благодарен. Я также поискал здесь этот алго: https://github.com/search?q=jsteg вижу пару исходников на Java, но ни одного рабочего jar-файла. Как компилировать - не помню уже... Есть также исходники на C и на Go, уровень их "рабочести" - не проверял.
Если всю эту шнягу довести до ума, то нборода того же карасика - могла бы в и жипег. Посему, просто запомните - f5 и jsteg
Кто-нибудь разбирается в liquibase? Поясните пошагово или покажите настройки, как посредством hibernate/jpa и liquibase напихать данных в таблицы для тестирования.
>>1332296 (OP) Аноны, подскажите, какого хуя в java запрещено множественное наследование от абстрактного класса(да и от любого иного), но не запрещена множественная имплементация от интерфейсов? В чём разница? Будет ли моветоном, если полностью откажусь от наследования в пользу имплементации? Удобно же. Прошу пояснений у знатаков
>>1342829 Наследование следует использовать только для незначительных изменений поведения + чтоб компилятор смог отловить ошибки. Например, у тебя есть класс Jopa, у которй есть свойство цвет. По какой-то причине у тебя есть методы bringMeRedJopa и bringMeBlackJopa. Наследуешь два класса: RedJopa и BlackJopa, и вуаля, компилятор тебя обругает, если что.
Во всех остальных случаях использования наследования получаешь хрупкую архитектуру.
>>1342849 >В твоём вбросе нет конкретных кейсов, почему наследование это плохо Почти любое использование наследования это плохо. Лень объяснять. Просто попробуй запилить с нуля какой-нибудь обобщенный сериализатор Object->Json/Yaml/Huiaml и обратно, с использованием различных источников/приемников - файл, память, сеть итд с возможностью побайтового/ленивого чтения, обработки ошибок итд, используя лишь наследование. Гарантирую, что соснёшь уже на этапе выстраивания иерархии наследования классов.
В наследовании нет ничего такого, ради чего его стоит повсеместно использовать. Наследование - это хитровыебанная замена копипасту. Разработчики пхп, кстати, это давно поняли и запилили traits.
>Пример также ничего не иллюстрирует. Пример иллюстрирует один из немногочисленных случаев, когда наследование оправдано.
>>1342875 Я и не агитирую выстраивать модули исключительно на наследовании. В большинстве случаев используется композиция. Но для конкретных кейсов - наследование отлично подходит, уменьшает кол-во бойлерплейт кода и улучшает читабельность.
В любом случае, спасибо за комментарии. Как-минимум прочту вечером пару статьй с компнями в огород наследования.
>>1342920 Есть нисходящий и восходящий подходы к изучению. Многие рекомендую сперва ознакомиться с основными концепциями, для этого как-раз и поможет Spring Boot. Когда уже каркас небольшого проекта есть, начинаешь углубляться в дебри и т.д. Просто если сразу вдаваться в дебри, можно там и остаться.
Не вижу ничего плохого, чтобы поднять бут-проект, поиграть с ним пару деньков, парралельно изучая, что как работает и устроено.
>>1343005 Смысл в том, чтобы продовать несуществующий товар. Слушай сюда. Открываеешь компанию "Пидрильный клуб любителей пощекотать очко". Даешь рекламу в пидрильный журнал: мол, у тебя такой инструмент для внедрения в очко. Ну, дескать, делает то, что не может ни одно другое устройство, последний прорыв в сексуальных технологиях, удовлетворение гарантированно. Иначе возвращаешь деньги, ну и всё такое. Эти приблуды продаются по двадцать пять фунтов за штуку. Для клиента это херня, за такую кучу удовольствия. Но чеки они шлют в адрес другой компании, с приличным названием, типа, "Мелочевка Бобби" или что-то в этом роде. По двадцать пять фунтов каждый. А ты в банке обналичиваешь и получаешь деньги. А запутка вот в чем: ты отправляешь чек назад, от компании "Пидрильный клуб любителей пощекотать очко", со словами "Извините, товар из Америки не поступил, у них закончились запасы". И тогда посмотришь, сколько человек обналичат такие чеки – ни единая душа, кому охота, чтобы менеджер их банка знал, что в свободное от получения чеков время они щекочут свое очко.
Столько времени прошло и только сейчас я задался вопросом: А что будет если ГС очистит наш синглтон? Данные которые хранились в нем сбросятся. Это что за пиздец получается.
>>1342837 >Наследование и правда не нужно, это анти-паттерн Если прям уж моветон и антипаттерн, почему всякие спринги, хибернейты и гуавы состоят из наследования чуть менее, чем наполовину? Это все говнокод?
>>1343041 Как тебе удобнее. Если он всегда точно будет пустой, то вообще похуй. Я обычно делаю в конструкторе. Но тут от задачи зависит. Иногда может и так, и так неправильно, а надо вообще через параметры конструктора или через билдер, а то вдруг там будут какие-то изначальные значения?
>>1343090 Прочитал про ломбок, там типа аннотацией можно указать дефолтное значение? Хз, в конструкторе всё равно лучше. Да, если будет много конструкторов, то придётся в каждом указывать. Зато, когда ты определяешь в конструкторе, ты как бы говоришь своим кодом - я определяю мапу как пустой хэшмап, находясь в добром здравии и уме, это моё сознательное решение, принимайте его во внимание, когда захотите рефакторить.
>>1343102 В ломбоке автоматически генерируется пустой конструктор, поэтому нет возможности там что-то задать. Можно написать конструкторы руками, конечно, но будет не стильно.
>>1342902 3 анотации, 2 класса и у тебя готовая приложуха которая обрабатывает запрос с ебучей веб формы. Что ещё надо для быстрого вката в технологию? Бинами обмазываться? Иксэмэли править?
>>1343201 >3 анотации, 2 класса Надо тогда вообще в джаву вкатываться со спринг бута, хуякс хуякс и уже веб приложиуха. Что ещё надо для быстрого вката? Циклами обмазываться? Эксэпшоны прописывать?
>>1343107 Ебан просто сути ломбока не понимает. Там аннотаций у него до жопы. Можно прописать для пустого конструктора@NoArgsConstructor, нужен, если есть не пустой, по сути как и в простой джаве, но ты пишешь это всё не в ручную, а аннотацией указываешь, и она закулисами автоматом хуярит конструктор без аргументов., для конструктора со всеми аргументами, кастомный конструктор, геттеры/сеттеры и тп.
Привет всем в этом солнечном треде Считаю, что имею некоторый опыт в пагромеровании, mysql, nginx, все такое, баловался питоном, настроил бота постить что-то абстрактное в Инстаграмме и подписываться по тегам мрази банят аккаунты по первому же подозрению, но заниматься сборкой Лего по чужим апи достало, неужели вся суть программирования сводится к этому?
За месяц лениво пролистал джаву от орейли, узнал что-то новое для себя, упорядочил знания о наследовании и тд, в целом понравилось.
Хочется ЗДЕЛОТЬ С НУЛЯ что-то свое, но не пойму с чего начинать. Подсмотрел у одного индуса ГуглДрайвФтпАдаптер, хочу сделать такой же, у него говнокод какой-то. Или свой сайт с встроенными другими программами, но мне кажется тут уже не джава начинается, а JS/Django.
Как вообще проектируется проект, если нет дяди который тебе спустит ТЗ
>>1343550 Это на джуна? Выглядит интересно на самом деле, хотя, как мне кажется, многовато требований для тестового. Можно не торопясь написать самому, потом на собесах показывать.
>>1343823 То есть, ИТ-уровень компании определяется количеством аутсорса? По моему, это ты не понимаешь, о чём говоришь. А то сейчас окажется, что гугл и эппл тоже не айти-компании, как же, они же БАНКАМ программы не пишут!
Ничего не понимаю. Где эти вакансии, на которые берут без знания спринга, гибернейта и кучи других фреймворков? Или его взяли из-за прохождения сертификации Oracle?
>>1343960 А разгадка проста. Рыночек программистешек то уже все. Еще хуже чем с юристами и бухгалтерами. Выполняешь такой тикет на мидла, бесплатно, даже как ждуну не платят.
>>1344092 Если ко мне придут 2 кандида на одно место, у одного в CV будут эти 2 сертификата, у второго кровавый-стек(Спринг, Хайбернейт, etc). Я с долей 80% возьму первого.
Вставлю свою 5 копеек. Вот я дохуя времени потратил на сертификат и могу сказать, что OCA - это повод позвать на собеседование. Но на самом собеседовании у тебя начнут спрашивать за ООП, паттерны, архитектурку простенькую попросят нарисовать. Если на этом поплывёшь, то ничего не светит. Я вообще охуел, когда меня на одном собеседовании спросили, как return значения внутри JVM на стеке работает и понял, что пока искать работу мне еще рановато.
>>1344107 > как return значения внутри JVM на стеке работает и понял, что пока искать работу мне еще рановато. лол, попался тебе даун который решил поумничать скорее всего, таких надо самих гнать из компании. Нахуя тебе это знать если ты джун и твоя задача будет клепать REST API на спринге?
>>1344279 Ну да, зачем понимать, как освобождается память и другие ресурсы, для клепания крудов это совершенно лишняя информация. В очередной раз убеждаюсь, что мелкобуквенность - стопроцентный индикатор двузначного IQ.
>>1344285 Лол, вот типичный пример - вот таких как ты и надо гнать из компании как можно быстрее, или как минимум не давать им проводить интервью (хотя скорее всего ты школьник). Совершенно верно - для клепания крудов не нужно знать как освобождается память, нет, это не лишняя информация - но и не настолько необходимая, чтобы реджектить кандидата который этого не знает.
>>1344285 Объясни мне, нахуя мне знать, как освобождается память, если в Java у меня попросту нет даже средств для того, чтобы ею управлять (кроме Unsafe)? И это одна из ключевых фишек Джавы: разработчику вообще нахуй не надо задумываться о такой низкоуровневой хуйне и он может сосредоточиться на программировании, а не на ебле с указателями на указатели и на отлавливании утечек памяти. Поэтому данные знания действительно нахуй не нужны, если ты конечно не собираешься писать собственную JVM.
>>1344279 А мне наоборот понравилось, это был хороший вопрос. Особенно если он задаётся не из воздуха, а по ходу беседы, как было в моём случае. Ты ходел бы работать с людьми, которые хорошо понимают устройство языка, или с даунами, которые только вчера хеллоу ворлд освоили, и считают, что этого достаточно?
>>1344292 Ну как минимум с вышеупомянутыми слабыми ссылками ты уже обосрался, средства есть. Но ты прав, в большинстве случаев достаточно просто позволить ссылке на объект вывалиться из скоупа и не морочить себе голову. Но если пишешь свой хитрожопый кэш, коллекцию, да или просто любой другой класс, который управляет своей памятью (хранит ссылки на другие объекты), то понимать это надо.
>>1344303 >Ты ходел бы работать с людьми, которые хорошо понимают устройство языка, или с даунами, которые только вчера хеллоу ворлд освоили, и считают, что этого достаточно?
Да, я хотел бы - но реальность такова что хороших работников не найти, поэтому на такие вещи можно закрыть глаза, если на позиции где будет работать интервьюируемый нет явной необходимости это знать. Я провел много собеседований в большую финтех компанию, и когда только начинал тоже был как ОП, спрашивал всякие "сложные" вопросы, где я хорошо разбирался (про алгоритмы например), но потом понял, что это не нужно, компании всего лишь нужно найти "приемлимого" работника на данную позицию, а не идеального.
Начал вкатываться в джаву, написал простенькое приложение с интерфейсом через SceneBuilder. Имеется 3 файла: Main.java, Controller.java, sample.fxml. Собственно вопросы: 1) Через IDE это запускается, но как мне запустить это все через консоль? При попытке запустить через "java Main", появляется ошибка "Could not find or load main class Main.class". Пробовал различные варианты из гугла в стиле "-classpath . ", "-cp", но мне кажется, что проблема в чем-то другом. 2) Как правильно писать маленькие, прикладные программы? Уточню: есть у меня .java файл, я компилю его в .class файл. А дальше что? Каждый раз через консоль "java main.class"? Писать скрипт? Есть ли способ сделать джава код исполняемым файлом?
Анончики! Надоело быдлокодить! Хочу создавать приложухи и возвращаясь через год не ломать себе ноги, об свой же код. Есть годные книги о том, как правильно сделать слои приложения и как правильно писать чистый, понятный и хороший код?
Такой вопрос. Есть 3 класса, с почти одинаковыми методами. Не хочу повторять один и тот же код в 3 классах. Интерфейс не вариант использовать, так как в этих 3 классах могут потом методы отличаться.
Я сделал абстрактный класс в нём реализовал все методы, которые похожи между 3 классами. А методы которые отличаются реализовал в каждом из этих 3 классов отдельно. (Воспользовался перегрузкой методов).
Получилось следующее: Есть 4 класса. 1 класс является абстрактным и в нём по умолчанию реализованы методы, которые используются в 3 классах. В каждом из 3 классов есть по одному методу, которые реализуются по разному в каждом классе.
Это быдлокод или нормально? Просто смущает, что я создаю класс, ради одного метода.
>>1344346 АХАХХАХАХАХА в голосину проорал) Это этот Егорка) Который призывал отказаться от сущностей? Мол зачем создавать класс, если он ничего не умеет.
>Ты ходел бы работать с людьми, которые хорошо понимают устройство языка, или с даунами, которые только вчера хеллоу ворлд освоили, и считают, что этого достаточно?
>Раздает советы насчёт работы
> Завалил собес
>Считает даунами тех, кто знает технологию хуже, чем он
>>1344336 > Есть годные книги о том, как правильно сделать слои приложения и как правильно писать чистый, понятный и хороший код? Очевидная Elegant Objects. Еще прочитай какую-нибудь книжку по скале\хаскелю\окамлу.
Решил пройти курс на степике по джава. Не могу написать в одном из заданий чё то типо привет мир. class It's alive! It's alive! { public static void main(String[] args) { System.out.println("It's alive! It's alive!"); } } Выдает ошибку Main.java:1: error: unclosed character literal public class It's alive! It's alive! ^ Main.java:8: error: reached end of file while parsing } ^ Может удастся мне помочь?
>>1344543 И что мне там для тебя написать? Как джарник в мавене собрать? >>1344564 Ыыы блять, очевидно же что это опечатка, в остальных местах написано через и.
>>1344563 Ну перенести в сервис добавление пользователя и использовать сервис в контроллере вполне можно (а может даже и нужно). Но я говорил про Throws в доках, которые ты так и не прочитал, хотя я тебе сказал это сделать.
Нужно было сделать блядскую пагинацию на всякое говно. Ну и справлялся я нормально, обычный GET и всё, пока не дополз до одной хуйни. Эта хуйня - два инпут поля. Юзер может вводить туда цифры либо оставить пустим, но пагинация должна быть доступна всегда. В итоге я застрял на том, чтобы передавать эти два Integer-a в контроллер. Пробовал вставлять как @RequestParam да только в любом из раскладов у меня всегда null, наверно я не правильно передаю или ещё что. Плодить контроллеры я не хочу, а потому не юзаю @PathVariable. По мне так это по говнокодски делать: @GetMapping(value = "/hui/{input1}" @GetMapping(value = "/hui/{input2}" @GetMapping(value = "/hui/{input1}/{input2}"
Как можно нормально передавать три и более параметров в контроллер? Вот кусок кода пагинации в JSP <form method="get" class="row" > <select name="pageSize" class="pull-right page-selector" onchange="this.form.submit()">
Понятное дело, что я передаю один параметр - pageSize при помощи "this.form.submit()", но а как мне передать два других параметра, не плодя контроллеры на каждый пук?
>>1344730 У меня за этими двумя инпутами уже закреплён POST да и добавить нельзя, ибо тогда фронт будет очень кривым. Я бы хотел что-то вроде <var="input1" value=${input1}/> Так нельзя но мысль понятна.
>>1332296 (OP) Статичный абстрактный метод вообще невозможно сделать? Есть абстрактный класс. Хочу, чтобы в каждом классе потомке обязательно был объявлен и определён некий статичный метод.
>>1344989 >чтобы в связке html+css+js использовать джаву вместо js Как это? Знаю Vaadin, где можно писать только на Java, а на выходе у тебя будут формочки в браузере. Но хз, это ли ты имел в виду.
Аноны, вы же на линухах сидите? Какую себе "убунтомашину" собирали? Собрал себе, но понимаю что для убунты оверпрайс. Естественно раздел не тот, но мне интересно именно у местных анонов спросить, у которых линух + idea + веб и сериальчики. В общем на каких машинах сидите аноны?
Дали задание для собеседования: Клиент-Серверное (под tomcat) приложение.
Разработать страницу, отображающую в браузере древовидную структуру.
Функциональность: ∙ выделенный элемент должен быть отмечен отличной от других папок цветом иконки; ∙ реализовать «ленивую» загрузку папок, искусственно добавить задержку в 2 секунды при раскрытии папки, задав такой папке иконку загрузки, при этом должна быть возможность производить различные операции и навигацию по дереву; ∙ возможность добавления/изменения/удаления узлов дерева. ∙ перенос папки, включая вложенные под-папки в выбранную папку; ∙ опционально - организовать хранение данных в БД . Задание будет оцениваться по следующим критериям: ∙ приятный и интуитивно понятный интерфейс приложения; ∙ краткий и понятный исходный код; ∙ использование паттернов. Что использовать для решения задачи? Я вижу только вариант с html+css+javascript на фронте и java на беке.
>>1345026 Я в 2014 году (по старому курсу ещё) купил системник примерно за 30к (i7-3770, GeForce GT640, SATA-500, 16GB) Оперативу Android Studio жрёт как не в себя и хром (когда много вкладок открыто). Сейчас поди уже 32гб нужно брать на хоум тачку.
Сап пацаны дали сегодня тестовое задание вывести текст в консоль, ну я их сразу нахуй послал, я блять пришёл на джуниора устраиваться а мне тут блять как с синьйора спрашивают, совсем ахуели бля.
>>1345244 Не рвись манька, не в сем дано вникать в длинные истории, может когда-нибудь твой мозг сможет удерживать в памяти сюжеты длиньше пары часов, но пока что книги и сериалы не для тебя.
>>1345215 Перекотился из офиса (3к евро на руки было) в апворк и топтал - стало 10к на руки, олсо можно перерабатывать если деньги нужны позарез, доходило и до 20к в месяц (по 80-100 часов в неделю сидел), но долго конечно так не проработаешь.
>>1345274 Джава-реакт фулл стек. Ничего сверх естественного не делаю, всякие веб аппы с рест апи. Английский upper-intermediate я бы сказал, проблем с общением не было, кроме тех случаев когда попадались клиенты-бриты, вот там порой пиздец было ничего не понять.
Кстати ты правильно что это упомянул, это очень важно в процессе поиска клиентов, помню как то не выспался, а интервью было в 2:00 AM, так вот там я инглиш зафейлил полностью, естественно клиент решил со мной не работать (и это не смотря на длительную историю на апворке с 100% success rate все ревью хорошие и тд).
>>1345285 Реакт это который JS фрэймворк? или RxJava интерфейсы пользовательские тоже делаешь? я просто фронт очень плохо знаю в части вёрстки например
>>1345296 Охуеть успешный в треде. Дай совет вкатывальщику, куда двигаться сейчас: в активе джава, спринг, пару курсов по хибернейту, андройд бэйсик. Привлекает больше андройд, но вакансий в моем 400к мухосранске практически нет. Но я так понимаю, что даже думая про мобайл, спринг пригодится для написания тех же рест сервисов. Короче как-то я в растерянности.
>>1345303 Обязательно, ну скажем процентов 20 клиентов не любят разговаривать и берут тебя просто на основании фидбека, даже без интервью, потом просто в слаке с ними общаешься. Но это скорее исключение, большинство любят делать видео чаты, еще и каждую неделю, а то и чаще.
>>1345314 уже писал выше - React, React Native, вакансий тысячи, рейт обычно $50 и больше, но как вкатывальщик начни например с $30/h проблем найти не должно быть.
>>1345339 Не знаю, я работаю только с React, просто упомянул что на топтале много вакансий на React-Native, даже дают реферал бонус в $500 если приведешь годного девелопера.
>>1345351 Еще раз для тех кто в танке: можно ли с нуля не зная Java/Object-C и Android/iOS SDK выучить один лишь React Native за полгода и пиздовать во фриланс?
>>1345359 React очень прост, думаю можно выучить гораздо быстрее. Еще раз - я работаю только с React (тот который для веб-аппов), с React Native пока не работал, поэтому точно не берусь сказать нужно ли там знать iOS/Android, но полагаю что вряд ли это необходимо.
Есть хуло ворд на спринг буте. Есть в нем кастомный ексепшен, который кидается если не найдена ентети. Я хочу этот эксепшен поймать в контролер эдвайсе и дальше отправить статус NOT_FOUND - получить редирект на страницу 404. Контролер для /ерорр наследован от ErrorController. spring.mvc.throw-exception-if-no-handler-found=true - указано Что еще надо то блять? Перерыл гугол и уже немного заебался. Один из вариантов / попыток : @ExceptionHandler(NotFoundException.class) public ResponseEntity<Object> handleUserNotFoundException(RuntimeException exc, WebRequest request){ String message = exc.getMessage(); log.error(message, exc); return ResponseEntity.notFound().build();
>>1345409 Это не рест, в это весь цемес. Смутно подозреваю что надо екстендить что то другое например ResponseErrorHandler. РЕСТ кстати работает нормльно. Кароче, я решил это так. Просто добавил респонс статус сверху и вернул тупо шаблон. Я понимаю что это хуевое решение, но оно сука работает. И по тестам и если так потыкать. @ExceptionHandler(NotFoundException.class) @ResponseStatus(HttpStatus.NOT_FOUND) public String handleUserNotFoundException(RuntimeException exc, WebRequest request){ String message = exc.getMessage(); log.error(message, exc); return "404"; }
Мне приходит объект, я просто проверяю - если есть - то добавь еще + 400.
У меня ситуация - добавился объект, с коунтером 100. Потом я добавляю 400 - становится 500. - но сука объект не сохраняет это состояние. ЧТО ЗА ПИЗДЕЦ?
У меня вечно 500, сколько бы я объектов туда не отправил. В каком месте жабы я оподвилился?
Недавно вкатился в спринг, пишу довольно простую рест хуйню, один контроллер, у которого есть зависимость от сервиса через @Autowired, нужно написать тесты для контроллера, но для этого нужно сделать mock копию этого сервиса, с этим проблемы, ибо я встретил довольно много способов это сделать, пытался вникнуть, читая документацию и гайды с сайта спринга, но как-то не вышло. Есть ли какие-то ресурсы, которые помогли бы понять что происходит при мокинге, когда стоит использовать @WebMvcTest, а когда @SpringBootTest? @Mock, @MockBean или подключать MockMvc через @Autowired. Как этот MockMvc вообще подключается и почему не всегда при его подключении прописывается @AutoConfigureMockMvc? Вопросы, возможно и глупые, но хотелось бы достичь понимания.
>>1345857 Спасибо за статью, поправил, пытаюсь сделать что-то такое:
@RunWith(MockitoJUnitRunner.class) public class MockitoControllerTest { private PartiesRepository repository = Mockito.mock(PartiesRepository.class); private PartyService service = Mockito.mock(PartyService.class); private PartiesController controller = new PartiesController(service);
@Test public void testCreation() { assertThat(this.service).isNotNull(); } }
Но вылетает мокитоэксепшн, который говорит, что мокнуть сервис не может. У сервиса есть зависимость от репозитория, я так понимаю, что мокнуть надо сначала его, потом сервис, а потом уже всю эту красоту к контроллеру подключать, да?
>>1345892 Ты определеись ЧТО ты хочешь потестить, а потом уже пиши тест. Выбери только одно. Каждый метод - один случай. Какое поведение ты исследуешь. Я дооолго ебался с тестами по началу кстати, так что понимаю твое замешательство. Рекомендую искать статьи про тесты только старше 2018 года и только 5й спринг ( или какая там у тебя версия), потому что сейчас тесты пишутся сильно по другому. ------------------- У тебя нет сетапа, у тебя до теста нужно сперва сделать предварительно все. https://dzone.com/articles/spring-boot-unit-testing-and-mocking-with-mockito https://www.baeldung.com/spring-boot-testing Для общего развития.
Продублирую из прошлого треда. На собеседовании дали задание: Клиент-Серверное (под tomcat) приложение.
Разработать страницу, отображающую в браузере древовидную структуру.
Функциональность:
∙ выделенный элемент должен быть отмечен отличной от других папок цветом иконки;
∙ реализовать «ленивую» загрузку папок, искусственно добавить задержку в 2 секунды при раскрытии папки, задав такой папке иконку загрузки, при этом должна быть возможность производить различные операции и навигацию по дереву;
∙ возможность добавления/изменения/удаления узлов дерева.
∙ перенос папки, включая вложенные под-папки в выбранную папку;
∙ опционально - организовать хранение данных в БД . Я как перекатывающийся из php вижу решение этой задачи как java servlet на бекенде, но в качестве фронта я вижу только html+css+js.
Причем большая часть задачи, как перенос папки, включая вложенные под-папки в выбранную папку, решается исключительно на js.
Или я не правильно думаю и есть какой-нибудь swing в браузере?
>>1345984 Двачую этого >>1346018. Задание вообще на фронтендерское смахивает, непонятно зачем джава разрабу эти анимации делать и т.п. Хотя, наверное, как обычно нужен и швец, и жнец, и на дуде игрец, желательно еще и за мрот.
Поясните за связку спринг + фронт на реакт/ангуляре. Как оно ИРЛ? Хуярят 2 отдельных сервака. 1 со сприрнгом, который раздает РЕСТ апи + еще 1 на ноде(?) где уже работает реакт или ангуляр апп. Или примерно как здесь. https://habr.com/ru/company/alfa/blog/340776/ Сливают воедино все в экстазе и единственным бэком будет собственно спринг?
>>1346252 Ноды нет. Фронт билдится один раз, во время релиза и в итоге получается папка с минифицированными ресурсами и index.html, которую копируют в статик.
Можно ли при обработке документа не прерывать выполнение, если на какой-то строке возникает исключение, а продолжать, а потом кинуть одно исключение со всеми сообщениями?
>>1346466 Можно поймать исключения в try/catch, засунуть их все в список List<MyException>, а после выполнения метода, если список не пуст, выкинуть свой эксепшн, который в конструкторе будет принимать этот список и извлечет все сообщения сразу.
>>1346485 >Можно поймать исключения Можно поймать одно исключения. Я как раз и спрашиваю, как после этого продолжить с того места, на котором мы остановились. В случае построчной обработки докуента все просто, а если там что-то с вложенностью, то уже не очень.
Ожидание: клиент отправляет серверу две строки, принимает их, выводит в консоль и закрывает соединение, после чего программа завершается. Реальность: зацикливание в методе receiveAll().
Пробовал прогонять в IntelliJ дебагом, выставив брейкпоинт на начале цикла. После приема двух строк оно перестает показывать состояние каких-либо переменных вообще.
>>1347033 Эту настройку я открывал. Но у меня на компе кроме 1.8 jdk никакого нет, он сам как бы должен понизить с обратной совместимостью, а не выбрать другой.
>>1332296 (OP) Аноны, что почитать/посмотреть по теме spring'a стоит начинающему разработчику? В моём городе в большинстве контор требуют его на позицию стажёра
Сап. Книга по сетям для общего развития и чтения на парах/дома профитна? Прочёл половину архитектуры компьютера, как то слишком углубленно, читать трудновато, общая картина не слишком сложилась, да и не применю эти знания углубленные нигде. Осталась книга по сетям, после прочтения сложится понимание работы сетей, или там тоже всё глубоко уходит в цифры и номенклатуру?
>>1332296 (OP) Двач, посоветуй, что бы такого можно было написать, чтобы на этом проекте научиться и показать потенциальному работодателю свои возможности? Какой проект подходит для уровня middle java developer? junior не беру, т.к. там может повести и возьмут с минимальными умениями. А надо наверняка
>>1347235 - сап, народ, хочу засунуть себе в жопу кактус, знаю, что будет больно и опасно. Совал вот так и вот так (скриншоты прилагаются), не лезет. Как правильно засунуть себе в жопу кактус? - вот ты лалка, в 2019 в жопу кактусы совать, все православные посоны давно уже сосут хуй!
>>1347579 Ну олифер подойдёт шоб иметь общее представление о работе, мб какие нюансы полезные, но не лезть в жёсткую прикладную хуйню которая будет усваиваться через 20 перечитываний и мне никогда не пригодится?
Нет случайно в мире долбоебов занимающихся прокачкой начинающих мартышек за бесплатно? Я понимаю, что есть всякие онлайн курсы и т.д., но пока с деньгами не понятно что(возможно появятся относительно большие расходы скоро), а сам не тяну самообучение - нужно, чтобы был кто-то, кто заинтересован в моем результате, не в смысле уговаривать меня как корзиночку, а просто чтобы была ответственность перед кем-то. Вкатываться джуном пока тоже не могу, здоровье не позволяет. Опыт есть небольшой на уровне операций с коллекциями\объектами\структурками, немного sql, веба.
>>1347582 >JSP используется в реальной работе или все уже используют жс фрейворки / тимлиф? Во всяком легаси-говне только JSP и используется, а легаси-говно - половина вакансий Джавы.
>>1347602 Да, вполне подойдет, где то читал что дело вкуса мол читай что хочешь. В любом случае если зайдет одна книга, то можешь читануть другую и она будет как по маслу лететь
Сделал рест апи на спринге. Работает нормально. Поставил спринг секьюрити. Посадил апи за него. Теперь если сделать запрос к апи без пароля редиректит на страницу логина. Как отправить 403 вместо 302 на лоигн пейдж? Спринг не выкидывает никаких ексепшенов в консоль. Ответ мок теста: MockHttpServletResponse: Status = 302 Error message = null Headers = {X-Content-Type-Options=[nosniff], X-XSS-Protection=[1; mode=block], Cache-Control=[no-cache, no-store, max-age=0, must-revalidate], Pragma=[no-cache], Expires=[0], X-Frame-Options=[DENY], Location=[http://localhost/login]} Content type = null Body = Forwarded URL = null Redirected URL = http://localhost/login
>>1347756 Неплохая идея, кстати чет я не подумал, вопрос только с кем. Писал одно время с одним немцем модик к 3 арме довольно неплохо получалось именно с точки зрения мотивации.
>>1332296 (OP) Аноны, нид хелп! настраиваю спринг сикьюрити и тут понеслось. В матчерах прописываю директории как в доках спринга, а именно: "/static/ и /partials/". по факту ничего из этого не работает. с статиком решил так: "//*.css", прошло, а вот как с теймплейтами быть?Спринг не хочет видеть, что лежит в партишелах, но видит, что лежит в корне темплейтов. Структуру папок прилагаю. префикс шаблонизатора на "/templates/".
Анонсы. Работаю год в Андроиде. Устал от верстания экранов и прочей ебатни, думаю перекатиться в бекенд так как в Андроиде больше всего нравится фиксить баги в бизнес логике. Как думаете стоит ли это делать и даст ли мой опыт в Андроиде какой-то плюс при поиске работы в spring/ee?
>>1347499 Значит так. 3 этапа. 1. Пишешь крад сервлетами. Авторизацию/аутентификацию/ фильтрами. Без жпа. Только сессии, только конекшн, только нативный скл. Минимальные стили . Пушишь в репу. Важно понимать, как это работает на низком уровне. Только jsp эта вот хуииа тебе ещё понадобится в жизни. Обязательно миграции бд - самое лёгкое - флайвей. Реализовать минимальные релейшены между таблицами.
2. Крад на том же спринг буте, но уже с жпа, нормальными стилями, с бутстрапом, с нормальной спринг секьюой. Таймлиф или фримаркер. Миграция - ликвбейс. Реализовать все виды релейшенов между таблицами.
3. Фул рест крады, с джаваскриптом и норм стилями. С рассылкой почты, с рекапчами, с полным логированием, миграция на выбор.
>>1348704 Спринг бут сам тебе настроит томкат или андертоу, остальное зависит, насколько у вас сильно развит ci и devops. Докер, линуксовые команды, монго/постгрес/оракл.
>>1348793 Со спринг бутом понятно, но там анон советовал по хардкору с сервлетами поебаться, вот и спрашиваю, а то там помимо томката ещё и джетти есть, вилдфлай и глассфиш! И хз что из этого нужно ждуну вкатальщику трогать
>>1348886 На неделе хрюша звала на вакансию с десктопом на джаве (Swing/SWT). Отказался, конечно же. Так что бывает и пишут, но устраиваться в такие места и учить UI-фреймворки не нужно энивей - вакансий мало, и после увольнения этот опыт будет бесполезен. >>1346504-кун
>>1348918 >в 4 показывают xml конфиги, это тоже полезно Только если собираешься месить легаси-говно. Не видел ещё ни одного проекта, где Спринг настраивался через xml - когда такое было модно, в России все пилили проекты на JavaEE, но даже там старались угорать по аннотациям.
Как клонировать коллекцию? Мне нужна копия с точно такими же значениями элементов. Я так понимаю, просто клон не сработает. Создаст новую ссылку на ту же область данных, и изменив через одну ссылку, данные изменятся для всех. Блед, как же сложно всё.
>>1349179 Общего сборника, к сожалению, нет. Что-то можно почерпнуть из Spring in Action. его нужно читать в первую очередь, там получишь объяснение довольно многих вещей. Затем (или параллельно) рекомендую посмотреть видосы Spring-потрошитель от Борисова на ютубе. Какие-то вещи я почерпывал в процессе изучения конкретного модуля. Например, на канале https://www.youtube.com/channel/UCLMPXsvSrhNPN3i9h-u8PYg есть много записей докладов от самих разработчиков, где они расказывают подкапотные вещи.
Какую ide поставить на старенький комп? Идея слишком много памяти ест, а у меня всего 8 гигов и довольно долго все запускается, если проект более-менее серьезный. Хотелось бы че-нить менее требовательное к ресурсам.
>>1348948 Тоже предпочитаю аннотации, но в xml конфигах есть свои плюсы, например посмотри конфиг сокет коннекшина со spring-integration [1], весь конфиг в паре строчек, на аннотациях это было бы разбросано по многим классам.
>>1349893 Я по туториалу с spring.io почти запилил свой таск манагер, но ощущение, что я тупо копипащу без нормального понимания кто что делает. В гайдах есть небольшие пояснения но хз.
>>1332296 (OP) Я тут прочел, что начиная с java 11 больше стандартной jre у джавы не будет, и предполагается, что для каждого приложения будет генерироваться свой рантайм, в котором будут только необходимое для приложения модули, и этот рантайм надо распространять вместе с приложением. Вроде бы идея не плохая, но как же быть если у пользователя будет много джава-приложений, неужели для каждого приложения будет свой рантайм?
>>1349893 Я уже написал пару приложух на спрингбуте по мануалам, но это казалось мне реальной магией. Решил прояснить все чтением спринг ин экшн 5. Читаю, а там основной посыл такой "спрингбут эта круто, заморачиваться не надо, добавьте депенденси и все само заработает". Поэтому пришлось откатиться до спринг ин экшн 4. Вот тут я реально очень многое осознал и понял.
>>1349950 Ну вот какой тебе смысл сейчас узнавать, что там под капотом ? Все равно на данном этапе не поймешь. Попиши крады, поделай рест. Устройся на работу, апни мидла, тогда и углубляй знания. Сейчас это тебе не надо. Многие д3 стримов не знают и живут.
>>1350039 Меня сходу на собесе спросили про депенденси инжекшн, какие способы внедрения зависимостей я знаю, какой способ лучше использовать. Все это я как раз и вычитал в спринг ин экшн 4 пару дней назад.
Поясните за женерик. Если я объявляю массив примитивного типа, например char[] i , то женерик его не кушает, если от класса Character[] i - то все ок, почему?
Есть ли какая-то книга по жабе для вкатывальщиков с других ЯП? Открыл Head First Java и ощущение будто я семилетний ребенок которому всё жуют и в рот запихивают. Есть что-то не кнутоподобное, но при этом более-менее серьезное?
>>1349930 Это сделали для микросервисов и прочей инфраструктуры, где жирный рантайм ни к чему. Также Ораклы пилят GraalVM, который способен сгенерировать нативный бинарник: насчёт применения пока не уверен, но наверное серверлесс, IoT девайсы и тому подобное.
>>1350806 Не, перепробовал уже все. Это кодировка внутри жабы похоже или приходящая с хттп пост запросом, я точно не понял, но она зашивается в реквест и её хуй поменяешь. Я прост конвертером перевожу её. Используйте конвертер короче в таких случаях.
Может кто поможет, буду очень признателен. Ебусь там с начальным спрингом, аннотациями и передачей объектов на хытымл с контроллера http://stackoverflow.com/questions/54761923
>>1350824 >Это кодировка внутри жабы похоже или приходящая с хттп пост запросом Попробуй заглянуть в запрос до того, как он провалится в жабу. Как - не знаю.
>>1350843 Это тоже нагугливал, пишут что там в хедере как раз и указывается эта ебучая исо 8859-1. Писали пару решений как кому то помогло, но мне не помогло.
>>1332296 (OP) Какая выгода от DI фрэймворков? Чем плохо реализовать DI просто ограничившись добавлением интерфейса в конструктор, просто сделать интерфейс IFoo, сделать класс Bar с конструктором Bar(IFoo foo), и готово, потом сам создаешь конкретные реализации IFoo и передаешь их в конструктор, безо всяких контейнеров
>>1351086 Для больших проектов так просто удобнее и требуется меньше кода. Для маленьких конструктор вида MyClass(A a, B b, C c) { this.a = a; this.b = b; this.c = c; } уже будет выполнять все функции DI фреймворка.
>>1332296 (OP) >На джаве фриланса нет. Хочешь фрилансить — дуй в ПХП/раби/1С тред. А нахуй он нужон тогда? Чтобы сидеть офисной макакой в какой нибудь компании и с 8 до 5 пилить всякие штуки?
Я у мамы погромизд В чем прикок этой ваши джавыраш, там ведь нихуя толком не объясняется, например, че вот такое string че такое arcs нахуй оно вообще присутствует в коде или это чисто для того чтобы понять что по шаблону ты можешь что то "кодить" а дальше уже или покупай курсы или пиздуй сам учиться?
>>1351324 Архитектурный стиль поверх протокола HTTP. Простыми словами, список ссылок, к которым обращаешься с помощью HTTP-запросов, данные передаются обычно в json или xml. Например, отправив POST-запрос с данными по ссылке /users ты создашь нового пользователя, отправив GET /users, получишь список пользователей, GET /users/1 вернет пользователя с id=1. Клиент (мобильное приложение, например) потом эти данные динамически вставляет на страницу.
>>1351388 У меня относительно старый проц и 8 гб оперативы и идея открывается за 1 мин 02 сек. Хотя видюха у меня гтх 1060 А дело тут в том, что жесткий диск медленный, а не проц или оперативки мало. Покупайте ССД. мимохакер
>>1351555 >А чем Spring MVC отличается от Spring Rest? Можно ли писать веб-приложения на rest не используя jsp? Ты туториалы с официального сайта запусти, там простые примеры, сразу по коду всё поймёшь. И главное запомнишь 3 аннотации которые позволят тебе минимальную приложуху создать!
>>1351555 Spring Rest - это надстройка на MVC. Для Rest'a JSP не нужен. Используя rest, ты, грубо говоря, можешь загрузить 1 раз страницу, а потом вставлять туда полученный json (гугли single page app). В случае jsp ты генерируешь каждую html на сервере, самостоятельно вставив туда данные, и отдаешь клиенту полностью готовую страницу.
>>1351766 В старых проекта используется. В новых в основном javascript-фреймворки (Angular, React, Vue и т.д.) + REST backend.
>>1351770 SOAP - это протоколы (строгие стандарты, в отличие от REST) поверх xml, причем HTTP используется просто для передачи данных (только POST-запросы). Куча статей есть на эту тему.
Жабисты, хелп. Как в спринге реализовать долгоиграющий таск, который дергает сервисы, которые в свою очередь лезут в базу и чтото в ней меняют например.
Есть @Around-эдвайс, в котором написан примерно пикрелейтед. В случае, когда try-catch-finally завершается нормально, энтити сохраняется, а когда выбрасывается исключение - нет. ЧЯДНТ?
Подскажите плез. Вот я сделал ентерпрайз приложение. В каком виде я должен нести его заказчику? Например есть у меня сканпелиный war-файл. Я иду к заказчику, ставлю у него томкэт, базу данных. Деплою свой варник. Но куда мне например внести (где хранить) реквизиты к БД, если у меня итоговый продукт - один war-файл?
Или я должен нести к заказчику сорцы, на месте править проперти-файл, прописывать там реквизиты БД, и все собирать мавеном? Некоторые пишут, что можно в pom-файле хранить реквизиты, чтоб сорцы не трогать вообще, но чёт не очень как по мне.
Короче, как на деле обстоит процесс дистрибуции ентерпрайз софта?
Не знаю в каком треде написать, но может кто сталкивался:
есть на AWS 2 EC2 сервера на одном крутится некий процесс который генерирует месседжи и кидает их в ActiveMQ. Процесс на другом сервере читает их и обрабатывает, так вот лейтенси 100-200 мс, нужно 10-20 мс, поможет ли свитчнуть activemq на кафку? а то лень просто ради эксперимента менять.
>>1353566 >ентерпрайз приложение. >В каком виде я должен нести его заказчику? >ставлю у него томкэт, базу данных. >Деплою свой варник. В наше время докерами нужно всё обмазывать или накройнях скрипт онитик написать на ебаше который сам всё там проставит и за деплоит.
>>1350834 Хуиту наворотил! >type.toString().toLowerCase() Гугли методы enum и конкретно name() Гетеры и сетеры запили блядь. Налепил стримов нахуя? Привыкай писать логи на каждый чих! Тогда по консольке будешь заранее видеть где ты проебался!
Есть какие-то годные тытуб каналы(рус\англ), чтобы на фоне послушать, дабы поискать пробелы в основах на уровне женериков, паттернов и т.п. сложности? Или лучше не ебать мозги и методично дрочить ДУМАЙПОЯВОВСКИ\Хорста? Просто от книжки засыпаю, а от видосов периодически появляется мотивация и реальный результат в виде попыток покодить услышанное.
Анонсы, помогите, пожалуйста, обучаюсь второй месяц.
Значит следующая ситуация. Есть четыре класса. Один - Reminder - класс из которого я делаю напоминания. Есть main, откуда я все запускаю. И есть два класса с ArrayList - один со списком напоминаний, другой с выполненными напоминаниями.
Так вот, я хочу сделать метод, чтобы из листа с напоминаниями переводить их в лист выполненных и удалять из первого листа. Получается следующий код (конечно, я все упростил для примера): Main:
public class Main { \t \tpublic static void main(String args[]) { \t \tTaskList list = new TaskList(); \tReminder rem = new Reminder(); \tDoneList done = new DoneList(); \t \tlist.list.add(rem); \tlist.setDone(0); } }
Список напоминаний:
public class TaskList { \tArrayList<Reminder> list = new ArrayList<Reminder>(); \tDoneList done = new DoneList(); \t \tpublic void setDone(int i) { \t\tdone.done.add(list.get(i)); \t\tlist.remove(i); \t} }
Список выполненныйх напоминаний
public class DoneList { ArrayList<Reminder> done = new ArrayList<Reminder>(); }
Объясните, пожалуйста, почему "done.done.add(list.get(i));" не добавляет объект во второй лист?
Конечно, способ, наверняка, говно, но очень хочется понять почему не катит. Читал все, включая документацию и не могу найти ответа.
>>1354620 Ну вот я передаю в метод setDone аргумент int i, и пытаюсь удалить пункт в списке за номером "i", это получается. Но как же тогда передать этот самый пункт в другой список? Разве list.get(i) не возвращает (returns, не знаю как по-русски правильно, тк изучаю на английском) нужный мне пункт? И done.add.add по сути указывает на нужный объект и лист в нем.
>>1354634 возвращает, но он добавляет этот элемент в список DoneList, инициализированный внутри объекта TaskList, а это не тот же самый список, что и инициализированный внутри main(). Ну и добавь сеттеры/геттеры, ради б-га
Ребзя, в чём лучше всего сейчас писать ГУИ под десктоп? Сначала смотрел в сторону JavaFX, но оказалось, что его нет в моём JDK, а переустанавливать заново лень было, поэтому перешёл на Swing, ибо везде пишут, что AWT старьё вообще. Нужно на лету добавлять и удалять компоненты, может ли свинг в это красиво? Никогда до этого ГУИ не писал.
Сап, подскажите плз, застрял с одной хуйней в спринг в действии 5 ( в главе 2-3) конкретно с передачей с контроллера на хтмл и последующим отображением. Гуглил-хуюглил, гитхабил-оверфловил, все бестолку. Уже на неделю застрял. Жалко время и свои нервы, может кто-то ткнуть ебалом что не так ? stackoverflow.com/questions/54851353
>>1354745 >один список в другом Имеется в виду, что у меня в классе с одим списком объект класса другого списка?
>за сервисом Спасибо огромное, как это гуглить? В англ варианте так и будет java service? На данном этапе обучения не знаю что это, но, опять же, с русской терминологией не знаком.
>>1354733 Сейчас круды кругом, так что в веб вкатывайся с базовых хтмл, ксс, йаваскрипт. Если же тебя на будущей работке занесёт нелёгкая ковырять махровый легаси, вот на чем там десктоп нахуярен в том и разберёшь, там и ява будет 4-ая или 5-ая. А сейчас только время зря тратишь! Сейчас джунам на тестовое дают круды где минимум бустсрапон ну или консольное на смекалку.
>>1354760 >Имеется в виду, что у меня в классе с одим списком объект класса другого списка? да, некошерно это. Ты либо сделай что-нибудь типа такого:
public class TaskList { ArrayList<Reminder> list = new ArrayList<Reminder>();
public ArrayList<Reminder> getDoneReminders() { return list.filter(Reminder::isDone) .collect(Collectors.toList()); } public ArrayList<Reminder> getPendingReminders() { return list.filter(r -> !r.isDone()) .collect(Collectors.toList()) }
}
public class Reminder { private int status; public void setDone() { this.status = 1; } public boolean isDone() { return this.status == 1; }
Либо, сделай сервис (это просто паттерн), который будет прятать оба списка за собой, типа public class ToDoService { ArrayList<Reminder> pendinglist = new ArrayList<Reminder>(); ArrayList<Reminder> donelist = new ArrayList<Reminder>();
public void setDone(int i) { donelist.add(pendinglist.remove(i)) }
public void setPending(int i) { pendinglist.add(donelist.remove(i)) } ... }
И обращайся к сервису, когда тебе надо поменять статус у элементов.
Сервис тогда будет тебе определять интерфейс, с которым ты можешь работать, а внутреннюю имплементацию ты потом можешь легко поменять. Например, поставить за сервисом базу данных, или использовать всего один список, как в примере выше и тд
Пришла в голову идея, заставлять решать свои проблемы индусов. Какой-то задвиг или затуп, сразу давать им это задание на реализацию, за копейки и отзывы. Дайте, пожалуйста, ссылки не такие бирж
>>1354930 Не крутой, но участвовал да, в лучшее время был красный рейтинг, сейчас недавно попробовал на топкодере едва первую задачу решил на 160 баллов.
Не знаю почему там так написано, но могу точно сказать, что это не правда.
Использовать MultipartFile напрямую в сервис-слое это бэд практис? Читал, что в сервисах не должно быть веб зависимостей, как тогда лучше передать его?
>>1355602 Сап, подскажите плз, застрял с одной хуйней в спринг в действии 5 ( в главе 2-3) конкретно с передачей с контроллера на хтмл и последующим отображением. Гуглил-хуюглил, гитхабил-оверфловил, все бестолку. Уже на неделю застрял. Жалко время и свои нервы, может кто-то ткнуть ебалом что не так ? stackoverflow.com/questions/54851353
>>1355602 ну ты и нахуевертил. Короче, если я вот к такому виду приведу DesignTacoController.java (https://pastebin.com/q7f0m4D0): 1) Уберу @ModelAttribute("design") с метода с ним вообще страница /design не открывается, сыпясь с ошибкой 2) Поменяю @PostMapping на методе на @GetMapping 3) Уберу method = RequestMethod.POST с аннотации на контроллере нахуя вообще это на контроллер лепить То в браузере у меня видать пикрелейтед
Я честно говоря хуй пойми, какую ты проблему на стековерфлоу описывал, потому как твой код ее не воспроизводит
>>1355681 Спасибо большое за ответ, у меня все так и было. До того как стал менять по советам с стака все подряд. НО БЛЯТЬ, у меня даже сейчас отображается какая-то хуйня, вместо того что у тебя. Я вроде не ебанулся ещё головой, я же запускаю мейн класс, жду когда запустится и переходжу на хтмл страницу и там выбираю иконку браузера которым я хочу отобразить ?
>>1355739 Вот тут-то ты и косячишь. Ты же просто смотришь браузером шаблон для таймлифа, а надо-то на сервер заходить, чтобы он как раз тебе на основании этого шаблона контроллером страницу сгенерировал. Вот этот самый сервер как раз ты и запускаешь через TrytacoApplication.java
>>1355742 Читай лог, который тебе приложение при запуске показывает, там будет написан порт, на котором приложение крутится. Заходишь на http://local host:порт браузером и оттуда пляшешь на свою страницу
>>1355743 Я и запускал сервер, а потом открывал страницы. Но вот где надо с контроллера передать что-то - открывается, но ничего не передаёт, выдает только статический текст. Я уже подумал, что у меня сервер не запускается. И да, в логах же выдает стандартный 8080, а из под него ни одна из 2 страниц не хочет открываться в браузере, выдает white label ошибку какую-то. Это значит, что сервер не работает ?
Поясните за crsf в Spring Security. Я нашел гайд для ангуляра https://spring.io/blog/2015/01/12/the-login-page-angular-js-and-spring-security-part-ii Где предлагают передать срсф-токен в кукисах, и как то меня это напрягает. К этому токену по идее может получить доступ любой другой сайт же. Да обратно он видимо пересылается в хедере, но это как то неправильно. А если я хочу например фронт на реакте сделать или вообще просто на на чистом js. + видимо если фронт будет на другом серваке надо еще CORS настроить, но это уже не по теме.
>>1355795 Блин, все, спасибо большое, это я идиот. Когда сервер запущен, к тому порту надо просто имя файла было докинуть, а я фул путь прописывал и из-за этого не находилось
Джаваны, я к вам с платиновой платиной. Как изучать спринг? Ворочаю тырпрайз говнище с 2016, интегрировал Nuxeo, пердолил Liferay, джаву саму по себе подтянул, про сопутствующую поебень типа сборщиков проектов и контроля версий узнал, но потом чет приуныл с того что от проекта к проекту одно и то же говно. Сменил галеру, просидел год на проекте пятилетнем сделанном на Спринге, и чет по выходу с проекта оказалось что я толком нихуя нового и не узнал и всякие слова типа JPA, Spring Integration и прочие Boot и Security вообще темный лес. И как-то нехорошо это, 3 года опыта вроде как, Ванька Ерохин вон уже миддлом стал, а я джуниорскую поебень не осилил до сих пор.
>>1356070 Такое возможно? Я вот безработный все еще выкурил несколько мануалов по хиберу, курс по спрингбуту с ютуба(letscode), дочитываю спринг ин экшн 4 и 5 с пройденным джаварашем.
Господа, есть один примитивный самописный парсер Wildberries, который отслеживает появление определенного размера на сайте с определенным интервалом, парся через jsoup таблицу размеров.
Подскажите, как правильно спроектировать приложение для дальнейшего возможного расширения.
Лично мне в голову лезет создание интерфейса "PageChecker" с методом "checkPage", а класс PageChecker переименовать в WildberriesPageCheckerImpl чтобы можно было добавлять другую имплементацию чекера, например, Ламоды.
Ну и SoundClipPlay переименовать в SoundClipPlayImpl, унаследовавшись от интерфейса, например, Notifier с методом "notifyApperence".
Вот смотрите, я правильно понимаю, что DataSource это некая абстракция, позводяющая получать готовые коннекшены с БД? DataSource хранит в себе ConnectionPool, который создаётся на сервере. Теперь вопрос. Когда я в спринге задаю конфигурацию Datasource и описываю соединение с БД, на каком именно этапе сервер поймёт, что приложение использует датасорс и сконфигурит пул соединений? На каком этапе сервер, допустим, поймёт, что датасорса в прилодении не используется, а используется прямое подключение через jdbc и пул соединений поднимать не нужно?
>>1357163 >на каком именно этапе сервер поймёт, что приложение использует датасорс и сконфигурит пул соединений
Тогда, когда ты попробуешь получить конекшен с этого датасурса.
>На каком этапе сервер, допустим, поймёт, что датасорса в прилодении не используется, а используется прямое подключение через jdbc и пул соединений поднимать не нужно?
Если ты датасурс не используешь, а идёшь напрямую в jdbc через драйвер менеджер - то сервер и не будет тебе поднимать никакого датасурса, даже если ты сконфигурил его.
>>1357163 Блядь ну читай ты логи! И сорцы смотри! Тогда поймёшь что там твой спринг делает! Можно прост использовать ждбс, можно подключить конекшен пул типо хикари
>>1357169 Ну типа в методе берется лок по айдишнику какой-то сущности. В другом треде мы проверяем, есть ли лок на этот айдишник, и если он залочен, то кидаем исключение.
>>1357344 Можно в JPA заюзать Pessimistic лок с timeout=0 при запросе, тогда, если поток запросит лок на уже занятый объект, то получит LockTimeoutException.
>>1357434 А ты пиши понятно, че тебе надо. Если ты говоришь про сущности и айдишники, то я и подумал про JPA. Попробуй с обычным локом и таймаутом то же самое, Lock.trylock может быть.
Сап. Подкиньте идею для библиотеки на Java, или подскажите где искать. Вкатился в спринг, но плохо понимаю потоки, reflection и т.д. Хочу догнаться по этим темам и заодно написать диплом. Времени ~3 месяца.
>>1357717 Не, пробовал и с коммитами. Скрипт почему-то выполнялся до того как хибер создаст таблицы, т.е. он вставлял в старые таблицы, потом хибер их дропал и создавал заново. Как пофиксить порядок я так и не понял,разве что заменить data.sql на import.sql.
Как сочетать в 1 приложении springa Error Controller и ControllerAdvice для реста. Это реально вообще? Контролер перехватывает 404 и вместо ответа в виде джейсона выдает страницу хтмля. Остальные эксепшены долетают видимо до эдвайса и выдается джейсон.
>>1332296 (OP) Хочу шо нить по спрингу почитать. Аноны, что по вашему мнению лучше мб читал кто нить Spring Boot 2 Recipes или Spring. Все паттерны проектирования ПС Spring in Action читал
Юзаю Spring и вот вопрос, что предпочтительнее: Все сервисы, которые есть в приложении, пометить аннотацией @Service и инжектить в нужные места с помощью @Autowired или не помечать их как сервисы, а забивать через конструктор их экземпляры в нужные места?
Еще вопрос по Spring от другого анона. Есть веб-скрвис, частично написанный на Spring и jpa. Слой Dao написан руками, без использования Repository. Как протестировать этот слой? Я понимаю, что нужно еще один persistence.xml с настройками in-memory db. Но в тестах не подхватывает entityManager bean с новыми настройками, а инжектит старый из production. Как решить?
>>1358954 Если DAO написан руками то ты полюбому конфигурили DataSourse, верно? Так что тебе мешает сделать две конфигурации датасорса и инжектить для прода норм, а для теста какую нить H2. Можно даже профилировать типа если профиль - test, то инжектить h2, если прод то норм базу
Доброго времени суток, ситуация такая есть возможность попасть на работу в компанию Netcracker вопрос заключается в следующем в какой отдел работающие там или знакомые со структурой посоветовали бы попроситься? сейчас предлагают отдел миграции и иммиграции данных. На сколько это хорошая идея по мнению местных анонов идти в такой отдел?
Хули гит такой ебанутый. Все через сосноль, все через жопу. Какие пулы мержы блять. Нахуя все так запутано делать. Ебать я осилил жаву но с иногда трудом понимаю что там делать в этом сраном гите впринципе блять.
Поясните за oauth2. Вот допустим я получил данные от фейсбука (например), и потом хочу зарегать пользователя себе в БД. На основе чего мне делать пароль? Если кто то получит данные к коду то будет ясно из чего пароль создается. Делать регистрацию не полностью автоматической, просить юзера сделать еще пароль? Смысл тогда в oauth2. Можно и так зарегаться.
Может ли контроллер вызывать несколько сервисов подряд, учитывая что методы read-only, т.е. в транзакции они не участвуют? Например, надо получить List<A> из сервиса A, потом List<B> из сервиса B, потом конвертировать их в общий DTO в контроллере и передать клиенту List<DTO>.
>>1359601 >Хули гит такой ебанутый. Все через сосноль, все через жопу. Сам ты пидор тупой через жопу! Все нормальные пацаны через консоль выучили команды и делают по красоте! А то сегодня у тебя божественная IDEA, а завтра богомерзкий Eclipse и ты блядь будешь опять читать мануал и гуглить где там и как коммит сделать.
>>1359841 Открываешь гит перспективу, подключаешь локальный гит (ссука сразу не может найти что ли?) файл открывает не от текущей директории а блядь от домашней папки сука бесит
>>1359795 Но теоретически, я могу выдернуть данные и зарегать пользователя, записать в БД. Чем не вариант. Правда все АПИ хотят реальный адрес сайта а не локалку. Сейчас пердолюсь с shh. Посмотрю что получиться.
>>1359884 Чтобы сделать ему учетку и потом дать делать что то в личном кабинете например, сохранять какую т освою хуету, которая отдельно для каждого пользователя.
>>1359601 Качаешь себе GitKraken и не ебешься в жёпы, всё чинно-красиво драг энд дроп и подобная хрень. Один минус - не захочешь потом на соснольке прописывать, а это полезно ващета
>>1359887 Ну я немного могу в соснольку. Но когда начинается всякое типо гит ребейз -1 ХЕАД~5 и блокнотики я ебал эту хуйню блять. Нахуй это так было делать то.
>>1359897 Ну честно сказать, я разве что мерджить/ребейзить из терминала не умею без хорошего diff тула, остальное типа коммитов/чекаутов там нечего уметь
Что писать в резюме если у меня нет опыта нихуя? Сделал хеловорлд на спринге с БД и еще какой то хуетой типо реста + могу в ЖС немного (без фреймворков, реакт читаю сижу). Джаву кор на боле мене приемлемом уровне и алгоритмы несложные. Красно-черные деревья по памяти не напишу, но какой нить БФС осилю. Есть опыт работы манагером комерческого отдела и эконом вышка. Что искать то куда податься. Софт скилы норм, внешне нормис, могу пиздеть ни о чем и производить впечателние.
>>1360070 >Сделал хеловорлд на спринге с БД и еще какой то хуетой У меня весь гит крудами забит, уже несколько тестовых заданий по 2 недели делаю а мне даже обратную связь не дают!
>>1332296 (OP) Сап. Довольно странный вопрос: удобно ли использовать Spring Security для бекэнда - авторизация/регистрация/аутентификация и вот это вот всё, без веб клиента мобилки? Все гайды, которые видел (в том числе офицальный Spring'овый) работают с веб мордой. Если кто-то использовал, можете поделиться инфой или гайдами, как адаптировать Security, или подскажите, что можно прикрутить к Spring'у для решения этой задачи.
Поясните за лямбды. Лично с моей говнокодерской точки зрения они перегружают код и сложны для прочтения, когда них делается что-то сложнее построчного вывода из коллекции в какую-нибудь консоль, например. И стандартные форы, где можно замечательно понимать, что делается построчно гораздо лучше, в случае когда твой код будет ещё кто-то юзать. Я не прав и лоу скилл без опыта, а батьки спокойно с полувзгляда считывают любую лямбду? Если да, то где её явно лучше юзать, чем классический подход.
>>1360588 Про эксепшон хуй его знает, а по второй и третей всё просто. В первом случае у тебя идёт перемножение двух интов, переполнение, а потом каст в лонг при присваивании. Во втором у тебя сначала происходит явный каст i в long. Потом, при умножении long на int, происходит неявный каст int в long. Приоритеты же, ёпта. Тайп каст по приоритету выше умножения.
>>1360588 Во, по ексепшону. Короче, это ФИЧА. >The native methods this function uses does take long values without reporting an error. You can call them using reflection. However you would have test whether they work for you on your system and using memory mapping this way, could confuse you more than be useful. >The best approach is to create an array of MappedByteBuffers, e.g. 1 GB each in size and create a wrapper which hides this ugliness. >While not technically a bug, it is BAD (Broken As Designed) Part of the reason this was done originally could be that 32-bit JVM could not support this, but I don't see why 64-bit JVMs still have this limit.
>>1360847 В восьмой версии завезли беззнаковые костыли. Теперь хуй проссышь вообще, какой там Integer.MAX_VALUE. Но это жи жаба, хуле ты от неё хочешь.
>>1332296 (OP) Привет. Хочу подготовиться к первому в своей жизни обсеру собеседованию на позицию junior enterprise разработчика. Для этого заказал пикрил, чтобы систематизировать и подтянуть знания. В целом я практикуюсь/изучаю язык уже год, и уже даже свой первый говно-сайт (простенький CRUD) написал, но много чего забылось. Как, например, сделать итерацию в HashMap и т.д. Понятное дело, что при надобности это гуглится быстро, но на собеседовании это будет не аргумент. Собственно обоccыте, поддержите или подскажите как лучше подготовиться. К слову английский B1, но только в чтении и письме, а вот практики говорить у меня было очень мало.
Q: Поздно ли вкатываться в айти в 20/30/40/100 лет?
А: Нет, не поздно.
Q: Cобираюсь учить джаву по 2/5/20 часов в день. За сколько дней я выучу достаточно, чтобы зарабатывать фрилансом?
A: На джаве фриланса нет. Хочешь фрилансить — дуй в ПХП/раби/1С тред.
Q: Хули все книги на английском?
A: Без английского ты не нужен и можешь смело идти нахуй. Ну или в 1С-тред.
Q: Что скажете за джавараш?
Если вкатываешься с нуля, то можешь написать пару "хеллоу ворлдов" до 10 лвла. Дальше курс рассчитан на ленивых и не умеющих читать книжки людей. Количество говнокода зашкаливает, годных задачек пару штук на весь курс. В любом случае решать тебе.
https://github.com/qqqlll/Java-Thread/wiki