Вы видите копию треда, сохраненную 14 августа в 02:41.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
🆕 Веселые фичи:
— Теперь у вас есть свобода до super(); и this();. 💻
— Стрим газонюхи: добавьте свои прикольные операции, типа batch(). 🌟
— Запускайте Java как питона в один мах, даже если у вас целый зоопарк файлов. 🐍
🚀 Новые фантастические обновления:
— Переключайтесь на короткие входные точки (void main() {}), и забудьте про неназванные классы - они на автомате становятся именными! 📄
— Кастрированный ASM теперь на службе, ускоряя сборщик мусора и отпуская Java от его оков! 🛠️
— А форейн функшен выходит из превью, и мы уже на пороге Вальхаллы! 🌋
🎈 Веселые изменения:
— Обновлены шаблоны строк, переменные в лямбдах через _, структурированная многопоточность/скопед значения и вектор апи - все прикольные штучки остаются с нами в превью/инкубаторе. 🔃🔄🔍
Вики по вкатыванию в джаву: https://github.com/java2ch/java-thread/wiki
Предыдущий: >>3115562 (OP)
>кастрированный асм ускоряет сборщик мусора
Это будущее чел.
Какие есть модные книги с современными подходами к разработке?
В мире Java-разработки всегда появляются новые и интересные книги, которые отражают современные подходы и тенденции. Вот несколько модных книг, которые стоит рассмотреть:
1. "Effective Java" by Joshua Bloch - Эта книга является классикой в мире Java и предлагает множество советов и лучших практик по использованию Java в реальных проектах.
2. "Clean Code: A Handbook of Agile Software Craftsmanship" by Robert C. Martin - Эта книга не привязана к какому-то конкретному языку, но содержит множество ценных советов по написанию чистого и поддерживаемого кода, что является ключевым аспектом разработки на Java.
3. "Java Concurrency in Practice" by Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, Doug Lea - Это одна из лучших книг по многопоточному программированию на Java, которая поможет вам понять и применить современные подходы к параллельному выполнению кода.
4. "Modern Java in Action" by Raoul-Gabriel Urma, Mario Fusco, Alan Mycroft - Эта книга предлагает обзор современных возможностей Java, включая функциональное программирование с использованием потоков, а также нововведения, введенные в последних версиях языка.
5. "Java Performance: The Definitive Guide" by Scott Oaks - Если вам интересно узнать о современных методах оптимизации производительности в Java-приложениях, то эта книга предоставит вам все необходимые сведения.
Эти книги помогут вам оставаться в курсе современных подходов и методик в мире Java-разработки.
Ничего себе, нужно срочно перейти по ссылке и записаться на этот курс, оставив свой e-mail и номер телефона!
> Читай шилдта.
За такие советы надо бить ебальник. Дядя конченный пидорас - учит плохому:
1. Доступ?! А хуй на него везде дефолтный.
2. ООП не нужно.
3. Ряд методов-примеров из книги надо разбивать на два-три.
4. Нейминг - не неслышал.
И тому подобное говно. Короче дядя застрял в 90х на С с классами. 100% не современное и даже не уровня кода начала разработки java.
1. Толковое прямо 10/10. Афтырь разработчик java.
2. Толковое.
3. по прежнему актуально, но нудно.
4. не читал.
5. Оптимизация нахуй не нужна, так сказал Блох. Живите с этим.
> 1. Доступ?! А хуй на него везде дефолтный.
Какой нахуй доступ в книге объясняющей основу джавы? Ты ебобо? Доступ только в разделе про доступ, очевидно.
> 2. ООП не нужно.
Ещё раз, это не книга про ООП, это книга про управление джавы. Как ей рулить.
> 3. Ряд методов-примеров из книги надо разбивать на два-три.
> 4. Нейминг - не неслышал.
Вкусовщина, воняющая агрессивным анальником, что вместо работы доёбывается до коллег и свои бест практисисы навязывает, которые при более детальном рассмотрении часто (почти всегда) оказываются антипаттерном.
>1. Толковое прямо 10/10. Афтырь разработчик java.
Разработчик Java - James Gosling, а тот чел просто библиотеки писал
Думаешь?
>1. "Effective Java" by Joshua Bloch - Эта книга является классикой в мире Java и предлагает множество советов и лучших практик по использованию Java в реальных проектах.
Устарела, морально и физически
>2. "Clean Code: A Handbook of Agile Software Craftsmanship" by Robert C. Martin - Эта книга не привязана к какому-то конкретному языку, но содержит множество ценных советов по написанию чистого и поддерживаемого кода, что является ключевым аспектом разработки на Java.
Список размытых мантр "за все хорошее", которые урежут производительность кода в лучшем случае в 2 раза
>5. "Java Performance: The Definitive Guide" by Scott Oaks - Если вам интересно узнать о современных методах оптимизации производительности в Java-приложениях, то эта книга предоставит вам все необходимые сведения.
Опять мантры и лознуги, сразу понятно что вводят в заблуждение, особенно начинающих
Все эти книги нужно читать с приличной долей скептицизма, а факты проверять, т.к. самой новой из них 6 лет уже
Библию
> Какой нахуй доступ в книге объясняющей основу джавы? Ты ебобо? Доступ только в разделе про доступ, очевидно.
> Ещё раз, это не книга про ООП, это книга про управление джавы. Как ей рулить.
> Нейминг - антипаттерн
Слыш, пошёл нахуй вместе с этим пидором. Вы оба нихуя не шарите.
Жалкая пародия!
Неповторимый оригинал https://youtu.be/4HJUX_BQgGI?si=mMwYhkzBzBagKnt0
А ведь раньше шапку украшали баннеры Дургасофт, а теперь убоная AI дристня. Когда мы свернули не туда?
Ток он вам отвечать на дваче не будет.
И что? Это какая-то божественная библиотека, которую никто больше не может написать?
Да
Я имею ввиду, может это извращение какое-то - VS Code использовать вместе Интелидж Айдии.
Не поймут пацаны на работе.
Лишь бы было удобно.
Круче всего писать в vim, но мне не удалось его нормально настроить для жабы (чтобы на 100% работало автодополнение). Он больше заточен под правку конфигов или небольших скриптов.
Emacs вроде позиционируется как IDE, но я его вообще не понимаю, слишком все сложно и неинтуитивно. Там автокомплит вроде ставится 1 плагином.
IDEA и Eclipse слишком прожорливы, NetBeans не подходит для чего-то сложнее HelloWorld'ов.
Для VSCode есть бесплатный плагин от спринга, для идеи нет. Думай.
всем поебать.
Шилдт писал на Си и крестах, и по этим языкам у него отличные книги. Шарп и жабу он знает хуже. Я бы начинающим советовал Брюса Эккеля "Философия Java" - такая же классика, как K&R и Страуструп. И затем учить фреймворки - Spring, Hibernate и др.
Долбоеб хуеголовый, не у всех есть современные компы. Попробуй запустить идею на 8 гигах.
Это действительно странная идея, ведь у ителлиджи очень много интеграция со спрингом. Но если не хочешь - не используй.
>IDEA и Eclipse слишком прожорливы
КАК это вообще? У меня компу 10+ лет, на нём идея отлично идёт. Что у тебя там за комп?
Жу-жу-жу-жу-жу-жу,
Я Windows обожаю,
На шарпе я пишу.
Мне солнышко будильник,
Встаю я по утру,
Как только перерывчик,
Я в жаботреде сру.
Жу-жу-жу-жу-жу-жу-жу,
Жу-жу-жу-жу-жу.
Жу-жу-жу-жу-жу-жу-жу,
Жу-жу-жу-жу-жу.
Ты причем здесь Докер? мы об идее говорим
Паук я жирный, старый,
На брюхе крест ношу,
Пью пиво вместо смузи,
Подвал глухой люблю.
Я байтики считаю,
По-старчески брюзжу,
Жаб с мухами гоняю,
Шаблонами плету.
Кхе-кхе, кхе, кхе-кхе, кхе,
Кхе-кхе, кxе, кxе-кхe, кхe.
Кхе-кxе, кхе, кxе-кхе, кхе,
Кхе-кxе, кхе, кхе-кxе, кxе.
> ведь у ителлиджи очень много интеграция со спрингом.
В платной версии. А VS code бесплатен и предоставляет практически тоже самое.
> советовал Брюса Эккеля "Философия Java"
Помоему она района java 1.6 т.е. даже не 1.8.
Читать надо Хорстмана обе книги. Полное представление о Java SE нормальным языком, рабочими примерами и сравнительно актуальная версия java.
> крестах
В целом при наличии официальной, на русском, доки читать дядей по крестам даже вредно.
Насколько я вижу из фич там:
- Сгенерировать инишалайзером проект
- Перейти по замапленному в контроллере пути
- Перейти по типу к его дефинишену
Так?
Ну и кто виноват, что ты потреблядь и гей-шлюха с раздроченным маркетологами Apple анусом?
Ебать школотрон бабахнул и тут же побежал перефорсить.
1. На заре джавы было сделано несколько ошибок, и одна из них это то, что print не печатает строку, а добавляет в буфер вывода текст, который не будет выведен пока не будет получен сигнал завершить печать строки. Чтобы всё выводилось сразу используй println вместо print.
2. Ты не в терминал смотришь, долбоёб.
>2
Так терминал не открывается сам что ли? Раньше вроде сам открывался. Но всё равно, вручную открыл, и ничего
А вообще, я вот про это - кнопка тупо не активна. То есть, я даже просто запустить не могу
И надо смотреть в run, а не терминал (у теюя он скрыт пока, как только запустишь файл - будет рядом с build кнопка)
Я нихуя не делал, открыл как было. В общем, удалил тот файл, создал новый, и всё заработало
> То есть, я даже просто запустить не могу
Идея тупорылая, ей надо создать проект и там написать твой хелоуворд. А иначе она не отдупляет, что делать вон пишет no usages.
Ну смотри. Разложу эти 2 года. 5 месяцев была стажировка, потом год был бэнч. И вот 7 месяцев я батрачу на проекте.
Исходники должны быть в папках исходников, которые синей иконкой помечены. Или тебе нужно былоотмечать папку с мейном исходником, или переносить мейн в src
Так уже есть МЛ на джаве, что такое?
Сами МЛщики на реддите говорят что только прототипируют на питоне, а продакшн на джаве
Даже Астон на выходе с 1,5 лет рабства будет явно больше 120, пора бы тебе крутануть +год и идти на рынок.
>А ты больше просил?
Тимлид сам инициировал разговор про зп, мол, надо бы тебе повысить до 150к. Это было в феврале этого года. У нас на галере начальство ввело какой-то ебанный временный фриз на повышение всвязи с перестройкой компании и мне недавно выдали, что повышение будет не раньше июля.
Ну у меня по бумажкам выходит 2 года опыта. Я полгода стажировался, а еще год просто получал зп ниче не делал. Вот сейчас завершаем проект, на нем я 7 месяцев, это считай мой первый проект реальный.
> пора бы тебе крутануть +год
А че, 2 года опыта ща не котируются? Без накрутов не получится?
2 года реального вполне норм, но сейчас нулевый волк крутит 3+, так что для рынка надо бы соответствовать и тоже крутить.
Валхалла делают уже 10? лет. За это время сишарп стал кроссплатформенным и сожрал кусок рынка, го стал мейнстримом в бэкенде, у джаваскриптеров появилось еще два рантайма для сервера. Просто пиздец бездарности из оракла.
Чем тебе советы дядюшки Мартина не нравятся?
2. Можно ли во время выполнения генерить код, т.е. скомпилить .class-файлы и потом создавать объекты из них?
3. Совместима ли JVM с моделью памяти языка Форт? Там и там стековая машина, но у Форта раздельные стеки для данных (аргументы функций и локальные переменные) и адресов возврата.
Хочу написать для JVM свой язык с изменяемым синтаксисом. Смотрел Clojure, не понравилось, слишком усложнено.
> 1. Есть ли для Java ассемблер, чтобы писать методы окодами JVM?
Шизофренище, иди таблетки пей, живо.
> 2. Можно ли во время выполнения генерить код, т.е. скомпилить .class-файлы и потом создавать объекты из них?
ASM.
> 3. Совместима ли JVM с моделью памяти языка Форт? Там и там стековая машина, но у Форта раздельные стеки для данных (аргументы функций и локальные переменные) и адресов возврата.
Никого не интересуют шизофренические поделия 70-х в этом треде.
Макака, перекладывающая JSON'ы, спок. Ты и порядок загрузки classloader'ов наверно не знаешь.
30+ lvl, хочу удаленку.
Какова вероятность ее найти?
Или только ножками на работу ходить?
Нулевая. Вката сейчас нет. Единственный вариант войти в профессию: профильный универ, стажировка, диплом, работа.
Для начала стоит поменять запрос на хочу работать за еду год, а то и два, под надзором жесткого кабанчика, вероятней всего, в офисе.
После этого войти в топ 5% вкатунов и массово спамить все вакансии в хх, телеге и тд. Сразу понять, что рейт 1/300 приглашение/отказ это неплохой результат и да, это только приглашение на собес, после чего еще и шансы пройти его мизерные, так что днем и ночью смотреть записи собесов и повторять очередное пособие 1000 вопросов по стеку и подготовить и прорепетировать перед зеркалом, почему в предпенсионном возрасте ты неудачник и решил, что тебя тут ждет что-то лучше и чтобы это звучало хотя бы издали правдоподобно.
Возраст сразу скидывает все приличные стажировки, хотя можешь подрочить литкод и через контест пройти в какую-нибудь более менее сносную контору, которая иногда пропускает скуфов, чтобы показать, что они не такие, но уровень необходимых усилий по отношений к достигнутому результату и применимости в дальнейшей деятельности будет жалок.
Фортодебил, не гори.
Тут надо понимать, что пишут тебе такие же вкатуны которые не хотят видеть ещё одного конкурента.
>вррёёёёёте! вы всё врёёёте! рыночек порешал! на одного вкатуна 20 вакансий!
Может кроме обвинений в злой лахте что-то по делу покажешь, например, статистику, опровергающую хоть что-то из сказанного анонами выше?
@
РРРРЯ БИЛД ФАЙЛЕД! ПРОЕКТ СОЗДАН НА 7.6 А ТЫ ЗАПУСКАЕШЬ 8.7!
@
ОК, ЗАПУЩУ ВРАППЕР
@
РРРРРЯ БИЛД ФАЙЛЕД! СЛИШКОМ НОВАЯ ДЖАВА В СИСТЕМЕ! ЭТО СТАРЬЁ НЕ ПОДДЕРЖИВАЕТ ДЖАВУ ВЫШЕ 19!
@
SSSSSUUUUUUU
ТЕПЕРЬ ЭТО В ПРОШЛОМ! Я написал бат-шорткаты для шинды для запуска дегенерадла с выбором нужной версии джавы и динамическим определением того, откуда эти шорткаты вызываются. Добавил папку с ними в path и теперь ввожу gradlew17 для старья и gradlew21 для современного и радуюсь зелёному билд сакцесс. В чём я не прав?
@echo off
setlocal
set JVM_PATH=путь к джаве
set PROJECT_PATH=%CD%
cd /d %PROJECT_PATH%
%PROJECT_PATH%\gradlew.bat build -Dorg.gradle.java.home=%JVM_PATH% %*
А ты пробовал хотя бы на хх зайти и поискать?
Джаву сделали, чтобы такой хуйней не заниматься. И тем не менее это возможно - Classloader#defineclass + javaassist
Да, если ты сможешь его раскрутить и продать, но если бы ты это умел, то точно не был бы анальником.
Увы, не от меня зависит. Была бы моя воля я бы конечно пользовался мавеном.
> Есть ли для Java ассемблер, чтобы писать методы окодами JVM?
Есть. Так и называется - objectweb asm. Но пользоваться оным довольно заебисто, поэтому на практике чаще всего пользуют щадящие альтернативы. Самая хайповая - byte-buddy. Еще есть cglib, javassist, bcel.
>Можно ли во время выполнения генерить код, т.е. скомпилить .class-файлы и потом создавать объекты из них?
С кастомными класслодерами возможны все твои фантазии, пупсик.
>Совместима ли JVM с моделью памяти языка Форт?
Не ебу, скорее всего нет. Но чел, не стоит проецировать на JVM свои фетиши по устройству модели данных. JVM - это вещь самодостаточная, ты либо принимаешь ее такой какая она есть, с ее моделью. Либо не принимаешь и пишешь свой рантайм с нуля.
>Хочу написать для JVM свой язык с изменяемым синтаксисом
Ну на базе байткода кастомных языков - вагон и малая тележка: скала, котлин, кложура, цейлон, так что в теории все возможно. Еще - на хайпе щас graal truffel, хотя оно про другое.
> например, статистику
Да вы тоже не предоставили никаких фактов. В /b/ ноют, что бабы не дают, тут ноют, что вката нет.
> опровергающую хоть что-то
Чувак, я помню лет пять назад у нас по снабжению, в которое я тогда перекатывался с продаж была 1 вакансия в неделю, а то и месяц. И в принципе я за средний прайс тогда нашёл работу в течении года. Последнюю на которой работаю искал в течении двух лет - подфатило попал в короновирус.
> а одного вкатуна 20 вакансий!
Вот только щас вижу пост на соседнем форуме, о том, что чувачок съёбывает в англию по it-шной визе с яндекса. Хотя казалось бы куда жирнее для этой страны. Погодите 1.11.2024 ещё не наступило.
> кроме обвинений в злой лахте
Чувак, мне похуй кто ты что ты, я вообще не тебе писал.
>3. Совместима ли JVM с моделью памяти языка Форт? Там и там стековая машина, но у Форта раздельные стеки для данных (аргументы функций и локальные переменные) и адресов возврата.
Загугли JMM, т.к. ты наверное один тут сможешь понять подходит это под Форт или нет
Есть какие нибуд задачники по циклам но где сложность пропорционально возрастает из известных тебе?
Не тот ли ты шизик из С++ треда который писал на С++ это?
такова хоть жопой жуй https://www.google.com/search?q=forth+jvm&sca_upv=1&udm=
Я не представляю что такое задачники по циклам? Чего там изучать, while и for? Зачем для этого задачник?
Наверное, а как это связано с Java? В других языках по-другому будет?
> Да вы тоже не предоставили никаких фактов. Скринов с количеством вакансий и вкатунов с хх.сру не бы ла! Индекс вката не подсчитывается! Статистики лейоффов НЕ ТУ! ВЫ ВСЁ ВРРРРЁЁТТИИИИИ!!!!!
Ясн, можешь не продолжать.
>чувачок съёбывает в англию по it-шной визе с яндекса
Сурс?
Насколько я слышал, Яндекс теперь только в РФ нанимает (и при большом везении в Сербию)
Если ты прошедшую неделю ничего ни читал, ничем не занимался, то вообще похуй. Потом будешь рассказывать, что вката нет. Ты пытался год-полтора смотря маняме и играя в доту2.
Да, визу таланта в UK получить пиздато.
Но и сам чувак не хуй с горы, а разраб или даже тимлид в довольно топовом отделе Яндекса - YDB и Logbroker.
Ты еще спроси какой фреймворк.
Хорстманн. Спасибо скажешь
Если уже есть опыт в программировании то вот эта неплоха:
https://www.oreilly.com/library/view/java-in-a/9781098130992/
Metanit
Не делай. Забей хуй. На работе код это не два цикла фор и 3 ифа, открою тебе тайну
Всё? Все embedded сервера - tomcat, jetty, ktor, простейший com.sun.net.httpserver.HttpServer - все они так настраиваются
Я наверное несколько лет уже как к олимпиадкам не притрагивался.
На самом деле очень приятное чувство, когда ты на протяжении часов 5 решаешь задачки с тестирующей системой, принимая ad hoc решения, подбирая константные формулы и пр. пр. и когда получаешь OK на задачке... Прям ух. Непередаваемые ощущения.
Конкретно к этой задаче у меня не сохранилось решения, поскольку сайт их не сохранил... Нашел промежуточное https://pastebin.com/DJR6ZMgS
Глядя на него примерно понимаешь, что хороших привычек олимпиадное программирование не прививает, так еще и практическкими задачами оно не пресекается..
В общем хз, мб и решу.. Это ж не дп, которое я до сих пор не понемаю.
> дп, которое я до сих пор не понемаю
Громкое название для примитивнейшего трюка. ДП это по сути внутреннее кеширование.
Я скорее про шизофренические алгоритмы по типу префиксных сумм. По сути дп, это про подбор рекурентной формулы, что для меня как-то пиздец сложно. Возможно там просто надо заучить 100500 алгосов, но мне впадлу.
>>41581
Задача про проход числа циклом. А в наивном решении двойной проход. Че тебе не нравится?
> префиксных сумм
Если гопота мне правильно объяснила, то что здесь шизофренического? Вполне понятно всё.
>Программирование это всегда про математику?
НЕТ БЛЯТЬ! Программирование это про сайты! Или про программы/мобильные приложения. Какая хуй разница, на каком языке ты пишешь, хоть на питоне, хоть на хаскелле, хоть на java, это общего смысла не меняет. В конечном итоге, всё равно получится ёбанный сука САЙТ! Или чё там ещё может выйти нахуй? Машина времени? Звезда смерти? Или блять спутник? Не надо программировать ради самого программирования.
Чем абстрактнее хуйня, тем меньше образовательный КПД и меньше пользы для тебя, как для программиста. Ты можешь хоть усраться и формулами исписать, их всё равно никто не увидит и твой полёт фантазии не оценит. Обычный пользователь увидит лишь формочки, кнопочки, хуёпочки. Пользователь нажимает хуёпочку, там происходит какое-то волшебство и ему выдаётся результат. Вот программирование об этом.
Но если ты прям так рвёшься к МАТЕМАТИКЕ, то добро сука пожаловать в РОБОТИЗАЦИЮ, ФИНАНСЫ, ИНЖЕНЕРИЮ, БИОИНФОРМАТИКУ. Там столько матана что ты охуеешь. Кто знает, может это ты создашь российский аналог atlas'а из boston dynamics...
о, помню тебя, ты порвался в мвп еще на новый год, решил сдаться и с борщехлебания перейти на заработок денег?
Зачем что-то менять в мавене
Ага. А анон - тупо мешок с мясом, костями, жидкостью и говном. Че сказать то хотел?
Виртуальные потоки это жидкий обсёр. Говорю как жабафан.
1. Синхронайзедов нет. Крест на идее непереписывания кода, а также фактическое серьёзное замедление кода из-за необходимости использовать каловые реентранты вместо быстрых синхронайзедов.
2. Если с платформенным потоком ещё можно как-то выебнуться для того, чтобы получить выпиленный Thread#stop() назад, то с виртуальным хуй.
не я вообще не хочу заниматься математикой,искать ебанутое число фибоначчи и прочую эту хуйню я прост учусь на программиста и хотел изучить джаву чтобы писать всякую хуйню под мобилки
я мне могу блять понять, почему у меня в спринг буте при неккоректном никнейме (несуществующем аккаунте) происходит оверлоад и ответ от сервера не возвращается...
никаких экспешенов нет, в консоли h и hh выводится..
https://pastebin.com/BCTFx8qf
Они не для этого чувак,виртуальные потоки имба когда ты закинул рест или запрос в базу и идёшь дальше кошмарить платформенный поток,стоп тоже нахуй не нужен тк ты перданул виртуал потоком,получил результат и он благополучно сдох,долгоживущих тасок там не бывает,наконец-то можно тупо на любое говно вешать @Async и не ебаться с тредпулом,шарпомухи должны быть в восторге
на самом деле, даже типы это математика, типизирование по черчу, все дела. хотя в жабе она не самая красивая, но в вальхалле исправят конечно, да да.
наверняка с этим столкнешься, когда женерики изучать будешь.
ну и конечно не стоит забывать, про асимптотику алгосов, доказывние корректности чернз индукцию и пр. пр.
Код пупуням лучше не показывать, выглядит очень больно. Первое что бросается в глаза это this там где он не нужен,плюс не использовать ResponseEntity(сущность для хттп респонса) в сервисном слое это ужасно,не надо так делать. Что касается твоего вопроса, исключения нет тк ты его не выбрасываешьлогично?. Если ты хочешь получать исключение когда юзера нет то сделай следующее:
1)Твой репо слой возвращает Optional<YourObject>
2)В сервисе ты делаешь repo.findByField()
.orElseThrow(() -> new YourException("Bullshit with given login does not exist"))
Использовать это ужасно*
писать красивые кнопочки на сайтах и писать скрипты для автоматизации рутинных действий пользователя
ну мне не надо быть пиздатым программистом который пишет охуенные алгоритмы,я алгоритмы ебал в рот мне надо прост бабла заработать,желательно побыстрее
>писать красивые кнопочки на сайтах
Это не про жабу вообще.
> автоматизации рутинных действий пользователя
Это тоже больше про UI и скрипты какие-нибудь.
В любом случае теория алгоритмов это основа программирования. Думая, что ты убираешь что-то ненужное, ты буквально фундамент уничтожаешь.
Вообще у математики и программирования очень много общего, поскольку второе буквально создано первыми. Например маниакальная абстракция везде и во всем. Изучая спринг ты просто ахуеешь от количества и качества этих абстракций. Почитай: https://www.fredrikholmqvist.com/pages/why-i-hate-frameworks.html
>>43490
У тебя нет конкурентного преимущества, за которое можно платить. Может ну его, это айти?
Тебе дорога в военкомат
Если циклы и настолько простая математика вызывает настолько сильное отторжение, сдавайся - программирование не твое. Программистом ты возможно еще устроишься, но ни счастья, ни денег, ни самоудовлетворения, ни развития эта работа тебе не принесет. Будешь не работать, а пресмыкаться перед менеджментом и подлизывать хрюшам, чувствуя свою неполноценность перед коллегами моложе тебя, но окончившими мехмат. А когда ты осознаешь, что в 40 лет ты все еще джун с окладом ниже дворника, и в любой момент можешь вылететь из-за кадровой оптимизации, просто уйдешь в лютый кризис, возненавидишь себя, уйдешь в запой и самовыпилишься, если не одумаешься.
А ты наверное очень счастлив и удовлетворен развешиванием анноташек над говносервисами?
При чем тут удовлетворен ли я? Я не горю - в этом ключевая разница. Циклы? Типы данных? Ряды фибоначии? Да вообще похую.
А че фронтенд? У них например задача, чтобы их говно не лагало на всех устройствах этого мира. У тебя же только один сервер. Плюс язык у них посложнее будет, в том плане, что позволяет очень много хуиты.
Современный фронтенд похлеще бэкенда по устройству иной раз. Какие там циклы, они иной раз и по ФП-плюшкам упороться не против.
>не я вообще не хочу заниматься математикой,искать ебанутое число фибоначчи
Тебя никто насильно под пистолетом не заставляет. Есть правильное АКАДЕМИЧЕСКОЕ программирование, где всё по книжкам, считают числа фибоначчи и всё такое прочее. И есть неправильное КОММЕРЧЕСКОЕ программирование. Где весь смысл - это получить сука БАБКИ.
То что вы учите, решаете всякие литкоды, это не только не полезно, но и вредно. Одно дело решить на скорость головоломку и через полчаса забыть о ней. И другое когда тебе нужно поддерживать проект с 200 тысяч строк кода. И когда ты добавляешь новый функционал в одном месте, ломается в другом. При этом на тебя ещё заказчик орёт, вот это - реальное программирование, а не то что вы фантазируете.
При чем тут наши фантазии. Чел бугуртит с примитивных концепций, которые у среднестатистического кодера настолько зашиты в кодкорке мозга что он даже не осознает когда пользует их. О чем тут речь может быть вообще? Ну не дано и не дано - нахуя себя мучать?
Это, во-первых, наш тред, во-вторых мой намного больше чем твой, в-третьих жду обоснования что тут кринжового.
У меня прекрасно работает и на 6 гигах. А в 2019 даже с 2
Все правильно, не нужен. И WebClient туда же. И весь project reactor. Все кто изучали эти мертвые технологии - дауны
Ты ебу дал, или что?
>Синхронайзедов нет. Крест на идее непереписывания кода
>как-то выебнуться для того, чтобы получить выпиленный Thread#stop() назад
Да ты сам нихуя идей стоящих за джавой не выкупляешь, если маленькое ситуативное ограничение на синхронайзд для тебя - дилбрекер, а сраный тред-стоп, который руинит пол-JMM одним своим существованием, для тебя фетиш. После этого ты в лучшем случае - непереучившийся сишник, привыкший ловить конкарренси-аномалии ебалом, которому концепция memory model просто стоит костью в горле, в худшем - фрик со взаимоисключающими параграфами, но уж точно не джава-фан.
Нахуя те вообще Thread stop, фрик?
Так тред стоп просто ошибку кидает, че там жмм руинить может..
Или ты чел, который пиздит о 17 главе не открывая ее?)
Пиздец. Ошибку кидает. А то что у этого прибитого треда могли быть захвачены мониторы, и он в момент прибития мог лопатить шаред-стейт - несущественный нюанс, ага?
Ты на вопрос не ответил. Те thread stop нахуя, фрик?
> Да ты сам нихуя идей стоящих за джавой не выкупляешь, если маленькое ситуативное ограничение на синхронайзд для тебя - дилбрекер,
Может по делу скажешь почему это не "дилбрекер" и почему я должен поскакать переписывать квадриллионы строк умеренного легаси с синхронайзедами на реентрантлоки не только тратя на это время, но и понижая перформанс.
> Нахуя те вообще Thread stop, фрик?
Безопасно работать с внешним кодом, чтобы можно было грохнуть поток если выполняется слишком долго.
>А то что у этого прибитого треда могли быть захвачены мониторы, и он в момент прибития мог лопатить шаред-стейт - несущественный нюанс, ага?
Еще раз, как это jmm ломает? Все локи он освободит, у тебя даже дедлока-то не будет.
> Те thread stop нахуя, фрик?
Я вообще не он.
Ой, фрик...
"Безопасно" и "Thread.stop" в одном утверждении - это смешной оксюморон, и мне тебя жаль если ты на этой шутке строил гарантии в проде. Грохнуть поток безопасно - это Thread.interrupt, живи как хошь с этим фактом но именно для этого его и дизайнили в свое время.
А ты по существу сидел на депрекейтнутой залупе, от которой все еще в восьмерке открестились, о чем ты мог бы узнать если бы не был фриком и элементарно чекнул javadoc к методу.
А для тебя шутка чтоли, что у тебя мониторы отлетают посередь критической секции и обьекты остаются хуй пойми в каком промежуточном состоянии? Типа дедлока нет, ошибка есть - значит все штатно? Ну удачи, че.
Да мне блять какая разница? Ты пиздишь, что пол jmm ломается, но при этом не привел ни одного аргумента в эту пользу.
Ты тоже фрик чтоли? Для тебя пучок поломанных обьектов, для которых состояние неопределено и ничего не гарантируется после таких выкрутасов - не дырища в JMM?
Ммм... Что такое по твоему jmm? Ты типа вот понимаешь, что написано в п.1 и 5? Прочитай внимательно..)
А, я понял. Ты не фрик, ты - душнила, который решил доебаться до формулировок. Ладно, молодец, ты меня переспорил.
Нет, в п.5. четко сказано, какое поведение допустимо. А именно, все, волатайл чтение видит любую, еще раз любую запись, которая не упорядочена после, а также уплощает цепочки записей, до последней. О чем нам это говорит? То, что ты описываешь, четко сука описано в спеке, а ты блять ее никогда в жизни не открывал. Но при этом что-то про нее пиздишь. Классика.
Блять, при чем тут волатайл, душный! Я те выше про слетевшие критические секции - с хуя ли ты на волатайл то стрелки переставляешь? У тебя весь шаред стейт в крит-секциях чтоли волатайл или что?
Угомонись, епта
>У тебя весь шаред стейт в крит-секциях чтоли волатайл или что?
Лок/анлок это sa, которое перейдет в hb. Там на него те же правила:
>A set of actions A is happens-before consistent if for all reads r in A, where W(r) is the write action seen by r, it is not the case that either hb(r, W(r)) or that there exists a write w in A such that w.v = r.v and hb(W(r), w) and hb(w, r).
С чуть большим множеством.
>Угомонись, епта
Да я тебе с самого начала сказал, что ты пиздишь о том, о чем не понимаешь. Эти ошибки вообще можно перехватить и хуину забить.
Блять, да о каких правилах на анлок ты вообще даже в теории можешь говорить, если анлок у тебя происходит не там, где было задумано, а хуй-пойми где, где тред прибьется? Че ты там обрабатывать и перехватывать собрался?
>о каких правилах на анлок ты вообще даже в теории можешь говорить
Ну будет rc. Для приложения критично, да, но jmm это не ломает.
> а хуй-пойми где, где тред прибьется?
Можно прям внутри критической секции try/catch поставить. И просто игнорить смерть треда. Thread#stop не убивает треды средставми ос.
Корочи ладно, извени. Хотел пожелчить~ Надеюсь не обидишься
У "безопасно" разные значения могут быть. Здесь оно значит безопасность от вредоносного или говно кода.
>Для приложения критично, да, но jmm это не ломает.
Ну здесь да, ты меня уже подловил, как я выше признал. Бито.
>Можно прям внутри критической секции try/catch поставить.
Ну вон оракловцы пишут что это такой себе муф на практике:
https://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html
>Корочи ладно, извени
Ваще никаких обид, бро, ты че.
Да они уже выпили этот метод. Мало ли че они теперь пишут.
>Безопасно работать с внешним кодом, чтобы можно было грохнуть поток если выполняется слишком долго.
Чтобы безопасно работать с внешним кодом, нужен простой...
докер контейнер, а лучше виртуалка
> в-третьих жду обоснования что тут кринжового.
https://docs.oracle.com/cd/E19455-01/806-3461/6jck06gr5/index.html
https://pastebin.com/gWCSjpBq
И как теперь создавать объекты этого класса?
И? У тред стоп разве всего одно использование было, что перекрывается этим?
Т.е. как я понял, сам объект создается примерно так:
Object user = classLoader.loadClass("User").newInstance();
И дальше можно обращаться к полям и методам через рефлексию.
Но как правильно настроить classLoader?
Смотрю, возмиожно подойдет для моих целей.
И еще вопрос, классы обязательно должны загружаться из файловой системы?
В памяти их держать нельзя, ничего не записывая на диск?
Можно, конечно в Windows и Linux создать RAM диск.
>классы обязательно должны загружаться из файловой системы?
Я не уверен, но вроде можно, типа вот ты же сам определяешь работу пика, следовательно можешь как угодно определить то, как интерпретируется юрл. Но наверное лучше поискать имплементации соответсвующие..
Это непроизводительно. Под каждый кусочек внешнего кода выделять по 100 мб памяти на виртуалку и в 1000 раз замедлять интероп с ним за счёт общения сокетами? Я лучше буду обычные джава методы вызывать.
>И еще вопрос, классы обязательно должны загружаться из файловой системы?
>В памяти их держать нельзя, ничего не записывая на диск?
>Можно, конечно в Windows и Linux создать RAM диск.
JVM пофиг откуда возьмется байткод, хоть с диска, хоть будет загружен по сети Log4Shell именно на это основан был, хоть из базы данных JVM в Oracle Database именно так и работает, хоть сгенерирован на лету.
Тебе еще пол года назад сказали, что тред стоп никогда и не делал того, что ты хочешь. Пользуйся java агентами и не ной.
В смысле не делал? Ты про то что тред детх можно перехватить? Так я эти полгода назад на это и ответил что перехват тред детх можно улавливать на проверке кода на безопасность вайтлистом, что в любом случае нужно т.к. в джаве есть небезопасные операции, например взаимодействие с файловой системой.
>Я лучше буду обычные джава методы вызывать.
Я тебе еще в прошлых тредах объяснял, что твоя манясекьюрити говно. Есть тысячи разных способов запустить код в другом треде и ты никогда не можешь быть уверен, что перекрыл их все. Пэтому нормальный подход это или предполагать что код не будет специально завешивать машину, или считать что код сознательно пишется со злым умыслом принимать жесткие меры ограничению его прав. Все остальное говно и полумеры.
> Есть тысячи разных способов запустить код в другом треде и ты никогда не можешь быть уверен, что перекрыл их все.
Именно поэтому вайтлист, а не блеклист.
https://docs.oracle.com/javase/8/docs/platform/jvmti/jvmti.html#SuspendThread
>>44410
>безопасность вайтлистом
Как это вообще работает? Ты сам ручками синтаксический анализ кода делать будешь? Чет вот это еще сложнее по реализации, чем остановка потока. Реально просто хуйню делаешь и судя по тому, что за полгода нихуищи не поменялось... Ты просто нытик.
> Ты сам ручками синтаксический анализ кода делать будешь?
Есть же АСМ. Просто запретить вызовы явно небезопасных методов и оборачивать в рантайм чек те методы, что могут быть использованы в полезных целях, а могут и во вредоносных.
> и судя по тому, что за полгода нихуищи не поменялось...
Я не делаю ничего, просто размышляю. Все эти полгода был занят более важными вещами.
>Есть же АСМ.
Отлови вот это. Есть случаи еще менее явные. В любом случае это вызовет SOE, можно аллокаций тебе наделать, которые тебе память переполнят и также крашнут jvm. Не бывает безопасных методов, в правильных руках они все опасны.
>Все эти полгода был занят более важными вещами.
Чем же?
> В любом случае это вызовет SOE
И чё? Внешний тред крашнется и всё. Ровно то же самое как если бы я сам его крашнул за слишком долгое выполнение.
> можно аллокаций тебе наделать, которые тебе память переполнят и также крашнут jvm
Насколько я помню из того когда я размышлял об этом я это решил обёрткой new в кастомный аллокатор который будет подсчитывать сколько внешний код потребил памяти и при превышении лимита, в, например, 128 мегабайт тред бы киллялся, а всё лишнее собиралось сборщиком мусора.
> Чем же?
Правой дрочил, левой щекотил. Блядь, чё за тупые вопросы?
>я это решил обёрткой new в кастомный аллокатор
Ебать ты фантазер. Кастомную гц уже пишешь. Еще размер аллокаций откуда-то знаешь. И это если я все правильно помню для майнкрафта? Реально мем, его идеи.
>Блядь, чё за тупые вопросы?
Учусь у мастера
Может по делу что-то кроме смехуёчков выдавишь? Заменить new на new + икремент переменной не сложно.
int[] new = new int[9999999999999999999999] замени на i + 1.
Можно вместо 999999.. вставить рандом или еще какую-нибдуь непредскзуемую хуиту.
int value = random.nextInt(1, 9999);
ThreadAllocationLimiter.monitorArrayAllocation(INT, value); // выбрасывает ошибку если не хватает памяти
int[] new = new int[value];
Говорю, можно придумать множество способов обдурить твою систему. Подсовывать ей минусовые занчения, чтобы уходить в плюс, например, делать стримы, когда ты не сможешь впендюрится между или тип узнать.
Ну или делать аллокации объектов, размер которых ты просто не сможешь подсчитать.
Блять, вот дали человеку инструмент, который легко может ограничить потребление любых ресурсов, нееет дай я свой велосипед напишу. Хотя нет, придумаю, до реализации этот кал никогда не дойдет.
Еще кстати как варик тебе нахерачить 100500 скобочек "))))))))))))))))))))))))))))))))))))..." чтоб парсер жабовский на колени поставить.
>Именно поэтому вайтлист, а не блеклист.
1. И как ты это себе представляешь? Сам руками отсмотреть весь JDK и определить безопасные методы? Или пользователи должны тебя упрашивать разрешить вызывать очередной метод?
2. Где гарантия что ты не проебешься и не разрешишь метод который не надо?
3. Как будешь защищаться от OOM?
>>44434
>Я не делаю ничего, просто размышляю. Все эти полгода был занят более важными вещами.
Лучше бы анус дрочил.
> Подсовывать ей минусовые занчения
Фактически операция new int(-100) потратит 0 байт оперативной памяти (если перехватить ошибку инициализации массива, в противном случае пользовательский тред вообще умрёт), поэтому надо просто отредактировать аллокатор массивов так чтобы размер памяти увеличивался на Math.max(0, countedBytes);.
> когда ты не сможешь впендюрится между
Как я говорил сначала значит, кастомный аллокатор. LimitedAllocator.newArray(INT, Random.nextInt(0, 999));.
> Ну или делать аллокации объектов, размер которых ты просто не сможешь подсчитать
Конкретные примеры?
>>44498
> Еще кстати как варик тебе нахерачить 100500 скобочек "))))))))))))))))))))))))))))))))))))..." чтоб парсер жабовский на колени поставить.
ASM работает с байткодом, дебил. Скобочками ты только свой компилятор положишь.
>>44499
> Или пользователи должны тебя упрашивать разрешить вызывать очередной метод?
А как иначе?
> 2. Где гарантия что ты не проебешься и не разрешишь метод который не надо?
Гарантии безопасности нет и без запуска пользовательского кода, всегда можно добавить случайно какую-то библиотеку с аналогом log4jshell. Бекапы в любом случае нужны.
> 3. Как будешь защищаться от OOM?
Выше описал.
>Как я говорил сначала значит, кастомный аллокатор.
А ты думаешь там только лимиты? Давай еще предикат разбери, угу угу.
>поэтому надо просто
И как думаешь, сколько дыр в твоей системе? Заебешься убирать.
>Конкретные примеры?
Объект A. Или че, ты ручками будешь филды считать?
>ASM работает с байткодом
Ну т.е. тебе будут байткод высылать? Это еще больше возможностей для вставки херни.
> А ты думаешь там только лимиты?
Я на твой скрин не смотрел вообще. LimitedAllocator.newArray(INT, 50) это аналог new int[50] с ограничением. Все вызовы стримов очевидно придётся заменять на вызовы собственных стримов созданных асмом на основе обычных стримов, как и вызовы любых библиотек вообще.
Можно и по другому. Есть этот метод:
https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/ThreadMXBean.html#getThreadAllocatedBytes(long)
как прилетает куда-то ООМ, проходим по пользовательским тредам и убиваем ожиревшие.
> И как думаешь, сколько дыр в твоей системе? Заебешься убирать.
Такая проблема есть везде. Что-то программирование от этого не умерло.
> Объект A. Или че, ты ручками будешь филды считать?
Ну да, а что? Один раз же по байткоду придётся пройти. Дальше только LimitedAllocator.newObject(500 /размер высчитанный на этапе обработки/, () -> new A());.
> Это еще больше возможностей для вставки херни.
Например?
Бля, мне не нравится, это бесполезный спор, давай ты хоть что-то сделаешь, а потом будешь раскрывать свой рот. Типа у тебя все идеи заруинились еще на этапе остановки потока. А ты вот рассуждаешь, о том как ты там байткод будешь анализировать, никогда его в глаза-то не видев вероятно.
>Выше описал
Говно ты описал впрочем как обычно, а не защиту от OOM. Тебе уже выше повели пример, на тебе ещё: https://pastebin.com/FpjLXmEP
Но у меня более сложная система, поэтому, наверно, буду пробовать ByteBuddy. Еще с Groovy и Clojure не экспериментировал, может окажется проще генерить исходники под их синтаксис.
И каким хуем это что-то сломает? В один прекрасный момент в процессе создания просто создание такого объекта положит пользовательский поток лимитатором.
>>44546
Насколько я помню, + в стринг пул не ложит ничего. Только константы введённые программистом туда идут. Но даже если ложит, всегда можно заменить это на использование стринг билдера или стринг нью, которые точно ничего не ложат и отлично мониторятся уже описанным концептом лимитатора.
>>44550
На собесах все равно будут спрашивать про устройство и алгоритмическую сложность HashMap и TreeMap. Некоторая алгоритмическая подготовка все-таки нужна.
Я бы советовал освоить дискретную математику, а вот без матана и теории категорий вполне можно обойтись.
Мобилки это что, игры? Там нужен поиск пути, физический движок (обработка столкновений), может быть что-то из геометрии и матриц.
> На собесах все равно будут спрашивать про устройство и алгоритмическую сложность HashMap и TreeMap. Некоторая алгоритмическая подготовка все-таки нужна.
Это не алгоритмы, а скорее основа оптимизации кода.
>и теории категорий вполне можно обойтись.
Арррря, как жи так... Она такая красиая... Ты кстати в ней пытался разобраться?
>всегда можно заменить это на использование стринг билдера
Ну т.е. ты хочешь сделать те оптимизации, которые оракл ни шмогла полностью сделать? Попустись по амбициям.
Ну и тогда ты лимитером не сможешь проверять нормально, это ж мутабельная структура.
Также в этом примере были анбоксинг и боксинг. Он тоже как не в себя срет памятью.
>Монады - бесполезное говно для аутистов
Ты ахуел? Я тебя щас как помещу в IO, будешь знать у меня.
И вообще в теории категорий есть вот такая няшная штука https://en.wikipedia.org/wiki/Kind_(type_theory)
Если совсем вкратце, она может на уровне типов различать контейнерные объекты и простые значения. Просто уввву, представь какие паттерн матчинги можно делать~~
> Ну т.е. ты хочешь сделать те оптимизации, которые оракл ни шмогла полностью сделать? Попустись по амбициям.
Не понял, что я собираюсь сделать? Я сказал лишь заменить str1 + str2 на использование стринг билдера если там какой-то пиздец в байткоде который не является классическим new.
> Ну и тогда ты лимитером не сможешь проверять нормально, это ж мутабельная структура.
Чем мешает?
> Также в этом примере были анбоксинг и боксинг. Он тоже как не в себя срет памятью.
Ну и пусть срёт, мне-то то? Те же самые new же остаются, на которые будет навешан лимитатор.
> Я сказал лишь заменить str1 + str2 на использование стринг билдера
Ну тк блять. Я и говорю, что это оптимизация, которую оракл не полностью сделали. Значит там есть нетривиальные случаи, в которые лезть себе дороже.
>Те же самые new же остаются
Тут нет new.
Лямбды и замыкания есть в мейнстримных языках, паттерн-матчинг тоже встречается, а где эти ваши монады? Никому они за пределами хаскеля не нужны. В функциональных языках, которые имеют практичное применение (Erlang, Scala, Rust) также монад нет.
Можно придумать множество математических концепций и основанных на них ЯП, но практика критерий истины. Вот, например, Пролог, не смотря на весь хайп, оказался не нужен и тихо вымер. Настоящая математика должна оперировать с моделями из реального мира.
Знаете ли Вы, что до поражения Германии во Второй Мировой, было два вида математики, - арийская и еврейская, - названные так по национальности своих сторонников?
Арийская Математика брала пример с естественных наук, склонялась к эмпирицизму, конечности и познаваемости мира, и работала исключительно c объектами, которые можно построить физически (например, в памяти ЭВМ или на бумаге).
Еврейская Математика же слоняется к религиозной абстракции и казуистике: всеохватывающей бесконечности, множествам, и порождаемым ими апориям. Так Еврейская Математика постулирует, что можно удвоить объект, путём перекладывания его частей, пространство делимо на "бесконечно малые", а для любого числа, Бог может создать большее число (аксиома о бесконечности).
Основатель Еврейской Математики, Гидеон Кантор, писал, что работает с "Абсолютом - непознаваемым человеком Актус Пьюриссимус, именуемым многими Богом". Примечательно, что Кантор окончил свою жизнь в психиатрической лечебнице, однако дело Кантора поддержали сионистские организации и католическая церковь, доведя до того, что сознательные германские студенты и профессора протестовали, требуя убрать еврейскую заразу из ВУЗов.
После войны, евреи сделали все возможное, чтобы уничтожить Арийскую Математику, удалив ее сторонников и подменив ее Теорией Множеств - центральной опорой Еврейской Математики. Так основатель интуиционизма, Лёйтзен Брауэр, подвергся изоляции, а результаты Русских и Английских финитистов умалчивались и не получили распространения. В русской истории от рук евреев пострадали математики Егоров (умер в гулаге), Лузин (подвергся травле и был отстранен), Флоренский (расстрелян), Есенин-Вольпин (репрессирован).
Сегодня математика стала еврейской даже по-цвету. Государства поддерживают так называемую "анти-расистскую математику", требующую например использовать еврейские имена в примерах и задачках, рассказывая при этом о великом "вкладе" еврейства в развитие математики.
Евреи, занимающиеся математикой, предпочитают всё специфическое-эльфийское. Причём презирают тех, кто занимается вещами, имеющими практическое применение. Поэтому в Советском Союзе вышел закон, по-которому в ВУЗах должно учиться евреев пропорционально их населению. Лишних отчисляли. Преподаватели евреи на мехмате в знак протеста ушли из университета и образовали НМУ (Независимый Московский Университет). Отсюда и название в мехматянском простонародье ``еврейская секта''.
Еврейские дети в СССР часто учились отдельное от детей гоев, в специальных элитных школах. Одной такой была Московская 57-й спецшкола, ученики которой не без оснований называют себя "пятидесятисемитами". Там часто преподавали выдающиеся преподаватели с мехмата.
В основании математики последнего столетия лежит знаменитая теория множеств Георга Кантора. Если вы откроете большую часть современных серьезных учебников математического и функционального анализа или топологии, или теории вероятности, то в начале почти наверняка увидите экскурс в теорию множеств. Почти вся современная математическая литература написана на теоретико-множественном языке. Камень теории множеств лежит в основании грандиозного здания современной науки.
Но в самом сердце этой самой фундаментальной вроде бы теории, лежащей в основе "царицы наук", почти сразу после ее создания были обнаружены очень серьезные парадоксы и проблемы, не преодоленные до сих пор. Уже сто лет с тех пор математика находится в состоянии перманентного кризиса, который остро воспринимается самыми выдающимися учеными. Великий немецкий математик Герман Вейль писал по этому поводу: "Мы менее чем когда-либо уверены в незыблемости наиболее глубоких оснований логики и математики. Как у всех и всего в мире, сегодня у нас есть свой кризис".
Математика говорит, что у шпекеровой последовательности есть предел? Говорит. Практика говорит, что его нет? Тоже говорит. Математика говорит, что апельсин можно удвоить путём перекладывания его частей? Говорит. Удалось кому-нибудь с новозаветных времён повторить эту процедуру? Наблюдения раз за разом показывают, что при такого рода операциях закон сохранения вещества неукоснительно соблюдается. Математика предсказывает наличие в бесконечномерном гильбертовом пространстве базиса Гамеля. Наблюдать оный пока вообще никому не удалось. Так что математика - именно лженаука, и никак иначе.
Именно уверенность в нематериальности математических объектов влечёт за собой веру в возможность "приближённых" вычислений (что чушь - вычисления бывают либо точные, либо неверные). Да, самолёты летают и при засилье Теории Множеств. Но если бы математика была конструктивной, они летали бы лучше, потому что конструкторы не забивали бы себе голову теоретико-множественным мусором, на практике бесполезным и дезориентирующим.
Аксиомы имеют смысл только тогда, когда они выражают свойства объективно существующих предметов. Так, если мы введём аксиому "на каждой руке человека содержится 3.1415… пальцев" и построим на базе этой аксиомы формальную теорию, то положения этой теории будут бессмысленны и даже вредны.
Лямбды и замыкания есть в мейнстримных языках, паттерн-матчинг тоже встречается, а где эти ваши монады? Никому они за пределами хаскеля не нужны. В функциональных языках, которые имеют практичное применение (Erlang, Scala, Rust) также монад нет.
Можно придумать множество математических концепций и основанных на них ЯП, но практика критерий истины. Вот, например, Пролог, не смотря на весь хайп, оказался не нужен и тихо вымер. Настоящая математика должна оперировать с моделями из реального мира.
Знаете ли Вы, что до поражения Германии во Второй Мировой, было два вида математики, - арийская и еврейская, - названные так по национальности своих сторонников?
Арийская Математика брала пример с естественных наук, склонялась к эмпирицизму, конечности и познаваемости мира, и работала исключительно c объектами, которые можно построить физически (например, в памяти ЭВМ или на бумаге).
Еврейская Математика же слоняется к религиозной абстракции и казуистике: всеохватывающей бесконечности, множествам, и порождаемым ими апориям. Так Еврейская Математика постулирует, что можно удвоить объект, путём перекладывания его частей, пространство делимо на "бесконечно малые", а для любого числа, Бог может создать большее число (аксиома о бесконечности).
Основатель Еврейской Математики, Гидеон Кантор, писал, что работает с "Абсолютом - непознаваемым человеком Актус Пьюриссимус, именуемым многими Богом". Примечательно, что Кантор окончил свою жизнь в психиатрической лечебнице, однако дело Кантора поддержали сионистские организации и католическая церковь, доведя до того, что сознательные германские студенты и профессора протестовали, требуя убрать еврейскую заразу из ВУЗов.
После войны, евреи сделали все возможное, чтобы уничтожить Арийскую Математику, удалив ее сторонников и подменив ее Теорией Множеств - центральной опорой Еврейской Математики. Так основатель интуиционизма, Лёйтзен Брауэр, подвергся изоляции, а результаты Русских и Английских финитистов умалчивались и не получили распространения. В русской истории от рук евреев пострадали математики Егоров (умер в гулаге), Лузин (подвергся травле и был отстранен), Флоренский (расстрелян), Есенин-Вольпин (репрессирован).
Сегодня математика стала еврейской даже по-цвету. Государства поддерживают так называемую "анти-расистскую математику", требующую например использовать еврейские имена в примерах и задачках, рассказывая при этом о великом "вкладе" еврейства в развитие математики.
Евреи, занимающиеся математикой, предпочитают всё специфическое-эльфийское. Причём презирают тех, кто занимается вещами, имеющими практическое применение. Поэтому в Советском Союзе вышел закон, по-которому в ВУЗах должно учиться евреев пропорционально их населению. Лишних отчисляли. Преподаватели евреи на мехмате в знак протеста ушли из университета и образовали НМУ (Независимый Московский Университет). Отсюда и название в мехматянском простонародье ``еврейская секта''.
Еврейские дети в СССР часто учились отдельное от детей гоев, в специальных элитных школах. Одной такой была Московская 57-й спецшкола, ученики которой не без оснований называют себя "пятидесятисемитами". Там часто преподавали выдающиеся преподаватели с мехмата.
В основании математики последнего столетия лежит знаменитая теория множеств Георга Кантора. Если вы откроете большую часть современных серьезных учебников математического и функционального анализа или топологии, или теории вероятности, то в начале почти наверняка увидите экскурс в теорию множеств. Почти вся современная математическая литература написана на теоретико-множественном языке. Камень теории множеств лежит в основании грандиозного здания современной науки.
Но в самом сердце этой самой фундаментальной вроде бы теории, лежащей в основе "царицы наук", почти сразу после ее создания были обнаружены очень серьезные парадоксы и проблемы, не преодоленные до сих пор. Уже сто лет с тех пор математика находится в состоянии перманентного кризиса, который остро воспринимается самыми выдающимися учеными. Великий немецкий математик Герман Вейль писал по этому поводу: "Мы менее чем когда-либо уверены в незыблемости наиболее глубоких оснований логики и математики. Как у всех и всего в мире, сегодня у нас есть свой кризис".
Математика говорит, что у шпекеровой последовательности есть предел? Говорит. Практика говорит, что его нет? Тоже говорит. Математика говорит, что апельсин можно удвоить путём перекладывания его частей? Говорит. Удалось кому-нибудь с новозаветных времён повторить эту процедуру? Наблюдения раз за разом показывают, что при такого рода операциях закон сохранения вещества неукоснительно соблюдается. Математика предсказывает наличие в бесконечномерном гильбертовом пространстве базиса Гамеля. Наблюдать оный пока вообще никому не удалось. Так что математика - именно лженаука, и никак иначе.
Именно уверенность в нематериальности математических объектов влечёт за собой веру в возможность "приближённых" вычислений (что чушь - вычисления бывают либо точные, либо неверные). Да, самолёты летают и при засилье Теории Множеств. Но если бы математика была конструктивной, они летали бы лучше, потому что конструкторы не забивали бы себе голову теоретико-множественным мусором, на практике бесполезным и дезориентирующим.
Аксиомы имеют смысл только тогда, когда они выражают свойства объективно существующих предметов. Так, если мы введём аксиому "на каждой руке человека содержится 3.1415… пальцев" и построим на базе этой аксиомы формальную теорию, то положения этой теории будут бессмысленны и даже вредны.
Раст вообще не фп язык.
На счет скалы.. https://www.javadoc.io/doc/org.typelevel/cats-docs_2.13/latest/cats/Monad.html
Про эрланг хз, в любом случае монада это всего лишь очень абстрактный интерфейс, реализация которого есть.. Только не сильно удивляйся... в жабе.
И я не очень понимаю, почему ты про монады начал... Теория категорий вообще не про них. Это всего лишь маленькая часть. Я вот тебе kind-ы скинул, прочитал хоть?
>В один прекрасный момент в процессе создания просто создание такого объекта положит пользовательский поток лимитатором.
Как твой хуетатор будет считать сколько зааллоцировал в байтах поток, и сколько из этого объема live set?
В джаве, императивном языке где нет do-нотации, пользы от того что это монады (что кстати не совсем правда, но похуй) мало.
>>44670
Блять, что за шизу я щас тока что прочитал... Один абзац про монады, разбавленный полотнищем отборной мкаксимально ебанутой демагогии. Ты че - фрик?
>В функциональных языках, которые имеют практичное применение (Erlang, Scala, Rust) также монад нет.
Пиздишь
Ты внутри valueOf посмотри.
>нет do-нотации
Вот кстати большое упущение. Там брайн гетц не планирует ее внедрить? А то он любит всякую фп хуйню тащить.
>В джаве, императивном языке где нет do-нотации, пользы от того что это монады мало
судя по https://en.wikibooks.org/wiki/Haskell/do_notation
это просто сахар над несколькими действиями. Без саха польза явно не исчезает
А где освобождение памяти учитывать?
Мне кажется если вместо Optional возвращать nullable значения, на яве попроще будет. Обычный map вместо flatMap можно будет использовать.
У тебя там пук-среньк, а не объяснение. Сколько занимает весь объект с графом зависимостей не понять пока все зависимости не будут инициализированы. Если считать без них, то https://pastebin.com/FpjLXmEP объект будет header + 40 байт. Перехватывать все new можно, но внезапно некоторые классы из коры имеют интризики которые заменяют new на нативный код. Трэд аллокейшен не учитывает сколько отправится в мусор.
В целом это пустой разговор. Напишешь код - обоссым и докажем, что ты облажался по полной, а так тебе доказывать бесполезно, ты слишком тупой.
>если вместо Optional возвращать nullable значения
Чет мне не кажется, что станет сильно проще. Это или ручками придется проверять/оборачивать в опшионал.
Хотя мб я не понял идею, можешь продемоснтрировать, елси не против, вот код: https://pastebin.com/qg3EN02t
> из коры имеют интризики которые заменяют new на нативный код.
АСМ, ещё раз, работает поверх байткода. Не поверх исходного кода и не поверх того что жид высрет.
> У тебя там пук-среньк, а не объяснение. Сколько занимает весь объект с графом зависимостей не понять пока все зависимости не будут инициализированы.
Тебе ещё раз повторить что это и не нужно и если объект слишком жирный будет вылет в процессе его инициализации?
Уууу, ленивец.
Если так, то типа не особо короче, ну и безопасность методов пропала...
И еще чет мне подсказывает, что если я эти map/flatmap в проде писать буду, меня нахуй пошлют..
Я запутался в твоих обозначениях, но по моему тебе нужен Optional::stream или Stream::reduce
Кек
А это ДРУГОЕ, причем у ГО-сектантов - это нормальная и постоянная практика абсолютно.
ГЦ джаве - тормознуто и медленно, но в го - это перформанс и удобство
Джава занимает 300 МБ джарник - фу, но скомпиленый го бинарник 100+ МБ - это совсем другое, только выиграли!
Хайлевельные фреймворки на го - это уверенность, перформанс, удобство, но спринг - это фу, блоатваре и легаси.
Компиляция - это круто, но ГраальВМ для джавы - это фигня
Язык с набром фич как у бейсика - это круто, го "не пытается быть умным", "вместо новых фич - просто напиши больше кода!", но когда чего-то нехватает у джавы, при том что фич-то в ней больше чем в го начиная наверное с Java 1.4 - так это язык "невыразительный", "скучный", "многословный".
Тот код, который в джаве считается легаси-лапшой, в го это уже свободный от лишних абстракций и интуитивно понятный!
А такие переобувки постоянно происходят, когда гоферы рассказывают про преимущества го
>Хайлевельные фреймворки на го - это уверенность, перформанс, удобство
Вот это как раз наоборот, насколько я знаю. У них там ни одного вменяемого фреймворка нет, только либы.
Это стандартные мантры гошников, которые проецируют свой манямирок на реальность
https://github.com/uber-go/fx
https://github.com/google/wire
Ноуп. Я тоже так раньше считал, но в целом и общем спринг раздает говна и причем хорошо. Единственная как по мне его проблема это монстроподобная конфигурация и достаточно болезненный процесс миграции.
Ну не знаю, у меня чистый спринг бут на домашней машине стартует за 4 секунды. У баелдунга в бенчмарке за 2 https://www.baeldung.com/spring-boot-vs-quarkus
Для большинства применений это норм, не скорость света конечно, но и не тормозная хуйня. Тем более с учетом того, что например в микросервисах, где так важен этот стартап тайм, скейлинг в основном происходит через rolling update стратегию, то есть на все время старта еще будут живые сервисы, принимающие траффик.
Есть вот такая штука https://github.com/chromiumembedded/java-cef от жетбрейнс, рендеринг вебвью в джаве, можешь попробовать, но по-моему на свинге куда проще.
Для старообрядцев есть SWT https://www.eclipse.org/swt/examples.php
.php - КАРЛ
Для пориджей есть Compose https://www.jetbrains.com/lp/compose-multiplatform/
но там только Котлин
Для вротэндеров можно скрестить Электрон и Джаву https://github.com/jreznot/electron-java-app
Наверное само основном что может вызывать проблемы - это неравномерная нагрузка, сочетаемая с маленькими лимитами пода. Т.к. на запуске спринг резко требует очень большое количество ресурсов, а потом - практически ничего, то тут либо ставить большие лимиты и держать впустую вычислительную мощность 99% времени, либо ставить маленькие лимиты и тогда старт будет ужасно долгим.
>Тебе ещё раз повторить что это и не нужно и если объект слишком жирный будет вылет в процессе его инициализации?
Ты слишком тупой, чтобы понять что тебе пишут. ВНЕЗАПНО, инициализация это просто вызов метода, Никак не отличимый от любого другого. Ты можешь вообще всю логику программы в new засунуть. У тебя просто вызывается метод за методом, и что-то там аллоцируется. Если мерять все аллокации то свалится код который аллоцирует много временных объектов и поэтому надо понять, размер live set.
При этом ты достаточно умный, чтобы понять что идея говно полное и даже не пытаешься её реализовать. Потому что понимаешь, что ты обязательно обосрешся.
>>то есть на все время старта еще будут живые сервисы, принимающие траффик.
Скейлинг это не про апдейт, а как при живых 10 сервисах поднять еще 100 дополнительных, чтоб переварить внезапный трафик.
Это проблемы облакодебилов с дорогущими тарифами и в РФ не особо актуально.
>Это проблемы облакодебилов с дорогущими тарифами и в РФ не особо актуально
Это кто там крякает? Кубернетисодебил, ты? И чё ты скажешь что ку-ку-кук-бернетис дешевле облаков? Да ладно?
>но спринг - это фу, блоатваре и легаси.
Спринга на го нет лишь потому, что гоферы его еще не написали. Все будет, лол.
2) не будет ли совсем плохо, если графический интерфейс будет реализован через c++/qt посредством нативных методов?
1) Новые - редко, но до сих пор встречаются десктопы на свинге в поддержке, от которых заказчик не хочет отказываться.
2) Звучит как грязная авантюра, я бы не стал.
Бэкенды всех мастей
>2) не будет ли совсем плохо, если графический интерфейс будет реализован через c++/qt посредством нативных методов?
Уже есть SWT, там именно такой подход. Ну только внизу не qt, а нативные компоненты.
>1) Используют ли сейчас java для создания приложений для десктопа?
Да, ~75% пользователей ИДЕ сидит на джавовском UI.
Для приложений на основе эклипса есть целый раздел на вики https://en.wikipedia.org/wiki/List_of_Eclipse-based_software
Arduino IDE ( и его родитель Processing IDE ) - все джава. Ну интеллиджи ты наверное знаешь.
>2) не будет ли совсем плохо, если графический интерфейс будет реализован через c++/qt посредством нативных методов?
ну как сказать, это просто излишняя сложность. Если уж хочешь QT - пиши все на QT. Если хочешь Java - пиши на свинге. Если можешь обойтись без интеропа - обходись, так везде и всегда.
В джаву 23, кстати, завозят генеративный згц. Анало говнет ни в одном другом языке. Помнится мне как гоферы постили как у них с каждой обновой паузы гц становились всё меньше и меньше, так эти паузы даже самого последнего обновления го даже рядом не стояли с згц даже самого первого образца. А теперь ещё и згц избавляется от своей главной проблемы — не самой высокой пропускной способности.
> ВНЕЗАПНО, инициализация это просто вызов метода,
Угу, а сама jvm, прочитав байткод, в котором нет информации о том, когда аллоцировать, а когда нет, с божьей помощью аллокацию производит. Что-нибудь по делу вообще высрешь?
> Ты слишком тупой, чтобы понять что тебе пишут.
> При этом ты достаточно умный, чтобы понять что идея говно полное и даже не пытаешься её реализовать. Потому что понимаешь, что ты обязательно обосрешся.
А, ну понял, не высрешь. Слив принят.
Если тебе чисто нехитрую форму наклепать без всякого охуения - свинг бери. Тупо универсальнее. Чтобы все остальное работало - надо тягать свои либы под разные системы и битности. А свинг тупо работает абсолютно везде где есть JRE.
Ну вообще свинг на нем базируется, так что хочешь не хочешь, но так или иначе столкнешься с авт. Если конечно нужны кастомные элементы.
>Угу, а сама jvm, прочитав байткод, в котором нет информации о том, когда аллоцировать, а когда нет, с божьей помощью аллокацию производит.
Ты просто тупой и не понимаешь простейших вещей. JVM не надо понимать сколько займет тот или иной объект после полной инициализации. Она просто выделяет память и собирает мусор, а когда память заканчивается кидает ООМ. Тебе же надо понять сколько займут живые объекты созданные потоком, а это совсем другая задача.
>А, ну понял, не высрешь. Слив принят.
Пиздабол, ты уже который тред засираешь своей шизой, и при этом не написал ни строчки говнокода.
Приблизительно оценить достаточно легко даже на этапе компиляции/обработки, ещё раз.
>Приблизительно оценить достаточно легко даже на этапе компиляции/обработки, ещё раз.
Ну так давай, показывай код! Накидаем тебе хуёв полную панамку.
Ничего пока не писал.
Какой самый интересный проект вы писали?
Прикольно, уже почти всё из шарпа спиздили. Кортежей и деконструкции ещё не хватает.
https://foojay.io/today/getting-started-with-bld/
Охуенно. Теперь можно билдить с помощью блдь и какой-то матери.
Не заслужили?
Врапперы блядь, теперь эти грэдловские костыли повсюду
Танчики на Java ME.
Распределенный сверхскоростной поисковой движок
Непонятно только зачем это, я и для мавена могу плугин на джаве написать, а распространенность у него куда больше
В чем вообще сакральный смысл использования кортежей?
Я же правильно понимаю, что вы про это.. https://en.cppreference.com/w/cpp/utility/pair
Типааа, я даже в cpp это говно не юзаю, поскольку ты стираешь инфорамацию, а че ты там в first положил, а че в second. Проще уж объект создать.
Вернуть несколько значений из метода.
Составной ключ для хэшмэпа.
С деконструкцией можно делать своп (а, б) = (б, а)
>вернуть несколько значений из метода
Боже, какие же шарподауны дегенераты. Пока им не завезут конкретную синтаксическую конструкцию под конкретную задачу даже учитывая что эту конструкцию можно заменить простым классом/методом они не начнут программировать. Воистину необучаемое племя.
Дебилизм. На каждый шаг разворота делать инстанс оф? Это же пиздец непроизводительно.
>Вернуть несколько значений из метода.
Опять же, объект.
>Составной ключ для хэшмэпа.
Че?
>С деконструкцией можно делать своп (а, б) = (б, а)
Звучит бесполезно, если честно.
Кстати, а у вас в шарпике есть такая няша как zip/unzip? А, ну и возможность работать с кортежами через pattern matching, ну т.е. вот в методе напрямую именовать fst и snd, как вот у меня в начале x и y сделан.
Дебилизм какой-то. Продвинутые системы сборки потому и используют блядь потому что им нужны продвинутые фичи, а не простота. Вот облегчили бы как-нибудь архетипы мавена (идея хорошая, но времени всё равно много тратится), вот это было бы дело. А этот блдь это какое то бешенство с жиру.
Ни в чем, кроме охуения от использования математически концептов в програмировании (туда же монады, комбинаторы, каррирование и т.д. и т.п.)
>Типааа, я даже в cpp это говно не юзаю, поскольку ты стираешь инфорамацию, а че ты там в first положил, а че в second.
Все так, но так как в джаве этого нет - значит это плохо. Хорошо только когда этого нет в го. Тут понимать надо.
Вероятно может быть бенефит в переиспользовании объектов, в меньшем мемори футпринте и т.д. но это всё очень пограничные случаи.
Имхо основная плюшка - это деструкция, а она уже в джаве есть, да и то это просто сахарок
>Вернуть несколько значений из метода.
Так это же record'ы? И деконструкция возможна. Полная функциональность кортежа.
Виртуальная файловая система, которая хранит данные в памяти или файле.
>>Вернуть несколько значений из метода.
>Опять же, объект.
Это надо класс декларировать. Бойлерплейт, стало быть.
>>Составной ключ для хэшмэпа.
>Че?
Капчё. Например, хэшмэп шахматных фигур. Координаты - ключ, фигура - значение.
>Кстати, а у вас в шарпике есть такая няша как zip/unzip?
Zip есть. Прямо так и называется.
Unzip через SelectMany (проекция в коллекцию + уплощение)
>А, ну и возможность работать с кортежами через pattern matching, ну т.е. вот в методе напрямую именовать fst и snd, как вот у меня в начале x и y сделан.
Мне надо бежать, я попозже гляну, что ты имеешь в виду.
>это надо класс декларировать
>public record Result(String foo, int bar) { }
Ух, как сложно! А ещё сложно тип переменной писатью! Похуй что без декларации и того и другого не понятно, что код делает/возвращает, переходим на динамикодрисню, так короче!
>НО ВИТЬ МОЖНО УПИСАТЬСЯ ВЖЖЖОЛЬ И ПОПЕРЁК КОММЕНТАРИЯМИ, ЧТОБЫ КАЖДЫЙ РАЗ ПРЫГАТЬ В СУРСЫ И ЧИТАТЬ НИ КАПЕЛЬКИ НЕ БОЙЛЕРПЛЕЙТ НАТУРАЛЬНЫЙ ЯЗЫК КОТОРЫЙ ДАЕТ ЗНАТЬ ЧТО ЭТО КОММЕНТАРИИ ВООБЩЕ ЗНАЧАТ!
>А, ну и возможность работать с кортежами через pattern matching, ну т.е. вот в методе напрямую именовать fst и snd, как вот у меня в начале x и y сделан.
Не, я так и не понял, что ты имеешь в виду. А ты меня про своп не понял. Смысл не в том, что функцию можно опередить, а в том, что можно написать (a, b) = (b, a), и у тебя значения переменных а и b поменяются местами. Они, конечно, должны быть одного типа.
>>48018
Если тебя бойлерплейт не смущает, то не ной больше про гетсет.
Да расслабся ты, тут нет перфоманс инжынеров.
Смари, можно легко сделать из этой коробки односвязный список. Как думаешь, норм на собесе такое написать?)
>>48036
>что можно написать (a, b) = (b, a),
Фу... Мутабельность
>Не, я так и не понял, что ты имеешь в виду.
Ну вот это, написать прям в методе. Как на пике 2 крч.
НАХУЯ, ВОТ НАХУЯ ТЫ ПЕРЕНЁС СВИТЧ НА ДРУГУЮ СТРОКУ???????????!??:!:?:?!?"!"?!"?!?!?!"?""?(!?"№("?№()!"№?;У З(8123
>>35222 (OP)
ка
Это шарп. У меня ж есть возможность потыкать много языков..)
>case throws
Нихуя себе, это правда джава? Я только что думал о том как бы было хорошо иметь подобное в джаве.
Ля, ну не душни. Ты кстати заметил, что он полиморфен?
Вот тебе задача, как еба инжинеру, сделай его мономорфным.
Проще говоря, чтобы низя было сделать такое [1,"2", 3]
Ну это база. Жаль что завезут, если завезут, к джаве 26-27 в лучшем случае и в превью.
Нууу, расстроюсь, наверное, хызы.
Мне просто интересна было, а вомзожно ли это вообще. Как видно, йеп. Вообще система типов вещь интересная...
На самом деле в первом случае у тебя получился самый настоящий тайп-сейф тупль с неограниченным количеством значений, я сейчас подумал. Там по идее никаких тайпчеков не будет, всё будет в компайл тайме. Только вернуть его не получится из метода потому что придётся называть весь его состав, вар же не работает для типа возврата.
Ммм.. Не оч понел, что ты имеешь ввиду. Если нужен тайпчек, нужно еще рекурсию небольшую типовую задать..
https://in.relation.to/2024/04/01/jakarta-data-1/
https://in.relation.to/2024/04/18/jakarta-data-1/
Кроме тебя и пары инвалидов жуком не пользовались. Ты хоть покажи конкретно где.
Еще тут вроде написано, что жук устарел..
Там же был и есть
Java Persistence Query Language (JPQL) — платформенно-независимый объектно-ориентированный язык запросов, являющийся частью спецификации Java Persistence API (JPA)
Это как го, но только еще удобнее!
зачем создавать 100500 языков, разница между которыми только в имени?
>он вводит возможность обрабатывать исключительные ситуации, в том числе неожиданные исключительные ситуации
Wut? Так это и в жабе можно легко. Ловишь Exception и сидишь пукаешь что там.
>а так же явным объявлением заставлять программиста обрабатывать ожидаемые ошибки при вызове функции
Wut^2? Изобрели checked exceptions? Ну единственное что там можно типа swith-case сделать по коду ошибки.
хуй знает чем ты читаешь. Там написаны сопли и эмоции отдельного пориджа, неосилившего типы языка. Jooq он там никак не выделяет на фоне остальных построителей запросов.
Смотрел letscode, но вроде всё уже устарело и как то не особо понятно "зачем он это делает, почему"
Опыт в java, kotlin есть, нужен только спринг (в т.ч. спринг микросервисы и спринг реактив)
Опять этот даун пиарит свою проприетарную нн-парашу.
Проиграно.
>тут нет перформанс инженеров
Не был бы я перформанс инженером, я бы не задумался на автомате о том, что ты выдавил низкопроизводительный кал.
>Если тебя бойлерплейт не смущает, то не ной больше про гетсет.
Комментарии уже все написал, безбойлерплейтовый?
Знакомо?
Преждевременная оптимизация — корень всех зол?
Так вот, у меня цель понять границы exhaustive у паттернов, а не написание эффективного листа. Скажу так, уже писал - это скучно.
Так что, вот лучше доебуйся до коллег использующих спринг.
Кодогенерацию из джука спиздили, репозитории из спринг даты.
Сложно не быть знакомой с этой мантрой которой говнокодеры оправдывают свой говнокод.
Нууу, в любом случае мой реальный код ты не видел... По крайней мере O(n^2), когда можно линейный я не делаю. А вот сидеть дрочится, а вдрууг эти instanceof будут боттлнеком, хотя они в любом нормальном equals есть, может и сравнения не делать в таком случае, хули нет. Вот короче будут, тогда и приходите..)
Да почитай книгу spring in action и все. Только то издание, где еще спринг бут не доминирует, 4 что ли.
Хорошо, спасибо
Я недавно смотрел как шарпомухи чекед эксепшены изобретали, само собой получилось получилось говейно.
>>а так же явным объявлением заставлять программиста обрабатывать ожидаемые ошибки при вызове функции.
Через 5 итераций придумают аналог @SneakyThrows
>>Опыт в java, kotlin есть, нужен только спринг
Это где ты работал с джавой, но без спринга?
Я такое конечно встречал в вакансиях, но там всегда какой нибудь велосипед со вкусом спринга с аннотациями идентичными натуральным.
Таким дебилам как ты, Шипилёв давным-давно сказал: что оптимизация без бенчмарков - говно без задач. Бенчмарков, ты пока не предоставил.
очевидные мобилки
Писал под мобилки
Чел говорит что это не трай кетч, точно не трай кетч, но я чета не пойму в чем разница.
Ну единственное что я вижу - это то что эта штука не разворачивает стэк, то есть быстрее
+ объекты ошибок не создаются, а по сути существуют всегда одни и те же
Но опять же такое можно симулировать в джаве
Накинь лучше за воротник.
>Фу... Мутабельность
У чела в оригинале хаскель. Он ничего там не мутирует, просто делает новый кортеж из старого путем перестановки, и попутно флюродросит на паттерн матчинг риальных пацанов, а-не-вот-это-вот-недоразумение-джавовое. Есть такая порода разрабов, которые вроде неглупые ребята - любят новые штуки изучать, самообразовываться, но никак смириться не могут что мир несовершенен, джава - не хаскель, никогда им не будет, и покодить декларативно в чистом функциональном стиле им на проде врядли когда либо доведется (ничего против хаскеля и ФП не имею, но мир устроен так, а не иначе, сорян).
Пройдет свои юношеские пять стадий принятия и остепенится.
я одному такому сказал, что не получилось всех перетащить на хаскель (скалу), теперь из джавы делают хаскель. Он наверно подумал что я быдло
>Как быстро вкатится в Java ?
Писать много реальных проектов.
>можно тратить по несколько дней, так никуда и не продвигать
Должно пожаловать в реальное программирование. Да, часто так и происходит. Ты сидишь на какой-то мелкой хреновиной и несколько дней думаешь.
> Должно пожаловать в реальное программирование. Да, часто так и происходит. Ты сидишь на какой-то мелкой хреновиной и несколько дней думаешь.
Либо у меня задачи какие-то неправильные, либо ты тупой. Если меня что-то в программировании и блокирует, так это баги, но в последнее время и они имеют свойство разрешаться за несколько часов.
Скорее всего у тебя какие то задачи типовые, либо ты не работаешь с легаси.
А что, в асп коре есть предсборка образа как в кваркусе?
Короче, сделаю все сам и закину пулл реквест в ждк, пусть дальше думают.
Binding нахуй правильно, это сложная тема. А вот парсинг со StAX-апи для чтения был бы к месту, мне кажется. Поверх уже можно все что угодно воротить.
Но я уже отказался от этой идеи, название, которое я хотел использовать, уже занято.
>А вот парсинг со -апи для чтения был бы к месту, мне кажется. Поверх уже можно все что угодно воротить.
Ты много видел парсинга JSON хотя бы в JsonObject? Сейчас 99% это парсинг в некий DTO. Ебаться с StAX никто не хочет.
https://github.com/javalin/javalin - вот что больше всего подходит под твоё описание, предельно минималистичный фреймворк, никаких конфигов, 7.3k звёзд , вся либа 760кб, просто в main методе создаёшь сервак и вперед
Да похуй на питон, ты в Java много парсинга в Map видел? У тебя все современные библиотеки сразу предлагают парсть в DTO. Желающих ебаться с Map - нет.
Только потому что этого парсинга в Мап нет. А для быстрых набросков и утилит в 1 класс такой парсинг был бы самое то
Теперь сам вопрос: можно ли сделать расширение класса B в виде класса C так, чтобы field уже имел другой тип?
Нет ли аналогии @Override для полей?
> класс A содержит puclic/protected поле field
Поехавший, нахуа ты тащишь поля в родительский класс, чтобы их переопределять в детях?
можно через дженерики легко https://pastebin.com/awAwv1sg
>аналогии @Override для полей
если попробовать объявить в дочке поле с тем же именем, то в супере оно не затронется. гугли динамическое связывание.
>Только потому что этого парсинга в Мап нет
Если ты ниасилил вбить один запрос в гугл, это не значит, что нет.
Вьеби логики. Посмотри на твой расклад глазами коллера и сразу поймешь, почему такое не просто не реализовано - оно невозможно и противоречит здравому смыслу.
У тебя B - наследник A. Следовательно, B может быть подставлен аргументом в любой метод, где агрументом ожидается A. А теперь ответь на вопрос - что прикажешь делать нижеследующему методу, если вызвать его с аргументами типа B (или C extends B, неважно), у которых field больше не Integer?
Integer sum(A a, A a2) {
return a.field + b.field;
}
Отчасти, только в скоупе класса С, это называется field shadowing, но для кода в родительских классах тип останется тем же
Чтобы подключил двумя строками коробочное решение и забыл.
Подскажи, а?
Не коробочное решение(нет словаря), с кучей ложных срабатываний. Например, что останется от строки "Застрахуй команду корабля со скипидаром" после такой фильтрации?
Лучше варианты есть?
Молодец!
А по практике - ну собственно только практикой это и решается. Пили проект, где сам вручную обрабатываешь общие данные в несколько потоков, попытайся продумать какие проблемы могут возникнуть из-за гонок доступа к данным. Посмотри от чего защищают синхронайзеды, сымитируй, посмотри чем они плохи, как можно улучшить.
Посмотри от чего защищают локи, волатайлы, атомики и попытайся сымитировать эту ситуацию. И так далее.
хуйню какую-то насоветовал, даже jcstress не упомянул. впрочем многопоток крайне редко встречается, имею ввиду, что этим репозитории занимаются. К примеру, вообще не всем очевидно, что простое чтение volatile обеспечивает ровно те же гараниии по видимости, что и лока.
Практически само пришло. Видел, как используют классы многопоточной либы, читал их доку, начинал сам использовать.
какая бутылка, ты про что?
>а по сабжу, как анон учился использовать многопток?
Хуй знат. Совет, который дадут 90% людей (в целом годный), это java concurrency in practice. Лично я вдовесок знаю неплохой курс заточенный под конкретно многопоточку джавы. Все вышеперечисленное поможет проходить собесы, но все же реальное понимание приходит тогда, когда выпадает решить какую то реальную практическую задачу. И вот с этим сложно. Редко выпадает такая возможность.
Анон. ты понимаешь что значит готовое решение?
Я не хочу пердолиться с регэкспами, искать справочник матов, дебажить это все, тестировать разные строки, фиксить ебучие "скиПИДАРы" и вот это вот все.
Весь интернет решает подобную задачу для своих целей, и что, у всех свои велосипеды?
Вы там совсем ебанутые чтоли?
>Он ничего там не мутирует, просто делает новый кортеж из старого путем перестановки
(a, b) = (b, a)
Вне мутабельных языков не имеет смысла жи.
>джава - не хаскель, никогда им не будет
Ну нинаю, пока я смотрю, жаба много чего позволяет. Мне женерики все больше и больше нравятся, вот например на пике карринг и композиция сложная.
>Пройдет свои юношеские пять стадий принятия и остепенится.
Ну хто знает, хто знает. Посмотрим!
Полная противоположность final. Мол может быть любое количество наследников. Хз почему это надо явно указывать, мб там sealed бай дефолт.
>>53714
Можно делать пайплайны функций с любым количеством аргументов же(пик1).
Я вот например пиздец как бугуртил, что шарпомухи не додумались у своих делегатов до банальной композиции(пик2). Смысл от этой хуйни ихней мне вообще не ясен после...
Хотя вот еще один пример, где у BiFunction нельзя просто взять и применить andThen, требуется явная лямбда, а значит и указание типов ручками.
Вообще теоретически, на жабе тоже можно сделать функции из составных композиций, как вот видно на хаскеле это j и u, нооо, т.к. переменные не могут содержать полиморфные типы, это невозможно без явного создания методов и вывода типов, впрочем главное, возможность имеется..
О, а что за курс?
Комплитабл фьюче и прочие реактивные стримы - это самое простое что есть в джавовом конкарренси. Если освоил материал из книги - в остальном легко разберешься.
>Вне мутабельных языков не имеет смысла жи.
И тем не менее у тебя там хаскельный ghci в качестве референса.
>на пике карринг и композиция сложная
В карринг я помню джаваны еще на заре выхода восьмерки игрались, когда лямбды со стримами появились. В те времена по рукам еще ходила серия статей с DZone от разочаровавшихся функциональщиков, под заголовком чето типа "Джава - это вам не Хаскель". Найду - запощу: интересное чтиво для своего времени.
Короче - это все игрушки. Пока ты сидишь и дрочишь кошек, оно выглядит перспективно, а как в прод потащишь, быстро прочувствуешь на себе корнер кейсы, где по тебе ебнет и карринг твой, и дженерики.
>Весь интернет решает подобную задачу для своих целей, и что, у всех свои велосипеды?
Ды какбэ - да. Первый раз чтоли?
А прикинь - опенсорснешь ты такой фильтр, а школота получив такой лютый инсайд для его обхода, начнет его арбузить. И все.
>на заре выхода восьмерки игрались
Блиин, мне тогда и 10-то не было.
> а как в прод потащишь
Хмм, ну мокито по крайней мере много всякой магии женериковой взяло.
Особенно мне нравица coerce, типаа когда return тайп определяется по женерику, это все настолько няшно, что будто дслка.
В любом случае я пока не работаю, так что лучшее время всякую всячину поизучать.
>Найду - запощу: интересное чтиво для своего времени.
Оки, можно будет перепосчивать, как с тюринг полными женериками)
>лютый инсайд для его обхода
Ну так и пиши так чтобы не было обхода.
А не видя сорцов он что не догадается как мат написать?
То есть сравнивая веловипеды и опенсорс от комьюнити мы считаем что велосипеды надежнее?
Тут же весь смысл как раз в игре в долгую. Комьюнити получает фидбек и фиксит. А через год получает стабильное прогнозируемое решение.
Я понимаю что от моих впросов библиотека не появится.
Просто грустно чот.
Да я рофлю, не бузи.
А если серьезно - зря ты так нос воротишь от replaceAll, кмк. Насколько я понимаю, челики, которые решают подобную задачу, дальше замены по блэклисту не особо и заморачиваются (типа - а смысл переусложнять? Все равно без фолс-позитивов решение врядли существует, а так хотя бы просто, понятно и администрируемо). И если че и шарят, то в основном сами блэклисты, типа такого: https://www.myadept.ru/index.php/page/spisok-necenzurnyh-slov-dlja-anti-spama-i-cenzury. Ибо кроме блэклистов там и шарить нечего.
Я лениво вкатываюсь на тестировщика.
В процессе обучения легко понял как работают встроенные циклы, многомерные массивы, классы, как писать самому методы и прочие азы. Всякие хелло ворды, калькуляторы, поиск символов в трёхмерных массивах освоил за 2 недели. И чёт мысль засела, мб программистом попробовать стать .
Всё, что я написал это прям элементарные вещи или это уже "чуть-чуть" понимаю ? Или не выебываться и идти тостером.
Смотря че конкретно ждет. Если молотит какой то джава-код, то Running. Если ждет ввода-вывода (например, в базу лезет), то скорее всего либо Waiting, либо Timed_Waiting. Если ждет захвата монитора критической секции, то Blocked. На практике наиболее вероятные исходы - второй и третий.
>Этот тред не переиспользуется в момент ожидания, если он на ForkJoinPool крутится?
Если ты просто заменил дефолтный тред пул у сервлетного движка на FJP и с довольным ебалом пошел запросы выполнять, то сорямба - твой план провален, ибо разницы никакой. Чтобы FJP мог выполнять то, для чего он предназначен, и твои таски бить на подтаски, твои таски изначально должны быть разбиваемы. Для этого их надо extendить от RecursiveTask со всеми вытекающими.
Ждет http ввода-вывода, в профилировщике 90% времени треды в статусе Running. Мне тоже кажется, что статус waiting более логичный, может ли быть такое, что профилировщик мне пиздит? При этом cpu-время на фоне реального времени исчезающе мало.
Чел, синтаксис месяц учится. Это самое простое.
Больше всего ебани во всяких фреймоврках, кучи кучи спек и спецификаций.
Впрочем, даже в простейшем синтаксисе можно засесть надолго, поскольку подводных там до жопы, та же теория типов, алгоритмов и пр. пр.
Месяц? Ну ты наверное гений с iq 150
Мне необходимо было 4 месяца.
Но я выкатился и работаю, всё норм. Другие вкатуны также называли 3-4 месяца цифру для самой базы.
Вкатился лол, а не наоборот
Может они под самой базой java core понимали? Синтаксис это кейворды, в основном. Они вон, на одной картинке умещаются.
>Мне необходимо было 4 месяца.
Хз, лично я никуда не торопился, мне просто было по кайфу, что пограмирование это буквально конструктор детальки для которого безграничны. А еще я чекнул мыло, пиздец я людей заебывал, мде.. Ниче не понменялось, хех....
Хуй знат, надо смотреть всю картину. Че у тебя там за треды, и че за код они исполняют.
>то сорямба
Не проще вот эту йобу подключить тогда? https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Executors.html#newWorkStealingPool--
Всмысле? Это - тот же самый FJP, только инстанцируемый через утилитный Executors. Чекни ка сорцы.
Да я знаю. Но по идее он не требует рекурсивных тасок. По крайней мере в доке про енто не сказано.
Ну да, ну да, логика с большой буквы Г.
Давай уже - от торга переходи к депрессии, все равно вещи ведут себя не так как ты от них ожидал)
Формально я тебе соврал маленько, кстати. На самом деле контракт тасок, поддерживающей деление - это ForkJoinTask. RecursiveTask - это одна из каноничных имплементаций контракта.
Впрочем для тебя это ничего не меняет. Если ты кормишь FJP обычными тасками, профита от ворк-стилинга ты не получишь. Он будет вести себя просто как обычный тред пул.
хотя ладно, ты прав. Эта хуйня просто треды плодит, а паралелизм про другое.
Тогда можно виртуальные треды использовать, там тоже fjp, нооо у них в этом плане лучше все. Просто RecursiveTask пидец неудобный, особенно учитывая нулевую оптимизацию рекурсии со стороны хот спота и компилера жабы.
Не знаю - ты мне скажи проблема ли это. Ты же спрашивал:
>Этот тред не переиспользуется в момент ожидания, если он на ForkJoinPool крутится?
С нативными тредами двусмысленности быть не может - если он у тебя встал где то на локе или IO, все - он занят и ничего ты с ним особо не сделаешь. Свободен он станет когда доделает таску и запаркуется в тред пул обратно. Соответственно в общем случае если ты хошь его переиспользовать, ты должен сам что то предпринять по этому поводу. FJP за тебя это не сделает и сделать даже в теории не особо может.
Но не то чтобы занятый тред это проблема: нативный тред программы != хардварный тред процессора. Если один тред встанет, процессорное время просто отойдет другому. Пока у тебя небольшое количество тредов, с этим можно жить.
Ну и есть есть лум, ака виртуальные треды. Но это другая история.
>>55140
И че ты этим пытаешься продемонтсрировать? Ты даже имена тредов не вывел напротив своих сообщений в консоли, чтоб понимать, на каком треду оно вывелось, а уже какие то суждения выдвигаешь. Ну-ка, выведи, удивишься.
Молодец, опередил.
>Просто RecursiveTask пидец неудобный, особенно учитывая нулевую оптимизацию рекурсии со стороны хот спота и компилера жабы.
Ты слишком предвзято на вещи смотришь. Вся история вокруг "переиспользования тредов", нравится тебе это или нет, так или иначе связана с отвязыванием флоу от нативных потоков. То есть - вот есть у тебя например нативный поток. Он уходит в waiting/blocked, и в тред-пул не запакован. Все. Он занят. Проблема ли это?
На самом деле - пока тредов мало - не проблема. Нативный тред программы != хардварный тред процессора, скедулер просто отдаст процессорное время runnable треду, и похуй что там у тебя парочка тредов в waiting сидит, ни к чему забивать голову такими мелочами как "переиспользование тредов". Проблемой это становится тогда, когда тредов плодится за несколько тысяч. Тогда накладная нагрузка от такой оравы становится заметна и ощутима, в первую очередь по памяти.
И вот большой вопрос - нахера тебе все это. Как по мне, это вот твое "хачу простаивающий тред переиспользовать просто потому что это кажется логичным" - пустая прихоть, которая не даст тебе ничего кроме пучка геморроя.
>Молодец
~~
>На самом деле - пока тредов мало - не проблема.
Ну это-то понятно, просто проблема это тогда, когда их ну тыщ 100. Банально оперативки хватать не будет, да и ос будет наладом дышать..
Энивей виртаульные треды теперь использовать куда проще, чем ебаться с fjp.
>Энивей виртаульные треды теперь использовать куда проще, чем ебаться с fjp
С учетом их ограничений - не совсем так. Они по сути ни для чего не предназначены кроме как быстро отреагировать на событие и всё
>Ангуляр
>Мысли?
Похуй. Что то сайты, что сё сайты. Что свелте сайт. Что рякт сайт. Что ангуляр сайт. Что вью сайт. Мне лично философия ангуляра не близка. Он у меня ассоциируется с искаверканным хтмлом, с этими ебаными ngFor, ngIf, с огромным бандлом и кривым роутингом. Но если тебе по кайфу, то бери и пользуйся.
Это у тебя не ассоциируется с исковерканым хтмелем?
{users.map(u) => <User user={u} key={u.id} />}
Круды, формочки, кнопочки генерируются за секунды и одинаковы во всём мире. Модели в мл общитываются месяцами и тут какой-то абстрактный стандартный совет вряд ли подойдет, т.к. каждый случай уникален и требует мастерства. Мльщики - это новые волшебники, повелители машины. К тому же чат гпт будет благодарен своим создателям и не станет их убивать.
>тут какой-то абстрактный стандартный совет вряд ли подойдет
Потому что ты не разбираешься в матчасти, а просто балаболка интернетная...
Не трясись, крудошлеп. Твоё время подошло к концу. Смирись.
Чатгопота не заменит программистов, нет даже предпосылок для этого. А мльщики - ни что иное как новая итерация анальников от айти, ни больше ни меньше.
>Ну это-то понятно, просто проблема это тогда, когда их ну тыщ 100. Банально оперативки хватать не будет, да и ос будет наладом дышать..
Но понимаш в чем дело. Даже когда 100к тредов становится проблемой, постановка задачи меняется не столько в сторону "как нативный тред переиспользовать", сколько в сторону "как бы мне иметь типа параллелизм поверх параллелизма, которым я могу управлять софтварно". То есть - взяв лум, не станешь же ты искать способ переиспользовать виртуальный поток в простое? Ну этож сюр, согласись?
И так со всеми видами зеленой многопоточности. Они все так или иначе сидят на нативных тредах, но задачу свою решают не через переиспользование waiting/blocked тредов (что само по себе оксюморон), а через организацию флоу таким образом, чтобы вместо синхронных блокировок можно было тыркнуть асинхронно, а нативный поток отправить обратно в пул до востребования. Обычно такие фортели не проходят без импакта на девелоперский опыт, поэтому мир зеленых потоков - это мир колбеков, всратых абстракций, смешных флюент интерфейсов, покрашенных функций и/или всяких неочевидных особенностей, ограничений и новых способов ебануть себе в колено, в зависимости от реализации подхода.
Это шарпомуха
Да мне в принципе похуй на какой фронтенд технологии работать, анонче. Просто по моим наблюдениям ангуляр самый популярный. Я вообще год работал на праймфейсес, но этот кал говна использует 1.5 конторы по всему миру.
>Не знаю - ты мне скажи проблема ли это. Ты же спрашивал
Не я, я вообще другой анон, вашу переписку не читал.
Значит он у тебя тупо не установлен. Иди в раздел плагинов, смотри че там
У тебя должна была выскочить кнопочка при запуске типо врубить препроцессы ломбока или типо того,ну или у тебя действительно не установлен плагин
Идея момент. Пришло время инвалидировать кеши.
Бот, но все же отвечу
Твой shitгопота даже бесконечный список (уж молчу про оптимизацию и саму реализацию) под андройд не может сгенерить, приходиться самому пилить, о какой замене идет речь?
Пытался 15 раз сгенерить, кстати
Мимо
Обычный список, не видел никогда чтоль? Вместо постраничного, при скролле списка до конца, отпралялся запрос на сервер за новой партией данных.
Сказал бы бесконечный скроллинг, все бы пользователи сосаки поняли.
>бесконечный список
Бля я уж подумал, что это фп термин, аля генераторы пайтоновские.
А бесконечный скролинг хуита полнейшая, все кто его используют надеюсь в аду будут сука вечно листать до нужной страницы.
Когда это тебе нужно нужную страницу искать? А вообще ставь сруклу, там можно отключить его.
скажем типикал для меня ситуация: дочитать комментарии в реддит/ютуб. тк это не паддинг оно не слхраняет где ты остановился. усугубляет ситуацию, если тебе там надо найти что-то конкретное. просто удачи.
короче имхо, но это просто неюзабельный кал, который пихают из каргокульта.
https://www.youtube.com/watch?v=ZY3dJ3e9vDo
TL;DR
Выглядит терпимо, использовал на личном проекте
Копия двача это два эндпоинта и minio для картинок? Если сделаешь с админкой то вполне
Оно уже написано сто раз.
Ной об этом дизайнерам, я же просто пишу код для приложения, которым сам не буду пользоваться
Да, потому-что сейчас все пытаются сделать максимально одинаковый и идейно тупой дизайн.
Как посмотришь на corporate memphis и сразу хочется закрыть всё
Кстати, как такую капчу вообще решать, абу?
downloader*
подумай над тем, а есои я захочу ответить на коммент? в ютубе-то нет постоянных ссылок на них.
>скоро
Вы это 2 года назад говорили, год назад, пол года назад... Сколько времени пройти-то должно? Лет 100?
> А обычное программирование всё.
Тут бы надо пояснить, что машины не могут создавать новый продукт, а лишь могут переносить свою стоимость по частям на новый продукт. А из этого следует, как минимум то что кто-то должен написать эту машину такой стоимости чтобы её хватило на все продукты которые она произведёт за свой срок жизни.
Так уже. У нас в конторе миддлам сказали писать код с помощью чата гпт для джуновских тасок, а сам набор джунов полностью прекратили. Сейчас вот хотим в новую версию загружать небольшие модули проекта, чтоб они влезли в контекст чата гпт и будем проверять, как она сможет выполнять более абстрактные задачи типа "а добавь вот эту залупу в бизнес-логику".
Черт его знает, я в ютубе не работаю, а id в html не видно. Да и плагин их не дает.
https://youtubecommentsdownloader.com/app?step=download
В csv-ке только куча всяких разных флагов.
Звучит как какая-то хуета. Или мои задачи были нихуя не жуновского уровня, раз это говно даже не близко давало решение или я хз.
Как бы сказать, кодогенратор в ide и то лучше чем чатгопотоа. Мне кажется на него дрочат только те, кто редактор не осилил.
Я не знаю что за мелкокабанскую хуйню от ненаебёшь-непроживёшь урода ты нашёл, но я про это говорил: https://github.com/egbertbouman/youtube-comment-downloader
Все равно с пипом связываться. Тоже впадлу. В аур лезть тоже нехочется. Посмотрим.
Как видишь он не работает во всех дитсрах теперь. Да и ставить что-то вне пакетных менеджеров глупость какая-то. Где преимущества не совсем ясно.
Я не знаю чё там у тебя не работает на пердоликсе т.к. сижу на шинде, но могу предположить что у тебя кривые руки потому что если бы на всём линуксе отвалился эффективный аналог мавена для питухона и это не хотели бы фиксить я бы вероятно об этом услышал, но ничего такого не было.
> Да и ставить что-то вне пакетных менеджеров глупость какая-то. Где преимущества не совсем ясно.
Это и есть пакетный менеджер для питухонских программ.
Ты просто не в курсах за обновления пипа, вот и все. https://veronneau.org/python-311-pip-and-breaking-system-packages.html
>Это и есть пакетный менеджер для питухонских программ.
Ну мусор т.е.? Примерно на уровне снапа флатпака аппимадж. Бинари хуй знает где, нужно PATH править, не работает без специальных флагов, потенциально может сломать системные пакеты.
Я если и буду с этим связываться, то только когда всю систему изолирую от этого говна. В докере/lxd каком-нибудь.
В той же жабе хотя бы maven условный работает только в рамках твоего проекта и не лезет в систему. Правильно делает, ему там не место.
> https://veronneau.org/python-311-pip-and-breaking-system-packages.html
В тексте не СЛАМАЛАСЬ ФСЁ НА ФСЕХ ДИСРАХ!!!!!!!!! а сломалась пара скриптов. И сломались именно потому что за тебя как раз таки изолировали пип от системы, ебалай, прочитал бы хоть что там написано.
Я не говорил, что он сломался, я сказал, что не работает. Чтобы его заставить работать нужны небезопасные флаги. Ну или шарится в аурах. Мне не нравится не тот ни другой путь, про что я тебе сразу сказал. Корочи пофиг. Речь изначально шла про то, что у комментов в ютубе нет id. Установи эту хрень сам и убедись.
Ну к слову, даже если id и есть, то из-за OAuth2 теперь нихуя не сделать. Там же нужен client-id, по спеке. Т.е. самописный скриптик нихуя не сделает.
> Я не говорил, что он сломался, я сказал, что не работает. Чтобы его заставить работать нужны небезопасные флаги. Ну или шарится в аурах. Мне не нравится не тот ни другой путь, про что я тебе сразу сказал.
Проблемы дебилианодебилов.
> Установи эту хрень сам и убедись.
Если там их нет, это проблема только этой тулзы. Ютуб сам прекрасно их использует, т.к. без них он бы не смог сам обрабатывать ответы на комменты.
>Ютуб сам прекрасно их использует,
Ну возможно они в жс зашиты. А тот обфускации подвергся.
В общем остается только страдать... Может в какой-то итерации ютуба сделают ui лучше
>Так уже. У нас в конторе миддлам сказали писать код с помощью чата гпт для джуновских тасок, а сам набор джунов полностью прекратили. Сейчас вот хотим в новую версию загружать небольшие модули проекта, чтоб они влезли в контекст чата гпт и будем проверять, как она сможет выполнять более абстрактные задачи типа "а добавь вот эту залупу в бизнес-логику".
Альтман, иди нахуй!
У Гугла контекст 1,5 миллиона токенов, лучше этим займись.
А в джава-тред притащил нахуя?
2 года назад дженерики, в ближайшем будущем итераблы - го с уверенностью идет к фичасету джавы 5й в скором светлом будущем
Если ты язык выбираешь по понтовости обобщёного пограммирования, странно видеть тебя тут, а не в треде С++/D/Rust/Closure/List.
Треда хаскель нет... Сижу тут.. Да и за що меня выгонять, рря.. Мне и джаба нрав.
Только в джаве с мощностью занесли баг, который уже 5 лет починить не могут.
https://io.livecode.ch/learn/namin/unsound?img=java9#cb32d4994710d626c877d2387712be99
Unsound9 до сих пор успешно компилируется.
Хехехех, а я вам эту статью и приносил кста. И это нихуя не баг, если ты читал статью внимательно. Это то, почему система типов жавы хуева и не затронув святую корову - обратную совместимость, решить это невозможно.
Вполне вероятно, вместе с вальгаллой решат. Она же пересматривает систему типов-то. Там вэлью тайпы заносит и прочее. Мб и подтип всех типов как-то ограничат.
Ну там же коллизия двух свойств. Когда дженерики могут выразить слишком многое и когда у нас существует нечто, что подходит куда угодно. Явгое ограничение любых из этих свойств так или иначе должно затронуть обратную совместимость.
Хотя конечно там используются потешные формулировки "возможно", "скорее всего", но там вариантом исправления делают, йоба алгоритм который все проблемные места обнаружит. Раз исправления все еще нет, вряд ли это так просто..
Еще кстати классную статейку для самопроверки нашев, нооо застрял на первом же задании. Как это capture убрать, пиздец я тупой, эх...
>Сначала лямбды и экзерьюторы
Лямбды есть, экзерьюторы при наличии легковесных тредов, с вытесняющей многозадачностью - не нужное говно.
>First, the AuthorizationFilter constructs a Supplier that retrieves an Authentication
Нормальные, адекватные люди это писали?
Ничего не понятно - библиотеку чего? библиотеку генерации sql? ОРМ? библиотеку sql?
Ну дык типичные программисты и писали. От программистов для программистов.
Ты думаешь - почему про разрабов существует отдельная категория анекдотов? Да вот именно поэтому. Потому что мозги у разрабов не как у остальных людей устроены.
?
Вроди не утверждение же. Но мило, что тяк подумал..
Для меня главная проблема вузик окончить, Есть у меня привычка на кучу месяцев заниматься чем-то своим, а потом разгребать долги... Такими темпами точняк в авдеевку.
В общем,летом попробую побегать по кабанчикам, мб сюда отпишу.
Он просит ORM и шаблонизатор для отчётов.
Ну а как? Тут или делать учебные таски/калькуляторы, от которых и будет ощущение топтания на месте, или пытаться уже что-то практическое
>Всё сижу на синтаксисах в JavaRush.
Ну так ты синтаксис осилил или еще не? Если осилил, попробуй консольное приложение с базой сделать, SQLite - записать, прочитать, обновить.
Нуу, похоже ввиду специфики работы getClass без каста это невозможно.
Если бы хотя бы получить полиморфный Class<? extends T>, то можно было бы магически убрать capture, как в c4, нооо никак(
Зря только время потерял, думал интереснее...
>>59517
Это можно сделать через .getGenericSuperclass(), трюки описаны здесь:
https://stackoverflow.com/a/18709327/21253446
Чел похоже сам как нашел эту фишку, так сразу побежал скорее щеки надувать, самоутверждаться за счет среднего дева, которому это нахуй не уперлось.
https://www.youtube.com/watch?v=nGywRGepLQc
"Плохая производительность ГЦ, при определенных паттернах аллокации"
"- Не ну если у вас структура указателей, каждый из которых тоже указывает на структуру указателей - то это сложно да, как такое обработать сборщику?"
Ну а в чем он не прав? В жабке реализации линкед листа специально даже сделали моменты помощи гцшке. Вроде это объектами зомби зовется?
В том, что в жабке практически любая программа начиная от нескольких классов - это структура с указателями на структуры указателей, и как-то даже подумать даже никто не мог что это какая-то проблема. Уж какие там деревья структур указателей в стандартном пустом спринг приложении - мама не горюй - и ничего, жабка пролетает не заметив даже.
А вот оказывается это проблема.
https://dzone.com/articles/go-doesnt-need-generics
Вкратце, мол ни в коем случае нинада добавлять женерики в го. Это очень сложный инструмент и большинство пограмистов даже не близко его понимают.
Еще вот это очень согласуется с этим пиком. В принципе, в 17 главу спеки жабы надо похожу строку добавить.
Нормальная тема. Я тоже микросервисы на буте хуярю, а че там с бин дифинишенами - хуй его ебет.
Спасибо.
Ты на практике эти самые БИН ДИФИНИШЫН используешь, просто не знаешь как это называется. Короче заебали нахуй пиздаболы из-за которых теперь так ебут на собесах, теперь из-за них надо зубрить всю эту теоретическую хуйню, чтобы очередному собеседующему не показалось, что тебя надо учить.
ДАУН! Уже есть!
Смешные все таки эти хомячки.
Цирк называется - "давайте мы заигнорим развитие языков последних пары десятков лет, а то чет сложнаа, душнаа, юниформити нету... А потом будем по 5 лет трястись над каждой языковой фичей, торговаться, и все равно просремся и затащим туда и эксепшоны, и дженерики, и прочий спринг...".
А по мне закономерное развитие той же жабы. Мол она упрощала cpp, который позволял слишком многое, го же упрощает уже и их: канкаренси слишком сложна, давайте введем горутины, система типов слишком мозговыносящая, давайте даже необходимость параметрического полиморфизма уберем, оставив алгебраические типы данных и тд и тп.
Впрочем мне такой путь не совсем нравится, нехочу, чтобы меня считали идиотом и отбирали выразительность языка. Но и UB, такое. Сложные системы типов, которые просто не будут компилироваться из-за глупых ошибок, по мне самое то. Надо все таки раст попробовать, но меня почему-то он прямо таки отталкивает из-за своей репутации.
А что жаба? В жабе все по честному, никто нихуя и не обещал. Это хомячки себя жабанам противопоставлять любят. Хотя по сути - это гуманитарии, не осиливающие простецкие абстракции обобщенного программирования, и из-за этого добровольно откатившиеся на уровень джавы 1.5, где "понятна, без женериков". Блеяние их гугловых предтеч про идеалы uniformity в сочетании с тем, что происходит в языке, просто смешно.
а ты сам-то хоть раз писал рекурсивные дженерики? или вайлдкарды как-то за рамками контейнеров использовал? Меня просто умиляют, твое утвреждение о простецких абстракциях. Это просто пиздешь.
Когда программист говорит слова "сложнаа", "нечитабельнаа", это не инженер. Это детский лепет школьника, который не понимает интегралы в математике, и поэтому считает, что они не нужны. Ну так от того что он так считает, нужными они быть не перестают. Поэтому когда коммьюнити повзрослеет, гоу неизбежно обрастет абстракциями также как и остальные языки.
Что касается джавового конкарренси - уж кому кому, но не гоферам на него пиздить. За десятилетия джава успела внести свой вклад в развитие многопоточки, щас это уважаемый дед, который даже будучи старым, умудряется удивлять и выкатывает лум, который не красит функции (какое никакое, а новаторство). Джава была первым императивным языком, где появилась такая концепция как "модель памяти", ее потом оттуда спиздили и в плюсы и в прочие места. Софтварные потоки в джаве вообще были со старта, хоть и не предполагалось на тот момент их использовать для хайлоада. Они не прижились и были выпилены нахуй в пользу более тесной интеграции нативных тредов - все кому была нужна в те года зеленая многопоточка сидели на эрланге, а остальным было похуй. А горутины... Пф. Щас есть стопятцот языков с софтварными потоками из коробки, никого этим не удивишь.
Верим
>>59947
Интегралы проще, поскольку они имеют реальное воплощение. Теория типов, это просто сферическая абстракция, её конечно можно попытаться объяснять через кошечек собачек, но это хуита.
Вот давай, объясни почему на пике в одном случае все норм, а в другом ошибка.
Можешь попытаться через PECS, контейнеры любое другое воплощение - вряд ли выйдет, так или иначе придется лезть в спеку и пытаться вникнуть в незнакомые тебе абстракции.
>гоу неизбежно обрастет абстракциями также как и остальные языки
Кто спорит-то? Просто они будут проще для восприятия. Это неизбежная тенденция языков - снижать когнитивную сложность.
>умудряется удивлять и выкатывает лум, который не красит функции
>Щас есть стопятцот языков с софтварными потоками
Че сказать-то хотел... Жаба или 100501 или хз
Да и эти истории об упрощательстве... сука, какая все таки инфантильная хрень, как вообще гугл на это бюджетов выделил...
У тебя императивный язык. Литералли ничего нового. Они существуют с полвека и друг на друга все похожи, давным давно проработаны, опробованы и обосраны тучи паттернов и парадигм, и сложился общий портрет таких языков: процедурная либо оопшная парадигма, с развитой чаще всего строгой системой типов (зачастую неявной, с инференсами), ifы/forы, структуры данных (зачастую алгебраические), средства для обобщенного программирования, механизмы обработки исключений и.т.д. - каждый императивный язык в том или ином виде всегда это имеет. С чего вообще гоферы взяли, что они в этом развитии будут нитакусики?
Ну ок, я могу еще понять про конкарренси: действительно, если у вас горутины - единственный каноничный вид конкарренси, вам не нужны такие задроченные артефакты синхронизации как в джаве, в этом есть зерно здравого смысла. Но в остальном то язык вообще ничем не отличается по природе своей от типичного портрета, но нет, "у нас свой путь, мы так видим".
>Меня просто умиляют, твое утвреждение о простецких абстракциях
Не, не хочу. Можешь хуесосить меня после этого и говорить что я слился, но это изначально провальная хуйня: разбирать такие темы как дженерики на такой хуйне как T, C, Бэ, Мэ и прочих оторванных от контекста литералах с твоего пика. Может поэтому дженерики и считаются сложными в изучении - потому что их так вот хуево преподают... В реале суждения о вариантности неразрывно связаны с бизнесовым смыслом дженериковой хуйни, и упарываться в вещи типа рекурсивных дженериков приходится редко. Коллекции - тому пример.
И знаешь что - отчасти ты пожалуй прав, а я действительно зазнался. Обдумав все второй раз, прихожу к выводу, что скорее всего дженерики отмирают в мозгах людей из-за фреймворков типа спринга: спринг побуждает скорее к шаблонному, нежели абстрактному мышлению. Поэтому дженерики и остались только в коллекциях, как самой понятной и расхожей абстракции из оставшихся.
>Просто они будут проще для восприятия
Вот буквально - нет ни единой объективной причины так считать. У раста, к примеру, была причина считать что можно спроектировать язык с автоматическим менеджментом памяти без сборки мусора, потому что за растом изначально стоит идея борроу-чекера. Можно хуесосить модель, но она хотя бы есть. Считать что в гоу модель дженериков будет проще нет ни единой причины, потому что кроме пук-среньк-сложно, и холиваров внутри сообщества о том, нужны ли дженерики вообще, нет ничего. Скорее всего они либо переизобретут их, либо внедрят какой нибудь обрубок типа "дженериков нет, но для коллекций мы сделаем исключение", либо придумают какой нибудь ебанутые костыли в стиле if err != null, или как там у них с эксепшенами получилось в итоге...
Вроде бы давно уже у них эта тягомотина с дженериками длится - они не разродились ли еще ничем?
И как? Переизобрели? Проще стало?
>И знаешь что - отчасти ты пожалуй прав, а я действительно зазнался.
Если не тролишь, няшно что признал.
>модель дженериков будет проще
В плане будет? Дженерики уже есть. И они проще чем в джаве, поскольку нет всех ковариантов контравариантов.
>идея борроу-чекера
Семантическая концепция владения вещь прикольная, да и мне тоже больше заходит путь сраста, но хз... Наебывают чувствую, слишком много од этому языку
>И они проще чем в джаве, поскольку нет всех ковариантов контравариантов.
Ну то есть на самом деле проблема была не столько в обобщенном программировании как таковом, столько в понимании вариантности? А разговоров то было, дженерики вобще не нужны...
И все равно это твое "проще" - вкусовщина. Меня вот как то никогда не напрягали вайлдкарты в джаве. Под них и кейс то редко когда находился на практике - обычно так же хватало банальных типопараметров.
> да и мне тоже больше заходит путь сраста
Я не говорил, заходит ли он мне больше или меньше. Просто растовый борроу чекер - адекватный пример основополагающей идеи, лежащей в основе языка. Идеи, которая реально делает этот язык уникальным, достойным (хотя бы попытки) инвестиций в него и созданию коммьюнити вокруг него. У джавы в свое время была такая же основополагающая идея: сделать язык, который write once, run anywhere.
А гоу - это безыдейный язык. Сделать "проще" - не идея: никто намеренно язык сложнее не делает. Гоу - это просто история вокруг одного корпората, который заебался от того, что миллион его сотрудников генерит дохулиард говнокода в разношерстном стиле и обвешивает его жирным тулчейном, и это в масштабах такого корпората мейнтейнить настолько заебисто, что пиздец. Тупо язык-кодстайл одного корпората.
Ну да, вайлдкарды и есть основная сложность в понимании дженериков. Само по себе обобщение - это просто один из видов полиморфизма. Не какая-то сверхуникальная концепция.
>обычно так же хватало банальных типопараметров
Нуу, из банального это если методу нужен контейнер полиморфный по значению. Условно список любых чисел. Хоть Integer, хоть Double. Без разницы. => List<? extends Number>
>>59983
Ну мб, мне плевать собстенно говоря на го, хз зачем вы его в жабатред тащите.
Мне кажется, что для их понимания надо ету статью прочесть.
https://www.cs.cornell.edu/~ross/publications/tamewild/tamewild-tate-pldi11.pdf
Чем и займусь..~
Просто я и до этого знал, что это ограниченная(в плане 1 rank) форма экзенстенциальных типов, но интересно формально это понять.
Подскажите, если прочитать Spring Boot in Action (6-е издание), то хватит ли мне информации, которая изложена в книге, для написания пет-проектов на Spring? Может быть, нужно читать ещё какие-то книги (параллельно)?
Ты до этого книги вообще не читал, да? Там блять почти каждую главу, ну пук среньк, это выходит за рамки нашей книги, вот отличные на тему и перечисляют список. В общем прочитав одну общую, у тебя будет целый список литературы на многие конкретные темы.
И 6 издание говно, там даже нет описания лайфсакла бинов.
Что касается Spring, то ещё ни одну книгу по этой тематике не читал. Ок, а какое издание лучше читать?
Ещё момент.
Подскажите, стоит ли уделять внимание Swing, а также библиотеки AWT? Эти технологии ещё используются в коммерческой разработки? Пропустил этот материал, когда читал Шилдта (10-е издание).
Там где бута еще нет - 4...
Помню сам читал вот эти после:
https://www.manning.com/books/java-persistence-with-hibernate
https://www.manning.com/books/spring-security-in-action-second-edition
Ну и еще бы посоветовал енту перед прочесть https://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601
Она просто няшная.
>>60894
Нет, весь десктоп сдох с появлением веба. Не заморачивайся.
По факту есть че?
Не играл, кстати, все ждал когда поляки нормально пропатчат все говно. Надо будет чекнуть, спасибо что напомнил.
>зачем вы его в жабатред тащите
Потому что у джавистов горит с того, что го популярен в бигтехе, и на него из-за хайпа многие переходят. Никому не хочется, чтобы джава потеряла титул короля тырпрайза
Вы видите копию треда, сохраненную 14 августа в 02:41.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.