Привет аноны, я ньюфаг в программировании, изучаю чисто для себя. Начал изучать java, вроде получается, но решил конкретные задачи для себя придумать, а не абстрактные hello world-ы и задачки на сложение и вычитание.Захотелось написать парсер для авито, который бы как-нибудь сигналил когда появляется товар по низкой стоимости. Сам парсер работает, пикрелейтед, в каждой строке выводит название объявления и цену, как раз то что нужно. Использовал библиотеку-парсер jsoup.Но дальше я что-то заглох, как мне сделать во первых чтобы программа перезапускалась каждую минуту (типа обновление данных) а во-вторых выдавала только объявления дешевле например 1000 рублей, либо по возрастанию в цене.
.
>>136142268 (OP)Чтобы повторялось - тебе нужен бесконечный цикл и Thread.sleep(), если в json есть отдельное поле с ценой, ты можешь отсортировать по ней. Вообще, лучше создать класс, который будет обозначать 1 запись из Джейсона, так будет удобнее. Гугли, прогу за тебя тут писать вряд ли кто-то будет.
Для перезапуска - цикл while true с задержкой в 36000 мс, а для цен - хз, как ты вообще рассматриваешь цену и объявление, тупо в виде текста? Возможно нужно будет с api авито работать
>>136142268 (OP)Во-первых, если ты изучаешь программирование, то юзать готовые либы не камильфо. Пиши парс самостоятельно.Во-вторых, по повторениям, в жабе это можно сделать миллионом способов, тебе проще всего будет через какой-нибудь экзекутор https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ExecutorService.html>>136143026> бесконечный цикл и Thread.sleep()Убейся. Надеюсь ты нигде не работаешь.
>>136142268 (OP)>выдавала только объявления дешевле например 1000 рублей, либо по возрастанию в ценеПиши свой парсер. Загоняй данные в массив из двух массивов (наименование, цена), потом перебирая и сортируя элементы двигай сразу оба элемента (наименование и цену). Таким образом отсортируешь как тебе будет надо.
>>136143193Я может что-то не шарю в этих ваших жабах, но зачем хранить и сортировать данные, когда их всего две категории, нужные и ненужные? И нахуя два массива, у вас там же шаблоны есть
>>136142268 (OP)> эклипс
>>136143434А что юзать? IDEA? Разве он не слишком навороченный для ньюфагов?
>>136143373алоуэ, пшш, пшш.. у пацана 2 массива - наименования и цены, ему нужно наименование с определенной ценой. Через паттерны можно, но он же начинающий.
>>136143521> IDEAХули нет то?
>>136143521идея вообще маст, она пол кода за тебя напишет лол, самое то для ньюфагов.
>>136142268 (OP)Не вижу проблемы распарсить твою строчку регуляткой на <Название товара> <цена> <адрес> <время>Создать класс, прописать метод для сортировки, в крестах это бы выглядело как-то так,bool AVitoListItem::operator>=(AVitoListItem& another)а в джаве нет перегрузки, так что там я хз, и сортирнуть список таких объектов.
>>136143059>> бесконечный цикл и Thread.sleep()>Убейся. Надеюсь ты нигде не работаешь. Какие проблемы? Отдельный поток в бесконечном дергает сайт каждые 36000 мс , и запускает новый поток, который берет полученную инфу и обрабатывает дальше как ему нужно.
>>136143780Ну-ка напиши регулярку, я поугараю.
>>136143925>Отдельный потокНу во-первых, в первом варианте потока не было, а за такое сразу убивают нахуй. Во-вторых, если как ты во втором варианте пишешь, то экзекутор и есть поток.>>136143780>а в джаве нет перегрузкиВ жабе тоже самое, @оверрайдится сорт и ему скармливается функция сортировки.
>>136144114>>136143925Алсо, не слипать поток нужно, а мутикс выставлять. хотя вроде в жабе слипы мутиксами и тормозят исполнение, но не уверен
>>136142268 (OP)Ты хуево парсишь, не сможешь нормально деньги от наименования отделить, давай заново, всё хуйня.
>>136144189Хуютикс, будто тред в не в сон уходит когда мутекс не получает.
Кстати сегодня кто-нибудь вообще делает оконные приложения на яве?
>>136144398Я лабу2 делал на свинге 5 лет назад
>>136144398А почему бы и нет? Для ведройда, например. Да и на десктоп неплохо налазит, jx весьма бодро фронт рисует.
Спасибо за ответы, буду пробовать
ОП, а ты серьезно настроен? Мимо 6-лет-ява-ынтерпрайз-кун, могу детально расписать.
>>136145106да
>>136145106Ынтерпрайз, распиши мне за то как зарубеж жабафагом перекатываться? Нужны ли сертификаты? Какие? Что спрашивают на собеседованиях? Подводные камни?Хочу в страну солнца, счастья и аниме уехать кодировать кнопки за сладкие шекели.
>>136145407Кому-то и украина зарубеж.
>>136145451Нет же. Какая украина, ты в своем уме? Ты бы еще в киргизию предложил перекатиться.
>>136145170Лучшее, что я могу посоветовать для любого начинающего сей тернистый путь:1) Б.Эккель "Философия Java"2) Банда четырехостальная литература строго опциональна в зависимости от стоящих перед тобой задач.Что касается парсера из ОП-поста: наиболее простой вариант - создать класс, описывающий сущность товар (со всеми необходимыми полями и методами, реализующими операции над ними). В отельном классе парсера создается список этих товаров (условно List<AvitoItem>) который ты заполняешь при парсинге (тем же jsoup). После сбора с этим списком можешь делать все что хочешь: писать в базу, искать по нему, сортировать.По поводу повторных запусков и постоянного мониторинга - я бы нассал в рот петушкам выше с Thread.Sleep и иже. Сборщик не должен постоянно висеть в памяти (и течь как сучка из-за jsoup) - хорошие люди придумали запуск по расписанию - это "Планировщик задач" в винде или cron в никсах. Просто ставишь раз в N минут перезапуск парсера (время высчитай сам - в зависимости от времени работы) и радуешься.
>>136145826Что в ней плохого?
>>136145983>cron в никсахПривет, ты ведь никогда не сидел под никсами, правда?>>136145826Например, все. Особенно украинцы. Та же расея, вид впрофиль.
>хорошие люди придумали запуск по расписанию - это "Планировщик задач" в винде или cron в никсахуебывай с дивана с джавы
>>136145170Я сам сижу в замкадске (но правда на норм деньгах. потому и не рыпаюсь)Знакомые уезжали довольно нетривиально - уходили работать в россиянский филиал буржуйской конторы (условный детче банк) и оттуда уезжали в гермашку.Не сертификаты все клали хуец, вроде бы как спрашивали, но на решение не влияло. Тащемто если есть лишние деньги и время - лучше их заиметь, чем нет.Тут еще важно понимать, что для съеба нужно УЖЕ быть не вротебическим специалистом в своей подоблости (именно! просто программист никому не нужен - вот если ты разбираешься в машинном обучении/криптоанализе/безопасности - другое дело).
>>136146386Удваиваю. Течь в жабе с либы это немного лол.
>>136146459Ясно, спасибки. Я как раз в буизнес-солюшэнз разбираюсь как положено.
>>136146386>Пок-пок-пок.Ну расскажи мне, зачем парсеру который должен запускать раз в час висеть в памяти?>>136146208Не понял сути предъявы.
>>136145983В жабе же вроде есть что-то для запуска через указанный интервал, не? Timer там или ещё какая хуйня.
>>136142268 (OP)Я этого пидора в Ставрополе видал
>>136146800Какого?
для начала удалить еклипс, дальше поставить Intellij
>>136146498Я лично детектил утечку памяти в этом самом jsoup правда два года назадБольше тебе скажу, текла даже com.mysql.jdbc.Driver но это тоже было давно.Так что да, течь с либы, лол.
>>136146675Не нужно никому висеть в памяти. Парсер отработал - все лишние объекты удалились через GC, висим час, ждем. JVM все равно будет работать этот час.
>>1361466751. Парсеру там нужно висеть, чтобы не загружаться-выгружаться туда сюда, вместе со всей жаба машиной, либами и прочей сопутствующей хуетой, долбоеба ты кусок. Нужно ведь кусочек кода повторять. Или ты для обновления вкладки в браузере весь браузер перезапускаешь?2. Крона уже 1000 лет как нет в никсах. Системд юзают для аналогичных целей с системными сервисами. А программы под никсами по другому демонизируются вообще.
>>136147051Сборщик любые утечки убирает, ало, мы не в крестах кодим.
>>136147053>>136147095>>136147143Парни, вы сейчас сделали мой день. Ну вперед, проверьте это на парсере с нормальной нагрузкой, он максимум через неделю вылетит с OutOfMemory.Верить в GC (разумеется с аккуратным подходом) я перестал на первый же год работы - просто берем http://visualvm.java.net и смотрим память: GC отработал. но останется сраных 2-3кб прироста, которые так и будут накипать.Тащемто я свою позицю в треде уже выразил, господа теоретики - можете верить книжкам и гайдлайнам, но реальность довольно жестока;
>>136147143Сборщик не убирает утечки, он освобождает память объектов, на которые больше никто не ссылается, а это уже на совести программиста.
>>136147612>GC отработал. но останется сраных 2-3кб приростаЩас бы экономить 2-3кб в 2к16 в ентерпрайз софте
>>136147827>ентерпрайз софте>васян заказал за пятихат гонять на некропеке 2005 года
>>136147939> проверьте это на парсере с нормальной нагрузкой, он максимум через неделю вылетит с OutOfMemoryХер ле ты тогда его ставишь в ентерпрайз условия.
>>136147750Он все вообще убирает. В жабе мне не нужно аллокейтить и релизить, если у меня массив объектов заполняется, с ним делаются всякие штуки, потом они релизятся, то я не понимаю, схуяли я еще что-то делать должен. И твои приросты это хуиты кусок, почему-то когда я несколько лет назад написал простейший генетический алгоритм с парой параметров и графической отрисовкой на lwjgl и гонял его почти два месяца на виртулаке с гигом памяти у меня ничего никуда не утекло. В работе я даже не задумываюсь об этой хуете и все ровно. Сдается мне ты пиздишь. Тесты он, блядь, ставил.
>>136148043Я и не ставлю, это тот додик попутал чет. У опа там дай бог 100 страниц в секунду распарсить, это просто ниочем.
А шо, автио не может отдавать список товаров в джсоне?У них стопудова должен быть нормальный апи для мобильных приложений
>>136145983Ты правильные вещи говоришь, но если чувак не знает, как ему отфильтровать коллецкцию по цене, то скедулеры и таски и даже таймеры ему рановато, тредслип самое то для понимания.Еще акторы блять посоветуй напедалить на акке
>>136149475Подключение к APIAPI позволяет выгружать данные ещё до модерации. В базе присутствуют все категории и объявления. Обновление базы каждую секунду.Цена - 3000 руб. в месяц (30 дней).Чтобы получить доступ, авторизуйтесь.Тестовый доступ на 15 дней бесплатно *Пошел нахуй кароче а не жсон
>>136142268 (OP)> а во-вторых выдавала только объявления дешевле например 1000 рублейБлять, так трудно сделать поиск в строке на числовые данные? Нашёл сумму, сравниваешь, больше или меньше 1000, если меньше - выводишь в окно, если больше - отсеиваешь.
>>136148345Ты хочешь сказать, что в java невозможны утечки памяти, или что?
Я другой ньюфаг, еще более тупой вопрос. Есть два классаПервый вычислениями производит строку например "Hello"Второй берет эту строку и складывает со своей, например "World"Нужно сделать вывод строки "Hello World" во втором классе.
>>136151528И че не получается? Давай что сделал показывай
>>136151728Ну смысл в том что запуская второй класс, ему передается пустая строка, т.к. первый класс не выполняется (именно там производится информация которая передается второму классу). Смысл в том что надо как то запускать два класса одновременно, или в два потока, хз
>>136142268 (OP)братишь, вот тут ещё свой вопрос задай, там погроммисты сидят http://reflink.ru/5e5
>>136152219Проиграл, хоть бы в шортенер обернул
>>136152105Код запости на pastebin