515

Волна взаимопомощи (java)1

Долго читаю, но на волне взаимопомощи решил зарегистрироваться. Работаю java разработчиком, могу помочь разъяснить какую-нибудь тему или помочь понять куда двигаться по обучению, поревьюить код или просто как-то пообщаться вживую если потребуется

Помощники

236 постов785 подписчиков

Правила сообщества

Нельзя обсуждать Политику.
Ругаться и оскорблять.

2
Автор поста оценил этот комментарий

что значит энтерпарйз? начал изучать Java а тут такая "тонкость или толстость" всплывает.. это хорошо или плохо что java только энтерпрайз. спс

раскрыть ветку (1)
8
Автор поста оценил этот комментарий

Если описание с гугла:


Enterprise software is a collection of computer programs that have common business applications, tools for modeling how the entire organization works, and development tools for building applications unique to the organization.


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


Это может быть все что угодно:


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


Это может быть background-check система, где компания хочет проверить прошлое людей (легально) и вы должны автоматизировать сбор информации с веб страницы (скраппинг) определенного суда, выделить нужные пункты (год дела, заголовок и.т.п.) записать их в красивый пдф репорт и настроить чтобы эти личные данные, если и записались куда-то на сервер - то обязательно удалились через полгода (законодательство требует)


Это может быть платежное/банковское приложение где вы будете принимать заявки на переводы оформленные этим днем, фильтровать те которые идут не в ваш банк, определять нужен ли свифт перевод/процедура инкассо, формировать заявки, отправлять запрос в другую платежную систему и обрабатывать ответ с него (застряла транзакция, пошла дальше, должно ли все откатиться)


Это может быть какой-нибудь сервис с доставкой где вам нужно принять запрос с клиентского приложения, обработать его и отправить сообщение на склад/курьеру.


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


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


Энтерпрайз - совокупность всех приложений, заточенных под нужды определенной компании, чаще всего очень большая совокупность, которая писалась уже 15 лет и никто до конца не уверен как она работает, т.к. документации не сохранилось :)

показать ответы
2
Автор поста оценил этот комментарий

Поработал на java, но почти чистой. Куда развиваться? Насколько востребованны фреймворки?

раскрыть ветку (1)
7
Автор поста оценил этот комментарий

Фреймворки крайне востребованны, плейн джава никому не нужна. Здесь есть 2 наиболее востребованных направления - переход под андройд или в энтерпрайз. Второе наиболее востребовано именно с точки знания java (слышал в современных андройдах достаточно обойти JS-ом)


В энтерпрайзе можно пойти в автотестирование и изучать паттерны (Method object), селениум и прилагающие вещи а можно пойти в разработку.


Если вы пойдете в разработку, то, скорей всего вам понадобится изучить стандартный стек. Вот примерный план:


Web:

-Изучите http протокол и основы rest архитектуры.

-Получите основное понимание контейнера сервлетов

-Определитесь с изучаемым стеком: java EE или spring


DB:

-SQL (на уровне написания запросов с использование join-ов и применением агрегирующих функций)

-Jdbc (на уровне как открыть коннекшен)

-JPA (hibernate) - понимание когда открыт персистент контекст и какие запросы выполняются при использовании критерии/hql. Понимание типов связей и.т.п.


Если выбрали spring как основную платформу - нужно понимать как работает IoT и dependency injection и как разворачивается контекст


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

показать ответы
5
Автор поста оценил этот комментарий
2 раза начинал, 2 раза поймал себя на мысли, что забыл о том, что 2 недели назад читал) Как постичь кор?)
раскрыть ветку (1)
6
Автор поста оценил этот комментарий

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


-Выполнение задач (ищите курсы где есть задачи). Так или иначе придется использовать материал с прошлых уроков и, тем самым, закреплять материал


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


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

3
Автор поста оценил этот комментарий

Привет. Работаю в нагрузочном тестировании, но хочу вкатиться в разработку. Подскажи, с чего лучше начать. В заглушки на spring/tomcat умею +-, скрипты пишу, мониторинги настраиваю, на литкоде задачки решаю.


1. Что лучше почитать, чтобы освоить это ваше кунг-фу? Какой уровень будет достаточным для поиска первой работы? (надо ли знать все методы класса object?)))

2. Что учить по взаимодействию с нереляционными БД?

3. Что почитать по архитектурам, помимо микросервисов?

4. Где лучше оттачивать мастерство кодинга?

5. На что в компаниях смотреть по условиям (уровень зп, команда, документация)?

6. Кто пишет доки по вашим приложениям, аналитики или вы? почему она такая непонятная?

раскрыть ветку (1)
5
Автор поста оценил этот комментарий

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


1. Все зависит от того что вам нужно. Поскорей вкатиться в разработку? С вашим набором знаний (как мне кажется) достаточно быстренько прочитать pivotal (https://media.oiipdf.com/pdf/6cb8195f-2fca-4953-b644-b963510...), сделать pet-project. Маленько пробежаться по базовым алгоритмам/структурам данных и да, выучить методы класса Object.


Вообще есть неплохой список вопросов:

https://jsehelper.blogspot.com/2016/01/blog-post_59.html

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


2. Зависит от того что вы хотите. Чаще всего нереляционные бд используются в стартапах где джуны особо не нужны. Где-то была популярна монго, но они и поступили не особо красиво, да и документные базы (ИМХО) УГ, ориентированное на то что люди на JS-е привыкли работать с json-ми и хотят их видеть везде, включая БД.


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


Если вам хочется что-то дополнительно изучить - из личных предпочтений и если вам хочется я бы посоветовал обратить внимание на key-value хранилища аля redis/hazelcast/apache ignite, до сих пор находятся фанатики которые кричат о том что SQL мертво и будущее только за распределенными кешами :)


Так же много где за последние 5 лет накручивали elasticsearch поверх чего-то, можно так же порыть в этом направлении.


Вообще как джуну я не рекомендую в это погружаться и провести первый проект с постгресом/ораклом, но за спрос не бьют :)


3. Вообще есть приятная книжка clean architecture, которая дает очень много теоретических знаний которые очень сложно применить практически :) Но ее точно стоит прочитать для расширения кругозора. Вообще изучите rest архитектуру, изучите как работают очереди, JMS, AMQP, можете поковырять кафку. Из этого всего сконцентрироваться рекомендовал бы именно на ресте, т.к. остальное крайне специфично и разнится от проекта к проекту.


4. Не смотря на то что люди рекомендуют коммитить в опен сорс (и это правда круто, учитывая что этим можно козырять на собесах) - я рекомендую воздержаться и вести свой pet-project. Придумайте тему и начните ее развивать. Если будут идеи - можете скинуть сюда и, аккуратно, подберем вам стек под необходимую задачу


5. Уровень ЗП критически важен, но, в последнее время, я в последнее время больше смотрю на стек (интересно/не интересно), бизнес-процессы (начиная с вопроса о том какие скрам активности проводятся/в каком режиме работаем), смотрите на команду, пообщайтесь с собеседующим, спросите его про CI/CD процессы, про периодичность релизных циклов и какие проблемные задачи стояли перед командой в последнее время, попросить пояснить почему в системе было сделано то или иное техническое решение. Документацию же вам никто не даст почитать при приеме на работу.


6. Очень специфично для каждого проекта. В хорошем проекте я вижу это так:


BA собирают требования и пишут success criteria, после чего обсуждают с командой разработки и уточняют тех детали (содержимое сущностей, эндпоинты).


Разрабочики предоставляют API через какой-нибудь плагин сваггера, по которому можно всегда свериться/дополнить/проверить рабочие эндпоинты (с кратким пояснением для нестандартных операций)


Граничные кейсы описываются тестировщиками и, к сожалению, обычно устанавливаются уже as-is после написания кода. В зависимости от критичности для заказчика (например для денежных переводов) могут проговариваться BA заранее, а могут быть "ну как сделали так и будет" при малой необходимости. Обычно норм разрабы уточнят по этим кейсам при покрытии юнит тестами и быстро дадут необходимое объяснение

1
Автор поста оценил этот комментарий
Долго учили?) Каким образом обучались/учили? Хочу попробовать.
раскрыть ветку (1)
4
Автор поста оценил этот комментарий

Учил в универе лет 10-15 назад, после окончания универа (я математик по образованию) понимал основной синтаксис, умел в sql и немного разбирался в свинге.


На самостоятельное изучение гита/мавена/гибернейта/спринга ушло где-то полгода перед тем как я смог устроиться на первую работу

показать ответы
Автор поста оценил этот комментарий

Подскажите почему разрабы особено в жава так заморачиваются с неймингом?

раскрыть ветку (1)
4
Автор поста оценил этот комментарий

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


