Салют, на связи команда SberDevices! Объявляем первый в году One Day Offer. На этот раз мы приглашаем автоматизаторов тестирования уровня Middle/Senior, которые специализируются на UI-тестах для девайсов на Android. Также ищем QA-инженеров по тестированию backend’а виртуальных ассистентов Салют. Работа ответственная и масштабная — вас ждут разнообразный парк устройств и интересные задачи под каждую платформу. К тому же вы сможете выбрать направление, которое вам наиболее интересно.
Как не свихнуться с кучей модулей в проекте
На данный момент я работаю с весьма ветвистыми проектами (один из них состоит из почти 120 градл модулей) и уже достаточно давно разные факторы подталкивали меня написать статью о том, как я организую свои проекты: стажеры и коллеги, чтение различных статей и книг. Понятное дело, что не существует серебряной пули, но я надеюсь, что эта статья поможет кому-то в понимании, как можно организовывать проекты. Добро пожаловать в комментарии для обмена опытом :)
Современный способ организации зависимостей в Android. Version catalog и Gradle convention plugin
Я — Денис, Middle Android-разработчик в «Лайв Тайпинге». В этой статье я расскажу о современном подходе организации зависимостей в Android. Вы узнаете как использовать version catalog и convention plugin в вашем проекте.
«Разбор полетов» — episode 4 — Spring-аем глаголы
В этом выпуске:
- Спасибо, что живой — www.infoq.com/news/2011/12/spring31
Ciklum Java Saturday (15.10) — неформальная мини-конференция Java разработчиков В Минске
15 октября мы, совместно с компанией Exigen Services, приглашаем разработчиков в наш минский офис на Ciklum Saturday, посвященный разработке на Java . Этот Ciklum Субботник, как и предыдущие, пройдет в формате неформальной мини-конференции.
Обновление IntelliJ IDEA 11.1
Вчера на сайте JetBrains стала доступна для скачивания новая версия среды разработки на Java – IntelliJ IDEA 11.1.
Как всегда IntelliJ IDEA доступна в двух версиях: Ultimate – полная платная версия, а также Community Edition – бесплатная Open-source версия. Владельцы лицензии IntelliJ IDEA 11 Ultimate имеют возможность бесплатного обновления до 11.1.
Попробуем ознакомиться с тем, что нас ждет в новой версии продукта.
Пишем простейший REST web-сервис на Scala
В этом примере мы будем вычислять «хеш» пароля.
Как запускать DBDeploy в Gradle
В данной заметке я покажу, как запускать DBDeploy из скрипта Gradle.
О чём это вообще?
Возможно, вы уже слышали о версионированной миграции структуры баз данных. Об этом писали на хабре. DBDeploy — один из самых простых и известных инструментов, позволяющий легко установить все последние изменения в базе данных на любом инстансе и любой девелоперской машине. А Gradle — модный ныне инструмент для сборки проекта (как Ant и Maven, только лучше). О нём тоже уже писали.
И в чём вопрос?
Вопрос в том, как запускать DBDeploy из скрипта Gradle? У DBDeploy есть таски для Ant и плагин для Maven, но пока ещё нет плагина для DBdeploy (точнее, он в зачаточном состоянии). Немного потыркавшись, я пришёл к выводу, что самый простой способ — это использовать тот самый Ant таск DBDeploy из скрипта Gradle (здесь описано, как из gradle-скрипта использовать любые Ant-таски). Рассмотрим пример.
Подробно о задачах Gradle
Перевод второй главы свободно распространяемой книги Building and Testing with Gradle
Задача (task) является основным компонентом процесса сборки в файле билда Gradle. Задачи представляют собой именованные наборы инструкций билда, которые Gradle запускает выполняя сборку приложения. При сравнении с другими билд-системами, задачи могут показаться знакомой абстракцией. Однако Gradle предоставляет более развитую модель, в отличие от той, которая вам уже может быть знакома. По сравнению с традиционными возможностями объявления операций билда, связанных зависимостями, задачи Gradle являются полнофункциональными объектами, которыми вы при желании можете управлять программно.
Рассмотрим какими способами можно определить задачу, два ключевых подхода к определению задач и программный интерфейс, который мы можем использовать для гибкой настройки.
Вышел Upsource 2.0 с IDE-плагином, анализом Java-кода в Gradle-проектах, навигацией по JavaScript-коду и многим другим
Неделю назад мы выпустили новую версию Upsource — инструмента для code review и навигации по репозиториям.
За полгода с момента первого релиза мы успели значительно расширить функциональность, и теперь можем поделиться результатом нашей работы.
Создание нативных Android-приложений с использованием компилятора Intel C++ Compiler в Android Studio 1.0.1
Android Studio в качестве системы сборки использует Gradle. На момент написания статьи Gradle в процессе сборки вызывала систему NDK. В Android NDK r10 и более поздней версии после инсталляции Intel INDE компилятор Intel C++ Compiler for Android (ICC) не является более используемым по умолчанию компилятором в системе сборки NDK.
Android разработка — Gradle JarJar plugin
А именно: при использовании библиотеки GSON для сериализации/десериализации в/из JSON на некоторых устройствах от HTC в рантайме мы получали креш. Причина такого поведения в том, что некоторые устройства от HTC имеют в своей прошивке свою версию GSON, которая более старая чем та которую использовали мы в своих проектах. А андроидовский java class loader при загрузке класса в память предпочитает «системную» версию, вместо версии в проекте.
Кроме того на некоторых устройствах существует аналогичная проблема с OkHttp — тоже довольно популярной библиотекой в мире андроид разработки.
Для решения проблемы необходимо переупаковать GSON (или любую другую библиотеку) с помощью утилиты JarJar. После переупаковки артефакт будет иметь новую структуру пакетов, которую необходимо использовать в директивах импорта в своем проекте. Для этого нужно подключить переупакованный jar к своему проекту вместо исходного.
Нам захотелось автоматизировать эту задачу и в итоге появился Gradle JarJar Plugin, доступный в Maven Central. Плагин позволяет указать jar-библиотеки и правила для переупаковки их с помощью JarJar.
Spring без XML. Часть 1
На данный момент тут уже довольно много гайдов по такой связке, но они на мой взгляд во-первых немного устаревшие, во вторых — я считаю что должен быть гайд как сделать что-то осязаемое но простое, чтобы показать что и такое возможно.
Итак, если вам хочется попробовать Spring MVC с сохранением в базе и 0(нулем) файлов xml-конфигураций, прошу под кат!
1. Подготовка к запуску
1.1 IDE
1.2 Структура папок
1.3 Gradle & Git
1.3.1 Для остальных
1.4 База данных
2. Начинаем кодить
2.1 Создание проекта
2.2 Добавляем первый код
2.3 Контент
3. Добавляем работу с БД
3.1 Сущность «User»
3.2 Репозиторий UsersRepository
3.3 Добавление связи между юзером и Spring Security
4. К чему мы пришли
4.1 Для желающих запустить готовый проект
Конечно хотелось бы сразу запустить приложение, но сначала немного подготовимся.
1. Подготовка к запуску
1.1 IDE
Вся разработка будет вестись на Intellij IDEA, но не думаю что реализация в другой IDE будет сильно сложнее.
Spring без XML. Часть 2
1. Введение
1.1 Подгружаем проект
1.2 Что мы будем делать в этой части?
2. Фиксим распределение ролей между пользователями
2.1 Работа с базой
2.2 Пишем код
3. Создаем контроллер UsersController
3.1 Реализуем создание нового пользователя
3.2 Добавляем работу с конкретным пользователем
4. Для желающих запустить готовый проект
5 Заключение
1. Введение
1.1 Подгружаем проект
Если вы хотите с этой части начать, либо не осталось проекта сделанного в предыдущей части, можете скачать его с github.
Схема простая:
- Заходите из консоли в папку с проектами IDEA
- git clone github.com/MaxPovver/ForHabrahabr.git
- cd ForHabrahabr/
- git checkout withauth
- Готово, теперь можете грузить проект в студию так же как описано в первой части.
1.2 Что мы будем делать в этой части?
В этой части мы рассмотрим как хранятся отношения многие-ко-многим на уровне объектов сущностей;
доделаем распределения прав пользователям;
сделаем простейший REST-controller;
сделаем регистрацию новых пользователей (только для админа);
и все это без XML.
Как заставить дженкинс сделать вашу жизнь проще и стать счастливым
При публикации под аккаунтом своей компании или под аккаунтом заказчика приходится иметь дело с большим количеством профилей и сертификатов, ключей, свойств и настроек. Не всегда удобно заменять конкретный ключ на устройстве. Поэтому в нашей компании мы придумали решение, автоматизирующее этот процесс. Автоматизация распространения артефактов на всех устройствах, используемых для сборки, и будет описана в этой статье.
Итак, эта статья о том, как реализовать копирование сертификатов и профилей для iOS сборок и свойств, и ключей для Android сборок на все слейвы дженкинса в рамках Continuous Integration. Такая автоматизация экономит время и помогает избежать ошибок. Статья будет интересна разработчикам мобильных приложений и тем, кто администрирует Jenkins.
Поехали!
Vim по полной: Деплой
Оглавление
- Введение (vim_lib)
- Менеджер плагинов без фатальных недостатков (vim_lib, vim_plugmanager)
- Уровень проекта и файловая система (vim_prj, nerdtree)
- Snippets и шаблоны файлов (UltiSnips, vim_template)
- Компиляция и выполнение чего угодно (vim-quickrun)
- Работа с Git (vim_git)
- Деплой (vim_deploy)
- Тестирование с помощью xUnit (vim_unittest)
- Библиотека, на которой все держится (vim_lib)
- Другие полезные плагины
Мне нравится, когда клиент может сразу увидеть результаты моих трудов. Я могу корректировать развитие проекта согласно желаниям заказчика, что сильно спасает от недопонимания. Думаю и клиенты не против быть в курсе, куда уходит бюджет и на каком этапе их проект. Добиться этого достаточно просто, благо есть даже целая методология, называемая «Непрерывной интерграцией», позволяющая в кратчайшие сроки деплоить мелкие изменения, но как сделать, чтобы это было достаточно удобно для программиста? Ведь никому не хочется писать код, а после переключаться в контекст системы деплоя или даже использовать ssh соединение чтобы развернуть мелкие изменения на продакшене (или на dev сервере).
Именно нежелание часто переключать внимание между редактором и системой деплоя побудило меня реализовать плагин, о котором я вам хочу рассказать.
Микросервисная архитектура на современном стеке Java-технологий
Gradle 5.0 — что нового
В процессе разработки CUBA мы применяли все три основных инструмента сборки — начали с Ant, потом перешли на Maven на короткое время, а сейчас используем Gradle и, похоже, что в ближайшее время останемся с ним.
Не так давно вышел Gradle 5.0. В этой версии появилось большое количество новых возможностей, которые помогут разработчикам писать более сложные сценарии и собирать свои проекты ещё быстрее и безболезненнее.
Android: создание динамических Product Flavors и Signing Configs
При работе над Android-проектом, представляющий собой платформу для создания приложений для просмотра видео-контента, возникла необходимость динамического конфигурирования product flavors с выносом информации о signing configs во внешний файл. Подробности под катом.