Как стать автором
Обновить
13
0
Юрий Кучанов @kuchanov

Разработчик под Android

Все библиотеки имеют фатальные недостатки, или Как мы изобретали Retrofit-подобный велосипед для JSON-RPC протокола

Время на прочтение 23 мин
Количество просмотров 2.3K
Блог компании Garage Eight Программирование *Разработка мобильных приложений *Разработка под Android *Kotlin *
Туториал

Привет, Хабр! Меня зовут Юра Кучанов, работаю Android разработчиком в Garage Eight и сегодня хочу рассказать о том, как мы делали Retrofit-подобную библиотеку для JSON-RPC протокола. Началось всё с того, что нам потребовалось для общения сервера и Android приложения использовать протокол JSON-RPC. Что значит “потребовалось”? Если кратко – бэкендеры предложили, а сильных аргументов против, в сущности, не нашлось =) Возможно, тут сработала, например, вот эта статья с хабра про выбор между REST и JSON-RPC. В итоге я пошёл искать библиотеки в сети и… И обнаружил, что готовые решения не подходят (так как там, конечно же, есть хотя бы один фатальный недостаток). В итоге сделал свою библиотеку в стиле Retrofit. Ниже расскажу, почему не подошли готовые решения, как реализовал своё через рефлексию и как копался в исходниках Retrofit и OkHttp для реализации нужного нам функционала.

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

Интеграция оплаты Юкасса в telegramm для самозанятых

Время на прочтение 4 мин
Количество просмотров 7.6K
Платежные системы *Python *Управление e-commerce *
Туториал

Привет тем кто хочет опробовать себя в качестве бизнесмена! Недавно в голову пришла идея, получить некоторый опыт предпринимательства. В качестве продукта выступает доступ к некоторой цифровой услуге, а контроль за оплатой этой услуги ложиться на плечи телеграмм бота. В ходе поисков системы оплаты была найдена Юкасса, одна из немногих систем (если вообще не единственная), которая работает с самозанятыми.
На сайте подробно описана интеграция оплаты в telegramm бота. Однако на этапе подписания документов выясняется что интеграция недоступна для самозанятых.

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

Возвращение веба 90-х годов

Время на прочтение 5 мин
Количество просмотров 41K
Блог компании RUVDS.com Разработка веб-сайтов *История IT
Перевод
В масштабных культурных концепциях, в таких, как музыка или мода, можно наблюдать явления цикличности. Я почти уверен в том, что когда-нибудь вернётся гранж. Тогда записи в этом стиле станут новыми горячими хитами. Когда-нибудь наши дети вполне могут счесть совершенно улётными причёски в стиле «Frosted tips».

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



Пожалуй, стоит уточнить, что я говорю тут не о дизайне. Боюсь, что феномен dancing-baby.gif ушёл навсегда. Я, скорее, имею в виду более широкие идеи из прошлого, которые недавно обрели вторую жизнь. И мне, кстати, это нравится.
Читать дальше →
Всего голосов 86: ↑82 и ↓4 +78
Комментарии 93

Почему разработчики отказываются от авторизации через Apple с фейковым email

Время на прочтение 5 мин
Количество просмотров 14K
Информационная безопасность *Разработка под iOS *Разработка мобильных приложений *


Начиная с 30 июня вступило в силу новое правило в App Store, требующее, чтобы многие приложения поддерживали вход в систему с помощью Apple (Sign in with Apple). AnyList — это одно из приложений, на которое влияет это новое правило, то есть они должны либо реализовать вход в систему с помощью Apple, либо внести другие изменения в приложение. Рассмотрев достоинства входа в систему с помощью Apple, разработчики решили отказаться от него. В своём блоге они подробно объясняют, почему приняли это решение.

Они пишут, что сторонние системы авторизации вызывают головную боль у пользователей и службы поддержки. Люди не помнят, какую систему входа они использовали для создания своей учётной записи («Хм, я создал этот аккаунт пару лет назад. Использовал ли я свой адрес электронной почты? Аккаунт в Facebook? Вход с помощью Apple?»). На простые вопросы типа «Как сбросить пароль?» больше нет простых ответов, и всё зависит от того, какую систему вы использовали для создания учётной записи, если вы можете вспомнить.
Читать дальше →
Всего голосов 25: ↑23 и ↓2 +21
Комментарии 79

Первый космический турист по программе SpaceX начал искать спутницу для полета на Луну

Время на прочтение 2 мин
Количество просмотров 7.8K
Космонавтика
image

44-летний миллиардер из Японии Юсаку Маэдзава, который стал первым космическим туристом, заплатившим за полет на корабле SpaceX к Луне, объявил, что подыскивает себе спутницу для полета.

