Вы видите копию треда, сохраненную 10 апреля 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Q: Посоны, собираюсь учить джаву по 2/5/20 часов в день. За сколько дней я выучу достаточно, чтобы зарабатывать фрилансом?
A: На джаве фриланса нет. Хочешь фрилансить — дуй в ПХП/раби/1С тред.
Q: Значит, я должен буду всю жизнь сидеть в опенспейсе, конвертируя XML в эксепшны? Ура, мне подходит! С чего начать?
A: Туториалы:
BEGINNER: http://myflex.org/books/java4kids/java4kids.htm
MEDIUM: http://www.tutorialspoint.com/java_technology_tutorials.htm
HARD: http://docs.oracle.com/javase/tutorial/
Книги:
- Head First Java, (2nd Edition) : Kathy Sierra, Bert Bates - для совсем нулячих простым языком.
- Core Java (9th edition) : Cay S. Horstmann, Gary Cornell - тоже для нубасов, но на серьёзных щщах.
- Thinking in Java (4th Edition): Bruce Eckel - для тех, кто уже умеет в программирование на другом языке, но хочет перекатиться.
- Effective Java (2nd Edition): Joshua Bloch - для тех, кто знает джаву, но хочет перестать писать костыли.
Больше здесь: http://www.proklondike.com/books/java.html
Q: Хули все книги на английском?
A: Без английского ты не нужен и можешь смело идти нахуй. Ну или в 1С-тред.
Q: В списке книг одно старье. Новее ничего нет?
A: Годноту быдлу не палим. Джава 5 вышла больше десяти лет назад. В шестой и седьмой изменений в синтаксисе минимум. В восьмой было довольно значительное обновление, но а) многие проекты все еще сидят на шестой или седьмой; б) там не такие фундаментальные изменения, чтоб нужно было переучиваться: за пару вечеров лямбды и стримы вполне можно осилить.
Q: Я не могу в книги, но нашел крутую штуку - javarush. Что скажете?
A: В наших тредах постоянно появляются люди типа тебя. Громко обьявляют, что начинают заниматься по джаварашу, задают пару тупых вопросов и куда-то пропадают. Похоже, большинство адекватов бросают джавараш из-за дебильных заданий типа "десять сраз скопипасти этот кусок кода". Тем не менее, иногда появляются и люди, говорящие что прошли его целиком, и что дальше задания получше. Короче, хочешь - пробуй, первые десять занятий бесплатно же. Но, как минимум, лучше совмещать с обучением по другим источникам.
Q: Пока читаю, все понимаю, а сам ничего сделать не могу. Что делать?
A: Практика, больше практики.
Уровня laba1.pas: http://codingbat.com/java http://codehunt.com
Чутка серьезнее: http://programmr.com/zone/java http://codingame.com/puzzles
Рулеточка: http://postimg.org/image/xdfbvgps9/
Олимпиадка: http://codeforces.com
Примеры той-проектов: http://eax.me/programming-language-learning/
Q: Я выучил кор, достаточно ли этого, чтоб взяли на работу?
A: Лол, конечно нет хотя некоторым всё же везёт.
Вот майндмап с джава-технологиями: https://atlas.mindmup.com/2015/10/3d59a040592a0133d02a5d31ebcc5420/java/index.html
Цикл статей что в каком порядке учить: http://dou.ua/lenta/articles/java-beginner-guide-1/ (заблочен РосКомПозором, юзайте прокси)
Q: Слышал, SQL знать надо обязательно. Где его учить?
A: Начни с малого: http://www.w3schools.com/sql/default.asp
Затем переходи к: http://www.sql-ex.ru/
В качестве чтива рекомендую: http://oreilly.com/catalog/sqlhks/chapter/
Q: Всё это хорошо, но без алгоритмов меня на работу не возьмут.
A: Не беда, вот курсы от Принстонского университета: https://www.coursera.org/course/algs4partI
То же самое но в бумаге: Роберт Седжвик, Кевин Уэйн - Алгоритмы на Java
Q: Я готов к первому собеседованию.
A: Проверь свои знания здесь: http://www.quizful.net/test
И здесь: http://www.careercup.com/
Предыдущий тред тонет здесь: >>673361 (OP)
В общем, поехали.
Класс NameGen - класс с основами и всеми фишками, типа рандома. геттеры-сеттеры тоже тут.
http://pastebin.com/6gvvNn4v
класс NameGenRules. Тут у нас уже методы запуска и всё такое. плюс массивы с кусками имён:
http://pastebin.com/9XBEfEuy
И класс с мэйн методом, в котором я решил реализовать экншлистнеры и гуи. Вышло кривовато и не очень красиво, да, зато теперь знаю, что надо бы про ГУИ побольше почитать и больше позаниматься.
вот тут класс(даже комменты на ангельском вставил):
http://pastebin.com/M83qMNE7
В результате вышла милая программка, пикрелейтед.
Расскажи, что думаешь, Анон. Кроме класса с гуем - там я знаю, там много лишнего и криво.
Спасибо за рейт, гайс)
Алсо есть ли какие-то стильные фреймворки для стилизации формочек в FX? Хотя я почему то стили не могу подключить, применяю их прямо в коде к элементам
Для мелкосайтов - скриптопараша лучше. Когда же у тебя появляется потребность в кешах внутри приложения, фоновых задачах, а база ложится из-за слишком большого количества коннекшнов (естественно же, в ПХП до сих по коннекшну на реквест открывают), то джава выигрывает.
Базарю, анон, у тебя явно склонности к кодерству. Не думал в гугл на стажировку зааплаиться? Очень классная и милая программка ))) Как вариант можно еще в майкрософт в отдел разработки графических интерфейсов пользователя. Очень удачно соблюдены пропорции для графических элементов в твоей программе, юзабилити очень крутой. Удачи, у тебя все получится! )))
Бля, ну зачем так, я ж кинул, чтоб мне показали мол в верном направлении иду или нет.
Думал, что в /pr атмосфера не как в /b, и что тут не клюют,а помогают или тыкают носом в баги-ошибки.
А если серьезно, выкатывай только реальную прикладную аппликуху, которая будет выполнять конкретную функцию, или несколько функций. Навскидку, минимум 1к строк кода должно быть, чтобы не стыдно было людям показывать и просить ревью. А ты прочитал вступление и первую главу Шилдта, наваял какую-то... программу, блядь, твое ЧСВ зашкалило, и ты решил выкатить свой талант на всеобщее обозрение. Конечно, здесь тебя за такое обоссут. Сколько тебе лет вообще?
Да поебать, он понял, что это ему
22.
вкатился месяц-полтора назад.
Шилдта не читал ещёю
залил не ЧСВ потешить, а понять, верно мыслю или надо повторить основы, так сказать.
А что читал? Почитай https://docs.oracle.com/javase/tutorial/java/index.html и копируй стиль оттуда. И рановато ты в гуй полез.
читаю head first
прочитал до середины файна, с середины пиздец начался какой-то.
оттуда и почерпнул про гуй и про основные элементы его.
сейчас только head first и Java Api листаю.
Так ты задачи решаешь? Это пиздец как важно. Причем нужно стараться копировать стиль автора. Во, вспомнил! Забей короче на всю хуйню и кури только эту книгу ближайшие месяцы: http://math.hws.edu/javanotes/
Там самая необходимая база, без которой никуда, и задачи интересные. И не распыляйся на множество источников, добей книгу от начала и до конца. И уже будешь неплохим кодерком. Такое мое видение.
задачи решаю на codingbat, уже достаточно много прорешал. Спасибо за ссылку)
А в headfirst задачи простые пока что, даже слишком.
на кодингбат задачи поинтереснее будут.
в хедфёрсте что-то вроде поработайте компилятором и что выведет код
Спасибо за ссылку)
Завидоват, сам сейчас сижу, техническое собеседование через 20 минут, страшновато.
Если интерпрайз (особенно на java), то рано радоваться.
Это такая вещь, которая через полгода убивает у "неокрепших умов" все желание программировать.
22, читал эккеля и немного spring in action. в вакансии было "высшее техническое и желание развиваться в интересной области"
>>687624
данон же
>>687627
удачи братиш, будь уверенней и все ок будет.
Логично что НЕ интерпрайз:
• То что можно сделать с нуля
• Где можно быстро увидеть и "потрогать" результат своего труда
• Где к тебе относятся НЕ как к винтику, давая кучу низко-интелектуальных задач
• Где применяются актуальные технологии
• Где можно экспериментировать
• Разрабатывать то чем пользуются простые пользователи, так что можно будет этим хвастаться
С другой стороны, если можешь пережить отсутсвие всего этого, то через год будешь неплохо зарабатывать.
Это ты тот анон, который от безысходности кидал резюме даже в дс? В любом случае, поздравляю!
берут
узнают что нет опыта коммерческой работы
снижают з.п. до джуна
We are looking for Junior Java Developer who desire to increase his/her knowledge and succeed with great results working with us.
Required skills :
Technical education (related to computer science) - второй курс
Good knowledge of Java - знаю джава кор
Be familiar with Algorithms and Data Structures - да
Good theoretical knowledge of Databases - нет
Experience with HTML and CSS would be a plus - на лабах делал
Be familiar with Java code conventions - да
Desire to work and study new technologies - да
English Intermediate level or above - B2
Fast-learning person - да
Каковы мои шансы? Стоит подавать резюме?
А то кажется невроз уже от переизбытка информации и фрустраций из-за получилось||не получилось
а какого уровня проекты можно заливать на гитхаб?
находил у некоторых там даже лабораторные типа, если а больше б вывести а.
Это зашквар?
Вообще, каким должно быть портфолио? Как можно больше проектов и задач, даже самых тупых или один ахуенный проджект?
Вообще зашкварненько, но все что не лабы заливай, даже если там будет не самый лучший код, улучшай со временем, пусть видят, что ты развивался. Алсо вот тебе крутой проект успешного ноджс кодера, весь код в index.js
https://github.com/gummesson/is-empty-object/blob/master/index.js
А если ты решишь что нибудь из приватоного сделать публичным, перезалив? Битбакет ведь позволяет?
Перерывы обязательны, на мой взгляд. Можно вообще на недельку.
Одну галочку переключить
Не, тот анон с безысходностью - это тот, который как раз сейчас с собеседования вышел. Первые впечатления - ощутил, что я хуй простой и вообще нихуя не знаю. В 2 словах: были вопросы на разные тонкости, стринг буферы разные, цикл жизни сервлетов и jsp, веб, sql и БД, борьба с sql-инъекциями и как именно реализован prepared statement. Еще было про жабаскрипт и css, но на этом я совсем обосрался, так как работал с ними только копипастой и тонкостей нихуя не знаю.
Под конец была оче занятная логическая задача про поезда: дан замкнутый поезд неизвестной длины, определить сколько в нем вагонов. Собственно, можно только перемещаться и включать/выключать свет, изначально освещение в вагонах включено рандомно.
Алсо, пасаны из return on intelligence внезапно вспомнили обо мне и прислали тестовое задание, позже напишу подробнее. Ну и тянка-HR сильно доебывалась, что я на курсы инглиша не хожу.
Не везет тебе братишь, хотя это как посмотреть. Судя по твоим постам конторы попадаются не самые хуевые и если ты не собираешься писать рутину 24\7 за зарплату, а стать приличным программистом то в такие конторы и надо устраиватся.
> заливать что-то на гитхаб только для портфолио
> не контрибьютить в чужие проекты и не разрабатывать свои
И себя ты называешь программистом?
Ливай тогда оттуда.
Фаулер и не протух как бэ. Тебе когда про паттерны GoF советуют, ты тоже нос воротишь?
> заливать что-то на гитхаб только для портфолио
Залил свой проект, а потом через год работадатель именно его решил открыть, а там код ньюфани.
> не контрибьютить в чужие проекты
Хотеть, но пока не уметь
>И себя ты называешь программистом?
НАЧИНАЮЩИЙ
>дан замкнутый поезд неизвестной длины, определить сколько в нем вагонов. Собственно, можно только перемещаться и включать/выключать свет, изначально освещение в вагонах включено рандомно.
Как решил? Нельзя просто везде включить, потом выключить любой один, начать идти со следующего, дойти по кругу до выключенного - он будет являться концом вагона. Где подвох?
> везде включить
Длина же неопределена, вот ты выключишь, а потом окажется, что ты до конца не дошел.
>просто везде включить
А вот в этом и подвох, как ты поймёшь, что включил "везде"? То, что тебе попались n светлых вагонов подряд еще ни о чем не говорит.
String а = "a"+" b"+"c";
Сколько будет создано объектов в памяти? Что произойдет, если стринг заменить на стрингбилдер?
Если не заданы условия оптимизации думаю можно так:
Включить в вагоне свет, он будет отправной точкой, продвинуться вперед на 1 вагон и вернуться обратно, проверить свет, потом на два вагона впереди и обратно, если на старте свет выключен, то мы обошли поезд целиком.
Кто вообще такую хуйню задает?
Effective java наверни, там все это будет, насколько знаю из опыта знакомых, любят оттуда вопросы.
>>687855
>проверить свет, потом на два вагона впереди и обратно
Забыл дописать что потом на 3,4 и т.д., пока не будет выключен свет в первом вагоне
Зависит от версии Java и Hotspot (или вообще хотспот это или другая JVM).
Первая половина книги не протухла, а вот дальше чувствуется, что в 2002 году писалось. Ну и хотелось бы книжку, где мне за си шарп не задвигают и не вспоминают местами про питон с руби.
5, вместе с ab по-любому
а что нибудь по сложностям алгоритмов было?
Ну не должно это ебать типичного дева, вопросы по языку - да, по алгоритмам - конечно, попросить написать код - само собой. Но с этой хуйней пусть jvm разбирается, главное знать, что не нужно много строк создавать.
Ну, тут, скорее, надо знать не что такое стринги, а что они immutable и берутся из пула.
А в спецификации прописано, что компилятор должен делать такую оптимизацию?
For primitive types, an implementation may also optimize away the creation of a wrapper object by converting directly from a primitive type to a string.
А про стринги почти ничего и не написано.
На то String и final что бы не ограничивать компилятор.
Про интрисики в JDK 9 вы наверное вообще не слышали.
Да, написано.
http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.10.5
>Strings computed by constant expressions (§15.28) are computed at compile time and then treated as if they were literals.
>интринсики
Хули ты умничаешь-то? Тебе говорят, блять, что это не прописано в спецификации и все оптимизации типа тех же интринсиков -- это воля разработчиков JVM. Поставь себе другую JVM от Васяна, а не Hotspot -- обязательно там интринсики будут?
>Тебе говорят, блять, что это не прописано в спецификации
Пост выше. Это стандарт компилятора, а не JVM.
С той же целью, что и "расскажите подробно, как отрабатывает команда put в мапе" - проверить знание тонкостей кора. Знаешь ты про putfornullkey, корзины и связные списки внутри них или для тебя это просто магическая хуйня, где всякие штуки парами лежат.
Алсо, спрашивали про устройство памяти и работу GC, тут я тоже частично обосрался: в общих чертах знал, но на вопросы о более подробном устройстве хипа (я читал, что там с позиции GB ещё как-то память разделена, но детали не запомнил) и о том, как именно GC поступает с объектами, указывающими только друг на друга (я знаю, что он умеет искать перекрёстные ссылки, но КАК он это делает - в душе не ебу) не ответил.
Ещё были вопросы про веб, мол, я на ссылочку нажал, а что там за магия в интернетах происходит, как оно всё отрабатывает и на какой порт стучится. Как jsp преобразуется в сервлет спрашивали.
Про композицию, множественное наследование и это всё, мол, что я буду делать, если мне нужно запихать методы нескольких классов в третий класс.
Был вопрос про 5 принципов объектно-чего-то-там-дизайна, но я про это впервые слышал.
Т.е. если я знаю, как находятся циклические ссылки (а точнее не находятся), то могу увольняться со своей стажерской должности и идти миддлом?
Нет, я не к тому, я сам просто шарпист, и сам довольно таки глубоко лез внутрь, вникал в работу гц, медитировал над разницей в генерировании машинного кода старым компилятором и рослином, и все такое, но на собеседованиях на джуна меня ни разу ни о чем на таком уровне не спрашивали. Может у вас в джаве там конечно все иначе и хардкорней, но я не думаю, что джуну нужно знать о настолько тонких подробностях.
о, спасибо, интересненько
ну я читал про это у эккеля где-то вначале, но максимум, что там писалось это то, что gc пытается раскрутить все ссылки до стека, а про сурвайволы и олд генерейшон там не было и слова.
>Может у вас в джаве там конечно все иначе и хардкорней, но я не думаю, что джуну нужно знать о настолько тонких подробностях.
Ну всякое говно вроде во сколько там стрингов скомпилится твое выражение и правда немного лишнее, но знать как там внутри устроена хеш-таблица (можно даже без выебонов вроде лоад факторов и "а чому это там суспрес ворнинг стоит") - это вполне вменяемые требования, как мне кажется.
>там писалось это то, что gc пытается раскрутить все ссылки до стека
Наоборот. Он начинает со стека (точнее с некоего "корневого множества"). Так что всякие там объекты с только цикличискими вообще не попадут к нему в претенденты на живых.
А хуй знает, кстати. Формально у них и джуновских вакансий-то не было, но они сказали, что если норм, то в теории могут и взять джуном.
Это, кстати, те самые, про которых я в прошлом треде писал, я у них ещё в блокноте игру в города пилил на первом собеседовании.
А Return on Intelligence что-то удивили, берут в интернатуру на 4 месяца, зп 20к, после интернатуры могу взят в штат, а могут и не взять.
Против алгоритмов и структур данных ничего против не имею, это очень хорошие и правильные вопросы. Просто когда доходит до вопросов, где начинаешь пытаться думать как компилятор, чтобы он сделал, оптимизует он или нет, то это все-таки лишнее уже.
> А Return on Intelligence что-то удивили, берут в интернатуру на 4 месяца, зп 20к
С такими ситуациями я знаком, тут можно попытаться договориться уменьшить такой срок хотя бы в 2 раза
Ну просьбы пояснить что-то вроде такого https://ideone.com/3IImWm это совсем долбоебизм, имо.
Причем тут упаковка?
А то, что я даже если буду бухой и неспавший пятеро суток, я не стану сравнивать ссылки на объекты.
И вопрос не про автоупоковку, а про кеширование. Мы вам перезвоним.
На самом деле вопрос "сколько объектов создастся (в рантайм"), а не как скомпилируется.
А если он дальше по коду не используется (в условии это не уточняется)?
Какая нибудь хитрожопая реализация JVM может это оптимизировать и выкинет это в рантайме,
в спецификации ведь про такие случаи не говорится.
Вот, кстати, из задание. Да ладно уменьшить, взяли бы хоть. И так боюсь, что даже если задание сделаю хорошо, могут к разговорному английскому приебаться.
Собственно, делается первое задание и одно из второй части на выбор.
Так вот этот код в рантайме создаст один объект. На любом компиляторе и любой jvm. Иди выебывайся в какой-нибудь другой тред.
Исполняется вроде как байт-код, не? А в нем _вообще_нет_твоей_ебаной_конкатенации_. Ты меня утомил.
Так да, это на стажера и есть.
https://ideone.com/VsOC4C
Во-первых ты неверно перепечатал образец: минус в a1.
Во-вторых загляни в метод Integer.valueOf и обрати внимание на границы кеша Integer объектов.
Cпасибо. Я просто еще даже не начинал учить. Просто рандомный код скопипастил в редактор и поигрался с числами.
А с int все хорошо работает, кстати, не знаю, откуда я знаю это, лол. С пыхи вкатился.
Ну заебись и валхала не нужен.
Потому что в случае с int сравниваются значения, а в случае с Integer - ссылки.
Это нормально, у всех так было.
Заруби себе на носу - для того, чтобы программировать не нужен какой-то божий дар. Только практика и ещё раз практика. Тех, кто тебя убеждает в ином, шли нахуй.
Бери SourceTree - охуенная весчь на маке особенно, полный контроль за репой без консолеебства.
Я с ней просто отключаю все VCS плагины в идее, тк не нужны.
>Насколько в idea хорошая поддержка git
Хорошая, если не любишь пердолиться с консолью хотя как можно не любить, можно этого избежать. Пиздато мерждить через него, например.
>как заигнорить папки
редактируй гитигнор через само ide, там есть даже плагин для людей с особенностями.
Вы, блять, издеваетесь что ли? Откуда вы такие берётесь вообще?
{
return a < b ? a : b;
}
Что за конструкция такая? Где почитать?
Понимаю, что если а меньше б, то вернуть а, в противном случае б. Так?
Только погугли статью про тернарные операции (с телефона не скину). Там есть свои подводные камни, иногда приходится использовать if-else
Ворвался в джаву 3 недели назад на позицию джуниора в дс, не зная ни одного фреймворка и ни одной системы сборки. Оцените хуевость конторы.
Тернарных? Просто запись короче, больше никаких
>Что платят?
Ну сказали, так как опыта нет, то будут платить первые 3 месяца 30к.
>Долго учился перед этим?
про алгоритмы и ещё писал скрипты на ней для нагрузочного тестирования.
Блять, проебал часть написанного.
Писал, как дебил, одни реализации алгоритмов дома по книге лафора и сенжвика. Больше на ней ничего не делал.
public final Random random = new Random();
И есть куча остальных тредов, которые использут этот random.
Программа огромная. Появились страшные глюки. Не понимал в чём дело, пока не добрался до сути. Дело оказалось в этом самом random.
Вызывая этот самый random из другого треда начинается лютый пиздец, но если для треда создать свой рандом и использовать его, а не тот из основного треда, то всё работает збс.
Собственно вопрос. КАК БЛЯТЬ ТАКОЕ ВОЗМОЖНО?
Краткая запись. Проблема в том, что тернарная операция - суть оператор, и тип значения решается в момент компиляции. То есть если у тебя (true) ? int : double, то независимо от условия тебе вернётся double.
Более того, если ты используешь несколько раз этот оператор (c1? r1 : c2 ? r21 : r22) и один из r1, r21, r22 равен null, а jcnfkmyst - два разных типа (точно не помню какой), то ты словшь null poiter exception когда условия сложаться так, что этот null будет результатом условий. Потому что сгенерированныйкод будет пытаться скастить null и сгенерирует невализный код.
Instances of java.util.Random are threadsafe. However, the concurrent use of the same java.util.Random instance across threads may encounter contention and consequent poor performance. Consider instead using ThreadLocalRandom in multithreaded designs.
Тернарный оператор используется для того чтобы инициализировать значения в переменных или выражениях.
Например:
System.out.println("Оп - " + (new Random.nextInt%2==0) ? "няша":"мудак";
Можно делать такое гавно цепочкой.
Хуясе.
А что за проблемы-то были? Лагало?
Есть уровень бизнес-логики, есть уровень данных (Hibernate). Общаются они через репозитарий.
Бизнес-логика вызывает Repository.save(object); Репозитарий должен извлекать из бизнес-объектов данные и наполнять этими данными POJO-объекты, которые аннотированы Hibernate'овскими аннотациями.
Это делается для того, чтобы бизнес-логика ничего не знала о том как хранятся данные.
Но возникает проблема как сделать переход между бизнес-объектами и Hibernate-аннотированными объектами.
После опробования разных способов пришёл к тому, что в моем случае проще бизнес-объектам наследовать hibernate-объекты.
Тогда внутри репозитария можно безопасно кастовать аннотированные hibernate-классы на бизнес-объекты. И потом сохранять.
Но возникла проблема. Когда я пытаюсь кастовать, суперкласс упорно не хочет кастоваться (см. пикчу).
Также хотел бы услышать соображения о том как ещё можно сделать переход между бизнес-объектами и Hibernate-объектами. Другие мои идеи включали enum, например (огрубленный код):
//ENUM
enum Selector {
User(BusinessUser.class,POJOUser.class)
//...
}
//Где-то в бизнес-логике
Repository.get(Selector.User.byId(369);
//...
//Внутри репозитария
public Object get(Selector selector) {
return manager.get(selector.getPOJOClass, selector.getId);
}
Но всё это было очень костыльно.
Есть уровень бизнес-логики, есть уровень данных (Hibernate). Общаются они через репозитарий.
Бизнес-логика вызывает Repository.save(object); Репозитарий должен извлекать из бизнес-объектов данные и наполнять этими данными POJO-объекты, которые аннотированы Hibernate'овскими аннотациями.
Это делается для того, чтобы бизнес-логика ничего не знала о том как хранятся данные.
Но возникает проблема как сделать переход между бизнес-объектами и Hibernate-аннотированными объектами.
После опробования разных способов пришёл к тому, что в моем случае проще бизнес-объектам наследовать hibernate-объекты.
Тогда внутри репозитария можно безопасно кастовать аннотированные hibernate-классы на бизнес-объекты. И потом сохранять.
Но возникла проблема. Когда я пытаюсь кастовать, суперкласс упорно не хочет кастоваться (см. пикчу).
Также хотел бы услышать соображения о том как ещё можно сделать переход между бизнес-объектами и Hibernate-объектами. Другие мои идеи включали enum, например (огрубленный код):
//ENUM
enum Selector {
User(BusinessUser.class,POJOUser.class)
//...
}
//Где-то в бизнес-логике
Repository.get(Selector.User.byId(369);
//...
//Внутри репозитария
public Object get(Selector selector) {
return manager.get(selector.getPOJOClass, selector.getId);
}
Но всё это было очень костыльно.
Что, как джуна тебе дают за задания?
Помнишь си? Вот ты кастанул лишь указатель(ссылку). От этого каста объект лежащий по тому адресу не перестал быть User. А еще кастовать засраные хибернейтом домены к чему-либо - плохая идея. Там же привалит хуй пойми какое прокси и у тебя будет класс каст эксепшн на каждом шагу.
Понял, спасибо.
*orika
Я не пойму какие библиотеки надо подключать, чтобы развернуть проект в иде?
Алсоу на чем графику делал?
>какие библиотеки надо подключать, чтобы развернуть проект в иде?
Да. Прошу прощения за такое. Короче, проще всего брать пустой libGdx проект и копировать (форкать) в него. Скачиваешь libGdx жарник с их сайта, запускаешь. Нужно добавить галку на FreeType и, вроде tools (ну или потом их в грэдл зависимостями сунуть). Generate -> получаешь пустой проект. В core обычно лежит весь, собственно, код.
>на чем графику делал?
Всмысле? libGdx там сам как то её рисует. Глубинные механизмы мне не известны. А спрайты я сам рисовал. Преимущественно в gimp-е.
Ребята, прохожу курс на курсерии по джаве. И у меня проблема с HashMap.
<pre>
public void buildMap (){
map.clear();
WordGram gKey = new WordGram(myText, 0, myOder);
int ind = 0;
while (myText.length >= ind+myOder){
System.out.println(gKey);
if (!map.containsKey(gKey)){
ArrayList<String> list = getFollowsKeys(gKey);
map.put(gKey, list);
}
if (ind+myOder == myText.length){
break;
}
for (String s : map.get(gKey)){
System.out.println("\t" + s);
}
String s = myText[ind+myOder];
//System.out.println(s);
gKey.shiftAdd(myText[ind+myOder]);
// System.out.println(gKey);
ind +=1;
}
printHashMapInfo();
}
</pre>
<pre>
public void buildMap (){
map.clear();
WordGram gKey = new WordGram(myText, 0, myOder);
int ind = 0;
while (myText.length >= ind+myOder){
System.out.println(gKey);
if (!map.containsKey(gKey)){
ArrayList<String> list = getFollowsKeys(gKey);
map.put(gKey, list);
}
if (ind+myOder == myText.length){
break;
}
for (String s : map.get(gKey)){
System.out.println("\t" + s);
}
String s = myText[ind+myOder];
//System.out.println(s);
gKey.shiftAdd(myText[ind+myOder]);
// System.out.println(gKey);
ind +=1;
}
printHashMapInfo();
}
</pre>
Тут же послу добавления ключа проверяю - все хорошо. Уникальные ключи добавляются. их значения тоже. Но когда пытаюсь использовать этот HashMap в коде - выясняется что все ключи заменены, на то которое было добавлено вторым. Как так?
Проверял вот этим
<pre/> public void printHashMapInfo () {
System.out.println("map size " + map.size());
for (WordGram wg : map.keySet()){
System.out.println("key " +"\""+ wg +"\""+" :");
for (String s : map.get(wg)){
System.out.println ("\t"+ s);
}
}</pre>
И да, как правильно код вставлять? Как гугл подсказал что-то не работает. А обсираться дальше прям не ловко.
ну, ладно тебе, не язви. Я ж настлолько слаб что даже не понял где ирония зарыта.
Вангую, что не переопределил метод hashCode у класса WordGram. Угадал?
спасибо за подсказку. завтра после работы займусь.
И теперь я хочу спросить и попросить совета - как вообще этот курс, стоит ли продолжать и заплатить за курс, кем я буду когда закончу эти 40 уроков?
Ну и я понимаю что мало кто вообще с этим курсом знаком, но вдруг кто-то может что-то посоветовать.
Понятно что развиваться надо будет и дальше и много, но работать мне нужно уже сейчас что бы не умереть с голоду, смогу ли я это сделать, то есть смогу ли я найти хоть какую нибудь работу с этими знаниями?
Тут не всё однозначно. Чтобы libGdx проект сразу запускался надо очень много всяких сопутствующих файлов. Но даже, если покидать их все в репозиторий, человек, не занимавшийся раньше программированием под андроид, всё равно не сможет его просто клонировать и сразу запустить. Надо будет ставить андроид апи нужной версии и т.п. Это всё мультиплатформенность. Удобнее конечному пользователю = больше геморроя разработчику.
В общем, я изначально рассчитывал, что кто-то просто посмотрит код в src на битбакете. Но, раз уж тебе хочется именно в ide его развернуть - добавил в Downloads архив roli2ch.zip. В нём идеевский проект целиком и без андроида. Надо только запустить, импортировать грэдл и кликнуть таск desktop - other - run.
>вбил в поиск выскочил курс javarush.ru
>Ну и я понимаю что мало кто вообще с этим курсом знаком
А он и не под андроид. Просто движок позволяет делать одновременно и под него и под десктоп. Мультиплатформа. Да и андроидовского там в коде (в core) ровно ничего.
Не будешь ты программистом. Понимаешь, в этой профессии очень важны усидчивость, внимание к деталям, способность самостоятельно искать решение проблем. А ты, дебилушка, даже шапку просмотреть не осилил. Для вас, идиоты, специально добавили там вопрос про джавараш. Сложно, блядь, поиском по треду пройтись? Ты, кстати, уже второй такой за два дня существования этого треда, что как бы символизирует уровень аудитории джавараша.
Ну в принципе спасибо за ответ.
Вот усидчивость - это то, что у меня есть. Однажды делала маникюр соседке - она так и сказала, что я такая усидчивая.
Кстати шапку я читал давненько уже, этого вопроса не видел, не буду же я перечитывать шапку к каждому треду.
А Ctrl+F нажать перед тем, как задать вопрос религия не позволяет?
Ну после гневного поста так и сделал, тащемто.
https://bitbucket.org/GlowEffect/java-vksaver/
Все началось с того, что пару тредов назад посоветовали написать качалку фоток с vk.
А я тот кто придумал, заценим, из того что сразу бросается - VkAPiUtils.PERMISSION. Нейминг enumов такой же как и у обычных классов, то есть Permission. Еще не вижу смысла держать енам в том же классе, зачем тебе дополнительная вложенность, почему не VkPermission.java? Ну и перед toString() анноташку оверрайда добавить.
Алсо отформатируй весь проект, там есть места где совсем все поехало, и еще насчет енамов, обычно пишут их в столбик - по одному в строке.
Осиль мавен или грейдл. Незачем в репозитории хранить джарки распространенных либ.
Добавь *.iml в гитигнор.
Почему не восьмая джава?
Учи java.util.concurrent. За код типа while(!isStopped()) { Thread.sleep(1000);} должно быть очень стыдно.
За автоформаттер написали уже.
1.В мавен умею, просто освоил позже чем начал писать проект. Кстати что лучше мавен или градл?
2. А где форматирование поехало?
Ну в файле VkApiUtils например, вообще можно настроить так что бы оно по всему проекту сразу чинило. Мне кажется Gradle, так как он более гибкий чем Maven, но проигрывает в скорости Ant, но ant совсем уже гибкий, но все пишешь в xml.
2. Форматирование у тебя непривычное для джавистов, слишком плотное, пробелы неконсистентны. Между методами вставляй пустую строку, пробел между ) и {, пробел вокруг операторов, и т.д. Алсо не пытайся выравнивать названия полей по вертикали: мороки много, переименовал класс в одном месте - в другом форматирование поплыло, запустил автоформаттер - все сбросилось нах. Короче, таким только сишники сейчас занимаются.
1. Ант - говно мамонта. Гредл - дофига гибкий, но с кучей граблей, магии и недокументированных плагинов. Мавен - оптимальный выбор для большинства проектов.
Автоматизация сборки, чтобы не нужно было твои 100500 файлов вручную компилировать и слепливать в единый jar + как намекают аноны выше с помощью него можно удобно добавлять библиотеки в проект одним куском xml кода. Все остальное сделает maven.
>>688891
>>688881
Форматирование поправлю(кстати значение enumoв пишеться капсом или тоже как обычное имя переменной? Типа Permissions.DOCS или Permissions.docs?
А по общей архитектуре, кривым решениям есть какие-нибудь замечания?(concurrent тоже учту)
https://google.github.io/styleguide/javaguide.html#s4.8.1-enum-classes
>>688925
Неудобно, другая структура, некрасивый интерфейс.
> кстати значение enumoв пишеться капсом или тоже как обычное имя переменной?
Ориентируйся на код JDK, например https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/TimeUnit.html
Вообще, почаще заглядывай в код самой джавы, вдохновляйся.
Офкорс
Да не, там все просто, в андроид-студии накидал кнопочек и полей для ввода, хуяк-хуяк и готово.
Тут где-то рядом андроидотред, там подробнее расскажут.
Выучить джаву, чуть-чуть. В это же время выучишь и все инструменты для разработки, все, можешь учить фреймворк ведроида и его специальные инструменты.
>>688951
>>688949
Ничего себе, адекват на адеквате, в пыхотреде бы сейчас нахуй послали и убили бы за такие вопросы, спасибо.
Ну лан, иди нахуй.
можно говорят тебе
В самой джаве очевидно нет. Ты наверно слово кросплатформенность не понимаешь.
Начал изучать JavaEE (ту, которая не спринг) и на меня посыпались какие то модули EJB, сервера приложений и куча вложенных проектов в один (типа модули). Спустя 2 дня мавеном смог все это собрать, задеплоить и запустить, чтобы работало то что я наговнокодил. И чтобы не повторять эти 100500 действий по сборке как шизофреник у меня созрел вопрос - как быть, если я хочу внести поправки в проект? Типа изменил что то на jsp странице, и чтобы не компилировать и собирать весь проект заново, изменения сразу были видны просто перезагрузив страницу в браузере. И то же самое с классами - изменил 2 символа в строке кода и не пришлось заново компилить и деплоить весь проект... Как тут быть? Как это вообще практикуют?
Что означает строчка: Process finished with exit code 0
Фенки.
если пользуешься идеей, то запускаешь проект в контейнере и прямо налету можешь подменять классы. Называется это hotswap, если не ошибаюсь. Срабатывает не всегда, ну ты погугли. Насчет JSP, их можно тоже подменять налету редактируя jsp в твоем контейнере. Ты вообще, пробовал? Быстрее проверить было бы или загуглить чем писать пост.
У меня все работает, но тест проверяется автоматической системой и она выдает, что тест неверный.
перепиши тест с assertTrue на assertEquals, добавь побольше проверок в методе вместо одной на конце. Тот факт что ты столкнулся с этой проблемой, сам по себе говорит что тест написан безолаберно. Включи мозг и залей, в следующем ночном билде будет у тебя причина.
Пишешь System. и нажимаешь Ctrl+Space для автодополнения.
Пишешь System и нажимешь Ctrl+ЛКМ - тебя перекидывает в исходники System и ты спокойно ищёшь всё, что надо.
А к чему такие выебоны? Банальщина вроде http://pastebin.com/P3qHdQ5W не катит? И что за приведение к лонгу?
Приведение к лонгу потому что может быть 210е9 и -210е9, разность в инт не помещается. Биг интеджер нужен, потому что надо перемножать два больших лонга, в лонг может не поместиться.
один хуй не понимаю вашу систему тестирования. Обычно ты хардкодишь ну или запихиваешь в какую-то структуру входные данные и ожидаемые данные. Ты же входные данные получаешь из провайдера, а выходные считаешь сам. Т.о. у тебя в проекте два дублирующихся участка кода. Первый вычисляет что-то, а второй проверяет что первый вычислил правильно. Бред. Скопипасти из первого во второй и вот тебе будет вечнозеленый тест. По уму так мне бы пришло в голову вытаскивать ожидаемый ответ из провайдера и с ним сверять. Но никак не проверять код кодом.
Так это тест провайдера. Что он действительно выдает, что надо.
>>689191
Ну так что, если не вспоминать про ортогональность, а пойти влоб с теоремой Пифагора как-то так http://pastebin.com/gPBZKepZ - тест твой проходится?
У меня там ограниченное количество попыток, не хочется лишний раз посылать. Просто хотелось узнать нет ли какой-то дурацкой ошибки, которую я упустил в своем коде. Но все равно спасибо, если ничего другого не надумаю, попробую через Пифагора. Хотя разницы не должно быть по идее.
4-5 лет экспириенса
Чтобы когда ты запускал свой файл, JVM не искала, какой из методов ей запускать. Должен быть один публичный класс, если ты собираешься запускать свой проект, а не использовать его как библиотеку .По крайней мере я так понял из Эккеля.
есть такая штука как hot swap, идейка заебись удобно это делает. Зависит конечно какие изменения ты делаешь, в большинстве случаев hot swap отрабатывает.
Ну и + нахуя тебе оракловый стек? EJB? вот это все
Занимайся спрингом лучше. И то и другое ссанина, но со спрингом все же привкус говна не такой сильный :3
Как тебе уже сказали, Идея это может сделать за тебя. Чтобы можно было менять на лету html/js/css, артефакт должен быть exploded. Потом просто нажимаешь апдейт ресурсес или типа того.
хуи сосешь?
Суть вопроса: Учу джаву что бы стать программистом на джаве а не парнем который пишет забавные скрипты, один вроде как понимающий в вопросе человек сказал учить ещё и Си так как си+джава это очень круто.
Вопрос насколько эта связка актуальна и востребована?
Это явно не для энтерпрайза, я не знаю где для джавы нужен соСи, разве что андроид, но это совсем другое.
Дай угадаю, он бородат и носит свитер? Это, дружок, byte'o'yobis vulgarius. Вид вымирающий, но все ещё встречающийся.
А кроме того, что это очень круто, понимающий в вопросе человек больше ничего не сказал?
Так-то можно дохуя чего выучить, так как это очень круто.
Ещё он интересовался почему я не работаю работу, а читаю на рабочем месте.
>>689318
Свитер не носит, почти не бородат. Но работает в должности "технического директора" средненькой конторы.
Короче, связка не слишком популярная. Обычно с таким багажом нужны системные программисты под оптимизации кастомных JVM, разработка и поддержка софта с embedded Java, ну и просто разносторонний специалист, ибо в конторе Java может являться лишь одной из используемых технологий.
Сегодня в рассылке (вроде с линкедина) видел вакансию от Ignite Technologies (Москва) на Java Chief Software Architect with C++ на 100k$ annual. Но это редкая вакансия. На чисто джаву больше, так что и с ней одной будешь сыт и одет, если не даун.
А если ради интереса изучать, то почему бы и нет. Мне вот нравится системное программирование и байтоёбство, иногда с удовольствием почитываю всякие статьи на эту тему.
Цели? Любые. Ты выбираешь джаву и знаешь, что все пути для тебя открыты. От ссаного веба до разработки программного обеспечения для банков, от разработки приложений на Ведре до написания своего собственного плеера для винды с сортировкой и эквалайзерами/скинами. И все это - Java. Она как математика - очень обширна. И чтобы выучить все ее примудрости нужно потратить много лет. Да это и не нужно никому, лол. В общем, в ОП-посте есть ссылочки для определения твои технологий, отталкиваясь от области разработки. Мандмап и еще что-то под ней.
Ты или тралируешь или совершенный нубас, блеать.
Я жабоеб со стажем, но у меня конечно язык не повернется назвать жабку охуенной.
удваиваю этого
Ну или анриал. Я вообще все это знаю понаслышке, если что. Не шарпист я.
nonZero=((ax1!=0||ay1!=0)&&(ax2!=0||ay2!=0)&&(ax3!=0||ay3!=0))
Тут ты перепутал || и &&.
Забота о возможном переполнении это вообще похвально, понимаю твою логику. Но не уверен, что от тебя ждут биг интеджеров. Хотя хз что у них в голове.
Достаточно проверить две пары сторон. Как-то так https://ideone.com/SoOjgd
А не, не перепутал, сори.
Но всё-таки лучше написать
boolean isZeroSideFound = ((ax1 == 0 && ay1 == 0) || (ax2 == 0 || ay2 == 0) || (ax3 == 0 || ay3 == 0));
Бля, то есть
boolean isZeroSideFound = ((ax1 == 0 && ay1 == 0) || (ax2 == 0 && ay2 == 0) || (ax3 == 0 && ay3 == 0));
можно же написать LinkedList<String> list = new LinkedList<>();
trolls everywhere
Где именно перепутал? Мы для каждого вектора проверяем, что хотя бы одна сторона не равна нулю, поэтому внутри ||. Это должно выполняться для всех векторов, поэтому между скобками &&. Конечно я не сразу про биг интеждер подумал, но чисто теоретически есть варианты, где лонга не хватает. И да, нужно проверять все три пары.
>>689412
Без разницы, одно - отрицание другого. Скорее всего я что-то не учел, но что - непонятно.
Лови спам.
Я тут попробовал сравнить найти корректный набор данных, на которых твой тест фейлится (и наоборот) в диапазоне байта, ничего не получилось. Я думаю, что тест твоего теста - говно.
Вообще это задание от Яндекса, может их тест говно, но вряд ли. Можно еще проверить, что triangle не null, но больше идей у меня нет.
Ты прав, что надо проверять все три стороны. Обновил код на ideone
>ничего не получилось
Почему не получилось?
Не смог таких найти. Тот тест, который я набросал, ни разу не разошелся во мнении с исходным тестом. (хотя я вру: он еще перебирает, но я не думаю, что там _внезапно_ что-то найдется).
>Можно еще проверить, что triangle не null
Бесполезно, эксепшн от нулевого указателя тоже зафейлил бы тест.
А текст задания то есть? Ты уверен, что треугольники с нулевыми сторонами невализные?
Он целился на работу в браузере, а хром бортанул джаву например, потом ораклы пиздобляди. А ну и еще есть более лучшие решения для десткопа.
Ну очевидно, что если стороны нулевые - это вообще не треугольник.
Сам текст задания:
Вам дан интерфейс
public interface Rtriangle {
int getApexX1();
int getApexY1();
int getApexX2();
int getApexY2();
int getApexX3();
int getApexY3();
}
Методы возвращают 6 целых чисел, которые являются координатами трех вершин прямоугольного треугольника в декартовой системе координат
Есть метод, возвращающий прямоугольный треугольник:
public final class RtriangleProvider {
public static Rtriangle getRtriangle() {
...
}
}
Требуется: написать код одного junit (http://junit.org/) теста, проверяющего метод getRtriangle на то, что он действительно возвращает прямоугольный треугольник.
Формат ввода
В тестирующую систему отправьте файл, содержащий ваш юниттест. Не описывайте в решении никакой package, имя основного класса должно быть Testtriangle.
Ниже приведен пример кода, получающего от обёртки треугольник:
import org.junit.Before;
import org.junit.Test;
public class Testtriangle {
@Before
public void setUp() {
Rtriangle triangle = RtriangleProvider.getRtriangle();
}
@Test
public void test() {
}
}
Формат вывода
Тест должен быть проваленным, если треугольник не является прямоугольным, и проходить без ошибок и комментариев, если треугольник - прямоугольный.
Ну очевидно, что если стороны нулевые - это вообще не треугольник.
Сам текст задания:
Вам дан интерфейс
public interface Rtriangle {
int getApexX1();
int getApexY1();
int getApexX2();
int getApexY2();
int getApexX3();
int getApexY3();
}
Методы возвращают 6 целых чисел, которые являются координатами трех вершин прямоугольного треугольника в декартовой системе координат
Есть метод, возвращающий прямоугольный треугольник:
public final class RtriangleProvider {
public static Rtriangle getRtriangle() {
...
}
}
Требуется: написать код одного junit (http://junit.org/) теста, проверяющего метод getRtriangle на то, что он действительно возвращает прямоугольный треугольник.
Формат ввода
В тестирующую систему отправьте файл, содержащий ваш юниттест. Не описывайте в решении никакой package, имя основного класса должно быть Testtriangle.
Ниже приведен пример кода, получающего от обёртки треугольник:
import org.junit.Before;
import org.junit.Test;
public class Testtriangle {
@Before
public void setUp() {
Rtriangle triangle = RtriangleProvider.getRtriangle();
}
@Test
public void test() {
}
}
Формат вывода
Тест должен быть проваленным, если треугольник не является прямоугольным, и проходить без ошибок и комментариев, если треугольник - прямоугольный.
Лучшие решения для десктопа - это какие, например? Qt, конечно, охуенный, но jambi же никто даже не пытается саппортить.
Javafx пока ещё жив, swt тоже. Но пользоваться этим говном после qt не очень хочется. Ну и awt со свингом тоже как бы никто не собирается выпиливать.
А чем все-таки конкретно так ужасен JavaFx по сравнению QT ? QT наверное памяти жрет меньше раз он на С++, а чем еще? мне небольшое приложение нужно сделать - несколько кнопок, полей, простая анимация какая-нить. С++ не знаю
Тебя волнует чужое мнение?
MyClass myInstance = new MyClass();
myInstance.getFive(); // возвращает 5
MyPatcher.reimplement(MyClass.class, "getFive", 8); // или что-то в этом роде, вместо 8 например можно какой-нибудь Runnable, возвращающий 8
myInstance.getFive(); // теперь возвращает 8
MyClass myNewInstance = new MyClass();
myNewInstance.getFive(); // тоже теперь возвращает 8
с помощью java.lang.reflect.Field можно примерно таким макаром переопределить в рантайме значения полей. А мне нужно то же самое, но уже для методов. (И почему в java.lang.reflect.Method нет метода set или reimplement?..)
про ООП прошу не напоминать -- речь идет о рантайм-патче для одного приложения, исходный код которого править нельзя.
Пример сущности (запись подгружаемого плагина):
Nebula.Plugin.Sync,Sync,UI,{Allows to sync data through Nebula Sync Protocol.},{http://2ch.hk/},{web/sync.ico},0,{0.1},true,tk.anonsoftware.nebula.server.core.sync.SyncPlugin,INSTALLED (М)
Самое смешное, что эта хуита работает пиздос как быстро. Темплейты вообще правятся без перезапуска. Локализацию сам написал. И тоже пашет.
Есть вариант отнаследоваться от этого класса, все вызовы методов прокидывать к этому инстансу, а один нужный тебе метод переопределить.
просто приложение пользуется именно оригинальным классом, если я там отнаследуюсь - приложение этим наследником пользоваться явно не будет. Или я немного не понял?
Если референс на оригинальный класс хранится только в одном месте, то можно его тупо заменить.
они там помногу штук создаются. В общем, легких путей нет, я так понимаю. А может можно с ClassLoader поиграться? Ну чтобы при попытке создать com.x.y.z.Original он выдавал мой класс, а все остальное - как раньше?
выкинь MyClass, не закладывай костыли в свой продукт.
Да, с класлоадером всё можно. Или динамически
http://www.ibm.com/developerworks/java/library/j-dyn0916/index.html
https://community.oracle.com/docs/DOC-983723
Но проще всего заменить в .jar-нике класс на свой.
Подмени класс на свой. Гугл в помощь.
System.exit(0) например.
Обосрался с одеждой. Мы вам перезвоним
>>689300
>>689309
Спасибо аноны, смог настроить артефакты. Более менее норм, но если делать изменения например на сигнатуру методов (имя, параметры и пр.), то все равно приходится редеплоить весь проект.
> нахуя тебе оракловый стек? EJB? вот это все
Дали тестовое задание в конторке. Как начал в это вникать прихуел от количества лишней хуиты проекте. До этого делал пару проектиков на спринге обмазанный модными фраемворками в 4 строчки, тут же, нужно создавать какой то ЙобаБизнесМодуль модуль, создавать к нему дескрипторы и прочий нагроможденый кал мех
Kotlin
ну тащемта раз это требуют значит им это надо.
>создавать к нему дескрипторы и прочий нагроможденый кал мех
Ты ебанутый?
В последних версиях EJB просто ставишь аннотацию @Stateless или @Singleton и все.
и все попизде, без понимания как это работает один хуй ЕЕ ты не поймешь
как работает этот метод?
Сорри за оффтоп, как вставлять код с ideone? Парсер сам подтягивает или тэги какие-то писать?
Доставь, пожалуйста, сайтов где я могу искать методы, классы и другую нужную инфу не доебывая анона в тредике.
Двачую этого. Я, конечно, всё понимаю, но что тебе мешало вбить в гугл, не знаю, "String java"?
docs.oracle.com
Будет летать на пекарне 10+ летней давности. Не говоря уже про Raspberry.
Итак, вопрос уровня laba1:
Нужно реализовать систему персональных сообщений. Как это делают белые люди? Знаю про JMS, ActiveMQ и няшнописечные спринговые обвязочки, но знаю крайне поверхностно. Допустим, оно позволяет слать сообщения в каналы вида allo:eba:etoti, можно всю эту радость гонять на вебморду через STOMP. Но, бля, в туториалах захардкожены имена каналов в аннотациях, а мне надо слать конкретным юзерам. Что мне делать? Обзывать каналы айдишниками юзеров(ок, ок, какими-то токенами, генерёнными из айдишников, чтобы типа секурно)? Или подскажете какую-то модную-молодёжную технологию для таких вещей?
Разумеется, я могу это за двадцать минут навелосипедить, чтобы мессаги тупо писались в базу, а потом не менее тупо выгребались селектом по айдишнику юзера, но мне кажется, что это хуита, и в индустрии есть более правильные способы написания таких вещей.
Не уверен, что правильно тебя понял, но посмотри может это? - https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html
Язык ничем не отличается. Просто различные обвязы для разных задач. МЕ - мобилы (сдохло). ЕЕ - жырный ынтерпрайз.
JavaME - кастрированная хуитка под холодильники. Не нужна.
JavaSE - собственно джава, JVM там, JCL, все дела.
JaveEE - набор спецификаций для ЭНТЕРПРАЙЗНЫХ СЕРВЕРОВ. Вариантов реализации овердохуя. В современном джавамирке ты скорее всего ЭНТЕРПРАЙЗНЫЙ СЕРВЕР не увидишь, но используемые в проекте фреймворки будут реализовывать куски J2EE
А вообще, это всё была сановская маркетинговая хуитка, забудь про неё.
А SE это стандарт?
Все, понял, спасибо.
Кстати нет слухов, что в Java N+1 отменят чекед исключения (хотя бы через флаг jvm)?
Нормальные дженерики, более удобные лямбды, куча сахара, null-safety.
Отлично сочетается в одном проекте с самой джавой и позволяет переписывать громоздкие куски в небольшие и читабельные.
Это то я знаю, сам уже перекатился.
Мне про java интересно, ведь ChEx это же бред и даже на уровне байткода их нет.
>Нормальные дженерики
В статических методах не способных на интеграцию с жавой. Просто побаловаться.
Байты не только та мнужны, не надо тут
Ты наверное хотел сказать inline методах, в остальных местах там java-совместимые дженерики.
>>689827
Android (с 3.0) к хранит в byte[] картинки, что бы они были в области управляемой кучи.
Кстати, стоит ли в таких ситуациях использовать do while? С одной стороны, это логично, с другой - он мне вообще не особо нравится, какой-то он, кхм, не интуитивный что ли.
В таких ситуациях следует подумать, не написал ли ты хуйню. У тебя цикл бесконечный. Если line изначально не было null, то оно будет, не меняясь, бесконечно печататься. Ты же не считываешь следующую строку.
А в общем случае, если мы не файл читаем, а что-то другое делаем, и нам нужно, чтобы цикл выполнился минимум один раз?
Тогда - почему бы и нет? Его, фактически, для этого и сделали.
Одноразовый цикл это if.
Если построчно то вот ващет решение https://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#readAllLines(java.nio.file.Path, java.nio.charset.Charset)
laba1.txt насколько большой?
Они java-совместимые, и по этом они не являются нормальными, точнее они такие к каким мы привыкли, а не обвязанные сишарповскими изъебами.
А что ты хочешь?, в C# есть поддержка дженериков на уровне байт-кода, в отличие от java.
Тут и получается что нужные сделанные с нуля свои (несовместимые с java) дженерики.
Но от этого появилась бы куча лишних багов в компиляторе и огромный рантайм.
Они так и планировали, но потому передумали и оставили только в inline.
>К сожалению, мы пока не готовы сделать Вам предложение. Мы могли бы взять Вас на позицию Junior-разработчика, но пока у нас таких позиций нет - на прошлой неделе закрылась последняя.
>Если таковые появятся, я буду держать Вас в курсе.
Мде, программирование в блокноте и определение длины поезда не взлетело. Пиздец, конечно, хочется уже человеком себя почувствовать, когда тебе поступает оффер и ты думаешь, стоит ли идти в эту контору или нет. А на деле на тебя смотрят как на говно и даже если собеседование проходит в стиле "дрочи мой код себе в рот, я знаю, ты любишь отсасывать" ты всё равно думаешь, мол, бля, ну может они меня хоть за еду возьмут, а? Впрочем, это не имеет значения, потому что в конце тебе всё равно проводят вялым по губам. Пойду вскроюсь нахуй тестовое задание в RoI пилить.
Ну так зачем говорить о нормальных дженериках? Хотя вообще не понимаю прелести сишарповских, кроме того что можно без проблем сделать new T[100500]; Это же можно сделать через class, только и нужно его выхватить. А вообще такая зависимость от дженериков - от плохих решений.
нету - значит и не нужно.
В том, что джуны не нужны. Зачем брать человека, учить его и платить за это деньги, если можно взять сразу с опытом. Ну и, очевидно, мало знаю.
А вообще - мистика. Аж на позапрошлой неделе был в одной конторе, дали 3 даунские задачи в стиле "сделайте вставку в начало списка", которые я очевидно решил верно хотя бы из-за того, что ошибиться в них нереально. И что? И нихуя, даже не перезвонили. Самому им позвонить, что ли.
Ну Integer.parseInt об нее сломается, а вот float и double - нет.
А ты в какую отрасль целишься? Просто я под ведро хочу кодировать, может быть, что мы с тобой не понимаем друг дружку.
с кавычками строка, без кавычек double
А что в этом прайзе вообще есть? Чем вы там занимаетесь все? Я просто себе слово "энтерпрайз" ассоциирую с высокими небоскребами и офисами, которые заполоняют куча одинаковых людей.
Примерно так, но этот говнокод не работает
for (int i = 1; i < 100; i++){
table.setModel(new DefaultTableModel(
new Object[][] {
{i, Math.random()},
},
new String[] {
"kek","lol"
}
));
}
никак
Что ты называешь таблицей? Ты короче хуйню какую-то делаешь, ставишь табличку в цикле, вместо того что бы заполнить и вообще.
>тырпрайз считай фреймворк для высоконагруженных приложений.
С горой опыта приходит ощущение, что нет никаких джуниоров, миддлов и сеньйоров, нет никаких лоу-лоад и хай-лоад, есть только твое отношение ко всему этому.
это типа оскорбление было
Да нет, лол, просто стал похуистично относиться ко всему. И всем стажерам советую.
Прочитал почти половину Эккеля, башка уже не переваривает RTTI. Думаю потом вернусь.
Что можно почитать о фреймворкам, какие фреймворки для чего нужны, какие уже устарелы и т.п. Менять буквы в строках на codingbat уже заебало. Хочется начать что-нибудь реальное и учиться уже по ходу. Или надо все-таки сначала Эккеля дочитать?
>Spring in Action
Спасибо, читану. Спринг, как я понял, универсальный фреймворк для тырпрайза?
Реролл!
AMQ позволяет очереди динамически создавать, я думаю. Обратиться к конкретной ты сможешь по селектору.
Хотя зачем тебе именно очереди сообщений я не представляю.
Я бы просто при отправке клиентом мессаги скидывал серверу, а другие клиенты периодически опрашивали бы сервак на наличие новых сообщений.
KISS bro!
Я бы взял mqtt. Совсем изич.
Двачую этого ПОЗНАВШЕГО ИСТИНУ. В приличных местах за баззворды опыт хайлоад разработки обычно бьют в морду.
А некоторые синиоры с 5 годами на деле макаки которые круды ебашили 5 лет или на багфиксе сидели.
9/5 - целочисленное значение, так как в делении участвуют два целых числа.
9d/5, например, починит. Или скобки местами поменяй.
Намек понял, починил при помощи добавления нулевого остатка. Про "d" пока еще не прочитал.
То есть, не нулевого остатка, а нуля после точки, вот.
Вот код: http://pastebin.com/1hWH78n6 (из книжки Хорстманна).
Класс TraceHandler - это обработчик вызова, который определяет, какой метод вызывается + какие-то параметры.
Object proxy = Proxy.newProxyInstance(null, new Class[] { Comparable.class } , handler);
Собственно здесь и создается эта прокси(Класс который она определяет - Comparable, но это же интерфейс, или сюда помещается какой-то рандомный класс, который реализует Comparable? ???).
elements = proxy;
Здесь элементу массива(Object) присваивается объект прокси. Но происходит ли при это cast в Comparable? Или в какой-то абстрактный класс, который реализует Comparable?
Где вообще эти прокси применяются? Сам Хорстманн вот что пишет: You can use a proxy to
create, at runtime, new classes that implement a given set of interfaces. Но когда в рантайме может понадобиться прокси и что вообще такое рантайм в джаве?
http://griffon-framework.org/
Есть какой-то гриффон, на котором можно писать графические приложения, попробуй его, потом скажешь норм он или не норм.
оставь на потом, рефлексия не особо нужная вещь в жабе. а там, где нужна это делают фреймворки.
Сап двощ, нужно запилить очередь, в которую накидываются входные данные. Когда входные данные помещены в очередь, она возвращает уникальный айди. и 4 потока их асинхронно вытягивает, вычисляет результат и кладет в бд. Можно проверять состояние операции, и если она завершена успешно, вытащить результат из бд по уникальному айдишнику.
Сам уже придумал реализацию, но интересно твое мнение. Какие паттерны/классы из стандартной библиотеки ты бы использовал? Java 1.6
JavaFX
>>690371
sql-ex.ru достаточно
>>690376
Вся суть описана в той цитате из Хорстмана, что ты привел. Подаешь на вход список интерфейсов - на выходе получаешь объект, который реализует все их (просто кастишь к любому из них и все сработает).
Рантайм - время, когда программа работает. В компилируемых языках, как Джава, есть ещё compile time (время компиляции).
Потому что программисты из /б/ уверяли меня, что для java консоль вообще не нужна.
Так иде тебе на что?
Все просто.
Описываешь сборку проекта в maven/gradle/ant/sbt.
Делаешь git/mercurial/svn/perforce репозиторий для своего проекта.
Сетапишь nexus/artifactory для хранения сбилдженных артефактов.
Настраиваешь jenkins/teamcity, чтоб они автоматически билдили проект по пушу в репозиторий и заливали артефакт в несксус/артифактори. Если веб-приложение - то еще и деплоить само может.
Итого, делаешь изменение, пушишь, а через несколько минут получаешь готовое приложение. Красота!
Знаю, что одно из последних достижений - это сбор статистики вызова методов и их автоматический инлайнинг в рантайме.
Нужно провести исследование и составить заявку в комитет, чтобы в плюсы добавили реальные фичи, а не уродских клонов буст::асио и буст::файлсистэм.
Иначе в скором будущем упадут и наши зарплаты и ваши, т.к. крестобляди перекатятся в Яву и составят вам неслабую конкуренцию.
Ты из какого года? В большинстве областей кресты с явой сравнивать вообще нельзя, никак.
> одно из последних достижений - это сбор статистики вызова методов и их автоматический инлайнинг в рантайме.
JIT в сановской джаве с 98-го года.
> расскажите что ложка умеет делать по-настоящему крутого, что в перспективе сможет полностью убить вилки.
Подправил немношк.
> крестобляди перекатятся в Яву
Ахаха.
>Ахаха.
Чё, памятью управлять не надо. С битами, байтами и перформансом трахаться не надо. Да и кому нужна оптимизация производительности на современных и7...
Ну а интрерфейсы 2-3 сотен классов любой зазубрить может.
Что такого есть в Яве, чего не сможет осилить среднестатистический советский проектировщик самолётов инженер или школьник, умеющий решать квадратные уравнения?
Так в том-то и дело, что крестобляди придут вкатятся в яву и будут тут байтоебством заниматься, а не по делать.
> Чё, памятью управлять не надо. С битами, байтами и перформансом трахаться не надо. Да и кому нужна оптимизация производительности на современных и7...
Вот потому крестобляди и не перекатятся на яву.
>>690680
То есть вы не можете привести внятных аргументов почему средненький крестопетушок не сможет осилисть Яву?
И вы не боитесь, что тысячи плюсошлюх отнимут у вас работу?
>и будут тут байтоебством заниматься, а не по делать
такого петушка уволят быстро, на его место придёт другой, а первый пойдёт в соседнюю контору и уже не будет заниматься байтоеблей
>потому крестобляди и не перекатятся на яву
Значит они пойдут таксистами амфетамины и шлюх клиентам вдувать?
> почему средненький крестопетушок не сможет осилисть Яву?
Неправильный вопрос. Очевидно, сможет. Но не захочет. Да и не нужно ему это.
> Значит они пойдут таксистами амфетамины и шлюх клиентам вдувать?
Нет, будут дальше на крестах байты ебать.
Нубейший вопрос, можно?
Как мне откомпилировать и запустить это?
http://tim.hibal.org/strolen/times_ultra_new_roman/times_ultra_new_roman_java.zip
сделал
javac *
в каталоге с распакованными сорцами, появились два файлика .class
Потом пытаюсь выполнить
java Main
И нифига.
Хальп плиз!
Нифига всмысле пустой экран или нифига всмсле ошибка? Если первое, то а что ты ожидал собственно увидеть?
Не шути так, кек.
Ты не в той папке вызываешь java. Не лезь в папку с Main.class, будь там, где лежит alientextgenerator.
Открываешь код, видишь в первой строке "package alientextgenerator;"
~/tmp> mkdir alientextgenerator
~/tmp> cp .java alientextgenerator
~/tmp> javac alientextgenerator/.java
~/tmp> java alientextgenerator.Main
~/tmp> ls -l
total 56
drwxrwxr-x 2 anon anon 4096 Mar 17 14:22 alientextgenerator/
-rw-rw-r-- 1 anon anon 48007 Mar 17 14:22 C:\Users\Tim\Desktop\example_sentence.png
Тупая макаба снова съела звездочки
Спасибо, анон.
Хохол в треде!
Кресты используются там где джава не может, так что крестовикам очевидно не нужна джава, а если крестовику захочется вкатится в джаву, ну окей пусть вкатывается, но это явно не хороший крестовик, а просто макака которая не сразу попала в болото джавы.
Ага, в кресты.
Что за непристойности на пике, лол?
Ответь-ка мне лучше на вопрос.
Есть такой-то код:
Calculator(){
winContent = new JPanel();
GridBagLayout gb = new GridBagLayout();
this.setLayout(gb);
Идея ругается на this, не может решить метод. Хотя в книжке для бегиннеров именно так написано. Хочу как можно лучше понять этот момент. В прошлых штуках тоже рукался, но я их как-то фиксил. Юзаю 8 версию джавы.
Может ты не относледовался от какого-то класса(Jframe), и он у тебя метод не видит. Как я могу подсказывать по 3 строчкам, кидай все.
>не относледовался от какого-то класса(Jframe)
Хм, странно, в книжке об этом не говорится. Благодарю.
моар
К нам на первом курсе(1.5 года назад) приходили разрабы игорей для старых телефонов, говорили что работы много, учите джаву.
А как ты там разрабатываешь, вот есть у меня старый телефон нокия аша, джава там точно есть, как с ней что-то сделать?
Под что пишешь? Телефоны или что-то другое?
У нас в бодишопе еще год назад был проект на J2ME для автомобильных хед-юнитов, ты не в этой же сфере?
http://www.tc65.ru и всякие аналоги. Дрянь, короче. Такое ПО, как у нас, на сях надо писать.
ооп-паттерны
>Чё, памятью управлять не надо.
Ну это пока утечку не получил. А там заглядываешь под капот и громко материшься.
Рано или поздно вывалится OutOfMemoryError. Утечкой, конечно, это сложно назвать, т.к. тут намеренно происходит наполнение коллекции без удаления. Утечка -- это когда ресурс, от которого по наступлению некоторого условия, ожидают освобождения занятой памяти, не освобождает её.
>Зачем брать человека, учить его и платить за это деньги, если можно взять сразу с опытом.
Затем, что если не брать, то через несколько лет отрасли пизда.
Кто ж его знает какой шанс? Как повезет. Если ты устроился в какую-то шарагу, то это твои проблемы.
По этому определению в яве вообще нет мемориликов. Однако формальное отсутствие мемориликов тебе не поможет отслеживать и лечить эти ситуации http://zeroturnaround.com/rebellabs/rjc201/
Формально их нет, если это чистая Java без вызова нативного кода или не баг JVM. Ты говоришь о Resurce Leak, частный случай которго - Memory Leak. Утечку ресурсов я тебе легко нарисую.
Есть OCA и OCP. Хорошие сертификаты если хочешь доказать что ты можешь работать компилятором и у тебя много денег.
Это понятно, я для себя программы тоже пишу на Джаве, а вот чтобы деньги на этом зарабатывать в промышленных масштабах есть сисярп. А Джава-то для чего? Для ведроида? Для сокетов ебаных? Холодильнички прошивать?
Иди в одноклассники, там весь бэкенд на Java.
Вообще у огромной кучи контор бизнес построен на Java (к примеру IBM).
Зачем нужен Шарп, если не для вэбовских дел? Формошлепство? На дворе 2016 год так-то.
Да пошел ты нахуй, скоро на асме будем для веба писать.
Тебе говорят бизнес. Сервера и софт они продают для джава-приблуд, а также курсы по подготовке джаваиндусов.
И еще хотелось бы реализовать графическое поле, где можно было, к примеру, поставить подпись. Такое можно?
Вот что пишет Хорстманн:
• Assertion failures are intended to be fatal, unrecoverable errors.
• Assertion checks are turned on only during development and testing.
Что он подразумевает под фатальными, неисправными ошибками?
Во втором пункте он говорит про разработку, то есть код выходит в продакшн без использования assert?
Часто ли вы используете assert в своих программах?
Двачую вопрос, сам не использую, но интересно не настолько что бы гуглить:
1) как это выглядит в байт-коде
2) как включаются/отключаются эти ассеты (флаг какой для HostSpot или как)?
3) что там в Android?
> под фатальными
То что после них программа умирает.
> в продакшн
Да, assert это отладочный инструмент.
> Во втором пункте он говорит про разработку, то есть код выходит в продакшн без использования assert?
Да. Код для компилится с флагом, отключающим ассерты, так что их даже в байткоде не будет.
> Часто ли вы используете assert в своих программах?
Ни разу не видел.
Достоин. Ты пидор.
Если есть ещё варианты, то шли такую конторку подальше.
Спасибо, ананас.
Пиздец, я думал, что перекатившись на Java, я перестану лицезреть лица мерзких людей, как это было в PHP, но не тут-то было, опять какие-то жиробасы уродливые, но все-таки лучше сальноволосых девственных истеричных школьников на пыхе.
Это курсы от мейл.ру, а сам препод писал сервак для аллодов. Так что выводы делай сам. А еще он шатается, как алкаш.
Хорошо, няша, посмотрю.
Ох ты ж, и правда работает, никогда бы не подумал, что всё настолько просто, спасибо.
https://docs.oracle.com/javase/tutorial/essential/io/notification.html
Или так или методами ОС.
>некрасиво
В каком смысле? Сажа - такой инструмент, позволяющий не бампать тред, когда это не нужно. Я никакой негативный подтекст в эту галочку не закладываю.
Если "сюда" - всмысле на борды, то я со времён Педалика тут.
Если - в pr - таки да, я тут почти не бывал. У вас тут какие то свои традиции по этому поводу? Или у вас тут такая скорость постинга, что треды с сажей тонут до бамплимита?
Лол, и если ты сидишь тут со времен Августины, то почему ты не знаешь, что сажа - это выражение отношения к треду.
Мне нравится дескопные приложухи на жаве писать. Но ща занят с другим кое-чем. А так ботов пописать, формочки постилизовать - круто же.
Спасибо, охуенно.
А как вообще работает WatchService? В смысле, как он получает оповещения о событиях?
Я б знал.
>erinnerung
Нахуй ты дойч с инглишем мешаешь?
Что смешного?
Вроде не то. Он ещё через слово заметки для тех что знает С++ делал.
Как я это понимаю: контейнер это оболочка для компонента, а компонентом может быть все, что угодно: от кнопки до поля ввода. Правильно?
Да.
На собеседовании у тебя этого не будет.
если всё-таки будет, то вряд ли. Главное чтобы ты понимал истинное назначение. я просто уточнил для тебя. контейнер может оборачивать как один компонент, так и несколько. насчёт контейнер в контейнере хз. мои познания свинга ограничиваются универскими лабами
>насчёт контейнер в контейнере хз
Да хоть контернер -> контейнер (button, field) + контейнер (label, button, button);
В пакете карп в пакете, что называется.
про окрашивание в разные цвета несколько страниц, и про вывод изображения 1.5 страницы, на этом глава закончилась, можно перечитать и попытаться понять ещё раз
скажите, это ведь не критично?
Если хочешь лучше понимать Swing, палю годноту быдлу:
Иван Портянкин - Swing. Эффектные пользовательские интерфейсы. Там все: от истории разработки до форм любой сложности. Автора хотя бы читать приятно, в сравнении с этим вашим Эккелем.
спасибо за ответ
а вообще понадобится мне Swing в 2016?
я слышал как анончики писали, что сейчас ГПИ программируют онли на Spring`e
Программируют-то на Спринге, а формы делают при помощи Свинга.
ПЕРЕКАТ: >>692136 (OP)
ПЕРЕКАТ: >>692136 (OP)
ПЕРЕКАТ: >>692136 (OP)
ПЕРЕКАТ: >>692136 (OP)
Или предлагай свое, или не пизди.
Хорстман годный для нуба, ящитаю. Получше Шилдта намного. Но трудновато все укладывается. Я из Хорстмана дочитывал по некоторым темам. Есть еще годная у него книжка: Java concepts, вроде, называется.
Лучшие книги, чтобы читать, как по мне - Head First начал читать нулевым нубасом, хотел узнать, что такое класс)), охуел от картинок и ебанутых сравнений\объяснений, многабукаф, чтобы добраться до определения чего-то-там. Но потом дочитывал, все разжевано, схематизировано, объяснено. Если тему прочитал с этими комиксами и долбоебскими картинками - понял охуительно все. А примеры кода - просто супер. И очень интересные примеры. Их хочется набрать только затем, чтобы посмотреть, как такая охуительная прога будет работать.
В общем, я эту книжку читать начинал, но не стал продолжать. (Потому, что у меня уже был Харви Дейтель DD) Хотя, очень годно. Рекомендую всем стремящимся, кому необходимо, чтобы ему на пальцах объяснили, и Harvey Deytel - "Java, how to program" По ней занимался. На английском, но язык простой. (Хотя, я могу в английский, в словарь далеко не каждый день заглядываю.) Охуенно все объясняется. Примеры кода - супер. Каждая строчка кода, по-сути, объясняется дальше. Понимаешь все, перенимаешь стиль автора. А он охуенный препод, ящитаю. В конце каждой главы - резюме по теории, читаешь, повторяешь. Потом упражнения - это самая охуительная фишка. Сначала теорию проверяешь, как освоил. Потом задания делаешь, кодишь сидишь. Охуенно! Практически закрепляешь все.
В общем, по-большей части по Дейтелю я и освоил кор. Чего стремящимся анонам и советую.
Желаю тому анону, который рекомендовал Харви Дейтеля итт, многие перекаты назад, тонны добра, счастья, здоровья!
Вы видите копию треда, сохраненную 10 апреля 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.