Вы видите копию треда, сохраненную 6 июня 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Q: ЧТО СКАЖЕТЕ ЗА ДЖАВАРАШ?
A:Худшая инвестиция в твоей жизни. Огромное количество говнокода, оторванные от жизни задачки, 1000 заданий по выводу в консоль какого-то говна.
Q: Посоны, собираюсь учить джаву по 2/5/20 часов в день. За сколько дней я выучу достаточно, чтобы зарабатывать фрилансом?
A: На джаве фриланса нет. Хочешь фрилансить — дуй в ПХП/раби/1С тред.
Q: Значит, я должен буду всю жизнь сидеть в опенспейсе, конвертируя XML в эксепшны? Ура, мне подходит! С чего начать?
A: Туториалы:
BEGINNER: http://myflex.org/books/java4kids/java4kids.htm
MEDIUM: http://www.tutorialspoint.com/java_technology_tutorials.htm
HARD: http://docs.oracle.com/javase/tutorial/
Книги:
- Head First Java, (2nd Edition) : Kathy Sierra, Bert Bates - для совсем нулячих простым языком.
- Core Java (9th edition) : Cay S. Horstmann, Gary Cornell - тоже для нубасов, но на серьёзных щщах.
- Effective Java (2nd Edition): Joshua Bloch - для тех, кто знает джаву, но хочет перестать писать костыли.
- Soft Skills: The software developer’s life manual : John Sonmez - софт скилз.
Видео:
https://habrahabr.ru/company/golovachcourses/blog/215275/ : 1000+ часов видео по Java на русском.
Q: Хули все книги на английском?
A: Без английского ты не нужен и можешь смело идти нахуй. Ну или в 1С-тред.
Q: Я не могу в книги. Наткнулся на джавараш, но в самом верхнем вопросе уловил нотки сарказма. С ним все правда плохо?
A: Это очередной курс(выучи джаву за 60 секунд и получай 300к в месяц), основная цель которого - выкачать из тебя деньги.
Q: Пока читаю, все понимаю, а сам ничего сделать не могу. Что делать?
A: Практика, больше практики.
Уровня laba1.pas: http://codingbat.com/java http://codehunt.com
Чутка серьезнее: http://programmr.com/zone/java http://codingame.com/puzzles
Рулеточка: http://postimg.org/image/xdfbvgps9/
Олимпиадка: http://codeforces.com
Примеры той-проектов: http://eax.me/programming-language-learning/
Ежедневные задачки, разделены на три уровня сложности https://www.reddit.com/r/dailyprogrammer
Q: Я выучил кор, достаточно ли этого, чтоб взяли на работу?
A: Лол, конечно нет хотя некоторым всё же везёт.
Вот майндмап с джава-технологиями: https://atlas.mindmup.com/2015/10/3d59a040592a0133d02a5d31ebcc5420/java/index.html
Цикл статей что в каком порядке учить: http://dou.ua/lenta/articles/java-beginner-guide-1/ (заблочен РосКомПозором, юзайте прокси)
Q: Слышал, SQL знать надо обязательно. Где его учить?
A: Начни с малого: http://www.w3schools.com/sql/default.asp
Затем переходи к: http://www.sql-ex.ru/
Q: Всё это хорошо, но без алгоритмов меня на работу не возьмут.
A: Не беда, вот курсы от Принстонского университета: https://www.coursera.org/course/algs4partI
То же самое но в бумаге: Роберт Седжвик, Кевин Уэйн - Алгоритмы на Java
Q: Я готов к первому собеседованию.
A: Проверь свои знания здесь: http://www.quizful.net/test
И здесь: http://www.careercup.com/
Q: Вопросы на собеседование.
A: http://jsehelper.blogspot.ru/2016/01/blog-post_59.html : куча вопросов с ответами, но не всегда правильными
http://becomejavasenior.com/blog/2015/07/01/327-interview-questions-java-developer/
Q: Какие еще ресурсы можно почитать?
A: https://android-arsenal.com/ : android
https://google.github.io/styleguide/javaguide.html : google java style
http://blog.jooq.org/ : Java, SQL, and jOOQ
http://virtualjug.com/podcast/ : подкасты
https://www.livecoding.tv/ : аналог twitch.tv только для программистов
Q: Где можно пообщаться на java тематику?
- В этом ITT треде.
- https://www.reddit.com/r/java : reddit
- http://stackoverflow.com/questions/tagged/java : платформа для вопросов и ответов
Список java фреймворков, библиотек и по на любой вкус:
https://github.com/akullpp/awesome-java
Архив тредов:
https://arhivach.org/thread/164844/ Официальный™ тред Java #27
https://arhivach.org/thread/167427/ Официальный™ тред Java #28
https://arhivach.org/thread/169672/ Официальный™ тред Java #29
Предыдущий тред тонет тут >>726643 (OP)
Советую курсы головача, в шапке можешь найти ссылку.
Спасибо, ты оказался прав, я проебался с сереализацией базового класа.
в принципе годнячок. Писали приложение для учета/контроля/получения статистики по первозкам на такси. Бутстраповый календарик оч пригодился кстати, отдали предпочтение гвт-шному.
Алсо по каналу я хз, будет 100 подписонов, спросить думаю какой контент дальше пилить. А теориебство все-таки наскучивает.
Что сейчас модно кодить, расскажи? А то я с ебучим Абапом за (аля Кобольд) 2 года я может отстал от современных тенденций.
Предлагаю запилить бота для телеграма чтобы он работал в контейнере и умел в jms.
При этом умел в криптографию и аутентификацию пользователей.
В итоге оформить как компонент для camel
Пиши лучше что-нибудь на андройде, тема все еще актуальная! Запили с игруху на базе Юнити ну и соответственно перекотывайся в Андройдо/С#
Думаю, просмотры попрут
Кого ты считаешь ЦА канала? Чем твои видео выделяются на фоне тысяч подобных?
Да
есть
Есть, но там сидят вк дауны, которые не могут нормально шапку треда скопировать в свою уебанскую конфу.
Админ не смог нормально ссылки скопировать, ограничение символ не причем. Зато рекламу впихнуть ума хватило. После моего замечания он просто меня кикнул. Так что думай сам, нужна ли тебе эта конфа.
Это был не он.
Ментором не представляю как быть. Пости вопросы сюда - я этот тред мониторю утром и вечером.
хочу применить аннотацию @Transactional, в мейвен подключил google guice, который как бы предоставляет её, но в коде аннотация красная, и не предлагает импортировать её из джуйса. кто что посоветует?
> @Transactional
>google guice, который как бы предоставляет её
айлолед.
javax.transaction.Transactional
не благодари
hot swap
вот шарписты пилили распознаватель картинок, а в жаве есть что-то подобное?
Добра тебе антоша, я так понял, надо указать путь не к классу, а к пакету ?
какой фреймворк лучше юзать для написания игорки-лабиринта?
либгэдэикс же, не?
Spring
короч, хочу отправить своё первое в жизни резюме на почту конторы своего мухосранаска. что черкануть в сообщении кроме вложеного пдф с темой "резюме"?
если я напишу "Здравствуйте! Хотел бы начать работу в IT в вашей компании. Прошу посмотреть моё резюме и ответить, если я вас заинтересую", меня не примут за быдло?
сцыкую очень, так как раньше такого не делал, да и грамотные товарищи не рассказывали, а долбоёбом я могу быть только тут, с вами. спасибо)
Двачую, я за час морской бой написал с нормальной логикой постоения кораблей.
тебе в чем писать? в дескопе или браузере?
Какое отношение вопрос имеет к жаве?
В жява ИТТ третах все, кто занимается чем-то отличным от крудошлёпства – уебаны и байтойобы.
Доков не хватило.
Примеры такого же уровня, как в доках.
Отсюда не понятно как использовать sax для парсинга чего-то сложнее, чем хелоу ворлд.
Возможно ли на явке вообще найти какую-нить стажировочку с неполным рабочим днём? (студент, дс 2)
Например чего? SAX подход прост как молоток. Чего там может быть непонятно, наркоман?
А как искать, тип на всякие конференции от организаций ходить? А то на сайтах типа hh одна залупа
Ага, где именно внутри?
В начале класса:
class Outer {
class Inner { ... }
// остальной код
}
Или в конце:
class Outer {
// код остальной
class Inner { ... }
}
Нахуй он нужен и где используется?
В анальном сексе
Да похуй же.
Чтобы создавать массивы больше чем твоя мамка Integer.MAX_VALUE и писать низкоуровневые библиотеки.
Ну вот я знаю, что используется в нетти, я сейчас тож пишу свой асинхронный мморпг сервак, но хз как можно выиграть от этого ансейва. Я вообще не видел нигде, чтобы она как-то рассматривалась.
Выиграть можно с помощью того же, за счёт чего выигрывают нативные языки. Если ты даже не в курсе чего тебе от него нужно – лучше забей, только ебаться больше будешь вхолостую.
Нотч ты?
Узнал много новых слов: сервлет (файлы с ними я уже скачал), сервер томкэт (качаю), jsp (формочки, которые непонятно как заменяют старый добрый html код).
Что с этим делать? Куда кидать файлы сервлетов? Как настроить сервак на локалке?
Так вот не пойму почему эта хуйня ошибку выдает и не хочет коннектиться
IOException
1. Error:(10, 68) java: unreported exception java.io.IOException; must be caught or declared to be thrown
2. http://gallerix.ru/storeroom
Это? А то я нуфаг
Но от урл ничего не зависит
class A {
public void add(int a) { ... }
}
От него наследуется другой:
class B extends A {
public void add(int a, int b) { ... }
}
Проблема в том, что для класса B метод add с одним аргументом не имеет смысла, только с двумя. Как его скрыть?
Точнее, как отрефакторить это всё? Скрыть же нельзя.
Странно, что ты взялся за веб, не выучив основы. Лучше их все-таки выучить.
Обход эксепшенов при помощи throw/throws и try/catch/finally.
Делай его protected. Или переопредели в B так что бы кидал эксепшн, а вообще это неправильно.
И в чем же разница между перегрузкой и переопределением?
И да, чувак спросил как запретить вызывать метод add для объектов B, я ответил, или спрятать protected'ом или кидать UnsopportedMethodEception
> для класса B метод add с одним аргументом не имеет смысла, только с двумя. Как его скрыть?
Зачем его скрывать, если его можно просто не писать и перегрузить из класса А в класс Б с другим набором аргументов?
И вообще, обрубать доступ модификаторами это хуевое ОО. А эксепшены кидать это вообще пиздец. Кто тебя учил этому?
>Зачем его скрывать
>Проблема в том, что для класса B метод add с одним аргументом не имеет смысла
>перегрузить из класса А в класс Б с другим набором аргументов
Как ты его перегрузишь с другим набором аргументво блять?
>>737091
Я и написал что кидать эксепшн не есть хорошо, но те же коллекции их кидают и ничего живем.
>Перегрузка метода заключается в следующем — вы создаете метод с таким же именем, но с другим набором параметров.
Покормил.
Кудах.
Решение с эксепшеном - ок, но грязновато.
Я понимаю, что скрыть никак нельзя, но может можно как-то по другому реализовать?
Суть в том, что есть два класса, они очень похожи и второй проще реализовать, если он основан на первом. Но у второго отличаются аргументы у некоторых методов.
class B extends A {
int arg;
public void add(int a) { }
public void setArg(int b) { }
}
Нахуя скрывать вообще?
>>737125
Пиздец, вы вообще не можете в красивое, стройное ОО. А я еще удивлялся и негодовал, почему отдел кадров не может хороших джавистов найти.
Я не ебу че он там тупит. Если бы мне надо было, то я бы вообще рефлектом захуярил или просто метод с двумя аргументами создал и super вызвал.
Сервлеты - жаба код, который обрабатывает полученные запросы и выдаёт на выходе jsp странички, предварительно запихнув в них нужную инфу.
Jsp - сами странички, которые показывают запиханную в них инфу с помощью Jsp тегов. Содержат хтмл код, дополняя его своими жсп штуками.
Ну, тут только погугли туториалы, по любому что-нибудь найдётся по запросу "servler jsp tomcat tutorial".
Не могу. Что почитать на эту тему?
Как эту хуйню обойти с jsoup?
Напиши загрузчик картинок с описанием в очередь блога в таблере
Допустим есть текст и ссылки на картинки, это надо загрузить как пост
Спасибо, как я понял, по нажатию кнопки картинки должны на сервер улететь и отобразиться превьюшкой, побалуюсь
как можно выловить момент (в дебагере, скажем в идеи) получения http запроса? И как его эмулировать?
Именно интересно когда и какой поток проснулся и пошел собирать реквест и запускать сервлеты.
Я понимаю, что единственное поймать такое, это где-то в io-стриме повесить брекпоинт.
Но есть ли проще подход (сейчас ковыряю spark и хз как эмулировать http запрос там, чтобы дебагер поймал)?
тогда не ходи
эмулировать http запрос можно в браузере, поймать в дебагере чуточку посложнее: поставь бряку в любой работающий сервлет и вызови его. Потом по стактрейсу найди точку входа же.
Да много чего.
1.Читаю туторы и нихуя не понятно чем отличается пойнткаты call(someshit) от execute(someshit), что делает cflow.
2.Запили прохладную где применяешь, юзал ли в продакшоне, какие проблемы вылазят при использовании аспектов и aspectJ в часности.
3. Как запилить нормальную поддержку в idea? в плагинах только какой-то post-compilation weaving, судя по всему не то. Сережа Брин советует некий AspectJ Support Plugin, но у меня его нихуя нет(idea ultimate 15)
мля, точно.
Пере-инверс-наинженерил я сегодня, явно.
>>737297
Оно мне поможет в этих вопросах, или ты просто гуглом заделался (мне же реально понадобится n-времени чтобы понять сие ли это под мои задачи или нет)?
Я на работе юзаю Tomcat JPDA Connection. Ставишь брейкопинтов где хочешь, включаешь JPDA соединение и будешь в дебаге видеть все, что происходит
ок, благодарю за инфу, изучу.
Нубский вопрос, софтина зовется просто так или она работает только с Tomcat сервером приложений?
Подозреваю, что работает с томкатом только. Для других можешь подобное поискать я не знаю.
Джавабоги, помогите тупому анону(мне).
Проблема такая: пробую метод contains() на ArrayList состоящем из объектов и не работает.
Что я хочу сделать: если данного объекта нет в листе, то он добавляется. Проблема в том, что он добавляется даже если уже есть такой.
http://www.strawpoll.me/10154858
http://www.strawpoll.me/10154858
http://www.strawpoll.me/10154858
http://www.strawpoll.me/10154858
http://www.strawpoll.me/10154858
http://www.strawpoll.me/10154858
http://www.strawpoll.me/10154858
Я хз чего у вас тут такое отношение к жабарашерам, но для старта очень даже годный ресурс
прошел курс и устроился на работу
В консоль все как надо выводиться
Что за дела?
Спасибо, помогло
class Test {
int x;
int y;
Test(int x, int y) {
this.x = x;
this.y = y;
}
}
Или выдумывать новые имена переменных в конструкторе?
>мля, нахрена эти сишные подчеркивания
В плюсах по тому же гуглгайдлайну так пишут чтобы не писать this, лел.
Отличный-чистый стиль без всяких mXXX, _XXX, прям по "дяде Бобу" :)
Кстати, в "современных" языка (Scala/Kotlin/C# 7.0) есть такое понятие как "primary constructor".
В нем сразу передаваемые поля становятся свойствами НЕ меняя названия.
В твое случае все описание класса свелось бы к одной строчке:
class Test (var x: Int, var y: Int) // x,y были бы и параметрами конструктора и свой-ми класса.
лол конечно, еще бы типы писал iNumber, sText...
То есть пару раз в присвоение написать this - ужасно много, а постоянно писать с шифтом "_" это норм (сразу вспомнил пхп с $).
Причем когда в IDE жмешь эту "_" тебе вываливается невьебательский список всех приватов, при том что, когда например по какой-то первой букве "s" можно словить автодополение или короткий список.
Предлагаю этим уебанам писать вообще так "m_"
Вот, решил вкатиться в жабу. Осваиваю ArrayList, в связи с чем решил запилить с его помощью интерпретатор Брейнфака.
Обосрамс получился уже на объявлении объекта: компилятор жестоко пиздит сапогом за "ArrayList<byte> tape". Пришлось вместо byte задействовать java.lang.Byte (см. пикрел. строка 14). Но и это еще не все. В строке 45 (инкремент ячейки массива) я никак не могу привести int к этому самому Byte.
Что делать посоны? Может быть ArrayList вообще для таких задач не предназначен?
эта хуйня не только в присвоении нужна, есть еще методы с одноименными аргументами/контейнерами.
ctrl + space, наркоман.
Да.
Имхо, если ты байтоёбством надумал заниматься, где важна производительность, то используй старые-добрые массивы примитивов. Конечно, компилятор не поможет в случае чего увидеть unsafe cast, но зато не получишь оверхеда с анбоксингом.
Поправка: unsafe cast возможен только если используешь массивы объектов, с примитивами всё безопасно, так что последнее предложение мимо кассы.
Единственный плюс generic-списков над массивами в случае примитивов - автоматическое расширение.
селффикс
Большое спасибо, анон.
Вроде бы в основном закончил с этим. Но теперь новая беда. При попытке запустить на интерпретаторе хелловорд, он валится с исключением.
[code lang="text"]
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at brainfuck.Application.run(Application.java:48)
at brainfuck.Application.main(Application.java:96)
[/code]
Как видишь, прога сыпется на той самой строке, где я пытался изменить значение ячейки. Где ошибка, понять не могу. Вот полный исходник.
http://pastebin.com/02pezVQ6
Тут же написано что нет такой позиции. Ты не можешь вставить в ту позицию, которой нет. Если ты читаешь последовательно надо писать add
Я понял, что он пишет мне Size: 0. Но я не вдупляю, почему так происходит. Я ведь сделал ensureCapacity. Или это еще не значит, что 30000 ячеек там уже есть? Типа, их надо сначала все создать через add?
Нет, они там есть, но пихать он в них не будет так как он не знает что они там есть, так как его переменная size = 0. ensureSize просто сделает так что массиву не потребуется расти если ты не будешь пихать туда больше элементов, так что да, тебе прийдется добавить туда фиктивных элементов. Учись смотреть сорцы.
Спасибо, анон. Я понял. Проще сделать на обычном массиве, т.к. с ArrayList придется каждый раз проверять, создан ли элемент, чтобы его изменить. Ведь доступ к элементам в Брэинфаке чаще всего осуществляется непоследовательно.
Когда я писал интерпретатор брейнфак++ (на олимпиадке) я довольно последовательно шел, иногда конечно возвращался.
Короче фиксированный массив был.
Понятно. Но у меня другая проблема. Файл с кодом программы я читаю в память. А проблема с доступом к ячейкам памяти. С фиксированным массивом инкремент делается просто: case '+': tape[index] += 1; break;
А вот с ArrayList так сделать нельзя.
Прочитай файл в список, запиши его в массив. Работай уже с массивом.
Ты чё, ёбнутый писать на этом говне? Я думаю, даже сами девы из оракла брезгуют им пользоваться.
И да, подобием ждевелопера ты итак в будущем напользуешься вдоволь - sql developer.
https://habrahabr.ru/post/248541/
Пока особых различий не заметил. Кроме того, что в Идее автодополнение включено по умолчанию. Зато у нее есть большой недостаток: шрифты именно на моей системе отрисовываются уберговняно (subpixel рябит в глазах, а grayscale замыливает). А тут более-менее терпимо.
Я еще совсем нюфаг в Джаве и какими-то киллер-фичами Идеи проникнуться не успел. Включаю ее, чтобы Kotlin-coans порешать.
Ты наверное уже отправил, но лучше поздно, чем никогда. Темболее ещё один товарищ интересуется.
Лучше не "здравствуйте", а "добрый день".
>Хотел бы начать работу в IT в вашей компании.
Тут лучше ссылаться на конкретную должность / объявление. Если такового нет, то сам напиши, кем устраиваться собрался.
>Прошу посмотреть моё резюме и ответить, если я вас заинтересую
"Прикрепляю к данному письму своё резюме в пдф-формате".
В конце не забудь упомянуть, что "Если у вас возникнут дополнительные вопросы, с радостью готов на них ответить".
А вообще такое обращение пишется отдельным файлом и прикрепляется к резюме. Надеюсь, ты так и сделал. Ну а в самом электронном письме этих пары предложений должно быть достаточно.
Есть старая версия библиотек и там помимо их еще дополнительные упакованы
Так вот этих дополнительных уже нету в сорцах
В общем не до конца понимаю как это работает
Качать сорцы, все нужные библиотеки и потом собирать?
Ну и первый вопрос в силе, в идеи с артефактами не разберусь
О, спасибо за идею, что-то вообще в их сторону не смотрел.
может кто помочь?
Ебнусь, лабу делаю за день.
Методичка кал, примеров нормальных нет.
Вообщем формулировка задачи такая: Организовать вычисления в виде стека.
Буду пиздец как благодарен
Видимо тебя просят парсить строку ввода и записывать в обратную польскую запись, гугли калькуляторы. И собственно такую запись.
>Причем когда в IDE жмешь эту "_" тебе вываливается невьебательский список всех приватов,
https://google.github.io/styleguide/cppguide.html#Variable_Names
При том, что обычно подчёркивание ставится в конце, я хз что тебе там вываливается, вполне себе вариант, лол.
if(i != null && i.getLevel() == 0)
и при этом на самом деле null. Оно сработает?
Там написано что i не должно быть нулевым, каким хуем оно сработает?
Нет, дальше проверка не пойдет.
>Как собирать библиотеки из сорцов в ярки?
Для сбора кода из исходников в jar-архив используются скрипты сборки. Самый растпространенный сборщик это мавен.
>Так вот этих дополнительных уже нету в сорцах
Нету вообще нигде или нету только у тебя? На search.maven.org искал?
>Качать сорцы, все нужные библиотеки и потом собирать?
А чего ты, собственно, добиваешься?
Нагуглил, что нужно использовать chunked-чегототам... Но что-то не соображу сколько запросов будет лететь от клиента, сколько обрабатывает сервер...
Например, вот этот индус в первом ответе
http://stackoverflow.com/questions/6074516/how-could-i-upload-a-large-file-in-chunks-using-java
написал какую-то хрень, где пишет в поток запроса, отправляет его, а только потом закрывает поток.
А этот
http://stackoverflow.com/questions/6074516/how-could-i-upload-a-large-file-in-chunks-using-java
на сервере одним махом считывает из Part сразу весь файл, циклов почти нет, и при чем тут chunk и chunks я так и не понял.
Короче, есть кто-то, кто сможет на пальцах объяснить алгоритм отправки и приема файлов?
Важно слать именно по частям, ибо java.lang.OutOfMemoryError на андроид-устройстве наступает мгновенно
Кек
>http.singleRequest(HttpRequest("/anus", entity = HttpEntity(ContentTypes.`application/octet-stream`, FileIO.fromFile(new File("1.txt")))))
>(get & path("/anus") & extract(_.request.entity.dataBytes)) { bytes: Source[ByteString, NotUsed] ⇒ ...
>недопонимать
Ну ты же джявамартыхан, ничего удивительного.
http://doc.akka.io/docs/akka/2.4.4/scala/http/common/http-model.html
И для джявы http://doc.akka.io/docs/akka/2.4.4/java/http/http-model.html
увы, уже отправил. но спасибо, учту на будущее.
В старой версии библиотеки были в "коробке" и дополнительные нужные библиотеки типа gson
В новой их уже нету, но я их поставил все отдельно
Но вопрос открыт, как собирать библиотеки из сорцов
Если в исходниках есть pom.xml, то собирать maven'ом.
Если есть build.xml, то ant'ом.
Если нихуя нет, то простые библиотечки можно попробовать скомпилить поклассово руками через javac, и получившиеся классы запихнуть в папку, назвав её %name%.jar
А, ну, ещё из трендового -- если видишь файлы с расширением .gradle, то собирать с помощью gradle.
Закинул я сорцы с пом в Идею, в мавен проект.
Компилит, тесты проводит и все такое, но не упаковывает
Где упаковка?
Че как маленький. Подключи аддон, напиши цель для мавена
После сборки в папке проекта должна появиться папка target. Там внутри нет искомого jar/war/ear ?
Не нашел там ответов на свои вопросы. Кроме указания "используй это и будет тебе счастье". Вот только я ищу не инструмент, а понимание процесса
Кинь содержимое pom.xml на pastebin.
>кто сможет на пальцах объяснить алгоритм отправки и приема файлов?
Примерно так:
Клиент делает это и это в такой-то поочередности, столько-то раз, делая при этом столько-то запросов (организация между которыми делается так-то), такими средствами. Что сервер принимает таким и таким образом, с такими нюансами, обрабатывает так-то, такими средствами.
Нужно мне слать файл через Transfer-Encoding: chunked, чтоб не было out of memory. И клиентскую и серверную часть пишу я, цель - только отправка файлов, так что все лишнее можно урезать. Но что обязательно надо оставить?
Так лучше?
http://pastebin.com/DkNY3bUa
Вот. Этого кода хватает чтобы слать и принимать.
Класс O - константы. Колдовство с временными файлами, потому что у меня не получилось писать gzip сразу в/из потока запроса, был внезапный EOF. Вообще, мне говорили, что gzip для бинарников вообще не подходит, и похоже, так оно и есть (хотел еще видео послать и убедиться окончательно), но не успел пока что-то получше взять.
http://pastebin.com/N5qd3mZg
Она, и вообще объект класса в котором эта хуйня происходит передадутся в callback и будут заняты пока его (callback) не убьет GC, так что с ними ниче не случится.
https://cwiki.apache.org/confluence/display/SLING/Chunked+File+Upload+Support
Вот тут про то как проихсодит аплоад файла по частям.
http://stackoverflow.com/questions/5222784/how-to-implement-http-post-chunked-upload-of-a-big-file-using-java-httpclient
Тут про то как отправить файл кусками с клиента
Сервлет проблем испытывать не должен с тем каким образом ему файл передается.
И вообще, я отказываюсь верить что в пердоиде за 2016 лет не изобрели своего собственного паттерна для аплоада больших файлов. Ты спрашивал в андроид-тренде?
Вот, первые две ссылки из гугла:
https://futurestud.io/blog/retrofit-how-to-upload-files
http://stackoverflow.com/questions/22874735/upload-large-file-with-progress-bar-and-without-outofmemory-error-in-android
запрос: android big file upload pattern
правильно заданный вопрос это половина ответа
Нет. Подумал, что от андроида тут почти ничего нет, а проблема преимущественно джавы.
Спасибо, попробую это переварить
Но пока не сел читать, переспрошу:
>Сервлет проблем испытывать не должен с тем каким образом ему файл передается.
Это значит, что сервлет даже может и не знать, что контенты был разбит и грузит всегда одинаково одним махом?
>>739308
С гуглежом вечно проблемы. Несколько дней просиживаю в гугле, изучаю какой-нибудь сабж, а потом оказывается, что ответ и искать не надо было, все было всегда под рукой
>Это значит, что сервлет даже может и не знать, что контенты был разбит и грузит всегда одинаково одним махом?
Сам в этом не имел возможности убедиться, но где-то натыкался на инфу что да. Скорее всего, пока целиком не получен весь запрос у тебя сервлет не будет вызван. Я недавно делал rest-сервис для приема файлов, использовал jersey. Там тоже не понадобилось нигде хардкодить мультипарт. Так что не думаю, что и в сервлетах нужно.
Рорудо.
На какой версии сервлетов делал?
Асинхронность и неблокируемость использовал?
А то сдается мне ты даже не разобрался как это работает
Старый дедовский способ с drivermanager сразу забудь, уже давно менеджмент бд возлагают на контейнер. Если твой контейнер - томкат, то настройки бд ты кладешь в META-INF/context.xml, после этого ты можешь получить датасорс и из него брать конекшоны.
Вот здесь есть примеры, прокручивай сразу до PostgreSQL https://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html
Выкинь говно. Ставь вайлдфлай.
>>739437
На ознакомься что такое неблокирующий асинхронный сервлет
https://docs.oracle.com/javaee/7/tutorial/servlets013.htm
Плохой выбор. Гугли glassfish jdbc configuration
С получение датасорса так же как и везде, а вот с описанием его гораздо больше мороки.
Если еще есть возможность перейти на томкет, то переходи.
Блин, да какие асинхронные сервлеты. Мне бложик простой. С этим всем дерьмом буду летом разбираться. А сейчас сессия, надо по-быстрому состряпать свистелки-перделки.
Спасибо о великий обладатель знанием. теперь нахуй иди, я сам решу когда и с чем мне ознакомиться. можешь еще конечно пояснить какие горизонты открывают твои сервлеты для rest api, но мне похуй
Б - благодарность
Говна наверни. Хули тогда кукарекаешь о чем не знаешь.
Мультипарт аплоад в сервлете работает как не знаешь если.
>>739470
Выкинь гласфишь и не вздумай брать томкат.
Короче ставишь вилдфлайт. Можешь 10.
Затем прописываешь себе юзера - как написано в мануале по вилдфлаю.
Затем или устанавливаешь драйвер твоей субд как модуль или просто деплоишь его.
Затем создаешь датасурсы в админке мспользуя драйвер который ты установил или задеплоил.
Затем в своем приложении испольуешь для создания персистенс юнита уже готовый датасорс используя jdni имя его.
Это все хорошо описано в интернетах. И в мануале по вилдфлаю в частности
В качестве иде используй нетбинс. С ним идут нормальные примеры и самое главное с ним идут плагины для генерации ентитаклассов и контррлеров дао на основе готовой субд.
Так же там идут готовые мастера по генерации различных полезных вещей типа еджиби бинов для реализации бизнес логики
с таким гайдом человеку незнакомому с вайлдфлаем неделя понадобится чтобы датасурс настроить, очень годный гайд рекомендую.
Спасибо.
Парсер данловдер порнохаба
недавно нашел студенческую лабу, как раз на многопоточность. суть лабы - перемножить две матрицы размерностями от [1;1] до [2048;2048] ( в моём случае размерность вводил пользователь) и выполнить умножение в несколько потоков. Ну и по фану можешь сравнить скорость операции в 1 поток и в несколько
Суп програмач-помогач. Репортирует идиот, который хочет парсить linkedin, но не может в премудрости аутификации (sic!) OAUTH .
Более менее понимаю только джаву на уровне пре-джуна. Я пытался ковырять родной API linkedin-a, но не нашел ни толковой документации, ни годных примеров по различным поискам. Сумел только получить пин аутентификации для своей "проги". А всё что мне нужно, это получать html-страницу, ВСЁ.
Обоссыте меня, отпиздите, направьте хотя-бы в правильную сторону, пожалуйста...
А зачем API, чтобы получить html страницу? Если ты с браузера до этой страницы доползти можешь, то и спиздить её можешь
>Прошел курс, устроился на работу в пятерочку.
Пофиксил тебя, не благодари. А теперь - нахуй иди, засланец.
Ты чего рвешься то, сам то из мака ушел уже?
Названия однобуквенные годятся лишь в качестве локальных переменных, да и то, как индекс, чаще всего. Называй их так, чтобы понятно было, для чего они нужны. Например:
int xyu=3;
int nu3ga=1;
В конструкторе, как правило, на продакшене новые имена не придумывают. Фантазии не хватит) В книжках видел, что типа новые, а на практике все генерят из менюшек своих ide. И оно выдает конструктор, как у тебя.
В том-то и дело что я не могу просто получить хтмл страницу, без авторизации. Предлагаешь юзать схему скачать хтмл с браузера? Автоматизацией тут и не пахнет, тащемта.
Нет не предлагаю, я просто туда не заглядывал давно. Если у тебя получилось аутентифицировать приложение своё, в REST api у них искал нужное тебе?
Так апи позволяет получать готовые результаты вроде постов, юзеров и другого
Для хтмл страницы нужен парсер с куками твоими, да и все вроде
Да, я его ковырял, с неделю, но всё сложна и нипанятна, есть классы для поиска, но нет конструкторов, да и мне ж нужно 1488 фильтров наставить.
Ну вот первая ссылка в гугле
http://stackoverflow.com/questions/31280097/login-into-linkedin-with-jsoup
После этого поидее сможешь перейти на нужную тебе страницу
Пошел пробовать, спасибо.
ссылка на первого индуса
http://stackoverflow.com/questions/9630430/upload-large-file-in-android-without-outofmemory-error
Извиняюсь
Аноны, где то в треде, возможно в одном из прошлых, была ссылка на сайт. Там были джава проекты, можно было их дорабатывать, вносить изменения и прочее. Проекты разной сложности от манипуляций со String, до всяких тетрисов.
Пожалуйста, скиньте ссылку на сайт(это был не гитхаб).
Оп пост
>Уровня laba1.pas: http://codingbat.com/java http://codehunt.com
>Чутка серьезнее: http://programmr.com/zone/java http://codingame.com/puzzles
>Рулеточка: http://postimg.org/image/xdfbvgps9/
>Олимпиадка: http://codeforces.com
Ты про уровень laba1
В оп посте есть ссылки на предыдущие треды. Глянь там, ленивая жопа.
Я придумал!
File file= new File("large.mp4");
String stringFile= file.toString();
А потом Gzip-ом, он же хорошо текст жмет!
Или если mp3, то на клиенте перекодировать в меньший битрейт, а на сервере возвращать обратно большой!
md5
https://gist.github.com/anonymouS/776e9b45039fdabfe5dff1c2e50ee313
Что за web приложения?
Да, спасибо, только каст и работает, не хочет он сам выводить почему-то.
могу только подсказать как резус-фактор по тексту определять и количество половых партнеров за последний год.
Да, это моя первая попытка написать что-то сложнее парсера файликов и решателей квадратных уравнений, не плюйтесь особо.
Так контейнеры уже отмирают. Всякие спринг буты - тому подтверждение.
Не, они хороши, чтобы по-быстрому склепать на коленке сайтик для препода в универе, а не для полноценных приложений.хотя зависит от того, для каких
Хипсторы уже напердолили реальную замену ее-шным cdi jms ejb jpa jta годную для продакшена?
Спринг тот же самый контейнер.
Лол.
Сайт на javafx? Аплет на сайте будешь держать? Очнись, ты не в 2000ых года живёшь, а в
>2076
JavaFX используется для написания десктопных приложений.
Жаба для сайта может быть максимум на сервере (или GWT, т.е пишешь веб-клиент на яве, а он генерирует javascript и веб странички, но эт сложно для новичков). А для фронта можешь использовать JSP (хотя кому он нахуй нужен?) или какой-нибудь современный javascript фреймворк а-ля angularjs (но ты и жабы-то не знаешь, так что JSP тебе подойдёт).
Если хочешь писать десктопное приложение, то насчёт фреймворков для javafx я тебе ничего не скажу, погугли. Я работаю в компании, где написан свой фреймворк на swing, в опен сорсе его нет. Но по-моему делать клиент на жабе - это пиздец и вчерашний день.
Да мне не принципиально javaFX. Я могу освоить что то новое.
Может ли это обеспечить мне Java?
Лучше стань гей-шлюхой
Есть два стула: фреймворки на базе GWT с готовыми компонентами и фреймворки с шаблонизатором.
На какой бы ты ни сел говна употребить придётся изрядно.
В первом случае потому что не сможешь почти ничего кастомизировать, сессии будут протухать со временем раздражая этим пользователей, да и вообще продуктивность разработки веб-приложения в стиле десктоп-приложения ниже чем у нормальной веб-разработки.
Во втором потому что помощи от фреймворка будет минимум. Тебе всё равно придётся набрасывать всё тело html вручную. Скорее всего с нуля, потому что изобилия готовых темплейтов и тем для таких фреймворков нет. Хуяк-хуяк и интернет-магазин готов не получится.
Советую посмотреть в сторону Jpython и dJango, ну или JPHP на крайняк.
Нет. Бери что нибудь с более низким порогом вхождения и где не так требуют бумажки о ВО(если у тебя их нет).
Это второй вариант.
Давай ты в общих чертах объяснишь сложная ли планируется разметка, много ли будет типов страниц, таблиц в БД, сложный ли будет процессинг форм.
Как раз таки это и будет.
... которое надо убить? Тогда всё правильно делаешь.
Сорян, туплю в конце дня. Я проложил ассоциацию до аппликейшн серверов и иже с ними. Ну и кстати чем заменить jms придумали же вроде, не?
Привет, устроился на вторую работу с дипломом из пту.
Да все там можно сделать нормально и без EE. Этого поехавшего не слушай - он тебе и для хелловорда серверы приложений разворачивать начнет.
Да как сказать. Spring Data + jpa - удобно. IoC контейнеры - удобно пиздец.
Если хеловорд должен работать как часы, кластеризироваться, и тянуть мульон подключений то до. Советую вилдфлай
Пишем свою имиджборду на явке. Одна с использованием контейнеров, вторая на пуреява с НИО.
Устраивает стресстест по нагрузке.
Делаем выводы
Байтослесарь порвался. Лучше измерь продуктивность и поддерживаемость такого подхода. Даже на голых сервлетах уже никто не пишет - нужны веб-фреймворки.
Ньюфаня, уходи.
Имеет значение заведение, в котором получу диплом, или можно выбрать любое днище?
Байтослесарь - презрительное название человека, который старается писать код ближе к машине, экономичней по отношению к её ресурсам.
Динамопетухи совсем ебанулись.
Эээ
То есть использование апсерверов и контейнеров уже у нас байтоебство?
Да ну вас нахуй блэт.
Короче челендж реквест в силе.
Пишем борду.
Я на контейнере, тот кто примет челендж на пуреява с НИО.
Потом тест и результаты.
Где вы противники сервлетов и контейнеров??
Беру СпрингБут. 2 недели на разработку. С тебя жалкие 90к рублей, за счет моего отсутствия на работе.
Ты долбоеб что ли, школяр ебучий?
Ты еблан? Тебе же сказали что байтослесарь какраз тот кто будет на НИО писать веб-говно. Я сомневаюсь, что найдутся долобоебы готовые писать сайтики на нио или сервлетах. Свой тул под задачу же. А твой школьный чеоенж никому кроме таких же упоротых школьников не впал вообще.
Еблан тут ты.
Трендель почитай.
Мне тут который день доказывают что сервлеты с апсерверами говно и нинужны и все надо делать без них
так и есть, ебашишь круды на jersey, статику выводишь в nginx.
Или можно как-то по другому передавать данные между разными сценами?
Можно как синглтон, но это пиздец. Ты похоже не понял сути IOC/DI
Используй Spring Boot.
Наоборот, инстанциируй контроллеры при помощи ApplicationContext/BeanFactory.
Используй ApplicationContextAware/BeanFactoryAware.
Ебать, я даун. Прост тестил отдельно сервис, поэтому и доставал вручную из аппконтекста. В рестконтроллере он не понадобился.
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("C:/spring.xml");
EmpDAO empDAO = ctx.getBean("empDao", EmpDAO.class);
empDAO.setName(1, "fuck");
и хуй. файл не найден. я его куда только не пихал, вот уже глобальные пути пишу. файл нот фаунд эксепшн. поясните плез за конфиги. как создавать, куда вставлять. жопа космически пылает. (п.с. в spring.xml у меня описана связь бина дао и датасурса с драйвером, без этого ничего работать не хочет)
Тык ты напиши стектрейс весь, хули ты.
Бтв, "C:/spring.xml"? Пиздос. Дефолтная папка для ресурсов - resources, внезапно. Там и держи конфиг для спринга.
В класспас очевидно же. Алсо спермодебилы обязаны страдать. Ставь двойной слеш ебта
уже куда только не захуяривал. в properties проекта в ресурсы спринга файл тоже воткнут
Может ли это обеспечить мне Java?
Файловую структуру покажи. У тебя должно быть что-то вроде пикрилейтед
Может. Только конкуренция сейчас в джаве неадекватно высокая. И фриланса нет. И так - без проблем.
Тогда не знаю, лол.
хочу программировать на ведро, приложения всякие, для себя тоже кодить, для этого мне нужна жава. вот с таким раскладом я не потеряю зря время?
Если хочешь фрилансить, то тогда у тебя два стула пути: веб и мобильная разработка. В принципе, на ведре можно фрилансить без особых проблем. Но нужно учиться. Учиться быстро и учить дохуя. Так что дерзай.
Пушо нужно очень много говна выучить, чтобы начать зарабатывать. По крайней мере, так обстоят дела с обустройством на работу на позицию джуна, насчёт фриланса не уверен.
спасибо тебе, анон, очень обнадёжил. Буду учить. Через 2 года может куда устроюсь
Spring in Action читай, рандомными выдергиваниями кода из со ты нихуя не добьешься.
Как это сделать? Имею ввиду чтоб мой проект могли запустить даже на самой днищенской версии jvm, а в идеале хотелось бы в исполняемый файл скомпильнуть, чтоб на любой винде запустилось, но такое ява не позволяет.
запиздил в target/classes, заработало. мож кому пригодится, пол дня просидел блять
В maven-compiler-plugin прописать configuration property target 1.7
В gradle targetCompatibility=1.7
> в исполняемый файл скомпильнуть, чтоб на любой винде запустилось
Гугли инструменты как можно зашить jre и приложение в exe
>>741603
Отлично, теперь сделай mvn clean:clean
Правильный совет изначально был установи идею. Он же из иде запускает, иде класспас проставляет и его ресурсы туда не добавила просто. Мавен то из ресурсов в джарку/варку подтянет, но для этого надо запускать приложение не зеленым треугольничком убогого эклипса (или что это там у него на скрине).
Я хотел начать с "Программирование на Java для детей, родителей, бабушек и дедушек" Яков Файн.
Я в программировании ноль
Раз в программировании ноль, делай так.
Maven он и нужен для того чтобы не использовать непереносимые IDE-специфичные проекты Ant. А если Maven не копирует ресурс в target - это его проблема.
Хотя да, у меня в IDEA все норм работает.
Нугет ?
там какие-то копро xml-ники и кривой нугет сверху
в спринге бины
>Только конкуренция сейчас в джаве неадекватно высокая
На самом деле, только на уровне джунов и мб миддлов. Сеньёру-помидору найти сытную работу довольно легко.
Spring Data JPA и Spring Data REST решают эти проблемы
Насколько адекватно я буду смотреться на фоне конкурентов с несколькими проектиками (учебными) на стеке Hibernate/Spring (MVC, Security, Data JPA)/Maven
воплне достойно
if (obj instanceof Interface<String>) {
...
}
Оборачивай в блок try, так например:
try {
____Interface<String> iString = (Interface<String>)obj;
...
} catch (Exception ignored) {
}
Если у тебя есть возможность получить из объекта инстанс класса которым он параметризован, проверяй и его instanceof (я имею в виду, если у тебя в объекте есть геттер который возвращает <A>, проверяй его значение на instanceof String). Лучше таскай с объектом теги типа.
[code]
if (obj instanceof Interface) {
if (((Interface)obj).getFoo() instanceof String) {
...
}
}
if (obj instanceof Inteface) {
if (((Interface)obj).getTypeTag().equals(blah)) {
}
}
[/code]
class Creator<T> where T : new()
{
public T CreateProduct() { return new T(); }
}
В плюсах тоже можно.
Не нашёл как подобное сделать в Java. Это вообще возможно?
нет. В шарпе генерики сохраняются в рантайме, в жабе стираются.
нет. В шарпе обобщения сохраняются в рантайме, в жабе стираются.
я специально написал так чтобы гуглилось.
Я написал решение как есть, понятно что это говнокод
>>741743
Очень костыльно, это так
class Creator<T> {
public Creator(Class<T> clazz) {
this.clazz = clazz;
}
public T Create() { return clazz.newInstance(); }
}
void function(Object... args) {
if (!(args[0] instanceof List<String>)) {
throw new Error("Ну, охуеть теперь.");
}
List<String> lst = (List<String>) args[0];
try {
for (String s : lst) {}
} catch (Exception e ) {
throw new Error("Ну, охуеть теперь.");
}
// ...
}
>>741744
Что-то не вижу как они мне могут помочь.
>>741735
Надеюсь, дал.
Это страшный говнокод... Зачем тебе нетипизированный varargs array на один из элементов которого на самом деле накладываются ограничения по типу?
Хуйня какая-то.
void function(Object... objects) {
if (objects.length < 1) {
throw new IllegalArgumentException("First parameter must be list");
}
List<String> strings = new ArrayList<>();
for (Object o : (List) objects[0]) {
if (o instanceof String) {
strings.add((String) o);
} else {
throw new IllegalArgumentException("First parameter may only be list of strings");
}
}
// Check done
}
я спать.
void function(Object... objects) {
if (objects.length >= 1) {
Object param0 = objects[0];
if (param0 instanceof List) {
List<String> strings = new ArrayList<>();
for (Object o : (List) param0) {
if (o instanceof String) {
strings.add((String) o);
}
}
// Check done
}
}
}
без эксепшонов
void function(Object... objects) {
List<String> strings = new ArrayList<>();
String errorStr = null;
if (objects.length >= 1) {
Object param0 = objects[0];
if (param0 instanceof List) {
for (Object o : (List) param0) {
if (o instanceof String) {
strings.add((String) o);
} else {
errorStr = "Some of elements in first parameter are not strings";
}
}
} else {
errorStr = "First parameter must be list";
}
} else {
errorStr = "Wrong number of parameters";
}
// Check done
}
без эксепшенов и с каким-никаким отловом ошибок. Ушел.
И не возвращайся, мудак, блядь.
Господь дал ему https://gist.github.com - не хочу, хочу ебать глаза неформатированным кодом без подсветки.
Многие кукарекнут про Pattern.compile - вне циклов, но циклов не было.
У меня вопрос, почему так все плохо?? Есть ли шустрые регекс-либы на java?
Не вставки же на php делать теперь. :)
что ты там хочешь увидеть, обычные паттерны вида
int flag = Pattern.DOTALL | Pattern.MULTILINE | Pattern.CASE_INSENSITIVE;
Pattern.compile("<" + tag + "[^>]>(.?)</" + tag + ">", flag);
Pattern.compile("<[/]" + tag + ".?>", flag);
Только это все в методах и передается тег типа head, script, code, pre (на спрашивай зачем).
Можно тысячу раз вопить про то что давай весь код, но факт в том что те же регексы катаются в пхп.
Проблема не только в моем коде, вопрос к тем кто сталкивался, есть альтернативные либы, ппц как не хочется на сях писать.
http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=regexdna
>>741879
Ну если ты пишешь одноразовую утилиту, которая будет запускаться редко и из командной строки, то пиши-ка лучше на PHP или Python.
А если у тебя нормальное приложение, то поставь флажок CompileThreshold 1 и прогони несколько раз, потом уже замеряй. Да, JVM оче медленно стартует и медленно разогревается.
Алсо, парсить XML регулярками - это пиздец.
За CompileThreshold, благодарю, погоняю.
Нужно именно в джаве, это там часть приложения.
Насчет парсинга, я не парсю, а вырезаю некоторые теги, но в большом тексте (типа как страница документации String Boot).
DOM анализатором вырезать теги, я думаю еще дольше :)
Есть нормальные S(t)AX парсеры XML - быстрее DOM, надежнее и поддерживаемее регулярок.
а не, я тут тупанул, кинул отпарсенный html (второй раз он его пролетел конечно), в общем вместо 350 стало ~280, что все равно печалит
без подсветки читать не можешь чтоль лол?
пиши уже на сях, заебал
Присоединяюсь к вопросу. О сервлетах знаю, но на дворе уже 2016-й, поэтому есть несколько вопросов.
Spring MVC выглядит как-то менее объемно, нежели J2EE, и является удобной оберткой над сервлетами. Стоит ли вообще тогда лезть к EJB и прочим прелестям J2EE или курить Spring in Action и писать pet-project?
Сервер приложений, вернее, сервера приложений. Поясните, будьте любезны, за них. Что выбрать человеку, который только под jetty, который и сервером приложений назвать нельзя, работал? И на пальцах бы про качественные отличия embedded и не embedded серверов.
Если ты спрашиваешь зачем нужны ejb то они тебе не нужны. Ejb без ремоут интерфейсов вырождаются в обычные менеджед бины.
Спринг как бы хипсторы не пытались его противопоставить ЕЕ - по сути тот же ЕЕ, но со своим контейнером контекста, что позволяет запускать его независимо от стека ЕЕ. Внутри же спринг строится на тех же принципах что и ЕЕ. Часть реализаций стандартов своя, но стандарты ты же. Jpa jta jms mbean jax-* и так далее.
Конкретно спрингмвц тот же джсф только в профиль. Более продуман и позволяет легче реализовывать нужный функционал не городя jsf+omnifaces+ui как приходится в ЕЕ.
Апсервера.
Из опенсорс остался годным лишь вилдфлай. Гласфиш протух и не будет развиваться ораклом вообще.
Из платных живы все, но вебсфера это ЕЕ6 и некрота. Джейбосс - стейбл ветка вилдфлай но не так популярен, оракловский сервер и сервер под сап - нишевые продукты.
Так что если планируешь пилить что то свое - начни и закончи вилдфлаем. В случае с легаси... Ну тут как повезет. Но вебсфера это пезда.
Ембедед апсервера это хипсторская хуйня, зачем нужна хз. Но есть вилдфлай-сварм.
Не забывай однако что на ЕЕ мир явы не окончен. Есть еще osgi.
Karaf и все что под него. В основном там все пилят под вывеской Апач фаундейшен, но и редхат свою сборочку представляет.
Суть osgi контейнеров это управление микросервисами. Это интеграционные процессы с участием камела. И даже спрингоприложение можно запустить под карафом.
Я с этим чуток работал только с камелом. Камел это охуено. Просто ознакомься.
Если не охота держать караф и юзать jms для интеграции с ЕЕ - существует проект wildfly-camel. Расширение вилдфлай позволяющее юзать камел из бинов.
Вилдфлайфорсер
А.
На основной вопрос то не ответил лол.
Если хочешь пилить свое - спринг.
Если планируешь идти макакой на легаси то ЕЕ
>Гласфиш протух и не будет развиваться ораклом вообще.
Референс имплементейшн протух и развиваться не будет, ага.
Чо несет, поехавший...
Школопидор ты вообще хоть день работал с ЕЕ и легаси? Или ты только кукарекать про РИ и можешь?
Ссу тебе в ебало.
Вилдфлай форсер
По делу что-нибудь есть?
Два чая. Мало того что регулярки для парсинга использует, так еще ключи дрочит там где и когда это делать не надо.
К тому же - регулярка неправильная ). Забавы ради или из зловредства можно ШОК! скормить
<attr="a" tag>wtf</tag>. Остальные примеры можешь сам поискать.
Зачем вообще оптимизировать? Ты профайлинг делал вообще? Алсо, сравни решение на основе substring(), indexOf("</tag>") и тп. если уж религия jsoup использовать не позволяет.
Spring in action
>>742015
Лол, дети набежали.
1. Сказали уже не парсинг, а чистка тегов (хотя это тоже парсинг, просто шаблоно мыслящие дегинераты под парсингом подразумевают разбор дерева html). Только уеба будет DOM анализатором чистить теги.
2.
>К тому же - регулярка неправильная )
Умничка, откуда ты, чудо мое, знаешь, что там за документ и что там еще делается (регулярка может быть уже в каком-то контексте событий).
Увидели в одном тексте - регексы и html и зразу же в умах врублися шаблон.
PS и да, джава на регекса пиздецски тормозить, лучше бы либы какую кинули
Кек, учи матчасть. Про SAX, StAX тебе уже писали?
Ты можешь сколько угодно оправдываться контекстом или чем еще. Но стандарт xml /html по факту твое решение не поддерживает.
Сынок - тебя ткнули носом где у тебя код пованивает. А ты огрызаешься. Нехорошо.
Уеба ты конская, ты понимаешь, что пробежаться той ругялркой в десятки раз будет дешевле чем распарсить ДАЖЕ последовательно документ, с хуева тучей ветвлений и циклов в парсинге, а потом высечь тег и собрать снова.
Но откуда тебе знать, ты же выдресирова понимать - xml - значит бери всегда DOM-парсер
>>742059
Вонизм у тебя в голове, ты же понимаешь что ты глупый джун, который делает выводы по одной строчки кода, думая что парсится веб страница (да мой малыш, там много кода, просто замер именно по этому регексу был).
Я тебе могу сейчас другой регекс вне контекста DOM написать, у тебя наверно твой юный мозг вообще порвет, да?
Ты чо! В Ирланге можно десятки тысяч потоков создавать! Дешевое переключение контекста никакого жи овирхеда на стек!!1
>пробежаться той ругялркой
Иди читай про грамматики Хомского до просветления, ебанный полудурок.
Еще раз - учи матчасть. Учись профайлингу и приоритезации работ. Потом уже можешь рваться и тайтлы по интернету раздавать.
>овирхеда на стек!
Мартышка не слышала о stackless и прочих видах корутин.
>>742074
Он таки прав, но немного в другом – регулярка просто парсит текст, парсер состовляет AST и тд.
Маня - беги перечитывать конспекты. Здесь люди свободно употребляют слово парсинг в том числе и в самом общем смысле - разбор структурированных данных.
Интерн девелопер. Но сразу сказали, что активной разработки на проекте сейчас не ведется, поддержка и саппорт. А хули мне было делать, больше меня никто не брал. Вот думаю поработать с годик, чтобы опыт был по трудовой, а потом требовать перевода в другой проект или съебать.
>чтобы опыт был по трудовой
Кого ебёт твоя трудовая вообще? Выкинь эту срань из головы. Уровень твоей экспертизы оценивается из собеседований и резюме.
Спасибо за ответ. А если просто джуном хочу устроиться?
ну допустим ты параллеьно сам дрочишь и потом будешь тащить на собеседовании
вангую что возьмут чела который писал 5 строк в месяц и имеет год официального опыта(проверяют же), а хую с горы будь он хоть второй одерски предложат джуновскую зп и завалят сцаными вопросами по синтаксису\дрочке наизусть библиотек и т.д.
Мимобезработный
а тебя в черный список внесут за то что посмел напрашиваться на собеседование когда те кто год+ работают.
Потому что если ты присылаешь резюме, в котором рассказываешь, какой ты охуенный и какие библиотеки знаешь, но при этом у тебя НОЛЬ опыта в разработке, левая вышка и тебе 25+, то с высокой вероятностью твой гитхаб даже открывать не станут.
А как тогда преподносить опыт сорт оф фриланса, но не на биржах, а ирл нашёл людей которым надо было запилить говно?
Как хочешь, так и преподноси, но тут всё очень от HRа зависит. Если у него от начальства есть задача "найти человека с опытом от 3 лет", то твоё фриланс-резюме он может тупо выбросить в мусорку.
лал, как будто кто-то поверит что с фриланса можно выгодно перекатиться в офис. Если мне будет человек задвигать что он вот ъоть три года фрилансил а теперь хочет ко мне в оффис, то я скажу сорь фрилансеры не нужны)
И, опять же, если ты собираешься вкатываться в тырпрайз с фриланса, это может выглядеть сомнительно.
А чем плохо анон? Можно параллельно качать скил, заодно будет капать опыт и зарплата.
Много лучше чем 24\7 ебашить вещи, которые ты уже с закрытыми глазами можешь делать
Ну ты и мразь конечно.
Ты, блядь, смешал все в кучу про osgi, karaf, camel.
Osgi - это просто стандарт построения модульного приложения, как эти модули взаимодействуют друг с другом. Есть несколько реализаций этого стандарта: Equinox и Felix.
Karaf - это сервер приложений. Он состоит из osgi фреймворка и набора бандлов, которые отвечают за чтение конфигураций, сервис транзакций, вебсервер. Тот же самый караф можно собрать и самому, но есть шансы напороться на конфликтующие библиотеки. А тут уже все более-менее притерто друг к другу. Есть более расширенные сборки osgi сервера: servicemix, fuseesb.
А camel - всего лишь библиотека для интеграции различных сервисов. Ее можно использовать и в osgi среде, и в spring приложении, и даже в голом java-se приложении.
Тут еще надо добавить что wildfly, вроде как, сертифицирован всякими ФАПСИ и тп прикормышами, так что может использоваться в попильных рашкинских проектах, связанных с оборонкой и тп.
У меня он в вилдфлае
В интерфейсе 2 абстрактных метода, и при этом он помечен @FunctionalInterface - wtf? В функциональном интерфейсе может быть только 1 абстрактный метод. Ок, едем далее. Второй абстрактный метод - boolean equals(Object obj);. Зачем? Что он там делает? И как он себя проявляет? Непонимат, поясните антоши.
Лолшто?
Иквал основной метод для сравнения. А интерфейс компарабле как за нужен для соавнения двух экземпляров по компаратору.
ты походу вопроса не понел
>>742608
зачем тогда его описывать в интерфейсе Comparator если он уже определен в Object?
Вероятно, просто чтобы подчеркнуть важность этого метода - чтобы он был консистентным с compareTo
Интересная недокументированная фича функциональных интерфейсов. Я могу выходит перечислить те методы, которые реализованы в Object и интерфейс все равно останется функциональным:
>>742634
@FunctionalInterface
interface A {
void test();
boolean equals(Object o);
int hashCode();
}
Интересно.
javadoc аннотации @FunctionalInterface поясняет эту ситуацию:
http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/java/lang/FunctionalInterface.java
а ок, выходит, документированная.
Как того требуют соглашения по оформлению кода. Раньше в юношестве, прочитавши всяких гуру, обрамлял. Сейчас предпочитаю не ставить. В любом случае, если потребуют, кукарекать не буду.
Отрицательно, после того как дописал после такого if одну строчку с логированием, а затем не мог понять что за хуйня происходит.
alt + shift + f, либо ПКМ на коде -> Format
В общем, решил я настроить себе spring-boot и все у меня получилось, завелся на локалост все как надо.
Вот мой файл pom.xml http://pastebin.com/9vrmMHnx.
Но проблема в том, что для шаблонизации используется thymeleaf шаблонизатор, и приходится каждый раз при изменении шаблон пересобирать проект. Это очень напрягает.
Естественно первое что я сделал, стал курить маны, нашел что нужно в application.property добаить spring.thymeleaf.cache=false, но поскольку я тут, не трудно догадаться что эта хуйня не работает.
Но я не обломался и поел дебажить, в результате пришел к выводу что проблема в том, что у меня шаблоны лежать в java/resources/templates/.
Но предварительно я нашел видос где пояснят за dev-tools https://www.youtube.com/watch?v=A70NMxV13TI и у автора видео шаблоны сука лежат java/resources/templates/.
Анон, помоги может ты сталкивался с таким. ЧЯДНТ?
судя по видео, шаблоны >>743543
лежат в src/main/resources
А попробуй переименовать файл application.property в application.properties и положить его в src/main/resources
>>application.property
это я опечатался, в проекте у меня application.properties
Я так понимаю апдейтить Ctrl+F9 все таки придется.
Ctrl+F9 работает
Просто я думал, что меняешь шаблон жмешь в браузере F5 и у тебя подтягиваются изменения
Да я понял уже, печально конечно, но вроде как пересобираются только измененные части, а не весь проект, так что не критично пока идти таким путем.
Кстати анон, можешь подсказать как лучше сделать иерархию для фронта в проекте?
Ну чтобы там настроить bower, npm, gulp и т.д.
Где какие файлы лучше хранить?
Поясни по хардкору подробнее.
Постусловия так-то заменяют юнит тесты, но предусловия годная вещь или это нахуй не используют, а мажутся разными @NotNull?
Error: An I/O error occured. Server returned HTTP response code: 522 for URL: http://www.springframework.org/schema/security/spring-security-3.0.3.xsd
эта хуйня не хочет конфигурироваться
При попытке обратиться к урлу http://www.springframework.org/schema/security/spring-security-3.0.3.xsd произошла ошибка чтения, вызванная тем, что сервер вернул код статуса 522.
Такие дела, хохол.
У меня есть ExecutorService.
ExecutorService exec = Executors.newFixedThreadPool(25);
ArrayList<Future<ContentGenerator>> results = new ArrayList<Future<ContentGenerator>>();
for (String keyword : keywords) {
results.add(exec.submit(new Runner(keyword, name, snippetsPercent)));
}
for (Future<ContentGenerator> cg : results) {
try {
ContentGenerator cg1 = cg.get(25, TimeUnit.SECONDS);
saveGeneratedToSQLite(name, cg1);
} catch (Exception e) {
cg.cancel(true);
}
}
В методе call объекта Runner я обращаюсь к сторонней библиотеке. Так вот, проблема в том что эта сторонняя функция один раз из миллиона зависает (найти место зависания естественно нет возможности, ошибка воспроизводится раз в день).
Загрузка ядра 100%, мой таймаут 25 секунд почему-то не отрабатывает и поток зависает навсегда, забивая пул. Как исправить?
Вангую, причина в том, что библиотека не умеет отрабатывать требование прерывания потока. Вот здесь подробно описывается как это работает http://stackoverflow.com/questions/3590000/what-does-java-lang-thread-interrupt-do
tl;dr Тебе придется лезть в сурцы сторонней библиотеки, возможно включать логирование для нее чтобы найти зависшее место. Может даже патчить, если есть сурцы. Недавно сталкивался с похожей проблемой: поток не прерывался из-за того, что ждал окончания выполнения sql-запроса. Решил проблему тем, что перед выполнением sql стал запоминать его preparedStatement, и если нужно было прервать поток, то сначала вызывал interrupt, потом у preparedStatemment вызывал cancel().
>найти место зависания естественно нет возможности, ошибка воспроизводится раз в день
google://jstack
google://java jmx visualvm
google://sigquit java
google://threads dump
google://grep deadlock
google://heap dump
google://watchdogs
google://java "Thread.stop"
Гугл в помощь. В середине нулевых всплывали какие - то либы на аннотациях, но по большому счету это все была чепуха на постном масле, т/к ничем не отличалось от assertions или проверок с выбрасыванием исключений. Т/е проверки проводились во время исполнения.
Инбифо - кастомизированная под себя фабрика по производству двуствольных фаллоиммитаторов, шоб и в куньку и в бздуньку сразу.
Некоторые так и делают, вперед.
Ну так перекатывайся сразу на Clojure, там таких любят
Разные вещи. Но, кстати по поводу программирования в ограничениях - есть в жабке соответствующий jsr и на эту тему https://jcp.org/en/jsr/detail?id=331.
Начнем с того, что в языке со строгой статической типизацией твоя хуета смысла практически не имеет. А со стандартным подходом к программированию на Java она не нужна в принципе.
Программирование модулей, при котором их реализация дополняется пред-, пост-условиями и инвариантами.
Пример из 90х - Eiffel.
Нет, ты прав конечно, если утверждаешь что это вообще можно делать с помощью системы типов. Но точно не в случае жабы.
А так - верификацию можно осуществлять и сторонними утилитами - т/е это достаточно ортогональные понятия.
Неправильно, это способ избежать падения программы по каким-то причинам - в Java и без того защитное программирование со всех сторон: на вход поступает объект указанного типа, если он может быть null - берем Optional, если факап - Exceptions, корректность работы проверяется тестами, всё.
<<Здесь знаменитая цитата Э. Дейкстра о тестировании>> - можешь погуглить.
Также можешь почитать про https://ru.wikipedia.org/wiki/Логика_Хоара и походить по ссылкам этой статьи.
Кроме того, этим не исчерпываются варианты контрактов. Это могут быть ограничения на диапазон значений или вот необычное пост-условие
@Ensures({ "result >= 0", "Math.abs(x - result * result) < EPS" })
взял отсюда https://github.com/nhatminhle/cofoja
Это должно в компайл-тайме провериться?
Типизация тут не причем, eiffel строго типизирован.
В основном полезная суть в предусловиях.
Чтобы клиенту сразу было понятно как юзать метод\класс
Чтобы не городить в методе миллиард проверок на корректность аргументов, нулл ссылки и т.д.
Не писать в комментахконечно же устаревших что мол этот параметр можно только так передать.
Вопрос удобства и сопровождаемости, можно обойтись optional, exeptions, кучей if проверок, можно обойтись и без вышеперечисленного, в конце концов можно и на сях написать, а все контракты соблюдать на словах.
Постусловия и инварианты не очень нужны т.к. это прекрасно выполняют юнит тесты.
В моем блабе нет значит и не нужно.
мимодругойанон
А вообще, в жабе действительно много средств аналогичных контрактам. Опционалы, исключения, изобилуют компайл-тайм проверки, да и код почти весь открытый. Давно считается плохим признаком передавать null в метод или из метода. По совокупности, это вполне разумная причина не отягощать язык еще и контрактами. По моему опыту, единственная проверка, которую стоит выносить на компайл-тайм это проверка на нулл, все остальные проверки это уже либо проверки каких-то данных в бд, либо проверки ролей, что вынести в контракт уже не так просто.
Мимо оп.
http://www.ibm.com/developerworks/ru/views/java/libraryview.jsp
Куча годноты по ява и платформе.
Добавить библиотеку годных книжек с кратким описанием почему это гууд, можно вынести в какой-нибудь pastebin(concurrency in practics, enterprise java patterns, спринги-хуинги в действии и т.д.)
Добавить вместо или вместе с майндмапом краткий список обзор фреймворков серверов и прочих штук из awesome-java github т.к. кроме звездочек ньюфагу не понятно что там используется, а что хуита.
А вобще предлагаю создать проект этого треда на гитхабе с кодом шапки, списками фреймвораков, книг и т.д. чтобы любой анон мог предложить свой вариант улучшений.
Коллективным разумом можно такую конфетку забацать.
>Коллективным разумом можно такую конфетку забацать.
Можно, но зачем? Меньше народу - больше зарплата кислороду.
Завтра предстоит проходить тестирование через codility.
Проходил кто в таком формате? Какие задачки там выдает?
Те же, что и в lessons?
Больше комьюнити -> больше помощи, литературы -> популярней язык -> больше работы -> большая ценность опытных кадров.
Больше комьюнити -> больше дебилов, демпингующих рынок.
больше помощи, литературы -> больше дебилов, демпингующих рынок.
популярней язык -> больше дебилов, демпингующих рынок.
больше работы -> не которую можно набрать дебилов, демпингующих рынок.
большая ценность опытных кадров -> 1 человека на проект достаточно.
Вы видите копию треда, сохраненную 6 июня 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.