Двач.hk не отвечает.
Вы видите копию треда, сохраненную 30 августа 2016 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
302 Кб, 1818x1000
Официальный™ тред Java #39 #806729 В конец треда | Веб
Шапка треда https://github.com/qqqlll/Java-Thread/wiki

Предыдущий тонет здесь >>798959 (OP)
#2 #806759
Первый нах
#3 #806805
Вы че, ебанулись? Какого хуя нет unsigned? Если мне надо индекс массива передать, мне что, блять, каждый раз нужно проверять, что он >= 0?
#4 #806808
>>806805
Нет, не надо.
Вместо этого тебе надо каждый раз проверять, не вылетело ли вдруг исключение. Индекс ведь может оказаться и слишком большим.
#5 #806810
>>806805
Ты дебил отрицательный индекс передавать? Проверяй контракты на стыке интерфейсов.

Ты дебил вообще массивы использовать? Работай с коллекциями.
>>806813
#6 #806813
>>806810
В контракте int, хуле. Передам-ка -142148.
>>806821
#7 #806821
>>806813
А то что int ограниченной точности, это тебя уже не смущает?

Если уж такой фашист - используй библиотеки, в которых Unsigned реализованы в виде объектной обертки (вот только из-за соображений эффективности они обычно mutable и api у них ебанутое из-за экономии на сборке мусора). Но люди тебя не поймут.
#8 #806839
Нет перегрузки операторов, вот что действительно печально.
На днях понадобилось портировать невротебеную формулу на джаву.
В формуле большие числа, поэтому пришлось юзать биг интеджер.

Вот как я заебался переписывать.
#9 #806844
>>806839
имплаинг с языком где есть перегрузка операторов ты б так просто все сделал что у тебя даже сомнений бы не появилось в правильности полученного кода.
#10 #806845
>>806839
http://projects.congrace.de/exp4j/ ?
Хз что там с точной арифметикой. Вообще можно гуглить по builder formula expresssion bigdecimal

http://stackoverflow.com/questions/7258538/free-java-library-for-evaluating-math-expressions
48 Кб, 236x200
#11 #806850
>>806839
Алсо что заставляет вас брать язык не под свои задачи и потом ругаться где-то в интернете на форумах мол язык говно потому что вам не подошел? Ну не подошел язык, так возьми другой. Возьми язык под свои задачи, возьми хаскел, который придуман на математической базе. Отсутствие unsigned int это настолько изощренная мелочная и нереалистичная высосанная из пальца проблема, что вот хуже только спросить почему в Hashtable нельзя положить null.
>>806855>>806914
#12 #806855
>>806850
Как будто кого-то интересует мнение народа из кубиклов.
>>806868
#13 #806868
>>806855
А раз за это еще и платят то вопрос совсем неуместен.
#14 #806914
>>806850
Джава - язык йоба энтерпрайза, где часто считают деньги. Деньги моделируются как BigDecimal. Так схуяли это язык не под эту задачу?
#15 #806939
>>806914
I che blya?
#16 #806942
>>806914
Это где суммы такие оперируются что в лонг не влазят? 9.223372e+18 хватит всем!
#17 #806949
>>806914
Ну раз деньги, значит, формула не "вротебеная". И даже скорее всего реализована в какой-то библиотеке (йоба-энтерпрайз же) и для тебя вообще выглядит как

CompoundInterest.cacluate(1,2,3)
#18 #807105
>>806839
Мог бы в котлине сделать.
>>807112
#19 #807112
>>807105
А мог бы индусу зааутсорсить. Умные мысли то есть? Потому что я не слышал чтобы в котлин какие-то другие bigdecimal завезли.
>>807142
#20 #807142
>>807112
Там перегрузка операторов есть, кловен.
>>807158>>807448
#21 #807158
>>807142
Кловен тут только ты. Дважды уже.
#22 #807211
>>806839
Не могущий в массовую замену регэкспом)000
#23 #807448
>>807142
Ты со скалой перепутал
>>807456>>807563
#24 #807456
>>807448
Ты со groovy перепутал
#25 #807563
>>807448
https://kotlinlang.org/docs/reference/operator-overloading.html

Экстендишь бигдесимикал и наслаждаешься операторами.

Можно сделать отдельный котлин класс имплементящий интерфейс нужных операций и перенести туда код.

Потом в основном коде вызывать через полиморфизм нужную хуйню и всё.
38 Кб, 518x518
#26 #807838
Сап, джависты.
Вопрос: Что пишут на Java? Я студентота по IT-специальности, изучаю Java самостоятельно уже полгода. И тут возник вопрос: а как, в общем-то, вкатиться? Давай-те на секунду представим, что у меня есть некоторый объём знаний, которого будет достаточно для, например, джуниора. Зашёл я на сайтик по поиску работу, увидел, что в моей мухасрани 350к нет объявлению по поиск Java-кодера. Анон, расскажи, как ты вкатывался. С чего начинал? Где и как искал работу?
>>807847>>807853
#27 #807847
>>807838
Проще всего устроиться в консалтинг/интегратор джуном. Пару лет назад вакансий в ДСах хватало.
>>807862
#28 #807853
>>807838

>изучаю Java самостоятельно уже полгода


Надеюсь ты уже понял что Java неудачный вариант для новичка. Язык сложный, возможностей мало, работы тоже мало, а на каждую вакансию десяток макак. Сейчас каждый школьник учит java, а потом не знает что делать с ним. Лучше попробуй Haskell. На нём и конкуренция пониже, и зарплаты больше, и сам язык понятней. Если никогда не занимался программированием, то начинать лучше всего с Haskell - после него другие языки учатся быстрее. Работы полно, платят отлично. По книгам. Если есть хоть немного знаний программирования, читай это: http://www.ozon.ru/context/detail/id/30425643/ Если совсем новичок, пойдет эта книга: http://www.ozon.ru/context/detail/id/28346038/ Ну и куча онлайн-учебников. Вот, например: https://anton-k.github.io/ru-haskell-book/book/home.html Хороший учебник, всё расписано подробно. Сам по нему учился. Рекомендую.
>>807859
#29 #807859
>>807853
Когда я писал свой пост, то, конечно, понимал, что двач - не лучшее место для советов, но блять всё-таки понадеялся на то, что адекваты всё же снизойдут до меня.
>>807866
#30 #807862
>>807847
Чтобы стать полноценным Java-программистом, мне по-любому придётся съёбывать в миллионик или ты можешь подкинуть идейку для заработка в мухасрани?
>>808001>>808018
#31 #807866
>>807859
В смысле? Я тебе добра желаю, не каждый же день приходит нюфаг с таким вопросом.

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

Group root = new Group();
Scene theScene = new Scene( root );
theStage.setScene( theScene );

Canvas canvas = new Canvas( 400, 200 );
root.getChildren().add( canvas );

GraphicsContext gc = canvas.getGraphicsContext2D();

gc.setFill( Color.RED );
gc.setStroke( Color.BLACK );
gc.setLineWidth(2);
Font theFont = Font.font( "Times New Roman", FontWeight.BOLD, 48 );
gc.setFont( theFont );
gc.fillText( "Hello, World!", 60, 50 );
gc.strokeText( "Hello, World!", 60, 50 );
String path = "/resources/earth.png";
Snake.class.getResourceAsStream(path);
// URL location = Snake.class.getProtectionDomain().getCodeSource().getLocation();
Image earth = new Image( path);
gc.drawImage( earth, 1800, 1000 );
theStage.show();
>>808381
#33 #808001
>>807862

>идейку для заработка в мухасрани


Можешь открыть свой стартап, например
#34 #808010
Приведите, пожалуйста, пример использования inner class. Не могу понять на кой черт они нужны.
#35 #808012
>>808010
До Java 8 их часто использовали вместо лябмд
>>808014
#36 #808014
>>808012
Ок, ну а в 8 они не нужны нахер?
>>808026>>809226
#37 #808018
>>807862
Честно хз, что работой в мухосранях, т.к. из своей свалил в ДС сразу после универа. Как вариант вкатится в андроид, написать что-нибудь своё, вообщем заиметь портфолио/профиль на гитхабе и пробовать устроиться на удаленку.
#38 #808026
>>808014
Еще могу это добавить >>801026
sage #39 #808045
... > моча > ... > пехепе > говно > ... > джява = 1С = червь пидор

cега явадаунам
>>808050>>808058
#40 #808050
>>808045
Жаль что всем похуй на твое мнение
#41 #808052
>>808010
Хз, в яве и ее стандартных пакетах повсюду используются
#42 #808058
>>808045
Че там в жс треде? Совсем плохо? WebAssembly пришел?
26 Кб, 649x537
20 Кб, 567x416
#43 #808099
>>808010
Вместо ссылок.
#44 #808226
>>806729 (OP)
Появилась необходимость освоить Java. Занимаюсь на JavaRush. Правильно ли я выбрал ресурс.
>>808236
#45 #808236
>>808226

>Занимаюсь на JavaRush. Правильно ли я выбрал ресурс.


Тоже там занимался, теперь делаю сайтики на ангуляре и бэкенд немножко могу на ноде c(^_0)э
>>808239
#46 #808239
>>808236
Я вообще занимаюсь АСУТП, но очень хочу оттуда уйти. Надеюсь, что в будущем это мне поможет.
#47 #808291
Сап, джавабоги. Что можно читануть чтобы быстро перекатиться с убого шарпа в богоджаву?
>>808297>>808318
#48 #808297
>>808291
SpeakingJS
#49 #808318
>>808291
поясни за убогошарп, плес
>>808320
#50 #808320
>>808318
язык божественен, но, когда дело доходит до ведра, сосёт.
>>808330
#51 #808330
>>808320

> когда дело доходит до ведра, сосёт.


А когда доходит до iOS (в сравнение с джавой)?
>>808331
#52 #808331
>>808330
до ios мне доходить пока не доводилось. моя цель сугубо ведро.
#53 #808340
Что лично ты, анон, пишешь на Java? Что приносит тебе деньги?
>>808415
175 Кб, 848x1200
479 Кб, 2560x1440
104 Кб, 564x797
1142 Кб, 2500x1406
#54 #808349
Сап, джавач.

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

Также буду рад совету знатоков Gradle и Groovy по поводу срипта сборки проекта.

Ссылка на репозиторий - https://github.com/last-khajiit/skype2gitter

пиксрандом
>>808357>>808401
7 Кб, 196x230
#55 #808357
>>808349

> *Utils.java

>>808407
#56 #808381
>>808000
пиздец говнокод
>>808389>>808414
#57 #808389
>>808381
зато трипл
#58 #808401
>>808349
Хороший код: всё по делу, ничего лишнего.
Но в энтепрайзе такое не любят, там нужно чтобы позапутаннее было, с паттернами-хуятернами.
>>808407
#59 #808407
>>808401
ну паттерны должны быть по делу, а когда у меня 4 класса, то городить ДипенденсиИнжекшоны, Стратегии и прочие Фабрики не вижу смысла. Если код будет разрастаться, тогда уже буду думать о таких вещах, пока просто хочу отладить приложение, вычистить хардкод и покрыть это дело тестами.

>>808357

> *Utils.java


что ты хотел этим сказать?
#60 #808413
дайте игру с жавараша про змейку с классами плз.
#61 #808414
>>808381
пиздец это вообще-то не "продакшн", а пробный код посмотреть, как делаются игры, даун тупорылый. уебывай на свой коворкинг нищая мразина.
>>808416
#62 #808415
>>808340
стриптиз танцую - вот это деньги мне приносит, а ты?
>>808417
#63 #808416
>>808414
Если ты говнокодишь осознанно, то нахуй вообще кодить тогда макак? Еще и тут свои высеры постишь, в гости тоже немытым ходишь?
>>808433
#64 #808417
>>808415
DeepBunnyHole не выдумывай. Возьми салфетку.
#65 #808426
>>808428
#66 #808428
>>808426
уноси её нахуй
>>808432
#67 #808431
>>808407

>что ты хотел этим сказать?


Тебе экстеншен-методы для чего даны?
>>808441>>808444
91 Кб, 220x220
#68 #808432
>>808428
Чо злой такой? Смотри гифочка.
>>808439
#69 #808433
>>808416
я спрашиваю, почему картинка не рисуется, проблема уже найдена. нахуй пройди. а пример скопирован с сайта, маня.
>>808443
#70 #808439
>>808432
Спасибо!
#71 #808441
>>808431
В джаве? Их нет блять.
#72 #808443
>>808433
тогда дам тебе один по настоящему ценный совет
дропай этот сайт, хуже чем писать свое говно, это учится на примерах чужого говна, только время потеряешь, а и так придется потом переучиваться
>>808491
#73 #808444
>>808431

>кстеншен-методы


>в Java-трэде


ты не ошибся трэдм?
#74 #808453
>>808407
Пиздец в том, что *Utils - это набор статических утилитных методов, а у тебя utils передается в utils и там начинается какая-то ебатень.
>>808457>>808463
#75 #808457
>>808453
т.е. тебе не нравится название классов?

>*Utils - это набор статических утилитных методов


это какой-то кодконвеншн?
>>808458>>808468
#76 #808458
>>808457
Да. Точнее антипатерн.
#77 #808460
>>808458
не встречал раньше, спасибо, погуглю
#78 #808462
>>808458
В джяву экстеншн методов не завезли, приходится это терпеть.
>>808465
#79 #808463
>>808453

> набор статических утилитных методов


Вроде везде пишут, что это некошерно, и надо делать синглтоны.
>>808473>>808484
#80 #808464
>>808458
ну вот допустим в разных абсолютно автономных классах у тебя используется один и тот же метод, с хуяли тогда вынос этого метода в отдельную АБСОЛЮТНО ЧИСТУЮ функцию является антипаттерном?
#81 #808465
>>808462
Завезли же, в 8-ю, в интерфейсы.
>>808467
#82 #808467
>>808465
Это не то. Если сорцы твои, то еще можно как угарелый навешивать на все подряд интерфейсы, полные дефолтных методов, а если нет?
>>808980
#83 #808468
>>808457
Конвешн-хуйвеншн. Это просто сложившаяся практика. Я бы на твоем месте сделал что-то типа:
class SkypeWorker {
void setCredentials(String login, String passord){...}
void setListener(SkypeListener listener){...}
void start(){...}
}

