24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
>>2511542 У вас одна из таких контор, где лид запрещает использовать rabbitmq, kafka и прочие библиотеки с фреймворками, потому что "нет, мы не будем это использовать, я решил)))) просто напиши очередь поверх базы и там просто дергай запросами))))))"?
Захожу раз в полгода сюда просто чтобы посмотреть на умственно-отсталых итт и поднять свою самооценку. Спасибо, за последние 3 треда понял, что я не так уж и плох.
Есть тупой вопросец. У меня есть какой-то спринг бут проект,решил написать для него редми. У всех редмишек которые я видел есть инфа про проект и инфа как запустить через командную строку. Так вот,как предполагаемый пользователь сможет запустить мой проект если у него не установлен мавен? Несмотря на то что в проекте он есть при попытке ткнуть mvn clean install терминал скажет ему что mvn не является внутренней или внешней командой.
Бля, прислали оффер из другой компании, а я до сих пор числюсь в штате в своей аутсорс галере, сижу на бенче. Седня читал труд договор - там написано, что типа 2 недели надо отработать. И че, мне надо будет 2 недели на бенче сидеть? Так оффер тогда может уйти. Чё делать то?
Вы во время собеса переход вообще не обговаривали чтоли? Или ты напиздел что без работы сидишь? Две недели на старом месте отработать --- стандартная практика так то, и офферодатель, если он серьезен, отдает себе в этом отчет.
>>2511850 Ты определись для начала --- для кого ты ридми пишешь. Если для разрабов, которые будут с тобой продукт девелопить, то им ты опишешь как и к какому репу им в settings.xml креденшелы прописывать. Если для пользователей, то камон --- ты че, серьезно хочешь бедняжек заставлять билдить софтину с нуля? Пощади, чай не все родились гентушниками. Чай собери им софтинку в пакетик то, и пакетиком поставляй. Хоть бы спрринг бут мавен плагином упакуй все зависимости в один джарник.
Ну а если ты серьезен в своих намерениях, и хочешь чтобы читатели твоей ридмишки билдили твою пепяку через мавен, то ты впоролся. И проблема вообще не в мавене.
>>2511845 А может быть такой вариант, что меня сразу отпустит нынешний кабан без всякой отработки? Или это прям обязательно? Я ведь даже ни на каком проекте не состою. Кабан тупо мне за 2 недели заплатит за то, что я буду сидеть на скамейке запасных
У кабана скорее всего от твоей инициативы пригорит даже если у него на тебя рабочих планов нет. Ему со своей стороны тоже ряд процедур нужно сделать, а ты ему фактически срезаешь срок с двух недель до нуля.
Что нужно сделать , что бы контроллеры обрабатывали GET запросы с телом ? Я знаю что нужно заменить на пост и тогда заработает , но чисто логически это будет не верно. Ведь метод который подвешен на этот контроллер ничего не создает , а только выдает информацию по запросу. Записать все в параметры тоже не вариант , по тз на котроллер приходит именно json.
>>2512191 POST семантически ничего не создаёт, он просто запускает некий серверный обработчик. Обработчик может хоть выполнять поиск, хоть сохранять данные. Его используют для любых действий, не вписывающихся в концепцию круда. Вот PUT да, должен создавать ресурс.
>>2512198 В тз впринципе не сказано , что я должен использовать гет. Я так просто предположил , но раз ты говоришь что мое предположение не верно я забью хуй и напишу POST. Спасибо
Анон подскажи что сделать , что поля json парсились на русском. Не понимаю почему , но приходящие json тупо трансилами сохраняются. Типо name = Иван парсится как name = Ivan
>>2512247 Я вот с бута 2.7.3 в январе-феврале на 3 с 6 спрингом буду переходить. Думаю должно все бесшовно пройти. На жабу 17 я месяца 3 назад перешел. Но там микросервис в 10к строчек, который я на 2/3 переписываю уже 3 раз.
>>2512266 Если бы не желание тимлида поэкспериментировать с носикульными базами и я переписывал бы сервис только из-за изменения требования бизнеса - там было бы сильно больше функционала и уже не 10к строчек, а 15к минимум.
>>2512266 Ну у нас +- 20 сервисов и вместе наверно 150к строчек. Но до релиза еще полгода и на релизе будет ну 250-300 минимум. А твои полтора 1.5кк это через сколько после выхода в прод?
>>2512310 В прод проект вышел где-то в нулевых, хз, сколько строчек тогда там было. >>2512282 У нас экспериментировать не любят, большинство доработок только под требования бизнеса и поддержки.
>>2512341 RST не имеет отношения к HTTP. Тебе надо закрыть HTTP-соединение? При использовании HttpURLConnection просто выключи keep-alive: System.setProperty("http.keepAlive","false"); Или тебе надо закрыть обычный сокет с сообщением RST? Тогда делай так: socket.setLinger(true,0); socket.close();
>>2512413 Перекатили после тысячи постов, шизика с 19 жабой нет, только аниме в шапке не хватает. Чем не легитимный? Подозреваю, что перекатывал модер, предыдущий тред удалили сразу после переката.
Вот тут прямо повторяют обсуждение того, что говорит обсуждалось тут тредов 5 назад - о том, что спринг заставляет писать процедурный код и не дает пользоваться половиной принципов солида. Но вывод не как у Егорки, который говорит, что надо все переписать, чтобы соответсвовало святой ооп идеологии. А что нужно смириться и пытаться не совсем уж говнокодить и тестить все и вся. Надеюсь, что кто-нибудь дойдет до того, что ооп и солид это просто забавные идеи на которые можно опираться, чтобы опираться хоть на что-то, но во многих конкретных случаях на них абсолютно целесообразно положить хуй.
>>2512458 Да можно юзать и ООП, достаточно применять Active record, объединив сервисы, репозитории и сущности в один класс, но придётся каждый раз туда прокидывать датасорс и другие зависимости, которые нельзя создавать на каждый пук.
>>2512458 >смириться и пытаться не совсем уж говнокодить и тестить все и вся. >ооп и солид это просто забавные идеи на которые можно опираться, чтобы опираться хоть на что-то, но во многих конкретных случаях на них абсолютно целесообразно положить хуй.
Не все так просто.
С одной стороны, я согласен с твоим выводом, анон, что переписать все на православный ООП --- мертворожденная идея. Взять тот же cactoos --- реальных проблем он не решает никаких, местами противоречит выводам самого же Егора, и внутри устроен крайне посредственно (зато на баэлдунге засветился, лол, вы только чекните: https://www.baeldung.com/java-cactoos ).
С другой стороны, я не согласен с тобой, анон, насчет того, что нужно смириться, и чего то там пытаться. Точнее, как бы это сказать... В текущей ситуации мало сказать "пытайтесь", потому что "как пытаться то блеать, вилкой чтоли"? Сказать "смириться", это как ничего не сказать. Это как пиздеть пустопорошнюю чушь о том, что код должен быть читабелен, (читабельность --- полностью субьективная и эмоциональная тема, никакого конструктива на основе читабельности построить невозможно).
А уж что касается ооп и солид, то это полный пиздец. В интернете регулярно выходят кучи блогпостов с переосмыслением солида, и такие же кучи с его низвержением и разоблачением. Читаешь их и охуеваешь --- чем эти люди мыслят, че несут блять, нахуя дышат вообще...
Короче, вся проблема в том, что дискус вокруг поддерживаемости софта засран эмоциями настолько, что сохранившие там рассудок предпочитают никогда больше не связываться с этой темой. Но проблемы от этого никуда не уходят. Для себя я пришел к определенным выводам по теме, но наверное здесь они никому не будут интересны, и это долгая история.
Бугаенку конечно можно за многое ругать, но ИМХО факт его появления в публичном пространстве довольно репрезентативен. Сейчас он забанен на всех конференциях, но 2015-2017х годах он выступал много, ярко, и регулярно собирал полные залы народу. Хуй знат зачем они все шли --- может за лулзами, может --- за тем чтоб очко горело, но я склоняюсь к тому, что ходили на него потому, что нуждались в простых и тривиальных правилах, следуя которым можно держать техдолг под контролем. Не за пустопорожними размышлениями о солиде, не за очередным пучком паттернов, сахарком или фреймворком которые все равно не работают в перспективе, а за простым блять ответом --- как кодить так, чтобы через месяц-другой не кринжевать от собственного кода. И он давал простые правила. Они конечно тоже оказались нерабочими, но в то же время были четкими, резкими, не допускающими двусмысленнность.
И любопытный факт: на самом деле отменили Егора вообще не по причине всратости его элегантных обьектов, вот даже не близко. (на самом деле --- потому что он залез в SWJшный и околополитический дискус: после драмы в backendsecret его начали жрать анальники с твиттера, а окончательно добили Барух с ПК jug.ru, когда тот с ними посрался)
>>2512487 >к определенным выводам по теме, но наверное здесь они никому не будут интересны нет, я вбросил именно потому что мне интересны подобные мнения анонов.
С выводами челиков из видосов я не очень согласен. Например тдд. Я не особо опытный, но спрашивал на созвонах у нескольких десятков опытных товарищей про тдд. Только один писал что вообще пытался писать по тдд, но быстро забил. Искал, как писать тдд на спринге. Статей мало и там мало практических хинтов, видно что автор скорее всего в прод так не пишет на постоянку. И что приватных методов в сервисах быть не должно. Вместо 6 приватных методов создать еще 2 сервиса по 3 метода, которые больше нигде не будут использоваться? И на все написать полный набор тестов. И про то, что надо тестировать применение фреймворков. А сколько тестов надо богу тестов? Вот чисто про разработческие тесты. Ну вот пишем мы эндпоинт. Там есть кастомная валидация, есть какая-то логика на 7 коротких методов на уровне сервиса, есть поход во внешний сервис, есть пукание в кафку, есть 3 запроса в базу. Ну и смотрим на все юниты нам надо по 3-4 юзкейса, и на весь эндпоинт - интеграционный уровня сервиса десяток. В итоге на один эндпоинт нужно 55 тестов. И вот ты их написал, а завтра к тебе пришли и сказали, что логика эндпоинта меняется.
>>2512501 Я тебя наебал. Это было 3 года назад почти. Попутал почему-то, извини. Откуда я взял эти 7 месяцев - хз. Он сейчас в политоту зачем то ударился и продал очко хуавею и продвигает почти что китайский 996 подход в рф.
>>2512551 А в чём проблема? Я открыл пару мурзилок и написал это: https://pastebin.com/Ueak5YUP Swagger-ui открывается по http://localhost:8080/swagger-ui/ Вводятся логин и пароль user/1234 Эндпоинты вызываются.
>>2512563 Там вроде можно прям на странице свагера как-то логиниться и скорее всего прокидывать только те ендпоинты, на которые есть пермишены, мб он это имеет ввиду.
>>2511502 (OP) Как лучше разрабатывать REST API? Постоянно слышу про API first подход, когда ты руками описываешь OpenAPI спеку, а из нее уже генеришь код. Как лучше всего фиксировать контракты для интеграции с внешними системами и клиентами? Как автоматизировать процесс генерации клиентских библиотек, чтобы условной команде мобильного клиента не приходилось неделями дрочить код, чтобы написать клиент для интеграции с бекендом, а просто подключить сгенеренную либу в зависимости через Maven/Gradle и писать онли бизнес-логику.
>>2512497 Лучше бы спрашивал: - сколько ты писал по тдд без спринга (месяц, год, два, десять лет) - что в спринге послужило таким нереальным камнем преткновения, что фундаментально не позволило точно так же писать по тдд как раньше
>>2512563 Да , я допер как сделать что бы через логинку открывался свагер и были доступны эндпоинты. Я просто помню что я на питоне делал , так что бы при вызове эндпоинта вызывалась новая логинка. Вот как так сделать вообще хуй знает
>>2512640 Ты пишешь по тдд? На спринге, на другом стеке? Как долго? Дело не в спринге. Просто я не встречал людей не на работе, ни в комментах и чатах в интернете, кто писал бы по тдд. Просто у людей, пишущих не на спринге я не особо спрашивал.
Чекнул видос. Первая половина --- тотальная база, щас редко встретишь людей которые не юлят как Борисов, притягивая солид за уши к спрингу и сложившемуся статусу кво, а честно признают что спринго-сервисы --- вот даже близко не солид, и что классы-сервисы --- это тупо процедурный код. Признать это --- сделать первый шаг в сторону от тупого поклонения культу.
Что касается ТДД, тут уже вопрос сложнее. Сначала, нужно прояснить, в чем ключевое отличие олдскульного процедурного программирования от ООП или ФП, в докладе об этом было по вершкам. Раньше, если ты вызываешь одну процедуру из другой, ты каплишь одну процедуру на другую, средств полиморфизма тогда было не шибко много. С появлением новых парадигм появились куски кода как first-class-citizenы, и возможность декаплить их через абстракции. В ООП декаплинг происходит посредством интерфейсов и Depenency inversion principle. Но все пошло по пизде. Продедурные кодеры продолжали по привычке кодить процедурно на джаве, складывая все что "какбэ об одном и том же" в один класс. Дальнейшую историю можно проследить по рассказам того же Борисова в "спринг построителе" --- сначала эти сервисы были связаны друг с другом жостко. Потом придумали фабрики. Потом --- DI контейнеры. Венцом этой ветки эволюции процедурного кодинга стал спринг.
И докладчики правильно отметили --- единственное отличие кодинга через спрингосервисы от паскаля --- возможность мокать сервисы через мокито. Все. Это --- мизер, на самом деле, да и мокинг как концепция периодически подвергается критике. И как бы --- весь декаплинг на практике свелся к декаплингу сервисов, а на уровне сервисных процедур (которые как были так и остались трушными единицами реюза) все по прежнему жестко связано. Класс-сервис не позволит тебе взять из него одну процедуру (которая на самом деле обычно как раз и является единицей ответственности по SOLIDу, а не весь сраный сервис) и покрыть тестом только ее и ее зависимости: тебе придется взять весь сервис, замокать все его зависимости (которых может быть дохуя), и только потом уже тестить метод. Если еще учесть, что сервисы спринговые, и тотальный вендор-лок на спринг стал нормой, тебе еще придется взять спринг тест и мейнтейнить тестовый контекст. Это полное дно, такие тесты тяжело писать, еще тяжелеее поддерживать, они нихуя не тестят но постоянно требуют внимания (как в твоем примере, "завтра к тебе пришли"). Все это понимают, но никто не признается. ТДД в целом классная идея, но я не просто не видел адекватного ТДД на спринге, я убежден что на сервисном коде он не возможен либо бессмысленен.
Чтобы ТДД работал, нужно пересматривать подходы к разработке таким образом, чтобы код разбивался на внятные единицы реюза, строго раздекапленные друг от друга. У функциональщиков это есть с самого начала --- единицей реюза у них является функция, а система типов позволяет декларировать абстрактный тип функции как аргумент другой функции, позволяя делать композицию функций не капля их друг на друга. В джаве это в теории тоже достижимо, если рассматривать класс как единицу реюза, а не как библиотеку процедур, но это долгая история.
>>2512952 >У функциональщиков это есть с самого начала Ну то есть проект на какой-нибудь чистой скале без фреймворков без больших трудностей написать по тдд? Кафка была написана по тдд? Хоть что-то популярное было написано по тдд?
>>2512952 Ну и еще вопрос - в чем такая большая проблема писать на паскале в спринге? И писалось ли когда-то в прод широкого потребления более оопешно? Все что я читал, что до di-контейнеров был паттерн Service Locator и применялся в проде вместе с ejb. Я не вдавался особо, но критикуют его со стороны того, что он нарушает инкапсуляцию. Локаторы оопешны? Или вот пример Бугаенки с огромной лесенкой вложенных объектов через конструкторы. Если это тру ооп, то я в рот ебал ооп и пойду молиться на спринг-паскаль.
За скалу не скажу, я на ней не кодил никогда. На джаве у меня есть один проект на работе, покрытый именно юнит тестами, и написанный без спринга (на самом деле мог бы быть и на спринге, но там просто нужды в нем не было, там требовался лоу-левел сокетодроч с микроконтроллерами через netty), но сам понимаешь --- NDA. Считается ли за TDD? Я не знаю, я просто пишу проект и покрываю его тестами. Test-first пробовал, но не зашло.
>>2512976 Насколько я понимаю, что тдд это именно тест-ферст. Или для тебя это максимальное покрытие конкретно юнитами?
Так то я тоже пишу тесты. Интеграционный уровня микросервиса от апишки до тестовой базы я пишу всегда. На валидаторы юниты пишу тоже всегда. На поход во внешние сервисы пишу более мелкие интеграционные и только если это внутренние сервисы. Тестировать функционал по интеграции спринга с внешними системами, с кафкой например - была идея, но я от нее отказался. На сервисы и репошки пишу только когда логика в сервисе сложная(больше трех действий) или запрос в репошке не совсем тривиальный(например на апсерт пишу, а на инсерт или полный апдейт - нет). Но я понимаю, что это не тдд.
>>2512974 >в чем такая большая проблема писать на паскале в спринге?
Эмм... ну какбэ... потому что спринг написан на джаве для джавы, нет?
>Service Locator
Хз, не возьмусь комментировать.
>пример Бугаенки
Пример Бугаенки --- это попытка построить поверх джавовых классов функциональную парадигму. В целом направление правильное, но оно все сырое и не систематизированное. Есть хорошие практики: (Иммутабельность, отсутствие логики в конструкторах, агитация к маленьким публичным интерфейсам), есть двусмысленные и ненадежные (концепция "обьект как живой организм"), есть ситуативные (отказ от рефлексии и аннотаций), есть и полная лажа. Если заглянуть в его фреймворки, там все еще более пиздецово местами. Там много чего нужно дорабатывать и переосмыслять, чтобы матрешки не были такими пиздецово вложенными и можно было что то в прод кодить. Но в контексте разговора о юнит тестировании --- такие классы действительно проще тестить и переиспользовать.
>>2512982 >в контексте разговора о юнит тестировании --- такие классы действительно проще тестить и переиспользовать. А интеграционный тест с 10+ уровнями матрешек как писать?
>>2512980 >Или для тебя это максимальное покрытие конкретно юнитами?
Ну я просто не бросаюсь в крайности. Когда я с нуля чето разрабатываю, я все таки сначала пишу код, а уже потом тесты на него. Test-first как правило тяжело делать когда ты еще толком не представляешь че и как тебе предстоит кодить. Но когда, например, я работаю над багом, я могу и с теста начать.
>>2512986 Для меня разные уровни тестирования отличаются только тестируемой сущностью: юнит тест тестирует юнит, интеграционный тест тестирует связку юнитов, e2e тест тестирует продукт (дисклеймер: смысл который я вкладываю в термины выше может отличаться от официально принятых определений, но мне похуй). Поэтому не считаю чем то зазорным взять матрешку и покрыть blackbox-тестами ее публичный контракт.
>>2513164 Нет, пишем строковые константы, их передаём в JdbcTemplate. Все запросы только в DAO (кроме легаси говнокода), а для минимизации ошибок покрываем DAO тестами с in-memory HSQL с эмуляцией синтаксиса оракла.
>>2513173 Если обычные инсерты/апдейты, почти не расходится, но 500-строчные запросы с оконными функциями для отчётов можно даже не пытаться покрыть, их вручную запускаем в оракловой консольке.
>>2513168 >пишем строковые константы, их передаём в JdbcTemplate >in-memory HSQL с эмуляцией синтаксиса стремно что то, что другое. Мне кажется уж лучше хуйбирнат. Там есть способы контролировать то что пишешь, QueryDSL тот же. Но ебля с жизненным циклом этого хуйбирната и его кешами остается. Но мы использует jooq+postgres+testcontainers.
Разве честное тдд в проекте со спрингом не приводит хотя бы к тому, что у тебя с самого начала в проекте будет много маленьких классов типа ZalupaCreationService, ZalupaDeletionService с 1-2 методами, и т.д а не просто ZalupaService с сотней методов? Ведь когда садишься писать по тдд, у тебя 1 фича = 1 тест, ты не пишешь код на вырост. И скорее всего классы будут называться не XXXService а как-то более по ООПшному, типа имена существительные. Вот только хуй знает как одобрят такой подход другие анальники на проекте, если они по тдд не писали тот же самый кусок
>>2513208 Мне кажется еще и когнитивно намного сложнее работать с 50 сервисами залупы с 2 методами, чем с 1 сервисом с сотней методов. И ради чего увеличивать сложность? Ради понтов и феншуя? Чтобы гуру и боб мартин в твоей голове говорили малаца? Ну и другие разрабы за такое хуями обложат, когда будут дописывать за тобой.
>>2511545 Я мимокрок, но у меня примерно такой лид, он найдёт тысячу и одну причину, чтобы не учиться чему-то новому и обосрать всё вообще юзает эклипс, когда весь отдел использует идею, хейтит и троллит всех кто на идее сидит, при этом не хочет учиться её юзать
>>2513211 Это довольно распространенная фобия, но на самом деле --- нет, не сложнее. Их количество компенсируется читабельностью имен и адской переиспользуемостью.
>И ради чего увеличивать сложность? Ради понтов и феншуя?
Ради переиспользуемости. Переиспользуемость --- крайне и незаслуженно недооцененная и недоизученная характеристика кода. По моим наблюдениям, все случаи говнокодистости можно логически свести к недостаточной переиспользуемости кода. Те же тесты, как простой пример. Нетестируемый код === нереюзабельный код, потому что тесты на самом деле --- ничто иное как частный случай реюза тестируемой сущности.
>>2513309 В документации к используемой технологии. Джавовские проперти - это просто глобальная свалка ключей-значений, туда может писать кто угодно и что угодно, так что единого списка нет. Можно хоть создавать свои проперти.
Такое вопрос возник: можно ли на жабе сделать хорошую серверную мультиплеерную мобильную дрочильню? Но чтобы сервер мог держать пару десятков тысяч человек в одной условной песочнице? Если да, то ч помощью каких инструментов, если нет, то на чём лучше писать такое тогда? Из знаний жаба кор 1.6-1.8, 18-19, спринг, ну и всякое "бизнесовое" до кучи, но к вопросу не относящийся напрямую
>>2513335 Хватит одного жабакора. Покупаешь серверов да побольше и помощнее, и потом долго ебёшься с сокетами, потоками, вводом-выводом, в конце может что-нибудь да получится.
>>2513369 Ну чел же выше писал про мобильную дрочильню. Это же не пкашная калофдюти, там не такой огромный трафик и прям пиздецки низкая летенси не нужна.
>>2513335 качай сорсы сервера любой ммо дрочильни (l2,aion, еще какаянить хуйня) и смотри как сделано, охуеешь от старого говнокода но глянешь как оно устроено
>>2513335 >чтобы сервер мог держать пару десятков тысяч человек в одной условной песочнице
Классические энтерпрайзные ресты на сервлет-бэйзд стеке могут не подойти. Если пользователей реально дофига и у них дофига активности в реалтайме, понадобится неблокирующий стек и какой нить легковесный протокол типа UDP. Гуглить в сторону nio, асинхронности и реактивности.
>>2513458 Не шутан, но что-то типа ртс'ки (ну и конечно не всратое, как rise of kingdoms например) >>2513389 >>2513410 >>2513458 Всем спасибо за советы
>>2513418 >энтерпрайзные ресты на сервлет-бэйзд стеке могут не подойти На самом деле тот же jetty уже давно под капотом на nio крутится, так что в теории энтерпрайзные сервлеты тоже сойдут, хотя конечно лучше вертекс или нетти.
Допустим я использую DAO подход, делаю DAO интерфейс, от него уже классы реализующий интерфейс. И вот в чём вопрос, правильно ли интерфейсы помечать как компоненты(бины) или лучше это делать исключительно с классами, которые реализуют этот интерфейс? Т.к. если взять JPA например, то там мы же по сути интерфейс помечаем как бин
>>2513738 Щас DAO в основном генерят через спринг дату. То есть, пишут интерфейс, помечают его как Repository, но не пишут имплементацию --- спринг сам напишет. В общем случае интерфейс как бин помечать нет смысла, так как его не заинстанцируешь
>>2513748 То есть сервер у этих пираток всегда был на джаве? Даже эта репошка с 2006 существует. А сама линейка с 2003. А лицензионные серверы тоже на джаве?
В первом варианте всегда будет выводиться 2, 4, 6. Во втором всегда по разному. C чем связано такое поведение?
В документации к forEachOrdered сказано: Performs an action for each element of this stream, in the encounter order of the stream if the stream has a defined encounter order. Как узнать, имеет ли стрим encounter order? Может ли вся разница быть в том, что Collections.emptyList() попросту не имеет этого encounter order?
Стримы работают на сплитераторах, а у сплитераторов есть характеристики. Возможно конкат с unordered сплитератором сбросил ORDERED с листа, надо смотреть.
Пытаюсь записывать звук в файл.wav. Вылазит исключение: javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 22050.0 Hz, 16 bit, mono, 2 bytes/frame, big-endian not supported. Формат задаю вот так: AudioFormat format = new AudioFormat(22050, 16, 1, true, true);
>>2512458 >>2512487 >>2512952 Интересный видос, собсвенно на работе как минимум одно небольшое приложение чистейшая процедурщина Но вот вопрос, где посмотреть на этот ООП? Реально ли сейчас писать не процедурно? Как это выглядеть должно на спринге? Ну вот читал клинкод и все понятно но не понятно, мелкие примеры это хорошо, хэлло ворлд написать по солиду смогу, но как должен выглядеть большой проект не ебу ваще так сказать лучше один раз увидеть чем сто раз услышать
Предыдущий: