Главная Настройка Mobile Контакты NSFW Каталог Пожертвования Купить пасскод Pics Adult Pics API Архив Реквест доски Каталог стикеров Реклама
Доски


[Ответить в тред] Ответить в тред

Check this out!


<<
[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 632 | 34 | 138

Java thread Аноним 14/04/18 Суб 17:00:28  1173657  
prestley.jpg (42Кб, 615x409)
prestley2.jpg (37Кб, 489x612)
prestley4.jpg (43Кб, 397x540)
прошлый https://2ch.hk/pr/res/1165567.html

Q: Поздно ли вкатываться в айти в 20/30/40/100 лет?

А: Нет, не поздно.

Q: Cобираюсь учить джаву по 2/5/20 часов в день. За сколько дней я выучу достаточно, чтобы зарабатывать фрилансом?

A: На джаве фриланса нет. Хочешь фрилансить — дуй в ПХП/раби/1С тред.

Q: Хули все книги на английском?

A: Без английского ты не нужен и можешь смело идти нахуй. Ну или в 1С-тред.

Q: Что скажете за джавараш?

Если вкатываешься с нуля, то можешь написать пару "хеллоу ворлдов" до 10 лвла. Дальше курс рассчитан на ленивых и не умеющих читать книжки людей. Количество говнокода зашкаливает, годных задачек пару штук на весь курс. В любом случае решать тебе.

https://github.com/qqqlll/Java-Thread/wiki
Аноним 14/04/18 Суб 17:39:49  1173679
146857391919715[...].jpg (33Кб, 400x300)
JHAuq9EezoZAMfw[...].jpg (59Кб, 1188x679)
а чё вы этого пидараса в хедер не поставите?
Аноним 14/04/18 Суб 18:49:37  1173705
>>1173679
Потому что он только на словах АХУЕННЫЙ кодер.
Помню как-то показали код сатаниста, так он проебался в двух строках, не поставив точки с запятыми.
Аноним 14/04/18 Суб 18:51:19  1173706
аноны
я написал код который поднимает сервер с потоками. Как я могу обезопасить свой комп, когда на пару часиков буду включать серв?
Аноним 14/04/18 Суб 18:52:02  1173708
>>1173706
а как ты сделал так что из инета можно к нему подрубаться?
Аноним 14/04/18 Суб 18:53:22  1173711
>>1173708
включил в настройках роутера определенный порт для онли моего компа.
Аноним 14/04/18 Суб 18:54:46  1173715
>>1173711
охуеть. мне тоже так надо. А где про это можно по читать?
Аноним 14/04/18 Суб 18:57:47  1173716
image.png (57Кб, 1236x535)
>>1173715
Если у тебя тп-линк, то напике показан пример. Если другой роутер, погугли "как открыть порт в настройках роутера"
Аноним 14/04/18 Суб 19:03:17  1173720
>>1173716
дак и по какому IP к тебе можно зайти?
Аноним 14/04/18 Суб 19:14:57  1173727
Вроде разобрался немного с языком, решаю задачи на кодварс 4лвла, дальше особо не получается, хочу как-то дальше развиваться, подскажите че смотреть, куда двигаться
Аноним 14/04/18 Суб 19:28:39  1173732
>>1173720
а зачем ко мне заходить? Я просто для интереса тут спрашиваю про настройку безопасности сервера
Аноним 14/04/18 Суб 20:15:05  1173761
>>1173706
Ну, если у тебя только один порт проброшен наружу, то что тут ещё можно обезопасить?
Аноним 14/04/18 Суб 20:18:36  1173764
>>1173761
я просто заядлый параноик. В дальнейшем хочу сделать для себя небольшой постоянный сервер, для данных и прочего. Где я могу почитать про его безопасность и прочее? (буду писать на джаве)
Аноним 14/04/18 Суб 20:40:30  1173778
>>1173764
В гугле, видимо.

Нет особой разницы - на джаве, не на джаве.
Лишние порты должны быть закрыты и т.п.
Это если выставляешь весь сервер наружу.

Если же изнутри, и проброшен 1 порт (http) - то и хорошо.
Используй SSL.
Сделай порт с нестандартным номером >1024.
Остальное зависит от сервера и его уязвимостей, если они есть.
А также от уязвимостей в твоём коде.

Если у тебя index.jsp с параметром zalupa=true форматирует диск, например, то это не очень хорошо.
И логи пиши. А потом - читай.
В том числе автоматически, с поиском подозрительных строк.

Система аутентификации должна банить клиента после N неудачных попыток.
И т.д. и т.п.

Если хочешь как у взрослых - гугли как сделать сервер в DMZ.
Хотя, не представляю, зачем.
Аноним 14/04/18 Суб 20:43:04  1173780
>>1173778
спасибо!
Аноним 14/04/18 Суб 20:44:36  1173782
Чуваки, посоветуйте годный ресурс для изучения небольших экзепляров чужого кода в целях повышения своих навыков.
Аноним 14/04/18 Суб 20:50:28  1173787
>>1173727
А у меня другая проблема: у меня не получается писать маленькие тесты. У меня одна функция тестирования может занимать несколько сотен строк кода и я понятия не имею как разбить это на несколько тестов, поскольку вызов одной функции в тестируемом объекте может изменить поведение другой. Правда из хорошего получается почти 100% покрытие кода тестами, однако сами тесты выглядят отвратительно.

И ещё не понятно: нужно ли писать дополнительные проверки на возвращаемое значение из библиотеки, если эта проверка (в случае правильности выполнения кода в библиотеке) никогда не будет выполняться.
Аноним 14/04/18 Суб 23:44:51  1173882
>>1173782
Гитхаб.
>>1173787
Открой для себя инкапсуляцию.
Аноним 14/04/18 Суб 23:46:29  1173884
>>1173882
> Открой для себя инкапсуляцию.
Это ты спизданул просто так, потому что не знал что ответить, но очень хотелось?
Аноним 14/04/18 Суб 23:51:35  1173886
>>1173884
Тупой пидорок, я тебе ответил, но ты слишком тупой, чтобы его понять. Хорошо, смилостивюсь над идиотом и поясню на пальцах для таких тупорылых идиотов как ты.

Тесты, неважно, юнит это или интеграционные (немного иначе с bdd, но суть та же) должны иметь три блока - подготовить запрос. Осуществить тестируемое действие. Проверить результат.
Если тестируется бизнес-логика, то действий и проверок результатов может быть много. При этом действие это действие над блекбоксом и проверка результата, а не хуйня с внутренней реализацией тестируемого компонента.
Впитывай, долбоеб.
Аноним 14/04/18 Суб 23:59:14  1173889
>>1173886
Ого какой агрессивный. Это ты, шизопомидорка с собеседованиями?
> . При этом действие это действие над блекбоксом и проверка результата, а не хуйня с внутренней реализацией тестируемого компонента.
Так ты ещё и читать не умеешь. Для проверки корректности работы блекбокса НУЖНО учитывать внутреннюю реализацию. Не будешь же ты тестировать функции объекта ниже исключительно по-отдельности?

public class Foo {
private boolean bar;

public Foo() {
bar = false;
}

public int method1(int a) {
int rv = bar ? a 2 : a;
bar = true;
return rv;
}

public int method2(int a) {
int rv = bar ? a
3 : a;
bar = false;
return rv;
}
}
Аноним 15/04/18 Вск 00:09:58  1173896
>>1173889
> Для проверки корректности работы блекбокса НУЖНО учитывать внутреннюю реализацию.
Не нужно. Твердо и четко.

Представь себе тестируемый класс, компонент или систему как китайскую комнату. На вход подаются таблички на китайском, на выходе их перевод на английском. Контракт соблюдается, тесты крутятся, бабло мутится, и вообще поебать сидит ли внутри комнаты китаец или что вообще там происходит.

> ниже
Ниже у тебя отвратительный пример мутабельного класса, чья внешняя функциональность зависит от совершенно не очевидного для окружающих внутреннего стейта. Не говоря уже о том, что не тредсейф нихуя. Это как если бы иногда вместо таблички с переводом, китайская комната отдавала табличку с джастин бибером потому что потому.
На вход такой комнаты нужно подать ведро мочи, поджечь комнату и повесить ее архитектора.
Аноним 15/04/18 Вск 12:42:04  1174118
В чем смысл приватных полей класса, когда есть геттеры и сеттеры?
Аноним 15/04/18 Вск 12:45:15  1174121
>>1174118
В том, что в геттерах и сеттерха ты можешь провести валидацию\обработку значений, прежде чем положить его в поле или прежде чем отдать его из поля.
Аноним 15/04/18 Вск 12:46:48  1174123
>>1174121
А с чем, по-твоему, работают эти геттеры и сеттеры?
Или ты что-то другое имел в виду?
Аноним 15/04/18 Вск 12:47:20  1174124
>>1174123
Это было вот сюда: >>1174118
Аноним 15/04/18 Вск 12:54:43  1174128
>>1174121
Это можно сделать независимо от модификатора доступа. Но если поле приватное, то, по идее, оно не должно как-то выходить за пределы класса, и изменяться, но гет/сет обходят это. Можешь пример ситуации привести, когда это необходимо?
Аноним 15/04/18 Вск 12:56:58  1174129
>>1174123
Другое. Поле private. Но при использовании экземпляра класса я, по сути, имею доступ к этому полю по гет/сет методам.
Аноним 15/04/18 Вск 13:37:29  1174148
Анончики, есть у кого-нибудь опенсорс проекты, чтобы для опыта поботрачить
Аноним 15/04/18 Вск 13:37:38  1174149
>>1174128
>Но если поле приватное, то, по идее, оно не должно как-то выходить за пределы класса, и изменяться, но гет/сет обходят это.
>Но при использовании экземпляра класса я, по сути, имею доступ к этому полю по гет/сет методам.

Смысл модификатора private не в этом.
Смысл его в том, что другие классы не могут иметь к нему _непосредственного_ (не контролируемого твоим классом) доступа.
А доступ через методы - не обязательно get/set - это нормально.
Потому, что это _контролируемый_ доступ, _специально_ сделанный, с некоей целью.

А то, что ты пытаешься сказать - просто не имеет смысла.
По такой логике приватные поля просто были бы бесполезны, т.к. не могли бы изменяться вообще.
Аноним 15/04/18 Вск 14:37:24  1174177
>>1174129
>>1174149
Более того - снаружи никто и не знает, что у тебя там есть какое-то приватное поле, и что геттер-сеттер меняют именно его. Там может быть что угодно - вычисления, обращение к бд, и т.п.
Так что приватное - оно и есть приватное.

Т.е. паблик методы - это внешний интерфейс класса.
А внутренние приватные поля - это детали реализации, которые могут меняться, но это никак не скажется на работе клиентов (внешних классов).
Аноним 15/04/18 Вск 14:58:55  1174203
смущение.gif (300Кб, 350x464)
Какую БД использовать в программе?
Аноним 15/04/18 Вск 14:59:45  1174204
>>1173705
Зато он Scala знает.
Аноним 15/04/18 Вск 15:02:44  1174207
>>1174203
>Какую БД использовать в программе?
Охуенный вопрос.
Самую лучшую, конечно.
Аноним 15/04/18 Вск 15:19:11  1174219
>>1174203
Ну и чего ты притих?
Требования какие?
Что хранить?
Аноним 15/04/18 Вск 16:35:31  1174270
>>1174121
это плохая практика - размазывать бизнес-логику по куче классов.
А так геттеры и сеттеры - если внезапно понадобиться многопоточная работа с этим классом - просто повесить syncronized на геттер и сеттер
Аноним 15/04/18 Вск 16:37:29  1174271
>>1174148
https://github.com/cray33/jnom

получение базы данных адресов из osm данных
Аноним 15/04/18 Вск 17:24:31  1174302
>>1174204
пруфы?
Аноним 15/04/18 Вск 17:37:33  1174312
>>1173720
127.0.0.1
Аноним 15/04/18 Вск 19:04:29  1174347
У меня есть две координаты, X и Y. И есть куча других координат, которые я получаю из интернета.
Как более удобней будет полученный лист отсортировать по наиболее подходящим к первоначальным координатам?
Аноним 15/04/18 Вск 19:24:20  1174362
>>1174347
сравниваешь дельту между x и элементом листа
Аноним 15/04/18 Вск 19:48:34  1174379
>>1174203
Подходящую.
Аноним 15/04/18 Вск 20:02:04  1174387
>>1174118
Смысл нет - это просто культ Карго.
Аноним 15/04/18 Вск 20:02:11  1174388
>>1174362
Не совсем понял
Аноним 15/04/18 Вск 21:36:38  1174502
>>1173657 (OP)
Пасаны, расскажите, как устраивались джуниками. Какие вопросы, какая зп, какие первые задания были?
Аноним 15/04/18 Вск 21:45:50  1174513
>>1174502
Никакие, никакая, никакие. Иди дальше, добрый человек.
Аноним 15/04/18 Вск 21:50:32  1174520
>>1174513
Ну зачем ты здесь напердел?
Аноним 15/04/18 Вск 22:01:42  1174533
>>1174271
ты пишешь ?
Аноним 15/04/18 Вск 22:36:39  1174548
>>1174388
Отсортируй по расстоянию, наркоман. В чем проблема?
Аноним 15/04/18 Вск 22:43:57  1174553
>>1174520
Тебе в лицо.
Аноним 15/04/18 Вск 23:11:22  1174575
>>1174347
Две координаты - это точка.
Сделай функцию для вычисление расстояния между двумя точками на плоскости.
Сделай компаратор (на базе исходной точки), который в своём compare(p1, p2) сравнивал бы расстояние от обеих точек до исходной, и выдавал бы соотв. результат.
Отсортируй список с этим компаратором.

Можешь использовать для всего этого стрим, если умеешь.
Someone someone 16/04/18 Пнд 07:41:41  1174731
>>1174129
private поле используется для переменных, которые ты не хочешь показывать за пределами класса. Не обязательно подразумевается, что кто-то может запрашивать его через геттер/сеттер, или через оба.
Аноним 16/04/18 Пнд 09:23:24  1174777
>>1174575
Ok
Аноним 16/04/18 Пнд 10:30:18  1174798
Книжка Хабибулина хороша?
Аноним 16/04/18 Пнд 14:04:03  1174896
>>1174502
Бамп вопросу
Аноним 16/04/18 Пнд 15:44:24  1174946
Ответьте одним словом про Бугаенко. Он пиздобол?
Аноним 16/04/18 Пнд 15:46:32  1174949
Снимок.PNG (35Кб, 660x278)
Зачем обрамлять в скобки со static куски кода со статичскими переменными? Что это дает ?? Там же и так статические переменные
Аноним 16/04/18 Пнд 15:56:24  1174950
>>1174946
Егорка-долбоеб.
Аноним 16/04/18 Пнд 16:11:16  1174961
>>1174949
Почему джавапитухи любят так делать скобки, что они открывающая и закрывающая не находятся друг под другом?
Аноним 16/04/18 Пнд 16:20:06  1174965
>>1174961
Потому что это прерогатива сиопущенцов
Аноним 16/04/18 Пнд 21:25:38  1175095
>>1174949
Это static initializers. Можешь погуглить.
Это не "переменные", а _исполняемый_ код.
Там может быть что угодно.
Например, сложная инициализация переменных, создание списков или map и т.д.

Этот код выполняется при первом обращении к классу.
Можешь думать, что это такой конструктор, но для класса как модуля (статические члены), а не для экземпляра объекта этого класса.
Аноним 16/04/18 Пнд 21:29:21  1175100
>>1174965
Да даже на си так нормальные люди не пишут.
Это, скорее, плюсоёбы так онанируют.
Аноним 17/04/18 Втр 00:08:02  1175163
>>1175095
конструкторы вызываются в последнюю очередь, поэтому такая аналогия будет губительной для понимимания
Аноним 17/04/18 Втр 00:54:17  1175177
>>1175163
В смысле?

Это статический инициализатор (или несколько).
Конструктор - тоже инициализатор.
Но, инициализируют они разные вещи (и по-разному).

Java класс - это два в одном - модуль (набор переменных и функций) и класс (шаблон объекта).

Модуль - это статическая часть. Просто набор переменных и функций, имеющих что-то общее.
Класс - то, что определяет поведение создаваемых (new) объектов-экземпляров.

Общее у них то, что в статической части класса есть доступ ко всем не-статическим членам класса, в том числе приватным. Т.е. если в статический метод класса передать экземпляр объекта этого класса, то там можно с ним сделать то, что "снаружи" сделать нельзя.

Больше ничего общего у этих двух частей нет.
Аноним 17/04/18 Втр 01:00:46  1175181
>>1175177
И да, из "классовой" части, естественно, есть доступ к статическим членам. И, вполне логично, что они должны быть проинициализированы до того, как будет создан первый экземпляр класса.

И, если первым обращением к классу является вызов конструктора (new), то статические инициализаторы будут выполнены перед тем, как будет выполнен конструктор.
И это логично и интуитивно понятно.
Аноним 17/04/18 Втр 10:14:19  1175271
>>1174961
Чтобы не тратить строчку ни на что и не делать зрительный разрыв между сигнатурой функции и ее телом, сисярподебил.
Аноним 17/04/18 Втр 15:14:41  1175351
repo.spring.io забанили, пацаны. Сидим в опенспейсе с пацанами рофлим.
Аноним 17/04/18 Втр 15:59:08  1175397
Зачем нужны лямбда выражения в Java?
Ведь строго говоря это просто синтаксический сахар,
Аноним 17/04/18 Втр 16:01:17  1175399
>>1175397
следование за модой
Аноним 17/04/18 Втр 16:32:45  1175418
>>1175397
>Ведь строго говоря это просто синтаксический сахар,
Мы вам перезвоним.
Аноним 17/04/18 Втр 16:48:03  1175434
Посоветуйте хороших статей или видео о проектировании на Java.
Что б отвечать на вопросы типа: как бы вы спроектировали Убер
Аноним 17/04/18 Втр 17:04:06  1175454
>>1175418
почему на эту фразу у собеседующих бомбит?
Аноним 17/04/18 Втр 17:47:32  1175557
>>1175434
«Этот вопрос не относится к списку профессиональных навыков, заявленных в тексте вакансии. Имею право не отвечать».
Аноним 17/04/18 Втр 17:48:05  1175561
>>1175557
мы вам перезвоним
Аноним 17/04/18 Втр 18:04:51  1175584
Зачем люди создают коллекции вот так?

List<Person> nums = new ArrayList<>();

Почему нельзя писать так:

ArrayList<Person> nums = new ArrayList<>();
Аноним 17/04/18 Втр 18:12:45  1175589
>>1175584
Так можно писать.

Но, объявив это как более общий тип, ты можешь в дальнейшем поменять реализацию.
Или использовать Collections.emptyList(), или ещё что-нибудь.

В простых программах это кажется избыточным.
Но, это вопрос стиля.
Или его отсутствия.
Аноним 17/04/18 Втр 18:17:18  1175592
Вы просто сборище даунов, вы на элементарный вопрос ответить не можете "Какую БД брать?".
Аноним 17/04/18 Втр 18:20:38  1175593
>>1175592
>Какую БД брать?

Бери такую, чтобы в руке хорошо лежала.
Аноним 17/04/18 Втр 20:43:39  1175642
Здрарова, джаваны. Посоветуйте, как или хотя бы с какой стороны подойти к решению задачи.

Нужно считать и создать объекты класса из JSON файла.
Объекты классов bigCar и smallCar, унаследованные от абстрактного Car. Проблема в том, что в JSON могут быть объекты обоих этих классов и какой это класс решат сочетание значений полей maxPassengers и trunkSize.
Надеюсь, понятно расписал. То есть мне в процессе парсинга джейсона надо как-то смотреть на значения этих полей и в зависимости от них создавать уже нужный объект.
Прошу совета.
Аноним 17/04/18 Втр 20:48:04  1175646
>>1175642
Не надо делать наследование классов данных, прежде всего.

>в процессе парсинга джейсона надо как-то смотреть на значения этих полей и в зависимости от них создавать уже нужный объект.
Вот так и делай, лол.

А нормально - надо делать свой протокол поверх json - с типами и дженериками.
Чтобы не ебать мозги ни себе ни людям.
Аноним 17/04/18 Втр 21:07:07  1175660
>>1175642
Алсо, такая объектная модель - это вообще пиздос.
Так в принципе делать не надо, и дело даже не в наследовании.

Такие вещи надо свойствами как-то делать, а не выдавать тугую струю классов на каждый пук.
Аноним 17/04/18 Втр 21:17:35  1175667
>>1175642
В таком формате никак. Во-первых, в жсоне никаких типов нет, сериализатор в душе не ебет, что там надо создавать. Во-вторых, с хера ли у тебя семейство типов базируется на значении атрибута? Нужен всего один класс с двумя методами isBig()\isSmall()
Аноним 17/04/18 Втр 21:17:36  1175668
>>1175660
>>1175646

Сорян, я пока учусь. Можешь все-таки что-то посоветовать в моём случае? Сейчас читаю про gson, но в большинстве статей описывается типичная изи десериализация из двух строчек кода. Думаю, надо официальную документацию почитать, но реализуемо ли вообще то, что мне нужно с gson или что-то другое смотреть?
Аноним 17/04/18 Втр 21:24:41  1175674
>>1175660
Два чаю. Если нужно сериализовать Json с неизвестными заранее полями (например если список нужных полей отправляется в качестве аргумента для API), то пихаю Map<String, Object>. Но вот такого, что заранее неизвестно что при вызове вернёт Json ещё не было. Правда у меня Java приложения Json особо и не получают, в основном всё на xml.
>>1175668
Jackson можно использовать в качестве токенайзера. Тогда ты сам, ручками проверяешь каждый токен и строишь нужный объект. А вообще лучше десериализуй Json в HashMap<String, Object> и уже его передай в фабрику, которая и отдаст нужный элемент.
Аноним 17/04/18 Втр 21:26:09  1175675
>>1175589

Это не вопрос стиля. Нас не интересует конкретная реализация списка, нас интересует обобщенный список, который, допустим, позволяет итерировать по содержимому. Объявляя конкретный тип, ты связываешь себе руки, так как завтра выяснится, что ArrayList тебе не подходит, а нужен например стек или очередь, и ты будешь две недели вылавливать все места с конкретной реализацией, а потом еще две недели хавать баги.

А обобщенный тип позволяет менять реализацию безболезненно. Поэтому лучше завести себе привычку и постоянно повторять "детали реализации должны быть скрыты от клиента".
Аноним 17/04/18 Втр 21:29:01  1175676
>>1175675
так конкретная реализация остаётся. Но она становится неизвестна
Аноним 17/04/18 Втр 21:30:29  1175677
>>1175676
> Но она становится неизвестна
С чего бы это? Есть же рефлексия.
Аноним 17/04/18 Втр 21:31:59  1175680
>>1175677
неизвестна для тебя. Ты добровольно выкидываешь из кода важную информацию
Аноним 17/04/18 Втр 21:33:28  1175682
Ещё пример - из ConcurrentHashMap делать Map. И пойди догадайся, что это за мапа и потокобезопасна ли она
Аноним 17/04/18 Втр 21:37:25  1175684
>>1175676

об этом и речь. для кода, где этот список используется, достаточно знать, что это какой-то там список, больше этого ему знать не следует.
Аноним 17/04/18 Втр 21:41:29  1175685
пошли все на хуй, уёбки
Аноним 17/04/18 Втр 21:43:39  1175687
>>1175680
> выкидываешь из кода важную информацию

Важную в контексте чего?

> Ещё пример - из ConcurrentHashMap делать Map. И пойди догадайся, что это за мапа и потокобезопасна ли она

Тут надо задать вопрос, насколько релевантна тебе потокобезопасность. Если это обязательно, то разумеется сигнатуры надо объявлять так, чтобы потоконебезопасный тип передать было невозможно. А если требуется просто словарь, то ограничиваться ConcurrentHashMap не стоит, т.к. клиенту лишняя работа, не относящаяся к делу. Ну и если это чужой код тебе передает, то следует исходить из потоконебезопасности и может даже явно копировать в ConcurrentHashMap, т.к. сегодня они тебе передали одно, а завтра что-то другое, и оправдания типа "оно упало, потому что меня вызвали с не тем типом" звучат как-то неубедительно.
Аноним 17/04/18 Втр 21:46:42  1175689
>>1175687
>Важную в контексте чего?
в контексте реализации и свойств. Сортируются ли значения. Выкидываются ли дубликаты. Допустимы ли null значения
Аноним 17/04/18 Втр 21:58:24  1175697
>>1175689

Это важно в конкретных контекстах, см. выше пример с ConcurrentHashMap, в таких случаях да, указывай конкретный тип. А List используй так же, как interface.
Аноним 17/04/18 Втр 21:58:51  1175698
>>1175675
>Поэтому лучше завести себе привычку
Это и называется "стиль", лол.
Аноним 17/04/18 Втр 22:05:10  1175700
>>1175682
Смысл в том, что ты используешь абстрактные List или Map в тех случаях, когда тебе именно что _не_важно_, какой там будет конкретный класс.
А когда важно - используешь более специализированные объявления.
Что тут непонятного?

В общем случае - нужно стараться максимально скрыть детали реализации и ограничиться абстрактным интерфейсом.
Аноним 17/04/18 Втр 22:12:07  1175702
>>1175698

Ну ок, пусть будет стиль.
Аноним 17/04/18 Втр 22:14:31  1175704
Аноны, только начал изучать многопоточность. Столкнулся с такой проблемой:
https://pastebin.com/pRcV1amm
Вот какого хуя оно так работает?
Аноним 17/04/18 Втр 22:18:55  1175707
>>1175704
Потому что главный поток не ожидает завершения всех остальных и сразу выходит из программы. Сохрани все msSecondThread в массив, а потом после цикла с вызовами вызови у всех метод join.
Аноним 17/04/18 Втр 22:19:13  1175708
>>1175704
а что ты хочешь? Оно выполняется параллельно, а не последовательно
Аноним 17/04/18 Втр 22:21:52  1175710
>>1175707
что значит все в msSecondThread? Переменную i, или что?
Аноним 17/04/18 Втр 22:23:09  1175711
>>1175710
Массив сделай для потоков. Стартани каждый. Потом сделай join на каждом.
Аноним 17/04/18 Втр 22:23:36  1175712
>>1175710
Сами объекты Thread. Если тебе просто нужно ожидать окончание работы треда, то нужно вызвать метод join у него. Но делать это надо после того как стартанёшь все треды, иначе смысла в многопоточности не будет. Потому все запущенные треды и надо сохранить в массив, а после того как все запустил уже и можно их ждать.
Аноним 17/04/18 Втр 22:25:21  1175714
>>1175704
>class AffableThread extends Thread
Вместо этого - implements Runnable.

Каждый раз - новый AffableThread.
А лучше - просто используй лямбду:
new Thread(() -> {...});

В конце надо бы подождать завершения потоков, наверное (не обязательно).

И что тебе не нравится?
Что выполняются не по порядку? Это нормально.
Для этого есть приоритеты, но, и они не гарантируют. Так что, если действительно важен порядок - придётся поебстись. И это хороший повод задуматься - правильно ли ты поставил задачу?
Аноним 17/04/18 Втр 22:35:07  1175722
>>1175714
Чето типо такого?:
new Thread (() -> {System.out.println("Привет из побочного потока!"+Thread.currentThread().getName());});
>>1175711
>>1175712
>>1175707
Я почитал про это, я в будущем хочу что-бы кол-во тредов можно было вводить в строке. Наверное это мне не подоходит
Аноним 17/04/18 Втр 22:36:44  1175724
>>1175722
> Наверное это мне не подоходит
Вместо массива можно использовать ArrayList.
Аноним 17/04/18 Втр 22:39:01  1175726
>>1175714
Анон, я понял как через лямбду:
new Thread (() -> {System.out.println("Привет из побочного потока!"+Thread.currentThread().getName());}).start();
Но у меня все равно "Главный поток завершен..." в начале высвечивается

Главный поток завершён...
Привет из побочного потока!Thread-2
Привет из побочного потока!...
>>1175724
То есть ты имеешь ввиду, что нужно записывать .getName() в список?
Аноним 17/04/18 Втр 22:46:42  1175733
>>1175726
> То есть ты имеешь ввиду, что нужно записывать .getName() в список?
Тут видимо легче показать, чем объяснить.
https://ideone.com/wIQ7wZ
Аноним 17/04/18 Втр 22:57:13  1175744
>>1175726
> Но у меня все равно "Главный поток завершен..." в начале

Так и должно быть. Про лямбду я не к этому написал, а вообще.
Потоки - они выполняются _параллельно_.

Главный поток отрабатывает очень (очень!) быстро, и сразу завершается (запустив другие).
Сам он ждать не будет - ты же не просил его ждать. См. в примере выше про join.

Для натуральности - добавь Thread.sleep(50) в лямбду (придётся засунуть в try|catch). Т.к. реальные потоки у тебя же что-то делать должены, в течение некоторого времени (или постоянно).

Аноним 17/04/18 Втр 23:14:44  1175754
>>1175584
Потому что программируйте на уровне интерфейсов, а не реализаций.
Аноним 17/04/18 Втр 23:17:49  1175757
>>1175726
И да, "if ( i== 5) " там совершенно лишнее.
IDEA тебе бы подсветила это место с комментарием типа "здесь i всегда = 5".

Также, могу тебе посоветовать посмотреть в сторону более высокоуровневых инструментов для многопоточности в java - пакет java.util.concurrent и т.п.
Потому, что работа с голыми потоками - это может быть довольно заёбисто, если делать что-то сложнее хелловорлда.

И особенно - CompletableFuture.
Очень возможно, что именно это тебе и нужно.
Аноним 17/04/18 Втр 23:21:56  1175758
>>1175757
> И особенно - CompletableFuture.
Лучше уж пусть изучает Reactor. Тот же Mono в сто раз удобней.
Аноним 17/04/18 Втр 23:36:29  1175771
>>1175758
Одно другому не мешает.

И для относительно простых вещей CompletableFuture - просто охуенно.
И если научился - потом переход на всякие Rx'ы и реакторы будет простым и естественным.

Иначе - можно сразу ничего не понять и дропнуть.
Аноним 18/04/18 Срд 00:24:17  1175793
>>1175674
>>1175667
А что, если мб так. Создать pojo класс, стандартными методами gson десериализировать все в массив объектов этого pojo класса. А потом пройтись циклом по этому массиву и создать уже нормальные объекты.
Аноним 18/04/18 Срд 00:56:13  1175797
>>1175793
Ну, так >>1175674 тебе и написал:
>А вообще лучше десериализуй Json в HashMap<String, Object> и уже его передай в фабрику, которая и отдаст нужный элемент.
Аноним 18/04/18 Срд 01:04:00  1175800
>>1175797
Ага, спасибо. Только, честно говоря, не совсем понимаю, зачем HashMap тут. Думал обычным списком или массивом обойтись.
Аноним 18/04/18 Срд 01:13:53  1175804
>>1175800
HashMap<String, Object> - это твои объекты, вместо PoJo.
Какой смысл делать ещё какой-то pojo, если, по сути, сырой json-объект - это Map?
Аноним 18/04/18 Срд 02:00:59  1175815
>>1175804
Можешь объяснить, что куда должно замапиться?
Весь JSON записывается в String? Или String - это название поля, а Object - это значение? Что, если у меня много объектов в JSONе? Честно не могу врубиться и не получается этот подход нагуглить.
Аноним 18/04/18 Срд 02:21:09  1175819
>>1175815
> Честно не могу врубиться и не получается этот подход нагуглить.
Используй кастомный десериализатор (регистрируй его для интерейса) и не парься. https://www.google.com/search?q=java+gson+custom+deserializer
Аноним 18/04/18 Срд 02:22:59  1175820
>>1175815
Объект - это набор свойств.
Свойство - это имя (String) и значение (Object).
Map<String, Object> -  это объект.
В JavaScript - это даже буквально так и есть, например.
Отсюда и JSON - JavaScript Object Notation.

Много объектов - много Map (список, например).

Скорее всего и весь твой json целиком - это тоже Map. В котором, например, есть свойство cars, значением которого будет List<Map<String, Object>> - список (потенциальных) объектов car.

Как это сделать в gson - я не знаю, т.к. им не пользуюсь (не люблю гуглоподелия, лол).
Но, любой парсер json, как мне кажется, по умолчанию тупо парсит json как Map,  в котором есть списки, другие Map и примитивные свойства. Т.е., как написано в json, так и парсит.

Если ты сам решаешь, каким будет формат файла - добавь туда метаданные - информацию о типах объектов в файле. В удобном тебе формате. И тогда сможешь делать автоматическое превращение List<Map> -> List<CarXxx>. BeanUtils используй или своё что-то сделай на рефлекшн.
Аноним 18/04/18 Срд 02:26:07  1175821
>>1175820
> Но, любой парсер json, как мне кажется, по умолчанию тупо парсит json как Map
Не. Сейчас все парсят сразу в объекты, а если что-то не получается уже созданные объекты выбрасываются и вываливается ошибка. Так максимально пирформансно же.
Аноним 18/04/18 Срд 02:29:56  1175822
>>1175821
> Так максимально пирформансно же.
Т.е. надо заранее знать типы?
В рантайме определять не получится?

Я вообще мало json использую, и у меня есть своя библиотека, с блекджеком и шлюхами. Смотрел gson и нашёл его бессмысленным. Хотя, возможно, он и высокопроизводительный, но мне нужно другое.
Аноним 18/04/18 Срд 02:33:00  1175825
>>1175822
> Т.е. надо заранее знать типы?
Там все объекты атрибутами развешивают, чтобы парсер мог понять что и как. Если атрибудтов недостаточно, то пишут свой десериализатор для конкретного класса. Когда встречается этот класс, то этот десериализатор и вызывается.
Аноним 18/04/18 Срд 02:43:27  1175829
>>1175825
>Когда встречается этот класс
А как узнать, когда он встречается?
Что вот эта вот хуета - это именно это класс?
В json добавляются метаданные?

Приведу пример:
Есть такой json - {"tuple": [1, "a", 33.3]}.
Я хочу, чтобы это стал объект Tuple3<Integer, String, Double>.
А не List<Object>, как может кому-то показаться.
И что?

Аноним 18/04/18 Срд 02:50:40  1175833
>>1175829
> А как узнать, когда он встречается?
Рефлексия. Там где рефлексия не работает (контейнер), то атрибуты.
Аноним 18/04/18 Срд 02:51:48  1175836
>>1175829
> В json добавляются метаданные?
Ты изначально даёшь класс, который определяет каким образом надо десериализовать root-элемент.
Аноним 18/04/18 Срд 03:04:20  1175840
>>1175836
Да, я так и понял.
И это, в общем случае, нормально.

Но, мне нужно было сделать так, чтобы тип определялся в рантайме - чтобы можно было восстановить список разнотипных сложных объектов, включая коллекции с дженериками.
Единственный способ это сделать - добавить данные о типах в json, и затем в десериализаторе с этим работать.

И, насколько я понял, gson для таких вещей бесполезен.
Аноним 18/04/18 Срд 08:21:24  1175904
Подкиньте где максимально понятно написано про геттеры/сеттеры?
Аноним 18/04/18 Срд 09:35:44  1175929
>>1175904
Если ты не можешь так понять про геттеры и сеттеры, то либо ты слишком имбецил, либо программирование просто не твое.
Аноним 18/04/18 Срд 16:19:25  1176038
>>1175904
ненужны
Аноним 18/04/18 Срд 19:08:45  1176164
Там это самое, maven репозиторий заблокировали!
Аноним 18/04/18 Срд 19:23:03  1176175
точнее сайт
Аноним 18/04/18 Срд 20:27:24  1176227
>>1176164
>>1176175
Ну как проголосовал за Пыню?
Аноним 18/04/18 Срд 21:08:29  1176259
>>1176227
Вот у нас не понимают, что заблокировали половину адресов Амазона в России США и госдепартамент... Этого не понимают... Думаю, что это сделал Путин!
Аноним 19/04/18 Чтв 03:52:18  1176453
S80419-07400861.jpg (22Кб, 512x333)
>>1173657 (OP)
Сап, программач. Толи я тупой, толи аффтор учебника что-то не договаривает. Объясните мне пожалуйста зачем тут переприсваевается переменная. Разве не легче сразу i использовать?
Аноним 19/04/18 Чтв 03:54:30  1176454
>>1176453
Попробуй переписать код с использованием переменной i. Конечно, если тебя не смущает, что она доступна только в конструкторе.
Аноним 19/04/18 Чтв 11:34:19  1176546
Снимок.PNG (16Кб, 641x344)
Можно спокойно создавать дженерик классы без даймонд оператора?
Зачем он тогда вообще нужен??
Аноним 19/04/18 Чтв 11:37:23  1176548
>>1176453
Это конструктор для формирования экземпляра класса NonGen,
в него поступает переменная i и после она присваиватся полю num
Аноним 19/04/18 Чтв 11:43:06  1176554
Актуальная ли еще эта книга
Гранд М. - Шаблоны проектирования в Java - 2004
если она 2004го года?
Аноним 19/04/18 Чтв 12:23:15  1176577
>>1176546
Добавь строчку
SimpleTriple<String> b = a;
Аноним 19/04/18 Чтв 13:28:32  1176612
Снимок.PNG (22Кб, 532x486)
>>1176577
ну добавил
и чего?
Аноним 19/04/18 Чтв 14:49:21  1176661
>>1176612
А то что у тебя варниг с какого хуя слева стринг, а справа хуй знает что.
Аноним 19/04/18 Чтв 14:54:56  1176664
>>1176612
Странно, что компилятор не показывает ошибку, а только предупреждение. Может от версии java зависит, а может я уже просто забыл о таком поведении.

У тебя переменая a имеет тип SimpleTriple<Object>, а не SimpleTriple<String>.
Даймонд нужен, чтоб не писать тип, когда с лева он уже определен:
SimpleTriple<String> s = new SimpleTriple<>(...);
Аноним 19/04/18 Чтв 17:14:00  1176769
Снимок.PNG (24Кб, 587x582)
>>1176661
>>1176664
у меня даже варнинга нет, это было просто выделение текста в нет бинс,
а вообще я когда кожу никогда на варнинги не смотрю, нах надо, главное что б запускалось и выдавало что нужно

Аноним 19/04/18 Чтв 18:22:18  1176816
>>1176546
он нужен для проверки типов, без него у тебя фактически SimpleTriple<Object>, т.е. можешь не только String добавлять, а все что угодно
Аноним 19/04/18 Чтв 18:55:33  1176838
>>1176546
>Зачем он тогда вообще нужен??

Даймонд - это не для создания, а для объявления типов.

Аноним 19/04/18 Чтв 19:36:03  1176864
>>1176554
Дженерики в джаве появились как раз в 2004-м - в Java 5.
И автобоксинг/анбоксинг тогда же.
Это принципиальные изменения, в том числе с точки зрения паттернов.
После этих изменений джава стала нормальным языком.

Так что, если у тебя _русское_ издание 2004 года, то там, скорее всего, этого нет. Посмотри год издания оригинала и какая версия джава используется.
Аноним 20/04/18 Птн 11:39:48  1177127
Снимок.PNG (10Кб, 267x292)
Снимок2.PNG (37Кб, 909x654)
Снимок3.PNG (41Кб, 1014x709)
Снимок4.PNG (3Кб, 586x394)
Аноны, кто разбирается в Swing, помогите, плиз.
Мне нужно написать программу,
рисующую 12 фигур разного цвета с разными координатами. Тип фигуры (эллипс, прямоугольник, линия), цвет и расположение выбираются случайным образом. Всякий раз, когда вы изменяете размер фрейма, картинка меняется на новую. Линии должны быть толстенькие.

Ограничение: Вызов метода g2.draw() в тексте программы написан только один раз. Массивы и прочие коллекции не применяйте.

Должно быть что-то типа 1го пика,
во-первых я так и не понял как менять backgroundcolor для JPanel, там какие-то сложности с прозрачностью итд,
потом я не очень понимаю, почему мой код вместо того чтобы рисовать 12 рандомных фигур рандомного цвета выдает 4ый пик,
пусть даже пока что я не поставил им рандомные координаты, но каждый раз стабильно рисуется 1 черная линия и всё,


https://pastebin.com/zA1GuCtM
Аноним 20/04/18 Птн 12:04:15  1177156
>>1177127
рисователь вкатился в тред.
рекомендую поковырять Processing
оч пиздатая рисовалка
Аноним 20/04/18 Птн 12:11:49  1177159
>>1177156
>Processing
а что это вообще и как это найти?
Аноним 20/04/18 Птн 12:13:30  1177162
>>1177159
постить сюда ссылки это моветон. просто пишешь в гугле и методом логической дедукции попадаешь на нужный ресурс.
что там хорошо - там уже всё подготовлено для рисования и узнаешь базовые принципы по обработки иветов етк
Аноним 20/04/18 Птн 18:24:54  1177340
>>1177162
>постить сюда ссылки это моветон.
с каких пор?
Аноним 20/04/18 Птн 18:26:47  1177341
Почему нельзя в одном file.java объявлять 2 публичных класса, но можно с любым другим модификатором доступа?
И еще, я видел видео на ютубе, которое запостили в 2013м году, где человек как раз создает публичный класс в одном файле с уже имеющимся публичным классом,
получается в предыдущих версиях Java так делать было можно?
Аноним 20/04/18 Птн 20:52:10  1177403
>>1177341
>в одном file.java объявлять 2 класса
Не надо так делать.
Независимо от публичности-приватности.

Ньюфагам это, обычно кажется хорошей идеей.
Ну так, на то они и ньюфаги, лол.

Если очень надо - сделай один модуль (публичный класс, имеющий только статические члены), и в нём объяви другие (вложенные) статик классы, с нужными модификаторами доступа.
Аноним 21/04/18 Суб 06:45:14  1177600
>>1177403
Так почему не надо так делать-то?
Какие в пользу этого аргументы?
Аноним 21/04/18 Суб 10:00:11  1177625
>>1177600
Потоу что в итоге все равно будут разные класс-файлы и выгоды от этого нет.
Аноним 21/04/18 Суб 11:24:53  1177648
Актуальна ли еще лекция 15го года про многопоточность?

https://www.youtube.com/watch?v=dLDhB6SRXzw
Аноним 21/04/18 Суб 12:31:19  1177672
>>1177648
Актуальна.
Аноним 21/04/18 Суб 12:37:16  1177680
>>1177600
Структурирование кода.
По тем же причинам рекомендуют разбивать большой метод на несколько функций и т.д.

Близкие по смыслу классы помещаются в один пакет (а не файл).
Иерархия пакетов может быть сколь угодно сложной, но злоупотреблять этим не нужно.

А ньюфагу кажется, что несколько мелких файлов - это сложнее, чем один большой.
Но, на то он и ньюфаг.
Аноним 21/04/18 Суб 16:35:57  1177779
Поясните за @Override. Есть класс Car, в нем несколько переменных которые я хочу вывести с помощью println(). Переопределил метод toString(), откуда println() знает что в классе Car есть overrided метод и нужно юзать его а не тот что в классе Object?
Аноним 21/04/18 Суб 16:51:01  1177800
>>1177779
> @Override
Указывает конпелятору, что метод под ним должен переопределять виртуальную функцию. По факту переопределение происходит по совпадению сигнатуры (т.е. должны совпадать название, типы и количество аргументов и тип возвращаемого значения), а @Override нужен только для контроля и его можно не указывать вообще.
Аноним 21/04/18 Суб 16:54:52  1177801
Поясните за жопаэль.
Аноним 21/04/18 Суб 19:22:27  1177861
>>1177779
>откуда println() знает
Он ничего не знает.
Он вызывает метод toString() данного объекта.
При этом срабатывает именно переопределённый метод.

Почему?
Потому, что так устроена Java и вообще ООП.
https://www.geeksforgeeks.org/dynamic-method-dispatch-runtime-polymorphism-java/

Аноним 21/04/18 Суб 19:26:02  1177863
Почему я такой тупой и не могу запрограммировать алгоритм минимакса для игры в крестики-нолики?
Аноним 21/04/18 Суб 19:35:47  1177864
Я нюфаг и мне дали задание на первой лекции тренингов, почти все сделал, но осталось последнее задание, которое реализовать не получается:
Имплементировать метод, с помощью которого в армию добавляется новый отряд. Если армия уже укомплектована, должно выводится соответствующее сообщение на экран. Необходимо убедится, что отряды не повторяются, в противном случае вывести сообщение.

Мю у кого-то идеи есть, как это сделать? Как вообще дать возможность клиенту добавлять отряды? Пока наткнулся на enum и загнал их туда, а что делать я не знаю.

public enum Units {
SWORDSMEN(300), ARCHERS(200), CAVALRY(500), DRAGONS(1000), MAGES(800), ARTILLERY(500);
private int price;
Units (int price){
this.price=price;
}
public int getPrice() {
return price;
}
}
Аноним 21/04/18 Суб 19:42:46  1177867
>>1177864
Если проще, то клиент может собрать армию из списка отрядов и потом подсчитывается стоимость армии, но дублировать отряды нельзя.
Аноним 21/04/18 Суб 20:03:56  1177875
>>1177864
https://ideone.com/v1eumq
Аноним 21/04/18 Суб 22:01:30  1177928
>>1177863
Бляя, еще и на паттернах не смог. Почему же я такой тупой.
Аноним 21/04/18 Суб 22:10:53  1177937
>>1177928
Решение от балды: проверяешь все четыре направления перебором. Если нет вражеского символа на линии - вставляешь свой в свободную ячейку
Аноним 21/04/18 Суб 22:15:13  1177940
>>1177937
Да алгоритмы то я уже придумал. Но что-то никак в них не въеду.
Аноним 22/04/18 Вск 01:40:48  1178081
>>1177863
А я сделал минимакс без проблем. Наверное просто программирование не твое.
>>1177937
А если есть, то выбрасывать исключение и завершать работу? Писать тик так то для чего-то, кроме минимакса, это простая всрача времени.
Аноним 22/04/18 Вск 12:52:05  1178174
>>1173657 (OP)
Подскажите, как создать персонажа с характеристиками взаимодействия с виртуальной средой, какие надо бубны практиковать? Как дописывать, если я что-то по ходовой придумал и как эту ебалу запилить, чтобы она заработала?
Аноним 22/04/18 Вск 13:54:23  1178193
>>1178174
Чоблять? Ты там движок игори пишешь что ли? На джаве? Ты там совсем ебанулся, или совсем ебанулся?

Пиздуй юнити трогать.
Аноним 23/04/18 Пнд 11:38:50  1178221
Замечали ли вы, что программисты на Java более инфантильны, чем разработчики на других языках? Это объясняется тем, что в Джаве сделано за вас все, что бы вы не могли "выстрелить себе в ногу", то есть вас , как детей, изначально отгораживают от потенциально совершенных ошибок, думают за вас, потому что разработчикам языка виднее.
Готовы ли вы с этим смириться?
Аноним 23/04/18 Пнд 14:51:25  1178240
Костыль это лучше, чем ничего, или хуже?
Аноним 23/04/18 Пнд 14:57:59  1178244
>>1178240
Готов, ведь так лучше для меня.
Аноним 23/04/18 Пнд 15:04:26  1178245
>>1178244
to
>>1178221
Аноним 23/04/18 Пнд 15:31:00  1178251
>>1178221
Да. На то мы и используем java. Любители стрелять в ногу. Сидят в других тредах
Аноним 23/04/18 Пнд 16:10:19  1178264
>>1178221
Я замечал, что люди, не разбирающиеся в джаве обожают нести дикую хуйню про нее.
Аноним 23/04/18 Пнд 19:15:05  1178348
1.jpg (85Кб, 1000x1000)
>>1173657 (OP)
Можете кинуть ссылку на хороший сервис по изучению Java. В смысле бесплатный и для начинающих. Без видеоуроков. Был бы очень благодарен
Аноним 23/04/18 Пнд 19:55:59  1178372
Не знаю, шарит ли хоть кто нибудь здесь, но решил начать пилить свой сервер minecraft с плагинами и модами, и при этом запилить свои. в одном моде Placeable Items приглядел классные 3d модели мечей и кирок, которыми хотел бы заменить основные, но столкнулся с тем, что не могу никак открыть файл мода. Пробовал сделать это в eclipse и intellij. Или же я чего-то не знаю?
Аноним 23/04/18 Пнд 20:38:31  1178398
Аноны, почему оно не работает?
if (i/2 == Double){}
/Хочу сделать проверку целого числа, после деления на 2/
Аноним 23/04/18 Пнд 20:44:22  1178402
>>1178348
Нет, не можем.
>>1178372
У тебя скорее всего джарник. Считай это выполняемым кодом. А чтобы изменить программу, тебе нужен исходный код. Иди на страницу своего плагина и ищи там ссылку на гитхаб. Если нету, то все.
Аноним 23/04/18 Пнд 20:49:19  1178405
>>1178402
>Если нету, то декомпиляция и ковыряние с охуевшим видом в нагромождении говна без комментов
Фикс
Аноним 23/04/18 Пнд 21:28:47  1178427
>>1178405
> декомпиляция
> очевидно мимокрокодил, а не видевшее некоторое дерьмо повидло
Ну ты хоть немного думай, когда фиксишь чужие поста, ебоклак.
Аноним 23/04/18 Пнд 21:38:52  1178432
>>1178427
> речь о модах для майнсруфта, которые декомпилируются человеком, у которого из знаний только английский, за полчаса-час (в первый раз, потом за пару минут)
Я первый свой мод (или лаунчер, не помню) для майна декомпильнул именно с такими вот исходными условиями.
А потом всё удолил, потому что не умел в жабу.
Аноним 23/04/18 Пнд 22:48:39  1178465
>>1178432
Разархивировать джарник и получить java-файлы из class-файлов не сложно. Вопрос что ты с этим будешь делать.
Аноним 23/04/18 Пнд 22:51:19  1178470
Мучаюсь уже часа 2, как мне из этого:
String[] arr = {"aa", "bb", "cc", "dd"};
String gg="";
for (int i = 0; i != arr.length; i++){
gg+=arr+" ";
}
System.out.println(gg);

Переделать в лямбду?
Аноним 23/04/18 Пнд 22:54:25  1178473
>>1178470
ArrayList<String> arr;
Аноним 23/04/18 Пнд 22:57:58  1178474
>>1178473
>ArrayList<String> arr;
Спасибо! Но что делать если у меня в коде, допустим, уже есть Arrays.sort(arr); ?
Аноним 23/04/18 Пнд 23:15:33  1178486
>>1178470
Редьюсь.
Аноним 24/04/18 Втр 00:19:26  1178540
>>1178398

String s; //введенное юзером значение

try {
if((s.toLowerCase().contains('e') || s.toLowerCase().contains('.'))
double d=Double.parseDouble(s); //вещественный тип
else
long l=Long.parseLong(s); //целый тип
}
catch(NumberFormatException nfe) {
//строчный тип
}
Аноним 24/04/18 Втр 04:42:00  1178603
>>1178474
Либо заменить на Collections.sort(list), либо сделать из массива список с помощью Arrays.asList(array).
Аноним 24/04/18 Втр 10:54:20  1178668
>>1178470
Ну где вас таких тупых берут.
Stream.of(arr).reduce("", (s, acc) -> s+" "+acc);
Аноним 24/04/18 Втр 10:56:39  1178670
>>1178470
вот еще одно решение
Stream.of(arr).map(s -> s).collect(Collectors.joining(" "));
от >>1178668
Аноним 24/04/18 Втр 10:58:04  1178671
>>1178470
Могу еще тебе рекурсивное решение ебануть
Аноним 24/04/18 Втр 11:17:04  1178677
>>1178671
>>1178470
public String join(List<String> arr, String acc){
if (arr.isEmpty()){
return acc;
} else {
return join(arr.subList(1,arr.size()), acc+arr.get(0)+" ");
}
}
Аноним 24/04/18 Втр 14:00:27  1178778
Есть ли какие нибудь сайты по изучению Java с нуля, кроме платного JavaRush? На подобие learn.javascript для Js или pythontutor.ru для Питона? Чтоб прям для дошкольников было объяснено
Аноним 24/04/18 Втр 17:35:52  1178879
>>1178670
>.map(s -> s)
oh boy
Аноним 24/04/18 Втр 20:26:26  1179001
>>1178778
Дебилы не задерживаются. Иди дальше, идиотский человек.
Аноним 24/04/18 Втр 20:58:21  1179032
>>1178677
>>1178671
>>1178670
>>1178668
>>1178603
>>1178540
спасибо
Аноним 25/04/18 Срд 15:55:37  1179436
Почему в жабе не сделать свойства, как в решетке?
Аноним 25/04/18 Срд 18:37:53  1179526
>>1179436
нинужна
Аноним 25/04/18 Срд 20:04:51  1179597
Бля, вот я тупой. Мучался с этим минимаксом, придумал костыльное решение, исправил на нормальное, почти доволен. А оказывается это не костыльное решение было и все норм. Эх.
Аноним 25/04/18 Срд 20:22:12  1179610
>>1174203
Как вариант - одну из тех, которую поддерживает JDBC.
Аноним 25/04/18 Срд 20:26:15  1179618
>>1175593
>Бери такую, чтобы в руке хорошо лежала.
БД "Дуня Кулакова"?
Аноним 25/04/18 Срд 20:32:44  1179625
Сап двач, тут такое дело ..
Вобщем мне надо написать лаб по яве. Нужно добавить класс, представляющий единицу, описанную в динамическом векторе основного класса. Я особо не понял данную задачу поэтому реквестирую помощь
Аноним 25/04/18 Срд 20:36:09  1179631
1004121257.jpg (171Кб, 906x1200)
Сап аноны. Есть у кого Кэти Сьерра "Изучаем Java" в fb2, epub, mobi формате? Скиньте плес. А то пиздец везде только в пдф. И вообще можно любые книги по джаве в этих форматах. Или хотя бы подскажите где скачать
Вложенные try-catch Аноним 25/04/18 Срд 20:40:29  1179638
Привет, аноны!

Понадобилось сделать четыре вложенных друг в друга try-catch. Понял, что мой редактор joe мало чем может помочь.
В каком редакторе/IDE легко и просто делать вложенные try-catch?
Аноним 25/04/18 Срд 20:42:15  1179640
>>1179638
> В каком редакторе/IDE легко и просто делать вложенные try-catch?
А что мешает без задней мысли написать их ручками?
Аноним 25/04/18 Срд 20:44:11  1179642
>>1179640
>А что мешает без задней мысли написать их ручками?
Отступы для удобочитаемости и можно по невнимательности упустить/добавить фигурную скобку
Аноним 25/04/18 Срд 20:45:20  1179644
>>1179642
Попробуй intellij idea.
Аноним 25/04/18 Срд 21:37:16  1179667
>>1179625
аноны подскажите плес хотябы что надо гуглить
Аноним 25/04/18 Срд 21:58:29  1179678
Ананас, я засунул Try-Catch в Do-While цикл (крутится пока валится эксепшн) и теперь у меня нарушается порядок System.err.println (он в блоке catch) и System.out.println (он в начале Do-while). Flush потока не помогает.
Проблема в разных потоках. Вопрос в том, как это по-хорошему должно решаться.
Аноним 25/04/18 Срд 21:59:50  1179683
>>1179625
Дичь какая. Подпишусь на трэд.

мимо-вкатывальщик
Аноним 25/04/18 Срд 22:03:20  1179685
>>1179625
>поэтому реквестирую помощь
"В общем" пишется раздельно.

Не благодари.
Аноним 25/04/18 Срд 22:04:05  1179686
>>1179644
Спасибо, анон.
Аноним 25/04/18 Срд 22:06:05  1179687
Есть игра. В ходе игры надо возвращать либо место для нового хода, либо результат игры, если после последнего хода игра закончилась. Какой возвращаемый тип лучше использовать? Массив int или новый класс забабахать?
Аноним 25/04/18 Срд 22:14:57  1179695
>>1179687
enum байтов.
Аноним 25/04/18 Срд 22:54:15  1179720
>>1179625
Чё блядь? Чё за динамический вектор? Имеется ввиду java.util.Vector, что ли? А чё за "основной класс"?
Аноним 25/04/18 Срд 23:01:48  1179728
>>1179683
Насколько я понял, надо в отдельном классе создать нужые обьекты. А в основном классе создать ArrayList где будут использоваться данные обьекты. Как-то так.

Аноним 25/04/18 Срд 23:04:55  1179732
>>1179720
вот >>1179687

Я просто задание перевел с другого языка, да и само задание туповато сформулирована

Аноним 25/04/18 Срд 23:06:41  1179733
>>1179728
точнее >>1179732
я уже плавленый
Аноним 25/04/18 Срд 23:08:07  1179734
>>1179733
почему нельзя едитить сообщения на дваче блядь
Аноним 25/04/18 Срд 23:19:27  1179741
>>1179638
Нахуя? Нельзя обработать всё в одном по разным типам эксепшонов?
Аноним 26/04/18 Чтв 00:44:01  1179792
>>1179732
Ах ты, сука.
"Единица" - это unit наверное?
И всё равно текст остаётся загадочным.

"Единица в динамическом векторе основного класса" - хорошо звучит.

В России такое любят.
С таким названием мог бы быть доклад на форуме "Территория смыслов", например.
Аноним 26/04/18 Чтв 08:24:04  1179849
>>1179644
>Попробуй intellij idea.
Попробовал, вещь супер!
1. Пишу:
PreparedStatement

IDE дописывает:

import java.sql.PreparedStatement;

PreparedStatement

Раньше, чтобы узнать, что писать после слова "import" я тратил кучу времени.

2. Выделил несколько строк, нажимаю Ctrl+Shift+T, IDE предлает упаковать в try-catch, как в сказке!
Аноним 26/04/18 Чтв 09:48:39  1179870
.webm (1092Кб, 720x480, 00:00:05)
>>1179849
Аноним 26/04/18 Чтв 12:40:50  1179945
image.png (2722Кб, 1920x1080)
Кто-нибудь пробовал сабж? Это типа наш ответ Unity. Можно делать игоря для Windows, Linux, MacOS, iOS, Android и браузеров с поддержкой WebGL.

https://libgdx.badlogicgames.com/
http://www.libgdx.ru/
https://habr.com/post/243471/
Аноним 26/04/18 Чтв 12:55:34  1179959
>>1179945
>ответ юнити
Ну ты кек вообще. Пробовла его на мобилки. Если коротко то более-менее он подходит для 2д, в 3д не лезь блять. А еще там хуйня с iOS, так как пидорские майкрософт купили купили и закрыли RoboVM, что бы не мешал Xamarin'у, и было два варианта, мутный Intel ME, или старый молумертвый форк RoboVM - BugVM.
Аноним 26/04/18 Чтв 13:01:44  1179968
>>1179959
Я хочу написать RPG типа Fallout 1-2 или Arcanum, но с вращаемой/перемещаемой камерой (как в Neverwinter Nights и WarCraft 3). Вид от 3-го лица, бои пошаговые. Подойдет ли оно для этого?
Аноним 26/04/18 Чтв 13:03:47  1179972
>>1179968
Теоретически да, но я так и не смог заставить нужные мне модельки работать, постоянно то ли текстуры, то ли нормали отклеивались, а из готовых из интерента вроде норм. Но опять же с 3д он так себе. А у тебя именно что 3д.
Аноним 26/04/18 Чтв 13:53:09  1180020
Нужно получить указатель на int.Но напрямую сделать это не получается.Есть какие либо способы это сделать кроме как привести к long?
Аноним 26/04/18 Чтв 14:22:34  1180032
А чё в треде одни вкатывальщики? Или так во всём программаче?
Аноним 26/04/18 Чтв 14:47:40  1180039
>>1180032
Во всём.
Аноним 26/04/18 Чтв 15:35:03  1180070
>>1180032
Я профессионал.
Аноним 26/04/18 Чтв 15:35:55  1180071
>>1180070
Профессиональный вкатывальщик.
Аноним 26/04/18 Чтв 16:37:02  1180123
5 лет промышленного опыта-кун
Задавайте свои ответы. На глупые вопросы не отвечаю
Аноним 26/04/18 Чтв 17:00:59  1180145
>>1180123
>>1179678
Аноним 26/04/18 Чтв 17:04:14  1180150
>>1180145
эксепшен ты сам кидаешь? Если да, то не надо так. Эксепшен это дорогая операция, плюс это должно быть что-то исключительное, эксепшенов не должно быть при корректной работе.

Сделай функцию, возвращающую boolean, и дёргай это функцию
Аноним 26/04/18 Чтв 17:44:48  1180168
>>1180150
Я проверяю на некорректный ввод. Если ввод некорректный, кидаю сам кастомный эксепшен и прошу пользователя повторить снова (для этого цикл). это учебное приложение, один из пунутов задания придумать кастомные эксепшены
Аноним 26/04/18 Чтв 17:57:52  1180177
>>1180168
тогда пиши только в System.out
Аноним 26/04/18 Чтв 18:04:01  1180183
>>1180177
Так в итоге и сделал. Просто думал, мб есть способ это нормально хэндлить. Спасибо за ответ.
Аноним 27/04/18 Птн 13:38:29  1180494
Поясните за таимеры.Я почитал примеры но это не совсем то.Там показано как запускать тред через каждые n секунд.А мне не нужен весь тред.Я хочу выполнять один цикл строго до определенного времени через каждые x сек.Как мне это сделать?
Аноним 27/04/18 Птн 13:54:19  1180499
>>1180494
```
final long deadline = ...;
while (System.currentTimeMillis() < deadline) {
// do stuff
}
```
Аноним 27/04/18 Птн 17:19:41  1180571
посоветуйте движок / фреймворк для полнотекстового поиска
Аноним 27/04/18 Птн 18:00:29  1180586
>>1180571
Elasticsearch
Аноним 27/04/18 Птн 21:50:41  1180677
Привет, мираноны!
Возник вопрос, до какой степени джуну надо знать Хибернейт, Спринг(и что именно надо знать)?
Аноним 27/04/18 Птн 22:09:37  1180694
>>1180677
Не надо, пиздуй так - все равно перезвонят.
Аноним 27/04/18 Птн 22:48:51  1180748
>>1180694
А че так можно было? А я то сидел ждал пока пригласят.
Аноним 27/04/18 Птн 23:56:21  1180867
>>1180748
А ты думал мы вам перезвоним просто так сто сорок пятый тренд идет?
Аноним 28/04/18 Суб 02:41:22  1180910
Читаю спринг экшон и у меня возник вопрос, почему для моего бина без интерфейса нормально работает аспект, хотя @EnableAspectJAutoProxy у меня стоит без proxyTargetClass=true?
Аноним 28/04/18 Суб 07:54:27  1180937
>>1180910
proxyTargetClass=true означает: использовать cglib-прокси, даже если есть интерфейс. Если нет интерфейса, будет cglib как единственный возможный вариант.
Аноним 28/04/18 Суб 13:29:01  1181009
>>1180937
спасибо
Аноним 28/04/18 Суб 15:32:35  1181056
Что написать на яве, чтобы было интересно? Без ui. Киньте идей каких нибудь плез. Может кто то уже что то пилит, я бы скоопился.
Аноним 28/04/18 Суб 16:01:06  1181065
>>1181056
BOINC, Rosetta...

http://boinc.berkeley.edu
http://setiathome.berkeley.edu

http://folding.stanford.edu
http://boinc.bakerlab.org/rosetta/

http://www.tscrussiateam.ru
http://www.boinc.ru

http://www.curlie.org/Computers/Computer_Science/Distributed_Computing/Projects/
Аноним 28/04/18 Суб 18:48:39  1181140
У меня проблема с jframe.Я вывожу на jframe скриншот другого окна через jlabel.Но рисовка происходит только в том случае если мое окно активно.Как сделать чтобы jframe обновлялся постоянно?
Аноним 28/04/18 Суб 18:56:21  1181146
scrin2.png (129Кб, 1241x984)
Читаю и параллельно перевожу concurrency in practice. Благое дело?
Аноним 28/04/18 Суб 19:03:34  1181156
tsbfail.png (232Кб, 658x910)
Нахуй так жить, жабаны?
Аноним 28/04/18 Суб 19:10:42  1181163
>>1181156
спринговый эксепшен? Чот не помню такого
Аноним 28/04/18 Суб 21:11:20  1181244
Анон, очень нужна помощь.
Суть такова:
обмазываюсь видеокурсом про спринг (тру-посоны в комментах на рутрекере поливают автора и курс говном, но ничего лучше т.е. просто ничего на русском не нашёл), там нужно поставить glassfish, mysql, затем создать БД и подключиться к ней из glassfish. БД создал, даже немного данных добавил в таблицы - всё норм. Пытаюсь теперь создать пул подключений: ввожу нехитрые настройки (пользователь, пароль, url), сохраняю, жму Ping и... нихуя! Вылезает ошибка
Ping Connection Pool failed for MySQLPool. Class name is wrong or classpath is not set for : com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource Please check the server.log for more details.
Порылся в интернете, нашёл очень полезный совет - положить jar-ник с драйвером в директорию домена, а не просто в глассфиш/либ. Положил по всему пути до ext'a в глассфише теперь лежит этот файл, перезапустил и всё равно ничего не получается. Может быть кто-то сталкивался с подобной проблемой или может просто указать мне на ошибочные действия, которые приводят к подобному результату?
Аноним 28/04/18 Суб 21:14:09  1181245
>>1181146
Правильно, что читаешь.

А переводить не нужно.
Учись понимать английский без того, чтобы переводить его при чтении. Иначе - это тупик.
Аноним 28/04/18 Суб 22:16:05  1181281
>>1181244
>т.е. просто ничего на русском не нашёл
Умри

>ошибочные действия, которые приводят к подобному результату
Ошибочные действия - пытаться что-то делать с glassfish, он не нужен (как и другие ASы)
Аноним 28/04/18 Суб 22:58:54  1181296
.jpg (61Кб, 598x300)
> java
Аноним 29/04/18 Вск 08:44:17  1181380
Джаверы такой вопрос. Прочитал полностью Шилдта для начинающих. Какие еще темы нужно освоить из полного Шилдта или других учебников прежде чем начать учить Spring?
Аноним 29/04/18 Вск 10:23:13  1181409
Не ставь жабу, бро, там вирусы, у меня от этого брат умер.

https://computer76.ru/2018/04/16/javac-cmd-error/

Установка Java не относится к насущной проблеме при работе в любой операционной системе, причём при некоторых условиях даже НЕ РЕКОМЕНДУЕТСЯ.
Аноним 29/04/18 Вск 10:29:23  1181411
>>1181380
желательно сначала освоить хотя бы Шилдта не для начинающих, ну или его альтернативы
Аноним 29/04/18 Вск 10:33:29  1181412
>>1181411
Шилдт сам пишет на крестах. В своих книгах про Java и C# он тупо пересказывает содержимое сайтов Oracle и MSDN. Иногда даже с ошибками.

>>1181380
Spring in Action. Даже у нас выпускали с хорошим переводом (есть в VK в поиске по документам).
Аноним 29/04/18 Вск 10:53:13  1181415
>>1181412
ты думаешь он что-то поймет в спринге после Шилдта для начинающих? не знаю, не знаю
Аноним 29/04/18 Вск 11:28:22  1181423
>>1181415
Ну, мне в свое время хватило общих знаний языка (по какой-то вузовской методичке) + AWT & Swing.
В той книге все хорошо разжевано для начинающих.
Аноним 29/04/18 Вск 11:31:35  1181425
Вот тут надо все штидировать - API, спецификацию, tutorial'ы:
https://docs.oracle.com/javase/10/
Аноним 29/04/18 Вск 11:36:10  1181427
>>1181380
Брюса Эккеля прочти:
https://proklondike.net/books/java/Ekkel_Thinking_in_Java__4th_Edition_2009.html
Аноним 29/04/18 Вск 11:48:30  1181433
>>1181380
>>1181411
могу еще посоветовать Murach Servlet and JSP, кроме собственного говоря сервлетов и jsp, там еще есть работа с бд (jdbc, jpa), основы html/css, объясняется как это все вместе работает, есть даже пример разработки готового веб-сайта
Аноним 29/04/18 Вск 11:55:58  1181436
>>1181433
Кстати, нужно ли еще что-то знать из Hibernate, кроме использования его как реализации JPA?
Там есть какой-то свой встроенный язык запросов - его спрашивают на собеседованиях?
Аноним 29/04/18 Вск 12:23:04  1181441
>>1181436
sql учить придется в любом случае, всякие jpql на нем основаны и не особо от него отличаются; думаю ты должен уметь выполнять crud операции в hibernate/jpa, знать основные аннотации и подобные базовые вещи
Аноним 29/04/18 Вск 12:33:38  1181445
>>1181436
Именно язык запросов там практически тот же самый, что в JPA. Есть свой criteria api, который ныне объявлен deprecated, несмотря на превосходство над ущербными JPA criteria.
В реальном мире скорее всего придется столкнуться со спецификой Hibernate, но для собеседований должно хватить и JPA.
Аноним 29/04/18 Вск 15:22:16  1181574
>>1181445
можно ли говорить на собеседовании, что я предпочитаю не использовать hibernate и jpa?. Ибо от них одни проблемы без заметной пользы
Аноним 29/04/18 Вск 15:32:41  1181577
>>1181574
Мне jooq больше нравится. Но в каждой вакансии Hibernate и Spring.
Аноним 29/04/18 Вск 16:54:43  1181627
>>1181574
Можно, если сумеешь аргументировать. Адекваты понимают, что hibernate/jpa как минимум хороши не во всех ситуациях.
Аноним 29/04/18 Вск 17:01:18  1181635
>>1181627
в простых проектах проще руками пару запросов накидать.
В сложных уже нельзя доверять автогенерации и нельзя выгружать весь граф объектов.

Итого нет применения
Аноним 29/04/18 Вск 18:00:36  1181667
>>1181635
Так может просто и не ходить туда, где важен hibernate? Не так уж и в каждой он вакансии. Но в любом случае, на собеседовании в адекватной конторе умение осмысленно и по существу раскритиковать hibernate вполне может заменить его глубокое знание.
Аноним 30/04/18 Пнд 16:17:25  1182078
>>1181574
Сходу выдашь свой отсутствующий опыт. В узких местах запросы пишутся ручками, но в большинстве крупных проектов без orm никуда - другой вопрос, что некоторые умники сперва пердолят свой запрос на каждый чих, а со временем всё это обрамляется в тот же orm, только хуёвый.
>>1181635
>в простых проектах проще руками пару запросов накидать.
Внезапно, тебя не будут нанимать ради хелловорлдов с "парой запросов".
>В сложных уже нельзя доверять автогенерации и нельзя выгружать весь граф объектов.
Ты не понимаешь технологию, если не видишь ей применения.
Аноним 30/04/18 Пнд 16:23:38  1182085
>>1181574
>предпочитаю не использовать hibernate и jpa?

А MyBatis (бывший iBatis)?
Это хороший компромисс.
Аноним 30/04/18 Пнд 16:26:40  1182088
>>1182078
>Ты не понимаешь технологию, если не видишь ей применения.
У меня есть технология изготовления фигурок из говна, найдёшь ей применение?
Если нет, видимо ни ты ни я просто не понимаем её.
Аноним 30/04/18 Пнд 16:56:14  1182099
>>1182088
Попробуй ещё раз и без использования говна. Уверен, у тебя получится.
И как ты думаешь, если тысячи зрелых специалистов используют технологию, а ты "не видишь ей применения", то у кого проблемы с пониманием - у тебя или у них?
Аноним 30/04/18 Пнд 17:08:17  1182101
>>1182099
>если тысячи зрелых специалистов используют технологию,

Миллионы мух не могут ошибаться, да.

Люди чего только не делают.
И на джаве в том числе.
И что?

Я другой анон, если что.
И тоже не считаю jpa и hibernate хорошим делом.
Как и спринг.
Всё это ненужная монструозная хуйня.
Аноним 30/04/18 Пнд 17:10:48  1182103
>>1182101
>Миллионы мух не могут ошибаться, да.
>>1182088
>технология изготовления фигурок из говна

/pr зафиксирован на кале, лол.

>>1182101
>Всё это ненужная монструозная хуйня.
Для хеллоуворлда вообще мало что нужно.
Аноним 30/04/18 Пнд 17:14:49  1182107
>>1182103
Сынок, чтобы тебе было понятно, о чём я - посмотри на продукты Caucho, например.
Или на тот же MyBatis.
Это примеры несколько иного подхода, нежели обычно принятый в джава-разработке.

А коммерческий успех, в наше время, далеко не всегда свидетельствует о качестве продукта.

И да, 95% чего угодно - говно, но, оставшихся 5% мне вполне достаточно.
Аноним 30/04/18 Пнд 17:20:57  1182118
>>1182107
Щень пытается общаться снисходительно - какая прелесть. Чешет о монструозных продуктах и приводит в пример майбатис - один аргумент лучше другого.
У тебя есть что-нибудь по делу, или ты так, попечатать зашёл?
Аноним 30/04/18 Пнд 17:26:10  1182121
>>1182118
По делу тебе уже всё сказали, и даже не один раз, лол.
А суть твоей аргументации - все так делают.
Охуенно.

И да, у тебя совсем не бомбит, как я погляжу.
Аноним 30/04/18 Пнд 17:36:52  1182129
>>1182121
Перечитай посты ещё раз.
Да-да, вызывай пожарных.
Аноним 30/04/18 Пнд 17:46:19  1182140
>>1182129
Перечитал.
Вызвал.
Жди.
Аноним 30/04/18 Пнд 18:17:42  1182147
>>1182078
>но в большинстве крупных проектов без orm никуда
никуда без выгрузки всего графа объекта? Так делать нельзя в любом случае

>Ты не понимаешь технологию, если не видишь ей применения.
глупость. Есть куча "технологий" без применения
Аноним 30/04/18 Пнд 18:31:01  1182156
>>1182107
>MyBatis
смотрю на мануал
https://www.concretepage.com/mybatis-3/mybatis-3-annotation-example-with-select-insert-update-and-delete

@Results({
@Result(property = "vid", column = "id"),
@Result(property = "villageName", column = "name"),
@Result(property = "district", column = "district")
})
@Select("SELECT id, name, district from village WHERE id = #{id}")
Village selectVillage(int id);

По мне так это хуже ручного маппера. Оно не проверяется при компиляции, IDE не будет переименовывать эти поля при рефакторинге, оно будет падать в рантайме.
Плюс в маппере можно делать преобразования, помещать некую логику

Это JdbcTemplate с запросами в аннотациях? Не вижу преимущества перед простым JdbcTemplate
Аноним 30/04/18 Пнд 19:05:01  1182165
А что пацаны про Ebean скажут?
Аноним 30/04/18 Пнд 19:13:25  1182169
>>1182165
Лучше ебатис.
Аноним 30/04/18 Пнд 19:30:20  1182177
>>1182165
Ну давайте, серьёзный вопрос-то.
Аноним 30/04/18 Пнд 19:33:37  1182182
.jpg (52Кб, 600x597)
>>1182177
Хибернейт выебал жука и высрал ебин :)))
Аноним 30/04/18 Пнд 19:39:59  1182185
>>1173896
Бля, как же я хочу научиться излагать мысли так как ты. Ты это тренировал или впитал с окружением? Сколько времени ты писал этот пост? Исправлял что-нибудь или тупо поток мыслей записал?
Аноним 30/04/18 Пнд 19:41:59  1182188
1438288833.gif (6Кб, 345x239)
>>1182185
Аноним 30/04/18 Пнд 19:44:40  1182191
>>1173896
>Ниже у тебя отвратительный пример мутабельного класса, чья внешняя функциональность зависит от совершенно не очевидного для окружающих внутреннего стейта.
так мы дойдём до ненужности ооп. Ибо основа ооп это внутреннее состояние объектов, что есть плохо по современным критериям
Аноним 30/04/18 Пнд 20:06:38  1182201
>>1182185
Чоблять? Я просто ответил на пост без задней мысли. Я тебе такое и ирл с наскока высру, только без двощесленга про жопы и ссанину.
> Ты это тренировал или впитал с окружением?
Книжки в детстве читал и потом сидел в психотронной тюрьме. Не рекомендую.
>>1182191
Egorka-dolboeb, eto ti? Ни одна из парадигм ООП ничего говорит про стейт объектов. То, что сущность заявляет, что она кошка и умеет мяукать с пруфами ничего не говорит о внутренней реализации кошки. Лишь о том, что она умеет мяукать и к ней можно спокойно обращаться как к кошке.
Если на девятое по счету мяуканье кошка взрывается нахуй и осколками посекает погладившего лишь говорит, что эта кошка говно. Хотя тут главное не дойти до нужности чекд экспепшнс и ненужности анчекд, но тут тонкая грань - внутренний стейт приносит неочевидность для внешнего наблюдателя и кучу других проблем, а анчекд экспепшнес стейтлесс каках это заебись.
Аноним 30/04/18 Пнд 20:13:16  1182204
>>1182201
сам объект "кошка" предполагает, что это отдельный объект с отдельным стейтом. Иначе зачем вообще делать это объектом?

