Что такое Java? Java - язык программирования с классами (aka объектно ориентированный), где нужно явно указывать тип объявляемых переменных (aka со строгой типизацией). Заебись. А что ещё делает Java лучшим языком программирования? - На Java написано столько всего, что любая твоя невообразимая идея уже существует в виде библиотеки, которую можно скочать и юзать - Java - мультипарадигменный язык, тут можно писать в любом стиле, который тебе вздумается, даже к памяти можно получить доступ через Unsafe, но, при этом спроектирован язык для того, чтобы на нём писали в ОО-стиле. - От прошлого пункта плавно перешли к отличной проработке языка - язык с самого начала задумывался как язык для ООП и многопоточности, благодаря чему писать чистокод на Java легче лёгкого! - Java - относительно молодой язык, который до сих пор активно развивается жидами из Oracle, при этом почти неполживо опенсорсно. - Java следует принципу write once во всём. Java никогда не ломает обратную совместимость - твой код, написанный на Java 1.2 будет работать на Java 18 - и не зависит от платформы, являя из себя единственный полностью кроссплатформенный язык с кроссплатформенной экосистемой (если не считать языков-паразитов на JVM).
Оп, ты читал книгу с первого пика? Как тебе? Я просто The Definitive Guide v2 пока даже не дочитал(7 глав прочел). Хотел сперва их обе прочитать, но тасок с кафкой еще месяца два не будет, начал другие штуки читать. Вот думаю, когда вернусь к кафке какую дочитать? Видел в интернете сравнение, что эффективная лучше первого издания гайда. Но второе издание на год свежее.
>>2458956 Это синоним понятия "слабая типизация". Я вообще о чём: сильная-слабая это условные понятия. Так-то даже в го (петухоланге?) есть неявные касты, но он щитается сильно типизированным, как и питухон (и жаба). А статическая-динамическая не мешает языку быть строго-нестрого типизированным, можно строго типизированный питухон иметь, а можно нестрого типизированную сишку.
>>2459357 >просто нет булевых типов Можно подумать в той версии стандарта, где есть булевы типы так сделать не получится и компилятор выругается если в условие положить что угодно кроме булева. А ещё всё есть воид поинтер и наоборот.
>>2459361 >А разве кустинг к войд поинтер не должен быть явным? Тут я немного про другое хотел сказать: в сишке помимо прочего и типизация ещё и не совсем статическая, ибо через войд поинтеры можно "терять" типы и кастовать всё во всё.
Вот тот сахар, который есть в Groovy - это то, что надо. И то даже, местами, лишнее.
Масса туповатых анальников не понимает простой вещи - джава - это простой язык. С простым синтаксисом. Это позволяет человеку читать его на уровне бессознательного. И это позволяет делать очень хорошие IDE, анализаторы и т.п. - инструментальная поддержка у джавы - на порядок лучше, чем у любого другого языка.
Подскажите бесплатный сервер, где я смогу хранить файлы .minecraft. То есть, что бы их можно было скачать с сервера на пк через класс URL. Раньше помогал бесплатный Ucoz, но недавно оттуда стало невозможно выкачивать файлы и я хз почему :с Может хостинг кто знает бесплатный для этого ?
>>2459856 По существу вопросов не имею, петухон это как раз язык для гнилых задач и копроработы - спам и прочие помехи людям. Только вот называть петухон надо правильно. Петухон - петухон. Питон - животное.
>>2459845 >парсить профили на фейсбуке Python однозначно. Зачем что-либо еще, когда для парсинга питон является де факто стандартом? На жабе конечно есть jsoup, но нахуя целую жабу для такого тащить?
>>2459910 Я другой анон, но мне тоже хочется написать парсилки для личных нужд. Пока забивал на это дело. Ну jsoup я немного ковырял. На жабе уже год работаю. А питон я в глаза видел раз 5, почти не знаю его синтаксис. Мне все равно брать питон?
>>2459919 Ну для личных нужд можешь на чем угодно писать, jsoup вполне позволяет это делать на жабе, никто не запрещает. Просто если делать кому-то парсер под заказ, то лучше на питухоне, просто потому что так принято.
>>2459938 jsoup жабы и beautifulsoup у питона по сути одно и то же с одинаковым функционалом, jsoup - это порт bs с питона на жабу. А кроме этого я ничего не использовал, увы
>>2460096 Можно говорить что угодно, но перл умер, и ничего с этим не сделать. Для говноскриптов на 50 строчек для парсинга, переименовывания файлов и других подобных говнозадач надо юзать петухон или жопаскрипт, и все прекрасно обходятся без $_ =~ y/a-z/A-Z/ unless $_ m/q/;
Привет, может кто объяснить нюфагу, можно ли в запросе типо того, что на пике как-то получить ip-клиент или инфу о времени и дате запроса? Заранее спасибо.
>>2460309 Если это SpringMVC - добавь в параметры метода HttpServletRequest, тебе спринг туда подсунет сервлет реквест, а потом в методе из него достань все что тебе нужно - ип, дату/время запроса, урл, хедеры - не помню точно что в нем есть, но если там чего то нет - значит этого нет нигде.
В webflux вместо HttpServletRequest - ServerWebExchange.
>>инфу о времени и дате запроса? А еще ты можешь просто записать время вызова метода через LocalDAteTime.now() и не мучать сервлеты.
>>2460193 Ты так говоришь "знать", будто от тебя требуют учить два новых языка программирования и фреймворки к ним, хотя это всего лишь кафка и грпц. Они, конечно не везде используются, в нашем легаси вместо кафки IBM MQ, а вместо grpc - SOAP.
Мужчины, как сделать так, чтобы оно при вводе нуля не ВЫВОДИЛО ноль? Я 10 часов сегодня учу Джаву, я устал, но пообщел себе, что пока не доделаю эту задачку - отдыхать не пойду. class Main { public static void main(String[] args) { Scanner console = new Scanner(System.in); String str = "qwerty"; int num = 0; while (!str.equals("0")) { str = console.nextLine();
try { num = Integer.parseInt(str);} catch (Exception e) { System.out.println("Invalid user input: " + str); } System.out.println(num*10); } } }
>>2460557 сам допер, я гений Java import java.util.Scanner;
class Main { public static void main(String[] args) { Scanner console = new Scanner(System.in); String str = "qwerty"; int num = 0; while (!str.equals("0")) { str = console.nextLine();
try { num = Integer.parseInt(str); } catch (Exception e) { System.out.println("Invalid user input: " + str); continue; } if (num != 0) { System.out.println(num * 10); } } } }
>>2460557 Не поняла, у тебя же условие цикла проверяется уже после вывода, очевидно же, что 0 выведется. Можешь переписать цикл так: while (!str.equals("0")) { try { final String str = console.nextLine(); final int num = Integer.parseInt(str); if (str.equals("0")) { break; } System.out.println(num*10); } catch (Exception e) { System.out.println("Invalid user input: " + str); } }
>>2460967 > А в методах когда что то происходит нужно писать info ? Например метод закачивает файлы, то я это логирую через info ? Нужно знать меру. В этом случае имеет смысл, например, если сервер может быть недоступен, и чтобы явно сохранить, что удалось загрузить, а что не удалось.
После изучения алгоритмов и структур данных у меня сильно расширилось понимание java, но свои алгоритмы я писать не могу (или решать чужие) :с Это нормально ?
>>2461214 Ломает обратную совместимость, но не так сильно, как некоторые языки. Если в PHP при обновлении вообще всё сломается назуй, то в жабе можно потратить немного времени на переход с минимальными правками в коде.
Во всех. Логируй все и везде. В продовом рантайме внятные логи --- одна из немногих опций понять, что за хуйня произошла.
Но чтобы не просадить перформанс, логируй под разными логгинг-уровнями, держа включенным по умолчанию только info. Оборачивай низкоуровневые логи (debug, trace) в проверки isDebug/TraceEnabled, чтобы не собирать лишних данных в рантайне когда debug/trace отключен.
>>2461301 ПИШЕШЬ ЛОГИ НА КАЖДЫЙ ПУК @ ПРОД УПАЛ И НЕ ПОДНИМАЕТСЯ @ ЛЕЗЕШЬ В ЛОГИ @ ОШИБОК НЕТ @ 3 ДНЯ ПЕРЕБИРАЕШЬ КАЖДУЮ СТРОЧКУ @ УЖЕ ДУМАЕШЬ КАК НОВУЮ РАБОТУ ИСКАТЬ @ СЛУЧАЙНО ЗАМЕЧАЕШЬ ОТСУТСВИЕ СВОБОДНОГО МЕСТА НА ДИСКЕ @ БАЗА С ЛОГАМИ ПЕРЕПОЛНИЛАСЬ И УРОНИЛА ПРОД
>>2461301 Это же пиздец сколько данных. У меня вот где-то 300к юзеров и это пиздец, дебаг логи можно включать только на короткое время, а если в нормально режиме писать мало, то логи становятся бессмысленными. Соответственно, держу включенным только info с короткими сообщениями и traceid. А всё, что можно, сохраняю в базу, соответственно, по базе можно понять, какая сущность с какой связана и когда была обновлена, дальше уже обычно можно по коду догадаться, что пошло не так. мимокрокодил
>>2461519 Собственно, для себя сделал такой вывод, что подробные дебаг-логи хороши только для тестов, а в бою они всё равно никогда не будут подробными, ты замаешься столько писать и, главное, хранить. Поэтому внятная бд, которая сама своей структурой отвечает не только "что", но и "как" это чуть ли не единственное решение.
Как максимально тупой пример, если у тебя один юзер может позвать другого, то есть у тебя есть сущности юзер и реферальная ссылка, то у тебя не просто должен быть fk со ссылки на владельца, но также и у приглашённого должен быть fk на ссылку, по которой он зарегистрировался. А может даже в отдельной таблице отдельно набор ссылок, по которым он пытался зарегистрироваться, с primary key по email. Тогда ты всегда сможешь глядя на таблицу понять, почему один Петя стал другом Васи, а не Сережи, по какой ссылке и когда это произошло. И всё это без логов.
>>2460927 У нас в рабочем проекте есть логи, но на них не так сильно полагаются, т.к. есть такая хуйня, как аудит операций - отдельная гигантская таблица, куда пишутся все действия пользователей, типа "Зашёл в систему и получил такую-то сессию", "Запустил отчёт", "Удалил запись", "Откатил статус". Аудит запилен в первую очередь для безопасников, хотя неплохо помогает и для исследования непонятных багов с прода, но он занимает пиздец дохуя места, около четверти всей БД. Местами ради аудита приходится класть на производительность, например, даже если работаешь только с ID, для журналирования надо вытащить по ID доп. инфу из базы лишним запросом, вроде наименования клиента.
>>2458869 (OP) > - На Java написано столько всего, что любая твоя невообразимая идея уже существует в виде библиотеки, которую можно скочать и юзать Аналог itertools из питона есть?
>>2461214 Кабаноиды, сэр. Кабан не понимает "кодить сложно на старом говне, общие траты в перспективе увеличиваются", кабан понимает только "РАБОТАЕТ? НАХУЙ ЧЁ ТО ТРОГАТЬ И ОБНОВЛЯТЬ??? У НАС КРИЗИС БЛЯДЬ!!!!!!!!!"
2298 год. Вы лежите при смерти. К вам приходит Дьявол и предлагает сделку. Вместо смерти вы отправляетесь в элитную область ада специально для программистов. Вы будете там писать код вечно. Карьерный рост имеется, но новые должности появляются пропорционально вашему поднятию по ним. Согласны? В случае отказа ваше сознание умрёт.
Еще вопрос: Задача требует от меня чтобы я создал двумерный массив с n строк и m столбцов, при этом чтобы количество столбцов для каждой строки различалось и вводилось с клавиатуры. Вроде задача простая, но код почему-то не принимает.
>>2461892 Это ебучий задачник джава раш(да-да, я знаю, что он дно, я учусь не по нему, просто задачки решил порешать), тут result не надо объявлять. Вы мне скажите - если я все норм сделал, то я погляжу правильный ответ, иногда эта херня безбожно тупит и требует КАКОГО-ТО ОПРЕДЕЛЕННОГО решения.
Подглядел "правильное решение", зачем они используют метод parseInt? У нас же тут кругом целочисленные значения: массивы int, числа читаются int, зачем такие заморочки?
>>2461891 >>2461909 За последние 2 года я массив использовал ... не могу вспомнить даже когда. Есть же ArrayList, есть же StreamApi, нахуя ты это говно мамонта юзаешь? И даже не foreeachloop или как там, i++, блядь, ну такого легаси уже нет нигде, даже 8 это уже легаси, на всех вакансиях минимум 11. Эти знания тебе не пригодятся нигде, иди лучше про мейби, мапредус, флатмап почитай.
Как лучше организовать валидацию со сложной логикой? Например, моя дто, которая летит с фронта, содержит список элементов на добавление, причем id у них уже заранее проставлены. Требуется проверить, что элементов с такими id еще нет в бд, и что двух одинаковых айдишников нет в дто. Просто ебануть сервис валидации, где я буду это все ручками проверять, и этот сервис вызывать в контроллере сразу после того как дто получена (или же лучше вызывать этот сервис валидации в других сервисах?) В общем хуй знает как лучше
>>2462188 Любая нетривиальная логика чуть сложнее конвертеров должна быть в сервисах. В контроллере вызываешь конвертер во внутренний объект, его передаёшь в сервис и там уже проводишь валидацию.
>>2462200 То есть конвертацию DTO -> Entity нужно прямо в контроллере делать? У меня логика очень простая (делаю тестовое), дто можно напрямую в ентити сконвертить, но только если само дто корректное.
>>2462220 > дто можно напрямую в ентити сконвертить, но только если само дто корректное. Странная задача. Контроллеры должны быть тупыми и ничего не знать о правильности ввода, кроме совсем прямых случаев, к которым уж точно не относится проверка id на наличие в базе. Сервис наоборот должен быть умным, но ничего не знать о внешнем мире, в частности, не знать о существовании DTO, т.к. они могут приходить из разных видов источников, и обычно на каждый такой источник по своему набору DTO. Но если в тестовом так требуется, прилётся забить и делать как скажут.
>>2462227 В моем понимании сервис обычно принимает на вход дто. Типо если мы условно хотим PersonDTO полученную в контроллере положить в таблицу БД tb_person, то мы должны эту dto отправить в сервис, в сервисе вызовется маппер/другой сервис, откуда к нам уже придет ентити и эту энтити мы кладем в БД.
То есть цепочка PersonDTO->PersonEntity->db Какие объекты должны принимать сервисы, раз они не должны знать о существовании дто? Дополнительный слой между дто и энтити?
>>2462188 Уникальность в базе - это не валидация. Делаешь или предварительно запрос к репошке в сервисе или в базе делаешь ограничение уникальности. Потом бросаешь исключение/оборачиваешь исключение драйвера базы и в адвайсе отдаешь, как 422. Я так делаю, предпочитаю через констрейнты. А проверка уникальности внутри одной дто делается кастомным бин валидатором для дтошки. Там уже возвращаешь 400.
>>2462188 >>Требуется проверить, что элементов с такими id еще нет в бд, я б сервисе это проверял, ты все равно без запроса в бд об этом не узнаешь, а значит в контроле это тащить не надо. >>двух одинаковых айдишников нет в дто. ну самое банальное list.size() == Set.copyOf(list).size(). Если они там раскиданы по разным полям - ну соберешь через стримы в один, потом проверишь точно также
>>ебануть сервис валидации там проверка в 2 строчки же - запрос в бд с ответом тру/фолс и проверка дублей. Сервис имеет смысл пилить если там действительно какая то йоба с кучей запросов в бд и другие сервисы, свичкейсы и ифелсы. Да и то возможно методом в этом же классе обойтись можно.
Вообще для валидации можешь просто писать свои валидаторы через ConstraintValidator. Например проверку на дубли там можно сделать. А вот если там запросы в бд - только в сервисе, чтоб не размазывать логику по слоям.
>>То есть конвертацию DTO -> Entity нужно прямо в контроллере делать? Лучше в отдельном мапере, который вызывается на уровне сервисов. Открой для себя MapStruct, с ним все просто.
>>2462231 > В моем понимании сервис обычно принимает на вход дто. Типо если мы условно хотим PersonDTO полученную в контроллере положить в таблицу БД tb_person, то мы должны эту dto отправить в сервис, в сервисе вызовется маппер/другой сервис, откуда к нам уже придет ентити и эту энтити мы кладем в БД. Можно и так, тогда будет некий "фасадный" сервис, который будет вызываться только из контроллера, проводить первичную валидацию и конвертацию. > Какие объекты должны принимать сервисы, раз они не должны знать о существовании дто? Дополнительный слой между дто и энтити? Объекты никакие сервисы не принимают, есть только конвертеры, которые преобразуют DTO во внутренние объекты и наоборот.
>>2462244 >Объекты никакие сервисы не принимают Я про то, что методы сервиса могут ДТО принимать. Разве нет? В сервисе PersonService есть метод savePerson(PersonDto personDto), который уже внутри себя вызывает маппер и сохраняет полученное ентити.
>>2462248 быстрый, никакой магии кроме мб самой кодогенерации, почти всегда идут парой мавен плагины ломбок и мапструкт, легко мапить как простые так и сложные поля, в проде почти всегда он
моделмапер сам использовал когда вкатывался и петы писал, с тех пор о нем и не слышал.
>>2462258 Если сложного мапинга нет, то наверное пойдет. А когда там из дто надо достать список объектов, достать из каждого какое то поле и соединить все это в одну строку - мэпстракт куда проще будет. В нем в принципе можно что угодно в поле смапить через отдельный метод.
Сел сегодня порешать немного литкод и какой же это пиздец, эти пидоры че охуели все платным делать?Ебучий автокомомплит теперь за бабки, неуебищный дизайн видимо тоже. Задачки еще по большей части какие-то конченные, самая легкая по итогу за сегодня была хардовая, а на некоторых мидловых сидел по три часа. Кто придумал эту поеботу давать решать на собесах? Как мне это задрочить, чтобы потом на собесе не обосраться? Или единственный вариант проебать еще две недели за самым унылым и бесполезным занятием в моей жизни?
>>2461950 Массив - это говно мамонта? И код циклов надо переписывать с появлением каждого нового сахара в "новых" никому не нужных версиях? Да ты, чувствуется, настоящий синьор.
>>2462332 >>с появлением каждого нового сахара в "новых" никому не нужных версиях? стримы вышли в 8 версии, уже 10 раз можно было все старое говно переписать.
>>2462355 Чувак, стримы сами по себе ничего не улучшают. Если у тебя в старом коде есть цикл for, то переписывать его на стрим не просто бесполезно, а даже вредно - for эффективнее.
Стримы - они не для этого. Вся кодовая база должна быть value oriented (fp-like, если угодно), тогда в этом есть смысл.
И я имел в виду бесполезный сахар в версиях после 8.
>>2462402 В скале есть похожий матчинг case classов, а вообще НИНУЖНО. Синтаксис должен оставаться простым и явным, каким его создали в НАУЧНЫХ лабораториях УЧОНЫЕ. А вот эта вот вся залупень тупо от скучающих первокуров не видавших больших ЗАЛУП. Безумцы открывают ящик пандоры.
Товарищи программисты, изучаю это вашу джаву(сам, читаю книжки, смотрю курсы и решаю задачки), и начинаю уже тихонько изучать перспективы трудоустройства, и насколько понимаю для джунов сейчас полнейшая и тотальнейшая жопа.
Я понял, что выходить на рынок вакансий надо будет с парой готовых проектов. У меня уже есть идеи, так как окунувшись в ИТ я понял какие задачи мои(занимаюсь предпринимательством в данный момент) оно может решать. Идеи такие: интернет магаз с небольшой номенклатурой(буквально 15-20 позиций), с оплатой на сайте, с доставкой всякими сдэками, с админкой, чтобы можно было легко вносить изменения в позиции(цены, фотки, описание). Вторая идея: приложение(или просто сайт) с предзаказом в фастфудной. Типа тоже регаешься, выбираешь позиции, указываешь время и т.д. Вопрос: насколько широко я раскрыл ебало? не треснет? в одного можно такие проекты потянуть в какие-то адекватные сроки? Ясен пень что визуал будет максимально шаблонный и простой, фронт я не изучаю, особо и не планирую.
>>2462482 >окунувшись в ИТ я понял какие задачи мои(занимаюсь >предпринимательством в данный момент) оно может решать. хуево выразился, я и так знал, какие задачи оно может решать, правильнее будет выразиться так - я задумался, а смогу ли я сам решить свои текущие задачи? И опять же я понимаю - что эти задачи должны решать спецы за деньги, так вот я сам хочу стать таким спецом и решать чужие подобные задачи за деньги.
- Правильно ли я понимаю, что все контроллеры должны сами себя мапить на конкретные юрл? Не нашел способа задать какой то аналог роутера, который бы каждому пути, какой то контроллер сопостовлял. аналог джанговского urlpatterns
- Как написать хэндл который бы имел доступ и к реквесту и респонсу? Хочу написать что то вроде такого: func handle(request) -> responce
Чому в отусе так ахуенно объясняют? Смотрю тот знаменитый слитый курс от отуса по спрингу - бля так подробно нигде нет - ни в книгах, ни в других курсах, разве что в доке подробнее но рот ее я ебал читать. Бля отус ахуенен кто еще смотрел тот курс - хуяните свои отзывы, интересно послушать, потому что я пока что еще первую часть заканчиваю
Приветствую, аноны. Появилось несколько вопросов, мб кто на опыте здесь сможет пояснить малышу за жизнь. 1) Может кто-нибудь пояснить за spring cloud? Зачем он нужен, если есть kafka - для общения между микросервисами? Единственное, что заценил - это OpenFeign в вопросе реализации клиентов для стороннего api вместо использования RestTemplate - ов и прочего говнища. Как часто используется на практике? 2) Кто-нибудь может пояснить за необходимость знать Spring Integration и Spring Batch? Spring Integration, насколько я понял, связан с реализацией каких - то EIP паттернов разработки, которые какой-то шиз в своей книжке в 2003 году описал. Насколько важно это всё знать, какова вероятность применения на практике? 3) Какой должен быть уровень знания брокеров сообщений? Допустим, я умею поднять zookeeper и kafka с дефолтными настройками, и через них с дефолтными конфигами пересылать сообщения из одного микросервиса в другой, используя KafkaTemplate на Producer - е и KafkaListener на Consumer-е, думаю, что этих знаний очень мало. Насколько важно знать тонкости настройки Kafka и прочих брокеров? 4) Spring Security - знаю базу. Нужно ли Oauth2 учить? 5) Spring WebFlux, RSocket и тд - надо? 6) Docker. Умею писать ручками Dockerfile для приложения, свзязать его с какой-нибудь бд - шкой с помощью Dockercompose и поднять локально в контейнерах. Что еще нужно? 7) Kubernetes - выглядит как лютый ад, почему то при первом же знакомстве с первого взляда появилась неприязнь. Стоит ли изучать, или понадеяться, что придет девопсер и мне ни разу не придется прикасаться к подобным делам? 8) Jenkins - дело девопса?
>>2462619 > 1) Может кто-нибудь пояснить за spring cloud? Зачем он нужен, если есть kafka - для общения между микросервисами? Единственное, что заценил - это OpenFeign в вопросе реализации клиентов для стороннего api вместо использования RestTemplate - ов и прочего говнища. Как часто используется на практике? Не используется. > 2) Кто-нибудь может пояснить за необходимость знать Spring Integration и Spring Batch? Spring Integration, насколько я понял, связан с реализацией каких - то EIP паттернов разработки, которые какой-то шиз в своей книжке в 2003 году описал. Насколько важно это всё знать, какова вероятность применения на практике? Не нужно. > 3) Какой должен быть уровень знания брокеров сообщений? Допустим, я умею поднять zookeeper и kafka с дефолтными настройками, и через них с дефолтными конфигами пересылать сообщения из одного микросервиса в другой, используя KafkaTemplate на Producer - е и KafkaListener на Consumer-е, думаю, что этих знаний очень мало. Насколько важно знать тонкости настройки Kafka и прочих брокеров? В принципе, хватит. > 4) Spring Security - знаю базу. Нужно ли Oauth2 учить? Полезно будет. Но учить не надо - в пете юзай. > 5) Spring WebFlux, RSocket и тд - надо? Вебфлюкс интересно, рсокет в пизду. > 6) Docker. Умею писать ручками Dockerfile для приложения, свзязать его с какой-нибудь бд - шкой с помощью Dockercompose и поднять локально в контейнерах. Что еще нужно? Пет-проект какой нибудь, крутящийся в докере. > 7) Kubernetes - выглядит как лютый ад, почему то при первом же знакомстве с первого взляда появилась неприязнь. Стоит ли изучать, или понадеяться, что придет девопсер и мне ни разу не придется прикасаться к подобным делам? Правильно. Нахуй его. 8) Jenkins - дело девопса? Не, это прикольная штука. И не особо гемор.
>>2462596 Ни разу не слушал курсы и, если честно, и даже немного их презираю, тк учился всему сам лет 10 назад, когда никаких курсов не было. Конкретно с отусом сталкивался только на хабре и там из всех корпоративных блогов у них самый уёбищный, они переводят и выкладывают кучу "статей", которые и helloworld'ами-то назвать стыдно. У меня в дипломе воды было меньше, чем у них. Позорище.
К слову, недавно попросили посоветовать какой-нибудь курс одному чуваку, который хотел вкатиться, и я посмотрел/посравнивал все эти яндекс практикумы, скиллбоксы, скиллфекторе, хекслеты и иже с ним. Ты не поверишь, какая там херь, научиться программировать по таким курсам невозможно.
Поясните за многопоточность/асинк в джаве. Как я понял, джава обрабатывает каждый запрос в отдельном треде и никакого эвент лупа внутри тредов нет. Получается, что если я пришлю тяжелых запросов по числу тредов/воркеров, то ваш сервер тупо встанет? Если так, то ваша джава от пыхи отличается только тем, что в пыха выделяет на каждый запрос не процессы, а треды. А концептуально, шо то лочится на io, шо это. Ну и в джаве память шарится, гц много разных, джит лучше, но это детали уже. Выходит, что нода или го сильно современнее под капотом.
>>2462619 > 7) Kubernetes - выглядит как лютый ад, почему то при первом же знакомстве с первого взляда появилась неприязнь. Стоит ли изучать, или понадеяться, что придет девопсер и мне ни разу не придется прикасаться к подобным делам? И да, и нет. Кубернетес это прям операционная система для распределенных приложений и если у тебя больше одного сервиса, то с ним становится удобнее. Всерьёз изучать его внутрянку не нужно, а вот как пользователь лучше ознакомиться, рано или поздно всё равно столкнёшься, много где разработчики сами себе описывают сервисы в кубах, а девопсы занимаются администрированием самого кубернетеса изнутри.
Да и в целом оно довольно удобно, когда научишься. Описываешь в ямлике какой-нибудь деплоймент: возьми такой-то контейнер, выдай ему столько-то памяти, смапь ему вот такой вот конфиг и запусти на таком-то порту и просто скармливаешь этот ямлик кубам и там всё само происходит. С точки зрения клиента от docker compose оно отличается большим количеством свистелок и инструментов. да собственно docker compose легким движением руки подхватывается docker swarm, становясь вполне себе альтернативой кубернетесу. если сворм жив ещё, конечно
>>2462639 Ты дурачок что ли, я спрашиваю про сам джавовый рантайм. Так как до релиза loom он вообще не умеет в виртуальные треды, это не может не накладывать соответствующие ограничения. Я верю, что могут существовать фрейморки, с самописным event loop и промисами, но поскольку всего этого в стдлиб нет, то в итоге использовав такую хуйню ты не сможешь использовать большую часть экосистемы.
А теперь сравни это с го, где всё это есть просто в ядре языка и вообще весь существующий код на го написан с поддержкой асинхронности. Да что там, сам гошный рантайм умеет насильно, в режиме вытесняющей многозадачности, менять контекст исполнения, чтобы одна горутина не могла надолго залочить испольнение остальных.
>>2462624 >Как я понял, джава обрабатывает каждый запрос Да, язык обрабатывает запросы. И вот эти люди сравнивают что-то там "под капотом". Представьте лицо этого субъекта, когда он обнаружит существование таких невероятных технологий, как неблокирующие контроллеры.
>>2462647 Так как вся реактивщина написана на отдельных от стандартной либы библиотеках - весь реактивный стек это отдельная экосистема - и хттп и драйвера к базам и ормы и клиенты очередей сообщений и куча другого обвеса. А в ноде и гошке асинхронное апи не отделено от синхронного? Если оно и там отделено, то какая разница в стандартной библиотеке реализованы эвент залупы или в отдельных библиотеках?
>>2462736 Как ты не поймешь, ну вот важно человеку не методы на промисах вызывать, а await писать перед ними. У него от этого, может, ощущение причастности к самым модным веяниям возникает.
>>2462866 Нет, не проходит, потому что я анальник с комплексом неполноценности, он охуел что ли решать не так, как я сказал? Выёбистый дохуя чтобы проходить дальше
Единственное преимущество геттеров-сеттеров над прямым доступом к полям --- то, что оные являются частю JavaBean конвеншена, на котором построена вся экосистема джавы. В остальном это ебанистика. Но ебанистика намертво устоявшаяся, к сожалению.
>Выходит, что нода или го сильно современнее под капотом.
Это --- ложная дихотомия. Позиксные треды и зеленые потоки --- разные штуки для разных задач, одно другое не взаимозаменяет, а взаимодополняет.
Но вообще это довольно рофельная история, на мой взгляд. На заре времен джава поддерживала многопоточность, а нода --- нет. Причем первая была в поддержке многопоточности настолько охуенна для своего времени, что идея Java Memory Modelи в том или ином виде начала перекочевывать в другие экосистемы. В однопоточной ноде же тем временем без позиксных потоков было грустно, поэтому эволюция ноды сразу пошла в сторону асинхронности. Тупо от безнадеги. Сначала это был колбэк хелл, потом придумали промисы, и понеслась.
Тем временем сервисы становились все более высоконагруженны, так как количество сычей в интернетах росло, и внезапно выяснилось, что скейлиться потоками --- довольно затратно. С каждым новым потоком растет потребление процессорного времени на их скедулинг. Асинхронность была выходом из этой ситуации, но до изобретения всяких языковых штук типа async/await и корутин кодить асинхронно было лютым геморроем в плане кодинга и дебага. Поэтому когда такие языковые фишки появились --- они выстрелили.
На данный момент джава отстает по языковым средствам. Project loom в будущем призван закрыть эту проблему. Но это не значит что сейчас асинхронности в джаве нет ни в каком виде, и проблема переполнения тредпула запросов в ней неизбежна.
Так чел, без сарказма --- дтоха с геттерами и сеттерами это и есть полотно говнокода, по сравнению с простой компактной структурой. Ладно хоть ломбок с рекордами изобрели.
>>2462977 Ну во первых да, а во вторых сеттеры сами по себе ублюдское днище ебаное. Если делаешь модельки, то всегда лучше поставить визеры вместо сеттеров через @With, а если пишешь что-то в настоящем ОО-стиле, то там в принципе и впихнуть сеттеры будет некуда, они будут бесполезными.
> Так как вся реактивщина написана на отдельных от стандартной либы библиотеках - весь реактивный стек это отдельная экосистема Я именно это и имел ввиду. Так как апи джавы по умолчанию не асинхронные, то получается, что я не могу взять рандомную либу и заюзать, получается, что мой выбор ограничен. Или возможно существуют какие-то офигенные либы, которые написаны сугубо синхронно и поэтому опять же не подойдут. В отличие языков, где всё асинхронно сразу по умолчанию.
Так то в любом языке хоть пхп можно написать свой эвент луп, свои промисы и свои системные апи и потом писать неблокирующийся код. Только от этого сам язык и экосистема асинхронными не станут.
>>2462969 Грамотный ответ, спасибо. Если бы ты ещё раскрыл > Но это не значит что сейчас асинхронности в джаве нет ни в каком виде, и проблема переполнения тредпула запросов в ней неизбежна. цены бы ему не было
Аргумент с проксей работает лишь в защиту сложившейся экосистемы, где всякие ОРМы подвязываются на ентити чтобы обслуживать коллекции-связи и прочие lazy-поля. Что я и признал выше --- сложившийся статус кво это единственное что оправдывает геттеры-сеттеры. Но так уж вышло что на ОРМы мне давно похуй, а сам в клиентском коде я проксированием дтох никогда заниматься не стану --- навешивание аспектов на геттеры-сеттеры ИМХО полная залупа.
Ну, есть projectreactor, есть webflux. Есть nio, есть r2dbc, из того что навскидку вспомнил. Чай никто ж тебя не заставляет в 2022м блокироваться на вводе-выводе и засирать тредпул. Не так круто конечно как корутины в котлине, но лучше чем вообще ничего.
Нужно ли знать, как создается обоссанный бин? И нахуй это знать, если я никогда в жизни не буду использовать на проде постбинхуинхуицессоры авэйр хуэйр интерфейсы и прочий выдроченный кал?
>>2463052 Ты ебанулся? Я уверен, в 100 процентах ентерпрайза будет круд хуерга с вкраплениями какой - то бизнес логики. Все постбин процессоры - это извращения и если челикс не может написать без них - он конченный уебан. Фэктс
>>2463038 >Или возможно существуют какие-то офигенные либы, которые написаны сугубо синхронно и поэтому опять же не подойдут. В отличие языков, где всё асинхронно сразу по умолчанию. Так а пример можно, какой тип библиотек тебе может быть недоступен? Да и в языках, где синхронное и асинхронное апи есть в стандартной либе тебе никто не гарантирует, что все сторонние либы будут использовать оба подхода. Это в любом случае двойная работа.
ОП пишет: Java никогда не ломает обратную совместимость - твой код, написанный на Java 1.2 будет работать на Java 18 - и не зависит от платформы, являя из себя единственный полностью кроссплатформенный язык с кроссплатформенной экосистемой (если не считать языков-паразитов на JVM).
А почему-то блядский Дженкинс хочет Джаву 1.8. У автотестеров Джава 11 в Селениумах - потолок. И только у разрабов Спринг позволяет использовать Джаву 18.
Второе: Заебало, что мавен не может нормально в жирные jar-ники. Делает всегда кусками и без манифеста.
Хоть Градл умеет сразу.
А в Андроид студии пошли ещё дальше - там сразу и манифест есть и Градл настроен.
Так что насчёт совместимости, сомневаюсь. Пусть автор сам радуется, что игрушка для кнопочных телефонов на java 1.2 ME откроется в IDE и ещё можно запустить. Но толку?
>>2463072 > Так а пример можно, какой тип библиотек тебе может быть недоступен? Ну к примеру, какой-нибудь клиент будет блокироваться, ожидая ответа апи, веб или системного, не важно. > Да и в языках, где синхронное и асинхронное апи есть в стандартной либе тебе никто не гарантирует, что все сторонние либы будут использовать оба подхода. Это в любом случае двойная работа. В таких языках как правило все либы пишутся сразу с поддержкой асинхронщины, потому что асинхронный код превращается в синхронный очень легко, в отличие от обратного.
>>2463111 > ОП пишет ОП пиздит. Он вообще редкостный долбоёб, высрал говношапку вместо нормальной и перекатывает после 500. Джава даже теоретически не сохраняет обратную совместимость. Например, в 8 жабе можно создать класс с названием var (похуй, что нейминг не соответствует соглашению), а в 11 уже нельзя. Но это не так важно, куда важнее то, что создатели стороннего софта часто лезут в недокументированные кишки жабы через рефлексию, а потом, когда детали реализации ломаются, все жидко обсираются. > блядский Дженкинс хочет Джаву 1.8 У нас недавно его перевели на 11, видимо, он может с ней работать, но переход не бесшовный. > мавен Говно, но стандарт индустрии.
>>2463111 >>Java никогда не ломает обратную совместимость Не то чтобы совсем не ломает, но с вероятностью 90% все запустится сразу или после мелких правок. >>Дженкинс >>Спринг Это уже на усмотрение создателей либы, фреймворка. Они могут требовать жаву 8u341 и слать нахуй все остальные версии. А делают ограничение для 8/11 из за использования новых фич джавы - стримов, комплитабл фучер и тп. Делать несколько реализаций (и главное тестировать их) накладно поэтому проще сразу сказать что те 10% что сидят на старой джаве не могут тянуть новые либы (а им похуй - у них и старые либы отлично работают) >>А в Андроид Там у них своя атмосфера. И свой тред.
>>2463124 >>создатели стороннего софта часто лезут в недокументированные кишки жабы через рефлексию Что то такое проворачивает вроде только ломбок с его @SneakyThrows, все остальные популярные либы такими хаками после 9 версии уже не пользуются.
>>2463111 >игрушка для кнопочных телефонов на java 1.2 ME откроется в IDE и ещё можно запустить Как раз таки java me и всякие java card, java embedded давным давно вымерли, и ты их уже не запустишь.
>>2463111 >А почему-то блядский Дженкинс хочет Джаву 1.8. >У автотестеров Джава 11 в Селениумах - потолок. >И только у разрабов Спринг позволяет использовать Джаву 18.
Это проблема разработчиков библиотек, а не самой джавы. Код, написанный и скомпилированный для Java SE в 2002 году запустится и в 2022, но только если ты не будешь лезть через рефлексию во всякие ансейфы, кишки jdk итд. Возможно будут большие проблемы со свингом, например часть функционала просто не поддерживается в wayland, вроде того же java.awt.Robot с его фишками вроде снятия скриншота и перемещения курсора мыши, и в данный момент разработчики жабы пилят какие-то костыли. Ну и по мелочи - в том же гноме трея как раньше уже нет без дополнительного предолинга, поэтому свинг жидко обсирается при попытке свернуть в трей.
>>2463111 >мавен Мавен старая хуйня на самом деле. Он в 2004 году появился, так что ты от него много хочешь. Но вообще плагины решают проблему fat jar так-то. Да, нагромождение xml, но это собрать все в один джарник любой вкатун сможет по гайдам из мурзилок.
>>2463144 Лобок работает при компиляции, ему и не нужно никуда лезть, рантайм ведь ничего про проверяемые эксепшены не знает, это тупо проверка в самом компиляторе жабы. А вот блядские сервера приложений, которые запускаются на 8 и падают с NPE на 11, эти хаки очень даже практикуют.
Весь лобок --- один сплошной хак. Он юзает annotation processor api (который обычно используется для кодогенерации на основе аннотаций). Но прикол в том, что этот api оригинально не дает возможность менять сорцы, AST-дерево, доступное через него, неизменяемо. Лобок же ректально получает доступ к мутабельной версии AST, и ее уже меняет. Верх инженерной мысли, вобщем.
>>2463152 >блядские сервера приложений А нахуй они нужны в 2022 году? Они умерли вместе с Java EE. Вся эта срань в виде глассфиша, вебсферы, jboss, итд это натурально середина нулевых годов. Сейчас все упаковывается в джарник и закидывается в докер контейнер.
>>2463156 Мы вот с вебсферы и четвёртого спринга слезть не можем до сих пор, и это у нас ещё не самое старьё, до сих пор используются и дорабатываются смежные системы, написанные на хранимых процедурах. Слезли бы давно, сверху давят и ставят сроки по отказу от старья, но даже обновление софта на следующую минорную версию всегда что-то ломает. А вообще, кубернетес - это зумерский сервер приложений.
>>2458869 (OP) > где нужно явно указывать тип объявляемых переменных Нинужна есть var, ясно тред нубасов, это собственно из пика с кококонтроллером понятно
Но даже если б было нужно: как бы щас проксе есть альтернатива в виде вархендлов, можно в теории было бы подцепиться через них напрямую к публичным пропертям, без геттеров-сеттеров.
>>2463467 Обязательно прям регулярками? Это как забивать гвозди микроскопом. Ты можешь тупо пройтись по строке и сравнивать каждый символ с символом олной из скобок, если совпадают, увеличивать счётчик. Корректность расстановки скобок регулярками ты не проверишь никак, принципиально, доказано.
Сап аноны, разбираюсь сейчас в спринг секурити. И у меня чет немного плывет мозг. Такой вопрос, нужен ли мне oauth, если я НЕ хочу делать авторизацию через сторонние ресурсы типо гугла?
Хех. Вспоминается история одного чувака, которого я встретил как то на айти-конференции. Если я правильно помню, он до 40 лет занимался сопровождением многомиллиардных сделок и тендеров, имея с них процентик. Но в конечном итоге ему все равно пришлось вкатываться в айти. Как он рассказывал --- такого рода контракты невозможно заключать без моря выпитого алкоголя, и к 40 годам он уже просто не вывозил пьянство как должностную обязанность, тупо по здоровью.
Непонятно только почему он выбрал айти --- ведь тут то же самое пьянство, только платят меньше.
Сами плагины --- да. А вот если ты свой написать хочешь, то придется склонировать реп компилятора и контрибьютить плагин в него. API как подключаемая джарка не распростряняется.
>>2463705 С помощью переводчика читаю документацию и стэковерфлов с туториалами на изи. По началу было сложно воспринимать чушь которая выходила с переводчика т.к. перевод далеко не идеальный... А потом как то всё само заходить начало :/
>>2463770 > их самих трогать нельзя? Кастовать тоже нельзя Копипастой. Вместо add(T) Будет add(Int) add(String) add(Hui) add(Govno) Структуру, куда будет добавляться каждый тип тоже копипастить int[] String[] Hui[] Govno[]
>>2463124 >Например, в 8 жабе можно создать класс с названием var (похуй, что нейминг не соответствует соглашению), а в 11 уже нельзя. Нихуя себе поломка обратной совместимости. Так можно любой багфикс считать поломкой обратной совместимости, если строить логику, основанную на багах. Поломка обратной совместимости - это когда ты написал хороший, чистый код, а он потом взял и не запустился после обновы жабы. Такого в джаве нет, если чё то и ломается, то ломается из-за привязки к кишкам.
>>2463793 На 100% сохранить полную обратную совместимость можно только перестав вообще вносить правки в жабу. Законсервировать как кобол на текущей стадии развития и потом искать пути для обхода текущих багов жабы. > Такого в джаве нет, если чё то и ломается, то ломается из-за привязки к кишкам. В восьмой жабе я мог спокойно пользоваться JAXB, а теперь надо тащить левые жарники с рантаймами всяких говноглассфишей. И так с кучей других API.
>>2463793 >>Такого в джаве нет У меня например жук написанный на 11 в некоторых местах не компилируется в 17 из за добавления java.lang.Record. Или название класса Record это тоже использование кишок?
>>2463823 Нет у него java.lang.Record, есть org.jooq.Record, который, очевидно, был импортирован, а не писался везде полным именем класса с пакетом. И теперь импортировать нельзя.
>>2465275 > А как там разметку создавать? Вся разметка пишется на жабе. Дизайнеры форм в IDE также генерируют код на жабе. > Какие-то аналоги xaml есть? Зачем нужны аналоги XAML, если XAML уже существует? Достаточно не лезть в жабу и выбрать подходящий язык для "оконных приложений".
>>2465275 ПОЧЕМУ У ТЕБЯ НАЗВАНИЕ КЛАССА С МАЛЕНЬКОЙ БУКВЫ СУКА???????????????????????????????????????????????????????!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>>2465299 Потому что я так хочу. И что ты мне сделаешь? >>2465290 Как сделать нормальный обработчик события? На ютубе инфоцыгане предлагают класс писать. Чтоблять? Писать класс ради клика кнопкой?
>>2465410 Толсто. >>2465397 > пойду сразу на JavaFX взгляну После первого взгляда сразу обнарухился и файл разметки fxml и нормальные (адекватные) методы инициализации приложения. Изучаю...
>>2465426 > я не петушарпер Урокъ 5. Пятая теорема Петухана. Аксиома: Не существует петушарпера, который смог бы скрыть от мира свой диагноз или сексуальную ориентацию. При критическом уровне ЗРАДЫ свиной визг настолько силён, что пробивает все системы защиты и маскировки петушарперов на планете
>>2465591 Что нужно знать, то пишут в вакансиях. Кор, алгоритмы/структуры данных, спринг, REST, базы, хибернейт, очевидные Git и мавен, опционально докер.
>>2465361 >Как сделать нормальный обработчик события Лямбдой.
>>2465275 >Какие-то аналоги xaml есть? Нет. Вообще разметка в свинге на редкость убогая по сравнению с винформами и дельфи - здесь нельзя произвольным образом контролы размещать в формочке. И все через джава код, никакого xaml.
>>2465413 Идею никто никогда не перепишет на С++....
>>2465224 >JavaFX Оно вроде погибло несколько лет назад, хотя вроде как какой-то опенсорс продолжали тянуть в полуработающем виде. Не помню уже. Но вообще возьми Qt/electron и не мучай жопу.
>>2465663 1. Сейчас кризис и никто в проекты подобного рода вкладываться не будет 2. Это займет охулиард времени, учитывая какое помойное легаси представляет из себя идея. 3. Нет столько желающих людей портировать awt/swing приложение (со всеми дополнительными костылями от jb) на какой-нибудь Qt, который через N-ое количество лет тоже может умереть.
>>2465664 > Оно вроде погибло несколько лет назад Я скочал на пощупать 19 версию, выпущенную в сентябре этого же года. Крайний LTS это 17 версия, выпущеная год назад и на поддержке до 26 года. Ну я хуй знает, как такое можно считать погибшим.
>>2465670 > А вообще гуи на жабе в здравом уме начинать никто не будет. Ну, судя по сайту с которого я кочал (Глюон) - этот тулкит кому-то всё таки нужен. Ну ладно, раз нет, пойду другие варики искать.
Всем пока. Можете не отвечать. От треда отписался. Вот вам напоследок, что я за вечер наваял неспешно тыкая по кнопкам.
>>2465709 >Ну я хуй знает, как такое можно считать погибшим Версии-то может и обновляются, цифры увеличиваются, однако в реальности жабой FX почти никто не пользуется. Если потребуется сделать что-либо нетрививальное, то не получится просто вязть и нагуглить примеры на стаковерфлоу, как это можно сделать с qt, электроном или даже свингом с винформами.
>>2465709 >кому-то всё таки нужен Да, но это буквально единицы от и без того очень узкого рынка десктопов.
>>2465853 Подобные программы часто ловят не то что RuntimeException, они ловят и Throwable, чтобы уж точно не свалиться. Например, так делают в серверах приложений, чтобы не свалилось всё из-за говна в одном war-нике.
Подскажите пожалуйста, как получить путь к ресурсам в файле.jar ? Конкретно мне нужен доступ к аудиофайлу с расширением wav. Есть конечно вариант вынести его в отдельную папку, но хотелось бы что бы мелодия запускалась вместе с приложением, а не после того как будет установлена рабочая директория.
>>2465867 >>2465857 А если разрабы корня хотели, чтобы Error валило программу, а RuntimeException нет? По стандарту Exception сам по себе прилететь не может, поэтому такой код выглядит вполне резонным. А тут лобок какой то даун изобрёл, который ломает байткод и ведёт себя почти что как вирус.
>>2465868 Ничего не запрещает ловить Exception. Если тебе нужна надёжность, то будешь писать код более надёжным, чем предположения стандарта, чтобы защититься от других даунов, которые кидают Error или наследуются от Throwable. Проблемы можно создать и без лобка.
>>2465866 Через getResourceAsStream(). Если жарник не загружен, загружаешь его через класслоадер. Если путь не известен, обходишь жарник через JarFile.
>>2465897 У асинхронного кода, если нет больших нагрузок есть оверхед по времени исполнения по сравнению с синхронным. К тому же под капотом асинхронный код с неблокирующим вводом-выводом сложнее и его в разы сложнее отлаживать и тестировать. На невысоко нагруженных системах использовать асинхронное io - глупо.
>>2466168 Ну, допустим, я точно не помню, метод clone находится в Object или в Cloneable, потому что этим никогда не пользуюсь. Забыл коллекции, потому что они нахуй никогда не нужны, кроме arraylist, hashmap и hashset. Забыл многопоточку, потому что в чистом виде она нахуй никогда не нужна
>>2466275 Так с практикой же читаю книги. Увидел какую-то новую йобу, покрутил её, закинул разные данные. И когда я понял, каким именно образом это работает, то продолжаю дальше.
>>2466417 80 iq чтоб крудошлёпить, 140 iq для настоящего программирования. Правда айтишка сейчас прогнила, гораздо более важен тембр твоего голоса и размер челюсти, чем реальные навыки.
>>2466419 Вот я тесты сколько ни сдавал, у меня результаты в промежутке 115-125. Сколько уже учусь, для себя заметил, что "крудошлепскую хуйню" я делаю на изиче, не напрягаясь. Но когда нужно применить какой-нибудь алгоритм, например что-нибудь связанное с графами и работой с ними и прочее подобное, я зачастую ощущаю себя бабуином и демотивируюсь. Поэтому, пожалуй, с тобой соглашусь. Крудошлепствовать любой средний Васян сможет. Про 80 ты загнул, но с среднехуй с соткой справится. А вот быть тру-программистом, по праву носящему это звание, способно лишь пара процентов от популяции. >>2466431 А что два месяца назад произошло?
>>2466419 > Правда айтишка сейчас прогнила, гораздо более важен тембр твоего голоса и размер челюсти, чем реальные навыки. Распиши, пожалуйста, что это значит.
>>2466442 >Распиши, пожалуйста, что это значит. Это значит, что из-за длительного "золотого периода" айтишка стала чем-то типа шоу-бизнеса, где количество заработанных тобой денег зависит только от твоей внешности и умения пиздеть, а ещё связей, конечно же. Но никак не от твоего интеллекта и тем более навыков.
>>2466443 >>2466446 Господа ципсошники и петушарперы, идите нахуй с треда.
>>2466417 80 хватит точно при должной усидчивости, даже если это ссанная веб-студия с вёрсткой, битриксом и 1С. Я никаких тестов всерьёз не проходил (только поржать, типа "выберите 15 цветов и узнайте свой IQ", но вряд ли у меня больше 100. Сам считаю себя тупым, но усидчивый что пиздец, таски закрываю в срок, ЗП растёт.
>>2466431 >схлопнулся два месяца назад Раньше, сейчас-то все уже стабильно хуево. В марте-апреле регулярно скидывал количество джава вакансий в мвп тред. Сначала было 5000, потом 4500, потом 4000, потом меньше 4к, потом небольшой отскок до 4, и падение до трех тысяч. Сейчас стабильно 2850-3000 держится. Но видимо еще сдуется медленно до двух тыщ за несколько месяцев. Потребности в джава разрабах сейчас нет.
>>2466516 Дело даже не в оставшемся количестве. Там половина объявлений тупо фиктивные, по ним никогда не ответят, потому что они не ищут разрабов. Не знаю зачем их открывают и переоткрывают несколько раз в неделю, статы мб набивают какие то.
>>2466516 У джавы дела еще более-менее в отличие от петушарперов, у которых и до 2022 рынок был мертвейший, и лоу айсикью петухонщиков, работу которых может выполнять любая продавщица пятерочки
>>2466651 За два часа. Вообще бэкендером становятся за неделю, до сеньора недели полторы. Вот пиздоболом-максималистом на дваче дольше придётся становиться, это путь длиною в жизнь.
>>2466651 Неделю это если ты бывший петухонщик или закончил пту со справкой. В ином случае - тут день-два максимум и то, если весь спринг целиком осваивать
>>2466619 Не, ждём, когда в WebSphere добавят поддержку лума. >>2466633 Просто надо впилить дохуя функционала в один проект, чтобы в одной системе могли работать десятки тысяч пользователей с разными ролями. У нас всего лишь 500 000, ибо проект более специализированный, хотя нет и половины того, что в планах у кабанов.
>>2466633 Посмотрел вот исходники одного легаси-копролита(java-8, spring 4 без бута, все деплоилось на 7ой томкат? часть конфигов в хмл, часть кодом, без тестов, фронт на велосипеде поверх древнего реакта), с которого я убежал в страхе год назад. И там всего 318к строчек джава кода, хотя всего строчек 1.6кк. Убежал очень быстро, успел пощупать ну 5% кодовой базы где-то. Причем там даже по рассказам старожил как минимум четверть кода была просто дохлой. Сейчас пишу в 2 микросервиса(джава-17, спринг-бут последний) по 8к и 10к строчек джава-кода, где половина тесты. Без тестов микросервис ну 4-5к строк. А вместе со всей мишурой - под 40к. Но там до прода еще далеко и тогда объем кода еще раза в два увеличится, ну будет 10к рабочего кода. У меня каждая неделя это где-то +1500-300 строчек(ну это всего вместе с тестовыми json-ками, наверно нового нетестового джава кода строчек по 200 в неделю). В декабре собираюсь микросервисы сразу переводить на спринг 6. Java21-LTS выходит 2023-09-19, так что может и ее успею на этом проекте впихнуть.
>>2466649 Я другой анон, но рекорды мне в большинстве случаев не подходят. У меня здоровенные динамические входные дтошки с 4мя кейсами-наследниками. Поэтому куча аннотаций валидаций и аннотаций джексона лежат в интерфейсе.
>>2466652 >>2466655 >>2466659 Ну я серьёзно, мужики. Именно задрочить так, чтобы пройти собес и попасть на работку, а не начать писать хоть какой-то вменяемый код. Для написания вменяемого кода нужен минимум год, и то, если у тебя, как у меня 180 iq.
>>2466827 Ну вот кейс конкретный. У меня есть сущность организация. Организаций - 4 типа. Там 20 полей общих и по 5-10 у каждой свои. Эндпоинт для сохранения один. Как мне их правильно сохранять по маня-ооп?
>>2466834 Дегенеративное хуйло с клиповым мышлением не может посмотреть на проблему с другой стороны, спешите видеть. ООП - это не про структуры данных, ООП - это про живые объекты, которые чё-то делают, не открывая, что находится в них. В ООП создающиеся классы сразу после создания прячутся под интерфейс. А теперь расскажи, зачем тебе эти организации нужны и я бесплатно, по своей доброй воле натолкну тебя на ООП решение.
>>2466841 Это информационная система для отображения контрагентов нашей организации. Типов контрагентов сейчас 4, потом будет больше. Ну и есть обязательные и опциональные поля, как для всех, так и для отдельных типов организации. Для банков одни, для служб доставки другие, для арендаторов третьи, для поставщиков четвертые. Но все должны быть в одной сущности для сводных отчетов.
>>2466856 Интерфейс Сounterparty с обязательными методами для всех контрагентов, далее классы Deliverer, Tenant, Bank, Provider и тд. У каждого своя логика и свои конструкторы, но все реализуют один интерфейс.
>>2466867 Прикол ООП в том, что вышеупомянутое говно > Deliverer, Tenant, Bank, Provider можно типизировать и создавать одним методом, а твой топорный 1С как был топорной оболочкой к БД, так и останется, без какой-то крутой логики.
>>2466873 Ты оппост что-ли не читал? > Java никогда не ломает обратную совместимость - твой код, написанный на Java 1.2 будет работать на Java 18 - и не зависит от платформы, являя из себя единственный полностью кроссплатформенный язык с кроссплатформенной экосистемой (если не считать языков-паразитов на JVM).
>>2466458 >Это значит, что из-за длительного "золотого периода" айтишка стала чем-то типа шоу-бизнеса, где количество заработанных тобой денег зависит только от твоей внешности и умения пиздеть, а ещё связей, конечно же. Но никак не от твоего интеллекта и тем более навыков. Вот. Тред даже был в прошлом году, что селёдки-эйчарки отбирают соискателей по фоткам в резюме. Чем красивее, тем выше шансов, и это даже при более плохих профессиональных показателях. И вообще, да, айти сейчас действительно сорт шоу-биза, где нужно быть стильно-модно-молодёжным смузихлёбом, а не инженером.
>>2466841 >ООП - это не про структуры данных, ООП - это про живые объекты, которые чё-то делают, не открывая, что находится в них. ООП - это абсурд по определению, потому что идея наследования противоречит идеи инкапсуляции.
>>2466896 >С пробуждением, так во все сферах бтв Возможно, но не до такой степени. Айти, особенно в снг, слишком распиарено, слишком смузихлёбно и слишком ванильно. >Даже статистика была что более карстовые и высокие люди больше зарабатывают И в Европе даже хотели ввести налог на красоту, да. > >ну и софт скилы неожиданно очень важны Логично, что нужно уметь общаться с людьми, чтобы работать в команде. Но в айти опять же этому уже слишком много внимания уделяется, имхо.
>>2466955 а в чем профит? С одной стороны я понимаю - типа перестраховка на случай когда у нас очень много переменных, но ведь в этом случае можно и сеттеры перепутать, разве нет?
>>2466962 Шта Шта? зачем нужны сеттеры и геттеры? нахуй нужна приватность, если есть обход этой приватности? Я не утверждаю, что не нужна, я лишь даю понять что я не понимаю, поясните простым языком, пожалста.
>>2466964 Про геттеры сеттеры писал какой-то анон выше, вкратце: геттеры нужны для того, чтобы вернуть копию филда в имьютбл обьекте, а сеттеры нахуй не нужны, но все их пишут. Ну еще в геттерах/сеттерах можно какую-то логику написать, но это вроде АНТИПАТТЕРН
>>2466973 Бывают еще дебилы которые считают что любой метод который вообще хоть что-то возвращает обязательно должен начинаться с ГЕТ. Причем даже когда пишут на питоне или плюсах.
>>2466964 >зачем нужны сеттеры и геттеры? Концептуально с т.з ООП - это публичный интерфейс класса по данным на котором строится ОРХИТЕКТУРА. Это контракт который ты выставляешь наружу и мамой клянешься, что он не поменяется и значит на него можно расчитывать когда ты проектируешь охуительные взаимодествия между объектами. Приватное состояние которое возвращают/меняют гет/сет это твое грязное белиьшко реализации - оно полностью в твоей власти и можно делать с ним что угодно при условии, что ты не нарушаешь контракт.
С практической точки зрения - чуть проще менять класс внутри, на этом все.
>>2466973 >сеттеры нахуй не нужны, но все их пишут Это если у тебя простой DTO без логики. А так сеттер проверяет значение и может делать дополнительные действия. Например есть у тебя объект квадрат, сет сайз будет ещё и перерисовать его.
Эххх щас бы вернуться в 2002 и вызывать код типа zalupa.huy.pizda.lalka = 5 повсеместно в коде. Это же так охуенно потом рефакторить, отлаживать или изменять, мммм, просто 10 из 10 Ещё и глобальных переменных пиздануть на весь скоуп, охх щас кончу
Нахуя в бинах скоупы помимо дефолтного синглтона? Лично я никогда не юзал даже прототайп, не говоря уже о других, названия которых я на данный момент смутно помню. Приведите реальный пример, когда нужно поменять скоуп на какой-то другой
>>2467218 Создатели спринга не настаивали на использовании конкретной подхода к организации архитектуры проекта, так что оставили все скоупы. Это на практике сложилось делить всё на умные сервисы без данных и тупые дата-классы без логики (anemic model), но кто-то захочет реализовать active record и с prototype напишет что-то подобное: huiBean.setId(0); huiBean.setSize(4, 3); huiBean.save(); И т.д. Например, в session можно хранить корзину, а в request - свалку параметров запроса.
Какие на ваш взгляд критерии крепкого java-мидла? 2.5 года в джаве, перекатился с другого стека, не ооп, пилю в энтерпрайзе простые микросервисы на спрингбуте в кубере, без гугла не могу в многопоточку и кафку, т.к. задач не было таких. Могу в БД, рест, прорешиваю литкод В петухи запишете или в стремящиеся?
Какие на ваш взгляд критерии крепкого java-мидла? 2.5 года в джаве, перекатился с другого стека, не ооп, пилю в энтерпрайзе простые микросервисы на спрингбуте в кубере, без гугла не могу в многопоточку и кафку, т.к. задач не было таких. Могу в БД, рест, прорешиваю литкод В петухи запишете или в стремящиеся?
Какие на ваш взгляд критерии крепкого java-мидла? 2.5 года в джаве, перекатился с другого стека, не ооп, пилю в энтерпрайзе простые микросервисы на спрингбуте в кубере, без гугла не могу в многопоточку и кафку, т.к. задач не было таких. Могу в БД, рест, прорешиваю литкод В петухи запишете или в стремящиеся?
>>2467227 Дроч на паттерны --- антипаттерн. А так --- ну паттерны и паттерны. Умные инженеры нашли в своих проектах повторяющиеся по структуре кода, обозвали их паттернами, написали книгу и продали многомиллионным тиражом. А анальники сделали из этого каргокульт и ищут в нем ответ на то, почему у них код --- говно. Как всегда.
Как сейчас с трудоустройством в жабе? Как лучше сейчас искать первую работку? Сколько времени примерно уйдет с момента выката резюме и рассылки первых откликов до первого оффера, учитывая, что знаешь базу спринги, докеры, кафки Действительно ли нужно, как говорит немчинский, откликаться не только на джунов, но и на мидлов?
>>2467535 Сами решают в процессе выполнения указаний других объектов, которые напрямую не говорят менять, а лишь говорят, что им нужно. Объекты сами решают, что менять, а что не менять.
>>2467561 Я все жду, когда ты напишешь про сообщения от объекта к объекту. >которые напрямую не говорят менять, а лишь говорят, что им нужно. Есть объект счет и объект клиент. Клиент ложит деньги на счет. Что клиенту "нужно"?
>>2467577 Это не доёбка, это прямое улучшение кода. Вместо того, чтобы всегда вызывать account.set(account.get()-sum), ты вызываешь account.remove(sum). Это принцип DRY.
>>2467578 В конкретном случае соглашусь, когда метод выполняет больше одной операции. Но не понимаю, чем плохи геттеры/сеттеры в тех же дто. Иногда удобно создать дтоху с через конструктор с аргументами, а затем поменять пару полей.
>>2467586 Неправильно. Улучшение конечно есть, но всё равно говно. Message и Destination неразлучны с контекстом и сами по себе не должны существовать. Если ты например обрабатываешь пользовательскую команду, то код должен выглядеть так:
public void on(CommandDispatch dispatch) { ----dispatch.author().sendMessage("Петух сказал: "+write.dispatched().asString()); }
А если шлёшь email на новый год всем своим клиентам, то
>>2467601 >Это ты нихуя не понял Так значит ты хуево объяснил. >user.message(Message message) Откуда взялась сущность юзера? Если появятся новые способы нотифицирования, надо будет изменять класс юзера, чтобы их туда добавить? Что если перед отправкой сообщения необходимо выполнить какие-то произвольные действия, например провалидировать или поменять какое-то поле, причем список правил лежит где-то снаружи?
>>2467602 >Если появятся новые способы нотифицирования, В общем случае - да. А как иначе то, лол? Но опять же, если бы ты читал моё сообщение не жопой, ты бы увидел мой посыл о том, что отправлять сообщения лучше из контекста. Не из контекста, а из непосредственно юзера отправлять только то, что с этим юзером непосредственно связано. Например, емайл. Если не хочешь целого юзера менять - добавь к нему метод getEmailBox(), который вернёт спрятанный под интерфейсом EmailBox способ работы с сервисом емейлов (не поле emailBox, его не должно быть!).
>провалидировать или поменять какое-то поле, причем список правил лежит где-то снаружи? Например?
>>2467605 Ну то есть в моем примере это будет Destination.message(Message m). Почему не Message.send(Destination d)? >Например? Да банально список правил лежит в спринг проперти, которые подгружаются через спринг клауд конфиг и могут обновляться в рантайме.
>>2467607 > Почему не Message.send(Destination d)? Потому что сообщение не должно уметь отправлять само себя. Это контринтуитивно и в конечном итоге всё равно приведёт после цепочки методов к тому же Destination.message(Message message), если конечно у тебя есть хоть какая-то инкапсуляция и сообщения не могут сами добавлять себя в ящики сообщений.
>>2467678 Это не виртуальные методы. Логика написанная в конструкторе непереопределима, поэтому классы с конструкторами не полиморфичны и должны отсутствовать в ООП языках.
Приветствую, подскажите пожалуйста сколько в ДС получают джуны. Планирую проходить собеседования на удаленку и стало интересно как реально обстоят дела с уровнем зп. Планирую просить 50к после вычета налогов
Сап, аноны, подскажите плиз, кто шарит. Я чет до сих пор не могу разобраться с секурити. Как должна выглядеть аунтификация с oauth? Вот я раньше выдавал свой jwt, в потом в фильтре его валидировал, а сейчас как? Делать свой авторизейшн сервер? Фильтр уже есть спринговом проекте oauth? Просто внятных гайдов вообще нет, только какая-то лажа с авторйзом через всякие гуглы/гитхабы
>>2467989 Так-то я субъективно нормально знаю,плюс петы есть. Дело в том,что я сам с Воронежа и мне 50к хватит на скромную жизнь. Также видя 300+ откликов на вакансию я предполагаю что есть мизерный шанс пройти чисто за счет жадности работодателя
>>2468131 Плюс ещё мне до сих пор слабо верится что джуны в принципе могут получать 70к+ тупо за знание жизненного цикла бина, транзакций и прочих дефолтных штук
>>2467607 Как сформулирована задача? Нотификация клиента по различным каналам? Как вариант в User хранить перечень каналов для нотификация конкретного пользователя, отдельно сделать сервис Notifier, который по идентификатору пользователя получает реквизиты (можно и в User это хранить) для отправки сообщения и формирует Message в соотв. со спецификой каналаи класс Sender, который отвечает за интеграционную логику.
>>2468404 >>2468407 >>2468409 Не нужны. А если где и встречу, то у баелдунга разжевано для тупых, за 20 минут разберусь, что с этим мракобесием делать.
В чем разница между Spring Cloud API Gateway и Spring Cloud Service Discovery? Оба перенаправляют запросы. Пока все что я понял это то что API Gateway это прокси,к которому обращается клиент,а он уже дальше сам решает в какой сервис отправить запрос. А Service Discovery знает где физически находится сервис и можно делать запросы не зная айпи адреса. Получается он тоже распределяет запросы. Поясните плиз
>>2468666 Все, что делает дискавери - дает настоящий адрес по виртуальному. И потом на этот настоящий адрес ты шлёшь запрос. Гейтвей же перенаправляет запросы на нужные сервисы. Например, если урл /users/, то в сервис юзеров, если /vehicles/, то в сервис машинок и тд. Кстати, для нахождения настоящих адресов этих сервисов гейтвей пользуется дискавери
>>2470467 Винда платная. Тяжёловесная. Скучные обои. Хотелось просто иметь виртуалку для программирования, чтобы быстро запускалась и там можно было бы делать всё, не боясь сломать систему.
Если приходится себя заставлять программировать, то стоит ли вообще идти в эту профессию? Второй год изучаю джаву на тырпрайз-разработчика, но интереса крудошлепить нет. Насильно заставляю себя с утра учить эту муть и хотя бы по 2 часика что-нибудь кодить. Вроде всё получается, даже понимание есть, но интереса просто ноль. Воспринимаю обучение как каторгу.
>>2470477 Раз за два года до сих пор не бросил, значит, хоть чуть-чуть тебе это интересно. Вдруг для тебя каторга - не занятие программированием, а сам процесс обучения. В реальном проекте может быть ещё интереснее, там будут настоящие задачи, а не однотипные учебные круды.
>>2471316 Набор операций CRUD: Create, Read, Update, Delete Крудами в переносном смысле называют такие приложения, где нет сложной логики, и всё сводится к созданию режимов, где есть тупо создание записей, просмотр, редактирование и удаление. Это обычно первое, чему учится вкатун в спринг.
>>2458912 Нет, в пайтон так нельзя. Первые две строчки - это шэдоуинг, ну или просто замена адреса в ссылке. Такой кульбит возможен как раз из-за динамической типизации. Сами значения по адресам в памяти никак не меняются, не кастятся (оставшиеся без ссылок данные потом сборщик скушает). А вот вторая и последняя строчки вызовут ошибку, т.к. типизация строгая, складывать строку с числами нельзя.
Пишу небольшой проект в портфолио, тк все говорят, что без них никто на тебя даже не посмотрит. За пару дней набросал бэк, но вот с фронтом проблемы. Фронт идет очень туго из-за того, что я с ним до этого дел не имел, еще и получается в основном какой-то кал, который показывать левым людям стыдно. Подскажите плиз на чем легче всего сейчас будет написать простенький сайт, чтобы выглядел более-менее. Во фронте чет вообще не хочу разбираться, это супер уныло и нахуй не нужно для меня. Или может в пизду вообще этот фронт? Хватит чисто реста какого-нибудь для проекта в резюме?
Вот есть: ExecutorService executor = Executors.newFixedThreadPool(5); Ему дается пачка Callable. Какой метод вызвать чтобы он вернул то, что выполнится быстрее всего? invokeAny() подойдет?
Я изменяю цвет JProgressBar как показано на скриншоте. Но после того как полоса загрузки доходит к концу, цвет опять становится дефолтным оранжевым. Как это исправить ? Я хочу что бы цвет оставался таким же зеленым.
>>2472612 Здесь одни спрингомакаки, никто не ебётся с AWT/Swing каждый день и ответить тебе вряд ли смогут. Так что гугли, ты быстрее решить проблему копанием в документации и на стаковерфлове, чем дождёшься здесь ответа.
>>2471135 Мне бы хотелось создавать графические программы на джаве типа офисных программ каких-нибудь. А бэкенд скучный. Хотел писать свой пет-проект, но креативных идей нет, а без этого нет интереса программировать.
>>2472739 > Мне бы хотелось создавать графические программы Ты выбрал не тот язык, десктопом занимаются в плюсах и шарпе. Достаточно унылое занятие, на самом деле.
>>2472933 Так пиши на плюсах. В шарпе с недавних пор можно писать и под линукс, есть несколько кроссплатформенных библиотек для гуя. Хотя не юзал, наверняка там сырое говнище. И никаких винформ и WPF, они да, винда онли.
В треде /t/ никто не отвечает, он умер кажется... Ну так вот, есть у меня ноутбук pixus rise grey на celerone 3350 (1.1GH), 4 озу и 64 гб NVME. Присмотрелся мне вот такой ноутбук интересный, с огромной скидкой 15350 - ASUS VivoBook X415EA-EK1336WS 14" 7505 4GB RAM 128GB SSD Windows 11 Home S. Как думаете стоит его покупать ? Будет ли он намного производительней моего нынешнего ноута ? P.S.- оперативную память и ссд можно добавить...
>>2473051 А жаба тут при чём бля? В /hw/ спрашивай, если там не отвечают, то в /b/. Если ищешь ноут для программирования на жабе, то определённо не стоит, на таком железе даже винда едва ли будет работать.
>>2473051 Можно поставить AstraLinux он базе дебиана и жрёт меньше 512Мбайт. Там есть OpenJDK 8 и Liberica 8. Из редакторов можно использовать VS Code, который гораздо менее прожорлив по памяти, чем та же идея или эклипс.
28 лвл, раньше работал с SAPом. Пытаюсь вкатиться в Java, изучаю пока что Core по различным книжкам. Идет туговато, соответственно код ужасный, но иногда работает.
У меня такие вопросы:
1. Хватит ли 3 лет, чтобы вкатиться в Java на уровне хотя бы слабенького Джуна? 2. Как можно найти ментора, вернее даже не ментора, а того, у кого будет раз в неделю несколько минут посмотреть мой код и сказать, насколько все плохо или хорошо. Ну и спрашивать у него всякие глупые вопросы типа, "почему список лучше массива", что лучше использовать - дерево или таблицу и т.д. 3. По очередности изучения. Очень многое написано по стек технологий, но я мало, где нашел саму очередность изучения, что изучать: Core, потом Collections, а потом по очереди что к примеру. Тут я откровенно плаваю, если честно, особенно с БД, Spring и т.д., когда надо, когда не надо и т.д.
>>2473890 >1. Хватит ли 3 лет, чтобы вкатиться в Java на уровне хотя бы слабенького Джуна? Раньше работал с SAPом - как пользователь или как разработчик? Если как разработчик, вкатишься намного быстрее, чем за три года. Хотя многие и без опыта программирования вкатываются быстро. > 2. Как можно найти ментора Да тупо здесь спрашивай. > 3. По очередности изучения. Сначала да, Core/Collections и всё, что пишут в книгах по основам жабы. Дальше БД хотя бы в виде консольки Postgresql и подключения к БД через JDBC. Потом разберись с Maven и Git и можешь приступать к спрингу, легче всего начать с Spring Boot, но не фект, что на работе будет именно бут, а не просто спринг с XML-конфигами и деплоем на сервер приложений. В любом случае, нужны основы спринга, работа с базой из спринга через JdbcTemplate и Hibernate/Spring Data, MVC/REST, тесты.
>>2473890 >Хватит ли 3 лет Ты ебанутый? Вкатуси с полного нуля вкатываются за год и даже меньше. Собственно, грубо говоря, навернули кор + спринг, высрали круд и пошли на самую ссанную вакансию.
>>2474006 >>Просто могут возникать глупые вопросы, поэтому и спросил про ментора. Ментор тебе не нужен - учить правильно формулировать вопрос и гугл все расскажет. Все ворпосы обсосаны по 100 раз. Если не гуглится - значит хуйню спрашиваешь (спроси тут - расскажут почему).
Пиздец и какого хуя ссанный JPQL не поддерживает JPA-шные CascadeType - ы? 9 ебанных часов я сидел над OneToMany и не мог понять, какого хуя при попытке удалить родительскую сущность жаба прокидывает экспешн о том, шо бд не может удалить, потому что есть дочерние сущности, которые ссылаются. И ЭТО ВСЁ НЕСМОТРЯ на ссанный CascadeType.REMOVE! Ебался, ебался, случайно наткнулся на комментарий какого то индуса, который спизданул мол JPQL не считывает аннотации CascadeType. Попробовал через метод remove у EntityManager-а - всё удалилось - и дочерние, и родительская сущности. А для того, чтобы JPQL удалил всё и родительскую, и дочернюю сущности, надо оказывается на уровне базы прописывать ON DELETE CASCADE. ПИЗДЕЦ ССАННЫЙ JPQL, скажите, что его не используют нигде, нахуй его ваще знать?
>>2474220 Ну этот кал, я уверен, вообще никто не использует. Кому нахуй в голову взбредёт писать тонны бойлерплейт кода ResultSetExtractor-ов и RowMapper-ов?
Что делать после изучения Java Core? Как учить Spring? Все книги описывают какие-то бины, но не объясняют как писать реальные приложения. Если взять какой-нибудь РНР, то почти все книги объясняют как написать простой веб-приложения и дальше уже сам наращиваешь знания, потому что база у тебя есть. В спринге же ни какой базы нет, ты как в болоте, где каждый неосторожный шаг приводит к катастрофе. Без внешних источников информации невозможно ничего написать. Буквально каждый шаг надо изучать. Вроде написал простое веб-приложение, которое отдаёт страничку, но работа с базой данных - тут отдельный мир со своими фреймворками. Хочешь добавить авторизацию? Погружайся с головой в Spring Security. Тестирование? Логирование? Брокеры сообщений? По каждой теме ещё надо учится годы. А в итоге ни какого приложения у тебя нет, потому что под тонной теории, нет понимания как это всё соединить вместе.
Maven где-то на своих серверах секретно хранит джавадоки ко всем артефактам в его репозитории. Они оттуда автоматически подгружаются в IDE, поэтому видно описания методов и прочее. Где они хранятся, по какой ссылке, как их открыть в браузере? Я помню, что к ним есть доступ через веб, но потерял ссылку и не могу найти.
>>2473052 Ошибаешься, у меня сейчас celerone 3350N на 2 ядра 2 потока, 4 гб оперативы -> 2 открытых проекта в intellij idea, 25 вкладок в опере, 4 видео открытых в ютубе, что - то скачивается, открытый фотошоп и всё летает на изи. На пентиуме будет ещё лучше...
>>2475959 Каким таким образом тебе такое удается? У меня 8гб, при открытой IntelliJ Idea (2-3 проекта) и 4-5 более менее активных вкладок в фф и врубается своп и все буквально умирает. Плюс фф, телега и, особенно, Idea нехило текут. 2-3 раза в день делаю ребут. Особенно перед или после запуска куче всяких тулз типа pgAdmin, dbeaver или какого нибудь постмана, или всего сразу, память забивает полностью. ЧЯДНТ?
>>2476157 Никак, когда 40 летние деды из треда вкатывались, от них требовалось знать только иерархию исключений и чем отличается эррейлист от линкедлиста.
>>2478069 Head first, там совсем для дебилов, которые только картинки воспринимают во всяком случае, она мне такой запомнилась Но вообще идеальным вариантом будет начинать с видиков на ютубе, это гораздо интереснее и легче поначалу, имхо
Сап двач. Кто что может посоветовать из курсов для вкатывания в Джаву? Интересно, что самое годное из Яндекс Практикумов/Хекслетов/Kata Academy и прочего.
С языком немного знаком: и несколько лет назад ходил в Айти школу Самсунга, будучи школьником, и Java Core на HyperSkill'e на четверть прошел пару месяцев назад, параллельно почитывая Шилдта, но потом подзабил в силу некоторых причин.
Сейчас же хочу уже активно за Джаву взяться, в приоритете бэкенд писать. От курса, помимо теории, хочу получить какую-никакую практику в виде хоть сколько-то приближенных к реальности задач и проектов, чтобы всё это сопровождалось адекватными кодревью. В принципе обратная связь для меня первостепенно важная штука, из-за которой именно курс хочу взять, потому что хочется научиться писать +- нормальный код, а не накручивать спагетти-код, который, кажется, даже делает то, что нужно, но впоследствии будет ужасать потенциальных работодателей/коллег.
Наличие чатов, где сидят те, кто так же учится, тоже будет плюсом, чтобы не было такого, что в случае затыка/непонимания придется оставлять коммент на страничке и ждать месяц, пока кто-то созволит на него ответить. Плюс это, наверное, какая-никакая, но поддерживающая среда.
В деньгах в принципе не особо ограничен (т.е. 140к за 10 месяцев Практикума готов отдать, если он того стоит), в свободном времени тоже, поэтому к нагрузке готов.
По окончании курса хочу быть +- пригодным хотя бы к стажировке с последующим выходом на работу. Под окончанием, конечно, подразумеваю добросовестное прохождение, наверняка, с параллельным обучением по другим источникам (тем же книгам), а не тяп-ляп хоть что-то сделать лишь бы получить сертификатик :)
Пока что склоняюсь к Яндекс.Практикуму, т.к. он, кажется, +- подходит под описанные выше критерии и довольно много о нем слушал, плюс в теории могу купить его за 70к вместо 140к, т.к. являюсь студентом (точно пока что хз, т.к. в академе сижу, и мб из-за этого не одобрят). Но вроде и job4j хвалят, хотя чисто по первому впечатлению сайт и инфа на нем их мне не особо вкатили хд. И все еще есть какая-нибудь Kata Academy, но стоящая почти в 2, а то и в 3, если таки дадут скидку Яндекс.Практикум, раза дороже, и кажется, что такой переплаты оно не стоит (обучение с постоплатой в виде процента с ЗП не рассматриваю). Да и еще куча курсов есть.
В общем, вариков не мало, и сложно их адекватно сравнить и выбрать лучший по соотношению цена/качество.
>>2479587 Через флаги JVM указать лимит потребления памяти. https://www.jetbrains.com/help/idea/tuning-the-ide.html > Готов заплатить производительностью. Это сейчас ты так говоришь, не пробовав запустить какую-нибудь Android Studio на 4 гигах, i3 и без SSD. Мало того, что запускается она 10 минут, так ещё и приходится закрывать браузер и другие программы, жрущие память, а для запуска эмулятора Android надо закрывать саму андроид студию и ждать ещё 15 минут.
> 10 минут Ну, я готов подождать иной раз, лишь бы не кончалась память как таковая, тогда экспириенс превращается в ад. У меня 8 гигов, и критично чтобы одновременно был запущен браузер и несколько рандомных демонов в докерах. Пусть работает медленней, но не будет виснуть все к чертям, чтобы не приходилось делать аварийный ребут, посреди демонстрации экрана коллегам, например.
> закрывать браузер и другие программы Мне вот как раз и нужно чтобы можно было другие программы использовать одновременно с Idea не поглядывая в ужасе и молитвах на индикатор памяти в системе.
>>2479593 Лол, начинал вкат в жабу с андройда, думал 10 минутные загрузки студии и лагучий эмулятор из-за моего не слишком современного ноута, а вон оно че оказывается
>>2480126 Да так и есть, любые тормоза решаются апгрейдом железа. С каждой версией всё это жрёт больше и больше ресурсов, когда-то и на слабом ноуте всё нормально работало. Bloatware оно и есть bloatware.
>>2480234 Да все, что ты описал, может регулярки только краем глаза или вообще пока опустить. У меня игогда складывается впечатление, что в стандартной жабе кроме коллекций и инструментов для работы с ними больше ничего нахуй почти не используется
>>2480234 Для чего тебе подобные списки, какой-то чеклист составляешь? Прочитай ЛЮБУЮ книгу по кору и будешь знать всё, что нужно. Главы про Swing и апплеты можно скипнуть.
>>2480371 Пошёл нахуй, чё тебя так триггерят эти талмуды? Книги, курсы, ютуб, мурзилки, суть не меняется. Я же не говорю, что надо именно читать книги.
>>2480278 Сложные задачи с регулярками в реальной практике редко встречаются? >>2480363 Пытаюсь понять что нужно приоритетно задрочить настолько, чтобы в 3 ночи разбудили, а та все помнишь.
>>2480414 > Сложные задачи с регулярками в реальной практике редко встречаются? Да, очень редко. > Пытаюсь понять что нужно приоритетно задрочить настолько, чтобы в 3 ночи разбудили, а та все помнишь. Ничего.
>>2480414 >>Сложные задачи с регулярками в реальной практике редко встречаются? Встречаются, но ты один хуй в гугел полезешь чтоб вспомнить какой символ что значит.
>>2458869 (OP) Есть одна программа, которая не хочет запускаться. Ошибка на пикриле, у меня стоит Java 8 и Java SE 13. Что я должен сделать, что бы программа заработала?
Аноны, а можно как-то через cli при запуске spring boot-приложения указать какая именно реализация сервиса будет инжектиться по-умолчанию? Есть интерфейс сервиса FooService и две реализации FooServiceImpl и FooServiceStub. FooServiceImpl будет инжектиться по умолчанию в продакшне, потому что он проаннотирован как @Primary. Но в тестовой среде я хочу использовать FooServiceStub, указывая в командной строке в тестовой среде именно его, не меняя код.
Что-то типа такого: java -jar application.jar --????=fooServiceStub
Сап, псы. А есть тут те, кто вкатился после 30ти? Поделитесь опытом. С подробностями, плиз: - какой лвл был когда вкат начали - сколько на вкат времени ушло - сколько зп была в начале/сколько сейчас - за какое время выросли из джуна в мидла и выше мб? - с какими проблемами сталкивались (хоть парочку) - еще какой-нибудь совет 30+ вкатуну
Вкатился в 32 без вышки. За полтора года гэпа учил джаву и писал петы. Дописал себе 4 месяца опыта в ООО Вектор и прошел 2 собеса из 4 (откликался неделю на все подряд, перезванивали далеко не все). Это было в 2020. Дали 50к, через 3 месяца подняли до 70к, еще через неделю выгнали на мороз. Через месяц сычевания дописал еще полгода опыта, прошел 2 из 2 собесов и вкатился на 100к. Это как раз перед войной было.
Щас надо было бы просить прибавку до 150-180к или перекатываться, но пыневизация порушила все планы и тружусь все также за сотыгу. Но хоть условия комфортные.
На своем стеке задачи делаю наравне со всеми, но на незнакомых буду тупить и работать медленно, поэтому скорее слабый мидл по уровню.
>>с какими проблемами сталкивались (хоть парочку) Не знаю о чем ты, но все мои проблемы - от людей. Сами технологии требуют для изучения только концентрации и времени. А вот найти подход к коллеге или начальнику-долбоебу куда сложнее. (работает в обе стороны, я тоже не образец адекватности)
>>еще какой-нибудь совет 30+ вкатуну ХЗ че тебе советовать. Айти в упадке - сиди дрочи спринг и надейся, что отскочит обратно и тебя самого к тому времени не утилизируют. Если ты уже за бугром - то шансов чуть выше. В любом случае пока не будешь уверенно круды писать лучше не суйся, чтоб не дизморалиться за зря. Но и слишком долго не тяни - я до сих пор кафку не знаю и похуй. Ее нет на проекте. На возраст в джаве не особо смотрят, с этим сильно не парься.
>>2488421 Да все вопросы примерно одинаковы. Кор джава, экуалс/хэшкод, коллекции, эскюэл, немного по спрингу, рест, иногда паттерны. Могут подушить волатайлами с синхроонайзами или хибернейтом.
>>2491333 UNIX не имеет прямого отношения к джаве и каких то базовых знаний тебе хватит. Пишу щас на винде, до этого была КДЕНеон - разницы особой нет. Другое дело конечно если девопсов не будет и тебе с деплоем ебаться придется - но это не то о чем должен думать ждун.
Ананасы, вот такой код на ревью сегодня дали на собеседовании. Что тут не так и что нужно изменить?
public class UserStats { private Map<String, AtomicLong> hitsPerUser;
public void onUserCall(String userId) { if (hitsPerUser == null) { hitsPerUser = new ConcurrentHashMap<>(); } if (!hitsPerUser.containsKey(userId)) { hitsPerUser.put(userId, new AtomicLong()); } hitsPerUser.get(userId).addAndGet(1L); } }
>>2493109 public void onUserCall(String userId) { if (hitsPerUser == null) { hitsPerUser = new ConcurrentHashMap<>(); } if (!hitsPerUser.containsKey(userId)) { hitsPerUser.put(userId, new AtomicLong(1L));//новый юзер первый рез хитнул } hitsPerUser.get(userId).incrementAndGet();//если это счетчик, то и юзать его нужно как счетчик } }
>>2494737 или даже так class UserStats { private Map<String, AtomicLong> hitsPerUser;
public void onUserCall(String userId) { if (hitsPerUser == null) { hitsPerUser = new ConcurrentHashMap<>(); } var hitCounter = hitsPerUser.computeIfAbsent(userId, k -> new AtomicLong()); hitCounter.incrementAndGet(); } }
>>2493109 >>Что тут не так 1. Уебанское форматирование. просто слелай скрин и запости, ты все таки на картинкодоске. Я б тебе просто номера строк указывал. 2. if (hitsPerUser == null) Тут синхронайз блок какой нибудь нужен с дабл чеком. Или как там нынче в синглтонах нынче ебуться с этим. Но я бы ее сразу инициализировал, а не в методе. Такая ленивая инициализая больше гемора создаст за сэкономленные пару байтов.
Решил повторить жабу поле двух лет перекладывания жсонов и запускания сиквела на сноуфлейке с использованием питонопараши и чет прям как домой вернулся... Какая же жаба охуеннай господи...
Вопрос про жаба код, но из android studio, так что хз в каком треде лучше спросить. Суть в том, что у TextView не выводит данные из переменных edit. Впрочем как и напрямую из ячеек массива. Как такое реализовать?
Привет, как найти физически базу, которую ведет Хибернет? Из адресов в ямл файле вижу только что-то вроде вот такого: jdbc-url: jdbc:oracle:thin:@eb-dev-db.ter-it.local:1521/DEV solr: url: http://solr.eb-dev-k4s-cloud.ter-it.local/solr/
Ку Необходимо разработать возможность расширения функциональности приложения с помощью плагинов (закинул в папку "plugins" джарник и тем самым расширил функционал) Но вот только пока не разобрался с какой стороны подойти, подскажет кто подходящую литературу? (Если можно будет использовать или интегрировать Spring то было бо прям хорошо) P.S начал смотреть теорию связанную с Class Loaders и OSGI
Ты какую реализацию сборщика мусора в джаве ты уважаешь? Нука быстро! Ты какую реализацию сборщика мусора в джаве уважаешь а? Я тебя спрашиваю! Мне G1 нравится. УАААААААААААААААА че ахуел что ли я ненавижу Parallel и G1 АААААААААААААААА. я уважаю ShenandoahGC
Ты какую реализацию сборщика мусора в джаве ты уважаешь? Нука быстро! Ты какую реализацию сборщика мусора в джаве уважаешь а? Я тебя спрашиваю! Мне G1 нравится. УАААААААААААААААА че ахуел что ли я ненавижу Parallel и G1 АААААААААААААААА. я уважаю ShenandoahGC
Ребзи, завтра заканчивается любезно продленный, в связи с мировыми событиями, джетбрейнсом триальчик на Идею. Как дальше быть? Можно как-то из РБ подписку оплатить? Чет не оч охота эклипсу дрочить честно говоря...
>>2458869 (OP) Сап, джаваны. Хочу немножко сменить область и после семи лет крестов с соответствующими задачами (в основном многопоточность и сеть) свитчнуться в жабу. Вопрос: какие у вас примерно задачи на работе? В моем представлении типичная задача жабиста выглядит так: - пойти в СУБД через ОРМ - вытащить N строчек - сериализовать их в джейсон и отдать по HTTP - goto 10 Возможно, я ошибаюсь. Но не хотелось бы променять накопившийся за семь лет благодаря крестам пласт знаний (от чисто теоретических - как на прыщах под x86 устроена виртуальная память и взаимодействия атомарных операций с кэшами до вполне практических вроде устройства динамических прыщебиблиотек) на перекладывание джейсонов между микросервисами.
В ФАКе написано читать 4 версию Spring in Action. Я начал, но чёт как будто воды дохуя. И оказалось, что 6-я версия тем временем на русском появилась. Так вот, стоит ли дальше 4-ю читать? Или забить, и начать 6-ю, тем более, что на русском всё равно попроще читается, т.к. родной язык.
Если у меня спринговый проект с зависимостями. Пока я не поставлю на Шинду сам mvn (не пропишу переменные среды), то проект в идейке не будет билдиться?
И еще. Где-то находил что нужно прописывать MAVEN_HOME, а в других M2_HOME. Что из этого верное? Вроде и так, и тар работает.. не понимать