Q: Поздно ли вкатываться в айти в 20/30/40/100 лет?
А: Нет, не поздно.
Q: Cобираюсь учить джаву по 2/5/20 часов в день. За сколько дней я выучу достаточно, чтобы зарабатывать фрилансом?
A: На джаве фриланса нет. Хочешь фрилансить — дуй в ПХП/раби/1С тред.
Q: Хули все книги на английском?
A: Без английского ты не нужен и можешь смело идти нахуй. Ну или в 1С-тред.
Q: Что скажете за джавараш?
Если вкатываешься с нуля, то можешь написать пару "хеллоу ворлдов" до 10 лвла. Дальше курс рассчитан на ленивых и не умеющих читать книжки людей. Количество говнокода зашкаливает, годных задачек пару штук на весь курс. В любом случае решать тебе.
>>1265034 Загоняешь символы из массива в сет. Перебираешь все символы из строки и сверяешь с теми, что лежат в сете методом exists. Если такого в сете нет, тогда загоняешь символ в какую-нибудь коллекцию (список). В конце создаешь строку из коллекции.
>>1265069 Красава, наплодил мусорных аллокаций и рад, ты же понимаешь что на каждый ебаный replaceAll ты создаешь новый регекс, котоырй компилируется, потом создается новая строка пиздец. Чем тебе мешает final? Манечка у меня такая везде final пихать.
чуваки, что я не так делаю? Хочу чтобы метод возвращал переменную str объявленную в блоке if, но идея ругается что переменная уже определена. В противном случае Cannot resolve symbol str.
>>1265166 Видимость блоковых переменных - блок. Ты из JS что ли пришёл? Обычно присвается дефолтное значение (пустая строка, null). Затем в зависимости от условий блоки меняют его. Можешь return в блоке писать также, обычно это для валидации используется.
>>1265222 >Рряя нечитаемое >ррряяя некрасиво Ну ты загляни в ApacheCommons, все то же самое. А от short'а выигрыша не будет, я думаю ты и сам знаешь почему.
Привет, друзья. Изучаю джаву некоторое время. Гуглил тут годную IDEшку. Многие сходятся на IDEA. Сам пока что пробовал все известные, кроме нее (Eclipse, NetBeans, STS). Кстати, должен заметить, что NetBeans пока мне очень хорошо заходит. Делитесь своими наблюдениями. Что пробовали и на чем остановились? В ближайшем времени накачу IDEA, вот только думаю, какую бы из двух версий поставить? Всем добра
Нужна помощь, Джава-господа. Выпустился из "шараги", как известно ни в Вузах ни в Техникумах - актуальных знаний нет. Я в основном ориентировался на Шарп, но был дебилом и не смотрел, что вакансий в своем городе на него очень мало, да и вряд ли бы чего добился бы - знания 2003 год, винформы и десктоп, который нахуй никому не нужен.
Проходил практику во время обучения, которая занималась веб-разработкой. На маленькую группу (3 человека) забили хуй, в итоге знаний кукиш. Старался время зря не терять, подучил Джаву почти что на уровне своего любимого шарпа. Что-то да выхватил из конторки где практиковался.
И вот ищу работу, проходил недавно собеседование дали тестовое задание связанное со спрингом, рестом, джисыном, jdbc и прочее. Сказали реализовать вот так и так, всякие апи и прочее. А я вообще мало что в этом понимаю. Я еще более-менее понял этот model, DAO, repository, как БД подключить, скл запросы и прочее, но мне совершенно не понятно как это все перенести на веб. Все эти рест-контроллеры и прочая мишура непонятна. Нужно сделать вебформу, все это связать, сделать красивый интерфейс. Если внутри программы я более менее понял как и что, могу там через консольку вывести и прочее, то как это сделать чтоб в браузере страницу открыл, тыкнул оно все пошло — хз.
Я чего хочу от местных гуру — помощь в нахождении нормального справочного материала. Я на всяких спринг.ио смотрел примеры, но они до жути простые и не сочетают в себе комплексных решений. Кучу видосов на ютубе от индусов разной степени понятности смотрел, но либо используют устаревшее "технологии", либо совершенно что-то не то. Пока нигде не встретил решения как это все в веб перевести. Уже думаю покупать курсы у америкосов, но они под 200 бачей, у меня денег вообще мало.
С горя думаю уйти в 1С, получить какой-то ебучий сертификат и батрачить эникейщиком либо в ТП уйти. Пиздец какой-то, я отчаиваюсь, до сдачи тестового задания три дня осталось, а спросить вообще не у кого, у меня из группы только два челика по специальности пошло, и то — 1С.
Прошу прощения за кучу текста и сумбурные изъяснения...
>>1265479 Спринг (бут) сервер "публикует" API через HTTP. Клиент (браузер) к этому API обращается через JavaScript.
Т.е. тебе нужно, чтобы твоё приложение что-то делало при получении API-запросов через HTTP - GET, POST, PUT, DELETE. Можно обойтись GET (получение данных) и POST (запись).
REST-контроллер и обрабатывает эти запросы, по ходу дела вызывая методы сервисов доступа к данным, и отдавая ответы.
Сам доступ через HTTP (веб) Спринг делает за тебя, на основе аннотаций.
Курсы покупать не надо. Надо сначала делать простые примеры с сайта спринга и из книжек.
За три дня ты ничего не сделаешь. Если нет денег - иди хоть в 1С, хоть куда. В свободное время - изучай эту тему, если интересно, и хочется чего-то большего.
Кстати, в 1С тоже есть веб-сервисы и рест-контроллеры. И идея там примерно та же, что и в Спринге, в общих чертах. Оно везде примерно одинаково.
>>1265513 Здравствуй! Большое спасибо за небольшое пояснение.
Посоветуй пожалуйста литературу. И, если не трудно (можешь конечно не отвечать) овтеть на пару вопросов, пожалуйста:
1) Нужно ли под каждую "модель" данных свой REST контроллер писать? 2) Тут, возможно пробел в теории по Java, но всё же вопрос - для чего пишется Interface прослойка в сервисах в которой объявляются пустые методы? Затем в этом же пакете пишется класс который, как я понял, расширяется используя тот самый интерфейс (который я воспринимаю как пустышку). 3) Смысл DAO интерфейса, если он идентичен Сервисному? Делал всё по ютуб примеру... 4) Как сделать "оболочку" в браузере всего этого? Я смутно припоминаю что создавались *.html'ки с .JS'ом которые как раз и связывали REST-контроллеры со всем остальным. Там, вроде бы ещё Thymeleaf замешан был. Точно помню, что присутствовал пакет templates в разделе ресурсы со всем этим содержимым, а как дальше шло дело не помню/не знаю. 5) Правильно ли я подключаю БД, используя spring-data-jdbc, через указание путей и прочего в application.properties файле?
Прошу прощения, если вопросы звучат некорректно, я сейчас по 12-15 часов безвылазно за компьютером сижу, у меня уже просто каша в голове.
>>1265522 1) Не обязательно. Зависит от приложения.
2) Да, это пробел. Интерфейс - это именно интерфейс. Чтобы клиентский код работал с ним, не задумываясь, как это реализовано. А реализацию можно менять (напр. для тестирования). Также (в спринге и не только) реализация может быть сгенерирована автоматически при выполнении программы.
3) Это в данном частном случае так. А вообще, сервис - это бизнес-логика, DAO - низкоуровневый доступ к данным.
4) Это в JS тред (если на клиенте, в браузере). Если - то лучше всего делать на Vue.js (на React сложнее и дольше). Вообще, фронтенд - это отдельная тема, нормально есть разделение труда фронтенд/бэкенд.
Если на сервере (если это не запрещено условиями) - можно использовать Spring MVC. Это в простых случаях лучше и проще, чем ебля с JS. Собственно, Thymeleaf - это оттуда. Можно даже и просто JSP.
5) Не знаю, я его не использую. Ничего плохого в этом не вижу.
Литература: allitebooks.com, scanlibs.com Поиск по слову Spring, Spring Boot Смотри рейтинг и отзывы по книгам на Amazon (искать по ISBN). На scanlibs.com уже есть ссылка Reviews для каждой книги.
>>1265546 Естественно, в случае Spring MVC рест-контроллеры не нужны, т.к. браузер получает уже готовый HTML. Т.е. нужны просто контроллеры.
Т.е. контроллер в этом случае не передаёт "сырые" данные клиенту. Данные из него используются тут же, на сервере, и сервер потом отдаёт клиенту уже готовую страницу.
Можно сделать и то и другое одновременно. Например, для браузера - MVC, для мобильных приложений - REST.
1) как красивее/короче/понятнее сделать при парсинге xml String title = el.getElementsByTagName("title").item(0).getTextContent(); при условии, что я точно знаю, что в el есть 1 единственный элемент с тегом "title"?
2) как преобразовать строку "Mon, 17 Sep 2018 20:12:38 +0300" в объект класса Date? пытаюсь: DateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z"); Date date = format.parse(dateString); но нихуя не получается, выдает ParseException: Unparseable date
Note: A try-with-resources statement can have catch and finally blocks just like an ordinary try statement. In a try-with-resources statement, any catch or finally block is run after the resources declared have been closed.
такс нужна ваша хелпа пытаюсь тут понять как java работает с JS и почему в вакансиях иногда требуют сам я только со Spring MVC дело имел сейчас попытаюсь проанализировать на примере бланка для регистрации вобщем поправляйте если что не так 1)у нас есть некоторое View JS+html+css я захожу в броузер вбиваю адрес и отправляю запрос после чего джава сервлет выдает мне форму 2) я ее заполняю жмакаю на кнопку и летит уже json в реквесте который джавка принимает и парсит json и в БД 3) потом View должна обновиться допустим написать мое имя для этого джавка должна выкинуть мне новую форму с переданными туда параметрами и вот как это делается хз это ж у нас не jsp ??? вот собсна и вопрос как это делается просто через REST ?
>>1265764 >для этого джавка должна выкинуть мне новую форму с переданными туда параметрами
Нет. Через REST ты получишь (как правило) JSON - просто данные в формате джаваскрипт. И затем уже джаваскрипт в странице должен тебе всё нарисовать.
Для простоты - предположи, что исходная страница у тебя вообще статическая, и джава сервер в её создании просто не участвует (часто так и есть).
Так что пиздуй в жс тред - учить Vue или React, лол. Можешь ещё погуглить using spring with react.js.
На самом деле, для начала можно вполне обойтись jQuery, и просто менять отдельные части страницы по результатам запросов. В реале многие "настоящие" системы так и делают, включая банки, лол.
Но, двачерам-прогрессистам это не по нраву, они считают, что jQuery не нужно.
Можно также передавать с сервера уже нарисованные куски HTML (просто как строки), и заменять ими исходные куски страницы (см. выше про jQuery). Так делают в некоторых случаях.
>>1265804 То же самое. Получаешь массив данных и рисуешь таблицу в HTML с помощью JavaScript, тем способом, каким умеешь. Почитай про Vue.js, например - рендеринг списков.
>>1265822 Они для немного разных вещей, с помошью rx можно впринципе сделать все, но это иногда оверкил. С помошью корутин тоже как бы все можно сделать, но некоторые вещи которые на rx хуяк-хуяк уже будет сложней сделать, можно со временем это изменится но пока нет, всетаки каналы не полная замена для rx.
>>1265826 > Они для немного разных вещей Ну здраститя. Для асинхронности и параллельности. Ну и чтобы функционально все было в случае с rx (хотя можно и просто для функциональных чейнов юзать).
Везде про корутины говорится, что не нужен специальный синтаксис и типа пишите в обычном коде, но ведь абсолютно нихуя не мешает через rx стартануть тред на нужном тредпуле или шедулере. А suspendable computations в итоге упирается в блокирующую не suspendable функцию и корутина заблокирована и нихуя никаких отличий в лучшую сторону от rx, где вместо старта треда и дохуя корутин просто стартует один тред.
rx хоть нормально в нонблокинг умеет и нормально в параллельщину (хотя с этим скорее к reactor).
>>1265542 Извиняюсь, имелось в виду, я в основном видел, чтобы сервера писали на Джаве ил энтерпрайзоту. Кроме энтерпрайзоты и майнкампфа что-нибудь осталось?
>>1265835 Если мне по жиденкому сходить с запросом мне не нужен rx, о если у меня цирк с конями где данные рассылаются-мержаться из разных источников по туевой хуче подписчиков с кучей наворотов мне корутины тоже не сильно помогут. Под этим я и подразумеваю разные вещи. Я вообще на ведре работаю потому вменяемо скзать что тебе там на беке будет лучше не могу.
>>1265992 Нинужно, для этого есть сосишка. >>1265982 list.stream().mapToInt(Integer::parseInt).toArray() Дальше передаешь свой массив в метод. ЗОЧЕМ БОЛЬШИЕ БУКВЫ АААА
Вкатываюсь в бек. Помогите, пожалуйста, нужно ли знать что-то из перечисленного мною ниже гавна : awt, swing, xml, fx, solid, jsp, webxml, jpa, bean validation? Спасибо
>>1265027 (OP) Посоветуйте легковесный фреймворк для внедрения зависимостей. Пробовал разобраться в dagger 2.17 по статье с хабра, но необходимый в примере класс ObjectGraph не нашелся, и я бросил. Ковыряю дальше спринг.
Помогите. Ломаю голову, что за фигня... Установил эклипс. Скачал библиотеку telegrambots-4.1-jar-with-dependencies.jar Создал новый проект TelegramBot Через свойства добавил ее в проект, теперь в Referenced libraries есть этот jar файл. Пишу import org.telegram.telegrambots.api.methods.send.SendMessage; Получаю The import org cannot be resolved Нажимал десять раз уже clean project, перезапускал эклисп, обновлял, пробовал создавать папку libs внутри проекта и копировать библиотеку туда - но итог один, не хочет импортировать. Подскажите, что я не так делаю то? Гуглил гуглил, нихрена не нашел.
>>1266844 По-новой все создал, руками тыкал-тыкал и получилось. Теперь ебусь с ошибкой Error: Could not find or load main class TelegramBot Caused by: java.lang.NoClassDefFoundError: org/telegram/telegrambots/bots/TelegramLongPollingBot
>>1266726 если религия не позволяет использовать спринг - увязывай зависимости ручками - прочувствуешь, как работает DI. В спринге и любом другом фреймворке много свистелок-перделок, которые отвлекут и запутают тебя, если ты Novichok.
>>1266746 в принципе, да. Спринг норм для di. Но спринг бут не надо советовать, имхо. Это уже не про di, а разбухшая связка кучи фреймворков с магией на стероидах. Котора по стечению обстоятельств подходит для создания микросервисов. Если человеку нужен просто di, то это оверкилл.
>>1265027 (OP) Посоветуйте книгу о создании хорошей архитектуры приложений, размером до 200 страниц, чтобы там была самая суть, необходимая для работы на первое время в типичной шараге.
>>1266812 >>1267038 >>1267059 Вы рили считаете что в такие игры будут играть? Что они наберут популярность и смогут принести вам огромную прибыль? Как бэ если хобби то окей, только вот я не видел у себя вакансий на джава-игродела, покажите такие.
>>1267103 Архитектура и типичная шарага это понятия несовместимые. Так что просто забей, понимание нормальной архитектуры принесет тебе только боль. Да и без опыта ты все-равно будешь латать дыры и поддерживать кусок легаси-говна.
>>1267138 >Да и без опыта ты все-равно будешь латать дыры и поддерживать кусок легаси-говна. Я работаю и хочу развиваться, поэтому и прошу не слишком толстую книгу об архитектуре. И я не латаю дыры, а разрабатываю приложения, которые не нравятся мне архитектурно.
Ребят почитал пару книг по Джаве и прошел курс на Юдеми. Как набраться практике в самом языке. То есть в Джава Кор? Мне уже советовали тут изучать Спринг дальше и я этим советом вне всяких сомнений воспользуюсь. Но хочется паралельно укрепить свои знания в Core. Codewars помогут в этом деле?
>>1266296 Она немного для других целей чем корутины и RxJava. Т.е. если последние это асинхронное выполнерие одного запроса, шаг за шагом. То Акка это фигачим большое количество сообщений в систему и оно как-то там внутри процессится. Акка более низкоуровневая штука, ты сам думаешь над роутингом сообщений, над размерами пулов, можешь распределять нагрузку по узлам, гибко обрабатывать ошибки и падения акторов. Но это все требует усилий со стороны разработчика.
Програмач, поясни мне за Spring. Раньше прогал только на чистой Java. А на всех вакансиях пишут ЗНАНИЕ SPRING. Но спринг огромен. С чего начать его изучать?
>>1266296 Если ты всё делаешь канонiчно (немутабельные сообщения и пр.), получаешь, к примеру, кластеризацию практически из коробки. Можно нарушать их базовые паттерны, но с умом. Если кластер не предвидится, не думаю, что стоит лупить из пушки по воробьям.
>>1266366 в пределах трёх лет будет жить и джавка, и сишарп - однозначно. Не знаю, как щас, но лет 8 назад экосистема джавы (фреймоворки, тулы...) была побогаче, при том, что в сишарп сам язык был слегка продвинутей. Последнее время мне кажется, что важнее экосистема и коммьюнити, чем красота языка. Но это холивор.
Давайте пофантазируем на тему новых фич в Джаве. Что бы вы хотели увидеть? Лично я бы хотел: 1. Template literals как в JS. var string = `This is a property of some object: ${someObject.someProperty}`. 2. Возможность использовать эмоджи в названиях классов, методов и переменныъ.
>>1265027 (OP) Это нормальная ситуация на проекте, когда тимлид заставляет всю команду прочесть спеки по Java и JVM, а затем устраивает экзамен, и всех, кто не смог ответить на его вопросы лишаются премии и в последствии попадают в список на увольнение?
>>1267738 Лол, чем занимаетесь? Я понимаю такое может быть нужно если разрабатывать свою кастомную версию жвм, или какая-то очень еба-нагруженная ситема, но нахуя это обычным макакам - вопрос. Скорее всего тимлид поехал кукухой, либо ему дали разнорядку ужать штат.
>>1267894 Ололо хайлоад проект где люди не понимают зачем нужен постраничный доступ к данным и делают findAll, а затем выплевывают все данные из базы на клиентскую сторону.
>>1267198 Лично я всегда котирую Коудворс. Но тебе конкретно нужен Hackerrank. Там мало задачек но все по теме. Пройди все задачки на нем и начинай изучать Спринг, если прошел курсы и читал книги до этого.
nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.lang.String com.locoface.central.dao.UsersRepository.findTokenByCredentials(java.lang.String,java.lang.String)
Метод:
@Query( "SELECT u.token FROM users u WHERE u.username = :uname AND u.password = :upass" ) String findTokenByCredentials( @Param("uname") String username, @Param("upass") String password);
Spring Security возвращает 401 при попытке логинаАноним22/09/18 Суб 17:28:49#152№1268344
Пытаюсь получить токен с клиента на Реакте, но вместо токена получаю ошибку 401 и следующий ответ: {"timestamp":"2018-09-22T14:23:05.743+0000","status":401,"error":"Unauthorized","message":"Unauthorized","path":"/oauth/token"}. В логах так же есть такое: 2018-09-22 20:23:05.735 DEBUG 8648 --- [nio-8080-exec-5] o.s.b.a.audit.listener.AuditListener : AuditEvent [timestamp=2018-09-22T14:23:05.735Z, principal=anonymousUser, type=AUTHORIZATION_FAILURE, data={details=org.springframework.security.web.authentication.WebAuthenticationDetails@b364: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: null, type=org.springframework.security.access.AccessDeniedException, message=Access is denied}]
Как расти дальше когда ты уже тех лид. Раньше сидел спокойно кодил себе, пробовал какие то интересные штуки в проект тащить, а теперь ни на что времени не хватает, постоянно заёбывают с вопросами, митингами и прочей хуйней, только и сидишь отвечаешь на них и ревью делаешь.
>>1268344 Проблема была в том, что я неправильно записывал данные в тело запроса. Данные надо было передавать в виде строки типа username=username&password=password, а у меня передавался JSON. Установил библиотеку query-string, написал data: queryString.stringify({ grant_type: 'password', username: username, password: password, client_id: 'web_client', client_secret: 'secret' }) И теперь всё заработало.
Продублирую >>1267393 Анон, есть два стула: на одном JavaEE + Spring на другом - C# + ASP.NET Какой сам выберешь, какой собственно имеет смысл выбрать в 2018?
Аноны, в общем вопросы такие: 1. Что лучше почитать Хортсманна или Шилдта? (на инглише) Что-то не могу 2ую часть Хортсманна найти, а вот Шилдта сразу нашел. 2. В чем отличие платной идеи, от бесплатной? Я по чарту вообще не понял зачем мне платную брать. 3. Джаву хочу изучать, чтобы потихоньку вкатываться в автотестирование, а то боюсь через 3-5 лет без работы останусь вообще. (Нау овер 6 йеарс оф qa monkey экспериенс). Может будут какие-нибудь советы по этому поводу? Планирую прочитать какую-нить книгу, а потом садиться решать задачки из этого списка, так "по верхам" https://eax.me/programming-language-learning/ Потом уже изучать селениумы и пр.
Сап, сеньёры, помогите с заданием. Нужно на спринге написать простенькую программу с использованием MySQL. Чтобы был GUI с двумя функциями: добавить в базу строку и вывести все строки из базы. В базе данных хранится только индекс и строка, также и выводится. При выводе ещё чтобы был поиск по строкам. Плиз, прошу, сам не могу. Отстегну касарь с первой зарплаты. Кидай на почту. [email protected]
>>1268830 Знакомое тестовое Написать программу, в которой будет две функции: добавить в БД строку и вывести все строки на экран. БД - одна таблица с двумя колонками: id и name. Соответственно будет два графических интерфейса: - Интерфейс добавления строки: поле ввода имени и кнопка Добавить. - Интерфейс вывода строк на экран - таблица с двумя колонкам: Ид и Имя. Над таблицей должен присутствовать фильтр для поиска в таблице. В качестве БД использовать MySQL. В качестве фреймворков - желательно (но не обязательно) spring. Для доступа к БД - jdbc (spring-jdbc). По графическим интерфейсам: желательно, чтобы интерфейсы были сделаны с испоьзованием паттерна MVC (spring-mvc приветствуется).
Решил вкатиться в Java с нуля, наворачиваю пикрил. Читаешь и порой нихуя не понятно, начинаешь делать задачки и понимаешь что вообще нихуя не понятно. Это нормально? Вроде не тупой, но это не точно. Алсо, подумываю перкатиться в JS\PHP из-за низкого порога вхождения.
Набрал код из примеров (обязательно ручками а не копипастой, пусть пальцы привыкают)- запустил, проверил результат, изменил пару переменных, посмотрел результат.
Имхо начинать понимать погромирование нужно с сишки обычной, без крестов, и компилить в консоле под линупс. Нужно понимать что такое указатели и как работать с памятью даже если ты будешь потом веб макакой. Типы переменных, массивы, указатели, работа с файлами и строками
>>1269038 Извини, но если ты думаешь, что для того, чтобы доказать, что ты достоин получить работу, знаний одной Джавы часто будет недостаточно) Нужно ещё знать ЖС на уровне + один из трёх популярных фреймворков как минимум))
>>1269043 >Имхо начинать понимать погромирование нужно с сишки обычной, без крестов, и компилить в консоле под линупс. А если я уже жаба кор изучил и приступаю к изучения спринга то стоит заново начинать сишку учить или ну его нах.
>>1269408 Скорее всего под утечкой памяти в данном контексте подразумевается несвоевременное освобождение памяти - зря занятая память как например в коллекции, когда элемент а уже нет, но он все равно остается в коллекции и потмоу сборщиком не убирается. Или незакрытый поток/соединение/курсор/файловый дескриптор.
>>1269724 Нет, это ты в своем легаси тырпрайзе закопался. Современные разработчики могут и в задний конец (котлин, реактивщина, rx, reactor, корутины, неблокирующее api, nosql и т.д.), и в передний (простая дрисня на вью жс или реакте, на котлин жс в крайнем случае), и в микросервисы, и в девопс, и даже в ML подсекают и могут написать модель решения задачи двух стульев на коленке. И этого никого не делает ни фронтендером, ни фулстаком. >>1269725 Вали нахуй из сбертеха, делать там нехуй. >>1269734 Ошибаешься. Описываемое явление это как раз посттырпрайзное развитие разработчиков.
Оракл убивает жавку?Аноним25/09/18 Втр 11:04:53#197№1269875
Прочитал, что 11 версия оказываешься будет LTS только если ты заплатишь ораклу бешеные деньги за лицензию, а все остальные будут сосать хуй с 6-месячной поддержкой. Плюс многие крупные корпорации собираются сами поддерживать версию 1.8, а значит восьмая жава ещё очень долго будет умирать.
Не повторит ли жава с двумя несовместимыми версиями (1.8/9+) путь питона с его версиями 2.X/3.X?
>>1269887 Это понятно. Меня волнует (1) качество этих VM и (2) разделение сообщества на java 1.8/9+, которое наблюдается уже сейчас когда некоторые библиотеки не работают или плохо работают на новых джавах из-за жигсо. Я-то думал, что все ждут выхода LTS и хотят сразу мигрировать на 11 версию, а оказывается бесплатные LTS всё, а значит и миграции возможно всё.
>>1269889 Время всё расставит по местам. 1.8 медленно вымрет, а библиотеки на 10-ку перепишут. На 11-ю естественно перекатят только единицы. Может машину ещё лучше кто напишет, хуй знает.
>>1269902 > а библиотеки на 10-ку перепишут. Шта? 10 уже сегодня протухает и её никто поддерживать не будет, потому что это не LTS. Кто-то там кукарекал, что будет поддерживать ещё и 9-ю версию, но про 10 вообще никто ничего не говорил.
Каждый раз когда я ищу ответ на вопрос в гугле, я сталкиваюсь с тем что на заданный вопрос ответили как-то не прямо, не касаясь того что нужно лично мне, как будто те кто отвечает сами нихера не знают толком. А тот кто спрашивал такой "ок спасибо"
Недавно всплыла новость что Виталик предлагал рассмотреть какой-то нонейм алгоритм zk-SNARKS. Я нашёл только статью, её пересказы и переводы, за авторством явно стоит какая-то Zcash, которая себя вообще позиционирует чуть ли не следующим битком. В статье просто описывается на пальцах ассимитричное шифрование. Что, опять наебалово для хомячков?
>>1269979 Каков вопрос, таков и ответ. Тем более учитывая, что простые вещи в большинстве случаев подробно разобраны в доках и туториалах. А в случае сложных вопросов часто оказывается, что вопрощающие хотят странного, опять же зачастую из-за недостаточного знания основ.
>>1269995 В основе ноль и единица. А как только пытаешься прочитать очередной говноучебник "с которого все начинали" то сразу натыкаешься на какие-то прыжки от элементарного до сложного, и все вопросы рассматриваются на одном-двух примерах, оторванных от всего контекста программы - соответственно подводные камни в связке с примером не рассматриваются вовсе.
Как правильно указывать путь до нужного ресурса? Чтобы он и после развертывания нормально читался. Нужно ли делать строки-константы, в которых прописан путь? вот, например, хочу я считать пропертис properties.load(new FileInputStream( что здесь правильно написать ?)); Просто на первый взгляд мне кажется пиздец запутанным то, что есть всякие методы вроде getRealPath(), getResource() и т д. тупых вопросов по жабе нить иди
>>1270080 Довольно быстро, мне кажется, если тебя интересует за сколько ты запомнишь в каких пакетах находятся стримы, или где коллекции и какие они. Но в чём фишка? Какая разница?
>>1269903 >Шта? 10 уже сегодня протухает и её никто поддерживать не будет, потому что это не LTS. Кто-то там кукарекал, что будет поддерживать ещё и 9-ю версию, но про 10 вообще никто ничего не говорил. Какая разница, если для коммерческих организаций джава будет платной?
Это пиздос вообще. Скриньте, что джава спустится с орены тиобе и соснет хуйца.
>>1270245 >Какая разница, если для коммерческих организаций джава будет платной? Ну охуеть просто, щас если мелкомягкие подскочат кабанчиком и запилят полностью совместимый .НЕТ для линупса, тогда ж джава будет ВСЁ
>>1270245 > Какая разница, если для коммерческих организаций джава будет платной? Ты наркоман? Платной она будет если ты захочешь получать обновления от оракла больше чем стандартный 6-месячный срок. Т.е. стоит выбор: либо обновляй жяву раз в пол0года, либо плоти.
Впрочем, будут VM от других разрабов (RedHat, Azul и прочие), основанные на openjdk с бекпортами важных багфиксов.
>>1270186 месяца джва постоянного написания кода со всякими коллекциями, утилитарными классами из java.lang, стримами, каким-нибудь говном из пакета concurrency и будешь шарить в том что где и как находится. Но ЗАЧЕМ?
Где почитать про деревья и их реализацию? Интересуют примеры на Джаве ..
Удивился, что, например в таком небезызвестном языке как Джава, если вам понадобится префиксное дерево, для хранения списка имейлов, то вам придется всё это писать под себя, самописно.
>>1270294 Лолка, ты б сперва узнал что такое префиксное дерево. >>1270291 Его нет в стандартной либе т.к. нахуй оно не нужно для обычных задач. Зачем тебе оно для хранения имейлов? Чем структуры проще не устраивают?
>>1270301 >Лолка, ты б сперва узнал что такое префиксное дерево. Ну я отвечал на "про деревья и их реализацию". Префиксному как мне кажется не место в стандартной либе.
>>1270301 >Зачем тебе оно для хранения имейлов? Для более быстрой навигации и поиска, этоя как пример привел, а вообще нужно изучить эту тему Префиксное дерево же хорошо, когда есть набор строк и среди них нужно найти нужные очень быстро
такс, гаес нужны советы не по джаве но экспертов вобщем есть задача скоммуниздить базу данных с резюме у hh ru есть вариант купить там прем аккаунт какой-то и дадут доступ на 24 часа НО только на мой мухосранск а мне надо по всей державе так что ето не вариант
на худой конец смогу просто довольствоваться колвом вакансий там показывают но прям ХОЧЕТСЯ всю БД
>>1270311 Мне кажется что тебе нужно смотреть в сторону готовых БД, если речь идёт об ынтерпрайзе. Засовывание кучу емейлов в память, чтоб потом среди них что-то очень быстро искать нужно разве что для каких-нибудь научных расчётов.
>>1270505 >>1270506 >>1270507 Пиздец вы бесполезные, таки получилось загуглить, значит если кодить под ios можно юзать гото, под винду можно, то под андроид приходится сосать писос и переделывать код? Какой же убогий язык.
>>1270510 Ты в курсе, что твои неготофункции на ассемблере выполняют по тысяче гото, ебанутый? >>1270511 По-твоему это норма, что я не могу гото в андроид студио?
>>1270512 > Ты в курсе, что твои неготофункции на ассемблере выполняют по тысяче гото, ебанутый? Вся суть языка высокого уровня - это абстрагировать эти (без)условные переходи более удобными конструкциями. > По-твоему это норма, что я не могу гото в андроид студио? В жаве вообще нет гото как такового (хотя слово goto и зарезервировано). В жаве вместо гото можно использовать break с метками. Вот так:
Где-то здесь if(f.func(vals, v)) count++; вместо f.func() в майне подставляется/вызывается boolean sameTemp(HighTemp ht2) { return hTemp == ht2.hTemp; }, где hTemp - переменная вызывающего класса(объекта), ht2.hTemp - очевидно переменная параметра.
Как программа решает вот здесь f.func(vals, v), какой объект класса vals или v вызывающий, а какой из них параметр, если в реализируемом интерфейсе это просто 2 параметра, никак между собой не связанные?
Неясно, как определяется в методе интерфейса boolean func(T v1, T v2), какой из параметров в методе sameTemp будет вызывающим, а какой - параметром. Ведь ссылка HighTemp::sameTemp просто передает код. А HighTemp это класс, а не объект.
>>1270525 Это магия InvokeDynamic. Он используется в том числе для лямбд, а в данном случае так сделано именно для поддержки лямбд старыми АПИ.
Представь, есть интерфейс
interface Comparator<T> { int compare(T a, T b); // -1 - a меньше b, 0 - а равно b, 1 - a больше b }
и есть функция
class Array<T> { // ... void sort(Comparator<T> cmp) { // Где-то в коде есть такая строка: // int result = cmp.compare(...); } }
раньше (до восьмой жавы) приходилось создавать классы, наследуемые от Comparator и вызов выглядел как-то так (в данном примере используется анонимный класс:
arr.sort(new Comparator<Object>() { @Override public int compare(Object a, Object b) { return 0; } });
Но в восьмой жаве интерфейсы с одной функцией внутри стали особенными и вместо них стало возможным использовать лямбды:
arr.sort((a, b) -> 0);
Что он видит? Определение лямбды совпадает с определением единственной функции в интерфейсе Comparator и потому можно при вызове cmp.compare внутри sort вызывать саму лямбду (этот вызов и совершает InvokeDynamic).
Ссылки на методы это по сути те же лямбды. В твоём коде:
HighTemp::sameTemp
эквивалентно
(a, b) -> a.sameTemp(b)
потому что это метод инстанса класса, а значит сам инстанс всегда будет первым аргументом (ссылки на статические методы и конструктор, очевидно, инстанса не содержат и их аргументы эквивалентны аргументам оригинальной функции). Только самой лямбды нет и метод вызывается напрямую при помощи InvokeDynamic.
>>1270207 Убили жабу своей новой платной поддержкой. Надо перекатываться с этого говна на нормальные развивающиеся языки. Господи, лучше бы я отдал 6 лет своей жизни простому js с его новыми примочками и фреймворками, чем сраной java.
>>1270571 Сейчас начал развиваться node, который работает на движке v8 от гугл, а те кучу времени на него убили, плюс завезли многопоточность недавно. Появилось очень много интерпретируемых языков и фреймворков. Сейчас на сраном js уже десктопные апы пишут и бекэнд держат. Вот скоро гугл выпустит замену андройда, которая пошлет жабу на 3 буквы, хотя надеюсь, что загнется как и их прошлые попытки сделать нормальную ос.
>>1270573 Придется легасить древнее говно либо пытаться его переводить на новую баганутую jvm, попутно выступая бесплатным бетатестером. Это может привести к тому, что язык начнет активно развиваться и обновляться, но больше шансов, что новые проекты будут избегать джаву и она станет cobol 2.0. Ну лет 10 минимум еще говнокод разгребать придется.
>>1270574 > плюс завезли многопоточность недавно Воркеры - это очень неполноценная многопоточность. Например передача строк всегда копирует их (перемещать можно только типизированные массивы) и много чего подобного. И да, поддержки там как нет, так и нету. Ты видимо не до конца понимаешь значение слова "поддержка". >>1270573 Значит, что с 11 версии у тебя есть три стула 1. Обновляться каждые пол-года. 2. Платить ораклу 25$ за процесс (в смылсе запущенный процесс жавы) и получать очень длительную поддержку. 3. Перекатываться к другим мейнтейнерам жавы.
По сути оракл просто перестанет оказывать бесплатную поддержку опенсорснутой жаве на более чем пол-года.
Алсо, восьмая жава протухает уже в январе следующего года. Такие дела.
>>1270245 А не похуй ли? Богатые и так привыкли уже платить за нахуй ненужные Weblogic или WAS. У бедных как правило более быстрый релиз-цикл. Остальным на OpenJDK будет норм. Знаю проекты, которые на 5(пятой!!) джаве до сих пор крутится - всем похуй. И будет и дальше похуй пока либо само не развалится, либо не похекают.
Что подразумевается под переходом на новую версию джавы? Например, кто-то еще не слез с 7 - это значит, что не переписал код некоего проекта, используя новые фичи?
>>1270683 Только не новые фичи, а новые баги (если не считать багофичу под названием жигсо). И под "кто-то" чаще всего подразумевается не изготовитель по, а его потребитель.
> Download Oracle JDK (because that is what you've always done, and it is what the web-search tells you) > Use it in production (because you didn't realise the license changed) > Get a nasty phone call from Oracle's license enforcement teams demanding lots of money
>>1270577 >Алсо, восьмая жава протухает уже в январе следующего года. Такие дела. Нет, ред хат ее (опенждк) будет поддерживать еще 5 лет.
Придумал такую штуку. Допустим, в приложении используется один из нескольких разных бинов, которые реализуют один интерфейс, какой бин используется, можно выбрать. Я хочу добавить новый бин, нажимаю кнопочку "добавить", выбираю файл .java/.class/.txt, он конпелируется, если надо, и добавляется в список доступных бинов. Например, выбор одного из нескольких разных алгоритмов ИИ. Насколько это ненужно/невозможно/бесполезно/велосипед?
>>1271124 Это не то. Это для компиляции жава-кода в байт-код, а тебе нужен динамический загрузчик модулей. В JVM такого нет, так что тебе придётся писать свой собственный класслоадер, попутно долблясь со внутренностями JVM в срачельничек.
Ну или как вариант, в java 9+ можно добавлять модули в специальный файл (или командную строку для запуска) и после перезапуска JVM с основной программой она их подхватит и твой код получит к ним доступ.
>>1271128 Ага, только в статье не рассказывается про самое интересное: загрузку модуля и интеграцию его в уже работающую VM. Там подразумавается, что модуль уже доступен и к нему можно спокойно обращаться.
>>1271134 Проблема в том, что в той статье ничего не загружается. Там подразумевается, что все классы уже доступны рантайму, а сам класслоадер просто может динамически выбрать нужный из имеющихся. Тебе же надо сами эти классы загрузить из файла и сделать их доступными рантайму.
Лучше замути RPC и для каждого модуля запускай отдельную JVM. ТАк будет проще, хотя и потребуется больше памяти.
Добрый вечер, многоуважаемые аноны. Не уверен что выбрал лучший тред, но всё же. Работаю с Apache Kafka Streams, хочу создать окно размером 5 минут, которое было бы синхронизировано с "круглым" временем на часах, т.е 5 минут начинаются не тогда, когда я запускаю программу, а в ближайшую следующую пятиминутку, т.е если я запускаю в 12:46, программа ждёт до 12:50 и только тогда создаёт пятиминутное окно 12:50-12:55, ну и дальше уже по такой же схеме, можно ли это создать без костылей в виде Thread.sleep как я понимаю при таком подходе kafka может немного затупить и потерять синхронизацию и после этого сдвиг будет накапливаться или я обречён?
>>1270512 >твои неготофункции на ассемблере выполняют по тысяче гото Вот именно. Умные мужики писали высокоуровневые языки как раз для того, чтобы никто и никогда не ебался с этими goto.
Джава-макаки, как вы можете писать на этом говно-языке когда существует божественный С# и .NET Core? каждый раз когда после шарпа приходится трогать джаву, кажется что меня кастрировали нахуй. Приходится писать тонны говно-бойлерплейта.
>>1271297 Я пишу на котлин. Он даже удобнее C# (особенно версия 1.3 с корутинами). Иногда раздражают только неполноценные генерики, но вроде как обещают исправить в project valhalla.
>>1271555 >>1271556 А я-то думал, что это какая-то суперполезная и инновационная йоба из функционального программирования, но нет. Спасибо, что объяснил.
Задача: необходимо чтобы проперти ридер перехватывал два исключения: 1) если файла пропертей нет, то выбрасывает эксепшн -> check 2) если нужной пары ключ/значение не оказалось в файле пропертей (переменная result), то выбрасывается IOException + логгируется в консоли (на уровне error) вот со вторым пунктом не задалось. У меня при ненахождении ключа/значения выбрасывается NullPointerException. Что я не так делаю и вообще в правильном ли направлении иду?
>>1271171 OpenJDK не поддерживается ораклом, если грубо.
>>1271297 >как вы можете писать на говне, когда существует моча? каждый раз когда после мочи приходится трогать говно меня кастрируют
>>1271552 Все так, но net profit появляется в сочетании со streams. Можно писать код почти как в скале\кложе, без лапши. Это ненастоящие лямбды, потому что введение Ъ функциональных типов поломало бы обратную совместимость, но good enough для простых вещей.
>>1271577 Откуда у тебя там NPE? Ни один метод там его не кидает (кроме class loader, но у тебя же это исключение не всегда появляется, да?) Плюс где ты сам кидаешь IOException? Ты просто получаешь проперти в result и все, в блоке if нет проверки result на null, после которой оно и должно кидаться по твоему описанию.
>>1271652 Это не просто грубо, это неправильно: > OpenJDK не поддерживается ораклом Звуыит как будто оракл полностью закрыл жаву и теперь распространяет её только на платной основе.
>>1268715 Я бы рекомендовал джава раш для начала. Хотя бы кор пройти. Попутно изучаешь системы контроля версий (git/svn), CI (maven/gradle + jenkins), и собственно автотестинг. Тестнг + селениум + индус с ютуба = профит.
Спасибо за ответы, все варики -- годнота. Проблема только в том что синхронизация как оказалось есть из коробки, не для минут правда, а для секунд, но для моего применения тоже подходит.
>>1271595 NPE выбрасывается стабильно, проперти получает метод openAnySite() который находится в другом классе
public void openAnySite() throws IOException { open(propertyReader.getPropValues("url")); }
>Ты просто получаешь проперти в result и все, в блоке if нет проверки result на null была такая мысль, но я туплю и не знаю как туда засунуть IOException. Пикрелейтед пример, но я опять не то что-то делаю
>>1271598 >И почему не используешь try with resources? Ты про getResourceAsStream? геттер обернут в try блок
>>1271692 Ты зачем InputStream вынес за пределы метода? Да и result тоже. Чтоб веселее было при многопоточном использовании? > Ты про getResourceAsStream? геттер обернут в try блок AutoCloseable и Closeable надо оборачивать в специальный try-блок (если версия жавы посзовляет). Т.е. пишешь String result = ""; String propFileName = "..."; try (InputStream input = getClass()...) { if (input == null) { throw ... } else { Properties prop = new Properties(); ... } } catch (Exception e) { ... }
и try сам правильно закрывает input если тот не равен null.
> NPE выбрасывается стабильно А откуда выбрасывается из этого метода или дальше? Если проблема в том, что возвращаемое значение равно null, то просто в конец перед return добавь что-то вроде
if (result == null) { LOG.error("Property {} not found", property); throw new IOException("..."); } return result
>>1270698 >You may not: use the Programs for any data processing or any commercial, production, or internal business purposes other than developing, testing, prototyping, and demonstrating your Application
Спасибо анон, завелось! Однако остался один не понятный момент InputStream input вынес в метод, но за предел try и присвоил ей значение null, причина по которой я так сделал - если объявить в блоке try, то область видимости будет try блок, в таком случае finally блок не понимает переменную input Корректен ли такой подход? Или целесообразней будет отказаться от блока finally, объявить input в try и закрыть поток в первом if, то есть: try { InputStream input = getClass().getClassLoader().getResourceAsStream(propFileName);
if (input == null){ throw new FileNotFoundException("property file '" + propFileName + "' not found"); input.close(); } else if (input != null){...}
> if (input == null){ > throw new FileNotFoundException("property file '" + propFileName + "' not found"); > input.close(); > } else if (input != null){...} Этот код настолько ебанут, что я даже не знаю с чего начать. Ладно. 1) input.close() тут никогда не вызовется, поскольку throw завершит выполнение этого ветвления. 2) Вызов input.close() выдаст тебе NPE, поскольку input равен null. 3) Зачем else if? Кроме == null и != null у тебя там может быть и третье состояние?
> в таком случае finally блок не понимает переменную input Тебе уже десять раз сказали. Используй try-with-resources (погугли что это такое). Он сам закроет input и никакие finally-блоки не будут нужны.
>>1271791 >1) input.close() тут никогда не вызовется, поскольку throw завершит выполнение этого ветвления. Он же в файналли, так что вызовется, хоть и кинет NPE.
>>1271798 1) String propFileName можно заменить на final String propFileName, чтоб указать что это константа. Ну и можно вынести её за пределы метода и даже сделать статической. 2) else-блок не нужен. throw прервёт выполнение программы в этом месте. Обычно пишут так: if (input == null) { throw new ... } Properties prop = ... 3) Переменную result можно переместить внутрь try в виде String result = prop.getProperty(property), а в конце просто возвращать "". 4) LOG.error выглядит странно. Либо убери второй аргумент, либо погугли как происходить формат строки в твоём фреймворке для логирования и используй его вместо конкатенации.
>>1271775 >сидят на опенждк ибо ибо больше вариантов и нет, лол Ну охуеть, zing, azul, redhat, ibm, exclesior вообще альтернатив нет, если хочешь платить вот тебе куча вендоров, если не хочешь бери базовый пакет.
>>1271817 LTS поддержка от производителя жавы (остальные могут максимум бекпортировать исправление багов из новых версий) и некоторые фичи для интеграции с другими платными оракловскими сервисами.
>>1272032 Ты только в терминах не путайся, окда? Искаробки всё там есть, а что ты хочешь называется свободные функции, и да в жаве их нет. Есть только классы и функции внутри них, потому классы и надо импортировать и (если функция не статическая) делать инстанс.
>>1272044 А чём проблема сделать импорт? Это часть стандартной библиотеки жавы, а под "импортом" в этом случае подразумевается строка кода: import java.util.Scanner;
>>1272371 Что значит "с return не работает". Ты уж реши как ошибку будешь выкидывать: через throw (тогда return тут вообще не при чём) и с помощью специальной монады (тогда return возвращает и ошибку и результат).
Посоны, писал я значит год свое поделие на 8 жаве с формочками на няшном (но жрущем как пиздос память) jfx8 и тут увидел новость о выходе jdk 11 и jfx 11, которые дохуя LTS. Сначала у меня бомбануло, что они jfx из jre вынесли. Потом у меня бомбануло, что нигде блядь под шиндошс jre 11 отдельным бинарником нету - поставляй клиентам сраную openjdk в архиве, чтобы они сами ебались с прописыванием JAVA_HOME и прочей хуйней. И похуй, что им jdk не нужно, нужно jre - жри что дают, пидор! Потом пришлось ебаться с jigsaw - оказывается оракловские мудозвоны его в начиная с java 9 въебали и половина старых сторонних библиотек сразу нахуй сходила, т.к. юзала приватное api из com.sun.*. Спасибо блядь, раньше я мог поставлять один .jar и у всех все работало, а теперь, сука, мне надо либо какой-то скрипт для запуска писать под каждую ос, либо просить клиентов запускать его из соснольки с километровыми --add-exports --add-exports --add-exports --add-exports --add-exports --add-exports --add-exports --add-exports, охуенно просто. Но больше всего меня бомбануло, когда отданная голожопому сообществу jfx, которая теперь openjfx, тоже без ебли с ключами не работает, т.к. зависит от com.sun.javafx. Пидоры ебаные, у вас же швабодная реализация, какого хера там ссылки на закрытый api, который после jigsaw подключается через костыли, где своя реализация, блядь?
>>1272528 Тебе не похуй? Вряд ли у тебя возникли бы проблемы требующие официальной поддержкой. Если твоим софтом пользуется кто-то кроме тебя - мигрируй.
>>1272526 Да я бы вообще на kotlin перекатился, да только он также к jvm прихуярен и проблемы с ним такие же. Безусловно я говноед, но как язык мне жава очень нравится, даже по сравнению с шарпоглотством и тем более крестами.
>>1272512 У меня что-то такое уже есть, работа с PostgreSQL. И со спрингом тоже что-то напишу. Только над игрой можно поаутировать месяц в свободное время.
>>1272883 Считывать откуда? И что значит построчно? Весь html (в виде разметки) может быть одной строкой, тогда как при отображении там может быть куча строк.
>>1272887 Вообщем я сам пытаюсь написать простенький сервер у меня всё почти получается.Только у меня текст в браузер который выводится при запросе просто в коде написан руками, я же хочу читать его с файла html, который лежит в корневой папке проекта.Какими методами это делается
>>1272939 Ах, в этом плане. Тогда ты видимо хочешь потоки. Отерываешь файл при помощи FileInputStream и этот InputStream уже считываешь по кусочкам и отдаёшь клиенту.
Программаны выручайте. Короче такой кейс. Есть простой tcp сервак и клиент. Вот только надо сделать такую тему: Надо реверснуть, т.е. сервер инициирует запрос клиенту. Реально ли такое провернуть без использования вебсокетов? Пока единственненная идея - прикостылить инициацию сообщения ответом на хартбиты от клиента. Заранее спасибо.
>>1273320 Так вебсокеты поверх tcp и работают. В чём проблема не разрывать подключение? Или ты про http? В http2 тоже есть возможность держать подключение сколько угодно долго и посылать данные в обе стороны.
>>1265027 (OP) Я неофи в ойти, я не понимаю что пишут на жаве, ну кроме ведра, с чем вы работаете? Напишите пожалуйста, над чем вы работали за последние пару месяцев?
Пацаны, не бейте лучше обоссыте. В спринге вообще слабо шарю. Короче в проекте есть два main() класса. Работают они в целом паралельно, но надо им впаять чтобы они с одной ConcurrentHashMap работали. Как понимаю в спринге это вообще как нехуй, регаешь бин и хоть где его доставай. А что мне с main делать? В одной связке два мейна можно запустить? Или их в Runnable перепаивать и со спринга run() вызывать обоих?
>>1273596 Применяется, но мало где. Мы к нашим микросервисам доки пишем, но их никто не читает, да и диаграммы там довольно простые. Поэтому мы пишем их на отъебись.
Короче, надо просто быть более-менее с этой хуйнёй знакомым, на всю оставшуюся жизнь этого будет достаточно. Учить точно нахуй не надо.
>>1273856 Ты понимаешь что разные мэйны это разные процессы? Как ты с одним объектов будешь из разных процессов работать лол. Прикрути какой-нибудь rabbit-mq или kakafkу и через них связывай, тогда и конкаренси не потребуется.
>>1273867 Черт, я уже 200 страниц по нему осилил. Ну лан, хоть для собственного удобства буду использовать, а то в голове тяжко все взаимосвязи держать.
>>1273900 Не, впизду кафку вот совсем. Ладно,спс, просто почему то думал что spring может такие чудеса заебенить. Но увы увы, придется перепиливать mainы в runnabble, и запускать с одного мейна. целых 10 минут работы
Аноны, подумываю свалить с галеры и за полгода (задрачивая дома) в джаве прокачаться до уровня написания автотестов. Какие перспективы? Как думаете это реально?
>>1274139 Ты про их шаблоны? Уже читаю, но это слишком углубленные знания, как мне кажется. Во-первых, потому, что не везде применяются, во-вторых, не зря, наверно, шаблоны не советуют изучать новичкам.
Короче, в swing есть JComponent, в котором можно рисовать фигню. У меня есть отрисованный Ellipse2D, я вчера захотел сделать что-то типо игры, чтобы стрелками он двигался. Но я не могу в KeyListener'е передать изменение координаты x,y в метод PaintComponent в JComponent. Как это реализовать? Могу код скинуть, но он говно.
>>1272499 > Потом у меня бомбануло, что нигде блядь под шиндошс jre 11 отдельным бинарником нету - поставляй клиентам сраную openjdk в архиве Так сделай свой собственный JRE. Начиная с жавы9 в поставке идёт jlink, который и используется для создания jre с необходимыми модулями. Получается размером меньше чем полный jre, хотя зависит от количества используемых модулей. Вот у меня для жава-программы получился jre размером в 28.5Мб.
>>1274399 Из KeyListenera нельзя вызвать переменные x y, расположенные в методе paintComponents. Пробовал даже экземпляр класса там и через него вызвать, но не высвечивается.
>>1274585 А, точно! Завтра попробую. Сегодня прост писал васянопакет для кастомизации свингового интерфейса, ну чтоб там например легко look and feel'ы менять, вот в шараге все офигеют.
>>1274105 Не знаю что там пол года учить, мне кажется если знаешь джаву, то перекатиться в автотесты это пару вечеров за кофе повникать в селениум и прочую хуйню
>>1273873 Ну да, я понимаю. Потихонку подтягиваю инглиш, но мне всегда языки сложно давались. Просто со Spring`ом есть вариант в этом месяце уже на джуна устроиться, а если я буду сейчас в оригинале читать, то потрачу уйму времени. В итоге нашёл "Spring для профессионалов" на русском, вроде норм/
>>1275210 Ну вообще жава компилируется в байт-код, который будет работать на любой операционке с совместимой виртуальной машиной. Да и причём тут заёбывание, если во всех крупных организация на разные платформы компилит (и тестирует) специальный билд-сервер, а ты работаешь исключительно на своей системе.
>>1275729 > ТАК, чтобы на другом ПК ничего не пришлось настраивать? Что значит "ничего не пришлось настраивать"?
Для создания самодостаточного дистрибутива (т.е. который будет работать вообще без JRE) можно использовать jlink, но для этого все библиотеки проекта должны нормально работать с модулями жигсо (а работают далеко не все из-за требований в отсутствии одинаковых пакетов в разных модулях). Либо вместе с программой поставлять свою собственную jre (опять таки можно создать при помощи jlink) с нужными модулями стандартной библиотеки. Лаунчер тоже можно сделать при помощи jlink и он сразу запустит нужный жарник как будто это родная для системы программа.
Всё сказанное выше подходит для java 9+. С восьмёркой придётся распространять полный jre.
>>1275733 Я знаю про jlink. Я говорю именно про проект IDEA. Чтобы другой разработчик мог форкнуть проект и билдить его с jdk, поставляемой с самим проектом. Сейчас для этого нужно добавлять эту JDK в саму IDE.
>>1275734 Во всех проектах что я видел делают проще: для распространённых действий делают bat/bash скрипты которые ставят все нужные переменные среды, а потом запускают нужные таски градла. А в README.md в корне проекта уже пишешь что нужно установить определённую версию jdk для нормальной работы в idea.
Аноны, помогите войтивайти. Как искать первую работу в эрэфии? Более-менее знаю стек, кор знаю вполне неплохо, однако не могу попасть даже на один собес, ибо все мои отклики на hh тупо игнорятся, а джуновских вакансий по питеру и так штук 5. Что делать? Как набираться опыта хождения по собесам и узнавать пробелы в знаниях? Слышал одну историю вката, как парень просто понадобавлял hrок своего города в линкедин и проспамил им лички, мол возьмите ждуна, и его позвали на собес. Это вообще реально?
Здравствуй, джавач. Расскажите плз, зачем нужны абстрактные классы? Про абстрактные методы я ещё понял - если нужно что-бы метод, при наследовании был обязательно переопределён, то его нужно сделать абстрактным. А про абстрактные классы я чёт не понял.
Видел простой пример на животных, мол, есть абстрактный класс "животное" и у него есть методы, общие для всех животных, например "голос". Он абстрактный, по скольку в реальности встретить общее "животное" невозможно. У него есть наследники, обычные классы - кот, собака, корова. И у каждого наследника метод "голос" определён по своему. Но ведь можно сделать "животное" не абстрактным классом, а обычным и создать кота, собаку и т.д. как объект класса животное, у которых также можно будет переопределить метод "голос". Так какой смысл в абстрактных классах? Экономия памяти? Увеличение производительности?
Как правильно использовать DTO? Допустим, имея класс UserEntity, мне нужно реализовать rest api с функциями логина, регистрации и получения данных юзера. Какой подход лучше? 1. Использовать entity напрямую как дто, причем в классе будет каша из аннотаций (jpa, валидация, @jsonignore и т.д.). 2. Использовать entity + разные дто для разных методов (3-4 класса с почти одинаковыми полями). 3. Использовать entity + один дто с аннотациями @jsonview и т.п., исключая ненужные поля.
>>1276247 т.е. применение некоторых классов как абстрактных обусловлено тем, что в общем виде этот класс не применяется,а только в виде конкретного объекта?
>>1276260 Но тогда ничего не мешает создать тебе и экземпляр родительского класса. >>1276262 Да. Тут ещё главное понимать, где использовать интерфейс, а где абстрактный класс.
>>1265355 >В пиндосии почему-то предпочитают эклипс Потому что бесплатный. Сам столкнулся с этой проблемой, когда заказчик из штатов пришел. Мол зачем платить бабло за ide, когда есть бесплатная. Если у тебя есть купленная идея, то возражений у них нету.
>>1275507 Ясен хуй с явы. Если хочешь стать успешным синьором-помидором 300кк/нсек, то яву нужно знать лучше родного языка, ибо все потроха ведроида так или иначе на ней завязаны. Котлин позиционируется скорее как дополнение явы, или переосмысление её концептов с учётом текущей ситуации в мире ИТ. Без явы сам по себе котлин нинужон.
>>1276524 Иди запусти идею и попей чайку пока она 30 минут индексирует твой каждый пук. А и не забудь что-то изменить на жёском диске и получить инвалидацию кеша с полным реиндексом в лучшем случае. В хучшем - потерять свои изменения.
>>1276257 Ну хуй знает. Если логика уровня передавать/не передавать пароль, то можно не плодить сущностей и сделать все на аннотациях. Если чуть сложнее, то я бы не хотел в чужом проекте в своей голове представлять правильные объекты из какого-то generic-DTO, лучше иметь их в явном виде. Ну а если логика твоего сервиса тупая как валенок (конвертирует данные из одного апи в другое например), то можно и вообще везде внутренний объект фигачить.
Какой сервис геолокации наиболее точен? Мне требуется отслеживать перемещение людей в торговом центре, а так же отследить факт того, что два человека находятся на расстоянии не более метра а лучше и меньше метра. Возможна ли такая точность? Повлияет ли как то на точность тот факт, что это конкретный торговый центр, т.е. строго определённая территория.
>>1265328 > Что пробовали и на чем остановились? Android studio на жид брейнс базируется. На ней и пишу. Остальные предпочитают ждать говно в продакшене на спринге. Правда здесь не попишешь на нем, поэтому просто отправил студак, они мне кинули на годик все бесплатно. Сижу и работаю.
Сап. Прочитал давно Прата кресты. Я все еще неофит в кодинге. Сейчас хочу навернуть одну из трех книжек Файн или Хэд Фёст Ява или Философия Ява. Вопрос такой, в Хэд Фёст и Файне очень большая часть книги посвящена ГУИ Свинги Ява ФиКс, вопрос зачем это всё? Ну как бы Файн вероятно объясняет шаблон MVC так, ну а дальше то нахуя, я пробовал пропускать эти главы, но всё равно дальше там сэмплы с примерами ГУИ. Как быть, читаю Файна, в районе главы про сериализацию, бросить и читать Эккеля или это не очень книга? Скажите плиз, как лучше? Может ГУИ действительно важен?
>>1276739 5-10 метров это достаточно близко, можно конечно еще гироскопы/акселерометры всякие использовать для интерполяции и предскозания, но в покемонах такого вроде небыло.
>>1276727 Заведи фейк на нн, укажи вузик и прочие. Проси тестовое. Я так пинганул шут пять контор, но получил одно тестовое. Я его сюда запиливал, местные аноны сказали это гавно на два часа хотя мне неделю давали.
>>1276742 5-10 метров этож пиздец как далеко. Мысль с блютозом, мне кстати, понравилась. Это похоже то, что мне нужно. Разве что мне всё равно требуется для начала узнать координаты хотя бы с точностью 5 метров. Вроде как Яндекс.Локатор довольно точный, потому что использует разные методы для вычисления координат. Или Google Services Geofences всё таки точней?
вопрос по структуре проекта. везде нахожу, что начинать надо с src\main\java и туда пихать свои первые классы. в IDEA не получается создать директории в src, только package, которые не позволяют дополнительно создавать папки в том же main, например
>>1276857 ну вот создал я пак main, потом создал в нем пак java. если я в main хочу создать еще один пак,например, python, он у меня вкладывается в java и получается main.java.python. а я хочу, чтобы у меня было main.java и main.python
Короч, есть два стула. Создание абстрактного класса и затем наследование от него, либо же создание иерархии интерфейсов, создание реализации главного в иерархии интерфейса, а затем наследование от этой реализации с реализацией соответствующих подинтерфейсов. В чем вообще профит интерфейсов, если я могу все сделать через абстрактный класс? Про хранение состояния знаю, но в данном случае оно никаких преимуществ не дает.
>>1276906 Да, я знаю это. Тут вопрос в другом: нужно ли создавать иерархию интерфейсов параллельно с иерархией классов, чтобы как бы строго обозначить действия, выполняемые классами, если можно обойтись только иерархией классов? Думаю, тут скорее вопрос соответствия ООП, чем каких-то различий в функциональности.
>>1276909 Обычно иерархия классов потом вылазит боком, если это конечно не какая-нибудь либа. Вот предыдущие уебаны наплодили 5 классов, весьма похожих, но наследующихся, а можно было просто сделать 1 класс, а все остальное к нему параметрами выполняющими работу передать.
>>1276906 Приведу пример. Первый вариант: есть класс UserManager. Он реализует интерфейс UserActions, в котором есть методы работы с неким юзером. Теперь мы создаем класс PrivilegedUserManager, который наследуется от UserManager. Этот класс реализует интерфейс PrivilegedUserActions с методами работы с элитными пользователями, унаследованный от UserActions. И так далее. Второй вариант: мы просто создаем абстрактный класс UserManager, в который и помещаем методы из интерфейса UserActions, которого теперь нет. А дальше просто наследуем PrivilegedUserManager и другие классы от него. Какой вариант выбрать?
>>1276914 А зачем объединять логику работы с обычными пользователями и логику работы с випами. Интерфейс для обычных и интерейс для випов, их классам нет смысла преесекаться.
>>1276913 Но ведь с точки зрения расширяемости создать иерархию лучше. Один большой класс получится очень неповоротливым и связанным, так что при малейшем изменении придется переписывать код сразу во многих его местах. Или я не так тебя понял?
>>1276918 Так они и не пересекаются. Весь общий функционал перенесен в базовый класс (и интерфейс, если он есть, зависит от варианта), а уже особые методы для каждого вида пользователей вынесены в отдельные классы. Просто в одном случае есть обвязка иерархией интерфейсов, в другом - нет.
>>1276920 Неправильно понял. Есть класс Булочная, в ней есть места которые по разному работают в зависимости от сегодняшнего меню, нет смысла менять булочную, пустьв ней меняются люди и меню, вот они и выполнят нудные работы.
Конкретноу меня контроллер который показывает товары по заданному критерию, но кроме критерия выборки меняется и внешний вид. Соответственно базовый контроллер может спокойно бегать за товарами по критерию, а переданные в него делегаты умеют их правильно отрисовать и спозицонировать. А предыдущие дегенераты сделали 5 классов 4 из которых почти нихуя не отличаются.
>>1276932 Теперь понял. >>1276935 Так а смысл в дублировании кода, если я создам отдельно класс для обычных юзеров и привилегированных? А если я добавлю класс юзеров-админов, мне тоже создать отдельный класс и снова продублировать общий для всех юзеров код?
>>1276938 Я не знаю что ты собрался дублировать. Я считаю что операции над простыми пользователями ничем не отличаются от операций на випами, просто у випов есть доп. операции. Соответсвенно ничего не дублируется, работают вообще разные сущности.
>>1276939 Если ты сейчас подразумеваешь, что я должен унаследовать випов от обычных юзеров, то ты подтвердил мои мысли, просто я не смог правильно донести. Если же нет - то там по-любому будет дублирование кода, сам же говоришь - ничем не отличаются, только у випов есть особенности.
>>1276939 Только вот мы ушли от темы. Нужно ли обвязать эту иерархию юзер - вип-юзер еще и интерфейсами, которые как бы обяжут эти классы что-то делать?
>>1276890 Логику подруби. Допускаешь ли ты возможность, что экземпляр твоего животного может быть одновременно котом, тумбочкой и атомной подводной лодкой класса "Карп"? Если да, то Animal будет интерфейсом. Если нет, то абстрактным классом.
Сап джавач. Хотя, вопрос больше по графике, а не по java, но может тут кто подскаже? Такой вопрос - как создаётся интерфейс программы с нуля. Я имею ввиду без использование общедоступных библиотек, таких как swing. Если нужна во совсем уникальный дизайн кнопки, что-бы она была эллипсоидная со стразами в виде динозавриков, выглядела объёмно, блестела, сверкала, свитоперделка. Можно ли создать дизайн средствами ява или нужно использовать другие проги, фотожабу там или что-то подобное?
>>1277095 Либо используются стандартные АПИ конкретной системы (winapi, cocoa, gtk/qt) либо пишется своё собственное поделие на низкоуровневых АПИ вроде opengl/directx/vulkan.
>>1277280 > Как правильно измерять время работы метода? Профайлером (например visualvm). Либо var a = System.nanoTime(); // Код var b = System.nanoTime(); System.out.println(b - a);
Однако время может сильно скакать в зависимости от того, откомпилировал ли JIT твой метод или нет.
Допустим, я хочу реализовать REST API с single page application-клиентом. Значит в моем api один метод должен возвращать пустую html-страницу, а остальные - JSON/XML и т.п., которые клиент потом самостоятельно вставляет в ранее полученную страницу, так? Но если клиент перейдет по произвольной ссылке, то получит в ответ только голые данные. Как правильно сделать так, чтобы любая ссылка помимо JSON/XML могла также возвращать мою HTML-страницу, но с запрашиваемыми данными?
>>1277292 По заголовкам. Если браузер просит html, отдаёшь ему html. Если json (а для этого нужно в ajax-запросах ставить заголовок Accept: application/json), то отдаёшь json.
А встраивать json можно по разному, либо на сервере, либо уже у клиента.
Команда, а как правильно делать программы в свинге?
Всё кучей писать в main или например отдельно объявить компоненты, сделать конструктор с размещением компонентов и отдельный класс Listener'ов? А в main тупо запускать это всё. Есть какие-то паттерны насчёт этого, чтоб не быть говнокодером?
>>1277331 Ты хотел сказать отдельный класс? Потому что в отдельном методе нет ничего плохого. А вообще пиздуй в котлин, там можно даже встраиваемые функции (а в версии 1.3 даже встраиваемые классы с настоящими генериками) делать.
>>1277370 > Это как ссылки на методы через лямбды в джаве? Нет, это как встраиваемые (inline) функции в системных языках. Вместо вызова функции внедряется её полный байт-код.
>>1277371 Эмм, так это ведь уже есть в джаве, пусть и не на уровне самого языка. Компиляторы способны такое делать, например, если ты объявишь в классе метод как final. Так что выигрыш невелик.
>>1277381 Не совсем, когда метод принимает лямбды, то вместо того что бы создавать лямбду/анонимный класс и вызвать его метож, ее (лямбды) тело встроится в код (если на ней конечно нет пометки так не делать). Ну и JIT на самом деле не такой крутой как величают, может съоптимизирует, а может и нет. В критических местах, например в системе лэйаута ведра, вон инты передают и с битовыми масками играются, так как от выделения объектов gc загибался бы, вот там инлайновые классы встали бы как влитые.
>>1277381 > Так что выигрыш невелик. Это сделано не ради скорости, а по большей части ради двух вещей: 1) Полноценные генерики.
Допустим есть функция
fun <T> asd(Clazz<T> clazz, T value)
вызывается она так:
asd(someVar::class.java, someVar)
что некрасиво, однако можно сделать специальную инлайн функцию:
inline fun <reified T> asd(T value) = asd(T::class.java, value)
и вызывать таким образом
asd(someVar)
Согласись, выглядит в разы красивее.
2) встраивание лямбд. Позволяет вместо отдельных языковых конструкций вроде try-with-resources использовать простые функции. Ну и встраиваемые функции получает внешний контекст корутин, а потому позволяют очень просто совмещать лямбды (которые по сути тоже встраиваются) и корутины.
>>1277455 Хммм, а можно ли замутить полноценный вирус на джаве? Помогут ли нативные методы, или там это предусмотрели и как-то урезали свободу действий?
Помогите, пожалуйста, реализовать метод с печатью строк из префиксного дерева (в минималистичной реализации) https://ideone.com/R1iOEI должны выводиться все слова, которые записаны в дерево печататься в виде строки и древовидной структурой (лесенкой)
>>1277498 > Извините, установленная в системе jre не поддерживается. Не могли бы вы поставить jre 1.8? Желательно openjdk со свободной лицензией. Спасибо за содействие. Ваш вирус. > Идёт зашифровка ваших личных данных. Оставшееся время: 46ч. 23м. 13с.
Господа! Читаю книжку по кору. Автор предлагает вот так открывать текстовый файл, я нихуя не понимаю зачем столько объектов, и что они все делают, можете на пальцах пояснить, или вам тоже не понятно?
StringBuffer buffer = new StringBuffer(); try ( FileInputStream myFile = new FileInputStream("abc.txt"); InputStreamReader inputStreamReader = new InputStreamReader(myFile, "UTF8" ); Reader reader = new BufferedReader(inputStreamReader);){ int ch; // the code of one character while ((ch = reader.read()) > -1) { buffer.append((char)ch); } buffer.toString(); } catch (IOException e) { e.printStackTrace(); }
>>1277653 Вот у автора и спроси придурок! Читай доки по этим классам, установи сырцы явы и глянь исходники всем методом.
Этож ява там всё так. обёртка поверх обёртки и обёрткой погоняет.
Если коротко то обернув свой хуй спец классом у тебя появляются методы которые иногда удобно использовать. Но чтоб это понять нужно прочекать внимательно ВСЕ методы. Когда будешь знать какие методы использовать можно тогда есть смысл обмазывать говно поверх говна.
>>1277800 Уже лет триста есть. И именно от Apache. Для тех, кого в гугле не забанили, конечно.
И в Groovy это тоже есть уже хуй знает с каких времён.
>>1277653 Если тебе надо "попроще" - то выше я уже про это написал. Если же тебе надо "изучить кор" - то это будет посложнее. Потому, что низкоуровневая реализация более гибкая и универсальная И в джаве работа с данными унифицирована, т.е. с помощью подобных объектов читаются не только файлы.
Почитай Java Tutorial или то, что ты там читаешь. Это не "обёртки" "потому что джава". Это абстракции, чтобы ты единообразно мог работать с разными источниками/приёмниками данных.
Есть уже какие-нибудь пособия/книги по жажа11? Я начал вкатываться недавно, но после многих лет опыта на с++. Не хочу пол книги читать как объявлять переменные, хотелось бы пояснения нюансов и самых новых фич. Пока что скачал effective java, но там только до 9 версии.
>>1278401 Да там особо нового ничего нет. Если изучаешь для себя, то лукчше вкатывайся в котлин, на нём чуть легче писать и кода меньше выходит. А если для работы, то на жаву11 в эынтерпрайзе ещё не скоро перейдут. Да и разница там (в самом языке) только в наличии var.
>>1278491 И самое главное отличие новых версий и новой системы релизов - отказ от бесплатной долгосрочной поддержки предыдущих версий. Ради этого всё и затевалось.
Познавательный, я изучаю пока синтаксис и мне на работе предложили факультотивом проект, есть сервер на котором крутятся рендермашины, есть агрегатор с дашбордом и веб интерфейсом - называется tractor от Renderman, так вот, просят приложение на андроид, с которого можно эти дажборды смотреть в любой момент, не заходя на вебинтерфейс агрегатора, мол когда в дороге и например под рукой только телефон, вот натолкните куда смотреть чтобы понять как вообще это должно работать нашел API https://rmanwiki.pixar.com/display/TRA/APIs но я нуб, ткните носом куда копать плез не харкайте в лицо
Кто-нибудь может написать необходимый стек технологий для трудоустройства на позицию java интерн/джун без опыта? И насколько хорошо нужно знать каждую из них по шкале от 1 до 5, где 1 - это иметь представление, что это такое.
В spring oauth2 ресурс-сервер должен требовать jsessionid или только сам токен (стандартные oauth-токены, не jwt)? Стандартные токены работают, смущает только этот момент.
Пробовал также сделать авторизацию с jwt, но в этот раз ресурс-сервер вообще токены не требует почему-то. И как в этом случае залогиниться на сервер авторизации, если с SessionCreationPolicy.STATELESS у меня не получается пройти дальше формы логина, а в ином случае ресурс-сервер требует jsessionid, но опять же не проверяет jwt. Как я понимаю, сессия должна быть на сервере авторизации, а на ресурсном только проверка jwt, так?
>>1280456 Есть же раздельные события нажатия и отпускания клавиши. В их обработчиках надо смотреть код клавиши и, если надо, модификаторы - ctrl, alt etc.
Есть ИТТ господа из epam? Можете подсказать, как проходит English Assessment test? Я прочитал в handbook что он состоит из устной и письменной части и посмотрел примеры заданий. Мне дадут для устной части переговорку в опенспейсе иногда бывает шумно? В письменной я просто вбиваю текст в форму на сайте или я должен буду пошарить экран в скайпе и при интервьюере писать никуда не подглядывая?
>>1280121 Тебе лень глянуть вакансии на хх?? Ява кор само собой. Умение писать проги без гугла. Эскюэль. Умение писать запросы без гугла. Ждбс без гугла. Жюнит, мокито без гугла. Без гугла это значит что можешь написать код в блокноте, на бумажке и не обосрёшся!
К примеру уметь нахуярить код на вайтбоард вроде: Scanner in = new Scanner(System.in); PrintWriter out = new PrintWriter(System.out); out.println(in.nextInt() + 1); out.flush();
Ты конечно можешь забыть какие пакеты нужно импортировать т.к. идеешка за тебя это делает. Но помнить писать public static void main(String[] args) Нужно.
Простые/Топ паттерны без гугла. Хелоу ворды на Спринг без гугла.
Ну и прочие ява ее технологии. Это всё реально только если ты постоянно кодишь за пекой а не дрочишь. Там тестовые обычно CRUD на спринге и срок неделю. Вот это и задрачивай. Первый раз будешь гуглить каждый чих, второй уже меньше. К третьему разу пальцы будут сами нажимать что нужно. А если напишешь десяток крудов то на собесе уже будешь реально уверенно выглядеть. Прям придёшь сразу и не дожидаясь тупых вопросов сам скажешь что можешь на бумажке круд нахуярить.
Базовые хтмл, ксс + йява скрипт само собой. Ну и базовая хуита вроде древовирта. Короч что в вузике учил.
>>1280886 >без гугла. >>1280886 >Простые/Топ паттерны без гугла. >Хелоу ворды на Спринг без гугла. >>1280886 >К третьему разу пальцы будут сами нажимать что нужно. >>1280886 >хтмл, ксс + йява скрип >>1280886 >круд
Давно так не проигрывал. Сходи в гугл, посмотри как правильно произносятся вещи, которые ты упоминаешь, маняфантазер блядь.
Я охуеваю с Java после Си. Например, сделали сишные макросы, добавили немного мозгоебства и обозвали "дженериками". Ну пиздец же. Вместо нормальной перегрузки все жрут говно и радуются.
Q: Поздно ли вкатываться в айти в 20/30/40/100 лет?
А: Нет, не поздно.
Q: Cобираюсь учить джаву по 2/5/20 часов в день. За сколько дней я выучу достаточно, чтобы зарабатывать фрилансом?
A: На джаве фриланса нет. Хочешь фрилансить — дуй в ПХП/раби/1С тред.
Q: Хули все книги на английском?
A: Без английского ты не нужен и можешь смело идти нахуй. Ну или в 1С-тред.
Q: Что скажете за джавараш?
Если вкатываешься с нуля, то можешь написать пару "хеллоу ворлдов" до 10 лвла. Дальше курс рассчитан на ленивых и не умеющих читать книжки людей. Количество говнокода зашкаливает, годных задачек пару штук на весь курс. В любом случае решать тебе.
https://github.com/qqqlll/Java-Thread/wiki