• Хочешь быть iOS разработчиком? Будь им!

    На хабре в прошлом месяце была опубликована статья Конкурс ВК: Мессенджер для Android. Как это было!, в которой автор поделился своими мыслями о конкурсе и опубликовал список ресурсов и статей, которые помогли ему в создании приложения. Так как в последнее время я начал изучать разработку под iOS, то у меня скопилось некоторое количество ссылок, которые могут быть полезны для начинающих. Поэтому я последую его примеру и сделаю то же самое, только для своей платформы. Надеюсь, кому-нибудь они окажутся полезны и сэкономят немного времени.

    Читать дальше →
  • Техники захвата внимания пользователя — от фокусника и специалиста по вопросам дизайнерской этики в Google

    • Translation
    Я эксперт в области того, как в технологиях используются слабые места нашей психики. Вот почему я проработал последние три года как специалист Google по этике в дизайне. Моя работа состояла в проектировании ПО таким образом, чтобы защитить умы миллиарда людей от «уловок».

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

    Как технология эксплуатирует слабые места нашего разума?


    Я научился так думать, когда был фокусником. Фокусники всегда начинают с поиска слепых пятен, краев, уязвимостей и пределов восприятия, так что они способны влиять на поведение людей, а последние даже не осознают этого. После того, как вы узнаете, как правильно нажимать на эти людские «кнопки», вы можете начать играть на них, будто на фортепиано.

    image
    Это я, творящий «волшебство» при помощи ловкости рук, на дне рождения моей матери

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

    И я хочу показать вам, как они это делают.
    Читать дальше →
  • Построение Android приложений шаг за шагом, часть первая



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

        image
        Ключевые моменты:
        * Реализация скрипта для проверки PTR посетителей;
        * Конфигурирование nginx в IfIsEvil-style с ветвлениями map;
        * Имена location в переменных map;
        * Управление ветвлением через try_files /nonexist $map_var.

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

        Читать дальше →
      • Проектирование в PostgreSQL документо-ориентированного API: Полнотекстовый поиск и сохранение многих документов(Часть 2)

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

        Давайте сделаем это.
        Читать дальше →
      • С чего начать новичку в Go

        • Tutorial
        Если вы решили попробовать замечательный язык Go, но не знаете с чего начать, вам прямая дорога в этот пост, где я постарался перечислить все необходимые для новичков ресурсы.
        Читать дальше →
      • Мифы и рецепты Docker

        Вокруг постоянно говорят про Docker. Я знаю что вы отвечаете: «Это что-то про контейнеры, виртуализацию, облака», «У нас все и так работает», «Это все баловство», «Он не запустится на нашем старом ядре линукса», «Точно так же можно подготовить образ для облака и запустить его», «Можно просто настроить LXC, chroot или AppArmor». Вы знаете, что он вам не нужен. Очередная модная штука. В конце концов, просто лень разбираться. Но любопытно! Тогда, читайте. Это серия из шести заметок.

        Если вы не слышали о контейнерах в Линуксе, вот список страниц, которые надо прочитать, чтобы понимать о чем речь:


        Поставьте Docker, он небольшой. Для Windows и Mac можно просто поставить Toolbox: www.docker.com/toolbox. Создавать виртуальную машину и настраивать лучше из командной строки, а не через графическую обертку. Прочитайте несколько уроков из мануала. Здесь я пишу о том, чего в документации нет.

        Docker — это не виртуализация.


        Вот какой у меня линукс:

        Welcome to Ubuntu 15.04 (GNU/Linux 3.19.0-15-generic x86_64)
        
        Last login: Tue Aug 18 00:43:50 2015 from 192.168.48.1
        gri@ubuntu:~$ uname -a
        Linux ubuntu 3.19.0-15-generic #15-Ubuntu SMP Thu Apr 16 23:32:37 UTC 2015 x86_64 x86_64 x86_64 GNU/                                       Linux
        gri@ubuntu:~$ free -h
                     total       used       free     shared    buffers     cached
        Mem:          976M       866M       109M        11M       110M       514M
        -/+ buffers/cache:       241M       735M
        Swap:         1.0G       1.0M       1.0G
        

        Запускаю CentOS:

        gri@ubuntu:~$ docker run -ti centos
        [root@301fc721eeb9 /]# uname -a
        Linux 301fc721eeb9 3.19.0-15-generic #15-Ubuntu SMP Thu Apr 16 23:32:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
        [root@301fc721eeb9 /]# cat /etc/redhat-release
        CentOS Linux release 7.1.1503 (Core)
        [root@301fc721eeb9 /]# free -h
                      total        used        free      shared  buff/cache   available
        Mem:           976M         85M        100M         12M        790M        677M
        Swap:          1.0G        1.0M        1.0G
        

        Docker — это не chroot, их функционал частично совпадает. Это не система безопасности вроде AppArmor. Docker использует те же контейнеры, что и LXC, но интересен он не контейнерами. Docker — это ничего из того, что я думал о нем до того, как прочитал документацию.

        То же ядро, память, файловая система, а дистрибутивы, библиотеки и пользователи — разные.

        Docker — это инструмент объекто-ориентированного проектирования


        Регулярно возникает вопрос, является ли конфигурация nginx частью веб-приложения. Системные администраторы спорят с разработчиками. Но недавно в мире появились devops и захотели вместо последовательно-процедурного вызова команд из bash думать привычным OOP. Docker дает инкапсуляцию, наследование и полиморфизм компонентам системы, таким как база данных и данные. Это значит, что можно провести декомпозицию всей информационной системы, выделить приложение, web-сервер, базу данных, системные библиотеки, рабочие данные в независимые компоненты, внедрять зависимости из конфигов, и заставить все это работать одной группой, одинаково на разных компьютерах.

        Такой подход можно использовать, чтобы снизить потери рабочего времени дорогих front-end разработчиков на настройку базы данных и Nginx. Чтобы уйти от vendor lock-in. Не обломаться когда openssl на сервере не поддерживает cipher, используемый в API госучреждения. Чтобы приложение работало независимо от версии PHP или Python на сервере заказчика. Создавать open source не только в виде кода, но и настройкой пакетов из нескольких приложений, написанных на разных языках, работающих на разных слоях OSI.
        Читать дальше →
      • Big Data от А до Я. Часть 1: Принципы работы с большими данными, парадигма MapReduce

        • Tutorial

        Привет, Хабр! Этой статьёй я открываю цикл материалов, посвящённых работе с большими данными. Зачем? Хочется сохранить накопленный опыт, свой и команды, так скажем, в энциклопедическом формате – наверняка кому-то он будет полезен.



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



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


        Читать дальше →
      • Абсолютный минимум. Как квантовая теория объясняет наш мир

          Привет, Хаброжители!
          Мы пополнили нашу серию New Science книгой Майкла Файера

          image

          Физика — это сложнейшая комплексная наука, она насколько сложна, настолько и увлекательна. Если отбросить математическую составляющую, физика сразу становится доступной любому человеку, обладающему любопытством и воображением. Мы легко поймем концепцию теории гравитации, обойдясь без сложных математических уравнений. Поэтому всем, кто задумывается о том, что делает ягоды черники синими, а клубники — красными; кто сомневается, что звук распространяется в виде волн; кто интересуется, почему поведение света так отличается от любого другого явления во Вселенной, нужно понять, что все дело — в квантовой физике.
          Эта книга презентует (и демистифицирует) для обычных людей волшебный мир квантовой науки, как ни одна другая книга. Она рассказывает о базовых научных понятиях, от световых частиц до состояний материи и причинах негативного влияния парниковых газов, раскрывая каждую тему без использования специфической научной терминологии — примерами из обычной повседневной жизни. Безусловно, книга по квантовой физике не может обойтись без минимального набора формул и уравнений, но это необходимый минимум, понятный большинству читателей. По мнению автора, книга, популяризирующая науку, должна быть доступной, но не опускаться до уровня читателя, а поднимать и развивать его интеллект и общий культурный уровень.Написанная в лучших традициях Стивена Хокинга и Льюиса Томаса, книга популяризирует увлекательные открытия из области квантовой физики и химии, сочетая представления и суждения современных ученых с яркими и наглядными примерами из повседневной жизни.
          Читать дальше →
        • 7 правил создания красивых интерфейсов

          • Translation


          Недавно мы в «Я люблю ИП» закончили курсы по дизайну от trydesignlab.com. И это одна из самых важных статей, которую нам посоветовал ментор в процессе обучения. Именно поэтому мы решили её перевести. Посмотреть все наши работы с курсов можно в ВКонтакте по тэгу #design101@iloveip.

          Вступление


          Сначала о главном. Это руководство не для всех. Это руководство прежде всего для:
          • разработчиков, которые хотят уметь делать хорошие интерфейсы для себя, если вдруг прижмёт;
          • UX-дизайнеров, которые знают, что хороший UX-дизайн продаётся лучше в красивой UI-упаковке.

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

          А пока давайте я расскажу, что вы найдёте в этой статье.

          Читать дальше →
        • Дайджест продуктового дизайна, май 2015

            Уже пять лет я публикую регулярные обзоры свежих статей по теме интерфейсов, новых инструментов и коллекций паттернов, интересных кейсов и исторических рассказов. Из лент нескольких сотен тематических подписок отбирается примерно 5% стоящих публикаций, которыми интересно поделиться. Предыдущие материалы: апрель 2010-апрель 2015.

            Дайджест продуктового дизайна, май 2015
            Читать дальше →
            • +24
            • 14.7k
            • 1
          • Социальная сеть на Android за несколько выходных — часть I (клиент)

            • Tutorial

            Введение


            Несмотря на обилие социальных сетей, за последние несколько лет появился целый ряд новых, оригинальных и необычных социальных приложений, таких как just yo, snapchat, secret, и пр. Успех приложения just yo, ограниченного единственной функцией – отправкой сообщения фиксированного содержания, меня заинтересовал и мы с друзьями тоже решили попробовать написать очередную социальную сеть на Android. Нашей целью было очертить круг задач общий для большинства подобных приложений, предложить их решения и подготовить скелет, из которого каждый сможет сделать что-то своё и оригинальное, не тратя время на решение рутинных вопросов. С результатами работы можно сразу ознакомиться на githubandroid клиент и сервер на ruby on rails.
            Читать дальше →
            • +20
            • 56.2k
            • 7
          • oDesk умер, да здравствует Upwork

              image

              5 мая 2015 года в разгар рабочего дня в Европе и без объявления войны крупнейшая фриланс-биржа мира oDesk прекратила своё существование. Вместо привычного интерфейса фрилансеры и клиенты, решившиеся заглянуть на odesk.com, были переведены на сайт в зелёном цветовом оформлении, расположенном по адресу upwork.com. Согласно сообщению, размещённому на главной странице ресурса, отныне oDesk — это Upwork.

              Нынешние перемены — по сути, первое крупное изменение на бирже с момента объединения oDesk и Elance, которое произошло больше года назад. CEO Elance-oDesk Стефан Касриэль в корпоративном блоге назвал новый дизайн «дружелюбным к пользователям мобильных устройств» и «упрощённым». Вместе с перезапуском oDesk в обличии Upwork было объявлено о выпуске приложения для Android и iOS, которым стал мессенджер.
              Читать дальше →
            • Вёрстка адаптивных email-писем: подробное руководство (часть 1)

              • Translation


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

              Зачем нужно адаптировать письма для мобильных устройств


              Значительная часть аудитории различных компаний, занимающихся email-маркетингом, просматривают письма на мобильных устройствах. Во время исследования Campaign Monitor от 2011 года выяснилось, что почти 20% открытий писем происходили на смартфонах и планшетах — в 2009 году эта цифра находилась на уровне всего в 4%. Почти 90% от этих открытий осуществлялись на устройствах под iOS. Сейчас цифры еще выше.

              В этом руководстве мы рассмотрим несколько способов улучшения отображения почтовых рассылок на мобильных устройствах (от использования media queries при вёрстке адаптивных шаблонов до более продвинутых техник). Кроме того, мы рассмотрим различные вопросы дизайна, которые возникают еще на этапе планирования рассылки, а также поговорим о том, каким образом стоит размещать формы подписки для получения писем на смартфонах и планшетов.
              Читать дальше →
            • 26 советов начинающим стартаперам от опытного предпринимателя

              • Tutorial
              *Эта статья впервые была опубликована в журнале Forbes от 27 Июня 2014 года. На Хабре публикуется её полная версия.

              Вот уже 9 лет я занимаюсь интернет-бизнесом и за это время успел создать и вывести на прибыльность 5 собственных стартапов. Кроме того, один из основных моих бизнесов – это заказная веб-разработка, куда часто приходят клиенты, которые хотят разработать свой интернет-стартап и поэтому я все 9 лет каждый день сталкиваюсь с разными проектами, многие из которых являются стартапами в полном смысле этого слова.
              Читать дальше →
            • [ПЕРЕВОД] Аутентификация на основе JSON Web Token в Django и AngularJS: часть первая

              Наиболее распространенным методом аутентификации является аутентификация с использованием cookie файлов. Более современный метод аутентификации основан на использовании JSON Web Token (дословно: вэб маркер в формате JSON) и он быстро набирает популярность. В этой статье мы сосредоточимся на нем.

              Что такое JSON Web Token?


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

              JSON Web Token – это простой маркер в специальном формате. Пока формат не стандартизован, но многие уже используют одну из его реализаций (JWT).

              JWT (произносится как jot) состоит из трех частей:
              • Заголовок
              • Полезная нагрузка
              • Подпись

              Давайте рассмотрим каждую из них, прежде чем углубимся в реализацию.
              Читать дальше →
              • +14
              • 69.7k
              • 5
            • Что такое «хорошее» ТЗ на сайт?

                caricat.gifЯ могу припомнить на удивление мало материалов, посвященных проектированию сайтов и программ на русском языке, написанных русскоязычными авторами. Этому способствует и преимущественно экспортно-ориентированная разработка (оффшор) и отсутствие массового опыта создания информационных продуктов в нашей стране.
                Надеюсь, что эта статья пригодится тем разработчикам и IT-менеджерам, кто ощутил перед собой проблему составления качественных документов на разработку сайта. Документов, которые кроме испорченной бумаги были бы хоть чем-то полезны.
                Читать дальше →
              • Иерархическая Темпоральная Память (НТМ) и алгоритмы ее самообучения

                • Translation
                Привет всем Хабражителям, кто интересуется вопросами искусственного интеллекта! Всех с Прошедшими праздниками! Пора двигаться дальше.

                В конце прошлого года я закончил перевод последней версии документа о «Hierarchical Temporal Memory» (HTM), который теперь можно найти рядом с оригиналом на сайте Numenta.com.

                Что это такое и зачем оно все? Это последняя разработка весьма небезысвестного Джеффа Хокинса сотоварищи, моделирующая работу отдельных слоев коры головного мозга. Эта штуковина позволяет (если не накосячить все сделать правильно) выделять из входного потока данных сходные события, их последовательности, проводить их распознавание и предсказание. Всех, кого интересуют подробности, милости прошу под хабракат.

                Читать дальше →
              • Трафик из Яндекс.Директ: грузите посетителей по центу


                  Можно ли приводить много заинтересованных посетителей из Директа по 30 копеек за посетителя? Можно и нужно, особенно, если ваш ресурс только встает на ноги и нужно быстро и недорого привести на сайт заинтересованных людей.

                  Это – пошаговое руководство для тех, кто хочет знать, каким боком из Яндекс Директ (на вполне законных, между прочим, основаниях) привлекать недорогой трафик по 0.01 у.е или 30 копеек за переход.
                  Читать дальше →
                • По следам интеллекта

                    По следам интеллекта


                    С момента первых попыток моделировать процессы, протекающие в человеческом мозге, наука прошла множество ступенек приближающих нас к ИИ. Но мозг человека, совершает пока что неподъемную и слабо отслеживаемую работу по непрерывной обработке потока сенсорной информации. Я попытаюсь осмысленно рассказать основные вехи эволюции искусственных нейронных сетей (ИНС).
                    Читать дальше →