• Исследуем RxJava 2 для Android

    • Перевод

    enter image description here


    Меня зовут Аркадий, я Android-разработчик в Badoo. В последнее время в нашем блоге много постов про Go, PHP, JS, QA, и я решил разбавить их темами по мобильной разработке. Как раз занимался портированием одного Android-проекта с RxJava 1 на RxJava 2 и читал всё, что можно найти на эту тему в интернете. В частности, доклад Джейка Вортона с конференции GOTO Copenhagen 2016. Мне показалось, что это достойный кандидат на перевод – думаю, многие Android-разработчики задумываются о переходе на RxJava 2, и им интересно, что изменилось по сравнению с первой версией.


    Джейк сделал достаточно объёмное введение о реактивном программировании, так что знание RxJava 1 не требуется для понимания статьи. Доклад был подготовлен, когда RxJava2 ещё только готовилась к выпуску (на текущий момент уже выпущена версия 2.1.0).

    Читать дальше →
    • +40
    • 161k
    • 5
  • Java собеседование. Коллекции

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

      На прошлой неделе я ходил на собеседование, и основной вопрос ко мне был такой: «Почему вы решили поменять профессию и стать программистом?». В конце собеседования человек, который проводил собеседование — руководитель отдела перспективных разработок одной IT компании — прямо сказал: "… я вас не понимаю, вы претендуете на позицию, которая явно ниже вашей и по уровню оклада, и по должности, да в общем и не такая интересная, как ваша работа сегодня..."
      Читать дальше →
    • Как не потерять деньги, желая сэкономить. Правила интернет покупок из-за рубежа

            Давно собирался написать эту статью, но все не находил на это время. Последней каплей, подтолкнувшей меня к изложению аккумулированного за шесть лет опыта покупок за рубежом стали две статьи о массовом разводе дешевыми Киндлами, изложенные на хабре. Случай, когда такое количество человек попало на обычный для Ебея развод показал, что эта тема освещена недостаточно и людям не хватает базовых знаний в вопросе безопасности покупок.
            Ниже, я попытаюсь изложить то, что почерпнул за годы покупок как на своем опыте, так и из жалостливых писем с мольбами о помощи от коллег покупателей на профильных форумах. Все нижеизложенное я считаю тем минимумом, который необходимо усвоить ДО того, как пытаться что либо купить за рубежом. Более тонкие вещи можно почерпнуть на соответствующих тематических форумах.

        Итак, начнем. Заранее прошу прощения за большое количество текста и излишнее словоблудие.
        Читать дальше →
      • Учебник по контекстной рекламе (Бабаев, Евдокимов, Иванов)

          imageВсем привет. Мне тут на рецензию дали книжку по контекстной рекламе.

          До этого на рынке видел только два материала на эту тему — от Бегуна и от Яковлева. Тема была раскрыта не полностью.

          Ну что, давайте по плюсам:
          — Нормальный дизайн (что редкость в нашей среде), качественная бумага (приятно в руках держать), низкая цена
          — Ребята собрали под одной обложкой лучших практиков Рунета. Я, правда, не всех знаю. Но квалификация того же Довжикова, Бабаева, Амилющенко, Веселова, Кучумова и еще 2-3 человек не вызывает сомнений
          Читать дальше →
        • На пороге дополненной реальности: к чему готовиться разработчикам (часть 2 из 3)


            Это продолжение (см. часть 1) стенограммы одноименного доклада с конференции ADD-2010.

            В этой части речь пойдет о том, как обрабатывать данные с сенсоров, а именно: акселерометров, гироскопов и магнитных компасов. И зачем в современных устройствах ставят все три вида датчиков.
            Читать дальше →
          • «Memory Component Issue», или масштабный брак сетевого оборудования

              Подтвердилось существование проблемы, о которой многие догадывались.

              Cisco объявили, что неназванный производитель памяти в течение пяти лет (с 2005 по 2010) поставлял им брак. Характер брака: оборудование с этой памятью может годами копить аптайм, не вызывая никаких нареканий к своей работе, но стоит перезагрузить его (по питанию или даже простым reload) — память перестает корректно работать, само устройство либо не загружается, либо загружается и периодически падает. Связано это с деградацией чипов памяти. По заявлению вендора, основные проблемы начинаются после двух лет эксплуатации.

              Прежде чем в Cisco полетят тухлые помидоры, спешу предупредить: память стандартная, многие вендоры ее закупали, потому затронуто может быть великое множество единиц оборудования. Есть подтверждение об аналогичных проблемах у Juniper. Но только Cisco сознались, несмотря на неизбежный репутационный ущерб. Их финансовые потери из-за этой катастрофы составляют около 655 миллионов долларов.
              Читать дальше →
            • Как это сделано: парсинг статей



                Для меня всегда было некоей магией то, как Getpocket, Readability и Вконтакте парсят ссылки на страницы и предлагают готовые статьи к просмотру без рекламы, сайдбаров и меню. При этом они практически никогда не ошибаются. А недавно подобная задача назрела и в нашем проекте, и я решил копнуть поглубже. Сразу скажу, что это «белый» парсинг, вебмастеры сами добровольно пользуются нашим сервисом.
                Читать дальше →
              • Самодельный тепловизор на базе Arduino менее чем за 100$


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

                  Я болен авиацией. Да, именно так и никак иначе. На моем ноутбуке хранится куча мануалов к различным самолётам от Boeing и Airbus, пособия по радиообмену, фильмы по авиационной тематике. Помимо всего этого я слушаю авиадиапазон с помощью портативной радиостанции (которая, кстати, не имеет возможности передавать на этих частотах, только слушать!). И плюс ко всему я регулярно, раз или два в месяц выбираюсь к аэропорту Шереметьево и фотографирую самолёты, заходящие на посадку. В этом посте я расскажу, как докатился до такой жизни. Может быть кто-то из вас, уважаемые читатели, тоже заболеет авиацией.
                  Кому интересно — прошу под кат.
                  Читать дальше →
                • Фильтр Калмана

                  • Tutorial


                  В интернете, в том числе и на хабре, можно найти много информации про фильтр Калмана. Но тяжело найти легкоперевариваемый вывод самих формул. Без вывода вся эта наука воспринимается как некое шаманство, формулы выглядят как безликий набор символов, а главное, многие простые утверждения, лежащие на поверхности теории, оказываются за пределами понимания. Целью этой статьи будет рассказать об этом фильтре на как можно более доступном языке.
                  Фильтр Калмана — это мощнейший инструмент фильтрации данных. Основной его принцип состоит в том, что при фильтрации используется информация о физике самого явления. Скажем, если вы фильтруете данные со спидометра машины, то инерционность машины дает вам право воспринимать слишком быстрые скачки скорости как ошибку измерения. Фильтр Калмана интересен тем, что в каком-то смысле, это самый лучший фильтр. Подробнее обсудим ниже, что конкретно означают слова «самый лучший». В конце статьи я покажу, что во многих случаях формулы можно до такой степени упростить, что от них почти ничего и не останется.
                  Читать дальше →
                • Nginx+php-fpm+perl под Debian Squeeze

                  • Tutorial

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

                  В качестве теста решил перевести все свои сайты на nginx, до этого все работало на Apache из состава ZendServerCE. Интересно было пробовать насколько сложно будет полностью переехать на новый для себя веб-сервер, ведь используется несколько CMS (DLE, Wordpress, самописныеCMS).

                  Задачи:
                  • базовая работа web сервера — обработка html;
                  • запуск php скриптов;
                  • корректная работа phpmyadmin для всех сайтов на сервере;
                  • запуск cgi и pl скриптов;
                  • использование кеширования и подбор оптимальных параметров для увеличения производительности.


                  Имеем свежеустановленный сервер Debian 6 в минимальной установке из netinstall. И так поехали.
                  Читать дальше →
                • Курс лекций «Стартап». Питер Тиль. Стенфорд 2012. Занятие 4

                  • Tutorial

                  Этой весной, Питер Тиль (Peter Thiel), один из основателей PayPal и первый инвестор FaceBook, провел курс в Стенфорде — «Стартап». Перед началом Тиль заявил: «Если я сделаю свою работу правильно, это будет последний предмет, который вам придется изучать».

                  Один из студентов лекции записывал и выложил транскипт. В данном хабратопике я перевожу четвертое занятие. Редактор Astropilot.

                  Занятие 1: Вызов будущего
                  Занятие 2: Снова как в 1999?
                  Занятие 3: Системы ценностей
                  Занятие 4: Преимущество последнего хода
                  Занятие 5: Механика мафии
                  Занятие 6: Закон Тиля
                  Занятие 7: Следуйте за деньгами
                  Занятие 8: Презентация идеи (питч)
                  Занятие 9: Все готово, а придут ли они?
                  Занятие 10: После Web 2.0
                  Занятие 11: Секреты
                  Занятие 12: Война и мир
                  Занятие 13: Вы — не лотерейный билет
                  Занятие 14: Экология как мировоззрение
                  Занятие 15: Назад в будущее
                  Занятие 16: Разбираясь в себе
                  Занятие 17: Глубокие мысли
                  Занятие 18: Основатель — жертва или бог
                  Занятие 19: Стагнация или сингулярность?
                  Читать дальше →
                • Прекратите скручивать!

                  • Tutorial
                  Ну действительно, прекратите. Есть куча прикольных штук для соединения самых разнообразных проводов, а все равно технология «откусить зубами изоляцию, скрутить, замотать изолентой» жива до сих пор.

                  Дальше много текста, фотографий, разборок. Ну все как обычно
                • Wi-Fi: неочевидные нюансы (на примере домашней сети)

                    Сейчас многие покупают точки доступа 802.11n, но хороших скоростей достичь удается не всем. В этом посте поговорим о не очень очевидных мелких нюансах, которые могут ощутимо улучшить (или ухудшить) работу Wi-Fi. Всё описанное ниже применимо как к домашним Wi-Fi-роутерам со стандартными и продвинутыми (DD-WRT & Co.) прошивками, так и к корпоративным железкам и сетям. Поэтому, в качестве примера возьмем «домашнюю» тему, как более родную и близкую к телу. Ибо даже самые администые из админов и инженеристые из инженеров живут в многоквартирных домах (или поселках с достаточной плотностью соседей), и всем хочется быстрого и надежного Wi-Fi.
                    [!!]: после замечаний касательно публикации первой части привожу текст целиком. Если вы читали первую часть — продолжайте отсюда.
                    Читать дальше →
                  • Как распознать кракозябры?

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

                      Итак, вуаля!


                      За источник информации была взята статья из вики. В блок-схеме «UTF-16 → CP 866» означает, что исходная кодировка была «UTF-16», а распозналась она как «CP 866».

                      Как всегда — кликабельно. Исходник в .docx: здесь.
                    • Как правильно сортировать контент на основе оценок пользователей

                      • Перевод


                      В оригинале название звучит как «How Not To Sort By Average Rating». Я подумал, что дословный перевод «Как не сортировать по усреднённому рейтингу» будет малопонятен и хуже отражает содержание статьи.

                      Постановка проблемы


                      Вы занимаетесь веб программированием. У вас есть пользователи, которые оценивают контент на вашем сайте. Вы хотите разместить высоко оцененный контент наверху, а низко оцененный — внизу. Для этого на основе пользовательских оценок вам нужно вычислить некий «рейтинг».

                      Неправильное решение №1

                      Рейтинг= (Число положительных оценок) - (Число отрицательных оценок)
                      

                      Читать дальше →
                    • Запрос номера из реестра «Россвязи»

                        Доброго времени суток!
                        Давно искал инструмент, чтобы быстро можно было узнать принадлежность того или иного телефонного номера к тому или иному оператору связи и/или региону.

                        Всегда использовал для этих задач МТТ, чего, в принципе всегда хватало.
                        Но хотелось чего-то ещё более простого и быстрого.

                        Если Вас также как и меня интересовало что-то подобное, прошу под кат.
                        Читать дальше →
                      • Равномерное выравнивание блоков по ширине

                          Продолжая свои «css-раскопки» возникла новая идея, разобрать по косточкам ещё одну актуальную тему, которая касается равномерного выравнивания блоков по ширине. В принципе мои доскональные исследования я уже запостил у себя в блоге, но так как прошлая моя работа очень понравились Хабра-сообществу, то я решил сделать здесь небольшой краткий обзорчик этой статьи, чтобы ни одна хабра-душа не пропустили её наверняка. Так что, как говорил Гагарин: «Поехали».

                          В общем в задачах вёрстки периодически возникают моменты, когда появляется необходимость выровнять какой-нибудь список по ширине экрана. При этом пункты этого списка должны выравниваться равномерно, прижимаясь своими крайними элементами к границам контейнера, а расстояние между ними должно быть одинаковым.
                          image
                          Читать дальше →
                          • +154
                          • 10,9k
                          • 87
                        • Уязвимость связки PHP+nginx с кривым конфигом

                            Summary


                            Announced: 2010-05-20
                            Credits: 80sec
                            Affects: сайты на ngnix+php с возможностью загрузки файлов в директории с fastcgi_pass




                            Background


                            Зачастую How-To по настройке связки nginx с php-fpm / php-cgi есть подобные строчки:

                            location ~ \.php$ {
                                fastcgi_pass 127.0.0.1:9000;
                                fastcgi_index index.php;
                                fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
                                include fastcgi_params;
                            }
                            

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