interface SkypeListener {
void onMessage(String name, String message);
}

Ну а имплементацию интерфейса хоть в анонимным классом, хоть как.

Не бывает на 100% правильного кода, но мой подход считаю понятным для чтения и понимания, а когда написано одно а там другое - это плохо.
>>808471
#84 #808469
>>808458
Не антипаттерн а единственно возможный костыль для Джява.
#85 #808471
>>808468
Спасибо за пример!
#86 #808473
>>808463
На заборе тоже пишут.
Накидай плюсы и минусы каждого подхода и решай сам.
>>808780
#87 #808484
>>808463

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

Какое-то специфическое утилитарное байтоебство - в байтоебном методе.

Вообще ящитаю так, функция для какой-то работы с примитивами или коллекциями однозначно статически в - Utils.
>>808780
#88 #808490
Вы тут такие злые потому что вас либо на работе за доширак тюкают либо работу найти не можете, да? Поэтому вам так печет от тех, кто занимается прогерством в качестве хобби?
>>808493
#89 #808491
>>808443
А в чем конкретно говнокод ты можешь пояснить? в том что сцена рисуется кодом, а не в FXML?
#90 #808492
>>808407

>> *Utils.java


Вынеси это хотя бы в отдельный пакет "common" что бы с бизнес-логикой не смешивались
>>808494
#91 #808493
>>808490
с чего такие выводы? болишьнство комментов по коду выше довольно адекватны и аргементированны
>>808538
#92 #808494
>>808492
по утилзам уже понял, зарефакторю.

А есть спецы по грэдлу? гляньте билд скрипт, плиз
>>808523
#93 #808495
Что можно на спринге написать, чтобы было не стыдно показать на собеседовании?
>>808502>>808781
#94 #808502
>>808495
программу
>>808515
sage #95 #808515
>>808502
Уебище, опять на связь выходишь?
>>808517
#96 #808517
>>808515
дада, я слушаю (:
#97 #808523
>>808494
Пододжди до gradle 3.0, там наконец-то появится статическая типизация и подсказки в IDEA.
#98 #808528
Посоветуйте вкатывающемуся в джаву годную книженцию по сему язык
#99 #808529
>>808528
начинай с haskel для JVM
#100 #808530
>>808528
Thinking in Java, Bruce Eckel
#101 #808532
>>808528
https://www.ozon.ru/context/detail/id/20371540/
Хватил что бы устроиться джуном Luxor
#102 #808538
>>808493
потому что каждый второй коммент заканчивается фразой "иди в мак, с таким говнокодом работу не найдешь". такие жирные проекции.
3780 Кб, Webm
#103 #808543
>>808528
Шапку для кого написали?
#104 #808593
Такс, ебать, поступил на работу джуном, а там в огромном тырпрайз-прожекте javaee чистая, soap, неебическая куча нативных sql-запросов и ант (хотя, они сказали, что скоро на гредл пересядут, слава господу нашему, христу). И, блядь, самое главное - проект-то сделан немцами для немцев, не русскими ваньками. И что, так везде? Залупу за воротник, а не современные технологии?
>>808595
#105 #808595
>>808593
Ну а ты чего ожидал от огромного тырпрайза? Он же до ужаса инертен в этом плане, современные технологии они в молодых стартапах да и то не всегда
>>808598
#106 #808598
>>808595
но это еще ничего, вот в госконторах и некоторых банках
все еще люди на кобол и дб1 сидят
>>808794
#107 #808600
Ну хотя бы сборщик вместо анта в 2016-то можно намутить. Алсо, было забавно sonar прикручивать к этой махине: несколько десятков тысяч code smell'ов и три-четыре багов и уязвимостей.
>>808616
#108 #808616
>>808600

>три-четыре тысячи

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

буду признателен, если пояснишь мне за профиты использования nginx в качестве прокси для java приложений (проще говоря, нахуй оно нужно то?). у меня слишком туго с пониманием этой хуйни, поэтому на пальцах, в несколько предложений, коротко о сути, пожалуйста.
#111 #808682
>>808670
Требования высокие? Так вродеж норм и зп наверное тоже.
>>808684
#112 #808684
>>808682
#Хэштэги#Там#Где#Они#Не#Уместны
Вин-вин, хуин-хуин
Мы такие ПаСиТиФФнЫе!
У нас Фсе ДруК дРуКу улыбаЮццА! =))))))))
>>808687
#113 #808687
>>808684
На это не обращай внимание, а с требованиями что?
#114 #808715
Почему не пашет? Должно увеличивать размер окна на 25 пикс.

http://pastebin.com/s7g9pscC
>>809105
#115 #808778
>>808010
addListener в AWT/Swing типичный пример. Нужны, чтобы не создавать лишних сущностей (имен). Но лучше, где возможно, использовать лямбды.
#116 #808780
>>808473
>>808484
Я использую синглтоны там, где есть данные (т.е. изменяемое состояние), статические методы - как набор чистых функций (как в java.lang.Math).
#117 #808781
>>808495
Имиджборду.
#118 #808783
>>808670

> Но главное, зачем мы с утра спешим на работу - интересные задачи


gans_spb/О программистишках
>>808786
#119 #808786
>>808783
Что такое интересный проект? Например, это постройка марсохода, разработка алгоритмов для работы лунного модуля или там лазарной пушки. На худой конец, поиск лекарства от рака. Но когда какой-нибудь сраный портал или недобитый стартап называют интересным проектом только потому, что так решили его создатели, надо сделать шаг назад и спросить себя — не пытаются ли меня поиметь? Потому что «интересный проект» — такая же абстрактная и сугубо субъективная вещь, как и «вкусный пирожок». Никто еще ни разу не признался, что у них проект скучный и неинтересный, хотя таких проектов 99.999%. Развод из той же темы — «бонусы» и «система поощрений» — это когда ты вкалываешь как проклятый и тебе может единоразово накинут в конце года пару десятков баксов. Дадут на одну ветку бананов больше. Молодец! Возьми печеньку с полки. Заслужил.
>>808809>>808873
#120 #808794
>>808598
В Рашке кобола нет, используют 1C (он появился еще в начале 90-х).
(Visual) FoxPro в госконторах очень любят.
#121 #808809
>>808786
С такой точки зрения фейсбук тоже не интересный проект.
>>808946
#122 #808822
>>806729 (OP)
антоши, в портфолио какие программы сделать?
#123 #808873
>>808786
Интересный проект в таком случае - это если это твой бизнес. Тогда интересный проект. В любом другом случае ты все равно пишешь код и понимаешь, что основная денежная масса течет мимо тебя, а тебе кидают лишь огрызок с барского стола на пол, даже если это 120к в месяц.
>>808946
#124 #808946
>>808809
Не вижу в фейсбуке ничего интересного.

>>808873
Обычно когда говорят "интересный проект", то подразумевают как раз нематериальную заинтересованность. Ну типа как у Linux разработчиков.
>>808950
#125 #808950
>>808946

>как у Linux разработчиков.


А какая у них нематериальная заинтересованность?
Если ты хотел сказать про OpenSource сообщество, то такая работа вроде же не оплачивается?
>>808976
#126 #808970
думаю запилить симулятор фейсбука в командной строке как портфолио. И так, есть ли шансы что меня возьмут жуниором в контору?
#127 #808976
>>808950
Они хотят сделать свободную операционную систему, в которой не будет зондов и ограничений.
#128 #808980
>>808467
Возможно, еще добавят. В кресты вот уже собираются. Лямбды в жабе тоже появились после выхода нового стандарта C++, до этого все жатники кричали, что они НЕНУЖНЫ, и им достаточно анонимных классов.
#129 #809105
>>808715
Ну помоги анон.
#130 #809147
В нашем треде есть пришедшие к успеху? Которые с нуля до работки докачались.
#131 #809151
Чем отличается состояния потока waiting и blocked? И правильно я понимаю, что разница между notify и notifyAll по сути в том что во втором случае потоки которые не займут монитор станут blocked даже елси до этого были waiting?
>>810200
#132 #809170
Ох не могу больше, какая же джава отвратительная. Как будто специально делали как хуже.
Вот нахуя нужен enum, если это фактически класс, а не перечисление? Зачем плодить объекты, если мне нужен простой алиас числа?
>>809217>>809228
#133 #809212
>>809147
В январе 2015 сидел без работы, без опыта и без понимания в какую сторону двигаться.
Сейчас зп 50к милионник мухосранск. Нет тян нет друзей, по вечерам хуярю код.
>>809638
#134 #809217
>>809170
Пора выпускать книгу - как перестать беспокоится о том, что плодятся лишние объекты и начать писать код
#135 #809226
>>808014
Напиши свой однонаправленный лист без использования коллекций.
#136 #809228
>>809170
Jvm может и не будет множить объекты.
Алсо, енамы в лжаве, это не просто алиасы к числам.
Нужен простой алиас к числам – сделай класс с final константными числовыми полями.
#137 #809251
>>809147
В декабре написал хелловорлд. Сейчас 80к+50к квартальная премия.