Итого сама концепция стейта (и ооп) это нарушение инкапсуляции - стейт может поменять кто угодно, в том числе всякие наследники. В отличие от функции с ограниченным и заранее определённым набором входных параметров.
ооп нарушает инкапсуляцию и порождает ворох проблем из-за стейта
Аноним 30/04/18 Пнд 20:21:47  1182209
>>1182204
Егорка, ты что тут делаешь?
> сам объект "кошка" предполагает, что это отдельный объект с отдельным стейтом.
Додумываешь. Объект кошка предполагает, что он умеет мяукать, жрать и срать - удовлетворение контракта кошки. Всё.
> Итого сама концепция стейта (и ооп) это нарушение инкапсуляции - стейт может поменять кто угодно, в том числе всякие наследники.
Чоблять? Стейт, может быть, может не быть и может быть недоступным наследниками. И если у конкретной кошки есть стейт, доступный наследниками, то расширив эту конкретную реализацию кошки и поменяв в наследнике стейт, то это лишь станет стейтом новой наследной реализации кошки и никуда он торчать не будет. Икапсуляция схоронена. И тут мы подходим к мысли, что стейт это неочевидно, хуйова, хуйова тестируется, не тредсейф и вообще неидемпотентная ссанина говна червя.
> ооп нарушает инкапсуляцию
Ты упорот там? Инкапсуляция это один из столпов ооп.
> порождает ворох проблем из-за стейта
Еще раз. ООП ничего не говорит про стейт. Стейт привносят говнокодеры там, где он не нужен, а потом задаются вопросом КАК ЖЕ ЭТО НАЗЫВАЕТСЯ ТЕСТИРУЕТСЯ?
Вот типа такой хуйни
>>1173889
Аноним 30/04/18 Пнд 20:29:39  1182217
>>1182209
> Объект кошка предполагает, что он умеет мяукать, жрать и срать - удовлетворение контракта кошки. Всё.
тогда хватит статик методов, без создания объектов.
А если нужна кошка1 и кошка2, и они должны отличаться в один момент времени - это значит внутри стейт.
Так вот, создание объектов, создание кошки1 и кошки2, предполагает наличие у этих объектов состояния. Иначе нет смысла создавать объекты, можно просто статик методы хуячить.

