Обновить
256K+

Java *

Объектно-ориентированный язык программирования

213,04
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Опыт автоматизации тестирования стабильности работы сервера RTLS под внутренней нагрузкой

Время на прочтение10 мин
Охват и читатели3.3K

Введение.


В данной статье я расскажу о том, как в отделе контроля качества компании RTL-Service происходит автоматизированное тестирование стабильности сервера RealTrac при одновременном обслуживании большого количества мобильных локационных устройств. Для дальнейшего понимания, предлагаю ознакомиться с полезной терминологией:
RTLS-cервер RealTrac (сервер) — серверное программное обеспечение системы RealTrac, осуществляющее взаимодействие с аппаратными средствами системы и расчет местоположения устройств.

Сервер приложений RealTrac (сервер приложений) — серверное программное обеспечение, необходимое для работы web-приложения, предоставляющее программный интерфейс доступа к основным функциям системы.

Точка доступа RealTrac (далее ТД) — устройство, предназначенное для передачи данных между мобильными устройствами сети и сервером системы. Точки доступа стационарно устанавливаются на объекте, их координаты заносятся на карту клиентского программного обеспечения и фиксируются в базе данных на сервере системы. ТД может работать в режиме шлюза или ретранслятора. Режим определяется наличием проводного Ethernet подключения к сети (шлюз точка доступа, ШТД) и отсутствием такового (ретранслятор точка доступа, РТД). Обмен данными с сервером осуществляют только шлюз.
Читать дальше →

Как нам помог Docker в написании тестов

Время на прочтение4 мин
Охват и читатели14K
Чтобы показывать вам рекламу — мы в GetIntent должны быть уверены в устойчивой и безотказной работе нашей рекламной платформы. Надежность системы складывается из многих компонентов: тип используемого железа, системная/сетевая конфигурация и архитектура приложения. Внесение изменений в достаточно сложные, распределенные приложения всегда несет в себе риск.
Разработчики со своей стороны пытаются минимизировать эти риски и пишут тесты: unit и интеграционные. Написание unit тестов обычно не составляет каких-либо трудностей. С интеграционными тестами, в зависимости от их изощренности, ситуация сложнее.


Читать дальше →

Реверсинг Android клиента музыкального сервиса Zaycev.net и имплементация api на go

Время на прочтение7 мин
Охват и читатели13K

Строго говоря, к реверсингу данную статью можно отнести только с натяжкой.


Всем вам знаком такой сервис как zaycev.net. Не ошибусь, предположив, что каждый хоть раз качал с него музыку, либо через web-интерфейс, либо через мобильное приложение.


По просьбе со стороны представителей сервиса заменил в публикации константы, при желании вы можете их запросить.


Если вам все же интересно, добро пожаловать под кат.

Читать дальше →

JPoint Student Day: зачем конференции «студенческий день»?

Время на прочтение6 мин
Охват и читатели4.4K
Решение дополнить JPoint 2016 «молодёжным» днём (с возрастным ограничением в 25 лет) могло вызывать вопрос «зачем вообще это нужно». То, что основная «взрослая» часть прошла с размахом, неудивительно: на ней специалисты рассказывают о нюансах, которые не нагуглишь за три минуты. Но начинающих разработчиков, до этих нюансов ещё не дошедших, интересуют куда более базовые вещи, многие из которых были уже тысячу раз описаны. Зачем вообще тогда мероприятие, если можно дома пользоваться Stack Overflow? Что оно откроет людям, которые и так получают профильное образование? И что может дать один день тем, кому требуются ещё многие месяцы практики? Под катом — подробный рассказ о том, как прошёл Student Day, отвечающий на эти вопросы.



Читать дальше →

Статический анализатор HuntBugs: проверяем IntelliJ IDEA

Время на прочтение9 мин
Охват и читатели17K

Как многие помнят, некоторое время я развивал статический анализатор Java-байткода FindBugs. Однако проблем в FindBugs накопилось столько, что я решил, что будет проще написать новый анализатор байткода. Я не очень творчески назвал его HuntBugs. Разработка ведётся на GitHub. Он пока в ранней стадии разработки, иногда глючит и покрывает примерно 35% диагностик из FindBugs, но при этом добавляет свои интересные штуки. Попробовать можно на вашем Maven-проекте с помощью команды mvn one.util:huntbugs-maven-plugin:huntbugs (отчёт пишется в target/huntbugs/report.html). Альтернативно можно собрать вручную из гита и запустить приложение командной строки one.util.huntbugs.HuntBugs, которому можно подавать на вход JAR-файлы или каталоги с .class-файлами.


