Это копия, сохраненная 8 июня 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Q: Поздно ли вкатываться в айти в 20/30/40/100 лет?
А: Нет, не поздно.
Q: Cобираюсь учить джаву по 2/5/20 часов в день. За сколько дней я выучу достаточно, чтобы зарабатывать фрилансом?
A: На джаве фриланса нет. Хочешь фрилансить — дуй в ПХП/раби/1С тред.
Q: Хули все книги на английском?
A: Без английского ты не нужен и можешь смело идти нахуй. Ну или в 1С-тред.
Q: Что скажете за джавараш?
Если вкатываешься с нуля, то можешь написать пару "хеллоу ворлдов" до 10 лвла. Дальше курс рассчитан на ленивых и не умеющих читать книжки людей. Количество говнокода зашкаливает, годных задачек пару штук на весь курс. В любом случае решать тебе.
https://github.com/qqqlll/Java-Thread/wiki
6 день, если ты не долбаеб, можно вообще биллить, как фуллтайм. Но вообще парттайм не проблема. Сам сейчас после 6 лет фриланса ушел в стартап и подрабатываю на фрилансе часов 10-15.
Подскажите как эффективнее осваивать спринг ?
Пишу телеграм бота, хочу чтобы он умел отправлять картинки пользователю. Проблема в том, что картинки он должен генерировать(графики). Возможно ли в джаве сгенерировать картинку без gui и потом отправить ее пользователю? Вроде в javafx симпатичные графики, мне вполне бы подошли. Или создавать внутри картинки это bad-practice и есть какие-то другие решения?
Нет. А теперь ответь на вопрос. Ты ведь не просто так спизданул и располагаешь какими-то аргументами, правильно?
Видимо ты просто привык передавать параметры с названием clazz, создавать отдельные методы для коллекций и расставлять атрибуты на каждый чих, что убогость подобного подхода даже не замечаешь. Ну или весь твой кодинг на жабе заканчивается расстановкой атрибутов для spring boot и ничего сложнее ты не пишешь.
priceRepository.findByManufacturer(manufacturerEntity);
или
((PriceRepository) repository).findByManufacturer(manufacturerEntity);
?
Точнее в первом
PriceRepository priceRepository = (PriceRepository) repository;
return priceRepository.findByManufacturer(manufacturerEntity);
У меня просто есть абстрактный класс, в котором используется обычный JpaRepository, и классы для конкретных сущностей, которые наследуются от этого абстрактного и переопределяют некоторые его методы. У них в конструктор передается репозиторий для конкретного типа сущностей. Все же норм вроде, особенно вот так>>65919, разве нет?
JpaRepository это по сути маркерный интерфейс. Ты пишешь интерфейс, который экстендит JpaRepository, объявляешь там методы по определённым правилам, и спринг в рантайме подсунет тебе прокси-объект, в котором эти методы реализованы. Тебе даже реализацию писать не надо.
То есть для каждой сущности тебе просто надо сделать интерфейс, который экстендит JpaRepository, и объявить там свои методы. А потом куда нужно вставляешь инстанс этого интерфейса через dependency injection. Только не забудь в класс конфигурации повесить аннотацию @EnableJpaRepositories.
Но бывают такие случаи, когда функционала Spring Data недостаточно. Если тебе нужно реализовать какие-то кастомные методы, то делаешь так:
1. Создаёшь интерфейс, в котором объявляешь эти кастомные методы.
2. Делаешь так, чтобы интерфейс твоего репозитория экстендил, помимо JpaRepository, твой интерфейс с катомными методами.
3. Делаешь реализацию интерфейса с кастомными методами.
Спринг сам поймёт, где искать реализацию кастомных методов, поэтому с интерфейсом репозитория можно работать точно так же через внедрение зависимостей.
Также для методов в интерфейсе репозитория можно повесить аннотацию @Query, в которой можно написать SQL-запрос.
Алсо, для работы с JpaRepository тебе нужно будет замапить свои сущности и поля в них с использованием JPA-аннотаций (ну или через XML-конфигурацию).
Слишком неэнтерпрайзно. Тебя ж помидорки засмеют.
Можно, но зачем использовать JpaRepository и делать абстрактный класс, от которого наследуются репозитории всех сущностей? Просто пишешь для каждого репозитория свой класс, помечаешь его как @Repository и вставляешь куда тебе нужно через внедрение зависимостей.
больше абстракций богу абстракций
awt.Robot понравился, посоветуйте похожие, чтобы управляли системой.
>>65623
>Есть много вариантов, особенно для Java.
Где, братишка? Я вот на hackernews и stackoverflow смотрю remote java - из 300 вакансий вообще таких штук 5. Зато remote js (react, как правило) хоть жопой жуй. Много (больше чем remote) java вакансий с переездом. Короче, мой вывод, что java любят в сириус бизнесе (где тебе и с переездом помогут), а удаленку там не любят.
6 лет java. Хотелось бы удаленку на $5k.
google: spring web app example
Всё будет уже написано за тебя. Переписываешь по шагам к себе и вникаешь. Пытаешься изменить/дополнить чтоб вникнуть лучше. Дерзай.
>6 лет java
Во. У меня второй год пошёл, открыл заново для себя "Clean code", пользу от хорошо написанных тестов и нормальное проектирование с уместным использованием паттернов.
Расскажи, если помнишь, как проходило твоё развитие по, скажем так, годам.
>Сначала пишешь, потом думаешь.
А еще пишешь комментарии. К каждой строчке. Так лучше запоминать.
почему в первом 1ца не присваивается?
i = i++ сначала копирует старое значение i из правой части в левую, а уже потом инкрементирует. С ++i дало бы 0 1.
Ути-пути! Давай объясню. На перовой картиночке i увеличивается на единичку после операции присваивания.
в первом поменяй на ++i, поймёшь
Потому что он копирует старое значение влево, а потому уже инкрементирует. Новое значение при этом уже не затрагивается.
хорошо, но куда пропадает 1ца?
я вижу это так
есть i = 0
ей присваивается она же сама, то есть 0
и после этого присвоения она же инкрементируется на 1
Присваивание происходит после инкрементирования и присваивается старое значение.
Ты ещё ++i + ++i погугли.
> ну здесь всё ясно: если i = 0, то
На самом деле не ясно. Это в жаве жёстко определён порядок операций, а вдругих языках конпелятор вправе выдавать любую хуйню ради ПИРФОРМАНСА.
Инкременты и декременты вообще ненужное говно. i += 1; i -= 1; - и никаких лишних раздумий.
Я и так тут, если верить анонам из сишарп-треда.
> 2k18
> удивляться тому, что заказчики путают жабку и жс
ты вообще спасибо скажи, что он клавиатурой пользоваться умеет.
как они там умудряются работать? Вхождение в проект это-же несколько дней, а то и месяцев.
Прежде чем что-то править, надо вкурить, как это работает, и зачем это сделано.
А тут хоп хоп и за пару часов сделал фикс на незнакомом проекте, ага
Ты срешь везде, до куда можешь достать? Нахуй писать какую-то бессмысленную хуйню, говно?
прими таблетки, шизик.
ПРИШЛО ВРЕМЯ ЕБАТЬСЯ С ХИБЕРНЕЙТОМ
ХИБЕРНЕЙТ САМ НЕ ПЕРЕЕБЁТСЯ
НАСТРОЙ ЕГО, НАСТРОЙ ЕГО ЕЩЕ РАЗ
ЗАЧЕМ МНЕ НУЖЕН SQL, У МЕНЯ НЕТ ВРЕМЕНИ ЧТОБЫ ЕБАТЬСЯ С НИМ
ЛУЧШЕ ЕЩЕ РАЗ ПОЕБАТЬСЯ С ХИБЕРНЕЙТОМ
Шизик тут один, и это не я.
Но он прав.
Эта хуета действительно годится только для хелловорлдов.
Спринг, кстати, тоже не нужен.
И вообще, и в 2018-м особенно.
>годится только для хелловорлдов
Видимо, ничего кроме них тебе писать и не приходится, мальчик-ортодокс.
именно что хибернейт нормально работает только на хэллоуворлдах.
В реальных проектах нужно тщательно следить за каждым запросом, чтобы оно апдейтило только нужные поля к примеру, и определённым образом. С хибернейтом это превращается в геморрой и скакание по граблям.
Опять же это хиберовское стремление вытащить весь граф объектов.
Для хеллоуворлдов это круто, в реальных проектах это огромное зло
там куча нюансов с этим lazy, и оно может игнорироваться.
Твоя реплика показывает твоё знание хибера исключительно на хэллоуворлд задачах
>Потому что, ВНЕЗАПНО, фреймворк нужно сперва настроить, а потом использовать согласно спеке
в данном случае придумываем себе проблему, а потом героически её решаем
Длину можно измерять как линейкой, так и штангенциркулем, и в разных ситуациях нужен разный инструмент.
он и с этой задачей не справляется
1.Обойдусь ли я одним лишь Java, учитывая,что подключаться к ПК я собрался с помощью Wi-Fi?
2.Как вообще называется такое «направление»,что ли,когда создаётся приложение для Android для управления чем-либо?
> 1.Обойдусь ли я одним лишь Java, учитывая,что подключаться к ПК я собрался с помощью Wi-Fi?
Делай веб-сервер и с телефона туда сри. Вот только если собрался делать что-то глубоко системное, то без крестоебства (или сисярпа, у него нормальная работа с windows api) не обойтись.
> Как
Internet of things.
Экстрасенс в треде - все клетку Фарадея.
Что использовать вместо Hibernate? MyBatis?
Я например знаю, что отрицательные индексы в аналогичных функциях в Оракле,
например в функции SUBSTR, могут легко использовать отрицательные индексы и это будет означать отсчет с конца,
так вот,
String string = "animals";
System.out.println(string.indexOf('a')); //выводит 0
System.out.println(string.indexOf('a', -4)); //выводит 0
, а метод substring вообще выбрасывает exeption String index out of range на отрицательный индекс,
так как же отрицательные индексы работают в Java,
В зависимости от метода работают. Смотри джавадок.
>книгу по Java с каким-то проектом
НЕ БУ ДЕТ! Твердо и четко.
Я не знаю что ты имеешь ввиду под тырпрайзом, но обычно тут два пути: JavaEE и Spring. Гуглишь примеры проектов и вникаешь что где да как.
>JavaEE и Spring. Гуглишь примеры проектов и вникаешь что где да как.
Их и имею. Ну какую книгу ты можешь посоветовать по spring, с учетом, что джаву в рамках programming by doing я освоил целиком?
Библия новый завет.
Ну Spring in Action банальный. Но лучше что-то делать, раз ты такой заряженный, то знаешь какие сервис бывают, вот и сделай аналоговнет на спринге.
так же я заметил что у явовцев самая здоровая борда из всего програмача.
Как мне скопировать один двумерный массив в другой по значению?
У меня получается так, что передается ссылка и изменяются сразу оба массива.
object MatrixObject {
var table: Array<Array<Int>>? = null
fun randOf(n: Int) {
table= Array(n, { Array(n, { Random().nextInt(100 - 0) + 0 }) })
}
var tableF: Array<Array<Int>>? = null
get() {
if (field==null)
factorization()
return field
}
fun factorization() {
tableF = table!!
...
}
}
Я пробовал
for(row in 0 until table!!.size)
tableF!![row] = Arrays.copyOf(table!![row], table!![row].size)
и
for(row in 0 until table!!.size)
tableF!![row] = table!![row].clone() // и copyOf()
(Это на Kotlin. Но, как я понял, от Java, в этом примере, отличия только синтаксические.)
Костыль тоже подойдет. Третий день бьюсь. Буржуины со СтакОверфлоу нахуй посылают.
Как мне скопировать один двумерный массив в другой по значению?
У меня получается так, что передается ссылка и изменяются сразу оба массива.
object MatrixObject {
var table: Array<Array<Int>>? = null
fun randOf(n: Int) {
table= Array(n, { Array(n, { Random().nextInt(100 - 0) + 0 }) })
}
var tableF: Array<Array<Int>>? = null
get() {
if (field==null)
factorization()
return field
}
fun factorization() {
tableF = table!!
...
}
}
Я пробовал
for(row in 0 until table!!.size)
tableF!![row] = Arrays.copyOf(table!![row], table!![row].size)
и
for(row in 0 until table!!.size)
tableF!![row] = table!![row].clone() // и copyOf()
(Это на Kotlin. Но, как я понял, от Java, в этом примере, отличия только синтаксические.)
Костыль тоже подойдет. Третий день бьюсь. Буржуины со СтакОверфлоу нахуй посылают.
Очень грубо говоря:
BPM - некая параша которая представляет процессы твоего наебизнеса.
CRM - система где клиент ведется от обзвона то впаривания ему КП, получения продукта, оказание анальных услад и так по кругу.
Погугли ёпта.
В спринге есть возможность написать кастомный конвертр параметров запроса в аргументы функции. Так что на крайняк навелосипедить можно.
Бля, сори, промахнулся, хотел запостить к жабаскриптмакакам, а попал в жаба господам. Извиняйте.
иди обратно к макакам. тут серьезные дела делаются.
Попробуй в конструкторе прописать для каждого метода this.methodName = this.methodName.bind(this).
Да там все еще проще, ничего не надо делать, с кастомными классами все работает так же, как с Pageable.
Тут было много плохих слов в твой адрес, но я их стёр. Научись полбзоваться гуглом, няша.
https://stackoverflow.com/questions/13942701/take-a-char-input-from-the-scanner
Может быть, потом и написал "погугли".
Не нагнитай.
А в чём проблема? Стартапов, пишущих на жабе, тоже полно. Правда уже становится меньше, но всё равно их много. Да и у обоих мест есть свои сложности и недостатки. В офисе всё штабильно, всё размеренно, тонны документации, всё делается очень основательно. В стартапах хаос, ад и содомия и зарплаты побольше, но на тебя взваливают дохуя.
В офисах в основном лучше всего работается консультантам, особенно если ты не просто какая-то макака, а уже архытектор, то тебе и платят побольше, чем внутренним работникам, так и проект полегче менять зависит от контракта.
Ну в энтерпрайзе норм деньги есть. Да и задачи достаточно сложные (высокие нагрузки, большие данные), которые смузихлёбам не под силу, что дает возможность прокачаться. Плюс стартап ещё поискать надо.
OCaml
>BPM
штука, которая задумывалась чтобы менеджеры мышкой могли править бизнес-процессы в своих корпоративных программах.
Была довольно модной лет 10 назад.
Представляет из себя файл .bpm, который надо править через специальную программу (двигать мышкой квадратики), а потом скармливать корпоративной программе.
Естественно ВНЕЗАПНО выяснилось, что проще всё это делать на языке программирования, и что никто из менеджеров не горит желанием ковыряться в этом дерьмище
>CRM
Это просто название для корпоративной программы
>Да и задачи достаточно сложные (высокие нагрузки, большие данные)
нихуя. Все эти глассфиши ложатся от тестовых нагрузок, из-за своей монструозности
Гласфиши/хуиши - мне всё равно. Банки и телекомы продолжают работать, проводя миллионы транзакций в секунду. Стартапу по доставке смузи в барбершоп такого и не снилось и такой опыт там не получить. Но сидеть в кубикле и смеяться над шутками начальника, чтоб тебе добавили бал на очередном ревью - ещё больший пиздец. Такие дела.
>Это просто название для корпоративной программы
Проиграно.
Помню, у нас тех несчастных погроммистов, которые новырялись в BPM постоянно латали дыры в ней подпускали к самой апликухе только, когда они пройдут несколькодневные курсы по ней, лол. Самое забавное, что эти пидорасы, что всучили той компании BPM на столько дохуя видимо брали за эти курсы, что программистов нанимали с обязательством отработать как минимум 2 года в том проекте, иначе должен будешь оплатить компенсацию.
ну есть поле в абстрактном классе
protected String LOGS = ..
Что мне написать после = , чтобы наследник, который его унаследует, имел свое название класса.
Обычно я создавал стринг в каждом классе так:
private static final String LOGS = Order.class.getSimpleName();
А теперь хочу в абстрактном хуйнуть это, чтобы не создавать каждый раз.
Можешь передавать его в конструктор, тогда все наследники будут обязаны его задать.
Может ещё как-то можно накостылять.
Но это всё хуйня и ты делаешь хуйню.
Сделай абстрактную функцию getClassName() которая и будет возвращать имя класса.
> Но сидеть в кубикле
Ахах, ишь чего захотел, ЛИЧНОГО ПРОСТРАНСТВА в офисе. Хуй тебе. Сиди в стойле опенспейсе вперемешку с аналитиками, менеджерами, координаторами, пидорами, всегда орущими по телефону на весь опенспейс, пидорами просто орущими на весь опенспейс, пидорами, подходящими к другим пидорам и громко ржущими над дебильными шуточками, вечно болеющими заразными долбоебами припершихся всех заражать во славу Сатаны и Нургла и которым одновременно холодно и жарко, и другой человеческой дрисней.
Наследование выкинь. Вместо абстрактного класса сделай интерфейс. В реализациях интерфейса подтягивай нужные тебе репозитории через Autowired.
Kotlin/android
И раз уж решил ответить, продублирую вопрос: покиньте опенсурс проектов на spring/hibernate
(дата: время1, y: значение1);
...
...
(дата: времяN, y: значениеN);
Думал сначала сделать что- то вроде
Map globalMap = new HashMap<Map, Map>();
Map innerMap1 = new HashMap<String, String>();
Map innerMap2 = new HashMap<String, String>();
innerMap1.put("dTime", "22:19:12");
innerMap1.put("dTime", "22:20:13");
innerMap2.put("y", 11);
innerMap2.put("y", 69);
globalMap.put(innerMap1, innerMap2);
Но обосрался и не могу вывести все значения в таком виде
{dTime=22:20:13}={y=69}
{dTime=22:19:12}={y=11}
Суть в том, что мне нужно всё в таком виде запихнуть куда- то, а потом дождаться, когда придёт новая последовательность, после чего смержить две последовательности, попутно переписав значения (y) в совпадающих датах
Данное задание тестовое в компанию, в которой я, как уже стало понятно, не осилю работать.
Охуевший джун за 90к/мес
(дата: время1, y: значение1);
...
...
(дата: времяN, y: значениеN);
Думал сначала сделать что- то вроде
Map globalMap = new HashMap<Map, Map>();
Map innerMap1 = new HashMap<String, String>();
Map innerMap2 = new HashMap<String, String>();
innerMap1.put("dTime", "22:19:12");
innerMap1.put("dTime", "22:20:13");
innerMap2.put("y", 11);
innerMap2.put("y", 69);
globalMap.put(innerMap1, innerMap2);
Но обосрался и не могу вывести все значения в таком виде
{dTime=22:20:13}={y=69}
{dTime=22:19:12}={y=11}
Суть в том, что мне нужно всё в таком виде запихнуть куда- то, а потом дождаться, когда придёт новая последовательность, после чего смержить две последовательности, попутно переписав значения (y) в совпадающих датах
Данное задание тестовое в компанию, в которой я, как уже стало понятно, не осилю работать.
Охуевший джун за 90к/мес
А по какому значению тебе надо это всё индексировать? И чем простой ArrayList не угодил? Или Set с кастомный контейнером, если нужны уникальные значения? Или TreeSet если нужны отсортированные уникальные значения?
Охуенные пикчи, ОП.
Бля, че за компания с такими легкими заданиями? Тоже 90к хочу.
> Но обосрался и не могу вывести все значения в таком виде
Почему не можешь-то? Забыл, как принтлном пользоваться?
> Как можно представить последовательность пар
Можно в виде хэшмепа, чтобы потом их пересекать, можно в виде отсортированного массива объектов, чтобы их мержить, если ты хочешь умного из себя состроить.
>>67712
Очень даже интересно, при чем тут js и json.
>Очень даже интересно, при чем тут js и json.
Очевидно при том же, при чем джава в джаваскрипте.
Java -> JavaScript -> JavaScript Object Notation
>>67712
innerMap1.put("dTime", "22:19:12");
innerMap1.put("dTime", "22:20:13");
мне нужны обе пары и чтобы каждая соответствовала своему значению,
чтобы я мог взять ("dTime", "22:19:12") как ключ, а в ответ мне выдало ("y","11")
но как их сохранить, если ключ dTime в одной мапе и y- в другой- всё время одинаковые?
Я бы их тогда и отсортировал, и в список положил.
Гугл советует обратить внимание на мультимап, но он в guava, а я не думаю, что можно использовать сторонние библиотеки для этого задания. И вообще кажется, что есть более простое решение...
>>67719
Ну держи тогда вторую часть задания, весёлый задира.
Алсо, насколько вообще эти задания сложные?
Первое кажется вполне выполнимым, вторую не понял совсем, но вакансия для разраба с 3+ годами опыта
>но вакансия для разраба с 3+ годами опыта
Мне кажется, что задание это для студентов-вкатывальщиков, чем разрабов с 3+ годами опыта.
Ложи в качестве ключа просто "22:19:12", а в качестве значения "11" и т.д. А "dTime" и "y" дописывай после получения. Не, серьёзно, ты до такого сам додуматься не смог?
1280x720, 0:02
я не особо умный
А, ну тогда мы уже в JSON-треде, так что всё норм.
> Со скрина тоже лёгкое?
Да, в первом вообще хуйня сначала по одной оси доходишь, потом по второй, только порядок надо учесть, во втором ответ "да, если площадь области ненулевая", в третьем надо пару случаев рассмотреть.
> Я же новичок, ты помнишь?
Ага, и на 90к щас еще устроишься, а потом твое говно кому-то придется разгребать.
>Со скрина тоже лёгкое?
Я даже не о легкоте, а о том, что, по моим представлениям, у трёхлетного сеньора должны спрашивать по технологиям, чем по геометрии.
>что программистов нанимали с обязательством отработать как минимум 2 года в том проекте, иначе должен будешь оплатить компенсацию
У меня баттхерт. Каким дауном нужно быть, чтобы подмахивать бумажку, в которой написано, что ТЫ должен будешь заплатить работодателю, если решишь свалить с говнопроекта?
Серьёзно, я всё понимаю, но вот этого не понимаю. Это же в разы унизительнее любого демпинга по зп.
Мамкин БУНТАРЬ порвался. Если бы ты в моей компании такое сказал, я б тебя уволил нахуй и попросил бы HR внести тебя в их чёрный список.
>и попросил бы HR внести тебя в их чёрный список.
я бы сам попросился, чтобы мне не звонили неадекваты вроде тебя
))
>> Но сидеть в кубикле
>Ахах, ишь чего захотел, ЛИЧНОГО ПРОСТРАНСТВА в офисе. Хуй тебе. Сиди в стойле опенспейсе вперемешку с аналитиками, менеджерами, координаторами, пидорами, всегда орущими по телефону на весь опенспейс, пидорами просто орущими на весь опенспейс, пидорами, подходящими к другим пидорам и громко ржущими над дебильными шуточками, вечно болеющими заразными долбоебами припершихся всех заражать во славу Сатаны и Нургла и которым одновременно холодно и жарко, и другой человеческой дрисней.
Три чаю. описал офис как он есть. Еще прибавь - голимый чай из пакетиков убивающий желудок. Голимое кофе из кофемашины из говна с мазутом. Толчок в котором западло присесть.
>a cool trick
Чего блять, в чем трик-то состоит? В использовании стандартной библиотеки? Лол кек.
Можете просветить, как в вашем мире обстоят дела с CMS-ками?
На php (не к ночи будь упомянут) есть и простая говнокодерская фигня типа Wordpress, и всякие мощные штуки типа Drupal, с ревизионностью, статусами, мультиязычностью, поддержкой REST'а и прочая и прочая.
Я пытался прогуглить тему CMS на java и нашёл только пару каких-то сайтов дизайна начала двухтысячных, со скриншотами, на которых видны соответствующего качества формочки. После того же drupal.org - совершенно не смотрится, короче.
Соответственно, вопрос, что есть такого на джаве, желательно с мультиязычностью, модулями, маркетом, версионированием страниц, кастомными полями и прочей фигнёй из коробки.
макака детектед
В java9 таки сделали фабрики для коллекций как в гуаве.
на яве писать фронтэнд - это полное убожество, там почти нет нихрена кроме шаблонизаторов, но и они довольно убогинькие. Самое тупое что до клиентской стороны практически не достучаться с джавы, т.е. даже валидацию формы чисто на клиентской стороне сделать сложно. Готовое приложение выглядит как энтерпрай параша. Поэтому ты можешь писать сервисы на Джава а на фронтэнд взять Ангулар тот же или что-то другое. Если хочешь обычный рендеринг на стороне сервера - бери джангу или руби.
убожество для корпоративных приложений с неявной генерацией кода и клиентским тяжеловесным движком, уже и не используется почти никем. Напиши мне такой же сайт как гитхаб на гвт.
Ебанутый чтоль? Какая клиентская сторона на бекенде, максимум что ты можешь получить это заголовки и параметры запроса.
>Самое тупое что до клиентской стороны практически не достучаться с джавы
gwt позволяет. И оно стирает границу между сервером и клиентом, как ты и хотел
кстати там даже можно отлаживать клиентский код прямо через ide
Малыш, ну не стоит так, хорошо? Ты же понятие не имеешь как делаются веб-приложения, не знаешь что когда ты навешиваешь слушатель на серверной стороне то происходит round-trip от клиента к серверу. Ты лучше продолжай спорить как правильно именовать JPA entity, хотя бы шаришь в этом. В Джаве поддержка веба настолько плохая что плакать хочется. 2018 год а стандарт от Оракла по-прежнему JSP и JSF. Вы это серьёзно?
Мне? Мне надо чтобы можно было делать крутые сайты на Java, почему это можно делать на рубях и питоне, а на Джаве только корпоративный шлк получается?
Что ты доебался со своим жсф, я тебе говорю, что бекенд должен быть бекендом. Держать жабу для рендера это песдец.
либо третье - я джавист, который знает слабые стороны, а вы - джунчики
>На том же пхп гораздо удобнее сайтики клепать чем на яве.
Детали штангенциркулем тоже удобнее измерять, чем линейкой.
@Override
public List<PriceEntity> findByDrug(DrugEntity drugEntity) {
PriceRepository priceRepository = (PriceRepository) repository;
return priceRepository.findByDrug(drugEntity);
}
1) Приведение в рантайме ведёт в рантайм эксепшенам в рантайме
2) findByDrug(drugEntity)
Лучше прямо в методе перечислять поля, по которым происходит поиск. В repository передаётся слишком много лишней информации, может возникнуть соблазн использовать это.
Плюс есть риск, что Repository испортит этот объект
маняврирование джависта который перечитал хабр и пишет jsp
Устроится в энтерпрайз контору.
>1) Приведение в рантайме ведёт в рантайм эксепшенам в рантайме
С чего вдруг епта? Я знаю, что там будет PriceRepository и только он. Просто поле класса это обычный JpaRepository, а в PriceRepository определяется этот метод.
Класс, в котором используется тот метод, наследуется от абстрактного, в котором в поле repository обычный JpaRepository,
Во-первых, про дженерики слышал что-нибудь, няша?
Во-вторых, "наследуется от абстрактного" в 2018 - серьёзно?
Если в абстрактном дженерик, то почему в конкретном есть каст?
Я сомневаюсь в необходимости абстрактных сервисов/дао/репозиториев.
Я вообще сомневаюсь в необходимости такого сервиса, который просто дублирует метод репозитория.
Ну мы не знаем какую он там логику накрутил, но судя по всему - накрутил хуйню.
Пардон за качество скрина. Телега жмет хуже некуда.
Открываешь код интырпрайзного сложного приложения и начинаешь пытаться там че-то проссать.
> Я знаю, что там будет PriceRepository и только он
Так поясни это читателю кода и конпелятору заодно.
Сталкивался но на линуксе. В настройках самого бина измени руками, не помню какая вкладка.
Да. Вопросы, хуила комнатный? Мать твою ебал.
Проблема в том, что сущностей у меня довольно много и мне лень каждый раз проводить проверку.. Поэтому я навелосипедил эдвайс, который делает проверку за меня. Я помечаю метод, перед выполнением которого мне надо выполнить проверку, аннотацией @AssertEntityExistsById, а сам ID помечаю аннотацией @EntityIdentifier. И в эдвайсе проходит проверка. Выглядит это так:
https://pastebin.com/QnPRuJfF
Это норм практика или хуйня полная?
Конечно хуйня - два запроса в БД делаешь (там кэш, конечно, сработает, но концептуально их 2). Я бы предложил тогда сделать что-то типа https://pastebin.com/hdZArz4E , т.к. в спринге можно сделать кастомный маппер запроса на параметры. Всё расписывать не стал - сам допрёшь, думаю.
Eclipse
Потому что ты хуесос тупой. Тебе блять английским по белому написано -- IllegalComponentStateException: frame is displayable; тебе блять родина документацию дала, читай документацию, блять, не хочу, хочу жрать говно.
кун 29 лвл с технической вышкой
работодатели сами не знают чего хотят.
пожалуй только у веб макаки сейчас без проблем ищут работу, так как там просто и понятно. Энтерпрайз языки вроде есть но работодатели сами не знают как их применить.
Пхп не вариант хочу стабильную работу без новых фреймворков каждый месяц. Че делать то чтоб хотяб ответили? Думаю написать что работал в стартапе, прокатит?
Город какой? ЗП какую поставил?
Но я тебе честно скажу: когда смотрю резюме кандидатов и вижу великовозрастного вкатывальщика с 5 годами опыта работы сторожем - скипаю нахуй.
Попробуй податься на стажировку, например, в EPAM. Но там таких как ты будет дохуя, а платить будут нихуя.
чё так?
Ну про ЕПАМ я как раз СПбшный и говорил. Знакомый хотел туда на стажировку, но ЗП там слишком мала, а длится она полгода, вроде (могу напутать). В итоге он забил.
Погугли что там за тест при отборе - примеры должны быть в сети.
Может кроме ЕПАМа есть кто со стажировками. Люксофт там какой-нибудь.
Есть ещё вариант через "оборонку". Но это больше для студентов. Устраиваешься в какой-нибудь НИИ младшим техническим сотрудником на полставки от 13к (или сколько там минималка в Питере?). Работы там не будет (зато можно самообучаться), да и опыта тоже, но запись в трудовой и строчка в резюме появятся.
Спасибо. Попробую в епам, настораживает что мой разговорный английский, который там так нужен, так себе.
В принципе сделать какую-нибудь более-менее серьезную запись в книжке могу сам подсуетиться, но чёт это какой-то зашквар. Буду думать над этим всем дальше.
Больше всего пока нравится идея сделать проект сайта ветеринарной клиники, к примеру, и уже с ним на голубом глазу говорить что имею год опыта разработки.
спасибо,анон
я собрался делать следующее: приложение для ведра,в нём с помощью голосового ввода боту можно давать команды,которые он будет выполнять на компе.например: открыть браузер Google Chrome,перезапустить комп и т.д.это без C++ или C# сделать возможно? просто не хотелось бы мне 2 юзлесс(для меня) языка изучать
Сам код - https://pastebin.com/Nf5rL3a1
Стайлгайд от гугла найди и изучи, никто об твоё дерьмо глаза ломать не будет.
моё почтение
а нахуй ты вообще это написал? я ожидал адекватного и нормального ответа
не хочешь отвечать - не пиши вообще нихуя,не высирай это
> а нахуй ты вообще это написал?
Потому что мог. Да и негоже - я тебе написал, ты меня спросил, а промолчал.
> я ожидал адекватного и нормального ответа
Мало ли чего ты там ждала, мелкобуква. Я тебе уже написал что и как делать. Если ты не можешь погуглить как сделать на язык_нейм те вещи, которые ты хочешь, то собственно дело тебе никогда и не удастся.
Ладно, не обижайся, за неделю никто бы не смог нормально написать. Начни как можно раньше читать Clean Code Боба Мартина, там сам разберёшься.
Окей, спасибо
>приложение для ведра,в нём с помощью голосового ввода боту можно давать команды,которые он будет выполнять на компе
Тебе придется для компа написать сервис и запустить его с нужными привилегиями. На яве это можно сделать, но куда проще поднять какой-нибудь ssh сервак и слать ему консольные команды, которые будут дергать скрипты для выполнения действий. А со стороны смартфона ХЗ как это лучше сделать, но, уверен, есть и готовые решения или хотя бы фреймворки.
Хай гайз. Нид хелп. Короче пилю клиент-сервер для себя. В целях обучения. Делаю примерно следующим образом:
1) Сделал по классы, ServerFactory и ServerEngine, в фэктори я определяю входные выходные потоки. В движке я определяю серверсокет ну и запускаю через ExecutorService.
2) В клиенте тоже фэктори и движок. В фэктори пишу читаю потоки. В движке запускаю через ExecutorService тоже.
Всё работает. Сообщение отправляется и принимается обратно.
Но мне нужно разнести функции приема и отправки сообщения. Т.е. один клиент(только пишуший) отправляет на сервер, сервер читает и отправляет клиенту(который может только читать). И вот тут уже отправка идет, а вот получение не очень. Что нужно впилить чтобы заработало?
а я понял блять.
клиент который читает должен установить по сокету соединения с серваком и ждать пока сервак запишет на сокет няшное сообщение
Да и не только консоль, но и ос
я так подумал,что готовым решением может быть приложение для ведра,которое делает из смартфона джостик(подключение как раз через Wi-Fi),но вряд ли кто-то опен сурс даст
https://pastebin.com/K2Jf2hGs
Так должен выглядеть нормально отформатированный код. Читай стайлгайды и следуй им. Никаких чисел в коде не должно быть, кроме КРАЙНЕ очевидных случаев, во всех остальных всегда выноси всё в осмысленно названные переменные. Открывая код, посторонний человек должен быстро понимать, что примерно в нём происходит - глядя на твои 6 и 16 я в душе не ебу, что это. И не начинай индексацию с 1, если это не принципиально для задачи - все ожидают начало с 0.
Если работаешь с дебилами, то да.
Да. Дело не в том, что кто-то не допрёт - дело в том, чтобы читать кодельник не переключая внимание с бизнес-логики на всякую хуйню.
int seconds = minutes 60;
или
int seconds = minutes SECONDS_PER_MINUTE;
первое по мне читаемее. Во второй сразу сомнение - что это, зачем его вынесли, может там не 60, а другая цифра
Но если бы задача в целом и класс в частности подразумевал частую работу с датой/временем/етк, то я бы остановился на втором подходе, потому что одной 60 там бы дело не ограничилось, было бы как минимум несколько различных констант.
А, и тем более я передаю туда null, то есть запрос вообще выглядит так: SELECT x FROM X x WHERE x.i = x.i
В таком случае ошибка вообще какая-то совершенно тупая.
Object[][][] cubbies = new Object[3][0][5];
то потом его уже нигде нельзя будет использовать?
Из за нулевой длины во втором измерении?
Короче поменял на WHERE x.i BETWEEN :p AND 1. Вообще не понял, в чем там дело было. Аналогичный запрос со строковым параметром работает нормально и при =, и при LIKE.
Что ты узнать хочешь? Как защитить своё гениальное-поделие от реверс-инжиниринга? Никак. Надо будет - отреверсят и после обфускации.
Я бы с радостью, но мне надо возвращать страницы, нейтив не олучится использовать.
А что, на SQL паджинирование уже написать невозможно?
Возьми jOOQ, он умеет в автоматический маппер резалтсета, напиши запрос и добавь паджинирование.
У меня нет лишний денег и мне не нужно генерить модель из базы
Там для опенсорса бесплатно, вроде. Или что-то такое. Но если ты хочешь в проде на работе использовать, то да - плати.
JPA с native query может помочь не ебаться с маппингом и руками писать запросы, но на меня сейчас набросятся свидетели жука/хуека/ещё_чего_нибудь.
Английский выучить пробовал? Там английском по фоновому сказано, что платно только для платных БД - оракла и mssql (и всякая ненужная ibm дрисня) - диалекты под них есть только в платном джарнике jooq-pro. Со всеми диалектами все бесплатно и для личного, и для копроративного использования.
C++
Снимать или покупать 2-х комнатную будешь?
От какого говна? Ты хочешь защититься от внедрения чужого кода в твоё приложение? Тогда читай маны для конкретных операционных систем, например как в винде сделать чёрный список загружаемых dll и т.д. А ещё лучше вынеси свой код в драйвер (ну или низкоуровневую службу или даже модуль ядра) и защити его уже там, как это делают антивирусы.
Ну например как сделать так, чтобы приватный метод не вызвали через рефлексию?
Начиная с java 9 его и не смогут вызывать. Так что тебе достаточно обновится (хотя я бы посоветовал дождаться java 11).
Потому что 11 версия - LTS и к её выходу подтянутся все библиотеки, которые сейчас сломаны из-за жигсо. Если у тебя всё работает или ты просто учишься, то можешь оставить как есть.
Для чего?
Ну ок.
Вообще не понимаю, зачем клепать такие промежуточные версии? Нет бы ЛТешки ебашить, по порядочку, по версиям, чтобы как у людей было.
Нет нужно ебнуть джаву 9, джаву 10, ради этих ебучих циферок.
Ну всякие особо одаренные кричали, что мало фишечек в языке (они всегда кричат по поводу и без - естество у них такое), ну вот и решили выпускать новые версии по расписанию каждые полгода, а не по мере готовности.
Потому что так лучше, чем ждать 10 лет, пока наконец-то нахуй не нужный жигсо доделают. Фича не успевает в релиз - ее проблемы.
Для тех, кто скажет, что я вкатывальщик из-за денег - хуй там. Учиться очень интересно, лепить там что-то своё. А вот от коммерческого программирования блевать тянет. Может просто проект неинтересный, хз.
как можно больше времени проводить вне компьютера.
Принять, что работа никогда не бывает в радость
Вот недавно жс копал на уровня аля простых функций. Решил заглянуть дата релиза, так он 8 лет не обновлялся.
Берите примеры с этого языка.
Когда же ещё-то. Завтра на работу - говно вилкой за джунами чистить.
Ты работаешь? Откуда у тебя силы помимо работы?
Прикрученное через очко ООП за обновление не считается. Как хуярили все по-дедовски, процедурненько, так и хуячат. Язык тоже как был говном, так и остался.
А генераторы, промисы и асинхронные функции ты совсем пропустил. Ну ещё и в кучу прокси, которые даже имитировать в старых браузерах невозможно.
>генераторы, промисы и асинхронные функции
И всё это - синтаксический сахар для коллбэков. Даа, такие-то фичи.
> И всё это - синтаксический сахар для коллбэков. Даа, такие-то фичи.
Так любой ЯП можно назвать синтаксическим сахаром для машинного кода. Всё с тобой ясно.
Ага, а треды это просто обертка над паттерном event loop. Т. Е. над циклом с кучей if и goto.
Необязательно над тредами. Тот же спринг по-умолчанию всю цепочку выполняет в одном потоке и нужно специально указать ему, если ты что-то хочешь выполнить в другом треде.
когда компилируешь, пиши просто java Party без class
> Тот же спринг по-умолчанию всю цепочку выполняет в одном потоке
Ты главное на собеседовании такого не спиздани.
http://projectreactor.io/docs/core/release/reference/#threading
> Flux and Mono do not create threads.
Орнул с войтивайти, пытающегося строить из себя умного, слышавшего звон, но не знающего где он.
Реахтор это реактивная библиотека, а не спринг (не больше, чем микрометр спринг). И там все написано правильно - Mono.just(yourMom).map(Motherfucker::fuck).block() никаких тредов не создаст и выполнит в том же треде.
>>70350
Посмотри спринг потрошитель и обе серии загрузи себя пружина кончает, разбери по частям, сделай соответствующие выводы для себя.
> Орнул с войтивайти, пытающегося строить из себя умного, слышавшего звон, но не знающего где он.
Дядя, ты дурак? Или ты про такое понятие как контекст не слышал? Анон спросил, является ли реактивное программирование надстройкой над мультипоточным. Я ответил, что не обязательно и что спринг при написании реактивного кода если его не заставлять отдельные треды не создаёт.
Так что не надо тут корчить из себя всезнающую помидорку.
>Посмотри спринг потрошитель и обе серии загрузи себя пружина кончает, разбери по частям, сделай соответствующие выводы для себя.
что
Войтивайти пытается маняврировать. Как мило. Ты написал "Тот же спринг по-умолчанию всю цепочку выполняет в одном потоке"
Теперь поясняй в каком месте пивоталовская библиотека реактора является спрингом. И заодно поясни где это спринг вообще создает треды.
Ты просто обосралась, перепутав понятия спринга, вебфлюкса и любой реактивной библиотеки. Но ты неблох, что имел яйца признать неспособность к аргументированному спору и слился сам.
Как я уже сказал - главное на собеседовании такого не спиздани, бо после такого заявления тебе зададут кучу дополнительных вопросов про спринг, про бут, про контейнеры сервлетов, возможно вебфлюкс с нетти и реактором захватят и ты точно поплывешь и тебе перезвонят.
Ты чем паясничать - прямо сейчас открой гугл и изучи чем отличаются все эти понятия. Поможет в будущем. На полном серьезе, кстати.
>>70372
Хуйлоад как раз на JVM-языках практически только и пишут. Разве что в высокочастотном трейдинге сильна доля крестов, но и там JVM есть, бо лоу латенси профайлинг тоже существует.
Всё-всё. Спокойно-спокойненько. Тут тебе никто ничего плохого не сделает. Ты всегда прав, а все остальные неправы и поэтому ты всегда побеждаешь в спорах. Хорошо? :) А теперь прими таблеточки, что тебе доктор выписал и полежи немного. Только не злись и не беспокойся, ладненько? Вот и молодечик.
Все шизики кроме тебя. Да-да.
дык я спросил как пишут
так я по программе книги иду. Там так и говорится, что для начала никакого ИДЕ. книга из шапки и все её рекомендуют. ЧЯДНТ?
>так я по программе книги иду. Там так и говорится, что для начала никакого ИДЕ. книга из шапки и все её рекомендуют. ЧЯДНТ?
Я в своем обучении ебнул ИДЕ и сразу пошел по курсам ГОЛОВОЧА.
Просто божественный мужик наебщик
Выложил просто на ютубчике тонны годноты.
Вспоминаю со слезами. Ах.
Ну это j2me и эмулятор этого говна типо wtk, насколько я понимаю либо есть какое-то sdk от nokia специально, хз.
у тебя main метода нету
>Так любой ЯП можно назвать синтаксическим сахаром для машинного кода
Машкод это тоже синтаксический сахар.
Proxy, Symbol, Extensible Built-in Classes, Block scopes, Destructuring, Rest Parametres, Default Arguments, Only constructable function, Promise, Generators, Iterator Protocol, Meta-symbols (operator overloading).
Реализуй-ка мне все это, на js 8ми летней давности, долбоеб.
Вот кстати тоже недавно поизучал чуть-чуть angular 5. Какое же хуёвое ООП на костылях приебашили. Вот не покидало неприятное ощущение. Язык изначально спроектирован на коленке и к нему прикрутили просто ТОННУ костылей, как же это убого выглядит. Помню ещё ебучие фокусы с this. Как же это всё запутано. Как на нём люди пишут просто не понимаю.
Просто все эти библиотеки тянутся с до-ES6 эпохи и сохраняют обратную совместимость, а потому там столько костылей. С теми же проксями, можно было бы кучу вещей сделать красивее. Может с выходом shadow dom и custom elemens наконец сделают красивый и маленький фреймворк, написанный с нуля на современном js.
Писать как писать, узкие места оптимизировать. Не думаю что тут кто-то такие тонкости шарит.
https://www.youtube.com/watch?v=Q-7y1u9kZV0
>надмножество
То что НАД это не ПОД. НАД - это расширение языка, а не использование его урезанных возможностей.
Плюсы это Си?
Ну и о ES6. У TS совершенно иная парадигма. Статическая. В отличии от динамической ES.
parameter INT a = 0.1;
parameter BOOL b = 0;
Нужно выцепить [a, 0.1], [b, 0], и т.д. Вообще, в идеальном варианте было бы неплохо намутить что-то вроде [INT, a, 0]. На Питоне можно было бы не изъёбываться, но мне нужна именно Java. Варианты?
Первое что приходит на ум - регулярные выражения. Но если нужен пирформанс и возможность работы с потоком данных (особенно если строчек в подобном формате слишком много), то только писать самому.
В девятке сделали модульность и теперь всем либам надо переезжать или клиентам либ устраивать пляски с параметрами сборки и ключами запуска. А переезд не быстрое дело, живые либы переедут сразу на 11.
почему не сделать передачу параметров в метод по ссылке, что бы код на пикрелейтед работл правильно?
Примитивы передаются по значению, значения ссылочного типа по копии ссылки. У тебя еще путанница в понятиях судя по
>int tmp = a;
Дай три причины делать
>передачу параметров в метод по ссылке
помимо написания swap.
парсер генераторы/парсер комбинаторы.
Если использовать парсер комбинаторы.
Если формат в целом такой примитивный, как ты описал, то даже на жабе последних версий особенно, описание на dsl, например, https://github.com/typemeta/funcj/tree/master/parser , будет не такое уж отвратное.
опечатался просто, сначала я написал то же самое с int
>помимо написания swap.
экономия памяти и ресурсов(не нужно делать копии, а просто использовать ссылки)
возможность делать move-конструкторы, как в плюсах, опять же для экономии ресурсов
>экономия памяти и ресурсов(не нужно делать копии, а просто использовать ссылки)
Какая экономия на ссылке?
>возможность делать move-конструкторы, как в плюсах, опять же для экономии ресурсов
Я не в курсе move-семантики, т/к отошел от крестов лет 7 назад, но попробую аргументировать тем, что у jvm с gc память предаллоцирована, и создание объектов в куче дешевле, удаление тоже дешево, если в первых поколениях происходит. Т/е это опять же, экономия на спичках.
Во-первых, байтоёб - не человек джава (и большинство других ЯП) не плюсы чтоб забавляться с адресами в памяти.
Во-вторых, в какой реальной задаче тебе это нужно? Ответ простой - ни в какой, если ты не байтоёб (см. во-первых).
Тех проблем, которые решают в плюсах через move конструкторы, в жаве нет. Всё в жаве (кроме примитивов) - указатели, так что копируются не объекты. А GC позволяет швыряться указателями, не беспокоясь об освобождении памяти.
Не слушай предыдущую перл макаку, вот тебе пример решения на котлин https://pastebin.com/4gC7aYkv
Что-то подобное можно сделать и на жабе. скала-питухи идут лесом
Без задней мысли.
Вот это пердолик так пердолик. Вместо простой регулярки накомбинировать 30 строк парсеров. И это только во-первых. Во-вторых, твой парсер загнется если там будет что-то кроме этих параметров, т.к. ХЗ что там у него на самом деле.
Перл-макаке НЕПРИЯТНО. Ведь регулярки также упадут или скорее высрут что-то неудобоворимое на невалидном вводе. В отличии от парсер-комбинатора, который при хорошей реализации библиотеки еще и информативное сообщение об ошибке грамматики выдаст.
Ты бы молчало в тряпочку, ведь мое решение использует те же регулярки там где надо. И в отличии от твоих одних лишь сраных регулярок еще и расширяемо.
Пфф, ты просто неосилятор-долбоёб. Вот элементарный код на регулярках (тоже котлин):
data class Result(val type: String, val id: String, val value: Any)
fun main(args: Array<String>) {
val regex = Regex("""(?:\n\s*|^)parameter\s+([^\s]+)\s+([^\s]+)\s+=\s+([^\s]+);(?=\n|$)""")
val text = """parameter INT a = 0.1;
parameter BOOL b = 0;"""
val result = regex.findAll(text).map {
val type = it.groups[1]?.value!!
val id = it.groups[2]?.value!!
val value = it.groups[3]?.value!!
when(type) {
"INT" -> Result("INT", id, value.toDouble())
"BOOL" -> Result("BOOL", id, value.toInt() != 0)
else -> throw RuntimeException("Unsupported type")
}
}.toList()
}
val regex = Regex("""(?:\n\s*|^)parameter\s+([^\s]+)\s+([^\s]+)\s+=\s+([^;]+);(?=\n|$)""")
Вот так лучше.
Алсо у него в INT содержатся числа с плавающей запятой, а твой парсер вводит дополнительные правила, что INT должен содержать только целые числа, а для остальных нужен FLOAT. Ты так всегда программы пишешь, игнорируя изначальное задание?
Продолжай улучшать, кек. Я буду попивать горячий шоколад и смотреть как ты "улучаешь" код который та еще параша!! , игнорируя доменную область - распознавание грамматики. Потом приступим к невалидным данным и к очередной итерации "улучшения".
Нет, я включаю мозги рекомендую - что очевиднее, что автор проебался с примером, или что
> INT содержатся числа с плавающей запятой
?
> ?
Почитай его пост внимательно умник:
> parameter INT a = 0.1;
Сколько у тебя заняло написание парсера? У меня пара минут плюс исправление копипасты (впрочем и без которого всё работало нормально). Или тебе лишь бы попердолиться для решения элементарной задачи?
>regexp
>val value: Any)
>main
Ты написал несопровождаемое бесполезное говно.
>Сколько у тебя заняло написание парсера?
Полчаса. Важнее время сопровождающего код.
>Почитай его пост внимательно умник:
>> parameter INT a = 0.1
Ай иди нахуй, ты настолько тупой и/или копротивленец, что обосрался и продолжаешь обсираться? Повторю.
Что вероятнее, что автор проебался с примером? Или кому-то требуется объявлять целочисленные переменные инициализируя вещественными значениями? Это бессмыслица, как и трата времени на тебя, иди нахуй.
Прошу прощения, я действительно проебался с примером. Не INT, но FLOAT.
какие замечания?
>человеку нужно распарсить какие-то строчки и, скорее всего, забить хуй.
>на java, которую он, видимо, не очень знает, т.к. признается, что легко сделал бы на питоне
>РЕГУЛЯРКИ ДЛЯ ЛОХОВ РЯЯЯЯЯ
>полчаса пердолится комбинируя комбинаторы
>использует хуй пойми какую либу, в которую, возможно, придется вникнуть
>на kotlin
Долбоёбы, конечно, все, кроме тебя.
Земля пухом.
-extends Thread
+implements Runnable
-ебатень с isAlive
+просто join
Без задней мысли сам завершится
ну сначала надо чтобы попбочный поток отработал и вырубился, после этого основной вырубился
Ну если побочный поток один, то join подойдёт. Если потоков несколько, то нужно мутить event loop в главном и ждать сообщений окончания ото всех потоков.
Ты видишь что выводит, надо чтобы сначала сообщение что программа стартовала, потом вывод результатов рабыты потоков, потом сообщение что программа завершилась, только так и никак ниначе?
Вариант
А) ты тот еще неугомонный копротивленец - тебе совет в конце поста >>70899
Б) залетный - учись читать объяснялось почему жаба/котлин и да, тебе как такому-же регулярочному говноделу, тоже совет здесь >>70899
>>70935
Ну так влепи
+ z.join();
+ y.join();
вместо той говняшки, что в конце метода.
пасбите, милчеловек, я тебя не забуду
Посыл нахуй не аргумент, а истерика чмошника. Я тебе, данун, уже пояснил, что ты предложил хуйню и почему.
Зеленый текст. РЯЯЯ и вариации оскорблений на тему дауна при нуле содержательного текста.
Какая сильная аргументация
Ты дурак? Message t = messageQueue.take(); (messageQueue - это LinkedBlockingQueue из того самого java.util.concurrent) как раз и блокирует тред пока не появится новое сообщение.
Так ты за своей полемикой следи, малыш. ОК? Мне может и не стоило опускаться до твоего уровня ведения дискусси, но я это сделал - и этого уже не вернуть.
Сорян, не вчитался.
Ну это просто - ПУШКА.
Смотри на собесе такое не спиздани. Два join, как уже писали выше, делают то же самое.
Это ты, поехавшая помидорка с собеседованиями головного мозга? Таблетки так и не принял?
Я не знаю что там у тебя за проблемы с помидорками. Обидели они тебя или ещё чего. Или это мемасик местный. Я человеку указал на говнокод, а ты подскачил с какой-то хуйней. Какие-то помидоры тебе мерещатся. Проверся, а то совсем обдвачуешься.
Всё, успокойся, помидорыч. Чё нервничаешь зря?
решил учить эту залупу (с нуля ) и хочу разобраться. Есть два задания.
1) https://ideone.com/e.js/NRz9N2
Задание: что выведет этот код.
Почему выводит значения: Start, Fail, Final?
Насколько я понял (если не прав поправьте):
1. Ставиться исключение (если кому не впадлу поясните подробнее на моем примере, а то если честно не до конца понял почему выводиться именно Exception)
2. Выводит в try "Start", натыкается на строчку "new test();" (из-за того что ошибка, в том что не присвоили значение или то что совпадает с именем класса?) и пропускает то что после ошибки.
3. дальше читает "catch (Exception e)", в котором ниже указано что должно вывести ошибку из Exception.
4. и в конце запустить finally в котором просто Final.
2) Второе задание:
Код https://ideone.com/ArmUxu
Задание:
"Нужно в эту иерархию добавить класс D, метод а() которого будет возвращать сумму чисел, возвращаемых методами а() классов B и C. Приведите описание этого класса с реализацией метода а() на Java"
Нихуя не понял, помогите пожалуйста как выполнить и понять код.
> 1)
Сначала выполняется блок try. Первая строка в блоке - это вывести "Start". Вывод выполняется успешно, значит продолжаем. Вторая строка - это скорее всего вызов функции test (там точно должен быть new?). Во время выполнения функции вываливается ошибка, а значит выполнения блока try прекращается и мы переходим к блоку catch. Там вызывается метод getMessage() (у тебя это будет первый аргумент у ошибки Exception) и результат (строка "Fail") выводится в консольку. После catch выполняется finally.
> 2) Второе задание:
Правильней было бы использовать DI, но можно сделать и так:
class D implements A
{
public int a() { return (new B()).a() + (new C()).a(); }
}
>Правильней было бы использовать DI,
Ну так и используй
class D implements A
{
private B b;
private C c;
D(B b, C c) {
this.b = b;
this.c = c;
}
public int a() { return b.a() + c.a(); }
}
>Там вызывается метод getMessage()
И сразу два вопроса:
1. Если прописать не вызов метода, а рендомный текст?
2. И сработает ли в таком случае Сatch, или будет пропущен?
>>71029
> использовать DI
Что это такое?
И пару вопросов:
1) Почему в примере везде {return} в одной строчке, это норм для восприятия или лучше перенести в новую строчку? (я про читаемость)
2) Почему именно new, по другому вызов функции нельзя сделать? И почему после Б и С скобки и точка. Можешь расшифровать, пожалуйста?
3) Почему нельзя так?
{return (B()+C());} что я не так понял?
И последние задание:
«Напишите функцию (метод вычисления факториала целого числа n без использования циклических конструкций (for, while, do ... while и т.д.). Функция (метод) должна принимать один целочисленный параметр - число, факториал которого требуется вычислить и возвращать целочисленное значение - вычисленный факториал.»
наклипал я эту хуетень (https://ideone.com/ProqB7)
а потом прочел что в задании:
«Если по заданию требуется написать некоторую функцию (метод), значит, нужно просто написать функцию. Никаких дополнительных действий по вводу/выводу информации, проверке корректности параметров и т.д. не требуется.»
тоесть я просто должен написать
int factorial(n)
{
return (nn(n-1));
}
или я чет хуйну пишу?
И да, если не сложно объсните этот код (нашел в нете)
public int fact(int num) {
return (num == 0) ? 1 : num fact(num - 1);
}
Я правильно его понял: если значение нам равняется нулю, то ответ 1, если не равняется то num = num*fact(num-1)?
>Там вызывается метод getMessage()
И сразу два вопроса:
1. Если прописать не вызов метода, а рендомный текст?
2. И сработает ли в таком случае Сatch, или будет пропущен?
>>71029
> использовать DI
Что это такое?
И пару вопросов:
1) Почему в примере везде {return} в одной строчке, это норм для восприятия или лучше перенести в новую строчку? (я про читаемость)
2) Почему именно new, по другому вызов функции нельзя сделать? И почему после Б и С скобки и точка. Можешь расшифровать, пожалуйста?
3) Почему нельзя так?
{return (B()+C());} что я не так понял?
И последние задание:
«Напишите функцию (метод вычисления факториала целого числа n без использования циклических конструкций (for, while, do ... while и т.д.). Функция (метод) должна принимать один целочисленный параметр - число, факториал которого требуется вычислить и возвращать целочисленное значение - вычисленный факториал.»
наклипал я эту хуетень (https://ideone.com/ProqB7)
а потом прочел что в задании:
«Если по заданию требуется написать некоторую функцию (метод), значит, нужно просто написать функцию. Никаких дополнительных действий по вводу/выводу информации, проверке корректности параметров и т.д. не требуется.»
тоесть я просто должен написать
int factorial(n)
{
return (nn(n-1));
}
или я чет хуйну пишу?
И да, если не сложно объсните этот код (нашел в нете)
public int fact(int num) {
return (num == 0) ? 1 : num fact(num - 1);
}
Я правильно его понял: если значение нам равняется нулю, то ответ 1, если не равняется то num = num*fact(num-1)?
> 1. Если прописать не вызов метода, а рендомный текст?
println его и выведет.
> 2. И сработает ли в таком случае Сatch, или будет пропущен?
Для срабатывания блока catch достаточно его наличия и правильного определения типа эксэпшона. У тебя в блоке catch стоит универсальный тип (Exception), т.е. он будет ловить все ошибки.
> Что это такое?
https://ru.wikipedia.org/wiki/Внедрение_зависимости
Для твоей лабы (или что это такое) не нужно.
> 1) Почему в примере везде {return} в одной строчке, это норм для восприятия или лучше перенести в новую строчку? (я про читаемость)
Как хочешь. Я всегда пишу с новой строки. Ты главное точку с запятой не забывай (у тебя её в некоторых местах нету).
> 2) Почему именно new, по другому вызов функции нельзя сделать?
new - это оператор для создания объекта. Он как раз и нужен в джаве чтобы отличить создание объекта от вызова функции. Это такой джавовский синтаксис. В котлине например new не нужен.
> И почему после Б и С скобки и точка.
Потому что такой синтаксис: new Asd() - создаёт объект типа Asd с конструктором без параметров. Если нужны параметры, то они передаются внутри скобок как и при обычном вызове функции.
> 3) Почему нельзя так?
Потому что (1) этот код будет пытаться вызвать функции B и C, а не создать объекты с типом B и C. (2) Складывать тебе по заданию надо результат метода a, а не сами объекты, потому и надо сначала создать объекты при помощи оператора new, а потом у каждого вызвать метод a и сложить результат.
> И последние задание:
Это называется рекурсия.
> Я правильно его понял: если значение нам равняется нулю, то ответ 1, если не равняется то num = num*fact(num-1)?
Да, функция fact рекурсивно вызывается пока num не станет равен нулю, а потом эти значения перемножаются.
Кстати, для таких маленьких программ уровня laba, рекомендую создавать один класс Main, а все остальные классы определять внутри его с ключевым словом static (чтобы можно было использовать из main). Тогда всё это можно будет легко запустить в ideone. Вот пример твоего второго задания: https://ideone.com/gT0VyC
The usage of if statement is considered as anti-pattern by all truly professional programmers and must be avoided at all costs. Period.
это воннаби функциональщина? Но даже в лиспе есть if
Ты - это я через пол года. До сих пор работаю в той самой организацией.
Никакого. Байтоёбы не нужны. Хочешь байты считать — пиздуй в свой си.
Не ебу, просто ставить не через установщик наверное.
postgres
> хочется что-нибудь нативное
В смысле написанное на жаве? Бери orientdb, её даже встроить в приложение можно, как sqlite. Свободно скачивается с maven.
БАМП
MySQL
Знать все классы.
А возможность делиться локальной базой с мастер-базой на мастер-сервере будет просто осуществить с СКЛайт? А если будет распределёнка вместро централизации?
Тебе уже ответили, довен.
Сейчас учу джаву, до этого говнокодил на разных языках, но ничего серьезного (но база есть). Поясните по хардкору, что в джаве НЕ надо учить, то есть, например в том же js есть jquery, за который в 2018 забивают нахуй камнями и потом сжигают. Есть ли что-то такое в джаве?
И что стоит учить? Spring, hibernate, что еще? Насколько стоит углубляться в эти технологии перед поиском работы?
>в том же js есть jquery, за который в 2018 забивают нахуй камнями и потом сжигают
jQuery это единственный вменяемый инструмент в js
Два пуэра этому адеквату.
СкрСКЛ
Это специально, чтоб путать людей?
Вот суки.
Дам подсказку: попробуй вызвать на массиве любой метод, который есть у любого объекта. Equals, hashcode и т.п. на твой вкус.
И некоторое количество вопросов.
1. Где писать?
На парах юзаем мелкомягкую студию, но на моем некроноуте она запускает целый год.
2. Можно ли поднять лвл из 0 до уровня уверенного написания простых программ? За лето можно осилить?
3. Легко ли будет вкатиться в JS после Java?
И раз я тут, то поясните за Jquery: почему его считают самым адекватным инструментом и почему считают некрофилом за его использование?
Тред JS - два блока в низ.
Заранее благодарю отзывчивых.
> Где писать?
это не важно, особенно на уровне laba1
>2. Можно ли поднять лвл из 0 до уровня уверенного написания простых программ? За лето можно осилить?
что есть в твоем понимании простая программа???
программирование это понимание базовых операторов, которые на 99% одинаковые для всех популярных ЯП,
понимание парадигм программирования,
структур данных и алгоритмов
знание синтаксиса ЯП != умение программировать
ну и мы же не знаем твоих способностей, может ты дурачок, а может генийчто вряд ли, скорее просто способный
>3. Легко ли будет вкатиться в JS после Java?
ээм, ну вообще-то первое это интерпретируемый язык, а второе частично компилируемый, а вообще если тебе нужен JS, то зачем тебе учить Java, может лучше учить JS?
Можно же захардкодить, примитивных типов не так много. Сколько байт какой тип занимает описано в спеке jvm в главе 2.2 data types.
если работаешь с матрицей?
у меня пока получилось только сделать запись в текстовый файл и вывод на консоль,
а мне нужно, что бы из этого текстового файла информация записывалась в экземпляр типа Matrix, который по сути - двумерный массив
но как это организовать со строкой не понимаю
https://pastebin.com/e7BPim5c
Долбоеб, читай про сериализацию. Все до тебя еще в жаба 1.0 изобрели.
Байтоебы, сэр.
>Где писать?
IntelliJ IDEA, но если у тебя некроноут, то лучше использовать что-то менее требовательное к железу, например, Eclipse или NetBeans.
>Можно ли поднять лвл из 0 до уровня уверенного написания простых программ? За лето можно осилить?
Да.
>Легко ли будет вкатиться в JS после Java?
Наличие какого-то бэкграунда всегда помогает в изучение чего-то нового. Но всё же, Java и JS это два мало похожих друг на друга языка.
>И раз я тут, то поясните за Jquery: почему его считают самым адекватным инструментом и почему считают некрофилом за его использование?
По сути Jquery это либа для манипуляцией DOM, а современные JS-фреймворки инкапсулируют манипулирование DOM, значительно упрощая разработку. К тому же, современные JS-фреймворки позволяют писать структурированный, расширяемый и тестируемый код, ну а Jquery это просто либа для манипуляцией DOM. Короче Jquery попросту утратил свою актуальность.
Ну сделал. Вывело true, и что?
Только не уровня I2P, а что-нибудь попроще, доступное рядовой энтерпрайз макаке.
Знаю Spring, EJB 3.0, сервлеты, сокеты, AWT/Swing/SWT/JavaFX, JNI, ANTLR. Из JVM языков - Kotlin, Groovy, Clojure.
Лучше что-нибудь десктопное или геймдев.
Делал свой BASIC интерпретатор с 2D игровым движком на SDL+OpenGL, но это вряд ли кому-нибудь интересно.
>И раз я тут, то поясните за Jquery: почему его считают самым адекватным инструментом и почему считают некрофилом за его использование?
Потому что лет 10 назад это была единственная технология, которая умела в AJAX. С тех пор появился ректангуляр, который позволяет бэкэнд послать нахуй как класс а ЖЫКВЕРИ так ничему кроме каруселей и аккордеонов так и не научился.
Вообще jQuery был полезным лет 10 назад, а сейчас он просто не нужен. Для AJAX'а достаточно fetch, для динамических компонентов есть Vue.js (который подключается через <script> без всяких систем сборок).
>Потому что лет 10 назад это была единственная технология, которая умела в AJAX.
>Вообще jQuery был полезным лет 10 назад,
Спасибо, конечно, я рад, что мою речь растаскивают на цитаты, но сириусли, ты нахуя просто переписал мое сообщение своими словами и запостил сюда? Ты совсем ебобо?
Потому что могу. Проблемы, омежка?
Допустим, у тебя есть таблица Пользователь. У каждого пользователя есть возраст. Логично, по-твоему, в БД заводить отдельную сущность Возраст? если ты совсем тупой, то подскажу: нет конечно же
> у нее есть свойство(ну и запись в таблице, соответственно) date(дата создания записи) - какой лучше тип использовать, если мне нужна только дата без времени
Ты не поверишь, но в Java есть стандартный тип данных Date.
>не логично ли выделить date в отдельную сущность и сделать у них связь manyToMany?
Нет. Связывают друг с другом именно сущности, а в большинстве современных БД дата является обычным "примитивным" типом. Оборачивать её в сущность не имеет смысла.
Короче, всё распарсил с помощью Питона и регулярок, всё отлично. Есть одна проблема. Нужная мне библиотека имеется только на Жаве.
Каким образом лучше всего работать с подобным датасетом?
parameter,INT,a,1,"description"
parameter,INT,b,2,"description"
...
Хотел возвращать двумерный массив, либо ArrayList<ArrayList<String>>. Как лучше поступить? Мне бы хотелось иметь доступ к каждому элементу в отдельности.
Блядь, на плюсах удобнее писать.
А датасет большой? Лучше храни в виде массива классов и сделай индексы (в виде ассоциативного массива) для того что надо часто получать. Ну а если данных реально дохуя возьми готовую бд и ею уже и пользуйся.
>Спасибо, конечно, я рад, что мою речь растаскивают на цитаты, но сириусли, ты нахуя просто переписал мое сообщение своими словами и запостил сюда? Ты совсем ебобо?
Уважаемый, вы кажется таблетки забыли принять? Вот, ребятки, до чего Java доводит. Не употребляйте PHP и прочие вещества!
Нет, максимум до 100 таких строчек в файле. Более того, нужно обратиться к ним только один раз. В плюсах бы я уже давно запихал всё в векторы, на жаве пишу ровно три дня, не знаю, как сделать всё более оптимально.
Ну тогда используй ArrayList и не парься.
>я уже давно запихал всё в векторы
Ну так и запихай в Vector, лол.
Но, ArrayList лучше - это то же самое, по сути, но не thread safe и увеличивается медленнее.
Ох, ну надо же. Причём int можно задать таким боком. А как вы файлы тогда читаете?
Ебошим везде инты. А там где не хватает интов, пишем лонги ну или в совсем крайних случаях BigDecimal. А ты думал шутейки про пожирание памяти жавой родились из пустого места?
Спасибо, понял примерно.
Алсо, кто-нибудь подскажет за SEMRush, First Line Software и CSI (Кристалл Сервис), был у них на собеседованиях, остались смешанные чувства, проблема с выбором.
Это рыночек: за сколько сможешь себя продать - за столько и продашь. 130 не потолок для сениора точно.
Сап, такой вопрос. У меня жутко чешутся руки в компанию попасть. Так вот, если я заучу "Java полное руководство" Шилдта, то смогу уже пристроиться куда-то стажером хотя бы?
Уже полкниги зарочил, скоро к библиотекам буду переходить (коллекции, строки и т.д.)
Да, сможешь, если с английским норм, то даже на более менее приличную галеру, а если туго то нет, не сможешь, либо стажером в какой-либо наебизнес.
Спасибо за ответ, анон. С английским все норм - Upper Intermediate.
Я до этого пять лет искал сферу куда себя определить, а также был в жесткой депрессии, прокрастинировал, и параллельно учил инглиш.
>А как вы файлы тогда читаете?
А как тот факт, что байт - знаковый тип, мешает его читать из файла?
Если нужно беззнаковый 8-битный тип - то int.
И потом приводить его к 8-ми битам как (val & 0xff).
То же касается и 16-ти битных значений и т.п.
Вообще, байтоебля на джаве не намного хитрее, чем на си, надо просто выучить пару идиом.
И пожирание памяти тут ни при чём, не слушай дураков.
Байт не даёт выгоды по размеру _кода_ (не данных, блять) потому, что сама jvm имеет 32-х или 64-х битные операнды. И твой байт или даже бит один хуй будет 32-х битным в коде. И это не проблема именно джавы, а любой современной системы.
Если двигал кнопки на два пикселя вправо в очередной 5-в-ряд для андроида, то очевидно, что для стандартной вакансии spring/hibernate это нахуй никому не нужно. От проекта зависит, от сложности задач.
Скинь ссылку на проект. Хочу попрактиковаться.
с названиями только
я 4 года отработал в такси. Нравилось. Особенно нравилось отсутствие дедлайнов и полная свобода действий
int couter;
void synchronize increment() {}
void synchroniz decrement() {}
}
Два разных потока могут одновременно декрементить и инкрементить? Нет ли тут race condition? Или блокировка накладывается на весь класс?
synchronized myMethod() {...} = synchronized(this) {...}
Соответственно, _одновременно_ не будут.
А ты точно именно этого хотел?
Как ты себе это вообще представляешь - одновременно?
А если ты хотел спросить, не будут ли они мешать друг другу - то нет, не будут.
Но, это будет неэффективно.
Такие вещи лучше делать на AtomicLong например, и потом incrementAndGet() etc.
Читай книжки.
очень уж туманно всё это написанно
There is no inherent relationship between an object's intrinsic lock and its state; an object's fields need not be guarded by its intrinsic lock, though this is a perfectly valid locking convention that is used by many classes. Acquiring the lock associated with an object does not prevent other threads from accessing that objectthe only thing that acquiring a lock prevents any other thread from doing is acquiring that same lock. The fact that every object has a built-in lock is just a convenience so that you needn't explicitly create lock objects. [9] It is up to you to construct locking protocols or synchronization policies that let you access shared state safely, and to use them consistently throughout your program.
common locking convention is to encapsulate all mutable state within an object and to protect it from concurrent access by synchronizing any code path that accesses mutable state using the object's intrinsic lock. This pattern is used by many thread-safe classes, such as Vector and other synchronized collection classes. In such cases, all the variables in an object's state are guarded by the object's intrinsic lock. However, there is nothing special about this pattern, and neither the compiler nor the runtime enforces this (or any other) pattern of locking. [10] It is also easy to subvert this locking protocol accidentally by adding a new method or code path and forgetting to use synchronization
>synchronized myMethod() {...} = synchronized(this) {...}
т.е. синхронизация распространяется не на метод, а на весь объект?
>т.е. синхронизация распространяется не на метод, а на весь объект?
Да. Локом является данный экземпляр.
В любом случае, в современной джаве такую задачу надо решать иначе. Если просто счётчик и т.п. - то AtomicXxx.
Так и не досмотрел этот фильм.
https://www.youtube.com/watch?v=0aw0M5CBqT8
Держи в курсе.
>Зачем синхронизировать геттеры?
Наверное, чтобы клиент не прочёл невалидное значение.
Вот это вот читни:
http://www.allitebooks.com/programming-concurrency-on-the-jvm/
(В 5-й главе разбирается годный пример типа твоего, только интереснее)
Очень годная книга.
Она именно о том, как всё это работает на уровне jvm.
Плюс - рассмотрены вещи типа software transactional memory и т.п.
Английский А2, по джаве знаю только хелоуворд. Ну массивы еще, циклы, но это очевидно и так.
Что нужно еще? И где это взять?
Я имел в виду - чего ты хочешь?
Узнать как правильно хранить большие строки?
Зависит от задачи.
Если строка может меняться, или нужна поддержка нескольких языков - вынеси в файл properties. Погугли интернационализацию в java, i18n, etc.
Если нет - храни прямо в коде.
А еще здорово байтоебов-дурачков пугать тем, как в jvm представляются значения true/false.
Обычно размер bool равен одному байту. В Java же его размер implementation defined и зависит от конкретной виртуальной машины:
> This data type represents one bit of information, but its "size" isn't something that's precisely defined.
Ну, так же как и не в jvm.
В массивах - упаковано в байты, да.
Или даже в битовые поля, как пишут, зависит от jvm.
Одиночные значения, результаты операций - int.
immutable != final //лол
immutable - неизменяемый объект.
final - неизменяемая ссылка на объект (или значение, для примитивов).
И правда.
Но, у него есть также [Core Java | Java 8] for the impatient - они с упражнениями.
Но первой на русском нет, вроде-бы, если это важно.
Baratine.
Spring Reactive же! А вообще да, возьми Spring Boot и не парься. Или какой-нибудь dropwizard, если попроще.
потому-что я слушаю его прямо сейчас
Пытаюсь замутить простого тб бота. Нашёл исходники http://inaword.ru/bez-rubriki/kak-napisat-robot-dlya-telegram-na-java-s-ispolzovaniem-eclipse/
Всё работало до того, как начал работать анальный РКН и теперь я в хуй не дую как настроить прокси для телеграм бота.
ну если единственное, чем тебя спринг тянет - это инъекции, то проще уже действительно брать какой-нибудь application server, CDI в них с 2009 года поддерживается так то
Это копия, сохраненная 8 июня 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.