• Инструменты обработки OLAP-запросов для Big Data



    Введение


    Эта статья является компиляцией другой статьи. В ней я намерен сконцентрироваться на инструментах для работы с Big data, ориентированных на анализ данных.

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

    Существует множество инструментов, используемых для работы с данными, каждый из которых имеет свои преимущества и недостатки. Большинство из них ориентировано на OLAP, но некоторые также оптимизированы для OLTP. Часть из них использует стандартные форматы и сосредоточена только на выполнении запросов, другие используют свой собственный формат или хранилище для передачи обработанных данных в источник в целях повышения производительности. Некоторые из них оптимизированы для хранения данных с использованием определенных схем, например «звезда» или «снежинка», но есть и более гибкие. Подводя итог, имеем следующие противопоставления:

    • Хранилище данных против Озера
    • Hadoop против Автономного хранилища
    • OLAP против OLTP
    • Движок запросов против OLAP механизмов


    Мы также рассмотрим инструменты для обработки данных с возможностью выполнения запросов.
    Читать дальше →
  • PostgreSQL Antipatterns: уникальные идентификаторы

      Достаточно часто у разработчика возникает потребность формировать для записей таблицы PostgreSQL некие уникальные идентификаторы — как при вставке записей, так и при их чтении.


      Таблица счетчиков


      Казалось бы — чего проще? Заводим отдельную табличку, в ней — запись со счетчиком. Надо получить новый идентификатор — читаем оттуда, чтобы записать новое значение — делаем UPDATE

      Так делать не надо! Потому что завтра же вам придется решать проблемы:

      Читать дальше →
      • +21
      • 5,1k
      • 6
    • 10 советов схемотехнику

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


        Читать дальше →
      • Яндекс записал звуки ретрокомпьютеров



          Каждый день, когда Музей Яндекса открыт, я как сотрудник музея включаю все наши экспонаты: компьютеры и другую технику. Подолгу задерживаться у каждого устройства нет времени — не всегда можно визуально удостовериться, что компьютер включился. Помогают звуки: я помню «корректное» звучание каждого из экспонатов. В детстве эти звуки казались чем-то магическим. Я подумал — почему бы не сохранить звуки компьютеров для истории и не добавить их на сайт музея, чтобы оживить страницы экспонатов. Расскажу, как мы это делали и какую технику использовали.
          Читать дальше →
        • 5 практических рекомендаций по использованию React-хуков в продакшне

          • Перевод
          Автор статьи, перевод которой мы сегодня публикуем, говорит, что в компании commercetools приняли на вооружение хуки React в начале 2019 года — в момент их появления в React 16.8.0. С тех пор программисты компании постоянно перерабатывают свой код, переводя его на хуки. Хуки React позволяют, не используя классы, работать с состоянием компонентов и пользоваться другими возможностями React. Используя хуки, можно, работая с функциональными компонентами, «подключаться» к событиям жизненного цикла компонентов и реагировать на изменения их состояния.


          Читать дальше →
        • Intersection Observer API: примеры использования

          • Tutorial


          Доброго времени суток, друзья!

          Обзор


          Intersection Observer API (IOA) позволяет приложению асинхронно наблюдать за пересечением элемента (target) с его родителем (root) или областью просмотра (viewport). Другими словами, этот API обеспечивает вызов определенной функции каждый раз при пересечении целевого элемента с root или viewport.

          Примеры использования:

          • «ленивая» или отложенная загрузка изображений
          • бесконечная прокрутка страницы
          • получение информации о видимости рекламы для целей расчета стоимости показов
          • запуск процесса или анимации, находящихся в поле зрения пользователя

          Читать дальше →
          • +10
          • 7,8k
          • 2
        • Что в Белизне тебе моей или Справочное пособие по гипохлориту натрия («хлорке»)

          • Tutorial
          Не передать, насколько мне приятно это писать. Данная статья полностью профинансирована подписчиками канала LAB66. Ни один производитель описанных в тексте средств -  своего участия не проявил, так что никакой скрытой рекламы, чиcтый альтруизм и потребительский интерес :)

          Сегодня читаем о самом простом, самом доступном и самом действенном антисептике — про гипохлорит натрия (он же «Белизна»). Совместимость с различными материалами, техника безопасности, свойства и эффективность не только против коронавируса, но и против страшной плесени и ее микотоксинов. В качестве «вишенки» — контрольная закупка магазинных отбеливателей и оценка их состава. Чтобы узнать как в эпоху пандемии нас дурят производители бытовой химии и прочий «менеджерский брат» — идем под кат. И обязательно закидываем в закладки. Эта информация пригодится еще не раз ;)


          Даешь нормальную Белизну!
        • Как сервис Estimate помогает автоматизировать процесс оценки и узнать стоимость IT-проекта

            Как для бизнеса, так и для IT-компании оценка – один из самых важных этапов в начале работы над проектом. Бизнес готов сотрудничать с тем подрядчиком, который назовет стоимость объективно и быстро, кроме того, заказчикам нужна максимальная прозрачность оценки.

            При этом на рынке существует значительный разброс цен: например, одна IT-компания оценивает работу в 300 тысяч рублей, а другая – в 900 тысяч. Стоимость зависит от множества факторов: способа реализации, опыта экспертов, глубины оценки и т.д.

            Мы в SimbirSoft уже пять лет используем собственный сервис для автоматизации процесса оценки – Estimate. Мы создали его для того, чтобы упростить работу специалистов, которые занимались оценкой вручную – потому что количество запросов на разработку постоянно росло, а опытные эксперты одновременно были нужны и в оценке, и в проектной работе. Мы постепенно улучшали Estimate и в результате получили инструмент, который учитывает особенности разработки IT-систем любой сложности. В статье расскажем, как вы можете с его помощью ускорить оценку и учесть возможные риски.

            Читать дальше →
          • Находки аудиомана: где послушать музыку ушедших эпох

              Мы уже писали о различных музыкальных находках: картах звуков и дереве жанров. Сегодня продолжаем тему — говорим о сервисах, которые позволяют погрузиться в атмосферу прошлых лет.

              Надеемся, что подборка поможет вам разнообразить фон во время работы из дома.

              Читать дальше →
              • +23
              • 8,5k
              • 7
            • Шаблон backend сервера на Golang — часть 1 (HTTP сервер)

              • Tutorial

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


              Шаблон включает:


              • Передачу параметров сервера через командную строку github.com/urfave/cli
              • Настройка параметров сервера через конфигурационный файл github.com/sasbury/mini
              • Настройка параметров TLS HTTP сервера
              • Настройка роутера регистрация HTTP и prof-обработчиков github.com/gorilla/mux
              • Настройка уровней логирования без остановки сервера github.com/hashicorp/logutils
              • Настройка логирования HTTP трафика без остановки сервера
              • Настройка логирования ошибок в HTTP response без остановки сервера
              • HTTP Basic аутентификация
              • MS AD аутентификация gopkg.in/korylprince/go-ad-auth.v2
              • JSON Web Token github.com/dgrijalva/jwt-go
              • Запуск сервера с ожиданием возврата в канал ошибок
              • Использование контекста для корректной остановки сервера и связанных сервисов
              • Настройка кастомной обработки ошибок github.com/pkg/errors
              • Настройка кастомного логирования
              • Сборка с внедрением версии, даты сборки и commit

              Вторая часть шаблона посвящена прототипированию REST API.


              Ссылка на репозиторий проекта.


              В шаблон включены HTTP обработчики:


              • POST /echo — трансляция request HTTP и body в response
              • POST /signin — аутентификация и получение JWT в Cookie
              • POST /refresh — обновление времени жизни JWT в Cookie
              • POST /httplog — настройка логирования HTTP трафика
              • POST /httperrlog — настройка логирования ошибок в HTTP response
              • POST /loglevel — настройка уровней логирования DEBUG, INFO, ERROR
              Читать дальше →
              • +9
              • 9,4k
              • 5
            • Домашний кинотеатр на Raspberry

              • Tutorial
              Так случилось, что решил я упростить себе вопрос он-лайн просмотра фильмов, вариант стандартного смарт ТВ меня не устраивал, а постоянно торчащий кабель HDMI для подключения к ноутбуку раздражал. Решение моей проблемы я увидел в приобретении Raspberry Pi 4, который можно аккуратно спрятать за корпусом телевизора.
              Читать дальше →
            • Взаимодействие с NIDD через SCEF с использованием утилиты Postman. Краткий экскурс в SCEF и его возможности

              Данная статья позволит тем, кто еще только начинает свою разработку или уже применяет технологию NB-IoT, составить представление о том, как можно удаленно взаимодействовать с NB-IoT устройством.

              image

              Краткий обзор


              NB-IoT легко наступает на пятки 2G и зарекомендовал себя как энергоэффективный стандарт сотовой связи, который уже в обозримом будущем будет способен потеснить укрепившийся на своей позиции 2G. Причиной тому является возможность гибко подойти к вопросу энергопотребления одной из самых потребляющих частей устройства – радиопередатчику. Если не вдаваться глубоко в детали, то вместе с NB-IoT у нас появилась возможность гибко настраивать режимы работы устройства за счет настройки расписания выхода устройства на связь и взаимодействия устройства с серверами в сети Интернет.

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

              Предполагается, что у читателя есть примерное представление о технологии NB-IoT и имеется минимальный опыт взаимодействия.
              Статья регулярно дополняется и обновляется

              Читать дальше →
            • Собеседования по алгоритмам: теория vs. практика

              • Перевод
              tl;dr За последние десятилетия мода на собеседования программистов менялась несколько раз, и каждая из них выглядит нелепо в ретроспективе. Либо мы наконец-то нашли настоящий секрет эффективных собеседований, либо увлеклись очередным модным течением, которое через десять-двадцать лет покажется столь же нелепым.

              Когда я спрашиваю людей в модных больших технологических компаниях, почему на собеседовании так обязательно спрашивать об алгоритмах, самый распространённый ответ — что-то вроде: «У нас такой масштаб, мы не можем позволить, чтобы кто-то случайно написал функцию O(n^2) и повалил всю систему»1. Что особенно забавно, в последнее время я немало применял на практике эти алгоритмы и решал реальные проблемы, но не могу пройти собеседования, где о них спрашивают! Думаете, я проваливаю половину собеседований или что-то в этом роде? Нет, больше половины. Я участвовал примерно в 40 «настоящих» собеседованиях и прошёл, может, одно или два. Или ни одного2.

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

              • Перевод


              Вы знаете, каково это. Впихнуть всё необходимое в спринт и так весьма непросто, а ведь ещё нужно где-то найти дополнительные 10–20% времени разработчиков на возврат технического долга. Если вы когда-либо отстаивали необходимость выкраивания времени на это, то вы знаете, что это походит на крестовый поход эпических масштабов.


              Но сделать это можно, и в этом руководстве мы выясним, как именно.

              Читать дальше →
              • +14
              • 8,3k
              • 5
            • Подарки для внимательных слушателей: какие аудиопасхалки прятали в «pre-gap» на Audio CD

                Мы уже рассказывали про сюрпризы, которые хранят в себе виниловые пластинки. Это был винил 1901 года, композиции Pink Floyd и The B-52's, небольшие программы и даже оптические эксперименты.

                Нам понравился ваш отклик в комментариях и мы решили расширить тему. Посмотрим как на винил, так и на другие форматы — и поговорим о новых «пасхалках», скрытых на самых разных альбомах.

                Читать дальше →
              • Как я попал в ThoughtWorks или образцовое интервью

                  image

                  Не кажется ли вам странным то, что когда вы собираетесь поменять место работы и возникает необходимость пройти интервью, то в первую очередь вы думаете «надо подготовиться к интервью». Прорешать задачи на HackerRank, почитать Crack the coding interview, зазубрить как устроен ArrayList и чем она отличается от LinkedList. Ах да, еще сортировки спросить могут, и явно будет непрофессионально сказать, что quick sort скорее всего будет лучшим выбором.
                  Но постойте, вы ведь программируете 8 часов в день, решаете интересные и нетривиальные задачи, и на новом месте работы будете делать плюс-минус тоже самое. Но тем не менее, чтобы пройти интервью необходимо как-то дополнительно готовиться, даже не оттачивать ежедневные навыки, а выучить то, что вам не понадобилось ни на текущем месте работы, ни вряд ли понадобиться на следующем. На ваши возражения о том, computer science у нас в крови, и разбуди нас посреди ночи мы обязаны написать с закрытыми глазами на наволочке обход дерева в ширину даже не приходя в сознание, я отвечу, что если я буду устраиваться в цирк, и моим главным трюком будет именно это — то пожалуй да, я согласен. Нужно этот навык проверить.
                  Читать дальше →
                • [По докам] Flutter. Часть 2. Для iOS разработчиков

                    После длительного перерыва я продолжу рассказывать о популярном фреймворке Flutter в формате «вопрос — ответ». Первую статью для Android-разработчиков вы можете найти здесь, а сегодня будет полезный материал для разработчиков под iOS.

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



                    Flutter. Часть 1. Для Android-разработчиков
                    Flutter. Часть 2. Для iOS-разработчиков
                    Flutter. Часть 3. Для разработчиков React Native
                    Flutter. Часть 4. Для веб-разработчиков
                    Flutter. Часть 5. Для Xamarin.Forms-разработчиков
                    Читать дальше →
                  • Сверхточное позиционирование на дороге

                      image

                      Навигация и локализация с помощью GNSS уже давно является стандартом в нашей повседневной жизни. Использование этой системы стало стандартном и для беспилотного автомобиля НПО СтарЛайн OSCAR. В то время как большинство людей пользуются простыми GPS приемниками в телефонах, OSCAR использует высокоточные GNSS решения. Но для начала, что вообще такое GNSS, и как она работает?
                      Читать дальше →
                    • Работа не волк, часть 4. Опытный сотрудник: как не перегореть и не сдаться

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


                        Часть 1. Поиск работы: источники, резюме, собеседование с HR
                        Часть 2. Устройство и адаптация: собеседуем с боссом, проходим испытательный срок с ветерком
                        Часть 3. Работа в роли новичка: рост в компании
                        Часть 4. Работа в роли опытного сотрудника: как не перегореть
                        Часть 5. Увольнение: я ухожу красиво
                        Читать дальше →
                        • +41
                        • 25,7k
                        • 3
                      • Домашний ЧПУ-фрезер как альтернатива 3D принтеру, часть пятая, обработка

                        • Tutorial
                        Я начал писать эту статью уже давно, но недавняя статья «Гребной винт «незацепляйка» на станке с ЧПУ» вывела меня из душевного равновесия, и буквально швырнула за дописывание. Это что же такое получается — пока я тут прокрастинирую, в интернете кто-то так и будет неправ? Я же весь на икоту изойду, когда опубликую, и будет мне вместо респекта и уважухи проклятия и позор.
                        Поскольку статья дописана форсированно, будет некая нестыковка: изначально я планировал подробно описать хотя бы наиболее актуальные стратегии CAM программ, и даже начал это делать на синтетической детали:

                        image

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

                        image

                        Кому уже интересно — велкам под кат. Много картинок, торопливое изложение и некачественный текст гарантирую.
                        Читать дальше →