Мужчина разместил в твиттере ссылку на японский стриминговый сервис Abema TV. Он будет транслировать документальное шоу «Любители полной луны» о поисках спутницы. Там же можно подать заявку на участие в конкурсе. «У Маэзавы давняя мечта отправиться в космос. Он хочет побывать в таком особенном месте вместе с кем-то особенным», — говорится на сайте.
Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 30

Что представляет собой веб-приложение в продакшне?

Время на прочтение 8 мин
Количество просмотров 15K
Высокая производительность *Серверная оптимизация *Серверное администрирование *DevOps *Облачные сервисы *
Перевод
На заре карьеры я работал в компании, которая выпускала систему управления контентом. Эта CMS помогала отделам маркетинга самостоятельно управлять сайтами, а не полагаться на разработчиков при каждом изменении. Система помогла клиентам сократить операционные расходы, а мне — научиться создавать веб-приложения.

Хотя сам продукт имел очень общее назначение, клиенты обычно использовали его для конкретных задач. Эти задачи выжимали максимум из CMS, а разработчикам приходилось искать решение проблем. После десяти лет работы в таком окружении я узнал огромное число способов, как может сломаться веб-приложение в продакшне. Некоторые из них обсудим в этой статье.

Один из уроков, усвоенных за эти годы — отдельные инженеры обычно очень глубоко погружаются в интересующую их область, а всё остальное изучают до опасного поверхностно. Схема нормально работает в команде инженеров с хорошей коммуникацией, где знания перекрываются и заполняют отдельные пробелы у каждого из них. Но в командах с небольшим опытом или у отдельных инженеров происходит сбой.

Если вы начали работу в таком окружении, а затем приступили к созданию и развёртыванию веб-приложения с нуля, то очень быстро узнаете, что такое «до опасного поверхностные знания».
Читать дальше →
Всего голосов 35: ↑31 и ↓4 +27
Комментарии 5

Непрерывные переходы между общими элементами: из RecyclerView во ViewPager

Время на прочтение 9 мин
Количество просмотров 13K
Разработка под Android *
Перевод

Использование переходов в Material Design дает приложению визуальную непрерывность. Пока пользователь ходит по приложению, элементы интерфейса в нем меняют состояние. Анимации переходов соответствующих элементов от одного экрана к другому подчеркивают идею о том, что интерфейсы осязаемы.


Целью этой статьи является предоставление гайдлайнов и реализации для определенных непрерывных переходов между фрагментами ОС Android. Мы продемострируем, как реализовать переход из картинки в RecyclerView в картинку внутри ViewPager и обратно, используя "общие элементы" (shared elements) чтобы определить, как и какие элементы участвуют в переходе. Мы также обработаем сложный случай перехода обратно в сетку после листания на странице к элементу, который в сетке изначально был за пределами экрана.


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



Если вы хотите пропустить объяснение и сразу приступить к изучению кода, вы найдете его здесь.


От переводчика. Далее будет довольно много кода и гифок (по прикидкам, мегабайт на 20).

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

Подбираем пароли с помощью Google Chrome

Время на прочтение 6 мин
Количество просмотров 141K
Информационная безопасность *JavaScript *GreaseMonkey *Google Chrome Расширения для браузеров

Согласно многочисленным исследованиям в области компьютерной безопасности, в ТОП-3 уязвимостей информационных систем входит подбор пароля.


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


В случае, если мы имеем какой-либо портал, где пользователи – это люди, то бОльшую часть уязвимых слабых паролей можно отнести к одной из 4 групп:


  1. Пароли, входящие в топ самых популярных фраз (такие как «123456», «password», и т.п.).
  2. Пароли, представляющие собой сочетание клавиш – так называемые keyboard-walks пароли (например, «qwerty», «qazwsx», и т.п.).
  3. Пароли – искажённые логины («user123», «user321», и т.п.).
  4. Либо использование в качестве пароля популярных русских слов или имён в «перевёрнутой» раскладке («ljcneg», «fylhtq»)
Читать дальше →
Всего голосов 37: ↑33 и ↓4 +29
Комментарии 15

Delegate Adapter — зачем и как

Время на прочтение 11 мин
Количество просмотров 28K
Разработка под Android *
Практически во всех проектах, которыми я занимался, приходилось отображать список элементов (ленту), и эти элементы были разного типа. Часто задача решалась внутри главного адаптера, определяя тип элемента через instanceOf в getItemViewType(). Когда в ленте 2 или 3 типа, кажется, что такой подход себя оправдывает… Или нет? Что, если завтра придет требование ввести еще несколько типов да еще и по какой-то замысловатой логике?



В статье хочу показать, как паттерн DelegateAdapter позволяет решить эту проблему. Знакомым с паттерном может быть интересно посмотреть реализацию на Kotlin с использованием LayoutContainer.
Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 5

Как правильно оформить Open Source проект

Время на прочтение 7 мин
Количество просмотров 50K
Open source *Git *IT-стандарты *GitHub *Карьера в IT-индустрии
Туториал

