Вы видите копию треда, сохраненную 24 мая 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Q: ЧТО СКАЖЕТЕ ЗА ДЖАВАРАШ?
A:Худшая инвестиция в твоей жизни. Огромное количество говнокода, оторванные от жизни задачки, 1000 заданий по выводу в консоль какого-то говна.
Q: Посоны, собираюсь учить джаву по 2/5/20 часов в день. За сколько дней я выучу достаточно, чтобы зарабатывать фрилансом?
A: На джаве фриланса нет. Хочешь фрилансить — дуй в ПХП/раби/1С тред.
Q: Значит, я должен буду всю жизнь сидеть в опенспейсе, конвертируя XML в эксепшны? Ура, мне подходит! С чего начать?
A: Туториалы:
BEGINNER: http://myflex.org/books/java4kids/java4kids.htm
MEDIUM: http://www.tutorialspoint.com/java_technology_tutorials.htm
HARD: http://docs.oracle.com/javase/tutorial/
Книги:
- Head First Java, (2nd Edition) : Kathy Sierra, Bert Bates - для совсем нулячих простым языком.
- Core Java (9th edition) : Cay S. Horstmann, Gary Cornell - тоже для нубасов, но на серьёзных щщах.
- Thinking in Java (4th Edition): Bruce Eckel - для тех, кто уже умеет в программирование на другом языке, но хочет перекатиться.
- Effective Java (2nd Edition): Joshua Bloch - для тех, кто знает джаву, но хочет перестать писать костыли.
Больше здесь: http://www.proklondike.com/books/java.html
- Soft Skills: The software developer’s life manual : John Sonmez - сказки на ночь.
Видео:
https://habrahabr.ru/company/golovachcourses/blog/215275/ : 1000+ часов видео по Java на русском.
Q: Хули все книги на английском?
A: Без английского ты не нужен и можешь смело идти нахуй. Ну или в 1С-тред.
Q: Я не могу в книги. Наткнулся на джавараш, но в самом верхнем вопросе уловил нотки сарказма. С ним все правда плохо?
A: Это очередной курс(выучи джаву за 60 секунд и получай 300к в месяц), основная цель которого - выкачать из тебя деньги.
Q: Пока читаю, все понимаю, а сам ничего сделать не могу. Что делать?
A: Практика, больше практики.
Уровня laba1.pas: http://codingbat.com/java http://codehunt.com
Чутка серьезнее: http://programmr.com/zone/java http://codingame.com/puzzles
Рулеточка: http://postimg.org/image/xdfbvgps9/
Олимпиадка: http://codeforces.com
Примеры той-проектов: http://eax.me/programming-language-learning/
Ежедневные задачки, разделены на три уровня сложности https://www.reddit.com/r/dailyprogrammer
Q: Я выучил кор, достаточно ли этого, чтоб взяли на работу?
A: Лол, конечно нет хотя некоторым всё же везёт.
Цикл статей что в каком порядке учить: http://dou.ua/lenta/articles/java-beginner-guide-1/ (заблочен РосКомПозором, юзайте прокси)
Q: Слышал, SQL знать надо обязательно. Где его учить?
A: Начни с малого: http://www.w3schools.com/sql/default.asp
Затем переходи к: http://www.sql-ex.ru/
Q: Всё это хорошо, но без алгоритмов меня на работу не возьмут.
A: Не беда, вот курсы от Принстонского университета: https://www.coursera.org/course/algs4partI
То же самое но в бумаге: Роберт Седжвик, Кевин Уэйн - Алгоритмы на Java
Q: Я готов к первому собеседованию.
A: Проверь свои знания здесь: http://www.quizful.net/test
И здесь: http://www.careercup.com/
Q: Вопросы на собеседование.
A: http://jsehelper.blogspot.ru/2016/01/blog-post_59.html : куча вопросов с ответами не всегда правильными
http://becomejavasenior.com/blog/2015/07/01/327-inter..
Q: Какие еще ресурсы можно почитать?
A: https://android-arsenal.com/ : android
https://google.github.io/styleguide/javaguide.html : google java style
http://blog.jooq.org/ : Java, SQL, and jOOQ
http://virtualjug.com/podcast/ : подкасты
Q: Где можно пообщаться на java тематику?
- В этом ITT треде.
- https://www.reddit.com/r/java : reddit
- http://stackoverflow.com/questions/tagged/java : платформа для вопросов и ответов
Список java фреймворков, библиотек и по на любой вкус:
https://github.com/akullpp/awesome-java
Шапка треда:
http://pastebin.com/37Ldgi60
Предыдущий: https://2ch.hk/pr/res/950088.html (М)
Heliantus Annum.
Жава была специально создана, чтобы отмывать банковские деньги в IT. Нужно было чем-то обосновывать миллиардные траты на железо и инфраструктуру. Т.к. железо становилось все быстрее и быстрее, то потребовалось создать максимально уебанский язык программирования, чтобы никакой прогресс в железе не мог преодолеть его подводные камни.
Смотрел я на этот ГО, 100500 каких-то велосипедов, ничего толком нет путевого (я ожидал что-то типа джанги там, а там огрызки).
Такой же пустой хайп как и руби, только бюджет побольше.
И так вернемся к проверенным инструментам:
>Кто что использует для веб-проектов?
HTML
Play, Akka HTTP
саму базу поднял, а, вот, как связать её с java классом?
я потому и обратился, что там не обнаружил ответа
ну, или же, в силу своего тупизма его не понял
Напиши в гугле "подключение mysql java" и все, достаточно скопировать некоторые параметры и подставить свои логин пароль
import java.sql.*;
Connection connection = DriverManager.getConnection(dbUrl, dbUser, dbPassword);
да, я это понимаю
проблема в том, какой именно проект выбрать?
для idea нашел, там все подробно рассказано
а для netbeans'a написано только: "выберите "приложение Java""
Нахуй тебе какие-то проекты? Берешь гредл (или мавен) и хуячишь что тебе надо.
Слушай, я немного запутался окончательно с этими контроллерами. В общем, суть приложения такая - при запуске приложения делается проверка в базе, если ничего нет,
то делается запрос к api и добавляет в базу Photo с ссылкой на фотку и солом (день марсианский).
В общем, я пытаюсь как-то связать PhotoController с вызовом приложением, чтобы только один метод addPhoto вызывался. В нем бы делалась проверка на наличие чего-то в базе и потом новая фотка заносилась в базу.
Я понял что это делается через Rest, но как его связать с контроллером.
Извини, что заебываю, но ты единственный, кто помогает с этим гавном разобраться
https://github.com/Kabowyad/Test-Project/tree/api-test/src/main
> A:Худшая инвестиция в твоей жизни. Огромное количество говнокода, оторванные от жизни задачки, 1000 заданий по выводу в консоль какого-то говна.
То-то большинство тестовых заданий как-будто слизано с JavaRush. 30+ лвл, ни разу не пожалел насчёт вложения. Тот кто это писал явно не захаживал дальше десятого уровня.
Котаны, читаю Уоллса (Spring in action), как-раз дошёл до определения связывания обектов и охуел: Spring нужен для того, что бы мы могли программировать XML, когда программируем на Java? Аннотации отдельный разговор, если разрабы Spring забухают, то код с аннотациями соснёт при перекате на другой фреймворк.
Так и есть. Сам когда-то проходил ради интереса, первые задания - пиздец на перепечатывания кода, но ведь они рассчитаны на совсем зелёных новичков, дальше идут вполне себе нормальные. Хотя я всё равно дропнул уровне так на 15, мне показалось слишком медленно, по книгам быстрее.
Тот факт, что в этой же книге тебе прямо капсом написали "Component Scan > Java Config > Xml" тебя вообще не смутил?
А вообще мне xml нравится. Очень удобно, централизовано. Если нет в проекте мудака, который не умеет импорты делать, то я выберу xml/groovy конфиг, а не скан.
Сам могу только на паскале калькулятор написать.
Курс мне подарили. Дарёному коню в зубы не смотрят.
Я бы на туторилах учился. Ну или начал с С, если хочешь хард вей. Книжки по яве - почти всегда вода.
>книжки по яве
Мне кажется, что бы закрепить основы самое то.
Но боюсь, что этот курс окажется той же книжкой только в браузере.
А почему все советуют начинать с С, если Ява это тот же С, только в прокаченный поправь, если не прав, по С качественнее туторы?
>Мне кажется, что бы закрепить основы самое то.
Смотря что ты считаешь основами.
>А почему все советуют начинать с С, если Ява это тот же С, только в прокаченный
Ява с си имеет общего в основном синтаксис. Это никак не прокачанный си, слишком разные задачи.
Но если ты немного поучишь си, то у тебя не будет в будущем всяких глупых вопросов вроде "почему new String("хуй") == new String("хуй") - false". Ключевое слово - немного.
>то код с аннотациями соснёт при перекате на другой фреймворк.
Нет, если они бухают с другими разрабами фреймворков которые поддерживают те же аннотации (как и xml теги).
А вообще xml - самое бестолковый и переусложненный вид настроек. Впрочем как и все в джаве. Кроме стандартной либы.
Там же как у макак - чем мудренней и запутаней - тем солиднее и пускай КПД к жопе сводится.
Джава жива только лишь из-за мобильников.
Всмысле "только из-за" мобильников? Почему тогда все предприятия крупные джаву используют? Да, во многом не удобно, да, приходится писать свои библиотеки под свои нужды. Н почему тогда другие языки почти не используют в крупных предприятиях, если джава так плоха?
Spring MVC.
>А вообще xml - самое бестолковый и переусложненный вид настроек.
Хуле там переусложненного-то? имя бина и его класс? Охуеть сложность.
> "Component Scan > Java Config > Xml"
А суровая реальность строго наоборот. А когда дело доходит до неймспейсов так вообще.
>Q: Хули все книги на английском?
>A: Без английского ты не нужен и можешь смело идти нахуй.
А хули тут все аноны на русском общаются? Шапка треда на русском, да весь /pr на русском. Неужто никто не может в английский?
Ничего не знаю. Я уже года два проектов, где основная конфигурация на xml, не видел.
Ну мы маршруты для кемла пишем в xml, потому что ява дсл - дерьмо.
Потенциал языка измеряется в том, сколько новых проектов на нем создается.
А легаси код ничего не решает (вон кобол до 2006 года был в топе по количеству написанного кода, но в 2006 ты о нем и не слышал, так же с джавой, ее спасли только мобильники)
Сравни какой-нибудь TOML с XML (какие портянки там получаются)
Много кто может в английский. Только твоя логика тут непонятна. Зачем им общаться на английском на русской борде?
Вся нормальная литература, материал в интернете, сообщество -- преимущественно на английском. Соответственно, если ты не можешь в английский, то очень многое теряешь.
Возьму скалу дроченную срублю котлин точенный.
го ту факин хорсес, битч
БОЛЬШИЕ ДЯДИ В ПОДКАСТЕ СКАЗАЛИ ЧТО АНГЛ НАШЕ ВСЕ
@
ПОКЛОНЯЕШЬСЯ ЭТОЙ ИДЕИ
@
СИДИШЬ ВМЕСТЕ С ТЕМИ ДЯДЯМИ В ГУГЛ-ТРАНСЛЕЙТ
http://pastebin.com/e2ZgGf5z
http://pastebin.com/BNA6sdXy
http://pastebin.com/1HHgSsbB
Не могу понять, как мне туда добавить статическое содержимое (HTML/CSS/JS)?
Допустим, в src\main\resources\web лежит страница info.html, в JAR-файле она будет в web\info.html.
И как ее показать?
>без женериков
Джавамакаки в жизни не юзали нормальных дженериков. Этот сблев, который в джаве, хуже говна.
мимокджавист
>Некроссплатформенная
Враки.
>без женериков
Это единственное что тебя останавливает, чтобы страдать в джаве?
На джаве простой веб не пишут (ты даже для ембеддед сервера взял сервлеты - насколько там надо мозги на Java EE свернуть)?
Ну натянешь потом еще спринг и хибернейт и не влезет это говно в твою vps
>чтобы страдать в джаве?
Я серьезно, хотя джава огромна, но шаг в сторону и ты с продуктом один на один.
Либо как все юзай war - либо забудь про ембеддед, максимум лабы найдешь как пример.
Бесит го - возьми питон (джангу). Еще спасибо скажешь
Ладно, я тебя достаточно помучил, но все таки открой для себя гугл
http://stackoverflow.com/questions/10284584/serving-static-files-w-embedded-jetty>>959403
Ну и много ты там заработал?
Для какой-то сложной хуйни всё равно придётся строкой писать. ORM это костыль, а полноценного и универсального DSL ещё не сделали.
У нас, например, используется solr, эта хуйня для индексации данных требует sql-запросы. Для каких-то простых действий удобнее написать простенький запрос на sql или jpql. Возможно где-то вы захотите использовать фишки вашей конкретной бд. Да мало ли чего может случиться.
я щитаю так - решить 50 задачек на sql-ex.ru - и тебе хватит этого на 95% на работе.
Для всего остального будут искать именно специалиста SQL узкого профиля, а тебе оно надо?
А как ты собрался орм квери писать, если ты даже sql не осилил?
>>959451
Это вы ебанутые, топите за джаву, так парню бы на вопрос ответили. Нет же, задницами попалыхали тут, тролля порадовали.
мимо_с++_джуниор
У тебя устаревшая картинка. И Java и JavaScript скоро канут в лету. Учи либо Lisp, либо Haskell, за ними будущее.
lukas.jpg
Ну json, конечно. Настрой для этого какой-нибудь gson или jackson.
Вообще, нахуя тебе Spring для rest? Взял бы православный Jersey, я бы тебя тогда даже пидором называть бы не стал.
>Враки.
Ставишь анус, что любой пакет на ГОвне соберется на винде без pkg-config?
>Это единственное что тебя останавливает, чтобы страдать в джаве?
Уебывай в свой тред, Илюша. Здесь обсуждается Java, а не ГОвно.
Алло, спринг за тебя уже все настроил. Только шли структуры верные и все.
А для именно тестов у спринг мвц есть класс MockMvc.
Я бы назвал главной проблемой го - молодость. Нормальной иде нет, бестпрактис не выработаны, с тулчейном тоже еще не разобрались. Т.е. все проблемы не в языке, а в экосистеме. В языке лично мне только эксепшнов не хватает.
Я тебя умоляю, это же платина уровня "программирование - не твое, попробуй яваскрипт".
В том то и дело, что лисп до сих пор живее всех живых. Сколько прикладных языков типа дельфи и фортрана, перла и кобола уже умерло, а лисп здравствует.
Ты сам-то пробовал эти примеры? Ни ResourceHandler, ни DefaultHandler не могут выдавать статику из JAR-файла. Внешние файлы из файловой системы выдать могут, а вот из JAR-ника - нет.
Если дергать какой-нибудь винапи то ты обосрешься со всем. Не загоняй в абсолют, глупое ты дитя с приступами юношеского максимализма, даже джава нихера не 100% кроссплатформенная.
Что джава что го - два куска неповоротливого говна, только для первого раньше были тулзовины типа IDEA, то сейчас и го оброс IDEA - кодить на нем стало в разы приятней, чем на жабе
Так-то и фортран, и кобол, и делфи живее всех живых. То что ты не используешь их - еще ничего не значит.
Господи, да возьми ты Spring Boot и не еби мозги ни себе, ни людям. А хочешь копаться в конфигах - учись гуглить.
Что тут у нас? Кто-то пытается в нагруженном веб-приложении статику из JAR показывать - ты совсем долбаеб?
Бля даже индусы знают, что контейнер распаковывает war-ники, откуда такие эксперты тут
А еще сервер приложений установи... В том и цель, чтобы все быстро работало, не требовало деплоя и было минимум зависимостей. Никакого Spring и EJB, разумеется.
В очередной раз убеждаюсь, что здесь сидят одни макаки, которые умеют только бездумно копипастить со StackOverflow. Без понимания принципов работы.
Ты не знаешь, что такое Embedded Jetty?
Даже индусы знают, что статику надо раздавать nginx'ом. Но это никак не мешает существованию WebJars.org. Иди выебывайся в другой тред.
Spring Boot как раз и стартует на ембеддед сервере. И сделан именно для хуяк-хуяк - рест. Особенно в пачке с spring data и spring data rest.
Весна сплошная магия на магии. Все хорошо если у тебя CRUD, но как только нужно что-то по-серьезней и вне рамках фантазий разрабов - твоя жизнь превращается в ад.
Бывает так - что на решение задачи тратишь больше, чем ты бы мог сам написать это руками. Тру-стори
Возьми го - и сам слепи из "кусков" независимых. Ладно еще в питонах, пхп или жс понимают как строить современный веб, но в джаве же одни корпаративные индусы и них эволюция пошла по другому пути.
Какое грозное кукарекание, в переводе на человеческий язык означающее "Я тупой мудак и быдлокодер и не знаю ни хуя".
Лол, жаба такой костыль, что индусы тянут nginx и сюда.
В чем профит разработки на жабе? Пострадать и взять nginx?
Пхпэшники обладируют стоя
Если для тебя спринг - это магия, то ты очень мало о нем знаешь. Спринг простой как двери. Ядро спринга - очень легкое и удобное. Спринг дата построен на одном абстрактном классе и простом квери генераторе. Спринг мвц вообще весь на диспетчер сервлете и трех адаптерах висит. Но ты и это не осилил, тебе и di фреймворк - магия.
RESTful веб-сервис + front end к нему это нечто нестандартное?
У меня уже есть готовое решение, написанное исключительно на сервлетах/JSP и работающее под Томкатом.
Хочу просто улучшить его.
А я вижу яркий подрыв пукана.
Вот я тебе и говорю: спринг мвц либо сразу бут. Это очень удобно, тебе понравится. Посмотри туторилы прямо на офф сайте, там есть один с именем прямо из твоего вопроса.
>Спринг простой как двери, Спринг мвц вообще весь на диспетчер сервлете и трех адаптерах висит
>Ставишь брэкпоинт в контроллере и видишь стектрейс из ~50-70 вызовов.
"Индусские простые двери". Не братишь, спринг еще и тормозит звездец
https://www.techempower.com/benchmarks/#section=data-r13&hw=ph&test=plaintext
Нахуй заберай эту парашницу, которая хеллоу-ворд почти как скриптовые языки отдает
А знаешь что скажет типичный Ванька-индус? Он скажет "и че, время программиста дороже железа" и будет прав. Джава крутится в таких "менфреймах" что там срали на производительность.
Джава != производительность. Просто почему ынтерпрайз не берет скажем пхп или питон - из-за косяков многопоточности и все. А так по железо их бы устраивало.
Ну как. Все смешные стереотипы о яве времен нулевых в одной картинке. Я каждый раз смеюсь.
На хабре пишут, что спринг тяжеловесный, приложения долго стартуют, куча зависимостей. И лучше Embedded Jetty.
У меня приложение нечто вроде онлайн-игры, требуется:
- высокая нагрузка (обновление страницы хотя бы 25 раз в секунду, для нескольких тысяч пользователей);
- быстрая NoSQL база (здесь еще не сделал выбор);
- использование ANTLR (пользователь пишет код на особом языке, который используется для управления объектами);
- на front end используется canvas (пока в 2D), с большой картой, переход на которой должен быть без задержек.
Добавь спринг кор в проект и сделай mvn dependency:tree. Долгий старт - следствие компонент скана по куче jar файлов и проксирования бинов, но если не использовать их - платить будет не за что.
Сложное положение на чистых сервлетах ты не напишешь в любом случае - это позапрошлый век. А хочешь микросервисный шлак для тысяч запросов - и правда посмотри в сторону го или реактивного спринга, там должно быть лучше это все, но он в бете только
vert.x
Это суть джявы.
Поднят Wildfly 10. Реализовано небольшое приложение. Имеется Stateless бин с инжектированным EntityManager. Когда выполняю select запросы - все работает нормально.
Как только пытаюсь выполнить persist паадет исключение
TransactionRequiredException WFLYJPA0060 Transaction is required to perform this operation
Бин отмечен одной лишь аннотацией - Stateless. Судя по докам этого должно быть достаточно, т.к. по умолчанию включается CMT режим управления транзакциями.
Однако эта блядь все равно не создает новых транзакций!
БД - MySQL.
Wildfly запущен в standalone режиме.
Если нужна еще какая инфа - спрашивайте, предоставлю. Гугл подсказывает только то что транзакции должны работать нормально - и никто с похожей проблемой не сталкивался
Не помогает.
Сейчас расковырял свой же код - в методе бина перед собственно персистом выполняется чтение из базы (через find у энтити менеджера), что в теории может приводить к закрытию транзакции, хотя это полный бред.
Смотри стек исключения
Отталкиваясь от стека начни ставить брэкпоинты.
Изучай (страдай, джава же, там будет туча абстракций)
Какой типа таблицы?
есть CSV фаил, с большим кол-вом данных. Нужно его отсортировать по третьему ряду, однако при этом сказано, что наш компьютер не обладает достаточным кол-вом оперативной памяти, из этого следует, что мы не можем просто вывести всю инфу в массив и отсортировать там. А должны делать это прямо в этом CSV фаиле. Какие мысли? У меня проблема именно с реализацией всего этого без использования массива, в котором можно было бы все это реализовать. Есть мысли о создании нового CSV фаила, и добавлять туда по одной строке с минимальный значением в 3 ряду за один проход по исходному, и т.д пока не будет выведены все. Но это выглядит очень затратно и глупо. Какие, более оптимальные варианты существуют?
Да, нужно было по внимательнее свой код поковырять.
Тот самый find и падал с исключением.
Самое интересное что исключение правильно обрабатывается и пишется в лог. Проблема в том что wildfly не написал в лог это исключение, поэтому я его и не замечал
Разобрался с логированием. Не правильно передавал аргументы в метод логгера error() - там первым аргументом идет Message а не Throwable - в итоге запись не было видно.
Блять все из-за таких мелочей, а столько гемороя что я уже в реальности сомневаться стал
сразу после своего поста, пришла эта идея, я не так уж безнадежен. Спасибо за совет)
На сайте json хуева гора библ, но какую взять - хз.
Ткните носом. Спасибо
алсо, смотрю в сторону json-simple
Джексон используй.
Разобрался, вот так все работает:
http://pastebin.com/6HeTsQRR
DefaultServlet выдает статику, Jersey - REST.
У Spring, как я понимаю, вот этот компонент дает аналогичные возможности:
https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-jetty
Но там какие-то свои аннотации вместо JAX-RS. Неудобно.
gson или jackson
См. также обзор JSON парсеров от люксофта: https://habrahabr.ru/company/luxoft/blog/280782/
Это корпоративный блог, наркоман. На хабре у всех такие есть.
я вот запилил по гайду https://medium.com/@gustavo.ponce.ch/spring-boot-spring-mvc-spring-security-mysql-a5d8545d837d#.awgevgne0
сие приложение с авторизацией и регистрацией.
а вот если я хочу что бы я еще мог авторизироваться например не только под ADMIN(как в примере запилиено), а например еще под REG_USER?
я вот в бд добавил пользователя присвоил ему роль REG_USER.
в LoginController.java добавил метод homeRegUser() с @RequestMapping(value="/reguser/home", method = RequestMethod.GET)
мне теперь надо в классе SecurityConfiguration.java в методе configure(HttpSecurity http) что-то менять или как?
подскажите плез
А проверить что уже работает ты не догадался, чудило?
Должно работать с тем конфигом без изменений, ибо
>.anyRequest().authenticated()
пропускает любой запрос от аутентифицированного юзера (в /admin/ не пропустит - там другое правило не даст).
ружище я проверил. все именно так кк ты говоришь, когда заходишь под другим пользователем выкидывает ошибку. так и должно быть, но как мне показать например /reguser/home, если я авторизируюсь под REG_USER? вот в чем проблема немножко не понимаю в какю сторону копать. Т.е. если под админом логинюсь. он мне показывает /admin/home, а если под reguser то /reguser/home
спасибо, Анон
Здраститя. Мне требуется распечатать элементы стека, какой вариант православнее/быстрее?
while(stack.peek()!=null)
System.out.print(stack.pop()+" ");
или
for(Iterator it = stack.iterator();it.hasNext();) {
System.out.println(it.next());
}
????
for (Integer it : stack) {
System.out.print(it + " ");
}
Хотя вот так.
Ну короче вариант с итератором на 1-2 показывает мс, через поп 0
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73
71 61 53 43 37 29 19 13 7 3
2
71 61 53 43 37 29 19 13 7 3
0
Выходит лучше поп юзать?
Хотя хз, теперь одинаково по 1. Нет разницы?
Если уж разоряешь стэк и пытаешься байтоёбить, то зачем тебе лишняя проверка?
Integer it = null;
while((it = stack.poll()) != null) {
System.out.println(it);
}
for(int i=0;i<100;++i){
for (Integer it : stack) {
System.out.print(it + " ");
}}
Выдаёт 44мс
for(int i=0;i<1000000;++i) {
Deque<Integer> ttt = stack;
while (tmp.peek() != null)
System.out.print(tmp.pop() + " ");
}
Выдаёт 13мс. Там такой прирост большой получается? Ну да, не нужна,не подумал, я только учусь .
>такой прирост большой получается?
Да т.к. в итераторе на 3 проверки больше (hasNext, на позицию курсора и на защиту от параллельной модификации)
Круто, не знал. То есть если тебе не важно состояние стека, ну типа дальше нигде он не используется и служит как вспомогательная хуета внутри метода, то всегда лучше использовать цикл+полл?
Так-то прирост не маленький, for(int i=0;i<1000000;++i) сделал, получилось
78162
13(походу как раз и з-за убирания лишней проверки ускорилось), в 6к раз быстрее что ли, лол.
Сложный вопрос. На твои замеры очень сильно влияет System.out.print. Если заменишь на какое-нибудь банальное действие вроде присваивания, разница не будет такой уж сильной.
> System.out.print. Если заменишь на какое-нибудь банальное действие
Заменил на пустоту, выдало
169
4
Ну вайл я как у тебя сделал, а не как было
for...{
...
while((it = stack.poll()) != null){
//System.out.print(it+" ");
}
}
4мс
Что-то у тебя цифры какие-то жуткие. У меня для пустоты разница не больше миллисекунды
for(int i=0;i<1000000;++i){
for (Integer it : stack) {
//System.out.print(it + " ");
}}
169мс
Ну в общем-то так и казалось, просто не думал, что настолько разница дикая. Зато теперь знать буду, что с итераторами аккуратно надо, может сильно замедлить работу.
long startTime = System.currentTimeMillis();
for(int i=0;i<1000000;++i){
for (Integer it : stack) {
//System.out.print(it + " ");
}}
long estimatedTime = System.currentTimeMillis() - startTime;
System.out.println();
System.out.println(estimatedTime);
Может что-то не так делаю?
Тто есть если я правильно понимаю, ибо нубас тот ещё, что в случае с итератором у нас за O(N) обращение к элементу идёт, а с полл за O(1) ну или типа того.
А как ты замеряешь время для poll ? Ты 1000000 делаешь push и вычитаешь разницу?
startTime = System.currentTimeMillis();
for(int i=0;i<1000000;++i) {
Deque<Integer> tmp = stack;
Integer it = null;
while((it = stack.poll()) != null) {
//System.out.print(it+" ");
}
}
estimatedTime = System.currentTimeMillis() - startTime;
System.out.println();
System.out.println(estimatedTime);
ЛоЛ, блядь, у меня ошибка там. После первой итерации там тупо пустой стек, надо вот тут вместо it = stack.poll() it = tmp.poll(), а я и ждумаю какогто хуя такие значение получаются.
Анон, ну я хз, всё ранво вот такой результтат
148
3
Вот то, что внутри стека лежит
997 983 971 953 941 929 911 887 881 863 857 839 827 821 809 787 769 757 743 733 719 701 683 673 659 647 641 619 613 601 593 577 569 557 541 521 503 491 479 463 457 443 433 421 409 397 383 373 359 349 337 317 311 293 281 271 263 251 239 229 223 199 193 181 173 163 151 139 131 113 107 101 89 79 71 61 53 43 37 29 19 13 7 3
public static void main(String[] args) {
Deque<Integer> stack = test();//тут то, что скинул
long startTime = System.currentTimeMillis();
for(int i=0;i<1000000;++i){
for (Integer it : stack) {
//System.out.print(it + " ");
}}
long estimatedTime = System.currentTimeMillis() - startTime;
System.out.println();
System.out.println(estimatedTime);
startTime = System.currentTimeMillis();
for(int i=0;i<1000000;++i) {
Deque<Integer> tmp = stack;
Integer it = null;
while((it = tmp.poll()) != null) {
//System.out.print(it+" ");
}
}
estimatedTime = System.currentTimeMillis() - startTime;
System.out.println();
System.out.println(estimatedTime);
}
148
3
Короче я хз.
public static void main(String[] args) {
Deque<Integer> stack = test();//тут то, что скинул
long startTime = System.currentTimeMillis();
for(int i=0;i<1000000;++i){
for (Integer it : stack) {
//System.out.print(it + " ");
}}
long estimatedTime = System.currentTimeMillis() - startTime;
System.out.println();
System.out.println(estimatedTime);
startTime = System.currentTimeMillis();
for(int i=0;i<1000000;++i) {
Deque<Integer> tmp = stack;
Integer it = null;
while((it = tmp.poll()) != null) {
//System.out.print(it+" ");
}
}
estimatedTime = System.currentTimeMillis() - startTime;
System.out.println();
System.out.println(estimatedTime);
}
148
3
Короче я хз.
Так у тебя по-прежнему пустой стек после первой итерации.
>Deque<Integer> tmp = stack;
Ты просто ссылку передал и опустошил же свой stack
Тогда уж
tmp = new ArrayDeque<Integer>(stack)
Только время конструктора надо вычесть
for(int i=0;i<1000000;++i) {
ArrayDeque<Integer> tmp = stack.clone();
Integer it = null;
while((it = tmp.poll()) != null) {
//System.out.print(it+" ");
}
}
121
155
Да, всё ок. Видимо разницы нет принципиальной, лучше использовать итератор?
> время конструктора надо вычесть
Ну хотя как нет,
131
66
Или я опять не так что-то сделал? Сколько у етбя? И как ты поступаешь обычно? Итератор всегда и мозги не ебать?
for(int i=0;i<1000000000;++i) {
ArrayDeque<Integer> tmp = stack.clone();
//Integer it = null;
//while((it = tmp.poll()) != null) {
//System.out.print(it+" ");
//}
}
Блин, но если ещё по два нуля добавить, то видно, что львиную долю конструктор занимает.
6181
4022
>>960179
Да ок, по таким же соображениям и юзал их всегда в общем, просто что-то запарился, хз.
[code lang="scala"]
val deque = new java.util.ArrayDeque[Int](100)
(1 to 100).foreach(deque.add)
deque.forEach(println)
[/code]
Да, по другому сделал без циклов и тд, тупо большой массив подаю, разница 0-1 мс. Корчое итераторы форева. Спасибо.
Лол.
И читается в сто раз лучше.
public static void main(String[] args) {
ArrayDeque<Integer> stack = test();
stack.forEach((n)->System.out.print(n +" "));
}
Анон, а можно как-то покрасивше записать последний форич?
Ну с вайлами, поллами и прочим типа. И скорость такая же, и коротко записать модно и вообще . Итераторы тема короче.
Ну, лямбду красивше не сделаешь. Может так?
stack.stream().map(x -> x + " ").forEach(System.out::print);
Не, это оверинжениринг уже какой-то. Красивее не в смысле чтобы побольше всего крутого было, а в смысле чтобы проще записывалось и тд, не так выразился короче. Ну я думал мало ли в явеможно как-то вроде этого, а я не в курсе просто
stack.forEach(System.out::print, delimiter=" ");
или SyntaxSugarPackage.map(stack,String).join(" ")
>stack.stream().map(x -> x + " ").forEach(System.out::print);
>.map(stack,String).join(" ")
А, ну лол, это ноо и есть возхможно, невнимательно глядел.
А, не. Проще уже не будет. Если идти через Collectors.joining(" "), он тут же сиранёт, что у тебя инты, а не строки и придётся в любом случае map для каста вызывать.
Если идти через reduce, то будет неэффективная срака навроде reduce("", (x,y) -> x + " " + y, String::concat)
А ещё в итоге у тебя и там и там будет String, который придётся отдельно обернуть Arrays.stream(String::toCharArray) чтобы вызвать forEach(System.out::print). Нет пути
смотри, вот мой json
http://pastebin.com/rPKQUp6T
И вот всё, что у меня получилось, это дернуть содержимое ключа "def" и пары его ключей до начала вложенного массива.
Как выдернуть, например, из массива ключи tr и другие???
Как земля.
А в джяве изволь пердолиться с аннотациями и рефлекцией.
Предположим делаем мы некую UI форму на неком клиентском приложении. У исходной сущности присутствуют constraint аннотации на полях по указанному выше JSR 303. Bean Validation построен так, что его можно юзать как на сервер так и на клиенте. Все здорово.
НО. Есть такая практика как формирование DTO и отправка их клиентскому приложению, дабы серверные сущности не покидали пределов сервера. Это также предотвращает падение многочисленных LazyInitializationException когда detached сущность уходит из транзакционного контекста. Однако в этом случае не удастся использовать Bean Validation на клиенте, поскольку тот уже оперирует не сущностями а DTO и в итоге нужно повторять код валидации на клиенте, либо по необходимости конвертить DTO в сущность и прогонять через валидаторы.
Так как быть? Повсеместно использовать DTO на клиенте, писать дублирующийся код валидации или же допускать обработку серверных сущностей на клиенте дабы работала валидация но при этом потенциально ловить Lazy исключения?
В качестве примера могу привести проект над которым работаю в одной конторе. Там серверные сущности уходят десктопному приложению и Lazy сыпятся как из рога изобилия, не в последнюю очередь из-за криворукости тех кто работает над проектом, но все же.
Я же склоняюсь к комбинированному варианту - когда для различных форм редактирования использовать полноценные серверные сущности, при этом грамотно подходить к проектированию, а для различных браузеров и списков шде серверной сущности будет многовато юзать DTO.
Что скажешь, анон?
В поддержку варианта с использованием серверных сущностей на формах редактирования говорит и тот факт что если юзать DTO то его структура в целом повоторит структуру серверной сущности и его кодирование будет более трудозатратным нежели использование серверной сущности (просто получается копируешь код серверной сущности в DTO)
Тот же Vaadin для форм редактирование предлагает удобные биндеры которые умеют работать с JSR 303.
Шарп вроде тоже юзают для написания веб приложений (ASP.NET).
К тому же автор того поста сравнивал шарп (по всей видимости с ASP.NET) с Java и Angular, т.е. бэкенд и фронтенд жавы и шарпа
Заебался учить, заебался натыкаться на грабли.
мимо_не_могу_вкатиться_в_джуниоры
По всем тредам протёк го-чухан.
Джаву специально оверхедят абстракциями, чтобы можно было толкать продукт и получать бабосы за техподдержку
Думаешь, в какой-нибудь js иначе будет? Так там ещё больше зависимостей на каждый чих.
Скажи спасибо смузихлёбам, совсем недавно всё делали на жквери и не выёбывались.
Вот бы ещё сдох и джяваскрипт, похапе и энтерпрайзные фабрики фасолин, и все перешли на статическую типизацию и ФП.
Хачкиль, f#, elm
Ты будешь перекатываться не между языками, а между их инфраструктурами.
Так как C# > Java, то перекат с сишарпа в джяву, как тут уже выше сказали, заключается только в перекате на другую инфраструктуру, ну и некоторых побочных эфектов, вроде желания рыгать с убогости жабы и того, что что в ней всё делаешь, а ничего нет.
Для переката с джявы в сишарп потребуются определённые мозгоусилия для того чтоб перейти на более продвинутый язык.
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Прохожу по сайту и вижу, что Placing one (and only one) of slf4j-nop.jar slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar or logback-classic.jar on the class path should solve the problem.
Дело в том, что в lib у меня уже есть slf4j-api. И что значит поместить в класс паф? Я как только добавляю либу, сразу жму Build Class PAth.
Юзаю эклипс и в данном случае хотел бы именно с ним разобраться. Алсо, мож у меня не полный комплект файлов, всё-таки? И файл api хуйня, а нужен из списка? Полный текст ниже
If you are responsible for packaging an application and do not care about logging, then placing slf4j-nop.jar on the class path of your application will get rid of this warning message. Note that embedded components such as libraries or frameworks should not declare a dependency on any SLF4J binding but only depend on slf4j-api. When a library declares a compile-time dependency on a SLF4J binding, it imposes that binding on the end-user, thus negating SLF4J's purpose.
Есть ли где-то НОРМАЛЬНЫЙ гайд по RxJavе? Чтобы все по полочкам было. У меня то что есть вызывает больше вопросов чем понимания? Как получить объект из обсервера? Поясните что-то за правильную архитектуру. Допустим из одного обсвервабла я получить данные, они пошли в обсервер который что-то сделал с этими данными. Как мне дальше передать данные из обсервера куда-то?
Вот вернулся ты с армейки но куда идти тебе - на завод конечно, там то круто ты поверь, хотя можно и учится но учеба - ерунда.
Работай на дядю, на клубы и яхту, выбрось свободу, иди на заводы и шахты, работай, работай на шмотки и шмары, может получишь хоть что-то, а может и пару.
slf4j это логер обертка над всеми реализацями что появились для жавы. Соответственно сама обертка логировать не умеет и требует одну из реализаций. В твоем случае тебе нужно положить библиотеку реализицаию логирования и библиотеку которая выступит мостом между ними
Рассмотрим фреймворк Log4j2. Тебе понадобится
log4j-core - собственно сама библиотека логирования
log4j-api - api для подключения к другим реализациям
log4j-slf4j-impl - бридж для подключения к slf4j
slf4j-api - собственно она у тебя и так уже лежит, это api со стороны slf4j
Для чего такой изврат? Если ты пишешь конечный проект (какое-нибудь веб приложение) до достаточно библиотеки log4j которая является наилучшим логирующим решением.
Однако в случае написания каких-либо библиотек, которые изначально подразумевается использовать в других проектах ты не знаешь наверняка какая логирующая система будет использоваться у конечных пользователей твоей библиотеки. Для этого и используется slf4j враппер - таким образом ты оставляешь выбор логирующей системы конечным юзерам твоей библиотеки. А они этот выбор осуществляют через подкладывание в класпаф API и бридж либов как я описал чуть выше.
Слив яваманьки засчитан!
пишут. Пожалуй самая удобная для веба, только если это не хоум пейдж
orm не нужен. Очередная мифическая серебрянная пуля.
Нынче модны noSQL, так что orm больше не нужен
скачиваешь плагин для браузера rest что-то там, выбираешь пост, в тело пишешь для начала {}
тебе нужна реализация SLF4J. Есть на q, забыл название
наверно json через джексон. Тебе нужно будет только dto классы, соответствующие структуре твоего джсона
>кококо, джава не оверхедна, где пруфы
>на
>кококо а вы туда, туда посмотрите
Лол, джависты даже не отрицают, что джава оверхедный кусок говнища, раздутый одним бизнесом, чтобы грести бабло с другого.
Только юный фанбой, мечтающие писать игрули на свой дешевый андроид, верят в чистоту кода джавы.
абстракция над доступом к БД нужна? Нужна.
Абстракция над над слоем DAO? нужна
Абстракция над бизнес-логикой? Нужно
Абстракция над вебом? Нужно
Веб-сервер? Нужен
Все просто. Всякие верстальщики Javascript и дебилы-байтоебы не понимают зачем нужны ООП, абстракции, интерфейсы. Ведь можно написать код и он будет работать без всего этого. Главное потом к нему больше не притрагиваться.
Поэтому в силу абсолютного непонимания и петросянят про абстрактные фабрики бинов и "оверхеды".
Синглтон mysql
Фабрика баз данных
Регистри, хранящая фабрику баз данных
Абстрактный строитель вывода
Строитель вывода из SQL
Абстрактный наблюдатель базы
Наблюдатель за mysql
Посредник, принимающий сообщения от наблюдателя
Абстрактная стратегия выбора баз данных
Стратегия выбора Mysql
Абстрактный декоратор стратегии выбора базы данных
Фабрика стратегий выбора баз данных
Посетитель, запускаемый посредником при получении сообщения от наблюдателя
Заместитель, принимающий посетителя и решающий, делегировать ли команду вывода виду
Абстрактный вид
Вид CLI
Абстрактная фабрика видов
Фабрика видов, возвращающая инстансы видов CLI
Прототип CLI-вида, используемый CLI-фабрикой
Абстрактная модель
Абстрактный ORM
ORM для Mysql
Модель, работающая с MySql-ORM сущностями
Абстрактная активная запись
Активная запись для mysql-ORM моделей
Абстрактный синглтон хранения моделей
Синглтон, хранящий активные записи
Абстрактный синглтон хранения видов
Синглтон, хранящий CLI-виды
Абстрактное мементо
Мементо активной записи Mysql-ORM модели
Абстрактная команда
SQL-команда
Синглтон mysql
Фабрика баз данных
Регистри, хранящая фабрику баз данных
Абстрактный строитель вывода
Строитель вывода из SQL
Абстрактный наблюдатель базы
Наблюдатель за mysql
Посредник, принимающий сообщения от наблюдателя
Абстрактная стратегия выбора баз данных
Стратегия выбора Mysql
Абстрактный декоратор стратегии выбора базы данных
Фабрика стратегий выбора баз данных
Посетитель, запускаемый посредником при получении сообщения от наблюдателя
Заместитель, принимающий посетителя и решающий, делегировать ли команду вывода виду
Абстрактный вид
Вид CLI
Абстрактная фабрика видов
Фабрика видов, возвращающая инстансы видов CLI
Прототип CLI-вида, используемый CLI-фабрикой
Абстрактная модель
Абстрактный ORM
ORM для Mysql
Модель, работающая с MySql-ORM сущностями
Абстрактная активная запись
Активная запись для mysql-ORM моделей
Абстрактный синглтон хранения моделей
Синглтон, хранящий активные записи
Абстрактный синглтон хранения видов
Синглтон, хранящий CLI-виды
Абстрактное мементо
Мементо активной записи Mysql-ORM модели
Абстрактная команда
SQL-команда
Таким образом довольно просто мы получаем быстрое и гибкое приложение, пригодное для дальнейшего расширения функционала и рефакторинга.
Архитектура жава-приложения:
1. договариваемся к американской компанией, что сделаем софт за половину стоимости.
2. нанимаем сотни индусов русских студентов за ЖРАТ.
3. лепим невменяемое говно из жавовских опенсорсных быдлиотек, сдобренное говнокодом студентов под управлением виабушных акхикектогов.
4. слегка проябываем дедлан, поэтому в конце добиваем код хаками, лишь бы запустилось (тем более выясняется, что акхитектогы напроектировали неудобную и нерабочую хуйню, зато по умным книжкам, которых они начиталсь).
5. ????
6. Единоразовый PROFIT
7. Заклюючаем договора поддержки и сажаем на поддержку в 3 раза больше жавообезьян, чем было на разработке (оно и понятно, написать хуйню легко, а вот как потом её сопровождать?).
8. Дополнительный PROFIT в течение многих лет.
нет, конечно есть перегибы.
Вот на работе такой желающий перемен гик получил власть, теперь я ебусь с этим зоопарком orm, spring-data, cassandra, абстракция над кассандрой для получения SQL92, распределенный кеш, и ещё добрый десяток новомодных дилд.
Я считаю что кроме старого доброго SQL и JdbcTemplate ничего не нужно
> Я считаю что кроме старого доброго SQL и JdbcTemplate ничего не нужно
Выбрасывай JdbcTemplate нахуй и используй jOOQ.
> Вот на работе такой желающий перемен гик получил власть, теперь я ебусь с этим зоопарком orm, spring-data, cassandra, абстракция над кассандрой для получения SQL92, распределенный кеш, и ещё добрый десяток новомодных дилд.
И чем ты недоволен?
>jOOQ
посмотрел одним глазом. Это что-то типа QueryDSL?
Если да, то:
1) Нужны некие классы с маппингом, описывающие структуру таблиц. В случае сложных запросов это проблематично
2) Невозможно понять что генерирует эта дилда, и как это дебажить. Невозможно взять запрос и скопировать его в консольку СУБД.
3) Является ли эта дилда потоко-безопасной?. С QueryDSL возникали проблемы.
>И чем ты недоволен?
все эти новомодные дилды суть разворот в прошлое, во времена до создания реляционных БД.
Как кстати и микросервисы
>абстракция над доступом к БД нужна? Нужна.
Зачем абстракция над доступом? Ты наверно хотел сказать про JDBC-драйвер? Но это драйвер для владельцев БД, конечно в плюс, что саны сделали стандартизированный драйвер (вообще многое что грамотно они сделали). В общем программирование от интерфейсов - это гуд. Но это фича ООП.
>Абстракция над над слоем DAO? нужна
Нет, нужен стандартны DSL для доступа прям из сервиса, DAO это костыль.
Если блять дебилы ставят транзакции прям над сервисами (аннотации), то
какая нахуй DAO им, они уже сервис-слой привязывают к БД.
>Абстракция над бизнес-логикой? Нужно
Что это и зачем это, не трогай бизнес-логику, без премии оставлю.
>Абстракция над вебом? Нужно
Нету его, есть сервлеты времен CGI, а риально абстракции (набора интерфейсов) чтоб писать одинаково просто на всех embedded серверах нет.
Spring mvc не абстракция, это фреймворк (тяжелый и бестолковый).
>Веб-сервер? Нужен
Тут долбаеба унесло.
Это архитектура зарабатывания шекелей вне зависимости от ЯП, пиздабол.
>>960709
>Там нет даже сраных сервлетов
Экспертиза уровня /pr
кстати вот здесь хорошо про эти дилды расписано
http://www.sql.ru/forum/894851-177/chto-seychas-proishodit-v-it-sbera?mid=20286614#20286614
Секрет успешности проектов - не использовать нереляционные базы данных и всевозможный Hadoop
веб-приложение и без сервлетов. Через самописные костыли и самопридуманные стандарты.
Или сервлеты оно где-то внутри создает?
Таки да, я рад что хоть кто понимает как бизнес в джаве устроен.
>2)
С jooq дел не имел, но дай угадаю. Включить дебаг?
Кстати, ты не пердолик случаем? Ну типа: только plain sql - только хардкор! Фреймворки не нужны! Зато контроль!
>Нет, нужен стандартны DSL для доступа прям из сервиса, DAO это костыль.
как ты тогда абстрагируешься от способа хранения данных?
>Что это и зачем это, не трогай бизнес-логику
именно для этого слой бизнес-логики должен быть в отдельном слое, максимально независимом от окружения
>Нету его
можно использовать сервлеты, можно использовать spring-mvc, можно ещё какую-нибудь новомодную дилду использовать. И вот как раз для безболезненной смены дилд и нужно выделять это в отдельный слой
Да есть там сервлеты, специально для таких дебилов маркетологи заставляют добавлять это говно везде, но прячут так глубоко, что ты их не увидишь.
И получается - да ваша "ХУЙНЯ_НЕЙМ" поддерживает сервлеты, берем! Дебилы, бля (с)
>Или сервлеты оно где-то внутри создает?
Оп-а! Эксперты /pr начали что-то подозревать!
Ну ты же уже спизданул десятком постов выше о том, в чем не разбираешься, с полной уверенностью знатока?
sql это и есть универсальная абстракция, универсальный DSL. Или вам подавай абстракцию над абстракцией?
>как ты тогда абстрагируешься от способа хранения данных?
Этой же DSL
>>Что это и зачем это, не трогай бизнес-логику
>именно для этого слой бизнес-логики должен быть в отдельном слое, максимально независимом от окружения
Сервис-уровен. У скрипто макак это моделью называют.
Запомни, иногда поддержка абстракции обходиться дороже чем если бы мы перелопатили руками. Я уже привел пример, что стало нормой вешать транзакции на сервис-слой и почему это всех устраивает? Потому что в реально никто не меняет каждый день одну БД на другую. В итоге все это сосалово для успокоения.
Типозащищенный sqlный билдер с dsl sql-like в виде fluent interface. Поддерживает 100% всего, что можно написать на просто SQL. И предоставляет определенную абстракцию от конкретной реализации реляционной базы.
> 1) Нужны некие классы с маппингом, описывающие структуру таблиц. В случае сложных запросов это проблематично
Поддерживает как просто стринги в значения таблиц и колонок, так и использование автогенерируемых классов, описывающих структуру БД. С ними как раз вся годнота и есть, решая кучу проблем еще на этапе компиляции. Алсо автогенерация охуенно в devops-практики вписывается.
> В случае сложных запросов это проблематично
Никаких проблем.
> 2) Невозможно понять что генерирует эта дилда, и как это дебажить. Невозможно взять запрос и скопировать его в консольку СУБД.
Посмотри примеры - это SQL и есть.
Генерирует как есть - но вообще конкретные запросы в дебаге. Оттуда копируешь и вставляешь, если нужно.
> 3) Является ли эта дилда потоко-безопасной?. С QueryDSL возникали проблемы.
На 100%. Объявил DSLContext одиночной фасолиной и инжекти его хоть в анус Сатаны и долби одновременно туда тысячью хуев.
> все эти новомодные дилды суть разворот в прошлое, во времена до создания реляционных БД.
Хуй там падал в три пизды. Если задачу можно выполнить с помощью реляционной БД - следует ее использовать. Но есть задачи, где реляционщина уже не оче.
Другое дело, что noSQL всякие евангелисты и прочие барухи продвигают как замену SQL, что нихуя не верно.
>>960796
Пердолик тут как раз ты, раз ебашишь plainSql в приложениях, а не делаешь это правильно.
А теперь включи свой школьный мозг и подумай почему потребовалась абстракция над уже существующей SQL-абстракцией?? М? Давай ты сможешь понять, что в реале у каждый бд все равно есть своя специфика и приходиться надстройку делать - опять!
Дебил неопытный
> Если блять дебилы ставят транзакции прям над сервисами (аннотации), то
> какая нахуй DAO им, они уже сервис-слой привязывают к БД.
Сука дебил нахуй ты ебаный, я ебал.
>>960807
> Я уже привел пример, что стало нормой вешать транзакции на сервис-слой и почему это всех устраивает?
Потому что транзакции это сервисная логика.
Твой выглядел дополнением предыдущего поста ананаса. Ок, отвечу еще раз.
> Кстати, ты не пердолик случаем? Ну типа: только plain sql - только хардкор! Фреймворки не нужны! Зато контроль!
Нет. Это хуйня.
ну ок, попробую эту дилду.
Единственный недостаток plainSQL - что он не проверяется на этапе компиляции. Но твоя дилда тоже не может гарантировать корректность запроса и соотстветствие структуры БД.
И так и так это решается только юнит-тестами с реальными запросами к базе.
>Потому что транзакции это сервисная логика.
Ну вот приехали.
Окей, я переезжаю на БД без поддержки транзакции - мой сервис слой виноват, или ты тупое говно?
>Этой же DSL
а если я захочу заменить БД на какую-нибудь заглушку для тестовых целей?
> Я уже привел пример, что стало нормой вешать транзакции на сервис-слой
транзакции и предназначены для вешанья на бизнес-слой. Транзакции тесно связаны с бизнес-логикой
Нет, это ты долбоеб, раз решил переехать на БД без поддержки транзакций, но при этом твой код транзакционен.
Решил выиграть Формулу 1, нанял Шумахера, посадил его в машину без колес и недоумеваешь хули этот баран не обгоняет всех, он же Шумахер.
И вот именно поэтому слой DAO нужно писать свой, под свою базу. А не надеяться на универсальный ORM, что он магией сделает тебе заебись.
ORM тоже не гарантирует абстракцию над базами. В нем тоже нужно хуячить nativeSQL
слой хранения данных должен обеспечивать транзакционность. Это одна из его задач
бля не то написал. Средство хранения данных должно обеспечивать транзакционность
Так вот и расскажи про plain sql в JPQL.
> Но твоя дилда тоже не может гарантировать корректность запроса и соотстветствие структуры БД.
Авотхуй. Как раз для этого и сделано. У тебя нихуя не скомпилируется, если метод from проебал или тебя отвлекли и написал frm. У тебя нихуя не скомпилируется, если ты используешь несуществующую таблицу или колонку. У тебя нихуя не скомпилируется, если проебался и суешь не тот тип в колонку.
И другая удобная хуйня.
нинужно
Ты не тот же дебил, что про сервлеты и спринг отмочил?
чтобы гарантировать корректность запроса, в нем должен быть полноценный парсер sql. Сильно сомневаюсь в его наличии
А я уже хотел тебя обоссать.
Я от Лукаса деньги за рекламу не получаю. Годноту посоветовал - юзай или продолжай писать plainSql и проебываться в рантайме.
Но это порочная практика, и plainSQL закономерно бьет по рукам за попытку это сделать.
эта штука немного снижает количество опечаток, не более. Все-равно нужно будет тестировать эти запросы к реальной базе
Тебе не похуй на какие-то маняфреймворки, кретин? Ты ради бобла работаешь или ради маняфреймворков?
Бамп вопросу ыыыыыы
Для меня это выглядит как вместо профессионального перфоратора взять детскую игрушку, ибо она легче, и с ней разберется даже ребенок
>Нет, это ты долбоеб, раз решил переехать на БД без поддержки транзакций, но при этом твой код транзакционен.
Ох я ржу, а где же гибкость и вся чипуха?
По твоей логике и DAO не нужно - ведь "раз решил переехать на другую БД"
Дебилы, бля (с)
DAO - дает абстракцию над БД. При смене БД я меняю только DAO, за счет чего мой сервис слой остается без изменения. Если я меняю БД и это затрагивает и сервис-слой - значит ты долбаеб натянул зависимость на бизнес логику
транзакционность это пожалуй единственное исключение, когда бизнес-логика должна быть связана с хранением данных.
В частности это означает что твое средство хранения данных должно обеспечивать транзакционность
>Джава гибка и абстрактна.
>Но если я поменяю БД то это может затронут бизнес-слой.
>Ко-ко-ко - это база виновата, это она такая плохая, потому что должна что-то обеспечивать (транзакционность).
Лол, хуй она тебе что должна (маня-мирок джава-индусов)
фикс
>я не могу тебе возразить, я обосрался тут, но я на тебя зол, поэтому просто покречу.
Не переживай, не первый раз рву маня-миры индусов.
Транзакция - группа последовательных операций с базой данных, которая представляет собой логическую единицу работы с данными.
К бизнес логике она никаким хером не относится, это уровень персистенса
> Транзакция - группа последовательных операций с базой данных, которая представляет собой логическую единицу работы с данными.
Абсолютно неверно.
С такой логикой простое выполнение
select from table;
select from table;
является транзакцией.
Погугли еще и попробуй еще раз. После этого перейдем к зачем они нужны.
>Транзакция - группа последовательных операций с базой данных
>Сервис-слой это бизнес логика, изолированная от базы данных по средством слоя DAO
Помогите Доре с логикой
> >Транзакция - группа последовательных операций с базой данных
> Абсолютно неверно.
> Погугли еще и попробуй еще раз. После этого перейдем к зачем они нужны.
Дора, почему ты такая тупая шлюха? Пиздуй делать что говорят.
чем диктуется эта группа операций? Для чего нужен откат транзакции?
Блять джависты тупые мрази.
С хуяли бизнес логика должна знать о том сколько там баз данных, еще блять где они расположенны? Да?
Я уже вижу, сегодня одна база, завтра их две - и этот индус ковыряет каждый раз бизнес-логику. Лол.
Понятно что за это должен отвечать слой DAO и какое-то совокупное его подмножество.
Дебилоид, если ты ничего сложнее круда в жизни не писал, то не проецируй.
Популярная нынче бизнес-модель хипстер-стартаперов: берем опенсорс-библиотеки, заворачиваем это все в наши классы и методы, называем это NewBuzzword framework, придумываем этому применение, которое конструирует «уникальное предложение», делаем набор примеров в рамках концепции «уникального предложения» и пишем документацию. Все это выкладываем в свободный доступ и потом везде пишем длинные статьи сдобренные красивой инфографикой в духе «теперь вы можете за 1 минуту написать то, на что другие тратили годы» в журналах для молодняка, а в других журналах (для бизнесменов): «реальная оптимизация бизнес-процессов с новым фреймворком NewBuzzword».
Это настолько хорошо работает, что миллионы неофитов по всему миру с легкостью индокринируются в эти новые секты. Результатом этого воистину религиозного поклонения является миллионы денег налогоплательщиков выбрашенных на ветер и километры говно-кода который никто никогда не сможет поддерживать без необходимости переписывать все заново с нуля каждый раз, когда система в какой-то своей части устаревает или требует расширения спектра применения.
> аррря врети
Ах, этот сладкое чувство поражения обосравшегося собсеседника.
Ты нихуя не знаешь что такое транзакции и для чего они нужны, а что-то там кудахтаешь про архитектуру. Поэтому и несешь такую дикую хуйню.
Подмойся и пиздуй в гугл умнеть.
Ты спросил что такое транзакция.
Чел кинул и ткнул носом что это ответственность слоя DAO
Вместо конструктивного ответа - подрыв пукана, отрицание, крики что все не так.
Что с вами не так? Пережрали абстракции?
Ох уж этот школоподельщик пишущий калькулятор. Он то все знает
год опыта в джава
> Ты спросил что такое транзакция.
> Чел кинул
Ты чел ответил абсолютно неправильно, о чем ему сказали два человека, причем несколько раз. Ты чел порвался и начал верещать врети.
> это ответственность слоя DAO
Пусть ты чел прекратит обсираться с подливой и возьмется за ум.
Возьмись за ум, почитай что такое транзакции, чем они отличаются от просто выполнения нескольких операций и зачем вообще нужны. Потом прочитай зачем нужен DAO и к чему относится транзакционность.
Не надоело троллить тупостью и глотать мочу?
Окей, мало сегодня ваши жопы рвались.
Что такое транзакция на сервисном слое?
И самое главное зачем она там есть, если сервисный слой не имеет отношение к доступу хранения данных (т.е. провайдером данных в данном случае может быть тупо файловая система (простые файлы))?
Вы тут полыхаете, но не один не пояснил еще.
...я всегда любил джавистов, они грезят надроченными теориями абстракций, готовы лепить слой за слоем из фреймворков, чтобы добиться какой-то гибкости которую никогда не используют. А в реале, когда начинаешь копать их код, понимаешь, что они умудряются запутаться в своих же абстракциях и вообще лепят противоречивые вещи.
То что так можно разводить бизнес, оно то понятно, но себя то не обманывайте.
Смотри. У тебя может быть обращение с двумя базами данных или там обращение к бд и работа с jms. И физически у тебя будет две транзакции, но бизнес-транзакция - одна. Так на каком слое с ней обращаться?
Да даже банальное добавить-удалить-изменить - это одна транзакция, а для дао - три отдельные операции.
ты троллишь что ли? допустим у тебя несколько обращений из сервиса в разные репозитории (дао). последняя завершилась неудачно, нужно откатить предыдущие. какую-то левую хуйню про абстракции загоняешь, при чём тут это вообще
Если по поводу полезности интерфейсов еще как-то можно поспорить, то не понимать абстрактные классы - это просто твоя глупость.
Универсальность, гибкость. Ты можешь отправлять в метод параметром любой класс, с любым набором свойств. Иными словами, объем кода сокращается и он становится более элегантным.
т.е. ты говоришь о случае когда у нас есть некий класс А с методом, принимающим на вход объекты типа интерфейс Б, от которого могут быть наследованы классы В, Г, Д и т.д.
Посмотри хотя бы на InputStream.
>Опять же, ты можешь написать просто Б.Хуй()
А вот это уже интересно, а что будет если реализация есть у 2 классов и она одинаковая по параметрам?
Реализация по параметрам и так будет одинаковой. Ты должен реализовать метод один-в-один как он описан в интерфейсе (с тем же списком параметров).
Ок, а если в классах будет разная логика реализации метода интерфейса А, то, какую дернет А.хуй() ?
https://docs.oracle.com/javase/tutorial/java/javaOO/methods.html
>Overloading Methods
А это тогда что по-твоему?
>>961294
Друг, у тебя тоже каша в голове. Дёрнется метод того объекта, который передашь. Иди читай про таблицы виртуальных функций.
Зависит от того, какой конкретно класс будет находится в объекте. Сам по себе объект интерфейса создать невозможно.
>А это тогда что по-твоему?
Батюшки, вот это я хуйню несу-то.
Сам только как месяц жабу по Хортсману начал осваивать. И что самое интересное, не могу вспомнить, где нашел текст про отсутствие перегрузок.
Сейчас перечитал - все есть. Чудеса, блеать.
И чтоб кода помеьнше было, а то сука не гуглится блядь а времени особо нет.
Анон,выручай
Кароче бля нагуглил https://github.com/reactor/lite-rx-api-hands-on/blob/complete/src/test/java/io/pivotal/literx/Part11BlockingToReactive.java ааа найс всё в примерах, респект чувакам
>Hibernate
нинужно
>orm one-to-many
аналогично
> User была возможность дать некий Book другому User
может они хотят от тебя знания ООП?
>не могу найти инфы по orm one-to-many
дно
>на русском
дно х 2
>не нашел
дно х 3
Диагноз: тебе обязательно перезвонят.
не могу в спрингсекьюритиконфиге разграничить доступы к страничкам в зависимости от пользователя
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers("/login").permitAll()
.antMatchers("/registration").permitAll()
.antMatchers("/admin/")
.hasAuthority("ADMIN").anyRequest().authenticated()
.and().csrf().disable().formLogin()
.loginPage("/login").failureUrl("/login?error=true")
.defaultSuccessUrl("/admin/home").loginPage("/")
.usernameParameter("email")
.passwordParameter("password")
.failureUrl("/").and().logout()
.logoutSuccessUrl("/").and()
.authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers("/login").permitAll()
.antMatchers("/registration").permitAll()
.antMatchers("/worker/")
.hasAuthority("WORKER").anyRequest().authenticated()
.and().csrf().disable().formLogin()
.loginPage("/login").failureUrl("/login?error=true")
.defaultSuccessUrl("/worker/home").loginPage("/")
.usernameParameter("email")
.passwordParameter("password")
.failureUrl("/").and().logout()
.logoutSuccessUrl("/")
.and().logout()
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/").and().exceptionHandling()
.accessDeniedPage("/access-denied");
}
гуглил примеры. но почему-то у меня криворукого все могут залогиниться как хотят и под правами какие сами рандомно выпадут.
хелпмиплиз
не могу в спрингсекьюритиконфиге разграничить доступы к страничкам в зависимости от пользователя
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers("/login").permitAll()
.antMatchers("/registration").permitAll()
.antMatchers("/admin/")
.hasAuthority("ADMIN").anyRequest().authenticated()
.and().csrf().disable().formLogin()
.loginPage("/login").failureUrl("/login?error=true")
.defaultSuccessUrl("/admin/home").loginPage("/")
.usernameParameter("email")
.passwordParameter("password")
.failureUrl("/").and().logout()
.logoutSuccessUrl("/").and()
.authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers("/login").permitAll()
.antMatchers("/registration").permitAll()
.antMatchers("/worker/")
.hasAuthority("WORKER").anyRequest().authenticated()
.and().csrf().disable().formLogin()
.loginPage("/login").failureUrl("/login?error=true")
.defaultSuccessUrl("/worker/home").loginPage("/")
.usernameParameter("email")
.passwordParameter("password")
.failureUrl("/").and().logout()
.logoutSuccessUrl("/")
.and().logout()
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/").and().exceptionHandling()
.accessDeniedPage("/access-denied");
}
гуглил примеры. но почему-то у меня криворукого все могут залогиниться как хотят и под правами какие сами рандомно выпадут.
хелпмиплиз
Есть иерархия классов Response, который имеет в себе массив Photo (2ой скрин). В общем, я пытаюсь HQL-ем вытащить максимальное значение max_sol (3-ий скрин). Idea говорит, что класс Rover не замаплен. Но @Table(name = "Photo") говорит, что замаплен. Где я дебил?
Тебе нужно разделить работу с базой и работу с джсон. Так называемое "разделение ответственности". Одни классы для работы с базой, суффикс Entity, другие для json, суффикс я бы сделал JsonDto. Между ними конвертер, конвертирующий Entity в JsonDto.
Это нужно чтобы структура базы не мешала структуре джсона, и наоборот. И чтобы в случае изменения базы джсон бы не пострадал.
Отличная идея! Спасибо :)
Во-первых, не выкладывай код напрямую сюда.
Во-вторых, отформатируй нормально эту нечитаемую кашу.
В-третьих, зачем там два раза страница логина?
В-четвертых, я тебе, мудаку, уже выше скинул ответ на вопрос про 2 "домашние" страницы. Что за говно ты сюда приплёл вместо редиректа?
@Entity
Бляяя, короче, всё хуйня, давай сначала, походу я нихуя не шарю в реактиве и эта хуйня вообще не для паралелизации вызовов. Да ну нахуй, там столько костылей надо запиливать, чтобы добиться это паралелизации вызовов. Я ещё даже нашёл на стаковерфлоу в ответах, что типа паралезация в обсерверах хуйня и не нужна, иди нахуй.
Как же тогда красиво заебашить несколько вызовов паралельных? Через акку? Она-то норм хоть к спрингу прикручивается?
>серилизовать энтити в жсон
ИДИ НАААХУУУУУЙЙЙ ПИДОРАС ЕЩЁ НЕБОСЬ СЕССИЮ ОТКРЫВАЕШЬ В ВЬЮХЕ ЧТОБЫ ДЖАКСОН СМОГ ЗАСЕРИЛИЗОВАТЬ ВСЕ ЗАВИСИМЫЕ ЭНТИТИ??
Да нет, у меня для этого сервис есть. Который к dao обращается. Не знаю от чего у тебя так бомбит. А если и бомбит, то можешь и расписать правила хорошего тона для спринга.
>правила хорошего тона для спринга.
Первое правило. Никогда не использовать хибернейт
Второе правило. НИКОГДА не использовать хибернейт
Да у тебя ПУНКТИК!
от него больше проблем чем пользы
У тебя сложные сущности, размазанные по паре десятков таблиц. Как будешь с ними работать, SQL-запросы писать на каждый чих?
>>961409
>>Во-первых, не выкладывай код напрямую сюда.
>>Во-вторых, отформатируй нормально эту нечитаемую кашу.
прошу прощения http://pastebin.com/zmcd3X6E
>>В-третьих, зачем там два раза страница логина?
скопипастил лишнего, это все равно ничего не меняет
>>В-четвертых, я тебе, мудаку, уже выше скинул ответ на вопрос про 2 "домашние" страницы. Что за говно ты сюда приплёл вместо редиректа?
если я делаю по примеру у меня ошибка
"There was an unexpected error (type=Method Not Allowed, status=405).
Request method 'POST' not supported"
Если сложные сущности и сложные запросы, то тем более нельзя юзать хибернейт.
Ты потратишь больше времени, пытаясь запустить это и понять почему оно тормозит
Я сейчас говорю не о говноподелках, которые ты пилишь на коленке один, а о серьёзных корпоративных приложениях, которые делаются по несколько лет и за это время ещё команда успевает пару раз смениться. И я тебе гарантирую, без JPA ты ебанёшься.
Чувак или троллит, или не понимает что такое транзакции и зачем они нужны. Поэтому несет такую дикую дичь.
> Я сейчас говорю не о говноподелках, которые ты пилишь на коленке один, а о серьёзных корпоративных приложениях, которые делаются по несколько лет и за это время ещё команда успевает пару раз смениться. И я тебе гарантирую, без JPA ты ебанёшься.
Угадай почему одинбанх бузинес онлайн сейчас вполне успешно переписывается в том числе и с хибернейта на поделие одного швейцарского пацанчика.
>а о серьёзных корпоративных приложениях, которые делаются по несколько лет и за это время ещё команда успевает пару раз смениться.
Для тебя это повод для гордости? Я участвовал в проекте: принять данные по xml, расшифровать и сохранить. Этот простейший круд команда из 5 человек делала в течении года, и так не до конца. При этом оно падало от перегрузки даже на тестовой среде
Следующим проектом была система такси федерального масштаба, где на серверной части был я один. Второй проект был в разы сложней, и при этом запущен в продакшен через полгода после начала работы
> Я участвовал в проекте: принять данные по xml, расшифровать и сохранить. Этот простейший круд команда из 5 человек делала в течении года, и так не до конца. При этом оно падало от перегрузки даже на тестовой среде
Лолблять почему?
использование всех возможных дилдаков, модных в то время: BPM, хибернейт, веб-лоджик, дженкинс, оракл, ещё какие-то хрени.
На компьютерах разработчиков это было не развернуть из-за оракли, bpm и кучи настроек. Тестовых серваков было пара, при этом надо было изъебываться чтобы посмотреть логи. На тестовые серваки конечно-же нельзя просто так залить, заливается через коммиты с кучей валидаций, тесты и капризный дженкинс. Ни о каком дебаге конечно не могло быть и речи. Итого пробный запуск своего кода растягивался на полдня. Ещё полдня чтобы расшифровать логи и понять что не так. Ну это примерно как в старые времена, когда программы набивали на перфокарты и отдавали на ввод операторам, а результат ты мог узнать только через пару дней, в виде текста.
Плюс постоянные митинги, ибо руководство захотело поиграть во все эти скрамы и аджайлы.
Но это больше смахивает на руожопость тех кто такую инфраструктуру породил. Гибернейт тут явно не причем. Наломать таких дров можно успешно и без БД с гибернейтом в качестве ОРМ.
ну вот когда писал это такси, тоже использовал хибернейт. Потом пришлось выпиливать его из всех частых запросов. Оставил только на запросах для админки и диспетчеров.
>>961477
Индексы хоть делали и следили, чтобы не было гомофуллсканов, или "какой SQL? За меня ORM все говно делает, идите нахуй, я бабочка"?
именно что постоянные гомофулсканы, подгрузка связанных сущностей вопреки запретам. Плюс при сохранении/обновлении оно обновляет все поля, даже те которые не нужно. Убрал слой Entity - памяти стало жрать в два раза меньше
Ну например юзать гибернейт для формирования различных браузеров в системе или же отчетов - верх идиотизма. Такие структуры как правило агрегируют данные из разных таблиц в форме далекой от ваших задефайненных сущностей. В таком случае операцию будут затратны по ресурсам - здесь стоит применять Native SQL приподдержке профайлера вашей СУБД, с последующей конвертацией в POJO через ResultTransformer того же гибернейта (хотя в JPA 2.1 появился более удобный инструмент).
Это первое. Второе - понимать то с какими данными работает ваша система в конкретной ее части и далее вытягивать из базы их один раз через JPQL(HQL), дабы в дальнейшем не было кучи мелких подзапросов.
О таких вещах вообще не думают когда работают с ORM а потому получается что инструмент во всем виноват.
Вот есть RestService и вылетает ошибка java.lang.NullPointerException net.yan.service.DtoConverter.convertToModel(DtoConverter.java:22)
Окей, я стал в addPhoto передавать не ResponseJsonDto, а сразу массив PhotoJsonDto. Не помогло. Окей. Проверил, а получаю ли я вообще ResponseJsonDto. Да, получаю и id, imgSrc смог спокойно вытащить.
Вроде бы, и конфиг правильно настроил.
https://github.com/Kabowyad/Test-Project/tree/api-test/src/main/java/net/yan
Верно подмечено - ORM это всегда компромисс. Вы получаете удобство в одной части прикладных задач, но в другой будут возникать траблы. Выходом как правило явялется гибридное решение - применять ОРМ там где ОРМ справляется хорошо, в остальных местах использовать Native SQL.
ой блять, просто пиздец. Забыл поставить JsonValue и все сломалось.
ну да, куча нюансов и возможных граблей. А написание plainSQL занимает не так уж много времени, плюс это надежнее.
Все зависит от объемов. Если это мелко проект - спорить не стану. При количестве сущностей около пятидесяти - native sql становится проблемой. Собственно из-за этого и стали придумывать ОРМ, что бы не писать огромную кучу кода. И тут все по Макконелу: меньше кода -> снижение сложности -> упрощение в сопровождении и меньшее шансов наклепать баги.
Экстрасенсы все на тнт. Хуй знает что ты там не осилил. Ебись-дебаж сам (как и все работающие прогеры).
> если я делаю по примеру у меня ошибка
> "There was an unexpected error (type=Method Not Allowed, status=405).
> Request method 'POST' not supported"
Читать мы, конечно, не умеем.
за пару лет работал только с сервлетами и osgi. в связи с перекатом на другое место работы, хочу немного подготовиться.
у самого в мыслях только бложики да твитторы
Два Ануса Дрануса этому Косадесу.
Даже у меня самого есть анус, а значит я сам себя драть могу.
>>961523
>>Ебись-дебаж сам(как и все работающие прогеры)
дык я и так ебусь, параллельно тут спрашиваю малоли кто что-нибудь знает. я еще не работающий и с такой ебланской башкой я думаю раотать еще буду не скоро
>>Читать мы, конечно, не умеем
ну конечно ты тут один у нас читать умеешь, толкь интересно схуали метод пост нот супортед!?
значт придругом конфге он супортед, стоит поменять конфиг и уже нет, куда он делся? мм??
эй метод "ПОСТ" где ты????
я порвался, можете меня уносить!
Слушай, паренек. Давай будем няшками-поняшками и посмотрим правде в глаза. Программирование очевидно не твое.
Почему бы тебе не попробовать Javascript?
интересное предложение, но я уже прошел собеседование на должность гей-шлюхи сзароботком 400ккк/сек
>>961079
>Ты не знаешь что такое транзакция, дай определение.
>На...
>Все не правильно, "врети"!
>Хорошо, скажите тогда правильное определение
>Не скажу, но вот смотри, если тут...
Дебилы бля (с)
Слив с транзакциями в сервис-слое засчитан.
Ты по сути говори, хули ты тут своими абстракциями пальцы растопыриваешь, мышь бля.
Не транзетивненько, слившийся гандон.
Баранам дали DAO чтобы те отделили код от носителей данных, так джава-макаки умудрились транзакцию (вещь, исключительно специфичная для БД) - натянуть на сервис слой.
Нахуй вам тогда DAO, если вы уже запороли абстракцию, возьмите сразу Active Record в сервис слой - это будет однохуйствено (вы так же будете привязаны только к носителю реляционных БД, но как макаки не будете писать бойлерплейт).
Тот самый случай, когда тебя открыто унижают по твоей любимой джаве, а ты даже ответить по теме не можешь
Да заебешься каждому мимокрокодилу что-то там доказывать. Итогом все равно будет "азаза, слив засчитан", а за ним придет следующий и все по новой.
Бедняга, возьми платочек.
Сами отвечают в стиле азаза. Ничего конструктивного я не увидел (даже банального "правильного" определения транзакции в контексте сервис слоя) а потом аноны плохие.
Ну то есть, как бы ты на себя не дрочил сейчас (на свое ЧСВ), ты ровно такой же скам который сам только что и описал.
PS ...и да, за огрехи архитектуры топят единицы, так что не пизди что приходится часто доказывать мимокракодилам подобное.
Какой потешный дебил. Ни дженериков, ни наследования интерфейсов не осилил и еще гордится этим.
Может быть, я кукаретиков, кукарекающих об овеществлении дженериков, не различаю.
https://www.youtube.com/watch?v=402QPeOnIy4
он не для веба создавался. net/http был впилен на скорую руку за месяц до релиза чисто ради привлечения внимания\популярности. пилить на го прикладуху типа веба - это миллионы велосипедов. на нем байтики ебать хорошо, но это типа непопулярно сегодня
Это не тебе решать, чмоня.
DropWizard + Angular2
Аноны, как в RxJavе сделать цепочку обсерваблов? Вот допустим я хочу передавать данные из одного обсервабла в другой, из него в третий и т.д, а в конце получить нужный мне объект. С помощью чего это можно реализовать?
flatMap / switchMap
Делай пулл реквест, хули.
https://pastebin.com/X2AFZaiE
И мы имеем такой же тестовый класс, в котором я выдрачиваю все эти внутренние штуки.
https://pastebin.com/GzKLKXMB
Я ничего не понимаю, что идет не так. Ах,да - вот простой мэйн класс - https://pastebin.com/BW5bQyex
А теперь самое главное. Когда в строке для перевода было Tale во время работы - всё работало. Теперь же выдает нуль поинтер эксепшн.
Но работает со словом хелло.
Вы можете сказать мол, оно ж тебе показывает, где ошибка. Так вот - ошибка в якобы вот тут
JSONObject getNullPoint = (JSONObject)getSyn.get(0);
Да вот только если закомментить метод и просто распечатать линк, то мы увидим, что поле syn действительно есть и эксепшн не может появиться, потому что ответ JSON от апи построен по одному формату! В общем, работает всё раз на раз, в чём подвох-то, джаваны?
Алсо, знаю, что говнокод, извините. На слове Hello исправно выдает мне массивы значений. Вот пример вывода
hello
Перевод привет
Значения [hi, welcome]
Синонимы [приветствие]
Переводы [привет]
>restTemplate.exchange(url, method, request, resultType).getBody()
Ты вот это что-ли написал?
Какие возрастные ограничения для джунов в России? Слышал, что после 25 уже не берут.
хз, я в 17 шёл, сказали что у же на верхней границе
>у самого в мыслях только бложики да твитторы
Как будто что-то плохое. С точки зрения тимлидов корзинок и хипсторов сеньеров хуесосов собеседователей
Формочка состоит из текстового окна и кнопки. Хочу, чтоб текстовое поле было расширяемое (растягиваемое), а кнопка-нерастягиваемая наоборот (при изменении размеров окна). Сейчас набросал пикрилейтед, но похоже придется править вручную
Swing, похоже, древний мем.
Взял Gridlayout и сделал по примеру: https://docs.oracle.com/javase/tutorial/uiswing/examples/layout/GridBagLayoutDemoProject/src/layout/GridBagLayoutDemo.java Вроде более-менее получилось
Правила расстановки знаков препинания в русском языке.
Это так.
Говорят, старше 15 уже нет смысла даже пытаться.
Сам вкатился в 27, один друг в 26, знаю двоих вкатился в 30+.
Твоя программа говорит дай говно, буду в нем рыться.
Ты не хочешь в программе зашивать адрес говна, его сорт и вид. Ты пихаешь программу в сервер приложений, где админы сервака создают и настраивают конкретные типы говен и дают им имена. И твоя программа юзает предоставленное админами говно, не заставляя тебя ебаться с конкретными реализациями говен, так как создание и настройка говна это админская работа.
А если еще в файлике с jvm пропертями сделаешь, чтобы можно было указывать конкретные имена jndi говен, чтобы твоя программа работала с говном не по конкретному имени говна, а по проперти имени говна, так вообще будешь помидоркой сука ты ебаная хуила беспардонная.
Заебись, спасибо.
Когда вообще есть смысл их использовать?
Только когда тебя просят предоставить для общественного пользования свой срачельничек. Его надо беречь для настоящих товарищей.
дружище я победил наконец-то это хуету!!! во пиздец я тупой был (да таким же и остался). спасибо, что хоть немножк направлял меня, ну тоси-боси там это. кароч заебись
я пишу ток анонимные классы, т.е лямбды.
Двачую, на жабе веб пилить - это боль из тонны бойлерплейта.
driver.command_executor._commands['executePhantomScript'] = ('POST', '/session/$sessionId/phantom/execute')
driver.execute('executePhantomScript', {'script': '''phantom.setProxy("10.0.0.1", 12345);''', 'args' : [] })
валидация синтаксиса на этапе компиляции
ну типа знаешь, ничего свежего. хотя тут наверное не стоит выебываться, а надо сидеть и пробовать/делать
Нужно настроить конвертацию документов из docx в pdf. Пробовал ебашить через apache.poi и docx4j (3.2.2), форматирование идёт по пизде. Попробовал docx4j 3.3.3 - работает заебись, но он на самом деле не сам конвертирует а гоняет документы на сервак и там конвертирует, хотите на локалке - купите свой сервак и разворачивайте, не вариант. Посоветуйте нормальные варианты, наверняка многие ебались с подобными задачами.
Если хочешь чтобы ничего не ехало, то бери шарп и пиши свой сервис. Там конвертация вроде почти из коробки есть.
>потребовалось создать максимально уебанский язык программирования
Но ведь кобол уже был изобретён.
>>962498
Лол, тупые хомячки, жрущие проприетарщину.
>>962493
Выбирай Eclipse, хоть он и старый, но он свободный. Это главный критерий любого здравомыслящего программиста и вообще свободного человека.
Жми контрол+1, либо на лампочки и делай импорт.
Ты ахуел чтоле сука?
А ну быстро съебал в 1С тред, если свой мордорский так любишь, что даже КЛАССЫ по пидарашьи называешь. Конченый.
Ты, наверно, ещё и на WXP сидишь, ведь это проверенный временем, стабильный продукт.
що не так? если не в продакшен, а что-то тестовое, то сойдет, JsonIgnore и иже с ним вешаешь куда надо и все
я так за 20 минут со спринг дата рест ангуляр2 с сервером связал, тот еще и контроллеры сгенерил с документацией
короче ентити в джейсон конвертить самое то для MVP или написания чего-то на коленке
+ в дата ресте есть проекции, можно вообще не заморачиваться
Ну так купи, если нужна
ты гуем чтоли настраиваешь?
Пиздец, пошёл ты нахуй с такими советами. Меня аж передернуло, когда я про него вспомнил.
Че толсто? Я серьёзно говорю. Не понимаю, как можно в 2017 году им пользоваться.
Что не так с ним? С учетом того, что груви (и gradle вместе с ним) как бы канул в Лету?
Да и IDE иногда с трудом жрет этот gradle
бамп
На gradle это как влияет? Никто не заставляет на экзотическом Groovy писать весь проект.
А гредл всегда был билд тулзом для груви. Для проекта на яве он банально избыточен.
книжку брюса эккеля можешь почитать по синтаксису
>Хочу перекатиться к вам с крестов. Есть книжки/туториалы для не новичков?
>
прочел только эффектив джава, 2.5 года джава макака, полет норм
а, ну и по джава 8 прочел книженку, там всего 120 страниц было
вообще по джаве пробегись и котлин учи
Поздравляю, ты изобрёл static-методы в ЖАббе.
И с чего бы? Вот если еще и аргументы методов представляют собой immutable objects, вот тогда твоя попка прикрыта.
Во, спасибо, это все разъяснило.
Я пытался SBT освоить, пиздец какой-то, непонятно ни хрена, документации нормальной нет.
А на чем еще должен сидеть жабогосподин? Сперму хлебают только дотнет петухи, которые хуже червя похапешника.
не слушай местных дебилов, градл или мавен значения не имеет для 95% проектов
SBT это вообще для скалы
решай проблемы по ходу возникновения, не накручивай
ну и если аллергия на xml, то градл
чем тебе дотнетчики не угодили?
ok
Насколько я помню, вся ejb-инжектуемая хуита всегда thread-safe.
У нас на работе возник срач. Длинные чейны из стримов (Stream.of(huita).map(...).map(...).filter(...).map(...)...) - хорошо или плохо?
Пока что ничего такого не нашёл, чтобы при этом не ломалась разметка. Вообще я удивлён, я думал это достаточно часто встречающайся задача.
И проблема втом, что это не просто пара обзацев текста с картинками, а ебанутые печатные форм с таблицами, прочерками, местами отформатированные пробелами и всё такое, пиздец, в общем.
>>962500
Это понятно, но мне нужна конвертация в рамках уже существующего приложения.
Хоть хуита выглядит круто и удобно, но в функциональном стиле в легкую можно сделать нечитаемую хуиту, логику которой ты сам забудешь через неделю. Мне кажется, в разумных приделах норм. А вообще на работе до сих пор на 7 сидим, так что я с фичами 8 только поверхностно знаком.
>хорошо или плохо?
плохо читаема и нет возможности закомментировать часть.
Каргокульт на функциональщину
Да хуй знает, наверное можно как-то через опен офис, надо поискать. Пока что всё, что я узнал - пакетов для конвертации дохуя, но все они нихуёво так стоят.
Ну типа у меня есть в бд таблица с User ,там есть user name="vasya" lname="popov" password="huilo",в настройках спринга висит <security:authentication-manager>,где все эти юхеры перечисленны. Можно как то донастроить в этом файле,что бы при аутентификации эта хуйня лезла в бд,связывала username из файла с username из бд и открывала операции для работы конкретно с ЭТИМ user из базы данных
>Это понятно, но мне нужна конвертация в рамках уже существующего приложения.
Тогда можешь и не пытаться. Или платить дохера денег. Enjoy microsoft proprietarshina
не слушайте этого проприетарного дауна. оставляй openjdk, всё равно не увидишь разницы (её и нет почти)
если англ в порядке, то попробуй удалённо на зарубежные компании с Javafx. на ней тоже есть проекты
Ладно, может можно придумать какое-то альтернативное решение? Суть в том, что у пользователя должна быть возможность просматривать превьюшки документов, хранящихся в системе, собственно поэтому и происходит конвертация доков в пдф.
У оракла VM быстрее, а так нет разницы, 8 версию OpenJDK поддерживает.
Смотрел. Их конвертер не особо-то бесплатный, а старые версии глючат.
http://converter-eval.plutext.com/
>>963112
>WARNING! This project is no longer maintained The code has been moved to GitHub in the hope that somebody else will fork and maintain it.
Вот это немного смутило, если честно. Да и всё равно нужен установленный ОО.
>>963107
Потому что я тупой и боюсь, что это будет сложно, а я никогда ничего такого не делал. Ну и сервер на стороне заказчика, доступа к нему нет, а я слабо представляю, как это всё должно настраиваться.
Хотя, похоже что у меня нет выбора, видимо придётся так и делать.
>Потому что я тупой и боюсь, что это будет сложно
Так почитай, как сервисы на C# делать. С микрософтовским офисом он точно из коробки умеет работать, редактировать документы, выполнять VBA скрипты... На работе когда-то этим занимался.
Если нужно именно на жабе - ищи библиотеки для прикручивания к ней COM/ActiveX, это единственный способ доступа к вордовскому API.
> Stream.of(huita).filter(...).forEach(...)
Поясните в каком порядке это все выполняется. Я правильно понимаю что сначала массив полностью прогонится через filter, а потом то что прошло проверку еще раз в forEach? То есть 2 отдельных цикла. Тогда если мне нужно исключить всего 1 элемент, то получается O(n^n - 1), когда в обычном цикле эти 2 операции можно сделать за линейную сложность.
Gralde и Bazel.
нет, каждый элемент пройдёт через цепочку только один раз.
первый элемент проходит через фильтр - дальше к нему применяется то, что написано в foreach, второй не прошёл фильтр - отбрасывается.
ща, обожди
Мы мертвы.
Может и можно, но ведь я не полезу за тебя в гугл, малыш.
Там только ридеров райтеров несколько штук разных, с разницей в том, что одни исключения бросают, а другие нулл.
>невменяемое говно из жавовских опенсорсных быдлиотек, сдобренное говнокодом студентов под управлением виабушных акхикектогов.
Люто, бешено двачую, на неделю меня хватило, но не более. В жаву больше ни ногой.По крайней мере бесплатно..
Дебил не осилил понятие декораторов.
И не догадывается, что в его динамикодрисне они тоже есть, только могут называться аляповато и бессистемно, а для ридеров/райтеров в utf8, скажем, выпускают даже несовместимые версии языка/vm.
Что угодно можно сделать на чем угодно. Вопрос в стоимости, времени на разработку, сложности дальнейшей поддержки.
Ок. Тогда почему джава популярнее остальных языков, он что, дешевле? Быстрее? -Нет. Так почему тогда.
Я, кстати, тредом промахнулся, но может это и к лучшем, наверняка тут ещё такие есть.
Накатил тебе за шеку дауну, дауну.
Таблица Книга(id,title)
Таблица Студент(id, name)
и таблица отношений книга+студент(внешний ключ на айди книги,внешний ключ на айди студента-владельца книги,айди текущего читателя)
Как это сделать? Пишу на java,так что и пишу тут
java -jar target/uberjar/project-standalone.jar лол. Скажет JRE установлен на пеке, что дальше делать с этим jar архивом?
Спасибо, о великий некромант :) Я то и сам понял, только нихуя не происходило. Была ошибка одна, но гордый жава-машин стеснялся об этом сообщить, уже пофиксил.
Вы видите копию треда, сохраненную 24 мая 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.