Желающие прекратить терпеть смерть, стагнацию, похороны и пожаловать в будущее на острие прогресса, где готовые пакеты фреймворков ломаются при обновлении, просто не работают и живут полной жизнью уебывают сюда: https://2ch.hk/pr/res/789035.html
>>790068 БЛЯ, АКАДЕМАНЫ, ДАВАЙТЕ ПРИДУМАЕМ ЯЗЫК НА ОСТРИЕ ООП И ФУНКЦИОНАЛЬЩИНЫ И ВСЕ ЭТО СУПЕР ОХУЕННО И ДОХУЯ ВОЗМОЖНОСТЕЙ. ДА, КОНЕЧНО ПРИДЕТСЯ ЧУТЬ ПОУЧИТЬСЯ, ЧТОБЫ ВСЕ ЭТО ИСПОЛЬЗОВАТЬ, НО ЗАТО КАКОЙ ВЫХЛОП! И ВСЕ ЭТО СОВМЕСТИМО С JAVA @ ДАВАЙТЕ! @ ... @ БЛЯ, И ЧО ДАЛЬШЕ?
>>790105 В прошлом треде уже обсуждали. Энтерпрайз - это не когда ты из единственного MS SQL Server кидаешь в браузер формочки лопатой, это когда все немного сложнее.
> I heard the read storm problem has been solved by Shenandoah, a GC developed by Christine Flood (who was in the original GC G1 team at Sun in 2001). It is under the RedHat umbrella and should be merged in OpenJDK [1].
> Shenandoah uses a forwarding pointer in each object, adding overhead but limiting the problem only to write barriers. Here is Christine commenting on Azul vs Shenandoah [2]
> From the talk: average pause is 6-7ms, max is 15ms, and the talk is one year old.
> She hints at further developments in a version 2 which would make it entirely pauseless.
>>790071 > Hadoop Spark для бедных, чтобы кластеризовать данные, не помещающиеся на одном сервере силами обычных макак. Но учить нужно - это то, что выведет тебя из параши крудошлепства в светлый мир функционалобогов.
Скорей бы уже весь энтерпрайз перешел на скалу и всех этих жатников с 15-летним опытом выкинули на мороз, как дельфистов-формошлепов (не из них ли ганс_спб?).
>>790204 Лямбды - это неплохо. Но обвешивать типичное ОО такими гроздьями статической типизации в изощренных формах как это сделано в Scala - явный перебор.
Пытаюсь разобраться в мавене. Что-то мне непонятно, как в мавен FX добавлять элементы, прямо в XML что-ли прописывать? И как мне хендлеры к ним добавлять? В примере они тоже прямо в XML написаны. onAction="#handleButtonAction"
>>790221 Kotlin - это примерно как менять С++ на Go, к тому же JetBrains далеко не Гугл.
Ceylon - язык действительно во многом интересный, но перспектив у него еще меньше. Несмотря на то что за ним стоит RedHat, они его практически не продвигают активно - и RedHat в Java-мире не так уж много весит. Если ситуация с Oracle дойдет до того что разработка JavaEE фактически перейдет в RedHat, и Redhat начнет все-таки Ceylon активно продвигать - может быть что-то получится.
В Scala свои проблемы. Проблемы дико переусложненного языка оставим пока, с этим и так все ясно. Akka просвистела и померкла - выяснилось (ВНЕЗАПНО!) что модель акторов это не решение всех проблем. Главноскальщик пилит Dotty, нынешняя скалка ему уже малоинтересна - и это не особо скрывается. Большие конторы, сделавшие ставку на Scala (возьми ту же Expedia) очень по этому поводу нервничают, и тоже этого не скрывают. Другие конторы на это все смотрят и принимают логичное решение переход на Scala отложить до момента когда либо Dotty релизнется, либо наоборот, сдохнет.
У Clojure проблемы с заебавшим всех Ричем, который community слушать не хочет, а хочет придумывать трансдьюсеры и выступать на конфочках. Сил пятерых его соратников ни на что не хватает, баги копятся, никто ничего не фиксит. Патчи от коммьюнити при этом все равно посылаются нахуй. Библиотек для каждой мелочи дохуя, они сменяют друга со скоростью света - причем в предыдущей модной библиотеке баги никто фиксить не собирается, потому что автор уже пилит три новых, с которыми будет то же самое. В результате настрогать быстро какую-то мелочь на кложуре выходит отлично, а что-то посерьезней, что будет эксплуатироваться (и желательно без переписывания раз в две недели) - никто в здравом уме на ней не делает.
>>790243 Если очень коротко - то создатели обоих языков "даже не стараются". Для 1972 года оба из них были бы уже не очень интересны, всё-таки уже был Алгол68. Изобрести современные языки, которые уступают даже C# - это надо было постараться. Можно только позавидовать железобетонной репутации Роба Пайка и Кена Томпсона. Если их даже после разработки Go продолжают считать неглупыми людьми, то теперь, вероятно, такое мнение о них сохранится в любом случае, чтоб они не сделали. Даже если повторят любое из достижений лауреатов премии Дарвина — останутся в нашей памяти как неглупые люди. Если замысел Go еще можно понять - это эксперимент Гугла, который проводится чтоб ответить на вопрос о том, насколько невероятно плохой язык сможет вытянуть поддержка невероятно крупной и невероятно влиятельной корпорации, то смысл Котлина полностью ускользает. Может быть у JetBrains мания величия.
На самом деле джава эетерпрайз параша давно не продается. Сужу по нескольким крупным бодишопам, EE макак потихоньку сокращают, зато увеличивают фроетенд, мобилки, скалы, котлины.
> Another downside is that you have to do a bit of jiggery-pokery to get some third-party libraries such as Dagger or Mockito to work with Kotlin
Но стоят ли "несколько приятных фишечек" минусов ровно в том аспекте, которым Java и (единственно) ценна? В результате - поделки для Android резво все бросились писать на Kotlin, а в мире EE только пожали плечами.
>>790349 > Dagger По последним данным поддержку Dagger2 они добавили (так разработчики говорили, сам я не использую)
> Mockito Там проблема что по умолчанию все класс final. Пока я знаю два решения; 1) Юзать интерфейсы 2) Powermock ... ?) Обещали аннотацию "open all" (шоб как в джаве было), но что-то ничего про это не слышно
>>790400 Про Dagger это, конечно, очень радостно (хотя я до сих пор не понимаю нахуй он вообще нужен). Как насчет всех остальных 100500+ джава-библиотек, из которых неизвестно сколько сломаются на ровном месте?
>>790417 > Dagger > джава-библиотек Не путай пожалуйста, Dagger 2 это не только библиотека. Это плагин для gradle/maven, который встраивается в процесс сборки и на основе анатаций генерирует новый код.
Очевидно что когда разные плагины модифицируют процесс сборки, кто-то кого-то должен поддерживать. Обычных библиотек это не касается.
Лично я по этому и не юзаю его, что не люблю кодогенерацию.
>>790417 >нахуй он вообще нужен Зря ты так, пошерсти хотя бы швабру, есть там несколько хороших примеров, как минимум дев мок и убирает отовсюду какой-нибдуь Singleton_100500.getInstance(context)
А другие либы... Ну если что-то ломается, то написать задействованный кусок на джаве. Все андроидовские части нормально работают, rx и dagger тоже. Что еще из популярного - retrofit через оболочку с rx никаких проблем.
>>790429 Ну я и говорю. Для поделок на Андроиде, где библиотек хорошо если пять штук используется - и все одни и те же - нормально. Тем более что любой косяк исправляется выкладыванием в маркет новой версии и автоматическим автообновлением у всех клиентов.
Когда библиотек немного побольше, причем в разных проектах разных - выяснять что ломается что не ломается, а где вообще рыбу заворачивали (а именно высокое качество java-библиотек и есть главная её фишка) - причем, далеко не все выясняется в процессе сборки - и потом это немножко чинить, а потом с хорошей вероятностью перечинивать при обновлениях этой библиотеки - да вы смеетесь штоле. Ладно бы эти рюшечки котлиновские в 2 раза производительность повышали, так ведь хорошо если на 5% - в первую очередь потому что если сайты-визитки не штамповать тысячами (для чего Java брать в принципе не стоит), то время именно написания кода составляет процента 2-3 времени разработки проекта.
> The Register understands that roughly a year ago, a movement started within Oracle to mothball its Java EE efforts and create a new proprietary enterprise-friendly Java runtime and API in its place
>>790490 Страхи твои - надуманные. Большинство библиотек реализовано в виде классов у которых можно дергать методы, всё. Интероперабельность с таким кодом у Коtlin проблем не вызывает.
>>790526 >Большинство библиотек реализовано в виде классов у которых можно дергать методы, всё И на каждой библиотеке сверху написано, относится ли она к большинству? И тестировали ли ее с котлином?
> Smile!Smile!Smile! > Smile!Smile! > Smile! > Have the program define a function that displays the string Smile! once, and have the program use the function as often as needed.
Make a maven war project and add Hibernate, JaxB, deltaspike-data-JPA and RESTEasy as dependencies
Make a simple entity "Message" containing a String atribute and "MessageList" One Annotate each class with @Entity @XmlRootElement Add an jaxb.index file on these classes package listing these two Entities Annotate your Attribute by @XmlElement @NotNull @Size(min=2, max=10) Make a MessageListDao interface annotted with DS @Repository @Path("/") Make a simple persistence.xml file mapping to your database
Make an interface and a REST "MessageRESTService" Add a method to this interface: @Produces(Mediatype.Application_json)@Path("/sayMessage/{message}/{count}") String getMessage(@PathParam("message") message, @PathParam("count")); Implement this interface injecting your DAO in your service (with @Inject), and make this implementation @ApplicationScoped
Create an index.html file referencing NPM AngularJS, Twitter bootstrap, SASS (you can use grunt, npm and bower to automatically fill your index.html file js dependencies, but you've to add the maven-exec-plugin to call your grunt script during the 'generate-resource' phase) Make an AngularJS application, a directive, a controller Create inputs in your angular directive html file to choose your message and the occurence number, plus an HTML table with 'ng-repeat' attribute on the 'TR' Bind the inputs and the table to AngularJS controller methods that will call your REST service Create an default web.xml file in your src/main/webapp/WEB-INF directory (google it)
Configure the maven-tomcat-plugin (or maven-jetty) in your Maven pom.xml file
>>790616 > А как по-моему dagger 1 работает? Я то как-раз знаю как он работает, а с тобой диалог продолжать бессмысленно, ибо ты решил повыебываться без знаний.
>>790044 (OP) "Oracle is committed to Java and has a very well defined proposal for the next version of the Java EE specification – Java EE 8 – that will support developers as they seek to build new applications that are designed using micro-services on large-scale distributed computing and container-based environments on the Cloud." - Mike Moeller
>>790216 При чем тут мейвн? Это всего лишь сборщик. >В примере они тоже прямо в XML написаны. Наверно не в XML, а в fxml, и да, всякие onAction, onKeyReleased и прочее там надо прописывать.
>>790239 Найс инфа про Скалу, долбоеб. То что ты прочитал какую-то хуйню на реддите или news.ycombinator не даёт тебе права делать какие-либо выводы и дезинформировать людей. Особенно с твоим уровнем интеллекта. Да, у меня до сих пор бомбит от эффекта Даннинга-Крюгера, хотя я его наблюдаю еще со времён /c.
>>791394 >То что ты прочитал какую-то хуйню на реддите или news.ycombinator не даёт тебе права делать какие-либо выводы и дезинформировать людей. Особенно с твоим уровнем интеллекта Что именно ты готов опровергнуть? Не стесняйся.
>>791439 То есть ты согласен со всем про скалку, но тебе не нравится такой ход событий. И ты решил выразить своё отношение к этому доступным тебе способом.
>>791437 Ага, сейчас бы в дискуссию самодовольным дурачком вступить. Все что мне было нужно - выбросить негативные эмоции которые я случайно получил при чтении твоего поста.
>>791605 Хочешь позитивных эмоций? Бери совочек, отправляйся в песочницу страны вечного джаваскрипт-детства, тред рядом. Работает оно хуево, зато позитив у всех, велосипедов с квадратными колесами пилится 100500+ каждую секунду. Весело, задорно, девки в коротких юбках.
Можно ли в Мавене повесить компиляцию на плагин сборки? Суть: хочу вносить изменения в код и тут же получать джарник по одной кнопке. Отдельно вызывать compile из жизненных циклов и отдельно assembly из плагинов не хотет. Я ньюфаг и, возможно, ещё не понимаю сути Мавена и начал делать что-то не так ещё на предыдущих шагах. Если так, то объясните.
Я вот добавил columns and rows в fxml, как мне теперь взять модель этой таблицы, чтобы добавить значения? Table View - таблица. Обычные примеры с проперти не подходят, нужно именно в коде вальюс добавлять. В таблице есть чекбоксы.
>>791708 Ну в эклипсе есть Action (и кнопка): Run External Tool, по идее можно описать запуск Maven с необходимыми аргументами, да ко-всему этому shortcut навесить.
>>792069 default void sort(Comparator<? super E> c) { Object[] a = this.toArray(); Arrays.sort(a, (Comparator) c); ListIterator<E> i = this.listIterator(); for (Object e : a) { i.next(); i.set((E) e); } }
Анон, мне нужно, чтобы шарящий синьор-помиодор расшифровал некоторые джава-мемы (тип официальное мнение по сабжу с аргументацией) Spring, GWT vs Vaadin (и почему первый обосрался), Red Hat, Oracle, будущее джавы.
тащит null, при этом если заглядывать дебагом в, собственно, beanFactory, у нее в beanDefinitionMap бин с именем переданным в listenerBeanName имеется, и бин который я пытаюсь дернуть имплементит ApplicationListener
Нужна помощь. Хочу вытащить случайный/следующий элемент из списка и грязно надругаться над ним.
Пример: //Создаем несколько объектов List<MyObject> objects = new ArrayList<MyObject>(); for(int i=0; i<6; ++i) objects.add(new MyObject());
Соответственно мне бы хотелось извлекать по порядку объекты и работать с ними. Да, я знаю про итераторы и другие возможности пробежаться по списку, но беда в том, что я вынужден возвращаться. Из очевидного мне пришло просто выбирать случайный номер 0..n и таким образом работать, но как-то зашкварно, хотелось бы идти по порядку, но итератор не может ресет сделать.
>>792592 Может не ясно выразился. При каждом обращении к функции должен выбираться случайный\следующий объект. Если список подошел к концу, то начать сначала (я про последовательную выборку объектов). Рандом не очень нравится.
>>792602 блять, нахуй ты мне пишешь, как компилировать проект без ИДЕ, мразь тупая. Я спрашиваю, как сделать, чтобы по клику на главный jar файл приложение запускалось и не только у разработчика.
Котаны, у вас веб-морда Гитхаба открывается? У меня грузится только текст, весь в кучу, без разметки, и очень долго. Через проксю загружается моментально. В России Гитхаб теперь блочат? Билайн (и провод, и симка - одинаково)
>>792628 Три дня не открывался без прокси. Сейчас на дваче написал - и всё шустро загрузилось без прокси. Билайн, спасибо. А что за фигня-то была, зачем блочили?
>>790044 (OP) Джавабоги, нужна ваша помощь. Есть в классе метод, надо его вынести за пределы класса и вызывать из класса, откуда мы его убрали. Как это сделать?
>>792647 Я понимаю, что вопрос слишком детский для ынтырпрайз-гуру, но таки: Как потом связать эти два класса? Как из первого класса обратиться к методу второго?
Ну че сидите макаки, джяваиндусы ёбаные? Я про ваш тред долбоёбов недавно узнал. И что же я тут вижу? - пидорас на пидорасе. Оправдываетесь. что за ебаны на пике? это кто-то из местных?
>>792701 Спасибо. Оказалось, я вызываю метод из класса, который наследует класс, из которого я вызываю метод. Разве конплилятор не мог так и написать, а не строить из себя умного и писать заумный код?
Паттерн Producer/Consumer. Надо реализовать. Хочу реализовать такое Producer->[Queue]->{Consumer_1, Consumer_n} Только я что-то охуел от всевозможных реализаций этого паттерна. Мне просто надо класть объект в очередь, а потом с ним быстро работать. Какой самый безопасный и актуальный вариант?
>>792874 Не слушай этого >>792878 - действуй по обстоятельствам. Нужен цикл c необычным шагом или сложными условиями выхода/изменения объектов в замыкании, или скажем в теле цикла до кучи лямбд - можно и старый использовать. Или скажем тело цикла простое и есть потребность для IntStream.range(0, n).parallel().forEach - переключайся на новый.
>>792857 Я не знаю, как грамотно организовать работу потоков. В облаке есть n очередей (messages queue). В них надо пушить данные. Боль в том, что эти данные разного объема (от 1кб до несколько мб). Стэк технологий не самый удачный, но самый доступный.
На данном этапе принцип примерно такой 1. data = obj.get(); //получаем данные. 2. QueueManager.send(data); //QueueManager выбирает случайную очередь и отправляет туда сообщение.
Соответственно это пиздец медленно. Я решил организовать работу так: 1. Получаем данные 2. Пушим их в очередь 3. QueueManager вытаскивает запись и пушит это в произвольную очередь.
Другими словами obj.get() - это у нас Producer, который срет в очередь сообщений, как только извлечет сообщение. QueueManager - это consumer, который вытягивает сообщение из очереди и отсылает в облако. В результате я столкнулся с тем, что нужно Один поток по статистике: сколько получено сообщений, что там с очередью и так далее. Один поток на получение данных и загрузки в очередь. И несколько потоков (предполагаю, что тут надо перебирать наиболее оптимальные варианты) на инстансы QueueManager, которые будут пушить при первой возможности сообщение в облако.
>>792901 На секундочку - бизнесу нужны эти оптимизации? И да, подумай насчет того чтобы довериться сетевому стеку, на твоем операционном уровне кажется нерациональным что Кб и Мб сообщения могут слаться через один и тот же канал, в действительности проблемы может не быть.
>>792944 >На секундочку - бизнесу нужны эти оптимизации? Бизнесу нужны, слишком много времени занимает.
>довериться сетевому стеку Тут проблема не в пересылке данных, а в том, что очередь нерационально используется, а доставить данные нужно как можно быстрее.
На примере простой Consumer/Producer; Queue{ dataObject(2 мб) dataObject(1 кб) dataObject(5 мб) dataObject(256 бит) } Соответственно один единственный consumer будет идти по очереди, пересылая данные. Одно дело отправить 1кб, а другое дело 5 мб. Очередь будет дольше разгребаться, что не совсем удобно.
С другой стороны, если очередь будет обрабатываться сразу несколькими воркерами, то я предполагаю существенное ускорение.
8 джоинов, 3 вложенных запроса (одна таблица имеет два форен кея на другую таблицу) в одном селекте. Ебучий репортинг в ебучей бд, спроектированной так, что на одну data column приходится по 10 id columns и общей схемой запутаннее, чем схема мирового правительства рептилоидов по мнению pol с форчана.
>>792975 На описанное. > но в БД-треде по соседству это и выглядело бы уместней, и конструктивно ответить можно было бы. Когда я последний раз проверял, Java применялась для бэкенда и тырпрайза. Я што-то пропустил?
>>792946 Попробуй ExесutоrService для своих целей. Вот примерное решение: http://ideone.com/nWztVG В строке 9 создается тредпул состоящий из числа доступных процессоров. Это значение можно задать константой, причем значительно больше числа процессоров в системе. В строке 11 мы заполняем тредпул воркерами. Из-за того, что воркеры крутятся в бесконечном цикле, желательно не создавать их больше чем потоков.
Как работают воркеры: Вся эта система взлетит только в том случае, если fасtory реализовывает паттерн Prоvidеr, а DаtаSender реализует Cоnsumеr. Fаctory блокирует выполнение до получения следующего результата, а когда результат получен вернет его только одному потоку. DаtаSender потокобезопасен и блокирует выполнение потока до тех пор, пока данные полностью не будут переданы и канал данных не будет освобожден.
Если же они в эти паттерны не вписываются, то можно допилить их напильником. К примеру, если Factory не потокобезопасен, мы его можем окружить sуnchrоnized-блоком. Если factory к тому же не блокирует поток выполнения, а возвращает к примеру null когда данных нет - то заключить получение данных в бесконечный цикл. Если DataSender не потокобезопасен, то все плохо, потому что мы не получим выигрыш от многопоточности и все мое решение летит к хуям, потому что как только мы его окружим sуnchrоnized-блоком, все процесы отправки данных будут ждать друг друга чтобы захватить lock. Если же DataSender потокобезопасен, как например, отправка POST-запроса, то проблем нет. Если DataSender требует каких-то предварительных действий для выбора канала данных то мы это тоже можем реализовать где угодно в Worker-е. В идеале было бы создать по 1 воркеру на каждый доступный канал отправки данных.
>>793084 Сейчас перечитал твой второй пост, вот комментарии >В облаке есть n очередей (messages queue). Идеально будет если у тебя количество потоков будет равно числу n, тобишь на каждую очередь один воркер >Один поток по статистике: сколько получено сообщений, что там с очередью и так далее. Создаешь любой класс, который реализует Runnable или Callable и отдаешь его в вышеупомянутый тредпулл. >Один поток на получение данных и загрузки в очередь. В этом есть смысл только если obj.get() плохо работает как Producer. >И несколько потоков (предполагаю, что тут надо перебирать наиболее оптимальные варианты) на инстансы QueueManager, которые будут пушить при первой возможности сообщение в облако. Эти потоки у меня реализованы в классе Worker, число их тоже вычислить легко, n = количество очередей в MessageQueue.
>>792971 Ты не видел ещё, когда все это добро завернуто в курсор, а внутри курсора бродит ещё один курсор, в котором селект, в котором внутренний селект юнион олл селект, мазафака бич. Не хватало только комментария > //я ебался и ты теперь ебись
>>792988 К профессии джава-разработчика имеет отношение многое - например, психологическая устойчивость - тем не менее, её лучше было бы обсудить на доске про психологию. Так же как твои джойны и курсоры - в БД-треде.
>>793089 >Идеально будет если у тебя количество потоков будет равно числу n, тобишь на каждую очередь один воркер Собственно, так и планирую. Вообще у меня идея, что воркер не должен знать, как работать с очередью в облаке. У меня сейчас основная загвоздка как раскидать задачи по классам, чтобы god-object не словить.
Итак? Какие задачи 1. Создать очередь в облаке (довольно ебливый процесс, но я уже библиотеку накатал, все работает четко). Тут у меня есть класс QueueManager, который содержит список всех очередей, созданных ранее и делает Queue.push(Data) в одну из очередей из списка. 2. Создать пулл воркеров. Да, надо запилит. 3. Организовать корректную работу со всеми тредами.
На данном этапе я теряюсь как классы разместить. Соответственно в главном классе я хочу оставить только два вызова. CloudQueue connect = new CloudQueue(5); //5 количество облачных очередей. connect.send(message.obj);
В свою очередь CloudQueue должен организовать следующие задачи: Создать облачную очередь. Создать внутреннюю очередь. Создать пулл воркеров. Начать пушить сообщения в внутренюю очередь и запустить всех доступных воркеров. Но в итоге мой класс CloudQueue превращается в самый настоящий god-class.
Как же хорошо кодить на жаве. Хоть и сложно, зато сразу все понятно становится, как работает ООП, интерфейсы, объекты, паттерны. Вот я на пхп когда кодил, там вообще классы чисто декоративные были, как и неймспейсы. Ни типов тебе, ни красивых паттернов с бросанием ошибок. Удивляюсь, поему пхпшникам вообще на собеседах задают вопросы про сортировку пузырьком, интерфейсам и ООП, многопоточность - это ведь вообще в пхп не используется.
>>793105 >2. Создать пулл воркеров. Да, надо запилит. Если что спрашивай. >3. Организовать корректную работу со всеми тредами. Если в тредах потокобезопасные операции, то сами потоки безопасны. Тут еще нужно добавить, что при выключении приложения нужно выключать executorService вызовом метода shutdown(). >Но в итоге мой класс CloudQueue превращается в самый настоящий god-class. Я в таком случае бы вынес все сложное в статические методы CloudQueueUtils, а в CloudQueue оставил бы только тот код, который бы легко читался - без циклов и ветвлений.
>>793124 А что если Cloudqueue в конструкторе вызывать CloudqueueService, который будет внутренней очередью? И ещё добавить создания пула потоков? В итоге Cloudqueue будет producer к этой очередью и будет срать в неё. Воркеры будут в отдельном классе ебаться с очередью.
Блядь, как-то убого сформулировал. Сейчас попробую написать.
>>793144 Блядь, все равно какую-то хуйню написал, собирается, но походу где-то бесконечные циклы и все такое. http://pastebin.com/wgfNFJ09 Как лучше организовать?
Господа, добрый вечер. У меня к вам довольно странноватый вопрос. Насколько глубоко надо знать джаву? Пару месяцев учу ее, не помню, например, сколько памяти занимают простые типы, до сих пор туплю иногда, что такое статик и где надо пихать this и все в таком духе. Задачи решаю, тестовые вопросы вроде тоже отвечаю.
>>793202 изучай кресты жаба очень простой язык для даунов работая с крестами ты разберешься как работает память, что такое стек, как объекты выделяются в куче, как работают мутексы и вся кое такое говно низкоуровневое
даже после легкого знакомства с крестами жаба покажется тебе простым языком с низким порогом вхождения
останется только вскользь пробежаться по стандартной библиотеке. коллекции там, утил конкаренси и все такое. и ты будешь на собеседованиях лекции читать, а пездюки будут слушать тебя раскрыв рот
>>793201 >>793196 Осознал в чем сложность. Класс Producer имеет метод run(), который заполняет очередь. Только проблема в том, что я не совсем понимаю, как научиться срать в него не снимая штанов.
>>793246 У тебя слишком много абстракций, в остальном норм было. Но все-же я неправильно тебе посоветовал запилить бесконечные циклы. Минус такого подхода в том, что нужно добавлять проверку что service не находится в состоянии "выключение". Это неправильно и я это переписал, код ниже. Я создал продюсер и воркер, можешь запустить и проверить как работает. Кроме shutdown у экзекутора еще есть shutdownNow, который шлет всем потокам InterruptedException, это можешь тоже потестить.
>>793268 В мире есть всего три с половиной языка, которые можно слать нахуй без раздумий.
Все остальные языки включая джаву люто бешено вывозят в своих областях, но отсасывают в других. Поэтому надо выбирать инструмент под задачу, а не искать волшебные таблетки.
бля, я не могу, я все термины читаю и учу по-английски. если на собесе будут спрашивать дебильные вопросы. типа что такое колбек или интерфейс, можно им отвечать по-английски? Я просто хуй знает, как это переводить The Callback interface is designed to allow for a common, reusable interface to exist for defining APIs that requires a call back in certain situations.
Callback is defined with two generic parameters: the first parameter specifies the type of the object passed in to the call method, with the second parameter specifying the return type of the method.
>>793276 Бля, все конечно заебись, открыл для себя множество охуенных вещей, но я все равно все также не могу решить эту проблему. Окей, запилил CloudQueue, которая собственно треды поднимает и контролирует все, что нужно. Но вот хоть убей, я не могу понять, как сделать пресловутый CloudQueue.send("message");
Ведь где @override нельзя передавать параметры, а consumer читает из входящего потока, т.е. вообще отдельно. Походу я твой.
К слову, я не совсем понимаю. Там на каждый input создается новый Worker или как?
>>793306 Передавай message в конструктор воркеру, а потом из метода run забирай. В моем примере так и сделано. >К слову, я не совсем понимаю. Там на каждый input создается новый Worker или как? Так и есть.
>>793310 >Передавай message в конструктор воркеру, а потом из метода run забирай. В моем примере так и сделано. Так блин, это же внутри Producer выполняется. Producer нужно все время пересоздавать или его можно каким-то образом использовать повторно?
Я вижу строчку service.submit(new Worker(input)); Только один хуй, она создается внутри метода run, который принимать никакие параметры не может.
Я вижу тут определенную логику, но как-то нащупать не могу. Извиняюсь за глупые вопросы.
>>793314 >Так блин, это же внутри Producer выполняется. Producer нужно все время пересоздавать или его можно каким-то образом использовать повторно? Ты говоришь, что тебе нужно выполнять CloudQueue.send("message"); Я сделал вывод, что тебе нужно отправлять какие-то данные. Для этого подходит Worker. А забирать данные нужно с помощью Producer. >Только один хуй, она создается внутри метода run, который принимать никакие параметры не может. Ну да, я просто читаю с клавиатуры входные данные. Если у тебя, к примеру, есть возможность получать следующее сообщение с помощью CloudService.getNext(), то можно было бы передавать экземпляр CloudService в конструктор Producer, и потом вызывать его в методе run. Метод run выполняется в отдельном потоке, и ты никак его не изменишь чтобы он принимал параметры, ты только можешь модифицировать Producer таким образом, чтобы он их откуда-то забирал, или из своих собственных полей или из вебсервиса или по rest api. В конце концов ты можешь передавать BlockingQueue в конструктор Producer-у и добавлять новые данные уже непосредственно в BlockingQueue, но такая абстракция как по мне только усложнит твой код.
>>793327 Продюсор скорее для каждого источника данных свой. к примеру, один продюсор для сообщений, полученных из консоли, другой для полученных по jmx итд. Пройдись отладчиком по тому коду что я вбросил, попробуй что-нибудь допилить или выпилить и посмотри что получится. Я спать пошел, завтра отвечу.
>>793335 P.S. >Вообще у меня идея, что воркер не должен знать, как работать с очередью в облаке. Если до сих пор так хочешь сделать, можно просто выделить интерфейс, и сделать так чтобы воркер умел работать с интерфейсом, а реализацию ему подсовывать уже в конструктор.
>>793338 Ну это уже позже. Сейчас я бы хотел понять, как передать Producer хоть какую-то информацию, первая же идея была BlocingQueue, но ты сказать, что усложнит.
>>793339 У меня мысль только создать действительно класс CloudService, в нем создать очередную BlockingQueue и писать туда по возможности, но это тогда Producer поверх Producer.
>>793338 Не, анон, все равно не понимаю. Кейс: отправить 10 сообщений hello world воркерам. Другими словами должен быть
CloudQueue, где мы создаем 6 тредов, а Producer получает фьючерс и все такое. Затем пишем что-то типа цикла for(int i=0; i<10; ++i) CloudQueue.send("Message=" +i);
Теоретически, метод send должен обращаться к Producer и говорить ему - отправь вот эту строчку в обработку.
>>793352 Ну их хороших новостей, я научился писать говнокод, вернее что-то там делать с Consumer'ом, однако от этого не легче, ибо концептуально все равно проблемы. Другими словами, у меня получился один единственный способ. Создать треды, наполнить очередь, запустить Producer; Другими словами все хуйня. http://ideone.com/E7vkrw Вся надежда на тебя, анон.
>>793383 Или я блядь опять не понимаю концепцию потоков? Прочитал в Javadocs, что треды должны после выполнения сразу же умирать. Другими словами, неужели мне нужно пересоздавать Producer'a каждый раз, когда я хочу отправить сообщение? Столько вопросов и так мало ответов. Пойду уже спать.
>>793383 Анон, Producer не обязателен вообще в этой иерархии. Я его писал для того, чтобы выделить код в отдельную сущность. Ты можешь из любого места вызывать service.submit(new Worker("fdsfgd")); Если ты все-же хочешь какую-никакую изоляцию, тредпул можно вынести в отдельный класс, оформить его как синглтон и управлять очередью через вызов его методов. Пример: Singleton.getInstance() - лениво создает синглтон и тредпул Singleton.getInstance().sendMessage("sa") { service.execute(new Worker("sa")); } Singleton.getInstance().shutdown() - выключает тредпул Singleton.getInstance().shutdownNow() - прерывает все выполняемые отправки сообщений. Singleton.getInstance().addProducer(new Producer(System.in)); - добавляет новый продюсер, который берет данные из System.in. Продюсор уже сам решит когда давать данные в тредпул и когда выключиться.
То, что я описал лишь добавление уровня абстракции к тому, что уже было. Это можно реализовать и как-нибудь по-другому.
Почему синглтон? Концептуально вряд ли у тебя будет в системе более одной очереди отправки сообщений, поэтому более одной очереди создавать не желательно. Еще это удобно тем, что ты можешь получить инстанс из любого потока и из любого участка кода, не нужно ему передавать синглтон чтобы он мог поставить какое-то сообщение в очередь.
>Ну это уже позже. Сейчас я бы хотел понять, как передать Producer хоть какую-то информацию, первая же идея была BlocingQueue, но ты сказать, что усложнит. Это нужно если ты хочешь чтобы последновательно продюсор отдавал тебе данные. Если же ты хочешь отпарвить только одно сообщение то продюсор не нужен - ты просто создаешь Worker и добавляешь его в пул. >У меня мысль только создать действительно класс CloudService, в нем создать очередную BlockingQueue и писать туда по возможности, но это тогда Producer поверх Producer. FixedThreadPoolExecutor внутри себя содержит BlockingQueue. Когда ты создаешь 20 воркеров, но имеешь только 5 потоков, то 15 воркеров попадают в эту BlockingQueue и ждут своей очереди. Тредпулы для того и были введены, чтобы отделить пользователя от работы с очередями, а и сразу дать быольше контроля над потоками. >Кейс: отправить 10 сообщений hello world воркерам. for(int i=0; i<10; ++i) {executor.submit(new Worker("Message=" + i); } Внутри воркера, понятное дело, System.out.println нужно заменить на CloudQueue.send(msg); >Но как получить этот Producer? Не понимат. Продюсор в этом случае не нужен. Вот если ты захочешь, чтобы главный поток у тебя занимался какими-то своими задачами, то продюсор нужен чтобы забирать данные в фоне, не мешая главному потоку. Еще продюсор полезен если необходимо забирать данные из нескольких источников. Ты создаешь по продюсеру на каждый источник данных и отправляешь их в тредпул, а сам в основном потоке делаешь другие дела, ну или просто ждешь когда они отработают и затем завершаешь главный поток. >Прочитал в Javadocs, что треды должны после выполнения сразу же умирать. Это при работе с потоками напрямую. Если ты работаешь через тредпул, по поток не умирает, а приостанавливается. Когда приходит новая задача, она снова выполняется в этом потоке. Это экономит ресурсы на создание нового треда и его запуск. Т.о. даже если у тебя отработало 100 воркеров на 5 потоках, в это время будет создано только 5 потоков в пуле. Еще одна особенность плюс ExecutorService, если поток умирает в результате Exception, то он его может пересоздать и вернуть в строй. Но это уже знать не нужно.
>>793607 Если честно, то не ебу про другие. Если говорить про фриланс, то да. Но вообще, я знаю пару историй, когда всякие банки из европки нанимали фрилансеры. Один анон писал давно, что получает 4к в месяц.
>>793781 А напомните, зачем знать что-то о сортировках, кроме пузырьковой (чтобы было), быстрой (факт того, что она сравнительно проста и быстра) и метода sort (и что он является сортировкой слиянием)?
Как сделать так, чтобы неткрекер взял меня на работу? Как удержаться там первое время - это уже будет другой вопрос. Нужна недельная экспресс-методика изучения того, чем точно будут интересоваться. Помогите червю-пидору.
>>793855 > Stream.of("afytwz").flatMap(s -> Arrays.stream(s.split(""))).collect(Collectors.toCollection(TreeSet::new)).forEach(System.out::println); И для чего же?
>>793862 Они уже не берут людей. Слишком много людей для слишком стагнирующего языка. Ну в смысле что рынок насытился и больше не надо и не понадобится.
>>793873 Новые языки, расширяющие и, зачастую, заменяющие оригиналы для обычных программистов. Если будешь учить Спринг, то джаву учить не надо - на чистой джаве уже никто не пишет. Сам посмотри - во всех вакансиях Spring.
Джаваны, ищу работу начинающим программистом. Почему к джуну предъявляются неджунские требования? Откуда у джуна владение JavaEE? Уж блядь наверное если я имею опыт энтерпрайз-разработки, я не буду искать работу джуном, а минимум мидлом пойду. А если за год программирования я все еще чувствую себя джуном- то сменю профессию, ибо я хуёвый программист. Кто идет на такие вакансии вообще? Джун на джунскую вакансию им не подходит, мидл сам не пойдет, синьор-помидор давно в Лондоне, он не поедет в Россию за 40 к работать.
>>794254 Описание вакансии в 99% случаев пишут всякие уебаны. Как правило на собеседовании сначала убеждаются что ты в принципе адекватный человек и имеешь представление о джаве. Если ты прошел эту проверку, то на знание всяких ентерпрайзов и спрингов-хуингов закроют глаза. Тем более на джуниора.
>Большое спасибо за Ваш интерес, проявленный к нашей открытой вакансии "Начинающий разработчик Java / Junior Java developer". К сожалению, в настоящий момент мы не готовы сделать Вам это предложение. Мы внимательно ознакомились с Вашим резюме, и, возможно, вернемся к Вашей кандидатуре, когда у нас возникнет такая потребность.
>>794254 Потому что джава без ЕЕ не нужна. Хотя, на собесе из ЕЕ достаточно бегло знать jpa, сервлеты, мавен и томкек как развернуть. Не так уж и сложно.
>>794324 Тык само собой, каждый дрочит, как захочет. Но это пишут во всех книгах по ее. Если человек осилил это, то он может быть даже обучаемый. >>794344 >2к16
Короче, посадили на оче-проече старый проект и он ниибацца-интегрирован с эклипсом. Как в этой говнине посмотреть сырцу используемого класса? Нихуя не понятно (в идее было прост на ctrl+левый клик по названию класса)
>>794433 Аналогично (или F3 при наведенном курсоре - вроде на маках такая хрень).
Идея, кстати, кал. Мало того, что тормозит (по сравнению с эклипсом) и интерфейс и возможности через жопу, так они еще и лицензируют её только на год или месяц. Заказать на 3 или 4 месяца - непосильная задача.
>>794433 В Идее так и научился как в autocompletion вместе с вариантами показывать документацию, соответствующую выбору. Для этого сраного окошка потребовалось что - то редактировать в конфигурационном файле, и всё равно оно какое-то неприбитое.
Иконографику тоже им больные ui-идиотией делали - и публичные и приватные методы сопровождаются иконкой с красным кружочком - путает и бесит.
>>794433 Короче, используй ангельский и поиск по справке, если такие вопросы возникают. И изучи хотя бы введении концепцию Workspace. Надеюсь оценишь достоинства Eclipse, у них, кстати, недавно релиз был - neon.
>>794566 Может может (особенно в последних релизах) - главное поменьше говна наворачивать - начинать с installer, ставишь eclipse platform, потом поддержку языка в котором разработку ведешь, потом marketplace и дальше что надо - vcs, и прочие плагины.
>>794566 Слушай - декомпил и не нужен. В нормальной IDE к библиотекам привязываются исходники (это даже делается еще на уровне сборщиков maven/gradle/...) и дальше идет нормальная работа.
>>794717 Софт для аптек необходим высоконадежный (если перепутать и фармацевт продаст не то и клиент откинет копыта, то будет пиздец), поэтому на яве он не пишется. Пишется на JS.
>>794720 На ведроиде хотели заказать переделку с фонгепа на нативный. Приложуха для заказа лекарств из аптек, но для ссаного битрикса нет нормального апи, все через плагинчики. Пусть варятся в своем говне. Кстати: >js >надежность О да динамическая дрисня такая надежная. Покормил.
Прочел тут в треде про команию неткрекер. Оказалось, что они блять стажировку проводят, но надо было подать заявку до 19 июня. Сука. А я только решил вкатиться.
>>794782 О чем ты вообще говоришь? Я написал, что пропустил стажировку. Ты мне ответил, что там только современные языки. Я так понимаю, что там нужен опыт? СТажировка для нулевых.
Недавно начал использовать гредл, перейдя с мавена. Насколько годно работает инкрементальная сборка в больших проектах? Почитал красивые картиночки на сайте, полистал документацию, но это все слова. А на деле? Он нормально определяет изменения от переключения веток? И не бывает ли на практике, что проект валится из-за того, что гредл не пересобрал хуйню, которую надо было пересобрать и из-за этого происходит нападение Степана Файлюры.
>>793406 Бля, анон, ты охуенен. Сделал за сегодня все, что хотел. Вообще шикарно всё.
--- Аноны, как в java строить запросы? Есть что-нибудь для SQL, чтобы без напрягов это сделать, а то просто строчку сделать пиздец напряжно. Надо запрос типа INSERT INTO test ("item", "item2", "item3") VALUES("v1", "v2", "v3");
>>794840 > бля пиздос там эти xml конфигурации Где ты там xml нашел? Там xml сам по себе нужен только для кодогенерации (которую, кстати, можно не использовать). Захуячь в гредл таску по генерации классов и не парься. > Копирую пример, у меня билд maven падает Ну охуеть просто. Ты ведь слышал, что в Java есть исключения, которые описывают проблему? :3 > Охуенно. Охуенность на вашей стороне.
>>794854 Ну "руками" сгенерируй классы. Создаешь хмл, указывай откуда брать и куда ложить, выполняешь команду по генерации. Все написано же в геттин стартед гайде. >>794853 > я больше нипишу синглтоны, я пью singleton whiskey, но когда никто не видит использую их вовсю, но тссс
>>794858 Нормальный человек по своей воле без внешних факторов не будет использовать оракл вместо базы данных. А если использует, то не по своей, а по воле компании. И если она юзает оракл, то на покупку лицензии обоссанного жука деньги найдутся. >>794860 > Чо так сложно тут с запросами. Ты не пробовал учить JS? Язык для тебя. >>794870 >>794881 > он мне каким-то пиздец странными ошибками срет > [ERROR] package org.jooq.impl does not exist > [ERROR] /home/user/gen/target/generated-sources/jooq/org/jooq/util/maven/example/tables/records/AudiodataRecord.java:[12,150] error: cannot find symbol Ебать ты тупой.
>>795022 Никогда кстати не понимал, зачем на Java писать формочки. Для винды есть удобный C# c фреймворками, где формочки мышкой клепаются, знай только обработчиков вешай. Для Linux и консолеблядство подойдет.
>>795229 >Для Linux и консолеблядство подойдет Ты один из тех, кто думает, что на линуксе обязательно все через консоль делается и интерфейсов вообще нет?
Как мне прописать путь до моего файла из контроллера? System.out.println(this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath());
>>795624 Потому что это главный язык будущего, вселенной и всего остального. А джава умирает. Пиздуй отсюда. >>795627 Ебырь твоей мамаши-шлюхи на спине у джавараша.
> Желающие прекратить терпеть смерть, стагнацию, похороны и пожаловать в будущее на острие прогресса Пососали у крестов и теперь отрываетесь на миленьких языках. Ясно все с вами.
>>795485 Spring in action, выкладываю русский перевод: http://rgho.st/86NGlp4Bn По Hibernate стандарт JPA описан на сайте Оракла, доп. расширения хибернейта не нужны.
>>795554 А кем нужно работать небыдло-интроверту? Серьезно, не раз задумывался и приходил к выводу, что из программирования перекатиться некуда. Разве что совсем в днище вроде сторожа или охранника.
Объясните, как эту джаву компиляют в нативный код, работающий без JVM? Тот же OpenOffice/LibreOffice, не требует JVM для работы и не содержит ни единого class или jar файла. Но вроде пишут его на джаве.
Словно что-то плохое. Мне в жабе люто бешено не хватает ручного аллока/деаллока и размещения объектов на стеке. Ну или по крайней мере как-то лочить запуск мусорного коллектора во время выполнения критических ко времени участков.
>>796038 >не хватает ручного аллока/деаллока и размещения объектов на стеке Для таких хитровыебанных есть Unsafe и DirectByteBuffer. Толкьо нужно сделать сериаллизацию/десиреализацию структурок в байты и свой аллокатор/деалокатор с этого буфера.
>>796054 Я знаю, но согласись, что это геморно. Я много лет сидел на джаве, а тут год назад случайно переполз в кресты и охуел. Там все это на уровне языка.
А еще размещение обджектов в стеке. Если есть код какого-то такого вида
for(int i = 0; i < 100_000_000; i++){ Huita kek = new Huita(getRandomData()); kek.someShit(); };
То у тебя после этого охуиллиард хуйты в куче и когда их там коллектор удалит. Понятно что я утрирую, и данный код можно переписать чтобы он не генерил охуиллиард хуйты, но общий посыл ясен.
>>796119 у тебя раньше рам закончится и комп пека зависнет прежде чем он решит эту хуиту удалить, особенно если цикл бесконечный в отдельном потоке. Но с другой стороны грех жаловаться, ведь такую хуйню только обезьяны пишут.
>>796134 потому что достаточно сделать так Huita kek = null; for(int i = 0; i < 100_000_000; i++){ kek = new Huita(getRandomData()); kek.someShit(); };
>>796134 Хуйню какую-то написал. Коллектор за все это время очень хорошо уже оптимизирован, и он лучше любого программиста знает, когда и что нужно удалять.
В какие сроки обычно ожидают выполнение тестового задания - небольшого веб-приложения для джуниора? Написали, что срок неограничен, но... Я чую, что не меньше 2-3 недель потрачу, я же дурачок.
>>796144 ага блять, и поэтому когда я на днях по невнимательности написал такую хуйню (создавал в бесконечной петле рендера временный фреймбуфер для постпроцессинга картинки), то у меня буквально за пару секунд весь RAM (а это ~4гб) улетал в пизду, что приходилось перезапускать все нахуй. Так что не так уж он и хорош этот мусорщик.
>>796140 >если цикл бесконечный == бесконечно дохуя > i < 100_000_000 > 100_000_000 == дохуя >Иди учи как gc работает сам иди уеба, в данном случае gc будет чистить после выхода из петли, тоесть никогда
>>796138 Нет. Это ничем по сути не отличается от >>796088 И там и там в хипе будет стопицот объектов на которых нет живых ссылок. И они будут лежать там до тех пор пока жвм не решит что пора запустить гц или память не кончится. И тогда жвм опять таки запустит гц, а если это не поможет - кинет оут оф мемори.
Но в любом случае в момент работы гц произойдет падение ПЕРФОРМАНСА и другие треды, работающие на этой же жвм это тоже почувствуют.
Единственный вариант тут - глубокий рефакторинг хуиты. Чтобы создать ее один раз до цикла, а в цикле только обновлять там данные (и свести их к примитивным типам или байт буфферам, само собой) и вызывать соме щит.
>>796152 >создавал в бесконечной петле Сборщик удаляет тогда, когда что-то не нужно, если у тебя в бесконечной петле что-то нужное, ясное дело он это удалять не будет и ты получишь OutOfMemoryError, gc тут никак не виноват.
>>796159 хуйню сказал, в первом случае время жизни ссылки == времени жизни всего цикла, во втором == времени потребности в самой ссылке >>796161 откуда вы беретесь, с хуяли тогда >>796138 этот вариант сработал? В гугле блять полно ссылок по времени жизни объектов создаваемых в цикле
>>796174 >пральна, в пизду ее ленивую инициализацию
Где ты увидел там ленивую инициализацию?
> будем стопитсот тяжелых объектов на стеке создавать и держать до конца жизни програмы
Джава не создает объекты на стеке. Только примитивные типы. Конечно в случает тяжелых данных можно использовать вариант >>796054. Но если гетРандомДата возвращает всего немного данных, то вариант со стеком более быстрый. Т.к. без стека в общей сложности на хипе будет выделено 100_000_000 * гетРандомДата. конечно, в любой момент цикла может сработать гц и удалить часть из них. Но может и не сработать. А запуститься позже и начать удалять сразу все.
> хуйню сказал, в первом случае время жизни ссылки == времени жизни всего цикла
Грубо говоря ссылка это просто переменная с адресом объекта. Сам объект лежит в хипе и может вообще не иметь ссылок и лежать себе, ждать удаления. Ссылки передаются по стеку. Во время итерации цикла ссылки создаются в стеке и удаляются 100_000_000 раз. Объекты никуда не деваются, а ждут своего удаления гарбаг коллектором.
>>796199 Должен вмешаться. Gc как правило оперативно запускается при неактивности ссылки и лежать и ждать объекту долго не придется, а вот если ссылка на объект жива то и gc этот объект пропустит (что мы и получим в итоге)
>>795695 Свой бизнес, например. Причем тут "интроверсия"? Программистишке надо гораздо в большей степени общаться с людьми и лизать всем зады, начиная с босса и заканчивая клиентами, эйчаром, секретуткой, манагерами и даже Аллахом, в отличие от бизнесмена.
>>796226 И да, статические методы и поля в 95% случаев это рак не делай так. Сначала создай инстанцию объекта содержащего метод, а уже потом используй этот метод
>>796343 Будущее за питоном. Уже в следующем году войдёт в тройку лидеров и постепенно заменит жабу. JS как полноценная замена не подходит, так как узкоспециализирован, а на питоне много чего можно делать. Больше возможностей.
>>796496 1. В этом коде нет итераторов, а в for ( : ) есть. 2. Даже с итераторами код >>796461 был бы неправильный, ибо итератором элементы можно только читать и удалять, но не изменять.
>>796498 >1. В этом коде нет итераторов, а в for ( : ) есть. Это сдекомпиленный foreach на массиве, не веришь - сам проверь, кукаретик. >2. Даже с итераторами код >>796461 был бы неправильный, ибо итератором элементы можно только читать и удалять, но не изменять. Итераторы там нахуй не нужны, нжно вручную перебирать массив но не замети что НЕТ КОКОРАТОРОВ, а затем что запись dda = makeHuita(dda); не добавит новых значений в массив.
>Как стало известно, сейчас разработка Java EE в компании Oracle полностью остановлена. Программисты, которые занимались Java EE в штате Oracle, говорят, что их переводят на другие проекты. В сообществе усиливаются дискуссии о том, что необходимо сделать форк. Сама же компания Oracle отказывается чётко прояснить свою позицию и сделать хоть какое-нибудь официальное заявление, несмотря на требования сообщества.
>>795870 Системные требования: >Microsoft Windows XP, Vista, Windows 7, или Windows 8; >Pentium-совместимый процессор (Pentium III, Athlon или более современные); >256 Мб ОЗУ (512 Мб рекомендуемая); >До 1.5 Гб свободного пространства на жестком диске; >Разрешение 1024x768 (рекомендуется высокое разрешение), как минимум 256 цветов; >Java SE Runtime Environment 7.0.
сап посоны. интересуют способы хранения фотографий и доступа к ним во всяких соцсетях. нагуглилось, что можно взять например id изображения из бд, приписать к нему слева нули до десяти цифр (например 0000000001) и это говно разбить по две цифры на папку, соответственно файл 00/00/00/00/01.jpeg нахуй. но что-то подсказывает мне о говености метода (подумой о масштабируемости). еще хотелось бы узнать каким хуем строятся квадратные миниатюры(например 100х100) фотографий. очевидный вариант - вырезать квадрат из центра, но вдруг там не будет видно ебальника? буду рад, анончик, если ты мне пояснишь за современные технологии, используемые для этих целей. вообще очень интересно узнавать как работают соцсети с такими объемами данных, с таким количеством одновременных запросов, да еще и с такой скоростью ответа. буду признателен за инфу. мимоджаваджун стаж 2 мес
Анон, который мне жука рекомендовал, да и вообще все сочувствующие. Я вот столкнулся с тем, что не совсем понимаю, как организовать работу приложения. Мой говнокод многопоточный, да. И в этих потоках он подключается к базе данных и систематически вытаскивает\добавляет данные. Как организовать работу потоков, у меня база данных немного охуела от количества подключений.
И второй вопрос, как срать в базу данных через жука. Там множество примеров типа insertInto(table, field1, field2, .., fieldn).values(1, 2, 3); А как-нибудь через цикл запилить? Что-то типа create.insertInto(table); for( ... ){ create.fields(...).values(...); } create.execute(); Выглядит, как булщит, конечно.
>>797102 По поводу количества подключений - используй connection pool-ы. В веб-контейнерах как правило они уже встроенные. В стандэлоун приложениях есть реализации, самая известная, на мой взгляд, c3p0. По поводу жука сказать ничего не могу, может кто другой посоветует.
>>796939 Есть большой файл, новые данные дозаписываются в конец. В бд хранится ссылка на большой файл, offset и длина отдаваемого файла. Больших файлов может быть несколько.
>>797119 Олсо, вот хуй знает, как организовать архитектуру приложения. Вернее двух штук. Одно вытягивает данные и отправляет их в очередь, а другая берет их из очереди и пишет в базу.
Только у меня уже ебучая лапша в коде выходит. Ответ от сервера JSON формат - два типа данных. В итоге if get(0).getAsJsonObject().get("shit").getAsString. Говно не читаемое получается. Не знаю, как все это организовать бля.
>>797119 Тебе нужен конекшон пул, сейчас у тебя оверхед от того, что каждый раз создается новое соединение. По архитектуре нехуй учить чему-то, с опытом понимание придет само. Олсо, соединения нужно закрывать, а у тебя в коде чет не вижу такого. (спойлер: когда ты закрываешь соединение из конекшон пула, оно возвращается в пул, а когда ты закрываешь обычное соединение то оно уничтожается, так что закрывать надо в люмом случае, см. try with resources)
>>790044 (OP) Ёбаным жабоиндусам, напоминаю разницу. Зоопарк вопросов: - где замыкания? - где свойства? - где шаблоны? Разработчики Sun вынуждены только облизываться. Даже генерики, введённые в 5-й версии Java — не более, чем syntactic sugar. Дотнетовские генерики это реально поддерживаемые платформой типы, которые расширяются на лету при загрузке, котрые оптимизируются JIT-компилятором. Для Java генерики существуют только в коде и ни JIT, ни загрузчик классов их никогда не видит. Поэтому проблемы боксинга, преобразования типов в runtime просто скрыты от программиста. - где делегаты/евенты? - где partial-классы? - где детерминированное освобождение ресурсов (ключевое слово using + интерфейс IDisposable)? - где оптимизация JVM для расширений процессоров? - где аналог linq и в частности удобные мапперы? - где расширения методов класса? - где скрытая имплементация интерфейсов? - где перегрузка параметров функций? - где нормальное потребление памяти приложением? - где быстрая работа приложения? - где нормальные иде, с полноценными дизайнерами? - где пользовательские value types? - где методы у инстансов value types? - где var и анонимные типы - где перегрузка операторов? - где оптимизиции хвостовых вызовов? (в свете фунционального хайпа это должно вызывать некоторый батхёрт) - Где чёткое разделение домены и сборки? Это не учитывая, целый ворох технологий недоступный понимаю жабоиндусов, такие всякие сильверлайты/вин-веб/формочки, впф, XNA, список можно продолжать бесконечно, как впрочем и список ущербности жабы...
Всего, чего нет в жабе, автоматически объявляется хуитой, как только это появляется в жабе, это автоматически становится нехуитой. При этом, требуется сделать вид, что хуитой это называл кто-то другой.
>>797157 AMQP > Одно вытягивает данные и отправляет их в очередь, а другая берет их из очереди и пишет в базу. > > Только у меня уже ебучая лапша в коде выходит. Ответ от сервера JSON формат - два типа данных. В итоге if > get(0).getAsJsonObject().get("shit").getAsString. Говно не читаемое получается. Не знаю, как все это организовать бля. Хуйню какую-то написал. Напиши нормально что там у тебя и для чего. Алсо если я правильно понял, то ты очередь используешь тупо чтобы асинхронно базарить с базой и нет какой-то мощной масштабируемости. Тогда очередь и отдельное приложение для бд несколько оверкилл - дао/репозитории можно сделать асинхронными (или прислюнявить к датааксессу дополнительный менеджерский слой, который будет управлять дата аксессом, разруливать разные дата сорсы и разруливать асинхронку с обычными дао/репозиториями). Если же у тебя распределенность и масштабируемость во все поля, то тогда да, тебе нужен message layer для обмена информацией между компонентами. >>797319 Кроме того, что язык умирает, а оракловский JavaEE вообще официально сдох, и язык отправляется вслед за коболом и дельфями, и на рынке все сильнее падает спрос - никаких. >>797367 Антоний прав, охуевший долбоеб. Пиздуй учить Javascript - главный язык будущего, вселенной и всего остального. Пока ты не всрал годы на то, что уже умирает.
>>797424 А где нормальная поддержка любого железа, сисярп-долбоеб? В новом дотнеткоре? Ну как там дела с релизом, вышедшим месяц назад? Все компании мира объявили о переходе на него? > целый ворох технологий недоступный понимаю жабоиндусов, такие всякие > сильверлайты Лол. Сильвер лайт. 2016. > вин-веб А что, асп парашу использует кто-то, кроме Microsoft? > формочки Для формочек есть главный язык будущего, вселенной и всего остального. Здесь серьезный бузинесс. > впф Еще одно формошлепство, только под винду и теперь еще и мертвое. Последний релиз 4 года назад и блог блещет активностью https://blogs.msdn.microsoft.com/wpf/ > XNA Гейм-девелопмент и прочие юнити это единственное на что годится C#. > список можно продолжать бесконечно, как впрочем и список ущербности жабы... А когда твой беззадачный (акромя игор) сишарп будет поддерживать серьезный тырпрайз бизнес и его задачи? Когда научится работать на каждой кофеварке? Никогда? А на хотя бы никсах и маках? Только что? И как поддержка, а? А когда научится поддерживать нормально распределенные транзакции без печати вендор локина? Основная хуйня твоей параши - в том, что она пиратская версия джавы от обиженки, которая на волне баттхерта еще запилила почти тотальный вендор локин, чтобы заодно как-то поддерживать свою хуйню. Когда ты пишешь тырпрайз на джаве - ты пишешь тырпрайз на джаве и не связан ничем. Используй что хочешь. Когда ты пишешь говно на сисярпе (вне гейм-девелопмента), то ты залочен под инфраструктуру microsoft и винду. Так что уебывай писать десктопные формочки, игоры на юнити и приложения, работающие на одном (1) microsoft windows server. > Всего, чего нет в жабе, автоматически объявляется хуитой, как только это появляется в жабе, это автоматически становится нехуитой. При этом, требуется сделать вид, что хуитой это называл кто-то другой. Обоссан.
Есть ли в природе хоть один жавапидорас, который знает что-нибудь кроме джавы? Ну хотя бы ту же Скалку, работающую на jvm. Причем `знает' не в смысле запускал 2 раза и посчитал рекламную хуйню с сайта, а действительно хорошо знает. Работал минимум полгода, знает, решению каких проблем адресован язык, знает, зачем он нужен и какие преимущества имеет перед джавой, хорошо понимает, какие принципы заложены в систему типов и нахуя они вообще туда заложены, знает, как она жутко она фейлит на оптимизации хвостовой рекурсии, знает, как она затирает типы и вызывает методы через рефлексию, знает, почему на уёбищной jvm по-другому не сделать, знает, почему неленивые языки - говно, знает, что такое abstraction penalty и почему любой джаваынтырпрайз адово тормозит, несмотря на превосходные результаты на шотауте, самый лучший мусоросборник и hotspot до которого всему немейнстиму в говне плыть и плыть, знает, почему джава - не язык программирования для нормальных людей, а говно для переквалифицировавшихся таксистов? Нет таких? Ни одного? Только студентота и дрочеры на абстрактные фабрики абстрактных аннотаций виртуальных плагинных шин? Так я и знал. И это программисты. Говно какое-то. Пидоры блядь.
- Все что снаружи анонимного класса/лямбды/да просто блока кода и есть замыкание, дебил. - На месте, хочется сахара - используй Lombok - Пилят, в 10/11 будут. Но так - то и без них жаба обошла .net - Проблемы разработчиков языка сисярп, тащащих отовсюду что попало, без представления об ортогональности возможностей, нас не волнуют - Хз что это - см. предыдущий пункт в котором упоминалось как шарп сосет у жабы - вот здесь https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html - по поводу VM и опций ты бы вообще не кукарекал. - Jooq + java8 = аналог - В котлин дарагой - Хз что, но звучит как содомия - Шта? Что вообще код не пишется без этого сахара? - У грамотных специалистов - Ну хотя бы работают (со сравнимой скоростью) - деньги приносят. Вам в SOHO не понять. - Шта? "полноценными дизайнерами?" - клепать круды для малых офисов??? - В 10/11 версии - Пилят - В Scala/Clojure/Cotlin/Ceylon/Groovy - Бинго!!! Маня ты попала в точку. Кажется у .NET есть TCO на уровене VМ, чем жаба не может похвастать. Но как ни странно в проде больше используется ФП языков под JVM одного против F#. Подозрительно, да? - OSGI? Java9?
Так что либо есть либо пилят (и это необходимо, спору нет). То что не пилят (всяческий пидорский сахар типа partial-классы), это не нужно, да.
Знаешь, |c|, по-моему, я схожу с ума... Дело в том, что иногда по ночам мне кажется, что я яваблядь. Мне хочется выделять память, зарабатывать на доширак, пиздеть про энтерпрайз, сваливать свои проблемы на чужие плечи и писать нечитаемый бессмысленный говнокод. Я ворочаюсь, страдаю, рычу, а под конец вскакиваю с кровати и хватаю первое, что попалось под руку. Это может быть тапок, топор или простая поварешка, но в моем воображении она становится огромным прожорливым интерпретатором. С этим интерпретатором я открываю корпус сервера, ставлю ещё две планки оперативной памяти и с громким боевым кличем выбегаю на улицу. Я бегаю под окнами своих соседей и ору: "Ява не тормозит, тупые нищебляди!! Купите нормальное железо!!" Но они не покупают... Они привыкли. И когда я уставший, но довольный, поднимаюсь в квартиру, наоравшись и набегавшись, одна из дверей открывается. Там, лукаво сверкая глазенками, стоит маленький соседский мальчик Женька. Он громко шепчет беззыбым ртом "Клоссплатфолменность!" и ободряюще мигает мне одним глазом. Я, улыбаясь ему, прохожу мимо, и в душе моей поют заказчики. А дома я открываю бутылку водки, морщась, выпиваю ее до половины, и ловлю кота. Ругая этого "сраного волосатого индуса", я сажаю его за клавиатуру, и чтобы он не убежал, приматываю его к ней скотчем. А дальше все просто. Я стою у окна, пуская скупую быдлокодерскую слезу по своей прыщавой щеке , и мечтаю. Я представляю, что огни домов -- это пламя костров, на которых сжигают крестопидоров, шум машин -- это рев кулеров в серверных, а в мире нет ничего, кроме великого энтерпрайза и нас, яваблядей... И я жду, что вдруг, вот сейчас, в мою дверь войдет начальник и скажет: "Эй, раб, ты чо так так долго? Давай, быстро дописывай исходник. Похуй, если будет тормозить - разберутся те, кто будет сопровождать! ГА-га-га-га!" И ободряюще хлопнет меня по спине. И тогда не будет в мире счастливее человека, чем я... Точнее, явабляди. Что же мне делать, анон? Что же мне делать?
Мне в тестовом задании сказали собрать проект в мавене. Я правильно понимаю, что ебаться с мавеном можно в конце? Сейчас же могу делать всё остальное? Я просто ньюфаня ньюфань.
>>797436 >Антоний прав, охуевший долбоеб. Пиздуй учить Javascript - главный язык будущего, вселенной и всего остального. Пока ты не всрал годы на то, что уже умирает.
ребяты, я вот сижу такой мне делать нехуй вообще, решил выучить яву правильно из закреплённого поста понял что стоит начать с + Java 2. Том 1. Основы Кей Хорстманн + Java 2. Том 2. Тонкости программирования Кей Хорстманн
или с чтото другое посоветуете? если нет на русском книги где всё чётко и ясно, можно на немецком, ибо я его учил всю жизнь английский не знаю (знания позволяют только смотреть передачи типа фэллона)
для чего оно мне? я пока не решил мне плевать учу что хочу
Сап, джава-господа. Пробую одну вещь, а именно собрать лист ссылок с сайта. Взял себе на пробу сайт, ссылки вытащил. Но они в разброс. ТО есть, первая новость на сайте почему-то не первая в списке, а где-то в середине. Понимаю, что теперь мой лист нужно отсортировать. Сделать это в целом просто, ведь в середине каждого стринг в листе есть дата. Но календарь юзать тут не надо. Просто отсортирую по какая меньше-какая больше. Вот код, которым я получаю ссылки. http://pastebin.com/dRjvtp3i Вот то, что я получаю. http://pastebin.com/Qvm5PsD8 Вот то, как выглядит дата: 2016/04/26/ Из неё я буду вытаскивать месяц и число.
Подскажите, чем сортировать и как это сделать? Это решение, конечно, похоже на костыль, а если ещё и дальше делать, то больший костыль, но всё же это попытка и я хотел бы доделать её.
Анон, дай совет. Нужно сделать десериализацию ответа от сервера. Есть несколько типов ответов. Соответственно первый ответ - это блоки информации, которые нужно десериализовать. Последние две - просто метаданные об ошибках\результатах.
К слову, на выходе я должен получить _абсолютно_ такую же json строчку, так как она будет использоваться повторно. Не хотелось бы писать ещё один десериалайзер.
Я пытаюсь использовать Gson, чтобы выполнить эту задачу.
Создал класс DataModel -> ссылается на Response -> ссылается на Items; Вот тут собственно и проблема, Gson пытается сделать каст на Stringmap, то есть объект спокойно создается, потом возвращается в Json и все отлично, но доступа к свойствам и метода последнего объекта (Items) я получить не могу, а собственно очень надо. Собственно вторая проблема - как отличать все эти 4 объекта друг от друга. Так как Items могут содержать различного рода свойства. Как видно на первой картинки - вовсе вложенные объекты.
>>798756 Повторяй себе это почаще. Может с переходом с экспериментального статуса этой фичи https://pavelfatin.com/typing-with-pleasure/ печать будет побыстрее. Но пока даже в этом идея сливает. И я не говорю сейчас про тормоза идеи, когда называю калом. Там плохо все - начиная с сообщениях в джавовских компонентах ui которые не скопировать в буфер, заканчивая идиотским юзабилити.
А это нормально, что я пишу код вообще не задумываясь о теории и даже не смогу ответить, что такое умные слова типа анонимные классы или лямбда (хотя иногда использую по подсказке иде) или диамонд или инвок динамикс? Просто сажусь и пишу шоб работало, стаковерфлоу гуглю.
>>798927 говнокодишь короче я вот тоже как ты был еще пол года назад, а сейчас смотрю на свой прошлый код и волосы дыбом. (говнокодящие макаки не нужны, в лучшем случае за миску риса работать будешь если не поумнеешь)
Шапка треда https://github.com/qqqlll/Java-Thread/wiki
Предыдущий тонет здесь
Желающие прекратить терпеть смерть, стагнацию, похороны и пожаловать в будущее на острие прогресса, где готовые пакеты фреймворков ломаются при обновлении, просто не работают и живут полной жизнью уебывают сюда: https://2ch.hk/pr/res/789035.html