В свободное и не свободное время[1] я развиваю несколько своих проектов на github, а также, по мере сил, участвую в жизни интересных для меня, как программиста, проектах.


Недавно один из коллег попросил консультацию: как выложить разработанную им библиотеку на github. Библиотека никак не связана с бизнес-логикой приложения компании, по сути это адаптер к некоему API, реализующему определённый стандарт. Помогая ему, я понял что вещи, интуитивно понятные и давно очевидные для меня, в этой области, совершенно неизвестны человеку делающему это впервые и далёкому от Open Source.


Я провел небольшое исследование и обнаружил что большинство публикаций по этой теме на habrahabr освещают тему участия (contributing), либо просто мотивируют каким-нибудь образом примкнуть к Open Source, но не дают исчерпывающей инструкции как правильно оформить свой проект. В целом в рунете, если верить Яндекс, тема освещена со стороны мотивации, этикета контрибуции и основ пользования github. Но не с точки зрения конкретных шагов, которые следует предпринять.


Так что из себя представляет стильный, модный, молодёжный Open Source проект в 201* году?

Читать дальше →
Всего голосов 89: ↑84 и ↓5 +79
Комментарии 135

Играем в APK-гольф. Уменьшение размера файлов Android APK на 99,9%

Время на прочтение 10 мин
Количество просмотров 39K
Ненормальное программирование *Спортивное программирование *Разработка под Android *Отладка *Реверс-инжиниринг *
Перевод
В гольфе выигрывает тот, у кого меньше очков.

Применим этот принцип в Android. Мы собираемся поиграть в APK-гольф и создать приложение минимально возможного размера, которое можно установить на Android 8.0 Oreo.

Базовый уровень


Начнём с дефолтного приложения, который генерирует Android Studio. Создадим хранилище ключей, подпишем приложение и измерим размер файла в байтах командой stat -f%z $filename.

Затем установим APK на смартфон Nexus 5x под Oreo, чтобы убедиться, что всё работает.



Прекрасно. Наш APK весит примерно полтора мегабайта.
Читать дальше →
Всего голосов 86: ↑86 и ↓0 +86
Комментарии 52

Какие налоги нужно платить при выводе доходов от приложений в Apple iTunes

Время на прочтение 7 мин
Количество просмотров 30K
Блог компании АйТи-Лекс Разработка под iOS *Разработка игр *
Туториал
image

Разработчики постоянно задают нам вопросы о налогах, которые должны платить при выводе средств на российское лицо по договору с Apple. Поводом беспокойства служит известный Налог на Гугл, введенный с начала 2017 года.

Поэтому мы разместили в свободном доступе перевод последней редакции Apple Developer Program License Agreement Schedule 2 и подготовили налоговые комментарии к нему.

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

Планирование задач в Android с использованием JobScheduler и IntentService

Время на прочтение 11 мин
Количество просмотров 34K
Программирование *Java *Разработка мобильных приложений *Разработка под Android *Промышленное программирование *
Туториал


Иногда при разработке под OS Android возникает необходимость выполнять ресурсоемкие операции периодически, регулярно или по запросу, и для этих операций важно, например, наличие интернета или чтобы устройство "не спало". Чаще всего при решении подобных задач применяются AlarmManager, WakefulBroadcastReceiver, либо же вообще WakeLock контролируется вручную. Все это не рекомендуется в документации для разработчиков под Android, а WakefulBroadcastReceiver уже отмечен как deprecated с API level 26.0.0.


Что же мы можем сделать, чтобы следовать рекомендациям Google и создавать приложения с более гибким поведением на версиях Android 5.0+, в которых энергосбережению уделяется все больше внимания? Если вы готовы выставить минимальный API level 21.0.0 для своего приложения, предлагаю под катом пример использования JobScheduler в связке с IntentService для последовательного выполнения трудоемких задач.

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

30 новых ресурсов для android-разработчика (лето 2017)

Время на прочтение 3 мин
Количество просмотров 12K
Блог компании Edison Программирование *Разработка под Android *Kotlin *
Перевод
image

Компания EDISON Software профессионально занимается разработкой Android-приложений. Вот некоторые крупные проекты:


Полезные статьи на Хабре по Android:


(Пост из серии «просмотреть и добавить в избранное»)
Читать дальше →
Всего голосов 12: ↑10 и ↓2 +8
Комментарии 2

30+ инструментов для профессиональной разработки приложений под Android

Время на прочтение 6 мин
Количество просмотров 46K
Программирование *Java *Совершенный код *Разработка мобильных приложений *Разработка под Android *
Перевод
image

В этой статье я собираюсь поделиться некоторыми из лучших инструментов для повышения производительности разработки и создания лучших приложений под Android. Я лично использовал эти инструменты уже довольно давно и нашел их действительно полезными.

