SlideShare a Scribd company logo
1 of 32
Download to read offline
Android Marshmallow
будь готов!
Неклюдов Денис
target_sdk = 23
Auto Backup
Лимит в 25 Mb на одно приложение в
шифрованной части Drive
(не затрагивает пользовательскую квоту)
Бэкап осуществляется каждые 24 часа, при
зарядке, когда устройством не пользуются, и
оно подключено к Wi-Fi
Auto Backup
Не сохраняются:
External Storage Files (кроме getExternalFilesDir())
getCacheDir()
getCodeCacheDir()
getNoBackupFilesDir()
Auto Backup
<android:fullBackupContent="@xml/mybackupscheme">
<full-backup-content>
<[exclude, include] domain=
["file" | "database" | "sharedpref"| "external" | "root"] path="string”>
</full-backup-content>
! не бекапить данные аккаунтов, токены в т.ч. GCM
@Override
onRestoreFinished()
Apache Client Deprecation
Если осталась необходимость использовать HttpClient:
android {
useLibrary 'org.apache.http.legacy'
}
Other Deprecations
libcrypto.so и libssl.so из OpenSSL
заменены на BoringSSL
notification.setLatestEventInfo() удален
Вместо него: Notification.Builder
Adoptable storage
Context methods:
getFilesDir()
getCacheDir()
getCodeCacheDir()
getDatabasePath()
getDir()
getNoBackupFilesDir()
getFileStreamPath()
getPackageCodePath()
getPackageResourcePa
th()
ApplicationInfo fields:
dataDir
sourceDir
nativeLibraryDir
publicSourceDir
splitSourceDirs
splitPublicSourceDirs
Five more changes
Android Keystore Changes (упразднениe DSA)
Wi-Fi and Networking Changes (управление соединениями,
мультисоединение всегда)
Camera Service Changes (приоритеты, несколько
приложений для нескольких камер)
Runtime(багфиксы в ART)
Access to Hardware Identifier (нет доступа к макадресам из
сети, новые права доступа)
The cat goes idle
Idle
Doze Mode and App Standby
Doze mode
● Доступ приложению к сети отключен, пока приложение не
получит high-priority GCM-push.
● Система игнорирует Wake lock’и.
● Alarm’ы запланированные в AlarmManager не будут
вызываться, кроме тех, которые будут обновлены с
помощью setAndAllowWhileIdle().
● Система не производит поиска сетей Wi-Fi.
Doze mode
● NetworkPolicyManagerService Пропускает только приложения из
белого списка.
● JobSchedulerService Все текущие задачи отменяются. Новые
откладываются до пробуждения.
● SyncManager Все текущие отменяются, новые откладываются до
пробуждения.
● PowerManagerService Только задачи приложений из белого
списка вызовутся.
Doze mode: step by step
Doze mode: step by step
DeviceIdleController:
ACTIVE - Устройство используется или на зарядке
INACTIVE - Устройство недавно вышло из активного режима
(пользователь выключил экран, выдернул зарядку и т.п.)
...30 минут
IDLE_PENDING - Устройство готовится перейти в режим ожидания
...30 минут
IDLE - Устройство в режиме бездействия
IDLE_MAINTENANCE - Открыто короткое окно, чтобы приложения
выполнили свою работу
Doze mode: exclusions
setAndAllowWhileIdle()- у обработчика
есть 10 секунд, затем уходит в Idle
Остальные алармы - в бездействии, пока
активен Doze Mode
GCM:
Пуш уведомление с высочайшим
приоритетом дает получившему его
приложению недолгий доступ к сети.
Whitelist:
Alarm Manager:
Standby mode
1. Пользователь явно запустил приложение.
2. Приложение имеет процесс, работающий в
данный момент на переднем плане (Activity
или foreground service, или используется
другой activity или foreground service’ом).
3. Приложение создало уведомление, которое
висит в списке уведомлений.
4. Пользователь принудительно добавил
приложение в список исключений
оптимизации в настройках системы.
Permissions
Permissions
SDK < 23
1.Описать все
разрешения в manifest
2.Пользователь
разрешит сразу все
при установке
3.Пользователь может
запретить любое из
разрешений после
установки
SDK >= 23
1.Описать только
PROTECTION_NORMAL
запросы в manifest
2.Пользователь их все
подтвердит при
установке
3.Когда приложению
нужен доступ к
одному или
нескольким
разрешениям из
Permissions
1. ContextCompat.checkSelfPermission
(Context context, String permission)
2. ActivityCompat.requestPermissions();
3. ActivityCompat.OnRequestPermissionsResultCallback
Permissions
Хорошие практики:
• Запрашивать лишь те разрешения, которые
действительно нужны
• Если есть возможность, вместо запроса
воспользоваться внешним Intent
• Запрашивать разрешение, только перед тем, когда оно
понадобится
• Пояснять пользователю, для чего запрашивается
разрешение
Fingerprint
<uses-permission
android:name="android.permission.USE_FINGERPRINT" />
Для использования:
android.hardware.fingerprint.FingerprintManager;
isHardwareDetected();
hasEnrolledFingerprints()
authentificate(...)
Confirm Credential
Для ипользования:
KeyguardManager.isKeyguardSecure()
KeyGenerator.generateKey();
setUserAuthenticationValidityDurationSeconds()
KeyguardManager.createConfirmDeviceCredentialI
ntent()
Text Selection
Для исользования:
startActionMode(Callback,
ActionMode.TYPE_FLOATING)
App Linking
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category
android:name="android.intent.category.DEFAULT" />
<category
android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http"
android:host="www.android.com" />
<data android:scheme="https"
android:host="www.android.com" />
</intent-filter>
App Linking
Положить JSON на свой сайт
(https://www.domain1.com/.well-known/assetlinks.json)
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.example",
"sha256_cert_fingerprints":
["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:9
6:B2:3F:CF:44:E5"]
}
}]
Direct share
Необходимо создать Service, наследник
ChooserTargetService
<service
android:name=".YourChooserTargetService"
android:label="@string/yourLabel»
android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
<intent-filter>
<action
android:name="android.service.chooser.ChooserTargetService" />
</intent-filter>
</service>
Voice Iteraction
Проверить доступность:
activity.isVoiceInteraction()
Взаимодействовать при
помощи VoiceInteractor
Спасибо за внимание!
Денис Неклюдов
plus.google.com/+ДенисНек
nekdenis@gmail.com

