Как стать автором
Обновить
0
0

Пользователь

Отправить сообщение

Советы для профессионального использования RecyclerView. Часть 1

Время на прочтение3 мин
Количество просмотров11K

Советы для профессионального использования RecyclerView. Часть 1


Я решил написать эту статью, т.к. заметил, что многие разработчики допускают ошибки при использовании RecyclerView, даже несмотря на то, что Google уже довольно давно его выпустила.


Описанные здесь пункты упоминались в различных докладах и материалах на Google Devs.


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

Читать дальше →
Всего голосов 4: ↑4 и ↓0+4
Комментарии4

Лицензия на вождение болида, или почему приложения должны быть Single-Activity

Время на прочтение14 мин
Количество просмотров60K

image


На AppsConf 2018, которая прошла 8-9 октября, я выступил с докладом про создание андроид-приложений целиком в одном Activity. Хотя тема известная, существует много предубеждений относительно такого выбора — переполненный зал и количество вопросов после выступления тому подтверждение. Чтобы не ждать видеозаписи, я решил сделать статью с расшифровкой выступления.



О чем я расскажу


  1. Почему и зачем надо переходить на Single-Activity
  2. Универсальный подход для решения задач, которые вы привыкли решать на нескольких Activity
  3. Примеры стандартных бизнес задач
  4. Узкие места, где обычно подпирают код, а не делают все честно
Читать дальше →
Всего голосов 43: ↑40 и ↓3+37
Комментарии81

Android LiveData на Kotlin с использованием Retrofit и coroutines

Время на прочтение6 мин
Количество просмотров21K
Статья рассказывает об использовании Android Components ViewModel, LifeCycle и LiveData. Эти компоненты позволяют не заботиться о жизненном цикле Activity.

Так же рассмотрен пример применения современного Coroutines в связке с репозитарием на Retrofit

fun main(args: Array<String>): Unit = runBlocking {
    // Wait (suspend) for Result
    val result: Result<User> = api.getUser("username").awaitResult()
    // Check result type
    when (result) {
        //Successful HTTP result
        is Result.Ok -> saveToDb(result.value)
        // Any HTTP error
        is Result.Error -> log("HTTP error with code ${result.error.code()}", result.error)
        // Exception while request invocation
        is Result.Exception -> log("Something broken", e)
    }
}
Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии3

Как работает Android, часть 4

Время на прочтение26 мин
Количество просмотров94K


Всем привет! Мы нашли время продолжить серию статей про внутреннее устройство Android. В этой статье я расскажу о процессе загрузки Android, о содержимом файловой системы, о том, как хранятся данные пользователя и приложений, о root-доступе, о переносимости сборок Android и о проблеме фрагментации.

Читать дальше →
Всего голосов 51: ↑51 и ↓0+51
Комментарии25

Советы для профессионального использования RecyclerView. Часть 2

Время на прочтение4 мин
Количество просмотров8.2K

Советы для профессионального использования RecyclerView. Часть 2


Продолжая предыдущую статью, в этой я расскажу про ItemDecoration и ItemAnimator и постараюсь объяснить принцип их работы в RecyclerView на примере простого приложения, которое доступно на Github.

Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии1

Робот-пылесос: 10 основных критериев выбора

Время на прочтение6 мин
Количество просмотров18K
Несколько десятилетий назад появление на рынке бытовой техники моющих пылесосов считалось настоящим прорывом. Они существенно облегчали уборку, завоевав тем самым небывалую популярность. Ситуация изменилась, когда на смену им пришли роботы-пылесосы. Этот вид интеллектуальной бытовой техники изначально считался дорогой игрушкой, от которой не слишком много пользы. Осознание того, что робот-пылесос – функциональная вещь, которая превращает процесс уборки в сказку, пришло после того, как ассортимент этой техники значительно расширился, и на рынке бытовой техники появились модели разных производителей, ценовых категорий и функциональности.

Сегодня выбрать робот-пылесос среди большого количества вариантов весьма непросто. Вот основные критерии, которые следует учитывать при покупке интеллектуального оборудования для дома.
Читать дальше →
Всего голосов 10: ↑2 и ↓8-6
Комментарии6