Но это не мертвая джава, а модный JS и нода.
>>809638
#138 #809255
меня вот муж-олигарх содержит, занимаюсь айти чисто в рамках хобби, чтобы мозг не отуплял, вам печет доширачники?)
>>809266>>809284
#139 #809257
>>808670
лепить жаву на быдловебкодинг - какое же это убожество, просто просер ресурсов.
>>809264>>809268
#140 #809264
>>809257
двачую, джява там не затащит, её место - исключительно на параше кофемолках.
#141 #809266
>>809255
Печет, плохо без куньчика :(
#142 #809268
>>809257
Джва чайка. Пилить бекенд магазина рандомных ключей для ксго на джаве это дичайшее извращение.
#143 #809276
>>808670
ой ну все, бесплатной стоматологией они меня точно уломали, уже бегу паковать чемоданы и заказывать билет в ДС.
#144 #809284
>>809255
Блохо без сельди.
мимо-бохач
53 Кб, 800x331
#145 #809297
только что успешно применила паттерн Strategy в своей змейке. это первый раз.
>>809380
#146 #809303
>>808670
Бесплатная стоматология это новый тренд, просто на западе это охуенный бенефит, ввиду того, сколько там это стоит. Наши жуёбки просто бездумно копируют.
>>809333
#147 #809333
>>809303
У нас нормальный стоматолого дохуя стоит, 2 500 рублей за один зуб, учитывая зп по мухосрани 13 т.р. - это дохуя. У нас же ультра-капитализм, маня.
>>809400
#148 #809380
>>809297
Так сельдь, суп с сиськами быро.
>>809511
6 Кб, 200x195
#149 #809382
Pepe кондер?
#150 #809400
>>809333

>2 500 рублей за один зуб


Минимальный рейт в раше 0.65$, 40$ за зуб.
Минимальный рейт в мурике 8$, 1500$ за зуб.
Итого, в раше дешевле в 3 раза, там блять даже простое обследование >100$ стоит, приходится к латиносам кататься.
>>809406
47 Кб, 604x422
#151 #809406
>>809400
Медстраховка от работодателя? Персональная медстраховка? Obamacare для совсем нищуков? НАХУЙ ВСЕ ЭТО! БУДУ САМ ПЛАТИТЬ ЗА ВСЕ
#152 #809473
>>808670

>3 года


>java core


ну ведь если мозги есть то кор можно и за пол года - год освоить как бог
>>809560
#153 #809498
Охуенно. Решил учить Джаву, скачал какую-то книжку для детей. Вряд ли дети осилят даже первую главу, но похуй. Там предложили скачать еклипс. Так вот, почему в нём вместо черновика запускается класс?
>>809546>>809618
#154 #809511
>>809380
на работу хочешь взять? только учти, за сиське доплатить придется.
>>809547
#155 #809546
>>809498
Ты слишком тупои, иди в ЖС тред. бля.
#156 #809547
>>809511
А вдруг мне не понравицца? Давай смирненько запили супчик, а там посмотрим.
113 Кб, 768x888
#157 #809555
Какую систему сборки посоветуете юному падавану, вкатывающемуся в Java? Ответ аргументируйте, почему именно она.
>>809582>>809583
#158 #809560
>>809473
С мозгами щас не берут. Нужны те, что без мозгов. http://ebanoe.it/2016/07/20/shitcoders/

Кстати, кто-нибудь объяснит мне термин "сыроварня"?
#159 #809577
>>809560
Проходит время, человек втягивается. Вроде и подачки с барского стола неплохие, всё становится таким родным и таким ебаным. Постепенно на его бледных пальцах вырастают перепонки (да, прямо как у лягушек) — так чужое гавно разгребать удобно. И тут БАХ! Тебе пизда. Теперь ты уже и средний код от говна с трудом отличаешь. Теперь ты — ебаная жалкая амфибия. И на следующем стендапе начинаешь новенькому заряжать, чтобы он не впрягался. Круг замкнулся.

БОМБАНУЛО ЧЕТ
>>809578
#160 #809578
>>809577

>да, прямо как у лягушек


Как у ЖАБ.
#161 #809582
>>809555
Мавен для понимания как строить проект, после этого переходить на грабл
#162 #809583
>>809555
Maven. Потому что самая популярная.

>>809560

> сыроварня


Это dou
>>809588
#163 #809585
>>809560

>"сыроварня"


dou.ua
#164 #809588
>>809583
Благодарю. Я тоже подумал, что если щас анон не ответит, то буду использовать maven, т.к. часто упоминается в вакансиях.
Про доу- а за что его так прозвали? Причем тут сыр и украинский айти-форум?
>>809597
151 Кб, 910x302
35 Кб, 1019x450
#165 #809597
>>809588
Из-за популярной пасты про сыр
99 Кб, 900x600
94 Кб, 900x600
#166 #809599
>>809597
Спасибо.
#167 #809610
>>809597
Хохлуши охуели, уже свои мемасы русским людям впаривают!
>>809613
#168 #809613
>>809610
Вам с хохлофобией в политач.
>>809677
#169 #809618
>>809498

> вместо черновика запускается класс


Почему у тебя вместо мозгов используются опилки?
#170 #809628
>>809597
Хочу тоже быть украинским программистом, покупать дорогие сыры за 500 гривен и жрать их.

Заебал уже импортозамещенный сыр залупный с отечественными волосами.
>>809635
#171 #809635
>>809628
Пиздуй на удаленку в хохляцкую галеру же
#172 #809638
>>809212
>>809251
А как практиковались? Книжки ведь быстро забываются или это только у меня так?
#173 #809640
>>809638
А ты и читай, и пиши
#174 #809641
>>809638
Ты просто тупой. Программирование не для тебя - дальше будет еще сложнее. Иди в системные администраторы.
#175 #809648
>>809638
Я же написал. По вечерам хуярю код. Какие-то сложные вещи коммичу на гитхаб как заготовки, ибо запоминать это пиздец. Пару раз вбрасывал даже в этот тренд.
#176 #809677
>>809613
Не, у меня хохлофилия, ты что!
#177 #809701
Нихуя пока не знаю в /pr, рещил учить Жаву, начал с жавараш ? норм ?
>>809702
#178 #809702
>>809701
Кобол выбираешь . Оракал положил хуй на javaEE и сама джава медленно умирает . Будущее за универсальными языками типа JS . Рекомендую .
>>809776
86 Кб, 632x604
#179 #809724
Сап, джависты. Уже полгода изучаю Java и вот недавно заметил, что работодатели по найму Java-кодеров в требованиях, помимо самой Java, указывают ещё и вот этот Web-блок (назовём его так): JavaScript, HTML и CSS, да и много статей читал, где тоже джависты это учат. В общем, вопрос: Надо ли Java-программисту знать вот эти JavaScript, HTML и CSS?
>>809729>>809733
#180 #809725
Посоветуйте книгу на русском , решил начать программировать на Java.
>>809727>>809733
#181 #809727
>>809725
В гугле забанили? Читай Хорстаманна "Java Core".
>>809728
#182 #809728
>>809727

>Хорстманна


Фикс.
#183 #809729
>>809724
надо
#184 #809733
>>809724
Нужно изучать JS, потому что JS нужен как на фронте, так и на бэке, а джава не нужна. Иди к ним в тред.
>>809725
И ты тоже. Только английский еще выучи.
>>809735
#185 #809735
>>809733
Лол. А почему не в Haskell-тред?
>>809746
#186 #809738
а я C#
>>809744
#187 #809744
>>809738
А я твоя мамаша.
#188 #809746
>>809735
Потому что хаскель ненужная параша. Только повыебываться перед самим собой.
>>809798
#189 #809749
Если у меня есть мап <Integer, Object>, и я всегда обращаюсь к ней через примитивный int, будет ли оверхед?
#190 #809754
говорят C# лучше чем java
ето правда?
#191 #809759
>>809768
#192 #809763
>>809749
Анбоксинг.
>>809754
Да.
#193 #809768
>>809759
Погуглил, кэшируются только инты от -127 до 127. Значит, с большими числами будет оверхед.
>>809771
#194 #809771
>>809768
Зачем ты думаешь о оверхеде? Пусть jit думает. Лучше бы программировать начал
>>809773
#195 #809773
>>809771
Просто он не знает что преждевременная эякуляция - корень всех зол
>>809779>>809786
#196 #809776
>>809702

>джава умирает


Уже лет 20 как умирает.
#197 #809778
будущее за C#
#198 #809779
>>809773
Про эякуляцию знаю, но у меня в цикле это хуячится. И погуглив бенчмарки, разница в скорости - десяток раз. Когда я уже сейчас могу парой строчек сделать не мап интеджеров, а обычный Object[].
>>809784>>809786
#199 #809784
>>809749
>>809779
Зачем тебе Object в value? Ты ведь знаешь, что люди Земли изобрели дженерики?
>>809789
#200 #809786
>>809773
Именно
>>809779
А в чем проблема? Приложение уперлось именно в этом месте?
>>809789
#201 #809789
>>809784
Я очень упростил пример.

>>809786
Пока нет. Но мне не сложно вбросить вопрос на сосаку и продолжить кодить другое место.
#202 #809791
Норм ли делать класс abstract без конкретных методов? Чисто по логике у меня получается, что это именно класс, а не интерфейс, и не должно быть множественного наследования.
>>809831
483 Кб, 2300x809
#203 #809798
>>809746
вот тут двачую
если ты не математик или физик то тебе нахуй хаксля не нужна, в прочем если физик то тоже не нужна
мимофизик
btw зацените какие вещи на жабе с биндингами к GL можно делать.
>>809802
#204 #809800
>>809147
2 года изучала несколько яп, сейчас вот стриппухой работаю, зарплата норм.
#205 #809802
>>809798
Говно.

регулярно смотрю стримы одного пиксель-арт артиста
>>809805
#206 #809805
>>809802
Что есть, других художников у меня нет

тоже смотрю стримы одного годного пиксель артиста
>>809806>>809807
561 Кб, 1325x3000
#207 #809806
>>809805
да и суть же не в самой графике блжат
как жопу рвать надо что бы такой результат получить
>>809809>>809826
#208 #809807
>>809805
Твой пиксель артист говно.
>>809813
#209 #809809
>>809806
на планшете бы нарисовал декорации.
мимохудожница
>>809811>>809813
#210 #809811
>>809809
Рисуешь слюной на членах?
>>809816>>809819
#211 #809813
>>809807
он учится, а я движок пилю, что бы когда он научился и нарисовал мне годноту, в эту годноту можно было бы поиграть

>>809809
но я нищий, з\п нихуя
>>809819
sage #212 #809816
>>809811
сексистские шутки за 300 ммм))
#213 #809819
>>809811
на твоем не буду, обиделся?
>>809813
а это обязательно должно быть в квадратах-пикселях?
>>809821>>809825
#214 #809821
>>809819
Спс за подтверждение, хуйдожница))
#215 #809825
>>809819
ну первоначально была идея сделать частично киберпанк пиксель-артом
а частично еще чем нибудь (например акварелью при переходе в параллельную реальность), но пока нашелся только один человек и он (скоро) может только в пиксели
#216 #809826
>>809806
Но зочем это, если можно взять box2d+box2dlights и запилить динамическое освещение любого уровня охуенности, написав всего пару строк кода?
#217 #809831
>>809791
А в джаве и нет множественного наследования. Нет конкретных методов - делай интерфейс. Абстрактный класс тут не нужен.
>>809860>>810047
#218 #809837
>>809826

> box2d+box2dlights


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

+Многому можно научится
>>809843
#219 #809843
>>809837
box2d/box2dlights опенсорсные, тоже можно поковырять. другое дело, что там надо с++ знать
>>809849
#220 #809849
>>809843
нативный что ли?
btw его или хотя бы просто Си и так придется знать когда с графикой работаешь на уровне большем чем просто отрисовка загруженной текстуры
#221 #809860
>>809831
Так вот я и спрашиваю, если сделать его интерфейсом, то можно будет наследоваться от другого класса, что будет нелогично в моем случае.
>>809862
#222 #809862
>>809860
если очень надо то ты можешь наследоваться от неабстрактного класса тоже
>>809868
#223 #809868
>>809862
и сразу сдохнуть от рака мозга, надеюсь
>>809872
#224 #809872
>>809868
Ну сообразность такого поступка это уже тема для другого разговора.
#225 #810047
>>809831
двачую этого
Spring #226 #810048
Пацаны, кто работает со Спринг.
С чего лучше начинать изучать этот фреймворк и java заодно? Как мне создать простое базовое веб приложение, чтобы потом по нарастающей начинать разбираться? За что отвечает spring boot? Это не то, что мне нужно?
>>810052>>810219
#227 #810052
>>810048
либо с книжки spring in action, либо гугли наброски mkyong по спрингу. Другой годной литературы нет по нему.
>>810055>>810056
#228 #810055
>>810052
Мне и не нужна литература. Я бы доками обошелся. Там обширная документация. Только, она не линейная.
spring in action -- я так понял, что это тупо копипаста той же документации... хотя, там, наверняка, как раз есть линейность
>>810059
#229 #810056
>>810052
То есть, документации море. Мне просто как бы упорядочить этот разброс для быстрого старта.
#230 #810058
>>806729 (OP)
Сап, сосоны. Подскажите нубу чем subscribeOn отличается от observeOn в javaRX?
>>810060
#231 #810059
>>810055
SiA - вполне себе линейная.
#233 #810063
>>810060

>Крута что вы сегодня пришил.


Клован ебаны.
31 Кб, 661x615
#234 #810120
Анонимные класс рулят.
sage #235 #810127
>>810120
фу бля
#236 #810139
>>810120

>Eclisp


>Pre java 8


>Inlined declarations


>System.exit


Съеби
>>810149
152 Кб, 900x506
#237 #810149
>>810139
Ява кодер не сразу стал кодером.
#238 #810200
>>809151
Бампушенцкий!
>>810206
#239 #810206
>>810326
#240 #810219
>>810048
start.spring.io
#241 #810220
>>810120

>Анонимные класс