Как-нибудь потом, когда проект несколько повзрослеет, я расскажу о нём более подробно. А в этой статье я покажу, чего интересного нашёл HuntBugs в IntelliJ IDEA Community Edition. Я скачал с официального сайта и поставил последнюю версию этой IDE, а затем натравил HuntBugs на файл lib/idea.jar, в котором почти всё и лежит. Я люблю тестировать статический анализ на IDEA, потому что это IDE, в которой самой есть очень неплохой статический анализатор и разработчики им явно пользуются. Интересно посмотреть, что остаётся после него.

Читать дальше →

VectorDrawable — часть вторая

Время на прочтение5 мин
Охват и читатели11K

В предыдущей статье мы рассмотрели, как преобразовать существующий svg-файл в VectorDrawable, который позволяет заменить много растровых изображений на одно, меньшее по размеру и более простое в обслуживании. Однако, это не все полезности, которые можно извлечь из VectorDrawable. Его можно анимировать. Это мы и рассмотрим в данной статье, заставив логотип андроид пожимать плечами.

Читать дальше →

VectorDrawable — часть первая

Время на прочтение7 мин
Охват и читатели16K

Предлагаю вашему вниманию перевод статьи "VectorDrawables – Part 1" с сайта blog.stylingandroid.com.


По долгу службы потребовалось мне как-то разобраться с векторной графикой. Во время поиска наткнулся я на серию статей под названием “VectorDrawable” в блоге https://blog.stylingandroid.com/. Ответов на все интересующие меня вопросы я, конечно, не нашел, но статьи очень понравились своей последовательностью и четко выверенным объемом необходимого материала. Решил поделиться переводом этих статей с обитателями хабра.


Я не переводил названия, activity, bitmap и тому подобное, потому что считаю, что так легче воспринимать информацию, ведь разработчики, в силу профессии, эти слова в русском варианте практически никогда не у потребляют. Далее следует перевод:

Читать дальше →

Использование Java массивов для вставки, получения и изменения PostgreSQL массивов

Время на прочтение4 мин
Охват и читатели19K
Массивы являются мощным средством программирования, часто используемом разработчиками, как в Java так и PL / PgSQL. Интерфейсы потенциально могут стать сложнее, например, когда два из них пытаются и общаются друг другом. В этом разделе рассматривается, как можно написать простой код, который использует java.sql.Array интерфейс для вставки, извлечения, и обновления массивов в PostgreSQL.

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

CREATE TABLE city_example (
country TEXT, 
cities TEXT[]
);

Теперь мы будем использовать JDBC интерфейс для добавления, получения и изменения данных в этой таблице.
Читать дальше →

Документация разработчика Hibernate – Глава I. Доступ к базе данных

Время на прочтение13 мин
Охват и читатели66K
Представляю вашему вниманию перевод первой главы официальной документации Hibernate.

Перевод статьи актуален для версии Hibernate 4.2.19.Final

Cледующая глава — Документация разработчика Hibernate – Глава II. Транзакции и контроль многопоточности

Содержание
 Предисловие
 1. Доступ к базе данных
  1.1. Подключение
   1.1.1. Конфигурация
   1.1.2. Получение JDBC-соединения
  1.2. Пулинг соединений (Connection pooling)
   1.2.1. Пулинг с помощью с3p0
   1.2.2. Пулинг с помощью Proxool
   1.2.3. Получение соединений от сервера приложений, через JNDI
   1.2.4. Прочее по конфигурации соединений
   1.2.5. Необязательные свойства конфигурации
  1.3. Диалекты
   1.3.1. Указание диалекта для использования
   1.3.2. Разрешение диалекта
  1.4. Автоматическая генерация схемы при помощи Schema Export
   1.4.1. Кастомизация файлов маппинга (Customizing the mapping files)
   1.4.2. Запуск инструмента SchemaExport
Читать далее

Вызываем Java код из Love2D

Время на прочтение3 мин
Охват и читатели10K

Всем доброго времени суток!


