Это копия, сохраненная 2 августа 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Как считаете норм книжка, для вкатунов?
Просто сравните яву с .NET (https://devblogs.microsoft.com/dotnet/announcing-net-6/), который создавался как клон джавы и превратился в прекрасного лебедя
>
wow she is literally me
Нет, напрямую джава-коллекциями.
Там до сих пор полная привязка к винде. Они даже купили Моно, чтобы задушить его. Нет кор - обрубок от фреймворка и появился только благодаря Моно.
Ну у меня в планах, но надо же с чего-то начинать. Вот когда буду в джаве более менее уверено себя чувствовать, тогда и на фреймворки смотреть буду.
>>263128
>>262779
Да, на максоси анальная боль писать на шарпе. Я сначала там пытался, теперь перешел на джаву. Раз они такие пиздатые, че тогда они не могут банально один и тот же visual struido на две разные разные ОС написать.
Не плачь. Пиши на своем шарпе и радуйся, что мы, дауны, пишем на такой плохой джаве.
create table notebook
(id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
name varchar(16),
date date,
text varchar(64));
create table listtags
(id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
tag varchar(16) UNIQUE);
create table tags
(id_nb int REFERENCES notebook(id),
tag_id int REFERENCES listtags(id));
И два класса с аннотациями
public class Notebook implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String name;
private LocalDate date;
private String text;
@ManyToMany(fetch = FetchType.LAZY)
@Cascade({ CascadeType.SAVE_UPDATE, CascadeType.MERGE, CascadeType.PERSIST})
@JoinTable(name="tags",
joinColumns = @JoinColumn(name="id_nb"),
inverseJoinColumns=@JoinColumn(name="tag_id"))
private Set<Listtags> tags;
@Entity
@Table(name = "listtags")
public class Listtags implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String tag;
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "tags")
@Cascade({ CascadeType.SAVE_UPDATE, CascadeType.MERGE, CascadeType.PERSIST})
/@JoinTable(name="tags",
joinColumns = @JoinColumn(name="tag_id"),
inverseJoinColumns=@JoinColumn(name="id_nb"))/
private Set<Notebook> notebook;
Вот я вставил первую запись:
HashSet<Listtags> tags = new HashSet<Listtags>();
tags.add(new Listtags("tag1"));
tags.add(new Listtags("tag3"));
notebookLogic.save(new Notebook("n2", LocalDate.parse("12.12.2000", dtf), "t1", tags));
Теперь в notebook
1 n2 12.12.2000 t1
В listtags
1 tag1
2 tag3
В tags
id_nb tag_id
1 1
1 2
Но при вставке новой записи, в которой теги будут повторяться:
HashSet<Listtags> tags = new HashSet<Listtags>();
tags.add(new Listtags("tag1"));
tags.add(new Listtags("tag3"));
notebookLogic.save(new Notebook("n1", LocalDate.parse("14.08.2000", dtf), "t2", tags));
Вылетит ошибка ОШИБКА: повторяющееся значение ключа нарушает ограничение уникальности "listtags_tag_key
Кто-нить сталкивался в работе с Hibernate с такой проблемой? Как мне сделать так, чтобы после 2й вставки было:
Теперь в notebook
1 n2 12.12.2000 t1
2 n1 14.08.2000 t2
В listtags
1 tag1
2 tag3
В tags
id_nb tag_id
1 1
1 2
2 1
2 1
create table notebook
(id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
name varchar(16),
date date,
text varchar(64));
create table listtags
(id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
tag varchar(16) UNIQUE);
create table tags
(id_nb int REFERENCES notebook(id),
tag_id int REFERENCES listtags(id));
И два класса с аннотациями
public class Notebook implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String name;
private LocalDate date;
private String text;
@ManyToMany(fetch = FetchType.LAZY)
@Cascade({ CascadeType.SAVE_UPDATE, CascadeType.MERGE, CascadeType.PERSIST})
@JoinTable(name="tags",
joinColumns = @JoinColumn(name="id_nb"),
inverseJoinColumns=@JoinColumn(name="tag_id"))
private Set<Listtags> tags;
@Entity
@Table(name = "listtags")
public class Listtags implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String tag;
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "tags")
@Cascade({ CascadeType.SAVE_UPDATE, CascadeType.MERGE, CascadeType.PERSIST})
/@JoinTable(name="tags",
joinColumns = @JoinColumn(name="tag_id"),
inverseJoinColumns=@JoinColumn(name="id_nb"))/
private Set<Notebook> notebook;
Вот я вставил первую запись:
HashSet<Listtags> tags = new HashSet<Listtags>();
tags.add(new Listtags("tag1"));
tags.add(new Listtags("tag3"));
notebookLogic.save(new Notebook("n2", LocalDate.parse("12.12.2000", dtf), "t1", tags));
Теперь в notebook
1 n2 12.12.2000 t1
В listtags
1 tag1
2 tag3
В tags
id_nb tag_id
1 1
1 2
Но при вставке новой записи, в которой теги будут повторяться:
HashSet<Listtags> tags = new HashSet<Listtags>();
tags.add(new Listtags("tag1"));
tags.add(new Listtags("tag3"));
notebookLogic.save(new Notebook("n1", LocalDate.parse("14.08.2000", dtf), "t2", tags));
Вылетит ошибка ОШИБКА: повторяющееся значение ключа нарушает ограничение уникальности "listtags_tag_key
Кто-нить сталкивался в работе с Hibernate с такой проблемой? Как мне сделать так, чтобы после 2й вставки было:
Теперь в notebook
1 n2 12.12.2000 t1
2 n1 14.08.2000 t2
В listtags
1 tag1
2 tag3
В tags
id_nb tag_id
1 1
1 2
2 1
2 1
че ты высрал...
> tag varchar(16) UNIQUE);
> при вставке новой записи, в которой теги будут повторяться:
> нарушает ограничение уникальности "listtags_tag_key
Чел
Ну так без этого у меня просто запишется куча одинаковых записей в ту таблицу и условие нормальности нарушится
> tags.add(new Listtags("tag1"));
Я не работаю с хибером, но по моему тебе во второй раз нужно не создавать тэг, а загружать его из таблицы, потому что у этого объекта нет айдишника и хибер пытается его создать и падает с исключением, потому что тэг unique
>че тогда они не могут банально один и тот же visual struido на две разные разные ОС написать
Потому что Visual Studio, которая на винде, разрабатывается с очень давних времен, когда сишарпа еще даже не существовало. Естественно там наверняка много кода написано на С/С++ с завязкой на системные функции винды, winAPI, MFC, вот это все.
Да и интерфейс у студии написан на WPF и винформах. А их портировать на другие платформы невозможно в принципе.
Вот поэтому вижуалстудию вряд ли когда-либо портируют на линукс или мак ось.
Да и вообще, знал бы ты, как долго в MS пилили 64 разрядную версию студии. Вроде бы только к 2020 году осилили, до этого была только 32 битная версия, лол.
А так, чем плох райдер? Работает под всеми платформами и всегда был 64 битным, спасибо jetbrains.
Asp.net core под кестрелом работает, да, EF тоже.
А вот всякие окошки, винформы, впф - нет. И очень жаль, я всегда хотел бы писать гуи под линкус используя понятные и простые винформочки. Авалония далеко не на том уровне удобства по сравнению с винформами.
Ваша джава - дырявое говно
Ваша джава - дырявое говно
К примеру, нажал галочку soft-wrap, чтобы текст переносился, если строка слишком длинная. Но при перезаходе в IJ с вероятностью 50% галочка снова отжата, а с вероятностью 50% она нажата, но настройка всё равно не применяется.
И это говно повсеместно. И они ещё требуют деньги за этот кал!
Зато очень много всего, что нужно и из коробки. Вскод вообще не конкурент, если джава основная платформа. Нетбинс/эклипс иногда используют старперы/жлобы.
В вскоде есть плагины: для спринга, джава ее, мавена, градла, клиент для бд, хттп сервер, джава профайлер, ломбок, jpa-buddy?
Эта книжка с учетом шрифта в 5 раз больше. И ее нет на русском. То есть мне нужно в 10 раз больше времени на нее. У меня нет столько времени. Прокомментируй, почему не стоит читать ту книжку.
Да, большая проблема всего джава сообщества.
> Нужно в 10 раз больше времени на неё
That's where you're wrong kiddo
Всё зависит от того как ты читаешь, какие главы и какие упражнения делаешь. Не бывает такого, чтобы одинаковые знания за 10 страниц и за 100 усвоились одинаково
> Почему не стоит читать ту книжку
А тебе зачем вообще книжка по структурам данных? Если тебе хочется ложное ощущение того, что ты всё знаешь и понял читай свою книгу на здоровье. Если ты хочешь разбираться в структурах данных и не обосраться на собесе, то тебе нужно читать нормальную и потом ещё по сорцам пробежаться основным
Мне нужно создать ощущение у интервьюера, что я что-то знаю по алгосам и знаю коллекции джавы. У меня уровень достаточно низкий и мне придется прочесть всю твою книгу. А это месяц только на нее. У меня его нет.
Ну вот мне задали вопросы. В какой мап/сет нельзя класть нулы и почему? Чем отличаются линкедлист и ArrayDeque? И еще что-то. Я это потом нагуглил, но хотелось бы вот на такие простые вопросы иметь представление, а глубже особо не копать.
Тогда просто походи по собесам. Я когда работу искал так и сделал, в начале походил на собесы в говнокомпании всякие, в итоге после десятого вопросы начали повторяться и стало совсем легко
В говнокомпании меня берут без собесов почти. Вчера спросили с чем работал, что трогал в петах, про что просто читал, что такое ооп и скуэль, вы приняты. Но там просто супер дно. До этого было еще одно такое место, я у них даже постажировался за зп.
А в норм места и даже средние галеры просто не зовут на собесы. Наверно слишком старый. И я пока чекал удаленку. Из 200 откликов было 2 собеса. И еще 6 раз мне писали херки, обещали собес. Но потом, поговорив с представителями отдела - слали нахуй.
Ну так поработай в супер-дне с годик, потом вкатывайся в нормальное место. С >1 годом опыта вкатиться как нехуй. Ну и смотря насколько ты старый. Для кого-то это важно сейчас, мол, не хотим работать с 25+ вкатышами.
Так почему ты не хочешь в говнокомпании поработать, набрать опыта чутка, чтобы тебя потом херки оторвали с руками
>Мне нужно создать ощущение у интервьюера, что я что-то знаю по алгосам и знаю коллекции джавы
Смотрел лекции Тагира Валеева? Там достаточно подробно разобраны коллекции. Про нуллы в мапах тоже он рассказывал. Зачитываться талмудами смысла нет ровным счетом никакого.
Отметенный вариант. Я же писал по стажировку. На деле я устроился на фултайм по тк и свалил через 2 недели. Начало нагнетать, что мне не нравится этим заниматься. Не помогло, что мне сходу дали соротыгу, хотя раньше я 20 получал. Вчера предложили 50, можно было до 60 добазариться. Но там проект еще больший кал.
Например там нет исходников и придется варник декомпилировать. И быть единственным бекедером в совсем неайтишной конторе.
>>263782
По той же причине, почему я свалил с неайтишной работы. Надоело жрать говно и ненавидеть работу.
>>263785
>Зачитываться талмудами смысла нет ровным счетом никакого.
Я так и считаю и та брошюрка с сорокой на 200 страниц очень крупным шрифтом.
От Тагира посмотрю, но что-то странно,чтобы подробности двухчасовой лекции.
>но что-то странно,чтобы подробности двухчасовой лекции
А конкретно какие подробности коллекций тебе нужны, да еще и такие, чтобы в два часа не уложиться?
Всякие concurrent структуры данных? Неблокирующие списки, очереди, хэшмапы, вот это все? Для понимания многопоточных коллекций нужно открывать Java concurrency in practice вместе с The art of multiprocessor programming и прямо зачитываться этими талмудами с теорией про эти коллекции и их способы реализации. Ну и статьи на баелдунге тоже ничего, во всяком случае их статья про лок-фри очередь мне понравилась. А если еще в wait-free структуры данных копнуть, то там вообще можно несколько месяцев потратить на изучение папиров.
А так, тебе вероятно нужно эту статью разобрать
https://habr.com/ru/post/599045/
Тут как раз про внутренне устройство всевозможных коллекций, можно попускать вкатунов этим материалом.
Для большинства собеседований как на стажера, так и на сеньора, этого материала вместе с лекциями Тагира и баелдунгом будет достаточно.
Однако если тебя очень сильно заинтересуют lock-free очереди в самых глубоких деталях, то есть цикл статей с различными бенчмарками и обзором научный статей по этой теме
http://psy-lob-saw.blogspot.com/p/lock-free-queues.html
Спасибо тебе, анон. Твоими ссылками воспользуюсь. Пономарев клевый, смотрел сего лекции мфти. Тагировскую лекцию прямо сегодня наверну.
От многопоточки пока воздержусь. Тоже долгая тема, требующая талмудов, но когда-то хочу освоить. Может через годик-два.
Вот вопрос так, чтобы примерный роадмап про многопоточку составить. Java concurrency in practice это база, я понимаю. А что наcчет поздних нововведений из 7-9? CompletableFuture или Reactive Streams. Только статьи всякие или тоже есть талмуды?
>>263672
Тебе тоже спасибо на самом деле, эту книжку добавил в облако с личной библиотекой по кодингу.
>CompletableFuture или Reactive Streams
Неплохие доклады про фьючи
https://www.youtube.com/watch?v=-MBPQ7NIL_Y
https://www.youtube.com/watch?v=W7iK74YA5NM
Еще неплох пикрил, там 3-4 главы посвящено фьючам и реактивным стримам.
А так смысл залезать в реактивщину есть только при знакомстве с Spring webFlux. Да и то, я бы не рассчитывал сильно, что реактивщина еще очень долго будет популярна. После выхода Loom будет в разы проще писать обычный блокирующийся код с виртуальными тредами, не используя реактивщину. Но на вебфлюхе уже достаточно проектов, их нужно будет кому-то поддерживать, поэтому ознакомиться можно, но залезать в глубины имхо смысла нет. Для вкатуна имхо важнее в принципе понять что такое асинхронность и какие проблемы она решает. На работе скорее всего у тебя будет обычный спринг на классическом томкат сервере без реактивщины и асинхронности.
Ну вот мне теоретически интересна вообще многопоточка, не реактивщина. Ну просто прикольной эта тема кажется. Ну а ради просто прикольности тратить месяцы на тему это такое.
А многопоточка вообще может быть где-то реально нужна на спрингокрудовом стеке?
Ты вот читал книжки, смотрел докладики. А ручками это потрогать где-то приводилось?
Я вот за время изучения спринга вообще многопоточный код сам не писал. Он весь под капотом.
Самому, как я видел, в свинге нужно создавать треды и организовывать общение между ними. В других гуи библиотеках и в андроиде думаю примерно тоже.
Я по сути такой же вкатун, как и ты, только опыта может чутка побольше. Многопоточный код в проде ни разу не видел. Все действительно под капотом спрятано обычно.
Но вообще наверняка где-то и нужна, раз уж иногда проскакивают вакансии, где нужно и JMM знать и многопоточные коллекции. Хайлоад какой-нибудь или алготрейдинг. Хотя последнее для джавы довольно редкое явление.
Думал может ты подскажешь идею для пета, в котором нужна многопоточка не в гуе. Ну чтобы через пет-проект и учить эту самую многопоточку.
Может подкинет кто-то другой идею. Тут же все помидоры дохуя.
В основном дрочится синхронизация между потоками (бывает что даже на разных машинах). Т.е. один пользователь делать что-то, что затрагивает A, другой пользователь делает что-то, что затрагивает A. Соответственно, нужно парковать второго пользователя, пока первый не закончит. Т.к. неграмотная синхронизация бьёт по производительности, то основная задача состоит в том, чтобы понять, где нужно лочиться.
Для пета могу посоветовать написать обработчик долгих задач. Например, пользователь нажал кнопку - выгрузить всех пользователей из паблик вк апи, и посортить/отфильтровать/сохранить/etc. куда-либо. После нажатия кнопки мы говорим пользователю, что все ок, мы работаем, но он не висит и не ждет выполнения задачи. В это время он идёт заниматься другими делами. А через 5-10 минут спросить: что там с задачей, которую я стартовал?
Да не, лум пилят активно, сейчас проект #1 для команды разработчиков openjdk, это по коммитам видно.
Другой вопрос, что начали его пилить в 2018 году, а сейчас уже 2022 начался.
Как-никак, но запилить виртуальные потоки с планировщиком тяжко. А если еще учесть, что вирутальная машина теперь должна определять вызовы блокирующего IO внутри виртуальных тредов, после чего выносить их в какой-нибудь аналог гошного netpoll'а чтобы не заблокировался системный поток, то сразу становится понятно, что работы там явно не на год-два даже при минимальном функционале.
Вызубри сложности на базовых коллекциях да и всё.
https://cheatography.com/burcuco/cheat-sheets/data-structures-and-algorithms/
Есть ли тут успешные вкатуны? что вы изучали, в какой последовательности? Какие книжки, может ресурсы? В шапке хуйня какая-то написана. К примеру по спрингу - предлагается выучить спринг стэк полностью по курсу какого-то австралийца. Но это разве возможно? Я пытался читать доку, но она там какая-то ебанутая. Скачат от темы к теме.
Успешно вкатился в жаву. Сначала делай учебную хуйню, типа там ввести количество букв и вывести в консоль. Потом читаешь книжку по структурам данных и алгоритмам, кодишь их. Параллельно ещё изучаешь ооп с базами данных. После этого делаешь какой-нибудь уже сложный проект с архитектурой и ооп, в моём случае это была андроид приложуха. После этого можно вкатиться в Java ЕЕ немного с вебом, понять сервлеты, рест, клиент серверное взаимодействие и прочее. И после этого спокойно врываешься в спринг и за неделю осваиваешь всю хуйню, потому что все базовые принципы (ООП, паттерны, Java EE, коллекции, веб) ты изучил и всё понятно. Как-то так
>После этого можно вкатиться в Java ЕЕ немного с вебом, понять сервлеты, рест, клиент серверное взаимодействие и прочее.
ну все что ты перечислил я примерно себе представляю (рест трогал еще на этапе жабаскрипта - небольшой проектик учебный под курс какого-то португальца запилил,но даже исходников не осталось), сервлеты жпа трогал (пытался даже читать доку по таймлифу, хз нужно ли это вообще) Плюс я и на спринге все это потрогал уже.
Получается мне сейчас нужно освежить знания по спрингу и жаба кору, порешать задачки на кодеварс, сделать петпроект(ы) и пытаться кидаться своей резюмешкой с гитхабом на хх ру?
А то блядь читаю вакансии, а там JMS докеры хуёкеры спринг клауды. Я в душе не ебу как все это блядь учить и по каким книжком и чтоб струткурировано было
Ну вообще чисто теоретически докер важная штука, но полно проектов без него. Но чтобы изучить докер по хорошему нужны знания устройства линукса какие-то, затем просто проходишь туториалы на сайте докера, они хорошие, там даже playground есть
>JMS
Оч проектно-специфично, есть шанс что ни разу не пригодится, не парься по нему.
>докеры
ОСНОВЫ знать надо, это КЛАССИКА уже. Основы на офф сайте учатся. Все сотни параметров и ключей знать не надо, только основные моменты - как устроена ФС, как пробарсывать порты, подрубать volume, писать докерфайлы. Хуйня учится за неделю.
>спринг клауды.
Нахуй не надо если ты не сеньер с запросом > 400k
Ну и вообще на мидла/ждуна больше задач по языку/алгоритмам обычно, меньше по фреймворкам и архитектуре, поэтому дрочи сайты вроде этого: https://itsobes.ru/JavaSobes/
Ок. тогда попробую сперва повторить спринг и хибернейт, сделать проектик(и)
а потом с головой погружусь в это базовое говно. Хорошая тактика?
я начинающий трап
стоит ли вкатываться в джава? или попробовать другой стэк (не хочу фронт)?
насколько в джава толерантное коммьюнити?
в какие вообще компании можно устроиться на джава, кроме сбера и ему подобных (на бэк)?
не погонят ли с работы, когда условно начну приходить в чулочках и менять паспорт?
нет, это не троллинг
Я вышеотписавшийся вкатун на депрессии, но рискну предположить, что за подобными условиями вам стоит обратиться к node.js стэку (правда, придется потрогать все же фронт, ибо там это неделимо). Там куча хипстеров в свитшотах, девочек смузи и максимально дружелюбное к ЛГБТ коммьюнити (отчасти потому, что само коммьюнити на половину или больше состоит из пидарков).
В джаве натуралы задроты с красными глазами.
Хуйня, я жава разраб, в теории не отказался бы поняшиться с няшным трафиком:33
Твой друг гей.
> Пик.1
Смешнявка шутливая, но непонятно, воспринимать как иронию, или как правду, или как и то и то
>>264516
> в раст
Работы на него очень мало, джуну вообще нет
>>264537
> к node.js стэку
На хх "junior nodejs backend" всего 30 вакансий, по всей рф, без фильтрации нерелевантных. Это мало будет. А на фронтенд не хочется.
>>264515
> в шарпотред
посмотрим лол
Так че друг то говорит? Зачем он тебе советует питон. тем более, что он фронтендер?
Ну а как отличить вкатуна-неосилятора от нормального, способного задрочить синтаксис / библиотеки / основы многопоточности?
В целом хорошая, главное помнить, что на джуна, например, спринг и не спрашивают зачастую, поэтому залезать в дебри не рационально. Только если тебе это интересно
В целом стратегия такая - чем раньше ты устроишься в коллектив и начнеш обучаться за счет работодателя - тем лучше. Пусть даже это будет стажерство или типа того. Этой и не только стратегией я уже помог джвум людям дойти до мидла с нуля после 30лвл.
>hh.ru поиск по России
>3 257 вакансий «Java spring»
>Найдено 4 527 резюме у 3 877 соискателей
>1 106 вакансий «python django»
>Найдено 5 757 резюме у 4 806 соискателей
>1 561 вакансия «asp.net»
>Найдено 6 756 резюме у 5 253 соискателей
>274 вакансии «Node.js express»
>Найдено 1 396 резюме у 1 262 соискателей
>1 352 вакансии «php laravel»
>Найдено 2 239 резюме у 1 875 соискателей
>801 вакансия «Ruby on Rails»
>Найдено 3 469 резюме у 2 689 соискателей
Та же джанга - ровесница спринга. И на других платформах легаси тоже полно.
>1 395 вакансий «java 6»
>1 557 вакансий «java 7»
>3 226 вакансий «java 8»
>1 525 вакансий «java 11»
>967 вакансий «java 15»
>386 вакансий «java 17»
Нормас, за это и люблю джаву: работа есть как для любителей старины, так и для любителей модных YOBA версий.
Почему пиздит?
Не пиздит, есть проекты с 17 жавкой
И это правильно.
>А так, чем плох райдер? Работает под всеми платформами и всегда был 64 битным, спасибо jetbrains.
Интерфейсы на макоси это боль. Нет никаких windows forms, только обоссаный xcode.
Через 10 дней у тебя её отберут, если не заплатишь
Видимо мне пиздец не везет. Два собеса на стажера, один на джуна, везде выебали по спрингу и хибернейту.
Ты ведь никогда не использовал настоящую VS? То что на маке - это просто с нуля переписанный огрызок, который просто использует имя продукта.
Да кого это ебет?
Как-то жирно
Да проверяли. Когда работал на оборонку, у нас была сборка проверенная на отсутствие закладок. Ну и понятно, что вся критическая инфраструктура работает в изолированных сетях не подключенных к интернету.
Liberica
вот эти все ваши спринги-буты-клауды, хибернейты, спарки? какие еще ключевые слова ожидаются от норм жава разраба?
Спарк не ожидается
Если с нуля, то укради курсы от отуса. Сперва по джаве, потом по спрингу.
Самое главное, что весь стек есть.
Но многие преподы деревянные. И как на любых курсах нужно будет гуглить и читать сверху стековерфлоу и баелдунг.
не, не у нуля
когда в универе учил жаву
плюс есть несколько лет опыта на питонах и жыэсах
но просто доков мне недостаточно, у меня легкая зубная боль начинается от их чтения, где класс-классом погоняет в болоте xmlин.
но все-равно хочется научиться актуальной жаве и евонным фреймворкам.
Вот мои советы по изучению спринга. Почти все на русском, баелдунг, спринг ин экшон и дока спринга на примитивном английском :
Самое начало: di + mvc. Объяснено очень доходчиво для дебилов.
https://www.youtube.com/watch?v=5ePo08sqcpk&list=PLAma_mKffTOR5o0WNHnY0mTjKxnCgSXrZ
Полноценный курс, преподы вроде шарят, но многие не умеют говорить, так-что кое-что объяснено плохо. Но в плане курса есть все что нужно.
https://nnmclub.to/forum/viewtopic.php?t=1474084
Плохо написано, очень много устаревшего(но в джаве часто придется работать со старыми версиями библиотек). Не советую, но на всякий случай. Тоже охвачено почти все, что нужно новичку, но почти все примеры без бута.
https://rutracker.org/forum/viewtopic.php?t=5694169
Практика. К практике советовал бы переходить, после изучения mvc:
https://www.youtube.com/playlist?list=PLU2ftbIeotGoGSEUf54LQH-DgiQPF2XRO
https://www.youtube.com/playlist?list=PLU2ftbIeotGqSTOVNjT4L3Yfy8jatCdhm
https://rutracker.org/forum/viewtopic.php?t=5640790
Для конкретных вопросов короткие туториалы с хеловордами:
Самая большая подборка всякого говна, не только спринг, очень полезно:
https://www.baeldung.com/
Тоже самое, но по русски и меньше. На этих двух ресурсах начинал учить хибер:
https://easyjava.ru/
https://sysout.ru/
Ну и гайды доки само собой:
https://spring.io/guides
Натыкался на другие места. Но зашли эти. Везде можно скачать код. Или с гита или архивом.
У него выпускников сразу забирают на галеры и работодатели постоянно требуют новых гребцов с него.
Сережа, иди пили свои видосы лучше, где ты по 10 раз одно и тоже пересказываешь. Хватит на дваче пиариться.
Мне самому не нравится лобок, но лобок это данность. Его дохуя уже в легаси коде. Надо просто с ним жить.
Он же отстал от жизни лет на 10
Как будто что-то плохое.
мимо вкот-в-жабку
Есть даже для мавена плагин. Этот дебик-луддит даже не в курсе, чему я конечно же не удивлен.
Пока всё не изучишь. Сроки индивидуальны.
Думаю месяцев 8 это минимум. У меня почти 2 года ушло до первого собеса. Но я дико ебланил.
Без спринга ты таки нахуй никому не нужен, разве что на стажировку, студентом из профильного вуза.
Кроме джавакора нужно обязательно:
- maven
- sping core, spring boot
- sql(на постгрес будет легче всего), jdbc.
- html/css/http/rest + spring mvc
- junit базовый
не обязательны, но очень желательны:
- hibernate + spring data
- js, хотя бы fetch для rest запросов
- spring test
- gradle
- основы docker
Может и есть, не пользуюсь этим говном. Зачем сначала создавать себе проблемы и потом придумывать костыли для их решения?
Спасибо!
1 неделю, заучи ответы и вперед
Существует, но не в Рашке.
Как ты себе это представляешь? html-парсер это не полноценный браузер, там нет видимой части экрана.
getBoundingClientRect() это не просто жс, а апиха браузера.
> Как ты себе это представляешь?
не знаю
мне просто по top/right/left/bottom, margin'ам и куче дивов вложений входят символы в промоугольник или нет посчитать надо как-то..
это https://github.com/google/elemental2 тогда тоже левое для меня что-то тогда
спасибо за объяснение, думал это другое
Хочу взломать джава игру (3д модельку поменять например), какой прогой можно открыть и редактировать готовую прогру на джаве? А то мод на джава игры выглядит как файл который просто сунул и ниче перекомпилировать не нужно.
Прогал на с и использовал винапи, с джавой разберусь, просто нужен инструментарий для открытия готовых файлов.
Осталось только в бэкофисах. Выгоднее, чтобы клиентская пека реакты рендерила.
Я для себя спрашиваю, потому что не хочу учить всякие vuex и redux. По моему проще на сервере сделать страницу, чтобы всё состояние сразу было в html без говняка всякого.
Жесть, оказывается это не шиз-школьник, а настоящая журнашлюха из телеграмма так хуйню пишет. Просто пиздец. Оракл отключит джаву, а Торвальдс Линукс вырубит.
Они собираются от Swift отключить, что им стоит отключить Java и Kotlin?
Не то, чтобы обосрались, просто модули оказались никому не нужны, вот и все. Я до сих пор не понимаю, в чем их смысл в принципе.
Так и апплеты тоже, в виде webassembly. Хотя могли бы уже дано кроме js разрешить другие интерпретаторы в браузерах.
Они якобы нужны только самому ораклу, чтоб починить jar hell в jdk.
>Хотя могли бы уже дано кроме js разрешить другие интерпретаторы в браузерах.
Старый IE позволял использовать VBScript, Хром умеет Дарт исполнять. Только это все одно никто не пользует.
Дарт нэт. Это для хакеров.
Нет. У жабы вообще нет такой задачи - конкурировать с плюсами в скорости вычислений.
С++ как правило компилируется в нативный двоичный исполняемый код, тогда как у исходного java-кода есть множество вариантов исполнения. В приемущественном большинстве, у С++ больше бенефитов чем у java именно по "скорости выполнения" для получения конечного результата.
>Правда ли, что современная Java не сильно уступает по скорости С++ при выполнении горячего кода?
починил ftgj
https://dart.dev/
Тока я напиздел, хром не умеет исполнять дарт. Они хотели добавить поддержку, но видать передумали. Только компиляция в жопаскрипт.
Это правда. Жаба разъебала гадюку. Пусть все знают и страшатся.
Graalvm для кого придумали
Посыл в сборке минимальных самодостаточных образов
Дело в том, что иногда по ночам мне кажется, что я яваблядь. Мне хочется выделять память, зарабатывать на доширак, пиздеть про энтерпрайз, сваливать свои проблемы на чужие плечи и писать нечитаемый бессмысленный говнокод.
Я ворочаюсь, страдаю, рычу, а под конец вскакиваю с кровати и хватаю первое, что попалось под руку.
Это может быть тапок, топор или простая поварешка, но в моем воображении она становится огромным прожорливым интерпретатором.
С этим интерпретатором я открываю корпус сервера, ставлю ещё две планки оперативной памяти и с громким боевым кличем выбегаю на улицу. Я бегаю под окнами своих соседей и ору: "Ява не тормозит, тупые нищебляди!! Купите нормальное железо!!"
Но они не покупают... Они привыкли.
И когда я уставший, но довольный, поднимаюсь в квартиру, наоравшись и набегавшись, одна из дверей открывается. Там, лукаво сверкая глазенками, стоит маленький соседский мальчик Женька. Он громко шепчет беззыбым ртом "Клоссплатфолменность!" и ободряюще мигает мне одним глазом.
Я, улыбаясь ему, прохожу мимо, и в душе моей поют заказчики.
А дома я открываю бутылку водки, морщась, выпиваю ее до половины, и ловлю кота. Ругая этого "сраного волосатого индуса", я сажаю его за клавиатуру, и чтобы он не убежал, приматываю его к ней скотчем.
А дальше все просто.
Я стою у окна, пуская скупую быдлокодерскую слезу по своей прыщавой щеке , и мечтаю. Я представляю, что огни домов -- это пламя костров, на которых сжигают крестопидоров, шум машин -- это рев кулеров в серверных, а в мире нет ничего, кроме великого энтерпрайза и нас, яваблядей...
И я жду, что вдруг, вот сейчас, в мою дверь войдет начальник и скажет: "Эй, раб, ты чо так так долго? Давай, быстро дописывай исходник. Похуй, если будет тормозить - разберутся те, кто будет сопровождать! ГА-га-га-га!" И ободряюще хлопнет меня по спине.
И тогда не будет в мире счастливее человека, чем я... Точнее, явабляди.
Что же мне делать, анон? Что же мне делать?
Бамп.
Хорошая паста, только кресты надо на шарп переделать
Какой прогой?
На собеседованиях дрочат кишочками JMM. Есть какой-нибудь гайд, где понятным языком (не спецификация и не шизостатьи Шипилеши) расписано как все работает на низком уровне? Объясняю им happens before, но им мало и начинают - "а вот тут файнал и при инициализации такого-то поля что будет?". Устал...
Слишком заумно пишет, лично для меня. Его писанина ничем по-сути не отличается от тех попыток объяснить как работают потаенные углы JMM описанные в спеке.
2) Как научиться применять такие библиотеки как Apache Commons/Guava? В частности, интересуют библиотеки с новыми коллекциями. Стандартных джавовских обычно вроде хватает.
Пытться решать задачки с оглядкой на новую либу или сначала покурить документацию до просветления?
Запустил в VS Code и что мы видим? Табы работают как и положено. Получается обсирается "самая лучшая IDE" от жидбрейнсов.
Сертификата java разработчика
В прошлом треде уже обсуждали, что кривая идея от жидбрейнсов не умеет запускать программы через терминал из-за кривых путей.
Вообще-то, я даже решил задачку Шилдта. Могут ли бездари сделать то же?
Только бездари называют переменные одной буквой. Кто из вас такой говноед, ты или Шилдт тоже?
Это нормальная практика для коротких задачек. Кроме того имя переменной отображается в выводе. В курсе дискретной математики, насколько я помню, также использовали однобуквенные переменные для подобных примеров.
Уже ознакомился с тем, что такое табуляция? Если да, то почему все еще непонятно, троллинг тупостью что ли?
Подсказка для самых маленьких - скопируй результат с обоих скринов в любой редактор.
1) Нет
2) Они не то чтобы часто используемые на самом деле. Если понадобятся на работе, тогда и выучишь. На собесах обычно стандартные коллекции всегда спрашивают.
Вот узнал я что такое табуляция и как это отменяет тот факт, что виновата всё равно иде от жидбрейнсов? Почему в VS Code красиво отформатированный вывод, а в жидбрейнсе кривое говно? Моё знание или не знание ни как на это не повлияет. Это нужно знать в первую очередь разработчикам в жидбрейнсе.
Отправь им багрепорт, пусть покринжуют.
Это нормальная практика только для людей, которые не умеют программировать, то есть либо для математиков, которые хотят себе накидать программку, либо для студентов, которых программировать не учат, а учат списывать бессмысленные лабы. Для человека, который называется/хочет называться программистом, такая практика неприемлема никогда.
Заебал, блять, ты нихуя не ознакомился с тем, что такое табуляция.
В терминале идеи таб по умолчанию - 4 проблела, а в vscode - 8. Гугли, как изменить. Если бы ты делал то, что тебе советуют, таких тупых вопросов бы не задавал. Тебе стыдно должно быть.
- Стримить видео из источника А в хранилище
- Параллельно читать из хранилища этот видео-поток по мере его доступности, показывать клиенту. Клиентов может быть несколько
Все это желательно на self-hosted решениях.
Как вообще подступиться правильно? Особо крутых требований по перфоманцу нет, но похоже малой кровью будет сложно обойтись и надо запиливать/интегрировать продьюсера, консьюмера, брокера, хранилище.
Хотя брокер может быть и хранилищем. Ебаный ступор и не с кем посоветоваться. Вообще про стриминг видео толкового не могу нагуглить ничего.
Не ты недавно узнавал, что вообще за форматы видео такие, что через ажаксы передавать можно? Продолжай в том же духе, многого добъешься. Чел, напиши сначала обычный круд с хранилищем и брокером, потом стриминг к нему прикрутишь, не бросайся сразу изучать сто технологий
Жаба мертва, js мёртв, пхп мёртв, питон мёртв, плюсы мертвы. Шарп захватил мир.
открой хедхантер и вбей в поиске "жаба", "пхп" и другие языки и сравни количество вакансий
Я правильно понимаю, что если я юзаю try-with-res, а потом в самом теле открываю что-то вроде бафферед ридер, я же должен его закрыть? Само оно не сработает?
Вот так примерно:
try (InputStreamReader isr = new ISR(new FileInputStream...)){
BufferedReader br = new BR(isr)
//my own shitCode
br.close();
}
Если не закрыть, то будет типа утечка дескриптора потока или типа того?
Ти ебанутый? Джава давно уже есть везде, но только, блять, не на "устройствах". Этот высер про джаву в каждой микроволновке не актуален уже лет как 15
Не, я первый раз пишу про это тут.
Да я понимаю про хранилище и брокер, я бы даже с радостью дрочнул на кафку. Просто заказчик у меня мелкий и для mvp это пиздец оверкил и вряд ли смогу согласовать. Как всегда, блядь, амбиций дохуя, но нужно недорого, быстро и качественно. Да еще и облака чтобы дешевые были. Охуенно.
собсна поэтому и думаю как бы пооптимальнее сделать, с учетом того что не будет у нас лютой нагрузки, максимум 5-10 потоков на запись и 5-10 на чтение.
>такое ощущение
Законный вопрос - откуда такое ощушение? Если это прочтения тредов в /pr - то это явно не самый релевантный источник данных. Можешь посмотреть вакансии по разным языкам на хх, это явно более объективный источник.
Актуален.
помню для ип ставил всякие джава плагины в браузер чтобы работал свисток. и так было у многих банков. сейчас никакие плагины почему-то не нужны, да и свисток тоже.
У них поди таб применяется и к коду и к выводу. И после этого вы пытаетесь переложить вину на меня, а не на криворучек жидбрейнсов?
На устройствах, ты про мобилки? Там сейчас Kotlin + Java.
На бекенде джава никуда не уйдет в ближайшие лет 10-15, только если сам оракл не похоронит польностью джаву и откажется от какой-либо дальнейшей поддержки.
>такое ощущение, что ее выпиливают отовсюду
Ну смотри:
1. Java на кнопочных мобилках, J2ME, вот это все. Умерло вместе с кнопочными телефонами, все переехали на андроид и iOS.
2. Java на десктопе. AWT/Swing/JavaFX/SWT. Еще кое-где используется, но считай, что умерло, десктопные приложения сейчас очень мало кому нужны, да и к тому же есть гораздо более продвинутые Qt/Electron.
3. Java в браузере. Так называемые джава-апплеты. Умерли вместе с flash/silverlight. Вернее их убили просто.
4. Java на фронтенде. GWT/Vaadin. Местами все еще используется, но по факту эти инструменты - говно, и от них отказываются.
5. Java в специфических местах вроде микроконтроллеров и симкарт, java embedded, java card, вот это все. Никогда не было популярно и сдохло, так как устройства получались слишком дорогие. Ембеддед гораздо проще и дешевле на Си писать.
6. Java на бекенде. Жива более чем. По сути вся джава-работа именно тут находится и находилась всегда, если не учитывать андроид. Все, что перечислил в предыдущих пунктах, никогда толком-то и не было популярно, когда как на серверах жабу активно крутили уже в конце 90-х и начале нулевых. Когда на бекенде использовали java ee, но он потерял популярность, и сейчас все на спринге пишут. Правда сейчас появились кваркус и микронавт, может через сколько-нибудь лет и они выстрелят.
Открывай бафферед ридер в том же месте, где открываешь ISR. Трай с ресурсами это позволяет
Джава плагин для браузера нужен был для джава апплетов. Сейчас они почти везде выпилены. В современных браузерах джава апплеты, как и adobe flash и silverlight, просто не поддерживаются. Да и сами апплеты выпилены из новых версий джавы, так как не нужны никому больше.
>>267653
спасибо за развернутый ответ. наверное и правда просто иллюзия. раньше куда не приду, за какой пк не сяду, везде в значках на панели задач висело, что джава требует обновления. сейчас нет такого, джава просто ушла с десктопа и все. ну говорю, просто дилетант, не слежу в целом за этим.
Лучше закрывать. Но в данном конкретном случае - ничего не будет, т.к. у BufferedReader нет никаких нативных ресурсов, которые надо бы было закрывать. Так что ничего такого не будет.
В данном случае лучше написать:
try (BufferedReader reader = new BufferedReader(new ISR(new FileInputStream...)))
только надо учитывать возможные проблемы в конструкторах. Например если ты в InputStreamReader передаешь кодировку как строку и там шляпа, вместо кодировки, то FileInputStream у тебя останется не закрытым, тогда лучше делать
try (FileInputStream in = new FileInputStream("foo");
BufferedReader reader = new BufferedReader(new InputStreamReader(in)))
А почему нет? В те времена языки часто пытались делать универсальными, чтобы занять все ниши. Это сейчас забили и делают специализации.
Замечательно, что жаба проебала десктоп. Хорошо, что такие поеботы, как жирная тормозная идея, больше никогда в индустрии не возникнут. Плохо только то, что вместо жабы теперь ещё более медленный электрон.
2. С# на десктопе. WinForms, WPF. Еще на винде используется, но считай, что умерло, десктопные приложения сейчас очень мало кому нужны, да и к тому же есть гораздо более продвинутые Qt/Electron.
3. С# в браузере. Так называемый silverlight. Умерли вместе с flash/applets. Вернее их убили просто.
4. С# на фронтенде. Blazor. Местами все еще используется, но по факту эти инструменты - говно, и от них отказываются.
5. С# в специфических местах вроде микроконтроллеров и симкарт, DotNet 5+ IoT, вот это все. Никогда не было популярно и сдохло, так как устройства получались слишком дорогие. Ембеддед гораздо проще и дешевле на Си писать.
6. C# на бекенде. Жив более чем. По сути вся сярп-работа именно тут находится и находилась всегда, если не учитывать нокию. Все, что перечислил в предыдущих пунктах, никогда толком-то и не было популярно, когда как на серверах сярп активно крутили уже в начале нулевых. Когда на бекенде использовали ASP, но он потерял популярность, и сейчас все на ASP.Net пишут.
У него дальше бэкенда пуксреньк на уровне жабы.
Так специализация языков это верно и правильно. Уверен, что в браузере если появятся другие языки, они не убьют жс, а займут другую узкоспециализированную нишу и будет работать в паре с жс. И из них станут популярными 1-2.
Жава на десктопе популярной особо-то и не была. В основном всегда был дельфи, дотнет, а позже qt и электрон. В этом плане жаба в стороне всегда была, хотя некоторые продукты вроде тех же иде от джетбрейнс запилить смогли.
А позже, когда стало понятно, что у конкурентов фреймворки получше будут, да и сам десктоп как платформа сдулся, в оракле решили забить на развитие javaFX, который ранее считался перспективной десктоп технологией. Думаю, к 2030 году и AWT/Swing выпилят из jdk, так как они уже морально устарели. Даже в самом джетбрейнсе пилят свои новые инструменты для десктопа.
Вот кому интересно, в прошлом году набирали стажеров пилить UI фреймворк https://internship.jetbrains.com/projects/887/
>>267684
Изначально Sun Microsystems хотели сделать серебряную пулю для всех платформ под все и сразу, поэтому в конце 90х решили запилить свои кроссплатфоменные окошки. Получилось так себе, но теперь это говно попробуй еще выпили.
Вообще это сейчас понятно, что сделать инструмент для всего и сразу в принципе невозможно, но тогда в это народ охотно верил, чтож поделать.
>>267703
В шарфе годные окошки под винду. Ну и в юнити он взлетел, хоть там от шарпа только синтаксис, а сам шарф компилируется в С++, но тем не менее, получилось годно. Ну и asp.net core. А все остальное сдохло. Под мобилки тоже когда-то на шарфе писали, но замарин не стал популярным, а windows mobile умер. Какие-то микроконтроллеры тоже пытались прогать, но не взлетело, ибо нахуй не нужно. Ну вот и все, собственно.
https://www.youtube.com/watch?v=YAb7YoEd6mM
Репорт.
Далеко не весь. Полно всякого говна, которое невозможно сделать в браузере, а электрона не хватает.
Ок, понял тебя. В прошлом году обошел все крупные банки (включая несколько инвестиционных), ритейл и так еще горстка малознакомых компаний. Почти везде была дрочка JMM. И нет на happens before дело не останавливалось.
А что конкретно спрашивали помимо happens before?
Нужно наизусть отвечать статьи шипилеши? Или знать в подробностях статьи с хабра
https://habr.com/ru/post/143237/
https://habr.com/ru/post/209128/
По идее знание JMM довольно специфическая вещь, которая нужна далеко не всем, а только людям, которые занимаются чем-то таким, про что эта тяночка рассказывает >>267718
В жава треде не постят тянок, ньюфаг ебаный. Это скатывает обсуждение в раковальню как в мвп.
>А что конкретно спрашивали помимо happens before?
Правила инициализации final полей при обращении из нескольких потоков. Инициализация в конструкторе и т.д. и все вокруг многопоточки. Как работают локи и их виды. Рассказать про виды кешей процессоров и зачем требуются блокировки. Как написать неблокирующий код и т.д. Там беседа растянулась на час-полтора. Спрашивали почти в каждой конторе.
Вот кстати да, так обидно что жаба-мир не высрал ничего даже близкого к Юнити за всю историю. Хотя языки схожи, точнее жабушка то это хуйня из под коня, но котлин вполне себе может сравниться по фичам
Так Микрософты сразу же начали своё традиционное EEE.
Нах нам твои тестики, мы программисты, а не тестировщики!
Ты хоть по нормальному напиши что тебе нужно. Мокать бэк или проверять респонс бека.
Проверять респонс бэка при разных комбинациях фильтрации, сортировки, поиска и пагинации.
Только вакансий на бекенд шарфа нет, везде требуют фуллстек.
Везде адекватно работает. Одни жидбрейнсы нестандартно мыслят. Куда нам, бездарям, до них.
Проверил в других IDE, везде адекватный вывод. И это бесплатные среды, в отличии от платной и переоценной жидбрейнс идеи!
У меня нет доступа к ней. На торрентах тоже не видел ещё.
Как-то толсто что-ли.
Т.е. ты проверяешь кучу сред и редакторов на вывод табов вместо того, чтобы учиться программировать?
Люди, которые не пользуются идеей ее будут ей пользоваться. Люди, которые пользуются идеей, продолжат ей пользоваться
Мне просто не понятно, почему её так нахваливают. Среда платная, нет русека, настройки постоянно слетают и ещё куча недостатков разной степени бесячести.
При этом есть бесплатный среды, которые не хуже. Зачем платить жидбрейнсам за их халтуру?
Это тестировщик.
Плагины.
Ну и то, что в свое время по сравнению с эклипсом и нетбинс идея была топом. Люди по привычке и сидят я в из числе
Прикрути к бесплатной IDE поддержку поддержку спринга. Скинь потом в тред сколько времени у тебя уйдет, а мы посмеемся.
А ведь и правда. Теперь придется перенести разработку своей консольной программы в нет бинс.
Речь шла про платную идею
Проблема в нормальном UI фреймворке. Swing уже сильно устарел, JavaFX забросили. Одна надежда что Composer будут развивать и допилят до нормального состояния.
>>267696
>Хорошо, что такие поеботы, как жирная тормозная идея, больше никогда в индустрии не возникнут.
Лучше бы молчал, чем рассуждать на темы которые не понимаешь. Идея жрет ресурсы из-за количества подсказок, инспекций и плагинов. Первые версии Идеи прекрасно работали на Пентиум 3, вот только там даже автокомплит был неполноценный без учета видимости и прочего.
>>267717
>Жава на десктопе популярной особо-то и не была.
А могла бы и стать, особенно с внедрением граля.
>>267848
>Жидбрейнс переходят к тонкому клиенту и облаку
Там он не такой уж и тонкий, некие подсказки и инспекции будут локальными. Ну и плюс это все таки полноценный редактор, а не трансляция видео как в классических тонких клиентах. Но вот Swing видать их заебал в конец, что они решили писать свой UI фреймворк.
>Что стоило Ораклу разрешить Микрософтам сделать свою JVM?
Ты или делаешь по спецификации или не называешь это Java.
Посмотри rest-assured.io там можно проверять не весь респонс, а только интересующие части.
Еще есть JSONassert которому можно сказать игнорировать неизвестные поля, в купе с Groovy/Kotlin строками позволяет писать вполне себе няшные тесты.
А еще там визуальный конструхтор свинга хороший. Можно не учить сраные гридбордерлэйауты.
че за кринж
Ты когда делал вывод о простоте динамического программирования, заглядывал хоть раз дальше примитивных примеров с арифметической прогрессией?
Чел, ты был хоть раз на олимпиадах по программированию будучи в школе или в вузе? Хотя бы на уровне региона, а не своей сельской школы в пгт на 10к тел?
На таких олимпиадах тебе запихнут в анус какие-нибудь декартовые деревья вместе двумерным динамическим программированием, так что ты потом будешь остаток жизни охуевать от гениальности тех, кто такие задачи умеет решать.
А на шарпе одно говно от индусов.
Кого ебёт? Того, у кого на i7 @ 32 гига @ SSD идея тормозит так, что за инпутлаг я успеваю написать шитпост на дваче.
По этой причине я тоже бросил шарф. Хотя по шарфу есть одна классная книга, аналога которой нет в жаве - это Рихтер CLR via C#.
Даун, речь о быстром вкате в айти через жабускрипт, затем набивание опыта в нём + реакт, затем попытка вката в свифт. Быстро вкатиться в свифт не получится, да и для фронтенд господина всегда будет работа, если со Свифтом туго пойдёт, не легаси-парашу же учить первым ЯП, типа жабы.
Ты такой юморной, я не могу))0))000)00))))
Давно в качестве хобби ковырял java, всякие говно видеоуроки смотрел, чувствовал себя обезьяной с гранатой, что-то делаешь, но как-то без понимания зачем, и почему так, а не иначе. Понимания просто минимум было, и интереса не было особенно. Так, вяленько, пару раз в нелю что-то делал.
Купил эту книгу, думал будет так же уныло как и в уроках, и неожиданно прямо появилось ощущение понимания того что происходит, и попёр интерес. Уже до середины дочитал и прямо прёт.
Всем рекомендую. Хотя отзывы были противоречивые о ней.
Анонимными классами струячишь? Там же 1.7 версия.
>затем попытка вката в свифт
как тебе жаваскрипт в этом поможет, свифт на нём чтоль написан? орунах
Валяется такая в магазине около дома уже год со скидосом 50%, по цене бумаги на которой напечатана. Никому нахуй не нужна, включая меня потому что неснижаемым стандартом давно считается восьмая версия языка, все что меньше для ретардов и тормозов
Тоже хотел себе купить, но рядом нет книжного магазина, а на заказ она дорого стоит.
>Того, у кого на i7 @ 32 гига @ SSD идея тормозит так, что за инпутлаг я успеваю написать шитпост на дваче.
Ты или пиздабол или рукожоп.
Чел, Я книжку гослинга читал по джаве 1.0.2, пропуская убранное JNI для Си. Vector Dictionary Hashtable!
Затем. Свободен нахуй.
>>268412
Да ну, на шарфе есть та же clr via c#, всякие книжки албахари и скита.
А для вкатунов The c# player's guide годная книжка. А еще вроде бы и шилдт есть, я по нему будучи 8 классником вкатывался в шарп 10 лет назад.
Для джавы хороших книг не то чтобы много - effective java, java concurrency in practice, хорстманн, может быть шилдт, да и все наверное, не сильно много инфы.
Они решают разные задачи.
класс A для создания объекта (через конструктор) + метод для его демонстрации;
класс B где есть только методы инициализации объекта класса А и разные манипуляции над ним.
Вопрос: Я же не могу подогнать А и В под один интерфейс и имплементировать его (по понятным причинам разности методов). Мне теперь надо тогда их подгонять под абстрактный класс или делать просто два интерфейса отдельно один для А и отдельно один для В?
Шилдт - говнарь обоссанный. Сидел-пердел в комитетам по стандартам си и плюсов 30 лет назад. Каким боком он вообще к жабе и шарфу?
Его книга охуенна, свое мнение себе в сраку запихай.
В го пиздец, остальные да.
>clr via c#, всякие книжки албахари и скита
это талмуды без учебных заданий, их разве что конспектировать и по сто раз повторять что написал, иначе толку никакого это читать не имеет, всё равно всё из башки выветрится
Модно. Чем дольше тянут, тем больше вероятность что это выйдет из моды и можно не делать.
Ну вот весь чистый код, солиды и паттерны стоят на том, что нужно обертки всякие делать, делать методы мелкими.
И я никогда не слышал сколько это стоит(да, наверно я не читал достаточно серьезной литературы, где это есть). По памяти и по тактам процессора(в каких порядках хотя бы).
Ну вот например абсолютно без логики метод-обертка над библиотечным методом.
>албахари и скита
Первый пишет справочник, а второй справочник в разрезе версий для более продвинутых.
Компилятор джавы всё заоптимизирует, чтобы получился эффективный байт-код, а потом жит-компилятор заоптимизирует байт-код под конкретный процессор.
Нихера не понятно, сделай небольшой пример классов и чего ты хочешь получить.
Спроси и плюсовиков. Но у них всё стоит дохуя, аж 0.0000000001% перфоманса проебётся от лишнего вызова.
Декомпозицию делают даже на ассемблере и там тоже это не нулевая стоимость. Люди не способны писать по другому.
Спасибо за рекомендованные книги, как закончу с "философией java", однозначно попробую ещё что-нибудь почитать. Про effective java много хорошего пишут.
База?
Ты не понял. C#-повские скотоублюдские выблядки, которые здесь срут - это и есть крутые Java-программисты, зашибающие нереальные бабки. И они понимают, что перестанут из зашибать, если не будут демотивировать армию вкатышей выбирать для вката жабу.
А потом под предлогом "троллей-шарпистов" перекатывают раз в 1-2к постов.
Совсем ошизели от синдрома вахтера.
Хуже, там их просто нет, как в первых жабах. Есть только в бета-версии 1.18, но и там у них своё особенное видение дженериков.
У говна вообще дженериков нет.
Именно с котлина вкатуну начинать не стоит. Вкатун тупо не сможет его выучить без знания жабы.
А дарт учить не стоит вообще.
Устаревшее представление, что программирование надо учить с крестиков вне зависимости от того, во что вкатываешься.
А я бы сначала устройство машины Бэббиджа выучил.
Потому что это не самостоятельный язык, а посахаренный альтернативный синтаксис для жабы.
Потому что все юзают не самую последнюю жабу, а ту, на которой всё работает.
11+ есть в трети проектов, остальное 8ая.
val i = someMethod()
и сидишь гадаешь, что там за залупа придет из someMethod(). А потом сигнатуру изменят и у тебя даже другие методы могут изменить сигнатуру.
Поэтому сначала нужно правильно кодить на жаве с кучей анальных ограничений, а уже после идти в котлин, чтобы не высирать тонны говнокода
Кстати почему никогда не советуют жаву первым языком?
Плюсы, питон, паскаль, шарпец. Но жабку почти никогда.
>2к22 до сих пор существуют дебилы, которые верят что опытные программисты никогда не ошибаются.
Можно, даже может быть и нужно.
Джава - это дружественно комьюнити, много инфы.
Котлин - это сборище пидарасов, информации ноль
Ты пишешь какую-то хуйню. Автоматический вывод - только добавляет ошибок при рефакторинге. Нет такого типа ошибок от которого мог бы помочь автовывод.
> и сидишь гадаешь, что там за залупа придет
Аргументы в лямбдах в 99% случаев без указания типа, или ты еще не перешел на 8 жабу? ctrl+space и ничего не убудет от того что ты знаешь или не знаешь что там приходит, если ты конечно не в блокноте печатаешь.
> А потом сигнатуру изменят и у тебя даже другие методы могут изменить сигнатуру
Так в этом и поинт, не нужно ебаться с рефакторингом 100500 раз переписывая одно и то же
> информации ноль
А где ты ее ищешь? Гугл выбрал этот язык приоритетным в андоед деве и всё свое говно переписывает утилизируя его синтаксис по максимуму. А жыддбрейнсы только и рады. Единственные вменяемые туторы не уровня javadoc только на сайте ведра, но они специфичны для платформы. Все остальные платформы для котлина это не для вкатунов. Хотя смотря что тебе нужно. Доков на офф сайте тоже хватит для многих вещей, но они покрывают глубину.
Нас в универе учили сначала Паскалю, потом типа С++ (но по факту обычный С), а потом семестр Джавы (типа ООП, но по факту лишь базовый синтаксис).
А о чем писать? Пару абзацей наберется про новые штуки, про которые и так все уже знают в интренетах.
>Аргументы в лямбдах в 99% случаев без указания типа, или ты еще не перешел на 8 жабу?
Какие аргументы будут у лямбды в основном зависит от твоего кода. Если только ты не дергаешь сразу метод у возвращаемого типа.
>Так в этом и поинт, не нужно ебаться с рефакторингом 100500 раз переписывая одно и то же
Ты по крайней мере будешь знать где у тебя и что поменялось.
const val partitionKey = 1_000_000
val counter = AtomicInteger()
fun nextId() = counter.incrementAndGet()
fun incrementer() = nextId() + partitionKey
Поменял AtomicInteger на AtomicLong все скомпилировалось, но потом в БД взорвалось. Кстати поля они так объявлять не позволяют, видать понимают что это способ выстрелить в ногу.
А нас потом еще Прологу ебаному!
Когда в груви завезут котлин? Или котлин в груви?
> Какие аргументы будут у лямбды в основном зависит от твоего кода.
Что это значит? Что будет в val тоже зависит от моего кода
> Ты по крайней мере будешь знать где у тебя и что поменялось.
Я и так буду знать когда буду делать коммит. Зачем мне вручную копипастить вывод типа в восьмистах классах чтобы увидеть каждый кейс? Ты сойдешь с ума и просто выкинешь время если будешь разбирать их по отдельности
> но потом в БД взорвалось
Тебе в любом случае писать тесты чтобы отловить и такие случаи. Или после того как я вручную поменял с лонга на инт тесты можно не писать?
> поля они так объявлять не позволяют
Через val без явного типа? Можно же
> Слышал что жава не очень дружелюбна к нюфагам
Ага, то ли дело кресты, они простые и дружелюбные.
> Что обязательное ооп мешает
В шарпе тоже обязательное ООП.
> И что жава дает какие-то когнитивные искажения, типа синдрома утенка.
Характерно для всех языков, особенно для динамически типизированных.
Что это?
В груви есть вещь намного функциональнее чем затычка к анонимному классу - кложуры
смайлики)))
Грувики
Closure != Clojure
Почитав анона >>267798 я позадрачивал один из пунктов про final поля и unsafe publication, но создать какую-то ДЕМКУ где была бы демонстрация такого поведения - хуй получится. А жаль, был обы интересно.
>Что это значит? Что будет в val тоже зависит от моего кода
Ты можешь вызвать функцию из библиотеки или кода сгенерированного из swagger.yaml. Там поменяют int на long - и у тебя тоже код поменяется потому что вывод типов автоматически выведет новый тип.
>Я и так буду знать когда буду делать коммит.
Не будешь, у тебя вывод типов не влияет на исходники. В моем примере и nextId() и incrementer() поменяют возвращаемый тип автоматом.
>Тебе в любом случае писать тесты чтобы отловить и такие случаи.
Увы, тесты на такие сложные случаи как переполнение обычно пишутся уже по результатам прод инцедентов.
>Через val без явного типа? Можно же
Точно, просто поля можно, а вот аргумент главного конструктора с дефолтным значением - нет. Шляпа какая-то. Там можно а там нельзя.
В общем мой опыт повсеместного использования var/val по кодстайлу было такое требование скорее негативный. Приходится сильно полагаться на IDE. Иногда даже в IDE есть проблемы - например в show diff у тебя подсказки по типам не будет.
Вот на примере пика: метод обрабатывает один единственный тип исключения, судя по документации, но я его все равно обрабатываю даже, когда явно передаю туда имя класса, которое не может быть null. Но я это делаю, полагая, что внутри виртуальной машины может что-то наебнуться и getName() вернет null...
А еще, мой код никто и никогда не будет читать и использовать, потому что я пишу один и для себя, не работаю нигде и не участвую в опен сорс.
А еще я могу часа 2 сидеть и придумывать название переменной, которое идеально бы ее описывало, после этого пропадает всякое желание писать код дальше.
Кто сталкивался с таким? Как быть? Как жить? Мне это очень сильно мешает.
>В груви есть вещь намного функциональнее чем затычка к анонимному классу - кложуры
Замыкания есть и джаве, если с версии 1.1, ничего сверхестественного и супер функционального в груви нет.
Я просто хочу быть, как все...
У меня всегда хотя бы1 вариант будет, сложней, когда вариантов много и я не знаю какой лучше из них. А бывает я уже выбрал имя, написал после этого достаточно кода, а потом мне в голову придет еще один вариант. Код застопится, и я возвращаюсь к выбору имени, могу так долго выбирать. Просто взять и выбрать что-то одно не получается. Постоянно чувство, что мог назвать лучше, с которым я не могу смириться.
А при чем тут язык? У меня такое в любом будет. Я уже много чего пробовал. Меня сейчас больше выбор области волнует. Пытался как-то в программирование микроконтроллеров на с++, потом в web пытался с node js писать бекенд, потом и фронтенд попробовал, потом в реверс инженеринг пытался вкатиться, чтобы писать читы (пока желание еще есть, но подзабил), сейчас больше в gamedev нацелен (изучаю opengl, потом на unreal engine возможно перейду). Но конкретно сейчас остановился на java, потому что на ней пишут под android (синтаксис kotlin не особо понравился на первый взгляд), а я как раз пишу игру на мобилку.
Мне привязка к .NET не нравится да и сам unity тоже (имел как-то опыт, когда еще учился).
А меня вот печалит, что вижла 2022 не поддерживает джаву. Хотел бы писать в ней.
Потому что
>Но я это делаю, полагая, что внутри виртуальной машины может что-то наебнуться и getName() вернет null...
>Помимо обработки ошибок со стороны пользователя, я обрабатываю зачем-то вероятные (пусть и не сильно) ошибки программиста. Словно пишу для него готовый api, который он возьмет и будет собирать, как конструктор.
А еще
>Ты шизик, тебе к врачу надо
Я реально, походу, шизик. Какой-то бессмысленный перфекционизм постоянно.
Но ведь если в машине что-то наебнулось, то пущщай падает, а то у тебя так и null по системе будет гулять, или еще какая-то ебанина.
Ты бы еще error отлавливал, чтобы юзер есличо успел оперативочки докинуть.
Ты не одинок.
При чем тут замыкания, из кложуров можно сделать выразительный dsl благодаря делегатам
Взял и выучил, ничего сложного.
Если сможешь базовую, то и спринг освоишь, ебош.
Легко. Надо понять идею DI/IoC, а потом всё просто
Ну вот мне юзеров накидать нужно всяких, заранее хеши генерировать и потом в ручную складывать в data.sql кажется костыльным
Что best practices в данном случае? @PostConstruct?
А что петпрожекты? Там тупо обновить версию в пом.хмл, и скорее всего ничего не сломается. Это не тырпрайз проект на 500к строк, где полпроекта перестанет компилироваться.
>Кто нибудь перекатился на 17?
В качестве теста смигрировал рабочий проект. Но в прод пока не деплоим ждем команды от инфры, что 17 образ годен для прода.
> Там поменяют int на long - и у тебя тоже код поменяется
Лямбда тоже может быть вызвана из библиотеки или сгенерированного из swagger.yaml и ее параметр тоже неявно поменяется и ты так же это не узнаешь. Тут точно такие же проблемы будут, если юзать этот параметр без проверок
> у тебя вывод типов не влияет на исходники.
Не влияет, но ты же в своем примере сам заменил этот тип у поля. При чем ты же знал что выведется слева. Или хочешь сказать что инженегры jdk изменят апи и конструкция new AtomicInteger() будет выводить слева другой тип? Вот если поле полагается на возвращаемый тип библиотечного метода, то тут да, стоит его явно указать
> Приходится сильно полагаться на IDE
Так весь котёл очень сильно на идее завязан. Подсказки для типов, для корутин, их дебаг. На старте даже отдельного сервера для статического анализа не было, форматирование, компиляция всё внутри идеи. Их за это многие критикуют кто не хочет ее юзать
А как же все эти джавовские ритуальные пляски вокруг безопасного депрекейшна и обратной совместимости или это все легенда?
Или многие завязываются на всякие ансейф или недокументированные штуки?
> Как понять, когда надо обрабатывать исключения, а когда нет?
Если ты хочешь обработать это исключения для нижестоящего кода как то по особенному, тогда лови и обрабатывай. Если тебе похуй на нижестоящий код, тогда кидай выше или игнорь
Тырпрайз никогда не перейдет на 17 джаву, потому что там запретили небезопасный доступ к другим модулям.
Ну вот допустим у меня тесты разбиты на дохуя классов и что я буду в каждый копипастить какие-то общие инициализации данных?
Если у тебя тесты разбиты на дохуя классов, но при этом не наследуются от одного абстрактного класса, то ты долбоеб.
В плане чтения - да, DSL получается красивый. А вот писать на нем это боль, автодополнение в грувях почти нет, валидации тоже, только в рантайме no such property.
Чтобы не копипастить.
Чтобы контекст не переподнимать.
Чтобы на дваче хуями не обложили.
А это не важно, мне скорее интересно почему столько проектов сидят на 8 жаве.
Логика такая, если у жавы обратная совместимость, значит все должно быть норм после переезда на новую версию, значит никаких затрат для бизнеса, а судя по тому, что многие не переезжают, значит нихуя нет этой совместимости, и переезд на новую версию это не просто.
Сохранить полную обратную совместимость можно только одним способом - прекратить выпускать новые версии. А развивать язык надо, надо чинить то, что сделано криво, выпиливать говно динозавров и прочее. Но совместимость поддерживать хоть какую-то приходится, все популярные языки хоть что-то для этого делают. Вот и получается, что на новую версию перейти вполне возможно, но для этого недостаточно просто заменить старую JDK на новую, надо починить сломавшиеся вещи в проекте и хорошо всё протестировать, на что уходит много времени, а запиливание новых фич никто не отменял.
Понял, добра.
Джарник, собранный на жаве 1.4 должен работать на 17 без проблем, в теории.
Шо, и библиотеки остались на 8 жаве?
Даже на хеловордах многое написанное до 9 не работало на 9+. В 9ке сломали обратную совместимость осень круто. В 17ке вроде доломали.
Пруф что работает.
Какой билет блять? В вузах заставляют учить на парах спринг? Чума.
Это, в принципе, гуглится: google://how requestmapping works
https://stacktips.com/tutorials/spring/how-spring-controller-request-mapping-works-in-spring-mvc
Да , в моем вузе мы учили спринг весь сем. Ну в принципе я и вписал то же самое что ты мне скинул. Я думал может этот вопрос подразумевает более глубокое понимание работы этой аннотации. Как она под капотом работает. Про сервлеты писать вся хуйня
Так вот нужна встраиваемая база(если буду делать нормальным бекендом - поменяю на постгрес), которая пишет на диск и хорошо работает с хибером и спрингдатой. SqLite вроде не очень с хибером. Делать h2 с сохранением на диск - норм для простого прототипа?
Норм.
> В вузах заставляют учить на парах спринг?
Говновузы крышует какая нибудь местная галера, обычная практика. У нас так было, все стены в рекламе о практике и стажировке в роли перспективного гребца в успешной международной компании.
Учат основам, алгоритмам, си или плюсам - ряяя ненужное говно, в работе не пригодится.
Учат какому-то актуальному стеку - ряяя галеры.
Это "ряяя" исходит от двух разных непересекающихся групп анонов. А ты хотел угодить всем?
Хотел доебаться.
Запретили лазить корявыми ручками в кишочки JDK, а сама рефлексия как была так и осталась. Свои классы и библиотеки обрефлексируй.
Спасибо.
Может кто знает, есть ли способ заставить класс, реализующий интерфейс, иметь статическую версию метода с определенным именем и сигнатурой? Просто если в интерфейсе указывать модификатор static, то предполагается что это собственный метод интерфейса, а как декларировать классу такое обязательство?
Да это просто какой-то заговор синьоров, чтобы себе зарплату завышать. Их ансейф рефлектив мультитреадинг рекурсив-дженерик писанину чтоб дешевые джуны не понимали.
Класс - нет, но статический метод можно добавить в интерфейс. Если тебе нужна фабрика для создания инстансов, то можно просто сделать:
static <T> T newInstance(Class<T> clazz) throws Exception {
returm clazz.newInstance();
}
Или через метод хендлеры нафигачить Supplier-ов.
ну да, так и думал в принципе, спасибо
>>271416
>>271423
Сделал подобное (статик метод интерфейса пинал не-статик метод реализующего класса и возвращал типизированный объект Т, но потом снес это к хуям: из-за того что это место должно выполняться много раз, решил что упускать память на паразитный инстанс каждый вызов, только чтоб вызывать его обжект-метод не хочется). По этой же причине не стал лезть в рефлекшен.
За счет этой фичи хотелось сделать выделение метода, а без нее придется оставить место с некрасиво повторяющимся 4 раза кодом, раличающимся только типом создаваемого статик-методом объекта
Но спасибо за ответы.
>Сделал подобное (статик метод интерфейса пинал не-статик метод реализующего класса и возвращал типизированный объект Т, но потом снес это к хуям: из-за того что это место должно выполняться много раз, решил что упускать память на паразитный инстанс каждый вызов, только чтоб вызывать его обжект-метод не хочется). По этой же причине не стал лезть в рефлекшен.
Если сделать через метод хендлер и кеш, то никакой утечки не будет. А MethodHandles работают почти так же быстро как и прямой вызов метода.
https://pastebin.com/Kqt0dykE
Всем привет. Помогите пожалуйста с вопросом человеку далекому от JAVA мира:
Safepoint - он существует в виде какого либо объекта? Или это просто набор правил - какие места являются savepoint, какие нет?
В чем суть - зависает многопоточное приложение, кейс очень похож на этот:
https://stackoverflow.com/questions/13385324/jvm-locks-up-after-full-gc-sporadically
Воспроизводится не всегда. Аналогично кейсу со SO - у меня в коде есть безумный цикл - я сразу подумал - может внутри цикла нет safepoint , также рядом с зависанием всегда присутствует GC FULL. И jstack -F выглядит аналогичным образом - все в BLOCKED, а пара в цикле в IN_JAVA
У меня есть coredump зависшего процесса порождавшего треды - я могу по нему определить safepoint-ы имеющиеся в коде? Или их как объектов не существует?
Вроде как сейфпоинты присутствуют в конце каждого метода/тела цикла.
Сейфпоинты можно увидеть через jfr, но нужно создать кастомный профиль, ибо изначально сейфпоинты не отслеживаются
Это я так понял на живом процессе собирается, во время работы? Попробую при следующем перезапуске, спасибо
Да, все так. Включается либо через флаги при запуске, либо через jcmd
Или пример говно, не раскрывает тему.
>Safepoint - он существует в виде какого либо объекта?
Если это скомпилированный JIT код, то сейфпоинт это некоторая конкретная инструкция обычно что-то связанное с чтением участка памяти, если включить -XX:+PrintAssembly то их даже можно увидеть http://psy-lob-saw.blogspot.com/2015/12/safepoints.html
>может внутри цикла нет safepoint
Если цикл длинный, в нем нет вызовов методов или они все заинлайнились или создания объектов - то почти наверняка в нем не будет сгенерировано сейфпойнтов.
>У меня есть coredump зависшего процесса порождавшего треды - я могу по нему определить safepoint-ы имеющиеся в коде?
На новом процессе делаешь -XX:+PrintAssembly, дальше смотришь какие инструкции будут помечены коментом ‘{poll}’ или ‘{poll return}’ это и есть сейфпоинт.
Напиши потом, что получилось, очень интересно узнать. чем 101 раз обсуждать почему сринг не вайрит бин
Спасибо! Проверять уже после выходных буду, воспроизводилось на проме и то не всегда, возможно нужно еще GC нагружать, не знаю, а на тестовых не удалось воспроизвести.
В цикле впринципе то-же что и в кейсе что я прикрепил - гигантский связанный список, берется длина списка перед циклом и по длине идет итерация и получение элемента с соотвествующим индексом при определенных условиях, так что вызовы методов есть
int fragmentCount = fragments.size();
List<Fragment> filteredFragments = new ArrayList<>((int) Math.ceil(fragmentCount / totalSegments));
for (int i = 0; i < fragmentCount; i++) {
if (segmentId == ((i + shift + gpCommandCount) % totalSegments)) {
filteredFragments.add(fragments.get(i));
}
}
fragments соотвественно LinkedList
С чего ты взял, что нужен?
Какой?
Спасибо, пчел. Но я не залазил пока в такие инструменты. Если дашь ссылку где про это почитать то попробую на досуге восполнить упущение (имею ввиду метод-хэндлеры, а рефлекшен и дженерики мне норм знакомы.)
Я так понимаю, что суть такая, что я один раз в начале работы программы, которая конструирует хуиллион объектов, делаю кэш типа "Класс <-> Метод-фабрика", и только здесь один раз идет небольшое падение перформанса на рефлекшен, а потом я просто получаю по ключу нужный метод и вызываю?
Выглядит красиво и просто, если я все правильно понял. Спасибо.
Нет. Можно и на коммунити. В платной удобнее, но для обучения не нужно
Личная лодка у тебя без весла, работодатель даст лодку с веслом, прицепленном к лодке цепью.
Во время массовой гребли настоящий бабос зарабатывают только продавцы вёсел...
На пхп почти всегда пишут, что сойдет если вы писали и на других фреймворках типа symfony/yii2. То есть все эти вакансии можно объединить и выйдет что-то около джавы, думаю 2.5к+ вакансий.
Странный вопрос. Переменные среды, требуемые мавеном, только при сборке и будут использоваться. Приложуха ни о каком мавене не знает и использует переменные среды независимо от него. Разве что сборка настроена так, чтобы мавен генерировал какой-нибудь конфиг, в него подставлял значения переменных, упаковывал в жарник, а приложуха этот конфиг юзала.
Разобрался.
А зачем она вообще нужна? Неужели нужен такой монстр, чтобы генерировать html-странички?
html странички на java никто и не генерируют. В нормальных проектах спринговое приложение только жысоны да файлы иногда гоняет по сети.
Не смотри на жабу с точки зрения пхп, совершенно разные задачи.
В жабе у тебя огромный сервер с тоннами логики, интеграцией с 20 смедными системами через JMS, AMQP,, Kafka, SOAP, REST рассылка отчётиков на почту и уже как следствие клиент, чтобы можно было работать с сервером. Веб-клиент - это только один из множества вариантов, есть дохуя других.
Микросервис на го
А я вот не смеюсь. У нас пилят дохуя новых мелких проектов со сроком жизни в пару месяцев – реклама стажировок, программ трудоустройства, курсов, новых сервисов и прочего говна, и у половины бэк на жабе с бутом, хотя там реально хватило бы пхп и ноды.
Толсто
На сайтах IBM или Oracle, организация должна связаться с представителем, чтобы узнать цену, затем заключить договор.
Да, твой хибернейт тут не при чём. Базе нужно быстро сгенерировать следующее значение для новой записи, и она не будет ни хранить таблицу свободных ID, ни каждый раз за O(n) искать первый свободный, вместо этого она просто инкрементирует счётчик.
Потому что всё это открытые проекты от совершенно разных независимых сообществ по всему миру, а не одна корпорация-вендор с мнимым опенсорсом.
Действительно круто в дотнете то, что на каждой винде из коробки есть компилятор хоть и древнего, но шарпа, и можно имея под рукой только блокнот и командную строку написать вообще всё. Хотя кому это может понадобиться.
васянский жаба мир as is
Нужно, чтобы случайно не присвоить другое значение. Если значение может меняться, надо явно сделать переменную не final.
Спасибо за ответ. Я почти всегда стараюсь так делать, но где-то у Тагира Валеева слышал что он не так делает, не помню где именно. Интересно почему?
Да потому что он, как и все нормальные люди, в рот ебал лишние телодвижения делать. Вот в котлине другое дело, разница в одну букву, да и не объявишь переменную без var/val никак.
Разные мнения есть, я предпочитаю с final.
То есть компилятор всегда превращает локальные переменные в final которые может?
Если я буду явно писать final это как-то скажется на производительности?
В жабе и всех остальных языках, выросших из неё, очень любят делать лишние телодвижения. В названиях классов и методов по целому предложению, без автодополнения и копипасты писать код невозможно. Из-за длинных идентификаторов операторы не умещаются в одну строку с ограничением 120 символов, и приходится переносить половину выражения на новую строку Тривиальная логика размазана по десяткам классов. И на фоне всего этого беспокоиться о лишних пяти буквах при объявлении переменных, как минимум, странно.
>В названиях классов и методов по целому предложению
Потому что код пишется для людей, которые будут его читать.
>без автодополнения и копипасты писать код невозможно
И че? В блокноте только долбоебы пишут.
>Из-за длинных идентификаторов операторы не умещаются в одну строку с ограничением 120 символов, и приходится переносить половину выражения на новую строку
И че тут лишнего?
>Тривиальная логика размазана по десяткам классов
SOLID, DRY, Unix-way.
>лишних пяти буквах при объявлении переменных, как минимум, странно.
В рот ебал эти лишние телодвижения.
MyClass a,b;
a+b;
Надо писать уродства типа:
a.add(b);
Личный закидон гослинга
> There are some things that I kind of feel torn about, like operator overloading. I left out operator overloading as a fairly personal choice because I had seen too many people abuse it in C++. I've spent a lot of time in the past five to six years surveying people about operator overloading and it's really fascinating, because you get the community broken into three pieces: Probably about 20 to 30 percent of the population think of operator overloading as the spawn of the devil; somebody has done something with operator overloading that has just really ticked them off, because they've used like + for list insertion and it makes life really, really confusing. A lot of that problem stems from the fact that there are only about half a dozen operators you can sensibly overload, and yet there are thousands or millions of operators that people would like to define -- so you have to pick, and often the choices conflict with your sense of intuition. Then there's a community of about 10 percent that have actually used operator overloading appropriately and who really care about it, and for whom it's actually really important; this is almost exclusively people who do numerical work, where the notation is very important to appealing to people's intuition, because they come into it with an intuition about what the + means, and the ability to say "a + b" where a and b are complex numbers or matrices or something really does make sense. You get kind of shaky when you get to things like multiply because there are actually multiple kinds of multiplication operators -- there's vector product, and dot product, which are fundamentally very different. And yet there's only one operator, so what do you do? And there's no operator for square-root. Those two camps are the poles, and then there's this mush in the middle of 60-odd percent who really couldn't care much either way. The camp of people that think that operator overloading is a bad idea has been, simply from my informal statistical sampling, significantly larger and certainly more vocal than the numerical guys. So, given the way that things have gone today where some features in the language are voted on by the community -- it's not just like some little standards committee, it really is large-scale -- it would be pretty hard to get operator overloading in. And yet it leaves this one community of fairly important folks kind of totally shut out. It's a flavor of the tragedy of the commons problem.
Личный закидон гослинга
> There are some things that I kind of feel torn about, like operator overloading. I left out operator overloading as a fairly personal choice because I had seen too many people abuse it in C++. I've spent a lot of time in the past five to six years surveying people about operator overloading and it's really fascinating, because you get the community broken into three pieces: Probably about 20 to 30 percent of the population think of operator overloading as the spawn of the devil; somebody has done something with operator overloading that has just really ticked them off, because they've used like + for list insertion and it makes life really, really confusing. A lot of that problem stems from the fact that there are only about half a dozen operators you can sensibly overload, and yet there are thousands or millions of operators that people would like to define -- so you have to pick, and often the choices conflict with your sense of intuition. Then there's a community of about 10 percent that have actually used operator overloading appropriately and who really care about it, and for whom it's actually really important; this is almost exclusively people who do numerical work, where the notation is very important to appealing to people's intuition, because they come into it with an intuition about what the + means, and the ability to say "a + b" where a and b are complex numbers or matrices or something really does make sense. You get kind of shaky when you get to things like multiply because there are actually multiple kinds of multiplication operators -- there's vector product, and dot product, which are fundamentally very different. And yet there's only one operator, so what do you do? And there's no operator for square-root. Those two camps are the poles, and then there's this mush in the middle of 60-odd percent who really couldn't care much either way. The camp of people that think that operator overloading is a bad idea has been, simply from my informal statistical sampling, significantly larger and certainly more vocal than the numerical guys. So, given the way that things have gone today where some features in the language are voted on by the community -- it's not just like some little standards committee, it really is large-scale -- it would be pretty hard to get operator overloading in. And yet it leaves this one community of fairly important folks kind of totally shut out. It's a flavor of the tragedy of the commons problem.
где-то в editor было вроде
Для локальных переменных, в байткоде, вообще нет понятия final. На уровне байткода final есть только для полей.
Райан Гослинг не любит телок плоских.
Покупал кто-то? Как вам?
Надо переписать идею на C++. Или добавить в вижуалстудию поддержку жабы.
Через командную строку запускаешь? У тебя проблема не в жабе, а в командной строке, которая по дефолту работает в древней кодировке CP866 вместо UTF-8. Можешь выполнить команду "chcp 65001", будет тебе русек.
Или заморочиться с локалями и кодировками на уровне жабы, но это шиза пиздец
Через идею запускаю. Вроде никогда не было с этим проблем. Если через cmd, то отображается нормально, только если я выполнил cp 65001, а в идее пишу в кодировке cp1251. Пиздец какой-то.
Мне за последние три года ни разу не приходилось писать в консоль на русском. А сейчас вот понадобилось, чтобы и у петровичей в виндовой консольке сразу правильно отображалось, и у линуксоидов. Write once, run everywhere, ебобаный рот.
А я хеллоу ворлд начинал писать именно в консоли на русском, т.к. любопытно было свою строчку дописать, знатно поебался тогда, но с гуглом решил, тебе думаю проще будет т.к. на опыте
виндопроблемы
Спасибо. Пойду снесу все файналы, думал я дохуя оптимизатор.
Сколько ее изучать надо будет если цель - мобильная разработка?
Где тогда код писать?
Дак уже всё написали. Новые программисты не нужны. Старых-то девать не куда. С ними уже борются!
Джун мобильной разработки.
Джун бекенда.
Куда проще/быстрее пробиться будет или однохуйственно тяжело?
Зависит от твоего бекграунда, количества свободного времени, твоей усидчивости, наличия ментора и т.п.
А так, от полугода до никогда.
Есть такое для джавы?
A v chem sobstvenno problema?
Ньюфаг
Неправда. Тут еще вкатуны типа меня, которые прохлаждаются в итт-треде, лишь бы не идти учить релевантный стек и не идти по собесам и не идти на работу.
CPAN
Gradle лучше не использовать. Дырявое тормознутое говно с кучей багов.
Что такого не хватает всем новым проектам, чтобы слезать с мавена, надежного, как автомат калашникова?
Проебал, вот уж где-где, а в грейдле точно лаконичности 0, как только нужно выполнять таски чуть сложнее gradle run.
Там где в мавене таски сложнее ран их придется писать на жабе, вместо двух строк в билд файле
Пиздёж уровня "Все новые проекты на джаваскрипте".
Нас не ебёт, здесь говноеды, а не пидорасы.
Надежность и груви несовместимы by design
90% из них овощи, не имеющие своего пет проекта. Если ты сделал свой пет проект, и хорошо знаешь теорию по технологиям, то очень высокий шанс попасть на стажировку.
>90%
10% - всё ещё 9 тел на 1 стажерскую позицию. И это ещё месяц до начала.
>Если ты сделал свой пет проект, и хорошо знаешь теорию по технологиям
Чет маловато, где английский С1 и коммерческая окупаемость пета?
Что за стажировка?
> Чет маловато, где английский С1 и коммерческая окупаемость пета?
Ты разраб, а не менеджер. Перетолстил.
Сергей Немчинский сказал, что это тоже самое, что и Gradle, только там JSON. Кроме того все гайды до сих пор написаны под Maven.
93 человека на место?
Если бы градл поддерживал мавеновские плагины, может и было бы тем же самым. Но он нихуя не поддерживает, и поэтому вместо декларативного описания проекта приходится руками программировать скрипты сборки, в которых хуй разберёшься. И ещё ломают обратную совместимость каждые полгода, решение проблемы со стаковерфлоу тупо не заработает из-за выпиленного API.
Какие гайды, вкатунам кроме как добавить зависимость и нажать билд ничего не надо и про это разве что на заборах не написано. Гуглить так и так придется, если никчемский не умеет может сразу идти нахуй.
> JSON
А что не HOCON?
покормил
Там все те же по задачам плагины, но для грэдла. 99% конфигов это та же декларированная настройка плагинов, но компактно. Писать какую то императивную логику руками это не нужно в 99% случаев. Про обратную совместимость согласен.
оказалось научить мартыханов использовать молоток вместо булыжника не так просто
зах
Я и сам думал такой рофл запостить, но зачем, если есть про настоящий делфи.
ВНЕЗАПНО Сonsole.charset() возвращает кодировку консоли, а если консоли нет то и возвращать нечего. Используй Charset.defaultCharset() в надежде что IDE тоже будет его использовать.
>Charset.defaultCharset() в надежде что IDE тоже будет его использовать
В windows это всегда не так.
>>Charset.defaultCharset() в надежде что IDE тоже будет его использовать
>В windows это всегда не так.
Чел ты не понимаешь как это работает. У программы вообще есть только stdin/stdout/stderr которые вообще бинарные. Твоя приложуха пишет туда текст который конвертируется из дефолтного для Java UTF-16 в некую кодировку. По дефолту System.out использует дефолтную кодировку ОС, но под Windows есть проблема, что консоль читает данные в 866, а не 1251 которая дефолтная кодировка системы. Под Linux тоже можно сделать такую херню, но по умолчанию там кодировки совпадают. Чтобы решить это и сделали класс Console, который читает кодировку консоли и пишет именно в ней, а не дефолтной для системы.
А когда ты запускаешь программу в IDE у тебя никакой консоли нет. У тебя есть IDE которая читает бинарный stdout и декодирует его. IDE может вообще пытаться читать в любой кодировке, но обычно она делает это в системной или принудительно ставит UTF-8.
>По дефолту System.out использует дефолтную кодировку ОС, но под Windows есть проблема, что консоль читает данные в 866, а не 1251 которая дефолтная кодировка системы.
Я про это и говорю. Как мне написать программу, которая должна читать данные из консоли (и писать в нее) в иде? Мало того, еще и грейдл ебаный запускается с демоном, который не отключается и не дает использовать консоль.
Или с битрикса/вордпресса.
>Я про это и говорю. Как мне написать программу, которая должна читать данные из консоли (и писать в нее) в иде?
Надо использовать простой, советский if
Console console = System.console();
String s;
if(console!=null) {
s = console.readLine("OP хуй? (Y/n)");
} else {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.print("OP хуй? (Y/n) ");
s = in.readLine();
}
>Книги
Можешь посоветовать? Только мне не прям в кишки лезть, а просто знать как и что работает.
Пытался освоить и то, и другое, бэк показался легче.
Неважно. Я же их буду совмещать в любом случае.
Бамп
Скажем, если примем за исходные данный, что на кор надо год потратить, то сколько на spring?
Полмесяца-месяц + время на изучение SQL, если не знаешь его.
Как решать?
Да.
1. Парсишь файл с geoip
IPRange(start, end, countryCode)
и складываешь все в массив. если сделать дедупликацию кодов стран, то это займет около 2-3 гигов
2. Сортируешь массив, так чтобы prev.end < next.start в случае оверлапа - выкидываешь ошибку.
3. Дальше создаешь мапу Map<CountryCode, AtomicLong>ю
4. Читаешь построчно лог файл, прочитал строку сконвертировал IP в число и бинарным поиском нашел страну в массиве. Потом увеличил счетчик в мапе.
Но вообще яндекс конечно ахуел такой литкод давать стажерам, да еще 20 минут на решение.
Разве не очевидно, что им не нужны программисты? Просто решили поиздеваться над вкатунами.
Сложнее. Про бут гуглится дохуя мурзилок, а про васянские фреймворки нихуя нет.
Сразу видно помойка.
> яндекс
К ним на какой язык ни иди, везде будет такая же алгоритмическая еботня, даже если там JS.
Я проходил, когда был только девелопер, прошел тогда на 70% и бесплатный период кончился. Много хороших и легких задачек. Очень помогает начать самому хоть какой то код писать. Есть большие задачки, разбитые на 4-8 подзадач. Для нулевого самое то.
Но 25+ баксов в месяц за легкие задачки я бы не стал отдавать.
Если для тебя 25 баксов это деньги, то лучше подрочи их же курс adaptive java на степике. Тоже самое, но без больших задач и без теории. А если проходить на степике другие курсы по джаве или например по sql, (но только те курсы, где есть сертификат) жид брейнс, как спонсор степика дают временный ключ на 3 месяца на платную идею и другие свои продукты.
>Анон , подскажи пожалуйста как можно парсить html страницу без сторонних библиотек .
1. Нахуя такие извраты?
2. Есть https://docs.oracle.com/javase/8/docs/api/javax/swing/text/html/parser/Parser.html но сложный html он может и не распарсить.
Хз, что там у тебя за сайт и лечение, но звучит так, будто можно обойтись олной убогой регуляркой + substring.
Нет, не так же. XML и HTML не совместимы между собой.
вообще не ебу , заебало быть нищим студентом просто.
Додумался вот до этой срани , работает писец долго. Если кто знает как сделать лучше помогите плез.
Ну а что, URLConnection есть, HttpServer есть, xml и файлики есть, много ли ещё надо, чтобы писать энтерпрайзные приложухи на голой жабе без библиотек.
тогда Spring WebClient
У нас 11 и миграция на 17 начата.
Правда мы не не классический энтерпрайз, а стильная, модная молодежная, компания, лидер рынка и все такое.
Звучит неправдоподобно. Как будто Энтерпрайзам так сильно нужна стандартная библиотека и сложно что-то внешнее для jaxb подтянуть.
Очевидно челу просто нужно чтобы вы решили ему тестовое.
пля, охуеть, мне до такого уровня ещё год учиться придётся :(
Анончик, ну скажи что это шутка, ну это же шутка?
Если твоя цель усраться, но любой ценой попасть именно в Яндекс и никуда больше, это не шутка.
Непонятно нахуя. Я вот не планирую добавлять зависимость на вебфлякс ради клиента.
Нет, не шутка.
И задачи такого уровня дают не только в Яндекс, а почти во все конторы и галеры, только не на 20 минут, а на несколько часов или пару дней в виде тестового.
>гигантский неповоротливый спринг
ебобу дал? ну и нахуя мне в таком случае еще одна зависимость тем более
Хуже уже не будет.
Чел, как сделаешь - скинь плиз через пару дней код на пастебин.
Стало очень интересно, как такое решается, а пердолиться не хочется.
Я на собеседовании базз-фид решал, лол. Правда до этого прислали тестовое по окаменелому ЕЕ стеку на неделю.
FizzBuzz
На литкоде задачи похожей на ту, что скинули выше, я ни разу не видел.
Литкод что-ли попроще, там задачи короче, и нет тасок на обработку каких-то безумно огромных объемов данных.
А где можно что-то похожее посмотреть?
(На литкоде, я буквально задач 15-20 порешал, не понял толком что там есть и чего нет)
Думаю, что фраза "Достаточно большой, чтобы не помещаться в память комфортно" означает, что нельзя весь файл читать в массив
Там первый файл с логом нельзя читать. А анон в массив предлагает читать второй файл с диапазонами, где 100к строчек. Строчки в ютф, там суда по их формату до 30 знаков в строчке, это 3 мегабайта.
Единственное, что я не понял в его решении это бинарный поиск по массиву с диапазонами. И почему сразу Map<CountryCode, AtomicLong> не сделать тримапой с компаратором по значением мапы, выводя на ответ просто первые 10 значений. И зачем именно Атомик лонг.
еще раз повторю, что для меня только бинарный поиск немного непонятен. Его руками нужно пилить?
А так норм задачка тестовая на вечерочек, 20 минут это шиза. Для студента 3-4 курса, проходившего алгосы, жаба-коллекции и i.o. несложно выглядит, не понятно че тут все охуели.
Как раз не слишком легко для тестового и не нужно знать фреймфорки, как в 90% тестовых с крудами.
> не понятно че тут все охуели.
Здесь половина - 30-летние старпёры, перекатываются с заводов.
точно, жепой прочитал
Как оцениваешь временные затраты на курс? А то там пишут 4000 часов, лол. На степике они скрыли много. Пидоры.
Я хз. Наверно часов 200-400 потратил тогда на свои 70%. А че там сейчас обещают? Раньше там в конце немножко давали потрогать спринг бут. Но я не успел дойти.
Вот так это получилось сейчас. Мне не дают доступа посмотреть вообще какие топики есть в курсах. Может они сейчас реально дохуя по бекенду сделали задач. Было бы прикольно полноценный спринговый круд в степик с автотестами затолкать.
Вообще неплохо, но отдавать 20к рубчиков за год я бы пожидился. Там это все неспешно за полгода проходилось. Но у них полгода стоят дороже года. Хотя вроде есть триал на 2 месяца.
Если 20к за степик на стероидах для тебя не деньги, то бери. Заодно если английский нулевый, то очень помогает. Там он очень простой.
>Единственное, что я не понял в его решении это бинарный поиск по массиву с диапазонами.
>1. Парсишь файл с geoip
>IPRange(start, end, countryCode)
>и складываешь все в массив.
>2. Сортируешь массив, так чтобы prev.end < next.start в случае оверлапа - выкидываешь ошибку.
1. Берем середину смотрим попадает ли текущий IP в диапазон.
2. Если попал - бинго страна найдена.
3. Если меньше start - берем левую половину и повторяем.
4. Если больше end - берем правую половину и повторяем.
>И почему сразу Map<CountryCode, AtomicLong> не сделать тримапой с компаратором по значением мапы, выводя на ответ просто первые 10 значений. И зачем именно Атомик лонг.
Когда мы читаем файл с логами - нам надо по стране достать текущее значение для страны и прибавить к нему. А три мапа сортирует по ключу, но нам нет смысла сортировать по странам.
АтомикЛонг это просто, чтобы каждый раз не делать анбоксинг и боксинг. Так-то любой мутабельный лонг сойдет, атомарность не нужна.
Но учитывая что стран всего сотня-две, можно было без изъебов entrySet().stream().sorted().flatMap().limit().collect()
А именно меня интересует инъекция зависимостей, какой подход используете вы:
1 - Никакой инъекции в юнит тестах, только использование конструкторов и моков вручную
2 - Свой собственный контекст в тестах, который где-то дублирует бины из сорцов, а где-то предоствяляет мокированные варианты сервисов
3 - Используете спринговый контекст из сорцов и только там где нужно - переопределяете бины (Но в таком случае в сорцах бины-синглтоны которые не должны быть проинициализированы - придется объявлять @Lazy, иначе они будут созданы, хоть и не будут использованы в тестах)
4 - Импортите в @SpringBootTest только те классы, которые нужны. В крупных сервисах тут может быть список из 10-15 классов, которые придется перечислять. Зато минимум лишнего.
>Его руками нужно пилить?
Да потому что ты ищешь число в диапазоне. Конечно можно попробовать запилить хитрый компаратор и давать на вход диапазон [A, A], но я бы лучше руками запилил. Хотя с компаратором можно и тримап использовать, но там вопросы в том, что этот же компаратор должен корректно сравнивать и диапазоны пока мы наполняем мапу и когда мы в ней ищем айпи [A, A]. Лично мне это показалось сложным по сравнению с ручным бинарным поиском.
>3 - Используете спринговый контекст из сорцов и только там где нужно - переопределяете бины (Но в таком случае в сорцах бины-синглтоны которые не должны быть проинициализированы - придется объявлять @Lazy, иначе они будут созданы, хоть и не будут использованы в тестах)
@Profile("!test")
> тобы каждый раз не делать анбоксинг и боксинг
Вот это оптимизация нах, 5 гигов говна в оперативке зато без боксинга один метод вызывается.
Да, точно, забыл про профайлы, можно иим. Но почему-то выглядит это уебищно, наверное потому что сорцы меняются ради тестов или как-то так.
Да, убого, но мне кажется лучше @Lazy, а еще лучше мы не придумали. Еще можно на тестовые бины вешать @Primary.
@Primary на тестовый бин не предотвращает создания бина из сорцов, т.е. он хоть и не используется, но один хер создается, что не оче. Про Lazy согласен, какашка
>Вот это оптимизация нах, 5 гигов говна в оперативке зато без боксинга один метод вызывается.
ВНЕЗАПНО! это как раз тестовое задание на написание оптимального кода.
Плюс если сильно упороться по оптимизации, то все данные можно в десяток мегабайт впихнуть. А если не сильно то в сотню.
Джава перфоманс-оптимизация, насколько я понял это и есть что-то вроде - сократить на 15% количество тактов проца, увеличив в 2 раза использование памяти. В чем я не прав?
> иначе они будут созданы, хоть и не будут использованы в тестах
Нет, не будут. Если нужен просто мок, аннотация MockBean переопределяет бин. Если нужно переопределить руками, включаю в тестовых пропертях spring.main.allow-bean-definition-overriding=true. Если именно переопределить, создать новый бин с тем же id, старый создаваться не будет.
Чет у мея не так работает, но возможно дело в той проперте. Еще поиграюсь, пошелудю там в сприговых-то конфигах ловкими пальцами
>Джава перфоманс-оптимизация, насколько я понял это и есть что-то вроде - сократить на 15% количество тактов проца, увеличив в 2 раза использование памяти. В чем я не прав?
В том, что это общий подход, не джава специфичный https://ru.wikipedia.org/wiki/Компромисс_времени_и_памяти
Рано. Вот когда будет новость про иск за "Хуй вам, а не гарантированное трудоустройство, и деньги не вернём" - тогда и настанет всё.
Конечно стоит, а как еще юай написать?
Почти не используется, время тратить не стоит. Изредка кто-то пишет тестовые тулзы для разрабов и тестировщиков на свинге, но это кто как умеет. Кто-то на JavaFX, кто-то вебку делает.
Около 200. На не очень большом легаси. Есть подозрение что десяток из них мертвые, но проверять некогда.
Лучше потрать время на джавпскрипт. Гуй на голом джапскрипте без фреймворков вообще похож на свинг.
Ебаать вы ебнутые там нахуй все
Использую maven-assembly-plugin для того чтобы при сборке получить на выходе jar собранный с вместе со всеми зависимостями внутри. Получается очень большой файл с именем artifactname-jar-with-dependencies.jar.
Далее пытаюсь задеплоить проект в свой mvn-репозиторий. В итоге на сервер заливается как сам
artifactname.jar
так и
artifactname-jar-with-dependencies.jar
Последний весит очень много, еще бы, внутри все зависимости. Как сделать так чтобы он не деплоился?
Помогите пожалуйста, быстрый гугл не помог, с меня как обычно.
Ну вот у меня как. Есть корневой модуль с корневым помом. Есть разделение по функционалу. Где-то 40 моделей второго уровня. Внутри них есть модули третьего уровня. В самом простом случае в одном третьем модуле интерфейсы, в другом имплементации. Но обычно модулей третьего уровня около пяти. Ну и где то там есть даже модули четвертого уровня, но я их не глядел. Всего 200 должно быть, я не считал.
А чё ты так удивился? Открой спринг ин экшон. Там в их хеловорде в 7 где то главе уже 7 что-ли модулей. С околонулнвым функционалом.
UPD:
Зависимостей очень много, и создавать artifactname-jar-with-dependencies.jar при сборке на самом деле нужно, чтобы была возможность запускать приложение имея один единственный jar со всеми зависимостями внутри.
Единственный момент, его не нужно аплоадить в mvn-репу когда делаю mvn deploy.
C файлами как нибудь поиграй.
а вообще для нулевого
>text-based game
это самое лучшее. Крестики-нолики, саперы, калькуляторы, туду листы, календари.
Если не просто балуешься, а собираешься в джаве работать, то напиши круд(create, read, update, delete) одного объекта с 5-10 полями и сохранением инфы в тхт и с интерфейсом с консолью. Если легко, то попробуй часть полей тоже сделать объектами. Сделай разные способы сортировки таблицы объетов. Фильтрацию. Группировку. Сделай какие-нибудь статистические сводные таблицы по набору объектов. Добавь метаинформацию(время сохранение каждой строчки). Побалуйся с коллекциям и разными алгоримами чтения/сохранения/агрегации, замеряя скорость операций через system.nanotime().
Если перейдешь к крудам на бд такой опыт сильно поможет.
если не можешь придумать объект, я помню тут год назад анон в качества доменной модели брал шлюх.
Лучше для эрпежи, все эти предметы, монстры нпс и прочую инфу о мире
Потом бизнес логику можно сделать, прикрутить интерфейс и уже игра готова
эрпежи про шлюх.
Напиши консольный банк, ерп систему, криптобиржу, покрой тестами.
Потом останется только прикрутить крудоговно сверху.
А чего там придумывать? Обычно все пишут так:
class Monster {
int hp {get; set; }
int attack {get; set;}
и т.д. в таком же духе.
Дай угадаю, твоя любимая категория порно - копро?
Он мертв. На одних энтузиастах с апача не выедешь.
Активно юзается в некоторых проектах, но не как основной язык. О смерти говорить странно.
Охуенно было писать скрипты на нем, когда хуеришь @Grab сверху и весь мир жаба-либок наговнокоженных рамжешем и русским иваном-жуном на коленке тебе доступен
Во времена жабы 1.6 синтаксис конечно был ПРОРЫВНЫМ, такая-то кроткость и гибкость, сейчас все это есть в языках со стат типизацией, поэтому на груви только скрипты маслать.
Она платная же. Говорят, что есть бесплатная версия для студентов, но я уже не студент и мне не дадут.
Они наверно майнер вшили
Кто-то реально так запаривается?
Или это они имеют ввиду труЪ иммутабельные классы с final полями? Потому что любая иде по умолчанию генерит геттеры, которые как раз позволяют вне кассы нахуевертить делов с внутренним состоянием объекта.
Гугл банит такие ссылки последнее время
А откуда у тебя иммутабельность, которую надо не дат обойти неиммутабельном классе?
Вот один разраб напишет свой геттер так по-пидорски с копированием, а другой подумает, что всё ок, юзанёт, присвоит полям новые значения и будет ловить непонятные ошибки с прода, и не надо говорить про чтение документации, на каждый геттер никто читать документацию не будет. Если уж и поступать как крыса, название гетера должно отражать это: getFieldCopy(). Большинство не воспринимает POJO-классы как ООП-шную тему с инкапсуляцией и иммутабельностью, их воспринимают как классические сишные структуры, с которыми можно делать что угодно, и она не будет выёбываться.
>их воспринимают как классические сишные структуры, с которыми можно делать что угодно, и она не будет выёбываться.
как что-то плохое.
принимать то. что иногда шизо-идеологии, типа ооп и клинкодов только мешают? Бугаенко, ты?
Знаем, на собесе спрашивали. При чём тут он? Пидорские геттеры некоторые через clone() и реализуют.
лежит 900 рублей на udemy
Нет, я вкатун
Это в монолитах так? Хоть убей не понимаю, как можно иметь 40 помников в микросервисе. Тогда другой вопрос - а как правильно разделить приложение на модули, чтобы это было удобно тестировать? Например, приложеие на спринг буте, само приложение будет в одном модуле. А как писать интеграционные тесты в других модулях тогда? Делать в каждом из них фейковое тестовое приложение, чтобы поднять контекст?
Не будут. Вписываешь туда NULL, триггер видит, что ему передали не число, и генерирует следующее значение по счётчику.
Такие дела. Мб это из за того что я когда таблицу создавал прописал туда айдишнику not null ?
Не передавай вообще id в инсерте.
Вместо insert into URL(id, path) values (?, ?) попробуй insert into URL(path) values (?)
Тоже самое
А все , починилось спасибо большое :3
Я хз как делить. Этого никто делать не будет.
Я зеленый недоджун, который пришел на копролит спринг 4 без бута, который деплоится на томкат 7. Тестов просто не предусмотрено. Их не просто нет, но и написать нельзя.
Пример кода: таблица с фильтрацией с использованием Thymeleaf и Spring ( можно Boot ), как найти?
Очень хочу в целях обучения изучить чужой код. фильтрация нужна любая, кроме Search bar, везде нахожу фильтрацию только через него.
А очень хотелось бы посмотреть на таблицу, где есть сортировка ( простое нажатие на хедер таблицы или т.п. ) и фильтрация ( например, кнопки, выпадающий список, чекбоксы, что угодно ).
Хотя бы в самой минимальной реализации, на гитхабе никак не могу найти, уже второй день сижу фуллтайм.
Подскажите, пожалуйста, был бы крайне благодарен за помощь.
Юзер агент/что-то кастомное с фронта
>Вот Хорстманн и автор эффектив жабы пишут, что надо в геттерах возвращать копию полей, чтобы не давать обходить иммутабельность.
>Кто-то реально так запаривается?
Если у тебя value class, то желательно чтобы все возвращаемые значение были сами по себе иммутабельными. Но если нельзя то делай копию пару раз приходилось так делать.
Просто это создает более явный API. Вот есть у тебя йоба сервис и у него метод getConfig(), ты получил конфиг и что-то там поменял. Как понять изменения уже зааплаились или надо вызывать setConfig() или вообще новый сервис создавать.
Другое дело если у тебя возвращается иммутабельный конфиг, у которого надо делать toBuilder().setXXX().build() тогда ясно что конфиг надо как-то зааплаить в сервис. Опять же нет проблем с тем, чтобы поменять несколько связанных настроек - у тебя не будет момента когда одна уже поменяна, а вторая еще нет.
Да не, я не думаю, что буду брать на год. Я думаю о том, сколько смогу за два месяца пройти. Типа по максимуму. У меня ща времени дофига. Тратить 20к за год на это говно не планирую, офк. Если бы там еще по месяцам можно было платить адекватные деньги, то может быть и взял, если бы не успел. А 50 баксов эт дохуя слшком за такое.
Я лучше в VS Code буду дальше сидеть, чем платить жидбрейнсам по 50 баксов ни за что.
Помогло писос как, я же хочу посмотреть взаимодействие thymeleaf и Spring с бэком, зачем мне JS, с таким же успехом я мог бы datatables CDN подключить
Перечитай мой question bro, у тебя какой-то stupid сарказм
Ты сам понимаешь что хочешь то?
Ты либо отдаешь уже сортированные данные тймлифу и он рисует как ты их дал ему. Соответсвенно каждая сортировка это новый запрос
Или берешь жс и им сортируешь в хтмле что уже есть как пользователь хочет
Ты вообще понимаешь, как Thymeleaf работает? Это тебе не универсальный клиент-серверный фреймворк, а-ля Vaadin/GWT, а тупо либа, которая ещё на сервере берёт твой шаблон, подставляет твои параметры, и готовый HTML отправляет клиенту. Всё. Ничего сверх того, что можно сделать на голом HTML, на Thymeleaf сделать нельзя. Никакой динамики, никаких обработок кликов и тыков. Для всего этого JS.
Фронтенд и бэкенд это разные вещи.
И единственное, что можно сделать - это монстр наподобие пикрил. Всю таблицу, соответсвенно, обернуть в гигантскую форму. Вполне реально написать MVC-контроллер, который будет все эти параметры парсить, выполнять фильтры на сервере и запускать thymeleaf с нужными значениями. Только заебёшься.
Взаимодействие thymeleaf и Spring однонаправленное - из Spring в thymeleaf.
Массивы массивов юзаются редко.
Там же и понимать нечего, никакой разницы, хранить в массиве числа, объекты или другие массивы.
Да суть я их понимаю, а вот синтаксис это беда для новичка, вроде меня.
LeafUtils.createArray()
List[] x = new ArrayList[10];
Дженерики в жабе ущербные, поэтому их с массивами юзать не выйдет.
Если бы нет.
Брат, я хочу посмотреть на топорный способ, в котором я в модель кладу объекты и их подставляю в ссылки таймлифа для сортировки на примере такой таблицы.
Мне для этого thymeleaf и spring хватит с головой. Про то, что я могу туда добавить js я знаю, но пример нужен только этого.
>Крестики-нолики, саперы, калькуляторы, туду листы, календари
Я не могу представить как сделать кнопки в консоли для тех же крестиков-колинокв и сапера.
>то напиши круд(create, read, update, delete) одного объекта с 5-10 полями и сохранением инфы в тхт и с интерфейсом с консолью.
Можно поподробнее?
>Я не могу представить как сделать кнопки в консоли для тех же крестиков-колинокв и сапера.
погугли, полно таких задачек и их решений в интернете. Вроде обычно просто номер клетки цифрами вбиваешь.
>Можно поподробнее?
А что тебе не понятного? Есть пустой список неких объектов с некоторым количеством полей. Ты :
- create: создаешь новый объект и добавляешь к коллекции
- read: выбираешь или весь список объектов или несколько, отфильтрованных по одному полю, или один по идентификатору. И выводишь для чтения.
- update: меняешь содержимое полей, выбранного объекта/объектов.
- delete: удаляешь выбранный объект/объекты.
Этим и занимаются бекендеры, только читают они из базы данных, а отправляют не в консоль, а по сети в какой нибудь клиент - браузерный/мобильный/десктопный/другую серверную прогу. Сложный бекенд, кроме этого занимается еще много чем. Простой практически только этим.
Я просто пока понятиея не имею, что такое колекции, но в скором времени собираюсь это исправить. Спасибо за пояснение)
Достаточно топорный способ?
Java: https://pastebin.com/uAvc100D
Thymeleaf: https://pastebin.com/nwLKrzEm
1. Сделать Spring Scheduler, который будет с каким-то интервалом лезть в таблицу и удалять записи, у которых разница между временем создания и системным больше заданной.
2. На каждую созданную запись создавать фоновую таску с удалением, задать таске задержку, равную заданному числу секунд.
3. Юзать специфичные фичи СУБД, где-то из коробки есть time to live и прочее.
Я что-то не нашел в одном месте, на баелдунге обрывки.
Потому что ты скорей всего выводишь текст через байтовые потоки ввода/вывода и потом преобразуешь байты в символы, а надо выводить через консольные, которые поддерживают интернационализацию из коробки.
Ты не пишешь код с книжки, а делаешь скопировать/вставить. Вот он и не понимает всякие корявые символы из книжки. Печатай сам короче.
sql это язык. Тебе наверное все таки про субд нужно спрашивать? Если так то любую разумеется, самые популярные postgre и mysql, на твоем мелко проекте разницы ты вообще не почувствуешь
GWT - это тебе не просто какая-то тулза, ничего она автоматически делать не будет. Это фреймворк, с помощью которого можно писать на жабе веб-приложение, юзая специальные классы компонентов GWT, затем при сборке специальный плагин для Ant запустит специальный компилятор, который превращает жабу в JS, всё упаковывается в war-ник и деплоится на сервер приложений.
Да, проект на GWT собирается именно Ant-ом, именно в war-ник и запускается именно на сервере приложений, никаких тебе спринг бутов с томкатами.
Есть немного, да.
Только id serial не делай.
Благодарю, я так и делаю и заебался.
Думал еще JS чтобы ajax запросы посылала и таблицу рисовала, но это не моих умений тема:(
Там есть какой-то способ передавать массивы так, чтобы из формы галки в одинаковым name складывались в единый массив и отправлялись на сервер, но name, вроде, должен быть с квадратными скобками: <input type="checkbox" name="items[]">. Хз, через Ajax реально проще, там не надо возиться с формами, но нужно знать основы JS и работы с DOM, а на спринге уметь писать REST-контроллеры, по необходимости всё легко гуглится.
Я умер! Я воскрес!
>2
А як реализоввать ? Про Spring Scheduler читал , там только 1 раз можно задать задержку, а мне нужно что бы для каждой записи можно было бы уникально вермя выставить
Executors.newScheduledThreadPool
На жабе вообще не делают десктопные игры. То, что майнкрафт написали на жабе - не показатель, подобные проекты можно найти на любом языке.
На андроиде что-то пишут на специфичных либах, которые могут и не заработать на десктопе.
GameUtils от Apache.
Неправда, делают.
Спасибо большое :3
Я же говорю, мне скорее проект-опыт, чем игра нужна. Так что неважно на какой платформе она будет работать, лично мне на десктопе надо.
Сейчас пойду
panel.setLayout(new GridBagLayout());
GridBagConstraints gridLabel = new GridBagConstraints();
GridBagConstraints gridField = new GridBagConstraints();
GridBagConstraints gridButton = new GridBagConstraints();
GridBagConstraints gridTable = new GridBagConstraints();
gridLabel.gridx = 0;
gridLabel.gridy = 0;
gridField.gridx = 1;
gridField.gridy = 0;
panel.add(firstNameLabel, gridLabel);
panel.add(firstNameField, gridField);
gridLabel.gridx = 0;
gridLabel.gridy = 1;
gridField.gridx = 1;
gridField.gridy = 1;
panel.add(lastNameLabel, gridLabel);
panel.add(lastNameField, gridField);
gridLabel.gridx = 0;
gridLabel.gridy = 2;
gridField.gridx = 1;
gridField.gridy = 2;
panel.add(idLabel, gridLabel);
panel.add(idField, gridField);
gridButton.gridx = 0;
gridButton.gridy = 3;
panel.add(saveButton, gridButton);
gridButton.gridx = 1;
gridButton.gridy = 3;
panel.add(updateButton, gridButton);
gridButton.gridx = 2;
gridButton.gridy = 3;
panel.add(deleteButton, gridButton);
gridTable.gridx = 2;
gridTable.gridy= 0;
panel.add(jsp, gridTable);
panel.setLayout(new GridBagLayout());
GridBagConstraints gridLabel = new GridBagConstraints();
GridBagConstraints gridField = new GridBagConstraints();
GridBagConstraints gridButton = new GridBagConstraints();
GridBagConstraints gridTable = new GridBagConstraints();
gridLabel.gridx = 0;
gridLabel.gridy = 0;
gridField.gridx = 1;
gridField.gridy = 0;
panel.add(firstNameLabel, gridLabel);
panel.add(firstNameField, gridField);
gridLabel.gridx = 0;
gridLabel.gridy = 1;
gridField.gridx = 1;
gridField.gridy = 1;
panel.add(lastNameLabel, gridLabel);
panel.add(lastNameField, gridField);
gridLabel.gridx = 0;
gridLabel.gridy = 2;
gridField.gridx = 1;
gridField.gridy = 2;
panel.add(idLabel, gridLabel);
panel.add(idField, gridField);
gridButton.gridx = 0;
gridButton.gridy = 3;
panel.add(saveButton, gridButton);
gridButton.gridx = 1;
gridButton.gridy = 3;
panel.add(updateButton, gridButton);
gridButton.gridx = 2;
gridButton.gridy = 3;
panel.add(deleteButton, gridButton);
gridTable.gridx = 2;
gridTable.gridy= 0;
panel.add(jsp, gridTable);
Вот сегодня читал статью про мокито. Треть нихуя не понял.
Ты нарисовал хотя бы как это должно выглядеть целиком, а то не понятно нихуя что от чего отделять
Ну типо разделить эту путаницу и сделать аккуратные классы.
То есть создать отдельный класс кнопок, лейблов и текстфилдов, а потом это вызвать в общем классе окна, а потом сам класс окна вызвать в Main. Я не умею пока так делать, поэтому получается, что один класс не видит переменной другого, и получается что переменная не объявлена в другой.
Короче вот файлы:
Main
import javax.swing.;
import java.lang.reflect.Parameter;
public class Main {
public static void main(String[] args){
Gui gui = new Gui();
gui.Frame();
}
}
Gui
import javax.swing.;
import java.awt.*;
public class Gui {
void Frame() {
JFrame frame = new JFrame("Database");
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setResizable(false);
// Labels
JLabel firstNameLabel = new JLabel("First name");
JLabel lastNameLabel = new JLabel("Last name");
JLabel idLabel = new JLabel("ID number");
firstNameLabel.setSize(80, 50);
lastNameLabel.setSize(80, 50);
idLabel.setSize(80, 50);
// Buttons
JButton saveButton = new JButton("Save");
JButton updateButton = new JButton("Update");
JButton deleteButton = new JButton("Delete");
saveButton.setSize(100, 70);
updateButton.setSize(100, 70);
deleteButton.setSize(100, 70);
// TextFields
JTextField firstNameField = new JTextField(15);
JTextField lastNameField = new JTextField(15);
JTextField idField = new JTextField(15);
// Table
String[] colHeads = { "First name", "Last name", "ID" };
Object[][] data = {
};
JTable table = new JTable(data, colHeads);
JScrollPane jsp = new JScrollPane(table);
JPanel panel = new JPanel();
// gridbaglayout to set the position of objects on the screen
panel.setLayout(new GridBagLayout());
GridBagConstraints gridLabel = new GridBagConstraints();
GridBagConstraints gridField = new GridBagConstraints();
GridBagConstraints gridButton = new GridBagConstraints();
GridBagConstraints gridTable = new GridBagConstraints();
gridLabel.gridx = 0;
gridLabel.gridy = 0;
gridField.gridx = 1;
gridField.gridy = 0;
panel.add(firstNameLabel, gridLabel);
panel.add(firstNameField, gridField);
gridLabel.gridx = 0;
gridLabel.gridy = 1;
gridField.gridx = 1;
gridField.gridy = 1;
panel.add(lastNameLabel, gridLabel);
panel.add(lastNameField, gridField);
gridLabel.gridx = 0;
gridLabel.gridy = 2;
gridField.gridx = 1;
gridField.gridy = 2;
panel.add(idLabel, gridLabel);
panel.add(idField, gridField);
gridButton.gridx = 0;
gridButton.gridy = 3;
panel.add(saveButton, gridButton);
gridButton.gridx = 1;
gridButton.gridy = 3;
panel.add(updateButton, gridButton);
gridButton.gridx = 2;
gridButton.gridy = 3;
panel.add(deleteButton, gridButton);
gridTable.gridx = 3;
gridTable.gridy= 0;
panel.add(jsp, gridTable);
frame.add(panel);
frame.setVisible(true);
}
}
Ну тут видно какой пиздец с этим Grid, я хочу их нахуй в другой файл скрыть, они заебали, мешают что-либо найти
Ну типо разделить эту путаницу и сделать аккуратные классы.
То есть создать отдельный класс кнопок, лейблов и текстфилдов, а потом это вызвать в общем классе окна, а потом сам класс окна вызвать в Main. Я не умею пока так делать, поэтому получается, что один класс не видит переменной другого, и получается что переменная не объявлена в другой.
Короче вот файлы:
Main
import javax.swing.;
import java.lang.reflect.Parameter;
public class Main {
public static void main(String[] args){
Gui gui = new Gui();
gui.Frame();
}
}
Gui
import javax.swing.;
import java.awt.*;
public class Gui {
void Frame() {
JFrame frame = new JFrame("Database");
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setResizable(false);
// Labels
JLabel firstNameLabel = new JLabel("First name");
JLabel lastNameLabel = new JLabel("Last name");
JLabel idLabel = new JLabel("ID number");
firstNameLabel.setSize(80, 50);
lastNameLabel.setSize(80, 50);
idLabel.setSize(80, 50);
// Buttons
JButton saveButton = new JButton("Save");
JButton updateButton = new JButton("Update");
JButton deleteButton = new JButton("Delete");
saveButton.setSize(100, 70);
updateButton.setSize(100, 70);
deleteButton.setSize(100, 70);
// TextFields
JTextField firstNameField = new JTextField(15);
JTextField lastNameField = new JTextField(15);
JTextField idField = new JTextField(15);
// Table
String[] colHeads = { "First name", "Last name", "ID" };
Object[][] data = {
};
JTable table = new JTable(data, colHeads);
JScrollPane jsp = new JScrollPane(table);
JPanel panel = new JPanel();
// gridbaglayout to set the position of objects on the screen
panel.setLayout(new GridBagLayout());
GridBagConstraints gridLabel = new GridBagConstraints();
GridBagConstraints gridField = new GridBagConstraints();
GridBagConstraints gridButton = new GridBagConstraints();
GridBagConstraints gridTable = new GridBagConstraints();
gridLabel.gridx = 0;
gridLabel.gridy = 0;
gridField.gridx = 1;
gridField.gridy = 0;
panel.add(firstNameLabel, gridLabel);
panel.add(firstNameField, gridField);
gridLabel.gridx = 0;
gridLabel.gridy = 1;
gridField.gridx = 1;
gridField.gridy = 1;
panel.add(lastNameLabel, gridLabel);
panel.add(lastNameField, gridField);
gridLabel.gridx = 0;
gridLabel.gridy = 2;
gridField.gridx = 1;
gridField.gridy = 2;
panel.add(idLabel, gridLabel);
panel.add(idField, gridField);
gridButton.gridx = 0;
gridButton.gridy = 3;
panel.add(saveButton, gridButton);
gridButton.gridx = 1;
gridButton.gridy = 3;
panel.add(updateButton, gridButton);
gridButton.gridx = 2;
gridButton.gridy = 3;
panel.add(deleteButton, gridButton);
gridTable.gridx = 3;
gridTable.gridy= 0;
panel.add(jsp, gridTable);
frame.add(panel);
frame.setVisible(true);
}
}
Ну тут видно какой пиздец с этим Grid, я хочу их нахуй в другой файл скрыть, они заебали, мешают что-либо найти
Говорю нарисуй в пеинте или где угодно как это должно выглядеть, или хотя бы псевдокодом. Что с чем взаимодействует, после каких кнопок, в какие стороны, откуда приходят данные, как они обновляются. Тогда будет легко разделить это на классы, потому что будут видны точки соприкосновения. GridBagConstraints, gridx и прочая разметка это все вторично.
Твои код мне ни о чем не говорит, это просто набор компонентов. saveButton firstNameField table предлагаешь придумать как это заполняется и что ты пытаешься сделать?
Осмысли как устроены свинговые компоненты. В них данные приходят извне. Когда это происходит, они обновляют свое состояние (Label::setText например). Когда в компоненте произошло событие (Button::onClick например) компонент тригерит событие, на которое подписались так же извне. Ты должен создавать свои классы точно так же. Коллбэки, коллбэки, коллбэки. В этом весь ui. Еще паттерн MVC разбирай. В свинге плохо что ту часть где модель обновляет вью нужно писать вручную. В javafx это намного удобнее сделано благодаря ObservableProperty/ObservableList и байндингам.
> Говорю нарисуй в пеинте или где угодно как это должно выглядеть, или хотя бы псевдокодом.
Я еще попробую сам разобраться, но спасибо за рекомендации.
> Еще паттерн MVC разбирай.
Пока не знаю, что такое паттерны, но про модель-вид-контроллер слышал.
Никак, HTML-формы такого не умеют, в одном поле можно передать только простую строку. Придумывай способ генерации полей с уникальным name с одинаковым префиксом и последующим парсингом этих полей в контроллере, либо не изобретай костыли и учи JS.
Есть, но читать их не стоит, даже книги по пятой жабе будут актуальнее. В градле так часто что-то ломают и переделывают, что туториалы просто не успевают писать, что уж там говорить о переводе на русек.
Смысл в том, что я хочу при создании новой категории добавить возможность выбрать из уже существующих подкатегорий (которые хранятся в Set<Subcategories>). Получается попроще (без js) такое не сделать? У меня уже похожее работает для подкатегорий. При создании новой подкатегории можно указать к какой категории она относится. Но там в селекте один элемент выбирается, и th:value="${category.id}".
Можно сгруппировать по name, в значении передать id категории.
HTML (перепиши на thymeleaf):
<form method="POST">
category1: <input type="checkbox" name="subcategories" value="category1_id"><br>
category2: <input type="checkbox" name="subcategories" value="category2_id"><br>
category3: <input type="checkbox" name="subcategories" value="category3_id"><br>
<button type="submit">Send</button>
</form>
Контроллер:
@PostMapping("/create_category")
public String handleCreateCategory(@RequestParam MultiValueMap<String, String> data) {
data.get("subcategories"); // ["category1_id", "category2_id", "category3_id"]
return "create_category";
}
Если нравится веб, вкатывайся в веб. Если нравится андроид, вкатывайся в андроид.
Не благодари.
Хуек у меня стоит огого, хочешь проверить?
>Например, приложеие на спринг буте, само приложение будет в одном модуле. А как писать интеграционные тесты в других модулях тогда? Делать в каждом из них фейковое тестовое приложение, чтобы поднять контекст?
Бамп.
Даже в интеграционных тестах всё приложение обычно не поднимают. Поднимают тестируемый класс и его зависимости, чтобы проверить взаимодействие с ними, но и их могут частично мокать.
Всё приложение с настоящей базой поднимают в автотестах, но занимаются этим не разрабы, а qa-автоматизаторы.
Ну и что за хуйня в последнем пункте? настройка и создание зависимостей это и есть special configuration.
Можно такую же картинку для интеграционных тестов?
Никак.
java CopyFile File1 File2
Как в хваленной IJ IDEA организовать такой вызов? Где должны лежать файлы? Просто через терминал внутри самой IJ IDEA ничего не работает, т.к. она создаёт свою запутанную систему путей проекта.
В чем сомнительный? И в чем проблема с консолью? Твои вызовы там так же работают.
А че вызывая павершел из идеи и павершел из вскода будут разные результаты?
Конечно.
Они ещё продают одну и ту же иде под разными названиями. Типа вот вам для джавы, вот для сишарпа, питона там и т.п. По факту меняется только иконка и подсветка синтаксиса.
В VS Code плагины на подсветку синтаксиса бесплатные как и сама IDE.
Ещё давным давно было плагин для IJ IDEA для C++, но они его забанили, чтобы не конкурировал с CLion.
Я думал ты так глупо шутишь.
А потом прочитал пару статей и все так и есть, например: https://habr.com/ru/post/561520/
1. Оказывается прямо юниты-юниты в спринге нужны редко в сервисах, которые нужно анально замокать.
2. Прямо интеграционные со всем контекстом нужны, но редко.
3. А обычно нужны как раз тесты фрагментов Spring Context, типа @WebMvcTest и @DataJpaTest то есть именно как ты сказал "Интеграционные юнит-тесты".
И у всего этого куча вариаций. Это пиздец, я знал, что тесты спринга это глубокое болото, но все оказалось даже хуже.
Я все ковыряю спринг, а он не кончается и не кончается. И конца и края не видно. Даже в более-менее мастхевных вещах.
Так ты на первой картинке в консольке не скомпилил исходник. А во второй скомпилил.
Троллишь тупостью?
Тупостью, но не троллит.
В спринге болото - это тесты и ORM-параша, всё остальное сделано нормально.
А ты вообще читал как работать с javac и java в консоли? Если нет, то и не умничай. Через точку запускается класс в пакете и исходная директория вызова должна быть выше по иерархии.
>>282262
А разве хваленная IJ IDEA не компилирует? Или её компиляция - не компиляция? Там на скриншоте видно, что файл Example.class создан и я его пытаюсь запустить через консоль по всем правилам как написано в книжке. Раз это не происходит - это косяк идеи, а не мой.
Её форсят как самую лучшую IDE для джавы, но по факту в ней куча косяков. И даже простые примеры из книжки Шилдта для новичков, в ней невозможно выполнить.
> исходная директория вызова должна быть выше по иерархии.
Откуда угодно, если указал откуда загружать классы через -cp. По умолчанию он указывает на текущий рабочий каталог.
> Там на скриншоте видно,
Что ты скомпилировал в идее зеленой кнопкой, но запускаешь зачем то через терминал (хотя зеленая кнопка это и про компиляцию и про запуск). А в vscode через терминал и компилируешь и запускаешь.
> И в чём я не прав?
В том что в идее корень рабочего каталога не совпадает с иерархией классов, но ты почему то этого не видишь.
> Как зеленая кнопка мне поможет выполнить такой
Там настраиваются аргументы командной строки.
>в идее корень рабочего каталога не совпадает с иерархией классов
Что и требовалось доказать!
Откуда я вообще могу знать, что идея подменяет это? И зачем? Это просто не удобно.
>настраиваются аргументы командной строки
Во-первых, надо каждый раз прописывать, что тоже не удобно.
Во-вторых, аргументы - это имена файлов. Где размещать файлы? Тоже не понятно.
Казалось бы, такая мощная IDE должна облегчать работу, а по факту она только усложняет.
> Откуда я вообще могу знать, что идея подменяет это?
Рабочий каталог? Ты сам его переключаешь в терминале через cd. Ни к жабе ни к идее это отношения не имеет.
> И зачем?
Своя структура проекта? Подразумевается что ты можешь использовать внешние зависимости, ресурсы, дополнительные языки, код для тестов, код для бенчмарков и все что сложнее одного класса. Тогда это собирается в несколько промежуточных этапов, в своих директориях, с использованием кэша, десятком команд и опций автоматически, а не только javac java.
> Где размещать файлы?
Поиск будет происходить от рабочего каталога. Зная это можешь задавать пути относительно или абсолютно.
Мыши кололись, плакали, но продолжали есть какиус.
Это тролинг тупостью?
Да, и?
System.out.println("A esli vot tak?:)");
Невозможно. Пидоры которые пишут либы и мануалы, приводят примеры в 100-процентной уверенности, что у тебя будет как минимум аатоимпорт и автодополнение. Даже если ты сможешь руками без ошибок напечатать условный LocalContainerEntiryManagerFactoryBean, ты ещё должен вспомнить, в каком из тысяч пакетов это говно лежит. А в мануалах ебаныз импорты часто не пишут.
Дак эти фреймворки только в платной версии, а в бесплатной надо всё ручками подключать, что мало отличается от работы в других легковесных IDE.
Думаешь, в бесплатной идее у тебя спринг не заработает? Всё заработает, это вообще не зависит от того, из какой среды запускать. Все аатоимпорты и подсказки доступны за счёт интеграции с мавеном. Просто в платной идее есть несколько дополнительных фич, без большинства которых вполне можно обойтись, если ты не собираешься дебагом подключаться к серверу приложений или типа такого. Спрингбутовские жарники можно дебажить и из бесплатной.
Ещё идея не руссифицирована (даже платная версия!), а абсолютно бесплатный вс код полностью на русском.
За русеком можешь в шарп вкатываться, они любят в зависимости от локали выводить разные сообщения, в результате в половине случаев кракозябры и нихуя не гуглится.
А блять, так это ты со своим беззнаковым байтом. Нет уж, вкатывайся в шарп, тыкай там авалонию, gtk# или что ещё там есть в вашем гей-клубе. В жабе кроссплатформа такая, что у нас продовские сервера на винде работают.
Я долго не мог выбрать между джавой и сишарпом. Потом нашёл рекомендацию по выбору ЯП у Сергея Немчинского - выписать все плюсы и минусы языков. В итоге джава набрала 11 баллов, а сишарп лишь 8,5. Поэтому теперь целенаправленно изучаю джаву. Уже купил книгу "Философия Java", поэтому пути назад уже нет.
Пиши здесь свои минусы шарпа, и ях раскритикую.
Книгу продай.
Немчинского не слушай, слушай меня.
- нет полной поддержки кроссплатформенности (десктоп только под винду)
- мало учебных книг и они низкого качества
- не нравится стиль кода, когда под открывающую скобочку { тратится целая строка
- даже релизные сборки - это куча непонятных файлов (читал Рихтера - там вообще описан какой-то ад с ЭЦП, конфиг файлами и т.п.)
- нет обратной совместимости
- требуется мощный ПК и самая свежая винда (пришлось ставить 10-ку, чтобы всё было новых версий)
- если вкатываться на галеру, то надо учить фронтенд
Есть:
- нет беззнаковых типов и кривые побитовые операции
- нет поддержки перегрузки операторов типа +, -, *, / и т.п.
- нет всяких удобных сахарных фич типа геттеров/сеттеров
- нет крутых IDE типа вижлы
- клиентам надо ставить JRE (а сейчас и вовсе JDK), чтобы пользоваться программами
- нет фреймворков типа Blazor, чтобы писать фронт на Java с новой технологией WebAssembly (аплеты уже запрещены везде)
- нет поддержки фреймворков по типу: нажал "создать проект" и готово, надо ковырятся
-
Для меня безусловным плюсом явы является то, что если у меня не получится вкатиться на галеру (а скорее всего не получится, даже если хорошо прокачаюсь - старый я) то можно будет пилить приложения для телефончика для души.
> - нет полной поддержки кроссплатформенности (десктоп только под винду)
Десктоп - нецелевое применение жабы. И там всё так себе: свинг не развивается, javafx выпилили из стандартной либы, awt вообще пиздец. Если брать сторонние либы для гуя, можно и для шарпа взять сторонние кроссплатформенные либы.
> - мало учебных книг и они низкого качества
Всё на любителя, многим хвалёный Шилдт не нравится, например, куча воды, мало сути.
> - не нравится стиль кода, когда под открывающую скобочку { тратится целая строка
А мне нравится после плюсов. Первое время кодинга на жабе плевался, потом смирился.
> - даже релизные сборки - это куча непонятных файлов (читал Рихтера - там вообще описан какой-то ад с ЭЦП, конфиг файлами и т.п.)
Так везде, потому что так или иначе это необходимо. В жабе тоже получается куча артефактов, одного жарника обычно недостаточно.
> - нет обратной совместимости
Есть. 100%-ой обратной совместимости и в жабе нет, куча софта работает только на древней восьмой жабе.
> - требуется мощный ПК и самая свежая винда (пришлось ставить 10-ку, чтобы всё было новых версий)
Цветочки по сравнению с тормозами всего, что для жабы.
> - если вкатываться на галеру, то надо учить фронтенд
На галёру и в жабе надо.
Вроде на джаве как раз старые пишут. Молодые бегут в что-нибудь модное-молодёжное.
Оба бумерские, что жаба, что шарп. На любую работу приходишь и оказываешься моложе коллег лет на 10-15. Молодые пишут на жс и питоне.
Десктоп придаёт мне мотивации, что можно писать серьёзные программы, а не только консоль.
На джаве не только Шилдт. Есть Хорстманн, Эккель, Блох. На шарпе только Рихтер хорошая книга, да и та устарела.
В итоге, жабу ты решил учить из-за мифическо-теоретической возможности, которой ты вероятнее всего пользоваться не будешь, писать гуй, используя только стандартную библиотеку, так, чтобы он работал только на винде, линуксе и маке?
Не совсем, тоже надо учить фронтенд, тоже нужен мощный пека, тоже ломабт обратную совместимость.
>нет беззнаковых типов и кривые побитовые операции
пiхуй
>нет поддержки перегрузки операторов типа +, -, *, / и т.п.
Ты представь, что половина библиотек для своих коллекций переопределила метод add() из Collections как <<, а половина как +=. Ебанешься разбираться в этом говне потом.
>нет всяких удобных сахарных фич типа геттеров/сеттеров
Ломбок войдет в jdk через пару лет.
>клиентам надо ставить JRE (а сейчас и вовсе JDK), чтобы пользоваться программами
Хуево, но работа над этим ведется.
>нет фреймворков типа Blazor, чтобы писать фронт на Java с новой технологией WebAssembly (аплеты уже запрещены везде)
Через пару лет будет.
>нет поддержки фреймворков по типу: нажал "создать проект" и готово, надо ковырятся
Есть.
Как жаксоном ограничить глубину сериализации?
хз
Что не так с отношением типа сущности к самой себе?
Только вот пользователю мне нужно показать детей на один уровень в глубину
От силы по половине.
Если объективно посмотреть на вещи, жопаскрипт для тебя идеальный вариант.
>- нет поддержки перегрузки операторов типа +, -, *, / и т.п.
Как же хочется
0 #:: 1 #:: fibs.zip(fibs.tail).map { n => n._1 + n._2 }
>- нет крутых IDE типа вижлы
Эта та самая вижла, которую сярперы без решарпера не юзают, она?
>- клиентам надо ставить JRE (а сейчас и вовсе JDK), чтобы пользоваться программами
Для вас мудаков, которые не умеют в инсталяторы - граль запилили.
>чтобы писать фронт на Java с новой технологией WebAssembly (аплеты уже запрещены везде)
Ты ведь теоретик и фронта вообще не нюхал, да? WebAssembly - кроме пары технодемок нигде больше и не юзается.
>- нет поддержки фреймворков по типу: нажал "создать проект" и готово, надо ковырятся
mvn archetype:generate
покормил
Я за 10 итераций этого треда узнал про шарпец, что там лучше женерики, что там есть асиньки, как в жсе, про всякие сахарные классы с геттерами/сеттерами. Чета там еще было
Да там дохуя всего есть, котлин не настолько наороченный. В последних версиях вот добавили top level statements, чтобы писать хелловорлды без необходимости писать классы и методы. Но инфраструктура говно пиздец.
А по версиям что? Вот в жабке преобладает 8ка. Это версия 2014 года. А в шарпе?
> Но инфраструктура говно пиздец.
Двачую. Думаю, что жаба жива из-за своей неебического размера инфраструктуры
Я раньше на Перле писал. Меня закорючками не напугать)))
>та самая вижла
Это было до вижлы 2022. Сейчас 2022 на порядок круче всяких там решарперов и райдеров.
Вот суки. Жидбрейнс надо на овертаймы посадить, пока не догонят. Но вместо этого они ужесточили evaluation
Кто на перле кодил, тому и вижла IDE.
В общем хер его знает, может под винду вижла про 2022, что-то там и может. Но версия под гейось только поблевать годится.
Или тех же codewars/hackerrank будет достаточно?
> почему в шапке такой хейт а сторону жабараш?
Худшая инвестиция в твоей жизни.
> Но если совмещать задачи с Шилдтом/Блохом - есть смысл?
Нет. Если ты способен читать книги, но при этом ищешь курсы ради практики, это будет пустая трата времени. Курсы делают на массовую аудиторию, которая читать книги неспособна и максимум может читать описание к видеороликам. Что там практика.
> Или тех же codewars/hackerrank будет достаточно?
Да.
Двач - это вообще затягивающее болотце. Многие хотели бы бросить двачевать, но не могут.
Потому что тут можно высказать мнение без привязки к личностям. На каком-нибудь форуме с авторизацией могли бы забулить типа: глядите, это опять тот шиз с беззнаковыми типами. А здесь пишешь своё мнение и никто не догадается кто это.
Всё равно догадываются через пару постов, хих
jdbc
Нужен готовый фреймворк/либа для организации запуска тестов.
Да, ведь есть принципиально неотслеживаемая возможность вызвать их через рефлексию.
Ебёт скорее всего он, байтоёбы любят такие вопросы задавать.
Паходит на пару недель-месяц если ты вот вообще нулевый.
По минусам, ебанутые задания, ебанутые условия к ним, ебанутые тесты которые выдают тебе ошибку номер хуй из-за поставленной не там запятой, сами задания какие-то ебанутые и не оставляют ощущения что ты чот полезное делаешь. Там народ сидит по полгода, а потом не понимает как сделать консольные крестики нолики.
Для начальных задачек уж лучше степик или хиперскилл от жидбрейнсов попробуй.
Ну блять.
На спринге тебе придётся писать каждый день, а узкую проблему вероятнее всего не придётся решать вообще. Без либы ты легко обойдёшься, без спринга нет.
И не думай об жтих проектах как о портфолио. Ты их пишешь для себя в учебных целях, а не чтобы показать на собесе.
Что, прям хочется эту либу написать? Пиши, но по остаточному принципу после спринга, который в наивысшем приоритете.
Куда уж деваться.
Задачи есть и на степике. Но без всякого детского сада. Например: https://stepik.org/course/2403/syllabus
dbeaver
Не благодаря, а вопреки.
>>283638
Нахуя вам хот релоад?
У меня флоу такой
1. отдебажил где бага
2. написал тест который ее ловит
3. пофиксал
4. прогнал тест, если надо повторил п. 3
5. запушил, просмотрел регрессию
Вы там на проде без редеплоя баги фиксите, что ли?
на одной жава конфе была стори от одних ковбоев, как они через JPDA баги на проде фиксят
Для дебага как раз он и нужен. Не ждать же каждый раз, пока жирный монолит пересоберётся, задеплоится на сервер приложений и запустится.
Так тебе по любому надо в первый раз собрать и запустить, тут хот релоад не нужен. Хот релоад нужен если ты по ходу дебага пытаешься баг пофиксать.
Да.
Если весь фикс это добавить один if - то такое и идея может.
А нормальный рефакторинг надо делать не под дебагом и при наличии тестов на старое поведение и на сам баг.
Есть аццкое старьё: https://www.artima.com/insidejvm/ed2/index.html
Ещё есть спецификация: https://docs.oracle.com/javase/specs/
>Дак что собой представляет ссылка на объект? Ссылку? Указатель? Или нечто иное?
Число которое равно адресу первого байта объекта. А все это говно ссылка/указатель - это понятия из С++ которые в жаве не применимы.
Рендеринг HTML в браузерах тоже на плюсах, и что?
Жопаскрипт, питон, перл, руби и куча других языков тоже. Да тот же Хаскель GHC написан на C++, а там вообще понятия объектов и ссылок нет.
Зато в языке с беззнаковыми типами никаких проблем с русификацией.
На вкус и цвет фломастеры разные, но они вкуснее наркоманских листьев тимьяна.
Передаю вот это:
-Dawt.useSystemAAFontSettings=on
-Dswing.aatext=true
-Dsun.java2d.xrender=true
Нормально не будет, потому что свинг говно.
Прописывай эту хуйню программно, чтобы для запуска не нужны были ебучие батники.
Ну типо ты должен по сигнатуре понимать что метод делает и доверять ему, т.е. не должно быть необходимости лазить в методы и смотреть что в нем что бы понять что он делает в идеальном мире офк
В этом особой необходимости нет, ибо кишочки JVM и так всем открыты. Если нужны пояснения, то есть статьи и доклады в открытом доступе, где ковыряются в недрах байткода, исходниках, делают бенчмарки и занимаются оптимизацией.
CLR via C# особо в кишочки CLR и не залазит, так, по верхам, больше про сами возможности языка и дотнета, ну и про сборку мусора.
Effective Java + Java Concurrency in practice + Modern Java in action + Optimizing Java + доклады Шипилева про JMM и статьи на хабре про JMM будет более чем достаточно для любого разраба
Я спрашивал решение в мвп треде пару дней назад, там подсказали, но я уже увы забыл его.
Вообще считаю, что раз в тиньке на курс по джаве такие задачи спрашивают, то делать там нечего, раз сам решить не можешь.
Пусть Петя сам и делает, а то расстроится он видите ли!
Отсортировать числа и захуячить полный перебор, начиная от x0 = квадратного корня минимального. Последовательность генерировать, выбирая числа по возрастанию - как только < 0 сразу нахуй, идём заново с x0 + 1.
1. Сортируем элементы множества по возрастанию. Т.к. в самом начале выгоднее отнимать меньшие числа.
2. Делаем бин поиск по ответу (хз, какая верхняя граница, пускай будет 10^9). Для каждого занчения проверяем, можем ли мы построить посоедовательность.
Вроде должно работать
ну все равно, чтоб готовиться к таким задачам нужно их пробовать решать и разбирать
так что, если хочу хотя бы в следующий раз на курс попасть, то нужно учиться
Чел, там каждый раз новые задачи, не похожие на предыдущие. Я уже в четвертый или пятый раз туда пробую попасть, просто на обучение, даже не на стажировку, и каждый раз мне в ебало суют то динамическое программирование, то замудренные графы, то математику с оптимизацией, оптимизацию на кучах, и т. д.
Если ты не щелкал олимпиадные задачи еще будучи школьником, то хуй тебе, а не этот тинькофф финтех. Можно конечно начать задротить codeforces, leetcode, timus по 3-4 задачи ежеденевно, и тогда года через 2 будет результат, но какой от этого смысл, если нужно вкатываться прямо сейчас?
Ты имеешь ввиду проект без ORM?
А дальше учишь либы и фреймворки по учебникам и нарабатываешь практический опыт на пет-проектах.
Доки - это справочная информация для тех, кто уже умеет пользоваться и заходит для уточнения какой-нибудь особенности. Это не учебник/мануал/туториал, где разжёвывается, что и в каком порядке делать.
Очень просто. Вместо волшебного репозитория будет класс-DAO.
@Autowired
private DataSource dataSource;
...
final var jdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
jdbcTemplate.update(...);
return jdbcTemplate.query(...);
Так и есть, если ты как дурачок сначала будешь читать талмуд эккеля, а потом сядешь хелловорлд писать.
>сначала будешь читать талмуд эккеля, а потом сядешь хелловорлд писать.
Разве так и не надо делать?
Зато можно понять философию хеллоуворлда, а не как дурачок перепечатывать примеры с книжки, создавая иллюзию обучения.
Конечно.
Да нахуй она нужна когда есть VScode?
Вы таки будете учить Рабиновича коммерции?
Мы обходимся jOOQ
Кроме как на jvm они и не могли пилить новую IDE.
Потому что все старое легаси из движка IDEA они никуда не выкинули и продолжат тянуть дальше, ибо с нуля такое разрабатывать крайне дорого и тяжело.
Думаешь, байт-код будет знать, из какого синтаксиса его получили, чтобы различать, тормозить или не тормозить?
Понял, спс.
Компиляторы джава генерируют оптимизированный байт-код, а котлин - как получится.
А там вроде во всех популярных книгах есть задания практические простенькие по каждой главе.
https://youtu.be/nmej_XXRHrE
У меня и так 4 года гос. службы есть и классный чин секретать-референта 2 класса
Это я понял, но, в смысле, а куда мне дальше-то копать, если я эту хуиту уже прочёл и все задания выполнил? Читать другие книги для БОЛЕЕ ПРОДВИНУТЫХ маминых вундеркиндов как написали выше (Про либы по учебникам. Хуй знает правда, какие именно либы учить и по каким именно учебникам. Либ же дохуя вроде как)?
Хотя мб такие недопонимания возникают из-за того, что на самом деле ни Эккелса ни Head First я не читал дальше ста страниц
Почему я должен знать и английский и программирование? У меня математический склад ума, а не гуманитарный. Я даже русский только 4 знаю (67 баллов ЕГЭ).
Я эккеля до 300 дочитал, лол) сам не подскажу. Но дальше, я так понимаю, путь такой - спринг и свой пэт на костылях.
(Имхо, ближе к окончанию книги уже можно начать пилить простой пэт.)
Программируй.
Сделай свой проект, любой, хоть крестики нолики консольные, а в книжки подсматривай параллельно.
Не знаешь куда двигаться? Найди в гугле любую роадмапу по выбранному тобой направлению, посмотри вакансии, посмотри какие там технологии нужны, делай проекты с их использованием, чисто на чтении книг ты далеко не уедешь, но они тебе позволят получить более глубокое понимание.
Так учи математику.
Учи инглиш бля
>Компиляторы джава генерируют оптимизированный байт-код, а котлин - как получится.
Держи ньюфага, байткод не нюхавшего!
Российский джава энтерпрайз на 90% состоит из гос проектов, так что можно не волноваться. Всякие сберы, втб, телекомы, нефтянка - все это государственные и окологосударственные конторы, там инглиш не нужен.
Нужен в галерах типа епама и люкса, вот там да, иностранные заказчики. И вообще у нас не Украина, чтобы работать на западного барина.
Ну да, ахуенно взять на работу ебалана, который будет документацию через переводчик читать.
Уже на небольших проектах там начинается ебля. Даже эклипс лучше.
> На самом деле у нас в штате 150 джава программистов пишущих на котлин поэтому она написана на жвм - лучшей платформе для десктопа!
Конечно.
А может ты посмотришь на код, сгенерированный котлин компилятором, и сравнишь его с оригинальной джавой?
И а чем оракл не прав будет?
Тех кто будет пользоваться тормозными программами потребляющих 32гб памяти написанных на котлине.
Два кобола. Перепишут на Go и JS.
Да и хуй с ними.
Да там много всего. suspend функции в байткоде разворачиваются в две сотни строк. В языке банально нету примитивных типов, а мифические оптимизации kotlinc даже разрабы котлина не видели. Fleet чисто пиар ход, продвинуть язык на десктопе.
Байткод настолько примитивная штука, что там вообще нечего оптимизировать. Максимум JIT может как-то лучше оптимизировать конструкции характерные для джавы, но это не точно.
Дак речь не про JIT-компиляцию, а про компилицию из джавы или котлина в байт-код. Учитывая, что байт-код примитивный и приближен к машинному коду процессоров, то не всегда компиляторы выдают оптимальный результат. Джава-компиляторы существуют дольше и соответственно многое там улучшено, а котлин-компилятор молодой и разрабатывается одной жадной фирмой, которая даже не продаёт свои продукты, а даёт вам в аренду на время. А жадность и глупость всегда идут рука об руку!
Как скоро? Они вроде лум и вальхаллу активно пилят несколько лет, вряд ли в ближайшем будущем они выбросят жабу.
На ведре не HotSpot, там другой рантайм, тут хз. Ну меня например 1/2гб всегда занят системой, и больше 1-3 запущенных приложений уже выгружаются системой.
Гугл выбрал котлин больше по юридическим причинам (там был долгий суд с ораклом), хоть синтаксические фичи котла там намного лучше выглядят километровых партянок на джаве.
Ну я же не просто так телевизоры упомянул. Есть же даже на новых андроидах устройства с малым количеством памяти.
Именно поэтому на многих смарттв после клика на кнопку на пульте надо ждать по пять секунд на половину действий.
Ну я тоже заметил, что те же приложения с тем же функционалом, которые 7 лет назад ели 50 метров оперативки сейчас едят 300. Но есть пруфы, что это связано с переходом на котлин?
>>285915
Да котлин тут не при чем, это связано с пикрилом и относится ко всему софту. Пока не упремся в ресурсы железа, всё будет обрастать новыми слоями абстракций, чтобы сложные вещи делались одной аннотацией. А пока темпы развития железа позволяют чтобы из года в год программа с одним и тем же функционалом потребляла x2 памяти и тактов.
Чтобы нанимать олимпиадников из МФТИ и ВШЭ, а не гречневых 30 летних скуфов, как это в сбере делают.
Похожа, а дают такие задачи даже джуниор HTML программистам.
Это не на позицию, а в школу тинькофа. Причем для всех разрабов, что для бекендеров, что для фронтендеров.
И бэкендерам, и фронтендерам это одинаково нахуй не всралось, ведь первые грузят жсоны в базу, а вторые красят кнопки. Можно автоматизировать через DeepMind/GPT-3.
Надеюсь ты только контрибьютишь в опенсурс, или бесплатно ходишь на работу.
Та понятно, что не всралось.
Дело в том, что вкатунов ОЧЕНЬ много. Поэтому приходится изощряться и каждый раз придумывать все более хитрые и сложные задачки, чтобы суметь отсеять нужное число кандидатов.
Твоя собственная. Если ты не можешь решить это сам, то не трать свое и чужое время.
Правильное.
Решение единственное и правильное.
Смешно.
>Учитывая, что байт-код примитивный и приближен к машинному коду процессоров
Достаточно, что ты долбоеб уже все поняли.
Для начала можешь почитать про стековые и регистровые машины
Не парься, у них горит от того, что раскритиковали котлин и идею
https://jug.ru/2017/01/uncle-bob-vs-kotlin/
Вот не знаю, баг это или фича, но дико бесит!
Я вообще как-то утром запустил идею, а она мне половину проекта переделала.
Ну а почему не причем? Разве иммутабельность коллекций и отсутствие примитивов, как сказано выше, уже сами по себе на должны жрать больше памяти?
Да это хуйня, у меня в идее появился DeepMind-plugin, который залез без моего ведома в папку с единственным файлом readme и сам написал проект!
А может и пососу.
https://youtu.be/bQYdXt5I1q4
Хуйчинскому важна бесплатность, ибо он в проде миллион лет не работает, а только с вкатунцами общается.
И еще про желание делать все руками. Пусть пишет в виме тогда. Подчеркивание ошибок, остальное все руками. Рефакторинг, компиляция и т.д.
И что конкретно там в оракловских/ибмовских java ee кусках кала не пашет в идее так и не сказал.
а хохлофицировать можно? Хуйчинский хейтит идею еще и потому что он майданутый и хейтит все российские компании.
А в вижуалстудии для языка с беззнаковыми типами русек вообще из коробки!
И при этом говорит по-русски, рекламит свои курсы на российский рынок.
почему нужно выбирать охуевшего хохлораба, который сам нихуя не пишет миллион лет, а не идти на курсы епама или хотя бы в отус, где все преподы работают джавистами?
1. JVM стековая машина, в то время как все современные машины регистровые. В байткоде есть куча специальных инструкций для ООП - вызов статического метода, виртуального, интерфейса и "специального", в реальных процессорах ничего такого нет. В байткоде нет никаких векторных инструкций и работы с памятью, зато есть специальные инструкции по чтению полей и аргументов метода. Поэтому
>Учитывая, что байт-код примитивный и приближен к машинному коду процессоров
полная чушь.
2. Байктод Котлина ничем принципиально от байткода Жавы не отличается. И на тех же самых операциях он даст ± такой же перформанс. У Котлина проблемы с перформансом лежат в другой плоскости - там очень много сахара. И если не понимать как он работает - могут быть проблемы с производительностью.
Что-то ограничения самой JVM которые пришлось костылить, например
val x: UInt = 2_000_000_001u
val y: UInt = 2_000_000_002u
println(x + y)
на первый взгляд никаких объектов не создает, но если заглянуть в байткод видно что создается объект UInt, а потом в toString() он создает Long и вызывает у него toString(). Это костыль чтобы обойти ограничения JVM.
Есть проблемы с самим сахаром Котлина, например все коллекции имеют методы map/filter/и т.д. которые в случае иммутабельных коллекций которые юзаются по дефолту создают копию. И когда ты на большой коллекции будет последовательно вызывать myList.map {}.filter {}.map {} у тебя будет создаваться много промежуточных данных которые не нужны. Если использовать стримы то такой проблемы не будет, но об этом надо знать.
Кто такой Мартин? Известный нфобизнисмен, в джаве тоже. А Тагирка Валеев - разработчик идеи коммитит в саму джаву.
Даже на официальном канале самой джавы, есть видос про идею:
https://www.youtube.com/watch?v=FP0V98S4l9w
Что-то я про эклипсу, вскод, нетбинс или вим таких видосов на этом канале не вижу.
>Роберт Мартин тоже раскритиковал Котлин:
>Завершается пост неожиданной аналогией: «вот и катастрофа в Чернобыле произошла, потому что там обошли защитные меры, так что не полагайтесь на них и пишите кучу тестов!» (Тут сложно удержаться от вопроса «Простите, а часовню тоже Kotlin развалил?»)
И тут будет не лишним напомнить анонам, что лицензионном соглашении жавы которое хуй кто читает написано
>You will not use the Programs for, and will not allow the Programs to be used for, any purposes prohibited by applicable law, including, without limitation, for the development, design, manufacture or production of nuclear, chemical or biological weapons of mass destruction.
спасибо.
А вот про отсутствие примитивов в котле что скажешь? Выше писали про увеличение использование памяти. Хотя сам я помню советы всех преподов по джаве дефолту использовать врапперы, а переходить на примитивы, только если это необходимо для повышения перфоманса в конкретных местах.
биллибой, спок.
Байт код ближе к машинному коду процессоров, чем код на джаве к байт-коду. Так что это ты тупой, а не я!
х86 тоже может делать call или int и байт-код тут не уникален, что может разные вызовы делать. Так что ты тупой!
>А вот про отсутствие примитивов в котле что скажешь?
Их нет на уровне языка, но по возможности Int компилируется в int. Например
fun foo(vararg numbers:Int)
будет скомпилирован в int... , но вот с
List<Int>
котлин ничего сделать не может и там будет List<Integer> как и в жаве.
Инлайн типы тоже по возможности просто передаются как примитивы, но иногда все же приходится их врапать в объект.
>х86 тоже может делать call
Дебил продолжает срать под себя.
CALL в x86 это просто PUSH EIP + JMP никаких аргументов, поиска адреса нужной функции в VTABLE нихера.
Это ты с обосранной жопой бегаешь по треду.
int точно также вызывается через таблицу прерываний, которая лежит в памяти.
Мартин сказал что Котлин говно, так что ты тупой
Как научиться нормально прыгать по слоям в джавовских проектах? До этого прогал на си и питоне считай процедурно полностью, и то ничего нормального не делал. На джаве только разок морской блй ебнул на жавафх да простейший хеллоуворлд спринг бутовский.
Вот сейчас сижу разбираюсь как нормально писать логику внутрь спринг секьюрити, и нихуя не понимаю, мне надо что-то доставать из 10 слоев, наследовать, переопределять методы и впихивать обратно, а я во всём этом путаюсь и не понимаю куда именно надо впихивать логику.
Можете что-то посоветовать или это тупо с опытом?
Какая там логика то в спринг секурити? Там вроде в типовых случаях чисто конфигурация. Наследуешься от WebSecurityConfigurerAdapter и конфигурируешь.
Нет, мне типовой случай не подходил, потому что я делаю жейсон аутентификацию. Провайдер каждый раз дрочил бы юзердетэйлссервис и лез в базу по юзернейму, а мне нужно чтобы он это делал только для рефрештокена, а для аксеса проверял только по сигнатуре. Поэтому мне надо делать кастомный провайдер и впихивать его. Но это я уже понял, а сейчас продолжаю разбираться что ещё мне нужно кастомного сделать и куда впихнуть.
>int точно также вызывается через таблицу прерываний, которая лежит в памяти.
>в 2к22, когда кругом x64 неиллюзорно говорить про int
Иди отсюда грязноштаный, постирай портки и прими таблетки от склероза.
>х86 тоже может делать call или int и байт-код тут не уникален, что может разные вызовы делать
Аналоги int это разве что native функции, но в байткоде для них нет никаких опкодов кроме декларации.
Кстати, это же адекватное решение, если я сделаю какой-то токен контроллер, который будет жвт токены выдавать, а во всей системе спринг секьюрити я буду только их проверять? Или мне вот эту выдачу токенов по правильному надо как-то тоже в классы секьюрити завернуть?
Помню, приходилось ковыряться в спринг секьюрити. Просто пиздец. Слоев много, абстракций много, документации мало
>Кстати, это же адекватное решение, если я сделаю какой-то токен контроллер, который будет жвт токены выдавать, а во всей системе спринг секьюрити я буду только их проверять?
this
Spring Authorization Server в помощь.
Раст все спасёт. Несмотря на низкий уровень, уже пригоден для прикладного. А трейты не дадут сильно копипастить ООП-шум.
Ну он активно занимается пиаром своей параши айти школы, поэтому к нему и идут люди.
К слову, он сам вроде бы уже не преподает, этим занимаются другие люди, а он только пиар на ютубе делает.
С джаспером тоже придётся поебаться, но он хотя бы создан специально для отчётов.
Если у бизнеса продукт "А" будет шустрее и эффективнее продукта "B" конкурента, то бизнес тебя носом как котенка ткнет в раст. А то что там у тырпрайза, там вообще пофиг, хоть кобол.
Тыкал котлин. Сначала был восторг от сахара и прикольных фишечек, потом подумал: и чо? Всё равно абстрактные фабрики никуда не делись, и чуть дальше хелловорлдов на 100 строк разница вообще не ощущается, вот прям ни капли не приятнее писать на котлине. Как ебался с фреймворками и логикой, так и ебёшься. Вернулся к жабе.
Навернул тырпрайз говна и жалуется, что говно не разгребается.
Имхо, после котлина или шарпа, вообще трудно в джаву вернутся.
Конечно если у тебя фабрики над фабриками и фабрики погоняя, разницы не будет.
Не понимаю я эти ваши автомобили, как ели ехали по улицам, так и едем. А еще каким-то топливом заправлять надо, ремонтировать. Вон лошадь с сеном поставил и ушел отдыхать.
А цену то видели?
https://www.youtube.com/watch?v=evE4SpLRl78
А ты попробуй посопровождай легаси ООП код, где логика размазана на пол миллиона полупустых классов.
Это реально какой-то уровень канализации и работа сантехника, только в призме айти.
как будто студенты хуйчинского потом идут на галеры. И судя про то, как часто он говорит про древний жаба ее кал, то в галеры еще более паскудные, чем епам.
Потому что помидоры не хотят его учить, когда для обычной жабы столько работы. По факту начать писать на котлине после жабы можно за пару дней, позднее переходя к более идиоматичному коду. Но мы в жабамире, где никто даже цифру версии не поменяет, пока поддержку не дропнут нахуй.
Слышал про проекты на 6-. А в таких случаях сидят на жабе без поддержки или на всяких специальных ждк с длинной поддержкой, вроде азула?
Так всё равно ответят. Можно вспомнить того школьника с эклипсом, которого три треда кормили, пока он сам не ушёл.
твоя мама шлюха пойдет
А ты вообще в курсе, что кто обзывается, так и называется?
Загляни в крестотред и шарпотред.
Ладно хер с ним мой экзамен, он облегченный. Но как люди это говно (экзамен на сертификат) в реальности сдают? Вспомнил самое плохое из ЕГЭ.
К сожалению на экзамене так нельзя. Я слышал, что даже на некоторых собесах дают задачки с копиляцией говна в уме. Я ною конечно, но эта хуйня реально дохуя сил отнимает и особо ничего не даёт.
Жс - хоббиты. Плюсы - дворфы. Питон - гоблины. Эльфы - хаскель.
В полосатых чулочках.
Лул
Да. В джаве хуевая архитектура, поэтому и добавили многопоточку.
>Он либо долбоёб, либо не полностью раскрыл мысль.
Она нужна либо на специфичных проектах, либо для собесов (с)
> на специфичных проектах
Вот это уже больше похоже на реальность, чем "многопоточка = хуёвая архитектура". Хотя от реальности всё ещё далеко.
Да. На жопе даже чтобы хелло ворлд запустить надо создать пукток сборщика мусора и еще 10+ пуктоков для какой-то левой хуйни. Жопа - говно.
Да, смешно. Выше уже сказали.
Нет.
по грейдлу не нужно, по мавену все и так понятно
Да.
Ты еблан:
1. Потому что вначале засрал тред вижал кодом, а потом удивляешься что тебя нахер посылают.
2. Твой код говно полное.
1. Ты завидуешь, что я пишу в классненьком вскоде, а ты уже проплатил свою идею и деньги не вернуть.
2. Лучше, чем твои копипасты из гугла. Сам ты даже такой код написать не можешь.
Но если бы я написал код в идее, то такой агрессии не было бы. Следовательно, не нравится именно выбор иде.
В чём шиз? В то, что я не готов платить кучу денег за редактор кода?
Покормлю. Ты 3 недели назад написал первый пост. С выебонами на идею. С примерами хеловордов из шилдта. А теперь срешь другими хеловордами из эккеля.
То есть ты реально не свитчер из других языков, а шиз-вкатунец. Но даже вкатунец мог бы за три недели начать тут срать хеловордами ну хотя бы на женерики/коллекции.
Но у тебя хеловорды на простые циклы.
На этом уровне можно реально писать в блокноте.
Полноценная идея нужна для ебли со спрингом. Там есть несколько спринг плагинов, мавен плагинов, градл плагинов, плагинов для шаблонизаторов, плагин-клиент бд, плагин хттп-клиент, жпа плагины.
Они ещё и на грэдл-господ агрессируют. Бояться всего непонятного и нового. Как древние люди.
Я просто не понимаю зачем ебать себе мозги чем то кроме дефолтного мавена. Ну у градла есть пара преимуществ, но они применимы для 5-10% проектов. Ну попадешь на такие и быстро его выучишь.
Это у тебя мавен дефолтный, а другие его уже несколько лет не видели.
Ява-пориджы?
Он везде дефолтный. Есть статистика, сильно в пользу мавена, в доках всех библиотек сперва идут именно мавен зависимости.
Потому что котлин только на андроиде, а градл там навязывали ещё во времена жабы.
не)
А я и не против отдельного спринготреда. Зато шизики с беззнаковыми типами и вскодом не будут срать.
Ну что за пассивно арестованный тонн. Ты же знаешь для чего. Подключать зависимости, собирать проекты.
я подключил их в мувене. Зачем мне грудел? Они постоянно меняют синтаксис объявления зависимостей, я считаю это неуважение.
Вычищателя спринга давно не видно чёт.
Ладно бы только зависимости. Я как-то пробовал собрать fat jar без плагина спрингбута и охуел.
В джаве полно скуфов? Отлично, тогда я вкатываюсь куда нужно.
Хоть мне и 20, но в свои годы я выгляжу как типичная скуфо-свинья прямо как на боевых картиночках из тредов в /b.
Пруф.
Ну просто синтакис объявление зависимостей это самые основы и 90% использования сборщика. И меня бомбит, что они даже их изменили несколько раз.
Я не знаю зачем тебе гредл. Один раз всего было.
Мне кажется, что ты хочешь чтобы я тебя убеждал бросить мавен. Но я уже давно понял что просвещение невежд это сизифов труд и того не стоит.
>>289112
Не знаю что за плагин спрингбута, но для жирного жарника всегда юзали shadowJar. Что там охуитительного с двух строчек конфига было бы интересно узнать.
>ряяяя, а вот грудель, мой груделечек, он лучше, современнее, красивее, возвышеннее
>чем? ну это я вам не скажу, еще метать бисер перед свиньями, палить годноту быдлу.
Если интересно узнать ответы на свои вопросы, читай прошлые треды. Будут одни и те же аргументы и контраргументы. Если так называемое быдло не способно к самообучению это всё бесполезно в любом случае.
Так грудловиков попустили в предыдущих тредах по фактам. Но грудловики все равно воняют. И стоят на своем.
Ну вот, опять конфронтация и агрессия. О чем было сказано ещё в первом посте. Ну не могут люди с бинарным мышлением позволить другим развиваться. Обязательно тащат обратно в свое привычное болото.
первый пост был полон презрительного тона и имел оскорбительное сравнение. То есть ты начал с агрессии и конфронтации, грудловичок. Но вывезти свои понты и претензии не можешь.
Ты сам-то за сколько освоил язык? Поди циклы изучал несколько лет, а сейчас тут сроки указываешь другим. Сколько надо - столько и буду учить.
В менторинговом курсе Сергея Немчинского люди тоже разное время учатся. Кому надо больше времени, а кому-то меньше. В одном из видео он даже пояснил, что больше - не значит хуже, потому что человек более детально всё изучает.
Если хочешь узнать, читай прошлые треды. Всем токсикам были пояснены все плюсы и минусы предельно ясно. Мне лень повторять это и получать однотипные комментарии от вкатунов не умеющих читать документацию.
Это с baeldung. Ты пропустил "не"
On the other hand, the mappedBy attribute is used to define the referencing side (non-owning side) of the relationship
>The mappedBy element designates the property or field in the entity that is the owner of the relationship.
https://docs.oracle.com/cd/E19798-01/821-1841/bnbqi/index.html
> Все собеседования по языкнейм настолько одинаковые, что мне кажется, что можно устроить даже человека, который код ни разу в жизни не писал, если заставить его выучить типовые вопросы как студент билеты (главное, чтобы лайвкодинга не было)
Не всё, там надо по верхам пробежаться. Чем тема дальше от кора - тем меньше нужно помнить. Например, надо мочь чётко ответить на почти любые вопросы по синтаксису, называть все методы класса Object и подобное, в потоки и JMM можно сильно не углубляться, а про какие-нибудь сервлеты достаточно иметь лишь общее представление.
Ну меня например про хранимки и тригеры в sql ни разу не спрашивали, зато про транзакции: асид, изоляцию, пропогейшены ебали несколько раз.
Да и по другим темам там не очень вопросы и ответы. По коллекциям или тестам например многого нужного нет и есть мусор.
Ну и хибер, спринг, гит.
Нет
Смотря на какой ты стороне.
Догмы - вот настоящее зло.
Лежат у тебя в одном пакете несколько сервисов, все они используют общий хелпер, лежащий в том же пакете, больше этот хелпер никому не понадобится. И что, он должен быть паблик, потому что какой-то иерарх решил, что
> Классы уровня видимости пакета это зло
Так что ли?
Убедительно
Еще в C++ их полно. Но там платят мало, а скуф должен иметь кучу бабла, иначе ему не будут давать тянки. Поэтому правильно, только Java.
Приложение cherrytree, которым я активно пользуюсь, сначала было написано на питоне, потом автор переписал на сях. RTE есть и под js, напр можно заюзать с протоном.
А на джаве хуй.
Напр хочется добавить в cherrytree какие-нибудь плагины типа для генерации диаграм из plantuml, но целый с++ для этой личной задачи слишком оверкилл.
Да, джава сосёт в плане UI и всегда сосала, это никогда не было её нишей и не будет. Об этом неоспоримом факте должно знать как можно больше разрабов, чтобы даже не пытались писать гуй на жабе, заведомо зная, как всё там плохо. Все существующие гуёвые программы на жабе необходимо срочно переписать на другие языки, и новых не писать.
Почему колхоз? На скринах скорее просто proof of concept от разрабов, что все фичи wysiwyg релизуемы движком, а как это будет выглядеть это твое дело
https://github.com/FXMisc/RichTextFX#who-uses-richtextfx
Просто JS сам по себе колхоз, никто не привык предъявлять к нему реальные требования, ибо всерьёз тупо не воспринимают.
Хз, поднимал, не понравилось, глючно было. Вон даже пишут, что поиска нет.
>proof of concept
Ну так на других платформах уже готовые компоненты есть, полноценные и работающие.
А тут загатовка какая-то обрезаная.
Хотя я с javafx почти не разбирался, может попробую еще раз.
Вопросы спрашивают.
Спрашивают все методы класса Object, разницу между абстрактным классом и интерфейсом с дефолтными реализациями методов и классификацию эксепшенов.
Коллекции еще. Хеш/три сет/мап и аррейлист.
>На джаве fx так и не завезли нормального готового rich text edior.
>нормального готового rich text edior.
>rich text edior.
Чел ты
RTE и Grid самые сложные UI компоненты. Если твои задачи выходят за рамки "WodPad на минималках", то тебе по любому надо или писать свой компонент или сильно допиливать существующие.
То не мужик.
Если гуй принципиально на жабе, можешь взять жс либы и обернуть их через очко в javafx WebView. Но это уже реально будет колхозом.
И этот браузер - электрон.
Сегодня собес проходил. Стандартную хуйню спрашивали по коллекциям, интерфейс vs абстрактный класс, стримы, многопоточность + sql acid и изоляция транзакций + спринг
"Ты чо ебанутый, ты чо там делаешь?"
да бля, в моем мухосранске так уж и много контор. А у меня уже год опыта есть в говноконторе с ультра легаси проектом, на котором нихуя не научился практически
А что?
добавление к посту выше.
я решил просто резюме составить и выставить. В этот же день 2 популярные конторы пригласили на резюме, хотя я при общение указывал, что год проработал на говнопроекте.
короче хуй знает к чему готовиться
Мы вам перезвоним.
Хочешь - зубри.
нет
Нужно дать понять, что ты нужен им, а не они тебе.
а что по спрингу спрашивали?
Скучно.
>JEP 400: Использование UTF-8 по умолчанию
У анонов, которые пытались работать с консолью в винде, отвалилась жопа.
Да они же ебланы.
Юзерам не нужна соснсоль, они работают исключительно через UI, где нет проблем с русеком.
Разрабам/админам, которые работают в сосноли, не нужен русек, они же нормальные люди, а не юзеры.
Ты переносишь старую логику, а не новое пишешь. Т.е. нужно разбираться в старом говне, а потом переносить его в отдельную микруху
>The mappedBy element designates the property or field in the entity that is the owner of the relationship.
Тут написано "Элемент mappedBy определяет поле в объекте, который является владельцем отношения". То над чем висит аннотация mappedBy не является владельцем отношения, в нем указано поле на другую сторону, где хозяин отношения. Мы правильно друг дргуа поняли?
У тебя в консоль могут писаться логи, в которых есть user input данные форм например и там может быть и русский и китайский и флаг уэльса.
>освоения гуманитарных предметов мало Вам помогут
Значит английский не нужен и это просто закидон местных говноконтор, которым нужен англоговорящий программист?
Если ты работаешь на внутренний рынок, то английский может и не понадобится, документацию кое-как прочтёшь через переводчик.
Но если хочешь нормально развиваться с зарплатой в валюте и возможностью реклокации в другую страну, то все таки желательно знать английский.
По факту ещё зависит от конторы, в одной с меня хотели английский на уровне с1, хотя проект был для местного заказчика и нихуя там на английском не было.
>на уровне с1
Как вообще эти уровни определяют? Я вот в школе учил и потом в универе, то какой у меня уровень?
Да никак, от пизды говорят. Если можешь писать без особых ошибок и спокойно пиздеть на рабочие темы, то тебе хватит.
Если нормально учил и делал все упражнения без проблем, то скорее всего B1 или B2.
C1 - это уже надо доп.курсы проходить, читать много литературы на инглише и прокачивать практику.
Спасибо.
>Как вообще эти уровни определяют?
https://ru.wikipedia.org/wiki/Общеевропейские_компетенции_владения_иностранным_языком
Есть стандартные тесты для определения уровня. Можно пройти тест и получить формальный сертификат.
Анону который упомянул ACID выше большое спасибо , про это спрашивали. Жаль что я выучил только их , про изоляции транзакций я почему то посчитал что не спросят. Из не очевидного спрашивали что такое аннотации и как работают. Я есен хуй не ответил , никогда даже не гуглил этот вопрос. Про HTTP методы были вопросы и задачи на построение SQL запросов.
Задачи на алгосы еще давали на время решать ненавижу сука.
Да, в адресной строке вбивай адрес и бери данные.
Так то норм. А че за алгосы? Если сложное что-то, то найхуй такую контору. А что там? Яндексоподобное? епам?
Онлайн казино кодят ,как мне объяснили. Алгосы минмальной сложностью, нацелены на знания работы с колекциями. Тоесть это не контест с задачами как у яндекса. Но времени выделяют на 2 задачи 20 мин. Я охуел с такого расклада , первый собес как никак чота занервничал..
Ну все равно звучит, как топовый собес, чтобы чисто тренировать собесы. Пошел бы, если бы оффер был?
ArrayList<Integer> list1 = new ArrayList<>();
в чем разница блять?
Лист это интерфейс , а аррэйлист это класс его расширяющий. Ты можешь юзать методы прописанные в интерфейсе. А когда сразу арэйлист создаешь , как во втором случаи , тебе идея подсветит все методы аррэй листа , которые содержат и то что в листе прописано. Вроде как то так.
Потому что стирание типов.
Потому что язык хуевый.
Смысл в том, чтобы вызовом одного метода, указав тип byte, short или int прочитать из инпута строку, предваряющуюся в потоке ее целочисленной длиной, которая может занимать 1,2 или 4 байта, соответственно.
Если такое использовать в реализации реалтаймового сетевого протокола поверх TCP такое решение несильно ударит по производительности? Или лучше все же реализовать три метода readUtf1B, readUtf2B и readUtf4B, навредив дизайну?
Дискасс-вискасс, алсо, я просто не шарю насколько быстро работают сравнения типов по классу.
Type erasure, байткод вообще не оперирует типами дженериков.
Ну если в букве 4 байта кодепоинтов.
>я просто не шарю насколько быстро работают сравнения типов по классу.
Это 100 процентов не самая медленная часть твоего кода. В данном случае будет просто сравнение 2х ссылок.
>>292198
>>292337
Длина - имеется в виду длина всей строки в байтах, а не размер каждого символа. Располагается прямо перед байтами самой строки. Так вот эта длина, само ее значение и занимает 1,2 или 4 байта, в зависимости от того насколько большая может быть строка.
>>292384
Это может быть bottleneck-ом, поскольку вычитывание из сокета происходит постоянно на протяжении всей работы приложения.
>Это может быть bottleneck-ом, поскольку вычитывание из сокета происходит постоянно на протяжении всей работы приложения.
Конкретно этот кусок - нет, никогда он ботлнеком не станет. Там тупо нечему тормозить, 3 сравнения и чтение 4-х байт.
Вообще если у тебя такой йоба-хайлоад, то по хорошему надо разносить чтение из сокета и парсинг. Читает асинхронная фигня на каком нибудь Netty, и складывает в очередь, а потом уже твои консьюмеры парсят прочитанное.
>Аноним 13/01/22 Чтв 14:11:13 №226393447
>
>реактивщина
Анон, подскажи гайды/статьи где разжевывают реактивщину и WebFlux для тупых, плиз
Ну ладно, убедил, оставляю так, спасибо.
https://www.youtube.com/channel/UCULTpkhxkF6MXHK_UuWhpLA
Предлагаешь пересмотреть тонны видео и вынести вердикт?
Нравится подача - смотри, не нравится - не смотри.
анон, я тебе ничего вообще не предлагаю. где ты увидел это? меня интересует мнение людей, которые знакомы с его каналом, подписаны на данный момент или подписаны были ранее.
Да хорошие курсы.
Попадался на два или три видоса. Нормальный чел. Немного поверхностно, но норм. По джаве и так миллион видосов, по спрингу у него как-то очень куцо(но я посмотрю по спринг тестам. что он заснял).
На торрентах есть его курс по хиберу, по содержанию вроде норм. Думаю только это представляет ценность.
мне alishev больше нравится
Лол. Думал вечером почитать
Тот всего лишь утонул, потому что не нужен никому был, 500 постов в год.
Сочувствую.
Очередной вахтер на моче.
Надо ещё тред по джаве, кто пишет не в идее, а в других средах.
В этот тред пиши
Я кстати решил проблему с беззнакомыми байтами с помощью своей библиотеки
Мда.
Кроссплатформенно можно написать и на языке с ьеззнаковыми типами.
Лучшее из того что есть на русском языке:
https://www.youtube.com/watch?v=ygEo5LHHXSI&list=PLOFtRFZ_HEbIyfsPWU4kcbFiYAGR2r_dG
Что там хорошего? Лектор тараторит и бежит сломя голову по материалу. Ещё студентов задарживает, когда пара уже закончилась. Всегда бесили такие преподы, которые не умеют распределять материал лекции.
Иде для языка с беззнаковыми типами уже не русском.
Джава выравнивает объекты по 8 байт + 16 байт заголовок объекта + 8 байт ссылка. Лучше бы ты просто заюзал short
Только сейчас увидел, что это не объект с состоянием....
Нужна рефлексия.
https://youtu.be/41aGCrXM20E?t=198
Он не первый раз читает, а выводов так и не сделал. Вообще, хороший стиль - это оставлять 5-10 минут на вопросы.
Обычно вот такие валеевы, сами плохо читают, дак ещё и на экзаменах студентов валят. У меня вот тоже по джаве был такой препод-неумеха, поставил мне 4 на экзамене, хотя я программирование всегда на 5 сдавал.
HttpClients.createDefault
Вопрос - как быстро и без боли автоматизировать этот процесс? Читал про CI/CD, но это всё выглядит слишком уж complicated.
Докер и прочие модные штуки не юзаем, у нас тут всё по-простому.
release.sh
Крон и какая скриптопараша на баше/питоне.
Весь цикл не смотрел, но его лекции по конкаренси не для вкатунов точно. А вот тем кто уже работал с апи, будет очень полезно.
Зачем вообще ограничивать видимость классов/методов? Хуярю всё в паблик и уверенно двигаю тазом.
> и руками запускается на сервере
gradle ssh plugin
> Изменения по базе тоже вносятся руками.
Миграция? Должна происходить при старте приложения. У меня migration-1.sql migration-2.sql и тд в ресурсах, можешь что то подобное придумать. С flyway не работал.
Такие заморочки больше для разрабов апи библиотек
Базу мигрируй только через flyway/liquibase. Для остального можешь скриптик написать только не в build.gradle
>gradle ssh plugin
Спасибо, то что нужно.
>flyway/liquibase
А тут есть ньюансы, будем подробнее изучать.
Да.
ну ты смешной, дядя)
Ну хелло ворлд с одной кнопкой не тормозит. Я не понял зачем он нужено, если там мерзкий материал дизайн, нет таблиц, а код выглядит так же, как у tornadofx.
Да, многие вещи повторяет по сто раз. Но это и стоит повторять.
Например, то что "программирование - это практический навык".
А я все утопаю/убегаю в теорию. Пытаюсь все познать через теорию.. боюсь писать код. Потому что не понимаю/не получается.
Как это преодолеть?
Записывай я на наш курс, и вообще я в другом городе, что ты мне сделаешь?
Немчинский мыслитель и Джава титан.
Я нихуя не пишу, но общался чуть с ребятами, какая-то контора, которая на этом хорошо деньги делает, но там вилка была вполне стандартная и даже чуть лучше - 400-450, но ебали там на собесах люто, я не пошел даже пробоваться. Они оч долго висели на hh собсна, может и сейчас висят.. ищут рок-звезду.
Ага, только мне 40к предлагают))) За такие деньги, думаецо мне, разраб с опытом пару лет (как они хотят) не пойдёт.
Делать мне нехуя.
Я же Вкатун Вкатунович, прочитал алгосы на уровне грокаем алгоритмы, немножко поиграл с реализациями коллекций. Ну порешал несложные алгоритмические задачки на степике.
Эта хуйня для студентов-отличников, любителей олимпиад, задротов по алгосам.
Я пойду в галеру или в банк по проще, типа сбера. Буду копаться в легаси, ковырять баги, грузить жейсоны и прочий кал.
Многие пальцы гнут, про то какие они не макаки, а будущие крутые инженеры, вот пусть и задрачивают.
Пиши код [2]. Вступай в мою секту, я скоро создам тред в /gd/, ты узнаешь меня по походке.
Я? Просто тут бугуртят от яднексов и тиньков и прочих недоффангов. А я не понимаю че бугуртить. Полно же вакансий, где это не надо.
Я считаю это же охуенно, что есть места где есть доп критерии, типа задротства алгосов.
Задачки порешай сперва. Это хоть и эрзац, но все равно написание кода. Помогает пробить боязнь писать код. А потом уже учебные проекты.
Причем в процессе решения мне кажется, что задачи я решил верно. Во всяком случае, те тесты, что там даны, и мои собственные, которые я придумываю, мои решения проходят успешно.
Видимо всегда забываю учесть крайние случаи.
Вопрос лишь в том, как подготовиться и поступить в эту хуйню? Я-то просто задачи на литкоде решал. Решил 160 штук уже, 70 изи, 80 медиум, 10 хард, однако никак в эту хуйню поступить не могу, лол.
>>294325
>Многие пальцы гнут, про то какие они не макаки, а будущие крутые инженеры, вот пусть и задрачивают.
Меня в свое время запугали, мол сбер хуйня, галеры хуйня, все эти ебамы, люксофты, нетсракеры - говнище полное. А нужно идти в яндекс, тинькофф, jetbrains, дойче, хуавей. По словам анонов из джвмджобс там годно очень. Вот и я пытался туда попасть. Но видимо пора искать место попроще, и 2-3 года там просуществовать, а только потом уже пытаться стучаться в нормальные конторы...
Да, сейчас буду решать задачи на стажировку.
Вероятно тоже не пройду, ибо в августе чтобы попасть на КУРСЫ нужно было решить полностью правильно минимум 4 задачи из тех, что решены на пикриле.
Условия тут, кому интересно. https://vk.com/doc211084273_623361374?hash=5a9a71e83b89c7ba85&dl=c61dffda1e7b9afecf
На стажировку обычно еще сложнее задачи, лол. Потом перерыв до августа, потом до зимы, потом еще раз и еще раз...
То есть ты только ради сраного тинька больше года дрочил литкоды? И больше ничего не делал? Круды хоть крудил ?
Круды совсем простые делал. Но вообще я проебался конкретно. Нужно было спринг дрочить и литкод на уровне "развернуть связный список", а не заниматься всей этой олимпиадной хуергой, которую даже в FAANG на высокие грейды вряд ли спросят
дурак-человек. Сам признается, что знает, что хуйней мается, но собирается и дальше жрать кактус.
Чтобы другим пидорасам не было скучно.
Чтобы добить жабу. Слишком медленно она дохнет.
Map.Entry
Да. Посмотри реализацию коллекций. Хешмапа, аррейлист. Реализации итераторов, энтрей, энтрисетов и прочее. Там куча внутренних классов.
Если примеры в Эккеле не зашли, скачай блоха и читай отдельные главы по интересующим тебя темам. Про виды внутренних классов и их применение у него точно было.
Вот я смотрю этот класс. https://github.com/szerhusenBC/jwt-spring-security-demo/blob/master/src/main/java/org/zerhusen/security/UserModelDetailsService.java
В идее прогоняю и не вижу никаких ни использований, ни подачи его куда-то в конфиге, нихуя вообще. Класс как будто отдельный.
Это спринг так работает, что я могу выбрать такое название бина, что какая-то другая хуйня где это название бина захардкожена начнет тыкаться в мой бин? Получается чел делает какой-то говнокод с этим названием бина?
Ну вот я лазил по сорсам и нашел весь путь как может быть подан этот детэйлсСервис в конфигуреры аутентификации. Но там нигде я не нашел никакого автовайреда или конструкторов с этим интерфейсом.
Зачем грокать алгоритмы?
А я могу как-то вывести список куда может спринг автовайрить бины определенного интерфейса? Потому что не могу никак найти место куда будет завайрен этот класс.
Эккель много выёбывается в примерах, причём там где выёбываться не надо, что часто вызывает затруднения в понимании. Просто погугли примеры попроще, на том же говно-javarush примеры максимально простые - понимается проще, но текстовка лучше у Эккеля.
Спасибо, в даопровайдере оно сетится в ручную, а первом действительно автовайрит.
А почему я не мог найти сам? Мне надо где-то в настройках айдии поставить чтобы она сурс коды скачивала, а не декомпилировала байткоды, в этом мб проблема.
Я когда вижу подобное у меня сразу срабатывает рефлекс дропнуть это занятие.
С какими проблемами потенциально могу столкнуться при перекате на 11+ версии?
Спринг с хибернейтом больше всего беспокоят
Ссылочный тип объявляется как
(1)Object (2)obj = (3)new Object();
где есть 1-тип, 2-ссылка, 3-сам экзмепляр в памяти.
Примитивный тип объявляется как
(1)int (2)i = (3)1;
где есть 1-тип, 2-???, 3-сам экзмепляр в памяти.
Что есть имя переменной в примитивном типе? Это тоже ссылка, или это какой-то указатель, что это с точки зрения памяти и JVM?
Сам экземпляр в памяти
Примитивные типы хранятся в явном виде в памяти. К примеру, если int, то это 4 байта под целое число.
Ссылки на объекты - это 8 байт (для 64-битных систем), где хранится адрес, который указывает на первый байт объекта где-то в памяти (куче).
Сборщик мусора, кстати, может менять значения ссылок, когда освобождает память и переупаковывает живые объекты.
>Что есть имя переменной в примитивном типе?
1. Нет разницы это примитивный или ссылочный тип.
2. Если мы говорим про локальную переменную, то имя переменной это просто набор символов для компилятора. После компиляции все локальные переменные будут храниться на стеке и адресоваться по номерам имена могут сохраняться в дебаг информации. Для примитивных типов хранится само значение, для ссылочных - ссылка на объект в куче.
Потому что.
А я ебу?
Потому что надо было слушать Сергея Немчинского, а не местных. А он говорил, что идея многое делает за программиста и тот ни чему не учится, а потом на работе: "ой, а у меня раньше так работало...".
А кто из них прав по твоему?
Когда-нибудь.
Когда допилят лум и вальгаллу, а модули задеприкейтят.
После 2000.
Мне не зашло. Как то очень размашисто и многословно про каждый паттерн.
Потыкал после него tornadofx - фреймворк заебись, мое почтение. Очень годно получилось. Единственное плохо, что оракл убил жабуфх.
Расскажи пожалуйста тезисно про все три гуи-библиотеки. Я никогда не собираюсь писать гуй на джаве, но просто интересно. Один день копался в свинге и мне не зашло.
Кто-нибудь проходил этот курс? Нормальный?
Жабафх - стандарт десктопа для жабы 8. В целом годно, но некоторые моменты с лейаутом просто убивают (нельзя просто взять и задать ширину и высоту элемента, все ноды вычисляют эти значения по каким-то запутанным правилам). Из-за выпила из джк и введения модулей в 9 практически неюзабельна. Ну нахуя кому-то перечислять десяток модулей в module-info? Чтобы собрать свою ждк, которая на 10мб меньше? Охуеть, дайте два.
Торнадофх - фреймворк для жабыфк на котлин. Привносит охуительный dsl для построения интерфейсов, инъекцию зависимостей и в целом имеет простую и понятную архитектуру. Идея мне сгенерила проект с module-info, так что я не понял, можно ли в котлине от него отказаться. Видимо нет, так что все проблемы, которые актуальны для жабыфк, актуальны и здесь,
Компоуз - поделка для андроида и виндовс 10. Хелло ворлд работает, но таблиц еще нет, слишком сырой.
Я проходил, курс нормальный, даёт даже больше, чем требуют на текущей должности.
Он полностью прав
А если у тебя легаси проекты в аослужном списке и ты умеешь деплоить только по старинке без всяких кубернетисов и облаков?
А если я вообще не понимаю о чём речь?
Но на свалку в лычками тру сеньора?
Нет противоречия. Настроить средства мониторинга и написать скрипты для саппорта - это не то же самое, что заниматься мониторингом и запуском скриптов.
>Настроить средства мониторинга и написать скрипты для саппорта - это не то же самое, что заниматься мониторингом и запуском скриптов.
Много ты напишешь и настроишь когда у тебя нет доступа к эвайроменту.
У нас О'ПСЫ сказали, что им нахуй не нужен наш ансибл, сами напишут. Про мониторинг сказали - дайте метрики, а борды мы настроим сами без вас.
Получается ОПсы умнее вас погромистов? Не удивительно. Я вот тоже поработал сис. админом и насмотрелся на говно, которое выкатывают наши разрабы. Теперь вот сам собираюсь стать погромистом.
Мне кажется погроммистам надо срезать зарплаты, тогда туда пойдут люди, которые любят это, а не просто лезут за деньгами. Сейчас вот куча бездарей проходят всякие джавараши и устраиваются на работу. Я тут на днях видео стрим одного такого вкатуна и он там такое говно пишет, при этом даже не понимает как писать, у него цель просто, чтобы тест прошёл.
И в чем он не прав?
Если бизнес готов платить такому работнику, значит он все делает правильно.
Кто-то же должен разгребать говно, будто бы среди любящих программировать, так дохуя оргазмирующих от ковыряния в выгребной яме однообразных задач.
ОПсы мониторят прод 24/7, поэтому они лучше знают что им нужно мониторить, а что нет. Они сами решают когда деплоить новую версию. Опять же есть инфобез который тоже приходит и раздает ЦУ - тут пароли не храним, к этой байде доступ должен быть у А и Б только, а тут у нас будет фаервол.
You build it - you run it, конечно хорошо, но это далеко не всегда работает. А еще например бывают коробочные продукты типа SAP. Когда ты разрабатываешь софт, а внедрением занимаются совсем другие люди. Тоже надо всех разработчиков во внедренцы переводить?
стрим в студию.
Конечно.
Сам сейчас учусь в Kata Academy, как устроюсь буду платить им по 17% с зп, обещают 100к+ сразу, уже 3 месяца проучился, прошли джава кор и сиквель, потом будет совместный коммерческий проект с другими учениками, препод будет курировать всё это дело. Не понимаю хейта, по мне учат хорошо, наставляют, рассказывают в каком направлении дальше двигаться, а в конце хрюша помогает составить тебе резюме.
И что? Так бы я никогда вообще не осилил вкат и работал бы за 35к в этом ссаном саппорте, где меня постоянно шпыняли и давали внеочередные ночные смены. Я уже уволился, теперь я не раб. А скоро еще и программистом стану.
Осталось осилить работу.
Чел, каждое второе предложение, буквально по верхам нахватался. Разберись нормально с чем работаешь, чтобы делать выводы от которых не будет рукалицо
И в чём он не прав?
И чем я не прав?
Хорош.
NEEQUAQUE.
Чего тебе не хватает? Я вот на эту натыкался, описание многообещающее, но потыкать не успел https://github.com/vsilaev/tascalate-concurrent
Чтобы передать метрику.
Что не так? Семейство сиквель все похожи, знаешь сам сиквель, легко поймешь все семейство.
Ну я использую
Только сикель теребишь?
Подозреваю, что в задаче строка начинается с первого элемента, а не с нулевого
Все с кем общался используют "эскьюэль" именование. А сиквель звучик как-то смешно
>Project reactor
Не потянет наш текущий фреймворк, это нужно все с нуля переписывать.
>>297379
>Чего тебе не хватает?
Нехватает чего-то наподобие Котлина
override suspend fun sayHello(request: HelloRequest) = HelloReply
.newBuilder()
.setMessage("Hello ${request.name}")
.build()
Написал suspend и у тебя асинхронная функция. Так-то функционала CompletableFuture хватает. Просто код выглядит как говно.
Suspend же не влияет на асинхронность функции. Он просто говорит, что там происходит что-то долгое. Разве не так?
Gotlin
Любой.
Он позволяет котлину приостанавливать функции. Преимущество появляется если есть асинхронные IO библиотеки которые умеют работать с котлином - например gRPC или jasync-sql - тогда у тебя вызовы становятся асинхронными.
Асинхронный gRPC для жавы выглядит как колбеки в CompletionStage, а в котлине как suspend функции.
Подскажите, на собесе задали вопрос. Завалил его, но чувствую что он простой, поэтому хочу разобраться.
Есть литерал 0x9876_5432. Нужно определить знак. Но не переводя при этом в двоичную систему и не использовать знания о диапазоне значений int. Понимаю, как понять переводом в двоичную, не понимаю при чем тут диапазон значений, ну и соответственно правильного ответа вообще не знаю
Посиквель*
Почитай про типы переменных, там обычно приводится таблица значений, которые можно впихнуть в тот или иной тип.
Правильный ответ: минус
return 0x9876_5432 > 0 ? '+' : '-';
Тут простая логика, но хз, это ли собеседующий хотел услышать.
Одна шестнадцатеричная цифра соотвествует четырём двоичным. Смотрим на самую первую цифру, она больше 7 (0b0111), и начиная с 8 (0b1000) первый бит - единица, и в соответствии с обратным/дополнительным кодом такой вывод. Непонятно только, как здесь вообще можно что-то объяснить без привлечения двоичной системы.
Может их тоже возмущает отсутствие беззнаковых типов в джава?
Блин, получается надо было продолжать учить шарп, а не идти в джаву. Тем более тут в треде много токсиков.
Да когда уже раст взлетит то?
Который год все кричат что раст крута, что на раст надо переходить, что хотят его учить, и который год раст сидит в жопе.
Наконец-то.
Используй Apache DbUtils, засеря.
Неправильный вывод. Ты должен был учить жопаскрипт.
Проблема 2038 года
Срачи на двачах?
Какой смысл постить код и вставлять палки в колеса при попытке клонирования?
Какой в этом смыСОЛ? или я чет не понимаю?
Пример: https://github.com/spring-projects/spring-kafka/tree/main/samples/sample-01
А что говорит, когда git clone делаешь?
А почему бы и нет?
Та было бы куда с джавы перекатываться. Не в шарп же.
Наконец-то это говно сдохнет, вкатуны и умняши уйдут в сишарп и гоуленг, а я с легкостью вкачуся и буду править XML конфиги, фиксить баги 2005 года и перекладывать джейсоны в самом древнем джава-легаси!
Скачивать можно из любого публичного репозитория, но скачивать можно только репу целиком, а не подпапку как ты пытался.
А, во. Это я и хотел понять, спасибо
там есть беззнаковые типы.
Это ты ещё в кофе-тред не заходил, вот где пиздец творится.
Думаю что это даже не ирония что язык назван по сорту кофе с одноименного острова
Для шарпа есть дотнет и вижла, а там фреймворк для бекенда ASP.NET и его проект можно создать также просто как проект консольного приложения. Просто вводишь название и жмёшь готово. У тебя уже работающие приложение, которое можно расширять как угодно.
>Украинский профильный ресурс DOU.UA провел очередной ежегодный опрос о языках программирования. На этот раз собрали 9245 анкет из Украины.
Ясно
Украина это на 99% аутсорс. По dou опросам ежегодным четко видны тенденции it в развитом мире.
>тенденции it в развитом мире
Развитые IT компании не отдают разработку ключевых вещей на аутсорс. Аутсорсятся только второстепенные вещи на которые своих разработчиков нехватает.
Плюс если это финтех там есть куча регуляторных ограничений, например нельзя просто так рандомхую дать доступ к данным клиентов это нужно например, для разбора прод инцидентов. И вообще передача данных граждан ЕС/США, за пределы ЕС и США это боль и страдания. У нас например у сотрудников из российского офиса не все доступы были.
Logback + slf4j
Мне нужно навешивать разные комбинации секурити проверок на методы в контроллерах
И вот вроде в 5.6 добавили возможность нескольких мета аннотаций судя по
https://github.com/spring-projects/spring-security/pull/9630
Только нихуя не работает, где я обосрался?
Не хватает древней аннотации @PreAuthorize?
https://www.baeldung.com/spring-security-method-security
Чел, там и написано про метааннотации
А мне нужно несколько их вешать
Но срабатывает только одна в итоге
Джава или Ява?
Мне чет режет слух "Ява" и создает стойкие ассоциации к "пососи разява~"
Ну эт норм. Хотя, мой друг, который 4+ лет в Java, когда впервые заговорили и я назвал Java "жабой" - он удивился и сказал, что никто так не называет (вот бестолочь)
Как только не называют, я даже джавА слышал с ударением на последний слог.
Хуядно.
Ориентируюсь на англоязычное сообщество, поэтому только джава, джаваскрипт, сишарп, пи эйч пи, сикуэль, эс кью эль, си плас плас и т.д.
Прости анонче!
Перекатываю, чекай.
Да чтоб идея так же быстро запускалась, как этот тред грузится.
А кто тебе там сказал про 3 месяца? Я слышал, что могут сколько им угодно держать.
Потому что я написал метод, который в момент рукопожатия кастует "Яву" в "Джаву" и т.д.
Так везде требуют коммерческий опыт, а не волонтерский. Работать бесплатно - это всё равно что писать пет-проекты.
Двачую.
Кстати мне только за запись в резюме, что я прохожу тренинг ответили на отклик и позвали на собес.
>>300150
Короче записывайся и ищи параллельно другую работу. Я так делаю. Ибо шанс маленький. Там только в один офис в месяц попадает два-три десятка лаборантов. Стажировка еще не началась, а я уже не в накладе. Многие, кто проходил, говорят норм опыт.
Хотя с другой стороны можно спиздеть, написать про стажировку в резюме и не идти туда.
Так поподробнее, если несложно) Там удалённо варика нет? Надо, допустим, в питер в офис пездовать?
и реакт и кафку и докер и раббитМQ и ... ебаной рот блляяя когда я уже сдохну..........
Нет, именно в питерский епам в лабу 100% удаленка. В тренинге были сплошные скуфы 25+, много тяночек, тоже в возрасте. В тренинге было 30 человек. Ну на стажировку пройдет 20. И 10 может сразу на стажировку идут. Меня сразу на стажировку не взяли из-за плохого инглиша. Я решал на проходной бал их задачки и готовился к собесам заодно.
Но с тренингом это вообще полгода+(тренинг ровно 3 месяца). Уровень тренинга слабый, экзамен - простые задачки на кодинг и тесты прямо из книжки тестов aca/ocp java8.
Сейчас после собеса с неплохим фитбеком на нормальный стек дали тестовое, если возьмут, то нахуй лабу. Если нет - буду дрочить лабу и проходить собесы дальше.
Нахуя реакт? ты решил в фулстак сделаться?
Так ты тред не закрывай.
Понял, спасибо, сначала "Основы Java-разработки", потом стажировка, и дрочить инглиш)
> сикуэль
S, s (эс) — 19-я буква базового латинского алфавита. В большинстве языков произносится как с, реже - как з;
Скуэль
Не знаю, но у меня очень хуевый(но пол спринг ин экшона прочел без переводчика и баелдунг читаю постоянно). Там был онлайн тестик на грамматику и вокабуляр с таймером меньше минуты на вопрос. Я его завалил. Потом еще звонила рекрутерша, спросила пару слов устно по телефону, ну тут я еще мощнее сфакапился. На тренинг взяли, там похуй. Но сказали во в середине/конце лабы будем вас ебать устным ассесментом по английскому..
Ты в любом случае будешь выглядеть лучше половины джунов, у которых даже такого опыта нет. Ну и про то, что стажировка бесплатная не обязательно писать. А стоит подробно расписать, что были за проекты и что ты там накодил.
Так его спрашивают обычно ещё до собеса.
Секиль
Первое это какая-то единичка и ГодМесяцЧислоЧасМинута, а второе просто вещественное число в одним знаком после запятой.
Лист строк, потом ручками
Borrow checker круто когда про него пиздишь, а когда говнокод не компилируется все эти фанаты раста куда-то исчезают
Ну так исторически сложилось, что не "эс", а си говорят.
Ты просто выразил свое отношение к ситуации? А ответ где?
Или это и есть весь ответ?
другой анон
Он хотел от тебя услышать про стратегию. Возможно, он хотель услышать про реализацию стратегии с помощью спринга
А можно в каждой стратегии задать енам/класс/... который она обрабатывает, автовайрить лист и перегонять его в мапу <num, strategy>
Наткнулся на DSL, Потом еще решил посмотреть что на Groovy пишут.
Потом натыкаешься там на замыкания, потом на функции первого класса..
Пиздец.. вот так хуячу по ссылкам в кроличью нору. И все ведь интересно! А потом еще хуй вспомнишь с чего начинал.. и день прошел. А ты все вроде развивался, но хуй поймешь куда.
А еще параллельно возникают всякие IT-термины, которые тоже хочется понимать.
Пиздос. Че так дохуя-то всего?
Это просто термины для задротов. Функция, переменная и прочее - это всё туда же. Для любителей попиздеть языком.
Это ты к чему? Про бэк > фронт? или наоборот?
Что значит
>Примерно как хуй в жопе.
?
Насколько примерно?
Как хуй в жопе у кого? Мой хуй в чужой жопе или чей-то в моей?
Многие кайфуют и от хуя в собственной жопе
Нихуя не понятно = ты ебанат и высрал хуиту какую-то. Отвечай развернуто
Главное в датасаенс не иди, а то они там любят маленьких мёртвеньких девочек.
Бытует мнение, что если в выходные хуярить код или что-то учить, то выгоришь и нахуй все пошлешь. Но если не хуярить в нерабочее время, то и не вырастешь особенно? будешь на месте топлаться, не?
К тому же, мне кажется, что я префаером выгорел. Уже только не хочется нихуя писать код
> Бытует мнение, что если в выходные хуярить код или что-то учить, то выгоришь и нахуй все пошлешь.
Выгорание от этого не зависит. Если интересно заниматься этим или хотя бы не приходится себя заставлять, не выгоришь. Порог по времени у всех разный. А если садишься за код с мыслями "бля, не хочу, хочу доту и пивас", то выгорание уже началась.
В выхи тоже хуярю, но делать так не советую, если нет адово жгучего стимула.
Мужыки за станком всю жизнь работают по 8 часов в день, и не выгорают, а погромисты через полгодика сгорели как щепки.
> Мужыки за станком всю жизнь работают по 8 часов в день, и не выгорают
Ага, не выгорают, а потом умирают от цирроза печени в 40-50 лет.
То есть это модное слово для обозначения "заебала эта унылая хуйня каждый день"
Средняя продолжительность жизни всех мужичков в Россеи - 67 лет. Причем в кавказских регионах, где почти нет заводов она выше лет на 10. Среди всяких интеллигентов типа врачей и преподов, тоже выше. Да и среди офисных крыс.
Значит средний гречневый с завода не доживает и до 60.
Exactly.
Так на заводе после года-двух опыта ты просто ебашишь на автомате и витаешь в облаках весь день. А в макакинге думать надо над говном которое бесит.
В макакинге думать не надо. Можно навсегда остаться джуном, разобравшись во всём за те же год-два и больше не повышать свою квалификацию.
И открыть курсы.
Чел, даже над джуновскими тасками надо думать. Сидеть читать стены говнокода. Да, особо острого ума не надо, но все равно нужна какая-никакая концентрация.
Нужна дисциплина. Вот в этом время работаю и не отвлекаю себя, в этом время я занимаюсь, чем хочу. Такова суть, думать не надо.
По задачам.
Аудио
Хочу себе большую 9-10 дюймов еинк книжку. Пыриться в моник, особенно с белым фоном реально глаза болят.
Книги для быдла.
Попробуй зеленый шрифт + черный фон.
Ну вот вакансий на hh по рф с запросом java spring - 3600, java hibernate - 1400, а с java jsp - 90. Но эти 90 - это сильно больше, чем например java vaadin - 40 или java swing -30.
Ну я больше про то, может сервлеты и jsp спрашивают просто чтобы спросить, типа это БАЗА, как Core? Особенно на стажировках?
Сервлеты поверхностно могут и то очень редко. Jsp только неадекваты могут.
А че ты через 3 года только очнулся? Где ты был 2 года назад? Можешь не пройти, зато звать тебя будут раз в 5 чаще чем чела без опыта.
Про сервлеты почитай, потыкай их чутка, хорошо хотя бы иметь представление о них, так как не них многие фреймворки работают, однако досконально их вряд-ли кто-то будет спрашивать.
Jsp тут уж зависит от упоротости компании, опять же прочитай пару страниц, сделай пару страниц.
Сервлеты используются повсеместно, на них работает половина спринга. Но самому их писать надо редко, они достаточно низкоуровневы, должно быть общее понимание.
JSP почти не юзается, хотя меня попросили о нём на собесе сказать пару слов. Учить не надо, достаточно знать, что жто такое.
Да я и не очнулся. Просто про собесы часто пишут. Я не собираюсь никуда уходить.
Сервлета ответ.
Пруф.
Ну вот вопрос тогда. Расскажите что такое сервлет и как он применяется в спринге.
Хуйня которая обрабатывает http запросы из javaee.
В спринге все запросы идут через DispatcherServlet.
Сергей Немчинский сказал, что всегда говорят когда перезвонят.
По сервлетам есть книга сладкописечной вайфу всея джава вселенной Екатерины Сьерровой. Можешь читнуть и на этом остановиться.
Майнкампф
Фуллстек есть на шарпе, потому что там сделали фреймворк Blazor на WebAssembly. А вот на джаве никто не хочет возрождать апплеты.
Энтити граф позволяет переопределять fetch политику, для связанных сущностей.
Т.е. если у тебя @OneToMany(fetch = LAZY), то с помощью энтити графа ты можешь все равно достать эти Lazy сущности
https://vladmihalcea.com/jpa-entity-graph/
Так у тебя вместо пхп и фреймворков питона жаба и спринг. Фронтенд придётся писать так или иначе, на чём бы у тебя бэк ни был. Всякое жс-говно на реакте.
Если у тебя цель писать именно фронтенд на жабе, бери GWT или Vaadin, а шарпошизика не слушай.
Ну вот представь у тебя есть условная сущность User, у нее есть свои данные (к примеру lastname, firstname, birthdate и тп) и зависимые сущности (к примеру Orders, Payments и тд) соответственно со своими данными. К примеру тебе пришел запрос достать birthdate у конкретного юзера, ты обращаешься к репозиторию зачитайте мне пожалуйста юзера с таким id, он тебе зачитывает твоего юзера и плюс все его зависимости (Orders, Payments и тд). В этой ситуации тебе нужен был лишь birthdate, а зачитка всех зависимостей для тебя это оверкил. Как это решить? Вешаем на определение зависимостей fetch = LAZY и теперь зависимости при зачитке юзера не подтягиваются. Но теперь у тебя появляется другой юзкейс, в котором тебе нужно прочитать что-то у юзера и сагрегировать по его заказам, и в данном случае тебе наоборот было бы оптимальнее сразу зачитать сущность со всеми зависимостями. То есть тебе нужно динамически во время исполнения решать какие данные должны быть зачитаны. Вот тут тебе и может помочь энтитиграф: для твоей сущности ты создаешь несколько энтитиграфов подходящих под твой конкретный юзкейс, и просто указываешь при зачитке репе/ентитименеджеру под каким энтитиграфом ты делаешь зачитку энтити, и тем самым зачитываешь только те данные которые тебе нужны.
List<? super String> и т.п.? Мне вообще не понятно нафига это придумали.
Сокращает колличество кода
thnx
Но есть еще ночь сегодня и завтра день.
Что лучше?
- Докерезировать базу на постгресе(сейчас там все в инмемори базе).
- Написать тесты(дольше всего, не смотря на то что метод на всех слоях считай один).
- Прикрепить к моему эндпоинту слою сваггер(это я почти не читал, как делается, но он один - должно быть изи).
Что с точки зрения работодателя будет лучше всего?
1) Ванильная Java - уже фактически труп. Учить её сейчас с нуля нет смысла, новых проектов на ней никто уже не начинает. Большое кол-во вакансий и высокие ЗП в данный момент, обусловлены её славным прошлым, большому кол-ву кровавого энтерпрайза в финтехе, телекомах и тп который нужно поддерживать и дорабатывать, и тем, что молодые разрабы в большинстве своём проходят мимо неё в результате чего имеется серьезный дефицит разработчиков.
2) C# медленно, но верно загибается, МС судя по всему будет продолжать активно развивать его, в результате чего он имеет шансы обогнать Java со временем. Т.е. проще говоря он будет терять свою долю рынка медленнее чем Java. Тем не менее учить его с нуля в 2022 тоже нет смысла, главный аргумент тут: он не используется в core-сервисах крупнейших IT компаний мира (разумеется, сама МС не в счет). Пока гугл, амазон или мета не перепишет свою инфраструктуру на C#, смотреть в его сторону тоже не стоит.
3) Думаю, что следующая троица: node+ts, kotlin и golang в течение нескольких лет практически полностью вытеснят java и c# с бэкэнда везде, включая банки, телекомы и тп. В конечном счете всё будет переписано на данных языках. Старые технологии местами останутся, если серьезные доработки не требуются, но с нуля разрабатывать на них уже не будут.
Поскольку, последние 5 лет я пишу исключительно на node+ts (до этого, немного разрабатывал на c#), в этом году я решил изучить golang. Думаю, что спрос на golang разработчиков вырастет в разы в ближайшие годы.
Напоследок, хочу поделиться с вами прекрасным постом на реддит который я нашел пока вентилировал данную тему. Там не только про dotnet ui фреймворки, но и про политику МС к разработчикам в целом (в хроме можно использовать встроенный переводчик, смысл остается вполне понятен) https://www.reddit.com/r/csharp/comments/f9i9hc/comment/firr467/?utm_source=share&utm_medium=web2x&context=3
1) Ванильная Java - уже фактически труп. Учить её сейчас с нуля нет смысла, новых проектов на ней никто уже не начинает. Большое кол-во вакансий и высокие ЗП в данный момент, обусловлены её славным прошлым, большому кол-ву кровавого энтерпрайза в финтехе, телекомах и тп который нужно поддерживать и дорабатывать, и тем, что молодые разрабы в большинстве своём проходят мимо неё в результате чего имеется серьезный дефицит разработчиков.
2) C# медленно, но верно загибается, МС судя по всему будет продолжать активно развивать его, в результате чего он имеет шансы обогнать Java со временем. Т.е. проще говоря он будет терять свою долю рынка медленнее чем Java. Тем не менее учить его с нуля в 2022 тоже нет смысла, главный аргумент тут: он не используется в core-сервисах крупнейших IT компаний мира (разумеется, сама МС не в счет). Пока гугл, амазон или мета не перепишет свою инфраструктуру на C#, смотреть в его сторону тоже не стоит.
3) Думаю, что следующая троица: node+ts, kotlin и golang в течение нескольких лет практически полностью вытеснят java и c# с бэкэнда везде, включая банки, телекомы и тп. В конечном счете всё будет переписано на данных языках. Старые технологии местами останутся, если серьезные доработки не требуются, но с нуля разрабатывать на них уже не будут.
Поскольку, последние 5 лет я пишу исключительно на node+ts (до этого, немного разрабатывал на c#), в этом году я решил изучить golang. Думаю, что спрос на golang разработчиков вырастет в разы в ближайшие годы.
Напоследок, хочу поделиться с вами прекрасным постом на реддит который я нашел пока вентилировал данную тему. Там не только про dotnet ui фреймворки, но и про политику МС к разработчикам в целом (в хроме можно использовать встроенный переводчик, смысл остается вполне понятен) https://www.reddit.com/r/csharp/comments/f9i9hc/comment/firr467/?utm_source=share&utm_medium=web2x&context=3
Понятно.
К тематике этого треда относится утверждение, что на жабе меньше новых проектов, чем на котле. Это утверждение нужно чем-то аргументировать.
Но это все в прошлом.
Сейчас нужны миросервисы, сверхбыстрый старт, контейнеризация, докеры, кубернетисы, простота и прозрачность кода, отсутствие магии и лапши в ООП стиле.
>Докерезировать базу на постгресе(сейчас там все в инмемори базе).
Возможно глупый вопрос, но разве не всё равно где бд, ведь смена места бд это одна строчка в пропертях?
Или ты это для того, чтобы показать, что могёшь в контейнеры?
Ога, микросеовисы надо обязательно писать на го, ибо программа на джаве меньше чем в 1000 строк не скомпилируется.
Чел, программа на джаве со спрингом стартует минимум 5 секунд, это очень много в эпоху серверлесс.
Понятно, что энтерпрайз, который до сих пользуется большими тяжелыми собственными серверами, может себе это позволить, но современные компании - уж нет.
Мда.
Ну там типа докер и кубер. Да, чтобы показать, что я уже начал изучать контейнеры.
Там, в смысле на проекте.
Я эту историю последние лет 8 слышу.
А в чем проблема 5 секунд для старта или даже двадцати пяти?
По факту открываю hh - и вижу дохуя вакансий со спринг бутом на микросервисах в кубере и на облаках.
Можешь мне платить, а я тебе буду кидать ссылки на мурзилки.
На торрентах скачай. За 90% курсов не стоит платить, так как они пересказывают книги.
Попробуй задачки на степике/хуперскилле.
>За 90% курсов не стоит платить
Как раз и интересуюсь курсами за которые стоит заплатить.
Вот хайперскилл тема, думаю оформить подписку
Хуй знает за что платить на курсах, если ты вкатун, разве что за мотивацию и проверку задачек. Но проверку можно получить на сайтах с автотестами, от кодворс до степика и т.п. Или даже самому научиться их писать.
Ну и самое лучшее, это реализовывать какие-то проектики, от консольных крестиков-ноликов, до простых веб-приложений.
А что признак не легаси говна? Какие аргументы, что на жабе нет новых проектов? И на чем они есть?
Иди на бесплатные курсы епама. Там задачки с автотестов. Но есть препод раз в неделю для их разжевывания и одногруппники с которыми можно обсуждать. Правда задачек мало и они хуже, чем на степике, препод отвечает на отъебись, а одногруппники тупее вкатунцов с этого треда. Думаю на каком-нибудь скилбоксе еще хуже, на отусе может лучше, но там цена просто неадекватная.
Хиперскиллс имеет просто тонну простых задачек, это плюс. Но цена тоже неадекватная. Бери степик от жидбрейнсов https://stepik.org/course/2403/syllabus и не выебывайся.
Так там тоже перепиливают и допиливают легаси говно, например пхпшное, на микросервисы.
А мы только новое писать будем!
Говорят на курсах сконцентрованный материал, да, база, но собранная вместе, а за бесплатно таким заниматься не будет. Не знаю насколько полезная там инфа. Несколько проектов сделают со всеми приколюхами вроде баз данных и т.п. Это конечно все можно найти в интернете бесплатно, но у меня иногда такие ошибки и вопросы появляются, что даже на стековерфлоу дизят и ограничение на посты на 5 дней дают, и вообще сидишь 5 дней не зная куда обратиться.
Нет перегрузки операторов.
И структур на стеке.
>Что с точки зрения работодателя будет лучше всего?
>есть еще ночь сегодня
Ты уже с его точки зрения идеальный раб.
Готов делать бесплатно какое-то говно, жертвуя сном.
А ещё беззнаковых типов нет. Цвет пикселей задаётся значениями в RGB 0-255.
А толку тебе от концентрата инфы? Ну открой видос уровня жава за 2часа, тебе там концентратом выдадут все основные понятия и механизмы и поехали.
По поводу дизов на стеке, ты скорее всего задаешь вопросы на которые уже сто раз ответили, и тогда учись гуглить, это один из основных твоих скиллов. Я слабо могу представить вопрос по джава кору, на который не было бы ответа или в книгах или в гугле.
Я такой же вкатун, и до момента нахождения работы, у меня так и не возникло какого-то ахуенно уникального вопроса, на который ещё нет ответа, или же проблемы которую нельзя решить подумав чуть лучше.
На VScode
Я вчера ночью все равно не спал. Хотелось хоть немного покодить. Пока готовился к собесам выебал себе мозг теорией.
Прикрутил сваггер. И короче эта мразь начала мне присылать какие-то непонятные https запросы. И у меня эксепшон вылетает постоянно в консоли, ведь https не настроен и настраивать я его не хочу.
Как в springfox отрубить https?
Сергей Немчинский сказал, что к собесам не надо готовится. Ты обманываешь работодателя и себя. В итоге работать не сможешь, потому что то, что зазубрил перед собесом, потом выветрится.
Ну я читал то, что не ответил на прошлых двух собесах. Даже это у меня заняло 5 дней с баелдунгами, видосами, книжками и стековерфлоу.
Или по немчинскому нужно инфу из воздуха брать?
К примеру, хочу написать так:
Banana<Cream>[] bananas = new Banana<Cream>[10];
но Java всё стирает.
Посмотрел я на ноду, в которой темплейтные хеллоуворлды на очередном говнофрнймвооке срут в консоль ошибками, вот это точно жареное и нужна, да.
Че?
Или Кабул.
>Буквально на днях вентилировал этот же вопрос:
Сейчас джава практически безальтернативна для написания крупного бекенда.
С++/Rust - высокий порог входа и высока сложность написания программ, окупает себя если нужно написать что-то инфраструктурное, но совершенно невыгодно для обычных микросервисов.
Go - разработчики хотели создать простой язык и они его создали. Как только надо написать что-то сложнее конвертора JSON-SQL начинаются сложности.
C# - уступает по качеству и количеству библиотек, зато сахара хватит устроить диабет всем. Есть шансы, если МС продолжит его поддерживать и развивать, что далеко не факт. Майки изменили свою стратегию, они теперь предпочитают зарабатывать на популярных решениях, а не продвигать всеми силами свое.
Котлин - просто сахар поверх JVM, пока без JVM он не жизнеспособен.
Node+ts - кроме возможности как-то утилизировать вротэндеров на беке, смысла в нем нет. Конечно количество вротэнде разрабов создает популярность Node+ts, но я ни разу не слышал про что-то сложнее CRUD на Node+ts.
Тесты это мастхев, без них задание считай не сделал. Если останется время - прикрути сваггер.
>это очень много в эпоху серверлесс.
Серверлесс это ещё один способ наебать гоев на шекели. Серверлесс имеет смысл только для обработки сотни запросов в сутки, если больше - то уже дешевле держать микроинстанс.
Бля, что значит гречневый и скуф?
А что за вопросы?
Синдром Плюшкина на лицо.
Но ведь у него 20-летний стаж
Лишь бы не Swing и AWT!
Жирно.
А чем в основном занимаются программисты на Java? Какие задачи они решают?
Я тут новенький просто.
Есть.
int value1 = 42;
float value2 = 3.14;
String str = """value1=\{value1} value2=\{value2}""";
Проблемы нет.
У программистов на жабе нет задач, просто небо коптят. Настоящие программисты пишут на го и с++.
Никогда.
Конфигурируют
> jep 326. Raw string literals do not directly support string interpolation. Interpolation may be considered in a future JEP.
> jep 378. Text blocks do not directly support string interpolation. Interpolation may be considered in a future JEP.
Пока что не выходит никак, но исследования продолжаются.
> Пока что не выходит никак, но исследования продолжаются.
В этом вся жаба. Почему в других языках смело вносят новые фичи, умудряясь при этом почти не ломать обратную совместимость, а в жабе мусолят каждый пук по 10 лет? Никто так не способствует убийству жабы, как оракл.
Остальным популярным языкам это не повредило. Да и у плюсов судьба не из-за этого.
Я слышал, что 7 миллиардов
>_<
Ява почти самый популярный язык.
Спасибо. Да даже спрашивать не пришлось, всё расписано в шапке.
Не ясно, какие новые фичи впиливать.
То, что после выхода 8 версии впиливали, оказались нахуй никому не нужны, поэтому все дальше на восьмерке 2014 года выпуска сидят. Восьмилетняя восьмерка, лол. Как раз в 5-8 версиях завезли все, что нужно - дженерики, java.util.concurrent и Stream API.
Как только выйдет лум и вальхалла наверняка начнутся подвижки, но и это вряд ли, потому что лум напрямую вряд ли в большинстве проектов будут использовать, так как задачи конкарренси тяжелые и для большинства разрабов не нужные и не известные.
А вальхалла не слишком критична.
Поэтому до 2030 года поддержка у восьмерки заявлена. А потом - хуй знает что будет. Но еще лет 5 джава поживет, это точно. Нововведения даже в шарп перестали завозить тоннами, видимо развитие языков и компиляторов пока что приостановилось.
Но оракл уже ВСЕ. У MS денег в разы больше, от продуктов оракла постепенно стараются отказываться. Есть конечно банки и какой-нибудь затхлый энтерпрайз, но основной движ оракл давно просрал.
Новомодные штуки по типу serverless и микросервисов проще на других технологиях пилить. Тот же кваркус или вообще Го, который просто и без задних мыслей компилится в бинарь и стартует за считанные милисекунды. Грааль еще хуй знает сколько будут пилить для прода. Лет 5 наверное, не меньше.
Ну и насчет лума. Леша Шипилев в сентябре говорил, что к следующей LTS версии едва ли они успеют его запилить. Так что Еще года 3-4 нужно будет подождать новых фичей жабе, и соответсвенно 5-7 лет чтобы увидеть это дело в проде.
Ну какие задачи? Всё от предметной области зависит, которую никто палить не хочет.
Пример тупой задачи: в XML, которую отправляют в другую систему, надо добавить ещё одно поле с обрабатываемой сущности, поле уже есть, надо только прокинуть, а новую XSD-схему выгрузить и отправить разрабам этой системы, чтобы они сделали доработку на своей стороне.
Пример нормальной задачи: в справочнике клиентов реализовать новый режим, в котором будут вводиться реквизиты, по которым надо считать, сколько рублей перечислять клиенту за услуги (соответственно, создать новую таблицу для этих реквизитов, наклепать круд для неё, написать контроллеры, поставить задачу фронтендерам). Допилить логику формирования расчётных документов, чтобы учитывались эти реквизиты.
Это мелочи всё, хоть XML, хоть JSON. Заменяются угловые скобки на фигурные, а суть осталась та же. Тоже изобретают json schema и swagger со своим аналогом неймспейсов.
Да и не будет никто в угоду моде переписывать правила интеграции ESB
Ну так какая альтернатива-то xsd, м?
И чем это плохо?
Принимается, но это слишком специфично для го-мира и grpс.
Добавляю кастомный фильтр, достаю там из хедеров что-то, по своему закладываю туда сюда, оставляю в контексте неполный секьюритивский токен. Все запросы моментально становятся 403 форбиден. О чём это говорит? Хуй пойми. Чувствую какой-то костыль, если пермит Олл, значит оно должно быть пермит вне зависимости от секьюрити контекста, в нём же и до фильтра не было объекта аутентификации выдававшего isAuthenticated == true и ничего пермиту не мешало.
Короче написал тесты с горем поплам на webmvc на свою апишку и на сервис промежуточный с одним ифом.
Как на рест темплейт писать тесты так и не разобрался.
На DataJpaTest хз че писать, там одна микросущность. Ну еще про jsontest что-то слышал, но пока вообще не читал. Вроде это все виды компонетных/юнитоов в спринге? А там еще тестконтейнеры и интеграционные и спрингсекурити тесты, как надстройка над вебмвс. Это все?
Как то сложно это все. Причем не в бесконечных библиотеках и синтаксисе тестов, хотя и оно вылетает. А вообще в тестировании. Как правильно придумывать тестовые кейсы? Там всякая теория тестирования есть, она может мне в этом помочь?
Есть ли асинхронщина, реактивщина? Хайлоад?
Или по старому долбитесь в тред пулы apache tomcat?
Пиздос, не напоминай про это говно, умоляю...
Тредпулы томката, спрятанные под бутом
Мне вот интересно, кто эту диванную аналитику пишет. Кто ты такой? Какой у тебя опыт в джаве и языках?
Ты просто чего-то наслушался в курилках или следил и сам что-то анализировал? рынок там и вся хуйня?
Мимо вкатун
Сюда вроде летом еще вкидывали аналитику, что оракл сдох.
Ну не сдох, а остановился в развитии - доходы не растут уже с 2011 года. В то время как MS и Гугл выросли очень серьезно.
Не знаю что там у тебя за код, если взять жсон положить в базу - пиши тесты на рест апи. Послали запрос, проверили базу, послали некорректный запрос - получили ошибку. Если в классах есть какая-то хитрая логика - пиши юнит тест на нее. Писать юнит тесты на JpaRepository - не надо. Если в требованиях написано "приложение должно обеспечивать, чтобы при А было Б" то это прям приоритет номер 1 для тестов.
gRPC + CompletionStage. От thenApply уже тошнит.
// dir c:\users
Хотя это всего лишь комментарий.
ого
Методы в классе небольшие и понятные
Пиши свой двач с блекджеком и питомцами.
Нет. Таких как ты толпы.
А вы знали что такой код скомпилируется
String s = "abcd\u0022\u003B
System.out.println(s);
Хотя это всего лишь unicode escape.
Я просто изучаю параллельно тесты в спринг буте.
Опять же вопрос как тестировать метод остается. Вот в идее есть внутренняя тулза для проверки покрытия. Типа нужно чтобы все строчки покрывались?
И еще вопрос по спрингу. Util классы с статическими методами это нормально? Или всю логику нужно в самих сервисах держать и рассылать по программе через di? А если статические утилит методы это норм, то как их тестить?
Наоборот, чем больше класс тем он понятнее. Сразу понятна его логика. А то бывает откроешь класс, там всего 5 строк, 2 из которых это аннотации, и вот что он делает... только Бог знает.
А чему бы не идти на ларавель? Работы на ларавели немного меньше, чем на спринге, но соотношение вкатунов к вакансиям такое же где-то. И порог входа вроде меньше.
F1-F12, Home, End, Insert, PrintScreen, Pause/Break, Scroll Lock, Num Lock и всей цифровой клавиатуры.
Я вообще фн на капс забиндил, и мизинцем жму. Для меня так выходит даже удобней, чем тянуться к ф ряду.
В идее рефакторю и дебажу.
String s = "s1";
s = "s2";
Распечатка s вернёт s2. Хоть и стринг у нас иммутабл тип, неизменяемый. Я правильно понимаю, что это из-за того, что когда мы в s заносим s2, то создаётся новый объект s, а старый объект s уничтожается сборщиком мусора? Или как?
Типа того.
Не особо ему верится. Такое правда бывает?
И что делаете если нет задач? или нет проекта? Увольняться и пиздовать в другую контору? Бездельничать и деградировать?
>Типа нужно чтобы все строчки покрывались?
Если нет конкретных целей по уровню покрытия тестами, то нет. Стоит сосредоточится на логике приложения.
>Util классы с статическими методами это нормально?
Если это некая маленькая независимая операция. Классический пример - проверить что строка не нул, не пустая и не одни пробелы.
А если это какая-то бизнес логика, где требуется вызывать другие бины или в базу лазить - то это однозначно надо делать бин и вайрить его.
>А если статические утилит методы это норм, то как их тестить?
Просто юнит тестами.
>Распечатка s вернёт s2. Хоть и стринг у нас иммутабл тип, неизменяемый.
Сам объект иммутабельный, а если переменная s не помечена как final, то ей можно присваивать другие значения с подходящим типом.
>когда мы в s заносим s2, то создаётся новый объект s
Сначала создаётся объект "s2" в куче, а потом переменной s присваивается ссылка на этот объект.
>а старый объект s уничтожается сборщиком мусора?
Если у объекта "s2" не останется внешних ссылок, то GC уничтожит его при следующей очистке (возможно).
>Такое правда бывает?
Наверное.
>что делать
Тебе решать. Хочешь - деградируй, хочешь - качай скилл.
Самый низкооплачивемый пхп же. Если вкатываться, то во что-то самое лучшее по деньгам. Раза в полтора-два разницы у ларавеля и спринга.
Вообще без разницы. Джава - кроссплатформенна и все популярные редакторы тоже кроссплатформенны.
Сам использую шин10 + виртуалку с убунтой.
Обнял, брат, спасибо!
>Если это некая маленькая независимая операция. Классический пример - проверить что строка не нул, не пустая и не одни пробелы.
Ну вот у меня был пример из массива стрингов распарсить все в числа и посчитать среднее. Такое должно быть где? В утилах или в сервисах?
Да можно и так и так.
В Util обычно выносят что-то повторяющееся, если у тебя эта логика в одном месте используется сделай просто в сервисе, потом зарефакторишь если что.
Тестировать можно просто сервис - дали правильную строку получили такой результат, дали неправильную - получили ошибку. Но если логика сложная, то лучше сделать утилитный класс и покрыть в юнит тестах все граничные случаи. А в тестах сервиса проверить только базовые случае (успех/ошибка).
Если тебе дали задачу, а ты нихера не понимаешь как ее делать?
Идешь к лиду? К куратору?
Он тебе подсказывает частично? или "за руку" тебя ведет к решению? Бывает, что разжевывают полностью?
Или всей этой хуйни нет и просто отдают другому разрабу задачу а ты идешь нахуй ?
Нажимаешь фн, нажимаешь цифру.
Надо тоже поставить убунту. А че там надо? Джаву только? И кидать туда джарник и запускть тесты?
fn =
Реквестирую гайд о том, как починить принтер.
Бывает, но редко. В основном во всяких гигантских банках и предприятиях, где царит бардак
Ниже только на уровне синьоров+, а джуны и мидлы одинаково получают, если речь про лару/симф.
Насчет джунов хуй знает, они впринципе объедки со стола получают пока не научатся и не вижу особого смысла их сравнивать. А вот с миддлами ты неправ. ПХП-миддлы даже ниже жопаскриптеров будут, они самое дно. Джава программисты на их фоне это солидные мужчины.
Джава там стоит уже. OpenJDK 11 по-умолчанию. Можешь ещё поставить эклипс или вс код.
Ну это дурачки. Не обращай на них внимания
Да тамщета правы.
Все что не новый код который ты пишешь - легаси.
Скорее всего ещё и написанное косорукими уебанами до тебя, даже если это твои коллеги.
Ладно.
Какие вопросы задаете лидам/аналитикам/менеджерам в первую очередь?
У вскоре будет первый проект, я мандражирую
>примеры с баелдунга и спринг.ио
>кек пук 3 строчки все работает
>делаешь шаг в сторону
>Ти ваще с другой плонети??? настраивай ObjectMapper 3 часа чтобы десериализовать свою хуйню!!!
>долбаеб!!! ты что не знал что для этого надо добавить зависимость ХуйСатаны:рот:ебал:анус в pom.xml ???
>еблан!!!! это баг jdk 8!!!
>пиши свой бин чтобы заработало!!!! мудак!!!
Ну и зачем ты это высрал?
Двачую. Все эти индусские мурзилки жидко обсераются когда нужно сделать что-то более-менее нетривиальное и не подразумевают хоть малейшие изменения скопипащенного кода.
А разве не наглость требовать с мурзилок, чтобы они шаг за шагом расписали тебе нетривиальную задачу? А нахуя тогда ты нужен?
>Шаг в сторону и ничего по гайдам не работает.
Идёшь на docs.spring.io и ВНИМАТЕЛЬНО читаешь и находишь как реализовать нестандартное решение для своей задачи
Profit
Сам факт существования мурзилок, из которых можно копипастить код и не изменять, говорит о том, что кишки фреймворка, которые надо было спрятать, торчат наружу. Нахуя тогда нужен фреймворк? Надо, чтобы всё уже было внутри фреймворка, и его достаточно было бы сконфигурировать и получить работающее приложение почти без программирования, тогда было бы охуенно.
Пусть в песочницу идет дурак бля
Бамп вопросу
Придумай себе задачу, сделай хотя бы крестики нолики консольные, или приложение которое хранит заметки, не важно, в гугле сотни идей. Садись и реализовывай, не ссы что ты не знаешь как сделать приложение, начни с чего-то малого, и по кирпичикам собирай свой проект.
Если уж совсем туго с идеями, заюзай бесплатный аккаунт на хиперскилле, там есть проекты для новичков с автотестами, сделаешь первый проект - дадут ещё один месяц бесплатно.
Без практики твое чтение это как учиться кататься на велосипеде с боковыми колёсиками.
>А это стоящая книга? Мне говорили, что Эккель - самая лучшая.
Хорстман дает подробные объяснения и примеры, здесь все советуют именно его. Лично у меня проблем с пониманием не было.
>А как практиковаться? Все эти упражнения надо было что ли делать?
Задачи есть в какой-то из книг того же Хорстмана, вроде по 8 жабе. И в книге Блинова Романчика.
На рефлексию забей пока, а коллекции просто самая популярная тема на собесах.
Конкретно, что не ясно в них. Тем более у эккеля, который для дебилов и подробно объясняет. К нему претензия, только в том, что между жаба 8 и 6 многовато разницы.
Сходи на степики и порешай задачки на коллекции. Тебе же уже советовали это две недели назад.
Коллекции и рефлексия.
бамп2
У него инфа по коллекциям размазана на 3 главы и примеры зубодробительные. Вместо того, чтобы объяснить что такое ArrayList, он начинает заворачивать какие-нибудь паттерны с итераторами.
Ну я у него читал только кусок по женерикам. Мне зашло. А так, как и многие шел по хорстману.
Видимо, Эккель - это вторая книга по джаве, а не первая.
Только мне не понятно, как его студенты учатся. Он расписывает, что полировал материал книги, чтобы все "кивающие головы" (тупки) понимали. Но по факту материал сложный и с нуля его не освоить.
Ну те моменты, что я читал - мне сложными не показались. И итераторы это не только паттерн. Это одно из ключевых понятий коллекций. Начинать объяснять коллекции именно с них - вполне годно.
И вместо нытья на дваче прочитал бы ту же главу в других книгах, в туториалах, посмотрел бы видосы.
Я считаю, что хороши, как первая книга по жабе - Хорстман, а как вторая - Блох.
Эккель давно устарел. Сейчас нужно учиться по материалам к 11 жабе(но с учетом, что возможно придется работать на 8 и что в 11 есть бесполезные модули например). Через год наверно вообще нужно будет начинать с 17. Тот же первый том Хорстмана есть для 17.
Сергей Немчинский сказал, что нужно найти себе программистское сообщество, чтобы обсуждать с ними все такие моменты, тогда обучение пойдёт легче. Вот я и выбрал этот тред на дваче.
Хорстман мне показался каким-то справочником. У него коротенькие главы, где он рисует табличку с описанием методов. Живых примеров очень мало.
Скину docker-compose и haproxy.cfg, подскажите советом мудрым
https://pastebin.com/Yv6g9Ucb
https://pastebin.com/BVvgmcLD
Ты наркоман? У него готового кода куча. Справочник - это Шилдт.
>подскажите советом мудрым
Идика ты к псам девовским
https://2ch.hk/pr/res/2112705.html (М)
По идее их надо поместить в один и тот же bridge network https://docs.docker.com/network/bridge/
да я пробовал и localhost:9092 check и frontend1:9092 check а второй сервак не важен пока, если у него healthcheck не проходит то балансировщик на него него не будет посылать запросы, на то он и балансировщик. Спасибо за совет сходить к девопсам, не знал, что у них тут есть отдельный тред
не помогло
Ты вопрос читал? видео смотрел?
Я спрашивал другое. Как вливаться в конкретный проект. КАК БЫСТРЕЕ ВЛИТЬСЯ.
Ожидал получить ответ типа:
- Читаешь документацию, вникаешь в бизнес логику.
- Проверяешь все доступы
- Просишь лида рассказать о проекте
Типа такого~
Последовательность.
Не не могут, их принципиально не собираются добавлять.
А зачем?
А ты фулстак разрабом хочешь идти?
По той же причине, по которой в джаве никогда не будет алиасов для импорта и перегрузки операторов.
Задизайнь интерфейс и на основе него пили функкционал.
> по-хорошему когда разработка идет одновременно, но я же буду делать его один.
Как это связано вообще? Ты хочешь полностью написать одно и затем начать писать другое? А если при разработке первого ты что-то не учтёшь, как тогда выкрутишься, чтобы не делать одновременно? Что тебе мешает параллельно писать кнопку на фронте и контроллер для неё на бэке?
Из контейнера с haproxy проверь сетевое взаимодействие. Ping до frontend1 и nmap'ом постучи в конкретный порт, по которому должно быть соединение.
Тебе главное проявлять максимальную заинтересованность проектом, чтобы старшие видели, что тебе нравится проект. А увидят, что не нравится, то ничего больше не дадут, а потом и вовсе попросят написать по собственному.
Также стоит преодолеть синдром самозванца, но об этом есть отдельное видео у Сергея Немчинского.
А тебе это надо прям одной записью залоггировать?
Так то можно поставить фильтр на входящий запрос, присвоить ему traceId а еще лучше взять из хедера, чтобы трассировать запрос по всем серверам, засунуть его в MDC и залогировать IP адреса и прочее что есть на данный момент. А потом уже дальше логировать дополнительные детали с этим traceId.
Примерно так и хотел, думал может есть какой-то best practice, помимо MDC.
Distributed Tracing это называется (и в самом приложении обычно работает как раз через MDC).
Тред жив?
Хуядно.
Так или иначе, это через MDC и реализуется. Можно еще всякие метрики про запрос собирать, сколько на каком этапе выполняется а потом в графаны всякие складывать.
https://spring.io/blog/2016/02/15/distributed-tracing-with-spring-cloud-sleuth-and-spring-cloud-zipkin
После вчерашнего стрима Немчинского, отписался от него.
Теперь надо найти нового адекватного ютубера по джаве. Есть у кого кто-нибудь на примете?
Он сказал, что активист майдана, будет "воювати с москалями" и обязательно победит, а потом каждый москаль будет выплачивать репарации как фашисткая Германия после Второй мировой.
напиши на голом сикуле, какой запрос ты хочешь сделать.
Хоть на JAX-WS пиши, в чём проблема?
Скрестил две неактульные хуйни и рад. Ты там аашину времени изобрел?
При чём тут жаба?
Тебе либо нужна формула пикрил, либо один из алгоритмов поиска кратчайшего пути.
А чем формула из школьной геометрии не подходит?
Любая геом либа должна подойти, например https://github.com/locationtech/jts
Линукс тоже серверный, значит, нерелейтед постами про него тоже можно срать здесь.
Я всё прочитал, можете ее удалять
Документация знает.
ServerInfoRetriever - твой класс? Я бы просто возвращал из метода фьючу ибо твой холдер и выполняет роль фьючи.
Если такой возможности нет, то писал бы всю логику обработки result в колбэке
Окей, спасибо за наводку, разберусь с фьючами.
>>Он сказал, что активист майдана
То есть майки и кружки с трезубцами в кадре, оранжевые футболки и тп символика тебя не навели на какие то мысли?
>>будет "воювати с москалями"
>>каждый москаль будет выплачивать репарации
он же сам москаль, не думает что его самого там победят?
>>адекватного ютубера по джаве
Я их когда то смотрел немного, когда только вкатывался, но они ж через месяц начнут повторяться и рассказывать как присвоить переменную или еще какую то хуиту элементарную. Есть исключения, но их мало и они на английском. Java Brains, Amigoscode
Щас только на всякие джокеры подписан и смотрю иногда выступления.
Win10.
Установлены: java8 (1.8~), java16, java17
залетаю в cmd, пишу: "java - version" и мне показывает: 1.8~
Я меняю переменные среды.
JAVA_HOME пишу путь до java17,
в path добавляю %JAVA_HOME/bin.
в cmd чекаю - все равно версия 1.8~ ребут тоже пробовал делать
че со мной не так?
тоже была такая хуита. Там в path variable какая-то мразь мне вписала какой-то доп ждк из C:\Program Files (x86)\Common Files\Oracle\Java\javapath
Спасибо, Анон. Так и было, чет не обратил внимание. Теперь работает
Через формы или JS.
В общем, книга Шилдта для начинающих, на мой взгляд гораздо лучше. Шилдт разжёвывает и простые и сложные вещи и они после прочтения становится одинаково понятны.
Они для разных задач. Если есть бэкграунд с другими языками, то Хорстманн. А если хлебушек, то Шилдт.
Я вообще хотел на исторический поступать, но рыночек порешал и пришлось идти в погромисты.
Легко.
Для немодной технологии фреймворк с названием JHipster не изобретут.
Иди на своего Пабло Эскобара подрочи.
Скоро всё схлопнется, и жаба, и веб, мобилки, развлечения, всё нахуй. Успеть бы на завод попасть, пока туда не повалили миллионы безработных мерчандайзеров из пятерочек и днс.
Палю инсайд, профессия будущего это инженер-программист ЧПУ.
Нормальные программисты решают бизнес задачи и читают мурзилки. За изучение книг тебе никто платить не будет.
Ничего не схлопнется. На 1С можно всё это перечисленное пилить. Есть даже игра, написанная на 1С.
Курса на степике хватит, потом чекаешь как всё это связывается в джаве и всё.
Откуда у вас такии мрии о заводах? Там как будто прям дохуя работы. В моем городе после совка осталось половина заводов, в которых закрылось до 2/3 цехов.
А открыть даже новый цех дороже, чем 10 галер.
1280x720, 1:23
Если книг читать не будешь - скоро грамоту забудешь!
Что за мурзилка?
1С не только заводы используют.
Посмотри первые 500 постов каждого джава-треды и прочувствуй, сколько шарпоклоунов сюда набегает после переката. Поэтому и нет перекатов до последнего.
Сейчас уже пора.
Лишь бы воевать
По шарпу есть классная книга Рихтера CLR via C#, а книги JVM via Java нет.
Переката не будет до окончаний спецоперации по демилитаризации и денацификации Украины.
java spring
Какие лайфхаки есть?
Эклипс - это полноценная IDE, там даже больше фич, чем в вашей хваленной идее. А самое главное: эклипс полностью бесплатный!
И все будут доустанавливать 8. На восьмёрке все сидят не из-за того, что она всем так нравится, а из-за легаси, которое тупо не работает на 11.
Нам то ВОронеж бомбить зачем?
Мне бы твои проблемы
CPU: Intel i5-7300HQ (4) @ 3.500GHz
GPU: NVIDIA GeForce GTX 1050 Mobile
Memory: 4952MiB / 7842MiB
Аноны решили, что перекат нужен сейчас.
Ruby on rails
Вскод никоим образом не является ide, это факт. Если для фронтенд говен он еще куда ни шло как текстовый редактор, то для столь объемных языков как джава, хаскель и сишарп это полнейший нострадамус.
Нет ты.
Да.
>>А самое главное: эклипс полностью бесплатный!
программист ведь не может себе позволить купить вечную лицензию за 150$
Программист из России скоро не сможет.
Я ещё ни копейки не заработал как программист. Многие там мечтают 300к/сек, а я мечтаю хотя бы 30к/месяц получать, потому что в моей мухосрани вообще работы нет.
Если ты еще не работаешь зачем тебе так нужен ультимейт? Ну или на крайняк посмотри ЕАР версию, она по сути тот же ультимейт, только доступна не всегда.
>>в моей мухосрани вообще работы нет.
пчел переезжай в другую мухосрань где есть хотябы 1кк+ населения, да и удаленки щас полно. Я на прошлой работе видел только курьера 2 раза - при устройстве и увольнении для передачи договора и заявления.
Спринг не работает в бесплатной версии, а его сейчас везде требуют даже на позицию джуна. Это раньше можно было устроится даже язык толком не зная, а сейчас требования не реальные.
Зачем нужен курьер? Я думал там сканов достаточно.
Дак чего ты ждёшь? Тред уже не доволен, что так долго переката нет!
Хм. А в активированной со степика работает? Я просто не проверял, сам пока джава кор только изучаю.
Да, год учил спринг со степиковскми лицухами раз в 3 месяца.
чем лучше вычислять индекс бакета hashMap при добавлении элемента как
hash & (table.length - 1), чем hash % table.length? (более быструю скорость не предлагать)
С хэшами всегда был не в ладах, моя догадка только в том, что возможно первый вариант делает заодно число положительным, чтобы его как индекс бакета можно было использовать, но я хз
>чем лучше вычислять индекс бакета hashMap при добавлении элемента как
>hash & (table.length - 1), чем hash % table.length? (более быструю скорость не предлагать)
ничем блядь, че за хуйня блядь нахуй
ни разу такой таски не было
Не вижу смысла унижаться этими подачками, когда есть бесплатный и полнофункциональный Эклипс.
Ну да, фичи это оправдывают.
>>Я думал там сканов достаточно.
Для договора реальная подпись потребовалась + мой экземпляр с печатью на руки выдали. А так все доки сканом засылал.
Если денег жалко на лицензию - попробуй поискать кряки, где то они вроде есть ну или таки посмотри ЕАР версию, там вроде не требуется что то покупать.
https://www.jetbrains.com/ru-ru/resources/eap/
Или можно забить хуй на гипермедию и возвращать обычный json?
Ни разу не встречал HATEOAS
У меня этот тред тормозит сильнее чем идея. Она долго стартует из за индексации, но без этого магии не будет и получится блокнот, который не напишет за тебя код и не скажет что ты наговнокодил здесь и здесь.
А у меня этот тред открывается мгновенно, а идея тормозит.
мимо вкатываюсь вторую неделю
Спасибо, анон. Но там вообще ничего нигде не появляется. Впрочем, я понял что просто конфиг-файл который я создал для логбэка никак не влияет на создание экземпляра логгера, то есть этот файловый аппендер тупо не создается как я понимаю. теперь думаю как все же подключить пропертиз.
Файл должен называться logback.xml и лежать в ресурсах, аппендер нужно "включить" в <root>
"В цикле с использованием памяти" скорее всего подразумевается, что можно использовать дополнительную память, например, хранить промежуточные данные в массиве.
Если крудошлепить на блокирующих уже умеешь, то почему бы и что-то новое не попробовать? Не понравится - ливнешь.
>Короче вопрос в том, как мне лучше создавать этот бин эндкодера паролей?
Ты новенький в джаве, да? Сто бед один ответ - фабрика! Вайри в конфиг не провайдер аутентификации, а фабрику которая будет создавать его и как параметр получать энкодер. Это конечно тоже костыль как лейзи.
На самом деле непонятно, почему у тебя бин провайдера аутентификации и энкодер паролей создаются в разных местах. Создавай все в одном месте.
Конечно, ведь Сергей Немчинский это я.
Волшебные фреймворки её используют.
Я вот не понимаю, почему люди продолжают маяться в этой идее и не перекатываются в эклипс или вс код?
Зато есть на эклипс.
ты прав, в случае первого варианта мы не рискуем попасть в область отрицательных чисел
Завести поле с маняайдишниками и юзать их? Или проще шифровать настоящие?
Все зависит от надобности. Если это какая-то админка, то можно и из базы ид брать. Если что-то важное, то юзай UUID
> А в чем глубокий смысл юзать uuid? Вон апи гитхаба юзеров выдает с айдишниками обычными
>>309578
> Завести поле с маняайдишниками и юзать их? Или проще шифровать настоящие?
Нет вообще никакого смысла прятать айдишники. Надо настраивать пермишены, чтобы юзер не мог залезть туда, куда ему нельзя, даже если он знает ID. Сам факт знания реальных ID ничего ему не даст.
Анон спросил, а надо ли юзать что-то стороне. Чаще всего нет. Но если про какой-то причине ты не хочешь, чтобы можно было узнать количество каких-либо записей можно юзать что-то стороннее. Ну и перебирать все айдишники, чтобы выкачать данные из паблик апи дольше
Преимущество UUID что его можно генерировать на клиенте. А если использовать сиквенс базы, то надо или предварительно с клиента делать запрос getNextId() или ждать пока сервер ответит созданной сущностью со сгенерированным айди. А еще веселуха начинается, если у тебя кластер баз и ты там шардировать пытаешься.
сущности в сущностях, дао в дао, сервисы в сервисах, контроллеры в контроллерах.
В контроллерах нет бизнес-логики, только конвертация и вызов одного метода сервиса
В ДАО нет бизнес-логики, только круды для БД
В сервисах вся бизнес-логика без привязки к БД и UI.
Каждый контроллер работают только с одним-двумя бизнес-сервисом
Сервисы неограниченно юзают друг друга
ДАО юзают только соединение с БД и больше ничего.
Каждое ДАО юзается только одним сервисом.
Контроллеры не получают и не возвращают сущности непосредственно, они юзают ДТО, в которые каждый раз конвертируются сущности перед отправкой на клиент
В стуктуре мавена есть родительский pom.xml и дочерние модули xxx-api и xxx-impl. В api типы, доменныеи классы и интерфейсы. в impl реализации.
Хуй знает, но так принято, типа инкапсуляция. Это такая же общепринятая шиза, как приватные поля и рядом с ними геттеры-сеттеры, которые ничего не проверяют и всегда геттят-сеттят.
Я про отдельный мавен модуль. НАХУЯ, когда можно сделать просто отдельные папки внутри src/main?
И вообще мой вопрос был про папки внутри src/main.
Типа src/main/.../govno/controllers, src/main/.../govno/service? Так предметные области пересекаются сильно.
Теперь нет разницы, юзать можно хоть восьмую жабу, хоть первую.
"Приостановила операции" != "Уходит с рынка".
Просто сегодня новость про оракл появилась...
Мне нужно использовать в проекте файл шрифтов, который я бы хотел хранить прямо в собранном .jar
Проблема в том что я не понимаю как использовать в собранной программе относительный путь к нему. В IDE все работает, когда собираю в джарник - все ломается. Если jar распаковать, то файл шрифта падает прямо в корневой каталог, но программа не может его найти. В сорцах я разместил файл в каталоге resources и маркнул как ресурс (хз как это вообще отрабатывается средой, но так работает)
> я разместил файл в каталоге resources и маркнул как ресурс
> Если jar распаковать, то файл шрифта падает прямо в корневой каталог, но программа не может его найти
Путь от корня должен начинаться со слеша /
Ничего не понял в этом совете. Какой путь? где начинаться?
Как написать код получения файла с именем name например?
Обычно всегда работает File f = new File("name"); и если сам файл лежит в корне проекта то все срабатывает. Но после сборки почему-то ничего не работает, говорит файл не найден
> new File("name")
Именно в таком виде, будет искаться файл который лежит рядом с твоим .jar в одной директории
c:/xyz/app.jar
c:/xyz/name
Самое тупое, что с некоторыми файлами все работает, например с конфигом бэклога (он лежит внутри jar). И я не могу точно понять в чем отличие их использования
>class.getResource("/name")
А у какого класса надо получать этот class? Если класс лежит например в пакете somepkg.MyClass, и ты получишь у него этот ресурс, он его найдет или нет, если в исходнике оно лежит в ресурсах?
И еще, а что на уровне компиляции/сборки вообще обозначает это обозначение директории как ресурсов? Это какой-то ключ при компиляции или что?
У какого угодно, но он должен быть твоим. Если будет искать от слэша, то без разницы. Без слеша просто заедается путь относительно пакета этого класса
> И еще, а что на уровне компиляции/сборки вообще обозначает это обозначение директории как ресурсов?
Каталог resources? Просто мавеновская структура проекта. Всё что там есть, пакуется в корень жарника. Так то можно куда угодно его закинуть, но тогда придется ебаться с конфигами сборки
Сейчас понял, что я наврал насчет того, что с логгером порядок. Просто на момент конфигурирования логгера логировать еще нельзя, и там перехват идет тупо в output. Сейчас запустил через командную строку, и там оказывается эксепшены при попытке найти файл конфига логгера. Я тогда вообще хз че делать, ты случайно не знаешь, анон, можно ли Logback заставить искать конфиги в нестандартных местах?
Да я дефолтным сборщиков идеи пользуюсь, маркировать что-то как ресурс можно и там.
Спасибо за помощь твою, может подскажешь еще один момент. В целом через getResource("/name") все получается, но такой момент:
как потом из полученного URI получить именно файл? Если я получаю getPath то ничего не работает, видимо потому что он там на границе "входа" пути в джарник рисует "!", типа такого:
C:\...\out\artifacts\Project\Module1.jar!\Font.ttf
конструктора файла по URI нету
Вроде, разобрался. Нужно получать этот ресурс как стрим, и тогда с ним удается работать. Если как просто ресурс то нет, именно потому что он упакован.
Пока не понимаю сможет ли конфиг логбэка найти сам себя в упакованном виде (как там у него устроено чтение ресурса - хз), но с обычными файлами норм все получилось.
Еще раз спасибо за наводки, анон. >>309914
Есть же опенЖДК.
Шарпы семантически не особо отличаются. Надо будет только переучить все названия методов и классов в стандартных либах шарпа, и дальше работать. правда помимо этого тонна шарпосахара придется осваивать. Вообще, залетал в пару проектов на шарпе и не испытывал никаких проблем там, даже наоборот - многое там сделано лучше.
Ну дак какой-нибудь ОпенАнонимус скажет, что мой проект нельзя юзать в РФ и закроет доступ. Или ещё хуже зашьёт туда проверку: если запущено в РФ, то гадить.
А вас предупреждали об отключении джавы.
Оракл лично придет и удалит все мои сохраненые ждк и архивы библиотек?
Того что уже написано из фреймворков/библиотек хватит еще лет на 20 минимум.
Иди нахуй маня. OpenJDK никто не отключит, тем более что BellSoft российская компания.
Планирую в кубернетисе деплоить ее, Знаю, что у него есть искаропки раунд-робин распределение запросов по инстансам сервиса, но мне нужно чтобы запросы от игроков, которые играют в одной партии шли в один инстанс (очевидно)
Как такое можно сделать? чтобы рекконекты работали и тд
Сделай управляющий кластер, который будет собирать игроков в партию и говорить к какому игровому серверу им конектится.
Как минимум отзовут из россии.
У меня некоторые коллеги не могут сосредоточиться и нормально работать.
Такая же хуйня, не могу и двух строчек кода написать, а когда выполню небольшую задачу, ложусь и тупо лежу без сил.
ДАЖЕ ИДЕЯ ЗАПУСКАЕТСЯ БЫСТРЕЕ, ЧЕМ ГРУЗИЛАСЬ КАПЧА К ЭТОМУ ШИТПОСТУ!
А меня нахаляву в Грузию перекатили, зп теперь в валюте, сижу пержу в Тбилиси, пью винишко.
Есть в треде матёрые помидоры с выебонами? или только вкатыши да джуны?
Хочу стать крутым джавистом. Чтобы вот въебывать и круто двигаться, расти. Не ради деняк, а ради самолюбования, что ли лол.
Можно ведь по-разному ехать. Можно пилить крады однотипные 10 лет, а можно как-то быстрее и интереснее извиваться. Идти в архитектуру, покупать шапки на размер больше каждый сезон.
Какова ваша версия пути? ну или мб не ваша, а тех, о ком вы слышали.
Я прост хочу ебашить и готов ебашить. Но мне нужна цель и стратегия.
Каких вещей стоит избегать,а к чему стоит стремиться стремиться.
С меня сто добра, Анон
Да хер его знает. Кто-то идёт в модные технологии, выступает на конференциях, пишет статейки. Кто-то идёт в хардкор и рассказывает как написать очередь с наносекундными задержками. Кто-то просто набивает опыт в топовых компаниях. Кто-то в менеджмент идёт.
Реально путей много, никто за тебя не выберет.
>никто за тебя не выберет
Ну эт понятно. Я уже уроков ответственности немного освоил.
Прост не хочется прям вслепую тыкаться. А хотя бы примерно варианты представлять.
>модные технологии
>выступает на конференциях
>пишет статейки
Мне бы для чуть больше шагов. И лучше на первых этапах. Потому что я ток вкатиля недавно. Мне прям на первых порах бы понимать. Чтобы не увязнуть в говне
Ты сам-то кто, анон?
Каков твой путь? какие успехи?
>>Ты сам-то кто, анон?
Ну я полгода потыкался на галере с однотипными крудами, а щас выбираю из 2-х мидловых оферов между реактивной джавой с бигдатой и йоба хайлоадом. Если меня не пидорнут с испыталки и я таки вывезу - буду считать себя успешным вкатуном.
Вот и считай шаг 1 - научись писать круды на спринге. Пет проекты там поделай, борду свою напиши или еще что то.
шаг 2 - доучи теорию чтоб на собесах пиздеть без остановки. Вопросы кстати на джуна более-менее типовые и легко гуглятся.
шаг 3 - иди в любое место куда возьмут (ищи вакухи 1 год опыта - это джуновские), пет-круды на гитхабе сильно помогут. Самое сложное тут дойти до техсобеса, который ты уже легко пройдешь.
Стажировки я б не советоваля, там ебейший конкурс для студентов с перспективой получать 20к.
шаг 4 - ?????
шаг 5 - PROFIT!
Я уже вкатился, Анон.
Мне теперь понять как на мидлоида заделаться и далее.
>реактивной джавой с бигдатой
>йоба хайлоадом
Разве там не в обоих случаях хайлоад?
Я вот чет боюсь так реактивщины и хайлоада т.к. я даже с обычной многопоточкой особо не работал..а в хайлоаде еще и как-то алгосы надо понимать.
Страхи да и только
Алгосы не так критичны. Меня про них никто даже не спрашивал. (сказали вкользь что есть где применить их знания, но это вроде как по желанию, задач и без этого хватает) Больше спрашивали про кишочки спринга, хибера, немного про всякие кафки, кеши, балансировку нагрузки, экзекутор сервисы, стрим апи. Многое из этого я знаю только в теории о чем прямо и говорил отвечая. Вроде на большую часть вопросов ответил, оферы прислали но тоже страшно пиздец в такое лезть после монолита с околонулевой нагрузкой. Я на самом деле и не надеялся даже пройти собесы, оно как то само получилось.
>>Разве там не в обоих случаях хайлоад?
в первом случае мне на саму реактивность надо будет налегать, о нагрузке парится не так сильно придется, во втором упор на надежность и быстрый отклик (что то уровня госуслуг). Акценты вобщем на разных вещах.
>кишочки спринга, хибера
Ты как вникал, кстати? Не по Борисовским БинПостПроцессорам же? или у него и более толковые видосы есь?
Книги? Статьи?
Дай ответ, интересно оч
>экзекутор сервисы
Эт вообще впервые слышу чет
> оферы прислали
какие расценки?
>страшно пиздец в такое лезть
У меня тоже постоянно страх и стыд ебаный. Ну и самозванец внутри напоминает
Ток я себя успокаиваю тем, что раз они готовы нанять, то они берут на себя ответственность. Мне похуй. Буду обсираться - научусь на ошибках. Я больше премии не потеряю. Попросят уйти - уйду (кста, мне кажется, что такое вовсе не часто случается в IT.. наверно, люди сами себя чаще уходят..)
Не буду вывозить - пусть занимаются моим обучением, подключают челов. Они же потратили уже деняк на хантинг меня. Им не выгодно меня кикать, выгоднее развивать (ну в разумных пределаХ, конечно)
так себя успокаиваю
>>Не по Борисовским БинПостПроцессорам же?
Меня и про них спросили и сказали что реально используются, хоть и не очень часто. Борисов то норм объясняет про построение контекста и вообще про спринг как по мне. После него доки проще понимать.
>>Ты как вникал, кстати?
По спрингу тут либо доки читать, либо на практике познавать когда фичу пилишь. Я доки или как минимум комменты в спринговых классах иногда выборочно почитываю, поэтому кое-как ответил.
Статьи пожалуй лучший выбор для БАЗЫ. Хабр/медиум, только там есть годнота, есть говно, смотри не перепутай.
Ну и всякие жокеры типа Борисова, Шипилева, Валеева на ютюбе не такие уж и бесполезные - сложные вещи на пальцах объясняют и можно козырнуть знанием всяких нюансов на собесе.
Книги почти не читал, они устаревают быстро да и просто лень. Есть конечно исключения - типа книги с поездами про многопоточку. Это классика, это знать надо.
>>Эт вообще впервые слышу чет
Это из многопоточки в джаве. Хуйня для создания тредов.
>>какие расценки?
Поскольку я определил себя как джун+, просил меньше сотыги, но предложили сотыгу с небольшим в обоих случаях. Можно было б при желании замахнуться на полторы сотыги наверное, пооткликаться по разным местам, но я ленивый хуй и иду на первое приличное место куда позвали.
>>Мне похуй. Буду обсираться - научусь на ошибках.
Все так. Посадить за косяки пока не могут, максимум уволить. А работы хватает.
Названия атрибутов-то могут поменяться потом и тесты станут фейлиться.
Да, даже нужно это тестить. Если ты поменяешь название поля, на фронтэнде все отвалится. А тесты тебе скажут, что ты нарушил контракт
Сё понял, спасибо за ответы, Анон
>Ты сам-то кто, анон?
>Каков твой путь? какие успехи?
Я набивал себе резюме, работал в ДС в нескольких крупных международных конторах. А потом свалил за бугор.
Вот ты и обосрался. Майкрософт теперь вслед за Ораклом отключает рашку от шарпа.
>Компания Microsoft приостанавливает продажи товаров и предоставление услуг в России
>EPAM прекращает обслуживание российских клиентов — компания
Вот это охуеть.
Да.
Именно.
Дак сейчас и не найти работу. Считай количество вакансий сократилось раз в 10. Кто уже вкатился будут с работы на работу переходить, а новички вообще будут не нужны. Разве что на замену пенсионерам, но там буквально может 10 человек в год.
https://youtu.be/dq1z9t03mXI
В идее же надо покупать полную версию.
Конечно, в блокноте++. А еще там темная тема есть.
Почему? Как спецоперация мешает перекату?
> Looks like the version of your IntelliJ IDEA is newer than what the C/C++ plugin supports.
Его тупо забросили.
Ога, а ковид создали американские спецслужбы и распространяют его через 5G.
А джексон который и так есть в спринге из коробки на что ругается? Ему наверное не нравится что ты массив стрингов пытаешься в инты превратить, а поле "data" и вовсе отсутвует?
То что с фронта не инты приходят я уже заметил. Он ругается на поле даты. Оно же по сути строкой приходит.Я вот так конструктор модифицировал.
вот ошибка
Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot construct instance of `com.example.Andersen.entity.PresentStudents` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('2022-03-12'); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `com.example.Andersen.entity.PresentStudents` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('2022-03-12')<EOL> at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 1]]
Пиздец ну и синтаксис
> byte @NotNull [] firstPart
Заработало , четко.
Сколько лет потратил перед переездом?
Какие задачи решал? Какие стэки юзал?
В какой бугор свалил?
Самое интересное: какие конторы посоветуешь?
В какой момент был самый большой рост и от чего?
аригато
Не надо так делать ни с жопой, ни с jdbc, вообще никогда. Юзай миграции liquibase/flyway.
Когда он подумает, мол, говно какое-то, а не приложение?
Ответ в json 15 к строк.
Или пользователь не должен получать столько данных за раз?
миграции на flyway
Юзай лучше LocalDateTime. Date - легаси
Думаю, что фронту не нужно 15к строк. Сделай пагинацию
Не будет переката. Чем тебя этот тред не устраивает? Поддержка ещё несколько месяцев, да и наверняка в следующем треже слишком сильно сломана обратная совместимость.
тред под санкциями, без переката до окончания спец операции
Это вообще разные вещи.
MVC - это поддержка веба в спринге. Можно юзать без бута.
Boot - это тупо обёртки для конфигурации, чтобы не писать кучу конфигов самому. Никакой функциональности они не добавляют, только обоегчают конфигурацию. Можно юзать без веба.
>Сколько лет потратил перед переездом?
Я изначально не ставил своей целью переезд. Просто в какой-то момент понял, что половина моих коллег уже там, да и в целом ситуация в стране показывает отрицательный рост. К тому моменту у меня было 12 лет опыта. Еще могу сказать, что количество предложений когда ты тут и когда ты там - отличается на порядок, даже в спокойные времена везти человека долго и рискованно.
>Какие задачи решал? Какие стэки юзал?
У меня были в основном финансы, трейдинг, процессинг платежей и т.п. Жава и все что вокруг, даже вначале карьеры довелось Свинг и Апплеты пописать, и даже в байткоде поковыряться.
>В какой бугор свалил?
Deutschland думал поближе к дому
>Самое интересное: какие конторы посоветуешь?
Раньше я бы посоветовал DB, Citi, Credit Suisse хотя к этим фиг попадешь, SAP, HPE, IBM, Oracle, но сейчас даже не знаю кто там останется. Можно и российские компании, если не планируешь уезжать.
>В какой момент был самый большой рост и от чего?
В момент когда я впервые пришел в крупную западную контору и понял, как на самом деле должен быть организован процесс разработки, тестирования, работа с заказчиками, оперейшенз и прочие софт скильные штуки типа навыков коммуникации и английского.
Я пытался, но в новой версии не работают некоторые библиотеки. Ждем пока выпустят новую версию.
>К тому моменту у меня было 12 лет опыта.
У меня столько будет только в 40 может лучше сразу в петлю
Так 5 лет опыта как раз достаточно. С чего взял, что именно 12+ лет надо? Надо 5+, тогда уже можно делать попытки.
Я же писал, что поехал когда понял что поравалить. Так то у меня и до этого был оффер в США по L1B но это дно, плюс я не хотел в США.
Кстати есть ещё один момент - навык прохождения интервью, это процентов 50 успеха. Не забывать от страха то что ты знаешь, не теряться от нестандартных задач, а начать придумывать подход к решению, умение красиво рассказать про свой опыт, хороший разговорный английский. В общем тут много всего, что приходит с опытом. Надо ходить по собеседованиям и набивать шишки.
Вот эти все баззворды: ZooKeeper, Consul, Raft, Paxos, MapReduce, Hadoop, HDFS - оно вообще где-то используется? Я так прочитал малость статей на медиуме и хабре и понял, что оно во всяких йоба распределенных архитектурах используется.
А распределенные архитектуры нужны? Почему бы не сидеть на монолитах, как деды 20-30 лет назад?
Если вкатываешься в распределённые системы и бигдату, то нужно. Если используешь жабу по назначению, как все нормальные люди, то не нужно.
>Если вкатываешься в распределённые системы
А что это такое вообще? Это то, чем занимаются люди во всяких гуглах, фейсбуках и яндексах?
>Если используешь жабу по назначению
Обычные сервера с обычной бизнес логикой на спринге?
> А что это такое вообще? Это то, чем занимаются люди во всяких гуглах, фейсбуках и яндексах?
Не только, любая сколько-нибудь крупная айти-компания с этим говном ебётся.
> Обычные сервера с обычной бизнес логикой на спринге?
Любой энтерпрайзный бэкенд, в основном да, спринг.
Не охота новые кнопки учить
Пока это выглядит как то, что накрутили какого-то своего говна, чтобы ещё больше усложнить программирование на джава. Ни какого упрощения я не вижу.
Если выкинуть Spring, то функционально ничего не потеряем. Также можно делать веб-приложения, сложную логику, делать запросы к базам данных.
Я в универе писал лабу, где надо было сделать ftp-сервер и ни каких спрингов не использовал. Всё отлично работало и без него.
Для веба, больше ни для чего этот тормознутый рудимент из 2005 года больше не нужен. Но изначально спринг это DI контейнер и уже потом утилиты для крудошлепов. Просто крудошлепам недоступны знания об архитектуре кода, поэтому им проще размазать по всему проекту конфиги, которые за них кто то соберет в одну огромную кучу говна, разрулит зависимости и запустит.
Требуют в вакансиях, значит, придётся его учить и юзать. Логика тут неприменима.
>DI контейнер и уже потом утилиты
сам же объяснил основной смысл
>недоступны знания об архитектуре кода
а потом начал вонять, что нинужна. DI не нужен, строгие правила написания конфигов нинужна? Авто разруливание зависимостей нинужна?
Ну от того что от за аннотацией тебя скрыт глобальный конекст в котором варятся все бины такая архитектура не перестает быть выгребной ямой.
Если выкинуть Java, то функционально ничего не потеряем. Также можно делать веб-приложения, сложную логику, делать запросы к базам данных.
Почему ты думаешь, что может быть нельзя? Никто не не может прям запретить юзать опенсорсный софт. Другой вопрос в поддержке, с которой могут возникнуть трудности, она вполне себе стоит денег и требует заключения контрактов.
> Почему ты думаешь, что может быть нельзя?
Ну вдруг юристы из Оракла напишут в лицензии что мол на территории таких-то стран использование иллигал.
Ок, спасеба.
В своей лицензии JDK они могут написать что угодно, но в лицензию OpenJDK, которая GPL, ничего, иначе она перестанет быть свободной, да и вообще перестанет быть GPL.
Можно, если не боишься анальных зондов.
Эти гпл распространяются только на сорцы, качать сорцы и компилировать ждк самому никто не запрещает. А на уже скомпилированные и собранные за тебя бандлы накладываются лицензии того кто их распространяет.
двачую
>В своей лицензии JDK они могут написать что угодно, но в лицензию OpenJDK, которая GPL, ничего, иначе она перестанет быть свободной, да и вообще перестанет быть GPL.
Да, но даже у OpenJDK не чистая GPL, а GPL with classpath exception. Ну и плюс Oracle как владелец исходного кода, может следующую версию OpenJDK выпустить под GPL with classpath exception and export limitations. Вообще у GPL можно саб лицензий, когда делаются те или иные исключения или добавляются новые ограничения. Например у Fedora Linux уже есть такие ограничения https://opensource.stackexchange.com/questions/4724/do-fedoras-export-restrictions-violate-the-gpl И тогда все, новые версии нельзя будет поставлять, на Кубу, в Иран, КНДР и сами знаете куда. И тогда старые версии будут по прежнему доступны, а вот новые легально уже нет.
Это код создания веб приложения из 4-х эндпоинтов, без базы, без авторизации, без других сервисов, без нихуя. Какой пиздец твориться в реальных приложениях, лучше даже не представлять.
Зачем микрофреймворк, если есть макрофреймворк спринг?
Да не вопрос, конечно можно и на 8-ке сидеть, а Белсофт будет фиксать баги и все будет ОК. Но у тебя не будет ни новых GC, ни улучшений JIT, ни новых API, ни поддержки нового железа, новые версии библиотек не будут работать на старых JDK. Конечно лет 5-10 можно спокойно перекантоваться, а вот дальше уже будет тяжело.
Вообще 8-ка это особый случай, это последний релиз по старому, длинному, релизному циклу. Поэтому многие компании до сих пор на нем сидят, просто не привыкли к регулярным апдейтам и потому застряли. Там где не тянули и смигрировали на 11-ю, проблем переезда на 17-ю минимум, мы например уже потестили свои сервисы, летом будем переезжать.
Вот ты и покажи, я нормальных DI фреймворков без "магии" не видел. У тебя или магия про которую надо знать wire by convention это тоже магия или тонны бойлерплейта.
Ты ролфишь или не догоняешь?
Dagger это Spring только не в рантайме, а в компайлтайм. А так вся та же самая херня с @Component и @Inject магией.
> как установить Spring
Изучи для начала Maven, чтобы не задавать таких странных вопросов.
> как написать первое приложение
Ищешь любую понятную для тебя мурзилку по основам Spring Core/MVC/Boot, читаешь, разбираешься. Можешь хоть с видосиков на ютубе начать.
> Как изучить Maven?
Читай мурзилки про мавен.
> Что такое мурзилка?
Читай мурзилки про мурзилки.
В каком номере написано про них?
И вообще в детстве мне больше нравились Веселые картинки
Закладки там стоят, отечественные.
>В магии нет ничего плохого
... пока все работает.
А вот когда у тебя начинаются проблемы, и приходится лезть в кишки DI фреймворка, чтобы понять какого хера у тебя не вайриться бин или не срабатывает транзакция. Вот тут-то понимаешь, чем ты платишь за эту магию.
>скачаю нелегально и что ты мне сделаешь?
Да всем похер на тебя, пока ты сидишь в загоне РФ и не высовываешься. Но как только попробуешь высунуться наружу - тебя нахлобучат.
Это не проблема магии. Такого не избежать ни с какими подходами и ни в каких фреймворках.
Тот же бойлерпоейт рано или поздно превращается в магию, как только кто-то напишет обёртки.
Пора пересаживать на любимый всеми NET с митовской лицензией, раз уж Котлин тоже зависим от jdk
Будто MS не может сделать так же.
Котлин и от гугла зависим и андроед от него, интересно что тебе с ними будет.
>Такого не избежать ни с какими подходами и ни в каких фреймворках.
>Тот же бойлерпоейт рано или поздно превращается в магию, как только кто-то напишет обёртки.
Его проще дебажить это твой код, можно определить на каком коммите перестало работать и смотреть что поменялось. Совсем другое дело, понять почему у тебя не стартует апликуха при миграции на новый Спринг. Или понять где у тебя утекают конекшены, когда всем управляет спринг.
Самый лол состоит в том, что российских вендоров которые бы делали сборки .Net и предоставляли саппорт - НЕТ. А майки уже сказали, что хуй вам а не наши продукты.
А можно пример на гитхабе этих волшеебных больших проектов легко дебажащихся без di?
Как будто магия в одном di. Как будто ни в сервлетах, ни в jdbc, ни в maven, ни в junit нет магии? В самой jvm может нет магии?
>>Сейчас бы в жабе бойлерплейта стесняться.
скажи еще, что ты в блокирующем стиле пишешь, а не в реактивном.
>легко дебажащихся без di?
Это твоя фантазия, я говорил
>Его проще дебажить
Да и честно говоря я только бугаенко знаю.
Страшнее другое - в АЙТИ ПИЗДЕЦКИ СКУЧНО
С К У Ш Н О
К
У
Ч
Н
О
скукотища ебаная, тупейшая работа просто пиздец, да блядь токарем быть веселее
мимо успешный техлид
Тредом ошибся, техлид ебаный.
> Как будто ни в сервлетах, ни в jdbc, ни в maven, ни в junit нет магии? В самой jvm может нет магии?
Так поэтому их и сложно дебажить, они же полностью из нее состоят.
>Как будто ни в сервлетах, ни в jdbc, ни в maven, ни в junit нет магии?
Магии - нету, там все достаточно прозрачно с т.з. кто кого вызывает и за что отвечает. В junit есть магия, но там реально ее немного.
Если бы DI исчерпывался @Component и @Inject - то тоже все было бы ок. Но поверх него столько нахерачили, что он стал магией.
>В самой jvm может нет магии?
Тебе же не надо дебажить JVM, среднестатистический разработчик за всю карьеру ни разу не столкнется с JVM багом.
Магия с первого взгляда там разве что в аспектах и проксях, но без этого уже никак. Декораторы ебашить? Ну их нахуй, лучше уж гайды почитать как там все устроено в нутре.
А если не получится? Это раньше можно было легко устроится, а сейчас джунов никуда не берут. Они не нужны, с ними уже борются.
> с ними уже борются.
С паразитами только так и надо.
Как в моем случае будут правильно выглядеть команды? P.S. я уже 2 недели не могу сделать такую элементарщину через консоль.
нахуй тебе консоль, учи сразу спринг бут, кубернетес и лягушонка линка
Шиндовс проблемы с путями. Не может найти jar.exe
>А именно?
Из личного опыта: какой-то умник у нас в проекте решил, что javax.validation это круто. И заюзал их для валидации, понаписав кастомных валидаторов. Но сделал это через жопу, причем 2 раза. Первый раз выдавая сообщение что поле ХХХ невалидно само поле объект с несколькими переменными, без объяснения почему. Второй раз что в обработчике ошибки вместо стектрейса просто печатает текст ошибки и выбрасывает REST эксепшен без cause разумеется. Не зная что там используются кастомные валидаторы, и не зная деталей как они работают, ты хер найдешь концы. Потому что прямой связи в коде - нет. А еще есть например кастомные скоупы у спринга, это отдельное веселье дебажить почему у тебя не тот стейт у бина.
>>312751
>Магия с первого взгляда там разве что в аспектах и проксях, но без этого уже никак. Декораторы ебашить? Ну их нахуй, лучше уж гайды почитать как там все устроено в нутре.
Это все хорошо пока ты осторожен и на проекте нет долбоёбов, но какой же большой проект без них. В проекте была утечка конешенов из пула, никак не могли понять почему. Оказалось, что кто-то решил в посткоммит хук повесить операцию которая что-то пишет в базу в отдельной транзакции и разумеется для этого нужен новый коннект. Получается пока вторая транзакция не отработает, то и первый коннект не будет возвращен в пул. Это не большая проблема пока в пуле достаточно коннектов, но если их там нет, то вторая транзакция подвисает на получении конекта из пула и при этом держит первый коннект. И по стектрейсу эта связь тоже не видна.
В общем мне это надоело, я больше на эту тему писать не буду. Но если кратко - вся эта магия хороша, пока у тебя маленькое приложение которое ты хорошо знаешь и ты не лезешь дальше простого вайринга бинов и @Transactional. Даже простая @Transactional(propagation = Propagation.REQUIRES_NEW) уже может создавать сложности.
Сначала гули как добавить java в path
Потом перезапускай консоль
Потом гугли что написать в манифесте
Jar собирается через jar cmf manifest.txt moegovno.jar *.class
Jar запускается через java -jar moegovno.jar
Потом открой лекцию в конце которой было это задание и прочти ее еще раз
Потом качай нетскейп навигатор чтобы его выполнить
Есть хоть какой-то позитив на рынке?
Не работает логика, что все, кто еще не перекатился, яро пытаются это сделать, и их места освобождаются?
Или теперь прям такой потной пиздой накрыло весь рынок, что вкатунам остается дрочить-шабить-мастурбировать по углам и все?
Хуядно
откуда безработным первокурам знать что там у кого закрывается
Их рисовать-то в текстовом виде почти никому не нужно, а уж парсить зачем? Какая у тебя задача? Скорее всего, она решается более простым путём.
Хочу в кукумбер сценариях задавать графовидную структуру в тексте в виде такого графа, а в коде степа парсить в объект. Такой вариант по-моему самый наглядный.
На рисование таких графов уйдёт уйма времени из-за разметки пробелами. Проще сделать что-то вроде YAML.чуть менее наглядно, но намного легче рисовать руками и парсить.
А как без джавы определить текстовый файл или бинарный? Всё зависит от того, какая информация туда записана. Т.е. технически между ними нет ни какой разницы. Разница только семантическая.
В гугле нет ответа про мурзилки, а мне никто так и не ответил.
хуево на рынке щяс
многие, кто свалили во всякие снгшные помойки + турцию, остались на удаленке, а "невероятные" возможности на рынке рф так себе, как ты понимаешь, даже с учетом необходимости внедрения всего
Во времена перестройки можно было работать на заводе, а вечерами паять свою 8-битную ЭВМ.
Перестройка это уже конец, а у нас только все начинается, если проецировать на 17 год. В 2091 можно будет вздохнуть.
Переката не будет до завершения спецоперации по денацификации и демилитаризации Украины.
Что вам даст этот перекат? Толпа долбоёбов, которые сейчас спрашивают про апворк и перспективы вката на фоне последних событий в каждом треде по десять раз ежедневно, гораздо хуже шарпоблядей.
Ну короче сам написал, там делать нехуй.
анальной дешлюхизации твоей мамаши
Сам репутацию выдумал?
Я когда сидел в шарп-треде, то там всегда помогали и отвечали на вопросы, а сюда пришёл - один токс и даже на вопросы не отвечают.
Я недавно перестал тут спрашивать. Начал спрашивать в чатиках в телеге. Там народ и шарит лучше и их больше и менее токсичные.
Тут на мои вопросы или игнор или посылание в Гугл, в котором я перед каждым вопросов всегда сижу не меньше получаса.
Для вопросов, ответы на которые нельзя или сложно найти в гугле.
/thread
вкатун
В жабе принято использовать properties. Но можно всех обмануть и сказать, что это yml.
Смотрел недавно видосик обучающий, там у челика рекорды для энтитей. Норм выглядит.
>Нет, но юзер сможет запилить свой пресет вместо дефолтного
Значит тебе нужен дефолт (его клади в resources) и оверрайд (его грузи по какому-то пути). Можешь посмотреть на https://github.com/lightbend/config
> юзер сможет запилить свой пресет вместо дефолтного
> Прога под линукс будет
Линукс-way это высрать дефолтный конфиг в /etc/прога/config.json при установки пакета. И при запуске, сначала искать конфиг в /home/user/.config/прога/config.json, а потом в дефолтном месте.
Но ёбку с пакетными менеджерами и скриптами установки оставлю на твое усмотрение. По васянски, проще класть дефолтный конфиг в ресурсы жарника, жарник класть куда хош, и при его запуске, он должен скопировать конфиг в каталог юзера (если его там нет) из ресурсов и потом читать уже от туда.
> рекорды для энтитей
В рекордах разве поля не финальные? Чтобы поменять одно поле, придется копировать весь рекорд
Нетти, вертекс, нио - малопопулярны, почти нигде не используются, трудны в освоении, полны багов, которые годами и десятилетиями не исправляют.
R2DBC - неюзабельна в принципе.
А что за проблема с БЛОКИРУЮЩЕЙ джавой в 2022 году?
Полно популярных веб фреймворков, легких в освоении, почти без багов.
JDBC - няша.
Зачем есть кактус?
Добро пожаловать. Снова
Потому что БЛОКИРУЮЩАЯ технология в бекенде 2022 года (или даже 21 века) - тупиковая ветвь эволюции.
БЛОКИРУЮЩИЙ код писали в 80-х и 90-х, когда нагрузка совсем нулевая была. Сейчас твой БЛОКИРУЮЩИЙ сервер на спринге с томкатом не выдержит даже 300 запросов в секунду.
Для энтерпрайза с нагрузкой 300 человек в сутки это нормально. Для компании, которая делает продукты, которыми пользуются миллионы и миллиарды людей - нет. Представил ебало пользователя, который вынужден ждать на 2 секунды дольше просто потому что тредпул томката закончился?
Вон, сайт оракла по всей видимости на БЛОКИРУЮЩЕЙ джаве написан, иначе я не могу понять, почему он такой тормознутый.
Так а какая разница, если есть только 1.5 реактивных драйвера для бд?
Если есть нагрузка, то довольно часто используется вебфлакс
На шарпе зато бэкендеров заставляют фронтенд писать
2. Какие матчеры лучше юзать? Хамкрест или JAssert?
1. Автовайрь через конструктор, либо через те же сеттеры
2. Что удобнее. Мне вообще обычных из junit в 99% случаев хватает
Это только в том случае, если проект изначально планировался быть высоконагруженным. И тогда джаву выбрасывают и берут го. Потому что воевать с netty/vert.x/webflux - себе дороже, да и квалифицированных разрабов попробуй еще найти на такой стек, все кругом только блокирующие круды умеют писать, а про асинхрон и многопоток никто ничего не слышал.
А вот если на твой сервис с блокирующимся кодом начинает приходить высокая нагрузка, то все, пиши пропало. Точнее переписывай все с нуля, потому что переделать блокирующийся код в неблокирующийся сейчас невозможно без титанических усилий.
>>314297
Чел, я неоднократно замечал на сайтах сбера, тинька, оракла как сильно они тормозят. Наверняка блокирующие сервера не вывозят нагрузку в несколько тысяч пользователей в один момент времени. Поэтому если я вижу, что что-то грузится больше 3-5 секунд, то просто закрываю вкладку и больше не посещаю этот сайт. Терять настолько драгоценное время в таких огромных количествах на бесполезное ожидание я не намерен.
Обычно, если блокирующий код падает, просто докупают несколько железок, и начинают работу по оптимизации старого говна. Ну а с вебфлексом не то чтобы много проблем. Нужно только чуть по-другому думать. А ещё лум завезут.....
Ни одному сайтику не нужно обслуживать 300 запросов в секунду, у многих 300 в час не наберется. Это же не торговый движок где по 100500 клиентов сидит и спамит запросами.
https://kata.academy/
Возможно, там же есть беззнаконные типы
spring-boot-starter-git, лол.
Это понятно, здесь суть именно трудоустройство. Типа платишь за то, что тебя устроят в компаху помимо знаний.
Отзывы слишком положительные везде, вот и решил тут спросить
Когда Dto генерим, можно прокинуть аннотации ломбока туда? например @Builder?
Хз
Я взял пример, чтобы потренироваться описывать openApi. Там висели анноташки @Builder в Dto.
Их не ставят в dto?
Поясни, я не шарю
Я сейчас просмотрел все доступные книги по Спрингу и знаете что? Ни в одной не написано как писать веб-приложения, они все посвященны как ковырятся в этом xml-говне. Там максимум описывают один и тот же стандартный пример как вывести хеллоуворлд на локалхост:8080.
Такое ощущение, что специально создали это говно, чтобы все в него увязли и забыли про программирование и решение задач, а только и делали, что ковырялись в кишках фреймворка.
Почему раньше, до всех эти Спрингов, можно было легко написать любое приложение, а теперь обязательно надо учить этот кал?
Билдер нужен, чтобы ты мог в жава коде дтоху удобно собрать. Фронту вообще нет смысла знать о билдере
> Вот не пойму, нафига добавлять всякое внедрение зависимостей, аспектно-ориентированное программирование и прочее говно, чтобы просто выплёвывать html-странички клиенту?
Просто ты реальных тырпрайзных проектов не видел, где фронт - сотая часть всего. И да, там ковыряться в хмл - необходимость, если взять пхп для таких задач, там будет то же самое, разве что придётся спринг велосипедить.
> Почему раньше, до всех эти Спрингов, можно было легко написать любое приложение, а теперь обязательно надо учить этот кал?
Нельзя было. Писали на хранимых процедурах в БД и делали десктопные клиенты, ибо веб-технологии тупо не справлялись.
>>314574
Был код без openapi. В нем описаны контроллеры, dto(с билдерами).
Я решил добавить Оpenapi. Описал контроллеры и dto в yaml и сгенерировал на основании их классы.
Так вот, т.к. изначальные DTO писались руками, там повесили аннотации @Builder.
А теперь у меня класс не руками писаный, а генерится при билде.
И там не вешается билдер.
Вопрос: как проставить в openapi (и можно ли), чтобы ломбоковскую аннотацию туда прокинуть
Есть один абстрактный класс.
Приходит стринга с именем одного из его наследников
Нужно создать экземпляр по этому имени
Наследников 100 штук
Как обойтись без гигантского свитча?
Дай пояснения.
Вот были у меня классы. Я написал спеку на основании их. Ток теперь делаю так, чтобы генерились классы из спеки.
Эт по сути мой учебный проект, в котором тренируюсь.
А как надо в итоге, анон?
>Я написал спеку на основании их.
Ну и еблан, надо было расставить аннотации и нужный плагин сам все сгенерит.
Понял. Никогда не генерил классы по спецификации. Отпиши, если решишь свою проблему
не понимаю как тут интерфейсы применить
Через рефлексию.
Хуево тебе.
>>314611
>>314592
так стоп мне кажется я проебался. Это же и интерфейсы репозиториев под каждый класс наследник пилить надо. То есть те же 100 штук
В общем проблема такова
Таблицы одинаковы, но я не хочу объединять их в одну большую. Представьте просто, что таблицы это борды на дваче и я не хочу их перемешивать
Как можно обустроить подобное красиво с помощью jpa?
Не знаю что ты там хуевертишь, но чтобы совсем не писать никаких условий это примерно Class.forName("a.b.c").getConstructor().newInstance()
Если тебе не нужны полиморфные запросы, то юзай. @MappedSuperclass. Если нужны, то смотри, как в jpa реализовываетсч наследование и выбирай наиболее подходящий вариант
я так и сделал. Но мне ведь репозитории пилить под каждый класс наследник необходимо? То есть их будет много. Я бы хотел этого избежать, но не знаю возможно такое или нет
Это вообще норм тимлид? Просто первая работа. Он прав и познал дзен и мне нужно подтянуться, подрочиться и я тоже потом познаю? Или он еблан и это дроч ради дроча?
Ваши мнения?
Да. И похоже не только Мартина. Про запахи говорил. Хотя он в другом городе от меня находится.
Это норм тимлид?
>Приходит стринга с именем одного из его наследников
Если стринга приходит снаружи - поздравляю ты только что сделал AnonShell. Не такой эпичный как у Log4Shell, но и ты не апач.
окей
приходит не с именем класса, а с инфой на основе которой я выбираю нужный для обработки сопутствующих данных класс
Теперь это не провал?
Ты уверен, что не можешь использовать json? В Jackson есть поддержка такого через polymorphic deserialization. Ты можешь использовать рефлексию или сервис лоавдер.
Если набор заранее ограничен твоими классами - да, это ОК.
Но если будет что-то типа: "com.anon.someshit." + type + "Processor" - то это тоже провал.
Проблему можно решить с помощью модулей, но это уже выглядит как оверинжениринг для такой простой задачи.
Конечно.
Через класслоадеры.
Это вроде и есть главное преимущество перед плюсами.
>подгружать классы, к примеру, из интернета
Я бы на месте вашего инфобеза, пришел бы отхуячил тебя резиновым дилдаком.
Как теперь жить без IDEA?
Эклипсом и нетбинсом уже лет как 8 очень мало кто пользовался на проде.
Может все-таки разрешат пиратский софт использовать? Потому что оплачивать подписки уже никак не получится.
Продажи в России приостановлены (на какой срок не сказано), все их офисы здесь закрываются, сотрудники либо релоцируются вместе с компанией, либо увольняются, партнерство с универами в РФ прекращается.
Во!
>Есть что почитать на эту тему - про sql инъекции и прочее на что может нарваться начинающий?
В принципе есть целые курсы на эту тему от разных инфоциган, но это скорее для тех кто будет работать безопасником. Но можешь спиратить и пролистать.
Сервера, которые раньше можно было арендовать где угодно и какой угодно мощности, ушли в прошлое. Теперь уже нет возможности докупить памяти или процессоров.
Нет больше возможности крутить сервера на жирном БЛОКИРУЮЩЕМСЯ спринге.
Выход один - переписывать все на Си, Си++, Golang, Rust. Жирная жаба не вписалась в новое мироустройство.
Есть метод перевода массива целых чисел в Строку, получает на вход массив и выводит эти числа через пробел.
Массив предварительно сортируется.
Для экономии строки - если числа повторяются, их выводят в формате NxЧИСЛО например, если была такая последовательность: [12, 12, 14, 15, 15, 15, 16] на выводе будет "2x12 14 3x15 16".
Изъебал весь мозг, пришел в итоге к такому решению:
public static String serializeIntArray(int[] array) {
StringBuilder b = new StringBuilder();
Arrays.sort(array);
int duplicate = 1;
int current = array[0];
for (int i = 1; i < array.length; i++) {
if (current == array) {
duplicate++;
} else {
if (duplicate == 1) {
b.append(current).append(" ");
} else {
b.append(duplicate).append("x").append(current).append(" ");
duplicate = 1;
}
current = array;
}
}
return b.toString();
}
Но оно сука не выводит последнее число (или несколько чисел, если они в самом конце повторяются). У меня голова уже не работает, понимаю что решение примитивное но нихуя не могу сделать. Как исправить?
Ну и советы по оптимизации тоже не помешают.
Есть метод перевода массива целых чисел в Строку, получает на вход массив и выводит эти числа через пробел.
Массив предварительно сортируется.
Для экономии строки - если числа повторяются, их выводят в формате NxЧИСЛО например, если была такая последовательность: [12, 12, 14, 15, 15, 15, 16] на выводе будет "2x12 14 3x15 16".
Изъебал весь мозг, пришел в итоге к такому решению:
public static String serializeIntArray(int[] array) {
StringBuilder b = new StringBuilder();
Arrays.sort(array);
int duplicate = 1;
int current = array[0];
for (int i = 1; i < array.length; i++) {
if (current == array) {
duplicate++;
} else {
if (duplicate == 1) {
b.append(current).append(" ");
} else {
b.append(duplicate).append("x").append(current).append(" ");
duplicate = 1;
}
current = array;
}
}
return b.toString();
}
Но оно сука не выводит последнее число (или несколько чисел, если они в самом конце повторяются). У меня голова уже не работает, понимаю что решение примитивное но нихуя не могу сделать. Как исправить?
Ну и советы по оптимизации тоже не помешают.
if (duplicate == 1) {
b.append(current).append(" ");
} else {
b.append(duplicate).append("x").append(current).append(" ");
}
После цикла добавь последнее число
Я предупреждал! Ставьте Эклипс.
> Мы больше никогда не увидим IDEA в своей жизни...
Да причем тут IDEA.
С джавой любимой нашей что будет, что??
Оракл же тоже добавил РФ в черный список. Скоро напишут удаленный скрипт на отключение всех JVM в РФ.
С ней ничего не будет. Надеюсь, в США и Европе разработка джавы не остановится и через год-два наконец-то запилят лум и вальхаллу в релизе. Благо Шипилев уже 10 лет в Германии живет. Но увидим ли мы эти новшества? Совсем не факт. Вполне вероятен сценарий, что весь мир уже пользоваться моднейшими виртуальными потоками и писать List<int> list = new ArrayList<>();
А у нас в это время будет доступна только BellSoft Liberca JDK 8...
Хуй в руки.
Дотнет кор кстати попенсорсный и его можно юзать у нас без ограничений. Осталось только редактор кода найти на замену вижле. Или пиратить райдер.
Golang. У него есть очень хороший плагин для вскода. Вскод бесплатный полностью. Если хочешь быть бекендером в РФ, то учи гоуленг.
Шарп не вариант совсем.
Си, Си++, Раст - актуальность не потеряют.
>Golang. У него есть очень хороший плагин для вскода.
Вот я кстати недавно интересовался по поводу ide для goвна. Точно вскод хороший?
IDE для Go - это Goland от джетбрейнсов, который вместе с идеей и райдером теперь уходит в прошлое.
Вскодом для го пользоваться можно. Да, не шик, но дебаггер там нормально прикрутили. Автокомплит и документация почти как в идее работают. В общем норм, получше какого-нибдуь нетбинса будет.
>>315071
Сейчас работу вообще отменили. Все будем ходить побираться на улице или в огородах работать чтобы с голоду не умереть.
Я вообще и Шильда купил и Блоха, пиздос
Снова выхожу на связь.
Есть тут кто реально gradle-ssh-plugin юзает? Вы че, ебанутые?
Эта помойка валится с ошибкой при авторизации с использованием putty агента и судя по всему её не фиксят с 16го года, а инфы о том как заставить его юзать openssh агент не существует в природе. Хотя в доках поддержка заявлена. Но как юзать мы не скажем.
Не использовать же мне авторизацию по паролю.
Я уж молчу о том что плагин не развивают уже несколько лет.
Уже бы свою скриптопарашу написал за то время что с этой парашей ебусь, чесслово.
Короче, реквестирую что-то похожее на этот плагин, но что бы работало. Скриптопарашу не хочу потому что никрасиво.
>>Спрингу
>>xml-говне.
Читай доки, книги - устаревшее говно с кучей хмл и прочей хуиты, которую только деды может и помнят. Еще б блять жаваЕЕ начал изучать.
>>Ни в одной не написано как писать веб-приложения
На spring.io зайди, клован. Там гайды есть где все расписано.
>>как вывести хеллоуворлд на локалхост:8080.
Если тебе прям пошагово нужно объяснение как круды писать от и до - смотри гайды на ютюбе (пока его не заблочили), их там миллиарды.
>>в него увязли и забыли про программирование и решение задач
Он же пиздец простой, без него ты б на одних сервлетах закончился.
>>до всех эти Спрингов, можно было легко написать любое приложение
кек
До спринга вся магия писалась тобой. И вместо @Component и @autowired ты бы хуячил абстрактную фабрику с синглтонами(с двойной проверкой лока само собой). А работа с базой на чистом JDBC это пиздец говно.
>>переписывать все на Си, Си++
долго и дорого, тормозит будет сильнее, чем джава из за отсутствия оптимизации говнокода джунов
>>Golang
не умеет и десятой части того, что может джава, если в го2 не исправят все косяки, то с выходом лум для джавы - вылетит из бекенда.
>>Инструменты для разработки на жабе здесь более недоступны
если идея накроется и кряки не помогут - есть эклипс от деда
>>БЛОКИРУЮЩЕМСЯ спринге.
самое время перейти на реактивный спринг
>>Rust
его знает полтора человека, джаву знает каждый второй.
>Уже бы свою скриптопарашу написал за то время что с этой парашей ебусь, чесслово.
А на грейдле все так и делают.
> Не использовать же мне авторизацию по паролю.
Открою секрет, кроме авторизации по паролю и ебли с агентом, есть еще авторизация по rsa ключу, которую юзает весь белый свет
Открою секрет - авторизация по агенту == авторизация по ключу.
Ну либо можно в конфиге указать путь к ключу вместе с паролем, да.
Написать свой парсер комбинатор.
Если не юзать парашут типа лямбд Я про амазоновские лямбды, то время старта не критично. Всё равно ты деплоишь пару раз в неделю. Деплоишь в к8с, вначале у тебя полностью задеплоиться новый кластер, и только потом загасится старый. Ну будет у тебя приложение стартовать на 10 секунд дольше из-за JIT, да никто это не заметит.
Мы в конторе смотрели грааль и делали тесты с миграцией некоторых сервисов. В итоге не заметили каких-то существенных преимуществ.
Вчера я спрашивал как избавиться от свитчей и пришел к такому варианту (пик)
Поясни насколько это говнокод и в чем я не прав. На возвращаемые значения не обращай внимания. Мне нужно знать насколько приемлем такой подход. Спросить больше не у кого
Сущности ничем друг от друга не отличаются, просто я не хочу смешивать все значения в одной таблице.
Если я хочу новый раздел - делаю таблицу, сущность, репу, добавляю репу в мапу. В классе сущности определяю метод castAndSave. Сервис вообще не меняется. В чем я не прав?
>Rust
На Раст тяжело писать большие, со сложной бизнес логикой приложения. Когда у тебя заранее не понятен жизненный цикл объекта или он очень сложный, то концепция владения сильно усложняет разработку. В языке с GC ты просто создал объект и передал куда надо, а в Rust ты должен думать передавать владение или нет. А потом, по мере развития проекта может понадобится зарефакторить это всё. В общем сложно.
Для агента разве не нужен мастер пароль? Это уже вне стандартов ssh. Я один раз юзал этот плагин для тех же целей что у тебя, сетап выглядел так же как на сайте.
Вроде бы все ок, только логику сохранения я бы вынес в какой-нибудь PostRepoManager, в котором бы были все репы, и который бы все это сохранял.
А почему ты не хочешь все посты в одну таблицу?
Количество джава вакансий на хх ру падает стремительными темпами (-800 вакансий с начала спецоперации на Украине), рыночек постепенно закрывается.
Думаю, следующий тред будет предпоследним или последним. Более нет смысла заниматься джавой. Пора учить C, C++, Go и немного JS.
Дяденька, мне нужны конспекты, а не тескс что выше написали
Седжвик "алгоритмы на java" 4 издание.
Еще есть лафоре алгоритмы на джава.
А если нужны конспекты, то наверное emaxx тебе больше нужен.
Кто сидит? Помойный сбер? Ну, можно и там поработать сейчас. Но потом тебя никуда не возьмут, очевидно же.
ВТБ? Тинькофф, куда берут только олимпусь?
Крупные джава работодатели уходят с рынка, очевидно уже. В скором времени джавы здесь не останется.
За последнюю неделю на джаве было открыто 1к вакансий, в то время как на Го уже целых 370. То есть разница уже менее чем в 3 раза. Так что джава уходит имхо
Спасибо, но мне нужен был конспект по простым алгоритмам сортировок и структур данных
Хуимхо. Куда с рынка уйдет промышленность, телеком, логистика или ритейл? Которые за собой тянут сотни своих дочек или подразделений
>За последнюю неделю на джаве было открыто 1к вакансий, в то время как на Го уже целых 370.
Ясно, безработный вкатун, тебя уже без диплома профильного никуда не возьмут, можешь не считать ничего
>промышленность
Там С, С++, а не джава.
>телеком
С++, Go, совсем немного джавы
>логистика или ритейл
Только Go, никакой джавы
Где мимо? В озоне, авито и wb джава появилась?
Нет, джава была в дойчебанке, jb, епаме и люксофте. И еще в куче разных галер и энтерпрайзов поменьше, которые теперь закрылись.
Джава - это всегда в первую очередь финтех и тырпрайз. Из ритейла я только утконос могу вспомнить, да и то, он на го переписывать начал свои сервисы еще полгода назад
Вся госуха на джаве, пятерочки, магниты, спортмастеры, мвидео и все остальные на джаве, все или почти все банки на джаве. Даже всякая автоматизация уровня сети автомоек и то на джаве.
Как раз на джаве останется хоть какая-то работа. Потому что сайтики на питоне и пхп закроют, модное говно с го тоже закроют нахуй. А промка в рф это капля в море.
Надо было самому конспект писать, а не прогуливать пары.
Хватит ли вакансий на всех? Мне кажется и половины нынешних программистов не трудоустроят, а вкатунам лучше поискать другую профессию.
Назвал 3 компании из сотни крупных, где все не на джаве, причем с озоном проебался, там жвба а есть
https://hh.ru/vacancy/51619275?from=employer&hhtmFrom=employer
Это само собой. Но если жаба потеряет 40% вакансий, то го, питухон, шарп и жс потеряют 70%.
Сейчас на рынок вывалилось около 20 тысяч разрабов. Они с легкостью покроют все текущие потребности российского энтерпрайза.
Да, работу потеряют очень многие, несколько сотен тысяч уж точно.
Увы, это последний тред.
У нас LTS тред.
>Чем больше счётчик тредов, тем более значимый и уважаемый тред.
>JS Thread #245
Я тебя понял, не продолжай.
Как же, всем на счётчик похуй было, так и жили с проёбанной нумерацией несколько лет, пока я не сказал, что после 23 треда будет 97-й.
Теперь в треде я и всё будет по другому!
Да, если используешь параметры.
это в jdbc вшито. А спринг и хибер работают поверх jdbc.
Прям проверок там нет, их и не получится сделать. Если ты создашь запрос, куда передашь параметры тупо конкатенацией строк, он так и отправится в базу. А если юзанёшь какой-нибудь параметризованный запрос, где параметры с двоеточиями/вопросительными знаками заполняются извне, всё экранируется, и инъекции не будет.
Нет, можно только управлять транзакциями вручную.
Хотел логически разделить разделы, чтоб не делать каждый раз запросы к одной таблице. Я подумал вот как у того же абу доски хранятся в одной или он поделил?
Он же уверен, что любой селект блокирует всю таблицу, и селекты из других транзакций будут ждать.
Это полный пиздец. Ты смешиваешь данные и модель данных, и в итоге для создания одного раздела у тебя вместо пары инсертов потребуется привлекать программиста, который на каждый пук будет писать новый круд. Зачем? Если тупо из-за того, что в каждом разделе свой счётчик постов, то так и сделай номер поста отдельным столбцом в таблице со всеми постами, чтобы он не зависел от ID, а ID вообще юзеру не показывай. Счётчики либо через сиквенсы по одному на раздел, либо тупо через MAX()+1.
И чтобы добавить новую борду, тебе нужно будет править код. Храни все посты в одной таблице с fk на борду
>нет возможности докупить памяти или процессоров
А может тогда займутся оптимизацией, чтобы летало даже на 8-битных ЭВМ?
Тот, кто не захочет платить перекупам за иностранные компы по баснословным ценам.
На жабе в приципе невозможно сделать веб-страницу, это серверный язык, а не язык вёрстки.
Реально что-то я хуйню спросил
public DecorativeDog(String name){
setName(name);
}
В файле класса?
В теории конечно можно будет что-то разрабатывать легковесное, но про всякие спринги и вебы придётся забыть.
Никакого заговора. Это всё зумерское мышление "раз компьютеры нынче мощные, можно начинать говнокодить".
зис
Тогда поясните мне вкратце. Если хранить все в одной таблице не будет замедлений?
пиздец ну и капча, 3 года ридонли теперь не могу капчу забороть
Не будет.
Надо было эклипс ставить, там такой хуйни нету
> Если хранить все в одной таблице не будет замедлений
Гугли что такое sql индексы и как их использовать
Пхпшник?
>>голой джаве
Олдовый JSP.
Но лучше возьми SpringWeb и шаблонизатор типа thymeleaf - ебли будет куда меньше.
>>На жабе в приципе невозможно
В принципе на жабе можно сделать все. Майнкрафт например на джаве. Просто для другой хуйни есть инструменты поудобнее джавы.
>>не язык вёрстки.
все кроме хтмл не язык верстки
> Олдовый JSP.
Не голая жаба.
> В принципе на жабе можно сделать все
Веб - это именно html. Даже если ты на жабе напишешь браузер, который будет поддерживать жабу в качестве языка вёрстки, это вебом не будет.
> все кроме хтмл не язык верстки
Да.
> В принципе на жабе можно сделать все. Майнкрафт например на джаве.
Но майнкрафт это не всё.
>Epam, Luxoft, DataArt, DXC, Accenture уехали и выкинули сотрудников на мороз.
Я понимаю что ты факты не чекал, но зачем тогда пиздеть?
Епам не выгонял на мороз, например, а помогает переезжать.
Про остальное значит тоже пиздабольство с высокой степенью.
Самым легковесным оказался vs code.
Вся фишка этих контор в том, что здесь уровень жизни ниже и можно платит меньше, а если программист переедет, то ему такой зп уже не хватит. Тем более человек может патриот своей Родины или имеются другие причины - семья, родня, климат не тот.
Может кто знает более популярные стеки технологий? Боюсь, что в джаву уже не смогу вкатиться, так как рынок слишком узкий.
Паять любительские ЭВМ из отечественных комплектующих
>здесь уровень жизни ниже и можно платит меньше, а если программист переедет, то ему такой зп уже не хватит.
А если не переедет, то вообще придется с ним распрощаться и искать нового. И искать все равно "там" придется.
В моменте пусто, будет скоро густо
https://youtu.be/zYxfXLPNPl0
Это инструкция к блокноту? Там и так всё понятно, если не тормозит IDE, то тормозит разраб.
хотя можно арендовать шуструю виртуалку, установить там окружение с идеей и работать как белый человек без тормозов
нервы дороже жалких 2-5к в месяц
5к в месяц, лол. Тут кто-то спрашивал, сможет ли вкатиться через книги на мобилке и некропека на кафедре, потому что деняк нет даже на обосанный ноут с авито. Если у тебя есть лишние 5к в месяц. то и проблему с пека ты решить можешь, хотя бы в кредит.
Как ты из блокнота будешь ебаться с магией di?
Как он тебе будет подчеркивать ошибки, причем не только компиляции, но и рантайма, ошибки спринга, ошибки в хмл, в поме, в спеле, в хтмле?
Автодополнение? Рефакторинг? Переименование по всему проекту, тип миграция, экстракат интерфейс, метод, делегат, мув метод.
Тулинг для баз, хттп-клиент, гита, мавена, докера, кубера.
Хелловорды хоть в чем можно печатать.
Новых компов не будет. Будут паять любительские ЭВМ и писать свой софт к ним. Возможно смогут адаптировать СР/М-80 для них и тогда использовать ПО от этой ОС.
> Автодополнение?
Повторение мать ученья.
> подчеркивать ошибки ... Рефакторинг? Переименование по всему проекту, тип миграция, экстракат интерфейс, метод, делегат, мув метод.
Семь раз отмерь, один раз отрежь.
> из блокнота будешь ебаться с магией di?
На бога надейся, а сам не плошай.
> Тулинг для баз, хттп-клиент, гита, мавена, докера, кубера.
Где мёд, там и мухи.
Кейс вот какой: есть библиотека, она конфигурируется из application.properties/бд при старте приложения. Библиотека используется по всей приложухе, скоуп синглтон.
Нужно добавить возможность присылать через хттп-контроллер другие проперти в рантайме, применять их и чтобы все работало сразу же с новыми пропертями.
Когда гуглю выдает кучу всего. И биндефинишены, и листнеры и процессоры и все что угодно. Подскажите один способ: современный, спрингбутовый и желательно простой.
Оракл после проигранного суда гуглу начал лютую хуйню творить, анус ставлю компания пидарасов что-то с лицензированием джавы сделает
А правда, что сама бд оракл стремительно теряет долю рынка в пользу постгреса или пиздят?
На чем они вообще живут? Оракл клауд вроде сосет по прибылям, ерп система - хз, может она удачная. Че там еще?
>анус ставлю компания пидарасов что-то с лицензированием джавы сделает
Наоборот в 17 LTS расслабили лицензирование, это конечно не то что в 8-ке было, но уже гораздо лучше.
>>317647
>А правда, что сама бд оракл стремительно теряет долю рынка в пользу постгреса или пиздят?
Кто сидел на Оракле и продолжает на нем сидеть, слезть с него практически не реально. Но всякие новые стартапа предпочитают постгрес тупо потому что столько денях нет. Так что в длинной перспективе, что Оракл, что Сиквел Сервер - теряют долю.
>На чем они вообще живут? Оракл клауд вроде сосет по прибылям, ерп система - хз, может она удачная.
Облако и лицензии. https://www.tadviser.ru/index.php/Статья:Финансовые_показатели_Oracle
И че после отзыва лицензий на бд все данные удалятся?
Как вообще работает это говно с лицензированием таких штук?
>Как вообще работает это говно с лицензированием таких штук?
Конкретно в Оракле - база пишет в логи какая у нее установлена лицензия, на каком железе и с какими фичами она запущена, всё. Никакой защиты от копирования или ещё чего у Оракла нет, просто идешь на сайт Оракла, качаешь базу, ставишь и работаешь. Лицензию проверят только саппорт при обращении, ну и мусора.
То что ты долбоеб.
>сама бд оракл стремительно теряет долю рынка в пользу постгреса или пиздят
Всякий крупняк как сидел на оракле, так и сидит, и никуда с него не уйдет.
Но оракл сам по себе почти никому не нужен, когда есть бесплатный опенсорсный постгрес, возможностей которого более чем достаточно для почти любого бекенда малых и средних размеров.
дубль вопроса со стака "Я разрабатываю достаточно большой проект и множество библиотек для него, многие из которых зависят друг от друга. Условно А наследуется в Б, Б наследуется в В, В наследуется в Г, Д, Е, Ё, а Д наследуется в У.
Проблема в том, что если я обновлю например библиотеку Б, то мне придётся как минимум перекомпилировать все библиотеки выше, чтобы они работали вместе. Как с этой напастью бороться?"
> Проблема в том, что если я обновлю например библиотеку Б, то мне придётся как минимум перекомпилировать все библиотеки выше, чтобы они работали вместе. Как с этой напастью бороться?
Не понял в чем проблема.
Но если все эти абвгд твои, то их билдам стоит шарить общий classpath для всех зависимостей. А то я так понял у чела каждый модуль становится уберджаром. Тогда в теории только конкретный модуль будет перекомпилирован.
Либа собирается и деплоится в нексус с фиксированной версией, обычно автоматически через пайплайн на дженкинсе, но изредка заливают и руками. Проекты, которые зависят от этой либы, просто указывают нужную версию в пом.хмл, и она сама скачается при сборке.
посмотри как это в спрингбут стартерах реализовано - через родительский пом с пропертями - примерно так и делают.
Сталкивался даже с таким, что на вин7 работает, а на 10 нет.
Допустим у меня есть жадная коллекция внутри сущности.
А в query репозитория я делаю join по этой коллекции с некоторыми условиями, но все условия соответствуют сущностям внутри этой коллекции.
Получается, у меня в запросе два join по одной табличке.
Результаты одного будут как-то учитываться в результатах другого? Или это будет две независимые выборки?
Или sql сам объединит оба join в один на каких-то фильтрах?
джейва-скрипт
Жээсодебилы продолжают использовать LATEST версии, ничего нового.
Есть у кого то опыт? Расскажите о впечатлениях.
Жуков в малине не ел, майские жуки классные, о других ничего толком сказать не могу.
Скорее не будет совместных конф с англоязычными докладчиками. Ну и русских в ближайшее время тоже скорее всего не будет. Не вижу причин, почему в дальнейшем их не должно быть.
> Расскажите о впечатлениях.
Как и все статические обертки, кроме гемора ничего не вызывает.
Люди с образованием, учёные, дали им ванильный, няшный, чистый, понятный, лаконичный, гибкий, доступный и интернациональный сиквель, но нет блять не хочу. Хочу завернуть это всё в 200 слоев абстракций, чтобы идея жидко пропукивалась каждые 5 минут, а тот кто пишет запрос потерял связь с реальностью.
Добавлю: запросы становятся трудно читаемыми потому что жук добавляет кучу алиасов, прописывает каждое поле по полному имени и берет в двойные кавычки.
С другой стороны, если какой-то долбоеб дропнет колонку которая используется, ты это поймешь еще на этапе компиляции, а не на проде.
Все хорошо с жуком. Особенно, если надо поддерживать несколько бд. Жук могет в генерацию корректного запроса под конкретный диалект
>>318392
> запросы становятся трудно читаемыми потому что жук добавляет кучу алиасов, прописывает каждое поле по полному имени и берет в двойные кавычки.
Дальше дефолтных настроек ты, видимо, не смотрел. Все это конфигурируется
> С другой стороны, если какой-то долбоеб дропнет колонку которая используется, ты это поймешь еще на этапе компиляции, а не на проде.
Не поймёшь, если генерация жуковых классов отключена по-умолчанию
ПС. Я ответил лишь то, что Кафка хорошо скейлится горизонтально и является pull системой обмена сообщениями, в отличие от RabbitMQ
У нас в Сбере этот вопрос обсуждался несколько месяцев в виде срача между архитекторами, они так и не пришли к консенсусу.
>Все это конфигурируется
Спасибо блядь! А то мне делать нехер было!
>Не поймёшь, если генерация жуковых классов отключена по-умолчанию
А! Так ты из тех, что генерированный код коммитят, чтоже сразу не сказал.
> А то мне делать нехер было!
Тебе нехер, а кому надо будет, сконфигурят как им надо.
> Так ты из тех, что генерированный код коммитят
Я человек маленький, пришел на проект с уже закоммиченным жуковским кодом. Ситуаций, когда "долбоеб дропает использующуюся колонку", не должно возникать в приципе
Возьми анона на работу в спермбанк. Собес можешь провести прямо тута.
Вот зачем они, когда можно писать простые и понятные всем SQL запросы без лишней гомосятины?
Слишком скучно. SQL - самый скучный язык, за десятки лет поменялась куча всего, языки взлетали и умирали, а SQL как был, так и остался.
Писать сикульки в строчках и скармливать ждбиси? Такое же говно неудобное, как и писать в блокноте вместо идеи. Если запросик влезает в 1-2 строчки это норм. А если там простыня ебучая и кто-то простыню написал плохо и это не ты? И еще без ограничений от библиотек. На прошлом проекте в легаси копролите видел запрос с хранимками на 100 строк внутри обычного стринга. Сиди - ковыряйся, угадывай что делает.
В идее есть подсветка синтаксиса для строк.
> без лишней гомосятины
Для пориджей это так же невообразимо как и написать сайт не скачивая 50гб node_modules
По задачам.
>Вот зачем они, когда можно писать простые и понятные всем SQL запросы без лишней гомосятины?
Мапить в объекты гемморойно, особенно когда у тебя десятки полей в таблице.
Говнохибернейт приходит на помощь.
1280x720, 0:16
Я думал, что у вас борются с программистами
Заебно писать кучу ненужного говнокода, лучше пускай спринг или жук там набенят сами чего-нибудь чтоб все работало
>не умеет и десятой части того, что может джава
При всей моей нелюбви к Голэнгу, знаком ли ты с ним? Большие сомнения.
Можно обоссать голэнг трижды, но не джаве ссать на неё.
В голанге как раз позавчера дженерики завезли. Так изуродовать и без того уродливый язык это нужно постараться.
>но не джаве ссать на неё
А кому?
ИМХО, в говноланге все ок только с многопоточностью. Вот реально крутая тема, которой не хватает в других языках, хотя виртуальные треды и у нас будут через 3 года.
Остальное - как-то слишком топорно и некрасиво. Тех же стримов очень сильно не хватает. Крайне убогая работа с коллекциями. Она и в джаве хуевая, но тут совсем как будто за шиворот насрали.
Хорошо, что дженерики завезли. Хоть и в сильно урезанном виде, но тем не менее. Компилятор умеет доказывать время жизни сущности и автоматически выбирает место, где нужно провести аллокацию (стек / куча). Рейсдетектор заебись тема.
Еще прикольно, что компиляция очень быстрая, и в полноценный, хоть и очень жирный, бинарник.
Вот это прикольные фичи говноланга. Но в целом не очень. Лучше Kotlin/Scala брать для перехода с помойной легасной жабы
https://www.youtube.com/watch?v=BIDNKRluql4&list=PLz-qdc-PbYk4QgRj6mFdzd7jY_Abn-OPN
Надеюсь английский ты знаешь.
https://stackoverflow.com/questions/71542075/inject-multiple-beans-of-the-same-type-and-automatically-select-between-them-bas
Поверхностно знаком со спрингом но можно так. Если в спринге конечно нельзя как то получить список сразу всех ImportantService бинов
Хотя 5 строка вместо ? extends Request можно просто Request. Во время инжекта эта инфа все равно сотрется
Инжектить список бинов я умею, мне нужно чтобы спринг сам понимал какую реализацию ему подбирать, чтобы вот такого кода в контроллере не было:
importantServices.stream()
.filter(importantService -> importantService.getType().equals(request.getClass()))
.findFirst()
.ifPresent(importantService -> importantService.doImportantJob(request));
Хотя я вообще хз возможно ли это, где-то читал, что нужно шаманить с BeanFactory, хз насколько это правда
Ты можешь вот этот стрим вызвать в конструкторе, а на выходе получить мапу [ImportantRequest, ImportantService] и в коде делать map.get(request.getClass()).doJob()
Вполне адекватно, но опять же – ненужная логика в контроллере, которую придется писать в каждом контроллере. Да, можно рассмотреть вариант с наследованием контроллеров от одного, в котором как-то наверное можно будет абстрактно для всех классов это сделать, но все же, пока надеюсь, что есть решение чище
Сделай ImportantServiceManager, в котором будут все сервисы, и вызывай его из контроллеров
Так это опять придется городить по сервису на каждый интерфейс
Я твою мамашу-шлюху отспецоперировал
С твоими доводами я согласен. Однако ж тут просто поединок говна и мочи, у джавушки свои проблемы и их много. Именно поэтому я думаю что именно жаба не имеет морального права ссать на кого-то.
Хотя голэнг, во многом, говнина. К его экспрессивности есть большие вопросы.
Ты обожрался сахара и одебилел.
Единственное преимущество сисярпа это сахар.
Тулинг говно, шутка ли сярписты до сих пор билдят проекты с помощью проприетарных файлов студии и/или msbuild который просто клон ANT.
По библиотекам тоже не все так хорошо, разве что в гейдеве все хорошо, а в остальных областях все грустно. Сяписиы даже пилят гайды как юзать жава библиотеки https://www.youtube.com/watch?v=E3SfXloQdfw
CLR сильно отстает от JVM, такого разнообразия GC особенно concurrent в CLR нет. JIT в жаве лучше чем в CLR. У JVM значительно больше контрибуторов и поддержка разных платформ сильно лучше.
https://www.mfractor.com/blogs/news/net-6-for-mac-with-apple-silicon-developers
2к22 вижла под мак не поддерживает Apple Silicon. ебало лохов которые верят в кроссплатформенность .Net представили?
Классно. Но факт остаётся фактом. За перфомансом и крутыми фичами это в C#. Не зря он остается де-факто стандартом в геймдеве как второй язык уже второй десяток лет. И колхозный джава тулинг тут не при чем.
>Не зря он остается де-факто стандартом в геймдеве как второй язык уже второй десяток лет.
Да даже первый, если считать все рогалики и хеловорды!
Какие ААА проекты написаны на сярпе?
Я спрашивал про ААА игры, а не список поделий на Юнити.
Тем более что сисярп в юнити используется как язык для скриптов для реализации логики, рендеринг и физика написаны на С++. Раньше в юнити можно было скрипты и на жопаскрипте писать, видать тоже производительный дохуя.
> список поделий на Юнити
Ясно всё с тобой.
Из заметных сложных и больших проектов в списке есть Cities Skyline, Escape from Tarkov, Genshin Impact. Это конечно не то ААААА уровня анрила, но это 3д выше среднего, которого на джавайе нету вовсе.
А джавана почему не используется как язык для скриптов для реализации логики, если рендеринг и физика написаны на С++?
>Из заметных сложных и больших проектов в списке есть Cities Skyline, Escape from Tarkov, Genshin Impact.
Симсити, какой-то долгострой который никто пока не видел, онлай дрочильня - охуенный набор чо.
>А джавана почему не используется как язык для скриптов для реализации логики, если рендеринг и физика написаны на С++?
Потому что выбор языка для скриптинга абсолютно рандомная вещь. У тебя есть разработчики движка которые с чем-то знакомы/что-то любят вот и пихают. Вон список игровых движков со скриптингом https://en.wikipedia.org/wiki/List_of_game_engines там такой зоопарк, кто во что горазд. Нет никакой разумной причины писать интерпретатор Си. Интерпретатор Си Карл! Кроме того, что разработчики хорошо знают и любят Си.
> охуенный набор чо.
А в чем конкретно претензия то? Я понимаю что говорю со школьником максималистом защищающим свой ограниченный клочок знаний, но приводить аргументы уровня нравится-ненравится это конечно мощно. А шарписты тут дегенарты получается (я не шарпист если что)
На джаве например только один проект получил мировое внимание. Но в нем модель человека состоит из 6 кубов и одной единственной текстуры 16x16
> выбор языка для скриптинга абсолютно рандомная вещь
Почему gdscript работает до 100 раз медленнее обвязки на C#, хотя бэкенд у них написан на C++?
Почему обвязки к C++ библиотекам работают с пропукиваниями и в полтора раза медленнее на джаве, чем на C#, и до 10 раз медленнее на котлине, если язык для скриптинга не важен? Raylib например. Про удобство синтаксиса я вообще молчу.
Почему за последние 10 лет появилось несколько полноценных 3д движков на C# (xenko, urhosharp например) с бэкэндом на C#, а на джаве 0? А для 2д и скриптинга еще больше (waveengine, flax, godot например). На джаве правда подобных инструментов вообще нет, жива только одна библиотека и два фреймворка которые утонули в легаси на 1.8.
Не похоже на абсолютно рандномную вещь.
Пессимистично конечно, жёстко, но такова современная картина мира за пределами компетенций спрингбут разработчика.
>>Почему за последние 10 лет появилось несколько полноценных 3д движков на C# (xenko, urhosharp например) с бэкэндом на C#, а на джаве 0?
Джава это про энтерпрайз и все усилия направлены на это. То что появляются какие то игровые движки на ней или хуита для гуя - скорее просто поделия энтузиастов.
>>жёстко, но такова современная картина мира за пределами компетенций спрингбут разработчика.
Мне как спринг бут разработчику даже в голову бы не пришло писать игру на джаве. Тут надо либо юнити изучать, либо какой нибудь рпгмейкер (или что там есть из популярного).
А то как фашисты уже - один язык, одна страна, один фюрер.
> А то как фашисты уже - один язык, одна страна, один фюрер.
Джаконда позиционировалась как язык общего назначения, но в итоге всё пришло к альтернативе пэхапэ с другим стеком. А тех кто хотел бы использовать язык по другому оракл послал нахуй. М$ в этом плане себя показали адекватней, развивая язык и платформу во всех направлениях. Байтоебля, веб, системщина, гуй... что разработчики из других сфер и не только увидели в нем применение.
Вся ставка оракла, привязаться к одной области, рискует быть проебана из за альтернативных и более удачных решений на рынке. Или форс мажорных. Что уже произошло с андроидом - его поделили котлин, флатер и юнити. И с пхп - джава, го и питон.
Не понимаю нахуй ты усираешься доказать что в гейдеве C# прижился и широко используется. Я с этим не спорил.
>>321720
>разве что в гейдеве все хорошо
Просто ты из популярности в гейдеве, решил сделать вывод про какой-то там перформанс C#. А вот тут ты как раз и обосрался. Во первых потому что не существует сферического перформанса в вакууме. Во вторых потому что его надо мерить, чтобы разговор был по существу.
Такие дела, дорого гейразраб.
Сферический перфоманс в вакууме это тесты с одного известного сайта, где результат + - тот же. А всё что я перечислял это наблюдения с реальных задач, которые сам и делал так то. И все перечисленные jvm проблемы наблюдал невооружённым взглядом.
>И все перечисленные jvm проблемы наблюдал невооружённым взглядом.
Не знаю, что ты там со своим косоглазием наблюдал, но единственное что ты смог высрать это список игр на юнити.
Больше нихера, ни ссылок на бенчмарки, нихера.
> Больше нихера, ни ссылок на бенчмарки, нихера.
Все что выше написано гуглица по каждому предложению. Ёмкие, тезисные ответы с мои опытом, которого у тебя не наблюдается.
Могу дать ссылки, могу опять бенчи написать, могу снять вебм, но уверен в ответ всегда будет этоненужно, яинеспорил и пр. И уже понятно что мы ни к чему не придем, потому все последние аргументы это твои личные чувства о играх на юнити.
>Все что выше написано гуглица по каждому предложению
Не можешь ссылки в тред запостить - иди нахуй, со своим "легко гуглиться".
https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/csharp.html синтетические тесты
Байндинги к с++. Можешь сам запустить.
https://github.com/ChrisDill/Raylib-cs-Examples C# 150к объектов 60 фпс
https://github.com/electronstudio/jaylib-example-project java 100к 40-50 фпс
https://github.com/electronstudio/kaylib kotlin
https://github.com/cart/godot3-bunnymark скриптовый язык
А в ответ опять будут виляния жопой вместо ответов.
test() {
...
self.saveWithTransaction(user);
...
}
и метод
@Transactional
User saveWithTransaction(User user) {
return userRepository.save(user);
}
Может быть так, что компилятор опустил вызов, и транзакция не началась?
Почему она может не сработать?
Не пойму как описать Set<>.
С List'ом понятно, а про Set чет не могу нарыть ничего. как с ним быть?
>синтетические тесты
Выглядит убедительно, а как начнешь копать понимаешь что делали такие же "эксперты" как и ты.
https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/fannkuchredux-csharpcore-8.html
https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/fannkuchredux-java-3.html
Взял первый. В .Net заюзали SSE, а в Java Vector API не стали. Прогрева никакого нет. Да что там прогрев, в .Net тредам выставили высокий приоритет, а в Java решили этого не делать. При этом во всю юзают не кроссплатформенные вещи - System.Runtime.Intrinsics.X86;
Если результат действительно поменяется когда эти условия выполняются, неплохо было бы увидеть результат, или лучше код чтобы это можно было проверить.
А другие не синтетические 4 ссылки копнешь по глубже? Там прогрева хватает и потоков вообще нет.
учусь там же, ебашу на ПП сейчас
вроде полет нормальный, за месяц кор осилил
на ПП очень тянет спиздить код с github у кого-нибудь
Заплати штраф лучше. Будет выгоднее, учитывая, что большая часть залетает на 150к+ net сразу
Это копия, сохраненная 2 августа 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.