Преимущество же заключается в стабильности и надежности. Обычный энтерпрайз проект легко может жить и развиваться 10+ лет. И, в таком случае, оказывается очень важным при написании кода придерживаться общеизвестных конвенций (начниная с нейминга, заканчивая паттернами/абстракциями), дабы дальнешая поддержка продукта была возможно, т.к. поддержка это, чаще всего, 80-90% стоймости проекта в дальнейшем.

показать ответы
0
Автор поста оценил этот комментарий
Понял вас. Там поменялось многое, но к делу это не относится особо. Как бы вы посоветовали начать?
раскрыть ветку (1)
4
Автор поста оценил этот комментарий
На самом деле для обучения потребуется переваривать довольно большие объемы информации.
Начать следует с того чтобы осознать что само обучение (для того чтобы быть успешным) требует довольно большого комитмента. Выделите время - будь то 3 часа 3 раза в неделю, ищи по 5+ часов каждый день. Постарайтесь найти тот временной интервал который точно сможете себе позволить. Помните что обучение должно исходить от дисциплины, а не мотивации.

По поводу ресурсов: есть достаточно много годных бесплатных курсов на платформах по типу того же степика или джавараша.
Из книг рекомендовал бы ориентироваться на Шилдта, но пропускайте части про swing/javaFX.

Помните что java это только инструмент и на изучение соответствующей инфраструктуры уйдет минимум раза в 2-3 больше времени, нежели на освоение самого языка
показать ответы
12
Автор поста оценил этот комментарий

Добрый день. Очень давно решил стать разработчиком на java, накупил книг, начал читать и выполнять задания. Каждый из моих подходов был неудачным вот по какой причине: во всех интервью и книгах что я видел, на вопрос что делают на java интервьюируемый впадает в ступор и через несколько секунд отвечает - все, от микроволновок до серверов. И каждый раз раз, когда я читаю книгу или смотрю курс у меня ощущение, что я пытаюсь выпить море. Решил пойти по "простому" пути - web разработчик. Там вроде понятно, сайты пилить. Но меня повергает в уныние синтаксис пхп. Прям колотит от его "неправильности" для меня.при открытии java кода по телу тепло разливается, как будто домой вернулся. Сейчас прохожу курс андроид разработки. Не подскажете в какой области java занимает большую часть своего применения? И возможно ли менторство с вашей стороны?

раскрыть ветку (1)
6
Автор поста оценил этот комментарий

Если быть объективныым - java довольно отсталый язык в плане удобства разработки/синтаксического сахара. Разработка на нем выходит дороже, нежели на том же пхп или питоне (чисто практически слов больше нужно писать, что занимает больше времени).


Одно из самых сильных конкурентных преимуществ java заключается в jvm, а именно в c1, c2 компиляторах умеющих подкомпилировать байткод и оптимизировать его прямо на ходу запущенной програмы.


Самое частое применение java - это веб разработка очень больших проектов, которым не очень важна стоймость, но важна надежность и стабильность.


Android API, не смотря на схожесть синтаксиса и его широкое применение - не совсем является джавой :) И в последние года его применений становится меньше, уходя в альтернативные пути - будь то более молодой Котлин или JS используя какой-нибудь react native.


Java ME, используемая на старых мобилках и автоматах с ограниченной памятью почти мертва как вид и практически нигде не используется на текущий день.


Менторить на фул-тайм, к сожалению, точно не смогу - да и с андройдом я не знаком, посмотреть код/помочь быстрым ответом - да, но менторство на большой пул людей убьет любую возможность работать/заниматься личной жизнью :)

показать ответы
0
Автор поста оценил этот комментарий

Когда наконец котлин победит? :)

раскрыть ветку (1)
3
Автор поста оценил этот комментарий
Никогда :) проекты которые писались 20 лет не будут тратить миллионы на миграцию лишь чтобы "красивей писалось", максимум что можно получить - груви или миграцию на 11/17 джаву.

Вообще жду сообщений от панорамы вида "Котлин переназвали в Боро-Боро" или нечто подобное, а то фигли весь мир на Кронштадте пишет?)
показать ответы
0
Автор поста оценил этот комментарий

Господа разработчики, вопрос: сколько у вас доход в месяц чистыми? Пишите в столбик, можно без описания должностных обязанностей. Я не из налоговой, да и вы все в белую так или иначе пашете. Вашим женам ничего не скажу ))

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

Вы спросили немного поздно. Сейчас с расценками непонятно на фоне скачков - кто-то работал как ИП-шник, у кого-то зп привязана к валюте, кто-то релоцировался с понижением зп/жилищных условий. Цены говорю гросс, сколько чистыми считайте сами


ЗП это запретная тема, все подписывали соглашения. Под конец 2021 года в спб:


В галерах примерная сениорная вилка по джаве была в районе от 150 до 400 тысяч гросс.


Довольно часто приходили офферы начинающиеся от 300к руб, заканчивающиеся ~7-8к USD (как ИП).


Это при 8 годах опыта комерческой разработки, где последние полтора-два года я выполняю лидовую роль.


Надо заметить что этот бум приозошел на волне с ковидом, до нее средний разраб получал от 30% до 70% меньше.


Вилка джуна (опять же гросс) начинается от 50 и заканчивается 150, в зависимости от способностей.


Цены на рынке колбасит второй год, мб у вас совершенно другая выборка

0
Автор поста оценил этот комментарий
Я решил не учить java, правильно ли я поступил?
раскрыть ветку (1)
3
Автор поста оценил этот комментарий
Правильно
показать ответы
2
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

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


Расскажите про ваш текущий стек, подумаем что можно подучить/подтянуть

0
Натуральная Глупость
Автор поста оценил этот комментарий

Доброго дня!
Я решил пойти в QA, прочел книгу Р. Савина "Тестирование дот ком", на досуге изучаю запросы SQL, базовые вещи типа Rest, Soap, API.
У самого образование далеко от этой деятельности, но я люблю учиться, особенно если тема мне интересна. А тут именно такой случай.
С компами всю свою сознательную жизнь был на "ты", помогал в освоении ПО всем своим знакомым.
Английский разговорный, специфику осваиваю без осложнений.
В средних классах ходил на курсы Pascal ABC.
В целом, не совсем чтобы уж чайник, но понимаю, что могу столкнуться с затруднениями, вызванными еще не привычной методологией и лексикой, однако базовые принципы схватываю на лету.
Так вот: хочу узнать ваше мнение, с какого туториала имеет смысл изучать Java, если в будущем я хотел бы с ее помощью автоматизировать некоторые тест-кейсы, а то и вовсе что-то писать на ней?

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

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


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


При учете вашей базы - рекомендую как можно быстрей выучить основы (java core на поверхностном уровне учится от 1 до 3 месяцев, в зависимости от загрузки) и идти либо в бесплатные школы от компаний (от t-systems или epam) и получать оффер через полгода-год.

0
Автор поста оценил этот комментарий

Пока вы тут узнаю еще кое-что. Когда я первый раз садился за джаву только вышла 7я версия. Все радовались. через некоторое время шли разговоры что 7я стандарт в энтерпрайзе и все очень медленно ползут на 8ю. А сейчас захожу - 18 вышла. У них изменилась система релизов? на чем сейчас сидят все крупные компании? Они переползают с версии на версию по порядку или что-то перескакивают?

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Да, начиная с 9й джавы релизные циклы начали выходить раз в полгода, каждые 3 версии - "мажорный апдейт, который будет поддерживаться", между ними - промежуточные версии. Большинство все еще работает на 8й/11й джаве

показать ответы
0
Автор поста оценил этот комментарий
Я как раз хотел уточнить именно про изучение английского) то что на оф сайте оракла примерно похоже по смыслу, в крайнем случае гугл транслейт помогает местами.
раскрыть ветку (1)
2
Автор поста оценил этот комментарий
По мере изучения джавы навык прочтения стаковерфлоу/доков придет. Я все равно крайне рекомендую переводить не плагином гугл транслейта, а вживую, выписывая незнакомые слова и повторяя их значение после.
для чтения практически нет сильной нужды в грамматике, нужен только неплохой словарный запас который набивается опытом.

Но и разговорный английский с грамматикой в идеале было бы хорошо подтянуть
показать ответы
0
Автор поста оценил этот комментарий

Javarush полностью на русском

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Проблема в том что любые курсы сконцентрированные на "выучи все за год" довольно поверхностны и, чем дальше от начальной точки - тем сложней будет находить информацию на русском языке. В какой-то момент развития вы будете использовать технологии, книги по которым либо не успели выйти либо никогда не будут написаны (не говоря уже об их переводе). И останется только читать документацию которая бывает на русском в 1м случае из 100

показать ответы
0
Автор поста оценил этот комментарий

Я, вообще, больше думал в сторону С заплюсованного, мне интересен именно код.

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

По C++ меньше вакансий, еще больше гемороя, но вход начнется чуть проще ))

0
Автор поста оценил этот комментарий