Возникла потребность встроить рекламу в свою игру на Love2D. Решил показывать баннер после выигрыша игрока и тут появились сложности: банер вызывается Java кодом приложения, а выигрыш определяется в Lua коде. Связывает их код на Си, туториалов, как добавлять свои методы в движок не было, и пришлось копаться в коде самостоятельно. Репозиторий Love2D для Android лежит вот тут.

Читать дальше →

Симфония асинхронии: задачи JavaFX и сокеты Netty

Время на прочтение10 мин
Охват и читатели17K
Всем доброй пятницы!

У нас наконец-то дошли руки до книги о Netty, которую нам рекомендовали в том числе благодарные читатели нашего хаброблога.



Признаться, у нас давно не выходило ничего узкотематического по Java. Но тема Netty вызывает на Хабре самый живой интерес, поэтому мы решили разместить обзорный материал по ней (автор почерпнул идею поста из этой книги) и устроить самый ориентировочный опрос. Заходите, высказывайтесь!
Читать дальше →

Автотесты в функциональном стиле

Время на прочтение6 мин
Охват и читатели11K

Элементы функционального программирования появились в Java сравнительно недавно, но приобретает все большую популярность. Особенно в части stream API – наверное нет Java разработчика, который бы не слышал/читал/применял этот API для работы с коллекциями. К сожалению, большинство и не идет дальше использования Stream API, тогда как функциональный подход позволяет значительно упростить жизнь разработчикам автотестов. Ниже я расскажу про два примера такого упрощения – словари проверок и специализированные матчеры

Читать дальше →

Generics в Kotlin vs. Generics в JAVA: cходства, различия, особенности

Время на прочтение7 мин
Охват и читатели56K

Эта статья про Generics в Kotlin — особенности их использования, сходства и различия с Generics в Java.

В двух словах про Generics
Если коротко, то Generics — это способ сказать, что класс, интерфейс или метод будут работать не с каким-то конкретным типом, а просто с каким-то. С каким именно будет определено из контекста. Например:

public interface List<E> extends Collection<E> {
	//...
}

Заранее неизвестно, объекты какого класса будут содержаться в списке, но это определится при его использовании:

List<String> list = new ArrayList<>();

Теперь это не просто список, а список строк. Generics помогают обеспечить типобезопасность: в List можно попытаться положить любой объект, но в List<String> — только String или один из его потомков.

Я разделю рассказ про Generics на две части: собственно Generics и использование Wildcards. Пока речь не заходит про Wildcards, использование Generics в Kotlin мало чем отличается от Java.
Читать дальше →

Ближайшие события

[СПб, Анонс] Встреча с Андреем Паньгиным — Всё, что вы хотели знать о стек-трейсах и хип-дампах

Время на прочтение1 мин
Охват и читатели5.1K
В четверг, 26 мая, в 20:00 в питерском офисе компании Luxoft состоится встреча JUG.ru с Андреем Паньгиным aka apangin, ведущим разработчиком Одноклассников. Тема встречи — особенности JDK, связанные с обходом Heap-a и стеками потоков.



Stack Trace и Heap Dump — не только инструменты отладки, но ещё и дверцы к самым недрам виртуальной машины Java. Презентация посвящена особенностям JDK, так или иначе связанным с обходом хипа и стеками потоков. В её основе лежат популярные вопросы про JVM со StackOverflow и реальные случаи из практики.

  • Влияют ли стек-трейсы на производительность?
  • Как снимать дампы в продакшне без побочных эффектов?
  • Как устроены утилиты jmap и jstack изнутри?
  • Почему все профайлеры врут, и как с этим бороться?
  • Как сканировать хип средствами JVMTI и Serviceability Agent?


Участие бесплатное, регистрация — ТУТ.
Читать дальше →

Оптимизация Java-кода в Android Marshmallow

Время на прочтение8 мин
Охват и читатели13K
Повышение производительности системы, улучшение впечатлений пользователей от работы с приложениями: вот направления, в которых развивается Android. В Android Marshmallow можно обнаружить множество новых функций и возможностей. В частности, речь идёт о серьёзных усовершенствованиях Android Runtime (ART). Они направлены на производительность, потребление памяти и многозадачность.

Вышел новый релиз платформы? Изменилась виртуальная машина Android? Любое из этих событий означает, что разработчику нужно срочно понять суть новшеств. А именно, надо разобраться с тем, какие методы, позволявшие достичь высокой производительности решений в прошлом, теперь уже не так эффективны. Нужно найти новые подходы к разработке приложений, способные дать наилучшие результаты. О подобных тонкостях почти не пишут, поэтому разработчикам приходится выяснять всё это методом проб и ошибок.
Читать дальше →

