• Грокаем RxJava, часть четвертая: Реактивный Android

    • Перевод
    В первой, второй и третьей частях я объяснил в общих чертах устройство RxJava. Вы можете подумать: «Прекрасно, но как всё это сделать полезным для меня, как для разработчика под Android?» В заключительной части статьи я приведу некоторую информацию, практичную именно для вас.

    RxAndroid


    RxAndroid — это расширение RxJava, написанное специально для Android, которое включает в себя специальные обвязки вокруг RxJava, делающие вашу жизнь проще.

    Во-первых, здесь есть класс AndroidSchedulers, предоставляющий готовые планировщики для потоков, специфичных для Android. Нужно запустить код на UI потоке? Без проблем — воспользуйтесь AndroidSchedulers.mainThread():

    retrofitService.getImage(url)
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(bitmap -> myImageView.setImageBitmap(bitmap));
    
    Читать дальше →
  • Грокаем RxJava, часть третья: Реактивность с пользой

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

    Обработка ошибок


    До настоящего момента мы полностью игнорировали такие методы Observable, как onComplete() и onError(). Данные методы вызываются в момент, когда Observable прекращает порождать новые данные — либо потому, что ему нечего больше порождать, либо потому, что произошла ошибка.
    Самый первый наш Subscriber следил за onCompleted() и onError(). Давайте сделаем что-нибудь полезное в этих точках:

    Observable.just("Hello, world!")
        .map(s -> potentialException(s))
        .map(s -> anotherPotentialException(s))
        .subscribe(new Subscriber<String>() {
            @Override
            public void onNext(String s) { System.out.println(s); }
    
            @Override
            public void onCompleted() { System.out.println("Completed!"); }
    
            @Override
            public void onError(Throwable e) { System.out.println("Ouch!"); }
        });
    

    Читать дальше →
    • +15
    • 38k
    • 2
  • Грокаем RxJava, часть вторая: Операторы

    • Перевод
    В первой части мы с вами рассмотрели основные строительные блоки RxJava, а также познакомились с оператором map(). Я могу понять тех из вас, кто всё ещё не чувствует желания всё бросить и начать использовать этот фреймворк, так как пока что мы, условно выражаясь, рассмотрели лишь вершину айсберга. Но скоро всё переменится — большая часть всей мощи RxJava скрывается в её операторах, и я как раз подготовил для вас пример, по которому можно изучить некоторую их часть.
    Читать дальше →
    • +17
    • 65,7k
    • 8
  • Грокаем* RxJava, часть первая: основы

    • Перевод
    * от переводчика: я долго думал над тем, как перевести на русский язык глагол «to grok». С одной стороны, это слово переводится как «понять» или «осознать», а с другой стороны, при переводе романа Роберта Хайнлайна «Чужак в чужой стране» (в котором это слово впервые и появилось на свет), переводчики сделали из него русское «грокать». Роман я не читал, поэтому счёл, что есть у этого слова какие-то смысловые оттенки, которые русскими аналогами не передавались, а посему в своём переводе использовал ту же самую кальку с английского.

    RxJava — это, сейчас, одна из самых горячих тем для обсуждения у Android-программистов. Единственная проблема состоит в том, что понять самые её основы, если вы не сталкивались ни с чем подобным, может быть довольно затруднительно. Функциональное реактивное программирование довольно сложно понять, если вы пришли из императивного мира, но, как только вы разберётесь с ним, вы поймёте, насколько же это круто!
    Я постараюсь дать вам некое общее представление об RxJava. Задача этого цикла статей состоит не в том, чтобы объяснить всё вплоть до последней запятой (вряд ли я смог бы это сделать), но, скорее в том, чтобы заинтересовать вас RxJava, и тем, как она работает.
    Читать дальше →
  • Android. Пару слов об MVP + rxJava



    Работая с Android часто можно видеть, как весь функциональный код помещается в методы жизненного цикла activity/fragment. В общем-то такой подход имеет некоторое обоснование — «методы жизненного цикла» всего лишь хэндлеры, обрабатывающие этапы создания компонента системой и специально предназначенные для наполнения их кодом. Добавив сюда то, что каркас UI описывается через xml файлы, мы уже получаем базовое разделение логики и интерфейса. Однако из-за не совсем «изящной» структуры жизненного цикла, его зависимости от множества флагов запуска, и различной (хоть и похожей) структуры для разных компонентов, эффективно воспользоваться подобным разделением не всегда бывает возможно, что в итоге выливается в написании всего кода в onCreate().
    Читать дальше →
  • Как устроена пересылка Shopfans: из Пенсильвании в Москву

      Shopfans — компания по пересылке частных покупок из американских интернет-магазинов по всему миру. Идея сервиса проста: клиенты получают индивидуальный американский адрес — адрес склада Shopfans, — на который отправляют свои покупки. Shopfans же отвечает за все остальное — получение, хранение, бережную упаковку и доставку. Звучит несложно? С точки зрения клиента так и есть. Но за любой кажущейся простотой всегда стоит система. И чем легче кажется процесс со стороны — тем она лучше отлажена.



      Чтобы узнать, как работает Shopfans изнутри, я отправился туда, где творится магия: бесперебойная манипуляция тысячами посылок разного веса, объёма и содержания — на склад компании «Шопфанс» по знакомому её клиентам адресу 700 CARPENTERS XING FOLCROFT, PA 19032, U.S.A.
      Осторожно, много фоток!
    • Реализация некоторых задач для самосборного NAS

      Привет, Хабр. Наконец-то я созрел для того, чтобы собрать своё собственное сетевое хранилище. Цели и задачи простые — скачивание торрентов, раздача контента по DLNA на IPTV-приставку MAG-245, iPad Mini первого поколения и смартфон на ОС Windows Phone. С учетом того, что необходимая база у меня уже была, а именно — материнская плата Intel D425KT форм-фактора mini-ITX с встроенным двухъядерным процессором Atom с пассивным охлаждением; 2 гигабайта ноутбучной оперативной памяти, и ноутбучный же HDD Seagate 750Gb. Докупил только корпус 3Cott M01, в комплекте с которым шел блок питания ноутбучного типа и адаптер для него.
      Читать дальше →
      • +10
      • 21,2k
      • 1
    • Домашний медиа-сервер на основе Ubuntu Server 12.04 LTS

      • Tutorial
      Привет, Хабр! В ходе обсуждения одной статьи про «идеальную» домашнюю сеть, возник спор, что лучше, аппаратный NAS или мини-компьютер с Linux дистрибутивом. Автор предлагал использовать аппаратный NAS, т. к. якобы он проще в администрировании, не требует знаний Linux, да и вообще NAS тихий. Но при этом, для просмотра на DLNA-телевизоре видео, который он не поддерживает, предлагал включать ноутбук с транскодирующим DLNA. Меня это, мягко говоря, удивило, т. к. в идеальной сети такого быть не должно. Поэтому хочу представить своё видение одного из ключевых компонентов домашней сети — централизованного хранилища данных, и основано оно будет на мини-ПК с ОС Ubuntu Server.
      Читать дальше →
    • Питание 9/12-вольтовых SOHO-маршрутизаторов от USB-источника

      Самодельный переходник-преобразователь для питания распространенных SOHO-маршрутизаторов, требующих напряжения 9/12 В, от любого 5-вольтового источника достаточной мощности с разъемом USB.



      Предыстория


      Несколько лет назад у меня завелась пара USB/WiFi-маршрутизаторов Sapido RB-1842. Один я таскал с собой в поездки, чтобы удобнее было раздавать отельный/квартирный/мобильный интернет, а второй поставил стационарно в сельском доме, где интернет доступен только мобильный. Довольно скоро выяснилось, что обоим нужно автономное питание: возимый с собой иногда приходилось ставить на балкон, чтобы ретранслировать WiFi из отельного холла или соседнего кафе, а в деревне регулярно отключают свет на 10-20-40 минут — ноутбуки и гаджеты работают, базовая станция тоже, а интернета нет.

      Порадовавшись, что модель пятивольтовая, я отрезал кабели от блоков питания маршрутизаторов, поставив в разрыв разъемы USB «мама/папа» и при нужде запитывал их от обычных повербанков. При этом один из купленных у китайцев безымянных повербанков оказался способен при наличии входного напряжения одновременно заряжать батарею и давать энергию на выходе, а при пропадании — переключаться на батарею. То есть, получился прекрасный пятивольтовый UPS, которого хватало где-то на час-полтора (в том повербанке два аккумулятора 18650) и за которым не требовалось никакого присмотра.
      Читать дальше →
    • Сага о светодиодных лампах. Часть 2 — о том, чего не пишут на коробках

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


        Читать дальше →
      • Особенности работы Android TV box с multicast вещанием

        Однажды мне захотелось найти среди недорогих 2-х ядерных андроид ТВ приставок такую, которая просто будет работать с HD ТВ каналами, транслируемыми провайдерами в моём городе. Оказалось, что из 4-х купленных приставок с чипами RK3066, Allwinner А20, Amlogic 8726-MX только одна корректно и без зависаний видео воспроизводит HD каналы, получаемые в мультикаст режиме. При этом просмотр фильмов с разрешением 1080p с внутренней памяти или «флешки» происходил качественно на всех приставках. Итак, IPTV приставка CA9-DA (см. рис. 1).
        Читать дальше →
        • +2
        • 78,5k
        • 8
      • Велосипедное приложение Strava получило $18,5 миллионов

          strava
          Известное велосипедное приложение Strava планирует расширить свое присутствие на рынке и добавить возможностей для любителей других видов спорта, используя для этого новую порцию инвестиций размером в 18,5 миллионов долларов от компании с венчурным капиталом Sequoia Capital. Партнер данной компании, известный финансист Михаэль Мориц, стал консультантом для Strava. Мориц считает, что нынешнего своего успеха приложение Strava смогло достичь благодаря тому, что фактически функционирует как спортивная социальная сеть, наподобие Facebook и других.
          Читать дальше →
        • Raspberry Pi — что можно сделать на основе «малинки»?



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

            Как результат — интересные проекты стали появляться с завидной регулярностью, и часть таких проектов представлены в этой подборке. Здесь есть и вполне серьезные системы, и проекты, которые можно назвать развлекательными, из серии «а почему бы и нет?».

            Читать дальше →
          • Сравнение бюджетных беспроводных комплектов сигнализаций Китайского, Тайванского и Украинского производства

            В этой статье я постараюсь для себя и моих читателей разобраться, какая gsm сигнализация лучше для покупки, что бы ее качество и функциональность соответствовали количеству потраченных на неё денег. Для большей информативности эксперимента я решил протестировать «сигналки» от производителей из разных стран, одна из которых – Украина. К вашему вниманию, в «легкой» (дважды подчеркну — «легкой»; большая просьба к поклонникам Viewsonic, LifeSOS, Satel, Ajax и других монстров, не сравнивайте проф. системы с сигнализациями для домашнего пользования) ценовой категории: Tenex Guard 5050 G – Китай; Altronics Al-100 KIT – по заявлениям поставщиков Тайвань; Страж Avizor KIT с громким, патриотичным заявлением о происхождении в Украине.

            image

            Читать дальше →
          • То, чего еще никто не писал про Нокиа, Элопа и горящую платформу

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

              Традиционно, для тех кто не любит много буков, краткие (более-менее) тезисы:

              • Будучи долгое время лидером на рынке, Нокиа сильно расслабилась и загадила свою внутреннюю инфраструктуру бюрократией, чрезмерным аутсорсингом и огромным количеством бесполезной «менеджерской прослойки».
              • Будучи долгое время лидером, Нокиа просрала потратила много денег на ненужные операционные расходы, поглощения никому не нужных фирм и на невменяемую модель аутсорсинга.
              • Полностью оторвавшись от реальности с уходом Йормы Оллилла, Нокиа, под управлением гениального юриста CEO Олли-Пекки Каласвуо, потратила кучу денег и усилий на создание бесполезной и неконкурентоспособной сервисной инфраструктуры Ovi. В результате этого, помимо денег, Нокиа потеряла уйму полезного времени, которое можно и нужно было потратить на развитие основного бизнеса — телефонов, софта и т.д.
              • Бюрократия и непотопляемая менеджерская прослойка в Нокиа, последовательно мигрировала из одного передового проекта в другой, в составе одних и тех же групп лиц, самореплицируясь в виде кучи формальных дебилопроцессов комитетов и управленческих групп, немного перетасовываемых с учетом специфики. В итоге именно эта бюрократия убила и Symbian, и Ovi, и MeeGo и остальные попытки догнать уходящий поезд своими силами.
              • Борьба с бюрократией и прослойкой в Нокиа зашла в полный тупик.
              • У великого CEO Элопа просто не было другого выхода кроме как прибить всю старую, неповоротливую и прогнившую организацию, путем создания альянса с Майкрософтом и переходом на Windows Phone. Тем самым все старые процессы, компетенции, технологии и самое главное — люди резко стали, что называется, «не в тему». И следовательно тем самым можно было под благовидным предлогом прибить этот табун менеджеров, бесконечно рисующих фэнтезийные роадмапы с единорогами и перекладывающих бумаги с левого края стола на правый.
              • Новая Нокиа, после 2011 года и старая Нокиа до 2011 года – это две РАЗНЫЕ организации. Их объединяет только общее название и операционка S40 для телефонов Asha.
              • Горящая платформа, это не Symbian и не MeeGo. Горящая платформа, это то состояние в которое Нокиа загнали годы расслабленного лидерства и тупоголовые амбиции предыдущего CEO – Олли-Пекки Каласвуо с кликой подкаркивающих вице-президентов.
              • С бюрократией и бизнес процессами, имеющимися на 2010 год, Нокиа не спас бы ни Андроид, ни половина населения Бангалора, пишущих на Qt под MeeGo. Даже если бы Apple бесплатно передал Нокиа iOS и все сервисы, то они бы выродились руками всяких Requirement Managerов в типичные Нокийские дизайн-химеры и в итоге загнулись через какое-то время.
              • То, что сделал великий CEO Элоп – было единственно возможным разумным решением, дающим хоть какие-то шансы на выживание. Вопрос «каким образом он это сделал?», остается открытым, равно как и вопрос «поможет ли это Нокиа?» в итоге. Не следует забывать, что нынешняя Нокиа — это совершенно новая организация, поэтому глупо предполагать, что она разом вернет себе лидерство. Как и всем новым организациям ей придется за это лидерство долго бороться.
              • Без ошибок и побед Нокиа никогда не было бы ни Андроида, ни Айфона. И Google и Apple тщательно проанализировали достоинства и недостатки более старших конкурентов перед тем как шагнуть вперед.

              Все это в деталях — под катом. Предупреждаю что клевых картинок там нет. Сплошное графоманство и ёрничанье.
              Читать дальше →
            • Ebay. Украина. О таможне и пересылках — 2012

                Небольшое предисловие. В 2010 году на Хабре был опубликован пост Ebay. Украина. О таможне и пересылках, в котором aevdox рассказал о нюансах доставки товаров с Ebay применительно к Украине и, особенно, об украинских таможенных правилах. Прочитав этот пост, я почувствовал, что мне есть, что к нему добавить, и, не будучи хабражителем, написал письмо автору. Так там появился «Upd # 3».

                Вчера вечером со мной неожиданно связался aevdox и сообщил, что, во-первых, ему пишут, что информация 2010 года устарела и было бы полезно привести статью в актуальное состояние, во-вторых, он готов стать моим хабрапапой. Таким образом и получился этот пост. Далее по тексту я предполагаю, что читатель уже знаком с первоначальным постом и воспринимает этот как его логичное продолжение.

                А теперь к сути. С принятием в 2012 году нового Таможенного кодекса Украины (далее – ТК) и его вступлением в силу информация в статье «Ebay. Украина. О таможне и пересылках» сразу же безнадёжно устарела. Прежде всего потому, что новый кодекс отменил нормативно-правовые акты, на которые я ссылался в своём дополнении (Закон № 2681-III, Постановление Кабмина № 1652), и теперь эти отношения регулирует сам кодекс. Регулирует он их уже иначе. Я попытался разобраться с тем, что же изменилось для нас, простых покупателей с Ebay, и соответственно актуализировать информацию в статье.

                Если вкратце – «жить стало легче, жить стало веселей».
                Подробности далее
              • Обзор Bluetooth-спикерфона Parrot MINIKIT Neo: разговор «без рук» в машине

                  Отказаться от разговоров за рулем практически невозможно. Исключение могут составлять разве что автомобилисты, выезжающие на дорогу несколько раз в неделю или те, кому разговаривать попросту не скем. В противном случае приходится заботиться о том, чтобы минимально отвлекаться на телефон при вождении. То есть позаботиться о неком дополнительном устройстве с функцией hands-free. В результате внимание не рассеивается, руки остаются на руле, а ценный звонок не пропущен. Далеко не все граждане приобретают автомобили в комплектации, отличной от базовой. Как результат встроенная громкая связь по умолчанию отсутствует – и встает необходимость изучения способов «безрукого» управления телефоном. Целенаправленный поиск привел меня к девайсу под названием Parrot Minikit Neo. Это ни что иное как спикерфон – устройство громкой связи с подключением к телефону по Bluetooth.


                  Картинки и текст под катом
                • Заземление. Что это такое и как его сделать (часть 1)



                    Мой рассказ будет состоять из трёх частей.

                    1 часть. Заземление
                    (общая информация, термины и определения)


                    2 часть. Традиционные способы строительства заземляющих устройств
                    (описание, расчёт, монтаж)


                    3 часть. Современные способы строительства заземляющих устройств
                    (описание, расчёт, монтаж)


                    В первой части (теория) я опишу терминологию, основные виды заземления (назначение) и предъявляемые к заземлению требования.
                    Во второй части (практика) будет рассказ про традиционные решения, применяемые при строительстве заземляющих устройств, с перечислением достоинств и недостатков этих решений.
                    Третья часть (практика) в некотором смысле продолжит вторую. В ней будет содержаться описание новых технологий, используемых при строительстве заземляющих устройств. Как и во второй части, с перечислением достоинств и недостатков этих технологий.

                    Если читатель обладает теоретическими знаниями и интересуется только практической реализацией — ему лучше пропустить первую часть и начать чтение со второй части.

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

                    Мой взгляд на описанные методы и решения в какой-то степени однобокий. Прошу читателя понимать, что я не выдвигаю свой материал за всеобъемлющий объективный труд и выражаю в нём свою точку зрения, свой опыт.

                    Некоторая часть текста является компромиссом между точностью и желанием объяснить “человеческим языком”, поэтому допущены упрощения, могущие “резать слух” технически подкованного читателя.

                    Читать дальше →
                  • В поисках удобного источника питания, обзор внешнего аккумулятора на 6000мАч


                    Введение

                    В нашем институте введена бальнорейтинговая система, благодаря этому хочешь ты или нет, но для хорошей оценки необходимо посещать пары на 146%. Поэтому с каждым днем все острее становилась проблема смены Nokia x6, отсутствие приложений и сильные лаги браузера на каждой второй странице только ускоряли процесс. И вот, три месяца назад я приобрел Samsung Galaxy R с чипом Tegra 2, в первые дни аппарат из рук практически не выпускал, и быстрый разряд батареи списывал на излишний интерес к девайсу. Время шло, интерес постепенно спадал, и в конце концов установился на определенном уровне, но увы заряда аккумулятора не всегда хватало чтобы вернуться домой слушая музыку. В связи с этим начался поиск источников дополнительной энергии.
                    Осторожно, под катом 5Мб фотоматериалов.
                    Читать дальше →