• Moxy — реализация MVP под Android с щепоткой магии

      Что такое MVP


      MVP – это способ разделения ответственности в коде приложения. Model предоставляет данные для Presenter. View выполняет две функции: реагирует на команды от пользователя(или от элементов UI), передавая эти события в Presenter и изменяет gui по требованию Presenter. Presenter выступает как связующее звено между View и Model. Presenter получает события из View, обрабатывает их(используя или не используя Model), и командует View о том, как она должна себя изменить.

      У такого подхода к разделению ответственности есть ряд плюсов:
      1. Сильно упрощается написание тестов к коду
      2. Легко менять какую-то часть, не ломая при этом другую
      3. Код разбивается на мелкие кусочки, за счёт чего он становится более понятным и читабельным

      В то же время, конечно, есть и минусы:
      1. Кода становится больше
      2. К этому подходу нужно привыкать
      3. На данный момент не сильно распространённый(но известный) подход, поэтому приходится всем рассказывать о нём

      Читать дальше →
    • Справочник по синхронизаторам java.util.concurrent.*

      • Tutorial
      Целью данной публикации не является полный анализ синхронизаторов из пакета java.util.concurrent. Пишу её, прежде всего, как справочник, который облегчит вхождение в тему и покажет возможности практического применения классов для синхронизации потоков (далее поток = thread).

      В java.util.concurrent много различных классов, которые по функционалу можно поделить на группы: Concurrent Collections, Executors, Atomics и т.д. Одной из этих групп будет Synchronizers (синхронизаторы).



      Синхронизаторы – вспомогательные утилиты для синхронизации потоков, которые дают возможность разработчику регулировать и/или ограничивать работу потоков и предоставляют более высокий уровень абстракции, чем основные примитивы языка (мониторы).
      Читать дальше
    • Сбербанк делится опытом создания приложения в Material Design: стили и темы

        Привет, Хабрахабр! Не так давно мы подводили итоги конкурса по Material Design, и в комментариях нас просили показать реально популярные и красивые Material-приложения. Что же, встречайте: «Сбербанк Онлайн» в новом, современном интерфейсе. Про процесс создания приложения интереснее узнать от самих создателей.

        Мы передаём слово команде разработчиков Android-приложения Сбербанка, чтобы вы услышали об опыте создания такой сложной штуки, как UI мобильного банк-клиента, из первых уст. Большую часть поста написал freeuser, так что спасибо говорите ему. ;)
        Читать дальше →
      • Публикация Android библиотеки в jCenter



        В жизни каждого андроид разработчика настаёт момент, когда количество самописных утилит и хелперов, качующих из проекта в проект, переваливает за десяток. В этом случае хорошей практикой будет оформление подобных хелперов в виде самостоятельных «модулей» в терминах Android Studio. Еще лучше, если Вы собираетесь поделиться Вашими наработками с комьюнити, снабдив исходный код подходящей лицензией. Но просто залить исходники на GitHub в этом случае будет недостаточно – хочется, чтобы любой желающий мог подключить библиотеку с помощью однострочной Gradle зависимости, например такой:

        dependencies {
           compile 'com.github.romangromov:simpleprefs:0.0.8'
        }
        

        О том, как этого добиться и пойдет речь в данной статье.
        Читать дальше →
        • +15
        • 15.2k
        • 5
      • Что такое утечки памяти в android, как проверить программу на их отсутствие и как предотвратить их появление

        • Tutorial
        В этой статье для начинающих android-разработчиков я постараюсь рассказать о том, что такое «утечки памяти» в android, почему о них стоит думать на современных устройствах, выделяющих по 192МБ на приложение, как быстро найти и устранить эти утечки в малознакомом приложении и на что нужно обращать особое внимание при разработке любого приложения.


        Конечная цель этой статьи — ответ на простой вопрос:
        Куда нажать, чтобы узнать, какую строчку в приложении поправить?

        Читать дальше →
      • Чеклист при подготовке презентации

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

          — Мы делаем систему управления электронным обучением…

          — Мы провели исследование поведения посетителей на нашем сайте…

          — Наша компания была основана более ста лет назад…

          Это просто удивительно как люди любят так поступать. Они с первых секунд садятся на уши аудитории рассказом про себя:

          — Мы предлагаем SAAS-решение…

          — Наши технологии…

          И мое любимое:

          — Начну рассказ с того, кто мы такие…

          Почему все так уверены, что именно это в первую очередь интересует слушателей? Единственное что выступающий гарантированно получит в таком выступлении — это претензии к себе лично и своей компании.

          Я видел как один из директоров Microsoft схлопотал громкое улюлюканье, а представитель Ростелекома — едкий троллинг из зала только потому, что выступили по этому шаблону.

          Почему каждый раз это происходит?

          Читать дальше →
        • Спать мало, но правильно?

            Навеяно этим постом от юзера case. Пост не новый, и на главную он не попал.
            Но я вот наткнулся на него сегодня и решил написать кое-что о сне. Уверен, что это будет полезно многим хабравчанам, да и случайным читателям тоже.
            Читать дальше →
          • Создание приложения для Windows Phone 7 от начала до конца. Часть 1

            • Translation
            Эта статья и прилагаемое к ней приложение-пример поможет вам начать создавать полноценные приложения для Windows Phone 7. Вы узнаете об общих вопросах разработки на примере создания простого приложения для отслеживания количества топлива, потребляемого вашим автомобилем. В этой статье описываются вещи, которые вы должны знать, прежде чем приступить к созданию приложений для Windows Phone.

            Вы также узнаете, как выполнять следующие задачи (ниже указаны ссылки на другие части):
            Читать дальше →
            • +28
            • 21.8k
            • 8
          • FAQ по программированию под Android от новичка, и для новичков

            Предисловие к FAQ.

            Программирование является моим хобби уже давно (правда на других языках и платформах), но до андроида руки дотянулись совсем недавно. Прошло несколько этапов, прежде чем я добрался до написания программ.
            Сначала была пара месяцев посвященных Java, на сайте с «Сгибателем».
            После, долгие попытки подружится с Eclipse, закончившиеся побегом на Android Studio.
            На данный момент выпущено 7 программ и две находятся в разработке.
            Данная подборка возникла как попытка структурирования и оптимизации полученной в процессе информации.
            Заранее извиняюсь за возможно некорректную терминологию – так как практикую обучение через создание, и в теоретической части есть пробелы.

            Надеюсь, что приведенные примеры окажутся полезными.
            Читать дальше →
          • Психологическая деформация программистов. Взгляд с обеих сторон баррикад

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

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

              И что же них такого деформированного?
            • Настройка IDEA для чистокодеров

                Я люблю две вещи: Intellij IDEA и чистый код (Clean Code).
                IDEA создана для чистого кода. Многие настройки по умолчанию уже стимулируют вас писать как надо.


                Но она всё ещё не идеальна.
                Когда я устанавливаю новую копию IDEA, я пробегаю по настройкам и выставляю свои любимые галочки.
                Хочу ими с вами поделиться в надежде, что когда-нибудь и они станут стандартом.

                Мои любимые настройки IDEA с картинками
              • Подготовка к экзамену Oracle Java SE 7 Programmer II (1Z0-804)


                Приветствую уважаемых хабражителей и Java-программистов!
                Cтатья посвящена подготовке к сдаче экзамена Oracle Java SE7 Professional с кодовым номером 1Z0-804. Про это на Хабре уже было написано множество постов (например здесь, здесь, тут, здесь, здесь, тут, тут, и вот тут), поэтому постараюсь не повторяться и дополнить заметками о том что наиболее часто встречалось, важными нюансами, которые на мой взгляд были пропущены или недостаточно хорошо освещены в указанных статьях, и вообще в общедоступной литературе (сразу отмечу, что материал не претендует на полноту, здесь я лишь старался обозначить каверзные вопросы с экзамена и лаконично изложить некоторые сложные вещи). Так же поделюсь своими соображениями насчет того, по каким материалам лучше готовиться. С первого раза экзамен сдать не получилось, поэтому начал сохранять для себя различные заметки, где записывал всё что мне казалось сложным или трудно-запоминаемым. Которыми теперь и решил с вами поделится. Заранее прошу проявить понимание, если вы вдруг заметите ошибку, недочёт или очепятку — пишите в комментарии.

                Читать дальше →
              • Как я не спал год или создание социального Android приложения

                Доброго времени суток, уважаемые хабражители. Я работаю в большой IT компании Android-разработчиком.

                Все началось примерно год назад. Тогда, я решил начать свой первый проект. Идея приложения пришла мне практически сразу. Ее первоначальная версия звучала примерно так — «Я хочу, чтобы каждый мог узнать независимое мнение людей всего мира, по интересующему вопросу».

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

                В статье присутствуют цены на те или иные услуги сайтов с которыми мне удалось связаться.
                Читать дальше →
              • Антон Кекс: Как нам спасти Java?

                Здравствуй, %USERNAME%!

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

                Читать дальше →
              • Темы оформления. С блэк-джеком и WeakReference

                  Как-то раз передо мной встала задача сделать в приложении на Android поддержку тем оформления. Что хотелось получить:

                  1. Возможность переключить оформление — изменить некоторые цвета и графику
                  2. Смена должна происходить “на лету”, для пользователя должно измениться только оформление, все остальное (содержание полей ввода, позиция элементов в списке и т.п.) меняться не должно
                  3. В перспективе хотелось бы, чтобы тема могла изменяться и без участия пользователя, например по времени суток
                  4. Не хотелось бы в значительной степени изменять уже существующий код или разметку. В идеале хотелось бы просто как-то пометить элементы в разметке
                  5. Было бы здорово уметь подгружать новые темы без обновления приложения.


                  О том, чего удалось добиться и как это было реализовано — под катом.



                  Читать дальше →
                • Инструменты студии мобильной разработки



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

                    В нашей компании используется много подобных сервисов и инструментов, поэтому я решил рассказать вам кратко о лучших из них. О базовых вещах на подобии Basecamp, GitHub и т.п. речи не будет, т.к. это не сугубо специфические вещи для мобильной разработки.

                    Пройдемся по дизайну, серверным решениям, тестированию и аналитике.
                    Читать дальше →
                  • Java собеседование. Коллекции

                      С недавнего времени у меня появилась настойчивая мысль, что профессиональное развитие сильно замедлилось и это хочется как-то исправить. Да, читаю книги, слушаю курсы, но в то же время приходит и понимание того, что возможно пришло время сменить работу, здесь вроде как все изучено, плавно уходим в рутину. Данная мысль сподвигла меня на рассылку своего резюме в несколько компаний — лидеров рынка. После прохождения собеседования в 3 из них, я решил, как водится внести свои 5 копеек в освещение обширной темы собеседования, а именно технических вопросов по Java коллекциям, с которыми приходится сталкиваться. Да, знаю, читатель скажет: «коллекции — избитая тема, сколько можно», но часть из приведенных ниже вопросов, я задавал своим знакомым разработчикам, которые занимают именно позиции разработчиков («крепких середнячков», по меркам недалекой от Москвы глубинки, которые уверенно справляются со своей работой на практике, а вот в теории скажем так есть пробелы, потому, что работа не требует решения каких-то нетривиальных задач, да и потому что не всем это интересно — изучать как внутри работает структура данных), вызывало растерянность. Думаю, что рассмотренный материал будет не очень интересен разработчикам выше уровня Junior (я попрошу их комментировать, дополнять и критиковать изложенный здесь материал), а вот Junior`ы уверен, найдут в этой статье интересное для себя.
                      Читать дальше →
                    • Java сертификация. Подготовка к SCJP

                        В этом месяце я сдавал экзамен SCJP. В этом топике я расскажу о подготовке и экзамене.
                        В основном для тех, кто собирается сдавать и кому нужно больше информации об этом.

                        Уточнение


                        Так как Sun'a больше нет, то и экзамена SCJP тоже нет. Теперь он значится так:
                        1Z0-851 Java Standard Edition 6 Programmer Certified Professional Exam.
                        прочитать об экзамене и посмотреть задачи
                      • Решение проблемы чтения книг в форматах DjVu и PDF на читалках с маленькими экранами — 2



                          Около года назад я уже писал пост на эту же тему, который собрал немало положительных отзывов. Я не буду повторяться: суть, смысл и идея остались ровно те же, но код я переписал с bash на C, и теперь программа работает и под Windows. Под Linux тоже работает; полагаю, что будет работать (возможно с небольшими модификациями) и под любую другую ОС, для которой есть компилятор C и нужные утилиты (ImageMagick, Poppler, DjVuLibre, Pdftk).

                          Архив, инструкция и исходник - под катом
                        • Реализуем RESTful Web Service на java

                          Добрый день всем хаброжителям!

                          Поводом к написанию статьи послужило, то что к моему большому удивлению на хабре я не нашёл статьи о реализации RESTful Web Service на Java, может, конечно, плохо искал. Да написано про RESTful web services очень много, но как то вот так, чтобы простенько с примерами кода, рабочий сервис, не так уж и легко найти и не только на хабре…

                          Вообще с REST я познакомился совсем недавно, не больше месяца назад. Так что буду очень благодарен за советы, поправки и критику!

                          Разобраться было и так вообщем то не сложно, но я думаю аналогичный пост мне бы очень помог и сильно бы ускорил процесс обучения! Тем более, если вы начинающий разработчик и о многом только слышали, а руками никогда не трогали.

                          По моему первому впечатлению: действительно вещь очень удобная, а главное очень простая, ещё и если использовать JSON, а не XML, ну по крайней мере мне так показалось после опыта работы с SOAP и WSDL. Ну, да об этом я думаю и так все знают, кто хоть немного работал с веб сервисами.

                          Так что, кто заинтересовался реализацией, прошу под кат
                          Читать дальше →