Ленивый event sourcing или как жить сегодняшним днем

Время на прочтение3 мин
Охват и читатели14K
Перевод статьи опубликованной на Eventsourcing Publications. Статья описывает некоторые из идей примененных в проекте Eventsourcing.

Если вы читали статью Фаулера или подобные источники на тему event sourcing, у вас в мозгу могла остаться вот приблизительно такая картинка:

image

Общая идея такого подхода заключается в том, что пользователь (или любая другая внешняя система) генерирует команды, мы их обрабатываем, складывая полученные события в event store и обновляя «состояние мира» в базе данных, данные из которой запрашивает пользователь.

Этот подход выглядит просто и красиво. У нас есть достаточно данных чтобы «переигрывать» события, у нас есть откуда запрашивать данные о состоянии мира и мы можем использовать проверенные временем базы данных. С другой стороны, я обратил внимание что я хотел немного другого от концепции event sourcing. Мне хотелось избежать предугадывания будущего и эта модель как-то не очень подходила, потому что мне приходилось записывать обновленное состояние в мою базу данных «для чтения».

Читать дальше →

Ускорение автоматизации тестирования веб-интерфейса за счет применения Python и Selenide

Время на прочтение4 мин
Охват и читатели13K
Одной из задач компании RTL-Service, которая занимается разработкой систем локального позиционирования с высокой точностью и обеспечением голосовой связи по зашифрованному каналу, является разработка веб-клиента:

Читать дальше →

Платформа CUBA выходит на рынок Свободного ПО

Время на прочтение3 мин
Охват и читатели10K
Спустя два года присутствия на российском и года на мировом рынках платформа CUBA присоединяется к кругу свободно распространяемого программного обеспечения и переходит на лицензию Apache 2.0. Таким образом, широкий круг разработчиков Java, ориентирующийся на открытые технологии, получит возможность разрабатывать и распространять свои CUBA приложения абсолютно бесплатно, а также изменять и развивать платформу самостоятельно!

Кто не знаком с платформой, приглашаем вас ознакомится на наш сайт или прочитать первую статью о платформе на хабре.



Добро пожаловать под кат, чтобы узнать, как и почему платформа сделала разворот в сторону СПО.

Qook: Портировать старую игрушку на Android и поделиться ей с миром

Время на прочтение24 мин
Охват и читатели23K
КДПВ

На самом деле, я очень люблю логические игрушки. Не, «три в ряд», «найди похожий» и прочие «покорми собачку» меня мало интересуют. А вот по-настоящему сложная штуковина может спокойно утянуть на пару недель. Примерно так и случилось со мной в 2004-м году, когда ко мне в руки попал новенький мобильник от Sony. Способность этого T68I отлично звонить, показывать цветные картинки и, по слухам, даже отсылать свои контакты по BT прошли мимо меня незамеченными. А вот Q – нет. И сколько часов я просидел за маленьким дисплеем, судорожно гоняя шарики туда-сюда я уже и не помню. Зато, прекрасно помню, что, идея написать порт этой игры для какой-нибудь из современных платформ меня не отпускала со времен своего самого первого Hello World. Правда, все мои попытки склепать хоть какой-то игровой движок в те старые-добрые времена разбивались о… в общем обо что-то они разбивались. Зато теперь я давно и прочно пишу на Java, а с некоторых (совсем недавних) пор еще и для Android, так что идея порта игрушки наконец-то нашла возможность быть реализованной. Хотите посмотреть, что оно есть и как оно получилось? Тогда – под кат.
Читать дальше →

JPoint 2016: Быстрее, выше, производительнее

Время на прочтение7 мин
Охват и читатели10K
В прошлом году московская Java-конференция JPoint прошла с таким размахом (тысяча человек, четыре зала, именитые спикеры), что казалось, дальше расти некуда. Но JPoint 2016 показал: есть куда. Конференция оказалась настолько масштабнее, что даже на обработку фотографий с неё ушло много времени (поэтому наш текст запоздал настолько, что на Хабре раньше успел появиться обзор глазами участника от dbelob). Под катом — все подробности о том, как это было.



Читать дальше →