да ты охуел чтоли? для кого java 8 запилили
#242 #810259
>>809826
ты опять выходишь на связь мудило хохлятское со своим бокстуди.
#243 #810265
>>809826
На, там и не только это говно есть.
http://www.java-gaming.org/
#244 #810307
Аноны, как компилировать джава в исполняемый файл? Чтобы скинуть кому-то и он просто взял и запустил?
>>810308>>810310
#245 #810308
>>810307
Ссышь в лицо тому, кто не установил джяву
Используешь launch4j
>>810309
#246 #810309
>>810308
Благодарю.
37 Кб, 842x427
#248 #810313
Анон, хочу написать машрутиризатор своими руками.
Ладно, шучу. Кейс примерно такой (смотри картинку)
Итак, есть, например, 3 воркера, которые посылают запросы на условный target сервер (зеленый круг). Запрос идет в формате обычного restAPI, то есть
[https://example.com/user=1&option=2]
[https://example.com/user=2&option=3]
[https://example.com/user=2&option=4]
1. Запрос выполняется исключительно по защищенному соединению.
2. Ответ в JSON формате.
3. API не передает никаких индификаторов тго, кто запрос послал, поэтому возвращенный ответ по телу идентифицировать нельзя.

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

1. Worker генерирует запрос в формате выше
2. Передает его в Proxy Controller
2.1. Proxy controller присваивает отдельный прокси
2.2. Выполняет запрос.
2.3. Получает ответ.
3. Передает ответ одному из Worker'ов, например, через Load Balancer.

Теперь собственно вопрос - куда гуглить? Есть ли какие-нибудь библиотеки, которые позволяют это сделать менее болезненно? Какие варианты вообще существуют.
>>810328>>810329
#249 #810318
>>810310
хороший линк
добра тебе
другой анон
#250 #810321
Уважаемые java-господа, поясните ньюфагу на пальцах работа сборщика мусора.
В большей части литературы, которую я читал, говорится, что сборщик убивает объекты, на которые ничто не ссылается. Отсюда вопрос: например у нас есть следующий кусок кода. Есть ли вероятность, что сборщик захавает объект созданного MyFrame'а?
[CODE]...
new MyFrame();
...

class MyFrame extends JFrame {
...
}[/CODE]
#251 #810322
>>810321
Заебись разметка работает.
#252 #810326
>>810206
GOOGLE
#253 #810328
>>810313
А что тебе сделать то надо?
>>810335
#254 #810329
>>810313

> куда гуглить?


1. Брокеры сообщений и менеджеры очередей - ActiveMQ, Kafka
2. ESB - Apache Camel или Spring Integration/Batch
Но я думаю это все будет оверкилл. Гораздо интереснее писать самому.
>>810341
#255 #810330
>>810310
И тебе спасибо, анон.
#256 #810331
>>810321
есть
#257 #810332
>>810321
Странный код. Так написать нельзя. Попробуй на пастбин, может нам понятней станет чо ты там не выкупил.
>>810334
#258 #810334
>>810332
Ок, например вот так - http://pastebin.com/SV8j2Fk3
Считается ли мусором new MyFrame(), созданный в мейне?
>>810394>>810398
#259 #810335
>>810328
Мне нужно обращаться к API через разные Proxy Server.
Другими словами, у меня есть запрос к серверу с Rest API: [https://example.com/user=2&option=4]

Вместо того, чтобы его отправлял сам Worker, я хочу, чтобы он шел через Proxy. В целом, я мог бы был назначить каждому воркеру по Proxy серверу, однако один воркер должен генерировать очень много запросов с разными API keys.

На самом деле, план такой. Воркер генерирует запрос без ключа, передает его Proxy Controller, а тот в свою очередь уже выполняет запрос через определенный proxy, но ещё и добавляет необходимый API KEY, а ответ уже передает обратно воркеру.
>>810366
#260 #810341
>>810329
Буду благодарен, если расскажешь немного подробней, я прочитал сейчас в общих чертах. Если не сложно, то как ты представляешь реализацию. Буду очень благодарен.
#261 #810350
>>810310
Публика одних задротов каких-то, костыли и тд, я ебу, нежели на яве нельзя захуячить все без этого?.
#262 #810354
Как в Maven получить jar-файл?
Создал я, например, класс, который выводит в консоль ХэллоуВорлд.
Как в IntellijIdea собрать проект?
>>810357>>810369
#263 #810357
>>810354

>Как в Maven получить jar-файл?


Можешь запилить Shade Build

https://maven.apache.org/plugins/maven-shade-plugin/examples/executable-jar.html
>>810359
#264 #810359
>>810357
Снова XML. Последнее время мне кажется, что иксэмэль файлы за мной следят.
Я думал можно как-то типа далее-далее-готово сделать. Мавен же в Идею интегрирован.
>>810364
#265 #810364
>>810359
Ну это Java. Я могу ошибаться, но, вроде бы, тебе все равно придется написать xml файл для maven'a. А насчет билда - погугли что-то вроде intellij build maven jar.
>>810368
#266 #810366
>>810335
И почему ты думаешь, что Proxy справится лучше чем Worker?
>>810489
#267 #810367
Анон, я читаю туториал, и на моменте https://docs.oracle.com/javase/tutorial/java/concepts/interface.html я нихуя не понял.
Я правильно понимаю, что этот самый interface нужен для того, чтобы заставить класс обязательно обеспечить выполнение всех методов указанных в interface? Зачем это нужно, если так?
Этот самый interface должен быть сохранен в отдельном файле или прилеплен к методу?
Возможно я тупой, но все же.
#268 #810368
>>810364
Хорошо, загуглю. Ну да, Идея геренирует .pom файл с xml-описанием, но мне кажется, это как-то не руками правится.
>>810371
#269 #810369
>>810354

>Как в Maven получить jar-файл?


mvn clean package

>Как в IntellijIdea собрать проект?


Вызовом мавен-таска package
#270 #810371
>>810368
pom это дескриптор сборки мавена, правится руками.
#271 #810372
>>810367

>тупой?


Да, дуй в ЖС тред, там нету такой хуйни.
#272 #810373
>>810367

>Я правильно понимаю


Да

>Зачем это нужно


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

мимо-еще-не-вкатился-в-джаву, формошлепы, поправьте, если неправильно написал.
#273 #810375
>>810367

>чтобы заставить класс обязательно обеспечить выполнение всех методов указанных в interface?


Неабстрактный класс, реализующий интерфейс, должен реализовать все абстрактные методы интерфейса.

>Зачем это нужно, если так?


Если сейчас не понимаешь просто забей, со временем поймешь когда дойдешь до коллекций

>Этот самый interface должен быть сохранен в отдельном файле или прилеплен к методу?


В отдельном файле, как и классы.
#274 #810381
>>810367
учи полиморфизм
>>810933
#275 #810394
>>810334
Ну что же вы, Бетмены? Поясните за сборщик мусора. И за анонимные классы за одной.
>>810399
#276 #810398
>>810334
Создаться-то он то создался, но при следующей сборке умрет, так как на него никто не ссылается.
>>810408
#277 #810399
>>810394
А что с анонимными то не понятно, он держит ссылку на объект в котором его объявили, попробуй посмотреть что из себя представляет декомпилированный анонимный класс и все поймешь.
>>810400
107 Кб, 1152x582
#278 #810400
>>810399
Если посмотреть на твой ответ со стороны не знающего человека, то это полный пиздос.
>>810402
#279 #810402
>>810400
Ну посмотри через призму учебника/гугла. Ну или сходи в js тред.
>>810405
#280 #810405
>>810120
Да не мне не надо, я уже отметился.
>>810402
#281 #810408
>>810398
Окей, но тогда почему при вызове сборщика System.gc() экземпляр продолжает жить?
И вообще, получается ссылки на все, чему я хочу гарантировать вечную жизнь, должны хранится в переменных экземпляров? Ведь локальные переменные исчезают после завершения метода. Нипанятно короч.
>>810411>>810422
#282 #810411
>>810408
Сборщик Мусора, пашет сам-по-себе, вот нахуй тебе это? Там всего-то пара никчемных методов. Когда-нибуть вернешься еще.
>>810418
#283 #810418
>>810411
Да сборщик - дело второе. Вопрос в том, столкнусь ли я с неизвестными проблемами если продолжу писать так, как продолжу.
#284 #810422
>>810408
Потому что в Frame возможно хранится ссылка на самого себя же, GUI поток с ним работает и так далее.

Если сделать класс

class Pidor {

Pidor inner;

Pidor() {
inner = this;
}

}

То сборщик мусора его не уберет.

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

Сборщик мусора собирает то, до чего уже из кода программы никак не добраться.
>>810424
#285 #810423
>>806729 (OP)
Как вычислить степень, используя только побитовые операции?

Например, как вычислить 2^n, используя только &, |, ~, ^, <<, >>,>>>
>>810464
#286 #810424
>>810422
Благодарю, уважаемый. Разложил по полкам.
#287 #810426

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


Забыл добавить, что за редким исключением типо weakhashmap.
>>810427
#288 #810427
>>810426
Хотя это вроде тоже не исключение. Пока ты можешь вытащить объект из weakhashmap то на GC ему похуй, а когда не похуй, то и в weakhashmap его уже не будет.
#289 #810428
Вот я все думаю, использовать ли эксепшены в паблик методах.
Допустим, у нас есть сущность ItemHolder. В конструктор передается его размер. Есть несколько вариантов, что мы будем делать:
1) Принимаем int size и сразу делаем new Item[size]. Если size отрицательный или слишком большой, нам похуй.
2) Принимаем int size и добавляем проверку if (size < 0 || size > MAX_SIZE) throw [...]. Скорее всего, выбросим unchecked-исключение. Но тогда смысла мало в этой проверке. Только чтобы раньше крашнуться. И если мы принимаем size в 10 методах, в каждом придется делать эту же проверку.
И вот я чисто логически пришел к такому варианту, скорее всего, он уже где-то описан:
3) Создаем свой тип ItemHolderSize, который гарантирует, что заинкапсулированный int в правильном диапазоне. Принимаем ItemHolderSize size и спокойно делаем new Item[size.intVal()]. Обработка ошибок уже на вызывающей стороне.
Какие подводные камни, кроме оверхеда?
>>810430
#290 #810430
>>810428
А если кто-то отрицательное число отправит в твой класс?

Хуйню несешь какую-то. Выбрасываешь анчекед эксепшон и не ебешься.
>>810431
#291 #810431
>>810430
Лолчто? При создании объекта ItemHolderSize, очевидно, он и сделает эту проверку в конструкторе. Если отрицательное отправят, соснут хуйца и не смогут вызвать метод, принимающий ItemHolderSize.
>>810432
#292 #810432
>>810431
Чем блядь

new ItemHolder(-10);
отличается от
new ItemHolder(ItemHolderSize(-10));
?
>>810436>>810439
#293 #810436
>>810432

>new ItemHolder(new ItemHolderSize(-10));


Фикс.

Тупой ебанат какой-то, выбрасываешь illegal argument exception со значением размера и тебе потом спасибо скажут.

А если делаешь говно под себя, то можешь хоть abs брать и потом ебаться с поиском ошибки.
#294 #810439
>>810432
1) Не надо в каждом методе проверять диапазон
2) Исключение выбрасывает вызывающий метод, а не метод мой библиотеки
Ну и твое использование высосано из пальца. Обычно это будет:
byte[] buffer;
try { ItemHolderSize.parse(buffer) }
catch () {}
>>810443>>810448
flush and close #295 #810440
Котаны, в каких случаях поток закрываем только через .close() , а в каких - с добавлением .flush()?
>>810495
#296 #810443
>>810439

>Не надо в каждом методе проверять диапазон


Ты в конструкторе не можешь выкинуть исключение? Ебанат?
>>810453
#297 #810448
>>810439
Вот тебе еблан пример, как надо поступать.
Вызови new ArrayList<>(-10);
И глянь как умные люди делают.
18 Кб, 437x567
#298 #810453
>>810443
Блять, это простой пример был.
Вот конкретно. В конструкторе проверили size, ок. Но у нас еще есть геттер, сеттер, хуетор, каждый из которых принимает slotId. И каждый раз приходится проверять диапазон slotId. Даже если эту проверку в отдельный метод isInRange() вынести, это все равно хуита.
>>810460
5 Кб, 482x117
#299 #810460
>>810453
Ещё раз, смотришь исходные коды колекшонс фреймворка и учишься, даунич.
>>810469
#300 #810464
>>810423
1 << n
#301 #810469
>>810460
Ну и это лал, что сказать. Если с тем же аргументом вызываются несколько сетов или гетов, будут лишние проверки.
>>810478
#302 #810478
>>810469
Ты серьезно думаешь, что 2 сравнения примитива в инлайнящемся блоке медленнее чем вызов гетера из твоего класса-обертки?

Какой же ты мудель, ой блядь.
Тебя ещё обоссать надо за дрочку на скорость.
>>810486
#303 #810483
Анон, я походу ебусь в глаза, но где тут идей тред? Вроде раньше был, а сейчас не могу найти.
#304 #810485
>>810483
Конечно-же внутри джава треда.
#305 #810486
>>810478

>чем вызов гетера из твоего класса-обертки


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

Тут дрочка не на скорость, а на качество кода. Гораздо приятнее видеть в примитивных методах саму их суть, а не какую-ту хуиту вроде ckeckRange(), повторяющую в каждом из них.
#306 #810487
>>810483
А как тебе такая идея - ИДИНАХУЙЖУЕБОК >>719798 (OP)
>>810490
#307 #810488
>>810490
#308 #810489
>>810366
Потому что Worker - просто обрабатывает данные и сохраняет их. Мне же надо скрыть местоположение этого воркера от api сервера. Не суть зачем, просто спрашиваю рекомендации.

Анон написал про шину предприятия и прочие тулзы для интеграции платформ, но я не совсем концептуально понимаю, что он хотел мне этим сказать.
>>810498
305 Кб, 1135x633
#309 #810490
>>810488
>>810487
Да, спасибо. Макака заговнила поиск.
#310 #810495
>>810440
flush используется в процессе работы с потоком, close неявно вызывает flush перед закрытием
#311 #810498
>>810489
Ты можешь применить паттер consumer-producer с помощью BlockingQueue, и сделать так чтобы прокси брали результаты выполнения волкеров из этой самой очереди. Если еще больше абстрагироваться, ты можешь заюзаать для этого ExecutorService. Пролистай два или три треда назад, я уже объяснял это одному анону недавно, как ознакомишься задавай вопросы.
>>810503
#312 #810503
>>810498
Про все это я знаю. Тут вопрос в другом. Есть ли какие-нибудь продвинутые технологии для этого?
Создать список проксей и как-нибудь его мэтчить - никаких проблем.
Другое дело, решение очень костыльное будет, как по мне.
>>810519
#313 #810519
>>810503
Если уж быть до конца честным, я не понял что ты вообще хочешь. В частности, я не понял этих странных фраз:

>скрыть местоположение этого воркера от api сервера.


>я хочу, чтобы он шел через Proxy


что ты имеешь ввиду под Proxy - сервер или какую-то сущность?

>На самом деле, план такой. Воркер генерирует запрос без ключа, передает его Proxy Controller, а тот в свою очередь уже выполняет запрос через определенный proxy, но ещё и добавляет необходимый API KEY, а ответ уже передает обратно воркеру.


т.е. ты хочешь чтобы worker работал на два фронта: генерировал запросы и принимал результаты от ProxyContainer-а?

Если я тебя правильно понимаю, ты хочешь чтобы воркер и прокси ассоциировались как один к одному, так?
Тогда почему бы тебе не выделить интерфейс из прокси и научить воркера работать с этим интерфейсом, а конкретную реализацию подпихивать в конструктор воркера при каждом создании воркера? IoC или DI хз как по-умному. Воркер не будет знать ничего про реализацию твоего прокси, только про интерфейс.
>>810526
#314 #810526
>>810519
Блин, так и понял, что спутают с proxy шаблоном проектирования.

Суть в чем.
Есть некий API сервер (не мой), который не должен знать откуда конкретно идет запрос.

Есть список Proxy серверов, которые гоняют тафик через себя. Тупо сервера, которых в интернете навалом.

Есть воркер, который должен сохранять данные в базу.

