A PVS-Studio team and our product make a great contribution to upgrading of software quality. Moreover, in addition to detecting errors in closed and open source projects, there is an indirect contribution to the development of compilers and other tools of code analysis. We are pleased that in some cases we are trendsetters and we decided to dedicate a small note to this in our blog.
Читать полностью »
Рубрика «java» - 47
PVS-Studio: Engine of Progress
2019-08-20 в 13:19, admin, рубрики: .net core, C#, c++, code analysis, code review, coref, java, microsoft, open source, programming, pvs-studio, static code analysis, Блог компании PVS-StudioNX JAVA meetup #14: исследование производительности на проде, плюсы и минусы Spark в решениях на основе Cassandra
2019-08-19 в 14:38, admin, рубрики: java, Блог компании Nexign, конференцииПривет!
29 августа в петербургском офисе Nexign пройдет java-митап.
Начало в 19:30.
Больше подробностей и ссылка на регистрацию — под катом.
REST Assured: что мы узнали за пять лет использования инструмента
2019-08-19 в 13:04, admin, рубрики: api, java, qa, rest api, REST-assured, test automation, Блог компании DINS, тестирование, Тестирование IT-систем, Тестирование веб-сервисовREST Assured — DSL для тестирования REST-сервисов, который встраивается в тесты на Java. Это решение появилось более девяти лет назад и стало популярным из-за своей простоты и удобного функционала.
В DINS мы написали с ним более 17 тысяч тестов и за пять лет использования столкнулись со множеством «подводных камней», о которых нельзя узнать сразу после импорта библиотеки в проект: статическим контекстом, путаницей в порядке применения фильтров к запросу, трудностями в структурировании теста.
Эта статья — о таких неявных особенностях REST Assured. Их нужно учитывать, если есть шанс, что количество тестов в проекте будет быстро увеличиваться — чтобы потом не пришлось переписывать.
Автоматизация HTTP запросов в контексте Spring
2019-08-18 в 12:14, admin, рубрики: di, java, rest, springПредыстория
Несколько месяцев назад поступила задача по написанию HTTP API работы с продуктом компании, а именно обернуть все запросы с помощью RestTemplate и последующим перехватом информации от приложения и модификации ответа. Примерная реализация сервиса по работе с приложением была таковая:
if (headers == null) {
headers = new HttpHeaders();
}
if (headers.getFirst("Content-Type") == null) {
headers.add("Content-Type", MediaType.APPLICATION_JSON_VALUE);
}
HttpEntity<Object> entity;
if (body == null) {
entity = new HttpEntity<>(headers);
} else {
entity = new HttpEntity<>(body, headers);
}
final String uri = String.format("%s%s/%s", workingUrl, apiPath, request.info());
final Class<O> type = (Class<O>) request.type();
final O response = (O)restTemplate.exchange(uri, request.method(), entity, type);
… простенький метод, принимающий тип, тело и заголовки запроса. И все бы хорошо, но выглядело как костыль и не особо юзабельно в контексте Spring.
И пока товарищи джуны писали "костыли" в своих ветках, мне пришла в голову гениальнейшая идея — а почему бы не писать эти запросы "в одну строчку" (like Feign).
Идея
У нас в руках имеется мощный DI контейнер Spring, так почему бы не использовать его функционал в полной мере? В частности инициализации Data репозиториев на примере Jpa. Предо мной стояла задача инициализация класса типа интерфейс в контексте Spring и три варианта решения перехвата вызова метода, как типичной реализации — Aspect, PostProcess и BeanDefinitionRegistrar.
Кодовая база
Первым делом — аннотации, куда же без них, иначе как конфигурировать запросы.
1) Mapping — аннотация, идентифицирующая интерфейс как компонент HTTP вызовов.
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Mapping {
/**
* Registered service application name, need for config
*/
String alias();
}
Что такое feature toggle или как избавиться от мучительных мёржей и долгоживущих веток?
2019-08-17 в 13:01, admin, рубрики: architectural patterns, feature switcher, feature toggle, java, software design, ПрограммированиеДопустим, вы хотите разработать новую фичу, но не уверены, что она понравится пользователям, и вам нужно иметь способ безболезненно её скрыть. Или предположим, что вы работаете над новой большой фичей и хотите избежать монстр-коммитов. Или просто хочется сделать поведение сайта легко конфигурируемым. Как можно решить все эти проблемы, читайте под катом.
Читать полностью »
Как один линуксовый администратор управлял детским хором системой распознавания нот под Ubuntu 16.04. Микрофон и аккорды
2019-08-17 в 2:16, admin, рубрики: data mining, diy или сделай сам, java, Блог компании РДТЕХ (Разумные Деловые Технологии), машинное обучение, музыка, Настройка Linux, распознавание образов, сделай самЧто нужно, чтобы лето проходило весело? Нужна музыка! Но, если музыка записана нотами, а вы — обыкновенный системный администратор, а вам поручили задачу создать детский хор, то в качестве одного из вариантов решения этой проблемы, представляю несколько полезных программ, написанных на Java и доступных как в репозитарии Ubuntu 16.04, так и на Гитхабе для решения задачи машинного распознавания нот, создания музыкальных партий, выгрузку и редактирование получившегося музыкального продукта в популярные форматы и раздачу файлов (как и подзатыльников) отдельным исполнителям. Тема, я надеюсь, будет интересна читателям нашего блога.
Читать полностью »
(Не очень) скрытые издержки общей кодовой базы iOS и Android
2019-08-16 в 10:37, admin, рубрики: android, c++, iOS, java, kotlin, objective-c, swift, разработка мобильных приложений, Разработка под android, разработка под iOS, С++До недавнего времени у Dropbox была техническая стратегия использовать общий код C++ для мобильных приложений iOS и Android. Идея понятна: написать код один раз на C++ вместо его дублирования отдельно на Java и Objective C. Мы приняли эту стратегию ещё в 2013 году, когда группа инженеров мобильной разработки была относительно небольшой и приходилось быстро развивать продукт. Такое решение позволило выдавать большой объём кода как на Android, так и на iOS силами маленькой команды.
Теперь мы полностью отказались от этой стратегии в пользу родных языков каждой платформы (в первую очередь Swift и Kotlin, которые не существовали, когда мы начинали). Решение связано с (не очень) скрытыми издержками на совместное использование кода.
Все проблемы вытекают из главного: оверхед оказался больше, чем просто написать код два раза.
Читать полностью »
[Питер] Встреча JUG.ru с Себастианом Дашнером — Make writing enterprise tests more joyful
2019-08-16 в 9:20, admin, рубрики: java, JUG, jug-spb, spb, конференции, Программирование, Тестирование веб-сервисов
Во вторник, 27 августа, через два дня после фестиваля TechTrain, состоится встреча JUG.ru с Себастианом Дашнером (Sebastian Daschner), ведущим Java Developer Advocate в IBM, Java-чемпионом, экспертом в области Enterprise Java, известным спикером и консультантом.
Участие бесплатное, регистрация обязательная. Зарегистрироваться можно тут. Подробная информация о теме встречи и спикере — под катом.
Доклад будет читаться на английском языке.
К чему приводит лень или как докатиться до написания парсера psd и что из этого может получиться
2019-08-15 в 18:52, admin, рубрики: html, java, markupeasy, marsy, spring framework, Развитие стартапа, Разработка веб-сайтовДоброго времени суток!
Меня зовут Андрей, я хочу рассказать Вам о своем проекте, который разрабатываю в свободное от работы время. Он уже достиг этапа, когда есть что показать и от этого не станет стыдно.
Читать полностью »
Тысячи вещей, которые в Java стоило бы поправить с первой версии: большое интервью с Сергеем Куксенко из Oracle
2019-08-15 в 12:51, admin, рубрики: java, joker, joker 2019, joker2019, высокая производительность, Компиляторы, Программирование
Сергей Куксенко — перформанс-инженер, видевший Java еще версии 1.0. За это время успел поучаствовать в разработке мобильных, клиентских, серверных приложений и виртуальных машин. Производительностью Java занимается c 2005 года и в данный момент в Oracle работает над улучшением производительности JDK. Один из самых популярных докладчиков на Joker и JPoint.
Этот хабрапост — большое интервью с Сергеем, посвященное следующим темам:
- Культ Производительности;
- Когда и что нужно оптимизировать, изначальный дизайн языка и библиотеки;
- Перспективные направления для дальнейшей оптимизации;
- Как можно поучаствовать в разработке и что можно сломать оптимизациями;
- Компиляторные трюки, размещение регистров;
- Можно ли собрать кошку из фарша;
- Когда тесты работают пять дней подряд и прочая бытовуха;
- Как стать перформанс-инженером;
- Подготовка доклада на следующий Joker.Читать полностью »