>Стейт, может быть, может не быть и может быть недоступным наследниками.
наследник может сломать метод своего предка. Т.е. нарушена инкапсуляция, метод можно сломать извне

>Ты упорот там? Инкапсуляция это один из столпов ооп.
Скорее это столп функциональщины. Только функциональщина предполагает чёткий контракт и чёткий набор входных параметров

>ООП ничего не говорит про стейт. Стейт привносят говнокодеры там, где он не нужен
ООП это стейт. Пчёлы это мёд. Не бывает пчёл без мёда
Аноним 30/04/18 Пнд 20:36:23  1182221
>>1182185
Он написал хуйню.
Не стоит этому завидовать.
Аноним 30/04/18 Пнд 20:37:44  1182223
>>1182221
отличная аргументация
Аноним 30/04/18 Пнд 20:41:18  1182225
>>1182156
Не надо использовать аннотации.
Там есть xml маппер.

И да, если ты не понимаешь, зачем всё это, и чем это лучше хибернейта, то тебе это просто не надо.

Речь шла не о том, что хибернейт не нужен, а о том, что не стоит его использовать повсеместно.
Аноним 30/04/18 Пнд 20:41:37  1182226
>>1182217
> тогда хватит статик методов, без создания объектов.
Ебать у тебя отрицание пошло, уже до процедурщины скатился.
> А если нужна кошка1 и кошка2, и они должны отличаться в один момент времени
Да што ты? Кошка1 и кошка2 это кошки и обращаться с ними можно как с кошками. Если кошка2 требует для работы ниибацца стразы как у того кузнеца, то она должна быть реализована отдельным сортом кошки. Или вообще не кошкой, если не тянет. Стейт тут не при чем.
> наследник может сломать метод своего предка. Т.е. нарушена инкапсуляция, метод можно сломать извне
А-а-а, нихуя. Это лишь будет сломанный сорт наследника. К нему по-прежнему можно обращаться как к предку, вот только хуйова он будет все делать. Ну такой наследник, щито поделать, ничего неожиданного в рантайме.
> Скорее это столп функциональщины.
Вот тут ты спалился, что вообще нихуя не разбираешься в ООП и ФП. Сейчас ты открываешь википедию и читаешь про ООП. Подумай почему инкапсуляция является первейшей парадигмой.
Потом открываешь статью про ФП и неожиданно узнаешь, что оно про функции, а не про объекты.
> ООП это стейт
Повторение аргумента не усиливает его. Особенно если он некорректен. Пиздуй читать википедию.