Запросы, которые посылают воркеры:
[https://example.com/user=1&option=2&api_key=?]
[https://example.com/user=2&option=3&api_key=?]
[https://example.com/user=2&option=4&api_key=?]

Соответственно, у меня идея такая. Воркер генерирует запросы без api_key. Меняет user, option и т.д.Передает их на контроллер proxy серверов.
Тот в свою очередь добавляет api_key и отправляет запрос через proxy сервер к api серверу.
Получает ответ и отправляет его обратно воркеру.
>>810549
#315 #810549
>>810526
Короч. Хз. Как бы сделал я:

--- App.class#main(String[] args) ---
ExecutorService service = Executors.newFixedThreadPoolExecutor(100);
for (String url:proxyUrls) {
service.submit(new Worker(url));
}
service.shutdown();

--- Worker.class ---
public class Worker {
private String url;
Worker(String url) {this.url = url};
public void run() {
// do call to proxy
// save results to database
}
}

Комментарии:
Я предлагаю создавать тредпул и наполнять его воркерами, задача которых преобразовать url, обратиться к api через прокси на свое усмотрение и сохранить результат в бд. Потом из бд уже отдельно доставать и анализировать удобными для этого средствами. В воркере нечего анализировать (по крайней мере ты не написал что хочешь что-то анализировать), поэтому результат хранить в воркере тоже нет смысла, пусть убиваются garbage collector-ом.
>>810617>>810759
#316 #810617
>>810549
В этом и проблема. У меня в воркере довольно много аналитики идет.
Есть несколько причин, почему я хочу отделить Proxy от Worker, так как через прокси пойду разные запросы (и не все воркеры их смогут обработать).
Во-вторых, я хочу организовать микросервисинг с эндпоинтом, который будет собирать статистику. И вообще все на Spring переписать, так как по ощущениям - ебусь с гвоздатым дилдаком.

Другими словами нет никаких библиотек, которые помогут мне это организовать?
#317 #810621
Нахуя делать дефаулт методы в интерфейсах? Разве это не порождает проблемы множественного наследования?
#318 #810644
>>810621
Поэтому их совсем немножко добавили, там где без этого нельзя.
К примеру: у Scala в Iterable 116 дефолтных методов, а в Java завели отдельный класс Stream.
#319 #810651
>>810621
Если дефолт метод реализован то дефолт реализация скрывается. Никаких проблем нет.
>>810673
1476 Кб, Webm
862 Кб, Webm
#320 #810673
>>810621

>Нахуя делать дефаулт методы в интерфейсах?


Видео 1

>>810651

>Никаких проблем нет.


Ну несовсем (Видео 2)
>>810688
#321 #810688
>>810673
У меня от этих видео МЕТОД ФУ и ИНКОМПАТИБАЛ ЕРРОР.
#322 #810698
rебята, посоветуйте какой-нибудь пак для веб-приложения что-то типо http://www.ibm.com/developerworks/ru/library/j-appfuse/index.html
для создания простого приложения для такси, для себя, недавно начал изучать джаву. Просто не знаю в какую сторону гуглить
#323 #810759
>>810549
http://stackoverflow.com/questions/38707795/building-proxies-hub
Я накатал вопрос ещё раз, только он, к сожалению, на английском. Может быть, будет понятнее, чего я хочу.
>>810844
#324 #810844
>>810759
Накатай реализацию а мы посмотрим что там хуево. А может и сам увидишь.
>>811272
#325 #810849
Пришла в голову идея перенести java EE 7 приложение из ear-ки под wf в osgi контейнер karaf.
Веб часть с jsf на spring переписать.
ejb + jpa видимо тоже на spring спортировать.
таймерные бины тоже реализовать как то внутренними средствами.

Какие профиты кроме изучения новых технологий?
>>810851>>810858
#326 #810850
>>810621
Проблемы множественного наследования возникают при наследовании классов. У интерфейсов нет внутреннего состояния, и с этим проще.
#327 #810851
>>810849

>Какие профиты кроме изучения новых технологий?


Spring не нов.
>>810852
#328 #810852
>>810851
Я про osgi и формирование бандлов под него
До этого я только с JЕЕ работал.
#329 #810858
>>810849
Как по мне так переливание из пустого в порожнее. Кроме как для изучения таким заниматься щитаю не стоит.
9 Кб, 469x324
#330 #810901
27 мегабайт на это окно, охохоохох.)
#331 #810913
>>810901
ДЖАВА
Ж
А
В
А

ЭКОНОМНА
К
О
Н
О
М
Н
А
sage #332 #810918
>>810901
Фу фу нахуй.
Это что такое? Windows XP?
#333 #810929
>>810901
чет мало
#334 #810932
Посаны, в этом есть какая-то логика или это ошибка разработчиков языка?
http://ideone.com/ki21LG
>>810943>>810945
17 Кб, 450x450
#335 #810933
#336 #810936
>>806805
Use assert, Vader.
#337 #810943
>>810932
String x = "qwe";
String y = x; 1 раз присвоил и сьебал
x = "asd"; поменял х, у равно qwe
//y = x;mycode, присвоил y'ку новый икс
System.out.println(y);
#338 #810945
>>810932
Строки неизменяемым, x и y - ссылки на конкретные объекты. При присвоении двигается сама ссылка. Если тебе нужны алиас к имени переменной, то в джаве их нет.
>>810949>>810969
#339 #810949
>>810945
Зачем присваивать значения одной переменной к другой переменной, они же будут иметь одинаковые значения, зачем?
#340 #810969
>>810945
Я это знаю. Но это уже реализация, она не должна влиять на логику выполнения. По логике при присваивании любого объекта должна просто присваиваться ссылка, объект не должен копироваться. Строка это объект. Я знаю, что на самом деле строки не копируются, а там просто ссылка ставится, потому что строки иммутабельные, но это уже реализация, а с логической точки зрения они копируются.
>>810987
#341 #810981
Кто хостился на heroku? Какие у них условия виртуализации, типо сколько мне будет выдано озу, hdd, трафика и прочего? У них на сайте не могу информацию найти.
>>811004
#342 #810987
>>810969
что куда копируется? была ведь строка "qwe", на нее, т.е. на один объект, ссылались две переменные x и y, ты изменил содержимое x, теперь создалась новая строка "asd", но y-то продолжает ссылаться на "qwe"
#343 #811004
>>810981
7 баксов в месяц самая дешевая подписка https://www.heroku.com/pricing
ОЗУ там же. Максимальный допустимый обхем jar-ника емнип 300 мб, а статик контент хранить на хероку вообще нельзя из-за его микросервисной природы, если ток юзать cdn какойнить. Алсо можно бесплатно пользоваться если у тебя будет бот который будет твой сайт дергать раз в 30 минут.
#344 #811043
Аноны, я так понял в джаве нет просто функций, а только классы и методы? Вот мне понадобилось рандомное число. В пхп я знаю есть ф-ция mt_rand(). А тут для этого надо новый класс создавать?
>>811046>>811051
#345 #811046
>>811043
Math.random() округлишь до целого сам.

Или напиши функцию
fun mt_rand() = Math.random().toInt()
#346 #811051
>>811043
Функции = методы. Привыкли к своему JS бля.
#347 #811123
>>809754
Разница примерно как между говном и мочёй.
#348 #811129
Анон, подскажи, как запилить тунель через проксю в Java. setProperty - не вариант.
>>811272
#349 #811272
>>811129
>>810844
Короче. С проксями я вычитал про класс Proxy
Запилил что-то типа
new Proxy(Proxy.Type.HTTP, new InetSocketAddress("host", port));

В итоге на Proxy Controller будет коллекция в формате
Timestamp=>ClientObj
Где Timestamp - время последнего вызова объекта.
ClientObj - собственно объект с хостом\портом + всякие другие важные данные.

Worker будет отсылать в json формате запросы к Proxy Controller, тот будет их выполнять и возвращать результаты обратно в контроллер.

Другой вопрос:
Поясните за Camel/Integration. Мне понравилась идея с шиной предприятия, потому что если воркер помер, то его просто перезапущу и т.д.
Однако мне не совсем ясно принцип хранения и передачи информации.

Вот Proxy Controller отработал, отправил данные в эту шину, а дальше что?
>>811274
#350 #811274
>>811272

>Однако мне не совсем ясно принцип хранения и передачи информации.


Кемл и не хранит данные нигде сам. Он их только отрабатывает. Так что тебя ждет еще очередь activemq.
А что за хуйню там ты с проксями себе понавыдумывал, я не понялл.
>>811275
#351 #811275
>>811274
Как я выше писал - мне нужно отправлять запросы через разные прокси. Я знал про System.setProperty, которая позволяет задать host/port, но мне надо чтобы на одной машине использовалось сразу несколько прокси-серверов.
>>811278>>811279
#352 #811278
>>811275
Я не знаю, когда я слышу прокси и http, мне на ум приходит nginx. Но точно не java. При чем там систем проперти я вообще не понял.
>>811284
#353 #811279
>>811275
Олсо, вопрос про endpoint'ы. Я хочу всю мою хуйню переписать на Spring. В частности в проекте есть воркеры, proxy_controller, веб-морда и т.д.

Все это оформлено в мелких *.jar файлах, которые выполняют каждый свою задачу. Куда гуглить, анон?
>>811282
#354 #811282
>>811279

>Все это оформлено в мелких *.jar файлах, которые выполняют каждый свою задачу. Куда гуглить, анон?


Ты сначала реши зачем ты что-то делаешь, а потом уже гугли. "Хочу на спринг" - это глупость какая-то.
>>811428
#355 #811284
>>811278
Ну смотри. Есть удаленный api сервер. Я хочу к нему подключиться.

Вариант первый:
Я подключаюсь к нему напрямую. (Ну думаю никаких вопросов)

Вариант второй:
Я подключаюсь через proxy сервер (сервер между моей платформой и api сервером).

Меня интересует второй вариант. Соответственно, воплотить это в жизнь можно:
https://docs.oracle.com/javase/8/docs/technotes/guides/net/proxies.html
Либо
В Java 1.5 + появился класс Proxy, через который можно работать.
>>811287>>811290
#356 #811287
>>811284

>Вариант второй:


>Я подключаюсь через proxy сервер (сервер между моей платформой и api сервером).



При чем здесь java? Я вот чего не понимаю.
>>811428
#357 #811290
>>811284
Ты собрался с десятю апи ключами тягать данные с гугл мапс что ли?
>>811428
#358 #811350
Как лучше удостоверить, что нельзя создать больше одного объекта с определенным значением поля (guid)?
То есть в идеале мы могли бы десериализовывать объект из базы в конкретный объект в памяти.
>>811356
#359 #811356
>>811350

> нельзя создать больше одного объекта с определенным значением поля (guid)?


GUID внезапно уникальны.

> То есть в идеале мы могли бы десериализовывать объект из базы в конкретный объект в памяти.


Берешь и десериализуешь. Все.
#360 #811381
Я нипонил, тут че нильзя циклом хуйню в массив захуячить?
>>811382>>811389
#361 #811382
>>811381
Не, это же ДЖАВА.
>>811383
#362 #811383
>>811382
А как же его тудой?
#363 #811389
>>811381
В смысле хуйню в массив захуярить? Форичем конечно нельзя, простым for (int i = 0; i , n; i++) конечно можно.
>>811394
#364 #811394
>>811389
А под фор чегой писать? Add?
>>811409>>811433
#365 #811409
>>811394
hui = pizda;
>>811411>>811427
#366 #811411
>>811409
лол, скобки сожрало
hui[
i
]
1338 Кб, Webm
#367 #811427
#368 #811428
>>811290
Ну типа того. В целом именно к этому и сводится. >>811287
Несколькими постами выше я спрашивал: бля, анон, придумал хуйню. Есть ли идеи какие-нибудь. Ничего не ответили.
Если у тебя есть идеи, как сделать ассоциацию token => proxy[host/port] без кучи серверов и без использования Java, то буду безмерно благодарен, если расскажешь об этом. Так как желания ебаться с этим вообще нет никакого.
Однако другого решения я не вижу. Мало того, что мне нужна связка proxy=>token, так как на другом ip токен считается недействительным, так ещё и proxy могут дохнуть, их нужно отлавливать, досыпать новые и т.д. Я не представляю, как сделать это без собственной реализации.

>>811282
Окей. Разъясняю. На данный момент есть несколько десятков воркеров (это именно виртуальные машины, на которых запущены приложения, которые делают запросы и обрабатывают их). Работает все, конечно, заебись, но недостаточно.

Сначала возникла необходимость разворачивать и убивать их автоматически. Можно через cli какой-нибудь делать, но это все равно ручной труд. Захотелось кнопочку в веб интерфейсе, которая все сделает за тебя.

Затем возникла проблема: а что если воркер сдыхает? Надо его перезапустить. Надо допилить кнопочку, которая перезапускает.

А как понять, что воркер сдох? Надо чтобы он отсылал статистику. Как это делать? Ну какой-нибудь Rest API, который сообщает состояние.

В итоге таких кейсов набралось дохуя. Я стал гуглить, а что же есть в Java, чтобы из коробки сделать быстро и эффективно приложение с Rest API, но так чтобы много не ебаться.

Нашел Spring, который решает всю мою боль. Подкупили их туториалы, которые обозначают required time: 15 minutes. Почитав, я пришел к выводу, что прямо сесть и поехать - не выйдет и придется разбираться. Однако альтернативы придумать не могу.

Следовательно, возникает вопрос: а как вообще организовать разворот всего проекта: воркеров, прокси, базы, etc? Решил спросить тут.
#369 #811433
>>811394
Ты куда пихаешь и что блять? В массивы нельзя пихать, они не ресайзятся, ты им один раз место выделил и обращаешься по индексу. В списки можно добавлять с помощью add(obj). Можно вставлять внутрь списка по add(int, obj), но только если у коллекции УЖЕ такой размер, причем не зарезервированный, а именно использованный. Так что если тебе просто заполнить список то просто add().
final List<Integer> list = new ArrayList<>(10); //10 это резерв, а не размер, размер равен 0
for (int i = 0; i < 12; i++) list.add(i);
Теперь размер 12, а зарезервированно скорее всего больше, зависит от реализации.
>>811444>>811463
#370 #811444
>>811433
Годно расписал, а можешь так только компаратор?
>>811541
1518 Кб, Webm
#371 #811463
#372 #811467
Вот есть parent класс и child с override паблик методами, которые вызывают методы родителя через super.
Где проверять входные аргументы и бросать исключение: только в parent, в parent и child или только child?
#373 #811541
>>811444
А что про него писать-то? Интерфейс с методом который сравнивает для объекта и должен вернуть отрицательное число если первый меньше второго, 0 если равны, и положительное если первый больше. По сути это создание отношения по какому-то признаку. В восьмой джавке добавили дефолтный метод equals, хз зачем, он кажется просто проверяет что результат сравнения равен 0. Ах да, аргументы на налл можно не проверять, ожидаемое поведение что туда не будут передавать наллы, а если передадут то он упадет с налпоинтерэксепшн. Используется во время сортировок в основном.
#374 #811566
>>811428
Анончики, вы хоть скажите, что я долбоеб или дайте совета. Без фидбека очень тяжело сидеть. Я уже просто в объемах документации теряюсь. Скажите, что не понятно - я схемы всякие нарисую, объясню, что хочу сделать и т.д.
>>811591
#375 #811590
>>811428

> а что если воркер сдыхает? Надо его перезапустить.


Не надо, он просто ловит все исключения и логгирует.

> А как понять, что воркер сдох?


Поймал исключение или 4xx/5xx ошибку от сервера.

> Ну какой-нибудь Rest API, который сообщает состояние


Пиши все операции в БД.

> воркеров


Просто очередь runnable.

> прокси


В БД с вебуем для круд операций.

> базы


В фоне крутится pg/maria. В приложении только миграции.
>>811591>>811637
#376 #811591
#377 #811637
>>811590
Примерно такое решение сейчас и работает, только беда в том, что слишком много проблем возникает при эксплуатации этой системы.

Хочу отметить, что это все же не простая приложуха, которая полчаса отработает и будет заброшена в папку old_projects, а небольшая платформа, которую я хочу крутить 24/7 и не сидеть перед монитором, проверяя корректность её работы.

Какие же проблемы сейчас возникли:

База данных. Использую Postgresql, но она как-то слабо вывозит. Конечно, существует вариант арендовать очень дорогую базу, но это мне не по карману. Речь идет о пропускной способности в 100 000 insert'ов в секунду и примерно 1000 update'ов в секунду. Сюда ещё добавим вариант с тем, что в БД будет отправляться статистика работы + всякие meta данные.

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

Следующая проблема - объем данных. Postgresql, который я могу позволить себе, уже не особо вывозит его. Простенький join уже занимает около 70 секунд. (inb4: у тебя запрос хуевый). Есть одно решение, которое удовлетворяет потребностей, но оно не поддерживает update/delete операций, что совсем не вписывается в рамки этой задачи.

Закрыв глаза на то, что было пару кейсов, когда нужно было перезапускать воркеров, я столкнулся с ситуацией, что их нужно иногда выключать, когда обрабатывать нечего. Развернуть 10 воркеров довольно легко, но когда речь идет о 100? Ну можно всякие knife и прочее использовать, но как по мне - это ад.

С прокси вообще отдельная тема. Token, который завязан с proxy, имеет несколько состояний, которые мне крайне необходимо знать.

В итоге сталкиваюсь с тем, что как бы я не хотел, все равно надо запилить какой-то main app, который дирижирует этим цирком уродов. Идея с шиной предприятия мне очень понравилась, так как как раз этот роутинг очень и очень нужен, чтобы приложения могли общаться между собой.
#377 #811637
>>811590
Примерно такое решение сейчас и работает, только беда в том, что слишком много проблем возникает при эксплуатации этой системы.

Хочу отметить, что это все же не простая приложуха, которая полчаса отработает и будет заброшена в папку old_projects, а небольшая платформа, которую я хочу крутить 24/7 и не сидеть перед монитором, проверяя корректность её работы.

Какие же проблемы сейчас возникли:

База данных. Использую Postgresql, но она как-то слабо вывозит. Конечно, существует вариант арендовать очень дорогую базу, но это мне не по карману. Речь идет о пропускной способности в 100 000 insert'ов в секунду и примерно 1000 update'ов в секунду. Сюда ещё добавим вариант с тем, что в БД будет отправляться статистика работы + всякие meta данные.

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

Следующая проблема - объем данных. Postgresql, который я могу позволить себе, уже не особо вывозит его. Простенький join уже занимает около 70 секунд. (inb4: у тебя запрос хуевый). Есть одно решение, которое удовлетворяет потребностей, но оно не поддерживает update/delete операций, что совсем не вписывается в рамки этой задачи.

Закрыв глаза на то, что было пару кейсов, когда нужно было перезапускать воркеров, я столкнулся с ситуацией, что их нужно иногда выключать, когда обрабатывать нечего. Развернуть 10 воркеров довольно легко, но когда речь идет о 100? Ну можно всякие knife и прочее использовать, но как по мне - это ад.

С прокси вообще отдельная тема. Token, который завязан с proxy, имеет несколько состояний, которые мне крайне необходимо знать.

В итоге сталкиваюсь с тем, что как бы я не хотел, все равно надо запилить какой-то main app, который дирижирует этим цирком уродов. Идея с шиной предприятия мне очень понравилась, так как как раз этот роутинг очень и очень нужен, чтобы приложения могли общаться между собой.
>>811642>>811755
#378 #811642
>>811637
Допустим ты даже не пиздишь про свою криворукость в качестве дата моделера.
Допустим ты все уже денормализовал и использовал все нереляционные фишки PG.
Разбей БД на админскую и доменную.
Для апдейтов используй NativeQuery или JdbcTemplate, а не ORM.
Пиши только конечный результат в БД. Промежуточный результат храни в памяти.

> их нужно иногда выключать, когда обрабатывать нечего


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

> С прокси вообще отдельная тема. Token, который завязан с proxy, имеет несколько состояний, которые мне крайне необходимо знать.


Ну и в чем именно проблема? Просто выдели это все в отдельный класс, который будет решать маппить хост/токен на прокси адрес при помощи простых предикатов.
И что тебе по ESB не ясно?
>>811811>>812152
#379 #811648
Подскажите тупому, можно ли привести bollean к числовому типу? К байту там, или к инту?
>>811649>>811651
#380 #811649
>>811648
блять, boolean
>>811651
#381 #811651
>>811653
#382 #811653
>>811651
SOOOQUAAA

Третий день учу язык, а тут уже такие подляны, по простому тестовое задание не зафигачить, а лишние 20 строчек кода писать в программу из 30 строчек не хочется.
>>811654
#383 #811654
>>811653
Это делается тернарным оператором в одну строчку - какие нахуй 20 строк? И это даже типобезопаснее какого-то там каста.
>>811658
#384 #811658
>>811654

>тернарным


Это мы не проходили, это на не научили. Я так понимаю, надо уже описанными в предыдущих главах методами делать. Но слово это погуглю, да.
>>811661
#385 #811661
>>811658

> Сперва пишет на двач, а потом в гугл


Как-то не очень у тебя перспективы, другой вкатывальщик
>>811663
#386 #811663
>>811661
Я погуглил, но нигде не увидел надписи БУЛИН НЕЛЬЗЯ В ЧИСЛЕННЫЙ, поэтому уточнил.
>>811664
#387 #811664
>>811663
Я вообще про "тернарный" и неважные навыки в поиске информации.
А вот и смотри, первая ссылка в гугле:
stackoverflow.com/questions/3793650/convert-boolean-to-int-in-java
#388 #811678
если что не бейте а лучше обоссыте

пишу простейшие хелловорлды, и ни еклипс ни идея не распознают system.out.println
в system path путь к jdk и jre прописал. такое ощущение что то ли иде-шкам нужно где-то явно указать пути к этой оракловской залупе, то ли при создании класса нужно проимпортить что-то (пробовал java.lang.io, но хуй там плавал)
мб тут кто подскажет, что я делаю не так?
>>811679>>811695
#389 #811679
>>811678
Может быть ты System с маленькой буквы пишешь?
>>811681
#390 #811681
>>811679
и с маленькой и с большой - один хер
ctrl+space не дает никаких вариантов после того как точку ставлю
system. - и тут вот он по идее должен предложить мне и ауты и хуяуты (как например на работе) - а хуйнанэ
>>811682
#391 #811682
>>811681
Ну, ты в любом случае только с большой пиши. С маленькой он не воспримет. И компилируй через командную строку пока, не запаривайся с иде. Я два учебника параллельно штудируют, в обоих советуют компилировать через цмд. тоже только вкатился
>>811684>>811687
#392 #811684
>>811682
спасибо, попробую
но если кто вдруг подскажет, как через иде это настроить - будет вообще волшебно
>>811687
#393 #811687
>>811682
>>811684
клоуны блять
из под консоли компилируют, небось еще в блокнотах код пишете
>>811694
#394 #811694
>>811687
в хуекнотах
по делу может скажешь чего?
>>811695>>811852
#395 #811695
>>811694
>>811678
Ну так и пропиши в проекте IDE путь до JDK, хуле ты?
#396 #811755
>>811637
Странно что вроде все знаешь все умеешь, а банально вопрос сформировать не можешь
>>812152
#397 #811811
>>811428

>Следовательно, возникает вопрос: а как вообще организовать разворот всего проекта: воркеров, прокси, базы, etc?


D O C K E R
O
C
K
E
R

>>811642

>Допустим ты все уже денормализовал и использовал все нереляционные фишки PG.


А может ему в сторону нереляционного чего и взглянуть? Правда хз, что у него там за данные.

>Для апдейтов используй NativeQuery или JdbcTemplate, а не ORM.


Я думаю, что у него там вообще jdbc.
#398 #811840
>>806729 (OP)
Не берут джава-разработчиком из-за того, что пока что мало знаю. Может, вкатиться в тестировщицыки?
>>811862
#399 #811852
>>811694
DA TI OHUEL.
37 Кб, 672x336
#400 #811860
Пачаны косольки принес.
#401 #811862
>>811840
Вопросы какие?
>>811866
#402 #811866
>>811862
java core ещё не осилил. Понимаю, что справедливо отказывают, но хочется УЖЕ начать работать, хоть стажером. Заебало сисадминство в край.
>>811894
#403 #811876
Привет аноны, к вам нуб пришел.
Есть у меня небольшое веб-приложение. Ясное дело, на джаве.
Нужно сделать так, что-бы это приложение слало POST/GET запросы на сервер, и обрабатывало полученные данные. Хочу слать запросы с помощью HttpURLConnection. Будет работать?
>>811900
#404 #811894
>>811866
Не осилил на сколько? Чем закончил?
>>811906
#405 #811900
>>811876
Если правильно сделаешь, то будет.
#406 #811906
>>811894
Потоками.
>>811911
#407 #811911
>>811906
LoooooL.
>>811912
#408 #811912
>>811911
Ты для этого задал вопрос?
>>811927>>811933
#409 #811927
>>811912
Да. Как можно не осилить java core и искать работу? Ты же понятия не имеешь, что тебе там делать. И сисадмин ты походу такой же, как и погромист.
>>811991
#410 #811933
>>811912
Нет, ну надо хотя бы фреймворк выучить или еще че.
>>812011
#411 #811966
Там какой-то ебан хохол сказал что джаву нельзя самостоятельно выучить, всю мне мотивацию убил урод сука. Теперь только на данбас ехать остается.
>>811973
#412 #811973
>>811966
Ну ты и лолка.
>>811977
#413 #811977
>>811973
Он наебщик, да? Да?
>>811985
#414 #811985
>>811977
Можно конечно самому выучить. Ток если с тебя такое сбивает мотивацию, то похоже ее у тебя не очень много.
>>811993
#415 #811991
>>811927
Ясно-понятно. Видал я таких умников. А потом выясняется, что критикан вообще сам по знакомству в ИТ попал. Зато гонору хоть отбавляй.
#416 #811993
>>811985
Прост мозг у меня бздливый, все время хочет оптимальный путь найти, а тут ниебаца гуру такое в щи заявляет.
#417 #812011
>>811933
Я есть хочу сегодня. Фреймворк выучу по ходу дела.
>>812038
#418 #812038
>>812011

>Я есть хочу сегодня.


Ну так иди у мамки борщ наверни

>Фреймворк выучу по ходу дела.


Как же раздражают такие посредственности в IT (вчера он был дворником, а сегодня еба-программист).
Иному работодателю проще нанять 10 мартых без мотивации и работающих за жрат, чем пару тройку толковых ребят.
Спасибо хоть что в Java вкатываешься, хоть не пересечемся никогда.
>>812043>>812058
#419 #812043
>>812038

>не пересечемся никогда


В верстку укатился?
#420 #812058
>>812038

>вчера он был дворником, а сегодня еба-программист


Обычное дело в IT. Говоришь, как будто что-то плохое.
Ты, похоже, с завода капчуешь.
Ещё скажи, что если не в Москве родился, то все, шансов нет никаких.
#421 #812075
Суп, как пофиксить окно и окна при запуске ПРОГРАММЫ, у меня просто они вылязят в левом верхнем углу? Короче положение в центре экрана, как сделать?
#422 #812080
>>812075
заебали с такими тупыми вопросами
сука, сразу видно что знаний ноль
уебывай в жс тред сука
>>812085
#423 #812085
>>812080
>>812075
Все понял котаны, не надо JS, больше нибуду.
метод: setLocationRelativeTo(null);
>>812092
#424 #812092
>>812085
сука
кому какое дело что это за метод блять
даун блять подавать метод не указывая даже из какой библиотеки, информативности НОЛЬ сука, да хоть пусть setUrMumAnus(null), нам то какое дело сука, уебывай
>>812094
56 Кб, 707x464
#425 #812094
#426 #812105
Расскажите кулсторей, как вас с одним джавакором взяли на работу.
>>812298
#427 #812107
>>812075
Почему ты формошлепную хуйню не поставил?
>>812130
#428 #812119
Тут есть анон разбирающийся в GLSL?
#429 #812130
>>812107
Оно же не оче код делает или норм? Да и пока ручками все полезно же.
>>812146
#430 #812146
>>812130
ну если ты на говносвинге сидишь, то да неоч
#431 #812152
>>811755

>Странно что вроде все знаешь все умеешь,


Я нихуя не умею, но есть желание разобраться. Другая проблема, что я схожие задачи решал ранее через веб реализации (меньший объем данных, скорость не важна), поэтому быстро подсел на REST api, когда каждая нода просто отчитывалась\выполняла задачу по сраному get/post запросу.

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

>>811642

>Допустим ты даже не пиздишь про свою криворукость в качестве дата моделера.


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

>Допустим ты все уже денормализовал и использовал все нереляционные фишки PG.


Зачем использовать нереляционные фишки, когда есть нереляционный БД? Тот же clickhouse позволяет хранить тысячи тонн информации, маштабировать кластер, получать доступ к ещё не агрегированным данным и импортировать данные с огромной скоростью, в то время как PG - позволяет всего лишь 32TB информации (если память не изменяет) на таблицу.

>Для апдейтов используй NativeQuery или JdbcTemplate, а не ORM.


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

>Одна задача - один runnable, который сам завершается после очередной операции.


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

>Ну и в чем именно проблема?


Проблем никаких. После 20 минут тестов я понял, что надо. Только я хочу вынести эту задачу на отдельную VM.

>И что тебе по ESB не ясно?


Да я хуй знает, что за сущность это. Я понял, что это охуенный роутер, который позволяет организовать интеграцию.

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

Вопрос. Как попасть данным в эту очередь? Вот у меня есть выработанный файл на 20 млн строк. Обычный csv файл.

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

Дальше у меня вообще начинает полное непонимание, как в этот процесс вступает Camel.
#431 #812152
>>811755

>Странно что вроде все знаешь все умеешь,


Я нихуя не умею, но есть желание разобраться. Другая проблема, что я схожие задачи решал ранее через веб реализации (меньший объем данных, скорость не важна), поэтому быстро подсел на REST api, когда каждая нода просто отчитывалась\выполняла задачу по сраному get/post запросу.

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

>>811642

>Допустим ты даже не пиздишь про свою криворукость в качестве дата моделера.


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

>Допустим ты все уже денормализовал и использовал все нереляционные фишки PG.


Зачем использовать нереляционные фишки, когда есть нереляционный БД? Тот же clickhouse позволяет хранить тысячи тонн информации, маштабировать кластер, получать доступ к ещё не агрегированным данным и импортировать данные с огромной скоростью, в то время как PG - позволяет всего лишь 32TB информации (если память не изменяет) на таблицу.

>Для апдейтов используй NativeQuery или JdbcTemplate, а не ORM.


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

>Одна задача - один runnable, который сам завершается после очередной операции.


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

>Ну и в чем именно проблема?


Проблем никаких. После 20 минут тестов я понял, что надо. Только я хочу вынести эту задачу на отдельную VM.

>И что тебе по ESB не ясно?


Да я хуй знает, что за сущность это. Я понял, что это охуенный роутер, который позволяет организовать интеграцию.

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

Вопрос. Как попасть данным в эту очередь? Вот у меня есть выработанный файл на 20 млн строк. Обычный csv файл.

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

Дальше у меня вообще начинает полное непонимание, как в этот процесс вступает Camel.
>>812170
#432 #812170
>>812152

>Дальше у меня вообще начинает полное непонимание, как в этот процесс вступает Camel.


http://pastebin.com/mNBam88D

Воркеры отработанные впихивают в другую очередь и ты оттуда их забираешь. Как-то так.
>>812172>>812177
#433 #812172
>>812170
Camel - всего лишь кучка библиотек, которые помогают тебе связать твои процессе в систему. Он позволяет тебе описывать эти связи чуть проще, чем если бы ты это делал руками.
#434 #812177
>>812170
Тогда у меня сразу несколько вопросов на эту тему. Вопросы архитупые, так как меня смущают методы from/to. С интеграцией Java приложений я первый раз сталкиваюсь и не осознаю задумку.

Возьмем для примера один узкий сегмент приложения:

Есть сервера:
[192.168.10.5] - Proxy server, который выполняет запросы.
[192.168.10.6] - Сервер producer.
[192.168.10.7-10] - Сервера с worker.

Workflow я представляю себе примерно такой.

Producer генерирует запрос типа: https://api.server/user=1&option=1;

Кидает его в Proxy Controller, который выполняет его, добавив к нему токен.

В случае, если запрос 200 OK, то тот должен быть передан Worker'у. (Воркер может его вернуть на повторное выполнение, если найдет какую-то ошибку в ответе).

То есть между этими тремя сущностями гуляет объект, например, client, который содержит важные поля типа proxy/host/request/timeout/etc.

Соответственно Camel должен быть где-то между ними. Что вообще по себе представляет этот инстанс? Отдельный сервер, который стучится по FTP/Protocol name, забирая данные, или задумка такова, что каждая нода в цепочке знает о camel и использует его?
>>812184
#435 #812184
>>812177
Я же там написал - всего лишь кучка библиотек. Т.е. кому нужны его фишечки - тот о нем знает. А кто-то просто в очередь напихивает данные. Или еще что.
Каналы же универсальны, их можно и без кемла использовать.
Отдельным сервером же в этом случае будет скорее activemq.
>>812226
3682 Кб, Webm
#436 #812186
Я так понял, что вкатывальщиков уровня хллоуворлд тут кроме меня ещё несколько есть. Давайте сделаем небольшую конфочку. Кто то что то луче других понял, сможет дать совет, кто то заметит пробел в своих знаниях и выучит что-то новое. Кто за?
>>812196
#437 #812196
>>812186
ага ага прокрастинатор ебаный, катись в свои конфочки прокрастинировать там
>>812199>>812201
#438 #812199
>>812196
а лучше съеби в ЖС тред, там все просто и учить много не надо
#439 #812201
>>812196
Спасибо за ценнейший совет, тебе тоже всего хорошего.
#440 #812207
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project webappRunnerSample: Compilation failure: Compilation failure:
error: try-with-resources is not supported in -source 1.5
error: multi-catch statement is not supported in -source 1.5

Что мавен от меня хочет? Гуглил, ничего не понял.
>>812211
#441 #812211
>>812207

>error: try-with-resources is not supported in -source 1.5


>error: multi-catch statement is not supported in -source 1.5


http://stackoverflow.com/questions/16723533/how-do-you-specify-the-java-compiler-version-in-a-pom-xml-file
Скажи мавену, что ты в 2016 году живешь.
#442 #812214
>>812211

>2k16


>maven


не сдержался
>>812216
#443 #812216
>>812214
Так говоришь, будто есть что-то значительно лучше.
>>812233
#444 #812226
>>812184
То есть я каждой сущности при помощи camel описываю, как работать с очередью?

Типа Proxy получает ответ. и делает что-то типа from(...).split().to(response-qeue); //ещё до конца не прочитал.

Воркеры чекают очередь и вытаскивают из них данные, обрабатывая их.

Другими словами, я могу не ебаться и взять Amazon SQS? А есть ли возможность какую-нибудь фишку с нотификацией провернуть? Типа чтобы воркеру сообщали о том, что есть сообщение в очереди? А можно ли пачками данные оттуда тянуть? Лучше пилить каждому воркеру по очереди или одну большую очередь на всех воркеров?
>>812237>>812279
#445 #812232
>>812211
Спасибо
#446 #812233
>>812216
ggggggra
#447 #812237
>>812226
Олсо, шина данных это какое-то абстрактное понятие или что? В чем она выражается?
>>812267
#448 #812240
>>812211
Почему он по умолчанию это не может сделать? Мне все время приходится это руками писать.
>>812245
#449 #812245
>>812240
потомушта мавен
#450 #812253
>>812211
<maven.compiler.source>1.8</maven.compiler.source>
#451 #812267
>>812237
Блядь, вот хоть убей - не могу понять концепцию.
Я так понимаю, что проще всего мне стоит создать Camel-service, который описывает все роутеры в формате from().to();

Блядь, не. Я нихуя не понимаю. Как запилить ебучий транспорт для моих воркеров?
>>812282
#452 #812279
>>812226

>Другими словами, я могу не ебаться и взять Amazon SQS?


Ты не поверишь. http://camel.apache.org/aws-sqs.html
Ендпоинты в кемеле - это абстракция. Что там за ним: активмку, амазаон, фтп или соап - тебе наплевать. Ты просто указываешь откуда взять, что сделать и куда передать.

>А есть ли возможность какую-нибудь фишку с нотификацией провернуть?


Зачем? Ты написал from(endpoint).to() и все. jms за тебя разберется с нотификацией.

>Лучше пилить каждому воркеру по очереди или одну большую очередь на всех воркеров?


Смотря какая у тебя задача, очевидно же.
А вообще - погугли. Твои вопросы гуглятся достаточно легко.
>>812287
#453 #812282
>>812267

>Блядь, не. Я нихуя не понимаю. Как запилить ебучий транспорт для моих воркеров?


Да используй jms. Это и будет твой транспорт. А чтобы проще с ним работать и описывать поток хождения данных используй кемл. Просто либа, которая облегчает тебе жизнь.
14 Кб, 629x388
#454 #812287
>>812279
У меня уже две страницы гугла прокликаны на русском\английском\немецком. Я просто не знаю, что гуглить.

См. пикчу.
Я хочу себе коробку, которая будет решать что и куда отправлять.

По порядку
Proxy:
На вход: json object (proxy/port/token/request)
На выход: json object(proxy/port/token/request/data);

Worker_n:
На вход: json object (как выше)
На выход: csv файл, с обработанной информацией.

Analyze_n:
На вход: csv файл
На выход: csv файл

4. ???
Сохранить в базу данных.

Как тут данные друг от друга тягать? Или я вообще концептуально обосрался? Все прямоугольники - отдельные сервера с ip адресами и приложениями на Java, которые выполняют свой стэк задач.
#455 #812291
>>812287
Другими словами, я хочу организовать платформу по linux way. Каждый компонент решает только одну задачу и о других компонентах не знает, а также быстро заменим.
>>812293
#456 #812293
>>812291
те ты под отдельный тип задачи отдельный сервер выделяешь?
нахуя?
>>812295
#457 #812295
>>812293
Ну потому что маштабировать надо. Workers/Analyze я могу сложить в докер на одном сервере. Не суть.
>>812302
#458 #812298
>>812105
Взяли полгода назад так в бодишоп стажером.
#459 #812302
>>812295
>>812287
Или это совершенно не тот стэк, который мне нужен?
#460 #812304
>>812287
Кто во всем этом начинает процесс? Кто делает запрос?
>>812319
17 Кб, 683x402
#461 #812319
>>812304
Да, я немного сократил схему.
Сначала Access token storage пытается получить токены у сервиса. То есть запрос идет к Proxy.

Затем, после того, как хоть один токен получит, включается Producer, который генерирует запрос и передает его в Proxy.

Proxy подписывает запрос токеном и выполняет его через конкретный proxy-server.

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

Если в ответе есть ошибка, то они отсылают объект обратно, Proxy передает запрос повторно. На самом деле я пока не знаю, как это корректно сделать.

Если ошибки нет, то просто сохраняем в файлик\бд.
>>812320
#462 #812320
>>812319

>Если в ответе есть ошибка, то они отсылают объект обратно, Proxy передает запрос повторно.



у меня плохо предчуствие
>>812321
#463 #812321
>>812320
Почему? Я просто буду подсчитывать количество ошибок у каждого токена и убивать его если это будет большое число.
И все же, возвращаясь к вопросу - хули делать-то?
#464 #812403
Что за рефлексию годного почитать? Только не общего "привет хабр, сегодня мы напишем как приватное поле класса сделать setAccessible, пишите комментарии))", а обстоятельный труд.
>>812423
#465 #812412
Че запрогать в рамках обучения джавакору? Не хочу отдельные неинтересные таски. Нужна наверное какая-то простая игрушка с кучей бесполезных фишек и по такому-то паттерну, не?
>>812416
#466 #812416
>>812412

> Че


> запрогать


Javascreept zaprogay, pes.
#467 #812423
>>812403
Пару глав в Шилдте можешь почитать.
>>812424
1716 Кб, 1000x916
#468 #812424
>>812423
Шилдт академическое говнецо, бесконечно далекое от реального и современного мира. Ты уверен, что там нормально?
>>812434
#469 #812434
>>812424
А сами рефлексии не академ говно? Или же это ништяки для хуцкера? хз-хз
>>812453
#470 #812453
>>812434
Ну, в ежедневной работе каждый день не нужно, но уж точно не

> академ говно


> ништяки для хуцкера



Вот прямо сейчас юзкейс подгоню. Метод, который принимает класс и над нужными полями делает грязные вещи. Конкретнее, допустим есть возвращаемый доменный обжект из базы. Но идентификаторы ты хочешь не long id, а PK + адрес мамаши ентити в бд. В случае идентификатора сущности в базе можно без рефлексии. А если хочешь, чтобы все было автоматически и делалось над всеми идентификаторами в классе, то без рефлексии не обойтись.
>>812456>>812551
#471 #812456
>>812453

> принимает объект

#472 #812551
>>812453
Я тоже когда-то угорел по рефлексии. Но в итоге - это все для фреймворков и библиотек. В рабочем коде это только скатывает твой код в говно, которое никто, кроме тебя не понимает.
>>812559
#473 #812559
>>812551
Есть такое, мысль здравая. Но все же хотелось знать побольше, чем нафига нужно, где используется и причем тут setAccessible. Не то чтобы нужно, но для общего развития пригодится. Сам что наворачивал?
>>812594
#474 #812594
>>812559
Всякой фигней занимался. Но если тебе интересно посмотреть на неё в действии - посмотри на внутринности спринга. Его вайринг бинов по аннотациям - самое оно.
37 Кб, 759x500
#475 #812644
Сап. Есть один я, который на пробу пилит веб-приложение на Spring+Thymeleaf. Thymeleaf третьей версии. В вебе совсем ньюфаженька, пишу как могу.

Так вот, лежит папка resources в рабочей директории. Из неё спокойно считываются как статичные ресурсы, так и обычные view-ы. Однако Thymeleaf мало того, что каждый раз одаривает меня предупреждением, что "HTML5"-режим deprecated и а-я-яй, так ещё и ругается, что не может найти путь classpath:/templates, которого, очевидно, нет, ведь всё хранится в папке resources.
View-ы и fragment-ы (th:fragment) он спокойно отдаёт и всё работает, но предупреждения несколько напрягают.

Путём восхитительного дебага с помощью System.out.println оказалось, что спринг, вообще-то, не особо желает пользоваться моим TemplateEngine, хотя и принимает во внимание мой ITemplateResolver. При этом метод создания TemplateEngine не вызывается вообще.
В TemplateEngine-е, который выдаётся мне при создании ViewResolver-а, кроме моего ITemplateResolver-а содержится ещё какой-то левый.

Если убрать метод templateEngine вообще, не изменяется ничего.

С меня как обычно.
#476 #812659
>>812644
Берешь Spring Boot - там уже есть AutoConfiguration для Thymeleaf из коробки.
Можешь попробовать навесить Primary поверх Bean у template engine
Можешь задать другое имя для template engine и инжектить его в другие фасолины.
>>812671>>813101
#477 #812671
>>812659
Проще выучить js.
>>812707
#478 #812707
>>812644
>>812671
Нахуя в вебе нужна эта сраная джава со спрингом?
#479 #812741
>>812644
Судя по тому, что у тебя эти методы серым идея подсвечивает, ты их и в контекст то не добавил. Это твой основной файл конфигурации?
>>813101
18 Кб, 456x376
#480 #812762
Че-то шиндовс експлорер подвисает при отрисовке.
>>812846
#481 #812846
>>812762
while true { рисуем линию}
?
>>813077
#482 #812858
Я опять не могу разобраться с тестированием. Суть токова: есть SpringBootApplication, у этого приложения есть RestController, в котором указан Autowired сервис. Этот сервис в тестах надо заменить сервисом-заглушкой. Разумеется, я загуглил как это сделать, но так и не нашел решения, всякие подходы с InjectMocks не сработали.
Вопрос такой: где-нибудь на гитхабе есть полный рабочий пример springboot-приложения с тестированием, где я увижу, как правильно инжектить сервисы?
>>812861
#483 #812861
>>812858
А что ты в контроллере тестировать собрался? Там же логики нет.
>>812880
#484 #812880
>>812861
Логики там действительно нет, обработка запроса сводится к "yobaService.process(request);". Но чтобы все удобно тестировать, мне надо разобраться, как этот yobaService в контроллере подменить сервисом-заглушкой.
>>812897
#485 #812897
>>812880
Так и пиши тест на yobaService.
А про InjectMocks - ты поставил @RunWith(MockitoJUnitRunner.class) над классом теста?
>>812920
#486 #812902
Деплою веб-приложение. Приложению нужны кое-какие файлы для работы. Куда их помещать чтоб они задеплоились и какой путь прописывать в коде?
#487 #812920
>>812897

>Так и пиши тест на yobaService.


Похоже, тебе не ясна суть проблемы. Внутри yobaService может быть fizzBuzzService который я хочу подменить еще одним стабом — как быть тогда? Вот в этой замене суть вопроса, а не в том, какой класс я тестирую.

>А про InjectMocks - ты поставил @RunWith(MockitoJUnitRunner.class) над классом теста?


Я проверял два варианта: с MockitoJUnitRunner и с SpringJUnit4ClassRunner+MockitoAnnotations.initMocks(this) в @Before-методе. В первом случае не автовайрится WebApplicationContext, во втором не инжектится заглушка.
>>812929
#488 #812929
>>812920

>Похоже, тебе не ясна суть проблемы.


Это тебе не ясна суть проблемы. Юнит тест тестирует один класс за раз. Если ты заменил yobaService моком, то ты никогда и не доберешься до fizzBuzzService.
А если ты пилишь интеграционный тест (на контроллер, боги), то там совсем другой подход.

>В первом случае не автовайрится WebApplicationContext


Это что вообще за пиздец? Кто же контекст вайрит?
>>812960
#489 #812960
>>812929

>Это что вообще за пиздец? Кто же контекст вайрит?


Ты меня траллировать пытаешься?
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/integration-testing.html#testcontext-ctx-management

>А если ты пилишь интеграционный тест, то там совсем другой подход.


Хорошо, что ты напомнил мне, что это называется интеграционным тестом. Я нашел нужную подсказку в документации и прописал класс конфигурации в самом тесте — работает как надо. Ура.

>(на контроллер, боги)


И что же не так с тестированием контроллера? Мне надо убедиться, что определенный POST-запрос возвращает определенный ответ — я это и тестирую.
#490 #813068
Бля, анон, как подключить к camel базу postgresql? Только не через Spring синтаксис, ибо spring не использую. А примеры исключительно на spring.
>>813094
#491 #813077
>>812846
Не, прост много линий, да и вообще слабо че-то.
#492 #813094
>>813068
Там же вроде просто синтаксис околоспринговский, а сам спринг он не вынуждает использовать.
#493 #813101
>>812659
Вот, проблема в Spring Boot, как оказывается; он как раз и перекрывает мою конфигурацию. Отключил автоконфиг Thymeleaf-а - всё работает как должно. Спасибо.

>>812741
Идея коммьюнити, так что она просто не видит, что это bean-ы спринга.
>>813103>>813168
#494 #813103
>>813101

>Вот, проблема в Spring Boot, как оказывается; он как раз и перекрывает мою конфигурацию. Отключил автоконфиг Thymeleaf-а - всё работает как должно. Спасибо.


Это вообще дрянная особенность Boot'а. Чуть подключаешь какую зависимость - сразу надо чекать "а нет ли там автоконфига, из-за которого все не будет работать".
>>813105
#495 #813105
>>813103
А нет ли какого-нибудь способа проверить, какими классами конфигурации спринг воспользовался?
>>813108>>813168
#496 #813108
>>813105
Что-нибудь такое может быть
@Bean
public static BeanFactoryPostProcessor postProcessor() {
return beanFactory -> beanFactory.getBeansWithAnnotation(Configuration.class).forEach((s, o) -> log.debug("config {} => {}", s, o));
}
Я бы попробовал, но ухожу уже.
>>813147
#497 #813147
>>813108
Падает на строчке beanFactory.getBeansWithAnnotation(Configuration.class):

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration$DispatcherServletConfiguration': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration$DispatcherServletConfiguration$$EnhancerBySpringCGLIB$$29bf56ad]: No default constructor found; nested exception is java.lang.NoSuchMethodException: org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration$DispatcherServletConfiguration$$EnhancerBySpringCGLIB$$29bf56ad.<init>()

Если указывать другую аннотацию, с которой bean-ов нет, то не падает.
>>813160
#498 #813160
>>813147
Ну ты же суть понял. Влезть в создание бинов и залогировать.
>>813274
#499 #813168
>>813101
>>813105
Ну раз Spring Boot подключен, то лучше не конфигурировать бины, а пользоваться автоконфигурацией и прописывать проперти
docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#common-application-properties
Можно поставить logging.level.org.springframework.boot.autoconfigure.logging.AutoConfigurationReportLoggingInitializer в DEBUG, тогда при старте в логе будет показано какие автоконфигурации включены, какие отключены.
>>813172
#500 #813172
>>813168
Не всегда удобно, не всегда подходит, не всегда знаешь вообще, что есть автоконфигурация.
>>813174
#501 #813174
>>813172

> Не всегда удобно, не всегда подходит


В этом случае подходит.

> не всегда знаешь вообще, что есть автоконфигурация


Референс читать нужно.
>>813244
#502 #813244
>>813174
Даже более: этот случай как раз тот, ради которого придумали spring boot.
#503 #813274
>>813160
Всё, с этим разобрался.

Теперь новая проблема. Есть Gson, который подключен к проекту. Jackson-а нету. Бины Gson-а инжектятся правильно, GsonHttpMessageConvertersConfiguration срабатывает, GsonHttpMessageConverter инжектится с правильным Gson-ом.

Однако, оно не используется, если контроллер отдаёт, собственно, JSON (JSON-таки отдаётся, но при этом преобразуется не с помощью прописанного мной Gson-а). Работать начинает, если прописать configureMessageConverters(), но судя по тому, что HttpMessageConvertersAutoConfiguration также срабатывает, и при этом ещё и зависит от GsoHttpMessageConvertersConfiguration, Spring Boot должен как бы сам подхватывать.

Что делать-то? Оставлять configureMessageConverters(), или есть какой-то способ ткнуть Boot мордой в то, что ему надо делать?
>>813356
#504 #813356
>>813274
Не изобретай велосипед и уж точно не используй говносипеды и фреймворки для запуска фреймворков потому что мы слышали, что ты любишь фреймворки, поэтому мы сделали фреймворк, чтобы ты мог использовать фреймворк, когда используешь фреймворк. Выбрось нахуй этот жопорожденный спринг бут и забудь о нем. Он должен был сделать работу со спрингом проще, но по факту он лишь ее усложнил из-за лишней прослойки с концепцией черного ящика на боку которого какой-то шутник нарисовал большой дружелюбный смайлик.
>>813443
#505 #813443
>>813356

>Выбрось нахуй этот жопорожденный спринг бут и забудь о нем


Зря ты так. Вполне неплохая штука для хеллоу-веб-аппликатион.
>>813449
#506 #813449
>>813443
Вообще ни разу. Цель хеллоу х не увидеть хеллоу х, а разобрать по частям тобою написанное и сделать соответствующие выводы для себя.
>>813457
#507 #813457
>>813449
Я не про учебу. Для учебы неплохо бы начать с xml-конфигурации спринга. Самая верная и идеологически правильная. Чтобы понимать, что вообще происходит.
#508 #813461
Лямбды используются только с интерфейсами?

нюфаг
>>813492
#509 #813492
>>813461
Ты хотел спросить могут ли они заменять только интерфейсы с одним методом (не считая дефолтных)? Да только их.
>>813512
#510 #813512
>>813492
Именно. А почему они не могут заменять также классы с одним методом? Потому что ТАК ЗДЕЛОЛИ, или есть какое-то функциональное ограничение, в силу которого это невозможно?
>>813563
#511 #813563
>>813512
Абстрактные классы несут другую идеологию нежели интерфейсы.
#512 #813595
Хочу запилить тетрис на 2х. Какой стек выбрать?
>>813618>>813622
#513 #813618
>>813595
Spring + Hibernate. Еще посомртри в сторону Spark/Hadoop.
#514 #813622
>>813595
NodeJS + MongoDB
>>813636
#515 #813636
>>813622
Спасибо, уже ушел.
45 Кб, 875x558
#516 #813825
Анон, недавно взялся изучать ООП и джаву в частности, возник такой вопрос(возможно я не правильно формулирую):

Как правильно реализовать неограниченную вложенность объектов? (не технически, а сам алгоритм)
На пикрелейде пытаюсь сделать нечто подобное виртуальной папки. Т.е Папка, в ней могут быть другие папки или файлы, при этом сама папка тоже может быть в другой папке.

Я двигаюсь в правильном направлении, или совсем хуйню сделал?
>>813853>>813899
#517 #813853
>>813825
Ну тип хранишь все в коллекциях, дохуя неограниченно, в каждой папке есть коллекция папок и ссылка на родительскую дирректорию.

Мимонуб
#518 #813899
>>813825
class File {String name;}
class Dir extends File {List<File> content;}
Хуле тебе еще надо, блджад?
95 Кб, 492x469
#519 #814006
Че-то про показе анимаций, по экрану бегают белые полосы, но на скриншоте не видно.
47 Кб, 492x469
#520 #814008
>>814006
Кое-как изобразил.
>>814020
#521 #814010
>>814006
Используй буферизацию.
>>814020
13 Кб, 461x287
#522 #814020
>>814006
>>814008
>>814010
Уже починил, не знаю с чем это связано.
39 Кб, 485x320
#523 #814431
Есть таблица в сиквеле, у которой есть id. Есть другая таблица в сиквеле, у которой ключ составной - колонка со своим id и колонка с id первой таблицы. Поверх всего этого натянут Гибернейт. IDE автоматом создала по классу на кажду таблицу, класс на ключ второй таблицы и XML с маппингом. В XML у айдишника первой таблицы указан генератор identity, и всё нормально работает. Но у второй таблицы ключ взят в тэг composite-id, который не позволяет указывать внутри генератор. Записывается всё в базу нормально, все данные на месте, но когда я записываю объект сущности второй таблицы, которая с составным ключом, вместо айдишника новой строки мне возвращается 0. У первой таблицы всё было так же, но я указал руками генератор в маппинге и всё нормально заработало. Что делать? И почему вы не перекатываете утонувший тред?
>>814459
31 Кб, 512x512
#524 #814459
>>814431

> Что делать?


http://www.jooq.org/
>>814483
#525 #814483
>>814459
Это, конечно, прикольно, но если я приду устраиваться на работку с жуком вместо гибернейта, меня нахуй пошлют.
>>814485
#526 #814485
>>814483
А ты им расскажи почему orm говно.
>>814488
#527 #814488
>>814485
Они меня внимательно выслушают и нахуй пошлют. Лучше ты им расскажи.
>>814494
229 Кб, 457x318
#528 #814494
>>814488
Говнолегаси бд со схемой отношений - все со всеми. Нужен десяток полей из десятка разных таблиц в одном объекте.
@
ХИБЕРНЕЙТ, ЗАЩОО
@
С ЛИЦОМ БАТТХЕРТА, ПИШЕШЬ МЕМАС CREATESQLQUERY


А так берешь, джойнишь как надо в дао и хоть обвытаскивайся.

Вот это им и рассказывай. Опционально еще вскочи на стол и расскажи, что джава мертва и будущее за нодой.
>>814501>>814525
#529 #814498
Посоны, поясните нюфагу. Начал осваивать джаву, выбрал ее рандомно, типа популярно, все дела.
Но когда дело дошло до моей хотелки по использованию драйвера устройства, я обосрался. Неужели Джава не может в драйвера?
>>814499
#530 #814499
>>814498

> Начал осваивать джаву, выбрал ее рандомно, типа популярно, все дела.


Тебя наебали, джава умирает. Популярен JS. Иди к ним в тред.

> использованию драйвера устройства, я обосрался. Неужели Джава не может в драйвера?


Ты вообще читал что такое java и как работает? Native API дальше по коридору в C и C++.
#531 #814501
>>814494
По делу-то есть что сказать?
>>814502
#532 #814502
>>814501
Ты тупой? Разбери по частям мое послание тебе.
>>814504
#533 #814504
>>814502

>нужно разобраться с ОРМ, потому что у всех работодателей оно в обязательных скиллах


>описываю ситуацию и пишу вопрос


>в ответ слышу, что ОРМ нинужно, джава мертва, а все конторы, где они используются - говно


>в добавок называют тупым


И чего я от двача ждал?
>>814509
#534 #814509
>>814504
Ты с чем-то не согласен? Опиши свой баттхерт.
>>814512
#535 #814512
>>814509

>скриптодурачок прибежал в чужой тред


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


>назвал тупым собеседника, которому безразличны его взгляды и который пришёл сюда не за этим


>диагностировал у него батхёрт


>в следующем посте сагрится на зелёный текст

>>814518
#536 #814518
>>814512
Ты описал свой баттхерт, послушный мемас. А теперь опиши с чем ты не согласен.

> чужой тред


Какой-то петушок с нулевым опытом коммерческой разработки на Java (что так и останется) считает тред своим. Ньюфаг обезумел.

> >в следующем посте сагрится на зелёный текст


> Мам, ну скажи ему, пусть мне не отвечает. :(



Так вот, возвращаясь пройденному - разбери по частям мое послание тебе и опиши, что тебе непонятно или с чем ты не согласен.
>>814519
#537 #814519
>>814518

>скриптодурачок думает, что его кто-то будет переубеждать

>>814520
#538 #814520
>>814519
Слив обоссанного недоджуниора (которого никуда не возьмут, ибо 60 человек на 1 место) засчитан.
>>814523
#539 #814522
И все же, пацаны, есть ли смысл писать высоконагруженный сервак на джаве? А то меня этим вашим GC все пугают.
>>814524
#540 #814523
>>814520
Полегчало?
>>814524
#541 #814524
>>814523
У меня ничего не изменилось, ведь это ты обосрался, даже не программист, а не я. С простейшим хибернейтом даже разобраться не может, вообще охуеть.
>>814522
С G1 имеет.
>>814525
#542 #814525
>>814524

>С простейшим хибернейтом


>>814494

>ХИБЕРНЕЙТ, ЗАЩОО


>С ЛИЦОМ БАТТХЕРТА, ПИШЕШЬ МЕМАС CREATESQLQUERY


>С простейшим


Скриптодурачок ловко извернулся и засунул собственный хуй себе в рот.
>>814526
#543 #814526
>>814525
Безработная обоссанная манька продолжает фантазировать.

> >ХИБЕРНЕЙТ, ЗАЩОО


> >С ЛИЦОМ БАТТХЕРТА, ПИШЕШЬ МЕМАС CREATESQLQUERY


> >С простейшим


Долбоеб, ты что, вообще нихуя не понял что я тебе сказал?
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 30 августа 2016 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски