Это копия, сохраненная 26 апреля 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Q: Поздно ли вкатываться в айти в 20/30/40/100 лет?
А: Нет, не поздно.
https://github.com/random76/Java-Thread/wiki
https://github.com/qqqlll/Java-Thread/wiki
Ага, как же, в прошлом и до 1000 нормально не стало. Ещё и перекатили, блеать.
Сейчас опять латентные делфисты вернутся.
И будет только хуже.
ты ебобо?
Надо перекатывать после поста под номером версия джавы × 100.
И мемные чатики.
Шутки шутками, но вы благодарите бога, что сюда не лезут всякие питонутые додики-инфантилы, которым фигурные скобочки глаза режут.
Наконец-то, хоть и косвенно, прилепили котлин к треду.
Вкатываемся в новый язык на превосходной отточенной jvm с богатейшим набором библиотек от java.
>Что имеем:
У нас есть синтаксический сахар поверх джавы, немного ФП (очень удобные лямбды), корутины с асинхронщиной, DSL и многое другое.
В синтаксисе можно встретить много WTF-решения (как же без них), но в целом, плюсы перевешивают минусы, во всех языках есть что-то что раздражает.
Параллельно jvm платформы пиляться kotlin-js (котлин для javascript) и kotlin-native (компилируемый в нативный код котлин). В целом, DSL позволяет даже писать на HTML и CSS, если кому-то это надо.
>Хайп:
Язык был подкреплен гуглом в связки мобильной разработки, а с недавних пор рекомендован как основной, из-за чего начался рост популярности языка.
Так же для языка был создан фонд, чтобы в случае покупки создателей не повторилась судьба с джавой. Вероятно условия гугла.
В связи с этим, котлин очень популярен в мобильной разработке, порой даже раздражает что весь контент пишут именно о телефонах. Но нужно помнить, котлин это та же джава и сейчас мы видим, многие фреймворки предлагают решения сразу на двух языках (как минимум пишут примеры).
>Производительность.
Не забываем, что java (с JIT) одна из самых производительных платформ. Она делит топ 10 на ровне с многими другими производительными платформами. Так же у джавы хорошо оптимизированный бд-драйвер, что видно по тестам.
https://www.techempower.com/benchmarks/#section=data-r18&hw=ph&test=query
Нередко именно база-данных является узким местом в веб-приложениях.
>IDE - среда разработки.
Бесплатная community editon - обычно более чем достаточно, но можете попробовать триал-версию.
https://www.jetbrains.com/idea/download/
>Официальный сайт и там же чтиво
https://kotlinlang.org/docs/reference/
>То же с переводом:
https://kotlinlang.ru/
>Awesowe (либы близкие к kotlin)
https://github.com/KotlinBy/awesome-kotlin#libraries-frameworks-web
или
https://kotlin.link/
>Чаты в телеге (еще живые):
https://kotlinby.github.io/kotlin-telegram/
Вкатываемся в новый язык на превосходной отточенной jvm с богатейшим набором библиотек от java.
>Что имеем:
У нас есть синтаксический сахар поверх джавы, немного ФП (очень удобные лямбды), корутины с асинхронщиной, DSL и многое другое.
В синтаксисе можно встретить много WTF-решения (как же без них), но в целом, плюсы перевешивают минусы, во всех языках есть что-то что раздражает.
Параллельно jvm платформы пиляться kotlin-js (котлин для javascript) и kotlin-native (компилируемый в нативный код котлин). В целом, DSL позволяет даже писать на HTML и CSS, если кому-то это надо.
>Хайп:
Язык был подкреплен гуглом в связки мобильной разработки, а с недавних пор рекомендован как основной, из-за чего начался рост популярности языка.
Так же для языка был создан фонд, чтобы в случае покупки создателей не повторилась судьба с джавой. Вероятно условия гугла.
В связи с этим, котлин очень популярен в мобильной разработке, порой даже раздражает что весь контент пишут именно о телефонах. Но нужно помнить, котлин это та же джава и сейчас мы видим, многие фреймворки предлагают решения сразу на двух языках (как минимум пишут примеры).
>Производительность.
Не забываем, что java (с JIT) одна из самых производительных платформ. Она делит топ 10 на ровне с многими другими производительными платформами. Так же у джавы хорошо оптимизированный бд-драйвер, что видно по тестам.
https://www.techempower.com/benchmarks/#section=data-r18&hw=ph&test=query
Нередко именно база-данных является узким местом в веб-приложениях.
>IDE - среда разработки.
Бесплатная community editon - обычно более чем достаточно, но можете попробовать триал-версию.
https://www.jetbrains.com/idea/download/
>Официальный сайт и там же чтиво
https://kotlinlang.org/docs/reference/
>То же с переводом:
https://kotlinlang.ru/
>Awesowe (либы близкие к kotlin)
https://github.com/KotlinBy/awesome-kotlin#libraries-frameworks-web
или
https://kotlin.link/
>Чаты в телеге (еще живые):
https://kotlinby.github.io/kotlin-telegram/
Подшапка для треда.
Если посмотреть на сайт как юзер, то когда юзер заходит на сайт открывается https соединение и всё норм. На сайте всякие стандартные поеболы типо "Наши клиенты" "Наши сотрудники" "О нас". И этот весь текст с картинками на одной странице! А теперь главное - наверху сайта есть панелька, с этими о нас и прочим, когда юзер тыкает на вот этот о нас, сделанно так, что почему-то страница перезагружается, в PATH ставится # типо sait/#oNac и и юзера просто кидает на текст, что был внизу. Нахуя перезагружать страницу, если в жсе можно просто вниз отправить, нет?
Второй вопрос - одновременно в network я вижу что открылось второе соединение http, если я тыкаю этот О нас. Это вообще нормально, что теперь я имею и https и http, которые так-то ведут на одну страницу
Что значит видишь соединение https и http, что конкретно по этим адресам? Может там картиночки по http передают, а остальное по https
Они же пытались свой тред создавать, но он быстро умер, и куда интереснее паразитировать на этом.
Пора наш тред переименовать в jvm-тред
В пщ-треде весело. Непосредственно про пщ там процентов 5 постов где-то.
>JIT
>производительных платформ
Звучит неубедительно
Джава может скомпилироваться перед выполнением?
>Джава может скомпилироваться перед выполнением?
Да, она компилируется перед исполнением, в байт код.
Чистый код джавы не интерпретируется.
Байткод, собранный в jar нужен, чтобы ты 100500 "экзешников" на каждую платформу не таскал.
Кросскомпиляция это не всегда круто, как кажется.
>>09267
Зачем асинхронное программирование? Это тебе в гугл.
Твой вопрос некомпетентен.
NEEQUAQUE
Если поиграть и не хочешь ебаться, то просто IDE поставь
Бесплатная community editon
https://www.jetbrains.com/idea/download/
PS картинки анимешнику из прошлого треда.
Chocolatey package
>Try Kotlin (пробуй и кодь)
https://try.kotlinlang.org/
>Поиграться просто.
https://play.kotlinlang.org/
На джава второй год работаю, а сейчас у нас новый проект будет, и там нужна скала.
Слишком зелено
Как у ServletResponse, например, могут быть прописаны методы в оракл.докс, если это интерфейс, а в нем нету тел методов?
Получается, что там целый пласт класов имплементит этот интерфейс, и определяет их?
ничего не мешает писать комментарии и javadoc к интерфейсам без реализации
Интерфейс это контракт по сути.
Ты создал уже? Никогда не понимал таких советов. Создай ПО которое будет полезно самому себе, как Тинькофф например, был такой мне совет. Ну пиздец, охуеть, а Интел с Майкрософтом мне не создать?
> объяснить как внутри устроен гарбедж коллектор
Такое минимум на миддла спрашивают. Так что не расстраивайся, проблема не в тебе.
> dart
Мёртворождённая хуита на уровне react native.
Учить для андроида нужно и джаву, и котлин.
Ну смотри, с жабой ты можешь потом в случае чего перекатиться куда угоднов кровавый тырпрайз, а с дартом ты будешь сидеть и пузыри из жопы пускать
Точно, гугл объявил его официальным языком для андроида.
Пиздос, сочувствую. Я вот тоже сейчас миллион книг задрачиваю, и будет, скорее всего, точно так же. Хотя, обход бинарного дерева смог бы сделать, наверное. А тебе уже готовое бинарное дерево дали и тебе надо было его обойти?
Сразу после того, как решат, что он развивается слишком быстро.
Ничего. Просто уже реализовывал бинарное дерево и рекурсивный обход каталогов и подкаталогов. Обход биндерева особо ничем не отличается.
https://pastebin.com/LTFZ2Mqc
Но неожиданно, если очередь полностью заполнить, то putloc перескакивает на 0, и getloc = putloc = 0, программа выдает, что очередь пуста, хотя, она все еще заполнена.
Не думал встретить такого в книге, но вдруг кто расшарит, что я не так понял
Нет смысла, если у твоё приложение - раб спринга.
>>09616
Отдельные функционалы вполне хорошо строятся на отдельных контекстах, вся спринг-лабуда строго инкапсулирована, наружу pojo.
>>09606
Ничего удивительного, в книгах про основные алгоритмы дохера фундаментальных ошибок подобного рода. Помню сутки с красными глазами искал баг в удалении из сбалансированного дерева, списанного с какой-то модной книги, но алгоритм был наглухо дебильный, и только на вид рабочий. в принципе нет книжек в котором есть работоспособное удаление из сбалансированного дерева, поэтому в итоге задача была решена пересозданием дерева после накопления мусора до определенного уровня
Я думаю спросили в общих чертах, чтоб понять, в курсе ли кандитат, как оно вообще работает.
Это что же получается, в котлине можно свои синтаксические конструкции пилить??? Ну всё, нахуй жабу.
>Отдельные функционалы вполне хорошо строятся на отдельных контекстах
Но зачем? Чем это лучше одного контекста?
Ты хочешь поспорить с вычищателем спринга?
не понял
>>09675
Тем, что выполняется требование инкапсуляции.
Классы, явно задействованные в конфиге путем аннотирования, согласно SRP, лишаются роли бизнес-логики и становятся техническими адаптерами, заменителями xml.
Общий контекст уместен только для части проекта, являющейся main entry, т.е. то, что крутится в контейнере.
В джаве лямбдой можно любые конструкции запилить, что там ещё можно добавить, хз.
Мы вам перезвоним
Про "требование инкапсуляции" это примерно та же самая болезнь, которая заставляет людей возле каждого простейшего Dao аккуратно рисовать одноименный интерфейс. Дальше правда человека что-то совсем в сторону понесло...
только представь количество нечитаемого, неподдерживаемого говна, которое написано с использованием вот таких вот фишечек
Не, не про это, я имею в виду про скрытие реализации и луз каплинг за счет инкапсуляции.
В спринге же обычно начинаются куча сеттеров или аннотации (что уже зашквар - зависимость от спринга).
В итоге, как правило, получается кашица. Может мне не повезло с проектами, хз.
Больше всего мне понравился фреймворк контейнера idea, там инжекшен на конструкторах. Сделано изящно, на грани здравого смысла, но таки зачетно.
>луз каплинг
>аннотации (что уже зашквар - зависимость от спринга)
Да-да, мы тебя правильно поняли, все нормально
Да нихуя вы не поняли, начитались книжек, а сути не понимаете. Не зря Алан Кей сказал, что не имел в виду цпп, когда придумывал ООП, интересно, что бы он сказал про джаву. Но так-то да, да деревьями леса не видно.
>начитались книжек
Это как раз скорее про тех, кто готов не жалеть сил ради великой идеи соблюдения луз каплинга. Кто не читал, тот, может, и слов таких не знает.
Это не такие уж и великие идеи, а простые слова, обозначающие насущную необходимость, способствующую улучшению читаемости, тестируемости, масштабируемости и проч. коммерческим ценностям кода.
Хорошо бы тогда показать, как конкретно "зависимость от спринга" ухудшает тестируемость и масшатабируемость, а множественные контексты улучшают.
Так не пиши.
Придется инстанциировать сабсет контекста, а это уже не один контекст или костыли с $пропердяме.
Я и в джаве могу наговнить так, что не прочитаешь, это вообще не показатель.
Кого ебет что он там думал:
а) симула была раньше
б) мнение автора термина, по поводу того что он обозначает - всего лишь одна из интерпретаций среди многих других
в) динамическая сгущенка с супер поздним связыванием и абьюзом паттерна обсервер - никак не повышает и, наоборот, понижает надежность кода, его предсказуемость, консистентность и даже читаемость.
г) Рим пал, центурион смолток проиграл (и на то были объективные причины)
Я хотел начать со своего while. Узнал, что тут можно изменять переменные из внешнего скоупа, это всё упростило.
С фором можно напридумывать инфиксных функция, типа to, downto, step и прочего с отсылкой к бейсику.
Чтоб не инстанциировать весь, ты для теста пары методов будешь поднимать всё приложение? Впрочем да, можно везде lazy написать, но как правило не так просто всё оказывается.
>>09742
Потише братиш, я лишь хочу отметить что под ООП каждый понимает что-то своё. смолток проиграл
потому что сан его купил
Такого типа конструкции хороши когда инкремент находится в центре цикла
Даже подумываю, что можно запилить какой-нибудь билдер DOM'а, типа такого:
html(lang="ru") {
it.head {
it.title("page")
}
it.body {
it.h1("Page")
}
}
>чуть большим количеством скобок
Это примерно как рассуждать, что xml это тот же json, только чуть больше буков
Но скобок не настолько больше, смысл создавать для этого отдельный язык мне не понятен.
> с чуть большим количеством скобок
При этом. Если обмазываться сахарком, абстрагируешься от того, что ты вызываешь функции/методы и начинаешь думать в системе координат своего DSL. Это как в лиспе.
Это уже к дизайну DSL. Вот градл тоже таит кучу сайд-эффектов, но о них не задумываешься.
Вообще, так много магии и сахара я не видел нигде, кроме перла.
>Чтоб не инстанциировать весь, ты для теста пары методов будешь поднимать всё приложение?
Если это действительно тест пары методов, это скорее юнит-тест, для которого контекст не нужен. А для тестов с контекстом, по моему опыту, действительно гораздо здоровее всегда поднимать его целиком. Это с одной стороны как раз освобождает тебя от возни с разными контекстами или их подмножествами, с другой - дает больше гарантий, что ты тестируешь именно то, что реально потом запускаешь, а не какую-то специально созданную ради тестов конструкцию.
Это всё заебись когда у тебя в контексте 25 сосаторов JMS, которые сразу начинают что-то пытаться процессить
Ага, я когда всерьёз что-то на джаве пишу, а не поиграться, про градл даже не вспоминаю.
С внешнимим сосаторами в тестах что так что эдак нужно как-то справляться
Если серьезно, ты можешь присмотреться и понять, что разница все же не только в количестве скобок
Unit можно вместо kotlin.Unit
Парень скоро узнает что можно DSL писать, но сначала напишет его сам.
Тут даже сможешь научиться писать такое самому
https://kotlinlang.org/docs/reference/type-safe-builders.html
Вот, достигнуто похожее решение путем увеличения количества скобок )))
Прозреваю что котлин напихает там атомиков, или заинлайнит просто всё, интересно, как оно там реализовано. Скорее второе.
Именно с этим примером да, а теперь попробуй сделать DSL для html (вопрос о полезности и нужности именно такого DSL рассматривать не будем)
Да норм, главное что автокомплит работал.
Как -то так.
В имплементации пищешь
println('<table>') ; consumer.accept( .. всяка разная логика .. ); println('</table>');
буков конечно много, но и что-то сопостовимое с хтмл по уровням и разнообразию вложенности вообще не имеет смысла так оборачивать, странная херня получится, как ни крути.
Пчел ты.......
Меня на стажера взяли когда просто рассказал что учил джаву и учу и интересно. После месяца стажерства получил какой никакой опыт, провалил один собес, а на втором взяли и дали 800 евро в руки. Вопросы были самые базовые, дерево не крутил. Вообще легкота была на типо что такое обжект, как вот соединение сделать. Потом один sql дали и задачку с веревкой, на которую я прикинулся что не знаю. Правда мне потом дали на 2 недели сделать веб сервис с аутефикацией, авторизацией, бд и прочим на спрингбуте, но на самом собесе изи, так что забей на этих говнарей лул.
Вот список каких никаких обыкновенных вопросов на джуна, которые я себе как-то составлял.
hascode / equals / equals и == / collections (карту коллекций нарисовать, пару предложений чем одна вещица отличается от другой )/ какие виды garbage collector-a есть и кратко как устроены вообще у баелдунга довольно очень хорошие кратко, чекай его/ immutable / threads (volatile - runnable и thread - wait sleep notify notifyAll - atomic CAS - syncronished ) / enums / singelton how to write и почему он pattern / пачку паттернов в придачу / inner class и виды / что первым грузиться в джаве, класслоадер - статик блок и вот это всё / compile и runtime polymorphism разница между ними, можно ли оверайдить или оверлоадить статик методы / String и в чем разница между просто str = 'alo' и new String('alo')
Так, но за это тебе скажут молодец и попросят сделать в варианте в виде класса. А потом ещё скажут сделать чтобы потокобезопастным стал. На своём опыте говорю. Это как тебя просят реверстнуть стринг, избавиться от дублекатов в аррее и сохранить порядок, сделать аррейлист синхронайзд и прочее. Ну ты с умным лицом отвечаешь Arrays.asList и Collections.reverse, в линкед лист потом в сет и обратно, Collections.synchronized и протягиваешь листочек с ручкой обратно, на словах говоря как ты сделал это такими вот методами. Однако ехидный тимлид улыбается и просит сделать всё то же самое, только вот без использования этих и кучи посторонних методов. Всегда от такого бомбило, но таки я понял, что это на самом деле норм. Стоит заучить один базовый вариант и немного потянуть время пока пишешь, в слух проговаривая мысли и тогда время на интервью затянется и тебя не спросят как устроена архитектура спринга и ты обмякнув не сможешь объяснить про прокси и адвайсы.
Добра тебе, анончик.
Вопрос в том, плохо ли начинать с книг по 5-6 версии(thinking java, head first java).
В прошлом треде посоветовали Хорстманна(Java SE 8. Базовый курс). Сходу показалась сложной.
Не понял, как запускать хелловорд из книги в иде.
Если что там в первом хеловорде был использован package, но как создавать проект, чтобы запускать код с ним, приложенный к книжке не написано.
Забыть про ide и первое время писать код в сраном блокноте. Хорсман, как старт, очень и очень гуд. Осиль первый том.
Он сам сказал запусти в cmd - я запустил. А теперь запусти в какой нибудь иде(а как запускать в инструкции к иде должно быть якобы). У него эклипс - у меня - идея.
Ладно, раз ты советуешь еще раз постараюсь нагуглить, как работаать в иде с пакетами. Спасибо.
И просто так ради интереса. Если книжки времен 5-7 джавы уже не подходят, почему многие их советуют?
Заебали уже со своей стратегией
Можно хоть через стратегию-синглтон-сервислокатор-фасад-мост-адаптер.
А что с ними не так? И зачем они вообще тебе понадобились?
кстати, кококотлин шире всего распространен в андрюхиной среде именно из-за этого. кококомпилятору кококотлина можно задать целевую версию жабы и он будет выдавать нужный байткод
потому што андрюхины вмы жрут байткод 7 жабы. андрюха 7 вроде восьмую жабу поддерживает, но если ты хочешь таргерировать все андройд девайсы, то вынужден обходиться седьмой жабой
Во-первых, пишут на котлине энтерпрайз (пусть пока и не так много). Во-вторых, может хоть ты расскажешь, что за бэкенд на jvm, который при этом не есть по сути тот же энтерпрайз? Ты много такого видел?
Ну а представьте что через 50 лет будет? Это еще сейчас вкатывальщики (это я) как бы запрыгивают в последние вагоны поезда по сравнению с общим временем популяризации технологий, а потом программирование вовсе перестанет ассоциироваться с каким-то временным промежутком, и по сути само понятие "вкатывания" вообще перестанет иметь смысл. Ну типа какое значение будет иметь своевременность "входа", если технологиям уже больше 70+ лет? Так что не понимаю всех этих баребухов по этому поводу, как будто it сфера через пару лет уже закроется, потому что всё все выучили и будут дальше жить вечно
потом прогеры станут как чернорабочие
Любые предметные области и профессии, программирование это или нет, так или иначе приходится учить. Делается это не мгновенно. В этом и суть "вкатывания". Даже если появится мифическая "армия программистов", программирование не станет таким же лёгким, как интеллектуальная работа дворника.
>Так и до деонона недалеко..
Уже представляю, как бегают аноны и пишут твоим родным, друзьям, что ты кодишь на джаве.
DSL с типами, для предметной области, это нормально.
После того как запилили котлин, на шарп даже уже не посматриваю. Котлин для меня убил шарп, лол.
Для своих проектов.
Два просто классических сайта с шаблонами и тупо с ajax.
И два json сервиса для такое херни которую я даже не объясню, но очень надо.
Пассивный заработок. Поисковой трафик - реклама - профит.
Чтобы делать контентный сайт, не нужно одностраничные реакты, которые порой плохо кушаются поисковиками и которые долго грузятся (что в совокупности плохо влияет на ранжирование).
1) Производительность.
2) Проблема динамической типизации в большом многолетнем проекте.
3) Низкое качество некоторых решений в php (я про некоторые библиотеки/фреймворки).
Да, один топ проект переписывал в свое время с пхп, теперь пхп вообще уже не помню.
Юзер (трафик) заходит на сайт, получает свой контент, часть трафика сливается об рекламу - реклама платит за переходы.
Понил. Я тут к бэку присматриваюсь. Мне обычно пхп рекомендуют. Думаешь стоит вместо этого взять kotlin?
Это, наверно, самая фундаментальная схема заработка на вебе. Забавно что многим это сейчас в диковинку.
Если не думаешь вкатываться во фриланс (где пхп, вроде, до сих пор в топе) и вообще сможешь осилить JVM мир (он таки сложнее чем пхп) то стоит.
По своим ощущениям, на котлине, я вообще не понимаю зачем писать сейчас на пхп, питоне, ноджс. Нет уже такой топорности как на джаве (хотя я на ней писал дольше).
Есть одно но. В мире джава-либ полно плохо за-дизайненных (по рамкам современности) библиотек/фреймворков. Они порой просто не совсем удобные или переусложненные на ровном месте. Но за то они будут качественнее, чем аналогичное фасадное говно из того же пхп (субъективное, это мое мнение).
Тут моя идея в чем, кто бы тебе не говорил, но ты никогда не сможешь освоить хорошо много языков, много усилий уходит на освоение "экосистемы" языка и практики (иначе ничего в голове не отложится толком). Поэтому есть идея выбрать только один наиболее идеальный и универсальный язык для себя.
Java, С++ (может быть когда-то C#) и python - это наиболее такие универсальные языки.
Например на втором проекте (на самом деле десятом, просто не все успешные были) была просто избыточна джава, но я не хотел осваивать еще какой-то язык, я лучше потрачу время на углубление знаний в той же джаве, чем освою какой-то питон, или переосвою пхп.
Поэтому мой набор инструментов - это углубленно джава и поверхностно js (только на фронте).
Ну да, там где я говорю джава, я подразумеваю и котлин.
Близость к Индии.
У них еще есть тип dynamic, аналог дельфи Variant.
Зачем ему твой котлин?
еще джава в действии про фишки 8-11 версий
Начинать нужно с Java programming language 1997
Там версия 1.0.2 и нет всякого ненужного говна, ну вы меня понимаете.
Вроде как литерал сразу в пул попадет, а если через конструктор, то только через интерн. или типа того
Ну да, дохера всяких конфигообразных вещей так же пишется. И котлин позволяет это делать гораздо изящнее
Хотя сейчас вроде как интерном никто не пользуется, а computed strings попадают в пул через алгоритм дедуплекации, тк с восьмой жабы завезли сборку мусора в метаспейсе и могут себе позволить.
Ты дурак?
Смешно, спасибо за внимание конечно. Но мог бы ты объяснить чего нет в книгах написанных по 5-7 версии, что нужно для новичка?
>чего нет в книгах написанных по 5-7 версии, что нужно для новичка
лямб, сримов и ворк стилинг пука нет)
я думаю, что все. кто сможет переубедить из читающих сей шедевр?
Да пошел ты нахуй
Прям как в лучшем языке всех и времён и народов Prolog.
Во всех языках??
Или ты гофер и пытаешься тут матерых программистов удивить тем, что if может быть не прибитым к полу оператором, а выражением?
Давно известно, что Скала это C++ в мире ФП.
У фримаркера нет буквы j в названии.
Мощь в простоте. Сложность != мощь.
Но мне надо описать математическую формулу.
Именно что из-за легаси. JSP компилируется в сервлеты и к тому же иногда вынуждает вставлять блоки кода на джаве. Прям в лучших традициях пхп. С JSTL, впрочем, ещё жить можно.
На самом деле, сейчас и серверные шаблонизаторы используют всё реже, в моде клиент-сайд рендеринг (реакт и вот это вот всё).
Сидеть и долго продумывать его дизайн, как создатели промышленных языков, а не клепать и уж потом думать.
EE не актуально, вкатывайся в спринг.
>Как написать свой DSL, чтобы не получилось говно?
Написать хотя бы десяток их. Одинадцатый может годный получится. Другого пути нет. Только практика. Набивание шишек.
Их всего ничего. Бери любую не ошибешься. Гуглить умеешь?
Вот множественное наследование. Его нет. Говорят "юзайте интерфейсы". Ок.
Вот у меня класс лошадь и класс птица, мне надо класс пегас с методами "летать" и "ржать". Допустим летать и ржать это интерфейсы, которые воплощаются лошадью и птицей (да, лошадь летает а птица ржёт, не суть). Но если я сделаю класс "пегас", воплощающий летать() и ржать(), то как мне скопировать его реализацию у родителей? Если я пегаса сделаю наследником лошади, то смогу Super.летать() или как-то так, но ржать() то всё равно придётся заново воплощать, т.к. птица не является родителем.
>как мне скопировать его реализацию у родителей?
Копипастом. Ржать как лошадь пегас еще сможет, а вот летать точно будет не как птица. Дальше сам.
Нет.
Похоже, тривиально это не делается.
В тестах можно попробовать юзануть DataProvider, а данные для него взять через какой-нибудь свой резолвер properties-файлов.
Если у тебя реально всего два метода, можно в классе "Пегас", имплементящем два интерфейса, объявить поля "Лошадь" и "Птица", а в реализациях интерфейсов тупо дёргать соответствующие методы "Лошади" и "Птицы".
Старые джависты сделали бы так:
Летать <- Ржать <- Пегас.
Но это антипатер
Поэтому остается только делегирование (паттерн).
Делаешь пегаса, в него суешь объекты ржать и летать, потом юзаешь типа такого
public void Ржать() {
// своя логика
this.объектРжать.doРжать()
// своя логика
}
Эту херню решают обычно миксины, но их чет никуда не завозят, поэтому паттерн делегирования.
наследование говно, делай класс - крылья и абстрактный класс ебало с методом open().. твоя лошадь будет иметь внутри поле с наслелником от ебала, которое ржет, а птица с наследником от ебала, которое чирикает + поле крыльев, пегас будет иметь поля крыльев и ржущее ебало
это называется композиция
наследование выгодно когда нужен полиморфизм, в остальном лучше его избегать
interface Winged {
void fly();
}
interface Horse {
void neigh();
}
class PlainOldHorse implements Horse {
@Override
void neigh() {
sout("Sup dvach");
}
}
class Pegasus extends PlainOldHorse implements Winged {
@Override
void fly() {
sout("LOOK MOM IM FLYING!1")
}
}
Это работает если пегас всегда будет частным от лошади.
А если лошадь какает, а пегас не какает (ебаное фантастическое животное), то начнутся проблемы из-за которого ненавидят наследования.
Как сказал анон выше, наследование лучше избегать кроме случаев полиморфизма.
Основной поинт в том, что этот шаблонизатор есть везде (питон, пхп, ноджс).
Когда есть зоопарк проектов и можешь влиять на архитектуру, удобно.
Так что? Никто не подскажет, как быстрее всего выучить скалу?
Что-нибудь формата изучаем скалу во имя добра?
>А как быстренько вкатиться в скалу? Без 500 страниц книги и без видеокурса на 40 часов?
Никак. Выучить язык != научиться писать грамотный код в стиле ФП.
>>10906
>Так что? Никто не подскажет, как быстрее всего выучить скалу?
https://www.ozon.ru/context/detail/id/31921731/
Садись и быстро учи!
а местные эксперты не в курсах?
зачем эти треды по проге нужны если вы только в гугль можете отправить?
У тебя вопрос как раз уровня целого мануала.
Это однохерственно что:
- как мне сделать сайт
- как мне начать программировать на джава
- как мне бросить писать на го и начать профессионально разрабатывать на котлин
- как мне спасти вселенную от галюнов.
если бы ты хотя бы спок фреймворк упомянул то уже было бы веселее, тебе просто нет дела до моего вопроса
Тут про тесты для джавы вряд ли кто-то ответит, а ты про груви. Скорее всего, ты быстрее осилишь всё сам, чем дождёшься тут совета.
спасибо за дельный коммент вместо дежурного "иди в гугл"
ну обезьяны баш юзают, а на выходе потом получают гавно которое пиздец как сложно поддерживать, переносить, версионировать и трекать
На so бы вопрос тупо удалили бы.
>@Override
>public void kakat() {
>//Pegasus should not kakat!
throw new UnsupportedOperationException("ebobo shtole??7");
>}
живой тред живого языка жи
Да, как минимум я не помню чтобы с релиза что-то поломали.
Кто тебя заставляет использовать проперти файлы в тестах? Делаешь тестовый конфиг с 4 бинами. Инжектишь их в тест. И через параметризированные тесты запускаешь 4 раза.
Это уже костылеварение, это просто значит что пегас не частное от лошади.
Пусть как можно больше людей так считают, чтобы у нас не было тонны вкатывальщиков, как у жс, питона и сярпа.
> объекты в том массиве неупорядочены и когда я это отправляю на вывод порядок там другой
какая разница какой порядок когда неупорядочены
он не хочет нарушать хаос
Опять ты путаешь java и javascript
Продолжаем теребить пегаса и лошадь.
Господа ООПешники, все по канону сделал (с дефекацией)?
https://pl.kotl.in/j9k0wsiEl
Добавил полиморфизма. И гоферов.
https://pl.kotl.in/hclcmiTPB
Повторяющийся код, на самом деле он не должен быть одинаковый, поэтому абстрагировать его не нужно.
Сейчас попробую описать то же через делегирование
https://pl.kotl.in/JCIfJovQW
Вот так мы вернулись из ООП программирования в процедурное, с интерфейсами
Так-то в начале 2000 ООП формулировали как структурированные классами процедуры, лол
Мне потом надо сохарнить все это в файл и чтобы он был точно таким же как до правки, кроме тех значений, которые я заменил.
Я могу собирать любого зверя по интерфейсам. Перебирать множество возможностей. При наследования я ебнусь это делать (каждая вариация это абстрактный класс и возможно даже еирархия абстрактных классов).
...по сути круто было отказаться от наследования (кроме интерфейсов) и добавить миксины/трейты и все.
У меня коллега на работе решил изучать сишарп(из экономистов стать программистом). Купил он себе книги и макбук. Насчёт макбука мы всем офисом проигрывали. Через месяц он это дело бросил. Через полгода от нас уволился, поотсылал заявки на стажера/джуниора си шарпа и его конечно же послали. Сейчас он не работает и хуйней страдает. (его ожидает Макдональдс с двумя высшими и он еще третье высшее хочет)
https://www.youtube.com/watch?v=5Y0Alqb9H_I
Вообще не юзается, и его поля не инициализируются. А для этого в родителе создали специальный конструктор. Костыли в jdk!
Кто вообще юзает эти Properties?
Они есть у System. Но кто свои собственные городить будет?
Только если проект на java 1.0-1.1
Он вообще программировать не умеет, куда ему макбук для шарпа. Больше для понтов его наверное купил. И мантры были типа "Винда глючит, как на ней можно работать, плавность АРЯЯЯЯ!". И вообще непонятно почему именно шарп этот чел выбрал. Для всяких вкатывальщиков хорош питон или си. Даже мы ему это советовали.
Аннотация можно забыть и получить граблями по лицу. Ключевое слово обязательно и приведет к ошибке сразу, без граблей в лицо.
Я как бы тоже начинал с Си K&R.
Правда я там только дочитал по сути только до синтаксиса - создание переменных, if, циклы, чтение файла до EOF. Помню когда впервые увидел
for(fahr = 0; fahr <= 300; fahr = fahr + 20) не понял что написано, как будто инопланетный язык. Но зато потом остальные языки понятными казались, Си-подобные же.
Хорошо, что не дошел до указателей и управления памятью, а то бы испугался.
Ну и зачем мне юзать детский сахар вместо той же самой записи, которая даже не короче?
Вакансия какая-то общая...
Как вы думаете, к чему готовиться?
Самому ничего найтись не получилось. Но попалась инфа, что у них есть жёсткая система грейдов. Но не на публике. Никто не намекнет что нужно, что бы не опустили до миддл-, а быть миддл+-сеньор?
Строковая интерполяция это вот это
https://pl.kotl.in/ViPtmJVw8
А то что ты говоришь, это что котлин заменяет некоторые геттеры из джавы .getName() на .name
Лицемерие лицемерием, но тут реально есть анон, ненавидящий аннотации, генерики, лямбды и вывод типов в джаве.
Котлин выбирают новички из-за хайпа.
Налили сахара и мухи полетели.
Ну и в последних релизах джавы, тоже начали добавлять сахар, котлин не нужен.
Конкуренция всегда хорошо. Джава стала развиваться, даже что-то годно к 2024 наметили годное (есть доклад на трубе).
Джава и Котлин не конкуренты, я серьезно. Они едят с одного стола. Потонет джава, потонет и котлин.
Котлин не обязателен. Это личный выбор.
Тем более не обязательно даже что-то переписывать только фанбои носятся с идеей что надо срочно все переписать на новый язык. Котлин прекрасно живет с джавой.
Котлин не идеален, он просто удобен (я им реально себе питон стал заменять).
Нет идеального языка, я по крайней мере не нашел.
чувствую себя уже евангелистом, лол
придёт микрочелик со списком тем, и по каждой теме будет тебя опрашивать и ставить оценку напротив каждого пункта.
Нет английского, нет вышки, нет лычек - сразу минус, ты становишься ниже уровнем чем их стажёры
Божественная сишечка дала нам %s, name
Зачем? Там ни одного импорта.
> принтлн статический, а String.format нет
Это тебе не жаба, здесь:
1. Вообще нет static
2. принтлн - не метод, а функция.
Возможно
Ага, прям как в божественной сишке.
не понял
сертификаты и всякие официальные экзамены
Выпилили.
По вызову конструктора
Program().main()
А так вызываются компаньоны, аналог статик (скобок нет).
Program.other()
В котлине весь код в виде сплошной стены светло-серого текста, видимо.
Ты не понимаешь смысла printf. Он не должен переносить строку, если ты явно не поставил ключ %n.
Welcome to the club, buddy.
В котлине с ключевыми словами не поскупились, поверь
Cursed
Я вообще люблю адово поиздеваться над языком, к примеру я вообще подумал, можно ли сделать подписку на события как в шарпе. Ответ - да, Можно
Не удивляйся, здесь целый ангар магического сахара на все случаи жизни.
repl.it
Язык-то вроде неплохой, лучше скалы и жавы точно.
Там же, где джава, но пока (надеюсь, что пока) мало.
>66% андроид
>57% жвм
Ну если учесть что таргет jvm входит в таргет андроид, то там считанные единицы не-ведра
Но окей, даже так хороший знак. Может даже вакансии на веб появятся когда-нибудь на нём.
Если есть официальный перевод, всегда кидаю ру-вариант.как представитель вменяемого ру-коммьюнити
Петучинский грит не будет.
https://youtu.be/DGBHodUOwds?t=15
>>12101
Там множественный выбор и скорее всего с пет-проектами.
Говнокодер с 20-летним стажем на пхп, плюсах, жабе.
АААА ОПЯТЬ ОН!!!
Ну всё, теперь интеллектуальный уровень этого треда опустится на сотню постов до МВП-шного.
Это сраные котлинисты. Надо для них отдельный загон выделить, чтобы не мешали белым вычищателям спринга.
Ага, это был как раз я. Весь тред охуеваю.
Kotlin 1.3 пойдет?
Толсто
магия Extensions. В котлине можно спокойно расширять. Ну я незнаю как такое компилиться в jvm, но в шарпе свойства компиляться функции(а c# слизан с джавы между прочим), и тут никакого криминала нет, так как мы не добавляем никаких переменных или же резервных полей в класс. Тут все подробно рассказано -> https://kotlinlang.org/docs/reference/extensions.html.
Я вообще хотел изначально расширить непосредственно лямбду setOnClickListener. вот так
fun (((v: View)->Unit)->Unit).subscribe(func: (v:View)->Unit) = this(func).
Но не получилось так что перегрузок метода setOnClickListener вроде несколько
1)Принимает View.OnClickListener
2)непосредственно лямбду (v:View)->Unit
и я не могу написать butt::setOnClickListener.subscribe(::myfunc).
А если написать так то вроде все ок. У меня вроде нет нескольких одинаковых колбаков в классе.
fun ((v:View)->Unit).subscribe(func:((v: View)->Unit)->Unit) = func(this).
Но я все-равно получу хуй. Так как во время запуска он скажет что я попытаюсь превратить лямбду в View.OnClickListener.
Из всего выше описанного можно сделать вывод:
Метод нихуя не два, а блять один, и котлин просто меня тролит.
Скорее всего это все из-за функциональных интерфейсов в java. Я пробовал на джаве создать метод принимающий объект реализующий интерфейс. И в котлине IDE также подсветила, что там есть перегрузки
двачую
Не юзал exposed но есть алтернативы же
например JOOQ или легковесная библиотечка мне прям очен понравилась sql2o
https://www.sql2o.org
а ты не юзай
ORM
как спринг-дата сочетается с энтерпрайзом?
Энтерпрайз это каждый запрос пишется лично дбашником, опционально через вьюху или хранимку. 100500 метрик производительности и оптимальности этого запроса.
А тут херак херак твоя спринг-дата нахерачила фулсканов
Вот короче книга, там много интересного по кишочкам. Она конеш пиздец старая, но база особо не поменялась с того времени.
Добавлю, что каждый запрос также должен пройти согласование в трех комиссиях, с оформлением всех документов по гостам. Энтерпарйз же, что вы хотите.
А знаешь, что еще не нужно?
любое изменение запроса прогоняется через метрики. Ухудшение характеристик - отказ
Охуеть, это где так?
Мы все запросы пишем сами, все скрипты миграции, процедуры, триггеры и т.д. - всё сами.
Обязательно readme гринтекстом ебаш
Ты представь только, каждое findUserByUsername "пишется лично дбашником, опционально через вьюху или хранимку". В таком зачарованном месте, я думаю, само время течет как-то иначе.
На jug ru высрали видео с джокера, налетайте
https://www.youtube.com/user/JUGRuVideo/videos
да, неделю назад, я тормоз
Затем же, зачем и в остальных местах. Чтобы не проебать старое значение, если попытаешься изменить.
>Мы все запросы пишем сами, все скрипты миграции, процедуры, триггеры и т.д. - всё сами.
и работаете вы в ип магомедов?
простейший кейс: в твоём findUserByUsername поиск по неиндексированным полям. В тесте всё норм, в проде тормозит
Охуеть, оказывается, поля для поиска надо индексировать! Ну тады ладно, придется сажать по пять дба на каждый запрос.
Тут я соглашусь.
Для тяжелого проекта лучше юзать чистое SQL, иначе просто добавишь себе проблем.
Прямо перед этим в логе вот такое.
>persistence.xml
И что в нем? И как в коде инициализируется jpa? Это "TestPersistence" у тебя где-то явно прописано?
Существует достаточно много случаев, когда нет разницы, no mapping for the key это или само значение null. Если для твоей задачи разница есть, то не норм.
Есть containsKey(), который можно вызывать перед.
Анончики, я хочу выучить прогинг под андроид с нуля, и как ни странно я застопорился в самом начале, т.к. мне кажется это весьма важно. В общем вопрос может для кого легкий, но для меня сложныый - kotlin или java in 2k20?
xml как на пикче. Изначально был другой, этот взял с одного из ответов, заменив значения на свои.
Инициализация вот такая.
фу какой ты противный
>Энтерпрайз это каждый запрос пишется лично дбашником
Ну да, но надо придумать ORM, чтобы а ВДРУГ ПОНАДОБИТСЯ сменить оракл на постгрес, а код минять не надо сразу изкаробки, еще и тестируем на h2 в тестах заебися
Че там жопа горит у оптимизаротов котоые хотспот дрочили микросекундами, а вот хуяк ПЛОТИ НОЛОХ за каждый процессор, а ты че думал инструментарий в опенждк не завезли
Только запостил - понял, что все properties вообще мимо кассы. Заменил xml на пикрелейтед, ошибка осталась та же.
> ВДРУГ ПОНАДОБИТСЯ
Прям как клепать пустые геттеры и сеттеры вместо того, чтобы сделать поле публичным, а ВДРУГ завтра в сеттере понадобится логика.
>клепать пустые геттеры и сеттеры вместо того, чтобы сделать поле публичным
ну это скорее байтоебские фреймворки которые прямо в байткод лезут и им нужен метод а не переменная, как эти спринги которые инжектят прайвет филды блять
Именно для main() толку мало.
А так - чтобы можно было вызывать как через main("foo", "bar", "baz"), так и через main(arr).
Спринг может что-то засеттить через рефлексию, если не нашёл сеттер.
Другой вопрос, когда даже ебучий POJO пишут с приватными полями и портянкой геттеров-сеттеров. Ещё и ругают тех, кто так не делает.
Запили экранирование, чтобы, к примеру, выражение "$${value}" не заменялось и превращалось в "${value}".
Пик - я чет офигел от кода для LocalDateTime и зачем вообще ему timezone, если время эпохи линукс в utc??
Эх, вот бы таймзон не было, и все жили бы по одному времени.
Там есть шаред ссылка в меню с права
>Затем же, зачем и в остальных местах
Перед методом и классом другое назначение имеет final.
Не во всех остальных местах.
Вот почти все, кроме этого только пара архивов из библиотеки для расчёта md5. Брал из репозитория Мавена.
Мда. hibernate-entitymanager тебе нужен, а еще другие зависимости самого хибернейта.
>Почему?
Потому что разработчики мавена и спринга уже решили эту проблему за тебя, а ты страдаешь хуйней.
Смотря какая мапа же, у хэшмапы первое значение будет null если вставишь, куда она будет все вальюсы возвращать
Да, точно.
На собесе у тебя не будет мавена, я на бумажке писал список нужных зависимостей.
>На собесе у тебя не будет мавена, я на бумажке писал список нужных зависимостей.
чел ты к даунам на работу пришел...
Это прекрасно. Но все же как оно там, на все случаи жизни? Если мутабельный pojo для хибернейта мне нужен, например, будет работать?
Это ты к кому пошел? Скажи нам, чтобы мы не пошли
Ещё, небось, и java -cp 100500 жарников нужно будет писать вручную на бумажке, вспоминая их названия и версии?
Ну сейчас пока никаких ошибок нет, хотя как раз сейчас они бы очень пригодились.
>>12851
>>12862
Видимо, так и придётся сделать. Хотя я ведь до этого устанавливал другие библиотеки и фреймворки нормально. Почему именно Хибернейт так странно себя ведёт?
В общем, скачал hibernate-entitymanager той же версии, что и core. Ошибка осталась. Как дальше действовать? Какие ещё нужны зависимости?
>Хотя я ведь до этого устанавливал другие библиотеки и фреймворки нормально
нет чел, ты этого нормально не делал
А никак! Ебись как и раньше ручками.
Вообще, конечно иммутабельности должно быть в меру. Но увы - хайп дривен девелопмент.
Градл или мавен - разницы нет. Просто мне что-то подсказывает, что дело не только в зависимостях (но как минимум в них).
Ант сам по себе не резолвит зависимости, это почти то же самое, что ты делаешь сейчас, но не командой в консоли, а в виде xml.
> Спринг сразу кидал ошибку, когда отсутствовала какая-то зависимость
Проблема ещё и в том, что у зависимостей могут быть свои зависимости, и сходу это не определить, пока не попробуешь что-то вызвать.
> hibernate-entitymanager той же версии, что и core
А и правда, теперь вроде как он влит в core. Значит, не в этом дело. Но зависимости все собрать по нормальному тебе все равно придется.
>Спринг сразу кидал ошибку, когда отсутствовала какая-то зависимость.
И тебе это приятно было? Я по столу кулаком бью, если хоть что-то красным текстом увижу.
Рейт вторую версию.
Зачем?
NoOpPerekatManager
Это, значит так, шутка что ли, блядь!? Во-первых, шутят здесь только два человека с помощью третьего человека - вычищателя спринга! ВЫ БЛЯДЬ МНЕ ТУТ НЕ ШУТИТЕ СО МНОЙ! ЧЕ ТЫ ХУЙНЮ ПИШЕШЬ, МУДИЛО!? МУДАК! МУДИЛО! ХУЛИ ТЫ БЛЯДЬ УМИШКО СВОЙ КУЦЫЙ ПОКАЗЫВАЕШЬ БЛЯДЬ!? КОМУ ПОКАЗЫВАЕШЬ УМИШКО?!.
Но мы уничтожили всех захватчиков.
Ты реально думаешь что в /pr народ ореитируется на ленту, когда в шапке меню по тегам?
>>12897
>>12899
Ладно, пойду всё-таки читать туториал по Мавену. Всё равно ведь рано или поздно на работке потребуют.
Но инструкцию по ручной установке всё равно схороню. Смущает, конечно, немного, что она за 13-й год, но всё-таки.
>>12918
Ну, по крайней мере приятнее, чем когда вообще не понятно, что происходит и в какой стороне ошибка.
Я не помню, есть ли там какие либы он юзал.
Но если хочешь посмотри.
https://youtu.be/y8yKxmz6iDY
Если мне надо погадить на шарписта, я ищу последней тред по тегам. Тут не /b, тема в топе мало что дает
От таких принципиальных не спасёт ничего. Но от большинства анонов, сидящих только в 1-2 тредах, иногда от скуки листающих ленту, вполне может.
От залетных немного спасает, которые к /b привыкли.
Просто признайся, треды развиваются не так как тебе хочется.
Из одиночной спринг-дрочильне, тред стал популярный, разносторонний и живой.
Лучше уж спринг-дрочильня, чем:
1. Постоянные набеги "Java - говно мамонта и вообще кобол"
2. Повторяющиеся по 10 раз за тред вопросы от вкатывальщиков, гуглящиеся за 30 секунд
3. На вопросы сложнее чем про синтаксис никто ничего не может ответить.
С котлином повеселее, но кроме него тут ещё и рака изрядно прибавилось.
1. Вообще не реагирую, детям надо выплеснуть энергию.
В основном это гоферы, думающие, что у них в треде джависты срут (на самом деле срут там все).
2. и 3. Классика ру-форумов. Тут никуда не деться.
Лучше постить в треде годноту и обсуждать ее, чем играть в stackoverflow
>На вопросы сложнее чем про синтаксис никто ничего не может ответить.
это типа зачем нужен final?
По хорошему надо на создании распарсить шаблон, чтобы при render() не парсить его, а просто сконкатенировать куски шаблона и переданные параметры.
Финал, принтф, даты, мап, что там ещё было.
Нет бы про постпроцессоры бинов или ещё про несколько контекстов попиздеть.
наконец-то можно присосаться к живому треду. свой-то будет чуть живее скалатреда будет
Он хочет заинжектить свой тред в наш.
У ts тоже нет своего треда, но в js его тискают.
У скалы вроде интероп херовый, он там к джаве имеет не оч отношение
Ну там создатель как бы...
я не про интероп скалы с жабой и их отношение, а про то шо котлинотред будет такой лишь чуть менее мертвый
>постпроцессоры бинов
>несколько контекстов
Fun fact - обе эти темы тащил один и тот же человек
>я не про интероп скалы с жабой и их отношение
А будь ты чуть более в теме, понимал бы, что в этом и суть
Я так, смотрю, страница старт.спринг.ио просто по максимуму хипстерская:
1. Написана на реакте
2. Градл
3. Язык можно выбрать котлин и груви
4. Джаву можно выбрать 13
5. И есть тёмная тема.
>нахуй не нужны
Постпроцессоры поминать не будем, а с контекстами, да, это и пришлось объяснять
>Постпроцессоры поминать не будем
Ну почему же? Если ты не расширяешь функциональность спринга, а пилишь стандартное приложение, постпроцессоры не нужны.
>Если пилишь стандартное приложение, постпроцессоры не нужны.
Согласен. Но в нестандартных случаях нужны они чаще, чем контексты.
Ну тут согласен, у множественных контекстов вообще нет применения.
Зачем же вручную? Есть ant + ivy
Чуть выше обсуждали.
Утверждаю, что котлин и скала это совсем разные звери, как раз в смысле близости к джаве. Поэтому у самого котлина шанс "жить" заметно больше (где там скала на андроиде, например?), а также это означает, что отдельные котлинотреды имеют довольно мало смысла - там бы обсуждали тот же самый спринг и тот же самый андроид.
знак вопроса забыл
Смысл в производительности. У тебя разбор шаблона идет каждый раз как вызывается render(), а надо бы один раз его распарсить и выделить: постоянные части и места для подстановочных параметров. И внезапно выясняется, что MessageFormater такое уже умеет!
ОК. Сделай лучше синтакс, но так чтобы не бил по производительности.
тем более что это не так сложно
Тебе в БД-тред.
Но ведь констреинты других таблиц и так свалятся, если ты попытаешься что-то удалить, не удалив порождённые записи.
Джаваны! подскажите годных ресурсов где можно изучить профайлинг и оптимизацию для джавовых приложений
пока что нарыл только
https://www.amazon.com/dp/1449358454/ref=rdr_ext_sb_ti_sims_1
https://www.amazon.com/Java-Performance-Depth-Advice-Programming/dp/1492056111/ref=sr_1_32?keywords=java&qid=1582493088&s=books&sr=1-32
Ну тогда нужно подшапку про котлин и в андройд и ios тредах запостить. У нас же KOTLIN MULTIPLATFORM. Ну и в С и С++ тредах. Ведь у нас KOTLIN NATIVE.
Ну так надо будет - запилят (в андроиде уже вроде есть). Мы джава-jvm разрабы и заводим свой котлин.
Ну всё, можно успешно хлебать борщ, наш ответ хаскеллю!
В каждом ФП сраче слышал про то как меряются хвостовой рекурсией, но никогда не понимаю важность этого. Неужели трудно сразу в цикле написать?
Даже так:
generateSequence(1, {it + 1}).map(::factorial).take(10).toList()
>>13281
В ФП подразумевается отсутствие изменяющегося состояния и, как следствие, отсутствие циклов. Поэтому всё, что остаётся - это рекурсивно вызвать ту же самую функцию с немного изменённым состоянием. Практическую пользу и важность в этом всём не ищи, это придумали дохуя теоретики.
Так оно и есть, но они живут в своём ФП-манямирке и никогда этого не поймут.
твой код собирается в .jar или .war, и мавен распаковывает либы и складывает их внутрь.
Ещё есть разные модификаторы для мавена - scope - складывать или не складывать и на каком этапе
Jvm нет, но компилятор котлина умеет
Нет придела совершенства кода.
4 версия, пофиксил баги.
Я медленно потираю свою @RequestMapping...
>Поэтому всё, что остаётся - это рекурсивно вызвать ту же самую функцию с немного изменённым состоянием.
Байтоебом остается позаботится о том чтоб высрать ассемблер без циклов
Объясни смысл и конструктора и фактори метода который вызывает конструктор?
Смысл такой же, как тут: апишка для любителей фабричных методов.
https://github.com/google/guava/blob/master/guava/src/com/google/common/collect/Lists.java#L82
Чем обосновано наличие дублирования функционала? Целью запутать конечного клиента?
Для конченых клиентов есть жавадок, в котором описывается одиаковове поведение.
Вот я и думаю:
1. ФП хуёво ложится на архитектуру
2. На ФП хуёво моделировать реальный мир
И какой тогда резон вообще его использовать, кроме фокусов типа map/filter? Оно же абсолютно нежизнеспособно. Ну и ладно, здесь не место для ФП-срача, к тому же котлин не позиционирует себя как функциональный.
Старая (школа) попытка сделать мини-билдер
Например создание объекта может быть сложным или вариативным, поэтому ты делаешь небольшой фасад для удобства. А если нужен полный контроль используешь "нативный" конструктор.
Но из-за DI это плохая практика, потому что класс сразу знает о зависимостях (они жестко прописаны). Либо ты честно делаешь билдер либо не страдаешь фигней.
Так же встречаются долбокодеры которые это делают потому что так им нравится.
>Но из-за DI это плохая практика, потому что класс сразу знает о зависимостях (они жестко прописаны)
Поясни, при чем тут жесткое прописывание зависимостей
>Либо ты честно делаешь билдер либо не страдаешь фигней.
Кстати, в некоторых языках наличие именованных аргументов и аргументов по умолчанию позволяет во многих случаях прекрасно обходиться без билдеров.
И сисярп, например
Сам пока смотрю на metanit, но чет совсем тяжко, сраные конструкторы ни как не идут(
> Но со StringBuilder не выйдет.
Ну да, тут речь не о динамических штуках типа StringBuilder, а о паттерне билдер, который для конструирования дохуя сложных объектов с кучей параметров.
Ну или если билдер очень навороченный, как HttpSecurity в Spring Security.
Ну смотри у тебя есть два интерфейса
interface IFly
interface INeigh
Есть класс завязанный на эти интерфейсы
class Pegasus(val neigh: INeigh, fly: IFly)
Он ничего не знает про реализацию, он привязан только к интерфейсу.
И где-то ручками или авто, через инжектор, мы передаем конкретно реализации. Типа такого
val pegasus = Pegasus(NeighService(), FlyService())
В любой момент мы можем подменить, а в начале можем вообще заглушки передать.
val pegasus = Pegasus(SimpleNeighService(), SimpleFlyService())
Плохо когда в конструкторе мы создаем NeighService() - мы прибываем его гвоздями к этому классу.
Простая практика для простого приложения прям в main создавать все экземпляры и потом ручками просунуть всем. Как тут
https://pl.kotl.in/JCIfJovQW
Это не только модульный подход (что хорошо), но еще идеальный для юнит тестов.
>у тебя есть два интерфейса
Все отлично, но там вроде было на тему "конструктор vs фактори метод". Ладно, забыли.
На самом деле это нужно, чтобы сделать несколько статических методов, которые принимают разные параметры:
https://gist.github.com/Stingray42/feb16623f1328dd8d1eb42fafdec8612
А вот чем это лучше нескольких конструкторов, я хз. Если нет деконструкторов, ничего не мешает делать все те же действия внутри конструкторов. Но чаще я вижу вариант с фабричными методами. Кто-нибудь объяснит, в чем смысл?
Если не то, то давай код. Я не телепат.
В общем случае, правило такое: нельзя создавать реализации сервисов в том же файле/классе, даже если они в статическом методе. за редким исключением, конечно
>за редким исключением, конечно
Не таким уж и редким, стандартный пример - подкладывать реализации по умолчанию.
https://github.com/jtwig/jtwig-core/blob/master/src/main/java/org/jtwig/JtwigTemplate.java#L36
Вопрос такой:
есть значит спринг бут приложуха, которая использует кафка стрим, который агрегирует данные из топика в кейвалью стейт стор а.к.а. РоксДБ, и потом этот агрегат отдаёт по ресту. На одном инстансе всё работает заебись, но кому нахуй нужен один инстанс? Я хочу иметь топик с дохуя партишенами, и дохуя инстансов приложения, для процессинга данных. И тут возникает проблема, как посмотреть на все данные целиком? Потому что инстанс приложения с кафка стримом хранит только часть данных, а точнее, только из тех партишенов, которые ему заассайнил брокер.
Т.е. если у меня, например, топик на 4 партишена, я поднимаю два инстанса приложения с кафка стримом, в итоге получается по 2 партишена на инстанс. И каждый инстанс имеет доступ только с локальному стейт стореджу. Тобиш половина данных у меня персистится в одном инстансе, а половина в другом. Ну и всё это реплицирейтся где-то в брокере, но туда доступа нет. Чтобы их объединить, нужно херачить по РПЦ(например, по ресту) из одного инстанса в другой, использую кафка брокера, как сервис дискавери.
Ёбаный стыд, это что за пездец? И как это должно работать в том же кубернетисе? Мне чё, на каждый ПОД сервис отдельный поднимать, чтоб до него можно было достучаться? Или как ваще?
Я уже и забыл про джавовый костыль с дефолтами.
>нельзя создавать реализации сервисов в том же файле/классе
Речь именно про сервисы. Но это конечно больше философская тема
>Не таким уж и редким
Надо считать
>половина данных у меня персистится в одном инстансе, а половина в другом
Изначально откуда потребность в такой архитектуре взялась, чтобы инстанс персистил только локально?
Ни откуда, кафка стримы так работают, хочешь ты этого или нет, когда ты каким-либо образом аггрегируешь кафка стрим, он персистится в память, на диск, реплицируется в брокер и т.п.
Вопрос в том, как получить картину на все данные целиком, без ебли между инстансами сервиса, и как это делать в реалиях кубернетиса того же.
>Они уже есть в сторедже
Но что-то видимо этот сторедж не очень подходит для всех твоих задач, раз ты пришел с такой проблемой
Для евент дривен архитектуры нужны:
1. Мессадж брокер
2. Персистант евент сторедж
Это всё делает кафка.
А если все же очень хочется обойтись только тем, что уже есть на твоих инстансах, только бы их как-то объединить, можешь, например, взять IMDG типа hazelcast. Для сервис дискавери там уже есть решения.
Спокойно. Я так понимаю, у тебя уже все заебись, проблемы нет?
Ничем, разницы никакой.
Единственно, что методом ты его можешь как-то обозвать как надо, особенное если типы совпадают.
Date.ofEpochTime(...)
Date.ofFormatString()
Date.ofString()
Теперь можно использовать любые символы для обозначения подстановки.
А какая разница? Если ты хочешь сказать, что пилить микросервисы, которые дёргают друг друга через рест это леджит решение хоть чего-то, то иди дальше хелоу ворлды пили.
подозреваю что там уровень аггрегатора погоды
Могу конечно просто тыкать в инициализере на нужную зависимость и копировать только часть pom'ника. Но есть ли список красивый?
>кафка только мешает
В роли очереди сообщений, почему бы нет. А вот как основное хранилище, это, конечно, интересно...
Да, я им пользовался, просто смущало слово starter у каждой зависимости. Но это одно и то же, как я посмотрел.
Там никакой разницы нет, стартер или не стартер. Если генерить проект, тоже будет пачка стартеров. Смысл этого в том, что в таком-то фрагменте бута уже все зависимости подцеплены и сконфигурированы.
По-хорошему надо использовать какую - нибудь распределенную БД. RocksDB это не более, чем движок хранения данных. Поверх него уже можно накатать распределенную БД (как это сделали в CockroachDB например). То, что ты сейчас пытаешься получить полную картину -- это сам понимаешь нетривиальная задача в условиях множества узлов и Kubernetes тут тебе не оч поможет. Не, в принципе можно, но я думаю это пиздец какой гемор.
Короче, мой тебе совет посмотреть в сторону нормальных попенсорс распределенных БД и туда персистить свои сообщения. Под нормальными я имею ввиду консистентные, с ACID-гарантиями, с транзакциями и все такое. Благо, сейчас с этим не так туго, как лет 5 назад. Лично моим выбором был бы FoundationDB. Только почитай в начале доки на нее, там оч много нюансов и модель данных там низкоуровневая (хотя есть надстройки над ней, который я думаю даже для JPA приспособить можно). После того, как все в базу сохранишь -- можешь легко проитерироваться по всем записям. Например, в FoundationDB для этого существует специальный AsyncIterator, который позволяет пробежаться по всем ключам в кластере в промежутке [rangeStart, rangeEnd].
Да, я так понимаю, тебя смущает, что в кафке все твои сообщения уже есть, но по вообще всем сообщениям пробежаться нельзя, так? Я хз, мб ты просто не нашел в доках это, но советую еще раз поискать. Если таки возможности действительно там нет -- выкидывай ее нахуй и юзай FoundationDB как очередь. Вот пример:
https://apple.github.io/foundationdb/queues.html
Что ты распинаешься? Человеку первым делом написали - клади в отдельную БД. Говорит "зачем, уже все есть в кафке, и вообще не лечи".
Да, думаю чел хуйней страдает. Я бы спокойно сохранял все в отдельную бд, не переживая, что оно уже где-то там лежит. Тем более в кафке эти сообщения не вечно же лежат в RocksDB, а подчищаются время от времени.
Вот теперь можно и пулл реквест в jdk создавать. Только кому это нахуй надо, как и жавадоки.
>https://gist.github.com/Stingray42/feb16623f1328dd8d1eb42fafdec8612
Нахуя, если есть апачевский StrSubstitor в commons-lang библиотеке? В котором и экранирование есть, и он даже рекурсивно резолвит плейсхолдеры.
>а подчищаются время от времени.
Стейт там вечный, а вот сами логи компресятся, и заново собрать стейт может быть накладно.
Создай один репозиторий и делай всё там. Несколько не создавай.
Сри, если совсем стесняешься, то можешь приватный репозиторий завести. Это больше для тебя самого, чтобы ты через год мог посмотреть и вспомнить.
В смысле вечный, ты хочешь сказать, что сообщения никогда не удаляются оттуда, даже если все получатели ack-нули его?
Ну всё, теперь можно смело добавлять категорию OPEN SOURCE PROJECTS в резюме.
Котлин тут не в тему, там похожее только compile-time
Набросать скрипт за 5 минут, что-нибудь сделать с файликами, сохранить результат и забыть. Иде дольше запускается.
Делать на баше что-то сложнее grep/sed/awk/curl - пиздец. Да и аналога питоних либ нет, лол.
Да. Не всё свободное время кодирую, а жрёт она дохуя.
И это именно интерполяция, а не шаблоны, как ты назвал.
Темплейты это совсем другое (это полноценные темплейты FreeMarker, Mustache, Mustache)
Всегда можно было.
Питон перделка без модульности (кроме имитации через костылы virtenv, то есть даже js модульнее питона, лол)
Можно и так. Котлин, неожиданно, может в скрипты *.kts (c kscript можно вообще разгуляться в башскрипты)
Но я предпочитаю понятие "утилит" и использую толстые jar-ники (потому что часть утилит написаны когда-то на джаве)
Баш это лютый пиздец.
>Иде дольше запускается.
Для пук-скриптов тебе хватит комьюнити версии, которая не имеет 100500 плагинов и которая запускается быстро.
В край можешь писать на vs code, какая разница где градл таски дергать.
Синдром утёнка в программировании, это серьезный показатель профнепригодности, никогда такое в слух не говори.
>Как в котлине это сделать с неизвестной во время компиляции строкой?
Тогда это не инторполяция строк, используй форматирование.
Не нужно путать два понятия и писать форматирование при простом сложение строки, как это сдали в питоне, от чего строку порой не возможно прочитать.
Для форматирования используй Си-стайл
"%.3f".formate(1.2456)
>используй Си-стайл
Это дефакто стандарт. А то сейчас зумеры набегут и расскажут на коленках свое форматирование.
>Тогда это не инторполяция строк
>Не нужно путать
Вот анон тот и сделал не интерполяцию, а простейшим базовый шаблонизатор, типа StringSubstitutor из commmons. А ты заебал нотации читать. Не путать, блять, ему.
Тот анон сделал форматирование, которое в джаве уже есть. Нам нужно больше форматирований, особенно похожих на интерполяцию строк как в котлине, си шарпе...
Зачем нам скучный String.format()!
Действительно, зачем нужны все на свете шаблонные движки, ведь уже есть форматирование с прекрасными и главное наглядными %s и %f.
Тебе строку отформатировать или тебе шаблон целый нужен, ты уж определись?
Но главное и то и то давно уже есть, в случае форматирования вообще де-факто стандарт есть на все языки.
Хипстерский стайл, который не вводит никаких фич, не нужен. Ты увидел интерполяцию строк в каком-то языке и тебе просто захотелось такое же в жабке, но ты даже не погрузился в предметную область.
Одно дело отформатировать строку, другое дело шаблоны, которые нужно как минимум собирать/кэшировать и прочие тонкости (херова тучу тестов на все извращенные вариации твоего синтаксиса).
Поигрался - молодец, но не надо позиционировать свое говно, как истинное решение, соревнующийся с де-факто стандартом форматирования. Ты и пятой части не знаешь, что оно там может сделать и какие кейсы за десятилетия оно там может решить (о которых даже фантазии у тебя не хватит).
Будь скромен, зумер.
Можно похоливарить (а что еще делать в утонувшем треде) над шарповской интерполяцией, она же и в пыхтоне почти такие же.
{<interpolationExpression>:<formatString>}
Тут, вроде, сначала кажется очень удобным, коротко, зумеры и хипстота оценит. Но в то же время в шарп версии рождается какой-то псевдо синтаксис, когда в котлине выражение такое какое есть в реале (вообще котлин разворачивает все в простую конкатенацию).
Например как годно продуман си-шарп. В котлине надо расширять функцию чтобы получить форматирование даты. А в шарпе это:
$"Сейчас {date:yyyy-MM-dd}"
И тут вроде столкновение знаний. Дохера умные проектировщики скажут - форматирование это не есть тоже самое что и дата, и держать это вместе не имеет смысла. В тоже время форматирование даты это пиздецки частое явление.
И кто окажется прав? Сеньоры-помидоры архитекторы, или же опыт? А права окажется рациональность. Потому что предметная область это отражения реальности, а не маня-фантазий архитектора, как должен выглядит мир, его глазами.
>>14420
>>14428
А теперь посмотрите как форматируют дату в го!
Вот так же, человек с опытом, совсем не зумер, взял и тупо положил болт на многолетний опыт паттернов даты и высрал свое невьебательское чудо. Теперь есть даже целый сайт, который конвертирует привычный паттер в го формат.
Ну будьте такими же долбаебами, стремитесь унифицировать знания, а не размножить стандарты (если конечно ваш вариант реально не "серебряная пуля")
Без скидки у них стоит 18к и это точно не стоит того.
Если это все говно, то можете подсказать на что лучше потратить 5-10к(больше у меня нет) на изучение джавы(чтобы потраченные деньги тебя стимулировали), чтобы это дало какую-то пользу, а не просто выкинутые деньги.
Ну так уже. Но я сижу как-то мало. Часа по полтора-два в день. Хочу найти какую-нибудь мотивашку, в виде платной недорогой приблуды, чтобы сидеть по 3-4.
отдай деньги мне, буду тебе каждый вечер звонить и спрашивать что нового узнал
Ты можешь мне платить, я тебе буду розгой мотивировать.
Да вообще, одни вкатывальщики с хеллоуворлдами на котлине и латентные питонщики, даже вычищатель куда-то пропал.
нет чел...
ЧОООО? Че за семантика-хуянтика какая-то. Нахуй надо. Давайте свой молодежный синтаксис запилим а семантика в рот она ебись. Вон там jls какой-то тип, норм. Мы чо, лохи шотль хуетой какой-то заниматься)))
Но мне не надо, чтобы он запаковывал. У меня есть папка для классов, и компилирую я, соответственно, тоже туда. Вот что Мавен будет делать с зависимостями, просто рядом их положит?
Ничего не будет делать. Когда тебе понадобится что-то собрать, тогда и запакует их.
То есть, если я хочу пока ничего не запаковывать, нужно самому репозиторий добавить в classpath?
Сервлеты это часть жабы ЕЕ, они не включены в JDK. Сидят в пакете javax, нужно подключать отдельно. Проще всего подключить через Maven:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
Для хэлловорлда можно и jar-ник скачать. Но я тебе советую начать пользоваться мавеном, и новые проекты начинать только на нём.
Поздравляю. Теперь ты слишком стар для разработчика. Пора в менеджмент идти, ну или на пенсию.
Но ведь жабу ЕЕ выкинули из 11 ждк. Как же теперь их дальше развивать? Они же у спринга под капотом.
Да это понятно, его пивотал делает. Но они с оглядкой на фишечки ждк, который пилит оракл и томкэт, который за фондом апачей и определённые фичи можно профинансировать если надо. Но от сервлетов никуда не деться, а jakarta ee похер на спринг.
Это какое-то упражнение в составлении фраз из незнакомых умных слов?
Одна сторонняя либа опирается на другую стороннюю либу. Такой сценарий очень распространён, все либы во всех языках так и живут, и срать они хотели на то, что используемые либы не входят в стандартную. Почему именно с сервлетами должно быть как-то иначе?
Это было в 2003?
У меня вебапп, так что запускает контейнер. Я так понимаю, мне нужно воспользоваться его настройкой classpath, либо разместить репозиторий в одной из его папок для либ?
<option value="http://www.example?action=show&global=true&root=1000002"> source </option>
Тебе нужен мавен-плагин, который запустит внутри себя контейнер
Какое-то все слащавое кроме повелителя мух.
Спроси у Ерохина, может ему училка дала.
Jsoup.parse(html).selectFirst("option").attr("value").replaceAll("&", "&");
Не на крупном (просто проект рано свернули).
Там вроде завезли для котлина что-то, понадобиться асинхронное, определенно рассмотрю первым (если только у них корутины не свои).
Обсуждать-то даём, но ему надо именно нести в максимально широкие массы, как видим
Давно пора.
И я так думаю. Не хочет он после 500 постов постить, ему чатик со всей доской нужен.
Мы тебе не мешали обсуждать, алло.
потомушто -v нету
Макось разве не posix тоже?
Ок, мёртвый так мёртвый.
Ты теперь можешь делать хеллоуворлды разными способами. С пакетами и без, из консоли и иде, из-под разных ОС, с разными версиями джав, через варарг или обычный стринг[] аргс.
Из vim и emacs хоть делал?
А иде не нужна, лучше все классы и методы помнить. И возвращаемые значения.
Поставил напоминалку.
А ты можешь?
Уметь в олимпиадное программирование != уметь делать что-то практичное.
Напиши пет-проект. Пользы куда больше, чем от ёбнутых задачек.
Забыл самое главное - вложенные проперти.
record - зачет (хотя в целом нахуй не нужно)
text block - фейспалм, они ебанулись там?
На РАБоте обычно лютый говноэнтерпрайз. Возьми какой-нибудь ретро-проект из экселя и реализуй под жабой.
Проще было бы уже тогда компилировать txt файлы, чтоб они сразу в виде объекта были доступны.
Реши за
На sql.ru у дидов спроси, найдется 100%.
"Ясказал" или все же есть зачатки аналитического мышления?
А это и есть гитхаб. Ну гитхаб я никогда не котировал. Всё бесплатное пишется для тщеславия.
а ты шо ломбок не юзаешь? у нас на районе за такое обсыкают
Какое-то древнее говно у тебя с PYPL
Проблема поиска в том, что он собирает всех студентов. В инете есть видео динамики языков и джава там забавно прыгает в период сессий.
Хто не скаче тот паскаль
это не правильная статистика! она не подкрепляет мой манямир!
Он был всё со своего появления. Кто-то всерьёз воспринимает рейтинг, где бейсик выше жабаскрипта?
То, что фронты вопят о себе на весь интернет, не отменяет того, что есть куча тихих дядек-прогеров, из года в год поддерживающих своё легаси. Просто их нет в твиттере.
Тогда тем более всё. Глядя на этот рейтинг, можно говорить "на таких-то языка тонны говна мамонта", но никак не "топ N языков, которые обязательно нужно выучить в 2к20".
А джаву нужно учить или там тонны говна мамонта? Мне джава нравится, правда я других ЯП не знаю, сравнить не с чем. Но все равно нравится.
Говна мамонта хватает, но и новые проекты пишут. Сильно зависит от того, куда попадёшь. Да и на любом языке хватает легаси.
>>16842
Это сейчас они хотя бы научились немного рисовать в сравнение с другими данными в инете, раньше у них вообще своя маня-статистика была.
http://pypl.github.io/PYPL.html
Тут внизу объясняют почему они не tiobe
Маркетологи идеи.
Есть.
Джавач, пора снова строить график в экселе. Кто-то должен это делать, а если не я, то кто? Вооот. Также, глуховато что-то в последние несколько дней, скучно без котлина, скучно.
Че еще сделать блядь
Просто я вангошерлок.
Вы лохи на кабуле
Какая разница, как он работает? Ну, узнаешь ты про прокси-классы, и дальше что? Твой код будет эффективнее, а волосы станут мягкими и шелковистыми? Хуйня это всё, как и " не знаешь ассемблер - не программист".
К сожалению, и котлинист пока занят, работа вдруг привалило много.
а ты докажи что не аллах создал бины и сниспослал их автоваредом нам в классы?
Изучал вакансии, сложилось впечатление, что в работу с Java можно вкатиться имея самые базовые: вышка, базовые алгоритмы и структуры, ООП, БД. Это так, или у меня ложно впечатление сложилось?
Сразу скажу если не понятно чем отличается .+? от .+ дальше можно не читать.
Нужно написать regExp для извлечения текста из кавычек (\\") учитывая следующие условия:
1. текст в кавычках может содержать кавычки
2. текст может состоять из нескольких блоков с кавычками
3. текст может состоять из одного символа
по сути не правильный вариант выглядит следующим образом
\"(?<group>.+?\S)\"\\s(splitterWord)
т.е предложение вида: "какие то словаа "не нужный кусок"" splitterWord, "ещё один блок текста" splitterWord, "8" splitterWord
должно парсится в
group1 какие то словаа "не нужный кусок"
group2 ещё один блок текста
group3 8
Можно вкатываться и с такими знаниями. Но больше придется по собеседованиям побегать.
Загугли вопросы java собеседование, там есть ссылка с 400+ вопросов, если не знаешь хотя бы несколько на собеседованиях в центральных городах и больших компаниях будешь лажать. Если живешь где нить далеко и амбиции не завышенные, то в какую нибудь небольшую контору с перечисленными знаниями попасть не сложно.
Чето я не понял сложности задачи видимо? И зачем делать много групп когда можно итеративно всего через одну группу?
Уже понял, что задача не решаема, плюс криво пример писал нужно было решение для той же задачи но без использования splitterWord.
Если в крации задача такая распарсить текст "в link заменить слово "x1" на "x2" и "x3" на "x4" "
и для всех x внутри может быть любое количество кавычек
решение паттерн:
.?слово\"(?<group1>.?)\" на \"(?<group2>.*)\"
тоесть эта штука найдет весь текст, потом достать уже через matcher group2 и на неё рекурсивно применять тот же самый паттерн пока ничего не найдем, короче та ещё херня.
ошибся
.?слово\"(?<group1>.?)\" на \"(?<group2>.)\"
первая группа lazy вторая бедер до самой последней кавычки
Тоже сталкивался что некоторые задачи в один паттерн не решаются, либо просто для понимания проще разбить (по принципу "код пишем один раз - читаем потом много раз").
Ещё неплохо было бы следовать правилу: если что-то хуёво выражается регекспами, то не стоит их здесь использовать.
Это срачегенная тема, но под LSP ещё и подразумевают, что ты в подклассе не только интерфейс не сломаешь, но и логику, переопределив поведение базового класса. На практике это сделать трудно, поэтому единственный реальный способ следовать LSP - вообще никогда ничего не переопределять.
На сервере сделать апишку для этого, а на клиенте дёрнуть её через fetch или XMLHttpRequest.
А, так ты через это хочешь.
На сервере будет обычный спринговый контроллер, у него на входе будет DTO с данными формы. Гугли "spring controller accept form".
Чистой джавы не существует
Ну, можешь обмазаться сокетами, с нуля написать HTTP-сервер и обрабатывать через него формы. Ты уверен, что хочешь этим заниматься?
В джаве есть нормальные HTTP-серверы.
Это я и был.
Под чистой джавой, вероятнее всего, подразумевается SE. У ЕЕ, вроде, есть свой SDK, но вряд ли у того анона она имеется, раз он такой вопрос задаёт.
Да, а на джаве нужно сначала подключить сервер как библиотеку, и джава уже становится не чистой, увы
... И всё, больше ничего на чистом го не сделать. Да и на грязном далеко не уехать.
>А на чистом го
Он бы передавал из метода возвращаемое значение и boolean - успешно ли выполнился метод, или нет.
Пришло 200 OK с какой-нибудь хуйней типа nil at 0x000fdd: Segmentation fault - Core dumped. Твои действия?
Значит, всё норм, клиент запросил сегфолт, сервер успешно упал и отчитался об успехе.
Нет, я загуглил, что такое FizzBuzz, и остановился где-то на втором варианте отсюда https://www.tomdalling.com/blog/software-design/fizzbuzz-in-too-much-detail/
Только использовал print, чтобы не использовать конкатенацию строк.
Нет бы расспрашивать и понять границы знаний потенциального будущего работника.
@
Нет, буду давать странные задачи, не имеющие отношение к предметной области текущей работы. И думать какой я невьебаться умный.
Что ты там не смог в FizzBuzz, там же на 3 IF'а?
Надо было подключить этот пакет и сказать что ты против велосипедов:
https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
ЭТО ХОРОШО, ЧТО ВЫ СЕНЬОР С 10 ГОДАМИ ОПЫТА, НО ПРЕДСТАВЬТЕ: ВОТ У ВАС ЕСТЬ ДВУМЕРНЫЙ МАССИВ...
Пройтись автозаменой по проекту
Писать доки на русском
Смириться, как и с кривыми переводами идентификаторов.
Да вот хрень поймешь ему нужны в середине запятые или нет, тут вообще корявый CSV
>>18539
Я кстати попробовал с регуляркой, но с наскоку не взял такую задачку и вообще я пьян, отстаньте
Можно так:
https://pl.kotl.in/uDLxCpInd
>>18539
Лан, не буду я страдать, конечно в котлине есть вменяемый триммер. Но так не интересно.
https://pl.kotl.in/vXKs57TwB
Это местный революционер из дуркасофт.
>Ты мне котлин нахуя суешь?
Чтоб ты нормальный trim ручками не писал, а тем более регулярной это не вздумал парсить.
А на питоне мог бы написать:
", , , someword, , someword, , someword, , ".strip(" ,")
И никакие регулярки не нужны.
Ебать раскраска
>125 steps
Ты просто победитель по жизни. Трудно в цикле пройти сначала и с конца до первого символа который не равен ' ' (пробел) и ',' ?
Трудно или нет, спроси того чей вопрос, попросили именно регулярку - я доставил. Если лично мое мнение интересно,
то я скажу что микрооптимизации это то еще зло, можно день убить на суб-рутину это а глобальную задачу не сделать. Так что скорее проблем-солвер, а не победитель. А ты видимо стримы даже не используешь, да? "Зачем, что мне трудно цикл написать чтоли?"
У тебя строка, а не регэксп. Бэкслеш дополнительно экранируй еще одним бэкслешем.
s/<\/?[\w\-.]\s+>//
Регулярки зло если их используешь везде где не нужно.
Это тебе не питон, где все тормозит так, что можно ложить болт на оптимизацию совсем.
Это конкретная задача "убрать все пробелы и запятые до слова с конца и с начала".
Хороший вопрос для нубо-собесов, посмотреть как будет мидл решать (побежит лепить регулярку или сделает аналог trim c StringBuilder).
Он не понимает что надо маску вычленить.
В жабке вроде нет как в пхп и перле замена с подмасками?
и замени [^\w] на [ ,]
и не совсем понятно почему +?, а не *?, вдруг есть вариант где строка не имеет "шума" из запятых.
Обрати внимание - регэксп решает более общую задачу - "убрать все что не буква". Через неделю тебя попросят к пробелу и комме еще crlf добавить, двоеточие, слеши и тд. Удачи в цикле это все перебирать. А с классом \w при нужных настройках и юникод можно обрабатывать. Нужно это или нет это другой вопрос. Я привык домысливать что именно хотел сказать заказчик ("проблема XY"). Конечно без фанатизма конечно же
По последнему пункту - согласен, начало и конец неконсистентны, недосмотрел.
>Через неделю тебя попросят к пробелу и комме еще crlf добавить, двоеточие, слеши
Для это и есть (или пишут) trim с varargs чаров:
trim(',', ' ', ':', '\', '\n')
И кстати регулярка накрываться когда, у наc меньше двух символов, даже если (\w.*?\w)
", , , a, , "
Поэтому, я вчера с пьяну так и не понял как сделать универсальную регулярку.
А не, перестает первый вариант работать (писать без тестов - зло)
Тогда я не знаю, надо звать гоферов, пускай помогут.
Пророческий
стрип же.
de function, что не так?
Запятые в середине просили оставить вроде.
Ну значит умник - долбоеб, аноны - молодцы.
Вариант самый шустрый, но опять двухбуквенное ограничение.
Что характерно, даже во всемогущем спринге у класса StringUtils не нашёлся нужный метод. Можно только один какой-то конкретный символ указать, но не список.
String s = ", , , someword, , someword, , someword, , ";
int a = 0, b = s.length() - 1;
while (s.charAt(a) == ' ' || s.charAt(a) == ',') {
a++;
}
while (s.charAt(b) == ' ' || s.charAt(b) == ',') {
b--;
}
System.out.println(s.substring(a, b + 1));
Да понятно, что эта задача уже сотню раз решена в десятках либ. Речь была именно про весну.
При запуске вылетает NullPointerException
В чём проблема? Надо для textfield создать обработчик или использовать проперти?
Уже разобрался
SpringBoot.buildTodoApplication()
На гитхабе такого навалом. Открываешь, вбиваешь в поиске фразу, видишь кучу примеров проектов, учишься.
https://github.com/Nasruddin/spring-boot-samples/tree/master/spring-boot-todo-application-full
ТЗ, говоришь? А как насчёт фантазии?
Ну, можно взять какой-нибудь реально существующий туду-лист jira, лол и сделать клона.
Её ни у кого нет, кто шаблонные петы пишет с целью показать на собесе. Так и живём.
https://www.youtube.com/watch?v=HKo5DFxc6nI
Слышал у вас там настолько ад абстракций что уже даже фреймворк для конфигурации фреймворка сделали
Легко.
> ад абстракций
Конкретно в фреймворках этого нет. А вот многие проекты этим да, грешат, но такие кодеры на чём угодно так будут писать.
Говорят, что очень легко, и у всех технологий есть прямые аналоги. Но язык может поначалу вызвать отторжение. Сам немного на сисярпе кодил.
Пошел нахуй отсюда!
Забавно что джависты как в криокамере не знают популярные тенденции шарфика, так шарписты как в криокамере не знают о jvm мире.
Один я котлинист, знаю про всех.
На, покушай из котлин треда
>Q: Котлин это что-то про разработку на андроиде?
A: Нет, не только. Объем разработки на JVM высок, но в основном где-то на галерах. Смотрим статистику:
https://www.jetbrains.com/ru-ru/lp/devecosystem-2019/kotlin/
Бля, хочу свою БД распределенную написать на жабе. Чтоб с транзакциями, асинхронщиной и все дела. Потом склеить это все со spring-data и spring-webflux. В голове есть примерная картина архитектуры, как ето должно все работать. Знания тоже имеются для этого. Но боюсь начинать пиздец. Вот ето был бы охуенный пет прожект. Жаль я никогда за него не возьмусь даже :(
Бояться говнокодить? Ладно я ленивая жопа, а это что-то новое.Скорее всего ты тоже ленивая жопа, просто завуалировал проблему и оправдал для себя.
Котлин - не обязательно андроид. Он совместим с джавой и, следовательно, с её сферами применения, тот же бекенд.
Я вот ни разу не писал на котлине для андроида, но вполне успешно написал на нём спринговую аппку.
Хорошая идея. Жаль, что многие идеи на корню вырезаются вопросом "Зачем?". Да и забей на этот вопрос, просто пиши в своё удовольствие понемногу.
А ты не делай идеально. Делай в самом первом приближении, "в лоб", а затем итерационно улучшай. У меня была подобная хуйня с одним проектом (не программирование), и из-за стремления к идеальности он далеко не продвинулся. Затем я забил на идеальность и начал делать в лоб, сразу всё начало получаться.
Угу.
Вот только реляционная модель данных (в нормальной форме) для распределенных решений не очень хорошо подходит. Из - за большого кол-ва join-ов в типичной бизнесовой БД вся производительность летит к хуям. По крайней мере такое мнение было распространено, когда распределенные БД только - только стали доступны обычным компаниям (имею в виду HBase и Cassandra).
Могу посоветовать:
https://www.amazon.com/Database-Internals-Deep-Distributed-Systems/dp/1492040347
Там конечно не очень разжевано, но чисто по верхам пройтись самое то. После этого уже можно идти читать статейки про то, как реализуется конкретный компонент БД.
А вообще нет такой книжки (по крайней мере не видел), где прям вся архитектера БД, каждый ее компонент был представлен очень точно. Ибо это сугубо практическая вещь и каждый педалит ее по-своему. На бумаге ничего не доказывается. Все просто прогоняется на рандомизированных тестах много-много раз, с введением искусственных отказов того или иного компонента, типо диска или сети, и так убеждаются в корректности БД в целом.
>>19480
Мне нрав SQL, по выразительной мощности ничего круче я не видал
>по выразительной мощности ничего круче я не видал
Наверное и от CSS тоже получаешь удовольствие?
Спасибо :3
> вакансии в веб на котлине
Их действительно сейчас мало, но относиться к этому надо несколько иначе. Не будет сейчас такого, что ты найдешь вакансию с котлином, придешь туда со знанием одного котлина, будешь на нем только и писать и ничего больше не видеть. Но котлин это штука, которую надо держать в уме, когда вспоминаешь, что джава это
>пожилое говно говна без сахара
Потому что в реальности может получиться, к примеру, так, что ты придешь с джавой на джава-вакансию, и обнаружишь, что чуваки там присматриваются к котлину и начинают осторожно на нем писать новый код, а ты с радостью присоединишься к этой инициативе. Джаву при этом знать и использовать нужно будет тоже, но в этом нет проблемы, это очень близкие штуки.
Тут примерно как с java 11+. Тоже далеко не везде еще есть, но это не повод туда не смотреть.
>нахуя отдельный тред делать было
Повторяли уже много раз, просто одному евангелисту (не мне) хотелось миссионерской деятельности для максимально широких масс, а этот тред не перекатывают
Расскажи как собеседование проходило. Боялся? Какие вопросы были? Тебе перезвонили или сразу сказали, что ты годен? Как прошел первый день работы? Как принял коллектив?
Нет, потому что go это не JVM, это отдельный мир со своими практиками, своими либами и фреймворками.
Работу и должность там можно указать любые, но зачем тебе именно 10 и именно от оракла?
Человек не может запустить мой jar сделанный на 1.13, сделаю на 10. А так не обязательно от оракла, просто в библиотеке профессионала был указан оракл, я им и пользовался. Крч уже скачал с jdk.java.net
А на джаве без ее? И как вообще джаву ее подключить? Я помню там какая-то еботня с xml файлами нужна.
Он всратый. Что Гусь, что Даггер.
> А на джаве без ее?
В простейшем случае хватит синглтонов, лол. Вместо
@Autowired private Service service;
Будешь писать:
private Service service = Service.getInstance();
Но наверняка есть и другие реализации DI.
> И как вообще джаву ее подключить?
Например, добавить в мавен javaee-api. Ещё понадобится сервер приложений, тот же wildfly.
> Я помню там какая-то еботня с xml файлами нужна.
Это для конфигурации.
Ну то есть там по прежнему нужно несколько отдельных хмл файлов, вместо одного вменяемого жэва-конфига.
На джаве только корутины нельзя написать, и то скоро будут.
Кидаю тебе ссылку на www.bad-domain и ты сосешь хуй, потому что не умеешь пользоваться классом URI.
>можно на джаве написать
Все что угодно можно написать на любом тьюринг-полном языке, вопрос только зачем
Тот просто пример и там есть некоторые баги в логике.
А вообще, тру путь - валидировать только нормальные ссылки, а все попытки и перджежи вычищать другим парсером.
Работает при точном совпадение, для неточного там достаточно строчку заменить.
Ебло
Это говно мамонта для Java EE, чтобы писать SOAP-ные веб-сервисы.
Схера тогда не рабочий?
Тебе сказали что парсер работает только с валидными ссылками, подчищать невалидное - задача другого парсера.
Но специально для тебя пофиксил.
https://pl.kotl.in/7uIPUbPmD
У растеров вообще оказался регекс обрезанный, ниче, умудряюся даже кодить на этом.
Ты же в курсе что для URI домен ftp.bad-domain будет валиден (потому что это валидный домен)?
Надо спеку читать, может ли доменная зона иметь дефис (скорее всего может, потому что это тоже домен-левел)
Так что соснул ты. Потому что твоя URI это примитивный топорный парсер. А руками ты можешь достичь большего, например проверить префикс в доменной зоне.
Ты вообще не понимаешь, что такое домен и поддомен, и не в состоянии решить поставленную задачу. Пошел нахуй из серьезного треда, иди дальше свои регекспы в котлин-треде дрочи.
Смотри
www.domain.ru // это домен
www.domain.ru. // это тоже домен
domain.ru. // это тоже домен
ru. // это тоже домен
. // это тоже домен
Зумер нИхера не знает спеку но уже оплевал тред слюной с криком "Я ТУТ ПРАВ!" Лолнул.
чел ты даун
ты реально нихера не представляешь ни задачу, ни предметную область, зато настрочил хуйни в онлайн-редакторе котлина
забирай свою хуйню и уебывай, нормальные люди все равно будут использовать InternetDomainName.topPrivateDomain из гуавы
>тебе неймется
У нас просто на работе одни толстые, волосатые мужики, а так хочется милого джуниора потискать.
Типа, хочу писать f"Строка номер {smth.getRnd()}", вместо того чтоб сначала форматирование делать, а потом аргументы сучить. Если есть, то как называется? Если нет, то почему?
Нет, нету. Даже сырых строк нету. Есть String.format.
>Если нет, то почему?
Уёбищный систаксис.
String.format() есть, можешь сделать статический импорт и делать просто format().
Дотнет хорошая платформа (как и JVM), но если прям реально зудит, то после шарфика лучше котлин заюзать (и да, я про бэкенд).
Смотри на котлин как на typescript для javascript. Как бы без js никуда (как и без джава либ), но ts дает некоторые полезные плюшки.
Как на работе отпустит чуток, планирую даже навернуть kotlin-js (есть немного юзер-скриптов на tampermonkey, как раз самое то).
И да, котлин мне уже заменил питон (были файловые парсеры/утилиты).
Как вообще на нем пишут ML, я не понимаю. Как только выходишь из базовых конструкций, с тобой приходит предметная область и абстракции, кодить становится нереально без типов (и хинты мало чем помогают, я уже молчу про рефакторинг через динамическую удачу).
>я уже молчу про рефакторинг через динамическую удачу
Серьезно, постоянно говорят про прототипирование. Мол, если прототипировать, то это питон!!!
Что блин?? Ты блин класс нормально переименовать не можешь, какое нафиг прототипирование вообще?? Как из непонятно чего, заменять на непонятно что? Как логику "подвинуть", если у тебя "нечто" работает с "нечто". Писать сразу хинты? Да ну нафиг, лучше мне автоматом где надо язык сам выведет через var/val
Это копия, сохраненная 26 апреля 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.