И когда устроишься на свою первую работу - не увлекайся стейтфул дрисней, бо обоссут нормальные программисты.
Аноним 30/04/18 Пнд 20:44:42  1182230
.jpg (49Кб, 600x604)
>>1182221
> ебанаты в зк
> на острие отрицания классических практик юнит-тестирования
Аноним 30/04/18 Пнд 20:50:25  1182233
>>1173657 (OP)
Хочу программить на джаве, но у меня ХР стоит и ни чего с оф. сайта не устанавливается, подскажите что от куда скачать надо что бы на хрюшу установилось. Спс.
Аноним 30/04/18 Пнд 20:51:01  1182234
>>1182230
юнит-тестирование это далеко не абсолютное добро
Аноним 30/04/18 Пнд 20:52:10  1182236
>>1182225
>Там есть xml маппер
тоже текстом?
Я и говорю, что лучше код чем текст

>И да, если ты не понимаешь, зачем всё это, и чем это лучше хибернейта, то тебе это просто не надо.
Я не понимаю чем это лучше простого JdbcTemplate
Аноним 30/04/18 Пнд 20:52:44  1182237
>>1182234
> Сам сказал очевидность - сам с собой согласился.
Как там, солнце еще встает на востоке?
Аноним 30/04/18 Пнд 20:56:37  1182240
>>1182226
окей. Зачем тогда создавать две кошки? Может есть какая-то причина?
Если они совершенно одинаковые, то хватит и одной кошки

>Это лишь будет сломанный сорт наследника. К нему по-прежнему можно обращаться как к предку, вот только хуйова он будет все делать. Ну такой наследник, щито поделать, ничего неожиданного в рантайме.
т.е. нужно повторно тестировать все методы предка в наследнике? Это и есть нарушение - оттестированные методы можно сломать, и нужно постоянно проверять на работоспособность старый оттестированный код
Аноним 30/04/18 Пнд 20:57:18  1182242
>>1182237
адепты почему-то думают, что любое тестирование это абсолютное добро. И чем больше тестирования тем лучше
Аноним 30/04/18 Пнд 21:02:10  1182250
>>1182234
У нас есть что-то получше? Можно, конечно, просто взять и договориться писать без багов.
Аноним 30/04/18 Пнд 21:04:18  1182251
>>1182240
> окей. Зачем тогда создавать две кошки? Может есть какая-то причина?
Нужны разные кошки. Одна серая, другая красивая, третья мяукает охуенно.
Например стратегия доступа к данным. Одна к кассандре, другая к жбод какахе. Обе реализуют один интерфейс. Не стоит делать один объект с двумя по сути одинаковыми методами. Это чтобы ближе к телу аналогия.
> т.е. нужно повторно тестировать все методы предка в наследнике?
Нужно тестировать выполнение ожидаемого от объекта контракта. Выполнение контракта происходит - заебись, погнали дальше. Нет - ti okhuel blyat.
>>1182242
> тестирование не нужно
Иди нахуй.
Аноним 30/04/18 Пнд 21:05:24  1182252
>>1182250
покрытие 100% это зло например.
Многократное дублирование логики, затруднение правок
Аноним 30/04/18 Пнд 21:10:43  1182256
>>1182251
>Одна серая, другая красивая, третья мяукает охуенно.

cat1 = new Cat(grey)
cat2 = new Cat(white)
cat1.fuck(cat2)

или ты на каждый цвет будешь делать наследника?

И чистые функции с другой стороны
boolean fuckTwoCats(cat1Color, cat2Color){
}
Аноним 30/04/18 Пнд 21:12:04  1182258
>>1182236
>Я не понимаю чем это лучше простого JdbcTemplate

Тем, что это не Spring?
Аноним 30/04/18 Пнд 21:12:16  1182259
>>1182256
Не паясничай. Я привел тебе конкретные живые примеры. Могу привести еще.
Аноним 30/04/18 Пнд 21:14:43  1182263
>>1182252
Ебать ты долбоеб, братишка. Земля тебе пухом.
Аноним 30/04/18 Пнд 21:15:27  1182265
>>1182252
И отличная иллюзия того, что багов нет.
Аноним 30/04/18 Пнд 21:16:25  1182266
>>1182147
>никуда без выгрузки всего графа объекта? Так делать нельзя в любом случае
ORM не заставляет тебя выгружать весь граф объектов
Аноним 30/04/18 Пнд 21:17:07  1182269
.png (6Кб, 360x360)
>>1182258
Что не так со спрингом? Отличные микрофреймворки для построения микросервисов и работы с конкретными доменными сферами.
Аноним 30/04/18 Пнд 21:19:24  1182270
>>1182259
>Я привел тебе конкретные живые примеры
примеры наличия стейта в объектах?
Аноним 30/04/18 Пнд 21:20:01  1182272
>>1182265
самое главное. Если есть заветная цифирка 100% - значит багов нет, блябуду
Аноним 30/04/18 Пнд 21:21:03  1182274
>>1182266
он создан именно для этого. Для реляции объектов на базу и обратно. Т.е. на заполнение графа связей объектов
Аноним 30/04/18 Пнд 21:21:58  1182277
>>1182270
За лишний стейт, и что ооп не про стейт, а про парадигмы ооп и про объектное представление данных тебя уже обоссали.
Ты кукарекнул зачем создавать две создавать две кошки и какая этому причина и я привел конкретный пример стратегии доступа данным, объединенных одним кошачьим интерфейсом.
>>1182274
Еще один.

Или ты один анон?
Аноним 30/04/18 Пнд 21:24:01  1182278
>>1182277
>Ты кукарекнул зачем создавать две создавать две кошки и какая этому причина и я привел конкретный пример стратегии доступа данным, объединенных одним кошачьим интерфейсом.
ты привёл пример необходимости стейта у объектов. Как ты будешь выражать цвет кошки?

>а про парадигмы ооп и про объектное представление данных тебя уже обоссали.
ты сам себя обоссал

>Или ты один анон?
таки да
Аноним 30/04/18 Пнд 21:26:09  1182279
>>1182269
> микрофреймворки
> микросервисов
Можешь привести пример (дать ссылку) минимального приложения на спринг - опубликовать один маленький pojo как веб сервис?
Хотелось бы сравнить с Baratine.
Аноним 30/04/18 Пнд 21:30:10  1182280
>>1182279
шо оно делает?
Аноним 30/04/18 Пнд 21:32:23  1182281
>>1182278
> ты привёл пример необходимости стейта у объектов.
Да ты же сам с собой общаешься! Читаешь не то, что тебе отвечают, а то что тебе хочется читать. Впрочем, причины понятны - ты просто не понимаешь, в силу низости интеллекта, что тебе говорят.
> ты сам себя обоссал
> таки да
Хах, так и знал. Не понимает ООП, несет какую-то хуйню, отрицает необходимость и ограничения сферы использования ОРМ, мелкобуква. Надо было сразу послать необучаемого егорку-долбоеба нахуй и не тратить на тебя время.

Сколько лет сижу на бордах, но ни разу правило не нарушалось - если он мелкобуква, значит он в итоге окажется идиотом. Никаких исключений за годы. Все начинается с мелочей.
>>1182279
Гугли spring data rest - пишешь модель и интерфейс репозитория и в рантайме будут тебе и реализация репозитория, и круд какахень реста.
Аноним 30/04/18 Пнд 21:36:23  1182284
>>1182281
это саморефлексия такая?
Я тебе уже пятое сообщение талдычу, что объекты это стейты, ради стейтов объекты и делают
Несколько кошек потому-что они разные кошки, разность выражается через стейт. Стейт можно менять
Что тебе тут непонятно?
Аноним 30/04/18 Пнд 21:55:50  1182299
>>1182281
>spring data rest

Погуглил.
Хуйня какая-то.
Где там публикация _pojo_ как веб-сервиса?

В этом вашем спринге на каждый пук - тугая струя какой-нибудь бессмысленной хуйни.
Очень напоминает гуглоподелия.
Кстати, Гугол его не купил ещё?

Аноним 30/04/18 Пнд 21:58:14  1182301
>>1182299
>spring data rest
это очередная магия по генерации sql/hql из названия методов. Зачем это нужно? Хз как по мне. Очередная "крутая" хрень для хэллоуворлдов
Аноним 30/04/18 Пнд 22:02:09  1182309
>>1182301
Не нужна. Но есть, раз анон просил.

В продакшене если так уж нада существуют data api платформы, но с ними есть нюансы.
Аноним 30/04/18 Пнд 22:08:25  1182312
>>1182301
>Очередная "крутая" хрень для хэллоуворлдов

У меня такое ощущение от спринга в целом, лол.

Я понимаю, что я не совсем прав, наверное, но ощущение именно такое.
Представляю, насколько это всё раздувается в реальных больших проектах.
Аноним 30/04/18 Пнд 22:26:33  1182325
>>1182279
>минимального приложения на спринг - опубликовать один маленький pojo как веб сервис?
Иными словами, hello world rest?
https://projects.spring.io/spring-boot/
Для реактивных хипстеров теперь еще есть webflux
Аноним 30/04/18 Пнд 22:31:06  1182328
>>1182274
Таки а в слове весь тебе какая часть была непонятна?
Аноним 30/04/18 Пнд 23:31:01  1182350
Вряд ли смогу внятно описать, но хуй с ним. Я не программист по специальности\рабочему опыту, но лет 10 говнокожу по настроению всякие говномодики к играм выше уровня "заменить 10 единиц урона на 15", писал свои скрипты к арме и т.п. Есть небольшой опыт разработки на шарпе и яве. Есть общее понимание основ ООП за рамками академических задач. Но блядь, вот решил снова обновить знания по яве, попытаться перекатиться с текущей практически чисто менеджерской должности в более рабочую. Начал с сортировки пузырьком и обосрался сразу же. Нет, саму сортировку я написал за 15 минут без проблем, появилась идея визуализировать, сохранив все промежуточные варианты массива в лист и отрисовывать. Сохранял тупо через List<> array; array.add(currentSortArray) в конце каждой итерации сортировки. В результате я получил 86 одинаковых массивов и долго скреб тупую башку - почему. Потом вспомнил о такой замечательной фразе как "ссылочный тип". В чем вопрос - я постоянно проебываюсь не на незнании алгоритмов(хотя понятное дело там тоже не блещу), а на уровне понимания, как работает конкретный язык в целом, видимости, типизация, етс. Как это можно эффективно починить, кроме как поработать в разработке 2-3 месяца?
Аноним 30/04/18 Пнд 23:38:13  1182354
>>1182350
Только практикой, как ещё?
Читать теорию без практики - бессмысленно.
Алсо, большинство вещей, обычно не понимаемых ньюфагами - не специфичны для конкретного языка.

И да, не стоит слишком много и сразу от себя хотеть. То, что ты только что рассказал - совершенно нормально.
Аноним 01/05/18 Втр 01:00:03  1182376
>>1182350
Ты слишком строг к себе. Всё, что ты написал, нарабатывается практикой. Могу посоветовать использовать листик и бумажку с некоторыми алгоритмами, чтобы буквально видеть что должна вывести программа, и что она выводит на самом деле.
Аноним 01/05/18 Втр 02:59:55  1182393
>>1182376
Проблема была не в алгоритме, а в моем незнании, что массив является ссылочным типом, очевидно, что такой проеб на собесе = вылет с него нахуй. И при этом я наверняка смотрел видос с полгода назад, писал на это код, но снова забыл из-за неиспользования, а ведь типы это азы. Старый даун похоже, нихуя не запоминаю последнее время, даже что постоянно делаю.
Аноним 01/05/18 Втр 03:31:33  1182397
>>1182393
После определенной итерации проеба ты будешь вспоминать, почему он может возникнуть. Просто больше пиши и, что самое главное, постоянно.
Аноним 01/05/18 Втр 10:19:33  1182439
>>1182393
Так чего ты так зациклился на ссылочных типах, все что не примитив - ссылка. Если метод не возврщает объект, то это может быть мутатор и тд.
Аноним 01/05/18 Втр 23:17:06  1182828
сап, джавач! Есть вопрос, но сначала ввводная: есть две сущности, отношение oneToMany, есть два CrudRepository для них(стандартные jpa.repository просто интерфейсы). Возникла такая задача - удалить последнюю сущность(из тех, которых м.б. много). Как это лучше сделать? В том месте в коде, где возникла задача удалить - брать первый репозиторий, вытаскивать всю коллекцию элементов(которые Many), узнавать размер коллекции и удалять? Или логичнее расширить интерфейс, добавить метод и в нем уже делать все эти операции? Или вообще возможно написать код на HQL?
Аноним 01/05/18 Втр 23:45:44  1182849
>>1182828
Орнул чет. Яркий пример встречи с реальностью человека для которого орм это серебряная пуля и избавление от sql.

order by id desc
limit 1;
Аноним 02/05/18 Срд 00:14:27  1182877
>>1182849
Ну вроде не осталось на планете людей, которые топят за ненужность знания хоть каких-то основ sql даже при работе с орм. Но этот и правда совсем макакен.
Аноним 02/05/18 Срд 00:46:50  1182901
hash.PNG (22Кб, 573x358)
Сап анон
Подскажи пожалуйста, можно ли реализовать запись Key + Value в Hashmap через scanner?
Например каждый .put будет разделяться ";" (один put == одной книге)
Вначале я записываю имя книги(String) -> Enter -> true или false(Boolean) -> ; -> следующая книга -> когда список книг закончился, то пишу ключевое слово STOP(константа EXIT_KEYWORD)
и мне выводится список книг с true\false (прочитана\нет)
на пике мой говнокод, работает через жопу


