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

Рано или поздно все разработчики Java решают мелкие задачи в области Continuos Integration. Не обошла эта участь и меня. Озадачился я проблемой автоматического инкремента версий в pom.xml при каждой итерации сборки проекта.

Дано: maven проект с несколькими модулями, мастер pom.xml и Jenkins-сервер (все как у настоящих пацанов).

Нужно: чтобы при каждом коммите автоматически собирался проект в любом бранче, а в ветке develop проект не только собирался, но и инкрементился номер билда, который задан третьим числом в версии вида 1.0.100-SNAPSHOT.

Для автоматической сборки Java-проекта в бранчах у нас используется Jenkins-проект на основе модного нынче Multibranch pipeline.

image

Суть этого workflow — периодически (например, раз в минуту), в Multibranch pipeline запускается задача, которая определяет изменения в бранчах и запускает сборку для тех бранчей, в которых что-то закоммитили. При этом, как у настоящих пацанов, для сборки бранча используется самый настоящий Jenkinsfile. Немного ликбеза: Jenkinsfile — это код на языке Groovy который определяет последовательность и инструкции по сборке проекта. Даже придумали для этого специальный термин «pipeline as code». Казалось, ничего вроде бы сложного нет — через groovy-скрипт инкрементим номер версии, коммитим и запускаем maven-сборку. Но тут нарисовывается главная проблема — как предотвратить последующие (бесконечные) сборки после того, как мы автоматом обновили pom.xml? Да, в Jenkins-плагине под названием 'git' (тот самый, который предназначен для детекта изменений в бранчах) есть даже специальная фича — «Pooling ignores commit», но вот незадача — она не работает в Multibranch-pipeline. По этому поводу жаловались многие пользователи и даже завели специальный Jira-айтем. Поэтому — вперед, будем изобретать свой велосипед!
Читать полностью »

[Питер, анонс] Встреча JUG.ru с Андреем Ершовым: «Как мы делали телефонную платформу с использованием GridGain» - 1

В четверг, 1 декабря, в 20:00 в офисе компании SEMrush состоится встреча JUG.ru с Андреем Ершовым, экспертом по распределенным системам. Андрей расскажет, как они в DINO Systems (Ring Central) сделали телефонную платформу с использованием GridGain. Для понимания большей части доклада знание GridGain или In-Memory Data Grid в целом не является обязательным.
Читать полностью »

Данная статься познакомит вас с разработкой простого приложения для Android TV. В первую очередь она ориентированна на тех, кто уже имел какой-либо опыт в разработке приложений для Android, поэтому я не буду здесь объяснять что такое Activity, Fragments и т.д.

В интернете есть много русскоязычной информации по разработке приложений для Android и не мало статей по написанию HelloWord для него же. Заинтересовавшись разработкой приложений для Android TV, я сразу же начал изучать эту тему на англоязычных сайтах. К моему удивлению материала оказалось не так уж и много, и я решил посмотреть что же есть на русском. На русском ничего найти не удалось (возможно плохо искал). В общем я намерен исправить эту ситуацию.
Читать полностью »

image

Совсем недавно на Хабре появилась статья, которая дает не совсем верное представление о текущем положении вещей в Scala-сообществе.
У читателя создается ложное впечатление о застое и загнивании в экосистеме Scala. В этой статье я хотел бы исправить это и рассказать о недавно вышедших новинках и будущих изменениях.

В мае 2016 году на конференции Scala Days в Нью-Йорке Мартином Одерски была представлена презентация, описывающая настоящее и будущее языка Scala.
Читать полностью »

Привет, Мир! Мы два новоиспеченных разработчика мобильных игр, бывшие одноклассники, выпускники Казанского федерального университета, Айдар и Эд, продолжаем рассказ о разработке нашей первой игры «Syncomania» на Android.

Для тех, кто только что присоединился, вкратце напомним содержание первой части:

  • мы придумали пошаговую головоломку о четырех героях (изображенных в виде роскошных белых кружочков);
  • все герои (и их враги, выполненные в богатом красном цвете) управляются и двигаются синхронно;
  • герои могут погибнуть, столкнувшись друг с другом, наступив на ловушку, наткнувшись на врага или попав под ящик;
  • цель игры — доставить всех героев живыми к единственному выходу (зеленый квадратик);
  • желательно найти короткое решение.

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

