• MVP на стероидах: заставляем робота писать код за вас

    • Tutorial
    В статье «Moxy — реализация MVP под Android с щепоткой магии» мы рассказывали, как побороть проблему жизненного цикла и разделить код своего Android-проекта на слои. Однако MVP (даже при умной кодогенерации view state в Moxy) заставляет писать огромное количество лишнего кода (создавать связанные друг с другом классы и интерфейсы presenter и view). На самом деле эту работу за вас должен делать робот! :) Настало время еще сильнее уменьшить boilerplate при помощи кастомизации шаблонов Android Studio под Moxy.

    Читать дальше →
    • +17
    • 21,2k
    • 9
  • Построение Android приложений шаг за шагом, часть первая



      В этой статье мы поговорим о проектировании архитектуры и создании мобильного приложения на основе паттерна MVP с использованием RxJava и Retrofit. Тема получилась довольно большой, поэтому подаваться будет отдельными порциями: в первой мы проектируем и создаем приложение, во второй занимаемся DI с помощью Dagger 2 и пишем тесты unit тесты, в третьей дописываем интеграционные и функциональные тесты, а также размышляем о TDD в реалиях Android разработки.
      Читать дальше →
    • Использование android.os.Binder для организации асинхронного взаимодействия в Андроиде

        Одна из естественных и первых задач при разработке под Андроид – организация асинхронного взаимодействия. Например, обращение к серверу из некоторой активности и отображение на ней результата. Трудность состоит в том, что за время обращения к серверу поверх может быть открыта другая активность или другое приложение, исходная активность может быть безвозвратно завершена (пользователь нажал Back) и т. д. Вот получили мы результат от сервера, но активность «неактивна». Под «активна», в зависимости от обстоятельств, можно понимать, например, что находится между onStart и onStop, onResume и onPause (или, как у нас в проекте, между onPostResume и первым из onSaveInstanceState и onStop). Как понять, завершена активность окончательно (и результат нужно отдать сборщику мусора) или лишь временно неактивна (результат нужно хранить, и отобразить, как только активность станет активной)?

        Удивительно, но в документации, интернетах, при личном общении я ни разу не встречал корректного и приемлемо универсального способа. Хочу безвозмездно поделиться решением, которое мы применяем два с половиной года в мобильном интернет-банкинге. Приложение установлено (как часть более крупной системы) у нескольких сотен банков, на данный момент имеет около миллиона пользователей.
        Читать дальше →
      • Легальный вывод денег из oDesk в РФ

          Здравствуйте!

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

          Читать дальше →
        • Анимации c помощью Transitions API

            Привет!

            На хабре ещё не была освещена тема Transitions API для анимаций, которые появились в Android начиная с 4.4 (KitKat) и продолжили свое развитие в 5.0 (Lollipop). В своей статье я расскажу о том, как упростить работу с анимациями с их использованием и как применять их на любом устройстве с версией Android 4.0 и выше.


            Читать дальше →
          • Работа для программиста в США: 5 простых шагов

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

              Мой опыт несколько отличается от нижеописанного (я попала на работу в США после стажировки). Но за 4 года в США пообщалась с людьми, которые попали сюда разными путями и набрала кое-какой опыт. Так что если бы я очень хотела найти работу в США сегодня, то я бы действовала примерно так, как описано ниже.

              Заранее извиняюсь, если мой тон кому-то покажется наставническим — я не имею амбиций учить других жизни, просто иногда у меня получается такой стиль.
              Читать дальше →
            • Как IT-фрилансеру стать предпринимателем. Часть 1

                Всем привет! Это наш первый пост на Хабре, и мы расскажем, как IT-фрилансеру стать предпринимателем.

                Вы узнаете, зачем фрилансеру ИП. Почему ИП лучше, чем ООО. Как зарегистрировать ИП самостоятельно. Что делать потом. Надеемся, опыт, который мы накопили за два года нашего проекта «Я люблю ИП», вам пригодится.



                Читать дальше →
              • Из Москвы в Кремниевую Долину: как Александр Киров улучшает умные часы Pebble

                  А вы хотели бы получить работу в Кремниевой Долине и поучаствовать в разработке продукта, который гремит на весь мир? Это ли не мечта каждого второго гика? У Александра Кирова, бывшего продакт-дизанера из Mail.Ru, который называет себя очень неорганизованным человеком (он бросил учебу в двух институтах), свой рецепт достижения мечты: если тебя отшили, не бойся стучаться снова, пока не добьешься своего. Его, например, отшивали и Google, и Facebook, но в итоге Александр уехал в Калифорнию и присоединился к американской команде Pebble, которая прославилась по всему миру одноименными умными часами (и тоже его сначала отфутболила). Мы попросили Александра рассказать, как он сумел это провернуть и чем его новая жизнь отличается от старой в Москве.



                  ПЕРВЫЙ МОБИЛЬНЫЙ


                  — Попыток и поисков в моей жизни было довольно много. Но оказалось, что именно они сформировали мой характер. Так, с учебой у меня не складывалось довольно долго. После школы я год отучился на айтишника, потом еще год на менеджера, но в обоих случаях быстро становилось скучно, и учебу я бросал. Правда, параллельно всегда работал — сначала сисадмином, потом управлял разработкой сайтов в компании «Это Легко», был проджект-менеджером в цифровом подразделении крупного рекламного агентства Lowe Adventa. Тогда я завязал с учебой на некоторое время и понял, что мне интереснее заниматься не менеджментом или программированием, а более творческой работой. Решил попробовать себя в дизайне.
                  Читать дальше →
                • Tesla Model S: близкое знакомство



                    Всевозможных обзоров первого серийного полноценного электромобиля Tesla Model S в сети немало. Почти все их объединяет то, что они написаны профессионалами, так или иначе связанными с автомобильным бизнесом, промышленностью и профильными онлайн- и оффлайн-изданиями. Ни в коей мере не подвергая сомнению их опыт и знания, стоит всe же отметить, что именно их искушeнность не дает им посмотреть на этот инновационный автомобиль с точки зрения обычного пользователя.

                    Сегодня хочется заполнить этот пробел и рассказать о Model S как раз с позиции автолюбителя. Возможность познакомиться с авто представилась мне прямо на работе: наш CEO Дмитрий Гришин приобрел автомобиль, о котором хочется рассказывать всем, и пригласил всех желающих из числа коллег рассмотреть, пощупать и попробовать Теслу в действии. Пока только в качестве пассажира. Но всe же мне хотелось бы поделиться рассказом о салоне, приборах и органах управления этого любопытного автомобиля.
                    Читать дальше →
                  • Организованный фриланс. Часть 1

                    В данной статье я хотел бы поделиться собственным опытом создания компании, не обремененной месторасположением. Лично мы называем это организованный фриланс.

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

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

                    В-третьих, вся работа выполняется сдельно, существуют премии, бонусы, но не оклады, что заставляет участников команды быть заинтересованными в высоких результатах, в больших объемах работы.
                    Читать дальше →
                  • Горизонтальное масштабирование небольших Web-приложений на Java (вопросы собеседований)

                    • Tutorial
                    Эта тема была поднята в ходе нескольких (3+) собеседований который я прошёл за последние полтора месяца — в разных вариациях но примерно об одном. Казалось бы, известные вещи — но собрав все ответы и объяснения какие я давал (и кое-что что нашёл позже в гугле), решил сохранить их не у себя в гугл-драйве, а написать краткий обзор.

                    Речь шла о небольших и типовых приложениях Enterprise / Web на Java, каких пишется множество (ну такие, на 10-100 тысяч клиентов, миллион посещений и т.п.). Пусть это будет обобщённый диалог в виде вопросов и ответов.

                     

                    В: Допустим, у вас есть приложение (самое обычное — JSP, Spring, Hibernate например) развернутое на томкате (Apache Tomcat) и вы однажды замечаете что сервер с томкатом загружен на 80% в среднем. Что делать?

                    Читать дальше →
                  • Mozilla анонсировала «25-долларовый смартфон»



                      Еще пару-тройку лет назад термин «смартфон» вызывал у многих ассоциации с высокой ценой на такого рода гаджет. С тех пор цены на мобильные телефоны и смартфоны (имеются в виду бюджетные устройства) постепенно снижались. И сейчас Mozilla сообщила о намерении выпустить 25-долларовый смартфонов, естественно, основанный на Firefox OS.

                      Стоит отметить, что сейчас бюджетные смартфоны с Firefox OS продаются уже в 15 странах, и рынки еще 12 стран планируется «открыть» для продаж таких устройств. Это — Аргентина, Коста-Рика, Эквадор, Сальвадор, Германия, Никарагуа, Панама, Гватемала.

                      Читать дальше →