MonthСентябрь 2016

Fitness Challenge. История создания очередного приложения для фитнеса

Начало

Однажды я задумался о плюсах и минусах работы на долгоиграющих проектах. Один из таких проектов (клиент для Reddit) у меня длится уже пятый год, и довольно успешно: есть готовые наработки, есть большая аудитория, фидбеки от которых приходят довольно активно, так что считай большая база тестировщиков у тебя имеется и помимо штатных тестировщиков. При всем этом фронт работ уже не так высок, как раньше — новых фич добавляется немного, все баги уже лечены перелечены… и вот тут приходит время перейти к разговору о минусах.

А главным минусом я вдруг посчитал тот факт, что постоянно появляется в разработке так много интересного, что хотелось бы не только пощупать, но и куда-нибудь внедрить, а у тебя — тот самый проект, куда вклинивать что-то новое немного страшновато (все же помнят лозунг “Не трогай то, что работает”?), да и не очень нужно (менеджеры как правило не большие любители выделять время разработчиков под такие нужды). Но, минус на минус всегда дает плюс, так что я выгадал время, почитал что самое трендовое и вкусное на Android Weekly и сел писать план. Что я хочу изучить, ну или как-то так, название плану я не придумал, если честно.

Continue reading

BearFace For Selfie. Итоговое видео

Что для этого потребовалось?

  1. Около месяца разработки. Причем все шло более менее спокойно, пока не выложил на Google Play. И хотя количество скачиваний стремилось к нулю, меня ужалило находить и исправлять ошибки как можно больше и оперативнее. В итоге сорвался немного(((
  2. Чуть менее пяти сотен фотографий за чуть менее чем два года. Да, черт возьми, я люблю делать селфи!
    К слову, импорта было целых два — сначала с Dropbox на телефон, потом с телефона в приложение. Заняло это довольно много времени. Не скажу что я проверял выполнения ЧАСАМИ, однако сидеть и залипать в прогресс на телефоне не отвлекаясь ни на что — не стоит.
  3. Порядка пяти минут на создание и компиляцию. Если честно, не помню какая в этом ролике частота кадров. 4 или 10 или 20, точно не скажу.

Почему вам надо установить это приложение прямо сейчас?

  1. Оно бесплатно
  2. Можно не заморачиваясь на поиск каких-то сервисов создать таймлапс ролик из снимков абсолютно любого существа, у которого, по мнению FaceDetection library от Google, есть лицо. И да, это не волшебник в голубом вертолете, и иногда приложение может посчитать, что на снимке никого нет. Такое тоже бывает.
  3. Это немного организует. Какого черта, чувак, ты делаешь селфи каждый день, просто чтобы набить память своего телефона (и немного облака от предпочитаемого тобой поставщика — гугла, яндекса или майлру)? Пусть будет хоть небольшая польза в виде бОльшего наглаживания своего эго =)

Вопросы.

  1. Нужно ли соединение с интернетом для работы?
    Нет. Это не призма, тут нейронные сети не используются. Все волшебство происходит внутри твоего телефона
  2. Что делать, если какая-то ошибка появляется?
    Ну, во первых, не нужно мчаться в Google Play и ставить низкие оценки. Мы все люди-человеки, может лучше попытаться связаться со мной? Хотя честно говоря, если интернет у вас включен, я узнаю о вашей ошибке.
  3. При импорте папки не все фото были добавлены, почему?
    Тут такая штука. Ваше лицо вырезается из фотографии (прототипа) и по этому шаблону сравнивается каждая другая фотография. Так вот, если ваше лицо не умещается в нужный прямоугольник, то тут ничего приложение поделать не может. Да и никто не может. Поэтому такие фотографии игнорируются.

Скачать  BearFace For Selfies можно на Google Play

Паттерны проектирования: строитель

С паттерном «Строитель» (хотя лично я никогда его так не называю — для меня он Builder) знакомы все, кто хоть немного продвинулся в изучении уроков на startandroid или других подобных (Александр  Климов, например). Лично я впервые с ним столкнулся в незапамятно далеких временах, когда изучал AlertDialog. Думаю, не я один такой.

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

Итак, мой код изначально выглядел следующим образом
Continue reading

Запретный контент при публикации в Google Play

Остаток вечера я посвятил подготовке страницы приложения в Google Play: нагенерировал кучу разных скриншотов, обработал их покрасивее, как полагается, как мог пробежался по текстам, наконец, залил все изменения в консоли и стал ждать когда накатится обновление.

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

Continue reading

RxJava: очередность выполнения операций

Возникла у меня такая необходимость: выполнять операции последовательно, одну за другой. В принципе, довольно тривиальная задача, ничего особенного. За парой небольших исключений. Первое — каждый этап возвращает какой-то статус (типа success или код ошибки), и если выполнение операции не успешно, следующий этап выполняться не должен.

Первой мыслью у меня было использовать конструкцию столь же древнюю, сколь и джек на 3,5 мм. Я говорю про if-else. Но эта мысль практически сразу извинившись ушла, даже не дожидаясь какой-либо ее реализации. Даже без перевода ее на код можно сделать вывод, что выглядеть это будет ужасно, криво и неэстетично.

Continue reading