• Big Data от А до Я. Часть 4: Hbase

    • Tutorial
    Привет, Хабр! Наконец-то долгожданная четвёртая статья нашего цикла о больших данных. В этой статье мы поговорим про такой замечательный инструмент как Hbase, который в последнее время завоевал большую популярность: например Facebook использует его в качестве основы своей системы обмена сообщений, а мы в data-centric alliance используем hbase в качестве основного хранилища сырых данных для нашей платформы управления данными Facetz.DCA

    В статье будет рассказано про концепцию Big Table и её свободную реализацию, особенности работы и отличие как от классических реляционных баз данных (таких как MySQL и Oracle), так и key-value хранилищ, таких как Redis, Aerospike и memcached.
    Заинтересовало? Добро пожаловать под кат.


    Читать дальше →
  • С чего начинается Elasticsearch

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


    Самое первое и главное заблуждение — "нужен поиск, так бери эластик!". Но в действительности, если вам нужен шустрый поиск для небольшого или даже вполне себе крупного проекта, вам стоит разобраться в теме поподробней и вы откажетесь от использования именно этой системы.

    Читать дальше →
  • Пост для мотивации: как я инвестирую в акции

      Дисклеймер


      • этот документ не является финансовым советом, прост личные мысли по поводу инвестиций, компаний
      • почему я инвестирую в компании, а не крипту/недвиж/крышечки от пива (крипта, недвиж и крышечки у меня, конечно, есть): цель коммерческих компаний — зарабатывать деньги, цель валюты/крышечек — быть средством обмена, а недвиж/etc — заморозить $ где-то вокруг инфляции, ну или как-то так, я инженер, а не экономист, сильно не бейте ¯*(ツ)*/¯
      • мои принципы инвестирования оч простые:
      Читать дальше →
    • На чем писать Android UI-тесты

        Всем привет. Мы в Avokado Project продолжаем рассказывать про автотестирование в Android. Эта статья — обзор и сравнение существующих инструментов для написания UI-тестов.


        Давайте начнем с того, что вспомним, как обычно выглядит процесс тестирования. Будем называть сущность, которая взаимодействует с приложением, клиентом. Для взаимодействия с приложением клиенту обычно доступно несколько интерфейсов: API, REST API, CLI, GUI и т.д. И если, например, API используются клиентами-программами, то GUI используется человеком.


        Ожидания от поведения приложения описываются в спецификации. Задача тестирования — проверить, что поведение приложения соответствует спецификации.


        Читать дальше →
      • Avokado Project

          Всем привет!

          Мы анонсируем старт сотрудничества в формате open-source между «Авито» и «Лабораторией Касперского» — Avokado. Главная цель этого проекта — разработать инструменты, которые упростят жизнь мобильных разработчиков.

          Мы искренне верим в синергию, и что 1+1 может давать в сумме больше двух. Верим, что группа людей с общей целью может достигнуть большего, чем одиночки. Что стоит делиться опытом, знаниями и инструментами, ведь в ответ ты получаешь больше, чем отдаешь. Именно в этом суть open-source.


          Читать дальше →
          • +16
          • 5,7k
          • 1
        • Андрей Терехов: «Можно сколько угодно говорить, что американское лучше, но наша машина никогда не ломается»



            Завкафедрой системного программирования Матмеха СПбГУ, профессор, доктор физмат наук, президент компании «Ланит-Терком» Андрей Николаевич Терехов — о том, как делал первый в СССР транслятор языков Алгол 68 и Ада, о силе обкома КПСС и рождении «Самсона», который никогда не ломался.
            Читать дальше →
          • Kotlin DSL, Fixtures и элегантные UI тесты в Android

              Когда познакомился с Kotlin DSL, подумал: отличная штука, жалко в продуктовой разработке она не пригодится. Однако, я был неправ: он нам помог сделать очень лаконичный и элегантный способ написания End-to-end UI тестов в Android.


              image

              Читать дальше →
            • Шпаргалка по Gradle

                Как мне кажется, большинство людей начинают разбираться с gradle только тогда, когда в проекте что-то надо добавить или что-то внезапно ломается — и после решения проблемы "нажитый непосильным трудом" опыт благополучно забывается. Причём многие примеры в интернете похожи на ускоспециализированные заклинания, не добавляющие понимания происходящего:


                android {
                    compileSdkVersion 28
                    defaultConfig {
                        applicationId "com.habr.hello"
                        minSdkVersion 20
                        targetSdkVersion 28
                    }
                    buildTypes {
                        release {
                            minifyEnabled false
                        }
                    }
                }

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


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

                Читать дальше →
                • +17
                • 39,9k
                • 3
              • Переход на Kotlin в Android-проекте: Tips and Tricks

                • Tutorial

                Автор: Сергей Ешин, Strong Middle Android Developer, DataArt

                Уже более полутора лет прошло с тех пор, как Google объявил об официальной поддержке Kotlin в Android, а самые матерые разработчики начали экспериментировать с ним в своих боевых и не очень проектах больше трех лет назад.

                Новый язык тепло приняли в Android-сообществе, и подавляющая часть новых проектов на Android стартует с Kotlin на борту. Важно и то, что Kotlin компилируется в JVM-байткод, следовательно, полностью совместим с Java. Значит, в существующих Android-проектах, написанных на Java, тоже есть возможность (более того — потребность) задействовать все фичи Kotlin, благодаря которым он и приобрел столько поклонников.

                В статье я расскажу об опыте миграции Android-приложения с Java на Kotlin, трудностях, которые пришлось преодолеть в процессе, и объясню, почему все это было не зря. Статья в большей степени рассчитана на Android-разработчиков, только начинающих изучение Kotlin, и кроме личного опыта, опирается на материалы других членов сообщества.
                Читать дальше →
                • +15
                • 10,4k
                • 2
              • На место героя рубрики «10 вопросов программисту» Виктор Яблоков подходит как нельзя лучше, хотя, по его собственному признанию, давно не кодит— за вычетом SQL-запросов и скриптов для автоматизации работы с продуктовой аналитикой, зато в своё время писал 3D-игры под наладонники и занимался антивирусным движком под Symbian. Чуть забегая вперёд, дополним портрет: первым местом работы Виктора был Cybiko (стартап Давида Яна), а дальше —14 лет в «Лаборатории Касперского», где сегодня он руководит управлением разработки мобильных решений.
                Подробности – под катом
              • Тестирование в Java. Spock Framework

                • Tutorial

                В предыдущих статьях на примерах JUnit и TestNG я упоминал о test-driven development(TDD) и data-driven testing(DDT). Но есть еще один активно набирающий популярность подход, behaviour-driven development(BDD). Это такое развитие TDD техники, при котором на тест смотрят не как на тестирование каких-то компонентов системы, а как на требования к функционалу. Если TDD оперирует такими понятиями, как тест или метод, то для BDD это спецификация и требования. Про эту технику уже говорили на хабре ранее:

                Этот подход применим используя и JUnit, и TestNG. Но есть и другие инструменты заточенные именно под BDD. В этой статье я расскажу про такой фреймворк. Называется он Spock Framework и сочетает в себе не только принципы BDD, но и достоинства Groovy. Да-да, именно Groovy. И хотя используется Groovy, используется он и для тестирования Java кода. Примерами использования могут служить Spring, Grails, Tapestry5. Интересно? Тогда читаем дальше.
                Читать дальше →
                • +30
                • 57,6k
                • 9
              • Три карьерных пути в IT: основатель, руководитель или наёмный работник

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

                Ниже я обрисую преимущества/недостатки и полезные стратегии для каждой роли.

                Я написал эту статью, потому что на удивление часто приходится сталкиваться с людьми, которые при обсуждении карьеры думают только об одном пути, игнорируя другие варианты. Когда другие дают им советы, то часто рекомендуют следовать дальше по этому выбранному пути (как партнёр Y Combinator и бывший основатель я тоже очень виноват в этом).

                Я не даю никаких оценочных суждений каждому из этих путей. За десять лет в Кремниевой долине я видел друзей, которые ведут успешную и полноценную жизнь, будучи в любой из трёх ролей.
                Читать дальше →
              • О смарт-контрактах простыми словами

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

                  Итак давайте попробуем сегодня разобраться, что такое смарт-контракты (умные контракты). Сначала мы достаточно общо обсудим сам концепт, а потом немного копнем в реализацию смарт-контрактов на примере блокчейна Ethereum.
                  Читать дальше →
                • Модель памяти в примерах и не только

                  • Tutorial
                  В продолжение серии топиков под названием «фундаментальные вещи о Java, которые стоит знать, но которые многие не знают». Предыдущий топик: Бинарная совместимость в примерах и не только

                  Модель памяти Java — нечто, что оказывает влияние на то, как работает код любого java-разработчика. Тем не менее, довольно многие пренебрегают знанием этой важной темы, и порой наталкиваются на совершенно неожиданное поведение их приложений, которое объясняется именно особенностями устройства JMM. Возьмём для примера весьма распространённую и некорректную реализацию паттерна Double-checked locking:

                  public class Keeper {
                      private Data data = null;
                      
                      public Data getData() {
                          if(data == null) {
                              synchronized(this) {
                                  if(data == null) {
                                      data = new Data();
                                  }
                              }
                          }
                          
                          return data;
                      }
                  }
                  

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

                  • Tutorial
                  картинка для привлечения внимания(пост из серии «я склонировал себе исходники hotspot, давайте посмотрим на них вместе»)
                  Все, кто сталкивается с многопоточными проблемами (будь то производительность или непонятные гейзенбаги), неизбежно сталкиваются в процессе их решения с терминами вроде «inflation», «contention», «membar», «biased locking», «thread parking» и тому подобным. А вот все ли действительно знают, что за этими терминами скрывается? К сожалению, как показывает практика, не все.

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

                  Перед прочтением глубокого описания полезно убедиться в том, что вы в достаточной мере разбираетесь в Java Memory Model. Изучить её можно, например, по слайдам Сергея Walrus Куксенко или по моему раннему топику. Также отличным материалом является вот эта презентация, начиная со слайда #38.
                  Читать дальше. Много.
                • Шпаргалка по шаблонам проектирования


                    Перевод pdf файла с сайта http://www.mcdonaldland.info/ с описанием 23-х шаблонов проектирования GOF. Каждый пункт содержит [очень] короткое описание паттерна и UML-диаграмму. Сама шпаргалка доступна в pdf, в виде двух png файлов (как в оригинале), и в виде 23-х отдельных частей изображений. Для самых нетерпеливых — все файлы в конце статьи.

                    Под катом — много картинок.

                    Читать дальше →
                    • +166
                    • 1023k
                    • 64
                  • Читаем, слушаем, используем. Гайд по источникам для саморазвития Android-разработчика

                      Пару недель назад я опубликовал “дорожную карту” по развитию для iOS-разработчиков. Теперь, как и обещал, — подобная подборка ресурсов для тех, кто работает с Android. Важный момент — разных источников много, но я выбрал именно те, что постоянно читаю сам, и в чём нахожу пользу. Итак, регулярные рассылки, блоги (личные, коллективные и в видеоформате), подкасты, живые чаты на русском языке, telegram-каналы и огонь-события — всё здесь, под катом.


                      Читать дальше →
                      • +20
                      • 22,1k
                      • 3
                    • Архитектурная пирамида приложения

                        Программирование — достаточно молодая область знаний, однако, в ней уже существуют базовые принципы «хорошего кода», рассматриваемые большинством разработчиков как аксиомы. Все слышали о SOLID, KISS, YAGNI и других трех- или четырех- буквенных аббревиатурах, делающих ваш код чище. Эти принципы влияют на архитектуру вашего приложения, но помимо них существуют архитектурные стили, методологии, фреймворки и много чего еще.

                        Разбираясь со всем этим по отдельности, меня заинтересовал вопрос — как они взаимосвязаны? Пытаясь выстроить иерархию и вдохновившись небезызвестной пирамидой Маслоу, я построил свою пирамиду «архитектуры приложения».

                        О том, что из этого вышло — читайте под катом.
                        Войти в пирамиду
                      • Как стать более продуктивным с плагинами Android Studio

                        • Перевод
                        image

                        Android Studio — очень надежный инструмент. Он имеет самый простой и вместе с тем самый гибкий интерфейс для разработки пользовательского интерфейса для всех типов устройств.
                        Мы можем перетаскивать элементы представления и виджеты в нашем редакторе макетов и детально настраивать через несколько строк в xml.

                        Студия обладает лучшими в отрасли инструментами для редактирования кода, отладки и отслеживания производительности.

                        Но иногда хочется, чтобы этот инструмент делал нас еще более продуктивными.
                        Читать дальше →
                      • Заблуждения Clean Architecture

                          Превращаем круги в блоки

                          ­­ 


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

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