Q: Поздно ли вкатываться в айти в 20/30/40/100 лет?
А: Нет, не поздно.
Q: Cобираюсь учить джаву по 2/5/20 часов в день. За сколько дней я выучу достаточно, чтобы зарабатывать фрилансом?
A: На джаве фриланса нет. Хочешь фрилансить — дуй в ПХП/раби/1С тред.
Q: Хули все книги на английском?
A: Без английского ты не нужен и можешь смело идти нахуй. Ну или в 1С-тред.
Q: Что скажете за джавараш?
Если вкатываешься с нуля, то можешь написать пару "хеллоу ворлдов" до 10 лвла. Дальше курс рассчитан на ленивых и не умеющих читать книжки людей. Количество говнокода зашкаливает, годных задачек пару штук на весь курс. В любом случае решать тебе.
>>1287973 (OP) Объясните, в чем джава лучше сисярпа, кроме кроссплатформенности? Такое ощущение, что сисярпа во всем если не превосходит джаву, то равен ей. Почему кто-то продолжает вкатываться?
>>1287960 Бля, я не знаю почему, но я не могу тебя понять, вообще никак, иди бля книжки почитай там, или ещё что-нибудь поделай развивающее, шизоид сука.
>>1287979 1) Потому что 90% серверов работают на никсах и до-диез на них это отдельный вид извращений 2) Чем лучше? Можно бенчмарков в студию пожалуйста? 3) Перекатиться на Шарп значит переносить существующую кодовую базу.
>>1287997 Ты понимаешь, насколько ты жалок? Я, как настоящий чад, могу вызвать любой метод и обратиться к любому свойству любого объекта. Более того, я могу прям на ходу добавлять и удалять свойства и методы объекта, потому что мой язык меня не ограничивает. Он знает, кто здесь босс. А ты делаешь то, что тебе компилятор скажет. Он пошлёт тебя нахуй, если ты попытаешься сделать что-то подобное, он тупо не скомпилит программу! Вывод: ты омежка и куколд.
Анонисы, имеются значит вот такие вопросы: Что конкретно нужно знать, чтобы взяли с нулем опыта реальной работы? (И что вообще этот джун делать будет?) Если я просто знаю и понимаю, для джуна это нормально? а то я чувствую, что я как мудак все делаю наооборот, там где нужны просто знания, что это за штука и что она делает - я углубляюсь, а где наоборот нужна практика, приняв во внимание концепцию - иду дальше. Ткните котенка носом плиз, моя тревожность выходит из под контроля.
Что имеется на данный момент: - Java Core, без конкаренси ёба уровня, то есть до уровня монитора, лочек, шаблона producer-consumer или что-то такое, забыл уже название бля. - SQL, все постандарту знаю-делал хотя бы раз, джоины - много раз. - maven, git, не знаю нахуй я это пишу но раз уж похоже как на резюме уже пусть будет. (ну и ниже мои сомнения по поводу знаний) - jdbc немного практиковался в этом, но кажется большее уже начал забывать. - servlet API, знаю зачем это нужно где используется, но не ковырялся с этим глубже. - spring core, знаю что это IoC container и зачем это нужно, DI, события и т.д. короче все что связанно с бинами. Подделку на это все писал для практики. Но большего не знаю. - spring mvc, знаю что это сервлеты со спрингом, чтобы пилить rest api ну или дедовским способом сразу рендерить страничку в ебало пользователя сразу, тут уже плавать пиздец начинаю. hibernate\jpa знаю для чего это нужно и все, сам еще не касался.
>>1288087 Поэтому он и не устроится. Попал бы на стажировку за еду, может и мог бы продолжить, а так бесполезно. Джунов без опыта не берут. Изучать, что то дома, а потом придя на собеседование узнать, что это не применяется в этой галере, супер фэйл. Поэтому надо как то узнать что требуется на галере конекретно и под нее пилить пет проекты.
Сейчас берут джунов и без опыта на нормальные зарплаты в ДС(до 100к). Большая нехватка кадров. Нужно хорошо знать Java Core, SQL на уровне запросов, запилить простое CRUD на гитхаб с использованием spring/hibernate. С таким резюме к вам будет интерес. А дальше как пройдете собеседование на знание указанных технологий.
>>1287973 (OP) Нужно написать REST-микросервис для обработки JSON. Писать буду на спринг буте. Есть предложение для реста использовать Spark Framework. Мне нравится спарк, но, по-моему, он хорош для компактных приложений с легкими библиотеками. А если использовать жирный спринг, тогда можно реализовать рест и через starter-web. Подскажите, как поступить.
И еще. Как абстрагировать обработку JSON? Создать отдельный JSONService, в котором выполнять весь требуемый процессинг? Формат JSON-пакетов может меняться со временем.
читаю хорстмана(на русском, так как на инглише могу говорить бегло и понимаю, но процесс чтания и понимания бы затупился так смачно), по изучению плюсов знаю что на одном чтении хуй выеду, есть ли какие(годные) сайты с задачами по жабе, codeabbey не понимает что такое scanner(nextint...), и я в слезах от того что проебал охуенный сайт прошу подсказать замену.
>>1288140 алсо, купил сегодня подписку за 1800, чувство двоякое, поддерживает мотивацию хоршо, тк я нубас. С другой стороны чувствую себя ленивым тюленем тк можно было всё из интернета выучить и из книг. =_= такие дела.
>>1288158 >С другой стороны чувствую себя ленивым тюленем тк можно было всё из интернета выучить и из книг. =_=
Это было мое самое сильное бомбилово: я считал, что вот я купил джавараш и там будет все: и теория, и практика, и направление.
Хуй там плавал, читать книги и интернет надо будет практически столько же. Теория в джавараше написано не то чтобы на отъебись, а так, чтобы ты полез разбираться дальше.
Есть один запрос из олимпиадной задачи. Сейчас не важно, как там устроены таблицы. Так вот я что-то совсем не понимаю: в чем смысл сравнения полей айди из одной и той же таблицы в подзапросе (where idCustomer!=O.idCustomer and OrderDetails.idProduct=OD.idProduct )? Это ведь проверка на равенство самому себе, разве нет? Это главное, что я хочу узнать, но если напишете вывод запроса с объяснением, то будет вообще замечательно, а то эта олимпиада с первого же задания в ступор вогнала.
select Count(*) from OrderDetails as OD inner join [Order] as O on OD.idOrder=O.id where SalePrice = all ( select Price from OrderDetails inner join [Order] on OrderDetails.idOrder=[Order].id where idCustomer!=O.idCustomer and OrderDetails.idProduct=OD.idProduct )
>>1288196 больше ничего нету, у тебя остальные методы ексепшены не бросают, мог быть нул поинтер, но при работе с командной строкой ты получаешь только строки
>>1288109 > Формат JSON-пакетов может меняться со временем. Передавай первым полем версию пакета и на ее основании отправляй соответствующему обработчику. Так ты сможешь корректно обрабатывать запросы в старом и новом формате обеспечивая безболезненный переход старых клиентов на новую версию.
>>1288222 Первоначальная идея, как и первая версия с футурамой были годные, душевные. Потом конечно все трансформировалось в бездушную и жестокую машину по зарабатыванию бабла. Но для для новичка это все равно остается крутым проектом дял прокачки скила. К слову кто-то еще рекомендовал курс stepik.
Какой вариант лучше: try { Object object; // Действие которое надо проверить // Работаем с object } catch (Exception ex) { // Ловим ошибку } Или Object object try { // Действие которое надо проверить } catch (Exception ex) { // Ловим ошибку } // Работаем с Object
В первом варианте будет большой цикл try, а во втором будет глобальная переменная. Что лучше?
>>1288293 Я после джавы ахуел с типизации когда срочно нужно было на питоне работать, отвык от такой простоты. >DE Голая убнту 18.04, там теперь расширения с гнома завезли, вообще кашерно.
>>1288305 >Если ты погромист Да там уже давно вся сложность это гугл и контрол + V в терминал >дуалбут Я тоже так-то, хотя уже забыл когда на шиндовс возвращался.
>>1288308 >Я тоже так-то, хотя уже забыл когда на шиндовс возвращался. Я недавно обновлялся на kubuntu до версии 18.10 и ахуел с лагов, вылетов, приветов моей мамаше и т.п. Даже терминал вылетать начал. Поэтому подгорел и снес все нахуй. Теперь вот опять хочу вернуться на линукс, ибо заебно на винде.
(Спринг бут) Хочу вынести общие для нескольких микросервисов конфиги в отдельную либу и подключать ее просто как зависимость в помнике, это будет работать просто так, или надо еще как-то попердолиться?
>>1288315 третий день с этой залупой ебусь, аноны, хелпаните(
или как это гуглить? гугол выдает страницы где у людей ждк не установлен, им говорят установить и все ЗАебись. у меня ждк стоит, но его это штука не видит.
>>1288363 Блин, дистанционно я хуй что тебе посоветую, попробуй удалить джаву нахуй и заного поставить, я так обычно делаю когда с настройкой чего-нибудь проебусь.
>>1288368 ладно, попробую. в то же место установить? тут просто в некоторых гайдах ее в usr/bin/jvm ставят, у меня в opt. спасибо, что откликнулся, няша
>>1288181 Это не SQL тред, но думаю суть в том чтобы вытащить все цены где неправильно назначен idCustomer, и иного способа это сделать я не вижу. Вообще, очень изящно.
>>1288391 Но ведь idCustomer и O.idCustomer - одно и то же, ведь таблица-то одна с таким полем. И почему тогда оно работает, если айди сравниваются сами с собой, а значит должны быть равны?
Если у меня в проекте есть бд к которой я подключаюсь, то на гитхаб её нужно заливать? А настройки же у всех разные там, это в ридми указывать что и где?
>>1288399 >from OrderDetails Ну не факт, например. Если все как ты говоришь, подзапрос будет возвращать пустой набор строк, и все это будет ебучим индусским кодом чтобы получить 0.
Почему джава тред переделали в тред sql/линукс и установкой ждк которое просто блять решается установкой ждк и жре и вставки их /bin папки как системные переменные. Лучше скажите как мне в веб-приложении захуярить так, чтобы back-forward страницы не возвращали пользователя обратно на страницу профиля если он совершил logout ? Spring-boot если что.
>>1288420 Вот и я про то же. Ноль - неверный ответ (ну или верный, но частично, я хз, там ебанутый интерфейс). Если интересно - олимпиада "я профессионал", вбей в гугле, можешь тоже порешать вот это вот все.
>>1288425 Для этого есть специальный тред. Вопрос по sql сюда бы зашел, будь это ебля с jdbc/jpa/hibernate или что ты там задумал и почему у тебя не работает. А так ты спрашиваешь про голый sql, что немного не сюда.
>>1288423 > как мне в веб-приложении захуярить так, чтобы back-forward страницы не возвращали пользователя обратно на страницу профиля если он совершил logout Это ещё менее релевантный вопрос в контексте жабы. В браузере никак не сделать, есть метод https://developer.mozilla.org/en-US/docs/Web/API/History_API#The_replaceState()_method но в твоём случае его можно будет применить только для последней страницы непосредственно перед выходом. Впрочем для 99% случаев сойдёт.
Ещё можно для страниц профиля отключать кеш браузера.
>отключать кеш браузера А вот это ведь действительно может сработать, спасибо.
Помнится мне кто-то сказал, что это можно поправить, использую HttpSessions, но я не особо понял как оно может. Может ты разбираешься? Хотелось бы просто узнать, если это возможно усилиями спринга.
>>1288435 Вопрос не в том как редиректнуть и вернуть страницу. Это я и в POST методе могу. А в том, чтобы пользователь не нажал кнопку в верхном левом углу браузера и его не вернуло обратно, когда logout был уже сделан. Я и Spring-Security прописал и поставил в конфиг опцию для logout и прописал то, что нужно авторизоваться, чтобы просматривать профиль, но увы, блядский back всё равно возвращает.
>>1288423 блят. у меня стоит ждк и жре. у меня стоит джава хом на ждк(внутри которого жре). нужно прям две системные переменные их bin папок? как эти переменные назвать? чето я не понимаю как это сделать. попробовал дописать пути к bin'ам в path - не работает.
>>1288444 У меня стоит системная переменная и переменная среды JAVA_HOME на саму папку, где находится bin, lib и файлы. Т.е E:\OP-hui\JDK. И стоит переменная среды JRE_HOME, которая тоже ведёт на саму папку, внутри которой стоит /bin. Покажи как у тебя стоит.
Так пацаны, если я в пик 1 передаю руснявые слова то на выходе получаю вопросики аля пик 2, это проблема именно жабы т.к. в воркбенче я добавляю тоже самое и всё работает, хелп
>>1288453 Ну ты особенный у нас конечно. Так а чего ты в консоли клац-клац и готово? У вас ведь линукс за вас всё сам делает!!111 А если серьёзно, то мб нужно в разные папки или тупо снеси всё и переустанови. Попробуй из какой-то IDE посмотреть если она находит, Intellij тебе вроде даже сам установить может и сделать за тебя.
>>1288437 Дока не говорит о других способах конфигов в спринге. Ну можешь создать нахуй никому не нужный бин, инжектить в него контекст и назначать, но тогда для каждой смены конфига нужна будет перекомпиляция, что в прод-условиях подобно сосанию хуя когда рядом лежит только что заправленная баблом шлюха.
>>1288473 Если таблица не очень большая, то это хороший вариант. Если большая, то надо делать sort by id + limit , а потом новый селект с where id > n сраный mysql, чтоб ты сдох!!!111
Джаваны, помогите зелени. Не находит драйвер для mysql. Пик 1 - зависимость в мавене, 2 - получение соединения, 3 - эксепшн. В чем, собственно, проблема?
>>1288264 Бля, только недавно с этой хернёй ебался, там какую-то ебату с юзерами сделали, можно вообще написать sudo mysql и он откроет всё. Не нашёл как исправить просто откатился на семнадцатую. Если найдёшь или нашёл решение, то отпиши, пожалуйста.
>>1288486 А ты где то этот драйвер прописал, чтоб его получать то блядь? На кури код и не задавай больше тупых вопросов, у тебя в логах уже инфы выше крыши
>>1288501 >>1288318 @Configuration это не конфиги, блджад, а ручное создание бинов. Да, ты можешь это сделать без ебли, только отдельную библиотеку собирай без spring-boot-plugin.
А вот пикрил например убирать не стоит? Тут же подразумевается что юзер введёт номер который есть в бд, а если его нет то собсна ловим исключением ебать.
>>1288747 Если на спринге пишешь то легче создать класс таблицы загрузить его и как то вот так написать: taskRepo.findAll().stream().map(Task::getId).collect(Collectors.toList()) и все
Сап жавач, хочу запилить библиоткеку которая превращает все слова в строке по типу "рифма" -> "хуифма" на паре десятков языков. Посоветуйте как ее архитектурно спланировать?
>>1289019 >>1289034 Лонг может быть больше инта в 9,223,372,036,854,775,808 / 2,147,483,648 миллиарды раз, блядь. По-твоему остаток от деления на сто гарантированно влезет в инт? А про простые числа ты блядь слышал?
https://pastebin.com/UzCUaAuJ В методе сначала проверяется условие @PreAuthorize, т.е. даже если юзер с запрашиваемым id не существует, возвращается 403. Как сделать, чтобы сначала проверялось наличие юзера (и выбрасывалось 404 исключение, если он не существует) и только потом проверялось условие в @PreAuthorize? В моем понимании надо заменить @PreAuthorize на @PostAuthorize и откатывать транзакцию при фейле (т.е. после выполнения метода). Вопрос как сделать, чтобы чек авторизации был внутри транзакции и она откатывалась при AccessDeniedException? Или может есть другой способ?
>>1287979 Классический сярп люто отсасывает по перфомансу. Особенно это заметно по веб-фреймворкам: у джавовских rps в тысячи раз больше. Речь, разумеется, не про кор: он пиздат и примерно на одном уровне с джавой. Самое основное превосходство в том, что на жаве гораздо больше написано. Больше либок, больше фреймворков, больше примеров кода. Даже есть кроссплатформенные окошки, если угодно. Ну и вакансий почти в полтора раза больше.
>>1289932 Лет 6 назад так же думал когда в олимпиадах участвовал и там на джаву были особенные инвалидные условия по времени. Сейчас уже все совсем не так, вот тут вроде чувак очень подробно все описал https://stackoverflow.com/questions/2163411/is-java-really-slowща бы ссылками на стековерфлоу кидаться, как пруфами
>>1289989 Ты абсолютно прав, 1 пук = 1 класс, но ты забыл, что сеньерность это ещё умение классифицировать пуки по пекейджам, а в этом коде их нет а вообще да, очень сложно читается
>>1289991 >>1289989 >>1289984 Я написал это за час на вписке, лол 1) Ок, сокращу до 1 интерфейса и реализации. 2) Прикручу к проекту junit и вынесу в тесты пример использования. 3) Обозначу EmptyStringException extends RuntimeException и буду использовать его Норм?
1) Нахуй свой эксепшон, нпе вполне сойдет 2) Если пустая строка нихуя не делаем 3) Впихнул все в интерфейс + класс 4) Стоит ли учитывать иные символы кроме пробелов?
>>1290226 Ты что-то гуйное пишешь? У меня в C# была куча подобных мап для кеширования объектов, которые описываются атрибутами и получаются при помощи рефлексии в рантайме.
public void exec() { BufferedReader reader = null; try { URL site = new URL("http://www.cbr.ru/"); reader = new BufferedReader(new InputStreamReader(site.openStream())); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); } catch (IOException ex) { //... } finally { try { reader.close(); } catch (IOException ex) { //... } } } Спиздил вот такой кроулер, он мне через принтлн выдаёт кучу всякой хуйни внутри тэгов. Как её пропарсить и вытащить курс доллара на сегодня? JDOM скачал, а что делать с ним не знаю.
В самой БД могу искать Cyrillic символы, а когда запрашиваю с сервера запрос на удаленную эту БД, то он мне не находит. Хотя спокойно находит англ + цифры.
Пытался менять кодировку самой БД на cp1252 - он искал, но в этой БД и в ответах отображались символы как ?????? ????? ?????.
>>1290533 >для подготовки к собеседованию на синьора. Походил по барам случайно один раз, меня сразу с джуна до синьора помидора повысили. Рабочий метод, советую. Сейчас сижу на работе пишу одну строчку за восемь часов, а в остальное время пизжу в курилке.
>>1290592 Подтверждаю. Хоть Оракл и пыжится изо всех сил, но лошадь уже очевидно сдохла. Писать веб-приложение на связке JSF-EJB-JAX-RS в 2018 будет только ебанат.
>>1290696 > Хоть Оракл и пыжится изо всех сил Под "пыжится" ты подразумеваешь "удалил из jdk и отдал сообществу"? По мне так наоборот выглядит как похороны.
>>1290699 В jdk её, тащемта, и не было. JDK это Java SE + JavaFX (до недавних пор). А слив Java EE в Apache и правда больше похож на похороны, тут ты прав. Хотя всего год-два назад Оракл бил себя пяткой в грудь, поясняя про неебические перспективы развития. Где-то статья на Хабре была, лень искать.
>>1290707 > В jdk её, тащемта, и не было. JDK это Java SE + JavaFX (до недавних пор). Тащем-та в Java SE была своя собственная часть EE начиная с шестой жавы. Вот тут написано подробней: http://openjdk.java.net/jeps/320
> Java SE 6 included a full Web Services stack for the convenience of Java developers. The stack consisted of four technologies that were originally developed for the Java EE Platform: JAX-WS (Java API for XML-Based Web Services), JAXB (Java Architecture for XML Binding), JAF (the JavaBeans Activation Framework), and Common Annotations. At the time of inclusion, the versions in Java SE were identical to the versions in Java EE, except for Java SE dropping a package in Common Annotations that concerned the Java EE security model. However, over time, the versions in Java EE evolved, which led to difficulties for the versions in Java SE.
> А слив Java EE в Apache Только не Apache, а Eclipse.
>>1290709 Тем, что EJB сам по себе практически бесполезен. Написание бизнес-логики на энтерпрайз-бинах вынуждает тебя все остальные слои твоего убер-приложения также ебашить на Java EE библиотеках.
Хочешь веб-морду? Вот тебе JSF. А всякие Bootstrap и Angular засунь себе в жопу, никакого открытого API у бинов нету.
Работа с базой? Онли JPA, хотя в этом случае всё ещё вполне неплохо. Но Spring DAO всё равно пизже будет.
Хочешь взаимодействия с другими приложениями? Если синхронно, то только JAX-RS (или -WS, хотя про SOAP уже почти все забыли, и поделом), если асинхронно, то только JMS, причём в качестве брокера ты можешь использовать только тот сервер, на котором вертится и EJB-контейнер, про легковесные ActiveMQ забудь (если, конечно, твой сервер не TomEE).
Их тяжело отлаживать, сам процесс постоянного деплоя и разворачивания на монструозном сервере с конфигурированием в xml после Spring MVC выглядит каким-то дикарством, тем более, что на горячую этого и не сделаешь (хоть поставщики серверов и пиздят про такую возможность, на деле там дохуя нюансов, в итоге всё равно приходится перестартовывать сервак целиком).
А с появлением божественного Spring Boot концепция веб-приложений в корне поменялась. Теперь не приложение вертится внутри сервака, теперь сервак подтягивается внутрь приложения просто как зависимость, избавляя тебя от ебли с настройкой JNDI-ресурсов (брррр...), и тем более ручной маршрутизации и распределения нагрузки. Всё это теперь делается парой аннотаций и десятком строчек в application.yml.
Всему этому Java EE ничего противопоставить не смог.
Перенес в отдельную либу @Configuration для некоторых бинов, а вместе с ним парочку @Component и @Service. Теперь у меня есть аннотация, с помощью которой этот конфиг подключается к приложению на спрингбуте. В аннотации есть @Import(FooConfig.class), а в конфиге такие же импорты всех компонентов и сервисов. Это норм или я какую-то хуиту горожу?
>>1290780 А, это ты тот мелкобуква, который доебывался до мелочей из-за того, что ему скучно? Как говорится, узнал тебя по твоим шизоидным высерам. А теперь пiшов нахуй, как говорится.
Знающий Анон поясни по JPA. Например есть связь manytomay. Как сделать лучше и ПОЧЕМУ: 1. получить коллекцию объектов нужной стороны. Достать из них через форич через геттер каждого объекта нужную колумн(поле объекта). 2. Написать запрос @Query, который будет возвращать уже нужные поля объектов и возвращать коллекцию.
Первый способ через джаву, второй через ДБ. Что быстрее выполниться? Лучше грузить ДБ запросами или сервак логикой?
>>1291093 Неплохо его накрыло. Но, как я могу заметить, кроме его нытья насчет нечитабельности такого парсинга, никаких аргументов против этого нет. Так что почему бы и не парсить так, если уж хочется.
>>1291097 Если ты message-driven бины используешь, как они в этом случае должны очередь сообщений прослушивать, крутясь в EJB-контейнере? Реализация EJB эту магию скрывает внутри себя: ты создаёшь на сервере JMS Queue, и его же указываешь в @MessageDriven аннотации бина. Можно ли в нём внешнюю очередь указать? В стандартном EJB нет пруфани, если я неправ.
Возможно, в каких-то реализациях такую возможность и добавили, но это уже по-любому специфичное для конкретного сервера расширение стандарта, то есть если вдруг тебе по каким-то причинам пришлось пересесть на другой сервак, есть шанс лососнуть тунца.
Сап, двач. Поясните за 5 принципов SOLID. Нужно по два примера(хорошего и плохого) использования принципа. До лекции осталось 15 мин, мужское гей-братство, помогите!..
Если метод фейлиться, стоит возварщать эксепшен или нулл? Например метод должен возвращать объект || или булевое значение в случае, если такой объект не существует.
>>1291186 Имхо, а я нубас Зависит от задачи. Исключения нужны, когда программа дальше не может полноценно работать. Если нулл не сломает твою прогу - возвращай его
>>1291192 >Каштомых эксепшонов Такое тоже практикуется. А вообще даже в каркасе коллекций есть методы типа remove() и poll() . Один кидает эксепшн, другой - возвращает нулл, если список пуст. Так что и впрямь от задачи зависит.
>>1291187 Не, ну а чо. Как будто на лекции дают то, чего нет в методичке. Хз, зачем вообще их посещать, если можно самому все изучить быстрее. Хотя может у вас в шараге и впрямь есть смысл ходить на лекции, не знаю.
>>1291203 М е т о д и ч к а. Смысл переписывать конспекты, если их не проверяют (не проверяют ведь?), а все необходимое для подготовки уже написано за тебя в методичке?
>>1291209 >не проверяют ведь? Оо, еще как проверяют, а после проверки дырявят гвоздём. Без полного конспекта недопуск и ебись как хочешь. Как говориться, не можешь — научим, не хочешь — заставим. Конеш, не по всем предметам так, но по многим.
>>1291199 Смотря какая методичка. У нас жутко формализованные, просто пиздец, как будто лицензионное соглашение читаешь. А препод может на простом языке объяснить эту же тему и сказать, что в методичке суть, а что - вода для презентабельности/просто для галочки. Кроме того можно сразу вопрос задать, если не всек что-то, преподы, если сами понимают тему, обычно с удовольствием отвечают на вопросы
>>1291214 >>1291229 Похоже, что в моей шараге просто рай, раз ничего такого нет, либо в минимальном объеме. Оценивают знания на самом экзамене, а не ебут конспектами, ибо какая разница, как ты получаешь знания, если в итоге они у тебя есть? Не понимаю этого подхода с механическим переписыванием лекций.
>>1291186 > Если метод фейлиться, стоит возварщать эксепшен или нулл? Видел очень хорошую речь на конференции по C++ по этому поводу. null как и optional плохи тем, что ты не знаешь почему зафейлился твой метод. В жаве null ещё и плох тем, что он никак не выделяется, поскольку все ссылочные типы могут быть null и зачастую это не является ошибкой.
Можно, конечно, возвращать самодельный discriminated union (который в жаве можно имитировать несколькими классами с наследованием), который будет хранить и ошибку и результат, но сомневаюсь что это будет быстрее эксепшонов. Благо VM эксепшоны очень хорошо оптимизирует.
> в случае, если такой объект не существует. В таком случае optional идеален. В конце концов тут ведь ошибки нет, ты просто указываешь, что объект не найден. null плохо использовать потому, что объект может быть найден и равен null.
>>1291192 > Каштомых экспшенов Я такое пишу только если эксепшон кидается самому пользователю API. В противном случае (если эксепшон ловится внутри самой программы и никак пользователю не виден) в 90% случаев хватает IllegalStateException (если программа находится в таком состоянии, что выполнить метод невозможно) и IllegalArgumentException (если переданный аргумент имеет неправильно значение). При конструировании передаю message, который затем логгируется.
>>1291257 Спасибо. Наверно остановлюсь на эксепшенах. К этому и склонялся. Потому что да, если метод вернул нуль ну блять ну нуль и нуль хуй его знает почему.
Ебучий MySQL, как же горит с него. Почему нельзя было добавить чертов EXCEPT в свою реализацию? Нахуя все оставлять на гребаные джойны? Сижу ебусь теперь с этим, ведь в моем случае костыли на джойнах не помогают.
>>1291186 Иногда используют оба этих подхода, даже в одном методе. Например InputStream.read() - возвращает -1 если дошли до конца потока и бросает IOexception. Просто это семантически разные вещи.
Конец потока это ожидаемое состояние, все потоки рано или поздно закончатся. IOexception это исключительная ситуация - в идеальном мире ее быть не должно.
Применительно к твоему случаю - поиск может не найти объект - это штатная ситуация (как правило). Поискать не удалось по каким-то причинам - это нештатная ситуация.
>>1291523 Тому що это разные подходы для того чтобы сделать одно и то же. Но в жаве уже есть эксепшоны, а значит для того чтобы использовать тип-сумму (да ещё и написанную с использованием ООП-костылей) должны быть какие-нибудь преимущества у него. Вот например в C++ хотят ввести expected, потому что он может быть быстрее выброса эксепшонов. В жаве такого не будет, поскольку VM эксепшоны неплохо оптимизирует.
>>1287973 (OP) Балуюсь тут с джавой и вот на что наткнулся:
https://ideone.com/RJNQr6 Если у переменной num тип int, то она может принять верхнее значение диапазона в 2147483647. Если поставить тип Integer, то вылезает ошибка.
Я не понимаю этого! Ведь Integer- это просто обертка для примитивного типа! Какой у неё тогда вообще диапазон?
>>1291552 Лол, исчезла. Но так, на будущее: я правильно понимаю, что у классов-оберток ровно тот же самый диапазон, что и у примитивов?
Алсо, а как элегантно можно решить вопрос ввода числа, чтобы пользователь мог ввести число любой длинны? Или это вообще невозможно, и мой максимум - это long ?
>>1291553 > Алсо, а как элегантно можно решить вопрос ввода числа, чтобы пользователь мог ввести число любой длинны? Если совсем любой, то BigInteger (если целое) или BigDecimal (если дробное), но операции с ними будут медленней чем со стандартными int, long, double, float. Вот например твой код с BigInteger: https://ideone.com/N4DdGK
>>1291553 >я правильно понимаю, что у классов-оберток ровно тот же самый диапазон, что и у примитивов Да. Integer.MAX_VALUE и Integer.MIN_VALUE в помощь. >как элегантно можно решить вопрос ввода числа, чтобы пользователь мог ввести число любой длинны? BigInteger, BigDecimal
А вообще кончай байтодрочить, жаба предназначенная для ловли асинхронных колбеков через рекурсию в бинах.
>>1291557 > через рекурсию в бинах > рекурсию Но зачем нужна рекурсия, если есть божественные императивные циклы? Фу, со своей функциональщиной всю жавку портите.
>>1291560 > Я ещё учусь и вряд ли сейчас напишу что-то, не вызывающее слабительный эффект. Так это наоборот самый крутой скилл. Осталось подучить шпринг и можно вкатываться в ынтерпрайз.
>>1291130 А это стандартное поведение для всех EJB-контейнеров? Да нихуя!
Маппинг JNDI-ресурсов по факту в каждом сервере свой, и все реализации нихуя не совместимы между собой, так что привязавшись к какому-нибудь WildFly, ты уже от него никуда не денешься.
Можете привести наглядный пример использования хешмапа против списка? Я как-то за все время говнокодинга на уровне 1 класса так ни разу и не попал на необходимость использования первого.
>>1291845 Например, есть у тебя список пользователей. У каждого уникальный логин, по которому тебе нужно осуществлять поиск. Вот и будет у тебя HashMap<String, User>.
>>1291845 >наглядный пример использования хешмапа против списка? Вот недавно нужно было определить наиболее часто встречающийся объект в коллекции. Попробуй реализовать такой алгоритм на списках, а потом на хэшмап, почувствуешь разницу.
>>1291881 Хотя не, вру. Можно использовать Map<T, int>.
А вообще хэшмапы используются в качестве кэша. Хотя что смешно, если элементов меньше 10-15 зачастую лист оказывается быстрее, поскольку перебор занимает меньше времени чем хэширование.
>>1291879 Что мне мешает контейнс для листа применить? В чем хешмап проще? >>1291879 Можешь по хешмапу примерный алгоритм накидать, в листе я понимаю как сделать, как именно методы хешмапа использовать отлично от логики реализации в листе - не знаю с ходу.
>>1291890 >Что мне мешает контейнс для листа применить Почитай, как устроены разные коллекции, интересная тема. В хэш-мапе используется хэширование, что позволяет проверять равенство объектов, сравнивая числа, а не через жирный equals(), как в случае с методом contains() списка.
>>1291890 Хэшмап быстрее при большом количестве элементов в коллекции (когда хэширование становится быстрее чем перебор). Хотя например для строк есть ещё более быстрые коллекции, например, trie.
>>1291911 И да, там не O(1), а O(k), где k зависит от количества bucket'ов, которые в свою очередь зависят от количества элементов (хотя зависит от того каким образом был сделан hash-map, например в мультипоточных хэш-мапах bucket'ы имеют меньший размер чтобы меньше блокировать элементов при записи, однако получение элемента становится чуть медленней).
>>1291922 Да там ничего сложного нет. Представь List, где хранятся пары хэш->значение. При попытке получения элемента ты высчитываешь хэш ключа, перебираешь List сверяя все хэши, если найдено получаешь значение, которое представляет из себя LinkedList со всеми данными, у которых одинаковый хэш. После чего проходишь по этому LinkedList уже сверяя сам ключ и оттуда выбираешь совпавший элемент. Это самый простой вариант. Если куча оптимизаций, где например вместо LinkedList используется дерево или вместо массива с хэшами используются другие коллекции, но суть остаётся такой же.
>>1291928 У тебя детектор сломался. Я не тот анон, которому ты предлагал решить задачку на частоту повторов элементов. Вот я >>1291911 и я хочу больше узнать про мэпы и деревья.
>>1292056 Только проверять и вызвать исключение. Но, исключение в конструкторе - это не очень хорошо.
Можно вообще не использовать (публичный) конструктор. А использовать factory/билдер, и заставить клиента передавать строки по отдельности, с говорящими именами методов. Это если проблема в опечатках в коде, например.
MyClass o = MyClass.withFirstString("Ololo").andSecond("LoL").create();
>>1292058 >использовать factory/билдер Хорошее решение жаль я не додумался до него лол этим утром. Сегодня на собеседовании про исключения вспомнил, но начал сомневаться можно ли их к конструктору прикрутить или нет.
>>1291849 var filteredList = users.stream().filter(user -> user.getUsername().equals("VasyanNagibator2005")).collect(Collectors.toList()); Ну и нах мне твоя мапа??
>>1292094 Так как ты никто делать не будет. Будут делать запросы к базе данных, а для поля имени сделают индекс, который по сути и есть ассоциативный массив (правда в зависимости от типа индекса он может быть как хэш-мапом, так и какой-нибудь разновидностью дерева).
>>1292097 Хотя да, жавы это не касается. Ведь в ней все коллекции хранят ссылки, а не значения, а значит кэш тут никак не поможет. Остаётся ждать пока доделают value types и reified generics.
>>1292099 >Остаётся ждать пока доделают value types и reified generics. Сударь видимо не в курсе, во что превратился Project Valhalla ради совместимости. Я бы на твоём месте не ждал ничего.
>>1292118 И во что он превратился? Если будет возможность создать ValueList<T>, где внутри массива будут зраниться значения (а не ссылки как сейчас), то всё что я написал будет работать, а всё остальное не имеет значения.
Но, если коротко, то основная, на мой взгляд, идея - это то, что всё является значением. Т.е. в программе нет "команд", а есть различные трансформации значений с помощью чистых функций. Например, вместо того, чтобы выбросить исключение, функция возвращает определённое значение.
>>1292304 Это не другие правила. Это искусственное ограничение, снять которое в том числе и призван project valhalla. Ты мне напоминаешь ватников с их "никогда хорошо не жили, неча и начинать" и "диды так не писали и ты не будешь".
>>1292307 > ватников с их "никогда хорошо не жили, неча и начинать" Лол. Суть ватников несколько иная, но не думаю, что сейчас уместно было бы это обсуждать.
На любом языке нужно писать идеоматический код. Играть по правилам. А не лезть в чужой монастырь со своим уставом (что есть признак непрофессионализма). Смысл в этом.
>>1292312 > Играть по правилам. Ещё раз. Это не правила, это ограничение. В первую очередь ограничение условленное изначально кривыми генериками со стиранием типов. Сейчас хотят сделать структуры и нормальные генерики для них, а значит станет возможным и их специализация. Ты какой-то странный. Тебе говорят, что в язык добавляют новые фичи, а ты пишешь что они, это самое, нарушают правила. Может у тебя var тоже нарушает правила? Диды ведь так не писали. А в java 12 вообще столько нарушений завезли:
>>1292320 > паттерн матчинг Хотя не, вру. Это http://openjdk.java.net/jeps/305 а завезли только его подмножество. Конечно, нарушение правил есть, но можно этому скоту Brian Goetz, уже выдать не смертную казнь, а только пожизненое заключение за посягательство на швитые правила.
>>1292019 анон >>1292311 поясняет >Это тоже спринг. mvc это не спринг блять загугли, малыш >MVC - это "классический"... загугли если не умеешь то mvc это паттерн согласно которому код принято разделять на back и front части то бишь клиентскую часть и серверную >html создаётся на сервере. ??? ты по http реквесту строкой отсылаешь хтмл а браузер уже рендерит >сервере rest веб-сервисы rest это архитектурный стиль основанный на концепции ресурсов он не мешает тебе его с mvc применять
>>1292331 Малыш, слово "контекст" тебе, видимо, пока незнакомо. Для программиста это не очень хорошо, лол.
Речь шла про Spring MVC, про Spring REST сервисы, и про всю остальную многочисленную спринг-хуету. О которой ты, до сегодняшнего дня, даже не слышал, как и о самом спринге.
Алсо, "MVC", "back-front" и "клиент-сервер" - это очень разные вещи. Общего у них разве что сама идея разделения на части.
Сап. Работаю QA в одной быдло конторе и сейчас у нас IT менеджмент стал активно пропихивать Swagger спецификацию, большинство REST API документаций сейчас описывается в этом формате. И вот на меня стали давить чтобы на основе этих спецификаций я написал a framework который будет автоматически генерировать API тесты. Ну к примеру, есть описание POST запроса, типа post /user/create у которого request body: { "username":"user" "state":"active" }
И вот я должен на основании этого написать логику которая будет генерировать тесты типа: - отправь запрос с пустым body и проверь что response code такой-то - отправь запрос с пустым "username" и проверь что response code такой-то - отправь запрос с пустым "state" и проверь что response code такой-то - и т.д и т.п
За основу предложили взять https://github.com/OpenAPITools/openapi-generator/tree/master/modules/openapi-generator который позволяет авто генерировать по одному success тесту на каждый endpoint описаный в swagger спецификации. Мол я должен форкнуть его чтобы он также генерил тесты которые я описал выше. И теперь внимание вопрос, насколько вы считаете это сложная задача? Опыта в программировании у меня всего нихуя, могу писать авто тесты используя существующие фреймворки и поэтому мне эта задача кажется пиздец сложной, но отказатся делать ее мне как то неудобно, боюсь менеджмент посчитает меня лошарой(они все разработчики с большим опытом), мол хули там делать, а если не можешь, тогда возьмём другого QA кто напишет.
Как элегантнее реализовать схему обратной польской? https://pastebin.com/gT7z9sb5 для личной практики Задача такая: На вход поступает строка математического выражения, содержащая - переменные - цифры - унарные функции - бинарные операторы На данный момент есть распознавание для строки, где разные обьекты разделены пробелами, с помощью словаря записаны некоторые константы, с помощью этого же словаря меняются переменные. ~ Стоит ли модифицировать исходную строку при получении с помощью регулярных выражений: между [a-Z]и[+-*)(/] вставлять пробелы для того, чтобы строка была валидной для имеющейся функции
>>1292460 > Алсо, документация на эту хуету оставляет желать, мягко говоря. Та пиздец, сижу вот дебажу уже 3й час. Пока вообще нет идей как там происходит эта генерация. Классы, блядь, по 1000 строк
Если тебе нужно именно RPN, то идея в том, чтобы _вычислять_ результат. Помещая промежуточные результаты на стек.
Если же тебе надо просто прикрутить возможность вычисления строковых выражений, то лучше использовать Groovy или даже JEXL, и просто вычислять нормальные выражения, безо всякого RPN.
Анон, помогай, плыву пиздец. Есть ArrayList<boolean[]> field - игровое поле, и есть метод update. Каждый раз при вызове update() первый элемент убирается и происходит сдвиг всего массива, после чего на освободившееся место ставится новый массив.
[CODE]for (int i = 0; i < height - 2; i++) getField().set(i, getField().get(i + 1)); getField().set(height - 1, new boolean[width]);[/CODE]
Это же нихуя не ссылочно происходит? То есть, > field.set(y, field.get(y+1)); скопирует массив, и в итоге всё будет засрано массивами? Если нет, то заебись, если да, то как это сделать правильно?
>>1292527 > нахуя массивы в списке? Потому что изначально это был именно что boolean[][], и когда я делал так: >field[y] = field[y+1]; - Idea мне это дело подчеркнула с комментарием "ага копируеш". Собственно я и сам знаю то, что ты написал, но этот инцидент вынудил засомневаться.
>>1292535 Алсо, какая длина массивов второго уровня? Можно же вместо них использовать битовые поля в long (если 64 колонки тебе хватит). Байтоёбить, так по хардкору.
>>1292535 Всё, спасибо, успокоил, про arraycopy она и писала. Всё время дрочусь с этими ссылочными типами, а тут массив в массиве да ещё и на джаве, которую я не очень хорошо знаю.
>>1292538 10. Думал об этом, но опять-таки засомневался в своих знаниях, так что решил сначала написать как-то, а потом допилить. Так что ещё раз спасибо за подсказку, откуда подступиться.
>>1292570 Конфиг-то есть? Как ты думаешь спринг создаст репозиторий? Ты или должен в классе помеченном аннотацией @Configuration пометить какой-то метод возвращающий UserRepository аннотацией @Bean. Если есть спринг дата можно написать интерфейс расширяющий JpaRepository/CrudRepository, добавить нужных методов и пометить класс-входную тчоку (где main) аннотацией @EnableJpaRepositories, и тогда оно само создаст реализации репозиториев.
>>1292429 Я не до конца понимаю, и ты мне кажется тоже, что от тебя хотят? Чтоб все тесты за тебя писала машина? Или просто сгенирировать java-клиент по swagger-спецификации, который ты будешь использовать в тестах?
Попробовал посмотреть, что такое этот ваш сваггер (2 минуты, буквально). Какая-то хуйня. Зачем подсаживаться на какой-то мутный проприетарный инструмент?
Я, вообще, не занимаюсь такими вещами, но недавно пришлось иметь дело с SoapUI (тоже SmartBear). Лютая хуета, совершенно не юзабельна, делали какие-то дегенераты.
И вот, те же самые дегенераты делают сваггер. Нахуй он нужен?
>>1292586 Чтобы тесты генерировались автоматически. Предположим что у нас в спецификации есть request body у которого есть атрибут username со следующими параметрами:
Type: Int Min length: 2 Max length: 12
То мы на основании этого должны сгенерировать, к примеру, след тесты: - Запрос в котором username будет String - Запрос в котором длина username будет Min length - 1 - Запрос в котором длина username будет Max length + 1 - и т.п
>>1292602 Он нужен что бы описать, добавить документацию, наладить контракты передаваемых данных, а потом сгенерировать имплементацию, первая часть работает, а на вторую я слышал все плюются, в итоге пользуются первой его частью, а имплементацию делают сами или другими инстурментами.
Захотел тут в функциональном программировании в Жаве разобраться. Шло вроде нормально, разобрался с предикатами, стримами, но блять наткнулся на эту задачу и второй день как дебил.
Там в комментах даже бабы ее решили чувствую себя каким-то неполноценнымю
Аноны, мне тут стало интересно, а как обстоят дела с зп инженеров за границей? Ну там хардкорных разработчиков электронных схем, разработчиков каких-нибудь двигателей и прочего. А то в России таким специалистам платят меньше, чем в айти, при этом по-моему порог вхождения там гораздо выше. Странная ситуация.
линупс аноны, помогите с томкатом, плез. Пытаюсь запустить сервер, выдает >java.io.FileNotFoundException: /opt/tomcat/webapps/manager/META-INF/context.xml (Отказано в доступе) судя по тому, что я нашел в гуголе, я хуево права доступа (не)настроил. пикрил не работает, в чем может быть проблема?
>>1293060 Выясни, от имени какого пользователя у тебя запускается tomcat. И дай ему нужные права на директорию. Или наоборот, запускай от имени того пользователя, у которого права есть.
И поставь Midnight Commander (mc), чтобы было попроще всё это делать.
>>1293076 если я правильно понимаю, он запускается от root'а, а у него вроде бы есть все права. Забыл уточнить, в консоли он прекрасно работает вроде, а вот из intellij не хочет. Как узнать от имени кого идея запускает томкат? https://pastebin.com/N2Q8JMXr
>>1293114 А, вижу, ты уже так делал. И что, когда через идею, то его не видно в ps? Если так, то он запускается от твоего имени, как идея. Добавь себя в нужную группу.
>>1293115 у меня проблема в том, что я не знаю, какая группа "нужная". судя по гуглам, группа "tomcat", но терминал мне говорит >chgrp: неверная группа: "tomcat"
посоны, какие мои шансы устроиться джуном при следующих данных: знание Джава: не расскажу про рефлексию, плаваю в джава 8, не расскажу подробно про канкарент, базовый мультитрединг расскажу: как запускаются потоки, дедлок и рэйс кондишн, волатайл, вэйт, нотифай, джойн, слип и тд, потокобезопасный синглтон напишу по типичным вопросам собеседования задрочен нормально. мавен: расскажу про пом.хмл, репозитории, жизненный цикл клин-билд-сайт, без глубоких подробностей цикла билд(тест, сборка ресурсов, билд, пэкедж, деплой), сгенерю через консоль артифакт, запакую в пакет спринг: расскажу про апликейшн контекст виды, деплоймент дескриптор, аннотации, бины, их жизненный цикл, напишу хеллоуворлд и задеплою на томкат или jboss В принципе расскажу про сервлеты, контейнеры, jsp, сессии, куки, гет, пост, http без погружения в аттрибуты head jdbc: подключу драйвер, установлю коннекшн, создам стэйтмент, пройдусь по резулт сэт, знание sql на уровне объединения, получения итоговых значений и вложенных селектов ооп, солид, знаю простые шаблоны вроде адаптера, декоратора, композита, фасада, синглтона(лэйзи и нет), мвс не работал с гитом вообще. кроме коммит и роллбэк ничего не знаю. алгоритмы и структуры данных: понимаю но не воспроизведу по памяти(узнавание) квиксорт, сортировку вставками, пузырьком напишу. рекурсию напишу, стэки, очереди, массивы, списки расскажу вкратце, бинарное дерево расскажу, красно-черное - нет. из практики пройденный до 35 уровня джавараш.
ну и так по мелочам всяким. xml, xsd, json, хуй знает, один день кажется, что я уже дохуя знаю и нужно пиздовать работать, на следующий день кажется что не знаю нихуя
Джавабоги, какие книги читать чтобы пиздец знать джаву? Чтоб блять прям байткод знать и нюансы компиляции? Чтоб коллеги боялись аж. Все вокруг для новичков, заебало.
https://jsehelper.blogspot.com/2016/01/blog-post_59.html Бля, там реально всю эту хуйню спрашивают? Я вот например на большинство вопросов хуй отвечу, максимум своими словами, но блять это не мешает мне писать код и в принципе знать как всё работает.
>>1293213 А компиляция? Просто все курсы джавы учат "напиши вот так и вжух будет вот так". Потом тебя на собеседовании спрашивают почему такое не компилируется и всё, приехали. Не могу я как то проложить дорожку до самого исполнения на проце, или я должен спеку заучивать для программирования на джаве?
>>1293217 Судя по вопросам, ASM и BCEL тебе смотреть рановато, лол. И ту книжку тоже. Хотя, книжку, всё-таки, посмотри.
>почему такое не компилируется и всё, приехали Не компилироваться может только из за ошибок в коде.
Или синтаксических (это просто, хотя, иногда, не очевидно с первого взгляда). Или логических - использование неверного типа, отсутствующий return, использование неинициализированной переменной, нарушение правил доступа (public/private) и т.п.
Чтобы это видеть - надо знать язык и иметь некоторый опыт программирования. Исполнение на проце тут ни при чём. Спецификацию заучивать не обязательно.
>>1293221 Меня не кинут там в самое пекло, где я жиденько обосрусь? По сути, я же не умею толком писать нормальный код. То, что я на кодварс пишу в 10 строчек некоторые пишут в 3. Я хуй знаю что где и как комментить, бэд практис, пропущу где-нибудь проверку на null или еще какую-нибудь примитивную хуйню.
>>1293226 Возвращается новый инстанс хендлера с определенным методом хендл (который и принимает реквест этот)
>>1293219 Спасибо конечно за советы, но "не компилируется потому что ошибки" это топ, да. Может подскажешь какие нибуд книжки по процессу превращения джава кода в инструкции на проце? Как это всё jit компилируется, бегает крутится?
>>1293231 Я понял, что возвращается RequestHandler, это в определении видно. Мне непонятно, откуда этот сраный параметр (request) появляется и как он передается в эту функцию?
>>1293234 Возвращается анонимный класс хэндлера у которого реализуется метод хендл. Здесь он никак не передается, это лишь сигнатура, скажем так, реализованного метода. Аналог: default RequestHandler setSuccessor(RequestHandler other) { return new RequestHandler() { public Request handle(Request request){ other.handle(this.handle(request)) } }; }
>>1293226 Почему бы тебе не почитать одну из книг, которые я упомянул выше? Порешать примеры оттуда?
В твоём коде метод setSuccessor() возвращает функцию. request - это параметр, который принимает возвращаемая функция. И он, естественно, используется в её теле.
Нюанс тут в том, что при возвращении эта функция кастится к интерфейсу. Т.е. эта функция - это реализация метода handle() этого интерфейса. Т.е. раньше (в Java 7) там было бы: return new RequestHandler {handle(Request request){...}};
Всё это - специфика практического прикладного ФП на джаве. И начинать с такого я бы не советовал.
Найди в интернетах книжку Functional Programming in Java и почитай. Там объяснются именно общие идеи ФП, но с примерами на джаве.
>>1293231 >Как это всё jit компилируется, бегает крутится? Ты странно спрашиваешь странные вопросы.
Внутренняя механика компиляции не имеет никакого отношения к вопросу "почему не компилируется этот код", понимаешь? И, тем более, JIT и т.п.
Джаву для того и придумали, чтобы программист не думал обо всей этой хуете.
Но, если любопытно - читай спецификацию JVM, смотри байткод и т.п. ASM и BCEL, опять же. https://bytecodeviewer.com посмотри. Гуглить ещё можно, например.
>>1293246 >185 страниц, Это MEAP, видимо (до окончательной публикации). Так-то там 476 страниц.
Но, книга охуенна, хотя и не особо легко читается. И читать надо неспеша. Это не та тема, которая поможет быстро найти работу с нуля, например. Это, скорее, про то, как стать лучше, когда ты уже и так неплох.
>>1293248 Я понимаю что механика компиляции не связана с правилами в спецификации. Но мне интересно почему именно такие правила? Просто заучивать факты сложнее, чем если бы ты знал азы, на которых мог строить предположения. Всё равно спасибо.
Столкнулся с со странными примерами кода в SpringInAction 5. Которые ЯВНО не верны. Пример - форма регистрации юзера. А еще автор предлагает учить жава скрипт, лол, В учебнике по жаве.
>>1293728 До компилятора мне далеко, но вот я не вижу проблемы. Нуллпоинтер где выдаёт? Запусти в дебаге и скажи на чём. Просто судя по примеру, есть одна форма и один контроллер, ну и там только один постмаппинг, а потому он будет все посты обрабатывать. Может автор пока не дописал репозиторию?
>>1293744 А куда ты собирался прикручивать валидацию полей? Почему просто не в класс своего User. @NotNull( message = "Ты чмо"); Ну и в листке прописать еррор на это дело.
какие же вы все унылые пидорасы-вкатывальщики со своим унылым спрингом и ее. пидорасы, бесите меня все, как и эта джава ебучая, и вообще программирование в рот ебал
>>1293744 Ты это руками набирал, или копипастил из книги? Зачем?
Есть код на гитхабе, его и компилируй. А в книге - иллюстрации.
Тем не менее, могу сказать, что пятое издание сильно отличается от предыдущих, и не в лучшую сторону. Принципы работы контейнера и т.п. почти не рассматриваются, типа и так всё понятно.
Видимо поэтому Маннинг даёт бесплатно предыдущее издание при покупке пятого, лол.
Т.е., с одной стороны они говорят, что ЕЕ будут убирать, а с другой - ничего взамен. То же и с десктопным GUI (Swing), который весьма востребован в корпоративных приложениях. И в IDE. Оракл охуел.
>>1293822 Во первых, FX - хуета без задач. Я тут уже писал на эту тему раньше, сейчас лень.
Во вторых - его сливают на 2 года раньше, чем Swing. Swing - в 2026-м, а FX - то-ли в 24-м, то-ли в 22-м, или даже раньше. Потому, что Swing реально востребован, в отличие от.
Я лично думаю, что за эти годы появится что-то новое на эту тему. Или Swing проапгрейдят.
Потому, что народ уже порядком подустал от дивного нового мира фронтенда на джаваскрипте. Года с 2016-го начали уставать. А через несколько лет устанут гораздо сильнее.
>>1293802 Я его сравниваю с 4м да. Его читал с год назад. Там и про аспекты и про много много всего базовго. А 5я - ну тип хуярим вот тут так, потом бля тут куска кода нет и мы его вставим в 3-5-15 главе ну и хуй с ним что переписывать все, и все что писалось до этого говно и нинужна. Тесты? Какие тесты. Их там нет. 1-2 попалось базовые за 200 страниц. Сижу ковыряю баелдунга, хули делать.
>>1293839 Куча мелких багов типа непрорисовывания строк в tableView. И хз что с этим делать. Или например под линуксом не получается сделать окно "подождите, выполняется операция". Оно рисует пустое окно. При этом под виндой норм. Отсутствие вменяемого профайлера. Есть какой-то, но онтоже кривой и сырой. Слава богам есть возможность делать формочки через гуй, для идеи есть плагин. Но опять же надо все это потом доделывать руками. Позиционирование элементов относительно друг друга - ебаная магия. Я так и не понял как это должно работать. В свинге гораздо проще и логичнее. У классов куча методов, дублирующих друг друга, и при этом не работающих. И вообще такое ощущение, что этот фх делала какая-то фемка, получившая место по квоте. Уж очень все по-женски нелогично, нет единой философии и бест практис. Ощущение что копаешься в куче налепленного говна
>>1293866 Дело не только в языке. В первую очередь - в HTML (DOM). Он не предназначен для создания динамических UI. Это язык разметки текста.
Но, и в языке, конечно, тоже.
Питон, как и JS - динамически типизирован, и непригоден для больших проектов.
Даже хипстеры-смузихлёбы уже поняли важность статической типизации, и начали переползать с JS на TypeScript. Но, TS - говно по своей сути, чужеродная надстройка над JS.
И даже упоротые питоноёбы начали это понимать - и прикрутили типы в последних версиях питона. Что из этого выйдет - посмотрим. Пока - компилятор/интерптетатор их не обрабатывает, и какой в них толк - не очень понятно.
>>1293854 >Позиционирование элементов относительно друг друга - ебаная магия.
Попробуй MigLayout. Это лучший layout manager на сегодняшний день. Оптимизирован для ручного кодирования, но, поддерживается и в JFormDesigner (только для Swing).
Там есть модуль для FX (и даже для SWT). Сайт у них старый, актуальную версию кода и примеры надо смотреть на гитхабе. На сайте - доки. Основной - White Paper. Есть ещё Getting Started и Cheat Sheet.
>>1293854 Хм, ну ладно, понятно, хотя я пока с багами не сталкивался. А насчет нелогичности - не знаю, по-моему довольно удобно, хотя и действительно не вижу общей философии.
>>1294012 Не "распарсить/сохранить" а десериализация и сериализация.
Суть в том, что с джейсоном ты имеешь дело только в пунктах 1 и 4. Остальное - уже с джава-объектом некоего класса. Чтобы выполнить п. 3 твой класс должен уже иметь эти поля, просто при десериализации в п. 1 они останутся пустыми.
>>1294026 >Надо делать реальный проект. Я сука не могу, слишком много всего из нихуя появляется, просто блять создал проект а там уже 100500 всякого говна налетело.
>>1294024 А запиливаю все примеры из гада. Прям по инструкции, pom.xml я копипастой делаю, остальной код пальцами набираю. На 3-ем примере уже руки помнять что там должно быть и появляются мысли что можно поменять и как кой пед проект запилить из этого. Всё это естественно на гитхаб. По итогу руки пишут код и гитхаб зеленеет. После того как все примеры прочекаю думаю уже вкуривать мануал с самого начала.
>>1294023 > >И да, из готового - Gson. Чем он лучше jackson из спринг бута?
Алсо, как в спринг буте писать информационные сообщения в один лог, а сообщения об ошибках в другой лог? Можно ли в спринге перехватить исключения десериализации джейсона и записать сообщение и сам json в лог ошибок?
>>1294024 У меня в спринге сложности вызывает только написание тестов по сути. Сам спринг как лего, если соблюдать логику слоев и не хуярить репозитории прям в контроллер.
я извиняюсь за вопрос но может быть у кого то есть Шилдт Java. Полное руководство 10-е издание? я найти не могу уже весь интернет облазил желательно на русском
>>1294288 >Хорстман >https://scanlibs.com/java-tom-1-osnovy-10-izd/ у меня он есть я его читаю сейчас просто мне посоветовали именно Шилтда, и где то слышал что Хорстман больше как справочник или между ними в целом всё равно что читать?
>>1293902 Если я правильно понял вопрос Ты можешь сделать @Autowired над ,скажем, листом, и тогда спринг соберет все бины типа этого листа собвстенно в этот лист. Однако стоит действовать аккуратно, так как спринг версии 3 и ниже попытается инжектнуть собственно готовый лист, а не собирать его из бинов и можно напороться на NPE
>>1294462 Да, это я как раз понял, что чтобы собрать коллекцию из бинов, они должны реализовывать один интерфейс или наследоваться от одного класса. Меня интересует, можно ли сделать так, чтобы в коллекцию собирались все бины с какой-то аннотацией.
Анончики, я тут подучил Java, с ванильной проблем нет - всю хуйню, в том числе треды, функциональщина, дженерики - во всем этом разбираюсь, бодро решаю задачки на https://codingame.com
Вопрос в другом - для трудоустройства мне везде говорят что нужна поебота под названием Spring (и еще Hibernate говорят не будет лишним). А вот тут я вообще не что за хуета и с чем едят.
Пните в нужном направлении - курсы я разные нагуглил, на торрентах и вообще, но хотелось бы проверенное что-нибудь и актуальное, чтобы с практикой (без практики всё забывается за неделю).
>>1294466 Ну чисто теоретически ты можешь сделать свой кастомный BeanPostProcessor, который будет после инициализации бина, через рефлексию проверять если у бина есть твоя аннотация, класть бин в коллекцию. Как это реализовать? Собственно хуй его знает. Сам в такие кишки не лез, возможно вообще спизданул не то. Если разберешься что к чему, то напиши, а то интересно
>>1294466 Так у тебя бин должен быть коллекцией или коллекция из бинов? Если и то и другое: >@Bean("ListBeanName") >@Autowired >public List<Clazz> getMotherFuckingBean(Clazz beanX, Clazz beanY, ..., Clazz beanZ) { >List<Clazz> res = new ArrayList<>(); >res.add(beanX); >res.add(beanY); >//... >res.add(beanZ); >return res; >}
Посоны, thinking in java сильно устарела? Просто очень зашел стиль. Я сам не совсем с нуля, знаю, что такое структуры данных, классы, наследование, полиморфизм, интерфейсы, параметризованные типы, короче, на уровне первого курса. То есть, это охуенно, когда книжка не совсем с нуля и сразу начинает давать специфику джавы. Только вот 2007 год смущае немного, там, небось, много воды утекло с тех пор.
>>1294481 Очень много воды утекло. Ни дженериков, ни функционального программирования, ни фреймворков. Если не с нуля - лучше фреймворки изучай, толку больше будет. Там же и стиль посмотришь.
>>1294288 Прочитал и Шилдта и Хорстмана. Сейчас перечитываю по второму кругу некоторые моменты спустя полгода. Так вот Шилдт лично мне заходит на порядок легче.
Господа, кто-нибудь пытался пристроить ассемблерные вставки в жабу? И если да, то как это можно устроить путем наименьшей ебли? Надеюсь, что jni через какие нибудь плюсы, это не наименьшая ебля
Q: Поздно ли вкатываться в айти в 20/30/40/100 лет?
А: Нет, не поздно.
Q: Cобираюсь учить джаву по 2/5/20 часов в день. За сколько дней я выучу достаточно, чтобы зарабатывать фрилансом?
A: На джаве фриланса нет. Хочешь фрилансить — дуй в ПХП/раби/1С тред.
Q: Хули все книги на английском?
A: Без английского ты не нужен и можешь смело идти нахуй. Ну или в 1С-тред.
Q: Что скажете за джавараш?
Если вкатываешься с нуля, то можешь написать пару "хеллоу ворлдов" до 10 лвла. Дальше курс рассчитан на ленивых и не умеющих читать книжки людей. Количество говнокода зашкаливает, годных задачек пару штук на весь курс. В любом случае решать тебе.
https://github.com/qqqlll/Java-Thread/wiki