Чувак, ты мне и нужен. Хочу уйти в кодинг, собираюсь начать с java, но может ошибаюсь? Ты не жалеешь? Может лучше базу на другом языке набивать? Бейсик был давно, ну и его "нужность" вполне понятна), Паскаль в институте не зашел, но я тогда совсем другим был)

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Привет. Я, к сожалению, не знаю что конкретно тебе нужно по языкам и хочешь ли ты быть вообще быть разработчиком или автотестером или девопсом или кем-то еще :)


Могу рассказать про свой опыт - я был математиком и после вуза имел опыт с java core средней паршивости и примерно такой же набор навыков в фин. анализе.


В итоге я просто зашел на hh, посмотрел кол-во вакансий, среднее зп и сделал очевидный выбор.


Жалею что пишу на джаве? Иногда да, иногда радуюсь.

Чувствую что иногда получаю удовольствие от фронта, все-таки визуализация сильно мотивирует. Жалею что нет возможности фрилансить время от времени.


С другой стороны иногда можно подеградировать полгодика-год без боязни отстать по стеку. Есть возможность получить проект и сидеть на нем от года до бесконечности. Есть возможность очень редко применять мат. аппарат и проектировать сложные системы.


Если просто хочется изучить программирование то JVM языки не самый лучший выбор. На тебя сразу рушится гигантское кол-во абстракций с которыми придется жить не понимая что к чему. В скриптовых языках аля питон или js все дается постепенно хотя все в конце-концов приходит к этим или похожим абстракциям

показать ответы
0
Автор поста оценил этот комментарий
Подскажите, пожалуйста, насколько критично слабое знание английского языка? Есть ли какие либо курсы специально для технического английского?
раскрыть ветку (1)
2
Автор поста оценил этот комментарий

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

1
Автор поста оценил этот комментарий

Кажется я наконец понял) большое спасибо))

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Отлично! Теперь можно обсудить какие последствия это несет:


Представим что объект это самолет, а класс - это чертеж самолета :)


Если вы пишете static - это значит что вы обращаетесь к чертежу. Чертеж вообще ничего не знает про то какие самолеты были сделаны по его подобию.


Но допустим вы сделали поле int count и вызвали в конструкторе

class Plane {

   int count;

   public Plane(){

       count++;

   }

}


Поле count будет инициализироваться на каждом отдельно взятом самолете и всегда будет = 1 по умолчанию (инициализировалось как 0, а затем произошел инкремент. По сути это физический счетчик на самолете который никому не нужен.


Теперь вы добавили поле static к переменной count. Теперь на самолете больше нет никакого счетчика, но теперь на чертеже есть пометка "count" и когда будет создаваться каждый новый самолет - пометочка на чертеже будет всегда увеличиваться на один при каждом создании нового самолета (уберите от экрана зануд с многопоточкой). Каждый самолет знает как и где лежит чертеж, но самому чертежу пофиг на самолеты.


Нахрена делать переменные статическими? Чаще всего чтобы объявить константы. Например будем считать что разделителем строк в нашей системе будет являться символ \n, и будем использовать эту константу везде и, в итоге, при необходимости заменить ее на \n\t мы сможем сделать это только в одном месте.


Но возникает вопрос - что будет если мы поставим static над методом?


Это будет значить что этот метод будет выполняться у чертежа, а не у самого самолета. В итоге вы не сможете ни достучаться до полей (т.к. самолета-то нет) ни до методов (у кого вызывать метод, если самолета нет?).


В итоге получается что из объекта статику вызвать можно, а наоборот нет, т.к. статика ничего не знает о конкретном объекте.


Нахрена делать методы статическими? Не всегда хочется создавать класс.


Допустим вы пишете приложение для аудита и вам нужен метод который из строчки "Перевод 4000 руб" вычленит 4000 и переведет их в int формат.


Этот метод будет использоваться много где (и для смсок, и для имейл нотификаций и для того что ввел пользователь в формочке). В итоге вы делаете какой-нибудь класс PaymentAmountUtils (ужасное название, предлагайте в вариантах свое) - но вам не интересно его создавать каждый раз.


В итоге благодаря статике вы можете агрегировать определенную логику, не зависящую от состояния объекта в определенном месте и вместо


int money = new PaymentAmountUtils().parseAmount(invoice);

писать сразу

int money = PaymentAmountUtils.parseAmount(invoice);


В итоге это получится и более краткой формой записи и не придется каждый раз создавать пустой объект

2
Автор поста оценил этот комментарий

Добрый день. Сейчас прохожу обучение. Остановился на функциях. Это вообще какой-то кошмарнейший ужас. Вроде пока объяснения идут, все более-менее ясно, как доходит дело до ДЗ, просто туплю в экран и не понимаю с чего вообще начать. На циклах тоже было проблемно, но эте куда ни шло. Алгоритм работы функций мне более-менее понятен, но когда надо эту функцию на деле применить, я теряюсь. Подбодрите пожалуйста=) А то я готов уже плюнуть и бросить это гиблое дело.

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Добрый день!


Все будет хорошо, учитывая что вы смогли переварить типы и свыкнуться с кучей незнакомых слов - осталось немного до выхода на примерное плато. Как только основные конструкции для любого ЯП будут понятны - новые ключевые конструкции будут появляться не так часто, скорей будут объясняться те или иные слова что вы сейчас пишете, но не понимаете.


Плюсом будет то что то что вы сейчас учите будет применяться не только в джаве - но и практически в любом процедурном языке программирования, по жизни это точно не повредит :)


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


Но учиться от мотивации тяжело (как в принципе делать что угодно, будь то работа, тренировки, хобби). Например если вы тренируетесь и сбросили 5-10кг, то дальше, скорей всего не захочется что-то делать, ведь цель достигнута (и питание уже не будет контроллироваться так хорошо, похудел же) - или даже хуже, при каком-то стрессе будете заедать его шоколадкой, не смотря на то что сидите на диете.


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


Так обучение будет идти более гладко и вы будете более довольны своими результатами. (чувствую себя, блин, бизнес-тренером)

показать ответы
0
Автор поста оценил этот комментарий

Добрый день. Какие обычно конкретные задачи джуна в интрепрайсе?

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Такие же как и у всех. Если рассматривать градацию аля L1 - джун, L2 - мидл, L3 - сениор, L4 - чиф/тимлид/архитект то примерные ответственности такие:


L1 - может выполнять рутинные задачи под супервайзингом, не способен делать сложные задачи

L2 - может выполнять рутинные задачи, способен выполнять сложные задачи под супервайзингом

L3 - может выполнять любые задачи без супервайзинга

L4 - может выполнять любые задачи и гарантировать их выполнение у его команды. (Или предоставлять решения крайне специфичных задач)


К рутинным задачам относятся в кровавом энтерпрайзе относятся:

-Пофикси баг из разряда 'неправильный текст'

-Напиши сервис который выполняет crud операции над сущности по полной аналогии с соседним (т.е. скопируй, измени url, измени сущность/таблицу, покрой тестами по аналогии)

-Напиши/пофикси тесты

-Обнови библиотечку/мигригуй существующие вещи


К более сложным можно отнести к примеру проектирование API/схемы данных нового приложения или оптимизация запросов в старом.


К специфичным относятся либо выбор стека на новом проекте (для архитекторов), либо крайне узкий стек технологий (например крайне продвинутые алгоритмы по поисковым строкам)

1
Автор поста оценил этот комментарий

Огромное спасибо за развёрнутый ответ! Вы предопределили мой путь на ближайшее будущее)

раскрыть ветку (1)
2
Автор поста оценил этот комментарий
Не за что :) только помните что питон такой же инструмент как и джава и в чистом виде он не очень функционален, если захотите устроиться разработчиком. Нужно будет искать прикладную область и в ней развиваться. За этим можете посмотреть в ответах - были опытные питонисты, которые могли бы вас направлять
Автор поста оценил этот комментарий

Начинал с просмотра старых лекций Немчинского на ютубе. Потом на джавараш позависал немного. Но все не было какого-то понимания, упирался в какую-то непреодолимую точку, которую не мог перейти.
Недавно снова вернулся, решил пройти всё с начала. Оплатил два курса на foxminded (школа того же Немчинского), прошел успешно эти курсы, хотел идти дальше (третий курс это уже свой проект с ментором).

Случилась вся эта ситуация, а т.к. школа находится вна Украине работу со студентами из РФ прекратили.

Первые два курса должны были остаться навсегда (там видео лекции), но и их похоже отберут.

Что посоветуете? Куда дальше двигаться?

Скрин из чата slack.

Иллюстрация к комментарию
раскрыть ветку (1)
2
Автор поста оценил этот комментарий
Не знаю, есть ли возможность скачать, но всегда можно купить прокси чтобы не сидеть в стране агрессора :)