FlyElephant празднует первый год работы в публичном доступе и анонсирует сотрудничество с HPC-HUB - 1

В ноябре FlyElephant празднует первый год работы в публичном доступе. FlyElephant — это платформа для дата сайнтистов, инженеров и ученых, которая ускоряет бизнес с помощью автоматизации Data Science и Engineering Simulation.
Читать полностью »

Что делать, если имеющегося в приложении API для решения задачи недостаточно, а возможности оперативно провести изменения в код нет?

Лучше в райнтайме, чем никогда: расширяем API JIRA «на лету» - 1

Последней надеждой в этой ситуации может быть применение средств пакета java.lang.instrument. Всем, кому интересно, что и как в Java можно сделать с кодом в уже запущенной VM, добро пожаловать под кат.
Читать полностью »

Пусть Жираф был не прав,
Но виновен не Жираф,
А тот, кто крикнул из ветвей:
«Жираф большой — ему видней!» (с)

Потребовалось оперативно разобраться с технологией Apache Spark заточенную для использования Big Data. В процессе выяснения активно использовал habrahabr, так что попробую вернуть информационный должок, поделившись приобретенным опытом.

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

Больших данных вроде как должно быть много, но почему-то не просто найти то злачное место, где их все щупают. Сначала попробовал вариант с ambari, но на моей Window7 валились ошибки настроек сетевого моста. В итоге прокатил вариант с преднастроенной виртуальной машиной от Cloudera (CDH). Просто устанавливаем VirtualBox, запускаем скачанный файл, указываем основные параметры (память, место) и через 5 минут достопочтенный джин Apache Hadoop жаждет ваших указаний.

Несколько слов, почему именно Spark. Насколько я понимаю, ключевые отличия от изначальной MapReduce в том, что данные удерживаются в памяти, вместо сброса на диск, что дает ускорение во много раз. Но, пожалуй, более важны реализации целого ряда статистических функций и удобным интерфейсом для загрузки/обработки данных.

Дальше собственно код для решения следующей задачи. Есть реально большие данные (ибо рука очень устает скролить эти 2000 строк) в формате:

Маленький код для больших данных или Apache Spark за 3 дня - 1

Есть предположение, что дефолт как-то связан с остальными параметрами (кроме первого, к уважаемым Ивановым1…N претензий нет) и нужно построить модель линейной регрессии. Прежде чем начать, стоит оговориться, что это мой первый код на Java, сам я работаю аналитиком и вообще это мой первый запуск Eclipse, настройка Maven и т.д. Так что не стоит ждать изысканных чудес, ниже решение задачи в лоб тем способом, который почему-то заработал. Поехали:
Читать полностью »

Садясь за эту статью, не могу избавиться от дежавю: как и прошлом году, анонс JPoint происходит на фоне ожидания релиза Java 9. Только в этот раз JPoint не четвертый, а уже пятый, и релиз был перенесен не в первый раз, а в третий.

Поезд, приходящий без опозданий: Анонс Java-конференции JPoint 2017 - 1

Сегодня предлагаю поговорить о том, что нас ждет 7-8 апреля: в конце концов, с этой датой уже ничего не станет, и в ней можно быть уверенным. Сейчас мы делаем все, чтобы на JPoint 2017 участники смогли встретиться с Марком Рейнхольдом или Брайаном Гетцом, хотя и без них у нас уже есть несколько новых лиц, которые приедут на конференцию. Кто это? Смотрите под катом.

Кроме того, в тексте вы найдете ссылки на видео лучших докладов с JPoint 2016.
Читать полностью »

Сегодня открываем новую рубрику: разбор технических выступлений. Если взять в целом удачный доклад с IT-конференции и формализовать в нём те моменты, благодаря которым он хорош, то можно многому научиться в плане выступлений. А если в том же докладе формализовать ещё и моменты, которые можно улучшить, то польза будет двойная. Тем, кто собирается выступать на конференциях, это пригодится. Да и тем, кто давно и успешно там выступает, это тоже не повредит.

Сегодня вашему вниманию предлагается доклад Сергея Walrus Куксенко на JPoint 2016: «Quantum Performance Effects II: Beyond the Core».

Слайды тут

Дисклеймер: про Java только сам доклад, если вы его ещё не видели. Статья под катом — про доклад.
Читать полностью »


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