More Related Content

Viewers also liked

Лилия Зданевич "Automation testing save time and money"
Лилия Зданевич "Automation testing save time and money"Лилия Зданевич "Automation testing save time and money"
Лилия Зданевич "Automation testing save time and money"
DataArt
 
Visiting unpleasent places
Visiting unpleasent placesVisiting unpleasent places
Visiting unpleasent places
Arpanasa
 
Visiting unpleasent places
Visiting unpleasent placesVisiting unpleasent places
Visiting unpleasent places
Arpanasa
 
Application form
Application formApplication form
Application form
sksknba5015
 
Яна Пролис "Создаем Dream Team"
Яна Пролис "Создаем Dream Team"Яна Пролис "Создаем Dream Team"
Яна Пролис "Создаем Dream Team"
DataArt
 
Арсений Жижелев «Наблюдение за игровым миром Аллодов (Play+Scala+Slick+Postgr...
Арсений Жижелев «Наблюдение за игровым миром Аллодов (Play+Scala+Slick+Postgr...Арсений Жижелев «Наблюдение за игровым миром Аллодов (Play+Scala+Slick+Postgr...
Арсений Жижелев «Наблюдение за игровым миром Аллодов (Play+Scala+Slick+Postgr...
DataArt
 
Stamped Bachelor eng instrumentaion and control
Stamped Bachelor eng instrumentaion and controlStamped Bachelor eng instrumentaion and control
Stamped Bachelor eng instrumentaion and control
k0264209ali
 
" Angular 2.0", Андрей Альперт, DataArt
 " Angular 2.0", Андрей Альперт, DataArt " Angular 2.0", Андрей Альперт, DataArt
" Angular 2.0", Андрей Альперт, DataArt
DataArt
 
Building Pennsylvania's First Detector Network Part 1
Building Pennsylvania's First Detector Network Part 1Building Pennsylvania's First Detector Network Part 1
Building Pennsylvania's First Detector Network Part 1
PlantHealthResourceCenter
 
Thriller powerpoint finished
Thriller powerpoint finishedThriller powerpoint finished
Thriller powerpoint finished
Abbey Cotterill
 
76363027 bo-cau-hoi-sinh-dai-cuong 2
76363027 bo-cau-hoi-sinh-dai-cuong 276363027 bo-cau-hoi-sinh-dai-cuong 2
76363027 bo-cau-hoi-sinh-dai-cuong 2
doanh2801
 

Viewers also liked (17)

Лилия Зданевич "Automation testing save time and money"
Лилия Зданевич "Automation testing save time and money"Лилия Зданевич "Automation testing save time and money"
Лилия Зданевич "Automation testing save time and money"
 
Visiting unpleasent places
Visiting unpleasent placesVisiting unpleasent places
Visiting unpleasent places
 
Sam mendes
Sam mendesSam mendes
Sam mendes
 
Visiting unpleasent places
Visiting unpleasent placesVisiting unpleasent places
Visiting unpleasent places
 
Dc brochure vietv1 (1)
Dc brochure vietv1 (1)Dc brochure vietv1 (1)
Dc brochure vietv1 (1)
 
Application form
Application formApplication form
Application form
 
Menulis Karya Ilmiah
Menulis Karya IlmiahMenulis Karya Ilmiah
Menulis Karya Ilmiah
 
Яна Пролис "Создаем Dream Team"
Яна Пролис "Создаем Dream Team"Яна Пролис "Создаем Dream Team"
Яна Пролис "Создаем Dream Team"
 
Арсений Жижелев «Наблюдение за игровым миром Аллодов (Play+Scala+Slick+Postgr...
Арсений Жижелев «Наблюдение за игровым миром Аллодов (Play+Scala+Slick+Postgr...Арсений Жижелев «Наблюдение за игровым миром Аллодов (Play+Scala+Slick+Postgr...
Арсений Жижелев «Наблюдение за игровым миром Аллодов (Play+Scala+Slick+Postgr...
 
Stamped Bachelor eng instrumentaion and control
Stamped Bachelor eng instrumentaion and controlStamped Bachelor eng instrumentaion and control
Stamped Bachelor eng instrumentaion and control
 
Сергей Зиновьев — Разработка веб-приложений на Rails.
Сергей Зиновьев — Разработка веб-приложений на Rails.Сергей Зиновьев — Разработка веб-приложений на Rails.
Сергей Зиновьев — Разработка веб-приложений на Rails.
 
" Angular 2.0", Андрей Альперт, DataArt
 " Angular 2.0", Андрей Альперт, DataArt " Angular 2.0", Андрей Альперт, DataArt
" Angular 2.0", Андрей Альперт, DataArt
 
Building Pennsylvania's First Detector Network Part 1
Building Pennsylvania's First Detector Network Part 1Building Pennsylvania's First Detector Network Part 1
Building Pennsylvania's First Detector Network Part 1
 
Thriller powerpoint finished
Thriller powerpoint finishedThriller powerpoint finished
Thriller powerpoint finished
 
76363027 bo-cau-hoi-sinh-dai-cuong 2
76363027 bo-cau-hoi-sinh-dai-cuong 276363027 bo-cau-hoi-sinh-dai-cuong 2
76363027 bo-cau-hoi-sinh-dai-cuong 2
 
Иван Гришаев «Саблайм текст – ИДЕ моей мечты
Иван Гришаев «Саблайм текст – ИДЕ моей мечтыИван Гришаев «Саблайм текст – ИДЕ моей мечты
Иван Гришаев «Саблайм текст – ИДЕ моей мечты
 
Visiting unpleasent places
Visiting unpleasent placesVisiting unpleasent places
Visiting unpleasent places
 

Similar to «Android Marshmallow — будь готов». Денис Неклюдов

Диагностика проблем в промышленной среде с помощью Intelli Trace и Visual Stu...
Диагностика проблем в промышленной среде с помощью Intelli Trace и Visual Stu...Диагностика проблем в промышленной среде с помощью Intelli Trace и Visual Stu...
Диагностика проблем в промышленной среде с помощью Intelli Trace и Visual Stu...
Александр Шамрай
 
Белов наиболее часто уязвимые места в веб приложениях
Белов наиболее часто уязвимые места в веб приложенияхБелов наиболее часто уязвимые места в веб приложениях
Белов наиболее часто уязвимые места в веб приложениях
qasib
 
Как восстановить удаленные объекты Active Directory с помощью программы NetWr...
Как восстановить удаленные объекты Active Directory с помощью программы NetWr...Как восстановить удаленные объекты Active Directory с помощью программы NetWr...
Как восстановить удаленные объекты Active Directory с помощью программы NetWr...
Netwrix Россия/СНГ
 
2013 07-22 тз-пожилая-система
2013 07-22 тз-пожилая-система2013 07-22 тз-пожилая-система
2013 07-22 тз-пожилая-система
Konstantin Belkin
 
Техподдержка и частные облака в SoftClouds.Ru. И.Гальцев.
Техподдержка и частные облака в SoftClouds.Ru. И.Гальцев. Техподдержка и частные облака в SoftClouds.Ru. И.Гальцев.
Техподдержка и частные облака в SoftClouds.Ru. И.Гальцев.
Clouds NN
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
DrupalCamp MSK
 
MIPT Course - DAC and MAC
MIPT Course - DAC and MACMIPT Course - DAC and MAC
MIPT Course - DAC and MAC
Alexey Vasyukov
 
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf Conference
 
Михаил Галушко - Разработка WinRT приложений для Windows 8: реальный опыт
Михаил Галушко -  Разработка WinRT приложений для Windows 8: реальный опытМихаил Галушко -  Разработка WinRT приложений для Windows 8: реальный опыт
Михаил Галушко - Разработка WinRT приложений для Windows 8: реальный опыт
UA Mobile
 

Similar to «Android Marshmallow — будь готов». Денис Неклюдов (20)

Android Marshmallow (13.11.2015)
Android Marshmallow (13.11.2015)Android Marshmallow (13.11.2015)
Android Marshmallow (13.11.2015)
 
Игорь Цеглевский: Взгляд практика на Android 6.0 Marshmallow
Игорь Цеглевский: Взгляд практика на Android 6.0 Marshmallow Игорь Цеглевский: Взгляд практика на Android 6.0 Marshmallow
Игорь Цеглевский: Взгляд практика на Android 6.0 Marshmallow
 
Диагностика проблем в промышленной среде с помощью Intelli Trace и Visual Stu...
Диагностика проблем в промышленной среде с помощью Intelli Trace и Visual Stu...Диагностика проблем в промышленной среде с помощью Intelli Trace и Visual Stu...
Диагностика проблем в промышленной среде с помощью Intelli Trace и Visual Stu...
 
Денис Неклюдов. Держи свое приложение на волне новинок. РИФ-Воронеж 2016
Денис Неклюдов. Держи свое приложение на волне новинок. РИФ-Воронеж 2016Денис Неклюдов. Держи свое приложение на волне новинок. РИФ-Воронеж 2016
Денис Неклюдов. Держи свое приложение на волне новинок. РИФ-Воронеж 2016
 
Белов наиболее часто уязвимые места в веб приложениях
Белов наиболее часто уязвимые места в веб приложенияхБелов наиболее часто уязвимые места в веб приложениях
Белов наиболее часто уязвимые места в веб приложениях
 
Как восстановить удаленные объекты Active Directory с помощью программы NetWr...
Как восстановить удаленные объекты Active Directory с помощью программы NetWr...Как восстановить удаленные объекты Active Directory с помощью программы NetWr...
Как восстановить удаленные объекты Active Directory с помощью программы NetWr...
 
2013 07-22 тз-пожилая-система
2013 07-22 тз-пожилая-система2013 07-22 тз-пожилая-система
2013 07-22 тз-пожилая-система
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ci
 
Обзор Linux Control Groups
Обзор Linux Control GroupsОбзор Linux Control Groups
Обзор Linux Control Groups
 
Техподдержка и частные облака в SoftClouds.Ru. И.Гальцев.
Техподдержка и частные облака в SoftClouds.Ru. И.Гальцев. Техподдержка и частные облака в SoftClouds.Ru. И.Гальцев.
Техподдержка и частные облака в SoftClouds.Ru. И.Гальцев.
 
Deep Dive in Magento DI
Deep Dive in Magento DIDeep Dive in Magento DI
Deep Dive in Magento DI
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
 
Windbg: когда у нас не воспроизводится. Александр Головач ➠ CoreHard Autumn ...
Windbg: когда у нас не воспроизводится. Александр Головач ➠  CoreHard Autumn ...Windbg: когда у нас не воспроизводится. Александр Головач ➠  CoreHard Autumn ...
Windbg: когда у нас не воспроизводится. Александр Головач ➠ CoreHard Autumn ...
 
MIPT Course - DAC and MAC
MIPT Course - DAC and MACMIPT Course - DAC and MAC
MIPT Course - DAC and MAC
 
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
 
Positive Hack Days. Гуркин. Нулевой день для SCADA (0-day)
Positive Hack Days. Гуркин. Нулевой день для SCADA (0-day)Positive Hack Days. Гуркин. Нулевой день для SCADA (0-day)
Positive Hack Days. Гуркин. Нулевой день для SCADA (0-day)
 
Yulia tsuba
Yulia tsubaYulia tsuba
Yulia tsuba
 
Drupal Camp Kyiv 2013. Удобная разработка drupal проекта. Полезные модули.
Drupal Camp Kyiv 2013. Удобная разработка drupal проекта. Полезные модули.Drupal Camp Kyiv 2013. Удобная разработка drupal проекта. Полезные модули.
Drupal Camp Kyiv 2013. Удобная разработка drupal проекта. Полезные модули.
 
Михаил Галушко - Разработка WinRT приложений для Windows 8: реальный опыт
Михаил Галушко -  Разработка WinRT приложений для Windows 8: реальный опытМихаил Галушко -  Разработка WinRT приложений для Windows 8: реальный опыт
Михаил Галушко - Разработка WinRT приложений для Windows 8: реальный опыт
 
Теория и практика защиты Active Directory как ключевого ИТ-сервиса предприятия
Теория и практика защиты Active Directory как ключевого ИТ-сервиса предприятияТеория и практика защиты Active Directory как ключевого ИТ-сервиса предприятия
Теория и практика защиты Active Directory как ключевого ИТ-сервиса предприятия
 

More from DataArt

Digital Marketing from inside
Digital Marketing from insideDigital Marketing from inside
Digital Marketing from inside
DataArt
 
A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"
DataArt
 
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
DataArt
 

More from DataArt (20)

DataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human ApproachDataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human Approach
 
DataArt Healthcare & Life Sciences
DataArt Healthcare & Life SciencesDataArt Healthcare & Life Sciences
DataArt Healthcare & Life Sciences
 
DataArt Financial Services and Capital Markets
DataArt Financial Services and Capital MarketsDataArt Financial Services and Capital Markets
DataArt Financial Services and Capital Markets
 
About DataArt HR Partners
About DataArt HR PartnersAbout DataArt HR Partners
About DataArt HR Partners
 
Event management в IT
Event management в ITEvent management в IT
Event management в IT
 
Digital Marketing from inside
Digital Marketing from insideDigital Marketing from inside
Digital Marketing from inside
 
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
 
DevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проектDevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проект
 
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArtIT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
 
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
 «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han... «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
 
Communication in QA's life
Communication in QA's lifeCommunication in QA's life
Communication in QA's life
 
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьмиНельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
 
Знакомьтесь, DevOps
Знакомьтесь, DevOpsЗнакомьтесь, DevOps
Знакомьтесь, DevOps
 
DevOps in real life
DevOps in real lifeDevOps in real life
DevOps in real life
 
Codeless: автоматизация тестирования
Codeless: автоматизация тестированияCodeless: автоматизация тестирования
Codeless: автоматизация тестирования
 
Selenoid
SelenoidSelenoid
Selenoid
 
Selenide
SelenideSelenide
Selenide
 
A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"
 
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
 
IT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNGIT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNG
 

«Android Marshmallow — будь готов». Денис Неклюдов