Рубрика «java» - 192

Доброго времени суток. Речь пойдёт об инструменте тестирования производительности СХД, изначально разработанного в недрах компании EMC для внутренних нужд, но имеющем свойство плавно разрастаться. Кстати, буквально «вчера» мангуст получил статус OpenSource проекта. А это значит, что пришло время немножко рассказать о нём. Итак, что же это за зверь?

image
Читать полностью »

Давно не писал настольных приложений на Java вообще и с использовании Swing в частности. Однако, возникла необходимость немного по GUIть. В качестве инструмента выбрал IntelliJ IDEA Community edition, 2016.1 версии.

Взялся ваять и, естественно, первое, на что налетел — хотя со времён Borland Java Builder 2006 воды утекло немало, экранные интерфейсы создавать проще не стало, скорее наоборот. А одной из причин выбора IDEA было как раз наличие Swing дизайнера «из коробки», однако как им пользоваться с ходу решительно непонятно — форма генерится, класс создаётся, создаются переменные контролов из дизайнера… но и только: при создании нашего класса форма на экране не появляется
Читать полностью »

Создание собственного приложения для обработки графов в Giraph - 1
Be my friend by oosDesign

Перед крупными интернет-компаниями часто встают такие сложные задачи, как обработка больших данных и анализ графов социальных сетей. Помогают в их решении фреймворки, но сперва необходимо проанализировать возможные варианты и выбрать подходящий. В лаборатории при Техносфере Mail.Ru мы изучаем эти вопросы на реальных примерах из проектов Mail.Ru Group (myTarget, Поиск Mail.Ru, Антиспам). Задачи могут быть как сугубо практические, так и с исследовательской составляющей. По мотивам одной из таких задач и появилась эта статья.

Во время сборки и запуска своего первого проекта на Giraph сотрудники лаборатории анализа данных Техносферы Mail.Ru столкнулись с рядом проблем, в связи с чем родилась идея написать краткий туториал, как же собрать и запустить свой первый Giraph-проект.

В этой статье мы расскажем, как создавать свои приложения под фреймворк Giraph, который является надстройкой над популярной системой обработки данных Hadoop.
Читать полностью »

image

В этом выпуске

— JUnit 5 к нам приходит
— Сборка окончена: CMS будет удален из Java
— Java EE: Oracle прервал молчание
— В дебри JIT вместе с Azul
… и многое другое
Читать полностью »

Недавно Лукас Эдер заинтересовался в своём блоге, способен ли JIT-компилятор Java оптимизировать такой код, чтобы убрать ненужный обход списка из одного элемента:

// ... а тут мы "знаем", что список содержит только одно значение
for (Object object : Collections.singletonList("abc")) {
    doSomethingWith(object);
}

Вот мой ответ: JIT может даже больше. Мы будем говорить про HotSpot JVM 64 bit восьмой версии. Давайте рассмотрим вот такой простой метод, который считает суммарную длину строк из переданного списка:

static int testIterator(List<String> list) {
    int sum = 0;
    for (String s : list) {
        sum += s.length();
    }
    return sum;
}

Читать полностью »

Не так давно посчастливилось сменить место работы. Попал в компанию, которая, в принципе, заслуживает отдельной статьи по ряду причин и, возможно, появится здесь позже. Если совсем вкратце о структуре нашего отдела: заниматься чем-то, кроме своей основной деятельности, не возбраняется, так что взор мой упал на наш почтовый сервер, доставляющий много хлопот.

У компании имеются удаленные партнерские филиалы, равномерно распределенные по всей Западной Европе, использующие один почтовый сервер. К сожалению, бюджет IT-отдела не очень большой, а пользователей достаточно много (около 700 почтовых аккаунтов). Использовался, да и сейчас используется для почты Exchange 2010 с последними обновлениями и более-менее настроенными правилами фильтрации спама, а вот с антивирусом как-то не заладилось. Купленное решение отказывалось нормально работать, раздувая очередь входящей корреспонденции до неприличных размеров и вешая намертво всю почту. (Да, я знаю, что все best practice говорят о необходимости и edge-сервера, и отдельно сервера архивации, но что было на тот момент, то и было.)

Берем инициативу в свои руки. К большому своему удивлению, найти развернутый мануал по решению такой проблемы сходу не удалось, так что возникла идея поделиться своими пробами и ошибками в рунете.
Читать полностью »

Maven
Что делать, если сборка (build) с Maven проходит слишком медленно? Ведь когда сборка длится слишком долго, любой, даже самый терпеливый разработчик, может заскучать и отвлечься.

Для быстрого поиска в Google или для закладок, сразу предлагаю итоговое решение:

mvn package -am -o -Dmaven.test.skip -T 1C

— для сборки проекта без тестов.
Читать полностью »

Как написать SQL-запрос на Slick и не открыть портал в ад - 1

Slick — это не только фамилия одной из величайших солисток всех времён, но и название популярного Scala-фреймворка для работы с базами данных. Этот фреймворк исповедует «функционально-реляционный маппинг», реализует реактивные паттерны и обладает официальной поддержкой Lightbend. Однако отзывы разработчиков о нём, прямо скажем, смешанные — многие считают его неоправданно сложным, и это отчасти обоснованно. В этой статье я поделюсь своими впечатлениями о том, на что стоит обратить внимание при его использовании начинающему Scala-разработчику, чтобы в процессе написания запросов случайно не открыть портал в ад.
Читать полностью »

Решил поменять специальность и попробовать себя в JAVA. При этом стал проходить достаточно много тестов он-лайн от компаний, на собеседование которых хотел бы попасть. Попалась достаточно интересная задача, возможно, она интересна только начинающим, а кому-то станет очевидной и примитивной, тем не менее я пробовал получить разнообразные варианты решения ее на различных форумах.

Суть задачи такова. Необходимо написать метод, который принимает в качестве аргументов две коллекции ArrayList одинакового размера, например, одна a = [a1, a2, a3, ....], а вторая b = [b1, b2, b3 ...]. Метод должен превратить коллекцию а в следующий вид: a = [a1, b1, a2, b2, a3, b3....]. При этом решение должно быть экономным к ресурсам и процессорному времени.
Читать полностью »

Решил я однажды таки попробовать дико популярный нынче Rx. А заодно и Retrofit. И посмотреть, как с их помощью реализовать стандартную задачу: получить с сервера набор данных, отобразить их и при этом ничего не терять при поворотах экрана и не делать лишних запросов. Первый вариант у меня получился сразу почти — просто взял и вызвал cache() на Observable, получаемый из синглтона, но он меня не устраивал — для принудительного обновления приходилось, по какой-то причине, пересоздавать экземпляры классов Retrofit и его же реализации моего интерфейса для API. Пересоздание же самого Observable эффекта не давало — всегда возвращались старые данные вместо запуска нового сетевого запроса и получения новых данных.

После долгих мучений с новой для себя технологией выяснил, что во всём был виновен cache() (точнее, наверное, моё неправильное оного понимание). В итоге сделал так: фрагмент запускает метод, подписывающий Subscriber синглтона на Observable retrofit-a, коий запускает onNext и onError BehaviorSubject-a, на который подписывается уже Subscriber фрагмента. Код на GitHub тут, подробности — под катом.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js