public static void main(final String[] args) {
Hashtable<String, Boolean> books = new Hashtable<String, Boolean>();
ArrayList<String> bookArray = new ArrayList<String>();
Scanner in = new Scanner(System.in);


while (in.hasNext()) {
String bookName = in.next();
if (EXIT_KEYWORD.equals(bookName)) {
break;
}
bookArray.add(bookName);
boolean isCompleted = in.hasNextBoolean();
books.put(bookName, isCompleted);
// in.useDelimiter(";");
}

for (Map.Entry<String, Boolean> entry : books.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
}
Построение графиков Аноним 02/05/18 Срд 03:01:25  1182931
BarChart.png (32Кб, 700x522)
1525219291336.jpeg (606Кб, 752x1336)
Сап, погромиздач, подскажите, пожалуйста, хорошую библиотеку для построения графиков на джаве яве. Смотрел jfreechart, но инфе по ней ноль.
Аноним 02/05/18 Срд 03:33:31  1182937
>>1182901
Если формат типа такого:
Book1;true
Book2;false
То бери от сканнера nextLine, а потом split по ;
Аноним 02/05/18 Срд 03:49:39  1182940
>>1182901
А какой в этом смысл?
Почему бы не набрать всё в файл, а потом прочитать?
Аноним 02/05/18 Срд 11:04:25  1183006
>>1182901
Используй хэшмап вместо хэштейбла. Загугли причину.
Ты добавляешь книги в свой bookArray, но не используешь его. Зачем?
Пикрил.
Аноним 02/05/18 Срд 11:05:10  1183007
Capture.JPG (33Кб, 490x372)
>>1183006
Аноним 02/05/18 Срд 12:50:29  1183055
>>1182931
Вот это годнота https://canvasjs.com/
Аноним 02/05/18 Срд 13:15:13  1183086
1511029717.jpg (81Кб, 450x557)
15103916612110.jpg (57Кб, 600x546)
reaction1432379[...].jpg (59Кб, 479x479)
1510968467474.jpg (76Кб, 600x564)
>>1183055
Огромное тебе спасибо.
Аноним 02/05/18 Срд 17:41:28  1183212
Как вы помните, такие модули, как CORBA и Java EE, стали устаревшими с выходом Java Standard Edition 9. Oracle планировала их убрать из Java, и в 11-ой версии эта идея станет реальностью.

В декабре 2016-го была представлена Java SE 6, которая включила в себя стек web-сервисов и 4 технологии Java Enterprise Edition, среди которых оказались JAF, JAX-WS, Common Annotations for Java и JAXB. Время шло, и версии EE стремительно развивались, так что возникало несоответствие данных технологий, а техническая поддержка двух редакций только усложнялась. Вскоре, когда появились автономные версии Java Enterprise Edition на независимых ресурсах, было объявлено об отсутствии надобности включать их в JDK и Java SE.

Даже сейчас некоторые ПО, разработанные на базе JDK для API и инструментов Java EE, не запускаются и даже не компилируются. 6-8 версии повлияли на усиление несовместимости. В итоге представители Oracle сделали заявление о том, что разработчики могут развернуть альтернативные версии Enterprise Edition.

А вот архитектура CORBA и вовсе признана пережитком прошлого, так как ее истоки лежат в далеких 90-х. Oracle не выявила интереса к созданию современных приложений на базе CORBA, да и стоимость поддержки перевешивает получаемые преимущества.

На данный момент не существует версий CORBA, которые бы поддерживались независимыми разработчиками, да и вряд ли кто-то захочет взять на себя бремя поддержки API.

Что же касается JavaFX – модули будут удалены, и в дальнейших планах обновления, которое производится раз в 6 месяцев, они не появляются.


Нихуя не понял, java ee официально отдана эклипсу и больше не будет поддерживаться? Объясните на пальцах, что это значит вообще.
Аноним 02/05/18 Срд 17:59:55  1183216
>>1183212
Эти модули выкидывают из jdk. Даже интерфейсы. Ну и да, с подключением.
Аноним 02/05/18 Срд 18:11:20  1183217
>>1183216
Так и как теперь интерпрайз делать? Грузить все лабы с левых репозиториев? Старый интерпрайз код на новой джаве не взлетит? И нахер это все делать, если джава только на ее и выживала.
Аноним 02/05/18 Срд 18:16:21  1183222
>>1183217
>джава только на ее и выживала
Охуительные истории, браток.
Хочешь поддерживать ЕЕ легаси - не меняй версию на проекте.
Аноним 02/05/18 Срд 19:41:55  1183254
>>1183217
>Грузить все лабы с левых репозиториев? Старый интерпрайз код на новой джаве не взлетит?
Из Java SE (jdk) выкидывают куски Java EE, которые там зачем-то были. Из самих EE-серверов они никуда не денутся. В любом случае с репозиториями в чем проблема? Грузи не с левых.

>Так и как теперь интерпрайз делать?
Как и раньше, на спринге.
Аноним 02/05/18 Срд 21:05:33  1183301
>>1182078
>но в большинстве крупных проектов без orm никуда
Ты понимаешь, что это убогая попытка адаптировать реляционные отношения и реляционную алгебру к объектам в Джаве? Типа, в начале удобно, точнее, иллюзия удобства, а потом огребаешь кучу багов, многие из которых еще и хуй найдешь.
Аноним 02/05/18 Срд 21:18:58  1183304
>>1182147
Погугли про lazy load что-ли. Хибернейт ему выгружает весь граф видите ли, ну охуеть
Аноним 02/05/18 Срд 21:33:26  1183315
>>1183304
Вначале подключаешь инструмент, а потом блокируешь его функциональность. Очень удобно.

Добавлю, что с этой лэйзи очень много ебли. Думаешь просто-так по-умолчанию стоит игер?
Аноним 02/05/18 Срд 22:05:12  1183331
>>1183315
>Думаешь просто-так по-умолчанию стоит игер?
Думаю, просто так. С дефолтным lazy было бы гораздо лучше
Аноним 02/05/18 Срд 22:08:32  1183335
>>1183007
Благодарю анон!
Аноним 02/05/18 Срд 22:13:08  1183337
>>1183301
>попытка адаптировать реляционные отношения и реляционную алгебру к объектам в Джаве
Это всего лишь маппинг результатов выполнения запросов в объектную модель. Внезапно, реляционная модель хорошо вписывается в ОО.
>огребаешь кучу багов, многие из которых еще и хуй найдешь
Не было значимых проблем ни на одном проекте. Возможно потому, что читали доки и понимали, что вообще происходит, а не пытались наговнять что-то работающее. Попробуй, рекомендую.

>>1183315
Если для тебя орм - это хуяк хуяк и наконецта появились какие-то объектики в выполнении - да, конечно, отключение lazy loading'а может выглядеть как
>подключаешь инструмент, а потом блокируешь его функциональность
Аноним 02/05/18 Срд 22:29:26  1183340
>>1183337
>Это всего лишь маппинг результатов выполнения запросов в объектную модель
всезапно, это решает один написанный маппер. ОРМ снова не нужна

>Не было значимых проблем ни на одном проекте
значит это галера с гостевыми досками. Нахуячили что-то работающее, сдали, а дальше хоть трава не расти

>Если для тебя орм - это хуяк хуяк и наконецта появились какие-то объектики в выполнении - да
а для чего ещё?
Аноним 02/05/18 Срд 22:42:14  1183347
Аноны, которые тут хейтят хибернейт (и вообще ORMы), поделитесь опытом, как вы без него живете. С одной стороны, понятно, сложный и опасный инструмент, нужно уметь обходить грабли, и это подзаебывает. С другой стороны, в этом нашем ынтерпрайзе бывают OLTP-системы, которые жонглируют огромным количеством связанных сущностей; допустим, есть у меня сущность типа "заказ", N связанных сущностей с фактами об этом заказе и дохера бизнес-логики, в которой в разных местах нужно вытаскивать этот заказ и что-то из этих N в разных комбинациях и по разным условиям.
И вот смотрю я на это и думаю - если писать каждый необходимый запрос на голом SQL (или даже на jooqе), не заебусь ли я еще больше, чем от хибернейта. Вы делали что-то подобное без ORM? Жив ли брат?
Аноним 02/05/18 Срд 22:45:34  1183348
>>1183347
Хэйтящие инструмент, при этом даже не спрашивая область применения и проект - это либо фанатики, либо студентики, у которых споры на тему самого лучшего языка программирования уже стихли, но мозги пока не проклюнулись. Спорить бесполезно что с одними, что с другими, один хуй ничего из себя не представляют.
Аноним 02/05/18 Срд 22:46:39  1183349
>>1183340
>а для чего ещё?
Больше вопросов нет, откланиваюсь.
Аноним 02/05/18 Срд 22:50:32  1183350
>>1183347
> N связанных сущностей с фактами об этом заказе и дохера бизнес-логики, в которой в разных местах нужно вытаскивать этот заказ и что-то из этих N в разных комбинациях и по разным условиям.
а хибернейт думаешь магией оперирует? Он либо достаёт все связанные объекты (на каждую связанную сущность отдельный запрос) и помещает это в память (тут главное не проебаться, чтобы он не начал тащить лишнего), либо опять-же надо писать запросы на hql, который хуже чем голый sql
Аноним 02/05/18 Срд 22:51:00  1183351
>>1183349
скатертью по жопе
Аноним 02/05/18 Срд 22:52:53  1183353
>>1183350
>Он либо достаёт все связанные объекты (на каждую связанную сущность отдельный запрос)
Отличная история. Если ты не нахуевертил с конфигом, то запросы будут оптимизироваться, исходя из того, что один большой запрос выгоднее сотни мелких.
Аноним 02/05/18 Срд 22:57:01  1183355
>>1183353
нихуя. У меня оно хуячило сотнями мелких
Аноним 02/05/18 Срд 23:01:49  1183360
.webm (1092Кб, 720x480, 00:00:05)
>>1183355
Ты бы хоть книжку почитал, понял бы почему.

Хотя, не уверен, что ты умеешь читать.
Аноним 02/05/18 Срд 23:04:41  1183362
>>1183360
т.е. надо читать книжку, чтобы заставить "инструмент" не косячить. А баги там исправлять случайно не нужно?
Аноним 02/05/18 Срд 23:05:27  1183363
>>1183212
>Что же касается JavaFX
Ну, я ещё хуй знает когда говорил, что Оракл слил это дело.

Формально они это заопенсорсили, типа - кому надо - пишите.
Ни компонентов нормальных, ни хуя вообще нету.
И в опенсорсе такие вещи не появляются, это слишком дорого.
Короче - пизда FX'у.

Да и хуй с ним.
Мертворожденная хуета.
Кому оно нравится, те просто не пробовали писать ничего серьёзного на нём.

Зато Swing будет поддерживаться минимум до 26 года.
И дальше будет, я думаю, куда эти бляди денутся, лол.
Аноним 02/05/18 Срд 23:09:29  1183367
>>1183362
Если ты себе в ебло лопату вколачиваешь, то это не вина инструмента.
Такие потом и кричат, что орм - это сложна, поэтому нинужна.
Аноним 02/05/18 Срд 23:11:56  1183369
>>1183367
мартышки плакали, кололись, но продолжали жрать кактус
Аноним 02/05/18 Срд 23:17:29  1183373
.jpg (184Кб, 1280x899)
.webm (863Кб, 888x498, 00:00:05)
>>1183362
> т.е. надо читать книжку, чтобы использовать инструмент
Аноним 02/05/18 Срд 23:18:42  1183374
>>1183350
>а хибернейт думаешь магией оперирует?
Хибернейт вполне реально заставить вытаскивать только то, что тебе нужно в данный момент (если не ставить везде изначально eager), причем джойном. Но да, для этого надо не быть дебилом и читать книжку, отсюда оговорка про сложность инструмента. По своему опыту я скорее склоняюсь к тому, что для многих проектов эту сложность оправдывает отсутствие необходимости писать руками миллиард sql-запросов, но послушал бы success story полностью отказавшихся от ORM.
Аноним 02/05/18 Срд 23:21:59  1183377
>>1183304
> lazy load
Лютая хуита. Если мне и надо будет использовать ORM, я всегда буду отключать эту хуйню и загружать данные исключительно ручками (оно же eager loading).
Аноним 02/05/18 Срд 23:27:41  1183381
>>1183377
>загружать данные исключительно ручками
>eager loading
Слишком толсто
Аноним 02/05/18 Срд 23:31:40  1183388
>>1183381
Что толсто? Конкретно в жаве я с ORM дело не имел, однако в EF можно было либо загрузить только основные данные, а косвенные данные (например ссылка на другой замапленный объект) он загружал по первому запросу (что и есть ленивая загрузка), либо ещё при загрузке начальных данных указывать какие косвенные данные надо сразу загрузить (это и называлось eager loading). И ленивую загрузку я всегда отключал, ибо нинужно.
Аноним 02/05/18 Срд 23:33:10  1183390
Почему в javafx нельзя использовать обычные css-свойства? Тупо сделали, так лень свою тему под приложение пилить.
Аноним 02/05/18 Срд 23:49:02  1183414
>>1183388
В контексте >>1182147 на которые ты отвечал, lazy относилось к описанию связей на уровне сущностей, а не на уровне конкретного запроса. Это нужно, чтобы случайно не вытянуть полБД в нагрузку к одному объекту. Т.е. в хибернейте "загружать данные ручками" (а это единственный здоровый вариант) означает поставить для всех связей lazy и описывать на уровне запроса, какие связи подтягивать, о чем и шла речь.
Аноним 03/05/18 Чтв 00:31:54  1183453
>>1183374
>но послушал бы success story полностью отказавшихся от ORM
Начинал проект на хибернейте. Как вышло в прод - полезли пиздецы.
Например : оператор открывает карточку заказа, в это время водитель берет заказ, меняя у него статус. Оператор нажимает сейв, и объекту ставится старый неактуальный статус. Водила жалуется, что у него пропал взятый заказ.
Ставить блокировку при открытии карточки заказа? Нельзя, водилы будут жаловаться, что приложение зависло.
Как решил? Сделал отдельный метод для операторской правки - оно правит только нужные поля, и метод для взятия заказа - оно правит другие поля.
Как это сделать хибернейтом? Я не знаю. Хибернейт апдейтит все поля разом.

Дальше. Перед отправкой объект надо преобразовать из entity формата бд в dto формата клиента. Я делал это через конвертер.
Т.к. запросов было много, это преобразование кушало очень много памяти. Сделал jdbc маппер, чтобы оно конвертило сразу в dto внешней системы. Потребление памяти упало вдвое.

Постоянные запросы сущности по ид. Хуй знает кто их вызывает, и они были в огромном количестве. Избавился от них только отказавшись от хибера, написав все запросы руками. Тоже упало количество запросов к бд вдвое, снизилась загрузка цп.

Как нормально делать? DAO для каждой сущности, внутри методы получения этой сущности по определенным полям.
Если сервис методу нужны какие-то сущности, то он через эти dao их получает
Аноним 03/05/18 Чтв 01:02:51  1183472
>>1183315
Не блокируешь, а корректируешь. Дефолтные настройки подойдут для сэмплов и небольших проектов, а дальше уже тюнишь постепенно, сперва lazy load, потом 2nd level cache, потом и до чистого sql доходит в критичных местах
Аноним 03/05/18 Чтв 01:04:12  1183473
>>1183453
Всё правильно.
Explicit is better than implicit и всё такое.
Но школоте и мамкиным сеньёрам похуй, разумеется.

Особенно интересным такое кино становится, когда тебе надо одновременно работать с двумя физическими БД в одной транзакции, например.

>DAO для каждой сущности
Сейчас набегут модные девелоперы на гироскутерах из кофешопа и, расплёскивая смузи, расскажут, как сильно ты отстал от моды.

Недавно только читал такое в одной книжке.
DAO is old fashion, suka bljad.
Аноним 03/05/18 Чтв 01:11:32  1183478
>>1183453
Спасибо. Собственно, самый интересный вопрос тут - что в конечном счете оказалось бы эффективнее по трудозатратам, научиться готовить хибернейт (к примеру, апдейтить не все поля в нем можно, но в hello world примерах, конечно, об этом не пишут, надо копать) или писать все на jdbc.
Аноним 03/05/18 Чтв 01:25:10  1183479
>>1183453
> Оператор нажимает сейв, и объекту ставится старый неактуальный статус. Водила жалуется, что у него пропал взятый заказ.
> Ставить блокировку при открытии карточки заказа?
Открой для себя оптимистичную блокировку. И с прямым sql проблема будет, кстати та же самая.
> Хибернейт апдейтит все поля разом.
Открой для себя удивительный мир dynamic update.
> Перед отправкой объект надо преобразовать из entity формата бд в dto формата клиента. Я делал это через конвертер.
> Т.к. запросов было много, это преобразование кушало очень много памяти.
Это может косвенно свидетельствовать, что у тебя не очень с реляционным дизайном и сущности слишком большие. Но так или иначе, запрос только конкретных колонок никогда не был плохой идеей и orm тут не при чем. Если ты запрашиваешь всю сущность, а нужно тебе треть колонок, то это просто вейстинг памяти, никакой магии тут нет.
> Постоянные запросы сущности по ид. Хуй знает кто их вызывает, и они были в огромном количестве.
Так и не увлекайся запросами сущностей по id. В половине случаев можно сразу апдейтить с допиленным where.
> Как нормально делать?
Персистенс слой дао/репозиториев, сервис, работающий с ним. Остальное работает только с сервисом. Никакого неконтролируемого доступа всего ко всем.

И важно понимать, что orm это инструмент для круда и сохранения графа объектов. Для всего остального есть прямое написание sql (не важно через билдеры или напрямую юзать jdbc). И в реальных высоконагруженных проектах используется и орм, и прямой sql, а не как обычно бывает - начинают юзать орм, нихуя его не понимают, начинают лепить аналитические запросы, хуйню-говно, все тормозит, орут, что орм говно, все запросы переписывают руками и сидят в говне довольные.
Аноним 03/05/18 Чтв 01:27:35  1183480
Анончики, бытует мнение, что на джаву сейчас стараются не брать как основной язык для стартапов. Берут всякие Nodejs и прочее. Так ли это ?
Аноним 03/05/18 Чтв 01:37:29  1183485
>>1183480
Нет, не так.
Все как и всегда зависит от компетентности и отмороженности того, кто принимает решение.
Инструменты выбираются по назначению, под конкретную задачу. Серебрянной пули нет и не было.

веб-фулстек разработчик с 15+ стажем
Аноним 03/05/18 Чтв 02:36:59  1183500
>>1183480
>для стартапов

Для стартапов язык не так важен.
Важнее краудфандинг через ICO смарт-контрактов на Ethereum.

Гироскутер у тебя есть?
А макбук?
Ближайший кофешоп далеко?
Смузи любишь?

Вот об этом надо думать, а не о языках.
Serverless architectures.
Languageless development.
Вот это вот всё.
Аноним 03/05/18 Чтв 08:40:25  1183527
>>1183500
Кек, а на деле обычно берут то, что вся команда умеет.
Аноним 03/05/18 Чтв 09:30:13  1183538
>>1183527
>команда
https://www.youtube.com/watch?v=XRPUoz1TYro
Аноним 03/05/18 Чтв 10:17:16  1183557
>>1183538
Это в тред it-неудачников в воркаче.
Аноним 03/05/18 Чтв 10:53:43  1183569
Анончики, посоветуйте почитать по аспектам в спринге, чтоб с хорошими примерами кода для копипаста.
Аноним 03/05/18 Чтв 10:59:54  1183572
>>1183485
Легенды о золотых молотках живут в наших сердцах.
Аноним 03/05/18 Чтв 11:54:16  1183582
>>1183569
Смотри Spring-потрошитель на ютубе, более чем достаточно
Аноним 03/05/18 Чтв 11:56:03  1183584
>>1183480
для стартапов на первом этапе очень важна скорость разработки чтобы выкатить что-нибудь в прод как можно раньше. для этого подходит какой-нибудь nodejs и прочие. т.е. для прототипирования. потом при необходимости можно уже переписывать на что-то серьёзное
Аноним 03/05/18 Чтв 11:58:13  1183586
>>1183353
хуй там плавал. от n+1 можно избавиться только с помощью jpql
Аноним 03/05/18 Чтв 12:01:26  1183587
>>1183453
>Например : оператор открывает карточку заказа, в это время водитель берет заказ, меняя у него статус. Оператор нажимает сейв, и объекту ставится старый неактуальный статус. Водила жалуется, что у него пропал взятый заказ.
Я или не понял проблему, или ты сделал какую-то хуйню. Разве это не случай optimistic lock. Вводишь версионную колонку и всё. В твоём случае когда оператор нажимает сейв, у него выкинется optimistic lock exception, можно предложить в этом случае обновить данные. Это же базовый сценарий
Аноним 03/05/18 Чтв 12:12:40  1183590
Анон, поймал себя на том, что все еще пишу на 8 джаве и на 9 и 10 не обращаю внимания. Подскажите каких-то источников, гле подробно(желательно с примерами) показывают что нового завезли в этих версиях
Аноним 03/05/18 Чтв 12:14:55  1183592
>>1183590
Нет, не много. Зато много сломали. Жди 11 жаву и уже после её выхода думай о перекате.
Аноним 03/05/18 Чтв 12:15:39  1183593
>>1183590
У меня аналогично. Жди LTS осенью
Аноним 03/05/18 Чтв 12:18:01  1183594
>>1183587
Это может быть и случай, когда реально никто ничего одновременно не апдейтит, т.е. lock не нужен, но хибернейт перетирает поля просто потому что может. Спас бы @DynamicUpdate, как тут уже писали.
Аноним 03/05/18 Чтв 12:50:11  1183613
>>1183590
То же самое.
Оракл решил позаниматься хуйнёй и попилить бюджет и наши нервы.
Аноним 03/05/18 Чтв 13:50:10  1183652
>>1183590
Jshell завезли для автотестов, и все в общем-то. Половина библиотек на 9 и 10 не работает.
Аноним 03/05/18 Чтв 14:07:20  1183666
В контроллере, RequestParam и PathVariable лучше принмать как примитивы или врапперы? Я такой, что лучше б примитивы получил, но увидел что очень многие именно врапперы принимают и подумал, а вдруг там изначально враппер и оно аутобоксить будет
Аноним 03/05/18 Чтв 14:35:07  1183683
>>1183666
Смотря что у тебя за фронт
На перформанс оно не влияет особо
Аноним 03/05/18 Чтв 15:37:41  1183707
>>1183652
> Jshell
И какой в нём смысл, если есть груви?
Аноним 03/05/18 Чтв 15:39:16  1183709
>>1183453
А на чём у тебя сделан интерфейс?
Аноним 03/05/18 Чтв 16:09:48  1183721
>>1183709
Смартфоны для водил и делфи (молчать) для диспетчеров. И тем и тем отдаю json по http
Аноним 03/05/18 Чтв 16:22:12  1183725
>>1183453
Т р а н з а к ц и я
Аноним 03/05/18 Чтв 16:55:54  1183745
>>1183721
А на смартфонах?
Веб?
Аноним 03/05/18 Чтв 16:57:33  1183747
>>1183745
нет, программа
Аноним 03/05/18 Чтв 17:00:22  1183748
>>1183725
Я не он, но спрошу - каким хуем здесь замешана транзакция?

Тут или блокировки/версии на уровне БД (как пишут выше), или блокировки на уровне логики приложения.
Выбор зависит от задачи.

Например, блокировки на уровне БД не подходят, если мы не хотим, чтобы набив форму строк на 300 человек вдруг увидел, что не может её сохранить, и должен набить заново. Людям такое не нравится.

Или ты хочешь, чтобы транзакция висела открытой неопределённо долго?
Аноним 03/05/18 Чтв 17:22:59  1183762
>>1182350
>List<> array; array.add(currentSortArray)
Ты там List<Integer[]> array = new ArrayList<>() наговнякал что ли? о_О
Пиздец у тебя насрано в голове, земля пухом. Читай блядь любой базовый гайд по жабе, ты букваря считай не знаешь.
Аноним 03/05/18 Чтв 17:48:07  1183775
Sup джавач
Есть господа с ебрама, которые могут пояснить недоджуну за з/п на L1?
Аноним 03/05/18 Чтв 18:05:42  1183780
faggot.jpg (29Кб, 367x451)
>>1183721
>делфи
АХАХАХАХАХАХА
Аноним 03/05/18 Чтв 18:22:37  1183786
>>1183780
делфи лучше современной веб-параши, с точки зрения бизнеса. Да и разработки.
Если именно десктоп нужен
Аноним 03/05/18 Чтв 18:52:08  1183794
>>1183337
>Внезапно, реляционная модель хорошо вписывается в ОО.
Доставь примеры наследования из реляционной модели.
Аноним 03/05/18 Чтв 18:57:31  1183799
>>1183794
Таблица ссылающаяся на таблицу базовой сущности. Наследуемые поля пишутся в базовую, специфичные для дочернего класса - в новую.
Аноним 03/05/18 Чтв 18:57:44  1183800
>>1183340
>это решает один написанный маппер
Ну да, MyBatis например. А эта хуйня кривая, которая что-то там без твоего ведома подгружает или сохраняет/удаляет, нахуй не нужна.
Аноним 03/05/18 Чтв 19:01:08  1183801
>>1183347
>если писать каждый необходимый запрос на голом SQL (или даже на jooqе), не заебусь ли я еще больше, чем от хибернейта
Проблема современных кодеров в том, что они не могут в SQL. Поэтому для них Hibernate кажется чем-то охуенным. А все дело в кривых руках, на самом-то деле.
Аноним 03/05/18 Чтв 19:08:19  1183806
>>1183353
>Если ты не нахуевертил с конфигом, то запросы будут оптимизироваться, исходя из того, что один большой запрос выгоднее сотни мелких.
Ты, братишка, даже основы баз данных не осилил, поэтому для тебя SQL и реляционная модель - эта сложна. Тебе привычнее и понятнее пердолиться с объектиками. Поэтому ты и возбудился на критику Hibernate. Ну да ладно, земля тебе пухом.
Аноним 03/05/18 Чтв 19:09:51  1183807
>>1183367
>то это не вина инструмента
Нет ни одной задачи, для которой подходит Hibernate. Следствие --> он не нужен.
Аноним 03/05/18 Чтв 19:12:23  1183810
>>1183453
>Оператор нажимает сейв, и объекту ставится старый неактуальный статус.
Optimistic locking.
Аноним 03/05/18 Чтв 19:21:12  1183812
>>1183799
>Таблица ссылающаяся на таблицу базовой сущности.
Вот ведь хуйня какая: в реляционной модели эти две таблицы будут разными типами, а в объектной - coercible.
Аноним 03/05/18 Чтв 19:24:00  1183813
>>1183810
да, только сейчас об ней прочитал.
Но всё-равно это плохое решение: у диспетчеров зарплата зависит от скорости работы. А тут постоянно будет вылетать ошибки и постоянно нужно заново заполнять поля данными, которые они уже забыли.

DynamicUpdate хибернейтовское лучше бы подошло. Тоже только сейчас об нём узнал.
При этом главное - следить, чтобы поля для водилы и для диспа не пересекались.
Аноним 03/05/18 Чтв 19:58:18  1183843
>>1183801
>Проблема современных кодеров в том, что они не могут в SQL
Если кто-то может в SQL, обязательно ли это значит, что ему нужно, как покорной макаке, соглашаться набивать на нем руками 145 однотипных джойнов и апдейтов? Может ему лучше приберечь свои охуенные знания SQL для чего-то более стоящего вроде развесистых аналитических запросов?
Аноним 03/05/18 Чтв 20:02:09  1183847
>>1183843
>145 однотипных джойнов и апдейтов?
что за мифы. Лор например написан без хибернейта. Можешь посмотреть, есть ли там 100500 однотипных джойнов

https://github.com/maxcom/lorsource
Аноним 03/05/18 Чтв 20:37:09  1183868
Аноны, как мне вытащить именно 10 строку из файла ("file.txt")?
Аноним 03/05/18 Чтв 20:46:33  1183877
>>1183868
попробуй так
https://ideone.com/JDHBy5
Аноним 03/05/18 Чтв 20:47:24  1183878
>>1183847
>что за мифы
Это реалии жирного ынтырпрайза, с которым мне приходилось иметь дело. Для коментов на сайте может быть и не 100500, да.
Но вот возьмем даже этот lorsource. Там около 25 dao, открываем PollDao и видим штук 15 строк типа
private static final String updateMultiselect = "UPDATE polls SET multiselect=? WHERE id=?";
25 умножаем на 15... Уже достаточно работы для SQL-эксперта.
Аноним 03/05/18 Чтв 20:51:50  1183882
>>1183878
точно такие-же запросы придётся ебашить на ублюдочном hql
Аноним 03/05/18 Чтв 21:01:16  1183893
>>1183882
Как минимум большую часть (но не все, да) апдейтов не придется ебашить, будешь вместо этого сеттеры сущностей вызывать. А простые селекты с джойнами писать на criteria сильно приятнее, чем на sql.
Аноним 03/05/18 Чтв 21:08:02  1183902
>>1183843
>как покорной макаке, соглашаться набивать на нем руками 145 однотипных джойнов и апдейтов?

Про то, что код, особенно однотипный, можно генерировать, ты слышал когда-нибудь?
Попробуй - понравится.

Аноним 03/05/18 Чтв 21:13:39  1183907
Как сделать чтобы BufferedReader readLine не блочил все ?
У меня оно только одну строчку с клиента принимает и все
Аноним 03/05/18 Чтв 21:14:15  1183908
>>1183786
Ничего плохого в дельфи нет.
Если речь идёт о формошлёпстве.

Но, как быть с деплойментом?
Свинг в виде апплета или вебстарта - это несколько другой уровень.

Хотя, если у тебя одна точка, и приложение лежит на сетевой шаре, то похуй, конечно но, всё равно неудобно.

И, в случае java-java, можно использовать Hessian в качестве протокола, а это совсем уже другой уровень.
Для андроида, он вроде-бы, тоже есть, я просто не пишу под андроид.
Аноним 03/05/18 Чтв 21:19:28  1183911
>>1183908
>Hessian
бинарный проприетарный.
Спасибо, не надо

>Но, как быть с деплойментом?
В ярлыке было прописано автообновление из шары. Не знаю, это виндовая фишечка или дельфовая

>Свинг в виде апплета или вебстарта - это несколько другой уровень.
свинг сыроватый. Я все эти веб-аппликухи, они медленные по сравнению с десктопом. И сыроватые
Аноним 03/05/18 Чтв 21:19:52  1183913
>>1183877
>https://ideone.com/JDHBy5
Спасибо!
Аноним 03/05/18 Чтв 21:36:21  1183921
Сап ентерпрайзач. Есть два glassfish'а, один локальный, другой на серваке. Также есть две JRE, обе 1.8.., локально приложуха показывает нормальное время в нужной таймзоне, а на серваке на час позже. Я не будь дурак, запилил кусок с Calendar.getInstance().getTime(), залил на сервак и скомпилил его той же явой. И он, сука, показал правильное время и ТЗ, получается дефолтная ТЗ jvm правильная. Т.о показывает неправильно только если задеплоить приложение на удаленный GF. Но в глассфише нет таких настроек, которые влияли бы на время. Что за хуйня? Хотя бы примерное направление может подскажете, гугл нихуя толком не выдал.
Аноним 03/05/18 Чтв 21:39:23  1183924
>>1183902
Ну дык вот мне ORM по мере сил и генерирует. Посоветуешь какие-нибудь еще подходы к генерации SQL?
Аноним 03/05/18 Чтв 21:41:57  1183927
>>1183921
проверь системное время на удалённом серваке
Аноним 03/05/18 Чтв 21:44:19  1183930
>>1183911
>бинарный проприетарный.
Опенсорсный. И ему лет триста уже.
Что до бинарности - это плюс, а не минус - он компактный.
У них есть то же самое, но текстовое - Burlap.
Но, он редко нужен.

На самом деле - охуенная вещь.
Ты пишешь код так, как будто никаких веб-сервисов просто нет, и всё локально. Просто вызывешь методы интерфейса сервиса, остальное делает прокси. Асинхронность, естественно, руками делается - SwingWorker etc.

В спринге тоже поддерживается, кстати.

>веб-аппликухи
Свинг это десктоп.

>свинг сыроватый
Лол.
Староватый он, это да.
Но, всяко помоложе дельфи.
Компоненты - JIDE.

Понятно, что ты не будешь переписывать своё дельфи на свинг.
Это я скорее о том, как вообще делаются такие вещи.
Аноним 03/05/18 Чтв 21:44:39  1183931
>>1183927
Само собой все ок.
Аноним 03/05/18 Чтв 21:46:34  1183932
>>1183931
"неправильное время" при записи в базу? В БД тоже есть настройка часового пояса
Аноним 03/05/18 Чтв 21:50:58  1183934
>>1183921
Если считать, что все упирается во встроенные в жабу таймзоны, то сравнивай для начала версии jdk/jre; именно на чем запускаешь, а не на чем компилируешь, компиляция тут вообще не при чем.
Аноним 03/05/18 Чтв 22:04:36  1183945
>>1183924
>Посоветуешь какие-нибудь еще подходы к генерации SQL?

Примерно, как и в ORM - аннотации, потом рефлекшн и генерация SQL и прочего.
Можно находить свойства - геттеры-сеттеры и без аннотаций.
Руками или через Commons BeanUtils (PropertyUtils).

Если у аннотаций retention policy = class, или просто надо работать с class-файлами, то надо использовать что-то типа ObjectWeb ASM (http://asm.ow2.io/) вместо рефлекшн.

Так же можно, например, генерить код интерфейсов на TypeScript (для сериализации Java-объектов в JSON и использовании на клиенте в JS/TS), чтобы были подсказки в IDE, и т.п.
Аноним 03/05/18 Чтв 22:15:46  1183951
>>1183932
Если б из базы бралось.
>>1183934
Походу единственный вариант разгадать магию. Машинки в одной подсети, все бля одинаковое, даже ОС. Ява тоже, только ревизии, или что там, на пару циферок отличаются.
Аноним 03/05/18 Чтв 22:22:12  1183960
>>1183951
>на пару циферок
Этого достаточно, лол.
Сделай простейший класс, который печатает текущее время. И запусти там и там.
Аноним 03/05/18 Чтв 22:27:17  1183967
>>1183945
>Примерно, как и в ORM - аннотации, потом рефлекшн и генерация SQL и прочего.
Звучит как написать свой более правильный и легковесный ORM. Тоже вариант наверное.
Аноним 03/05/18 Чтв 23:25:04  1184003
>>1183967
Я так генерирую xml для iBatis SqlMap.
А также прочее подобное, напр. XSD.

Можно и свой ORM написать, конечно, но, если только для общего развития.

Ещё можно написать тонкий слой поверх JDBC, чтобы не писать весь этот бойлерплейт каждый раз.
С лямбдами это стало вообще интересно.
Я имею в виду создание PreparedStatement, задание параметров, обработку ResultSet, автоматическое закрытие и т.п.

Аноним 03/05/18 Чтв 23:31:48  1184004
>>1184003
>Ещё можно написать тонкий слой поверх JDBC
>создание PreparedStatement, задание параметров, обработку ResultSet, автоматическое закрытие
Это ты сейчас спринговый JdbcTemplate описал. С этим все понятно, но от написания запросов не спасает.
Аноним 03/05/18 Чтв 23:51:53  1184010
А причем Элвис Пресли к яве? Это ребус какой-то? Никак не могу разгадать.
Аноним 03/05/18 Чтв 23:52:15  1184011
>>1184004
> но от написания запросов не спасает.

Ну, от этого спасает ORM, лол.

На самом деле, если приложение проектируется с нуля в 2018, если там одна БД, если всё под контролем, то, конечно, имеет смысл использовать ORM, заранее учитывая все его особенности.

Просто не всегда всё так радужно.
Java EE существует уже очень много лет.
Гораздо дольше, чем нормальные ORM или тот же спринг.
Также, бывают легаси БД, параллельно работающие с какой-нибудь хуетой, написанной на дельфи в середие 90-х, и т.п.
Поэтому и DAO на JDBC и iBatis и прочее.
Аноним 04/05/18 Птн 00:08:50  1184022
>>1184010
Я бы предположил, что это от того, что на яве пишут те, чья молодость пришлась на
Аноним 04/05/18 Птн 00:11:09  1184024
>>1184022
Те, чья молодость пришлась на, те на яве не пишут, те на яве катаются.
Аноним 04/05/18 Птн 03:47:31  1184062
>>1184011
Но ведь ORM должны использоваться как раз там, где нет четкой привязки к БД. Сегодня PG, завтра оракл.
Аноним 04/05/18 Птн 09:21:49  1184096
>>1184011
Не очень прослеживаю, как соображения про легаси противоречат ORM, ну кроме того, что сами ORM раньше были хуже.
И те, кто кричит, что хибернейт нинужен, они же явно не от того это делают, что на J2EE 1.3 сидят.
Аноним 04/05/18 Птн 09:30:40  1184101
>>1183921
Зачем ты продолжаешь кушать кактус Date/Calendar? Есть JodaTime, есть новое апи времени, есть бекпорт новго апи в конце концов.
Аноним 04/05/18 Птн 09:32:16  1184102
>>1183930
>Свинг это десктоп.
>
>>свинг сыроватый
>Лол.
>Староватый он, это да.
>Но, всяко помоложе дельфи.
>Компоненты - JIDE.
>
Зачем лезть в джава-онли протокол когда есть куча других, клиент может быть не только на ведре, но и веб, и гейос, почему нельзя просто пользоваться протобафом/жсоном....
Аноним 04/05/18 Птн 09:34:26  1184103
>>1184101
Ну ты еще спроси, зачем он glassfish кушает. Явно же не по своей воле.
Аноним 04/05/18 Птн 10:37:13  1184116
>>1183951
> только ревизии, или что там, на пару циферок отличаются
http://www.oracle.com/technetwork/java/javase/tzupdater-readme-136440.html
Аноним 04/05/18 Птн 14:28:27  1184179
почему на Java так неудобно сайты делать? Взять сайт или форум, например пикабу. Дык он на ПХП написан. Почему Java ничего не может предложить?
Аноним 04/05/18 Птн 15:14:53  1184189
>>1184179
Что конкретно неудобно?
Аноним 04/05/18 Птн 15:21:55  1184192
>>1184189
клиентскую логику на JS писать
Аноним 04/05/18 Птн 15:31:11  1184199
>>1184192
Что конкретно неудобно? Я прямо сейчас делаю курсовой проект с Реактом на клиенте и Спрингом на сервере. И они прекрасно дружат. Не знаю, может, есть какие-то критические неудобства, которые всплывают в настоящих проектах, но я пока ни с чем подобным не сталкивался.
Аноним 04/05/18 Птн 16:45:26  1184231
>>1184062
>Сегодня PG, завтра оракл.
В 99,99% случаев переезда на другую БД никогда не будет.
Аноним 04/05/18 Птн 16:52:12  1184234
>>1184231
у нас хотели с файрбёрда перейти на постгрес. Но останавливало огромное количество хранимок, которые надо переписывать и как-то тестировать
Аноним 04/05/18 Птн 20:28:51  1184283
>>1184231
Был один клиент, настойчиво просил перекатить все на постгрес. Перккотили. В итоге купил столько часов, что хватило бы лет на 5. Вроде бы и похуй, но это ещё с учётом того, что было написано с хибернейтом.
Аноним 04/05/18 Птн 20:33:36  1184285
>>1184231
В случае отдельного продукта имеет смысл не делать привязку к конкретной СУБД. У каждого пользователя БД менять не будет, но абстракция позволяет загнать такое ПО большему числу компаний.
Аноним 04/05/18 Птн 22:53:24  1184338
>>1184179
Начнём с того, что на джава-бэкенде можно писать сайты на ПХП (Quercus).
И что?

А есть ещё JSF и просто море всякой разной другой хуеты.
Чем это тебя не устраивает?

Есть Grails.

Ещё и jRuby есть (и рельсы тоже), и даже jython + Django, для совсем уж тонких ценителей.

Улавливаешь мысль?
Аноним 04/05/18 Птн 23:04:07  1184343
>>1183806
Мартыхан пытается угадывать. Чего только не сделаешь, лишь бы доку читать не пришлось!
Аноним 04/05/18 Птн 23:14:37  1184347
>>1183945
>Примерно, как и в ORM - аннотации, потом рефлекшн и генерация SQL и прочего.
>Можно находить свойства - геттеры-сеттеры и без аннотаций.
>Руками или через Commons BeanUtils (PropertyUtils).
А можно не писать велосипеды и использовать орм. Дисциплинированное использование любого вменяемого орм фреймворка даст то, что ты описал без каких-то подводных. Я понимаю, что всегда хочется наговнять своё решение, заточенное под конкретную задачу, но всегда ли это хорошая мысль?
Аноним 04/05/18 Птн 23:22:39  1184351
>>1184347
Я не понял, что генераторы кода не нужны?
Все в спячку?
Аноним 05/05/18 Суб 00:30:08  1184386
>>1183652
И какой кейс использования джейшелла? Есть же груви. А вообще

> 20!8
> не писать тесты на груви котлине
> 20!8
> не писать все на котлине
Аноним 05/05/18 Суб 00:47:09  1184391
>>1183748
Никаким. Это поможет только если изоляция repeatable read, это путь к дедлокам и гробам в лодке с пидором через реку. Правильное решение - дайнемик апдейт и статус заказа вынести в отдельную 1 к 1 сущность (а лучше 1 ко многим, чтобы была история статусов). Водила принял заказ, версия статуса заказа обновилась. Оператор изменил дескрипшн заказа, версия заказа обновилась. А вот если они одновременно изменяют статус заказа - ну тут кому повезет первым, чтобы не было объебанного водителя или оператора.
>>1183775
Ты мы не в той ситуации, чтобы торговаться.
>>1183813
Так ведь проблема лост апдейтов осталась - два оператора изменят заказ и данные первой транзакции затрутся второй. Ты просто ее под паркет спрятал, чтобы не пересекаться с водилами.
>>1183907
Гугли java non blocking io.
>>1183921
Обнови tzdata или джаву. Скорее всего на сервере восьмая джава еще до свистоплясок с изменением часовых поясов.
>>1184062
Полная глупость.
Аноним 05/05/18 Суб 03:53:06  1184425
Есть желающие купить аккаунт на javarush 9 уровня с премиум подпиской до декабря 2018? По цене конечно же договоримся.
ast3rion@rambler.ru пишите
Аноним 05/05/18 Суб 09:17:41  1184441
>>1184351
Велосипеды не нужны, а не генераторы кода.
Аноним 05/05/18 Суб 12:26:24  1184487
>>1184441
Нихуя, ты телепат.
Понятия не имеешь, о чём идёт речь.
Даже не дал себе труда прочитать и понять пост (>>1183945), но спешишь поделиться своим сверхценным мнением.
Иди на хуй, сынок.
Аноним 05/05/18 Суб 13:05:42  1184497
>>1184487
Не бомби, папка.
Аноним 05/05/18 Суб 22:41:32  1184830
Нужно ли в джавадок описывать приватные поля класса?
Аноним 06/05/18 Вск 11:49:46  1184995
Джавагоспода, пишет ли кто-то опенсорс проект на спринге? хотелось бы вкатится, и попробовать свои силы, может быть помочь кому-то
Аноним 06/05/18 Вск 12:48:48  1185031
>>1184830
Нет. Джавадок это документация на публичное апи. Приватные поля не должны на него влиять.
Аноним 06/05/18 Вск 13:40:06  1185067
>>1184995
Зачем, если можно то же самое сделать на работе?
Аноним 06/05/18 Вск 13:56:22  1185072
>>1184830
Я пишу на всё.
Аноним 06/05/18 Вск 14:30:30  1185090
>>1185072
Какова вероятность найти работу если я
Прорешал 6 глав конкретной математики.
Осилил Кормена но не решал.
Могу в sql
Знаю паттерны.
Могу в многопоточность. Имутабельность. Асинхронность. Дедлоки. и тд.
Чтение английского без проблем.
Написал ll(1) парсер регулярных выражений.
Аноним 06/05/18 Вск 14:54:07  1185102
>>1185090
Велика.
Где живёшь-то? Если в миллионнике, то не парься. Сегодня же начни составлять резюме. Погугли, как его правильно составить, это очень важно. И дерзай. Нечего засиживаться, этим многие страдают, хотя уже готовы к работе джуном.
Аноним 06/05/18 Вск 14:57:16  1185104
>>1185090
На Hibernate только ещё глянь
Аноним 06/05/18 Вск 15:04:15  1185112
>>1185090
Напиши гарантированный дедлок. Реальный вопрос с каждого второго собеса.
Аноним 06/05/18 Вск 16:10:06  1185173
>>1185102
В мухосранске в центральной части РФ.
>>1185112
Нужно один кусок кода контролировать двумя или больше мониторами. Бабахнет с высокой долей вероятности. Чтобы исправить нужно определить порядок синхронизации мониоров.
Аноним 06/05/18 Вск 16:52:36  1185195
>>1173657 (OP)
Уважаемые Java господа, реквестирую мнение про автоматизированное тестирование на java, сильный ли зашквар, сложно ли потом перекатиться в разработку?
Аноним 06/05/18 Вск 16:59:49  1185200
>>1185195
Да.
Не получится.
Аноним 06/05/18 Вск 17:37:24  1185225
>>1185200
От чего так? Сильно интересная область или затянет как болото насмерть?
Аноним 06/05/18 Вск 19:28:21  1185305
Навешивать аннотации для json/xml маппинга на теже объекты как и для orm мэппинга норм или лучше создать DTO?
Аноним 06/05/18 Вск 19:40:15  1185310
С помощью javafx можно делать реально классные GUI?
Аноним 06/05/18 Вск 19:41:05  1185312
>>1185305
Однозначно DTO.
Подумай, json-поля могут отличаться. Скажем, в базе дата со временем, а в json дата и время это разные поля. Если будет совмещать entity и маппинг json - получится нечитаемая каша
Аноним 06/05/18 Вск 19:42:28  1185314
>>1185310
Можно, но не нужно. Джава для десктопа не очень. Лучше использовать GTK и Qt
Аноним 06/05/18 Вск 19:52:34  1185322
Рейтаните.
https://github.com/Stingray42/tic-tac-toe
Аноним 06/05/18 Вск 20:11:35  1185336
>>1185322
ну хз, внешне говнокода нет
Аноним 06/05/18 Вск 20:18:53  1185338
>>1185310
IDEA
Аноним 06/05/18 Вск 20:27:16  1185344
>>1185338
Она на свинге.
Аноним 06/05/18 Вск 20:57:47  1185360
>>1185067
Так мне чтобы на работу устроится нужно опыт получить, так я коммитя в опенсорс хочу его заиметь
Аноним 06/05/18 Вск 21:12:34  1185373
>>1185360
Охуительные истории, конечно. Всем похуй на твой джуниорский опыт в опенсорсе. И так, и так будешь джуном. Ну, можешь тратить время впустую, вместо того, чтобы зарабатывать деньги и получать коммерческий опыт, дело твоё.
Аноним 06/05/18 Вск 21:13:29  1185374
>>1185360
Джуниором - не надо.
Если есть вышка, знаешь CS (хотябы базовые структуры данных и сложность алгоритмов), можешь на бумажке развернуть односвязный список, и понимаешь чем inner join отличается от outer - пили контакты "мы с тобой свяжемся".
Аноним 06/05/18 Вск 21:14:50  1185376
>>1185374
Ах, да! ДС онли и гражданство РФ (требование СБ).
Аноним 06/05/18 Вск 21:19:21  1185379
>>1185195
1. Сильно лучше чем ручное.
2. По моему опыту: много народу пыталось, но в итоге никому не удалось. С другой стороны, а зачем? Из QA можно расти в релиз менеджеры, и продукт оунеры. Не говоря уж про началиника отдела QA.
Аноним 06/05/18 Вск 21:32:54  1185388
>>1185379
Зачем тестировать на Java? Это ведь неудобно наверно. На питоне же проще будет, не? А если нужна jvm, то на groovy.
Аноним 06/05/18 Вск 22:44:26  1185431
Посоветуйте каких-нибудь видеокурсов по Java, чтобы по основным вещам типа как устроены коллекции, как работает компилятор и т.д., но не совсем для ньюфагов.
Аноним 06/05/18 Вск 22:50:39  1185438
>>1185031
Не слушай этого. Джавадок добавляется и на приватные поля/методы (смотри jdk). При генерации документации можно указывать, нужно ли включать приватную инфу, поэтому в документации её нет, но в коде есть.
Аноним 06/05/18 Вск 23:16:58  1185446
>>1185173
>Нужно
Хуюжно. Код где?
Аноним 06/05/18 Вск 23:21:42  1185450
Стыдно признать, но вообще не раздупляю многопоточность, не считая каких-то базовых вещей. Опыт почти 2 года. Практически всё это время хуярил на фреймворках вроде play и spring mvc, которые сами об этом заботятся. Я совсем потерян для общества? Как качественно заполнить пробелы? В какой момент я смогу сказать, что разбираюсь в многопоточности?
Аноним 06/05/18 Вск 23:26:17  1185452
>>1185450
Официальный туториал, Java Concurrency in Practice, придумай задачки с использованием нескольких потоков.
А гуру нахуй не надо становиться, имхо. Если не используешь повседневно многопоточку, то всё равно забудется. Главное в общем представлять, что происходит и всё.
Аноним 06/05/18 Вск 23:28:19  1185453
>>1185452
Я писал несложные вещи на плюсах с использованием MPI, поэтому принцип понимаю, конечно, но как это в жабе работает - хуй знает вообще. Буду читать-писать, спасибо. Про Concurrency in Practice слышал хорошие отзывы.
Аноним 06/05/18 Вск 23:29:35  1185455
>>1185453
Вот здесь ещё всё изучи
http://tutorials.jenkov.com/java-concurrency/index.html
Аноним 07/05/18 Пнд 00:41:56  1185476
>>1185373
Блять, я учусь сейчас. Где-то через год-полтора буду искать работу. А это время хочу уделить на развитие.
Аноним 07/05/18 Пнд 00:43:58  1185478
>>1185374
Эх.. я не из России. Может быть у вас есть какие-то опции удалённо поботрачить.
Аноним 07/05/18 Пнд 01:12:19  1185490
>>1185452
Тащемта не нужно понимать именно на низком уровне для 95% задач многопоточности. Достаточно понимать что такое потоки, пулы потоков, почему форкджоинпул не годится для io, понимать что такое синхронизация и никогда ее не использовать, прочитать про мониторы, иметь представление как выполняется асинхронный код, в чем разница между блокирующими и неблокирующими серверами, что такое реактивность, что такое treadlocal переменные и причем тут контекст, и уметь использовать CompletableFuture и фреймворки для многопоточности и до кучи корутины в котлине.

Этого достаточно для решения 95% задач. Если же возникает необходимость в низкоуровневой многопоточности, синхронизации, то в большинстве случае это значит, что активно проебывается дизайн и архитектура приложения и пора юзать евент дривен и евенчуал консистенси подходы.
>>1185450
Нет, это вполне нормально. Я когда пилил кровавый тырпрайз тоже почти не юзал многопоточность - это за меня делал контейнер сервлетов. Только один раз возникла необходимость в синхронизаци и мониторах, и то я бы сейчас уже сделал по другому.
Аноним 07/05/18 Пнд 01:13:09  1185491
>>1185490
> в чем разница между блокирующими и неблокирующими серверами
и io*
Аноним 07/05/18 Пнд 01:34:08  1185501
captcha8888.png (20Кб, 364x150)
>>1185310
=> >>1183363
Классные гуи закончились, лол.
Остались практичные - на свинге.
Аноним 07/05/18 Пнд 02:25:06  1185507
>>1185446
void YOBA1(){
if(monitor1.lock()){
monitor1.enter();
if(monitor2.lock()){
monitor2.enter();
do();
}
}
}


void YOBA2(){
if(monitor2.lock()){
monitor2.enter();
if(monitor1.lock()){
monitor1.enter();
do();
}
}
}
Аноним 07/05/18 Пнд 02:46:20  1185511
image.png (37Кб, 909x387)
Есть менюшка, на каждый пункт мне надо кликнуть. Но почему то на 4 итерации вываливается IndexOutOfBoundsException, типа list.size() == 0. В чем может быть причина?
Аноним 07/05/18 Пнд 09:21:21  1185548
>>1185388
1. Использовать те же библиотеки. Например есть у тебя хитровыебанный формат, так ты берешь ту же библиотеку и парсишь. Иначе придется еще поискать ее для питона.
2. Проще получить помощь от команды разработки. Мы например помогали писать QA фреймоворк для паралельного запуска тестов.
3. Cами сценарии можно и на кукумбере писать.
Аноним 07/05/18 Пнд 09:35:58  1185556
>>1185312
>Однозначно
>могут отличаться
Ты, наверное, на каждый класс однозначно заводишь интерфейс, ведь может когда-нибудь понадобиться еще одна реализация.
Аноним 07/05/18 Пнд 09:55:21  1185561
>>1185556
> Ты, наверное, на каждый класс однозначно заводишь интерфейс
Всегда так делаю с почти каждым сервисом и компонентом с логикой.
Аноним 07/05/18 Пнд 10:17:15  1185570
>>1185561
Не приходило в голову, что проще потом отрефакторить те 3% случаев, где оно действительно понадобится, чем постоянно захламлять код ненужными сущностями?
Аноним 07/05/18 Пнд 10:25:09  1185572
На каком уровне джуну нужно знать sql? Покидайте книжки или курсы, где этот уровень можно получить или хотя бы понять что надо. Пока знаю только всякие простые запросы, как я понял этого мало
Аноним 07/05/18 Пнд 10:40:21  1185580
>>1185570
Нет. Интерфейсы помогают разграничивать функциональность и позволяют сосредотачиваться только на контрактах, их выполнении и тестировании выполнения.

Сильная связность не нужна.
Аноним 07/05/18 Пнд 11:04:06  1185584
>>1185556
Ты в реальных проектах вообще работал? Ты не выживешь без DTO в нехеллоуворлдном проекте.
Аноним 07/05/18 Пнд 11:05:33  1185585
>>1185572
джойны, агрегирование. изучи, что такое индексы. больше особо ничё не надо
Аноним 07/05/18 Пнд 11:09:27  1185587
>>1185507
Забыл free дописать.
Аноним 07/05/18 Пнд 11:09:32  1185588
>>1185507
Во-первых, лок есть, а анлока нет.
Во-вторых, где здесь ГАРАНТИРОВАННЫЙ дэдлок? Сначала отработал первый тред, потом - второй.

Мы вам перезвоним.
Аноним 07/05/18 Пнд 11:11:30  1185589
>>1185588
за базаром следи петушара
Аноним 07/05/18 Пнд 11:14:02  1185591
>>1185589
я Вам вот сейчас честно скажу. что с компанией Epam у Вас теперь в жизни никогда ничего не получится.
Аноним 07/05/18 Пнд 11:18:10  1185592
>>1185511
На кой хер ты каждый раз берешь список заново?
Аноним 07/05/18 Пнд 11:22:10  1185594
>>1185580
>Сильная связность не нужна.
До прямого вызова методов одного сервиса из другого ты, я надеюсь, тоже не опускаешься, ебашишь все на eventах и messageах
Аноним 07/05/18 Пнд 11:23:39  1185595
>>1185594
Все через кафку.
Аноним 07/05/18 Пнд 11:37:14  1185597
>>1185595
Овсяную?
Аноним 07/05/18 Пнд 11:59:44  1185605
>>1185584
Ну ясен хер, что где-то dto понадобятся. А где-то у меня есть простая entity с тремя полями, и я хочу эти же три поля сейчас отдать наружу в том же виде. Ради какого профита тут заниматься копипастой?
Аноним 07/05/18 Пнд 12:22:58  1185621
Как писать автотесты на Java?
Что для этого используется и можете ли посоветовать хорошую статью или видеоурок, где это объясняется?
Аноним 07/05/18 Пнд 12:55:30  1185636
15246692238610.jpg (107Кб, 700x975)
Прошу дать оценочное мнение идеи для пет проекта.

По халтуре приходится вручную распознавать одних и тех же людей на разных фотках. Хотелось бы автоматизировать. Чтобы создавалась папка с общими фотками, у нее подпапка с single фотками. И так, например, для 20 человек.
С нуля мне такое, конечно, не сделать. Нашлась опенсорсная программа faint на java по распознаванию лиц 10 летней давности. Разработчик пишет, что ее можно подключить как библиотеку к своему проекту.

https://faint.sourceforge.io/
https://github.com/jeffrafter/faint

Сложность приемлемая для начального уровня или пока не трогать? Какие технологии могут понадобиться? Можно обойтись только java core?
Или есть какой-то другой общеизвестный подход к решению такой задачи?
Аноним 07/05/18 Пнд 13:45:29  1185642
Снимок.PNG (7Кб, 821x156)
Что это за класс Logger и почему я не могу использовать LoggerFactory

хотя я беру код отсюда
https://github.com/iluwatar/java-design-patterns/tree/master/facade
Аноним 07/05/18 Пнд 13:49:57  1185649
>>1185592
потому что после каждого клика кнопки на странице перерендериваются и если один раз найти нужные элементы, записать в список и просто кликать по ним в цикле, то вываливается - element is not attached to page document
Аноним 07/05/18 Пнд 14:06:37  1185656
>>1185642
Нужна имплементация логгера. Log4j или slf4j
Аноним 07/05/18 Пнд 14:08:59  1185657
>>1185605
У тебя есть одна entity. И есть rest, soap, ещё какие-нибудь кастомные представления данных. Ты на одну эту entity будешь пихать минимум 3 набора аннотаций, а то и больше, для каждого поля? Ты понимаешь, какая это каша? Завтра добавится вычисляемое поле в soap - всё равно переделывать. Как потом отличить при импорте, например, какие поля нужно заполнять? Если на каждое представление своё DTO, то всё кристально прозрачно становится, и занимает секунды для того, чтобы разобраться в структуре данных.

По поводу 3 полей - ни разу не встречались такие entity. В любом случае, сегодня это 3 поля, а завтра 5, а послезавтра 7. Лучше делать всё сразу нормально и единообразно, чтобы был порядок в коде и в голове.
Аноним 07/05/18 Пнд 14:31:35  1185668
>>1185511
причина в кривой верстке, решил проблему пропуском кривых страниц
Аноним 07/05/18 Пнд 14:58:27  1185677
>>1185657
Ну вот я описал конкретную простую ситуацию, а ты в ответ "а вдруг завтра появится soap с вычисляемыми полями". А вдруг не появится? Вдруг я простой круд формошлеплю? Вот когда появится, тогда введу для него dto. А если ничего подобного на горизонте не видно, может все-таки не обязательно удваивать объем сущностей просто на всякий случай?
Аноним 07/05/18 Пнд 15:14:21  1185679
>>1185677
>А вдруг не появится?
Я потому и спросил про опыт работы. Не бывает такого на реальных проектах. Всегда что-то да появляется, и нужно заранее об этом думать.
Аноним 07/05/18 Пнд 15:24:30  1185683
>>1185679
DRY
НЕ ПЛОДИ СУЩНОСТИ БЕЗ НЕОБХОДИМОСТИ КО-КО-КО
Аноним 07/05/18 Пнд 15:33:36  1185685
>>1185683
>When the DRY principle is applied successfully, a modification of any single element of a system does not require a change in other logically unrelated elements. Additionally, elements that are logically related all change predictably and uniformly, and are thus kept in sync.
HTTP-, SOAP-, Database-представления скорее отнесу к logically unrelated elements
Выше писал, почему представления не подходят под logically related all change predictably and uniformly

Ну и
S R P
R
P

Всё, я устал немного спорить.
Аноним 07/05/18 Пнд 15:36:19  1185687
>>1185685
да все эти бест-практис противоречат друг другу и меняются каждый год, не принимай близко к сердцу
Аноним 07/05/18 Пнд 15:42:45  1185689
>>1185679
>Не бывает такого на реальных проектах. Всегда что-то да появляется
Т.е. у тебя ни разу не было такого, что, к примеру, rest-бэкэнд какой-нибудь внутренней админки оставался просто rest-бэкэндом админки?
Аноним 07/05/18 Пнд 15:53:35  1185697
>>1185689
сходу могу вспомнить поле dateFormat, дата в форматированном виде.
На клиенте почему-то не любят unix datetime
Аноним 07/05/18 Пнд 16:11:38  1185709
>>1185697
Да я не об этом, а о разных представлениях типа rest и soap. Ладно, все, хер с ним.
Аноним 07/05/18 Пнд 17:27:20  1185733
>>1185697
Не совсем понял в чем здесь проблема. Ставишь аннотацию для Джексона чтоб превращал в нужный формат и всё.
Аноним 07/05/18 Пнд 20:21:31  1185806
>>1185733
Да даже если б и пришлось отдельный геттер для этого завести, не особенно это ужасно как по мне. Но тот анон настаивает, что низзя ничего такого делать, потому что вдруг через 5 лет понадобится добавить соап, и тогда для этого соапа будут отдельные dto, а для реста нет, о ужас. Гораздо лучше прямо сейчас начинать копипастить каждое новое поле в +1 место.
Аноним 07/05/18 Пнд 20:25:03  1185807
>>1185621
Куда ты лезешь.
Аноним 07/05/18 Пнд 21:19:11  1185844
>>1185806
Что значит в +1? Нужно же ещё маппер написать entity -> dto и dto -> entity по необходимости. И тестами их покрыть.
Аноним 07/05/18 Пнд 21:48:34  1185858
>>1185807
А тебе бы не помешал урок пунктуации русского языка.
Аноним 07/05/18 Пнд 22:11:30  1185868
.png (86Кб, 268x268)
>>1185858
Это было утверждение, а не вопрос.
>>1185844
> 20!8
> не использовать орику, мапстракт, прямые автомапперы из реляционки в дто
Аноним 08/05/18 Втр 01:01:41  1185948
>>1185621
Берешь и гуглишь selenium, инфы море. Если что у тестеров свой тред: https://2ch.hk/wrk/res/1207555.html
Видос что бы быстро вьехать:
https://www.youtube.com/watch?v=N8Rr7rVf1RA&index=186&list=PLBoslWMlaSssPFxMtGr6iV-RgnQbXAYH2&t=413s
Аноним 08/05/18 Втр 09:13:44  1186021
>>1185868
Использовал мапперы в проде? Полная хуета, на то, чтобы разобраться чё куда мапится куча времени уходит. Пришёл к выводу, что ничего лучше вручную написанного мапперы из стены геттеров и сеттеров нет
Аноним 08/05/18 Втр 10:00:30  1186029
>>1186021
> Использовал мапперы в проде?
И в крупных тырпрайзах, и в хипстосервисах.
> Полная хуета, на то, чтобы разобраться чё куда мапится куча времени уходит.
Ты просто тупой.
> ничего лучше вручную написанного мапперы из стены геттеров и сеттеров нет
Ебать ты дегенератище. Мапперы еще ладно, не все используют хорошее пока, но в 20!8 году не использовать генерала Де`Ломбока это или критическое повреждение головного мозга, или максимальная закостенелость, что в принципе то же самое. Небось еще на седьмой джаве пишешь. В любом случае, ты не стоишь и минуты моего времени.
Пошел нахуй.
Аноним 08/05/18 Втр 10:30:54  1186042
>>1186029
чёта не понял при чём тут ломбок, он же генерит сеттеры с геттерами
Аноним 08/05/18 Втр 11:48:24  1186080
>>1186029
Как там ломбок на актуальной версии жабы? Когда я последний раз проверял, был никак.
Аноним 08/05/18 Втр 12:14:43  1186087
Объясните ньюфагу, как сейчас в джаве работать с БД? Я пытаюсь освоить хибернейт + спринг, это правильный путь? Какие вообще ключевые слова технологии нужно иметь в виду?
И еще вопрос - можно ли сразу учиться работать с анотациями, минуя xml? Мне например больше нравится грейдл и конфигурация через аннотации/пропертис. Или это от проекта зависит?
Аноним 08/05/18 Втр 12:17:27  1186088
>>1186087
jdbc
>можно ли сразу учиться работать с анотациями, минуя xml
Можно, но не нужно. После xml с аннотациями разобраться легко, но неизвестно, насколько древние технологии будут использоваться там, куда ты устришься на работу.
Аноним 08/05/18 Втр 12:20:42  1186089
>>1186088
>jdbc
Это троллинг такой?
Аноним 08/05/18 Втр 12:22:24  1186091
>>1186089
>Объясните ньюфагу, как сейчас в джаве работать с БД?
Да, ты троллишь сейчас.
Аноним 08/05/18 Втр 12:26:13  1186093
>>1186091
Иди нахуй, клоун блять.
Я же сказал про хибернейт и спросил про то какие еще есть ключевые технологии, о которых ньюфаг может и не знать, учитывая зоопарк технологий/фреймворков джавы.
Но нет, нужно спиздануть про jdbc.
Аноним 08/05/18 Втр 14:16:20  1186144
сап, программач! почти запилил свой пет-проджект, который не стыдно показать людям(лол), ноо совершенно не секу в логгировании, мб есть у кого годный туториал - какой логгер использовать, что логгировать и т.д.
Аноним 08/05/18 Втр 14:55:49  1186163
>>1186093
Ты чё развыёбывался, дурачок? Всё он правильно тебе сказал. В идеале нужно потыкать и jdbc, и hibernate, несмотря на то, что в большинстве проектов используется orm.
Аноним 08/05/18 Втр 15:02:35  1186166
>>1186163
Где я выебываюсь, даун? Он мне предлагает потыкаться в jdbc, когда я спрашиваю про ключевые технологии и практики? В таком случае тоже иди нахуй.
Одно дело сказать "начни с jdbc и потом то и то", другое просто ляпнуть не к месте про jdbc, когда СПРАШИВАЛИ О ДРУГОМ ВООБЩЕ. Вы вообще отбитые какие то блять, спрашиваешь их про технологии, так они выебываются тем что в jdbc потыкаться надо.
Аноним 08/05/18 Втр 15:08:25  1186167
>>1186166
Бля, пиздец ты тупой, съеби нахуй с треда.
Аноним 08/05/18 Втр 15:18:35  1186170
>>1186167
Сам съеби, говно. Может посоветуешь мне еще про модель OSI почитать? Ну а хуле, так же релейтед к моему вопросу как и JDBC
Аноним 08/05/18 Втр 15:21:55  1186172
>>1186166
Ты смешной))))
Аноним 08/05/18 Втр 15:23:59  1186173
>>1186144
>не стыдно показать людям
>не знает про log4j
i doubt it
Аноним 08/05/18 Втр 15:25:59  1186176
>>1186144
Да там особо не по чему и туториал делать. Посмотри log4j, буквально час-два потрать и всё. В пет проекте нахуй не надо какое-то логирование прикручивать
Аноним 08/05/18 Втр 15:26:29  1186178
Зачем в классах делают пустые конструкторы? Тем более в абстрактном Toolkit
https://docs.oracle.com/javase/7/docs/api/java/awt/Toolkit.html
Аноним 08/05/18 Втр 15:30:23  1186180
>>1186178
Чтобы было.
Аноним 08/05/18 Втр 17:43:44  1186249
Java написан на C++?
Аноним 08/05/18 Втр 18:11:24  1186270
>>1186249
JVM на Си, Си++, все классы на java
Аноним 08/05/18 Втр 18:12:00  1186271
>>1186270
>JVM на Си, Си++
Какой позор...
Аноним 08/05/18 Втр 18:22:59  1186278
>>1186271
В чем тут позор?
Аноним 08/05/18 Втр 18:23:54  1186279
>>1186278
Почему нельзя все написать на Java?
Аноним 08/05/18 Втр 18:25:10  1186280
>>1186271
Есть https://github.com/oracle/graal JIT-конпелятор написанный на жаве. Но он всё ещё экспериментальных, хотя начиная с Java 10 его уже можно использовать, правда только на 64-битных Linux и macOS.
Аноним 08/05/18 Втр 18:29:47  1186282
>>1186279
Си больше подходит для всякой низкоуровневой хрени, плюс быстрее. У питона на нем целые библиотеки
Аноним 08/05/18 Втр 20:15:20  1186370
>>1184391
Спросил у прод-куна, тот ответил что 40к потолок
епам-макака
Аноним 08/05/18 Втр 20:30:27  1186394
>>1185591
C o n d u c t
Аноним 08/05/18 Втр 20:34:10  1186401
>>1186080
Актуальная это 8 или 9?
Аноним 08/05/18 Втр 20:44:58  1186418
>>1186178
Потому что если в классе определен хоть один конструктор, конструктор по умолчанию не генерируется
Аноним 08/05/18 Втр 20:56:26  1186434
>>1186401
10 же.
Аноним 08/05/18 Втр 20:58:01  1186437
>>1186418
Почему мы хотим, чтобы он не генерился?
Аноним 08/05/18 Втр 21:02:05  1186442
>>1186166
>>1186170
Пиздец ты дегенерат.

Одно хорошо - ты никогда не найдешь работу программистом.

Аноним 08/05/18 Втр 21:18:05  1186453
>>1186434
Сырое говно
Аноним 08/05/18 Втр 21:18:41  1186456
>>1186437
Потому что спецификация
Аноним 08/05/18 Втр 21:57:20  1186487
>>1186453
Зато var.
Аноним 08/05/18 Втр 22:02:48  1186492
>>1186487
Ещё одна возможность превратить код в говно, потому что мало кто будет пользоваться им дисциплинированно.
Аноним 08/05/18 Втр 22:25:41  1186499
>>1186280
Кстати, на днях грааль вышел 1.0 RC1. Так что он уже вполне стабилен. А твитор, вообще его больше года юзает.
Аноним 09/05/18 Срд 00:29:32  1186548
В чём смысл GraalVM? Типа любые языки можно в ней запускать в том числе и LLVM IR, соответственно приложухи могут общаться друг с другом несмотря на то, что они на разных языках написаны. Так? В этом главный профит?
Т.е. если приложуха чисто на джава как раньше, то юзаю JVM по-старому, а если хочу написать приложуху на джава + питон + js. то спокойно юзаю GraalVM? Зачем это может понадобиться не очень понимаю всё равно
Аноним 09/05/18 Срд 00:44:17  1186556
>>1186492
На ассемблере пиши, поехавший. Я регулярно пишу на котлине - и с валами и варами код понятный. А с другим добром котлина так и еще лучше и читаемее.
>>1186548
Нет. Граальвм состоит еще из другой дрисни, но по факту важен только конпелятор JVM говнеца.

И этот самый конпелятор новый написали, потому стоимость поддержки и запила новых фич на C1 и С2 превзошла всякие пределы - для того, чтобы там можно было запиливать фичи, абстрактному разработчику нужно год-два медитировать чисто над исходниками, настолько все сложно и такполучилось.

Поэтому решили хватит это терпеть и запилили грааль, который написан на нормальной джаве и который легко поддерживать и пилить новые фичи. В процессе запила сразу оптимизировали многие места и числодробить стало намного веселее.

А компилировать JS, го, пифон под граальвм не нужно.
Аноним 09/05/18 Срд 00:50:10  1186557
>>1186556
А меня больше интересует AOT-конпеляция. Теперь можно будет распространять приложухи без рантайм-дрисни? Учитывая, что всё равно у почти каждого жава-приложения свой собственный рантайм на котором всё проверено, то эта фича была бы довольно удобна.
Аноним 09/05/18 Срд 00:53:23  1186559
Слишком много всего начало происходить. А я даже модули ещё не курил. Помедленнее!
Аноним 09/05/18 Срд 00:56:20  1186562
>>1186557
Полный AOT без JRE, это только Excelsior JET.
Все остальное только с JRE. В JRE будет встроенный AOT для ускорения старта, но не более.
Аноним 09/05/18 Срд 00:57:30  1186563
>>1186559
> А я даже модули ещё не курил.
Это которые жигсо? Их много кто ещё не курил. Если твоя прога использует какую-нибудь стороннюю библиотеку могу дать 100% гарантию, что полноценно всё это работать не будет. Вот баттхёрт одного из перекатывальщиков: https://habr.com/post/354114/
Аноним 09/05/18 Срд 00:59:14  1186567
>>1186562
А жаль. "Статическая линковка" стандартной библиотеки была бы суперской фичей вместе с AOT.
Аноним 09/05/18 Срд 01:25:58  1186576
>>1186563
Надеюсь, что в LTS починят. А то кучу времени на это убили, обидно. И я не очень понимаю, как это всё сочетается с модулями maven/gradle. Ладно, ждём LTS
Аноним 09/05/18 Срд 01:30:31  1186580
>>1186576
> Надеюсь, что в LTS починят.
Там не жаву чинить надо, а авторам библиотек перекатываться в модульность. Встаёт очевидный вопрос: а зачем, если и так (почти) всё работает. Впрочем жигсо умудрился сломать и простые jar'ы из-за чего куча библиотек перестала работать с девятой жавой и выше, и это проблема посерьёзней.
Аноним 09/05/18 Срд 01:50:51  1186585
>>1186557
Поясни в двух словах в доходчивом двощерском стиле нахуй всралась AOT-конпеляция. У меня так руки никогда не доходили поинтересоваться.

>>1186559
>>1186563
Потому что жигсо нахуй не всрался. Его мучительно долго рожали, отодвигали из-за него релиз девятой джавы, наконец высрали ублюдка и так до сих пор в массе никто и не понял нахуй он всрался вообще.

Возможность опубличивать только публичное апи толком не нужно - для чисто интернал хуйни всегда есть package level, а если нужно в нескольких пакетах, то в джавадоке написать for internal usage и на все проблемы, связанные с использованием непубличного апи отвечать "ди нахуй, пидрбля".

Возможность хотсвапа модулей тоже толком не нужна - в проде она нахуй не нужна, бо никто не держит единственные серверы и давно уже изборетен АИБ деплоймент, а для девелопа всегда есть джававосставший. Да и по чесноку в тот момент когда монолит уже трещит по швам его не в модульный монолит надо перепиливать, а распиливать на микросервисы.
А для всех остальных задач модульности есть гредл/мавен сабмодули.

Для тех же случаев, когда модульность на уровне джарников необходима, там сложной десктопной херни (хотя тут можно поспорить), никто не отменял osgi. Смотрел краем глаза на Джейпоинте доклады про модули, включая той жирноватой немецкой тни, так и не увидел юзкейов нормальных.

По факту получилось, что рожали-рожали, высрали наконец, коммьюнити посмотрело на получившегося выродка и спрашивает "и че?". И вот это "и че" в воздухе длится до сих пор. Это не говоря о том, что рождение жигсо сломало вообще.
Аноним 09/05/18 Срд 01:58:35  1186589
>>1186585
> Поясни в двух словах в доходчивом двощерском стиле нахуй всралась AOT-конпеляция. У меня так руки никогда не доходили поинтересоваться.
Ну если без "статической линковки" (я не знаю как объяснить это в java-терминах), то действительно, особо и нинужно. Просто удобно было бы отказаться от JRE вообще и распространять самодостаточный бинарник.

Я AOT в .NET-приложениях использовал только в десктопе и только для ускорения запуска. И стоит заметить, ускорение действительно было. Запуск крупного приложения, написанное с использованием WPF + контролы от telerik ускорился с полутора минут до десятка секунд.

А вот на сервере (где жава обычно и живёт) я с этим никогда не заморачивался, наверное там оно и нинужно.
Аноним 09/05/18 Срд 01:58:54  1186590
помогите нубу - есть спринг бут приложение, есть бин taskExecutor, он запускает отдельный поток
@PostConstruct
private void initGenerator() {
Generator.initialize(taskExecutor); }
Вроде все работает как нужно, но как только пытаюсь завершить приложение - вылетает InterruptedException. У спрингбутовского TaskExecutora нет даже метода shutdown. Нагуглил, что нужно в аннотации добавить destroyMethod = "shutdown" (этот метод часть магии или нужно самому писать?). В общем не могу сообразить, выручайте, анончики
Аноним 09/05/18 Срд 02:09:07  1186596
>>1186589
Хуйня какая-то. Джава для десктопа вообще не оче, а джарник ты запускаешь в докере или экзешник просто-таки глубоко насрать, лишь бы работало. Хотя с экзешником в докере это да, кхм :3
> Просто удобно было бы отказаться от JRE вообще и распространять самодостаточный бинарник.
Ну тащемта в пределах graalvm была какая-то дрисня, которая вроде позволяла без костылей типа запакованного в экзешник джарника и jre собирать в экзешники приложухи, ты о об этом говоришь. Помнил, но забыл.

Надо будет все-таки не полениться и прочитать про AOT-дрисню.
Аноним 09/05/18 Срд 02:12:28  1186598
>>1186590
Не лезь в многопоточность по нубству, она тебя сожрет.
> вылетает InterruptedException
Открой джавадок этого класса и внимательно прочитай первое предложение, разбери его по частям и сделай соотвествующие выводы для себя.
Аноним 09/05/18 Срд 02:13:42  1186601
>>1186596
С докером действительно проблем не будет. Просто было бы удобней чтобы сразу бинарник был со всеми библиотеками и не надо было ничего больше настраивать. Опять таки все равно у каждого приложения свой собственный рантайм.
Аноним 09/05/18 Срд 02:16:35  1186602
>>1186601
С дивана вижу только бесписечный запуск десктопных приложений под винду. Писать десктоп на джаве не оч, как уже писал - то ли дело на шарпе или заговниться электроном на js. И вообще, талостые клиенты нинужны.
Аноним 09/05/18 Срд 02:20:09  1186603
>>1186602
Я десктоп на жаве не пишу. Пытался вкатиться в JavaFX, но вышла хуйня. Qt куда лучше, даже несмотря на привкус C++. Жалко, что связка Qt+Java сдохла и вместо этого продвигают Qt+Python как альтернативу плюсам.
Аноним 09/05/18 Срд 09:44:49  1186671
перекат

https://2ch.hk/pr/res/1186670.html
https://2ch.hk/pr/res/1186670.html
https://2ch.hk/pr/res/1186670.html
https://2ch.hk/pr/res/1186670.html
https://2ch.hk/pr/res/1186670.html
Аноним 09/05/18 Срд 20:18:08  1187127
>>1186567
Скачай триал Excelsior JET и посмотри на размер получающихся исполняемых файлов.
Аноним 09/05/18 Срд 20:43:22  1187139
123454.PNG (26Кб, 1139x188)
>>1187127
> Excelsior JET
Ну, поставил свой небольшой pet-project на котлине + spring конпелироваться. Через пару часов посмотрю что получится.
Аноним 09/05/18 Срд 21:28:38  1187174
>>1187139
Итак, всё сконпелировалося. Вышло 181Мб (при этом само приложение занимает 74Мб, всё остальное опять таки рантайм). FatJar занимает около 40Мб.
Аноним 09/05/18 Срд 21:40:58  1187187
>>1186562
Хотя прочитал https://www.graalvm.org/docs/reference-manual/aot-compilation/
Там написано:
> GraalVM allows you to compile your programs ahead-of-time into a native executable. The resulting program does not run on the Java HotSpot VM, but uses necessary components like memory management, thread scheduling from a different implementation of a virtual machine, called Substrate VM. Substrate VM is written in Java and compiled into the native executable. The resulting program has faster startup time and lower runtime memory overhead compared to a Java VM.

Так что да, это полноценная AOT-конпеляция. Вместо HotSpot используется Substrate VM, который правда не поддерживает некоторые фичи жавы и позволяет делать статически слинкованные бинарники.
Аноним 10/05/18 Чтв 00:00:11  1187317
>>1187174
Т.е. по сравнению с простой джаркой у тебя размер вырос более чем в 4 раза. понятно, что сейчас на такие мелочи обычно забивают

Но надо понимать другое, ты лишаешься оптимизации по профилю исполнения. Для десктоп приложений это коночно не критично, но для высоконагруженного сервера - критично.
Аноним 10/05/18 Чтв 00:06:36  1187325
>>1187317
> ты лишаешься оптимизации по профилю исполнения.
У Excelsior JET есть PGO, правда профиль придётся делать заранее самому.
Аноним 10/05/18 Чтв 01:03:07  1187363
>>1187325
Появился? Круто!
А как его собирать?
Аноним 10/05/18 Чтв 01:07:33  1187365
>>1187363
А мне откуда знать? А его только сегодня поставил. Да и лучше уж грааль подожду. Он хоть бесплатный.
Аноним 10/05/18 Чтв 01:10:13  1187367
>>1187363
А вообще, у них же на сайте написано: https://www.excelsiorjet.com/profile-guided-optimization
Аноним 26/05/18 Суб 00:06:19  1196955
Где можно найти development tasks? Типо сделать калькулятор, спарсить джсон, утилиту для линукса. Придумывать самому тяжко. То есть не просто решить задачку, а написать программу для какой-то цели.


Топ тредов
Избранное