«Hello World!» на C массивом int main[]

Время на прочтение5 мин
Количество просмотров46K
Я хотел бы рассказать о том, как я писал реализацию «Hello, World!» на C. Для подогрева сразу покажу код. Кого интересует как до этого доходил я, добро пожаловать под кат.

#include <stdio.h>
const void *ptrprintf = printf;
#pragma section(".exre", execute, read)
__declspec(allocate(".exre")) int main[] =
{
    0x646C6890, 0x20680021, 0x68726F57,
    0x2C6F6C6C, 0x48000068, 0x24448D65,
    0x15FF5002, &ptrprintf, 0xC314C483
};

Реализация
Всего голосов 114: ↑108 и ↓6+102
Комментарии143

Gradle: управляя зависимостями

Время на прочтение10 мин
Количество просмотров132K
Управление зависимостями – одна из наиболее важных функций в арсенале систем сборки. С приходом Gradle в качестве основной системы сборки Android-проектов в части управления зависимостями произошёл существенный сдвиг, закончилась эпоха ручного копирования JAR-файлов и долгих танцев с бубном вокруг сбоящих конфигураций проекта.



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

Внимание много текста и изображений
Всего голосов 22: ↑20 и ↓2+18
Комментарии60

9 секретов онлайн-платежей. Часть 1: настройка 3-D Secure

Время на прочтение7 мин
Количество просмотров63K
imageРоссийский рынок e-commerce живет в условиях кризиса, сейчас то время, когда одной из ключевых задач для успешного «выживания» является настройка всех «винтиков» механизма вашего сайта. Один из таких «винтиков» — это сервис приема онлайн-платежей на сайте. При правильном подходе он может стать фактором успеха, а при неверном использовании — привести к серьезным проблемам. В данном выпуске, первом из серии «9 секретов онлайн-платежей», содержащей восьмилетний опыт работы команды PayOnline, мы поделимся правилами настройки протокола 3-D Secure для успешной обработки платежей на вашем сайте.
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии18

Android. Автозапуск приложения при загрузке: теория и практика

Время на прочтение7 мин
Количество просмотров97K
Простой поиск на stackoverflow.com показывает, что тема получения сообщения ACTION_BOOT_COMPLETED остается актуальной и по сей день. Как видно, многие новички сталкиваются с проблемой: они не получают в своих приложениях сообщение ACTION_BOOT_COMPLETED. В этой статья я попробую резюмировать данные из официальной документации, опыт многих разработчиков из stackoverflow.com, а также свой опыт. Итак, как же победить этого «коварного врага» под названием «ACTION_BOOT_COMPLETED»?
Читать дальше →
Всего голосов 28: ↑26 и ↓2+24
Комментарии7

Ищите прикольный недорогой подарок мужчине на новый год 2016? Идеи подарков за 10-20$

Время на прочтение3 мин
Количество просмотров36K
До нового года ещё больше месяца, но сани, как говорится, надо готовить летом, особенно, если хочется успеть дождаться посылок из Китая. Поэтому сегодня мы подготовили 10 интересных мелочей, которым будет рад почти любой гик. Впрочем, я судил по себе, так что это можно назвать моим личным Wish List (списком пожеланий). Если вам этот список близок, то рекомендую поделиться им в социальной сети и возможно на этот новый год вы получите подарки интереснее, чем новые чёрные носки.

Итак, поехали:
1. Умный браслет за умные деньги — Xiaomi Mi Band за 11.99$ (4151 человек лайкнули)

Читать дальше →
Всего голосов 22: ↑14 и ↓8+6
Комментарии30

Работа iOS App в фоновом режиме

Время на прочтение4 мин
Количество просмотров45K
Стояла задача, чтобы программа отправляла через web socket текущие координаты по заданному пользователем интервалу. К тому же, программа должна работать в фоне и если пользователь или iOS по какой то причине её выгрузит из памяти, то желательно чтобы она перезапустилась и продолжила работу в фоне.
Поставленную задачу надо решить только средствами iOS без изменения серверной части (никаких Push Notifications).