Эти инструменты помогли мне сэкономить много драгоценного времени из моей повседневной жизни, а также помогли мне создавать более качественные приложения. Поэтому, не теряя времени, давайте познакомимся с новыми и потрясающими инструментами для профессиональной разработки приложений под Android.
Читать дальше →
Всего голосов 30: ↑26 и ↓4 +22
Комментарии 7

Dagger 2.11 & Android

Время на прочтение 8 мин
Количество просмотров 48K
Разработка под Android *
Из песочницы

В данной статье рассматривается использование специализированного модуля Dagger 2 под android и подразумевается, что у вас есть наличие базовых знаний по Dagger 2.


В Dagger 2.10 был представлен новый модуль специально для Android. Данный модуль поставляется как дополнение, состоящий из дополнительной библиотеки и компилятора.
В версии 2.11 были некоторые небольшие изменения, в частности некоторые классы, были переименованы, поэтому будет использоваться именно эта версия.

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

Как писать на Spring в 2017

Время на прочтение 10 мин
Количество просмотров 273K
Java *
Туториал

В одной из классических статей для новичков, мелькавших недавно на Хабре, рассказывалось про создание базового Web приложения на Java. Все начиналось с сервлета, потом создания JSP страницы и, наконец, деплоймента в контейнер. Посмотрев на это свежим взглядом я понял, что для как раз для новичков это, наверняка, выглядит совершенно жутко — на фоне простых и понятных PHP или Node.js, где все просто — написал контроллер, вернул объект, он стал JSON или HTML. Чтобы немного развеять это ощущение, я решил написать "Гайд для новичков в Spring". Цель это статьи — показать, что создание Web приложений на Java, более того — на Spring Framework это не боль и мучительное продирание через web.xml, persistence.xml, beans.xml, и собирание приложения как карточного домика по кусочкам, а вполне себе быстрый и комфортный процесс. Аудитория — начинающие разработчики, разработчики на других языках, ну и те, кто видел Спринг в его не самые лучше времена.

Читать дальше →
Всего голосов 47: ↑44 и ↓3 +41
Комментарии 110

Инструкция по обходу блокировки Telegram. Как активировать SOCKS 5

Время на прочтение 2 мин
Количество просмотров 247K
Социальные сети и сообщества
В телеграм-канале tnews_ru опубликовали инструкцию по обходу возможной блокировки Telegram — популярного мессенджера, разработанного командой Павла Дурова. В статье описывается способ обхода, который основывается на использовании сетевого протокола SOCKS5. Этот протокол незаметно пересылает пакеты данных от клиента к серверу через прокси-сервер.
Читать дальше →
Всего голосов 46: ↑32 и ↓14 +18
Комментарии 53

Разбираемся с Conductor

Время на прочтение 10 мин
Количество просмотров 14K
Разработка под Android *
Из песочницы

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


Conductor позиционируется как замена стандартным фрагментам. Основная идея обернуть View и дать доступ к методам жизненного цикла. Conductor имеет свой жизненный цикл, который сильно проще чем у фрагметов, но и в нём есть свои хитрости (об этом дальше).


Основные преимущества, которые даёт Conductor:


  • Упрощение кода
  • Транзакции выполняются мгновенно
  • Возможность построить приложение на одной Activity
  • Не ограничивает в выборе архитектуры приложения
  • Легко встраиваемые анимации
  • Отсутствие необходимости сохранять состояния между изменениями конфигураций

Так же в коробке вы получите:


  • Работа с бэкстеком
  • Стандартные коллбеки активити легко доступны
  • Несколько стандартных анимаций
  • Привязка жизненного цикла к RxJava
  • Быстрая интеграция с ViewPager

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


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

Реализация одновременного скролинга по всем направлениям

Время на прочтение 6 мин
Количество просмотров 5K
Java *Разработка мобильных приложений *Разработка игр *Разработка под Android *
Туториал

Введение


Доброго времени суток! Сразу скажу, что программировать я начал недавно и большого опыта у меня нет, поэтому не судите строго, тем более, что материалов на данную тему очень мало. В статье я хочу поделиться своим решением проблемы, которая у меня возникла при создании пошаговой 2D стратегии. Для стратегий привычное дело наличие игрового поля. Но как быть, если у пользователя маленький телефон и всё игровое поле не помещается на экране? Таким вопросом я задался примерно месяц назад, когда у меня ещё ничего не было готово. Сначала я решил как обычно обернуть поле в ScrollView и HorizontalScrollView. И тут начинается собственно проблема. Прокручивать можно было только по одному направлению одновременно, что очень неудобно, тем более для игры. Если вам интересно решение этой проблемы добро пожаловать под кат.
Читать дальше →
Всего голосов 11: ↑6 и ↓5 +1
Комментарии 1

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность