Это копия, сохраненная 15 января 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Q: Поздно ли вкатываться в айти в 20/30/40/100 лет?
А: Нет, не поздно.
Q: Cобираюсь учить джаву по 2/5/20 часов в день. За сколько дней я выучу достаточно, чтобы зарабатывать фрилансом?
A: На джаве фриланса нет. Хочешь фрилансить — дуй в ПХП/раби/1С тред.
Q: Хули все книги на английском?
A: Без английского ты не нужен и можешь смело идти нахуй. Ну или в 1С-тред.
Q: Что скажете за джавараш?
Если вкатываешься с нуля, то можешь написать пару "хеллоу ворлдов" до 10 лвла. Дальше курс рассчитан на ленивых и не умеющих читать книжки людей. Количество говнокода зашкаливает, годных задачек пару штук на весь курс. В любом случае решать тебе.
https://github.com/qqqlll/Java-Thread/wiki
Чтобы предотвратить нежелательных изменения в полях класса, а также в качестве одного из инструментов реализации полиморфизма?
Для обратной совместимости.
Информация прекрасно сохраняется. До тех пор, пока код не превращается в байткод.
Ну давай, как ты это делаешь в гуаве? Небось ключ - замыкание? Так это будет что-то уровня питона, там тоже свитча нет)
Вообще же вроде свитч чуть подкрутили, так что вариант с классом станет возможным. Про лонги хз, никогда такое не требовалось (правда я давно на котлине и вообще на ведре).
>Небось ключ - замыкание?
Да, типа
Switch.for(value)
.case("a", () -> {...})
...
.default(() -> {...})
Но я уже почитал, что это для производительности сделано.
Но я-то прекрасно начал на плюсах, и в яву перекатился из-за очевидных денег.
Пиздец, насколько ты тупой.
Весь пар выходит в пиздеж на дваче.
Просто не допилили спеку и компилятор.
Технически switch можно сделать по любому константному выражению (compile time constant). Но с классами есть некоторые вопросы из-за ClassLoader-ов.
На уровень джуна/недомидла.
Смотря как параметризуемых.
Если: StrComparator implements Comparator<String> то информация сохраняется.
Если: NaturalComparator<T extends Comparable<T> implements Comparator<T> то тут не сохраняется. Потому что сохранение этой информации потребует генерации нового класса на каждый параметризованный тип. Создал ты new NaturalComparator<String>() сгенерируй новый класс прям на лету не с нуля конечно сгенерировать, а просто создать спецификацию существующего. Плюс это нарушает обратную совместимость.
В .NET например так и сделали, создают новые классы на каждую спецификацию generic-ов и создали новые классы коллекций с поддержкой generic-ов.
дейт, моисеенко
Когда нибудь и ты узнаешь, что в C++ нет дженериков, а есть шаблоны. И что шаблоны обрабатываются во время компиляции.
>И что шаблоны обрабатываются во время компиляции.
как и дженерики в шарпе
Пиздец, насколько тупые люди приходят в ява-тред
>И что шаблоны обрабатываются во время компиляции.
Расскажи скорее в какое время "обрабатываются" дженерики в Java?
>как и дженерики в шарпе
>Пиздец, насколько тупые люди приходят в ява-тред
Я тоже не понимаю нахуя ты сюда пришел
>When a generic type is first constructed with a value type as a parameter, the runtime creates a specialized generic type with the supplied parameter or parameters substituted in the appropriate locations in the MSIL. Specialized generic types are created one time for each unique value type that is used as a parameter.
>Generics work somewhat differently for reference types. The first time a generic type is constructed with any reference type, the runtime creates a specialized generic type with object references substituted for the parameters in the MSIL. Then, every time that a constructed type is instantiated with a reference type as its parameter, regardless of what type it is, the runtime reuses the previously created specialized version of the generic type.
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/generics-in-the-run-time
>>21303
>Расскажи скорее в какое время "обрабатываются" дженерики в Java?
Лупоглазый прочти, что что в >>21189 написанно:
>>В .NET например так и сделали
>Когда-нибудь, вы узнаете, что есть такой язык С++....
Там написнанно про .NET, я про .NET и отвечал. А в какое время обрабатываются дженерики на Яве я писал >>21164
>в яву перекатился из-за очевидных денег
Гавнокодерам не платят и поэтому ты и укатился из настоящего программирования.
Беглый поиск выдал мне следующее:
http://www.jcraft.com/jsch/ - низкоуровневая хрень с кривой архитектурой.
http://ssh.jcabi.com/ - лучше, но не могу авторизироваться по (логин, пароль)
https://github.com/hierynomus/sshj - еще лучше, но не нашел как адекватно работать с судой.
Так вот в чём вопрос, что плохого в сприговом @Scheduled?
Bash
Это была проверка, и ты ее не прошел.
ты пришел на двачи хвастать настоящим программированием, и тем, что тебе, "гавнокодеру" не платят?
умничка какая
попрыгай еще, ебланчик
1. А почему ты его об этом не спросил?
2. если тебе надо будет поменять расписание, что ты будешь делать в случае крона, а что в случае @Scheduled?
1. боюсь
2. @Scheduled тоже планировался запускаться кроном из конфигов. Так что разницы не вижу.
>@Scheduled тоже планировался запускаться кроном из конфигов.
Чо-то ржу
>Мы знаем, что ты любишь запускать, поэтому написали тебе запускалку запускалки запускалки запускалки запускалки, все на разных языках и с разными форматами входных данных
>2. @Scheduled тоже планировался запускаться кроном из конфигов. Так что разницы не вижу.
Ты не потрудился ответить на вопрос, вот и не видишь.
Сядь, напиши ручкой по бумаге ВСЕ шаги, которые надо сделать в одном случае, и в другом. Вдумчиво прочти.
Найс разрыв
>Чо-то ржу
Тот анон очевидно имел в виду вынесенное в конфиг крон-выражение, так что ржешь ты не в кассу. Ну и в любом случае правильный ответ - quartz scheduler
>Тот анон очевидно имел в виду
Т.е. ты как бы говоришь, что анон не умеет письменно выразить свою мысль.
Т.е анон-программист не умеет письменно выразить.
Ну, т.е. имел в виду алгоритм дейкстры, а запрограммировал сортировку методом пузырька.
Тебе не стыдно так об аноне?
Кварц - правильный ответ только в одном случае: если твоя задача требует кварца.
Если тебе раз в день надо какую-то хуету сделать, спринговских приблуд тебе хватит выше крыши.
Не надо всюду тащить чемодан говна. Даже если это очень качественное говно
Пользовал кварц, когда спринг еще не был зачат
Юзай JSch и не выебывайся, архитектура ему видите ли кривая. То же мне Архитектор Мендисабаль нашелся.
>Shell ssh = new Shell.Verbose(
new Shell.Safe(
new SSH(
"ssh.example.com", 22,
"yegor", "-----BEGIN RSA PRIVATE KEY-----..."
)
)
);
Сразу угадывается шизик бугаенко, даже не думай использовать, он все свои поделия забрасывает и это уже не говоря о том какой шизоидный код там.
А что там должно быть, по-твоему?
Аноны, буду признателен за совет. Я не джавист (а хотел им быть), работаю консультантом it по облачным техномологиям + занимаюсь фрилансом, делая всякое говно в системе для клиента (формы, интерфейсы на xml, sql + чуть api), короче не суть, говно.
У меня появилась задача за пару месяцев наклепать на Maven аддон (или application, кому как), который будет интегрирован в эту облачную систему, собирать данные и генерировать всякое говно, типа документов и формочек.
Из джавы помню только синаксис. Это вообще ебать реально? или я надел розовые очки и думаю, что имея реальную задачу, по вечерам и выходным смогу въехать, бегло изучив core , многопоточность и прочее? спасибо
На выходных сможешь въехать, но мавен скучное говно, может быть заебет быстро и бросишь
Так нельзя в switchIfEmpty скормить Mono с другим типом.
Статик класс имеешь в виду внутренний Статик класс, или все таки поле Статик?
Я бы назвал с суффиксом FinalMap наверное
Мимонуб
>Пожиратель говна в треде.
Представился? Молодец!
>>21869
>Ты сам то с ним работал? С первых строк говнокод.
Работал, простая и стабильная библиотека, используется как основа в куче других проектов. Сделай свои врапер-классы поверх и будет тебе красивое API.
Хочешь красоты: иди бугаевщену юзай >>21873 там все по канонам.
Можешь класс назвать ObjectsIcons, ну или там IconsFor3Dobjects если ты не ниндзя.
get() лучше переименуй в getImage(), да и в параметры передавай объект а уже в методе по факту класс вытаскивай.
Было: IconStorage.get(mySphere.getClass());
Стало: IconsFor3Dobjects.getImage(mySphere);
Поменял мочу на говно ну и хуй с ним.
>Поменял мочу на говно ну и хуй с ним.
Вот именно, смысл? Про название метода я раньше спрашивал, так как это статический класс, не вижу смысла дублировать. Мне просто интересно, как обычно реализовывается подобное.
>Мне просто интересно, как обычно реализовывается подобное.
Через AOP и JNDI. Можно еще хранимок добавить.
>Мне просто интересно, как обычно реализовывается подобное.
В 2019 обычно пишут отдельный микросервис, туда кладут пикчи, поднимают REST API и через него запрашивают картинки
Для реалтайм меньше-17мс-на-кадр игр тоже микросервисы пишут и рестом картинки запрашивают?
Ну да, а ты что думал? Все это в кластер и несколько копий микросервиса для реданданси и феил толеранс. Иначе как объяснить заказчику что маленькую хуету делают несколько месяцев?
тру стори, как же заебали мудаки пихающие микросервисы во все проекты
На чем пишешь 3D? Libgdx?
Не, ну а чо, давайте еще и RMI до кучи подложим, а то, гляжу, подзабыли уже нестареющую классику.
А у тебя сколько всего классов-то будет?
Может, тебе будет быстрее свитч по енуму сделать?
Ну, чем вся эта ебатория с мэпом, и т. д.
Хотя, конечно, для пользователя такие тонкости неважны, всегда моно переделать.
> Мне просто интересно, как обычно реализовывается подобное.
Через lazy init, детали которого зависят от того, какой у тебя источник картинок?
Это все классы, которые там будут. Возможно If-else еще лучше будет. Просто так как иконки используются из разных мест, я решил вынести это в отдельный класс.
Например
void metod1(int a = 111){
System.out.println(a);
}
method1();
method1(1488);
Все возможно с помощью магии Spring. Рот их ебал превратили жабу в декламатор аннотаций
@Autowired
void metod1( @Value("111") int a){
System.out.println(a);
}
в какой-нибудь следующей версии обязательно будет
в каждую новую версию обязательно тянут какое-нибудь говно, про которое раньше кричали "никогда мы на такую хуйню не пойдем!"
в ява20, глядишь, и множественное наследование завезут
Нет. В рантайме
>в ява20, глядишь, и множественное наследование завезут
Обожи... Но джава же его поддерживает
>такую хуйню
А что хуйня-то сразу? Нормальное же решение
>Но джава же его поддерживает
Нет
>А что хуйня-то сразу? Нормальное же решение
Хуевое решение
Никто тебе не мешает сделать метод с сигнатурой, в которой твой "дефолтный" параметр просто отсутствует.
И из него вызывать нормальный метод, передавая дефолтное значение.
>Никто тебе не мешает сделать метод с сигнатурой
И получить вместо сотни методов четыреста. Молодец.
Я не спрашивал как получить результат
Я пока с проблемами в программной части не столкнулся даже, если честно. Не могу обычным post вытащить с сервиса то, что мне нужно.
Не моего, а их. Поэтому им и нужон дефолтный аргумент.
Привет, анон вкатываюсь, подскажи нужно ли изучить джаву для перехода на котлин?
Без @Autowired не сработает? @Value же должен на стадии обработки BeanDefinition заинжектиться, а автовайринг обрабатывается на стадии постпроцессинга бинов. Я как раз начал в кишочках копаться, расскажите, кто знает.
Золотое правило: если тебе нужна подпорка (типа дефолтного значения в сигнатуре), значит ты хуево продумал все.
Говняное правило: если у тебя в классе сто методов, каждому из которых нужна подпорка, то ты говно.
Насколько сложнее научиться управлять самолетом, чем подводной лодкой?
И на хуя тебе их кишочки?
Есть 2 стула.
1й вот видимо пикрил, хотя я до конца не понял пока что там конкретно делать, лол. Даже после 2х собесов.
2й Микросервисы на Спринге, который я в целом нормально умею.
Но 1й вариант в 2 раза почти больше денег.
>в ява20, глядишь, и множественное наследование завезут
Зачем? В интерфейсы и так уже можно все что хочешь пихать.
Молодец, и что же она производит? Не стоит все классы называть по имени паттернов.
А какая разница? Создание объектов инкапсулировано в специальном классе? Да. Значит, фабрика. Да и производит она картинки, очевидно.
Но она не создает картинки, а всего лишь достает их с диска. Это репозиторий.
Да и анон спросил, как такое называется. Я сказал, что фабрика. Что не так?
Хорошо, то есть, по-твоему, чтобы объект назывался фабрикой, он должен не заниматься созданием инстансов, а рисовать картинки? Не думаешь, что речь именно о создании java-объектов?
Что ж, справебыдло. Тут как посмотреть. Но ты меня понял.
Сработает и без @Autowired. Главное чтобы метод через контейнер вызывался.
Это Pointcut же, ну. Нужно хуярить Advice.
Это пример же, типа так можно. В реальной жизни не нужно
Что сложного-то в этой регулярке? Очень удобная штука так-то, если лень писать кастомные валидаторы.
>Я имею в виду временные затраты.
Блядь, это разные вещи для разных целей.
Причем и то, и другое покрывает до хуя этих самых целей.
Никто не знает, какие у тебя нужды, и что ты всосешь легко, а что нет.
Если у тебя нет проекта, где нужно хуярить БД, изучать хибернейт бесполезно.
Особенно, если ты никогда не ебал БД без хибернейта.
Все то же самое со спрингом.
Когда ты дойдешь до Laba2.java, убедишься, что и для него они тоже сработают.
Не останавливайся, иди вперед.
Зачем завезли var?
Зачем завезли вараргс?
Этот список "зачем" можно продолжать бесконечно.
Потому что в Оракле, в отличие от Сана, мудаки сидят. Поэтому ява будет все больше и больше наполняться говном.
О, а вот и говноеды пожаловали.
Для вас специальный язык же сделали. Даже со словом java.
Хули ты им не пользуешься, а лезешь сюда?
Аргументированно.
Когда ты дойдешь до чего-то сложнее LabaN.java и написанным не тобой, то убедишься, что эти правила перестают работать. Оставь их для академиков.
Ты мог бы привести свой опыт, и этого было бы достаточно.
Нет
Нет.
Что там внутри, никого не ебет.
Всех ебет только интерфейс.
В интерефейсе он отдает картинки.
Где он их берет, дело десятое.
Написать скрипт, который выводит теги input (элементы управления) разного типа, в зависимости от введенной цифры:
1 - текстовое поле,
2 - кнопка,
3 - radio (переключатель).
Количество выведенных тегов должно тоже запрашиваться.
я уверен что для знающего человека это просто но я не таков и для меня это пиздец сложно и по моему профилю это нахуй не нужно
Мы должны в голове угадать какие инструменты тебе по условию задачи использовать блять? AWT, SWT, Swing, JavaFX, говно, моча...
>Зачем завезли var?
Что бы не писать final ProxyFactoryBean proxyFactoryBean = new XmlPullProxyFactorySingletoneBean(...);
>Зачем завезли вараргс?
Что бы например писать Arrays.asList(govno, mocha, ...), вместо: Arrays.asList(new GovnoMocha[]{govno, mocha, ...})
Ты не понял, что это была шутка. А если серьезно, то я считаю, что это фабрика, как и писал выше. Ибо инкапсулирует создание объектов.
я нихуя не понял из того что ты написал но это делаеться через блокнот ) в формате html столько информации достаточно ?
Тебе в тред html-программистов, мы тут обсуждаем название куска кода, не мешай.
>А если серьезно, то я считаю, что это фабрика, как и писал выше. Ибо инкапсулирует создание объектов.
Получается Person.getHole(Hole.Anus) то же фабрика?
Если персона настолько важная, что занимается исключительно созданием анусов, тогда да. А если это просто одно из ее полей, то нет.
>инкапсулирует создание объектов.
Еще раз: нет.
Никого не ебет, создание там объектов, или что-то другое.
Важно то, какой интерфейс торчит наружу.
Наружу торчит get
вот если бы торчало getNewInstance, тогда, ок, была бы фабрика
То есть, ты оцениваешь интерфейс по названию метода, а не по его сигнатуре? Ладно, проехали. В любом случае ты не прав, потому что внутренности для архитектуры точно так же важны: смысл фабрики именно в том, чтобы изолировать создание объектов от другой логики. Для этого их и создают, а интерфейс там плюс-минус одинаковый от фабрики к фабрике. Еще раз: важно то, что этот объект занимается созданием инстансов, в данном случае - инстансов Image. Как он их там хранит и какой именно интерфейс для их получения предоставляет уже не так важно.
>этот объект занимается созданием инстансов
Этот объект не занимается созданием инстансов. Он вообще ничем не занимается, объекты создаются в статическом блоке, а инстансов у этого класса вообще нет. Так что это типичный спринговый репозиторий.
>В любом случае ты не прав, потому что внутренности для архитектуры точно так же важны: смысл фабрики именно в том, чтобы изолировать создание объектов от другой логики
Последний раз тебе отвечаю.
Похоже, ты просто мудак, и не умеешь читать.
Пользователь твоего ебаного класса в душе не ебет, что там у него внутри.
Он видит только public методы и переменные.
Блядь, иди на хуй, короче.
Заебали. Ни языков программирования не знают, ни своего родного не понимают.
Нихуя у школьника пукан подорвался. Литературу на лето уже начал читать, архитектуру мамкин? :) А то училка наругает :)
архитектор*
Ну охуеть теперь. И как же будет правильно умничка ты наша?
Хоть бы Head First сперва почитал, дегенерат ебаный. Сам ведь нихуя не понял, из того, что я сказал. Речь вообще не о пользовательской точке зрения шла. Говнокода, блять, начитались. Или крышу срывает от чсв? Ни о чем думать не хотят, кроме интерфейсов. Пока new по всем классам не разбросает.
Папку ебал
Добавил в проэкт локально руками одну нужную библиотеку.
<dependency>
<groupId>...</groupId>
<artifactId>...</artifactId>
<scope>system</scope>
<systemPath>${basedir}/lib/my_custom_lib.jar</systemPath>
</dependency>
Но эта библиотека - своего рода мини проэкт, у которого в МЕТА-ИНФ есть свой pom.xml с другими завистимостями. И эти зависимости не добавляются.
Как сделать, чтоб зависимости моей локальной библиотеки нормально добавлялись?
Ну таких библиотек на самом деле несколько и лучше, чтоб они лежали в проэткте. Просто когда они были "обычными" зависимостями, и брались из артефактори, то и с их зависимостями не было проблем.
http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html
Думаю, что раздел Importing Dependencies - то, что тебе нужно.
Само собой на инглиш переведу.
Вопросы:
1) Фотку все же стоит всунуть?
2) Я ебал в рот писать о себе, это ничего?
3) Норма что не стал описывать проекты? Они все на гите лежат, гит указан.
Не делай через системПас
Сделай скрипт, который первым делом будет локально устанавливать все эти твои либы в репозиторий
И подключай их в поме уже как обычные
Тогда мейвену будет по хер - локальные они, или глобальные - уже стоят в репозитории? - ну и заебись, дальше пляшем
типа
call mvn install:install-file -Dfile=01-install_jars\arial-fonts.jar -DgroupId=ru.mcdd -DartifactId=arial-fonts -Dversion=1.0 -Dpackaging=jar
Поржал с PhpMyAdmin. Вообще основная проблема этого резюме что оно не отличается от тысяч других подобных. Убери хуету что ты знаешь phpMyAdmin и сборщики проектов, лучше подробно опиши свои проекты какие делал и по каждому проекту какие технологии применял и что интересного делал, такое резюме бы больше зацепило, ну и сделай нормальное оформление, фото редко у кого видел.
>Поржал с PhpMyAdmin
Забыл убрать
Да вот боюсь в креатив, там же ебанутые бабы сидят которые по шаблону смотрят.
Первое, что мне пришло в голову - это просто записывать эти файлы так же, как записываются csv файлы для импорта в базу. Другой вопрос, что целиком файлы грузить в память, пожалуй, не имеет смысла, но тогда для доступа нужно будет каждый раз просматривать файл с самого начала - это ведь достаточно затратные операции?
Также потом пришла в голову сериализация, но тогда тоже встаёт вопрос о том, каким образом выгружать данные - целиком это в перспективе будет слишком затратно.
Может кто-нибудь посоветовать что-то или раскритиковать окончательно уже имеющиеся варианты?
А чем реляционная бд не устраивает? Как раз идеально для твоей задачи. Но можно попробовать накостылять что-то типа одного файла, хранящего отношения между объектами по их индексам, а сами индексы пусть создаются и резолвятся кодом, например, в виде названия файла или каких-нибудь метаданных, я хз. Вообще идея странная.
Всем устраивает - она является частью задания, но не прямым способом хранения информации. То есть, потом нужно будет организовать их взаимодействие.
>Вообще идея странная.
Так не моя идея. Там ещё упомянуты библиотеки для логов - единственное, что мне приходит в голову, это то, что они таким образом подсказывают о способе хранения данных.
>отношения между объектами по их индексам
Вот и я о чем-то таком думал. То есть, этот файл загружается первым, а поиск конкретных объектов уже делать построчно.
Я бы сделал тупо в лоб - сериализацией. И похер, что этот подход на большом объеме данных все поломает: в реальном приложении все равно использовалась бы бд, имхо.
>Там ещё упомянуты библиотеки для логов
Это для того, чтобы показать, какой у тебя правильный код, потому что логгирование используется на любом более-менее серьезном проекте.
Спасибо.
Ну а в чем проблема?
После каждого обновления данных срочно пишешь все свои объекты в отдельные файлы.
При старте читаешь все в память.
Все через хэшмэпы, если тебе надо связи держать.
Хотя никто не мешает тебе в объектах держать ссылки друг на друга.
Только не забудь их выкинуть из сериализации. Иначе она никогда не закончится
жсоном каким-нибудь.
>Хотя никто не мешает тебе в объектах держать ссылки друг на друга.
>Только не забудь их выкинуть из сериализации.
Вот тут, если честно, я не совсем понял. Если вынуть ссылки из объектов, то как сохранить связь? Или имеется в виду параллельное сохранение списка этих связей и восстановление их по нему?
class A {
Integer ID;
Integer idB;
....
}
вот так ты сохраняешь связи при сериализации.
но тогда тебе неудобно тягать объект Б по его ИД.
поэтому в памяти удобнее делать
class A {
Integer ID;
B b;
...
}
все упирается в правильную сериализацию/десериализацию
Ничего не нужно выкидывать. Главное чтобы не было цикличных ссылок в объектах типа A -> B -> A. Ебашь сериализацию в Json - это самый универсальный вариант, потом твои данные можно будет без проблем прочесть любым куском говна. Бери Gson библиотеку от Google, там все на похуях через рефлексию заебашиться. Ну а так как после восстановления у тебя вместо множества ссылок на один и тот же объект будет множество новых одинаковых объектов то обязательно переопределяй equals() и hashCode()
Хотя этот аноний прав. После десериализации при хуевом проектировании у тебя нарушаться ссылочные связи между объектами. Поэтому нужно обязательно контролировать чтобы в приложении в любой момент времени был только один уникальный объект User, Issue и Project, никаких ссылок на другие объекты в полях класса. Все стейт объекты достаются по ID из DAO класса. Получиться что-то типа этого:
class MyStorage {
Map<Integer, User> users;
Map<Integer, Issue> issues;
Map<Integer, Poject> projects;
}
class Project {
int id;
List<Integer> issuesId;
}
class Issue {
int id;
int projectId;
int userId;
}
class User {
int id;
List<Integer> issuesId;
}
Главное при удалении того же Issue не забыть удалить ненужные теперь индексы из других классов User и Project. Сами объекты естественно удаляются только через DAO, не забудь подчистить мертвые индексы в других объектах.>>23521
Не List<Integer> а Set<Integer> так будет правильнее.
Спасибо большое ещё раз.
>class MyStorage {
>Map<Integer, User> users;
>Map<Integer, Issue> issues;
>Map<Integer, Poject> projects;
>}
Только не MyStorage, а MyFactory.
>Ничего не нужно выкидывать
Это только так кажется.
А потом окажется, что у тебя после десериализации по нескольку инстансов одного и того же объекта.
Особенно, если ты будешь "ебашить самые универсальные варианты"
Скилов много указано, а с опытом непонятно - откуда собсвенно более года Явы и более 2-х лет крестов?
Лучше начать с опыта работы: где работал, что за проект, твоя роль на проекте, какие ключевые технологии на проекте. Если опыт это учебные проекты: описание проекта, технологии, если было каое-то практическое использование проекта (типа отдел кадров стал использовать приложение ХХХ) или успешно защитил курсач то тоже пиши, нет - лучше промолчи. А в конце уже можно указать список баз вордз.
В российские компании фотка не нужна, а заграницу тебя с такми CV не возьмут. Но если есть хорошее "профессиональное" фото - то добавь (профессиональное - это то где ты выглядишь профессионалом, как на этих стоковых фото).
1. Это не отвечает на вопрос: КАК реализовать сравнение.
2. Реализация такого сравнения нарушает контракт Comparable.
Создай объект ResultFactoryResolver, в нем метод resolve(Figure fig1, Figure fig2) и вызывай его, а в нем уже compareTo(Figure figure). Хотя если выебываться крутой расширяемой архитектурой на 3+ человек, то тут уже думать надо.
Ниче не нарушает. Все фигуры реализуют один интерфейс. Внутри метода compare класса Rock пишешь if (o instanceof Paper) return -1 и так далее.
Создал бы три абстрактные фабрики синглтонов:
KamenAbstractSingletonFactory,
NozhnicyAbstractSingletonFactory,
BumagaAbstractSingletonFactory.
Написал бы конкретную реализацию под интерфейс игры, ну а дальше и так понятно как заимплементить.
миможабасеньор300кквнаноэпоху
Ееееееееееееееееееееееее, ФАКТОРИИИИ!!1
>Нарушает свойство транзитивности.
Ну и соси хуй со своей транзитивностью, вместо решения бизнес-задачи.
Двачую, очевидно без фабрик здесь не обойтись. Шизики сверху про какую-то транзитивность пишут, их игнорируй - это школота
камень > ножницы
ножницы > бумага
по свойству транзитивности следует
камень > бумага
>>23653
Дебил, из постановки ясно что это тестовое задание.
>>23658
Можно сделать по классике из теории множеств: задать отношение матрицей я у мамы математик. Можно попытаться придумать что-то с числовыми коэффициентами, и суммой/разностью по модулю олимпиадник 80 лвл. А в идеале хотелось бы что-то элегантное и простое.
Ща придет егор бугаенко и выебет за енум, но все же:
public enum Figura {
BUMAGA {
public boolean beats(Figura other){
return other == KAMEN;
}
},
NOZNICY{
public boolean beats(Figura other){
return other == BUMAGA;
}
},
KAMEN{
public boolean beats(Figura other){
return other == NOZNICY;
}
};
boolean beats(Figura other);
}
}
Я бы заменил оверайд метода, на просто поле. Но в целом мне нравится, метод сравнения реализуетя довольно просто.
Зачёт!
public final class GameRule implements IRule {
private final IRule nextRule;
private final Game.SHAPE winner;
private final Game.SHAPE looser;
@Override
public boolean firstBeatsSecond(Game.SHAPE first, second) {
return (first == winner && second == looser) ? true : nextRule.firstBeatsSecond(f, s);
}
}
IRule rules = new Rule(Game.SHAPE.Stone, Game.SHAPE.Scissors,
new Rule(Game.SHAPE.Scissors, Game.SHAPE.Paper,
...
))
Дальше уже для каждого игрока проверяешь правила:
boolean redWins = rules.firstBeatsSecond(red, blue);
boolean blueWins = rules.firstBeatsSecond(blue, red);
Это если чисто врезать только правила.
По твоему тебе дают тестовое задание, не для того, чтобы посмотреть, как ты будешь решать бизнес задачи?
А почему бы тут не заменить ключ мапы на Class.getSimpleName? Тогда можно мапу вообще убрать и использовать свитч, а сами картинки задать как константы. Тогда можно это все заменить вообще на енум и сделать Icon.forClass(Class clazz).getImage();
Нахуй не мудри, напиши пока так:
public String gameResult() {
return "YOU LOSE";
}
И в продакшн. Потом фичи добавишь как понадобятся.
А как связать два SHAPE и конкретный IRule?
>>23684
По разному, кто-то дает максимально практичное задание: заебоште нам REST сервис.
А вот coding task у всяких Google, Amazon и прочих Microsoft не связан с практическими зачами и направлен на то как ты мыслишь и решаешь не типовые задачи, какая у тебя базовая CS подготовка и т.п.
Опечатка, должно быть "YOU LOSER"
Есть два SHAPE для двух игроков, нужно получить IRule и получить результат игры. Как это сделать?
Зачем тебе конкретный IRule получать?
Ты делаешь набор правил, и у набора спрашиваешь, бьет ли фигура первого игрока фигуру второго. Потом ты спрашиваешь, бьет ли фигура второго игрока фигуру первого.
Да, второй раз можно не спрашивать, если добавить правило RuleDraw, сравнивая одинаковые ли фигуры, и изменив сигнатуру метода-вопроса. Но это годится только для данного случая.
Что если первым в списке будет правило, которое выдаст ничью? Как узнать, нужно ли дальше обращаться к правилам?
>где работал, что за проект, твоя роль на проекте, какие ключевые технологии на проекте
Нигде:(
Тебе в любом случае надо рассказать про свой опыт:
- Тестовый проект ХХХ, проек приложение которое бла-бла-бла, использованные технологии А, Б, В. Код проекта доступен <ссылка на гитхаб>
- Курсова работа по теме ХХХ...
- Стажировка в УУУ...
Тебе надо максимально полно и подробно рассказать про себя, так чтобы прочитав твое резюме стало понятно, что ты знаешь умеешь потом это еще дополнительно проверят. Если описание прокта покажется интересны, то гитхаб посмотрят, но перелопачивать твой гитхаб чтобы просто понять, с чем ты работал никто не будет. И писать уточнять "у вас тут не совсем понятно написано ..." тоже не будут, так что постарайся сам про себя рассказать. Но без фанатизма, 5-ти страничное резюме джуна без опыта никто читать не будет.
Насколько это верное сравнение?
Я с жее не работал, но это ведь еще более тяжкая в поддержке тырпрайз-параша? З.Ы. Спринг охуенен.
Новая очень похожа на спринг. Аннотации, тот же ДИ, АОП, подгонка под solid ит д.
Старая говно.
>Новая очень похожа на спринг
Вот когда EE стек можно будет запустить вне спец серверов тогда приходи.
>>Новая очень похожа на спринг.
>Пруфы с картинками.
Слева ж2ее новая, справа спринг.
Или наоборот.
Они так похожи, что я путаю постоянно
Не хочу, ты мне сам все распиши, ок?
Я тоже не очень врубился в "сложность". Да, он составной, да, он справляется с огромным количеством трудностей, абстрагируя решения, но именно благодаря абстракциям он и достаточно простой - ты представляешь, что тебе надо сделать и - внезапно - под это есть готовое решение, обычно ещё и названное буквально один в один с проблемой, которую ты для себя поставил.
Как перекатиться с Java на Scala?
Есть функция
public void setDestination(String Destination) {
destination = Destination;
}
Что в этой функции нужно поменять, чтобы появилась необходимость обязательного использования this.destination = Destination;
Дана подсказка, что всего в паре мест поменять символ (букву ?)
I am done.
ты што ебанутый?
Ты поехавший? Кто ж фабрику-то не для синглтонов использует!
Шанс нихуевый на самом деле. Особенно на этапе перехода от Laba1 к реальным проектам на EE и Spring с тестированием и логированием.
Ну ниче не поделаешь теперь. Пацаны на дваче сказали, что не сможешь, значит, не сможешь. Иди в 1С тред поспрашивай.
Не, тут вообще никак. Придется смириться и расслабиться. Ну или подождать, пока пацаны свое мнение поменяют.
Эх, пойду анонов в /b/ поспрашиваю, там пацаны авторитетнее.
Заинтриговал, сука.
ахахахахаха
с Трех Мушкетеров начни, пожалуй
Очевидно потому што второй класс при вызове .get() вернет саплаер который создает объект, а первый класс просто возвращает уже готовый инстанс.
Ещё всё усугубляется тем, что там махрового говнокода строчек на шестьсот. Может успею ещё сегодня отрефакторить, превратив во что-нибудь приличное.
Я конкретно про валидацию на корректность (не больше 10 символов в логине, только определенные и тп).
Везде - это дублирование одного и того же на сторонах?
Провалидируешь только на фронте - зашлют некорректные данные через апи. Провалидириуешь только на беке - тратишь серверное время на обработку заведомо неправильных данных и заставляешь клиента ждать.
Понял, спасибо.
Хорошо, может, тогда расскажешь, чем принципиально отличается создание объекта ноды от создания объекта картинки или объекта поставщика нод?
Тем, что в одном случае происходит именно создание нового объекта, а в другом вытаскивание готового объекта из коллекции.
Блять, ну ты ж в любом случае вытаскиваешь элемент из коллекции, в которую сам его и положил. Еще раз, в чем принципиальное отличие?
Я уже написал, в одном случае вытаскивание без создания, в другом вытаскивание с созданием.
Я уже написал, что в любом случае создание. Просто формат вытаскиваемого объекта разный. New видишь? Вот и все.
Дополню. Предполагаю, что вместо ожидания инпута от клиента, капчующего с модема на даче, воркер-тред может заняться чем-то еще. Так ли это?
Все, разобрался с терминологией, и почему сервер на тред-пуле блокирующий. Спасибо, двач.
1)Как вместо этих стандартных спринговских форм всунуть свои js-овские?
2)Как происходить регистрация? Типо что-то похожее на тело 2 метода, где мы юзера записываем в бд, только зашифровав предварительно?
https://docs.spring.io/spring-security/site/docs/current/guides/html5/form-javaconfig.html
https://www.baeldung.com/spring-security-extra-login-fields
В целом надо переопределить страницу логина, которую ты указываешь в в контроллере где нибудь, ну и привязать к ней вьюху в любом виде. Достаточно даже просто хтмля или тимлифа.
Здесь указываются страницы шаблонизатора, которые возвращает контроллер. А что если контроллер возвращает JSON, а фронт его уже как-то обрабатывает. И выходит что страница логина - это вообще компонент Vue. Никак не вдуплю что делать
Чет я не втыкаю.
Ты хочешь чтобы некоторые REST end points были доступны только авторизованным пользователям?
Тогда сам end point должен возвращать ошибку при таком раскладе. Можно вообще обойтись простым HTTP status code 401 Unauthorized. Вьюха же пользователю показывает что вы не авторизованны и предложение залогиниться.
Стаковерфлоу программинг все дела -> https://stackoverflow.com/questions/42358856/how-to-return-401-for-rest-api-call-in-spring-security
На данный момент проблема такая:
Я понимаю как вставить свою форму логина на шаблонизаторе но не понимаю как сделать эту форму где-то на фронте (без шаблонизаторов).
Я по этому примеру делал когда-то
https://www.callicoder.com/spring-boot-spring-security-jwt-mysql-react-app-part-2/
Как у тебя сделана сущность самого пользователя?
Спринг тебе ее выдает в виде мапинга к ПОЖО по умолчанию.
Нахрена тебе еще жейсон к логин форме лепить?
>Нахрена тебе еще жейсон к логин форме лепить?
Авторизация происходит на фронте. С фрона post-ом приходит json (имя, пароль). Как сказать сринг сисурити чтобы проверил ЭТИ логин и пароль?
Вернее приходит 2 параметра - логин и пароль. Теперь я хочу сказать конфигу чтобы проверял логин и пароль с этого маппинга
Это детали имплементации.
Сегодня ты его вытаскиваешь из коллекции, а завтра будешь создавать новый инстанс.
Ни один пользователь твоего класса этого не заметит.
Шо ж ты такой тупой?
Хули ты такой беспомощный, чорт ебаный?
https://stackoverflow.com/questions/20538619/login-with-spring-security-using-ajax
Анон, хочу запилить сравнение объекта по значенияю полей, в рамках переопределения equals, но стопарюсь на идее, что без equals это не делается.
Т.е. мне нужно использовать equals от Object в своем методе equals?
https://ideone.com/1JQluu
Просто задание с подковыркой, очевидно же. Тот чел умную идею тебе дал, подумой.
Блядь, не беспомощный ты просто тупой.
Ты спросил, как тебе к спринг секьюрити подвязать свой ебаный жс, вместо простой формы.
Тебе дают ссылку на разжеванное объяснение, как это сделать.
>эта хуйня не связана с сабжем
Пиздец, иди на хуй просто. Надо перестать помогать ебланам на дваче.
В принципе, да. Трудно сделать equals без equals.
С другой стороны, как тебя поймешь, что там за сравнение? Может, больше-меньше (твой код я, естественно, не смотрел)
Тогда, очевидно, надо делать без equals.
Все правильно, ты переопределяешь equals родительский. Если ты в Intelij оно тебе даже нагенерить может и equals и hashCode (их вместе надо определять что бы не было потом непонятных проблем). можно например так:
@Override
public boolean equals(Object o) {
____if (this == o) return true;
____if (o == null || getClass() != o.getClass()) return false;
____
____ComplexNumber that = (ComplexNumber) o;
____
____if (Double.compare(that.re, re) != 0) return false;
____return Double.compare(that.im, im) == 0;
}
@Override
public int hashCode() {
____int result;
____long temp;
____temp = Double.doubleToLongBits(re);
____result = (int) (temp ^ (temp >>> 32));
____temp = Double.doubleToLongBits(im);
____result = 31 * result + (int) (temp ^ (temp >>> 32));
____return result;
}
Какие подводные?
Я так понял обязательно сервак запилить куда все артифакты самопальные закидывать?
Ну в общем да, это ведь большая выгода мэйвена что он сам скочает нужное говно. Но похоже есть куча сердпартирешений готовых.
Щас бы генерить массивчики/объекты при подсчете хеша/равенства. Ты бы еще жестяных банокапачекомонос притащил. Лучше уж ломбок (впрочем мне похуй я на котлине, что ты мне сделаешь, за мат извени).
Кек. Лучше уж пусть на мавен сначала перекатится.
господе блять 16 гигов для демона нахуй, чистый билд 20 минут нахуй
>Щас бы генерить массивчики/объекты при подсчете хеша/равенства
Байтоеб ты? Когда начнешь названия переменных оптимизировать?
Для этого есть прогвард. И да не поверишь, но мы и порядок загрузки классов оптимизируем.
Не, загрузку нативных либ пока не начали оптимизировать, у ведра с этим есть проблемки, порядок дексов задаем.
Чо ебать, в моем коде такого нет. Спрашивающий кинул ссылку на идеоне, там были поля re и im, я предположил что это части комплексного числа - вещественная и мнимая.
Equals переделывать надо, например как в свифте. Но Егорка это конечно мог кек ппц хех.
>Ты не байтоеб, а мудоеб.
Я копрофил не любящий стримы. В чем проблема этого куска кода пояснишь?
Нужно запустить maven-проект с параметрами через maven конфигурацию и вводя из консоли. Может кто привести примеры или скинуть туториалы, где подобное делается?
Ещё раз
https://ideone.com/k7oBSw
map принимает на вход Function. Второй параметр Function это выходной результат. А на входе reduce уже Object
Значит придется изучать. Читал как некоторые для собеса сидели месяцами учили структуры, алгоритмы и тд что не очень весело
я вообще универ не заканчивал
Я помню только дийкстру, тк писал курсовую по нему на первом курсе универа, что было уже давно. Всякие пузырьки и тд не считаю, тк это слишком просто
Два чая. Решил помочь, дал ссылок, вопрос вроде годный в кои то веки и тут такое разочарование.
Есть еше компараторы. Загугли работу три сетов / три мэп.
Лайк
Представил, что на каком-то крупном серьёзном проекте таким образом подбирают стек технологий, и проиграл.
Что то пиздец он цпу грузит. Даже если ему 2 треда оставить.
http://literatejava.com/threading/fork-join-parallelization-feature-or-problem/
Нахуй тебе это дерьмо?
Делал поиск файлов через BFS.
Хотел еще прикрутить многопоточность.
Наткнулся на статью - попробовал - ахуел.
Как обычно в общем.
Умерло.
Они не то чтобы неправильные - они не всегда однозначные и иногда имеют свои тонкости и подводные камни. Выясняется это когда погружаешься в какую-то тему.
У меня спросили все методы в классе Object, и потом еще нужно было перевернуть линкед лист
Ты тестовое выполнял перед собеседованием?
тем, что ты не понимаешь, чего ты от него хочешь, и что он делает
начни с первого: чего ты от него хочешь?
Если ты для проверки на налл пользуешься инстаноф, то ты еще больший мудоеб, чем казался ранее
Блядь, ты вопрос не можешь понять простой, ясен пончик, что ты не можешь понять, как вся эта ебала работает, и почему ошибку выдает.
Иди на хуй, учи там русский язык
Или просто учить ангельский и делать свою рандомную хуйню?
Можешь.
Охуеть. От того, что ты это высрал, ты понял, почему у тебя не работает говнокод?
Да иди ты на хуй, мудила.
Пришел за помощью, а срешь кровавым поносом вместо "пожалуйста".
Мне надо чтоб в мейн была статичная картинка ебать. А он не хочет эту блядскую хуиту выполнять серый экран ебать
1-дисплей
2-Мейн
Пиздец, чувак спросил как ему реализовать equals, а мне кидают предъяву "хули ты что-то предлагаешь", когда он даже не показал весь класс.
Не децималы потому что у чувака было сравнение '=='.
Лучше попробуй простигосподи JavaFX + SceneBuilder
Гуй мышкой за полчаса накидаешь, функционал на кнопки повешать еще полчаса. Потом пару месяцев дебага.
Ну где там косяк то?
В приведении полей к инт? Тебе не нравится побитовое смещение?
В базовом числе от которого считается хэшкод?
Может быть тот способ из книги ведет к вырождению хэш таблицы?
Какие тонкости ты имеешь ввиду?
> интерпрайз
Извини за глупый вопрос, но что это значит? Переводится как предпринимательство, а как это с разработкой связано? Стартапы что ли ?
Промышленное программирование, то есть разработка продукта для отраслевых нужд - банки, автомобилестроение, телеком, трейдинг и т. д. Противопоставляется старт-ап или веб-разработке ввиду инертности и внимательному внедрению инженерных подходов, так как во многих сферах есть повышенные требования к надежности ПО.
Ходил на одно собеседование 3 недели назад. Засыпали вопросами про коллекции, хешмапы там и прочие приколы. ООП конечно же спрашивали, зачем нужно поля приватными задавать, ну вот это все. Немного спрашивали про спринг, аннотации, контекст. Спросили какие знаю паттерны программирования. Ну и обсуждали мой проект на гите (веб-чат на спринге у меня там был). Потом спрашивали вообще про мой опыт в программировании, чем занимался, что в унике преподавали, что из этого нравилось. Собес шел полтора часа, я так заебался там сидеть. В целом на все вопросы заебок ответил, обосрался только на вопросе про хешмапы, не знал, что будет, если в хешмапу ключ null закинуть. Но интервьюер мне хуйню наговорил, сказал, что нельзя будет закинуть в хешмапу после этого объектов. Челик перепутал хешмапу с тримапой, но он хотя бы отписал мне на почту, что он меня наебал. Сижу-жду результатов собеса, на днях должны ответить.
В джаву вкатился в декабре, до этого 2 года в унике учил си.
public float[] checkKvadrat(){
float[] kvadr = new float[12];
int q = 0;
float y = 0;
for (int i = 0; i < 12; i++) {
for (Rectangle br : brush) {
if(br.intersects(rectangle)){
y = 1;
break;
}else y=0;
}
kvadr = y;
y=0;
}
return kvadr;
}
Суть в том что есть 12 квадратов и надо определить пересекается ли он хотябы с одним квадратом из списка brush. Почему-то правильно определяется только 12-й, то есть последний квадрат. Остальное - 0, то есть нет пересечения
Вот я и говорю: ты мудаеб, который не знает, как работает инстансоф, и не понимает, на что у него там проверка получается.
Ты,блядь, даже читать не умеешь. но лезешь с советами.
Вопрос был "Хули ты вообще что-то предполагаешь?", а не "предлагаешь".
>Не децималы потому что у чувака было сравнение '=='.
Пиздец. А если бы у него там было написано, что он ебал твою мамку? Ты бы и это принял за чистую монету.
Ты не ошибся тредом? Это не яваскриптовый, если что.
Заебались на хуй посылать просто
Я тут одному уже ответил, у него жопа сгорела.
Повторяю ответ тебе:
потому, что ты не понимаешь, чего ты от него хочешь, и что он делает
начни с первого: чего ты от него хочешь?
он катит, если ты от него хочешь именно того, что он делает
он катит, если ты умудришься при этом не проебать контракт equals
Пиздец ты черт, в оригинале я ему предложил отдельно на налл проверить, потом то что класс один и тот же, где тут проеб контракта, дятел.
В случае если у класса нет наследников инстансоф тоже не нарушит контракта. Сейчас бы дата классам наследников хуячить.
>instanceof()
>умудришься при этом не проебать контракт equals
Налил тебе полный рот мочи. Проглатывай.
>В случае если у класса нет наследников
Т.е. ты программируешь, следуя своим фантазиям об устройстве всего остального кода, который ты не знаешь.
Молодец. Продолжай плодить говнокод.
Жопа все еще горит?
Тебе, я так понял, не привыкать.
Когда ты тупой и не умеешь в программирование, жопа и должна гореть.
Попрыгай еще.
Двачую, навесил @EqualsAndHashCode и в продакшен, хуле обсуждать тут
когда речь заходит про инстансоф фабрика должна быть не только абстрактной, но и финальной!
>LocalContainerEntityManagerFactoryBean
Все эти кеки про AbstractSingletonProxyFactoryBean это блять не шутки оказывается?
Столько анальной боли чтобы сохранить пару объектов в базе данных, я уже нахуй сознание теряю от этих ебучих конфигураций.
В чём проблема? Ты один раз создаёшь эту херню в конфиге, а потом просто инджектишь EntityManagerFactory в нужный класс.
>Столько анальной боли чтобы сохранить пару объектов в базе данных
Зажрался ты, ты видимо со стандартным JDBC никогда не работал, лол. И вообще, открой уже для себя Spring Data, Spring Boot и spring-boot-starter-data-jpa, если тебя так напрягает руками писать конфиги.
>ты видимо со стандартным JDBC никогда не работал
Приходилось ковырять немного. Вот чем JDBC мне нравится так это простотой. Никакой магии. Сразу видно где подключаемся к базе данных, где выполняем запрос, где читаем ответ. В спринге настройка через бины и работа через AOP прокси, только отдаленно представляешь как оно там шевелиться и и что для чего нужно. Прикручиваю JPA уже создал бины:
LocalContainerEntityManagerFactoryBean
PlatformTransactionManager
DataSource
По описанию можно понять для чего каждый примерно нужен, но в деталях можно утонуть.
Вот к примеру в этом куске кода:
@Bean
public PlatformTransactionManager jpaTransactionManager() {
return new JpaTransactionManager(
this.localContainerEntityManagerFactoryBean().getObject()
);
}
Зачем нам устанавливать PlatformTransactionManager с помощью LocalContainerEntityManagerFactoryBean.getObject()
В чем смысл этих манипуляций. Нахуя нужен отдельный бин для transaction AOP магии? Это уже просто какие-то забытые технологии далеких предков.
>Вот чем JDBC мне нравится так это простотой. Никакой магии. Сразу видно где подключаемся к базе данных, где выполняем запрос, где читаем ответ.
У JDBC есть одна вещь, которая портит вообще все: SQLException, которое бросается на каждый чих и которое обязательно надо ловить, потому что сверхразумы, которые дизайнили это API, унаследовали его от Exception. И да, не забудь закрыть Connection, PreparedStatement и ResultSet :)
>Зачем нам устанавливать PlatformTransactionManager с помощью LocalContainerEntityManagerFactoryBean.getObject()
А как ему, по-твоему, узнать, каким объектом ему управлять? Ну можешь в метод создания JpaTransactionManager @Autowire-ить EntityManagerFactory и передавать его вместо localContainerEntityManagerFactoryBean().getObject(), лол.
>Нахуя нужен отдельный бин для transaction AOP магии?
А как оно должно работать, по твоему? Чтоб нажал на кнопку и всё само сделалось? Ну тогда опять же используй Spring Boot.
И вообще, JPA это не единственное средство для связи с БД. Фишка Спринга в том, что он довольно гибок и во многих случаях не навязывает тебе какой-то один подход, а позволяет выбрать то, что нравится. Можешь воспользоваться Spring-JDBC, можешь заюзать MyBatis, можешь вообще хоть на голом JDBC писать.
>Столько анальной боли
Ты правильно рассуждаешь. Весь этот Спринг и энтерпрайз разработка на джаве - просто тихий ужас от которого по кд получаешь анальную контузию. В той же Scala - это решено в рамках небольших библиотек, где все решается в явном виде и занимает буквально пару строк кода. в Java ты сначала хуяришь 100500 обосанных классов, потом лепишь туда еще 100500 аннотаций, полдня ебешься с настройкой СПРЭНГ ФРИМРВЕРКА, а потом разгребаешь проблемы с транзакционностью в Spring Data, лол.
> полдня ебешься с настройкой СПРЭНГ ФРИМРВЕРКА
Плз, что ты там настраиваешь полдня? Если ты не очень джун, занимает не больше получаса
@PersistenceContext
EntityManager em;
public List<Entry> allEntries() {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Entry> cq = cb.createQuery(Entry.class);
Root<Entry> rootEntry = cq.from(Entry.class);
CriteriaQuery<Entry> all = cq.select(rootEntry);
TypedQuery<Entry> allQuery = em.createQuery(all);
return allQuery.getResultList();
}
Кто нахуй писал это все? Интуитивно понятный способ я ебал.
Забей на этот спринг, чувак. Перекатывайся на Скала. Посмотри как персистенс реализован в doobie или slick.
>Перекатывайся на Скала
Мне кажется это язык мертв. Да и рассчитан на тех кто уже два мешка абстрактных фабрик в жабке съел.
>.createQuery("select entry from Entry entry", Entry.class)
Теперь еще и JPQL придется изучать. В java баззвордов на 10 резюме уже хватит пока чатик напишешь.
Скала это не альтернатива Джаве. У Скалы другая область применения (Big Data и распределённые системы). Да и сейчас почти на всех Scala-вакансиях требуют опыт работы с Java. К тому же, этих вакансий мало.
>>28327
Так сейчас со всеми языками, кроме каких-нибудь узконаправленных. Ну и да, если ты знаешь SQL — считай, что ты уже знаешь JPQL. А знание SQL и реляционных БД вообще — это must have для любого бэкэнд-разработчика.
>JPA
не нужно. С развитием проекта ты непременно упираешься в ограниченность и ненужность этого костыля. Лучше старыми добрыми sql запросами через JdbcTemplate
Тогда уж лучше MyBatis, годная вещь, причем тоже с поддержкой спринга.
>Ему никогда не зарабатывать 8к грина на уделенка на скала.
Чет мало для скалы, изи делаю в топтале больше 10к. Но всегда думал если вкатится в скалу то можно немного поднять потолок.
Блин, вы так пишите, как будто сами решаете чем обращаться к бд. Или вы все тут сеньор архитекторы бля? Я когда приходу на проекты (всего два раза такое было) там уже выбран конкретный путь работы с бд и никто тебе ничего менять не даст.
Мне джук тоже понравился, вакансий в своей мухосрани на нем нет.
Spring MVC - это java ee энивей. EE принято называть олдовый языковой стек, а Spring - просто надстройка под него которая переросла в чем-то родителя.
Понял, пасиб.
Переустановил эклипс и теперь не работает автоподсказка.
Например всякие system out print ln приходится вручную печатать.
Как вернуть всё назад? Раньше очень лампово было, начинаешь печатать и он тебе всё подсказывает, теперь только названия переменных и всё.
мммм котлен
На хуй вообще что-то помнить наизусть?
Болванка от конфига есть от предыдущего проекта.
Если надо добавить какой-то новизны, смотришь в референс.
>Вот чем JDBC мне нравится так это простотой. Никакой магии. >Сразу видно где подключаемся к базе данных
Ты кроме Laba1.java никогда не писал, что ли?
Когда тебе надо выдавать за деньги продукт, тебя не ебет, где ты там подключаешься к базе данных.
Все, что тебя интересует - как правильно достать. Как правильно положить решается на уровне маппинга, и тоже больше никогда не ебет мозги.
Если ты не умеешь в абстракции, съеби из ява в ассемблер тогда уж. Там будет видно, и где у тебя программа начинает работать, и все остальное.
Лично я чувствую себя неуютно из-за всей этой магии спрэнг фримверка. Это как-то по-дилетантски - тупо копипастить код с гугла из раза в раз.
>В чем смысл этих манипуляций
А в чем смысл задавать этот вопрос здесь, а не прочесть документацию?
>Теперь еще и JPQL придется изучать.
Хули там изучать? Тот же sql с чутка детализованными классификаторами
Т.е. звездочку не напишешь.
интеллиж говно в этом смысле
достаточно того, что по дефолту в нем подсказки кейссенситив
а уж про sysout=>Sustem.out.println и говорить нечего (его там нет)
а настроить все руками можно хоть в идее, хоть в эклипсе
Просто кое-кто не умеет работать с интеллижем. Все там есть:
sout -> System.out.println
и многое другое.
>filter classes are also spring beans
meanwhile
>all filters internal to the SS are unknown to the container ... that explicitly disables the container registration
Какой код-то ты копипастишь?
Технологическую обвязку, чтобы завелось?
Я, блин, даже не понимаю, в чем твоя проблема.
У меня, может, один-два класса переезжают из проекта в проект - подцепление пропертей для ДБ и кое-что из секьюрити.
Специально сейчас глянул в свой тестовый проект, там про ДБ только проперти лежат да в applicationContext.xml несколько записей про
transactionManager (который через другую запись подвязан к LocalContainerEntityManagerFactoryBean),
jpaVendorAdapter
и
persistenceUnitName
Все. В коде у меня только то, что мне надо - ЭНТИТИ, и все, блядь.
я не могу понять, на хуя вы тащете в код какую-то хуету?
Может, это потому что вы вместо того, чтобы прочесть документацию один раз (и один же раз поиграться в песочнице с тем, что там написано), лезете по кажому чиху на стэковерфлоу и тянете оттуда что-то без понимания, на хуй это надо?
ок, проверю
не умею, да.
но я идее сказал, чтобы она настроилась под эклипс (она же сама меня спросила, хули)
а она не настроилась толком под эклипс
половина хоткеев не работает, как положено, и т. д.
в целом, у меня нет особых претензий к идее. но понять, почему вы на нее так надрачиваете, я так и не смог.
Я про то и говорю, что вместо того, чтобы бездумно лезть за куском кода для конфигов куда-то, хочется понимать, как оно внутри устроено. Это было в ответ на
>На хуй вообще что-то помнить наизусть?
По сути знание внутренних механизмов спринга и есть запоминание названий всей этой хуйни.
1. Здесь нигде не сказано, что они НЕ бины
2. контейнер здесь, очевидно это сервлет-контейнер
Ты путаешь сервлет-фильтер-чейн и спринг-секьюрити-фильтр-чейн.
Чтобы вставить свой фильтр в секьюрити-чейн, тебе надо сделать его бином, чтобы спринг его подхватил и вставил.
Чтобы вставить сервлет-фильтр в чейн сервлет-контейнера, тебе надо прописать его в веб.хмл
Придется привыкнуть к другим хоткеям тогда. Например, все сокращения можно посмотреть, тыкнув ctrl-j. Вообще идея очень удобна, с эклипсом почти не работал, но меня в идее абсолютно все устраивает.
>хочется понимать, как оно внутри устроено.
Хочется понимать - сядь и разберись.
Для повседневной работы это не нужно. Один раз разобрался, дальше можешь забыть. Достаточно того, что ты убедился, что оно и должно работать по своей задумке, которую ты однажды понял.
Ты же предлагаешь, потому что тебе хочется, чтобы все было видно, писать до хуища бойлерплейт кода и копаться в резалтсетах.
Ты смартфончиком своим без угрызений совести пользуешься? Ну, понимаешь все, как оно там внутре устроено?
Может, надо нахуй выкинуть все микросхемы и собирать все на элементарной базе? Ну, там, резисторы с транзисторами спаивать, чтобы ты видел, что откуда куда идет?
И еще раз, за конфигом не надо лезть в куски кода.
Просто пишешь в конфиге своем, кто у тебя отвечает за транзакции, кто жпапровайдер, и какой класс будет энтитименеджерфактори.
Ну и, откуда ему взять коннекшенстринг.
>Чтобы вставить свой фильтр в секьюрити-чейн, тебе надо сделать его бином
Так ведь в вырезке прямым текстом сказано: so if you want to add a custom filter to the security chain, you need to either not make it a bean и т.д. То есть речь о секьюрити-чейне спринга.
> с эклипсом почти не работал, но меня в идее абсолютно все устраивает.
То же самое, только наоборот.
Я не вижу серьезных преимуществ ни у одного перед другим.
Таких, которые бы мне ежедневную работу серьезно облегчили.
Когда поставил себе идею для знакомства, увидел там пару штук клевых, подумал "о, жаль, что в эклипсе нет такого". Дошел до эклипса, обнаружил, что они там тоже давно есть.
Ну, может, инспекторы, которые статический анализ делают в идее.
Но в эклипсе это было уже сто лет назад каким-то плагином.
>Ты смартфончиком своим без угрызений совести пользуешься?
Такими темпами ты пересаживаешься с иглы тимлидского одобрения на магию спринг бута, а потом тебе подсовывают легаси на ванильном спринге и у тебя сгорает жепа, потому что ты нихера не понимаешь.
Я "нот" профукал, виноват.
Думаю, что вот эта ветка ответит на твои вопросы:
https://stackoverflow.com/questions/6725234/whats-the-point-of-spring-mvcs-delegatingfilterproxy
delegatingfilterproxy подхватывает БИНЫ (не все, конечно, а которые фильтры) из спринг-контекста и выдает их в качестве сервлетфильтров
поэтому тебе надо сделать движение, чтобы твой кастомсекьюритифильтр не попал в цепь сервлетфильтров
ты можешь его оставить и бином, но тогда надо пойти через FilterRegistrationBean
Ты почти прав, но нет.
Я знаю, где провести черту.
Я знаю, что я хотя бы однажды разобрался, как работает Спринг.
Поэтому я могу смело копипастить свои шаблоны. С каждой новой версией, впрочем, надо разбираться заново. При переходе с 3 на 4 было весело с изменением дефолтов в секьюрити и пр.
Я примерно знаю, также, как работает спрингбут, что заставляет меня всячески избегать его использования. Ну его на хуй.
Жопа, кстати, там сгорит еще раньше, чем понадобится посмотреть в легаси. Достаточно просто необходимости захуярить какие-нибудь настройки контейнера, которые не торчат очевидным для документации спринга способом. Ну и, привет, jndi из контейнера.
Тем не менее, ты так и не ответил, будем микросхемы на элементарные компоненты заменять, или нет?
А то хуй знает, как там электрон куда бежит.
Спасибо, почитал. Но не соглашусь, я понял это иначе: DelegatingFilterProxy прописывается в цепочку сервлет-фильтров через веб.хмл (в котором через магическое имя springSecurityFilterChain он связывается с бином FilterChainProxy в конфиге спринга), а дальше просто делегирует FilterChainProxy-бину фильтрацию. Отсюда и непонятно, почему нельзя объявить кастомный фильтр бином, если DelegatingFilterProxy делегирует бину с конкретным именем, а не ищет тупо все фильтр-бины.
Так ведь можно и сначала в устройстве ОС разобраться досконально, потом дойти до устройства ЦП, зачем в телефоны лезть? Только вот это все те уровни абстракции, которых ты в своей работе не коснешься с вероятностью 99%, а прикрутить какую-то диковинную фичу к спрингу вполне может потребоваться, поэтому его нужно знать изнутри.
>Отсюда и непонятно, почему нельзя
На всякий случай.
Там же написано, что все внутренние для Секьюрити фильтры НЕ РЕГИСТРИРУЮТСЯ.
Так что если ты делаешь свой секьюрити фильтр, сделай так, чтобы он вел себя так же как и другие секьюрити фильтры.
>прикрутить какую-то диковинную фичу к спрингу вполне может потребоваться, поэтому его нужно знать изнутри
Нет.
Когда надо прикрутить, тогда и начинаешь разбираться, как прикрутить.
Пока я вижу разговоры о том, что надо элементарнейшие вещи, которые прописываются тремя строчками конфига, сперва вытащить зачем-то в код, а потом стенать, что они непонятные, то ли дело ждбц.
Решайте проблемы по мере их возникновения.
А то ява умрет раньше, чем вы выучите все "подкапоты" всего, чем пользуетесь.
Охуеть, эклипс, еще чего скажешь? Совсем ебу дал, все нормальные пацаны в блокноте код редактируют, и никаких проблем!
>2к19
Индикатор мудака.
Достаточно этих 4-х символов, чтобы на остальной высер не обращать внимание
Отлично, минус долбоеб. Ведь только долбоеб будет придираться к форме сообщения, а не его содержанию в 2к19.
Шиз, хуй будешь?
Открывай свой рот, я вытащил.
ты даже прочитать не смог, что вопрос был как включить в эклипсе автозаполнение и начал советовать интелиже-говно
>Эклипс единственная адекватная среда для жаба разработки.
От одного текстового редактора слезы текут, ident guide через жопу и плагины, драг и дроп текста мышкой только недавно запилили, хотя разрабы ленились типа нинужно
Если тебе доставляет удовольствие ебаться с кривым эклипсом, вместо использования сделанного для белых людей интеллижа, то соси свой хуй, раз уж вытащил, быдло. Потому и посоветовал интеллиж, что там нет этих танцев с бубном. Но ты не понял, ибо тупой, как жаль.
Автодополнение не настолько пизже, чтобы я заметил (а я ленивый, я бы заметил, если бы сильно пизже было бы).
И как часто ты пользуешься декомпилером?
Ну, т.е. хорошо, что он есть, но на хуй он мне и тебе нужен?
Не говоря о том, что в эклипсе он есть хуй знает сколько лет.
Хуесос продолжает высирать какую-то хуету, которую никто не читает.
Найс.
Попрыгай еще, попрыгунчик хуев.
А я заметил.
Всегда. Так как сейчас сижу на эклипсе, то приходится через ждгуй либу открывать, сохранять как исходник и линковать в эклипсе. Если это дефолтная либа, то смотреть в исходниках опеждк.
Для чего?
Теперь думаю: то ли джава вырвиглазное дерьмо, принуждающее к ооп, то ли предметная область (форж и декомпилированный кубач) тяжела для непосвящённого, то ли сам мод полон говнокода и потому тяжёл для восприятия, то ли всё сразу.
https://pastebin.com/VxmcUAgK
На вход суперитератора подаются отсортированные итераторы, а суперитератор должен отдавать отсортированные данные из переданных итераторов
I1 => [1, 5]
I2 => [2, 4]
SI => [1, 2, 4, 5]
пиздос, как менять работу, всё равно же ссылку на гитхаб давать, а он пустой
>не знаю, куда вставить MANIFEST.MF
>только хуйня из ИДЕ помогла
>какое же джава говно
Пиздец, ты тупой. Ява не для тебя. Иди в жс-тред.
Тогда может, ты объяснишь, почему когда я делаю package мавеном, при этом заполненный манифест там, где он должен быть, это говно не собирает джарник так, что его можно запустить из командной строки? Объясняю: внутри джара в результате манипуляций (не важно, через идею или через мавен) лежит пикрил, хотя в моем манифесте лежит совсем другое. Это нихуя не норма.
Потому что "я тупой мудак" — не предположение, а объективная истина. Но от этого проблема никуда не девается.
Объясняю:
потому что ты делаешь package мавеном
И ни хуя не знаешь, как он работает, и что там надо прописать, чтобы твой манифест попал туда, куда нужно.
Это обычное явление - мавеном, в основном, пользуются мудаки, которым лень. Которым лень все - написать нормальный сборочный скрипт (хоть батник, хоть на баше, хоть на анте), и они обрадовались, что мавен ВСЕ сделает за них. А он тупой, и ни хуя за них не делает.
>Потому что "я тупой мудак" — не предположение, а объективная истина
Значит, это единственная причина неудачи.
Не следует пытаться искать другие.
Не понимаешь ООП? Разберись
Не умеешь в яву? Научись
Предметную область не понимаешь? Вгрызись
Говнокод? Исправляй чужие ошибки
Но ты выбрал ныть на дваче.
как думаешь, какие шансы, что это поможет тебе достичь результата?
>потратить кучу времени на написание скрипта и годами окупать минуту, потраченную на прикручивание плагина к мавену
А ты знаешь толк в извращениях.
>Но ты выбрал ныть на дваче.
Что значит "выбрал"? А ничего, что одновременно с этой вкладкой у меня ещё открыты вкладки с манами?
Отдохнуть и потрепаться-то тоже иногда надо, так что неси свои мотивационные цитаты в /se/, а лучше в /b/. Я выбираю и нытьё и превозмогание одновременно.
Так а кто тебя принуждает? Ну хочется тебе писать в процедурном стиле - пиши на здоровье.
Дисрегард, к языку это высосанная из пальца предъява.
Я злюсь из-за кубача, в котором blockShit extends Block, соответственно всё нелинейно, а нелинейно = хуй проссышь поначалу что там к чему обращается, а документации внятной нет ни в моде ни в форже (зато сколько выебонов с джавадоками и прочей хуйней, когда на практике никто не пишет эту документацию), а сам мод вместо того чтобы заебенить функцию и прогнать регистрацию айтемов, скормив ей список через цикл, хуярит последовательность абсолютно одинаковых кроме одного аргумента вызовов на тысячу строк, ухх бля ухх сука и везде котлеты с мухами перемешаны нахуй, никакой логики, короче едва что-то поймёшь как руки чешутся отрефакторить это говно. Да не, "я мудак" это лишь одна из ряда причин, почему всё так тяжело идёт. Сильно сомневаюсь что суперпрофессионалы итт не испытают неприятных ощущений при попытке разобраться в этой помойке. Но ты конечно можешь опровергнуть это личным примером)
ООП как раз призвано упростить все то, что тебе кажется непонятным. Ты бы охуел, если бы все эти абстракции были написаны в процедурном стиле да и вообще бы не было твоего кубача, потому что ООП как раз позволяет строить сложные, расширяемые приложения за счет множества слоев абстракции. Не зря же жава так широко используется в кровавом энтерпрайзе. Тебе, как пользователю, нужно только разобраться с относительно простым апи, который фреймворк предоставляет хотя если с доками все плохо, то пiзда тобi.
Я о том и говорю, что все итак уже упрощено максимально, тебе не нужно лезть внутрь, просто используй апи. А вообще тяжело уже воспринимаю текст, пора спать.
>да и вообще бы не было твоего кубача
Игры на жабе кстати — скорее исключение, чем правило, хотя речь не об этом. И кубач за свой язык заплатил дорогую цену.
Какую, например? Если ты хочешь привести в пример скорость, то это не актуально. JIT тащит.
Скорость.
>JIT тащит
Возможно. Но не кубач. Да и не слышно пока хруста сидений гейдевов, пересаживающихся на джаву.
Память нахуй.
Ну и какой бы охуенный JIT не был, вполне вероятно что майнкампф с кучей модов он не вывозит, так как постоянно скатывается в деоптимизацию, но это я простоо спизданул и не исследовал.
Ты хоть что-то пробовал? Хотя бы самое хуевое решение - собрать инфу со всех итераторов и отсортировать, а потом выплевывать используя ее итертор.
>то ли предметная область (форж и декомпилированный кубач) тяжела для непосвящённого
Вот это. Как следствие:
>сам мод полон говнокода и потому тяжёл для восприятия
Язык тебе нихуя не должен. Это как требовать от крестовой отвертки возможность эффективно работать со всеми видами и размерами шлицов.
>но на практике все упирается только в неэффективный код.
Почему-то так совпадает, что неэффективный код пишут именно тут, а эффективный всё больше на крестах, хм, ну конечно это следствие традиций и ничего больше.
Чел, ты пытаешься надавить на человека после того как он в открытую признал неправоту, какой ты конкретно от него ожидаешь реакции? Тут уже ты долбоёб, что после драки кулаками машешь, либо что тред не читаешь @ сразу отвечаешь. В любом случае ты долбоёб, как видишь.
Потому что от программистов на крестах требуется гораздо больше опыта, навыков и дисциплины, чем от программистов на жабе: неэффективный код на жабе можно писать быстро и он будет работать, а код на крестах пишется дольше и подводных камней там гораздо больше, а значит, и шанс где-нибудь споткнуться и намертво остановиться выше.
Ты не языки сравнивай, а уровни программистов. На крестах можно тоже неэффективный код писать, просто он до своей финальной формы редко доживает.
С ассемблером бы еще сравнил, долбоеб
>>29513
Чел, челик, ничего я не пытался. Достаточно было просто не отвечать, чел.
У меня как-то на апворке было задание переписать код на жабе на CUDA. Сначала я его переписал на С++ для удобства. Простое переписывание довольно простенького кода влоб ускорило его в 6 раз.
Ни о чем вообще не говорит.
>окупать минуту
>минуту
Ахахахаха
Сто постов на дваче, как у вас с мавеном нет взаимности.
Охуительно вы все за минуту делаете.
Удачи
Прикол в том, что нужно это реализовать максимально эффективным способом. Тут у тебя while(superIter.hasNext()) => iters.forEach() => O(n^2)
У тебя не будет более эффективного способа, чем каждый раз вынимать из КАЖДОГО итератора значение и выбирать минимальное (учитывая, что у тебя уже есть вынутые, которые не минимальные).
Как-то к этому подвяжешь знание того факта, что входные итераторы уже отсортированные.
Это так себе оптимизация будет - просто будет в некоторых случаях останавливать запрос из и-го итератора.
В общем, это не вопрос про яву. Это вопрос про то, умеешь ты алгоритмизировать, или нет.
Чому O(n^2)?
O(n*m) же, где n - количество элементов, m - количество итераторов, то есть O(n) если количество итераторов - константа. Нормальное решение, быстрее не сделать
>Как-то к этому подвяжешь знание того факта, что входные итераторы уже отсортированные.
Нихуя не поможет. Следующее значение из любого итератора может быть наименьшим на данный момент.
Одиночный цикл в n итераций даёт f(n) = n. Цикл внутри цикла — f n) = n^2. Цикл внутри цикла внутри цикла — f(n) = n^3. И так далее.
Где там вложенные циклы?
Пройтись по коллекции, добавить значения в очередь и достать самое маленькое. На глаз там не сложнее n*logn должно получаться.
В psvm лежит while, который вызывает superIter.next(), в котором iters.forEach()
Кто ничего не пытается тот рот не раскрывает как бы
Ну вот, сам подтверждаешь что язык располагает к говнокоду.
А почему игры и другие высоконагруженные приложения на джаве пишутся лишь в порядке исключения ты так и не рассказал. Наверное потому что другие языки не располагают к говнокоду и не прощают его, прям как ты и сказал. Т.е у нас с тобой на самом-то деле нет никаких противоречий.
Язык нет, а виртуальная машина очень даже.
Спорить с невъебаным потреблением памяти джавой сложно.
А писать так что бы хавала мало тоже весьма не просто и зачастую совсем не джава вэй получается.
Шутка ли - в банках просто "отключают" сборщик и раз в день ребутают юниты которым пора. Ну ничего, теперь для этого есть специальный сборщик мусора который ничего не делает.
Уже не очень, дядя Леш.
JDK у меня версия 9.0.4 Томкат 9.0.21 могут они не совпадать, например, и поэтому не работает?
Вот этот крендель https://www.youtube.com/watch?v=9HSl6ZyQbQ0&list=PL786bPIlqEjSoaZjtS5y6hQrUWOzs72Jl&index=4
делает все то же самое, и у него работает
Попробуй зайти по адресу localhost:8080/GreatServletWeb/hello. Или localhost:8080/hello.
а как это сделать?
Тут никто не умеет в сервлеты, все давно пишут на спрингбуте и уже позабыли как это все работает
как поменять? еще вот такое окно все время.
мне все советуют учить сервлеты и жсп, для начала
Работаю на спринге уже полтора года, многое умею, но очень хочу разобраться в его "потрохах", знать его составные компоненты, как они работают. У меня вечно такое ощущение, что я хуёво егт знаю, хотя писал очень многое.
Например, хотелось бы обмазаться Spring Security. Я знаю, как его сконфигурировать для простейшей авторизации. А вот когда какой-нибудь OAuth2, то сразу проблемы. Я смог написать, но теперь в душе не ебу как оно работает внутрт и как только какая-та трабла, то сразу приходиться гуглить. А хочется знать спринг очень хорошо, чтобы понимать как там формируются бины, почему выплёвывается та или иная ошибка. Я надеюсь, вы поняли о чём я.
Google -> Spring <projectname> architecture -> head blows up because of infinite layers of abstraction -> profit!
Может тогда не надо сервлеты лернить, а со спринг бута начать. Я долгие часы уже не могу хелло ворлд запустить
Все, понял. Я же блокирую тред, в котором собираюсь вызвать basicConsume, вот ничего и не происходит. Спасибо, двач.
поможет
ты взял из итераторов значения 1, 6, 8, 4
зная, что итераторы сортированные, тебе надо смотреть ТОЛЬКО в первый, пока там не появится что-то большее 4-х
И если ты оттуда достал 5, то можно останавливаться
> а в урл что пишешь?
в урл я пишу localhost:8080 или localhost:8080/hello или localhost:8080/GreatServlet или если делаю test.jsp как во втором примере, то пишу localhost:8080/test , ну и всякие другие вариации пробовал index там
Я все повторил за ним https://www.youtube.com/watch?v=9HSl6ZyQbQ0&list=PL786bPIlqEjSoaZjtS5y6hQrUWOzs72Jl&index=4
кроме того что не уставновил плагин, т.к. не нашел его
Ты прав. По скорости выигрыш не очень большой, но зато потребность в памяти радикально меньше.
В этом варианте >>29523 практически все значения сначала в память считывались, а у уже потом доставались.
В новом варианте https://ideone.com/SFWEt3 только по мере необходимости. Вот только реализация не тривиальна, пришлось позаимствовать PeekingIterator от апача и сделать его comparable.
>>29656
Чет нихуя я не понял что там происходит.
Почему бы не завести хэш-мапу, в которой ключи - числа, взятые из итераторов, а значения - их количество. Лукапы по ключам очень быстрые, так что получится та же очередь с приоритетами, только эффективнее. Особо не вникал в задачу и ваши решения, но надеюсь, что не хуйню сказал.
А, дополню: чтобы вытаскивать entry мапы по очереди, нужно сделать TreeMap, а не хэшмапу. Ну и сложность тогда предположительно будет O(logn).
>Чет нихуя я не понял что там происходит.
Есть массив "просмотренных" значений (просмоторы происходят при вынужденной проверке итератора в методе next), позиция в этом массиве соответствует позиции итератора.
Если в массиве "просмотренных" есть неnull значение, значит точно что-то от next мы получим, если нет известных "просмотренных" - придется чекнуть hasNext у итераторов, до первого положительного (сейчас подумал что и тут можно сразу по двум массивам идти).
Для поиска next идем по массиву просмотренных, если есть значение проверяем является ли оно минимальным, если нет - используем итератор на данной позиции и его next. По ходу дела за один проход и заполним массив "просмотренных", и сразу минимальное значение с его позицией найдем. Убираем из "просмотренных" минимальное значение которое будем возвращать (что бы на следующем проходе опять спросить соответствующий итератор).
То есть ты каждый раз перебираешь весь массив просмотренных значений? Быстрее будет хранить их в уже сортированном виде и дергать по мере надобности.
>>30011
Замеры через System.currentTimeMillis() и график в екселе, лол. Ну а тестовые данные просто массивы со случайными цифрами фиксированной длинны. Я у мамы ученый на хую верченый.
> Как правильно положить решается на уровне маппинга, и тоже больше никогда не ебет мозги
в разных запросах может понадобиться разный маппинг
"один раз сделал маппинг и всё". Нет, это не так. Скажу даже больше - готовый маппинг очень часто мешает
Ну и что, все равно алгоритм вроде как проще вышеуказанных.
Просто хранить уже отсортированные не получится, так как нужно будет еще хранить данные о том из каких итераторов взяли значения, а из каких нет. Из тех что не взяли придется брать значения и опять сортировать.
>Ну и что, все равно алгоритм вроде как проще вышеуказанных.
Нет не проще - см. пикрил. У тебя O(n^2)
Это ведь неправильно с точки зрения стиля написания кода,
как это исправить?
1. просто хранить отсортированные получится. Каким-нибудь модифицированным линкдлистом, со знанием мин, мак и указателя на середину листа, чтоб хоть чуточку быстрее вставлять в него.
2. достаточно про каждый итератор хранить последнее выбранное из него значение (а не присовокуплять ссылку на итератор на выбранные значения, которые хранятся в списке из 1)
Она генерит, вроде бы, там, где у тебя курсор стоит. Алсо, чому бы ломбок не подрубить?
Дело не в лени, а в стиле и внешнем виде когда. У меня может быть 20 полей и под все из них геттеры и сеттеры займут около 79 строк, зачем оно мне есть аннотация @Data автоматом мне их создаст, без лишнего кода, который бросается в глаза?
Такой код выглядеть лаконичнее.
Ладно, тут согласен. Но когда ломбок прикручивают к классу уровня хэллоу ворлд с двумя полями (а такое вижу частенько), мне это непонятно.
Кей хорстманн, библиотека профессиональнала
Потому что с ним ты теперь зависишь от того как хорошо работает lombok плагин в твоей IDE.
Ух, бля!
Препроцессор препроцессора перед препроцессором.
Нельзя же просто взять и начать компилировать!
Стандартными никак.
Стандартный класслоадер не гарантирует, что прочтет все классы из класспаса. Только те, которые ему явно понадобятся.
Если хочешь поебаться, то разбирайся, например с этим:
https://github.com/ronmamo/reflections
Но, очевидно, у тебя ничего не выйдет, потому что это примерно вторая ссылка в выдаче гугла, а ты пришел со своим вопросом на двач.
Удачи.
я пришёл с вопросом на двач, потому что я не джава программист, и решил обратиться к коммьюнити, чтобы мне надавали годных советов люди, которые знают ответ, чтобы я не тратил своё время на перелопачивание кучи ресурсов о рантайме джавы, его пакетах, класс лоадерах и прочем, но походу тут немногим дружелюбнее андроид тредов, яснопонятно.
>я не джава программист
>обратиться к коммьюнити
Ахахахахаха. На дваче. Коммьюнити.
Коммьюнити "джава программистов" на дваче.
Ты, похоже, не просто не джава программист, ты вообще умственно отсталый.
Начальник просит меня сделать такую хуиту, а я блять не кодер, я блять сис админ нахуй как он говорит ТЫЖПРОГРАМИСТ
Ну ты не первый кого начальник просит такое сделать, в 2019 все очень просто, вот подробный гайд
https://circleci.com/blog/its-the-future/
> не просто не джава программист, ты вообще умственно отсталый.
Иногда я смотрю в зеркало и думаю: "Кто же ты, человек в зеркале?". Я совершаю плавные движения руками, иногда поворачиваю влево или вправо своей головой, не отводя взгляда от зрачков отражения. Кто же я?
Число полей и внутренних функций ничего не решает, просто интерфейс должен быть минимальный. А толстый класс на 1к строк кода, но с двумя-тремя public методами - это гут.
Так ведь геттеры и сеттеры и есть интерфейс. И когда их очень много - это не норма. А если ты делаешь их приватными и используешь в том же классе вместо прямого обращения к приватным полям, то у меня вопросы к твоему психиатру.
Ну да, конечно. Если в файле больше 1к строк кода — стопудняк говнокод. Всё изи.
>>31619
Геттеры и сеттеры — это очень плохой интерфейс. Причём сеттеры хуже. Желание написать геттер вызывается тем, что код не достаточно объектно ориентированный. Методы типа геттеров и сеттеров чаще всего возвращают примитивные типы. А если тебе постоянно нужно работать с примитивными типами, значит у тебя процедурная хуета.
Потому что гитхаб куплен майкрософтом, и у линуксоидов бомбит срака
>Желание написать геттер вызывается тем, что код не достаточно объектно ориентированный
Охуенные истории. Как раз таки это и есть проявление ООП - инкапсуляция. И если тебе нужно получить значение поля для действия, которое не входит в ответственность самого класса, то тут лучше, чем геттером, и не сделать.
Откуда вы берётись, шкальники с определениями из википедии?
Вот поясни мне, чем ЭТО лучше, чем просто сделать public string? Вот чем, бля? Какие бонусы даёт?
Да ничем не лучше. Сеттеры — это полная ебельдь, геттеры ещё допустимы, но их использование должно быть обоснованно.
И одни из самых уёбещьных геттеров — это геттеры, которые возвращают примитивные типы. Потому что это значит, что объект просто является структуркой из сишки.
Это лучше тем, что какой-нибудь васян не сможет унаследовать твой класс и создать спагетти-код, обращаясь в подклассе к полям суперкласса. Не говоря уже просто о том, что геттеры и сеттеры унифицируют интерфейс, и тебе не придется бегать с дебаггером по всему коду, чтобы выяснить, где же ты достиг пика Балмера и обратился напрямую к полю, изменив его значение. Короче ты свои принципы говнокодинга лучше держи при себе и другим людям не показывай.
>понадобиться разный маппинг
Ну да, конечно. Данные из объекта "MyMomsFucker" ты будешь класть то в одну таблицу, то в другую.
Это такой охуенный дизайн.
Пиздец, ты мастер работы с базами данных, сразу видно.
Да, асбтракции тебе не нужны, хуярь на ждбц!
Пиздец, ты тупой.
Это лучше тем, что сегодня ты возвращаешь просто name, а завтра еще и делать при этом что-то будешь (писать в лог, сколько раз спросили имя; присовокуплять слово ХУЙ к имени; да мало ли).
А у тебя уже будет до хуя кода, которое просто берет значение из переменной. И все, пиздярики.
>использование должно быть обоснованно
>обоснованно
Т.е. ты не различаешь, когда надо две Н писать, а когда одну. В своем родном языке. Но про неродной тебе язык Ява ты даешь экспертные заключения, как и что надо на нем делать.
Какая дефективная пизда рожает таких даунов в этот тред?
Васян, который будет наследовать - по херу.
Не по херу те, кто будет использовать это класс.
Достаточно в какой-то момент захотеть поменять детали внутреннего представления того, что возвращается геттером, и ты рад, что у тебя наружу торчит только геттер.
Ну, например,
private int age;
public int getAge(){.....}
поменяешь на
private Date birthDate;
public int getAge(){.....}
говнокодер, которому ты отвечаешь, не писал ничего сложнее Laba.java, поэтому в его пустую голову и не приходит, что такая хуйня в реальной жизни сплошь и рядом.
>Это лучше тем, что какой-нибудь васян не сможет унаследовать твой класс и создать спагетти-код, обращаясь в подклассе к полям суперкласса.
Васян заоверрайдит геттер.
>Короче ты свои принципы говнокодинга лучше держи при себе и другим людям не показывай.
Мои принципы — это не писать public поля, а продумывать структуру класса так, чтобы не было полей, к которым есть и геттер и сеттер.
>Т.е. ты не различаешь, когда надо две Н писать, а когда одну
Если человек допустил грамматическую ошибку, значит и аргумент у него инвалидный. Ну это же очевидно, ну ёпт.
>Это лучше тем, что сегодня ты возвращаешь просто name, а завтра еще и делать при этом что-то будешь (писать в лог, сколько раз спросили имя; присовокуплять слово ХУЙ к имени; да мало ли).
Сегодня слушаешь Джаз, завтра родину продашь.
Вот надо будет добавить запись в лог, перепишешь из прямого доступа в геттер.
Я же изначально дал установку, она звучит так:
Если у приватного поля класса, которое является примитивным типом, есть и сеттер, и геттер, то это так же хуёво, как и если бы ты его просто пабликом захуярил. Ну или может чуть-чуть лучше, потому что вывод в лог кому-то проще дописать, ну збс. А с точки зрения архитектуры приложения — та же хуйня.
Вас на буткампах уже вообще забросили, и не учат что оверьюзить аксессоры плохо?
>перепишешь из прямого доступа в геттер
А если классов, работающих с этим полем, много? Тоже перепишешь? Колхоз такой-то.
>не учат что оверьюзить аксессоры плохо
Плохо-то плохо, только и бояться их тоже не нормально. Поэтому правило
продумывать структуру класса так, чтобы не было полей, к которым есть и геттер и сеттер
звучит странно
>А если классов, работающих с этим полем, много? Тоже перепишешь? Колхоз такой-то.
Это сарказм был. Если единственный аргумент в защиту акссессоров это то, что их проще мэйнтейнить, то значит они реально не так далеко ушли от просто паблика.
Я же не в защиту паблика говорю, я против аксессоров.
>продумывать структуру класса так, чтобы не было полей, к которым есть и геттер и сеттер
звучит странно
Почему? Если у тебя есть класс Car, содержащий поле Engine, у которого низкоуровневые методы, то логичнее сделать у класса Car метод move(), чем метод getEngine, а потом в классе TheGodOfMovement работать с этим Engine.
А это уже и есть продумывание структуры чтобы геттеров было меньше. Я не говорю, что их вообще не должно быть в коде. Это невозможно. Я говорю про то, что такая оптимизация улучшит читаемость и уж точно не звучит странно.
Сделал по учебнику минимальный RESTful сервис, задеплоил на TomEE и при обращении к своим URL-ам в логе получаю исключение:
java.lang.IllegalArgumentException: bean
at org.apache.bval.util.Validate.notNull(Validate.java:38)
at org.apache.bval.jsr.job.ValidateBean.<init>(ValidateBean.java:35)
at org.apache.bval.jsr.job.ValidationJobFactory.validateBean(ValidationJobFactory.java:52)
at org.apache.bval.jsr.ValidatorImpl.validate(ValidatorImpl.java:53)
at org.apache.cxf.validation.BeanValidationProvider.doValidateBean(BeanValidationProvider.java:149)
at org.apache.cxf.validation.BeanValidationProvider.validateReturnValue(BeanValidationProvider.java:135)
at org.apache.cxf.validation.BeanValidationOutInterceptor.handleValidation(BeanValidationOutInterceptor.java:43)
at org.apache.cxf.validation.AbstractValidationInterceptor.handleMessage(AbstractValidationInterceptor.java:83)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
at org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:90)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
at org.apache.cxf.phase.PhaseInterceptorChain.doInterceptStartingAt(PhaseInterceptorChain.java:478)
at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:94)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:267)
at org.apache.openejb.server.cxf.rs.CxfRsHttpListener.doInvoke(CxfRsHttpListener.java:258)
at org.apache.tomee.webservices.CXFJAXRSFilter.doFilter(CXFJAXRSFilter.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.tomee.catalina.OpenEJBSecurityListener$RequestCapturer.invoke(OpenEJBSecurityListener.java:97)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:836)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1839)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Подскажите плс, в какую сторону копать?
Сделал по учебнику минимальный RESTful сервис, задеплоил на TomEE и при обращении к своим URL-ам в логе получаю исключение:
java.lang.IllegalArgumentException: bean
at org.apache.bval.util.Validate.notNull(Validate.java:38)
at org.apache.bval.jsr.job.ValidateBean.<init>(ValidateBean.java:35)
at org.apache.bval.jsr.job.ValidationJobFactory.validateBean(ValidationJobFactory.java:52)
at org.apache.bval.jsr.ValidatorImpl.validate(ValidatorImpl.java:53)
at org.apache.cxf.validation.BeanValidationProvider.doValidateBean(BeanValidationProvider.java:149)
at org.apache.cxf.validation.BeanValidationProvider.validateReturnValue(BeanValidationProvider.java:135)
at org.apache.cxf.validation.BeanValidationOutInterceptor.handleValidation(BeanValidationOutInterceptor.java:43)
at org.apache.cxf.validation.AbstractValidationInterceptor.handleMessage(AbstractValidationInterceptor.java:83)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
at org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:90)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
at org.apache.cxf.phase.PhaseInterceptorChain.doInterceptStartingAt(PhaseInterceptorChain.java:478)
at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:94)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:267)
at org.apache.openejb.server.cxf.rs.CxfRsHttpListener.doInvoke(CxfRsHttpListener.java:258)
at org.apache.tomee.webservices.CXFJAXRSFilter.doFilter(CXFJAXRSFilter.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.tomee.catalina.OpenEJBSecurityListener$RequestCapturer.invoke(OpenEJBSecurityListener.java:97)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:836)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1839)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Подскажите плс, в какую сторону копать?
Дело в том, что в гугле я уже довольно хорошо поискал, и по разным ключевым словам из стектрейса подобной проблемы ни у кого не обнаружено.
Исправлено тем что вместо 8-го TomEE поставил 7-й.
Но все равно хочется знать, что было не так.
-Если трансформеры "трансформировались и поехали!", то трансухи сначала поехали, а потом трансформировались
Ебать я тредом ошибся. Извините.
>Вот надо будет добавить запись в лог, перепишешь из прямого доступа в геттер.
Ахахахахахахахаха.
Все остальное можно не читать.
Специалист делится опытом.
А еще кто-то ругает индусов за их код.
>оверьюзить аксессоры
О, бля, по-русски обсирается писать, смотрите, какой он мастер говорить на говносуржике!
Сколько у тебя за спиной проектов-то? Ну, не считая лаб.
1. Здравствуй, мир
2. Сортировка методом пузырька
3. <в работе>
Судя по хуете, которую ты тут с надутыми щеками выдаешь, примерно так.
В одном отчёте тебе нужно сджойненное поле Mamka1, другом отчёте это поле не нужно, а нужно Mamka2. А в основной логике не нужно ни первое, ни второе.
Или предлагаешь каждый раз грузить и то, и другое?
>такая хуйня в реальной жизни сплошь и рядом
логика в entity классах - вселенское зло. Это первое, чему учат джунов после laba2
Как скажешь.
Видимо, до laba3 ты не дошел, потому что там рассказывали, что все эти принципы - не вселенская истина, а лишь рекомендации. И вообще, если логика в ентити связана только с самим ентити, то ничего плохого в ней нет.
>то ничего плохого в ней нет.
только проблемы с размытием границ бизнес-логики, с тестированием, с транзакциями, с появлением "god object"
То есть, даже вспомогательные методы вида "пройдись по своей коллекции и найди наименьшее число" запрещаешь?
Никаких проблем нет, если писать правильно
https://www.yegor256.com/2014/12/01/orm-offensive-anti-pattern.html
CollectionUtil со статическими методами
такой метод в каждом классе собираешься делать?
>orm открывает доступ к sql всему приложению, блаблабла
Дальше не читал. Почему ему никто про дао не рассказал?
Потому что DAO не нужно, очевидно же.
https://www.yegor256.com/2017/12/05/data-access-object.html
А неплохо устроился, тупо взял и обосрал в виде постов все адекватные аргументы против своих манятеорий. Теперь если что-то скажешь против, то у него еще статься найдется.
Защитник русского языка в треде.
Активная запись, НПС(Не повторяй себя), Разработка через тестирование, ПЕСП-архитектура, КТС3+ЯГТР5, ЯСЗ база данных.
Можно эту задачу решить как-то быстрее, чем n2? Ничего в голову не приходит
Я за О(0) решил, можно как-то быстрее?
Посмотрел на вики, и нихуя не понял.
>Или предлагаешь каждый раз грузить и то, и другое?
>каждый раз
Тебе нужно три разных варианта в трех разных случаях.
Но ты напишешь один класс, котрый как-то хитровыебанно замапишь (на самом деле, конечно, нет,ты обосрешься).
Любой нормальный человек отчеты облакачивает на вью, в которых резвись, как хочешь. И да, мапь один к одному, а не хитровыебанно.
Но если уж на то пошло, то да, я буду каждый раз грузить и то, и другое. А не делать три пизданутых разбора ResultSet'а голым ждбц, чтобы тебе понятно было, где что происходит.
Компьютер железный, он выдержит.
Напомню, так же, что любое изменение схемы бд у здорового человека вызывает изменение маппинга ровно в одном месте. Совершенно очевидными способами, читабельными глазами.
У таких, как ты, ну... ты и сам знаешь же, да?
>логика в entity классах - вселенское зло
Фантазировать о том, чего не видишь - признак уебана. Этому уебана бесполезно учить в любом случае.
Пример был такой, какой был, чтобы даже уебан понял, о чем идет речь.
Судя по тому, что возражения есть только про вселенское зло, цель достигнута.
Хотя, конечно, и не вполне, раз ты там где-то увидел логику, болезный.
Вот же ж ты мудак, тебе уже в сотом посте говорят, что "границы бизнес-логики" определены интерфейсом класса.
Который ты то предлагаешь менять постоянно, то выносить в него переменные.
Блядь, ну откуда вы сюда лезете? Это же не яваскриптовый тред. Может, ты перепутал просто?
В общем случае нет никакой разницы.
В каждом конкретном (технология, язык, фреймворк) - может быть.
Не еби мозги, короче, себе.
Хуёво там всё с докером, ставь линукс. Ну то есть работать может и будет, а можешь отхватить баг нигде не описанный толком (я вот влетел на невозможность получить права на запись в C:\ и не помог ни один из найденных рецептов) и будешь вместо работы искать что с этим делать.
>>31862
Используйте ломбок, он няшечка.
Только вот почему-то шарпец не хочет работать с линупсом, на котором крутится большая часть серверов)0
А как его поставить лучше? В виртуалке наверн неудобно работать будет? Второй осью? Ты просто снес винду и забыл про нее?
ставь второй осью если хочешь играть в игрушки/нужен фотошоп, сам поставил основной осью и под вайном норм старый видософт/игры работают
https://stackoverflow.com/questions/770474/what-is-the-difference-between-serialization-and-marshaling
tl;dr Сериализация может использоваться для маршалинга
Маршалинг это об идее "передать отсюда туда" (из одного процесса в другой и тд). Сериализация способ сохранить данные так что бы потом прочитать, в протобоаф ли, в жсон, в хмл - не важно.
Анончики, какой набор знаний необходим, чтобы стучаться в компании на должность джуна НЕ ВЕБСПРИНХ?
Знаю core, дженерики, имплементил ArrayList, stack(на основе односвязного списка), бинарное дерево. Знаю, как работает hashmap. Знаю скорости чтения/доступа всех этих структур данных. Не умею в сортировку, от слова совсем(пока не дочитал до этого в книге по алгоритмам). Малость ориентируюсь в многопоточности, на 2/3 осилил курс Головача. Мне шо-нибудь вообще светит с таким набором? Не хочу писать сайты, хочу чего-то мало-мальски интересного
byte как примитивный тип и как bytecode - вещи разные
Без фримверков - бибу сосать только. Джава не про эффективный код, а про быструю и надежную доставку фич для наебизнеса. Тебе в плюсотред.
Хотя всякие хайлоады мутят на ней, но там все равно нужно куда больше знаний, чем у тебя есть.
Таким платят обычно 1/x от спрингбут-реакт-макак, но такие конторы есть, сам хотел туда перекатится (бывший олимпиадник) но сложно резко потерять больше половины дохода.
Смотри в сторону стартапов видео/крипто/роботы, но туда можно попасть джуном только если ты особенный.
кому ты больше доверяешь, какому то официальному форуму или еблану с двочей?
Да ну. Тот же visual studio, написаный на плюсах, работает хуже, чем любая ide от jb, каждая из которых написана на java
Я и не говорю, что на жаве нельзя писать хороший быстрый код. Просто задачи другие, и эти навыки не так важны, как знания Спрэнг Фримверка.
Я не из РФ, так что яндекс по дефолту мимо, а в гугл-амазон сфейлил интервью один раз так как хикка и волновался пиздец как что у меня аж мозги парализовало на какое то время, больше не пробовал. Ну я был так себе олимпиадник, едва красный рейтинг в лучшее времена. Да и так зарабатываю больше, чем там предлагают, просто иногда печально становится что делаю какую-то хуету
Есть intellij idea, есть поддержка баша в win10. Тебе чего нужно-то ещё?
На кой хуй тебе docker сдался?
Какие же джуны дегенераты, пиздец просто.
Сам код не выглядит сложным, но нарисовать всю картину как сервис А клиентом сервиса Б ходит в Б, дальше там ещё какие-то асинхронные методы, очереди, прослойки... - получается очень-очень нескоро.
docker-toolbox есть.
Не, я вроде забыл аннотацию поставить над создаваемым бином. Все равно хуйня какая-то.
Да на руки. Политика там простая. Через пол года дают тест. Если прохожу - повышают до обычного погромиста.
Я думаю я жуе ща осилю тест. Там даже многопоточность не требуют на средний уровень.
Я бы тогда сказал что хорошо. А через 2-3 месяца не дадут пройти?
Есть ещё офферы? На рынке джунов не сказать чтоб такой выбор был хороший, я бы не перебирал без нужды.
Да я вышел туда уже. Кстати нормальный коллектив такой.
Офферы были несколько но там странные люди в основном какие то были. Предлагали кто то ЕЕ, кто то какую то легаси срань, которую я в глаза не видел. Даже сбербанк был.
В сбер наверно я точно пас.
Был вариант за 90к с кучей командировок, но мне как то в падлу летать было по стране туда суда. Я не и понял прикола, ни чем конкретно контора занимается.
Еще был андерсон с предложением поработать за 5к лол
Я с них откровенно поржал.
А дальше куда/как? Есть кто-нибудь с личными историями успеха? Интересует как рост в экспертизе так и в техническом управлении.
Дальше не в 250к упираться а заводить трактор. Ну как бе иначе смысл этим всем заниматься.
Я сейчас на поддержке у гигантской конторы с франчайзингом. Джава в основном это банки / хайлоад/ гигантские корпорации.
Отсюда и ЗП,
Про тракторные истории тоже интересно. Именно про наш стек, не абстрактное "уехал в гугель чота там писать".
Кто-нибудь устраивался на автоматизатора в епам? Какие там +- требования к кандидатам, мощным надо быть или автоматизаторов не хватает и закрывают на многое глаза?
Попробуй гуглом. Я сейчас без сарказма.
Найди сайт работный той страны куда хочешь уехать.
Пишешь резюме на их языке.
Ждешь ответов / пробуешься сам. Но я думаю надо язык на норм уровне. А там офер ну и как обычно.
Например через блокинг кью как то. Разбить на продьюеср / консьюмер?
Условия остановки рекурсии нет - по сути например, как в поиске в ширину, можно реализовать через стек или очередь пока они не пустые. Но получается что много тредов в стек добавляют и много оттуда забирают и стек периодически может быть пустой.
Вопрос ,наверное, скорее даже в том как реализовать условие, чтобы программа завершалась, а не крутилась в бесконечном цикле.
Не, я видимо плохо написал. Я не то чтобы прямо сейчас собираюсь уехать, да и английский подтянуть надо б чтобы хотя б на скайпах нестыдно было.
Просто хочется послушать историй прям успешного успеха, кто как что. Так-то я канву знаю и думаю через пару лет попробую.
> Вопрос ,наверное, скорее даже в том как реализовать условие, чтобы программа завершалась, а не крутилась в бесконечном цикле.
Мне чудится или ты там проблему останова решаешь? В практическом смысле, кмк, можно завести счётчик неуспехов чтения очереди (только аккуратно его пошарить между тредами) и останавливать обработку после его достижения.
Я тебе так скажу. Если ты прям реально хочешь уехать, а не когда то там может быть никогда .
То можешь уже начинать подтягивать нужный язык и искать вакансии. Дрочить скил под них и проходить какие то тестовые собесы, если скил уже есть.
Прям вот пишешь список того что надо и хуяришь. Планомерно, без перенапряга, чтобы плавно и приятно заходило. Сам не поймешь как уже будешь в желаемой стране жить.
В целом да. Просто медленнее. Но писать все равно надо, иначе это как по ютюб видосам учиться боксу. Будешь диванным мастером спорта, а ирл огребешь от первого щегла.
https://habr.com/ru/post/188010/
https://github.com/enhorse/java-interview
https://habr.com/ru/company/luxoft/blog/270383/
https://habr.com/ru/post/265061/
https://habr.com/ru/post/350682/
Меня спрашивали отсюда все суммарно. За ~8 разных собесов. Ответы нормальные сам нагуглишь.
Класска - про арей лист / линкед лист. Даже про то как поменять GC из/в многопоточный режим ставить спрашивали.
В 1 контору было аж 3 сука технических. 3!! Даже с техническим директором собеседовался. По итогу вакансия оказалась говно пздц.
итого 4 офера из 4 контор
+ еще гуглом поищи по спрингу /ее / хадуп/жбос/редис или что там у тебя.
Братишки я Вам говнокода принес.
https://github.com/EntropyAndDespair/bsfFileSearch/blob/master/ConcurrentFileSearch.java
Костыль на костыле.
Через callable или форк join нормально получается. Но я курнул и хочется извращений.
Интересно еще вариант этого же говна можно как то слепить.
Что за стак? Что спрашивали?
На 1м был тимлид + синьор. на 2м какой то их начальник, на 3м тех дир. + еще тестовое, правда легкое. Каждое 1,5 часа пздц
Я даже не представляю что там еще спрашивать то было после 1го..
Мне казалось что чем выше идешь тем меньше должны мозг трахать. Ну по крайней мере тебя то про хэш мапы явно спрашивать смысла нет. Максимум специфику ведра, если на него работа завяна. + гитхаб посмотреть
>Ну по крайней мере тебя то про хэш мапы явно спрашивать смысла нет
Хех, нет. Одно из собеседований было целиком посвящено алгоритмам и структурам данных.
Гитхаб не спрашивали, но он у меня пустой (скрипты для работы и мелкие снипеты для демонстрации проблем/решения для стековерфлоу). Все интервьюхи по часу были.
Первое и второе интервью - просто интервью обо всем (они были с интервалами в недельку, ну и пиздеть надо было с чуваками из амурики), правда на втором еще по кишкам джентельменского набора либ для ведра покопались.
Остальные четыре были подряд, с перерывом на час.
Третье было по всяким паттернам архитектурам солдиам онсайт.
Четвертое по алгоритмам и структуркам (еще правда на низкий уровень оси залезли) из офиса с чуваком из америки.
Пятое - кодинг таск с презентацией экрана. Сделать лайтовую имплементацию стримов (iterator, forEach, map, flatMap, filter).
Шестое - андроид специфика вьюшек, оптимизация отрисовки и тд.
Java настолько не подходит под разработку персональных проектов и нацелена лишь на ускоренную доставку решений бизнесу?
Много хочешь. Сможешь без гугла объяснить разницу между параллелизмом и канкаренси? Про спринг вообще молчу, за пару месяцев ты там ничего не изучил, а знание его даже от джуна требуют.
Не, но то таке, может через 2 годика можно и в амурику будет релокейтнуться.
Самое забавное что в другие тимы по ведру прям после универа берут (тимлид шутил как нам в команду китайца подбросили после универа). В итоге ревьюваешь код, видишь дичь, начинаешь наезжать, а там какой-то джун Хосе Гонзалес дель Педро.
В чем там принципиальная разница, на что особо обратить внимание?
> разницу между параллелизмом и канкаренси
в общих чертах канкаренси одновременно доступ к одному ресурсу разных тредов
Если ты глубоко в шарп не окунулся, то база у языков довольно схожая. Ява чутка арахичней, нейминг конвенции другие.
Ну а хули бы и не попробовать, за аплай денег не берут.
Ну мне щарп показался очень удобным, нет там никаких хуевин со сбором мусора, выделением памяти, закрытием потоков - все автоматом делают за тебя. Ява сильно отличается?
Шарп это майкрософтовский клон джанвы если что...
О сборке мусора тебе практически не нужно думать, как и о выделении памяти и закрытии потоков. Уже не бородатые нулевые, в жаве много плюшек есть.
public abstract class Digest {
private Map cache = new HashMap();
public byte[] digest(byte[] input) {
byte[] result = cache.get(input);
if (result == null) {
synchronized (cache) {
result = cache.get(input);
if (result == null) {
result = doDigest(input);
cache.put(input, result);
}
}
}
return result;
}
protected abstract byte[] doDigest(byte[] input);
}
Нет дженериков (Прям как в ранатйме, агагагагагагага).
У массивов нет нормального хешкода, мапка не будет работать как надо.
Мутабельные ключи - это пизда будет, даже если бы там был нормальный хешкод, как только кто-то снаружи поменяет состояние влияющее на equals/hashCode - будут проблемы.
Синхронизация на поле, в данном случае вроде ничего страшного, но лучше выделить отдельный final Object lockXyiPizda.
Из-за того что наружу отдают массив байтов, какой-то мудак может поменять в нем что-то для своих нужд и в кеше будет неправильное значение.
А как же двойная проверка значения в кэше внутри sync и вне? Это норма? По мне так лучше сразу в блоке проверять. Ну или объявить map как volatile, а sync оставить только на cache.put(). Или вообще Hashtable применить.
Это вроде правильно, сделано что бы как раз избежать захода под синхронизацию, не уверен может ли произойти какая-то хуйня что кто-то под синхронайздом засунул значение, а кто-то вне синхронайзда считал но как-то хуево.
volatile не поможет, так как он повлияет на чтение замой мапки (ее можно вообще final сделать, один хер)
Чтение под синхронайздом обязательно оставить.
Hashtable не надо, это старая хуйня - лучше уж тогда врапнуть мапку использую Collections.synchronizedMap или ConcurrentHashMap.
Я понимаю, просио мне хотелось своими руками потрогать от начала и до конца какие-то процессы, чтобы понимать саму абстракцию аутентификации с хранением и все такое. В итоге мне пришлось искать статьи с содержанием вроде "не храните пароли в их первоначальном виде", по кускам собирать информацию о передаче зашифрованных, а не хешированных данных и так далее. По поиску кастомного сервиса регистрации одна из первых ссылок - на Стековерфлоу. Всё бы хорошо, да там код - БуффередРеадер обращается к account.txt и считывает оттуда напрямую добавленные строчки, содержащие аккаунт с логином и паролем. И в ответе на вопрос по этому коду содержится исправленный код, содержащий ту же логику.
Увы, похоже эту тему просто читают в книгах, я тоже когда гугли хуйню всякую находил.
Загугли архитектуру спрэнг секьюрити. По сути это как раз и есть то, что тебе нужно, там организуется защита через кучу делегирующих сущностей.
Да, видимо придётся изучать уже существующие подходы к процессам. Спасибо.
>Сможешь без гугла объяснить разницу между параллелизмом и канкаренси
Че-то ты много от джуна/миддла требуешь. Вот я не могу объяснить без гугла, и сомневаюсь что кто-то из коллег может, и что теперь?. Это не мешает зарабатывать овердохуя денег. Вообще имхо такие вопросы спрашивают только дегенераты на днище работах типо епама.
А ты сам хешировать пароли не можешь ебать?
Требуют требуют. И про спринг / DI/ IOC, SOLID, про то как сборщики мусора работают. И алгоритмы им напиши. И еще дохуя чего.
Я только что на джуна устраивался. Просто АД ебать.
Пока есть кому гляньте мои полтора абзаца говнокода плз.
Я кстати про НЗ думаю. Как то мурика не по мне.
Интересно сколько лет надо опыта чтобы спокойно по рабочей визе мигрировать.
Я думаю после 4 можно пробовать. Моему коллеге с текущего места предлагали релокейт, но завернули так как он не магистр лол. Другой чувак ушел оттуда одновременно как я пришел, потому что ему не делали релокейт, ушел в реддит и теперь ему потихоньку делают визу.
НЗ наверное прикольно, но ты все таки подумай про то что это довольно отдаленная от цивилизации, из Австралии люди в штаты за покупками летают.
А если у меня диплом вообще по экономике и финансам, а работаю я в жава девом?
Не все ж знают как жизнь повернеться.
> отдаленная от цивилизации
В этом вся суть для меня. Природа и холмы. + серфинг, пускай и не круглый год.
Можно, у спринга много точек расширения. Если я все правильно понимаю, тебе надо написать свои AuthenticationProvider и UserDetailsService (если у глассфиша нет интеграции со спрингом, тут хз).
Ну все любят. Но если мне уже 30+ и есть только такая вышка + опыт работы где ж я возьму другую то.
Короче, заебался пилить говносайты на битриксе. Хочу развиваца и больше денег ну и владеть стеком за который не стыдно.
Выбор пал на джаву.
Опыт работы на пыхе овер 5 лет, приходилось работать с разными нодами и питонами, но в основном всеже ПХП. Знаком с ООП и паттернами.
Отговорите или скажите что я малаца.
Как быстро я вкочусь? Стоит ли?
Потому что EE Application Server по-хорошему вообще не нужен, если есть спринг, и уж тем более эти жирные серверы избыточны для микросервисов.
Вот Вы шутите тут а у нас в продакшене подобная хуйня. Еще и наследуется от какого такого же говно, + какие то свои либы и еще какая то залупа сверху в видн сваг-анотаций.
Ты только мудями можешь звенеть, иди на хуй
Failed to load driver class? Если его сменить то тена другого текста вылезает.
стена
Либо проперти класс неправильно указал, либо в зависимостях херни натворил. Либо еще где-то выстрелил себе в ногу, но я уж не знаю, как ты умудрился накосячить со спринг бутом.
Это кстати на какой грейд можно в гугле например рассчитывать? L4/L5?
spring.datasource.driver-class-name, если быть точным.
Меня заебало короч. Ищи в гугле решения. У этого стектрейса ебучей JoPA может быть много причин.
А, я нашел, где ты обосрался. Ты блять нормально можешь набирать текст на клавиатуре или в шары долбишься? Для тебя даже автокомплит идеи существует, но нет, надо написать херню вида spring.pa.generate-ddl.
>А на чем обычно микросервисы хостят?
Ты в смысле на что заменить гласфиш/паяру? На спрингбут со вcтроенным легким контейнером (tomcat, jetty). Или просто на те же самые легкие контейнеры, если спрингбут не нравится.
Ок. Последняя версия у меня выглядит так. Я убрал версию драйвера из депенденсей.
spring.jpa.hibernate.ddl-auto=create
spring.datasource.url=jdbc:mysql://localhost:3306/sweater_db
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.generate-ddl=true
У меня вот так уже давно, я это видел
Пробовал также убирать эту последнюю строчку совсем
Уух, сука, у меня начинает гореть. Все, последний раз тебя поправляю, после чего ты отправляешься нахуй в гугл: spring.datasource.driver-class-name=com.mysql.jdbc.Driver без .cj.
Там тогда тоже самое все будет, только надпись красная о том что так уже устарело
Мне лень расчехлять фотошоп, поэтому просто представь, что я прилепил мем ah shit, here we go again к страничке стэковерфлоу и посмейся.
Не за что. Я хоть с жпа и не работал, но судя по небольшому опыту многие проблемы спринг бута идут от конфликтов зависимостей или от "особенностей" фреймворков. Здесь, похоже, второе. Быстрое гугление твоего стектрейса показало, что у всех эта проблема решается по-разному. Проблема может быть даже в ентити-классе.
У тебя тут хибер не поднимается, нет @Id в Message
И не надо говорить, что он у тебя есть. Будь внимательнее.
На хуй вы везде ебаный докер свой тащите?
На хуя надо оборачивать оболочкой то, что можно не оборачивать?
Ну, хотя бы одну причину назови.
Ахаха.
автоменеджмент зависимостей, чек
бут вместо простого деплоймента в нормальный контейнер, чек
ddl-auto=create, чек
репозитории вместо дао, чек
ни хуя не понимаешь, что и как должно происходить, чек
НИ ХУЯ НЕ РАБОТАЕТ - а чего ты ожидал от складывания кубиков, про которые ни хуя не знаешь?
все технологии для ебаных макак собрал, молодец
найди себе другое хобби
На самом деле я и сам не до конца понимаю зачем. И докер не использую. Хотя единственное годное применение, которое вижу лично я - упаковка всей экосистемы в один образ, чтобы не ебаться с настройкой на деплой-сервере.
Это туториал со spring.io получается, что его писали макаки над которыми ты смеешься. Я - неофит, и просто хочу учится.
https://www.youtube.com/watch?v=nyFLX3q3poY
javax.persistence.id в классе ентити вместо того айди, который у тебя импортирован.
Ладно с этим понятно.
Еще вопросик. Сделал через спринг сесурити базик аутентификацию, все работает. При обращении к сервисам есть какое-то подобие сессии чтобы каждый раз не передавать логин-пароль? Если есть, то в какую сторону копать?
Запустил в итоге спустя все вот это время. На драйвере 5.1.47 версии, на других версиях не получается.
нет, самый последний, я не посмотрел что он там импортирует нажав alt+enter. Тогда, вчера, я перепробовал все версии этих коннекторов.
Так вот, возникли некоторые вопросы. Сам я пользуюсь дефолтным вимом и довольно частно, но в основном для работы с текстовыми файлами помимо разработки.
Ну так вот, я ощутил что это реально... ниоч удобно.
Как рефакторить код? Например, как переименовать папку так, чтобы все пакаджи во всех файлах задеть?
Или как переименовать файл так, чтобы поменялось и название класса? Есть ли какие-нибудь конкретные скрипты на vim для работы с java?
Я поставил через Vundle только 2 плагина: emmet и ale. Может ещё какие хорошие посоветуете?
Кто вообще из здесь сидящих юзает vim в разработке? Или правильный ответ "дауны с 256мб оперативы" и надо сидеть в интеледжии и не выёбываться?
Репозиторий это верхний уровень абстракции, где контейнер делает за тебя все.
Когда ты знаешь, как это работает само по себе, и что там за тебя делает контейнер - ну, ок, можно использовать, если знаешь, зачем
А тут сучий пес пытается чему-то учиться, и вместо того, чтобы начинать с кирпичиков, берет целую пятиэтажку целиком.
При этом, не удосужась даже прочесть доки по настройке
Поэтому ставит ее вверх ногами, а потом удивляется, хули дверь найти не может
Это актуально только при совпадении следующих условий:
1. твой заказчик не имеет ни говна, ни ложки, поэтому ты вынужджен давать ему упакованный комплект
2. всю свою экосистему ты уже так настроил, что заебок. Потому что в докере что-то перенастраиват, ну, так себе
В то же время настройка компонентов системы самих по себе вполне удобна. Потому что уже миллион раз прожевана и высрана везде, от стэковерфлоу до роликов на ютубе для совсем инвалидов
Пиздец...
Ты учишься по роликам на ютубе, утверждая, что их написали спринг.ио?
Ты не неофит, ты уебан.
Если ты хочешь учиться, начни ЧИТАТЬ ебаную докуменцаию.
Не туториалы, а документацию, блядь!
У спрингов, что характерно, документация вполне неплохая. Последовательная и трогает все основные моменты.
Вот когда ты прочтешь, тогда лезь в туториалы, будешь хоть чуточку понимать, что ты делаешь на каждом ебаном шаге, и почему так.
Токены всех сортов.
Начни с jwt, например.
Но если у тебя обмен железка-железка, то, может, какой-то свой механизм завести. Т.е. ничто не мешает тебе завести нормальную сессию, связать ее со своим токеном, и кидать этот токен клиенту-не-браузеру.
Точно так же нет никакой проблемы и jsessionid кидать небразуру, это его дело, как его запомнить.
Т.е. я делаю один раз авторизацию, сервис отдает мне токен и все следующие запросы отсылаю с инфой из этого токена вместо логина-пароля?
Я не он, но начал изучение спрэнг секьюрити именно с документации. И, внезапно, это вообще не так быстро и удобно, как изучение по роликам и туториалам, потому что в доках информация выдается так, словно ты уже понимаешь, как выглядит общая картина, но не знаешь некоторых деталей. В итоге я узнал отдельные его компоненты, но не как они работают вместе.
Если у тебя множество тестов переиспользуют эти переменные, то логично их вынести и инициализировать в @Before. В ином случае получится не код, а нечитаемая лапша.
Хз на вкус и цвет как говорится, нравится хоткеи вима можешь поставить поддержку в идее (есть встроенный плагиин)
Потому что спринг секьютити следует изучать ближе к концу, когда у тебя есть понимание остального?
да
Сейчас я уже вник в его архитектуру, и кроме некоторых базовых вещей типа фильтров и сервлетов там ничего не затрагивается. Не понимаю, о каком "остальном" ты говоришь.
Дополню: проблема именно в стиле изложения в документации. Там нет четкой структуры, просто в тебя бросают эти кирпичики-интерфейсы, словно говно на вентилятор.
Твоя проблема в том что ты пытаешься разрабатывать в виме что то сложнее хелло ворлд. Он для этого не предназначен.
Вим используют так:
-Собственно устанавливаешь вим
-Зубришь 79 хоткеев для быстрой навигации на 15-ый символ в нечетной строке.
-Идешь на форумы борщехлебов выебываться новыми навыками.
Основное правило для теста - он должен быть максимально простым и легко читаемым. Если код твоего теста выглядит так что его самого стоит тестировать то ты делаешь что-то не так.
Вытягиваешь по гет-запросу html-страничку с нужным содержимым, прикручиваешь парсер и вытаскиваешь все, что тебе нужно, в т.ч. и ссылки на картинки. Повторяешь процесс, обращаясь к картинкам по ссылкам.
Гугли JSoup
Глянул сейчас.
В спринг секьюрити действительно говеная документация.
Читать надо начинать чуть ли не с 8-го раздела.
Тем не менее "изучение по роликам" остается уделом слабоумных, которые не умеют читать. Это не каратэ и не сварка, блядь.
С другой стороны, каждый хочет, как он дрочит.
Тем более смешно, когда учившийся дрочить по роликам приходит с вопросом, когда же станет приятно.
Хехе, скоро ты узнаешь, что есть еще контент, который подсасывается динамически яваскриптом и т. д.
>Тем не менее "изучение по роликам" остается уделом слабоумных
Ну хз, все равно не согласен. Если даже есть охуенная документация, зачастую одно и то же можно сделать по-разному (какой-то способ устарел, например, и сейчас делают иначе, или же есть просто другой неочевидный подход). Тут-то и помогут ролики, которые покажут, как обычно решают эту задачу, а не как ты себе напридумывал по документации.
Мне не хочется просто обзывать тебя обидными словами, но, очевидно, что ты не вкуриваешь, что ролики противопоставляются не документации, а чтению.
Нормальный человек за время твоего ролика прочтет половину стэковерфлоу, какой-нибудь балдунг и еще пару постов в блогах кодеров из гугла.
Не могу перестать охуевать с подрастающего поколения. Просто не могу.
Окей, дед, я тебя понял. Я сам-то не против чтения, только вот некоторые вещи намного понятнее в формате презентации. По той же архитектуре спринг секьюрити я прочел и стековерфлоу, и еще много чего. Но реально понял, что происходит, только когда посмотрел доклад одного из разработчиков этого фреймворка.
Высокомерное быдло, ты?
"The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files"
Советы со stackoverflow типа закрыть и открыть проект, очистить, удалить и реимпортировать - не помогли. В Intellij Idea не могу даже добавить новую версию jdk, при выборе папки с jdk выдает ошибку: "The selected directory is not a valid home for JDK"
Проверил системные переменные - всё как надо. Не понимаю что не так
Так? Или там курсы, самообразование, вот это всё
щас ищу работу джуном на джаве (недели 2 уже, я студент просто, тяжело найти что-то на полставки). В основном смотрят на проекты, которые ты писал, ссылочки с гитхаба в резюме полюбас должны быть. Ну а требования к вышке я только у окологосударственных компаний видел или типа ООО СИБИРЬРОСНАЕБИЗНЕС.
Дохуя хочет. Почитать про спринг сесурити и заюзать его будет быстрее, чем на чистой джаве такое пилить.
Да нет у меня проблем. Я просто попробовал вим для разработки, понял что это пиздец как не удобно и охуеваю почему популярно и почему это юзают?
Какие, блядь, ты системные переменные проверил?
В Build path standrad jre library перенаправь на новое место.
И вообще, на хуя ты удалил старую ждк?
Ты не знаешь, до сих пор, что у тебя может десяток стоять и друг другу не мешать?
Хули там пилить?
md5?
сервлет?
и сервлет-фильтр для проверки авторизованности?
плевок в базу через ждбц?
Ну, ждбц, да, я порицаю. Но все остальное нехитро делается. Если не ленишься печатать до хуя.
Имею в виду javaSE, а то сервлеты - это какое-то читерство, тот же фреймворк, только урезанный.
Срвлеты входят в спецификацию.
Пусть и ЕЕ.
Я думал, он хочет веб-приложение. Тогда сервлеты это чистая ява.
Если хочет не веб-приложение, то еще проще, не надо сервлеты учить, бггг
бамп вопросу
Сейчас ебусь с микросервисами на сприге. Ощущаю что делаю тупо прослойку между бд и фронтом, хотя ВСЯ логика у нас в бэке. Что наверное не очень нормально.
Я ебал это дерьмо. В каждом проекте ненормализованные базы с пиздецом, который тянется с века динозавров блять, каждый раз разгребать где что лежит.
>Что наверное не очень нормально
Почему? Или ты хочешь нагрузить фронт логикой, чтоб сайт грузился 10 секунд?
А вообще как мне кажется жава - это бэк, а бэк - это бд. Разве что на nosql перекатиться можно.
Не в стеке проблема, и не в sql. Другие проекты тебе нужны, более сложные и интересные, другая предметная область возможно. Где бэк будет в меньшей степени просто прослойкой.
>Так?
Так. Я не лид (потому что и не хочу им быть), а сеньором стал просто хорошо делая свою работу, без каких-то там еще курсов или чего-то подобного.
Может продать менеджеру идею порефакторить, если настолько всё плохо? Типа ща мы пилим n фичей в спринт и всё тормозит до кучи, когда я разгребу говно в схемах, станем пилить n*k фичей, и работать станет всё в q раз быстрее. Ещё и бабла дадут, поди.
Там пока не до рефакторинга. Надо перепилить чтобы работало хотя бы. Дохуя критических ошибок. Я уже чет не рад что устроился.
Анон, это нормально, что чувствую себя полностью бесполезным. Без тимлида, которого мне выдали не могу нихуя найти в БД. Просто блядь нихуя не могу сделать. Проект сложный большой пиздец.
Такое чуство что я всех как то хитро наебал или меня просто случайно взяли.
Я понимаю жаву, понимаю SQL, но вот что то сделать почему то не понимаю как.
Норм. Ты только не молчи и не тупи в монитор втихую. Делай списки конкретных вопросов, ходи с ними к лиду, ЗАПИСЫВАЙ (чтобы дважды одно не спрашивать).
Хотя б "я не понимаю как сделать таск. С чего начать?". От джуна и не требуют чтобы он сам все понимал
Я с ним рядом сижу и спрашиваю постоянно. Но без него я прям конченым себя чуствую. И записываю да. Слежу за руками фокусника блин.
Он при мне нахуярил в БД запрос с 1 раза, который я даже с гуглом за неделю не осилю. Слава богу дядька нормальный работать приятно, без закидонов /ЧСВ.
Седня пару багов починил с утра. Уже втягиваюсь потихоньку.
Он просто делает какую то пиздец сложную хуйню и как то дергать его блин.
чтобы писать селекты с одного раза надо написать их сотню, заодно научившись формулировать то, что ты хочешь найти простым русским языком.
это несложно. просто нужна практика
Ну, давай свою версию тогда, пиздобол
А ты точно джун?
Штуки 3 лефт джоинов и + 3 подзапроса + какая то ебала посчитать еще/агрегировать.Там 5к+ таблиц в базе.
Ну такое то не знать. Есть же сайт sql. Ток все это говно уровня ландан из кэпитал оф зе британ йо.
Да, каждая таблица 50+млн записей. + там еще сущности через наследование и еще какая то хуита. Этому говну 8+лет.
>>39321
>5к+ таблиц в базе
>каждая таблица 50+млн записей
>100+ тел в бэке
Что-то тут не так. Это же 250+ млрд. записей. Да же Амазон со своими 500 млн разных товаров сосет не разгибаясь.
Если взять 100 байт на одну запись это база данных на 23+ Тб. Кто все это поддерживает? С такими объемами у вас должен быть отдельный департамент по написанию SQL запросов.
select <...> from a, b
where a.huy=b.pizda
Я так и не понял, чем эта запись хуже, чем
select <...> from a
join b on a.huy=b.pizda
Букв меньше, весь набор таблиц в одном месте, все условия в одном месте
Вопрос стиля, так-то, емнип, это будет разворачиваться в один и тот же план запроса.
Я знаю, что план будет таким же.
Мне непонятно, почему вариант с джойнами стал стандартом.
Должно же быть хоть какое-то преимущество?
Мне обычно просто лень каждый раз писать join и прочую хуету.
Про left/right join в оракле тоже был трехсимвольный всего вариант: (+)
Да и читается, на мой взгляд, хуже, когда слов больше
Есть разница. В некоторых субд(в мускуле например) первый запрос будет будет пропускать определенные записи при определенных условиях. Джоин всегда выдаст правильно.
Ну это очень очень большой банк. У банка все на микросервисах, сервисы общаются через кролика и от него идет буферризация в бд..
У каждого микросервиса своя БД. Отделений у банка по рашке только я ебал сколько. Ну вот и считай.
Там бизнес логики на том толстого описано в конфлюенс.
Я туда джуном устроился, на очень скромные деньги и охуеваю от происходящего. У меня по сути 3 тимлида, лол, в прямом доступе, которых можно пилить вопросами.
1. рассматривать мускул в качестве БД, ну, это такое...
2.
> первый запрос будет будет пропускать определенные записи при определенных условиях.
примера, конечно же не будет, да?
некоторые кусочки, типа ресттемплейт,
Если хочешь сервак с мобилки держать, то пробуй https://github.com/NanoHttpd/nanohttpd
Мне как раз для клиента. Чтобы авторизацию и общение с сервисом побыстрее сделать.
Слышал и по 30 платят кому то, но не знаю правда или нет
Я имею ввиду конкретный пример а не концепцию. Интерфейс Модель в спринге.
Вот например что делает этот код?
import org.springframework.ui.Model;
@GetMapping("/greeting")
public String greeting(@RequestParam(name="name", required=false, defaultValue="World") String name, Model model) {
model.addAttribute("name", name);
return "greeting";
}
Расскажи про свой опыт. Что уже писал на яве, может работал как-то. Интересно какой объем знаний надо, чтобы устроиться работать джуном.
ну тут хуё моё контроллер, который принимает значание name, если его нет, то его значение World, ты добавляешь это в модель фактически в хешмапку и даешь ему имя. Потом ты возвращаешь имя view которое должно быть определено ViewResolveroм и магией спринга подтянуто на выход с вставленными данными из собственно модели. Если хочешь понять как это работатет под капотом читай Spring in Action 4 главу про MVC, а то я сам честно говоря нихуя уже не помню тем более с этим не работаю
Но речь не об этом.
Я так понял, макаками называют плохих программистов. Просто интересно, каких конкретно свойств им недостаёт? Как не стать макакой?
Петросяны лесом.
Ну так вот. Насчёт энтерпрайза. Готов вкатываться. Покажите, куда.
Это копия, сохраненная 15 января 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.