Вообще раньше я бы посоветовал искать java-школы (пример: training.ru) , до всей этой ситуации это был бы оптимальный шаг (будете бесплатно вкалывать под присмотром ментора).

Расскажите немного подробней про то что уже узнали (или выпишите пройденные курсы). Посмотрим какой проект можно вам придумать
1
Автор поста оценил этот комментарий

последняя фраза очень оптимистично звучит) смысл понятен)
вопрос в догонку SQL нужны для JAVA разработчика или Java  сама по себе является этими запросами?

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

SQL почти мастхев, только если вы не собираетесь попивать смузи с NOSQL-ными базами, но и там нужно общее понимание реляционных баз, чтобы понимать конкуретное преимущество вашего решения.


UPD:

По сути на 80% проектах если вам нужно будет сохранять данные - вы будете сохранять их через SQL. Да, иногда достаточно будет использовать фреймворк аля гибернейт и вызывать метод save() у вашей сущности. Но если что-то пойдет не так или нужно будет достать объекты не по ID-шнику все равно придется лезть в генерируемый SQL и разбираться что пошло не так.

показать ответы
2
Автор поста оценил этот комментарий

Автор, не сочтите, пожалуйста, за дурака, я в IT никто и никак, поэтому вопрос прозвучит глупо, но:

У меня уже очень давно есть навязчивая идея автоматизировать свою отчётность (куча исходных отчётов и куча математических вычислений). Сейчас всё делаю через KNIME, это просто и быстро, но хочется создать что-то типа программки с кнопками и человеческим интерфейсом. Подскажите, пожалуйста, Java/ Python не про это?

И да, я понимаю что на изучение программирования нужно будет убить пару лет, но на то она и навязчивая идея)

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

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


Для простой автоматизации изучать джаву это оверкилл. Скриптовые языки аля питон подойдут проще. А от кнопочек вы сами решите отказаться, привыкнув запускать определенные скрипты.


Плюсом в питоне пойдет то, что математика в нем построена адекватным образом, а не историческим обрезком с плюсов.


На изучение инструмента (скриптового языка) под свои нужды у вас уйдет намного меньше времени (при учете что вам не придется интегрироваться с какими-то сторонними системами), при сильном желании - от 1 до 6х месяцев (даже при практически нулевых знаниях)


Так что питон отличный выбор, если выбросить кнопочки (я подозреваю что в питоне есть возможность сделать кнопки, но проще будет написать скрипты).


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

показать ответы
0
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Дайте, совет. Интересует разработка под андроид. Что мне необходимо изучать, котлин или java?
раскрыть ветку (1)
2
Автор поста оценил этот комментарий

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

показать ответы
0
DELETED
Автор поста оценил этот комментарий
Сейчас для запада в приоритете будут айтишники из Украины. Украине в этом водевиле достаётся больше всех, соответственно за еду они работать будут готовы + они теперь мировые герои и на них нет санкций.
раскрыть ветку (1)
2
Автор поста оценил этот комментарий
Никто из айти отрасли не будет готов работать "за еду". Мировыми героями они ещё побудут полгода-год и все забудется.

Да и сам рынок разработчиков в Украине не соразмерен с рынком в России. А на фоне той же Индии это просто капля в море которая ни на что не влияет.
показать ответы
0
DELETED
Автор поста оценил этот комментарий
На восточном рынке своих разрабов хватает(индусы,китайцы), а на внутреннем рынке будут платить три копейки исходя из логики «теперь им не свалить и теперь не до выебонов»
раскрыть ветку (1)
2
Автор поста оценил этот комментарий
Так-то и на западном рынке индусов хватает, но в России было основано невероятное количество галер. Рынок it постоянно растёт и рабочие места будут требоваться.

Три копейки на локальном рынке звучат довольно глупо - во первых люди которые до этого получали очень много не смогут адаптироваться к изменению ЗП и уедут за предыдущими/перейдут в восточные компании. Конкуренция на рынке труда никуда не денется, пусть и станет меньше.

И это только в самом худшем варианте, если весь запад решит оставить Россию и нет зарабатывать деньги на дешёвых разработчиках. Мне кажется что когда все закончится гигантское количество контор поедет обратно за дешёвыми разрабами. Санкции санкциями, а лишняя денежка карман явно не жмет
показать ответы
0
Автор поста оценил этот комментарий

Это всё понятно но в жава да как и везде есть документация /** */ как минимум, но нейминг мой личный батхёрд (переучиваюсь с пихона на ентерпрайс в финтехе) :3

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Ну ведь самодокументирующийся код намного более приятен чем написания дополнительных джава-доков :)

показать ответы
2
Автор поста оценил этот комментарий

отлично. у меня есть один вопрос. Вот и он: java.lang.NullPointerException

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Error message: null

1
Автор поста оценил этот комментарий

Ребят помогите понять static)) я знаю тупой вопрос) но сколько видел ответов все никак понять не могу) особенно когда на собеседовании спрашивают.

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Смотрите. Java запускается тоже на java. Давайте представим что вы написали класс Person у которого есть поле name.

Программа выглядит как-то так(псевдокод):


class Person {

    public String name;

    Person(String name){this.name = name}

}


class MainClass {

    psvm(String[] args) {

    Person pikabuUser = new Person("Solliter");

    System.out.println(pikabuUser.name);

    }

}


Наша программа по сути выводит имя пользователя. Когда джава запускается она должна понять как ей создать pikabuUser, т.е. она должна отсканировать класс Person и записать о нем общие данные (Как называется, какие есть поля, методы, конструкторы). В итоге эта метаинформация записывается в класс Class<Person> и информация о всех классах записывается куда-то общее пространство (чтобы не сканировать информацию каждый раз).


В итоге во время System.out.println() есть как минимум 2 объекта. Один из них это Person pikabuUser, у которого есть поле name, другой это Class<Person> у которого есть массив "поляКласса" в котором лежит одно поле, в котором записано что поле называется name, что оно типа String и что оно public. Надо понимать что объект класса Class<Person> вообще ничего не знает о созданных по его подобию экзаплярах.


В итоге есть 2 раздельные сущности - одна описывает конкретный объект другая описывает то как создаются эти объекты и из чего она состоит.


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

показать ответы
0
Автор поста оценил этот комментарий
Подскажите , а где лучше всего искать вакансии по джава разработке для джунов или стажёров ? По классике на хх.ру ?
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

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

Старайтесь обходить слишком специфичные кейсы и искать "обычный" стек - спринг, SQL, гибернейт

0
Автор поста оценил этот комментарий

Здравствуйте! Пишу приложение для мониторинга времени пользователя пк (сколько он провел времени на сайтах, приложениях). Подскажите пожалуйста, где можно взять информацию по тому как читать статистику с пк яве? Чтобы приложение само смотрела винду (что там открыто и сколько времени) и записывало время в базу данных.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Думаю что очень сложно :) Можно выполнять какие-нибудь команды в консоли аля ps aux или tasklist и парсить результат, но опять же нужно определять доп программу по окружению. Честно говоря я не знаю способа подключиться напрямую к другим процессам из джавы и сомневаюсь что это вообще возможно сделать каким-то простым способом

показать ответы
1
Автор поста оценил этот комментарий

Расскажите плиз, как сделать фабрику соблюдая open closed principle. Прям оч интересует.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Вообще никогда не задумывался об этом - довольно неочевидный вопрос. В любом случае для добавления новой опции в выдаче фабрики придется ее изменять. Если добавлять инверсию контроля для доп опций - то получится уже сервис локатор. Вообще у Борисова был неплохой доклад как эволюционно соблюдение солида докатилось до DI в том виде, который есть сейчас. Может это вам поможет :)

Предпросмотр
YouTube2:24:30
показать ответы
2
вообще Javaнутый
Автор поста оценил этот комментарий

ну чё ты

.orElseGet(() -> ExceptionBuilder.newNPE().doThrow())

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Можно круче:

ExceptionFactory.getExceptionPool(NullPointerException.class).orElse(`ваш код`) :)

0
Автор поста оценил этот комментарий
Как думаете, как себя будет чувствовать мобилка, андроид? Взялся за изучение. Не будет ли это первым, на что будут урезать бюджет заказчики на рынке РФ?
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Никто не может вам с 100% сказать что будет завтра, а если кто-то и может - то он, скорей всего, пытается вам что-то продать :)


Мой примерный прогноз - вакансий станет меньше, бюджет будет урезаться. Но, думаю, все равно необходимость/работа будет с зп выше среднего дохода Россиянина

0
Автор поста оценил этот комментарий

Насчёт поревьюить код. Есть у меня проект,который был собран на коленке без какого либо понимания, как java должна работать, просто потому что надо на ней и точка. При том, что я не прогер, только сисадминлю в баше, да пыхтоне понемногу.

Есть ли желание "поревьюить", т.е. поржать с моей тупости и объяснить, что и как было делать нельзя?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Да, киньте ссылку. Если стесняетесь - можете скинуть тг я вас там добавлю и уже там скинуть ссыль на гитхаб,
0
Автор поста оценил этот комментарий
Посоветуйте литературу или может канал ютуб какой, на ваш взгляд который поможет с обучением)
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

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


Вот что примерно можно аккумулировать из темы:


В соседних тредах рекомендуют курсы со степика.

Есть какой-нибудь Шилдт с его самоучителем, если хочется прочитать книгу.

Есть бесплатные/платные курсы, будь то курсы от jetbrains (https://hyperskill.org/tracks/8) или джавараша

показать ответы
4
вообще Javaнутый
Автор поста оценил этот комментарий

Потому что надо было Optional.ofNullable(вопрос).orElse(QuestionUtil.getDefaultQuestion()); :D

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Отвратительно. Мне нравится. Давайте развивать тему в духе фуубаз энтерпрайз эдишен:


Optional.ofNullable(

    ObjectFactory

        .getInstance()

        .getObject(QuestionFactory.class)

   .map(qf -> qf.locateInstance('мне уже лень писать инстанслокатор и.т.п.'))

   .map(QuestionLocator::getNextQuestion)

   .map(TextQuestion::getText)

   .or(ObjectFactory.getInstance()

                      .getObject(QustionFactory.class)

                      .getDefaultQuestionFactory()

                      .getNextQuestion())

   .map(TextQuestion::getText)

   .get(); //Мы ведь совсем мерзкие?

показать ответы
4
Автор поста оценил этот комментарий

Господи они же дети , какая философия )) Эта книга из разряда как отбить желание писать на Яве раз и навсегда :)

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Зависит от человека, если он устал от абстракций и хочет прочитать справочник - мб зайдет. Чаще я рекомендую всё-таки какого-нибудь Шилдта
показать ответы
0
Автор поста оценил этот комментарий

Если честно ещё не видел ни разу джава её стек на работе. только спринг

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Разумеется, вы ведь пишете на спринге, да и его раза в 4 больше.

Но для общего развития рекомендовал бы посмотреть - все давным давно на тех же аннотациях, есть интересные решения :)

P.s. сам работаю со спрингом, но против дискриминации j2ee, она уже совсем не такая какая была лет 10 назад)
показать ответы
2
Автор поста оценил этот комментарий

Проблема в том что почему-то все говорят общими словами. Все курсы, книги везде только синтаксис. Это то же самое например, если говорить что птица летает, потому что у нее есть крылья. Показывают, объясняют весь механизм полета птицы. Но зачем он вам, если вы не сможете летать?
Негде не могу найти простое объяснение функции. Например, с помощью этой функции можно сделать это и это, если и есть примеры то такие примитивные, что прийдется потратить много времени на продолжение примера,  по типу эта функция поможет вам сложить 2+2. Но вообще с помощью нее можно создать крутой алгоритм, но это не важно, пойдем дальше. А с помощью этой функции можно... и т.д. и т.п.
Есть в нете хоть какая нибудь полезная информация, не объемная и наполненная водой.
Просто примеры использования хотя бы одной функции, любого языка. Не в курсе?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

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


Если вы настаиваете на "сухом" описании функций - весь код в java задокументирован и находится в открытом доступе, вы можете либо скачать его, либо открыть любые доки оракла: https://docs.oracle.com/javase/7/docs/api/java/lang/Object.h...


Как компромис рекомендовал бы вам обратить внимание на такую классику как Философия Java Брюса Эккеля (https://vk.com/doc26879026_509770285?hash=a26647a0e88c12c139...) - мне кажется там довольно сжато подается материал

показать ответы
2
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Правильно, пет проекты важны. Попытайтесь сами писать с ссылками на гитхаб.

DELETED
Автор поста оценил этот комментарий
IT-специальности в России больше не актуальны. Учитесь картошку сажать
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

IT-специальности в России крайне актуальны, особенно в последнее время, учитывая утечку мозгов - кто-то должен поддерживать инфраструктуру всего рунета.


По поводу самой джавы - хз, скорей всего вакансий будет меньше, но сама разработка просто переориентируется с западного рынка на восточный (помимо внутреннего)

показать ответы
0
Автор поста оценил этот комментарий

а что там санкции? жаву не задели? просто интересно повлияло ли

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Честно говоря - хз. Oracle владеющей java ушел из России, но, думаю, форкнуть или использовать альтернативную jdk никто не запретит.

0
Автор поста оценил этот комментарий
Спасибо за рекомендации! Вообще изначальная цель была найти способ поудобнее работать с БД. Каждый раз писать, а потом ковыряться в простынях запросов - это боль. Читал, что это решается через спринг+гибернейт, но сходу не смог найти адекватных гайдов.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Спринг только управляет бинами (чаще всего синглтонами).

Чаще всего эти операции так или иначе делаются через паттерн DAO (data access object). Даже через спринг дату или нечто подобное - вам придется писать репозитории которые делают то же самое.


Посмотрите как работает Criteria API в гибернейте, попытайтесь написать dao на CRUD операции какой-то гибернейт сущности(например пользователя)

0
Автор поста оценил этот комментарий
Подскажи пожалуйста книги/ресурсы про gradle и про многопоточность в Java.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Про Gradle не подскажу подробно - есть несколько видео от jug.ru 8 летней давности (например: https://youtu.be/NZJTYPLb0iE)


По поводу многопоточки - лучшей книгой (имхо) является concurrency in practice, она на 95% закрывает любые необходимые знания в этой области для обычного разработчика

показать ответы
0
Автор поста оценил этот комментарий
Привет, есть вопросы по gl, а вообще какой город?
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Привет. Если под GL имелся в виду openGL - к сожалению я с ним не работал (слишком специфичная область). Я специализируюсь на энтерпрайз решениях на спринге (что чаще всего и используется у обычного джава разработчика).


По поводу города - скорей всего Белград, но сейчас нахожусь в Стамбуле. Вообще раньше работал из спб

показать ответы
0
Автор поста оценил этот комментарий
Спасибо. А можно ли попросить у вас ссылку на достойный, по вашему мнению, курс на степике?
раскрыть ветку (1)
1
Автор поста оценил этот комментарий
К сожалению, здесь я не особо помощник, т.к. чтобы оценить курс нужно его пройти/просмотреть, а для этого нужно затратить существенное количество времени. Думаю что почти любой курс сойдёт, но, думаю что можно спросить у совет у людей проходящих обучение сейчас в параллельных комментариях
1
Автор поста оценил этот комментарий
Я решил начать изучать java с ресурса javarush. Правильно ли я поступил?
раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Добрый вечер. С javarush был знаком довольно давно (лет 8 назад смотрел у них курсы), возможно к этому моменту все изменилось.

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

Конкурентное преимущество джавараша - задачи, которые идут после каждой темы, но даже в этом плане они не уникальны.

Джавараш подходит для начала обучения, но не является единственным/приоритетным путем для обучения. Игровая форма обучения, думаю, будет надоедать сильней чем помогать в процессе обучения
показать ответы
0
Автор поста оценил этот комментарий
Доброго времени суток. Рискну спросить, предложение ещё актуально? Как раз изучаю java и очень нужна помощь практика.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Добрый день, спрашивайте здесь или кидайте тг, добавим/разберемся

0
Автор поста оценил этот комментарий
Спасибо, добрый человек)
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Пардон за задержку. Выходные были довольно оживленными поэтому пораскинув мозгами попытался нарисовать полностью забитое поле (worst case scenario). Пораскидав варианты я понял что при заполнении рандомом кораблями от большего к меньшему - скорей всего никогда не получится заполнить поле таким образом чтобы мы под конец не смогли поставить корабль.


Алгоритм примерно такой:

Общая идея:

-Корабли выставляем от большей палубы к меньшей.

-Сначала определяем горизонтальный или вертикальный корабль.

-Если хоть как-то обкакаемся - попробуем рефрешнуть доску и начать с начала (хотя, скорей всего, можно доказать что при таком алгоритме это никогда не вызовется)


Выбор случайной точки:

-Выбираем случайную точку из промежутка (10x10-n, где n-кол-во палуб корабля (микрооптимизация можно этого не делать))

-Пытаемся посмотреть можно ли поставить корабль (сверяемся является ли точка == 0, являются ли еще n-1 точек слева/снизу == 0 или не выходят ли они за пределы поля.

-Если алгоритм не успешный сдвигаем клетку на одну влево (если дойдет до границы то на одну вниз и с начала ряда)

-Если все еще не удалось - то делаем то же самое только вправо и вверх

-Если ничего не получилось (скорей всего не валидный кейс) меняем ориентацию корабля (горизонтальный/вертикальный)


Как поставить корабль:

-Если точка валидная то можно начать ставить корабль. Ставим в ячейку массива цифру 1. Все прилягающие клетки помечаются цифрой 2, дальше помечается след. клетка массива.

-После построения всех кораблей нужно будет пробежаться еще раз по всем полям и заменить все 2ки на нули обратно (чтобы красиво отобразить поле.

Иллюстрация к комментарию
показать ответы
1
Автор поста оценил этот комментарий
Есть два учебника) шилд для начинающих ииии шилд полное руководство. В полное рудоводство-справочник. А для начинающих шилд core полность раскрыт,судя по оглавлению?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Не могу гарантировать что хоть где-то полностью описано - но представление/знания на "проходной уровень" core даст

показать ответы
0
Автор поста оценил этот комментарий
У шилда нет практики вообще,чисто справочник,Философия от эйкеля в этом плане лучше?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Как я вижу по приложению задачи-таки есть, может быть их мало.


Философия это куда ближе к справочнику чем Шилдт, задач я там не помню

показать ответы
0
Автор поста оценил этот комментарий
Добрый день. Я На начальном этапе,нужен Java core. Как его получить лучше?
Шилд это справочник без практики,
Степик дает вводные данные, и бросит тебя на пол пути,там ты не станеш полноценным Core.
Нужно полное понимание Core,что бы перейте к spring,базам данных и т.п.
Есть ли что то основополагающие?
Слышал Философия Java можно эйкеля,но она про 6 версию Java вроде,это критично?
Или другие книги?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Я недостаточно хорошо осведомлен в текущих источниках обучения.


Шилдт вполне норм (руководство для начинающих 7е издание) задачки есть внутри. Если вас пугает подача информации внутри него - философию джава точно начинать не стоит.


Под минимальным набором под core подразумевается:

-Базовые основы как в других процедурных языках (примитивы, операторы, условия, циклы, массивы и.т.п.)

-Основы ооп, классы, методы, статика, все что связано с полиморфизмом/наследованием и.т.п.

-IO/nio, try with resources и.т.п.

-Экспшены и все что с ними связаны

-Дженерики/Аннотации

-Коллекции и все что с ними связано


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


Про джаву стоит читать 8й версии. Выше применяется еще не везде/никто за непонимание модулей вас бить не будет. Ниже уже используется только на проектах куда вы точно не захотите идти.


Про степиковские курсы - совсем не знаю, лучше уточнять у людей которые относительно недавно проходили курсы и могут дать адекватную информацию

показать ответы
0
Автор поста оценил этот комментарий

Боюсь, что придется всё-таки учить... Принципиальный вопрос только в том, что именно: java или python?  С одной стороны, уже есть пара проектов, которые писали на java и один из них в доступе, а другой имеет ряд очень удачных решений. С другой стороны, на мой взгляд, python проще в освоении и в синтаксисе. Но по обоим вариантам есть несколько принципиально пока неясных моментов 1) какой framework брать? Так чтобы программу можно было использовать и в коммерческих целях в случае успешности проекта. 2) есть ли принципиальная разница в сложности написания системы распознавания, то есть обработки и сравнения изображений 3) в чем проще написать графическую среду, объединяющую изображения и координатную сетку? Исходя из собственного уровня подготовки, скорее всего, на написание некоторых частей кода будет требоваться помощь профессионала, но на весь проект, к сожалению, пока бюджета нет((

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
В целом - в питоне больше математических пакетов.
Джава имеет в себе встроенные слои абстракции и вынуждает их учить с самого начала (чем и обусловливает высокий порог сложности). Питон скриптовый язык - достаточно написать одну строчку чтобы запустить программу.

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

1) Фреймворки возможны любые. Сомневаюсь что есть какие-то компьютер-вижен платформы которые заставляют подстраивать под себя решения. Советую придерживаться стандартных решений аля спинг и какого-нибудь джанго (хз что является кор архитектурным фреймворком в питоне), чтобы вам было проще соблюдать архитектурные паттерны и, в случае коммерческого успеха, было больше возможностей нанять людей на поддержку.

2) Разницы нет если вы будете писать алгоритмы с нуля. Если вы собираетесь использовать готовые решения - нужно искать заранее. В java есть поддержка кода, написанного на другом языке, скорей всего питон тоже имеет нечто подобное. В крайнем случае можно перейти на микросервисную архитектуру и вынести часть логики в сервис на необходимом вам языке.