Отправлять координаты по таймеру когда программа свернута в фон не составляет проблемы, для этого можно использовать background location mode для получения координат и long-running tasks для таймеров.

Но так как в iOS нет такой прелести как Android Background Services, то если вручную завершить программу, код перестает выполняться. Потому основная сложность заключается в том, как максимально быстро запустить программу в фоне, чтобы она продолжила выполнять свою задачу дальше, если её по каким то причинам выгрузила из памяти iOS, или если пользователь перезагрузил устройство, или если он вручную «убил» программу.

Теперь о том, что помогло решить данную задачу в приемлемом варианте:
Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии28

Подпольный рынок кардеров. Перевод книги «KingPIN». Глава 17. «Pizza and Plastic»

Время на прочтение8 мин
Количество просмотров20K
Кевин Поулсен, редактор журнала WIRED, а в детстве blackhat хакер Dark Dante, написал книгу про «одного своего знакомого».

В книге показывается путь от подростка-гика (но при этом качка), до матерого киберпахана, а также некоторые методы работы спецслужб по поимке хакеров и кардеров.

Квест по переводу книги начался летом в ИТ-шном лагере для старшеклассников — «Шкворень: школьники переводят книгу про хакеров», затем к переводу подключились и Хабраюзеры, и даже немного редакция.

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

Глава 17. «Пицца и Пластик»


(за перевод спасибо Ashot Ogoltsov)
На верхнем этаже небоскреба на Post Street, на полу из ламината, стоял компьютер Макса — тихий и холодный. Это была маленькая квартира, размером чуть больше тюремной камеры. Эту квартиру нашел ему Крис, и она соответствовала всем его запросам: маленькая площадь, огромное количество соседских Wi-fi сетей. Квартира была декорирована под светлое дерево, в ней стоял большой холодильник и была кровать-раскладушка, которая убиралась в стену.

Это была чистенькая квартирка площадью в 27 квадратных метров без каких-либо излишеств, где Макс скрывался после того как оставил свой пентхаус. Он получил неплохой навар с операции с Ситибанком и не занимался взломами уже несколько месяцев. Крису оставалось лишь приготовить поддельные документы для полугодовой аренды квартиры и заплатить депозит в размере 500$.
Всего голосов 21: ↑19 и ↓2+17
Комментарии0

Gradle: 5 полезностей для разработчика

Время на прочтение6 мин
Количество просмотров44K
Привет, Хабр! Настало время, когда можно сказать, что «new build system» Gradle является стандартом отрасли Android-разработки. Инструмент сделан настолько просто и удобно, что большинство разработчиков не испытает трудностей, даже не зная, как он устроен, и какие дополнительные возможности в нём есть — возникающие проблемы легко решаются с помощью 5 минут на StackOverflow, путем копирования «магического кода» в конфигурационные файлы. Возможно, в том числе из-за этого не все разработчики изучают Gradle детально и не знают о многих его полезных возможностях, которые существенно облегчают жизнь.


Сегодня рассмотрим пять таких полезностей
Всего голосов 29: ↑29 и ↓0+29
Комментарии17

Книга «Изучаем C++ через программирование игр»

Время на прочтение5 мин
Количество просмотров111K
image
Если вы хотите научиться программировать первоклассные игры, вам просто необходимо изучить язык С++. Эта книга поможет вам освоить разработку игр с самых азов, независимо от того, есть ли у вас опыт программирования. Гораздо интересней учиться, когда обучение превращается в игру. Каждая глава книги описывает самостоятельный игровой проект. В заключительной главе вам предстоит написать сложную игру, которая объединяет все приемы программирования, рас-смотренные в предыдущих главах. Книга идеально подойдет для начинающего программиста, планирующего не только как следует освоить непростой язык С++, но и поупражняться в программировании игр. Цель данной книги — познакомить вас с языком С++ в контексте программирования игр. Хотя невозможно представить себе такую книгу, которая сделала бы вас мастером в двух столь объемных темах, как программирование игр и язык C++, это издание пригодится вам в качестве вводного курса.
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии20

