Это копия, сохраненная 14 мая 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Q: Поздно ли вкатываться в айти в 20/30/40/100 лет?
А: Нет, не поздно.
Q: Cобираюсь учить джаву по 2/5/20 часов в день. За сколько дней я выучу достаточно, чтобы зарабатывать фрилансом?
A: На джаве фриланса нет. Хочешь фрилансить — дуй в ПХП/раби/1С тред.
Q: Хули все книги на английском?
A: Без английского ты не нужен и можешь смело идти нахуй. Ну или в 1С-тред.
Q: Что скажете за джавараш?
Если вкатываешься с нуля, то можешь написать пару "хеллоу ворлдов" до 10 лвла. Дальше курс рассчитан на ленивых и не умеющих читать книжки людей. Количество говнокода зашкаливает, годных задачек пару штук на весь курс. В любом случае решать тебе.
https://github.com/qqqlll/Java-Thread/wiki
Ко-ко-ко микросервисы, ко-ко-ко бигдата, ко-ко-ко аджайл.
В реальности сотня хранимок, быдлокод уровня field == null ? "null" : field.
Тесты в виде копипаста. Каждый метод по тысяче строк (серьёзно). Класс по 3к строк.
Вся бизнес-логика в хранимках. Ключи в базе естественно текстовые, да ещё и разные для каждой локализации
бля, разметка проебалась
import peedorashka.zalupa.Lupa;
Но самого пакета peedorashka нет - его надо скочать. Так вот, скочал я его, а дальше что? Интересует главным образом добавление в IntelliJ Idea.
А подробнее?
>Spring
собственная версия энтерпрайза (не следующая стандартам настоящего энтерпрайза), ставшая популярной. Популярнее даже энтерпрайза
>Enterprise
набор стандартов, которым должен следовать каждый вендор. Стандарты в области межсервисного общения и внутрисервисной реализации
ковыряние в говне в обмен на немного денюжек. Только такие профиты
Суп пр.
Есть Stream<String> in = Files.lines(Paths.get....
Нужно обработать посимвольно входной файл и вывести в выходной.
При этом может попасться недопустимый символ. В этом случае нужно остановить работу функции.
Из forEach нельзя кинуть исключение (можно только то, что наследуется от непроверяемого, но это говнокод же).
Единственная возможность прервать forEach() использовать вместо него allMatch() и тогда будет что-то вроде:
if(!in.allMatch(this::test)). Тоже хуево, как мне кажется. Предикат не должен менять чье-то состояние.
Вообще для моей задачи идеально подходит .map(). Но исключение из него тоже не кинешь нормально.
Так вот, опытный анон, хули делать? Стоит ли ебаться со стрим апи, или для этих целей он не предназначен и придется работать с каким-нибудь массивом строк?
Не знаю, может потому что я пишу неделю на джаве и это мое оценочное суждение, которое было выражено даже скорее как вопрос.
Т.е это нормальная практика?
это скользкий вопрос, где проходит граница между исключением и бизнес-логикой.
В твоём случае да, лучше кидать какое-нибудь исключение
А прикол если в компании oracle всё так же.
Как грамотно вывести то, что я получил из метода Files.lines (это на всякий случай Stream<String>) в другой файл после обработки?
Ох парни. Пиздец как все заебло. Ебаная мухосрань, еще 14 статей писать (надеюсь, это последняя работа по копирайтингу), на улицах грязь и сыро, тян через хуй бросила, быдло родственники вообще уже в печенках сидят. Но самое главное - зуб мудрости недавно удалили, уже неделю болит, гноится. Пиздец карочи.
Но когда за учебник Шилдта сажусь, то сразу на душе легче становится. Уже предвкушаю, как первые проектики по гайдикам буду пилить. Очень хочу вкатиться в кодинг и уехать в ДС.
Мне это настолько понравилось, что я даже сказал учебников по алгебре, тригонометрии, вычислениям, физике и химии. Как освою базовый стек технологий и устроюсь на работу, то начну всю школьную программу проходить. Никогда не думал, что программирование даст мне такую тягу к знаниям.
А тем временем за окном серость и уныние, а за щекой боль от нагноения.
Язык Java
История и развитие языкаJаvа
Краткий обзор Java
Типы данных, переменные и массивы
Операции
Управляющие операторы
Введение в классы
Подробное рассмотрение классов и методов
Наследование
Пакеты и интерфейсы
Обработка исключений
Многопоточное программирование
Перечисления, автоупаковка и аннотации (метаданные)
Ввод-вывод, аплеты в прочие вопросы
Обобщения
Лямбда·выражения
Библиотека Java
Обработка символьных строк
Пакет java. lang
Пакет java. util, часть
1. Collections Framework
Пакет java. util, часть
11. Прочие служебные классы
Пакет java. io для ввода-вывода
Система ввода·вывода NIO
Работа в сети
Класс Applet
Обработка событий
Введение в библиотеку АWТ: работа с окнами, графикой и текстом
Применение элементов управления, диспетчеров компоновки и меню из библиотеки АWТ
Изображения
Утилиты параллелизма
Потоковый API
Регулярные выражения и другие пакеты
Введение в программирование ГПИ средствами Swing
Введение в библиотеку Swing
Исследование библиотеки Swing
Введение в меню Swing
Введение в программирование ГПИ средствами JavaFX
Введение в JavaFX
Элементы управленияJаvаFХ
Введение в меню JavaFX
Применение Java
КомпонентыJаvа Beans
Введение в сервлеты
Приложение
Применение документирующих комментариев в Java
Язык Java
История и развитие языкаJаvа
Краткий обзор Java
Типы данных, переменные и массивы
Операции
Управляющие операторы
Введение в классы
Подробное рассмотрение классов и методов
Наследование
Пакеты и интерфейсы
Обработка исключений
Многопоточное программирование
Перечисления, автоупаковка и аннотации (метаданные)
Ввод-вывод, аплеты в прочие вопросы
Обобщения
Лямбда·выражения
Библиотека Java
Обработка символьных строк
Пакет java. lang
Пакет java. util, часть
1. Collections Framework
Пакет java. util, часть
11. Прочие служебные классы
Пакет java. io для ввода-вывода
Система ввода·вывода NIO
Работа в сети
Класс Applet
Обработка событий
Введение в библиотеку АWТ: работа с окнами, графикой и текстом
Применение элементов управления, диспетчеров компоновки и меню из библиотеки АWТ
Изображения
Утилиты параллелизма
Потоковый API
Регулярные выражения и другие пакеты
Введение в программирование ГПИ средствами Swing
Введение в библиотеку Swing
Исследование библиотеки Swing
Введение в меню Swing
Введение в программирование ГПИ средствами JavaFX
Введение в JavaFX
Элементы управленияJаvаFХ
Введение в меню JavaFX
Применение Java
КомпонентыJаvа Beans
Введение в сервлеты
Приложение
Применение документирующих комментариев в Java
Если только начинаешь, то лучше бери Руковдоство для начинающих Шилдта. Там вопросы и упражнения есть. А потом дальше изучаешь библиотеки по справочнику.
Это самое начало, так что не переживай. Там все тоже самое, только в конце каждой главы вопросы и есть практическая работа.
Если это твой первый язык, выбери другую книгу.
Если до этого писал на с++, читай все, но первые 200 страниц можно бегло.
>то начну всю школьную программу проходить.
Тоже думал. Но только с физикой. В итоге хуй забил, работа пиздец как силы забирает.
Я в каком-то гайде читал, что html страницы надо кидать туда, чтобы изменения сразу было видно, а потом в настройках мавена дописать, чтобы он переносил все оттуда в static или templates, это для этого используется?
Так а в выходной файл должно в любом случае писаться или нет? Если да, то в JDK9 есть takeWhile.
Сделать можно по-разному. Сделай так чтоб работало, а потом причесывать будешь.
https://www.youtube.com/watch?v=sWo0432nDbk
Applet-ы мертвы полностью.
AWT/Swing/JavaFx пропускай тоже - это понадобится только если у тебя не много вариантов с работой, а работодателю нужна макака на GUI, но это мёртвый путь разгребания легаси-говнокода. Ну или тебе очень надо десктопное приложение, а ничего кроме Java ты не знаешь.
Хотя, понимание того как строятся интерфейсы они дадут, но лучше это делать с помощью html/css/js (react/angular/vue) - 2018 год на дворе.
Спасибо, дружище. Свинг, Fx и аплеты проигнорю. Вместо них тогда Спринг наверно ботанить начну
tmpFile = Files.createTempFile
try {
Files.lines
.peek(//здесь твоя проверка, бросающая эксепшн)
.forEach(line -> Files.write)
Files.move(tmpFile, target File);
} catch e {
Files.delete(tmpFile)
}
Главное не делай стрим параллельным и всё ок.
Кидать эксепшны можно, если это нужно.
Само по себе это не делает код говнокодом.
Но, лучше применить какой-нибудь фокус из фп.
Или Rx.
Думать уже лень, поэтому, ничего конкретно советовать не буду.
.NET встроен в винду, а JRE - нет и это проблема. Если тебе очень надо десктоп и ты знаешь лишь Java - то вперёд.
> windows forms в с# тоже
Тоже нинужны. Есть няшный (но уже немножк протухший) WPF и кросс-платформенный Xamarin.
>>55320
>>55317
Господа, не надо паники.
Swing никуда не денется в сколь-нибудь обозримом будущем.
Разве что, вместе с джавой, лол.
А вместо апплетов есть JWS.
А вот JavaFX - получился мертворожденным.
Оракл на него откровенно забил, бросив на полдороге недоделанным, в пользу облачной хуеты. Дизайнер тупо убрали со своего сайта даже. И молчат, типа так и надо. Пидарасы.
Так вот, например, есть такой JFormDesigner - лучший дизайнер для Swing GUI, хотя и коммерческий. И после долгого перерыва они в прошлом году снова активизировали разработку, выпустили новую версию и продолжают пилить. Как вы думаете, с чего бы вдруг, если свинг "не нужен"?
Я предполагаю, что это ещё и от того, что надежды многих людей на джаваскрипт/html5 как средство создания UI, не оправдываются. Заебал он уже довольно многих.
JIDE регулярно выпускает обновления, хотя и не особо развивает функционал.
IDEA (и все остальные продукты JB) использует Swing, если кто не знал.
Но, нужно понимать, что десктопный гуй вообще становится нишевой темой. Так что для вкатывания это, возможно, не лучший вариант.
Мне JavaFX по душе. Все четко и просто.
Учу джава кор идет хорошо и интересно, но чет я застремался прочитав сколько всего будет нужно выучить.
Работаю без вышки, полёт нормальный.
Съебать в веб макакинг всегда успеется. А знания Джавы никогда не помешают. Тем более что можно в смежные области перейти аля Scala и прочее. В общем это хорошая база, раз уж начал не бросай на пол пути
Последний спринг няшный, особенно с реактивным веб-фреймворком. А с котлином вообще охуенно, можно писать бины в функциональном стиле на котлиновском DSL безо всякого XML-говна и аннотаций. И запускается всё это (если использовать чисто функциональный стиль) гораздо быстрее.
Как перекатившемуся с .NET Core мне новый спринг очень нравится.
Алсо спринг бут не использую. Мне он показался не нужным. Лишнего кода почти нету.
Ну джава многофункциональна. И да я без пафоса это говорю. Не вижу в макакинге ничего плохого.
>php/ruby
php имеет смысл. Это говно все не подыхает и походу до самой нашей пенсии не сдохнет.
Всякие Руби, питоны, го и прочая хипстерская шняга рискована. Это не распространено, вакансий мало и все они в ДСах.
Ну так пока твои приложения мелкие и не используют того, что даёт бут - да. А если у тебя сотня микросервисов - ты очень быстро заебешься свои конфиги копипастить.
> ты очень быстро заебешься свои конфиги копипастить
Что значит конфиги копипастить? Обоснуй, что бут может упростить такого, что не могу сделать я сам средствами самого спринга иля жавы/котлина?
Эмм. Да ничего. Все можно самому сделать. И спринг тоже можно самому сделать, но это ты делать не хочешь. А в сотый раз конфигурировать PropertySource ты почему-то предпочитаешь руками.
У бута есть вполне конкретные задачи: убрать бойлерплейт в конфигурации и принести хоть какой-то порядок в зависимости. Он с ними справляется на 100%.
Да везде. Датасорсы? Есть готовая конфигурация, только докинь пропертей. Те же проперти? Да легко, ямл и проперти уже настроены, даже с разделением на профили. Хочешь конфиги в одном месте хранить для всех сервисов? Одна зависимость из spring cloud и это работает. Всякие service discovery и тому подобные штуки - так же. Да блин за банальные @MockBean в тестах уже можно взять бут в проект.
Перед сном народ отписался. Уже разошлись.
>Q: Поздно ли вкатываться в айти в 20/30/40/100 лет?
Решил вкатиться в джаву через си и кресты, т.е. последовательно изучаю плюшки в си>кресты, ну а потом уже джава.
Я всё правильно делаю?
Зря время потеряешь на байтоебство.
Мне HeadFirst показался слишком скомканным.
"Вот есть функции, переменные вот это все говно, ну там разберешься. А вот, кстати, скомпилируй это говно так, чтобы получить х. Ну если не знаешь, что это за функции новые, то погугли лол".
Вот примерно в таком формате подается вся инфа. Но там сразу пишут, что рассчитано на тех, кто уже учил ООП. И все равно задачки там интересные есть. И даже советы по реализации программ.
А так по Java три стула: Шилдт, Хортсман, Эккель. Новичкам советуют Шилдта, так ка кон все разжевывает и расставляет по полочкам. Хортсман чуть более задротский и подходит перекатывальщиакм с С. Эккель вообще хардкор говорят, хотя хз.
>через си и кресты
Неправильно.
Это тебе вообще ничего не даст.
Через питон - другое дело.
Но, опять же, зачем "через", зачем окольные пути?
Английский лучше выучи, без него - любой язык программирования будет для тебя китайской грамотой.
Ты просто не будешь понимать, что значат все эти термины и названия, и только и останется тупо их заучивать или искать ненужные и неуклюжие русские аналоги.
Что именно ты собрался писать для всяких джибоссов и хе-дупов?
Приведи пример кода, если нетрудно.
ну например есть solr, которы имеет плагины для предобработки, такие как лемматизация и прочее, нужно добавить новые. все это говно попытаться распаралелить хэдупом и зделоть морду на томкате.
з.ы. и еще есть нутчь
Хули подробнее, дебил? Прочитай что такое мавен/грэдл, прочитай про сборку проектов, добавь зависимости. Хули тупенький такой?
Тебе не нужно бросать исключение. Вот что тебе нужно
> Нужно обработать посимвольно входной файл и вывести в выходной.
Ну и обрабатывай. Files.lines, флетмаппишь в сплит, фильтруешь валидные символы и обмазывайся ими.
Пидар.
Что ты объясняешь отсталому сисярп-дебилу. Ты бы еще 1снику про ООП затирал.
Неплохо, неплохо.
>Выебали что-ли?
Нет. Просто они постят хуи негров и пишут "питон :D", еще и какие-то гейские истории, всем виртуально "рвут попку".
https://www.youtube.com/watch?v=3Wn_mc12_yA
https://www.youtube.com/channel/UCLUYG3J5lYXs9gwz98aXIsQ
>При этом может попасться недопустимый символ. В этом случае нужно остановить работу функции.
>флетмаппишь в сплит, фильтруешь валидные символы
Откуда ты такой умник вылез? Любой встреченный невалидный символ должен приводить к завершению подпрограммы.
Ебал твою мать.
Какая-то хуйня.
Посмотрел вводное видео. Дальше не стал.
Обычное коммерческое блаблабла.
Сынок явно возомнил себя гуру и решил основать собственную школу, лол.
>Любой встреченный невалидный символ должен приводить к завершению подпрограммы.
Что такое "невалидный"?
Например, когда ты пишешь в адресной строке какую-то хуйню, у тебя браузер сразу закрывается, я правильно понимаю?
Откуда ты такой умник вылез?
>Например переписываю gui со swing на javafx.
Ох, лол. Зачем?
Swing старый, некрасивый, но живой, и жить он будет столько же, сколько и джава.
И на нём реально пишут коммерческий софт - просто больше не на чем.
А java fx - мертворожденная хуета. Которую Оракл, к тому же, забросил, и развивать не собирается в принципе.
Нет библиотек, нет компонентов, нет инструментария, нет быстродействия. Нет ничего. Нет и не будет.
Вообще, если ознакомиться с полной историей java fх, то становится ясно, что эта технология, видимо, изначально была рождена под хуёвой звездой.
>Потом планирую вникать в Collections.
>Потом
Лол.
Ну как можно что-то писать на джаве, не вникая в collections?
Они же простые в джаве, как две копейки. Это же не скала, где с этим делом просто пиздец какой-то.
>или есть другой рациональный путь?
Проблема джавы - в высоком пороге вхождения.
Это простой язык. Но, чтобы получить осязаемые результаты, надо понять целую кучу вещей, с языком не связанных.
Я бы советовал сетевые технологии - spring, tomcat, вот это врт всё. Довольно быстро можно получить результат.
С андроидом может быть сложнее.
Ну, и в плане заработать денег - тоже перевес на стороне спринга, конечно.
>Что такое "невалидный"?
Тебя волнует это вообще? Какая разница какие символы невалидные в моей задаче?
Есть файл, в нем есть символы. Нужно вывести их в другой файл, предварительно обработав. Не все символы поддаются обработке. Если такой был встречен, из функции нужно выходить, ничего не записав. Отсюда и исключения.
Ответ уже давно дали. Хули тебе надо?
Вот это посмотри:
https://www.youtube.com/channel/UCVbz7l0COUdLupcY4YtYH0w
Вот хорошо, но мало:
https://www.youtube.com/watch?v=-IIXlqF94WA
Вообще, на русском почти ничего нет.
В основном, какие-то школьники или какие-то гуру доморощенные, да и тех почти нет.
Спасибо и на этом, уже учу инглиш, но пока реально только в тексте что-то изучать, со словарем)
Ну так и изучай со словарем. На всех мало мальски приличных курсах есть субтитры. Изучаешь по книжкам до upper-intermediate или даже advanced и дальше со словарем
В англоязычных обучающих видео, как правило, есть нормальные (английские) субтитры.
Khan Academy java поищи на ютубе, например.
Вообще, полно всего.
Из книжек - достаточно "Core Java for the Impatient", для начала, любое издание. На русском она называется "Java SE 8. Базовый курс". Перевод не читал, но, вроде бы, говорят, нормальный.
Эта книжка и интернеты, больше ничего не надо, не засирайте мозги. Ну, и Intellij IDEA community edition, конечно, никакой эклипсы и прочей хуеты.
Двачую этого человека. Сам только вкатывальщики. По такому же пути. Сам чуть не уплыл в fx, благо быстро понял, что учить его нет смысла, так как много чего более полезного.
Principal - это пользователь, наделённый определёнными правами, как-то так.
По поводу ебанутых названий - почитай словарь.
>>56124
>А после него
Что значит, после него?
Нельзя сначала выучить язык, а потом начать программировать.
Куда дальше? Куда-нибудь, откуда я знаю, что тебе нужно? Вообще, см. >>56085
т.е. entity, представляющая авторизованного пользователя - это principal?
https://docs.oracle.com/javase/7/docs/technotes/guides/security/jgss/tutorials/glossary.html тут написано, что principal это не юзер, а уникальный идентификатор юзера, как я понял, т.е. id в моем случае
Ну думаю больше тянет на бэкенд веба. Энтерпрайз пугает своей монструозностью хотя наверно туда шанс был бы выше устроиться в какой нибудь банк учитывая мой банковский опыт. На мобилках боюсь ибо хз найду ли работу в своем миллионике по этому направлению и будет ли оно дальше развиваться. Ну там откажется гугл от андроида что нибудь другое придумает не останусь ли потом ненужным с этим опытом
>это не юзер, а уникальный идентификатор юзера
Это абстракция юзера с точки зрения системы безопасности.
С одной стороны, это, вроде-бы, id.
С другой - в java ee, в jsp, например, можно сделать как-то так:
Principal p = request.getUserPrincipal();
YobaUser user = (YobaUser) p.
String fname = user.getFullName();
Т.е. за принципалом прячется настоящий юзер, полученный в момент логина из бд, если у тебя так сделан логин.
я в security context в качестве имени principal-а использую полученный id в токене, но каждый раз конвертить id в строку, потом парсить эту строку обратно в лонг выглядит странно, вот я и спрашиваю может я не то делаю. Сам объект пользователя из бд мне не нужен каждый раз, только id, ролей у меня нет никаких
>лучше буду разбираться со Swing
Тут не всё так просто.
Если ты не собираешься делать десктопные GUI приложения на джаве, то не стоит, наверное, заморачиваться.
С другой стороны - от пары хелловорлдов от тебя не убудет.
Свинг - образец того, что называется overdesigned.
Перемудрили они, короче, времена тогда были такие.
В общем, как ни крути, это legacy технология.
Которая, тем не менее, никуда не денется в обозримом будущем - слишком много коммерческого и корпоративного софта написано.
Те же кассы в гипермаркетах - это джава и свинг. Не все, но многие. В глобусе, например.
И многие десятки тысяч внутренних корпоративных приложений, которых нет ни на каких гитхабах, и про которые не пишут в интернетах вообще.
Или те же программы для биржевого трейдинга.
Я уже не говорю про IDEA.
Ну, и есть компромиссные варианты.
Можно использовать FX-сцены в Swing и компоненты Swing в FX.
Можно даже GUI на HTML5 и JS использовать внутри JavaFX.
Это одна из рекомендаций, которые Oracle даёт в руководстве "Migrating from Java Applets to plugin-free Java technologies":
http://www.oracle.com/technetwork/java/javase/migratingfromapplets-2872444.pdf
>но каждый раз конвертить id в строку, потом парсить эту строку обратно в лонг выглядит странно
Principal не просто так сделан интерфейсом.
Может быть, сделать обёртку YobaPrincipal implements Principal, и там этот лонг хранить и прочее?
у меня ничего нет на момент получения запроса кроме токена с id, так что либо получать данные целиком, либо как сейчас оставить. Если реализовывать интерфейс с новым методом getId к прмеру, то что тогда использовать в качестве name без обращения к бд? Будет просто дублирование entity с урезанным содержанием
>Будет просто дублирование entity с урезанным содержанием
Да.
И это, само по себе, не является чем-то плохим.
Или конвертируй каждый раз.
Зависит от многих причин.
Понял, спасибо. А вообще лишнее обращение к дб с каждым запросом сильно влияет на производительность (получение пользователя по id из бд)? У меня конечно просто пет проджект, который дальше гитхаба не уйдет, но просто интересен этот момент.
>лишнее обращение к дб с каждым запросом сильно влияет на производительность?
Конечно. Это одно из самых узких мест.
Но, нормально, у тебя это должно как-то кешироваться в слое доступа к данным. И кеш должен очищаться при инсертах-апдейтах.
Ты же не голый jdbc используешь?
То, что ты пытаешься сделать (насколько я понял) - это, в общем, тоже разновидность кеширования. Если у тебя на уровне доступа к данным кешируется, то ещё раз кешировать смысла нет, наверное.
Короче, it depends.
использую eclipselink, как я понимаю, в jpa по-умолчанию уже используется кеширование, явно я не кеширую ничего, кроме http звапросов некоторых. У меня простой веб-сервис по стандартной схеме: токен->фильтр->ресурс->дб
>уже используется кеширование
Ну и не парься тогда.
Преждевременная оптимизация - это плохо.
YAGNI, вот это вот всё.
Вообще, если тебя интересует тема масштабируемости такой хуйни - почитай про Akka.
В Akka in Action, как раз, в первой главе разбирается пример приложения.
В двух словах - они там для скорости вообще всё в памяти держат. Выгружают на диск при остановке приложения и загружают при старте. Больше диск не трогают.
я понял, спасибо, что уделил время
Про flatMap - это не я.
Я просто мимо проходил, и подумал, что это какой-то мимо-теоретик учит толкового анона жить, лол.
И да, монады (а любая хуйня с flatMap - это монада) вполне могут быть полезны в обычной жизни простого джаваёба.
еще раз спасибо, за такой ответ
почему жаба такое невыразительное говно?
Потому что на одну ступень выше байтоебиков.
Потому что.
как с этими ёбаными монадами справится?
Посадили на эту моднявую бигдату, а я в ней не в зуб ногой.
Есть алгоритм фильтрации данных, его надо переписать на спарке, при этом распараллелить
Ну, монады к этому прямого отношения не имеют.
Это просто конструкция, облегчающая построение конвейеров (цепочек) обработки данных и т.п.
Вот хорошее объяснение:
http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html
Вообще, по теме фп - Functional Programming in Java (manning.com) - годная книга, но большая.
Есть (будет) ещё Grokking Functional Programming - но, её хорошо, если осенью издадут только.
Спарк не использовал, бигдату тоже.
Но, по спарку полно литературы и готовых рецептов.
та папка, которая содержит все файлы, которые maven положит в твой архив, который ты задеплоишь на сервлет контейнер, кроме скомпилированных классов
>бросайте джаву
>переходите на ruby
Анонимная экспертиза высшего класса.
Как там, в 2006-м?
Ты через восемь лет, в начале 2014-го, долларов купи на все деньги, не прогадаешь, инфа 100%.
И, просто для общего развития:
Попробуй просто сравни количество _топовых_ решений для веб-бекэнда на джаве с количеством таковых на питоне (руби вообще не в счёт) или даже на JS.
А ведь есть ещё скала, акка-хуякка и прочее.
Аноны, пожалуйста, умоляю, нужна помощь. Нужен полный гайд, как на debian VPS поставить профилировщик под java-сервер.
От профилировщика нужен мониторинг оперативной памяти, в идеале что-то, что подскажет в каком месте утечка памяти происходит. Гайд нужен максимально ражёванный, ориентированный на меня полнейшего имбицила, где объясняется с нуля что качать, какие команды прописывать в баше/IDE, вот это вот всё. Пока искал в интернете - адово сгорела жопа.
> Есть алгоритм фильтрации данных, его надо переписать на спарке, при этом распараллелить
MAP
@
REDUCE
Прости пожалуйста, но вот именно таких ответов я и боялся. Ну гуглил я всё это, гуглил JProfiler, YourKit, VisualVM, TPTP(профайлер для Eclipce, как я понял), но не понял как это всё работает.
Куда качать, как запускать, как присоединять к процессу, как он выдаёт результаты, вот это вот всё.
На официальном сайте какие-то скрины с JProfiler под винду, а у меня терминал linux, что мне с этим делать, как запускать?
Мне нужен гайд, а не название, гайд для маленьких и тупых, и вот именно его я не нашёл. Но спасибо, спасибо что отозвался, скорее всего ты обоссыш меня за то, что я говно, а не программист, не умею в гугл, и будешь прав, но я просто, блять, не знаю, где ещё попросить помощи.
Отвечают на корректно поставленный вопрос на SO, а здесь обоссывают дают удочку, а не рыбу.
> у меня терминал linux, что мне с этим делать, как запускать?
Я потому тебе и сказал jprofiler потому что это платный продукт (с триалом) с красивым интерфейсом и инструкциями для даунов. Загугли jprofiler remote profiling linux и делай по любой из инструкций.
Или можешь просто поднять JMX и подключиться к нему. Или просто выгрузить стек и хип дамп, если память течет.
Что ж, спасибо, анон, хоть я и слишком тупой, что бы воспользоваться твоей помощью. Извини что потратил твоё время.
Скажи, ты настолько туп, чтобы загуглить конкретную фразу в конкретном сайте и выполнить любую текстовую пошаговую инструкцию (некоторые даже с картинками), или выполнить там же любое пошаговое видео на ютубе?
Не то чтобы мне это было интересно, но я бы не отказался узнать ответ на мой вопрос.
Я слишком туп как минимум потому что не могу в английский того уровня, который нужен для одупления этой самой инструкции.
Но вообще да, у меня постоянная жопоебля с установкой хуйни. Поднимал мониторинг сушествования java-процесса с почтовыми уведомлениями в случае краша - получилось, но крайне костыльно.
Пытался поднять lamp - обосрался с конфигом для apache2. Пытался установить laravel - обосрался. Нет, я не вебщик, веб ненавижу, но надо было это сделать
И все эти задачи, как по мне - вполне тривиальные, и раз справился я с ними хуёво - да, я склонен считать себя тупым.
ruby в 2018 популярнее чем ruby в 2006.
java в 2018 менее популярна чем в 2006.
Главное преимущество в том, что не нужно по часу билдать проект, билдать бекенд вообще не надо. Но кроме этого еще тысячи плюсов
Ты кажется перепутал жабу с плюсами. В жабе время билда кореллирует только с количеством тестов у тебя в проекте.
большинство энтерпрайз говнищ билдается очень долго, если в нем большое количество модулей, различные ликвибейзы и т.д. и т.п.
ну так на то и нету, что проект пишется в 10 раз быстрее и содержит в столько же раз меньше кода.
Ну окей, ладно. Нету энтерпрайза, эта ниша руби. Но почему разработчику должен вообще быть интересным энтерпрайз, если писать стартапы на руби намного приятнее, намного меньше легаси, а зарплаты такие же, если не выше?
С тем что сравнение было ни к чему ты согласен. Хорошо.
>пишется в 10 раз быстрее и содержит в столько же раз меньше кода.
Сильное заявление.
>на руби намного приятнее
Субъективно. Мне вот от begin/end НЕПРИЯТНО. От динамической типизации и невозможности нормальной интроспекции - тоже.
>намного меньше легаси
В стартапах-то? Положим, что вообще. Ну так руби моложе и менее популярен. Откуда этому легаси взяться?
>такие же, если не выше
Они могут быть такими же, но ты забываешь об их количестве.
hh spb >=240к:
ruby - 7 вакансий
java - 50 вакансий
У меня есть класс Order с полями + есть у него есть поле класса User, в котором есть просто айдишник и имя.
Например, есть список из шести элементов Order, где три из них содержат класс User у которого id = 1, два из них класс User у котогоро id = 2 и один id = 3 соответственно.
Я имею отсортированный список Orders по этим id, т.е. Первые три объекта из списка содержат id из класса User = 1, четвертый и пятый айди = 2, и шестой элемент айди = 3.
Как мне написать другой список так, чтобы в новом списке у меня на первом месте стоял объект User с id = 1, после него стояли 3 объекта Order с id = 3, потом User с id = 2, после него два Order с id = 2, и User с id = 3, и один Order c id = 3 ?
Или это можно сделать через HashMap какой-нибудь?
Если это боевой проект, то там и не надо тащить граф объектов. Объекты должны быть по одному. Нужен и товар, и покупатель? Загружаешь из базы двумя селектами передаёшь эти 2 объекта по отдельности
> Или это можно сделать через HashMap какой-нибудь?
Ты собрался мешать в одном листе негомогенные объекты. Сразу нахуй такие листы обжектов, где по факту лежат объекты с которыми ты захочешь работать не как с обжектами, а кастить в свои классы. Просто нахуй такое.
> Как
Маппишь список в юзеров, дистинктишь, редьюсишь в новый лист, где добавляешь каждый юнит и добавляешь ордера отфилтрованные по юниту. Потом стираешь нахуй код и идешь изучать нормальное типизированное программирование.
>Сразу нахуй такие листы обжектов, где по факту лежат объекты с которыми ты захочешь работать не как с обжектами, а кастить в свои классы. Просто нахуй такое.
Порвался маня. Я всегда делаю так
Мимо
Не умеющего работать с типами говнокодера из языка с демонической типизацией забыли спросить.
>список
>HashMap
Нет.
Это не говоря уже о том, что HashMap - неупорядоченная структура.
Я нихуя не понял, чего ты хочешь, и зачем тебе это.
Но, если тебе нужно хитро отсортировать список - используй сортировку с кастомным компаратором:
Collections.sort(myList, myComparator); //java 7
myList.sort(myComparator); //java 8
я понимаю, если бы было бы 0 и 50. А 7 вакансий чем тебе мало? Ты все равно(скорее всего) только на одной работе работаешь.
>Мне вот от begin/end НЕПРИЯТНО
согласен
> От динамической типизации
Не знаю как остальным, но мне по кайфу что-то быстро поменять в коде и глянуть как работает НЕ КОМПИЛИРУЯ код. А не ради ничтожного фикса билдать проект час. В статической типизации вообще никаких ощутимых преимуществ не виду
>но мне по кайфу
Хорошо тебе.
Пишешь детскую хуйню в три строчки, которую не надо рефакторить и допиливать, ибо её через год выбрасывают и пишут новую. А денег платят как джава сеньору.
То, что в функционально-декларативном стиле пишется парой строчек, в императивной порнухе сотни строк.
в императивном стиле я знаю, как это работает, и легко могу оценить сложность.
В функциональном остаётся только верить в МАГИЮ функционалопетушков. В большинстве случаев вера не оправдывается
не знаю, зачем тебе это надо, но можешь сделать через HashMap<User, List<Order>>, извлекаешь первый заказ, извлекаешь юзера из него, вставляешь в новый List<Order> 3 раза, потом в мапу put(user, list)
Опачки, ты порвался.
> В функциональном остаётся только верить в МАГИЮ функционалопетушков
Функциональщина это МАГИЯ только для не разбирающихся дурачков. Обоссал дурачка.
Но ты еще за прошлый аргумент не обоссался пока. Тебе нужно запилить микросервис, который будет запрашивать другие микросервисы и согласно определенным бизнес-правилам объединять данные. Возвращаемые данные это список А, в каждом А есть список Б, в каждом Б есть список В (остальные поля нерелевантны).
Почуй как это охуенно будет все написать в императивном, а не функциональном стиле и заодно прикинь как охуенно будет выглядеть императивная портянка объединения данных с разной сортировкой по 3 вложенным уровням объектов.
>микросервис
Вначале создаём себе проблему, а потом героически с ней боремся.
Реляционные базы существуют уже лет 30 как раз для таких целей
Ты не ответил. Слив обосравшегося императивного дурачка засчитан.
Последний раз ссыкану, чтобы ты не почувствовал себя недостаточно обоссаным.
> как раз для таких целей
А источники данных в гипотетической задаче это детекторы в LHC в CERN. Имеющие разные бд. Подумай над этим, когда будешь вытираться.
ты думаешь твоя функциональщина сама всё делаёт? Ничего не делаешь, а всё есть?
Нет, там точно такие-же циклы и точно такие-же расходы на память.
Только некая магия скрывает это от тебя, и ты думаешь что оно само. При этом ты не можешь особо повлиять на это
Тут не всё так просто.
Например, выгоды (по расходу ресурсов) начинают появляться на сложных конвейерах, когда используется ленивость.
Функциональщина - полезная вещь.
Но, требует перестройки сознания.
И это не golden hammer, ни разу.
Так что, вы оба правы, каждый по-своему.
мимо другой анон
нет, весьма быстро и просто
в каком случае ее вообще оправдано исп?
Шо? Делай дтошки без логики, запривать поля и тебя это более не будет беспокоить.
Вообще не понял тебя. Допустим, я хочу вывести все свойства объекта, пишу
<#list object?keys as k>
${k}
</#list>
, ну или как-то так, и он вместе с полями name, desription и т.д. выводит еще и getName, setName и все в таком духе.
хуя ты тупой
Синглтонами.
динамическая типизация у меня нигде. Поэтому я агитирую хомечков не повторять моих ошибок
>ради ничтожного фикса билдать проект час
Ты про инкрементальную компиляцию слышал что-нибудь? А про class reloading? Как можно быть такой макакой?
поля класса
Я вот думаю написать конструктор машинок из ascii с интерфейсом на свинге или авт.
Напиши анализатор самых холиварных (ругань) ЯП в зекаче с построением рейтинга. Используй харкач апи. Т.к. 21 на дворе все должно быть асинхронно, реактивно, параллельно и неблокирующе.
Задание со звездочкой - сделай для него также неблокируемый асинхронный UI.
> самых холиварных (ругань) ЯП
Подумой.
Представь, что ты настоящий программист и клиент говорит "хочу" и бросает в тебя деньги. Твоя задача понять что и как сделать и сделать это.
Иди.
>>57530
То, что ты хочешь, это весьма нетривиально.
Пиши обёртку сам, рефлекшн делай внури.
Будет выводить то, что тебе нужно.
Оборачивать потом можно прямо во фримаркере.
Передаёшь туда хелпер, и прямо в шаблоне оборичиваешь с его помощью свои объекты, и дальше работаешь с обёртками. При этом оригинальные объекты остаются доступны.
Я просто хотел сделать универсальную страницу для отображения информации по любым сущностям, но так как их у меня всего две, я забил.
>динамическая типизация у меня нигде
Вот когда она у тебя будет где, тогда и агитируй.
А пока что ты агитируешь за свои фантазии.
На досуге подумай о том, почему для больших и важных энтерпрайзных и т.п. проектов применяют джаву или скалу, а не руби.
Нет, я вполне серьезно. Дрочить шаблоны в HTML это прошлый век и изъебство, которое переносит фронт на плечи бекенд-разработчика. Плюс неудобно и сайты получаются из прошлого века.
Тогда как с JS-фреймворками бекендер пилит бекенд, фронтендер фронт и все счастливы. Да и самому хуйнуть пару компонентов, прикрутить вызов рестов и получился современный отзывчивый сайт с нормальным дизайном намного проще, чем дрочить шаблоны в хтмл-портянках, перебиваясь нативным говножсом.
Все эти JSP, JSF, Freemarker и прочую хуйню нужно закопать и забыть. Ну, можно мусташ оставить - он удобен для задач, не связанных с сайтами, но требующих шаблонизации и не слишком сложных, требующих уже джасперрепортс.
Ты вообще понял чего он хотел?
Как ты собираешься делать рефлекшн джава объектов в vue.js, лол?
А с чего ты вообще взял, что он html на выходе хотел получить?
Я, например, активно использую фримаркер, но для html - очень мало, а для веб-страниц - вообще никогда.
Про остальное - лень писать.
Мир немножко сложнее, чем тебе кажется. Позже ты это поймёшь наверное.
> Ты вообще понял чего он хотел?
Догадался.
> Как ты собираешься делать рефлекшн джава объектов в vue.js, лол?
А нахуя это делать, если объект уже сериализован?
> А с чего ты вообще взял, что он html на выходе хотел получить?
Догадался. Для чего он еще может использоваться у человека, который задает глупый вопрос с "переменными класса"?
> Мир немножко сложнее, чем тебе кажется. Позже ты это поймёшь наверное.
Не стоит играть в Дартаньяна, когда ты сам пидарас июнь.
>догадался
Киса, сколько тебе лет?
>Не стоит играть в Дартаньяна, когда ты сам пидарас июнь.
Вот и не играй, лол.
Скоро 30 будет. А тебе?
> Киса
> Вот и не играй, лол.
Хах, значит я был прав. А я догадливый сегодня.
>Скоро 30 будет.
Тогда пора умнеть потихоньку уже.
И опираться не на догадки, а на факты.
>Все эти JSP, JSF, Freemarker и прочую хуйню нужно закопать и забыть.
И максимализма уже поменьше должно быть.
>А тебе?
Не скажу.
Как я тебя слил в аргументированной беседе, что тебе даже аргумент к возрасту не помог и ты перешел к сливному "ой, все, мне вас жаль", а?
> Не скажу.
Даже на псевдоанонимной борде испугался. Ссыкло.
Спорить с сосачером - как играть в шахматы с голубем.
Он разбросает фигуры, насрёт на доску и улетит, уверенный что победил.
Согласен с тобой.
Когда наберешься аргументов, что бекендер должен ебаться с шаблонами, а не писать бекенд, и что WEB 0.1 лучше современных JS-фреймворков, а также наберешься опыта реальной разработки - приходи.
Ты разговариваешь с воображаемым собеседником всё это время.
Для этого, кстати, двач не нужен, можно просто так это делать, будет быстрее и продуктивнее.
В майнкрафте.
В пизде твоей мамаши.
У тебя проблемы какието?
>Мне это настолько понравилось, что я даже сказал учебников по алгебре, тригонометрии, вычислениям, физике и химии. Как освою базовый стек технологий и устроюсь на работу, то начну всю школьную программу проходить.
Ты в школе хуи пинал?
>Q: Поздно ли вкатываться в айти в 20/30/40/100 лет?
>А: Нет, не поздно.
Поясните кому и зачем нужен овер 30-летний джун?
if (govno) {
return new GovnoStrategyImpl();
} else if (mocha) {
return new MochaStrategyImpl();
} else {
return new HuinyaStrategyImpl();
}
Это не нравится. Есть альтернативы?
Джун джуну рознь. На этой неделе взяли 32-летнего типа. Понравился тем, что очень быстро и качественно соображает. Знает самые основы, остальному и поучить готовы, хули.
блять, я то слышал. А вот ребята с которыми я работаю, в частности тим-лиды нихуя видимо не в курсе. Ладно jrebel у нас есть на проекте, но от него больше проблем чем пользы
>в частности тим-лиды нихуя видимо не в курсе
Потому, что они просто дети с охуенным самомнением (судя по этому треду, например).
Вообще не понимаю, как человека младше 35 можно ставить на какую-либо руководяющую или организаторскую должность - у него же тупо мозг ещё не сформировался для этого.
List<ExcrementStrategy> strategies = new ArrayList();
strategies.add(new GovnoStrategyImpl());
strategies.add(new MochaStrategyImpl());
ExcrementStrategy defaultStrategy = new HuinyaStrategyImpl();
ExcrementType type = sperma;
Optional<ExcrementStrategy> strategy = strategies.stream().filter(s -> s.supports(type)).findFirst();
return strategy.isPresent() ? strategy.get() : defaultStrategy;
Говно не перестает быть говном, если его сверху стримом обмазать. Сделал большую кучу из маленькой.
С одной стороны двачую, с другой в тридцать пять не перерождаются. Надо растить начальников.
>Вообще не понимаю, как человека младше 35 можно ставить на какую-либо руководяющую или организаторскую должность - у него же тупо мозг ещё не сформировался для этого.
По-разному. Сейчас у меня тимлидствует пиздюк 28 лет - не нарадуюсь. Пока что, во всяком случае. Один из лучших руководителей за всю жизнь.
Это, конечно, не отменяет того, что оказаться под началом среднего двадцатипятилетнего неандертальца не хотелось бы.
Околотимлидствую над четырьмя макаками в свои двадцать шесть. Вроде полёт нормальный, ребята, судя по инсайдам, в смешанных чувствах.
Ну там ооп, заменяй свитчи полиформизмом (унося создание инстанса в фабрику со свитчем, лол), вся хуйня.
А вообще зависит от условия. Возможно все это говно заменяется одной хешмапой с саплаерами. А возможно даже с готовыми инстансами, если они стейтлесс.
Наверное для того, что ты перечислил фреймворки для создания интерфейсов, а спринг это всякое rest и субд ?
Посоны, посоветуйте, что написать несложного, но емкого для гитхаба, чтобы его глянули, когда будут брать меня джава джуником.
hello world
Потому что человеку, который въябывал как сука за копейки, уже научившемуся работать до прихода в айти и готовому так же въябывать здесь трудно кого-то противопоставить.
Никто никогда не смотрит гитхаб. Даже те Егорки из свидетелей альтернативного ООП, которые говорят, что не возьмут людей в свою секту, если у них мало звездочек, фолловеров и рейтинг на SO.
HashMap<Key, ArrayList<Value>>?
Кое-как читает.
java-monkey as is
Бляяядь, какой же ты дебил, сука. Если бы ты у меня в команде работал, я бы попросил начальство уволить тебя нахуй и в чёрный список HRов тебя внести, написав про тебя гадостей... Мразота ты конченая...
сеньор-тимлид
Школьник, плиз...
А сюда написать не получится?
Страдай, хули. Не понимаю, чего ты хотел, когда писал сюда.
Что знаичт затащит? У них ниши немного разные. Вон дарт целили в бразуеры, не взлетело. Теперь хотят кросплатформой затащить в мобилки, и в фузию.
Котлин одной жопой на трех стульях.
Раст никуда особо не целится, просто красивая замена плюсовым хуям.
>дарт целили в бразуеры, не взлетело
так васм же вроде еще не запустили или я путаю
>Котлин одной жопой на трех стульях.
лол чому?
>просто красивая замена
ну так и чо там слышно, все свичаются или чо
>так васм же вроде еще не запустили или я путаю
Ну он раньше в вирутальке жсовской работал и ниче. А в васм все лезть будут, и котлин, и дарт и раст (привет от мозилы).
>лол чому?
JVM + JS + Native
>ну так и чо там слышно, все свичаются или чо
Это как "Все свичаются на скалу или чо"? Нет конечно.
Положняк такой
Swing - старое говно, которое будет жить до конца самой Hava
HavaFX - мертворожденный, нигде практически не нужен.
Что по AWT? Он тоже для графики? Нужно ли его учить, чтобы на работу попасть?
Бля, феерично! Очень круто!
Я примерно так и думал. Но в книге Хортсмана на него 150 страниц выделено. Притом что 9-е издание 2014 года.
Я да.
Я не пишу. И ты не пиши.
Ты слишком много думаешь.
Jdbc - стандартизированный способ взаимодействия с бд, скрывающий за собой многие особенности реализации. Т.е. API.
>А в васм все лезть будут
вот оно чо
да вот с растом спутал, на мдн подписан, чото почитываю но так и не понял в чем прикол, они хотят заменить жс чем то компилируемым? и что под него тогда лучше выбрать, раст вроде годный
>JVM + JS + Native
ну т.е не круто, я понял
мех, ну раз раст такой няшный, чому бы не начинать писать новые проекты на нем, или мало людей пока?
Не совсем так. Изначально SQL и его надъязыки были компилируемыми. То есть берётся какой-нибудь PL/I пишется с вкраплениями SQL, это всё компилируется, запускается и выполняется. Потом подумали, что было бы здорово иметь динамически формируемый SQL в виде строки, добавили оператор COMPILE STATEMENT. Потом подумали что наверное ещё неплохо было бы для 3GL языков отвязать compile-time проверку типов на выходе, то есть предоставить почти что пользовательский интерфейс как в консольке. Получились ODBC, которые разошлись по куче языков общего назначения, включая JDBC.
Самые крутые используют реактивный спринг веб-флюкс, а зависимости расписывают функциональным способом.
В общем, я понял, что без знаний XML/SQL нехуй никуда соваться, даже в изучение Spring/servlets/jdbc.
По sql есть учебники.
Но вопрос такой, на w3tutorial целая куча xml хуйни.
Кроме базового xml гайда, есть еще:
xml ajax
xml dom
xpath
xslt
xquerry
xml dtd
XSD Schema
XSD Complex
XSD Data
Web Services {
XML Services
XML WSDL
XML SOAP
XML RDF
XML RSS }
Вопрос, это нужно все учить для Java Junior или просто базу XML?
Что-то вообще может пригодиться в работе кроме базы?
Также не охуеть ли как много по xml говна напичкали? Что не так с этим языком?
Мда, headfirst java совсем не для новичков. В первой главе уже хуярят примитивы, стринги, лупы и массивы. "Что это такое, как оно работает? - Да похуй, потом разберешься. "
Вот по такому принципу построен учебник. А говорили, что совсем для новичков, просто маст хев.
Но после божественного Шилдта, где подробно описывают и поясняют за каждую деталь, просто отторжение какое-то к HeadFirst.
Xsd учится за вечер, попивая чаёк.
Xpath и xslt - нужно только знать зачем это нужно, учить будешь когда понадобится.
Soap и wsdl в необходимом минимуме - за пару вечеров (а в максимуме никем не пользуются)
Остальное либо сдохло, либо его знания не требуются для устройства.
> Также не охуеть ли как много по xml говна напичкали?
Так все и охуели. Не заметил, что xml перетекает в разряд легаси?
> Что не так с этим языком?
То же самое, что и со всей джавой прошлого десятилетия - неоправданные ожидания и куча стандартов под каждый чих только усложнивших хуяк-хуяк-разработку.
>XML
В пизду, лепи JSON везде.
>SQL
Я так и не смог придумать ни одного проекта, где бы не использовались БД.
Бля, дошел до IO, два дня читал про байтовые и символьные потоки. В итоге занесло так, что узнал кучу интересного про стринги, лупы, классы, исключения, BufferedReader и еще кучу нюансов.
Java вообще меня поработила, очень сильно нравится изучать язык и писать даже мелочь всякую.
И вроде учить еще дохуя, лежит книга по Спрингу, Хибернейт, Гит, JSP, плюс всякие коллекции там, свифты и т.д.
Но у меня прямо руки чешутся до всего этого добраться и изучить.
Как же хочется бросить свою говноработу и целыми днями учиться. Это все словно пустоту внутри меня заполняет.
>>XML
>В пизду, лепи JSON везде.
Не надо быть таким категоричным.
XML - типизированный (схема). JSON - нет.
А кроме смузи есть ещё и водка, например.
Попробуй.
В отличие от смузи, водка расширяет сознание.
Например, может поспособствовать пониманию того, чем типизированное отличается от нетипизированного.
Я не спорю, у всего есть свое применение, но из-за постоянного употребления водки можно стать алкоголиком, наркоманом или проституткой.
Фрилансю в Копирайтинг. Но как только за статьи принимаюсь, то сразу настроение падает, хочется на дваче посидеть, ютубчик глянуть или вообще спать пойти. Руки просто опускаются, продуктивность очень низкая, так как надоело.
Но там 9 статей осталось доделать на $70, дальше вообще с концами постараюсь забить на это дело. Уж лучше охранником всю ночь втыкать с ноутбуком и учить Java.
Уж лучше тогда модафинил, чем водку.
Или всем этим сразу, лол.
С таким рвением, после изучения синтаксиса и основ стандартной библиотеки, вполне можно уже найти работу, мне кажется. Особенно, если не гнаться за деньгами, поначалу.
Да мне на деньги вообще пофиг. Я уже даже нашел объявление, что в Харькове будет стажировка 3 недели проходить в в мае (на Android dev'a). Это очень мотивирует. Я уже даже рассчитал, сколько нужно потратить на три недели (хостел, еда и т.д.) все по минимуму.
Очень хочу постажироваться. даже если работу не получу, все равно хочу хотя бы понюхать всю эту кухню. Готов даже кредит взять, чтобы получить этот опыт, лол. Но сейчас главное не отвлекаться и продолжать учиться, что я и делаю.
Андроид - специфическая вещь.
Джава там - не основная проблема.
Кредит брать не надо, это плохая идея.
Если реально есть мотивация к работе, и эта мотивация - не тупо заработать денег, а работа сама по себе, то надо найти место, где это оценят. Но, место должно быть хорошим - должна быть видна перспектива.
Не бойся ходить на собеседования, тебя там не съедят.
Немного разобрался с синтаксисом, где найти годных задач, желательно по уровню сложности, ссылки в оп посте почти все мертвые
Борду напиши.
Насколько правдиво мнение, что Java как язык устарел и сейчас повсеместно переходят на C++?
Создавать ее в начале проги:
int i = 0; и в циклах for пользоваться без задней мысли:
for(i = 0; i < 10; i++)
//
или инициализировать ее каждый раз по-новому в каждом цикле for
for(int i = 0; i < 10; i++)
//code
for(int i = 0; ...; ...)
Я бы лучше использовал локальные переменные, так как переменная экземпляра в какой-то петле do/if может принять неправильное значение и вернуть совсем не то, что требуется.
А переменная экземпляра пойдет в тех случаях, когда нужно использовать do-while или если переменная используется в 2-3 функциях и ее значение легко отследить при исполнении кода.
>>61236
>Я бы лучше использовал локальные переменные
Не "Я бы лучше", а вообще без вариантов - только локальные переменные.
А общая переменная (или поле класса) - это и будет лютейший быдлокод.
Кроме каких-то особых случаев, которые даже и придумать не так-то просто.
Смысл - читаемость кода (и всё, что из этого следует) стоит в 1000 раз больше, чем экономия 4-х байтов (int) в языке с автоматическим управлением памятью.
А вот использовать какую-то локальную переменную _внутри_ цикла (каждый раз создавать) - не надо.
Например, при переборе коллекции ссылку на элемент.
Лучше создать перед входом в цикл. Хотя, хз, возможно, что это само оптимизируется при компиляции, можно посмотреть байткод.
> Лучше создать перед входом в цикл. Хотя, хз, возможно, что это само оптимизируется при компиляции, можно посмотреть байткод.
Оно 100% оптимизируется JIT'ом (но не конпелятором в байт-код). Так что замедление если и будет, то только в интерпретаторе.
>Смысл - читаемость кода (и всё, что из этого следует) стоит в 1000 раз больше, чем экономия 4-х байтов (int) в языке с автоматическим управлением памятью.
Дважды пидор:
1) Пользоваться автоматическим управлением памятью;
2) Не экономить байты.
Ты забыл инверсию перед каждым утверждением.
Нет anyOf, oneOf, вместо них ублюдочный discriminator, нет patternProperties, далеко не везде можно $ref, ещё нельзя нормально разбивать paths на несколько файлов. Не рекомендую короче. А вот сама по себе jsonschema годная штука.
Ну.. каждый хвалит своё болото.
Нет, я правда слышал такое мнение от людей. Вот и хочу узнать тут, насколько это соотносится с реальностью.
Нихуя ты обнаглел, зелёный.
Работаю с интерфейсом javafx, там есть пару контроллеров, при клике на них необходимо выполнить события в 2х потоках, которые были запущены при старте программы.
Для жавы есть же пикрелейтед. Конечно она немного устарела, но базовые основы в ней есть, а все остальное можно (в основном fork/join из java7 и параллельные алгоритмы из java8) прочитать в документации.
> выполнить события
Чочо?
Для асинхронности в GUI - используй CompletableFuture.
Или Rx. Но это будет сложнее, и не факт, что лучше.
Если же у тебя реально там какие-то потоки постоянно крутятся, с которыми тебе надо взаимодействовать из UI - то выше тебе уже сказали. Думаю, что всё сведётся к блокирующей очереди, в которую твой гуй будет что-то класть, а фоновый поток - забирать.
> Думаю, что всё сведётся к блокирующей очереди, в которую твой гуй будет что-то класть, а фоновый поток - забирать.
У JavaFX нет встроенного цикла событий как у всех нормальных гуйных фреймворков? Пусть его и использует.
Блокирующая очередь это и есть цикл событий. В JavaFX нужно делать всё самому, ручками? Вон в C# это всё встроено прямо в язык, можно вообще не заморачиваться. В Qt цикл событий так же есть, ты работаешь поверх него. А что там с JavaFX?
Или ты имеешь в виду создать тред с отдельным циклом событий и туда отправлять сообщения? А оно ему нужно? Чем эти потоки у него там занимаются?
>Или ты имеешь в виду ...
Да, только это он имеет в виду.
Какие-то 2 потока, которые запускаются при старте программы.
Хуйня какая-то, конечно.
Скорее всего, ему нужна асинхронность (как обычно), а не параллельность.
Но я написал про оба варианта.
>Чем эти потоки у него там занимаются?
Один клиент, т.е. отправляет данные серверу а второй типа сервер, который парсит входящие данные.
Нужно что бы по нажатию кнопки клиент отправлял данные серверу(не важно, своему или чужому), а если на сервер приходят данные то происходит какое то событие, и гуи обновляется.
Сейчас от XML отказываются. Приложение на том же спринге почти в любом случае можно написать вообще без XML.
Для этого обычно используют фреймворки, которые всю эту хуйню с тредамами делают сами. Например в твоём случае можно использовать какой-нибудь фреймворк для работы с вебсокетами. Например спринг, хотя чисто для вебсокетов есть и другие варианты.
Думал сначала жаву освоить а потом спринг учить, даже на курс фришные в универе пошел.
Хз, хотелось бы как-нить решить, буду думать на основе того что сказали аноны, ибо наверное рано еще спринг учить.
У тебя какая-то хуйня с постановкой задачи.
>Один клиент ... а второй типа сервер
И оба локально запущены?
А рядом гуи?
Что это, вообще?
>не важно, своему или чужому
Нихуя себе, ты абстрагировался.
Да их ещё и несколько?
Что это?
>а если на сервер приходят данные
Откуда приходят? Как?
И т.д. и т.п.
>Думал сначала жаву освоить
Ты как-то резко начал её осваивать, лол.
Очевидно же, он хочет сделать джве программы, которые соединяются между собой по самодельной пиринговой сети и обмениваются данными. В любом случае ему придётся изучать сокеты и многопоточность чтобы сделать что-то вроде такого и сделать эффективно.
>Очевидно же
Нет, из его текста это не очевидно.
Но, возможно и так.
И, если так, то это не очень умно - ввязываться в такой проект не имея базовых понятий о подобных вещах, не покопавшись в чужом коде и т.п.
Получается квест "Как соснуть по-быстрому и решить, что ни на что не годен".
private static int $;
public static void main(String[] main) {
String s1 = "Java";
String s2 = "Java";
StringBuilder sb1 = new StringBuilder();
sb1.append("Ja").append("va");
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
System.out.println(sb1.toString() == s1);
System.out.println(sb1.toString().equals(s1));
}
}
почему выделенная жирным строчка выдаст false?
Бамп.
Читай как работают строки.
так а почему ссылка sb1.toString() не будет указывать на тот же самый объект "Java" в памяти, что и s1 и s2?
В пизду твоей матери.
Бмп вопросу.
> intern()
Ни разу в жизни не видел нигде использование этого метода (вне статей про него самого). Байтоебство не нужно.
А почему должна?
Идиотик, а кто тебе сказал, что это кто-то делает?
Суть дела в том, что "==" тупо сравнивает примитивные значения операндов.
Для операндов-объектов - это будут ссылки на эти объекты.
И, если ссылки одинаковые - указывают на один и тот же объект, то true.
Почему s1 == s2 тебе уже объяснили - литеральные строки интернализируются при компиляции, т.е. у тебя в коде не две строки, а одна. И ссылки одинаковые.
В sb1.toString() создаётся новая строка.
Она не интернализирована (ибо _создана_ в рантайме).
Естественно, ссылка на неё - другая, поэтому false.
>>61523
Где ты увидел байтоёбство?
Не нужно знать основы работы Java VM?
Возможно.
Но и зарплата тогда будет другая.
Пиздеж.
>>61544
> Где ты увидел байтоёбство?
> Заморачиваться ручной еблей с пулом строк
> Но и зарплата тогда будет другая.
Ты сам кто? Ты представляешь себе, чтобы рабочее повидло или боевую помидорку спросили об интерне? Это никем нигде и никогда не используется.
Я бы понял если бы ты стал про вик и фантомные референсы затирать, еще куда ни шло. Не позорься нахуй со своим стрингинтером.
Ньюфажный войтивайти не в силах вытянуть разговор о джаве и реальном мире загорелся и горит.
Выебал тебя в сраку и оставил лежать на обочине жизни.
Если рест работает поверх SSL сделай на элементарном basic.
https://en.wikipedia.org/wiki/Basic_access_authentication
Можешь представить себе безопасную аутентификацию без SSL, наркоман? Без предварительного обмена ключами, конечно.
Дело вкуса, если только там только 1 параметр, то пусть будет пас вариейбл, если их много, то лучше все через параметры.
public class Zoo {
public static void main(String[] args) {
System.out.println("Welcome!");
}
}
public class Animal {
private String name;
Zoo.main();
}
При известном имени пользователя твой дайджест взламывается перебором мгновенно, при отсутствии - за полчаса на топовом железе.
Нет, ты не понял. Любой скриптошкольник васян, подслушавший трафик и получивший дайджест логина с паролем, считай, автоматически знает логин с паролем без единого обращения к веб-сервису, у него же уже есть хэш, дальше дело техники.
>УМВР
ЧЯДНТ? Там всего 2 класса, код которых представлен выше. Мне просто интересна логическая составляющая этого вопроса, то есть с помощью Zoo.main(null) можно запускать программу из любого класса и не будет ошибки "у вас нетmain метода"?
Ты не запускаешь программу, а запускаешь метод main. Я тебя не понимаю. Ты хочешь создать свою библиотеку или что? Так-то ты из любой сторонней программы можешь импортировать главный класс и запустить оттуда main, только зачем тебе это?
JWT
Кстати, рест контроллер у меня возвращает только данные, а обычный контроллер - ModelAndView странички. Это правильно?
нельзя просто посреди класса функцию вызвать, можешь вторую функцию main сделать в Animal и из нее вызвать Zoo.main(null)
в смысле как? в jax-rs есть viewable например
Уверен? Возвращаемая строчка -- локальный адрес View, redirect://<view>, а @RestController выдаёт body. Ну это если я не путаю.
Соси.
Из примитивных типов отрицательный ноль же есть только в числах с плавающей точкой, разве нет?
Его можно юзать как переменную-счетчик, если в проге нет миллионных итераций, для экономии байтов.
я разбирал данные, приходящие из gps приёмника. Оно отсылало в с кодированием по маскам
У тебя компилятор оптимизирует byte в 32 бита (по факту в int) для того чтобы в стеке было удобней обращаться к переменной
Да. У тебя на стеке лежат значения примитивных типов и ссылки на объекты. Так вот если у тебя 32х битная и 64х битная программа, то минимальный адрес памяти, к которому будет обращаться JVM это 32 и 64 бита соответственно, для оптимизации меньшие по объёму памяти типы будут приводиться к этим занчениям,
по крайней мере я вижу это так
Прити матч. Вообще это легко проверяется знаешь ли. Ты там батоебить собрался или где?
Зачем? Зачем рассказывать о том, что почти у каждого человека итт было кучу раз?
По каким страницам, наркоман?
Я создал ArrayList от общего класса и я его юзаю в некоторых для себя моментах. Но сейчас встал вопрос, как мне вытащить определенный класс наследника от общего класса? Если лист у меня содержит примерно такое: Ice-Cream, Cake, Cake, Cake, Ice-Cream.
Никак. Проверять через instance of и кастить
То, что такая необходимость возникла, говорит о проёбе в дизайне кода. Надо переделать.
Если не можешь, то проверяй каждый объект, как уже написали.
Охуенно!
Скорее всего только JIT'ом в случае очевидных оптимизаций. А вообще в жаве нет стековых объектов (как структур в C#), по крайней мере пока не закончили проект вальхаллу.
Так не делают.
В общих чертах - это не должны быть отдельные классы, если тому нет серьёзных причин.
Если есть, значит у них должен быть общий интерфейс (не суперкласс!), а там должен быть метод getItemType(). Сам тип может быть int, может быть enum - зависит от задачи.
Вообще, для такой задачи сам тип объекта можно сделать объектом, с какими-то свойствами и методами.
Или в enum определить доп. свойства.
И т.д. и т.п.
Очевидный Grady Booch очевиден.
Ну и вот это можешь посмотреть:
http://www.allitebooks.com/object-oriented-analysis-design-and-implementation-2nd-edition/
http://www.allitebooks.com/object-oriented-design-using-java/
то что ооп не нужно
И от себя могу добавить:
- Не плодить ненужных сущностей.
- Интерфейсы вместо суперклассов.
- Делегирование вместо наследования.
Также, рекомендую читнуть "Design Patterns in Ruby" (Russ Olsen, 2007) - первую главу, остальное - по желанию.
Маленькая цитата:
• Separate out the things that change from those that stay the same.
• Program to an interface, not an implementation.
• Prefer composition over inheritance.
• Delegate, delegate, delegate.
To these, I would like to add one idea that is not really mentioned in Design Patterns, but that guides much of my own approach to building programs:
• You ain’t gonna need it.
В книжках про Ruby вообще можно почерпнуть массу идей.
Брюс Тейт, в своё время, почерпнул, и написал "Better, Faster, Lighter Java", охуенную книжку для своего времени.
>>62524 - кун.
Уроки выучил на завтра?
var a = new Integer();
s.markAsEbanat(true);
getBioreactorService()
.process(s)
.andThen(sendNotification("Another ebanat eliminated successfully"));
>s.markAsEbanat()
Я так и написал сначала.
Но, потом решил усилить эффект.
Возможно, будучи двачером, вы слышали такие выражения как МПХ, например.
Так вот это - то же самое.
сам пошёл, лол
Ведь если рассуждать логически: 1921222 слишком большое число чтоб храниться в short, соответственно явно приведем это int овое значение к short,
но ведь оно должно тогда уж привестись к максимальному значению shot, а это (2^15 - 1) = 32767
так почему так получается ????
short x = 10;
short y = 3;
short z = x * y; //не компилируется, кто догадается почему тот молодец!!!!
как же у меня горит от джавы
https://stackoverflow.com/questions/2256864/why-is-the-resulting-type-of-a-division-of-short-integers-in-java-not-a-short-in
Комментарии прочти.
Java copied this behaviour from C, etc.
>>63029
Всё просто.
Обрезается в двоичном виде.
Берутся младшие 15 байт.
В 16-м - знак.
Зачем тебе шорты в джаве?
Байты иногда нужны для байтоёбства, а шорты зачем?
Выгоды по памяти нет (кроме какой-нибудь экзотики с упаковкой).
В реале видел только в каких-то старых API, типа POI-HSSF.
И там это, видимо, связано с интеграцией с сишными либами.
ой, не пизди. Всегда смотрю гихаб. И если там код херовый, нет гитхаба - пишу хрюшкам, что кандидат не подходит
Т.е. ты ожидаешь, что помимо работы человек должен ещё иметь какие-то пет-проекты обязательно?
Я бы решил, что это скорее минус, чем плюс.
Хуёво работает, значит.
Да и спринг, в общем-то, тоже, лол.
если ты любишь свое дело, то сможешь выделить 1-3 дня на пет проектик. Если способен гореть идеей, то запилишь крутой проект. Свой гитхаб - это показатель твоей любви к ремеслу и качество твоего кода. Он упрощает и мне работу как тимлиду и тебе как соискателю. И нет, там куда я смотрю резюме - работают не за еду)
>должен ещё иметь какие-то пет-проекты обязательно
т.е. за год-два работы ты не разу не смог придумать и найти АЖ БЛЯДЬ ЦЕЛЫЙ ДЕНЬ на то, чтобы запилить валидатор/говнолибу/калькулятор(но ахуенный с точки зрения архитектуры)? Ну тогда тебе "перезвонят"))
Kendo или React.
Убери devtools и узнай наконец hot code reloading.
From now on, the usage of "if" statement should be considered as anti-pattern and must be avoided at all costs. That's it. Period.
Если до этого имел дело с шаблонами и jquery, то Angular. А так - React.
В моем маня мирке месяца хватит для джуна
Хочется более в телефончики и десктоп попробовать как люди, а не с ебаными фреймворками
Десктопа на джаве давно уже нет.
За редким исключением.
Телефончики - это андроид?
Или ты Java ME имел в виду, для Nokia 40-й серии, лол?
Андроид - вещь на любителя.
Но, не исключено, что тебе понравится.
Я бы рекомендовал сначала попробовать - для этого не обязательно куда-то перекатываться.
Пиздуешь на developer.android.com и читаешь, что там написано.
vue.js, базарю.
МОгу на node, за неделю.
Но почему вообще этот ваш спринг может выдавать такое _страницами_?
Как это возможно?
мимо другой анон
Хуй знает что ты там наворотил, но с этим справляется даже индус.
https://ankushs92.github.io/tutorial/2016/05/03/pagination-with-spring-boot.html
Я ебу что он там страницами выдает? Может там не страницы, а просто после такого-то айдишника и так далее.
Ни разу не пользовался эти вашим спрингом.
И, при взгляде на код, ни разу не возбудился, ибо хуета какая-то.
И да, я понимаю, зачем он нужен.
Но юзаю ванильный Java EE (без EJB, JPA и всяких хибернатов).
Для ORM - MyBatis (IBatis) или вообще самодельные DAO.
Хм, так значит все еще проще.
В станице спринга есть количество записей всего. И он для этого делает ещё один запрос на count.
Самими эксепшонами пользуюсь, а вот try/catch использую довольно редко, ибо в основном пишу на reactor'е, а там ошибки ловятся по-другому.
Если эксепшон нужен просто чтобы вывести пользователю сообщение об ошибке кидаю простой субкласс MessageException со строковым параметром, объясняющим что за ошибка (например если в запросе несовместимые параметры или если объект по индексу не найден, например). Свой класс использую для того, чтобы любые другие ошибки логировать и затем смотреть где, когда и почему они возникли (потому что по-идее их быть не должно). Больше в основном и не пользуюсь.
рекомендую онли физику и матем, на остальное не трать силы и энергию
Такие, эмм, "люди" как ты превращают айти в блядский цирк галерного рабства и выгорания на скорость.
Ведь ты мало того что должен удовлетворять всем требованиям, что в прицнипе нормально, так еще и иметь гитхаб, в котором ты после 8 часов работы еще вечером пишешь, что уже пиздец. Ни на одной работе такого не требуют, кроме как войти.
Что бы я вывел из такого - не то, что человек лучше пишет код, а то, что человек готов кодить 24 на 7 и как следствие, готов въебывать без ограничений если надо будет, и что есть мотивация во имя "благой" цели стать "крутым кодером", которую можно направить в овертаймы.
Ну если догоадаются то покажешь себя не ок, тк обычно в договоре есть пункт что все что ты сделал принадлежит компании. Сразу покажешь что ты готов их кидать.
В прицнипе может и похуй, не знаю.
>и мне работу как тимлиду и тебе как соискателю
Сынок, если честно, я не думаю, что мы когда-нибудь с тобой встретимся.
По крайней мере, в такой позиции, лол.
>Какими и для чего в основном?
Посмотри иерархию наследования класса Exception.
Там каждое имя говорит о том, для чего оно может быть использовано.
Вввод - вывод, преобразование типов, сетевые операции, работа с бд, многопоточность, reflection, сериализация и прочее - если ты такого не пишешь, то тебе exceptions не нужны. Да и джава тоже, скорее всего.
Анус себе понажимай, довен.
объясните мне что не так с этим языком???
Прикольный класс.
Спеку читай.
removeIf + contains например
Если массивы отсортированы, то делается элементарно одним циклом.
>А как сделать, чтоб NetBeans с полуслова угадывал что я хочу написать и предлагал варианты
Скачать идею.
Возможно надо скачать. Я в нетбинсе даже оформление как в идее накатил, лол. Но все же в хотелось бы для нетбинса такую фичу.
UPD
Всё, я сделял. В нетбинсике тоже есть такая фича, просто надо в настройках автозавершения кода поменять кое-что. Свободное Программное Обеспечение > проприетарное платное
Идея бесплатная (community) чем не устраивает?
Это разного класса совершенно инструменты, так что свободное-несвободное значения вообще не имеет.
Не говоря уже о том, что платность лечится.
Как и несвобода.
Прямо встроенным декомпилятором, например.
>Идея бесплатная (community) чем не устраивает?
Spring не поддерживает. А пиратить это не выход. Приедтся каждый раз перепирачивать с выходом каждого нового патча.
> Приедтся каждый раз перепирачивать с выходом каждого нового патча.
Ну он не так часто обновляется. И единственное что нужно сделать после обновления, это добавить в конец idea64.exe.vmoptions строку
-javaagent:C:\data\JetbrainsCrack.jar
Они частенько банят левые сервера. Это пока что самый надёжный способ. Ну и работает со всеми продуктами JB.
Есть рест сервис на спринге с постгрес бд. Как мне сделать обзёрвер чтобы когда я добавлял данные в бд этот обзёрвер вызывал натификейшн метод(не важно какой сигнатуры)?
Если jpa, то там что-то вроде postpercist есть.
Да никак не делают. ГУЕвных программ на java очень мало.
Если хочешь что-то простое, то используй Electron, если попирформансней, то Qt.
Я хочу выбрать из БД все сущности A, bList которых содержит все элементы из передаваемого на вход List из сущностей B. Как это сделать с помощью CriteriaBuilder?
сущность A*
Похоже, метод CriteriaBuilder.isMember() — это то, что мне нужно. Получилось как-то так:
https://pastebin.com/MAvcFzAa
Потому что им нужна джава не менее восьмой, duh. Но ты можешь поковырять опции компиляции и компилировать под код седьмой.
Обратная совместимость - это когда код сконпелированный для jre7 работает на jre8, а ты хочешь прямую поддержку. И да, с ней никто не заморачивается, фичи-то добавлять надо. Особенно учитывая, что в java8 изменился формат байт-кода.
Впрочем начиная с java9 обратная совместимость тоже пошла по пизде. Спасибо жигсо. Некоторые библиотеки до сих пор на java9/10 не портированы.
Обосрался, спасибо.
У перекатчика просто GC включился. Ждем.
Вкатываюсь в джаву самостоятельно вот уже на протяжении 5-6 месяцев.
Собственно ищу ментора. На небольшой промежуток времени. Естественно, не безвозмездно. Подробности обсудим.
Почта: devilis}@_fineANUSyan|6MdexPUNCTUMrQ7Zu
Пиши, что тебе конкретно от ментора нужно.
а backbone+ bootstrap уже не модно?
Триггер на инсерт и апдейт, в этом триггере записываешь флаг куда-нибудь.
Этот флаг периодически читает твой спринг. Например раз в 5 секунд. И когда прочитал изменения - ставит флаг обратно
У постгреса есть нотификации. Hibernate их не поддерживает, однако с ним они и не нужны, ведь триггеры можно поставить непосредственно на него.
и кто кого нотифицирует?
Куда-нибудь, это сюда:
https://www.postgresql.org/docs/9.0/static/sql-notify.html
А вообще, порядочнее будет использовать https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/transaction/support/TransactionSynchronization.html и не ебать мозг.
Эти нофикации - суть обычный пайп, пока кто-то на другом конце не начнет "сосать" - никаких извещений не будет. TransactionSynchronization или ебаться с aspectj.
Интересно, никогда не слышал
see sharp
Расскажи как вкатываешься. Что прочитал, что изучил, что написал? Лвл, образование, английский?
Это копия, сохраненная 14 мая 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.