3) Хз, джава плохо работает с ui и не совсем заточен под графику (не считая несколько громких исключений) и, как мне кажется, в питоне тоже не все очень хорошо с этим (возможно заблуждаюсь). И там и там это сделать реально, но и там и там это будет немного топорно ибо оба языка не развивались в этом направлении
0
Автор поста оценил этот комментарий
Что такое бекграунд?)
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

В этом контексте - изначальные знания

показать ответы
0
Автор поста оценил этот комментарий

слушайте, а есть же еще всякие монго дб и тд. У них с sql один язык запросов?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

показать ответы
0
Автор поста оценил этот комментарий

Исходные данные следующие: 1) имеется open sourсe проект "open pnp" , в рамках которого решены основные задачи   2) имеется готовый станок с очень хорошими наработками именно по ПО. Судя по тем файлам, которые использует программа, написана она именно на java.  И именно этот вариант ПО и хотелось бы повторить и немного модернизировать под другое "железо".   

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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


Учить из-за этого джаву может быть оверкилом. Возможно будет проще нанять разраба разбирающегося с вашим форматом железа, заплатить ему от 30 до 150к и пусть он за неделю/месяц все адаптирует под ваше железо, нежели заставлять себя учиться этот интервал и потом еще 2-3 мес париться с миграцией.

показать ответы
0
Автор поста оценил этот комментарий
К сожалению, мне в этом задании нельзя в ООП. Только из main в консоль
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Тогда я подумаю над алгоритмом и отпишу ближе к концу недели, на это нужно отвлечься на часик-два :)

показать ответы
0
Автор поста оценил этот комментарий

Добрый день! Имеется конкретная задача, связанная с управлением станком установки компонентов. Очень интересуют возможности JAVA для работы с изображениями ( вопрос сравнение изображений, распознавание ),  управление внешними устройствами через raspberry pi c использованием TCP/IP.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Не моя специальность, но попробую ответить.


Работа с изображениями (массив пикселей), разумеется имеется и вы можете писать любую обработку какую захотите. А вот с готовыми решениями небольшая беда.


Чисто джава библиотек для продвинутого компьютерного зрения я не находил (хотя писал что-то свое в универе, но постить это не буду, стыдно).


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


Для решения была развернута in mem H2 база (как быстрое решение), в базе были ссылки на пост, дата и perceptual hash, соответственно я форкнул jphash (https://github.com/pragone/jphash) и немного подкрутил его под свои нужды.


В целом - можете уточнить задачу и подумаем что можно сделать, но, скорей всего, я не смогу вам помочь, если речь зайдет о довольно сложной математике :(

показать ответы
0
Автор поста оценил этот комментарий
А как рандомно поставить точку из которой будет расти корабль? Я создаю переменные x и y которые генерятся рандомно от 0 до 9. И когда бегу по двумерному массиву задаю, что если arr[i][j] == arr[x][y], то можно заполнять поле 4 цифрами "1" подряд. Речь про четырехпалубник. Правильно делаю? Или технически лучше реализовать как-то по другому. Проверки выхода за границы поля и пересечения с другими кораблями выбор горизонтальное размещение или вертикальное - я пока не трогаю. Хоть бы это заработало)
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Выбираете будет горизонтальный или вертикальный и затем берете условную точку
arr[random.nextInt(10)][random.nextInt(10 - 4)], и затем от нее заполняете 4 клетки влево. Сами клетки можно сделать объектами, у которых можно сделать поля "занята" и "граничная"
показать ответы
0
Автор поста оценил этот комментарий
Вот у меня сейчас задание, расставить рандомно корабли для морского боя. Весь код должен быть в main. Мозг ща взорвется. Если сможете советом помочь - я подробнее расскажу)
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Хз, сейчас 3 часа ночи и моя голова не особо работает но я бы рассуждал так:


4х палубник может занять максимум 6*3 = 18 клеток

3х палубники могут занять 5*3*2 = 30 клеток

2х палубники  занять 4 * 3 * 3 = 36 клеток

1 палубники занимают 9*4 = 36 клеток


Итого: всего максимальная допустимая поверхность 120 клеток, это на 20 клеток больше обычного поля (10 х 10). Нужно избавиться от оверхеда за 10 кораблей


В итоге я бы делал что-то костыльно ориентированное.


Сначала бы я ставил 4х палубник в случайную точку. .


Если кораблей остается <4-8 а оверхед еще есть, то старался бы лепить корабли с граничными зонами, пока оверхед не пропадет.