Android 6.0: Doze Mode, App Standby, Runtime Permissions. Всё, что необходимо знать каждому разработчику

Время на прочтение5 мин
Количество просмотров65K

В этой статье мы рассмотрим три самых важных изменения в новом Android, которые не могут быть проигнорированы ни одним разработчиком, который поставил у себя в проекте targetSdk = 23 и выше.
Doze Mode — режим «отключки», в который переходят все устройства на Marshmallow после некоторого времени обездвижения без зарядки.

App Standby — автоматическое лишение приложений доступа к ресурсам устройства, всех которые давно не открывал пользователь.

Runtime Permissions — новая модель запроса разрешений. Теперь мы, как разработчики, каждый раз обращаясь, например, к микрофону устройства, должны проверять, есть ли у нашего приложения разрешение на доступ к нему.
Читать дальше →
Всего голосов 27: ↑26 и ↓1+25
Комментарии17

Marshmallow. Это должен сделать каждый. Добавляем поддержку SDK 23 в наши приложения

Время на прочтение6 мин
Количество просмотров35K
Мне повезло стать Google Developer Expert Android в России, и поэтому я вдвойне переживаю, что не все из вас подготовились к релизу заранее. Сейчас мы с вами постараемся запрыгнуть на уплывающий пароход с зефирками.

Вы можете не читать, а просто посмотреть мой доклад на прошедшем DroidCon.

Но специально для тех, кто любит читать хабр больше чем смотреть youtube — добро пожаловать под кат. Там мы пройдемся по чеклисту действий, которые каждый обязательно должен сделать в своем приложении, а потом посмотрим на новые возможности для разработчиков в sdk 23.
Читать дальше →
Всего голосов 25: ↑23 и ↓2+21
Комментарии3

Android Notifications. Оповещения через Status Bar

Время на прочтение8 мин
Количество просмотров76K
Добрый день, хабровчане. Давно занимаюсь разработкой под Android и хотелось бы рассказать сообществу о правильном подходе к созданию уведомлений.

image

На хабре уже есть статья по уведомлениям в статус баре для андроид . В ней рассматриваются основы отображения стандартного и конфигурируемого layout в статус баре.

Ниже, помимо описанного ранее, мы рассмотрим добавление прогрессбара, обработку события по нажатию на уведомлений, различные варианты состояний уведомлений. Рассмотрим добавленный на днях в Compatibility library Notification.Builder. А также поговорим о рекомендациям по UI (design guidlines), которые гугл рекомендует соблюдать при создании уведомлений.
Читать дальше →
Всего голосов 28: ↑25 и ↓3+22
Комментарии25

Анимация переходов между двумя фрагментами

Время на прочтение4 мин
Количество просмотров27K
image Одним из краеугольных камней в Material design являются осмысленные движения между экранами. Lollipop предоставляет поддержку этих анимаций в форме фреймворка переходов между Activity и Fragment. Поскольку статей по данной теме не так много, я решил написать свою собственную!

Наш конечный продукт будет достаточно прост. Мы будем делать приложение-галерею с котиками. При нажатии на изображение будет открываться экран с подробностями. Благодаря фреймворку переход из сетки изображений в окно с подробностями будет сопровождаться анимацией.

Если вы желаете увидеть, что получилось — готовое приложение находится на GitHub.
Читать дальше →
Всего голосов 27: ↑23 и ↓4+19
Комментарии10

Установка неподписанных программ на устройства с iOS 9 без Jailbreak

Время на прочтение3 мин
Количество просмотров118K
Дорого дня, уважаемые хабражители!

Сегодня я расскажу вам о том, как можно установить неподписанное (или плохо подписанное) приложение на устройство с iOS 9. Да, без Jailbreak. Да, бесплатно. Нужен лишь компьютер с OS X и Apple ID. Как такое возможно? Читаем под катом.



Осторожно! Много картинок!
Читать дальше →
Всего голосов 40: ↑33 и ↓7+26
Комментарии33

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность