Это копия, сохраненная 19 мая 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Q: Поздно ли вкатываться в айти в 20/30/40/100 лет?
А: Нет, не поздно.
https://github.com/random76/Java-Thread/wiki
https://github.com/qqqlll/Java-Thread/wiki
Шапка не нужна.
>тот анон который думает укатиться с дотнета в жавамир
Кстати, у нас на работе есть крутой дотнетчик, который тоже решил перекатиться. Но выбрал он не жабу, а ноду и тайпскрипт. Перекатился, думаю, по тем же причинам, но я его порасспрашиваю.
Звучит уже как патология, хотя скорее всего речь про фронтент? Они там уже как взрослые, себе пару ультимативных йоб запилили, это тебе не верстальщик с jquery.
Там такое говнястое api на ноде. Вот радость с сбалансированного, продизайненного языка нырнуть в пучину дерьма.
Это оно? Если да, то можно ли где-нибудь почитать нормальный гайд по этому плагину? А то информация разбросана вообще непонятно как. Настройки вообще не описаны, только их список нашёл, инструкцию по деплоингу собираю по разным васянским сайтам, куча нюансов, вообще не упомянутых в документации.
Эндрю Дэвисон - подходит ли для этого?
Как сделать/что прописать чтобы в корневой META-INF добавлялся файл при сборке?
Хочу положить context.xml для томкэта. Пишут что в src/main/resources надо положить META-INF с нужным контентом, но в этом случае пользовательский META-INF появляется тут:
/WEB-INF/classes/META-INF/...
а надо чтоб в корневой
/META-INF/...
Научите парня уже собирать толстые джарники и писать на embedded сервере спринг бута. Хера он варниками страдает
В микросервисы я уже умею, а тут я хочу наоборот, по-старинке, хостить несколько аппов на одном сервлет контейнере. И для тонкой настройки каждого приложения хотел побаловаться с context.xml.
Хотя бы потому что так порт один юзается, а не у каждого embedded свой. Конечно можно единую точку входа сделать выставив вперед nginx и проксипасить на разные порты, но это же при развернывании нового аппа править конфиг nginx, это лениво, проще вар задеплоить в контейнер.
все, я запутался
>I found a few posts that claim that this also works with Tomcat 8, but it's not clear how to configure maven plugin to run Tomcat version 8, instead of version 7.
Этот васянский плагин - точно единственный способ использовать Мавен в веб аппе? Как-то это подозрительно выглядит.
Я решил. Всем спасибо что вы были со мной.
Я пока пытаюсь просто запустить уже сделанный проект через Мавен. Но tomcat7:run даёт слишком старую версию контейнера, которая не поддерживает какие-то фишки, которые есть в некоторых зависимостях. Поэтому я ищу, как настроить версию запускаемого контейнера.
А почему нельзя просто взять томкат, подсунуть ему взорваный варник в шеб-апп и запустить томкат?
Пиздец, ебал я в рот эту идею. По мере добавления новых мавенвоских модулей в проект она их не подцепляла и максимум подсвечивала синтаксис. Отладка работала только в декомпилированных классах, их исходники игнорились. Куча классов подчёркивалась красным из-за "незарезолвенных" импортов. При этом мавен всё собирал без проблем. Синхронизация не помогала. Реимпорт не помогал. Инвалидация кеша не помогала. Помогло только удаление папки .idea, блеать. Жду, когда в следующий раз придётся это проделать.
Но ничего лучше нет.
Потому что тогда Мавен не будет за меня ресолвить зависимости, и надо будет их загружать в либ или ещё куда-то.
У меня и есть 9, но плагин загружает 7.
Ты чо, ебобо?
1. Собираешь всю хуйню мавеном в экплоуженый варник.
2. Натравливаешь на эту папку томкат.
3.???
4. Профит.
Вся жизнь так программировали до спрингбута.
А ты не проебал маленькое такое окошечко с предложением на автоимпорт? Без него новые зависимости перечитываются редко никогда.
Хорошо хоть, что проблема всего лишь в кешах. Если бы обход по дереву модулей был реализован криво, так бы и пришлось смириться, что не работает.
>Собираешь всю хуйню мавеном в экплоуженый варник
Так ведь получится то же самое, что если бы я руками всё загрузил в папку либ?
Не проебал, всегда жмакал. Даже специально добавлял/удалял пустые строки в помник, чтобы заставить идею повторно его распарсить.
>Если бы обход по дереву модулей был реализован криво, так бы и пришлось смириться, что не работает.
Либо завести баг на багрекере идеи. Но тебе лень.
Это не баг, это хуёво настроенные зависимости в помнике.
Я это проходил кучу раз. Как переехали на спрингбут ни разу не случалось.
Он заведён до меня, я выяснил, пока гуглил. Проблема ещё и в том, что обновлять софт я сам не могу.
>Как переехали на спрингбут ни разу не случалось.
В чем проблема сделать у себя так же, как в спринг буте? Там стандартные фичи мавена используются.
>>21416
>Проблема ещё и в том, что обновлять софт я сам не могу.
Ха-ха, ну ты и лох, а я обновился с 2018 если не более ранней на 2019 идею и у меня хуй встал.
Ничего подозрительного в помниках не видел, все теги <module> и <parent> были на месте. Даже навигация церез ctrl по ним работала. Но вот лежит один модуль, и в нём всё норм, а рядом лежит другой похожий модуль с практические таким же помником, но идея его игнорит.
Когда-нибудь и на нашей улице будет праздник.
Ну, я про конечный результат.
Вообще, я за это беспокоюсь в свете того, что я не смог таким же образом установить руками Хибернейт. Все зависимости поставил (одну), код скомпилировался, но не заработал. Устанавливал по инструкции, шаг за шагом. В итоге анон мне посоветовал либо танцевать обскурные танцы с бубном, либо брать Мавен и ставить как все.
Вот я и думаю. Сможет ли Мавен всё нормально сделать? Или дело вообще не в этом?
Это риторический вопрос был бтв. По существу: буду пока делать взорванные архивы.
Еще раз, ты что пытаешься сделать и чем тебе не подходит вариант с распакованным/запакованным варником? Мавен собирает варник на таргете package и на таргете site (вроде site, если нет то deploy) копирует в tomcat/webapps. Тот следит за изменениями и автодеплоит. Чем эта схема плоха?
Сервлет-контейнер, аналог томката
Его дал Сатана.
>Чем эта схема плоха?
Тем, что гораздо удобнее все запускать одной кнопкой из проекта, прям как со спрингбутом. Без отдельно стоящих томкатов.
Спринг бут запускается либо в докере, либо через Run Configuration, нахера возиться с плагинами?
>Спринг бут
Если есть спрингбут, то незачем, конечно. Но там анон только-только хибернейт с мавеном осваивает, может оно ему не надо пока.
То ли дело GIL.
Так-то мавен тоже одной кнопкой запускается (пик 1), но я тебя услышал, ты скорее всего имелл ввиду что запаковка это лишний этап для быстрого дебага, и тут я согласен. Хотя это же ты там писал команду tomcat7:run? Мне кажется что это не кнопка, больше похоже на команду в консоли. В общем я не знаю этот плагин. Но я не понимаю всё же зачем нужен лишний плагин когда в идее это нативно делается (пик 2). Да, все еще нужен будет standalone tomcat, но как по мне это даже лучше - условия приближенные к продакшену.
А еще могу посоветовать юнит-тесты вместо студенческого воркфлоу "изменил пару строк - перезапустил все приложение".
> пик 1
К вопросу об уёбищьности против консоли. Если человек юзает консоль ты ему тупо пишешь:
mvn package
он тебе если надо копирует выво консоли.
UI-банаты же постят картинки со стрелочками и пояснениями куда, в каком порядке жмякать.
Возражение по существу, хуле.
Да я обожаю консоли, выдохни. Но человек попросил кнопку и я вынужден показать ему кнопку, даже две.
Я не консолеёб я мимо котлиноёб, но стоит заметить, если ранее уже была написана команда, то повторное использование - это всего лишь одна стрелочка вверх (ну и enter)
>это всего лишь одна стрелочка вверх (ну и enter)
Ну то есть столько же, сколько мышкой, но с доп условием.
На мышку надо рукой отвлечься и еще её покатать.
Если считать по количеству прерываний процессора, стрелка "вверх" победила.
А как насчёт N стрелок вверх, каждый раз перечитывая команду?
>хуею с контингента
Так и есть. Вчера спросили как context.xml в топовый META-INF засунуть в спринг буте; в итоге решили что нужно переезжать на vert.x %)
Ну так-то чо, здесь не стаковерфлоу, здесь более философские вещи обсуждаются, спроси хоть котлиноёба.
Пик 1
А зачем каждый раз мавен дергать? IDE предлагает компиляцию и так вроде?
Пик 2
На крайняк можно выставить таску в меню компиляции и дергать по хоткею (хотя я чаще клацаю по кнопке)
Охуительно удобная штука для домашних поделок. Может запускать embedded или подключаться к уже работающему томкэту. А главное — даёт возможность отладки в IDEA Community.
В простейшем случае выглядит так. Добавляешь настройку плагина в свой pom.xml, в элемент <build><pluginManagement><plugins> (там, где maven добавляет по умолчанию свои плагины), такую настройку:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port>
<path>/myapp</path>
</configuration>
</plugin>
где /myapp - адрес, по которому будет работать твоя приложуха.
Работает всё это по команде mvn tomcat7:run. Чтобы запустить из Идеи, нужно добавить Run Configuration с этой командой.
>>21375
Ппоставь себе девятый томкэт и пропиши его в настройки плагина. Он же умеет не только embedded запускать, но и подключаться к другому контейнеру. Если ещё надо, могу написать, как настроить.
Это точно нужная в современных реалиях хуйня? Я что-то сомневаюсь. Выглядит как говно мамонта:
- 404 на картинке-логотипе
- последняя версия - SNAPSHOT
- датируется 2014м
- заявлена поддержка Tomcat7, когда позавчера десятка вышла
Сайт явно заброшен, как и разработка. Что плагин еще делает помимо деплоя с настраиваемым context-path? Обычным курлом можно того же добиться, не говоря уже что современная идея это поддерживает искаропки.
>современная идея это поддерживает искаропки
Коммьюнити-версия не поддерживает
Он просто работает. Я его использую для учебных целей, меня пока всё устраивает. Приложение деплоится, код отлаживается, профит.
>Что плагин еще делает помимо деплоя с настраиваемым context-path
Запускает встроенный контейнер, что удобно (тут же все любят спрингбут?). Но именно этот плагин, да, стар и заброшен. Для новых томкатов может быть есть какой-то другой, или можно использовать jetty, как я выше советовал.
>Запускает встроенный контейнер
Сам плагин содержит в себе контейнер или он отдельно скачивается или подтягивается из установленного? Иначе от семерки-то наверно мало пользы, сервлеты 3.0, вебсокеты только-только появились. Да и версия семерки получается несвежая и с багами, давно пофикшенными в сегодняшних семерках.
В Qt такая же хуита. Всё из-за MVC головного мозга у фреймворкоделов.
{
String db_query = "select unit_name from fm";
try
{
mySql.dbQuery(db_query, resultSet ->
{
while (resultSet.next())
{
final String unit_name = resultSet.getString("unit_name");
}
});
}
catch (Exception e)
{
LOGGER.error("Failed get unit_name from fm.", e);
}
return unit_name;
}
Будет работать или почему не работает?
В системе разбираться даже Аллах не сможет, единственный костыль не ходит, говноява хуже червя, а у Анона прошу помощи.
Синтаксически все верно. Работать будет при условиях:
1) mySql проинициализирована и у нее есть коннект к бд
2) У mySql есть метод dbQuery, принимающий строку и лямбду, и кладущий в лямбду стандартный резалт сет
3) В самой ьазе данных есть таблица fm с полем unit_name
(3) не так критично - код работать все равно будет, выкинет эксепшн
Ну, всё логично.
Таблица есть, метод есть, коннект есть.
Ответа от бд нет.
Сейчас проверю, связанно с интерфейсами и взаимодействием или бд неопределённо себя ведёт, потому что рядом в коде есть похожие куски, откуда и брался копипаст.
Наверное, неправильно вопрос поставил.
Выше по коду к БД обращаются, но возвращают либо булевое значение, либо ничего. Так что у меня интерес к тому, будет ли возвращаться само значение, потому что на практике этого не вижу.
>Синтаксически все верно
Извиняюсь, не верно. Поидее тут ошибка компиляции на 540 строке т.к. unit_name во внутреннем scope объявлен.
Синтаксичиски верно, так как именно с объявлением внутри и final компилится, но если обновлять вне - кидает ошибку.
Это в какой-то свежей версии изменили? Я на восьмерке сижу как динозавр.
Idk, тут тоже восьмёрка, но gradle не валит ошибками, как если объявлять вне пространства. Судя по SO, ругается на то, что оно в цикле и нужен final, с которым трудности.
мимо не явист, поэтому извините за нубство
Давай решать проблемы по очереди. Вот так измени чтобы с лямбдой не ебаться. Измененные строки: 544, 548, 555.
А какая система сборки? Тут стоит gradle, но считаю её хуже червя.
Привык к мейкфайлам, наверное.
Может быть оно и не компилится на самом деле. Легко проверить из консоли:
javac /путь/до/класса.java
>>21988
Дело в том что лямбды они по идее не должны иметь т.н. side effects (привет forEach). Считается что ты резалт сет должен внутри обработать и забыть про него, не возвращая ничего во внешний мир. Еще для проверки работает ли оно вообще, компилится ли, вызывается ли, можно вывод сделать: LOGGER.info("hello") между 546-547 (1) и между 547-548 (2). Только (2) недостаточно, вдруг там резалт сет пустой по какой-то причине.
А если надо все-таки вернуть что-то из лямбды, тогда такие варианты:
1) враппер, например, массив на картинке, либо коллекции
2) поле класса можно использовать в лябдах
Не знаю, скомпилится ли, потому что система.
Не знаю, как оно отдельно работать будет. А сборщик и в нормальном состоянии ругается на всё.
Да, это имеет смысл, потому что в коде, который упоминал, как раз заполняются поля классов.
А про присланный пример с массивом подумал, что это такой-то явовский грязный хак.
Вроде собирается пока. И если переменные сами по себе не возвращаются, в отличии от массивов один хер указатели, что этим компайлерам не нравится :c, то проблема почти решена.
Осталось всего зайти по голень в ангуляр-парашу и приписать сеты к написанному гету. :3
>intellij
Ну он самый лучший на мой взгляд: красивый, функциональный, много чего умеет, классные хот-кеи, напр. Ctrl+W, теперь жить без него не могу. Лагало как? Пикрил отключать пробовал? Если hdd а не ssd, еще и старенький, то может и лагать.
Если не идею то даже не знаю, я только эклипс пробовал, нно это такое. Рабочая штука конечно, но медленная, корявенькая и тд
И так, и так. Если не указываешь сервер явно, он запускает свою embedded семёрку. Но можно указать ему свой установленный томкэт, и приложение развернётся на нём.
нажимаю ентр, а оно могло на секунду зависнуть.
после отлагивает, но фриз в 300/400 мс есть. hdd на 7200, со всем справляется, кроме прог от jetbrains
Два стула, idea и eclipse выбирать тебе
Разумеется есть ребятки которые сидят и на виме с плагинами и на vscode, но в основном два стула
>Не знаю, как оно отдельно работать будет
Компиляция? А не надо чтобы оно отдельно работало, надо было просто посмотреть будет ли ошибка компайлера как пикрил или нет. Может там к грейдле еще какие инструменты предварительной обработки участвуют, а javac дал бы чистейший результат.
>явовский грязный хак
Так оно и есть, это хак, так говнокодить нельзя. Но это быстрый способ получить результат с минимальными изменениями окружающего кода.
>>21988
Еще можно изменить while на if в 547 строке. Поидее у тебя там одна строка в таблице всего раз тебе while подошел? Если строк допустим 10 то после while в результат попадет последняя строка, а после if - первая. В общем-то этот код не подходит для обработки нескольких строк в том виде в котором он есть, т.к. из метода возвращается одно значение, а резалт сет может содержать много.
У меня на стареньком компе с лялихом дико тормозит, до полной невозможности работы, на относительно новом с виндой ещё ничего, но тоже не ожидаешь такой подставы от "лучшей IDE в мире".
Ну, костыль состоит в методе, который возвращает одно значение из таблицы, да. И хоть в таблице строк много, запрос же должен вернуть лишь одну строку?
Про while/if да, так написал с самого начала, потому что одно значение, просто от бессилия пробовал по-разному.
>>22029
Это хак на хаке, потому что по системе вызываются методы, которые по цепочки приводят к.. Они, блять, просто открывают сокет и пишут в него, например, просто "get". И даже найдя место, где серверный сокет создаётся, не смог найти обработчик. Поэтому пришлось к такому методу "методу" прибегнуть.
>javac
Просто привык, что при компейляции большого проекта куча зависимостей, о коих компилятор сообщит не дойдя до самого кода.
Может в яве по-другому, конечно. Но пока что работает.
>запрос же должен вернуть лишь одну строку?
>select unit_name from fm
Нет. Таким запросом возвращается один столбец (unit_name) по всем существующим сотням-миллионам строк таблицы, так что while перебирает их все, постоянно затирая предыдущее значение, и возвращает последнее, а if вернет первую строку и выйдет. Изменения SQL запроса нужны, но я логику вашу не знаю. Можно поставить LIMIT 1; и будет тупо одна строка возвращаться, нельзя гарантировать какая именно, а можно предикат написать типа WHERE id = 1 или WHERE name LIKE '%world%'.
Блин, очень знакомое что-то, в 15-16 годах под глассфиш писал.
Обновления сервера не было? Ну там типа админы без ведома девелоперов ночью апдейтнули сервер приложений.
как вариант, в класспас, пробралась лишняя зависимость, и подгрузилась первой; либо вариант от джентльмена выше
>>22083
Я вчера немного игрался с настройками, но, вроде, ничего критичного не делал. Только юзера добавил (уже убрал) и менял пару раз порт.
Сейчас убрал jar вообще из всех мест, где она предполагается. Ошибка осталась. То есть, видимо, и правда где-то в класспасе что-то не то. Сейчас собираюсь его проверить. Если наберу в консоли echo %path%, это будет та самая переменная, которую использует класслоадер?
>Если наберу в консоли echo %path%, это будет та самая переменная, которую использует класслоадер?
Хуйню, похоже, какую-то написал. Но я правда не в курсе, какие пути берутся в класспас, кроме базовых классов и -ср.
>echo %path%
Детектит в тебе очень начинающего %)
Нет, это переменная среды и к джаве относится только тем что оттуда собственно ищется java. А класспас можно посмотреть в команде запуска джавы, например ps -ef | grep java в линуксах
>Детектит в тебе очень начинающего %)
Да я уже покаялся. Просто не понимаю вообще, откуда может эта библиотека браться, если я её отовсюду удалил. Вот и предполагаю всякие небылицы.
Весь класспас обычно в командной строке передается. Для не-винды выше написал, а в винде можно в process explorer посмотреть.
Just in case, аппсервер может предоставлять некоторые зависимости (например, Java EE), которые у тебя прописаны в pom.xml. В таком случае нужно им проставить <scope>provided</scope>.
Все уже автоматизировано до меня. Я просто хочу код писать, а не перебирать параметры деплоя.
Чисто qa тупиковая, т.к. почти непересекающийся скиллсет. Можешь в автоматизаторы попробовать, там хотя бы погромировать будешь и фреймворками обмазываться сможешь
Вот пишут автоматизированное тестирование по, проект по внедрению oracle siebel crm. Что это все значит? Чё платят автоматизатооам? Надо ли вообще, все это?
>Что это все значит?
Значение очевидно
>Чё платят автоматизатооам?
Деньги
>Надо ли вообще, все это?
Нет
Ну смотри, работает это так:
ты идёшь куа-джуном, работаешь, пусть даже что-то автоматизируешь на каком-нибудь селениуме или типа того, короче мало мальски программируешь, тебя повышают, до куа-джуна+, ну ты работаешь дальше и работаешь, того и гляди, куа-мидлом поставят, заебись. И тут ты рашаешь, что пора в программирование. Вот только никто тебя мидром не возьмёт. Пойдёшь заново джуном.
Проще подрочить какие-нибудь курсы, да пойти на джуна девелопера сразу.
Нет, есть конечно мифический сценарий, где ты работаешь пол года куа-джуном, параллельно задрачивая погромирование, а потом свитчишся в девелопера, но это скорее из области фантастики.
У нас в конторе были куа, которые не смогли в девелопмент и пошли в куа, но они там в куа и оставались, потому что тупые. А если куа попадается толковый, то ему проще переквалифицировать в автоматизатора, чем начинать всё с начала джуном.
Иди в автоматизаторы. Головняков меньше, з\п чуть меньше, есть возможность вката в дев потом.
...соответствующими программистками.
ты ебобо?
> Требуют выучить аннотацию @Test и класс Assertions
Никогда не понимал таких требований. Как не понимал "Умение пользоваться Jira". Ещё бы стековерфлов в требования написали, блеать.
Тут везде есть свои затраты, но я в общемто-то и не писал про скорость.
Речь шла о том, что использование консоли:
1. Требует более глубокого понимания как работает система, будь то git или Maven.
2. Консольные команды проще передать кому-то, чем объяснять какую кнопочку жмякать.
3. Консольные команды не привязаны к IDE - перешел ты с IDEA на Visual Studio, все твои навыки работы с git остались с тобой.
Да, там есть запары, но не уровня "у меня в браузернейм не работает кнопка увеличения хуя", фикс чего занимает пару дней просто потому, что разрабатывали браузер левой пиздой пятки.
Передаю привет разработчикам Сафари, btw.
Бессмысленный спор. Вообще по настроению выбираю консоль или тыкнуть. Главный минус консоли - помнить команды, даже если ты их давно не юзал.
Когда привык коммитить и пушить через иде, запросто забываешь даже то, нужно ли ставить / между origin и master.
Собрался за неделю вкатиться в стек джавы, который сам называешь монстроуозным? Ага, щас.
Собственно, нужно знать основные вещи спринга (core, data, jdbc, test, boot), разбираться в мавене и, возможно, иметь представление о EE (те же сервлеты). Ещё хибернейт, поиграться с одним из серверов приложений, хотя бы томкатом и, вроде, всё.
Я про спецфичные и редко используемые.
Стресс-интервью для программиста
>ЕСЛИ БЫ ВЫ МОГЛИ ПОГОВОРИТЬ С ЛЮБОЙ ИСТОРИЧЕСКОЙ ЛИЧНОСТЬЮ КТО БЫ ЭТО БЫЛ И ПОЧЕМУ
Верцингеторикс.
Потому что он был одним из тех, кто просто любил жизнь!
>ЕСЛИ БЫ ВЫ МОГЛИ ПОГОВОРИТЬ С ЛЮБОЙ ИСТОРИЧЕСКОЙ ЛИЧНОСТЬЮ КТО БЫ ЭТО БЫЛ И ПОЧЕМУ
Мартин Лютер!
Удиви
https://blog.jetbrains.com/kotlin/2020/03/kotlin-1-3-70-released/
Типа как в ЦПП:
#ifdef DEBUG
//Code here
#endif
Никак. Но можно попробовать поиграться с профилями мавена.
Просто так-то она пишет только во время ошибки (записываю в файл), но хотелось чтобы прям консолька появилась и там весь лог посмотреть сразу.
Напиши батник-зарускатор. По умолчанию жарники исполняет javaw, который да, скрывает консоль.
Либо можно через какой-нибудь swing создать окно с текстовым полем и срать туда.
Помимо того, что тебе уже порекомендовали, есть ассерты. Но это не куски кода, это небольшие выражения для логических проверок, и методы там вызывать хоть и можно, но не желательно, потому что side effects. И чисто технически, ассерты все равно "попадают" в релизный код, просто не исполняются.
Запускают по двойному клику обычно экзешник-лаунчер, а не jar-ник. Параметры, с которыми лаунчер запускает jar-ник обычно лежат рядом в ini-файле, либо можно на живую посмотреть в process explorer.
Я не верю что у тебя прям .jar файл запускают по даблклику, потому что .jar не является исполнимым файлом MS Windows, и для этого нужно в реестре прописывать кто будет такой файл запускать. Если какая-то твоя прога так сделала, то проверь в реестре и узнаешь что является лаунчером.
Ну раз ты сказал, значит так и есть.
> Легче
Ну да, и тесты для динамической дрисни, делающие проверки, которые в лигосижабе есть из коробки, пишутся легко и мгновенно.
Стартап же, какие тесты?
Ты недооцениваешь степень умственной неполноценности некоторых экземпляров. Я например пару дней назад проходил интервью где мне на полном серьёзе затирали что проекту над которым предстоит работать уже 10 лет, но каждые 2 года они переписывают его почти с нуля, релизят, находят новые модные технологии и начинают всё с начала. Чувак к слову именно "модные" и говорил, я даже подумал что он траллирует так.
>тесты для динамической дрисни
Нинужны. Пока ты пишешь тесты, конкурент уже делает питч бизнес-ангелу где-нибудь в LA.
Написал простенькую прогу на java, на компе. Недавно начал изучать язык и слышал, что он кроссплатформенный и что много приложения на андроид написаны на java.
Так вот, у меня есть пару классов-файлов .java, как мне их запустить на андроид?
Если я правильно понимаю файлы .java уже скомпилированы и мне нужна виртуальная машина для их запуска, и в архитектуре андроида она есть(Dalvik, но сейчас что-то другое).
В общем, помогите, кому не сложно, что нужно делать, хотя бы примерно?
С андроидом не всё так просто. Там не обычная jvm, а своя, и работает она со своими форматами. Оракл даже судился с гуглом из-за этого
Но ты можешь положить файлы .java в проект на андроиде и собрать там. Возможно, заработает.
Я не понимаю, вас гуглить не учили? Первая же ссылка. Как ты дальше будешь программу писать?
От себя добавлю что ты неправильной дорогой идешь, сталкер, проще скачать андроид студию и подключать свои классы туда. "Кроссплатформенный" тут всмысле и на windows, и на бубунту, и на кофеварке, но не на андроиде.
Ну и хуй с ним.
>в котлине нет точек с запятыми
Серьезно? А как тогда no-op стейтменты писать? Без них же код становится совершенно нечитаемым!
Как же ты завидуешь полноценным людям
Зависть котлениста
ща подожди! вот машина прогреется!
Наподобие видеокурсов хтмлкокодемии. Слышал про ITVDN но хз где найтии слитые курсы. Если у кого есть ссылка на трекер или хотябы где лежит, буду благорадарен
>начальный уровень хотя бы, что бы обьясняли про жава машину как там память работает и всякие другие интересные штуки
вот у этого парня https://shipilev.net/ нормально для новичков. всякие интересные штуки, как ты просил
>>23062
Новичку будет интересно про бенчмарки String'ов?
У него еще и сайт на табличной верстке, буэ.
Да там тоже не так уж много. Лишь маска цивилизованности у вчерашних дикарей, как общество "Белая перчатка".
У каждого второго человека есть кофеварка, работающая на джаве. Дохуя, правда?
А sun закрывали глаза на это и не подавали иск. Только при смене руководства на оракл это началось.
Изучать сам язык и српинг больше смысла имеет.
>Я не верю что у тебя прям .jar файл запускают по даблклику
Всю жизнь так запускал (причем и питоновские файлы тоже. Хз, сам попробуй. В реестре тоже самое что у тебя.
Ебануться... оно реально работает. Спасибо, бро, день прожит не зря.
И в линуксе запускается, если в свсойствах галку поставить на бит исполнения.
Попробуй заменить javaw.exe на java.exe в той строчке.
Гугл пишет, что
>отличается от java.exe тем, что при его работе не отображается окно команд
Какой-то обиженный пук в лужу.
Тута я. Еще утром вам покушать приносил
>>22633
И мне же еще надо гнездо гофером палкой растормошить.
>>1622584 →
Нет времени на контент, надо йоба-софт на котлин переписывать. Сам себя не перепишет, а часики то тикают.
Дал Бреслав котлин, даст и среду разработки.
Да, теперь точка запятой не роскошь, а средство разделения выражений.
https://pl.kotl.in/gbS5Y9mpi
Код в UTF-8, а в памяти UTF-16, как везде. Дело в том что UTF-8 компактная, но "ебанутая" - в ней символ может занимать 1 байт, 2, 3 или 4 байта. И работа с ней сложнее чем с UTF-16, где возможны случаи только 2 байта или 4 байта для суррогатных пар. Ну тоесть UTF-8 не поддерживает свойство "кратно 2", что при работе с памятью вызывает определенные трудности.
>>23228
Например, строка UTF-8:
FF FFFF FF FF FFFFFFFF FF FF FF FFFF
тогда как строка в UTF-16:
FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
Даже количество символов в UTF-8 не подсчитаешь если не прочтешь всю строку. А в UTF-16 это просто bytes/2. Потом уже ввели работу с суррогатными парами и с тех пор str.length() считает неправильно если в строке есть символы по 4 байта из старших "планов" (Unicode planes)
ебучий уникод ууу сука
Ахахах, какой сонар, тут все говнокодят и даже тесты не пишут)))))))
Где-то в нулевых мелкомягкие пытаются увести и сделать свою жабу. Сан судится и наказывает. Мелкие - плохие
Десятые гугл уводит и делает свою vm - оракл судится и наказывает. Но почему-то плохой оракл
Ну все, теперь я точно на джавке останусь
Нужно больше точек с запятой, так чтоб еще в javascript пересыпалось, а то там через раз пишут.
Эх, Семён Семёныч...
Мелкие пытались проделать своё EEE с жабой. Дошли уже до второго E, вот сан и понял, что добром это не закончится.
Да и так понятно, что они все пидорасы-копирасты
Есть способ с константами
public static final boolean DEBUG = false;
если в коде писать:
if(DEBUG) { ... }
то компилятор выбросит этот код или наоборот оставит без условия вообще смотра что там true или false.
Тут вопрос в том, что значение DEBUG должна быть константа времени компиляции, выкрутасы типа getDebugValue() не пройдут. Так что тут или переключать значение в исходниках или делать предпроцесинг исходников во время билда.
Тут вопрос зачем? Если просто перфоманса ради, то JIT эффективно устранит условие if(DEBUG) если DEBUG это static final переменная. Заморачиваться с полным вырезанием имеет смысл если софт публичный, а дебаг логика содержит что-то секретное.
Ну так тут надо модифицировать само приложение, плюс если оно не стартанет из-за ошибки конфин не найден то консоль закроется.
Там идея в том, что не нужно железобетонно переходить, скачивай хоть все версии какие хочешь и какую-то из них включай как default. Точнее как current.
Я, кстати, видел (или приснилось) как собирали джарники сразу в скрипт прям (сразу по соседству в баш и батник)
А javaw на java в реестре менять это кроссплатформенно?
Для кроссплатформенности и bat, и sh поставляют вместе.
Наверное в ant так можно сделать.
Ты с текст блоками поиграешься и обратно свитчнешь на восьмую.
Я просто думал свои аннотации накатить, но потом подумал что по-любому такое уже кто-то делает, че велосипедить.
То ли дело ассемблер! И точек с запятой нет, и стартует мгновенно!
Так старт самого спринга это и есть старт хелловорлда. Большие приложения стартуют дольше в основном за счет своих инициализаций, в которых спринг не виноват.
Интересно, сколько нужно бинов (которые сами ничего не делают), чтобы занимало 30 секунд
bat и sh.
обожаю контейнеры в контейнерах
Гречку с головками чеснока!
https://2ch.hk/b/res/214968459.html (М)
спасибо за то что не помогли как обычно, я нашел свои видео, и теперь смотрю изучаю что такое байты и биты, больше в ваш тред не приду так как не помогаете.
>а я что потвоему делаю?
>больше в ваш тред не приду так как не помогаете.
пиздишь как русский
я погорячился, но буду только ридонли
В итоге, на данный момент более менее разобрался в коре, изучил SQL на уровне базовых запросов и простые команды Git. Продолжаю дрочить джавараш.
Планирую повторить многопоточность и приступать к EE-фичам и спрингу. Вот только беспокоит, что к какому-либо самостоятельному проекту я так и не пришёл. По сути, за плечами знание теории и синтаксиса. Реально ли вообще найти работу джуна/стажера без портфолио в СПб?
Свинья, иди нахуй, хватит течь во все треды подряд.
>Реально ли вообще найти работу
нет (а те собесы куда попадешь завалишь изза того что не знаешь олимпиадные задачи) живи теперь с этим.
>портфолио
Ты вот наверное был вебмакакой да? Считай это приговором.
binary search написать и перевернуть самодельный linked list не такая уж олимпиадщина.
Под портфолио имел ввиду гитхаб со своими проектами.
Друг недавно устроился джуном после джавараш и видосов по Спрингу. Из проектов на гитхабе был только повтор кода по видео. Но он перед тем, как начал серьезно учиться, ушёл с работы и из дома не вылезал, штудирая книги и задачи на джавараш.
Чтобы видя только URI без другого контекста, можно было автоматически распознать, что это строчка для JDBC. Очень редко, но всё же иногда это требуется.
как там в 2010?
сейчас просят инплейс мержсорт минимум не говорю уже про прочие задачки с олимпиад.
>Друг недавно устроился джуном
То друг, а не ты
>ушёл с работы и из дома не вылезал
Вангую появилась возможность подвязки в каком нибудь месте, сказали подтяни возьмем. Он и рванул. Адекватные люди не дропают работу ради нихуя.
Впрочем ты начнешь оправдываться, что он сам, ведь ты свечку держал когда его брали.
Ну вот скажи, например: зачем в адресной строке браузера нужны префиксы http/https? Браузер может и сам разобраться, чо там, а пользователю это не интересно.
То есть от наличия/отсутствия этого префикса зависит, в каком виде будут отправлены результаты? Например, если jdbc, то в том виде, в котором они, по каким-то причинам, определены спецификацией?
>>24055
Странный вопрос. А зачем нужен префикс http(s) в урлах? Его тоже никто "не использует": в HTTP хедере он передается, только хост и адрес ресурса относительно хоста. "Не использует" в кавычках потому что это все-таки не совсем так - по схеме (эта часть урла называется по-научному "scheme") определяется как именно клиенту общаться с сервером, по какому протоколу. Так же и в jdbc. Подозреваю что ничего другого там поставить сейчас нельзя, еще не придумали, но это же задел на будущее, может потом будет jdbcs. Возможно и с http не подозревали что когда-то другая схема появится для передачи именно HTTP, но люди-архитекторы они такие создания умные - могут думать наперед. Возвращаясь к jdbc - наверняка в клиенте, будь то драйвер менеджер или непосредственно драйвер, стоит проверка if (!scheme.equals(THE_ONE_AND_ONLY_ACCEPTABLE_SCHEME)) throw new Unsupported...
Но ведь это же никому не интересно. Как не интересны порт, с которого делается запрос, какие именно там хелеры, сколько IP-пакетов, через какие шлюзы. Так зачем пользователю в принципе давать знать про http, если браузер может выяснить это полным перебором по десяткам протоколов, переходя к следующему в случае ошибки?
Для токих как ты и создают на каждый сайт свое приложение в апп гугл сторе.
А меня вот больше раздражает не http, а www. Ебучая приставка из девяностых, никак не сдохнет. Хотя с текущей тенденцией заводить все больше и больше хипстерских доменных зон действительно разпознать интернет-адрес становится всё сложнее. Пишет тебе челик, "подскочи на karasique.meme", и хуй проссышь это его ебучий скайп с такой фамилией, или корпоративный аккаунт почты без домена компании...
Да, его по блату взяли. Никто никогда не вкатится как в 2007-ом.
>в HTTP хедере он передается, только хост и адрес ресурса относительно хоста
он не передается, конечно же
Это как пример хипстерского домена. Так-то я обожаю виндоус, еще со времен 98.
inb4: почему рот в говне?
Вангую ты сам вкатыш и специально дизморалишь конкурентов, потому что нихуя не умеешь и ссышь.
Или чсв хуесос из мфти или шитмо.
Ну типа угадал, я вкатыш, который повидал дохуя шизов и чсв хуесосов из мфти и шитмо, кто дают такие задачки на собесах.
Но почему я плохой в твоем воображении?
Ну ты как-то агрессивно начал надсмехаться, хоть жавараш и говнище. Я другой анон, если что.
Сорян, что что реальная оценка окружающей действительности вам кажется агрессивной. Мыж вроде не в сшп пока еще.
Да, пришлось форк-джойн пул расчехлять.
экстраполировал
С помощью FaaS.
Не, нет таких. Либо ты спрингогосподин и против перекатов после 500, либо ты котлинохолоп, послушавший питона-искусителя.
То бишь тех, кто на башорге сидит, лол.
Чтобы вычищать спринг, нужно его знать, так что.
Ну мам
Благодарю.
Да, всё заебись.
Что за дичь? Ещё пару тредов назад шарписты были такие бравые и пророчили смерть джавы, а сейчас аж собираются перекатываться в неё.
Публичное API это немного размытое понятие:
- есть классы с которых надо начинать - тут обычно в тьюториале пишут
- есть классы которые для продвинутого использование - тут обычно документация или JavaDoc
- в целом - все что public - то публичное API разной степени продвинутости, все что не public - то или приватное или advanced API
Какой же ИТ юмор тупой. Серьезно, когда-нибудь задумайтесь насколько туп этот юмор. Он выглядит как шутки про матан или физику от студентов которые только вкатываются и узнают новые понятия и свойства хахаха биссектриса это взбесившиеся крыса
И хватит форсить это динамичное и однопоточное говно - питон. Тем более, когда есть божественный котлин, с вменямым sdk, а не продукт больной фантазии какого мужика вечно, блядь, лезешь в SO чтобы узнать как эта известная херня делается именно на питоне, ебанные "не такие как все" кодеры.
Ну и в чем прикол? Разве там не надо ссылками prev next манипулировать?
В application.properties:
logging.level.com.seriouscompany.seriousbusiness.SeriousClass=DEBUG
В SeriousClass:
@Component
@Slf4j
public class SeriousClass {
public void myAwesomeMethod() {
log.debug("My debug message!");
}
}
Самоподдув треда закончился. Раньше это вообще был тред мертвее жабьего, периодически тонувший, потом пришел какой-то анимешник и их шапку сделал про язык багофф!
Всегда пожалуйста, после 700 вернусь!
Ну значит еще раньше.
Slf4j - это типа универсальный интерфейс к другим логгерам. Полезно если разрабатываешь библиотеку которая может использоваться в проектах с разными логгерами - просто надо будет подключить соответвующий бекенд, Это была его основная фишка.
Но теперь и log4j тоже так устроен - API отдельно, сам логгер - отдельно. И тоже возможны варианты, в том числе и logback.
У меня больше нет для тебя информации, это был единственный пост, который я хотел написать.
КНИГА ЛУЧШЕ
if ((unit_name = Utils.readFile(filename))) {
Что делать, господа жависты?
Есть машина. rootfs каждую перезагрузку стирается. Сначала брал данные из БД, о чём недавно писал, но, оказывается, бд тоже стирается при перезагрузки. Видимо, хуком каждый раз перезаписывается, ведь вроде бы находится на разделе, который не перезаписывается с перезагрузкой.
Сейчас хотел брать/записывать строку в файл. Но может ещё какие-то варианты лучше будут?
Нет.
>>25094
Не знаю.
>>25130
Я бы и эту жабу в руки не взял. Но долг перед Родиной зовёт окунуться мордой в это.
>>25164
Так код быстрее работает. Мне так на дваче сказали.
>>25166
Сейчас взял всякие FileUtils из модуля, который уже был подкручен, но пикрил выбесил. Как жависты жрут эти 500 уровней с try-except. Пиздец же.
>Так код быстрее работает. Мне так на дваче сказали.
А ответил, что не тупой. Приоритет оператора =
Нормальные люди их не жрут, а пишут нормальный код.
Привет.
>unit_name
Это с тобой мы во вторник лямбды решали?
Операция присвоения (=) имеет меньший (самый наинизший кстати) приоритет чем операция сравнения (!=). Скобочки правильно расставь.
Но это не решит всех твоих проблем. Сравнение строки с "-1" тоже невозможно. Зато у строки есть .isEmpty()
>>25204
>>25213
Это же было ирония, ну.
>>25213
Да, вновь привествуем.
Да, проблем не решит. Он сейчас вовсе выдаёт 404 в какой-то момент.
А, как писал выше, хоть варинт с бд рабочий, но отчасти, потому что БД с каждой перезагрузкой машины перезаписывается.
Пришёл одним из первых, запилил сегодня одну фичу и сейчас пилю вторую. Когда все уходили праздновать, съебался раньше всех, ибо скучно.
Выходные долгие, будет очень скучно.
Не слышал о таком правиле.
Я тоже хотел бы такого кунчика :3
В полдень ушёл к аналитикам и пил с ними водку до пяти.
У кого что болит...
Так уныло, серо, пресно..
Куда как интереснее писать вот такое живое, яркое, броское:
Files.lines(Paths.get(fileName)).forEach(System.out::println);
шизоид-перфекционист
Пример на котлине читает построчно.
Чтобы все за раз скушать:
File(fileName).readLines()
File(fileName).readText()
Трип случайно прикрепился
>содержит в себе <Integer [][]>, то есть двухмерных массив
>list.contain(new Integer[] {a, b})
Ты говоришь двумерный массив, но добавляешь одномерный с двумя элементами.
Все просто: методы коллекций ArrayList.contains() и другие, напр. Map.putIfAbsent(), используют Object.equals() для определения есть ли элемент в коллекции. Если List<Integer> или List<String>, это работает потому что и у Integer, и у String метод equals переопределен и с помощью него проверяется равенство. Но ни у одного массива этот метод не переопределен и содержит стандартную имплементацию от Object.equals(), которая проверяет лишь равенство ссылок. Тебе нужно делать вместо массива свой собственный тип данных (класс) с переопределенными в нем методами equals() и hashCode(), только в этом случае коллекции будут нормально работать так как ты ожидаешь.
Полагаю Java вполне подойдет. Это пример "стандартного" языка, в ней есть все фишечки, которые нужно разобрать новичку: статическая типизация, модификаторы доступа, ламбды.
>>25947
>System.out.println("Arrays.equals(iArr1, iArr2): " + Arrays.equals(iArr1, iArr2)); // true
Еще добавлю что именно для этого случая - проверки массивов на равенство - был добавлен статический метод Arrays.equals(). Но в твоем случае тебе это не поможет, т.к. в лист не передать компаратор для contains() - только для sort(). Но в своем кастомном классе вполне можно вызывать Arrays.equals() внутри твоего собственного equals(). А вот как ты переопределишь hashCode() тут дело твое: equals() и hashCode() нужно переопределять только вместе.
Общий вердикт такой: ты используешь неправильный тип данных для своей задачи. Тебе точно нужны именно массивы? Или у тебя там всегда будет лишь два элемента (насколько я вижу это координаты x, y)? В твоем случае можно и нужно создать собственный тип данных - класс. Это не так сложно как звучит. Читай, делай.
Ну вообще я хочу всё таки по-человечески сделать. Значит мне нужен свой тип данных. Это будет класс:
public class WorldMesh {
public WorldMesh(int x, int y) {// конструктор и две нужные переменные
}
}
Потом создание массива:
ArrayList<WorldMesh> world = new ArrayList<WorldMesh>();
И добавление туда элементов:
WorldMesh.add(new WorldMesh(573, 278));
Так же должно быть? А вот про переопределение методов equals() и hashCode(), я вообще не понял. Что такое переопределение хотя бы.
> А вот про переопределение методов equals() и hashCode(), я вообще не понял.
Тогда тебе срочно нужно читнуть 3 глава, 1 и 2 параграф.
По умолчанию это package-private.
говнокниги на русском
>перекрывание вместо override
Почему хотя бы не переопределение? Тошнит же.
И вообще, я в идее alt+enter жмякну и мне все переопределит.
Может у тебя проблемы с энергией, повышенная утомляемость? Витамины может нужно, меньше фапать.
Нахуй тебе двумерный массив тогда нужен был? Хуйней страдаешь какой-то.
Совершенно верно, начало положено. Про переопределение тебе лучше конечно читнуть как выше посоветовали. Вкраце это переопределение метода в классе-наследнике. В Java все объекты неявно наследуются от Object, поэтому у каждого объекта есть методы которые есть в классе Object, в частности equals и hashCode. Но они имеют дефолтную не очень полезную реализацию, и поэтому в своем классе мы их переопределяем, добавляя нужный функционал.
Методы equals и hashCode тесно связаны: equals проверяет равны ли объекты, а hashCode проверяет, могут ли быть равны объекты теоретически. Если два объекта имеют разный хэшкод, то объекты гарантированно разные, а если хэшкод совпадает, то объекты могут быть как равны, так и не равны. Хэшкод это быстрая предварительная проверка, префильтр, перед тем как вызывать медленный equals. Еще по хэшкодам формируются корзины (buckets) чтобы группировать объекты. И еще хэшкод не должен меняться после добавления объекта в коллекцию, иначе все по пизде пойдет.
Вот полная реализация твоего класса, обращайся.
Вот не мог он до середины марта потерпеть, ты бы ему equals() с паттерн матчингом показал.
Это нужно!!!
Не тролль, ты не он.
Он просто data class WorldMeh(val x : Int, val y : Int)
напишет наверное.
Как и на джаве, надо только подождать середины марта.
>И почему не Objects.hashCode(this)
Я не думаю что здесь есть "правильный" вариант. Разработчик сам определяет значения хэшкода для его класса исходя из предположений о количестве объектов этого класса в коллекции, например. Если хочешь положиться на стороннюю реализацию - вперед, никто же не запрещает. Тут же я, во-первых, хотел продемонстрировать как это делать вручную, потому что это учебный пример в первую очередь, и во-вторых, performance-wise лучше написать свою простую формулу чем ощущать всю мощь рефлекшена и цепочки внутренних вызовов. Микрооптимизация, ну. А если серьезно, то я не смотрел реализацию этих методов, но даже и так понятно что общий случай сделать сложно, что все очень субъективно. А %16 это опять же во-первых чтобы показать как легко определять корзины, во-вторых, интуитивно "16 корзин хватит всем" (c).
Пиши свою распределенную субд.
ты так говоришь, будто котлин это не ломбок на максималках, те жирнющая такая зависимость
Потому что сейчас у меня один тест на все стратегии.
уёбывай пока шарпоересь из сорцов не вычистишь
Ломбок не заезжает в зависимости при сборке, долбич.
Лично я не понял что ты хочешь. У тебя же есть и базовый абстрактный класс, и интерфейс. Ну вот первый пикрил с рефлекшеном, но это можно сделать и без, как на втором.
>ну некрасиво же, не хочу плодить темлейтный код
@Test
public void test_BubbleStratedy() {
doTest(BubbleStrategy.class) или new BubbleStrategy()
}
Реализацию doTest пишешь одну на всех.
Чтобы крудить.
Лучше пусть объяснят, как он методы изобретает, которых в сорцах вообще нет. И аннотации тоже мы не ставим.
CRUD = Create Read Update Delete
Обычные операции с данными (обычно БД)
Repository это паттерн доступа к данным, который рекомендуют на замену DAO, потому что он позволяет абстрагироваться от непосредственно самого доступа. Но внутри репозитори все равно зачастую используют те же DAO. Еще один уровень абстракции.
>>26504
Ну а в частном случае это интерфейс спринга, для доступа к данным опять же
https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/repository/CrudRepository.html
Рафаэлки и орхидею в горшочке
Себя любимого, ей больше ничего не нужно.
А может у кого-то есть и тянки? Или вероятность этого крайне мала?
Тогда, просто скинь ей фото хуя, тем самым ты намекнешь на секс, и уже она сама станет более активна.
Чел я с людьми в офисе вообще не разговариваю, о чем ты. Да и зачем мне секс, когда я подрочить могу.
Безопасность. Во внешнем мире смогут сделать
UnsafeStates.getStates()[0] = 'ОП-Хуй';
Если это не твоя оригинальная задумка - возвращать ссылку на изменяемую сущность - то так действительно лучше не делать.
И кто из них это написал?
В любом случае, иммутабельности на джаве нет.
Хотя, ты можешь каждый раз возвращать копию массива. В большинстве случаев нахуй не нужно.
>В большинстве случаев нахуй не нужно
В большинстве может и не нужно, но для некоторых случаев парни даже CopyOnWriteArrayList написали.
Комментарий "Не делайте так" скорее указывает на общую рекомендацию, а не на такие случаи. Часто ты видишь использование CopyOnWriteArrayList? Я даже Collections.unmodifiableList не вижу.
А если нужно перебирать, предоставляешь итератор. Или наоборот, процессишь у тебя, попросив консьюмер.
Эксельщик, а у тебя есть график ненужных в джаватреде вещей? К аннотациям и лямбдам надо добавить иммутабельные коллекции.
Такой график построить намного сложнее, это не просто сводная таблица по датам, тут нужно в каждом сообщении искать "не нужно".
Не только /не нужн.*/, есть и другие способы выразить эту мысль. Но можно начать с этого.
Для сохранения иммутабельности надо clone() возвращать, лалки.
Еще один с регекспами не умеет работать.
Тогда так: /н[еи] ?нуж[еи]?н/
javaagent на китайском сайте.
Подробности на самых популярных раздачах идеи на рутракере. Сам торрент качать не надо, с офф сайта бери.
У меня на линуксе snap пакет сам обновляется вроде. Ничего не слетает.
2019.3.3 сейчас же, да?
Я специально мускл выбрал для вката, потом постгрес.
А ты думал прогресс на месте стоит? Котлин это просто тестинг новых фич для джавы. Пусть они сначала грабли все соберут, а serious business дяди возьмут только то, что взлетит.
Уёбищный кал.
С офф сайта ультимейт скачать, с китайского сайта javaagent.
Китайский сайт в конце комментах к раздаче idea на рутракере. К самой популярной по-моему.
ORM не панацея.
Пиздец 2020 год все еще нет автосвойств, нужно вручную гетеры-сетеры прописывать
Да даже если генерировать их через IDE, все равно тонны уебищного бойлерплейта
Пиздец блядь
Спасибо!
Можно дальше не перекатывать?
Жри records или ломбок.
Такой язык ему изобрели охуенный, который в 90-ых совершил революцию в айти, а он без чайной ложки сахара ебальник скривил.
Вообще-то его так и пьют. Без сахара и пол чашки.
Нет, там просто файл javaagent.jar перетащить drag n drop'ом в окно "Manage License", насколько я помню. И джарник не удалять!
Нахуй вообще нужны свойства и геттеры-сеттеры? Почти во всех случаях в подобных классах нет ничего, кроме данных, и поэтому поля можно тупо сделать публичными.
Usage:
0. Download the zip package and get jetbrains-agent.jar first.
Download page: https://zhile.io/2018/08/17/jetbrains-license-server-crack.html
1. Run the IDE and evalutate for free.
2. Drag the jetbrains-agent.jar into the IDE window.
(Actually you can drag jetbrains-agent-latest.zip too)
Click "Restart" button to restart your IDE.
3. You will see the JetbrainsAgent Helper dialog.
Select license type, check/uncheck offline option and click button.
4. Restart IDE, and all done.
x. Support "License server" and "Activation code":
1). Entry license server address: http://fls.jetbrains-agent.com (If failed see no.2 [below])
2). Active offline with the activation code file: ACTIVATION_CODE.txt
If the activation window always pops up(error 1653219), remove jetbrains' domains from hosts file
License key is in legacy format == Key invalid,check your agent's config again
If you need a custom license name, visit: https://zhile.io/custom-license.html
Хуй знает, я просто перетащил и заработало.
А коммьюнити версию надо удалить перед этой махинацией?
>serious business дяди
А это кто, кстати? Если те люди из бизнеса, которые заказывают работу джавистам, то этих дядь обычно как раз совершенно не волнует, из каких исходников ты компилируешь байткод. Не их это уровень. Точно так же, как они не придут проверять, руками ты геттеры рисуешь или ломбоком. А если так, есть ли смысл ждать?
Ну канеш, самое главное же, это геттеры-сеттеры. Нахуй жвм, нахуй гарбедж коллектор, нахуй всё, самое главное, чтоб дебилу с двача не надо было геттеры и сеттеры писать.
В том, что найти девелоперов на джаве проще, чем на ёбаном котлине. Серьёзным дядям надо не 1.5 студента, а штук по 100 двелоперов на средний проект в ентерпрайзе. Джава получает, только проверенные и нужные фичи. А всякие скалы, котлины и груви - это чисто воды песочница на посмотреть пойдёт или нет.
Когда идея прекратит поддержку, вспомни что ты написал на дваче 8 марта 2020 года.
Ну и если уж мы говорим про поиграться, но на стаке ЖВМа, я бы лично выбрал кложуру.
>найти девелоперов на джаве проще, чем на ёбаном котлине
Девелопер на котлине получается из девелопера на джаве буквально за несколько дней листания мануалов. Причем, что видно по той же популярности ломбока, девелопер только спасибо скажет. Потому что котлин это не скала, а именно что скорее "всего лишь" better java. Ну и тот же гугл насчет песочницы уже с тобой не согласился, например.
Вот бы виндовс так же прекратил поддержку.
Они мудаки.
Ебались тут на работе с кваркусом о фан, на гитбахе что не ишью, то ответ от редхата уровня "съеби, парниша". Нормальные пчелики из того же пивотала себе такого не позволяют, например.
>>26836
Всего лишь беттер джава, которую потом заебёшься поддерживать, и придётся обратно переписывать. Проходили уже. Опять же, на работе черпи пытались писать на котлине, проблема в том, что он хуёво поддерживается примерно всем, включая грейдл, мавен и вообще без пердолинга нихуя нормально не работает.
В приннципе не важно где мавен проект создавать.
>хуёво поддерживается примерно всем
>без пердолинга нихуя нормально не работает
Интересно. Есть конкретные примеры? Может речь о болячках первых месяцев, которые уже решены?
Недавно было, пол года назад может. Специфические вещи, плагины, код анализаторы и т.п. - всё это работает дико хуёво. Грайдл заебали настраивать, чтоб он в джарник всё собрал. Чтоб тесты запустить тоже ебля. Короче, первое впечатление обосрано. Захочу подобного - пойду во фронтенд.
Спрингуха заебись, ещё бы научилась нормально в нативный имедж собираться граалом, цены бы не было.
>Грайдл заебали настраивать, чтоб он в джарник всё собрал. Чтоб тесты запустить тоже ебля
Звучит очень странно, потому что у нас все нормально. Такие-то уж базовые вещи еще бы не работали. Что-то ваше особо специфическое могло и не заработать, понятно. Но, кстати, если на джаву завязаны какие-то локальные штуки типа кодогенераторов, можно прекрасно джаву сочетать с котлином даже в рамках одного проекта.
Перманентно заменили на всех проектах шеб на шебФлакс. Где нужно реактивщина - используем, где не нужна - не используем, и шебФлакс работает, как обычный шеб.
>>26886
Это уже пердолинг начинается. Ну и да, тот же ломбок мы используем не для геттеров и сеттеров, а для геттеров, билдеров и реквайрд аргс конструкторов. Ни рекорд, ни котлин такое не решает.
>Это уже пердолинг начинается
Двуязычный проект пердолинг? Спорно, но дело вкуса скорее.
>геттеров, билдеров и реквайрд аргс конструкторов
>котлин такое не решает
В смысле? Что именно из этого не решает котлин?
Разбираться, что именно там было не нужно, мне лень, поэтому я просто построил частоту употребления этой фразы. Простыню с постами выложил сюда: https://pastebin.com/YnvZEFqb
Искал по шаблону /[^а-я]н[еи] ?нуж[еи]?н/
Такие билдеры в котлине не нужны, потому что заменяются конструкторами с именованными аргументами.
С чего бы? Речь именно о конструкторе.
Спасибо
И как всё перечисленное не даёт сделать автогеттеры? При чем тут оно?
А гк вообще в большинстве языков, охуеть аргумент конечно
Дуньку-то свою каждый вечер балуешь, небось))
Жук есть и на котлине (да много чего под синтаксис котлина портируют)
https://www.jooq.org/doc/3.13/manual/getting-started/jooq-and-kotlin/
Но я реально не понимаю зачем заворачивать нормальный SQL-синтаксис в псевдо-языковой синтаксис.
Чтобы потом в очередной сложной ситуации сидеть и дрочить документацию, чтобы узнать как написать эту йобу, которую на чистом SQL уже бы написал и забыл.
И что? Кто этот код проверял?
Ладно там какие-то организации иногда софт открытый исследуют на наличие бэкдора или подобного, а тут кто будет это тестить?
Чаще распространителю кряка нужен ботнет, а не народная любовь.
Да. Ищешь замену крестам для числодробилок? Листай дальше.
иди к котлину,он плачет
Реактивный спринг на graal vm с кваркусом c value types и fibers тормознее джанги.
Есть такой код, это пишет некий специалист, не я. Есть шабллонизатор еще, есть крудРепозитори, есть энтити. НИГДЕ не создается Map<String, Object> model, почему проходит вот эта строка
model.put("name", name); ????
@GetMapping("/greeting")
public String greeting(@RequestParam(name="name", required=false, defaultValue="World") String name, Map<String, Object> model) {
model.put("name", name);
return "greeting";
}
Его создаёт сам спринг под капотом и передаёт его в твой контроллер. В контроллере ты его заполняешь, а дальше спринг сам его передаёт в шаблонизатор.
Пока что иди дальше. Многим магия не нравится, но вначале можно просто верить в неё и продолжать изучать.
Сервлеты помогут понять, как работает спринговый DispatcherServlet, но в спринге неявно ещё много чего делается - всевозможные автоконфигурации, автосканы и интерсепторы, и в этом сервлеты не сильно помогут. Поэтому в начале в любом случае придётся смириться с множеством странных и неочевидных вещей.
Магии будет меньше, если забыть об аннотациях и делать всё через десятки старых xml-конфигов. Но она всё равно будет.
Методы Контроллера (@RequestMapping/@GetMapping/...) вообще достаточно волшебные: что в них ни попроси - всё доставляется. И в каком угодно порядке, неважно вообще. Может можно даже tyanochku попросить и спринг доставит, я не пробовал.
Пох, 8 крч.
Вот так вот получилось, но на поверку оказалось что все тян пустые внутри...
Сахар. А в 15 версии впервые фундаментальная фича со времен 8 джавы. А именно превью project Loom.
Котлин это бета тест для джавы.
>15
Ну что же, внучек попишет на асинхронной джаве. Проигрываю как костыли прибивают в жабу, а оно то никому не нужно, все повисли на восьмерке
Официальное обращение от Oracle, что они отдают jvm, команду по разработке джавы и копирайт в Жидьрейнс.
>все повисли на восьмерке
Так потому что ближайшая LTS 11-ая, в которой кроме модулей ничего нового нет, а они оказались многим не нужны.
[ for excel ]
не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно не нужно
Мне интересно, бизнесу то это все говно то надо?
Корутины, конечно, инструмент реальный, но вот все остальное? Они реально очканули что котлин может хапнуть кусок пирога? Или их напугало что шарфик уходит полностью в опенсорс? Или их тревожит го с микросервисами и больше ничем
Что блин с джавой происходит??
подарки в студию
И чтобы был долгий саппорт нужно ставить сборку например от AdoptOpenJDK?
нет
Че? Я сейчас на 11 опенжыдыкей. Нужно перекатываться куда-то?
Что так? Обычный openjdk сейчас 11.0.6 от 14 января, а по идее он не должен обновляться после 12 openjdk.
Или это какие-то сборки от самих дистрибутивов линукса?
>OpenJDK от оракля получается получает обновления только 6 месяцев до следующей версии джавы, и у них не бывает LTS? То есть 8 и 11 уже не поддерживаются.
Поддерживается. Текущая лонг тёрм сапорт сейчас 11, следующая, вроде бы будет 17. Поддержка восьмёрки кончается в этом году.
>https://www.oracle.com/java/technologies/java-se-support-roadmap.html
Тут можно всё посмотреть.
>Обычный openjdk сейчас 11.0.6 от 14 января, а по идее он не должен обновляться после 12 openjdk
Он обновляется, но уже не ораклом, а только силами сообщества. Примерно то же самое, как с AdoptOpenJDK и т.п.
Вопрос был про OpenJDK, который не за деньги
Понятно, спасибо. Наверное лучше от adopt ставить, я слышал где-то например openjdk redhat глючные были.
Многопоточность, а доступ к непотокобезопасной коллекции не синхронизирован.
Понял, спасибо. Нашёл, поставил, работает
Зы. Эт я, автор оригинального вопроса. К тем дегродам что не смогли найти кряк в комментах отношения не имею
>Event Bus
короч это автобус, оборудованный для проведения всяких эвентов. те там внутри диванчики, бар, диско шар и музыка. вы с посонами загружаетесь в автобус и катаетесь по городу.
https://github.com/greenrobot-team/greenrobot-examples/blob/master/eventbus-java/src/main/java/Main.java
Ясно, опять все до меня написали.
Ну вот закончилась восьмерка, все же на асп дот нет коре чото там перейдут. Смысл платить деньги за то что бесплатно можно брать. Ну край на какое нибудь си плюс плюс куте уйдут.
А те у кого есть бабки, зачем им эта ваша джаба скрипт. Они САПОАБАПЕРАМ занесут. И будут правы.
Так и будет поверь, важен не язык, а знание основ, базы и умения учится. Перейдут сначала те кто не готов рисковать отсутствием поддержки восмерки. А дальше уже рынок стабилизируется и выработает свои новые стандарты.
Конечно оракл скажет что мы все хотим вернуть в зад, но будет уже поздно.
Ты со своей толстотой должен был в 2022-3 придти, когда закончится бесплатная поддержка openjdk 8 от других компаний.
А ну окей, я тогда передам чо делать битрик разработчикам и 1с внедряторам, что делать когда их параша схлопнеца. У них вроде похожая ситуация их говно вроде вообще умерло. Одно радует что это говно серьезные фирмы не используют. Так и вижу как мухосранская вебстудия с 3мя макаками ковыряет свое говно, что бы оживить.
Ну а если серьезно подумать то перевели если без жертв, то как раз есть 2 года на перевод на другой стэк. Если были жертвы, то наверняка пользуют старую 8ку но уже пилят на новом стеке во всю и каждый день чекают новости и молятся, чтобы не нашли очередную дыру в восьмерке.
>поверь
Да кто ты такой, чтоб тебе верить, мразь?
Пошёл нахуй.
У дотнета и сишарп литерали полумёртвая экосистема. Учитывая, что сейчас уже кругом контейнеры и прочие облачные технологии, в такой проприетарной хуйне вообще смысла нет. Я скорее поверю, что все ломанутся на каком-нибудь расте/го писать ентерпрайз, нежели на сишарпе.
А в чём проблема с 8 мигрировать на 11? Учитывая, что джава чуть более бэквард компатибильная, чем полностью, проблем вообще нет никаких.
>А в чём проблема с 8 мигрировать на 11?
Вот мне тоже интересно. У нас в компании все на 8, а я стесняюсь спросить почему.
У нас уже все минимум на 11 перешли. Новые сервисы дали разрешение пилить на 13 азуле.
На чмох с 8 джавой смотрю с пренебрежением.
До 2017 вообще ни про какие опенждк слышно небыло. А вот сисярп кор уже появился. Прошел поезд жавы, смирись.
У дотнета то мертвая? С их нугетам который сама мс держит? Сириусли? Вот оракл это уже давно стало что то наподобие 1с у них там. Какая то тухлая контора, которая втюхивает курсы оракл спешиалистов за дохуя денег.
Оракл считай сейчас убила жабу, своими платными ждк. Это остается только признать. И потихоньку перепиливать свое по на что нибудь посовременнее.
Вообще уморительно с точки зрения оракла думать что кто то будет покупать их говно, только потому что они туда лямбы с фп запихнули. Еще бы блять за покупку ждк наклейки выдавали в качестве бонуса.
Тем что платить надо ораклу не? Ну как вариант опенждк которое не известно кто и как поддерживает в отличие от того же дотнет кора.
> джава чуть более бэквард компатибильная, чем полностью
На словах-то может и так, а на деле всё упирается в кучу мелких особенностей реализации. Если попробовать запустить достаточно большой проект, работавший на 8, на 11, и он заработает, то повезло, и достаточно немного перепилить девопс. А если нет - хуй, придётся искать и фиксить сотни всплывших багов.
>>28525 - после вот этого было еще три сообщения, их потерли, что за лол? Свободная борда, свободное общение, мда..
>Свободная борда, свободное общение, мда..
Лул кто то еще в это верит? Свободное общение с чмодерами)))0
>А в чём проблема с 8 мигрировать на 11
Вся экосистема ЕЕ слоамалсь нахуй из-за модулей и переименования пакета javax.
Нет, но я примерно догадываюсь что там: вести себя прилично и по большей части обсуждать тему доски. Что из этого было нарушено в сообщении "У меня туго идет чтение Concurrency in practice, у всех так?"?
Тугие в жаве ненужны.
Если что эти слова парсятся через jsoup. Стягивается одной строкой и делиться через str.split(" "), не русские слова отсеивает через регулярку.
Не правильно выразился мне не слова со знаками препинания убрать нужно, а сами знаки препинания удалить из этих слов.
А тебе сколько лет? Может ты лучше дату рождения в паспорте по-хорошему сфоткаешь?
Вопросы дети любят задавать. Точно тебе 17, баньте его.
1) В апаче коммонс есть по слухам продвинутый трим, принимающий вараргс. Можешь скормить ему серию символов к удалению.
2) Если у тебя уже есть регулярки: \b - word-boundary, \W - не_буква. Дальше сам.
> Ну и да, монолиты на миллионы строк кода нахуй не нужны. Микросервисы во все поля.
Ну наконец-то нашёлся тот, кто перепишет с нуля всё легаси, написанное до популяризации микросервисов. И будет не один большой проект, а куча маленьких, которые независимо друг от друга всё равно не могут работать.
>Сам оракл об этом ни раз говорил
Ну тык, бабло кончется, надо как то гоев разводить, вот и содавали 9ки 10ки, при этом усираясь кричать, что пора поцаны двигаться в светолое будущее. Пистон от такой хуйни аж на две мажорные версии раскололся.
>монолиты на миллионы строк кода нахуй не нужны
Ну а в микросервисах кода нету. Одни абстракции с композициями, верно говорю?
Ну а хуйли ты хочешь? Ебаться с поддержкой в случае обновления какой-то технологии? Добро пожаловать. Нормальные проекты даже в кровавом ентерпрайзе, уже если не мигрировали, то мигрируют.
>которые независимо друг от друга всё равно не могут работать.
Не умеешь срать - не мучай жопу. Иди вот в дотнет, будешь с другими шизиками десктопные приложухи пилить из говна и палок.
Поддержка 2 версии питона кончается в этом году. Адыхай.
>Ну а в микросервисах кода нету
Не миллионы строк, но тысячи. А тысячи строк куда проще отрефачить, или на худой конец тупо переписать.
>Адыхай
А вместе со мной отдохнут от пистона разрабы, потому что это говно будут юзать только ученые в датасаенсе большом моченые, и полтара инвалида, кто подумал что это неплохая идея на новомодной поделке запилить свой интернет магазин.
Так же срыгнут на какое нибудь похапе.
Тоесть если раньше было 3 вакансии на мухосрань то теперь осталось 0.5.
Сомнительно. Вся бигдата написана пидоне, и я очень сомневаюсь, что кто-то ломанётся всё это переписывать на хуй пойми какой язык.
В этом собсна вся суть, что написать всё можно на чём угодно, но важно на самом деле стереотипное отношение к языку.
Точно так же будешь ебаться с обновлением технологий в каждом микросервисе.
> Нормальные проекты даже в кровавом ентерпрайзе, уже если не мигрировали, то мигрируют.
Энтерпрайз всегда использовал очереди сообщений между множеством проектов и никогда не называл это баззвордом "микросервисы".
Но ведь это всё неважно, важно обмазываться десятком апишек вместо того, чтобы просто вызвать нужный метод! Да здравствует построчная оплата кода!
Ну вот для биг даты и останется, а все то будущее которое пророчили петону как убийце похапе руби, теперь перечеркнуто. Тупа в паскаль превратился кароч.
Забей, я думаю молодой человек думает что если разбить монолит на микросервисы из милиона строк кода станет 10000 в каждом из 100 сервисов.
По чему все кричат, что питон все? Топовый ЯП по моему, макачить на нем одно удовольствие.
Это проще. Во-первых, у тебя есть ответственные за микросервисы люди а.к.а команда, которая его разработала и поддерживает. Работать таким образом гораздо менее болезненно, чем пытаться обновить весь монолит. Это факт.
>Но ведь это всё неважно, важно обмазываться десятком апишек вместо того, чтобы просто вызвать нужный метод!
Глупый ты. Разобрался бы сначала в вопросе.
Первый на го, второй будет сидеть на 8 жабе и заставлять оракл исправлять баги, так как это дешевле чем переносить всю кодовую базу.
Тритий на плюсах все ядро, а остальное переведут, так как им похуй на стеки, что моднее и дешевле, то и будут юзать
Четвертый уже давно убийцу жабы в попенсорц выпустил, между прочим цветет и пахнет Неткор.
>ответственные за микросервисы люди а.к.а команда
Боюсь спросить, а монолит написан одной макакой, которую держат в подвале?
За монолит ответственны все, кто в него контребьютит. Если мы говорим, про нормальный проект, где хотя бы 10 команд - за такой монолит ответственный кто? Правильно, никто. Потому что такая вещь, как групповая ответственность в ИТ не распространяется на группы свыше 10 человек.
Если ты про дубай то да.
>никто
Бред какойто, как это никто не ответственнен? Это же не совковое нии. Есть модуль или часть системы как угодно обзови. Так же эти части монолита поделены на команды. И у каждая своя граница ответственности.
Я так понимаю у тебя пост трамватический синдром, когда то один ковырял монолит где все падало. И потом серебрянную пулю изобрели в виде микросервисов. Так вам стало проще спихивать с себя отвественность. Хотя по факту вам нужен был грамотный тимлид.
> Это проще. Во-первых, у тебя есть ответственные за микросервисы люди а.к.а команда, которая его разработала и поддерживает
Вжух, и мы вернулись к монолитам, каждый монолит в системе тоже пишет отдельная команда. Вообще, "монолит" - это начиная со скольки строк? С 1000? Со 100000? Кто устанавливает этот предел?
> Разобрался бы сначала в вопросе.
Разобраться надо тебе, раз ты веришь, что любые проблемы решаются микросервисами сами по себе.
>каждый монолит в системе тоже пишет отдельная команда
Толсто. Во всех проектых про которые я знаю, или в которых работал, монолит делился между дюженой команд минимум. Опять же, если мы говорим про кровавый ентерпрайз. Да и монолит от количества сток не зависит. Идея в том, что у тебя вся бизнелогика в одной код базе. Т.е. чисто технически, если ты нарушает сингл респонсобили и опен-клоуз принцип на уровне бизнес логики - у тебя монолит.
>любые проблемы решаются микросервисами сами по себе
Не все, но многие. Очень многие. Цены за это - сложность системы. Вместо одного квадратика, у тебя сотни. Многих такой тред офф отпугивает.
Имеется старый монолит часть функционала уже выпилена часть еще нет, поэтому его еще нельзя убрать. Собственно вопрос как грамотнее всего его уничтожить разобрав на сервисы. Самый простой способ что вижу это логировать все что работает сейчас и по одному убирать попутно покрывая тестами. Есть какие то советы или рекомендации?
> Идея в том, что у тебя вся бизнелогика в одной код базе. Т.е. чисто технически, если ты нарушает сингл респонсобили и опен-клоуз принцип на уровне бизнес логики - у тебя монолит.
Очень размытое определение. Прям представляю, как десятки тысяч программистов пишут одну убер-систему на всю корпорацию и запускают её на одно сервере приложений. Я уверен, что никогда никто так не делает, а из этого по твоему определению выходит, что термин "монолит" описывает несуществующее явление.
Да и про сингл респонсибилити - опять же в каких масштабах? Если упороться этим принципом, то можно вообще создавать по микросервису на каждый класс, и в каждом классе должно быть не больше одного метода.
За исключением тех, кто набегает, но в пщ-треде исключение превратилось в правило.
>Прям представляю, как десятки тысяч программистов пишут одну убер-систему на всю корпорацию
Проект. Я работал в проекте, где было 11 команд по 10-12 человек. Расскажи мне, про то как удобно её поддерживать, и что это дурацкий оракл виноват.
Алсо, у гугла вся код база всего находится в одном репозитории.
>то можно вообще создавать по микросервису на каждый класс
Погугли OpenFaas, или AWS Lambda, или Azure Functions(как у гугла называется я хз, не работал с GCP). Только в обморок не падай.
Я к тому, что монолит может разрабатываться как одной командой, так и десятком. Дело не в количестве девелоперов или строк кода.
Или по евент-дривен архитектуре а.к.а. "я прикручиваю кафку везде где надо и не надо".
То есть выходит, что монолитная и микросервисная архитектура - не взаимоисключающие понятия? В одной системе могут быть и монолиты, и микросервисы? Значит, дело не в какой-то "архитектуре", а тупо в количестве кода и логики в отдельно взятом проекте.
>>28820
> Расскажи мне, про то как удобно её поддерживать, и что это дурацкий оракл виноват.
Пиздец как неудобно, кто спорит-то, лол.
>Алсо, у гугла вся код база всего находится в одном репозитории.
Монорепозиторий - это не монолит. Это вообще непересекающиеся понятия.
>Погугли OpenFaas, или AWS Lambda, или Azure Functions(как у гугла называется я хз, не работал с GCP). Только в обморок не падай.
Видел уже.
>То есть выходит
Зачастую, именно так и есть. Есть легаси говно, написанное на коболе, и есть моднейшие микросервисы на всём чём попало(жаба есесно). А дальше - "ебитесь".
>Пиздец как неудобно, кто спорит-то, лол.
Ну дык мыкросервисы подразумевают, что одна конкретная команда отвечает лишь за несколько мыкросервисов(самый крутой рейт, это чёт типа 3 на девелопера, но это надо нормально систему запилить).
Расскажи потом что в книге интересного было.
Единица исполнения кода - поток, а не процесс. Многопоточность, потокобезопасность, слышал? Процесс это коллекция потоков + метаинформация + статическая память. Один процесс может содержать много потоков (на пике - 39), причем этих потоков может быть быльше чем ядер. Вот они и свичатся.
По делу есть что сказать?
>>29017
Спасибо. То, что единица исполнения это поток, я знаю. Вопрос был не в этом. В ОС есть понятие процесса. Внутри процесса есть потоки уровня пользователя и потоки уровня ядра (user-level и kernel-level). ОС о потоках уровня пользователя не знает ничего (о них знает только библиотека, которой пользуется пользователь). Потоки уровня ядра ОС шедулит сама. Так вот, по идее треды в жабе -- это потоки уровня пользователя и они никак не контролируются ОС, а контролируются только JVM. Получается ОС отводит время JVM, а JVM распределяет это время по своим потокам и как бы неважно, сколько ядер в системе (потому что JVM -- это один процесс).
Короче, пока писал, сам ответил на свой вопрос. В джаве есть две реализации многопоточности. Большинство из них мапят потоки уровня пользователя на потоки уровня ядра и как бы все на этом (шедулер ОС сам их распределяет по ядрам). До версии 1.2 была еще поддержка green thread-ов. Это были чистые потоки пользователя, которые полностью контролировались JVM. Как следствие, у них был более скоростной context switch, меньше оверхеда, но при этом они никак не выигрывали от многоядерности.
>Так вот, по идее треды в жабе -- это потоки уровня пользователя
Это называется зеленые потоки и в Java это не так с версии 1.1. Сейчас все потоки в Java это потоки ОС.
Вот придет project loom - будут тебе зеленые потоки, а пока юзай Котилин или Акка.
Просто до этого JVM утилизировала только одно ядро процессора (как например современный CPython или Node.js). А с нативными потоками JVM стала использовать все доступные ядра.
Речь идет о той реализации, что была на тот момент, project loom будет конечно все доступные мощности использовать. Просто посмотри на дату выхода 1.1
Это не я писал, но loom это действительно зеленые потоки. Но улучшенные по сравнению с тем что было 1.0 - тут тебе и поддержка IO и прочие плюшки.
Если интересна тема, можешь ещё этих отчаяных парней посмотреть
https://www.youtube.com/watch?v=94eTZsNYYBE
они запилили свой prolekt l00m.
Нормальная многоядерность началась с середины нулевых, а 1.1 это вообще конец девяностых.
Поясни, нахуя китайцам ебаться с жабой и чото там допиливать, когда можно было взять шикарный неткор или, на худой конец, го и сделать то же самое, только быстрее и лучше?
Потому что не было понимания что нужно и зачем - это 1997 год. Ява тогда на сервера даже не пыталсь зайти, не было ни JEE ничего. JIT - только представили и то не на всех платформах. Java Memory Model - тоже еще не существует.
>>29191
.Net Core первых версий неюзабельный прототип, только с 3-й версии им стало возомжно нормально пользоваться. На Java же у них было уже работающее приложение, куча разработчиков, библиотек, тулов и прочее. Просто были проблемы с масштабированием и они решили их. В принципе их можно решить и по другому - перейти на неблокирующие IO и фиксированный пул воркеров - но это опять затраты на переписывание всех приложений.
Го же тут вообще не пришей кобыле хвост. Горутины это те же акторы, но с немного другим синтаксисом. А еще незабываемое:
if err != nil {
return err
}
С лета вкатываюсь, сейчас изучаю многопоточность. Сначала было тяжело собраться, потом начал регулярно каждый день по 4-6 часов заниматься, благо, друзей нет и из дома не выхожу никуда кроме колледжа.
Тот самый тугой.
Расскажу, как делаю я. Ищу на хх вакансии на стажёра, ждуна, откликаюсь. 40% смотрит по 3 раза на моё резюме и пропадает. 40% присылают отказ. 5% дают тестовое, почти всегда там круд на спринге, сохранение сущностей в бд, получаемых из JSON и/или XML. Первый раз было запарно, я жидко обосрался не став делать 5 абстракций на каждый класс и городить хелоуворлд-EE. Закономерно был послан нахуй, сделал выводы, пошёл читать Мартина. Стало проще. 5% зовёт на собеседование сразу.
На собеседовании всегда один и тот же набор одинаковых вопросов про связанные списки, методы класса обжект, хешмапы, ООП, SOLID, паттерны, уровни доступа. Иногда спрашивают про Stream, ORM. Всегда SQL, один раз дали написать запросы, там хуета на джойны пары таблиц и т.д.
Последний раз обосрался на вопросе "какой ассерт при создании своего функционального интерфейса".
Неважно, как я отвечаю, ответ один. Схожий с названием соответствующего треда в разделе.
Отсюда вопрос, чяднт?
Мда, сколько же нужно изучать джаву, чтобы ответить на весь тот список, что ты перечислил?
И да, в каком городе вкатываешься?
>сколько же нужно изучать джаву
Я начал осенью, до этого другой язык пытался выучить, но схожий.
Там ничего сложного нет, в гугле есть списки с этими вопросами, я их просто вызубрил уже.
Но собеседующие никогда на них не останавливаются, т.е. ебут до конца, до тех пор, пока не найдётся вопрос, на который ты ответить не сможешь. Я хз зачем так начинающих давить, я ж не на синьёра пришёл.
>в каком городе
Северо-запад дс, но в целом мне похуй, я уже и на другой конец города готов ездить.
>>29456
Вакансии ждуна это, по-моему, днище полное. Обычно там нужен единорог, т.е. фактический миддл, готовый работать за доширак и рыбную котлету. Наверное, потому, что джуна нужно обучать и менторить, а они этого делать не хотят, ты потом ещё запросишь денег или свалишь.
А вот стажировки, "лаборатории" и прочие "java-школы" это да, реальный шанс вкатиться.
Летом будет год, как я вкатываюсь. Правда, никуда особо не тороплюсь, так как помимо основной еще две работы упали. Понимаю, что никакое собеседование сейчас не пройду, поэтому кодю в свое удовольствие, недавно на кодварсе начал задачи решать. Вообще, наверное, джава - странный выбор для начинающего. Почитал сейчас про фичи, которые появятся в 14й версии, есть прикольные штуки. Но в целом, груз обратной совместимости не дает языку развиваться так, как он мог бы, имхо. Удачи тебе в трудоустройстве.
Я хз как отличить стажировку, где через N месяцев ты устроишься ждуном, от очередных курсов "вкат за 72 часа", где по их окончанию просто пошлют нахуй и наберут новых.
Ко всем эти курсам, вроде того же джава-раша, у меня вообще хуёвое отношение, я лучше книгу прочитаю, чем буду ходить слушать какого-то долбаёба, который для абсолютных даунов по 2 часа разжёвывает очевидные вещи. От большинства за версту несёт наебаловом, может я не прав, конечно.
На самом деле я на торрентах нашел некоторые видеокурсы. Типа, пишем приложение и тупо сидишь повторяешь. В определенный момент ты понимаешь, что у тебя так не работает, как у чувака из курсов. И ты начинаешь гуглить проблему. И пока ты ее гуглишь, ты узнаешь овердохуя всего рядом с этой проблемой. Мне для того, чтобы подключить сраный JAXB для работы с XML-ем пришлось +- освоить мавен, так как просто подгружать либы в виде джарников не очень получалось. Так что теперь реально понимаю, почему все говорят, что для того, чтобы научиться кодить, надо тупо кодить. Задачи только себе надо подходящие искать и это самое сложное.
>джава - странный выбор для начинающего
Ну хз.
Литературы тонна, всё что ты захочешь написать за эти годы уже кто-то написал. Работы вроде тоже дохуя, комьюнити большой, значит всегда можно найти того, кто ответит на вопросы. Осталось только вкатиться.
Или это вообще твой первый ЯП? Ни в школе, ни в вузе никаких паскалей, бейзиков, дельфи не изучал?
Да, для меня это условно первый ЯП. Я по специальности инженер, но решил наверстать упущенное. Родители когда-то сказали, что прогеров и так много, и что работы не найти и вот отказался от этого. В школе изучал Паскаль, но это был цирк. Самое мощное достижение - это машинка, которая езди из левой части экрана в правую. Потом пол года в университете были плюсы. Но там самая сложная моя работа - это курсовой проект, где нужно было из рандомного текста убрать все гласные или все согласные. Джаву выбрал за ее универсальность, стабильность, вроде как вакансии есть. Плюс сама идеология чего-то фундаментального мне ближе, чем то, что стильно/модно/молодежно.
Я читать люблю больше, чем видео смотреть.
Когда со спрингом начал заморачиваться, на один из вопросов гугл выдал канал letsCode. Пару видосов глянул, норм. Но потом понял, что чел просто переписывает всё из офф. доков чутка поясняя. Это я и сам могу.
Более менее заходят какие-нибудь лекции, но они само собой всегда на английском, чаще всего уж устарели, и их хуй найдёшь. Глянул так пару видосов с Venkat Subramaniam, ну и там тоже почти всё это пересказ его же книги.
Вкусовщина короче.
>Задачи только себе надо подходящие искать и это самое сложное.
Знакомо. Поэтому я (почти) никогда от тестовых и не отказываюсь, хоть чем-то гитхаб забить.
Наверное, ты не так понял. Я имею ввиду курсы, которые проводят компании. Такие есть практически при каждой крупной конторе, они длятся два-три месяца, и после успешного прохождения тебе берут ждуном. Суть там не в охуительных знаниях, а в том, что ты поболтаешься в их системе и покажешь, что ты не хер с горы, а вполне себе обучаемый разработчик.
>машинка, которая езди из левой части экрана в правую
Алгоритм Конвея? Делал похожее тз.
>вроде как вакансии есть
Ага, для синьёров.
1) class Node https://ideone.com/4kFXbi
2) class MyList https://ideone.com/pMWcaA
Как новичок, не могу понять следующее:
1. Почему в классе Node объявлена переменная типа Node (private Node next в 3 строке)?
2. Что за конструкции типа
this.value = value;
this.next = next;
в классе Node?
3. Как работает этот метод?
public Node getNext() {
return next;
}
4. Ну и на закуску в классе MyList почти всё непонятно:
Что делает этот код? (2-6 строки)
private Node head;
public MyList() {
this.head = null;
}
Что за переменная?
Node node = head; (17 строка)
Зачем переменная присваивается себе:
node = node.getNext()
С меня как обычно, но кто ответит - спасибо
>после успешного прохождения тебе берут ждуном
Или не берут.
А раз
>Суть там не в охуительных знаниях
То я просто проебу 2-3 месяца жизни. Хотя вариантов особо нет.
Я тоже больше читал раньше. Теперь и видосы подключил. А вообще пришел к выводу, что найду себе ментора, который работает в этом всем, пусть лучше он расскажет-подскажет. Тем более, что в ДС2 такие есть.
>private Node next
Ссылка на следующий элемент.
>Что за конструкции типа
Конструктор и есть, буквально. Т.е. ты будешь создавать экземпляр класса, передавая ему значения элемента и ссылку на следующий элемент. Зис это указатель на сам объект.
>Как работает этот метод?
Возвращает тебе следующий элемент. Ты же в курсе что такое связный список? У каждого элемента есть указатель на следующий, вот это оно и есть. Если следующего нет, то ты в конце. Если есть, то тебе дают next.
>Что делает этот код? (2-6 строки)
Конструктор пустого списка. В пустом списке первого элемента (хед) нет, но создать его как-то надо, поэтому присваивается нулл.
>public int size(){
>Node node = head; (17 строка)
Это метод, который возвращает размер списка.
Для этого ты создаёшь переменную, счётчик int count = 0;
Берёшь первый элемент в списке (хеад, голова), если он есть, значит в списке есть элемент, т.е. сайз как минимум 1.
В цикле перебираешь все элементы, пока они есть while(node != null).
>Зачем переменная присваивается себе
Она не себе присвается. Ты берёшь первый нод, угу, ага, значит сайз +1. Потом делаешь также для второго. Каждый раз переключаясь на следующий (getNext).
Вакансий вроде дохуя, но они все 1-3 года опыта или выше.
Node.
Первое слово это ограничение доступа, private.
Второе тип данных. Оно идёт перед третьим, next. Это название переменной.
Тебе решать. Знакомый так перекатился в 30 лет в прошлом году, раньше был юристом.
Ну и не везде это унылые курсы джавы SE, есть куча мест с реальными проектами, по сути тот же испытательный срок, но почти без денег.
Epam, Luxoft и иже с ними — чекай все крупные аутсорс-конторы в своём городе. И вот сюда глянь: https://github.com/solarrust/junior-friendly
не...
Когда-то был тред, в котором аноны писали свою ЗП, область работы и комментарии. Так вот, обеспеченные жаба-господа часто писали, что их заебала их работа, интереса не приносят.
С другой стороны, жаба бэкеры часто обзывают фронтов "формошлепами", якобы это вообще не "настоящее" программирование, а вот в бэке все трушное и сплошные промывания архитектур и других важных штук.
Опытные господа-явисты, внесите ясность. Спасибо.
Меня не бесит.
Джавач, как видишь, все любят попрограммировать на джаве в субботу. А говорят - пятница, пятница...
Нееее
Неправду говорят. Хуле тут разворачивать?
Хотя кому я нужен, в жава школах требуют вышку или последний курс.
Да ваще, аж три дня прошло. Как мы дошли до жизни такой?
Так что лучше, кряк или сброс триала?
Сам я на коммьюнити сижу (стану большим и важным, обязательно куплю)
Таки я его знал, я просто не сразу понял твой контекст и подумал, может кто-то другой чем отличился (Мартин Лютер Кинг).
Не знаю, я кряк поставил и живу.
Сброс триала они вроде поменяли, если найдет конфигурацию предыдущей идеи, скажет что 30 days left. Удалять надо со всеми настройками и плагинами.
Там, который в тырнете скрипт (правда на винду), он чистит все конфиги, всех версий.
В общем, работает.
>Отсюда вопрос, чяднт?
Никто тут не ответит: потому что у разных компаний разные критерии тебе могут отказывать по разным причинам и непонятно что и как ты отвечаешь. Ну и плюс твои зарплатные ожидания - может ты просишь как мидл.
А может это что-то лично, мотивация им твоя не нравится или ты лично чем-то им не понравился.
Пусть на диктофон хоть запишет интервью.
Не редко, по ту сторону стола сидит еще более глупое существо чем ты, с искаженным восприятием себя и мира. И оно, почему-то, будет спрашивает тебя о том, что ты на работе делать не будешь (или к чему тебя даже не допустят).
Переставь, приходишь устраиваться маляром, а у тебя расспрашивают о перспективе или теореме Дезарга. И это блин реалии текущего мира айти.
Просто хотел послушать истории анонов, взглянуть как делали другие люди, сделать свои выводы, понять где я делаю не так.
>зарплатные ожидания
На любую готов.
>ты лично
Возможно. Но с этим я ничего поделать не могу. Стараюсь улыбаться, нормально говорить, кошу под нормиса изо всех сил.
>>29983
Оставшиеся 10% это то, что не вписывается в остальные рамки.
Зовут на собеседование, потом переносят, потом ещё раз переносят, потом хуяк, "о извините вакансия закрыта".
Или приезжайте, приезжаешь, а там "ой тимлида нет, извините, давайте в другой раз".
Или мы посмотрели ваше резюме, на эту вакансию вы не подходите, есть другая, а там вообще какая-то шляпа, про которую я никогда не слышал. Или Saleforce.
С математикой у меня более-менее, читал несколько книг по алгоритмам. Хотя ни разу ещё про алгоритмы не спрашивали, про деревья один раз чё-то было и всё.
Не думаю что до конца поборол, просто увидел себя со стороны в таких же балбесах как я. И появилось желание личного роста из макаки в профессионалы. Правда, скорее, больше повлияла работа с грамотными людьми в ответственном проекте.
Это на кишках самой джавы так заваливают, даже не алгоритмы? А по спрингу спрашивают?
>заваливают
По джаве вопросы из топ 10, почти всегда. Я не могу сказать, что это сложно, обычно я на них отвечаю.
>по спрингу
Один раз попросили назвать примеры аннотаций. Сидя на стуле перед двумя ёблами я смог назвать только рестконтролёры, аутовайред очевидный, Data, но потом вспомнил, что это из ломбока и исправился на Ентити. "Ещё что?" Я хз, не помню, начал что-то про репозитории пытаться вспомнить, но там просто расширяет же. Короче про Service я не вспомнил.
Ну если энтерпрайз не интересен, то я даже не знаю, что может быть интереснее. Ну разве что, может быть, машобчики на питоне пилить.
>На любую готов.
Так и отвечаешь на вопрос о зарплате?
>>30064
>Один раз попросили назвать примеры аннотаций. Сидя на стуле перед двумя ёблами я смог назвать только рестконтролёры, аутовайред очевидный, Data, но потом вспомнил, что это из ломбока и исправился на Ентити. "Ещё что?" Я хз, не помню, начал что-то про репозитории пытаться вспомнить, но там просто расширяет же. Короче про Service я не вспомнил.
По мне так вполне нормальный ответ, если хотят услышать @Service - то пусть явно спрашивают как создать бин с помощью аннотаций.
Может быть стоит указать это в резюме?
ну мокито к файнал классам прикручивается с помошю костыля, так и тут скорее всего костылем прикручивать будут, нассав на всю жабасемантику
Ты в курсе что Service, если мы оба про Service, который от Component, который MVC-шный, вообще НИЧЕГО не делает нового? Он просто имеет другой стринг в себе, разницы в @Component и @Service - 0
Отбой, как только расписал сюда, сам понял что делать. И нет, preparedstatement или buffer с builder-oм я не могу юзнуть.
>сам понял что делать
пиши как решил.
если ты задаёшь вопрос на ссаче, попутно понимая, как решить свою проблему, а потом съёбываешь в закат - это плевок в ебло всему почетному пр/ коммунити
В общем, нужно придумать альтернативу слову Util (MyClassUtil). Я знаю что не правильно и так нельзя, бла-бла-бла, но реально нужно иногда просто хелперы в кучу объединить и да, слово хелпер не предлагать
Поехали..
Почему все, кто помогает другим - шизики?
И на собесах это больше поможет.
MyClassKostili
С дата-классами (анемическая модель) будет пересекаться.
User // дата-класс
UserUtil
Users // стиль как в java, но очень режет глаз с дата-классами
Спасиб, Семён Семёныч
MyProceduresForAnOOPLanguage
>Так и отвечаешь на вопрос о зарплате?
Да, без задней мысли. Один хрен у всех начинающих плюс-минус одинаковые зарплаты. Больше я не стою.
Или тут подвох какой-то, как в вопросах "кем вы видите себя через 10 лет?"
>>30258
Хз, что они хотели от меня услышать. Для себя решил, что почитаю поподробней про всю эту хуйню.
Спасибо за наводку.
С некоторых в голос выдал, типа
>Двухгодичная стажировка для студентов
у Касперского.
В КРОК попытался сделать тестовое. Заебись, так списки я ещё не крутил. Ещё и когда таймер в углу.
Хз, как там вторую задачу решить, я тупой слишком.
Брутфорсом не вышло, я пытался.
Двухгодичная это для тех кто вообще с полного нуля. Я так книгу по жабе читал и проект первый делал год с чем-то. Читал headfirst по 1 странице в 2-3 дня. Потом за неделю подготовился к интервью на стажировку, а попав туда дали проект игру на libgdx, где нужно было и сервер и аккаунты и анимацию и саму игру, там пришлось рвать жопу на спринтах и скрамах, но зато ебать поднялся в знаниях, потом устроился на 800 евро первую работу
Нет, про вообще другую компанию. Про касперский я сказал, что возможно они согласны и на Васяна с завода, у которого компухтера дома нет
MyRoutines? MiscRoutines?
>не правильно и так нельзя
А мне теперь за вот это поясните пожалуйста. В каждом проекте по классу есть со статическими методами-хелперами. У всех же есть методы которые ну некуда больше присунуть.
Хз, считается дурным тоном, как короткие переменные, не отражающие сущности.
Так как сервисы в мире жабки это классы без состояний (набор функций). Решил называть Serv
JarServ
UserServ
MyClassServ
Совсем плохо?
JarFunc
UserFunc
MyClassFunc
Коллега предложил сокращение от слова assistant
JarAss
UserAss
MyClassAss
Но чую подвох
товарищи джависты, как считать текст с консоли, не используя stdin
Погуглив понял, что это вызовет освобождение всех ресурсов JVM и потому всё нормально. Разве что если там что-то намудрёное и таки что-то случиться, то это уже винда протекает
Я хз как вообще спринг учить. И зачем.
В моём понимании это та штука, которая делает всё проще. Если что-то надо учить, чтобы сделать жизнь проще, то тут что-то не так.
Со спрингом у меня всегда выходило просто. Как сделать мэни-ту-оне в гугле - ответ в двух строчках.
Вот хз что тут учить. А в кишках этой хуйни копаться жизни не хватит.
>Будет ли утечка памяти и какая?
Памяти - нет, т.к. память освободится вместе с процессом. Файлы и сокеты закроет ОС, но вот если было соединение с БД, то на стороне сервера сессия какое-то время будет жить и занимать ресурсы.
Делай свой интернет магазин с крудами и спрингом.
Логин, пароль, сохранение в бд, возможность изменять заказ, JSON во все поля.
Они любят давать тестовое в таком формате. Могу кинуть пример.
>Если что-то надо учить, чтобы сделать жизнь проще, то тут что-то не так.
Вообще-то абсолютно во всех сферах жизни так.
Просто надо нормальные фичи делать, вроде свича с лямбдами, а не кривую хуйню, которая противоречит предыдущим жепам.
Ну хз, обычно вещи, которые должны упрощать что-то не требуют гайдов на 9000 страниц.
Смску отправить не сложнее, чем голубя. Грубо говоря.
Если ты в кишочки не лезешь конечно, и свою вышку строить для этого не придётся.
К спрингу гайды тоже не нужны. Добавил конфиг, поставил аннотацию и все работает. А чтобы узнать как нужно просто...
Готов стать твоим падаваном.
взяли тупа скопировали мавен с ненужным наваленным сверху сесурити и без версионирования
Мне же не для спринга.
Видели как у котлина годно сделали использование Closable через лямбду?
Я могу ошибаться, но добавь сверху такую строчку:
import java.io.*;
вместо твоей IOException.
Ну, или рядом import java.io.FileWriter;
Там же у него вот это: (пик 2)
Бля, круглые скобки у try убери.
Вот так:
try {
String text = "huy";
FileWriter writer = new FileWriter("huy.txt", false);
writer.write(text);
} catch (IOException e) {
e.printStackTrace();
}
Только сейчас дошло. Ты создал класс FileWriter, свой собственный, создал его объект writer и теперь пытаешься вызвать методы, которые ты в своем классе не написал. У тебя и передача аргументов в конструктор подчеркнута. Либо переименуй свой класс (и файл, соответственно), либо, если ты пишешь в идее, то внимательнее смотри на пакет, в котором лежит класс, который ты вызываешь.
Получилось. То есть FileWriter это стандартный класс из библиотеки? Какой-то хреновый пример метанит выдал.
Блин, почему вы такие умные, а я довн?
RandomAccessFile попробуй в качестве примера, хоть это и старый класс.
Ну .lang, .io и .util желательно знать хорошо. На Метаните много ошибок, но когда начинаешь копать, что не так, качаешь скилл. А вообще, спасибо тебе, анон. Ты немножечко укрепил мою веру в то, что я чему-то научился.
Ты смотри в следующий раз что высвечивается когда new пишешь. Там адрес пакета каждого класса. От тупых ошибок спасает.
А как стандартные библиотеки просмотреть? Хотя ладно, я загуглю.
А у тебя было такое, что создавал инстанс класса из jfx, а из за невнимательности импортил одноименное говно из awt?
У меня было такое, что я написал свой класс Currency и каждый раз, когда создавал его объекты, внимательно следил, чтобы он не оказался из java.util.
Ну там, наверное, другие есть, которых нет в жабе. А вообще, кто в курсе, на Котлине сейчас можно делать все тоже самое, что и жабе или все таки есть какие-то фундаментальные ограничения? Когда-то давно читал, что у них нативных методов то ли нет, то ли очень мало.
Да у Касперского вообще старая подзалупная контора, где держат на голодном пайке.
Надо исходный код смотреть что используешь. Ну хотя бы javadoc сверху метода. Ctrl + мыффкой кликни.
Физика, схемотехника, теормех. Наверное еще что-то было, уже не помню. А тут я просто пытаюсь проникнуться мудростью местных анонов.
И goto не работает!
>Рано мне в главу с файлами лезть.
Лучше бы как раз научился файлики читать, будет на чём исключения обрабатывать. Покажи вообще, что там у тебя идея запускает, какая строчка в консоли
В консоль не выводит ничего, просто код 0. Сейчас попробую без расширения файл пильнуть.
Там первой строчкой, её нужно раскрыть, выводится собственно команда, которой Идея запускает твой класс. Покажи, что там написано.
>RandomAccessFile
Ладно, попозже, тут еще по работе приёбываются, заколебали. Скорее бы в гомонаносеки выкатиться с завода.
Думаешь он не тот файл запускает? Пусть запустит с ctrl + shift + F10
Не помогло. Да и ошибка, что файл не найден, не выдается.
>параметр запуска ограничивающий количество незавершенных задач в списке, если достигнут, то задачу поставить нельзя
Как бы хочется просто счётчик поставить, на отъебись. Но тут ведь по любому подвох какой-то?
инт каунт = число.
При получении новой задачи буду проверять сколько несделанных в бд, если это число больше каунт, то задача отбрасывается, респонсэнтитит, бад реквес, хуё-моё.
Ну это первое, что в голову пришло, идея хуёвая, сам понимаю, поэтому и решил спросить у кого-то ещё.
Как нормальные люди это реализуют?
Нет бы узнать что там за ошибку выдает, половина анонов треде перебирает различные варианты синтаксического пиздеца, не относящиеся к проблеме.
Не удивлюсь если анон запускает другой файл.
Либо сделать maven-проект, тогда не надо весь путь указывать, потому что он в target будет рядом при компиляции, а текстовый файл засунуть в resources.
Не юзаешь мавен - значит ты пидор!
Всё нормально, но подумай, как защититься от превышения лимита при одновременных запросах
Про AtomicInteger только не думай
Эта хуерга и платный есть? Ну просто эталонный пример того, когда новее не значит лучше.
Покажи
Наверное для гибкости. Если каждый раз синхронизироваться на this, то методы класса, не зависящие друг от друга, будут зря друг друга ожидать. А при таком подходе как на пике можно легко добавить еще один виджет не зависящий от первого, со своим монитором, и лочиться уже параллельно с первым, а не последовательно при использовании всего одного монитора.
А, вот оно что, не додумался.. Спасибо!
Стоп, правильно я понимаю: при добавлении новых виджетов нужно добавлять и новые объекты-локи?
Да. Если функции класса (в общем смысле этого слова) независимы друг от друга, то каждая функция контролируется отдельным монитором (объекты-локи).
А если весь класс выполняет что-то одно, т.е. у него одна функция (в общем смысле этого слова), и всё свое состояние он мониторит сразу, то тут удобно изпользовать всего один объект-монитор, либо объект-экземпляр класса, либо отдельный объект-лок.
Ради интереса открыл Collections.SynchronizedCollection (на нем основан, например, SynchronizedList): тут они используют все равно выделенный объект-лок, названный mutex, а не синхронизируются на this, что я в принципе поддерживаю.
Все, теперь точно понятно, еще раз большое спасибо!
Ох лол, а в конструкторе объекту-локу mutex присваивается this. Недосмотрел =) Видишь, эка гибкость. То есть по факту у них идет synchronized (this) {...} везде.
Хех, ясно. Ну, может, в данном случае тоже гибкости чуть больше, чем просто this из-за того, что там конструктор принимает какой-нибудь специфичный мьютекс, хотя фиг его знает.
Pattern pattern = Pattern.compile("?");
Field.textProperty().addListener((observable, oVal, nVal) -> {
if (!pattern.matcher(nVal).matches() )
{
Field.setText(oVal);
}
Хотел делать мир лучше?
Привет, анон. Специалист по гаданию на скриншотах в треде. Если ты еще не решил проблему, то давай разбираться. По картинке у тебя не совсем понятно что ты сделал.
Для начала скажу, что конфигурация запуска [1] показывает, что как минимум запускаешь ты все правильно, нужный класс и тд, а то некоторые в треде сомневались (и правильно делали). Далее, тебя просили показать как IDE запускает твой класс, т.е. развернуть командную строку. Это можно сделать, кликнув на [2], но я думаю нам это ничем не поможет.
Теперь ближе к сути. Откуда появляются файлы [3] именно в том месте в котором они сейчас лежат - сиблинги относительно класса ([6])? Ты их вручную создал? Потому что код, написанный в main(), такого не сделает. Файлы должны появляться в [5], в корне проекта. Я подвожу к очень важному моменту: файлы создаются самостоятельно, их не надо предварительно создавать руками, FileWriter способен сделать это сам. Т.е. ты удаляешь файлы [3], убеждаешься, что в [5] их тоже нет, запускаешь программу [1], и файл с именем [4] автоматически появляется в [5] (а не в [6]!).
Несколько замечаний по коду:
1) Использовать нужно try-with-resources конечно же. У тебя он изначально был (это конструкция try () {...}), но в процессе рефакторинга с анонами ты его потерял. Верни как было. И после этого close() можешь убрать (он вызовется автоматически т.к. AutoCloseable).
2) flush() можно не использовать при записи маленьких файлов, точнее файлов, которые ты очень скоро уже закроешь. При вызове close() флаш вызывается автоматически, данные не потеряются никогда. Ну конечно не "никогда", но это уже не связано с ручным вызовом flush(), так что смело удаляй.
3) Ошибки приятнее выводить в System.err, а не в System.out. Интерфейсы этих объектов полностью совпадают, просто замени три буквы и запомни: ошибки -> err.
PS: Если третий параграф не поможет тебе найти файл, в который осуществляется запись, то пиши, у меня уже готовы планы куда ковырять дальше. Но я предполагаю что это ты просто файл потерял.
Привет, анон. Специалист по гаданию на скриншотах в треде. Если ты еще не решил проблему, то давай разбираться. По картинке у тебя не совсем понятно что ты сделал.
Для начала скажу, что конфигурация запуска [1] показывает, что как минимум запускаешь ты все правильно, нужный класс и тд, а то некоторые в треде сомневались (и правильно делали). Далее, тебя просили показать как IDE запускает твой класс, т.е. развернуть командную строку. Это можно сделать, кликнув на [2], но я думаю нам это ничем не поможет.
Теперь ближе к сути. Откуда появляются файлы [3] именно в том месте в котором они сейчас лежат - сиблинги относительно класса ([6])? Ты их вручную создал? Потому что код, написанный в main(), такого не сделает. Файлы должны появляться в [5], в корне проекта. Я подвожу к очень важному моменту: файлы создаются самостоятельно, их не надо предварительно создавать руками, FileWriter способен сделать это сам. Т.е. ты удаляешь файлы [3], убеждаешься, что в [5] их тоже нет, запускаешь программу [1], и файл с именем [4] автоматически появляется в [5] (а не в [6]!).
Несколько замечаний по коду:
1) Использовать нужно try-with-resources конечно же. У тебя он изначально был (это конструкция try () {...}), но в процессе рефакторинга с анонами ты его потерял. Верни как было. И после этого close() можешь убрать (он вызовется автоматически т.к. AutoCloseable).
2) flush() можно не использовать при записи маленьких файлов, точнее файлов, которые ты очень скоро уже закроешь. При вызове close() флаш вызывается автоматически, данные не потеряются никогда. Ну конечно не "никогда", но это уже не связано с ручным вызовом flush(), так что смело удаляй.
3) Ошибки приятнее выводить в System.err, а не в System.out. Интерфейсы этих объектов полностью совпадают, просто замени три буквы и запомни: ошибки -> err.
PS: Если третий параграф не поможет тебе найти файл, в который осуществляется запись, то пиши, у меня уже готовы планы куда ковырять дальше. Но я предполагаю что это ты просто файл потерял.
Optional.of("JABA NO COBOL").map(s -> s.replaceAll("NO", "YES")).ifPresent(System.out::println);
Я тоже чел. Написал крутой класс, а никто даже звездочку на гитхабе не поставил.
Он уже не в первый раз так называет.
Пост потерли, да и ты специально будешь провоцировать, если я скажу.
>>1631257
Тут у вас какой-то обмудок посты трёт, так что пока его санными тряпками не выгоните, я ливаю.
Двач превратился в форум нулевых, лол.
Уф, жоска, пермач ему надо выдать
А ты кто? Тут модер может затереть только за < 18 лет и за шитпостинг.
Читайте, суки.
>>1631257
Тут у вас какой-то обмудок посты трёт, так что пока его ссаными тряпками не выгоните, я ливаю (и вам рекомендую).
Двач превратился в форум нулевых, лол.
//////gggg
Я со студентами-джава[недо]программистами делаем одной командой проект - на базе Kurento API создаём разворачиваемое на отдельном сервере приложение для проведения онлайн видеоконференций.
В рамках этого проекта потребовалось реализовать технологию WhiteBoard (белую {интерактивную} доску), чтобы участники конференции могли в режиме реального времени рисовать на доске и видеть нарисованное.
Прошу что-нибудь посоветовать, какой-нибудь готовый проект на гитхабе где это реализовано, какую-нибудь технологию, в общем что-то, чтобы не создавать с нуля эту доску.
Пробовал через mapper.readValue, выдавало кучу исключений. СО не осилил. Подскажете?
Это всё тот же Анон, которому нужно хранить одно значение. БД отправляются в Вальгалу с каждым ребутом, а вариант с одним значением в файле начальство отвергло. Хоть и оправданно.
Че хочешь сделать-то? Обычную десериализацию? Создаешь два класса, внешний и внутренний, во внешнем будет поле типа внутреннего класса. Дальше readValue, да. Два, три уровня вложенности - ничем в этом плане не отличаются от десериализации самого базового json вида {"hello":"world"}. Обвязка аннотациями не обязательна.
Чтобы не получить через год миддла без знания устного английского. И чтобы ты мог нормально общаться с коллегами/заказчиками.
нахуя мидлу устный англ он же разраб
>с коллегами
я в бульбостане, тут тарашкевицу знать надо
>c заказчиками
если я хотел бы общаться с заказчиками то пожалуй фрилансил бы, и нахуя тогда там работают было-манагеры?
Вкатываюсь в ваши эти программирования.
-Есть Фрайм F1 на ней jCombobox1.
-Есть Class с методом который читает Ексел Таблицу и выводит данные.
Вопрос как мне занести их в jCombobox1?
Строка 52
В VBA пиздец как просто из любого класса(модуля) а в Джаве как?
F1.Combobox1.additem c
Забыл дополнить что этот метод вызывается при нажатия батонa (kek) на F1. Фрайм уже инициализирован.
Что не так-то? У тебя подчеркивает переменную, а не метод. Как у тебя jComboBox1 инициализирована? Какая ошибка компилятора?
Переменая работает.Если написать System.out.print(c)
то данные с екселя видны в консоле.
Теперь мне нужно их занести в jCombobox1. Как это реализовать?
>Теперь мне нужно их занести в jCombobox1. Как это реализовать?
Именно так как ты и пишешь, методом addItem(). Что именно у тебя там не работает я угадать не могу. Собери маленький тестовый пикрил, потом увеличивай до своего исходного.
1. У меня Combobox была декларирована как private поэтому я не мог из другого класса её вызывать.
2. Класс ктомуже откуда я её вызываю статический а Метод во Фрейме где лежит Сombobox не статический.
Вот теперь думаю как сделать это рабочим. А мне говорили Жаба лёгкая.
Нетбинс рулит
Ну ты сраз
Тег не работает
Может обсудим спринг?
Задание по изучению аннотаций и рефлекшн апи. Тупо учебная.
Значит никак, ну ок. Тогда сделаю как в JUnit. Типа, выполню все, но проядок не гарантирую
а, и спасибо
Раз ты используешь рефлексию, то можешь просто подсчитать количество аннотированных методов.
Пытаюсь захуярить сервер GlassFish в IntelliJ IDEA.
Не получается, происходит какая-то непонятная хуйня (см. скрин).
Анон, помоги, прошу, очень прошу..
всё, уже не надо, разобрался
Windows:
>Эта папка пуста
>Элементов: 0
IDEA:
>Warning: The selected directory is not a valid GlassFish home
>Application server libraries not found
USER:
>Не получается
>какая-то непонятная хуйня
Это пиздец.
Да там весь путь надо прописывать просто, разобрался уже.
Проболел три дня, думал коронка, но хуй там я так просто умру
Но мне нужно ограничиться конкретным пакетом.
Типа, протестировать все, что в com.example.ExampleTest, а не вообще все, что в com.example.
Типа, разумеется, скорее всего аннотации висят только там, где и надо тестировать, но по условию задачи на вход идёт название пакета и я не должен трогать всего остального
Не надо ничего руками прописывать, ты же программируешь не для этого.
У тебя "путь по-умолчанию" стоит - папка проекта, т.е. [5] как я на картинке выше писал. Путь по-умолчанию это пустой путь, т.е. "" (пустая строка).
А часть пути от корня проекта до конкретной папки с классом можно получить из имени пакета, вот так: <ClassName>.class.getPackage().getName().replace('.', '\\')
Только нужно помнить что это всё лежит в "src".
Получается итоговый вариант такой (относительный путь - "относительно" корня проекта):
>String filename = "src\\" + WriterTest.class.getPackage().getName().replace('.', '\\') + "\\test.txt";
Если прям очень хочется получить именно абсолютный путь, от корня, то рекомендую java.nio.file.Paths:
>String filename = Paths.get("") // получаем порень проекта
> .resolve("src") // спускаемся на src
> .resolve(WriterTest.class.getPackage().getName().replace('.', '\\'))// спускаемся на папку класса
> .resolve("test.txt")// получаем файл
> .toAbsolutePath()// конвертимся в абсолютный путь
> .toString();
Двач такой двач. Поправил код.
>String filename = Paths.get("") // получаем порень проекта
> .resolve("src") // спускаемся на src
> .resolve(WriterTest.class.getPackage().getName().replace('.', '\\')) // спускаемся на папку класса
> .resolve("test.txt") // получаем файл
> .toAbsolutePath() // конвертимся в абсолютный путь
> .toString();
По выводу [1] видно что условие [2] не дает коду дойти до [3] из-за return, элементарно, Ватсон.
Только что дошел до трай с ресурсами. До этого не понимал о чем говорите)
>>34219
Чето ты совсем нулячий. Ну да ладно, все такими были.
>почему ретурн не дал выполнить блок трай?
return ничего не дает выполнить, это выход из метода, а у тебя это метод main, так что return тут это полностью выход из программы. Поэтому после него ничего не выполнится.
>В книжке ретурн прописан
Верю. Но в книжке же еще прописаны параметры запуска, ведь правда? Ведь ты не дословно скопировал сообщение, выдаваемое при ошибке, ты его переврал на свой лад как понял. То, что у тебя в коде звучит как "Использование файла .txt" в оригинале в книжке выглядит так: "Использование: ShowFile имя_файла". Это и есть параметры запуска. Эту твою програму надо запускать: "java <package.name>.ShowFile <filename>". А "if (args.length != 1)" как раз проверяет, передан ли программер ровно один параметр.
А хули там параметр в кавычках? Тут даже Скалли и Малдер хуй разберутся.
Все равно не понятно.
>java <package.name>.ShowFile <filename>
Это запуск из командной строки, к такому ты еще возможно не готов. Идея тоже может запускать твою прогру с параметрами, вот так:
Вон оно чо.
Подставил файл, не сработало, убрал - при компиляции "шоуфайл" стал открываться старый файл "QExcDemo". Что за хуйня?
Наверное потому что передавать командные параметры в программу это к джаве напрямую не относится.
В общем виде в любой операционке это: cmd arg1 arg2 arg3...
В твоей книге это: CopyFile откуда куда
Не сработало.
На стажировке, тип. Хотя больше на учебные курсы похоже
Я со студентами-джава[недо]программистами делаем одной командой проект - на базе Kurento API создаём разворачиваемое на отдельном сервере приложение для проведения онлайн видеоконференций.
В рамках этого проекта потребовалось реализовать технологию WhiteBoard (белую {интерактивную} доску), чтобы участники конференции могли в режиме реального времени рисовать на доске и видеть нарисованное.
Прошу, ЕСЛИ кто-то из присутствующих знает соответствующую js/java-штуковину, что-нибудь посоветовать, какой-нибудь готовый проект на гитхабе где это реализовано, какую-нибудь технологию, в общем что-то, чтобы не создавать с нуля эту доску.
Это копия, сохраненная 19 мая 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.