Держите корабли (их длинну) и вытаскивайте случайные по длинне от 2х до 3х, это нужно чтобы избежать моментов когда однопалубники встанут неудобно.


Мб завтра со свежей головой придумаю более оптимальное решение, но пока что в голову приходит только нечто подобное чтобы решать в лоб

показать ответы
0
Автор поста оценил этот комментарий

Потому что у них нет воот такой мякотки. Посмотрел бы я, как они это на английском/латиницей написали:

Иллюстрация к комментарию
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Да у нас такого тоже хватает, например абстрактный класс BFPP для большинства аннотаций, не управляемых аспектами называется "AbstractBeanFactoryAwareAdvicingPostProcessor" :)

0
Автор поста оценил этот комментарий

Что такое нейминг?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Наименования переменных/методов
0
Автор поста оценил этот комментарий

Да смотрел я Жеку ещё когда это не было мэинстримом, и потом, содержание доклада - прописные истины для разраба на спринге.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Кажется Жека Борисов был мейнстримом ещё когда я только начинал делать первые шаги лет 8-10 назад. Скорей всего вы выше меня по сеньорности :)

А про Жеку зря вы так, толпами вижу на собесах людей не знающих простейшие вещи из спринг потрошителя, не говоря уже о том что доклад интересный с исторической точки зрения :)
0
Автор поста оценил этот комментарий

Понял принял! Думал есть какой-нибудь фреймворк или внутренний инструмент явы который позволяет мониторить процессы компьютера. Буду дальше тыкаться, может получится сделать какой-нибудь околоработающий костыль :)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Это очень несекьюрно и джава машина не должна давать это делать по умолчанию, но вполне возможно есть обходные пути

0
Автор поста оценил этот комментарий
Но при этом у чейнов есть четкий ордеринг, который как бы «намекает» что цепочка должна быть конечной и (очень желательно) линейной.
Кстати сингл респонсобилити говорит что фильтр должен решать только одну задачу (делегирование фильтров выглядит как suck’s)
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Тем не менее он рекурсивный (не помню как чейн оф респонсибилити в MVC/security, есть большая вероятность что точно так же, т.к. добавлять следующий степ в фильтр является еще большим нарушением сингл респонсибилити (помимо основной логики добавляется захардкоженное знание о след. степе).


Никто не говорил о бесконечных рекурсиях, но время от времени это валидный кейс :)

0
Автор поста оценил этот комментарий

Добрый день.как можно с вами связаться?хочу показать репозиторий для анализа

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Добрый день, можете написать телеграмм, я вас добавлю

0
Автор поста оценил этот комментарий
Рекурсию из контейнера? Вы там совсем ебобо? 🤣
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Вполне валидный кейс, например посмотрите на chain-of-responsibility в javax-ных фильтрах. Каждый фильтр находится в контейнере, при этом в каждый из них инжектится фильтр чейн который их хранит.


При этом упрощенный стек выглядит как doFilter()[чейн]->doFilter()[фильтр]->doFilter()[чейн]->doFilter()[фильтр] и.т.п.

показать ответы
0
Автор поста оценил этот комментарий

>немного разбирался в свинге.

Пилите пост

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Увольте :) это было 10 лет назад и я довольно плохо помню что и как происходило :)
помню что есть компоненты, есть общий LookAndFeel, что, по сути, особый набор стилей. Помню что все рендерится в отдельном графическом потоке (и тому кто засовывает рест запросы туда нужно надавать по щщам). Помню что для реализации ивентов мы использовали гугловскую реализацию обсервера (event bus вроде называлась). Помню что не смотря на всю боль работать с ui на свинге было в 1000 раз лучше чем трогать swt и эклипс плагины )
2
Автор поста оценил этот комментарий

...

.orElseThrow(NullPointerException::new);

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Спасибо, в голосину :)

1
Автор поста оценил этот комментарий

Эх. Я все это прекрасно понимаю, это скорее так, риторический вопрос :) При всей моей нелюбви к джаве, почему-то котлин понравился, в разной степени на него некоторые приложения перетащил. В идеале хочу 17ую джаву в комплект, да, но некоторые критичные зависимости гвоздями прибиты к 8, а переделывать это все нет времени, ибо я не разработчик и говнокод только во время простоя от основных обязанностей :D

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Ну, у Котлина есть целый андройд, а у большинства языков аля груви только преданная кучка фанатиков
0
Автор поста оценил этот комментарий

А не надо доводить код до циклических зависимостей))

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Да, это крайне желательно, но не всегда возможно, особенно если вам очень хочется применять рекурсию :)

показать ответы
1
Автор поста оценил этот комментарий

О боги, кто-нибудь, научите меня в jenkins😥

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Что конкретно интересует?

0
Автор поста оценил этот комментарий

Есть ли смысл в изучении Groovy?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Не очень большой. Это скорей язык для джава задротов которым захотелось синтаксического сахара. Сейчас непонятно на чем бы я предпочел писать - монады частично перенесли в 8й джаве, варарги тоже добавили в 11й.


Остальной сахар приятен, но не так уж и критичен.


Если найдете проект на груви - можете порадоваться, но его комьюнити не очень большое и сам язык скорей набор находок на уровне "аааа, это не работает потому что здесь попыталсь сделать круче, а в итоге получилось странно и непонятно"

0
Автор поста оценил этот комментарий

А как насчёт "First Java"?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Только в изучении с ещё одной книгой, слишком хаотичная
2
вообще Javaнутый
Автор поста оценил этот комментарий

Шилдт - шарпист, если читать по Java - то кмк, лучше Эккель. Да, у него там по 6 версии Java, но хотя бы перевод адекватный, а не "Карты (Map)" как у Шилда. Ну и плюс перевод Шилдта вообще страдает.


После чего пробежаться по lambda выражениям (в целом достаточно понять, дальше просто опыт) и изучать новый JSR'ы в новых версиях Java


@Stratmor

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Читал старые версии Шилдта, такого ужаса не замечал :) моя претензия к философии java в ее объеме и дотошности - ее сходу осилить/переварить очень тяжело. Но действительно неплохой вариант для тех кто сможет это выдержать
0
Автор поста оценил этот комментарий
Может и так. но мне кажется, что говорить о том , что di это частный случай ioc тоже самое что сказать «класс расширяющий абстрактный класс является частным случаем абстрактного класс»
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Здесь скорей как List и Set является частным случаем Collection/Iterable, они выполняют те же самые контракты

1
Автор поста оценил этот комментарий

Телега @b1tterman . удалю потом

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Добавил

0
Автор поста оценил этот комментарий
По поводу ioc и di это не частный случай, это разные сущности. Ioc это принцип, а di это реализация ioc
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Частным случаем является состояние когда сущность принадлежит родителю в одностороннем порядке.


IoC принцип и DI принцип реализующий IoC. Обратное не верно. В чем ошибка? DI тоже является принципом и не завязан на конкретной реализации

показать ответы
0
Автор поста оценил этот комментарий
Кажется сейчас java это только интерпрайз под spring? Или андройд под java еще есть? Прост 100% вакансий что видел - spring, а в андройд мейн язык уже котлин
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Переход с джавы на Котлин довольно быстрый, но да, чаще всего это энтерпрайз, и чаще этот энтерпрайз на спринге
показать ответы
1
Автор поста оценил этот комментарий

услышал Java EE в 2022 и стало грустно)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Да не все так плохо там, просто вас пугают рассказами про кучи xml конфигураций из 2010х годов :)

показать ответы
0
Автор поста оценил этот комментарий

Передача по значению это копирование значения внутрь аргумента метода. Ссылка на объект внутри метода тоже копируется.


Нашел для вас статью на хабре:

https://habr.com/ru/company/otus/blog/551026/

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Почитал, статью стоит открыть только ради комментария:


Псевдокод

doSomething(int value) {

value = 321;

}

value = 123;

println(value);

doSomething(value);

println(value);


Если значение в функцию doSomething() будет передаваться по ссылке, то вывод будет следующим

123

321

1
Автор поста оценил этот комментарий
Здравствуйте @Tanth13, модно я перенесу ваш пост в сообщество Помощники?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Да, без проблем

показать ответы
1
Автор поста оценил этот комментарий

А можно пояснить для маленьких?

Я дума при передаче в параметр метода объекта, мы же просто передаём ссылку на него в хипе?

Только примитивы передаются по значению

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Передача по значению это копирование значения внутрь аргумента метода. Ссылка на объект внутри метода тоже копируется.


Нашел для вас статью на хабре:

https://habr.com/ru/company/otus/blog/551026/

показать ответы
0
DELETED
Автор поста оценил этот комментарий

Для нормальной работы Android Studio обязательно ли чтобы имя пользователя в винде было на латинице? У меня нифига эмулятор не работает, пишут что может быть из за кириллицы.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Возможно, не знаком с андройд студией. Попробуйте поменять кодировку в конфигах

1
DELETED
Автор поста оценил этот комментарий

Ctrl+alt+L+O

🤣

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Атата, кто форматтер не настроил? Теперь на пулреквесте десять тысяч измененных строк!

показать ответы
0
DELETED
Автор поста оценил этот комментарий

>По значению


А ты хитер))

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Вообще можно начать вбрасывать с тем аля "табы или спейсы" :)

Иллюстрация к комментарию
показать ответы
1
DELETED
Автор поста оценил этот комментарий

Го попиздим холивар я создал)) параметры передаются по ссылке или значению? Разница ioc и di? Лучше сетить через сетеры или конструктор? xD

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

По значению

Di есть частный случай IOC

Через конструктор (проще понять когда зависимостей становится много и нужно разбивать класс, меньше уродливых сеттеров), но сеттеры необходимы чтобы резолвить кейсы с циклическими зависимостями :)

показать ответы
1
Автор поста оценил этот комментарий
Насколько востребованн Котлин в Энтерпрайзе? Или его место только в Андроиде?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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


Вообще на котлине писать приятней и удобней, но проекты на нем существенно новей и, обычно, требуют дополнительных знаний помимо основного стека

показать ответы
0
Автор поста оценил этот комментарий
Я не боюсь m chias
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

показать ответы
1
Автор поста оценил этот комментарий

Что-то вэб лист спорный. Полезно ли учить протоколы и стандарты без практики (бы запихнул этот пункт после spring даже)?!  Можно ли получить понимание того что такое и как работает контейнер сервлетов без самих сервлетов (уже придётся потрогать java ee)?! А если выбрать spring то неужели можно обойтись без базового понимания java ee (Spring ведь имеет кое-какую родственную связь с java ee, не так ли)?!

в общем я бы предложил другую модель:
Web:

- Посмотреть что такое сервлеты и попробовать собрать какой-нибудь сервер на них с любым контейнером и в процессе посмотреть инфу что же такое контейнер и как оно работает (естественно после создания чего-то что смогло задеплоиться нужно протестить это запросами)

- Понять что есть масса непонятных моментов и попробовать найти ответы на все появившиеся вопросы (можно переписать пункт как "изучение java ee и http")

в идеале после этих двух должно быть чёткое понимание того что такое контейнер сервлетов и как оно работает, а так же понимание того как обрабатывается запрос, отправленный с клиентской части ну и должно появиться понимание того что есть какие-то там http методы и есть разница между GET и POST

- как только есть понимание как работает то что создавалось выше можно доставать spring и делать то же самое но уже используя этот фрэймворк (идеально было бы ещё разбираться а как оно работает под капотом)

Почему в моей версии нет выбора между java EE и spring? Хороший вопрос) Едва ли будет хоть одно собеседование на любую позицию/проект где не спросят про spring, а программирование учат чтоб успешно устроиться на работу, правда?!

ближе к концу коммента понял что и DB можно покритиковать но что-то лень уже(
ох, да и "нужно понимать как работает IoT" или ".. IoC"?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

План был примерный как направление в котором нужно копать :) По поводу критики:


Http мастхев к изучению. Не могу представить как можно писать веб сервисы принимающие запросы, не понимая из чего состоит сам запрос. Если вы пишете @RequestMapping не понимая что в загаловке/теле метода, да и вообще - не понимая как отправить запрос на сервер - вам все равно придется изучить http, только в этом случае вам придется изучать 2 темы параллельно, получая кашу в голове. Даже при написании сервлета нужно будет разбираться в чем различие между doGet и doPost.


Мне кажется ваши пункты:

Можно ли получить понимание того что такое и как работает контейнер сервлетов без самих сервлетов (уже придётся потрогать java ee)?!

и

- Посмотреть что такое сервлеты и попробовать собрать какой-нибудь сервер на них с любым контейнером и в процессе посмотреть инфу что же такое контейнер и как оно работает (естественно после создания чего-то что смогло задеплоиться нужно протестить это запросами)


немного противоречат друг другу. Разумеется контейнер придется запустить разок и чтобы он работал придется написать хотя бы один сервлет чтобы понять устройство работы.


Не совсем понимаю взаимосвязь конейнер сервлетов = java ee. Java EE это гигантский набор спецификаций, и работа с сервлетами лишь крайне малая ее часть. Вы ведь прекрасно понимаете что если вы выбираете спринг как платформу - вы все равно регистрируете DispatcherServlet внутри контейнера сервлета, после чего он уже переопределяет логику и это понимание крайне важно - спринг не изобретает альтернативу сервлетам, а просто навешивает дополнительную абстракцию используя тот же самый механизм что был в предыдущей теме. Вы ведь не будете говорить что весь спринг это java EE?


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


Касательно java ee - зря вы так. Спринг развивался как альтернатива устаревшим спецификациям, но в последние 5 лет EE модернизируется и позволяет некоторые вещи делать удобней чем в том же спринге. Да ~80% рынка на спринге, но вакансии есть и без него.


P.S. да, IoC, опечатка

показать ответы
0
Автор поста оценил этот комментарий

Доктор как называется болезнь когда такое несложно сделать без фреймворков ?

при чем чтоб там была жесткая привязка к postgress это надо постараться

а фреймворки при этом пугают


правда при таком способе могут быть проблемы с кодировками с многозадачностью с тем что надо ставить на какой то веб сервер с безопасностью


вы попробуйте дайте задание может я вас удивлю но ограничения по сроку точно должны быть слабыми


чем кстати не угодили спринг бут и рест ?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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


Причина почему я их исключил - слишком большая инкапсуляция внутренних процессов. В дата ресте достаточно написать веб репозиторий и сделать приложение с crud операциями состоящее из 1-2х классов.

То же самое касается и бута - он сильно ускоряет процессы, но в реальной жизни будет потребность обновляться и решать конфликты версий/jar hell-ы. Если качать "полную сборку полностью совместимую друг с другом" не понимая из чего она состоит - можно банально выстрелить себе в ногу не понимая базовое внутреннее устройство того или иного компонента.


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

0
Автор поста оценил этот комментарий
Доброго времени суток. Подскажите, пожалуйста, есть ли хороший курс спринга?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Добрый день, вообще книги аля pivotal cert дают хорошее преставление https://www.amazon.com/Pivotal-Certified-Professional-Spring...

Если совсем основы то подобный курс кажется адекватным:

https://youtube.com/playlist?list=PL6jg6AGdCNaWF-sUH2QDudBRX...


Но все зависит от того что вы конкретно имеете в виду под спрингом.

Спринг в основе - просто контейнер для управления жизненным циклом бинов. Есть большое кол-во технологий которые его расширяют.


Не хочешь ковыряться в сервлетах? Держи обертку через диспатчерсервлет в spring web

Нет желания писать однотипные запросы? Держи спринг дату, которая сама придумывает реализацию твоих интерфейсов ориентируясь на название методов (не рекомендуется)


В принципе основные применения можно прочитать в пивотале (если найдете его в сети).


Не рекомендую spring in action - слишком много воды.

показать ответы
0
Автор поста оценил этот комментарий
Спасибо, я буду иметь тебя в виду, есть телега?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Да, если напишете свою - добавлюсь, чтобы избегать большого кол-ва спама

показать ответы
0
Автор поста оценил этот комментарий

так просто изучать немного скучно

а есть какие то реальные задачи ?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Смотрите - реальные задачи очень трудно давать с нуля.


Представьте себе что вы изучаете как работать простым набором инструментов (молоток, отвертка и т.п.). Задачи будут выглядеть как "забейте гвоздь" и в чистой абстракции они, к сожалению, не будут никому не нужны. Для того чтобы применять в +- боевой задачи нужно понимать где и как устроена условная "стена", в которую нужно этот сам гвоздь вбивать.


После освоения самой java - можно накидать задание аля сделать простой crud сервис используя определенный стек (прим: spring web, postgres, gradle, hibernate, избегая бута и спринг рест)

показать ответы
0
Автор поста оценил этот комментарий
Да, опенГЛ. Ну ладно, всеравно спасибо
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

показать ответы
0
Автор поста оценил этот комментарий
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Добавил
показать ответы
0
Автор поста оценил этот комментарий
А с вами только здесь общаться, или есть другой канал для связи?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Могу добавить вас в телеграмме, если вы дадите какой-нибудь контакт для связи
показать ответы
0
Автор поста оценил этот комментарий

Хочу изучать питон. Нужна помочь, нужен наставник.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Не смотря на то что я поверхностно знаком с питоном - не смогу помочь/направлять по этому направлению, т.к. это не является моей основной специальностью (по сути мой опыт ограничивается использованием нескольких сервисов на джанго интегрируемых со специальной платформой для скапинга). Очень сложно как-то давать наставления там, где даже основной синтаксис языка не полностью освоен :(

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества