• Как устроен поиск Яндекс.Маркета и что будет, если упадёт один из серверов

      Привет, меня зовут Евгений. Я работаю в инфраструктуре поиска Яндекс.Маркета. Хочу рассказать сообществу Хабра о внутренней кухне Маркета – а рассказать есть что. Прежде всего, как устроен поиск Маркета, процессы и архитектура. Как мы справляемся с внештатными ситуациями: что случится, если упадёт один сервер? А если таких серверов будет 100?

      А ещё вы узнаете, как мы внедряем новую функциональность на куче серверов сразу. И как тестируем сложные сервисы прямо в production, не доставляя пользователям никаких неудобств. В общем, как устроен поиск Маркета, чтобы всем было хорошо.


      Читать дальше →
    • Веб-альманах 2019: Доступность

      • Translation


      Доступность в вебе имеет важное значение для равноправного и справедливого общества. Чем больше наша социальная и профессиональная сфера жизни переходит в онлайн, тем более важной для людей с ограниченными возможностями становится способность принимать участие во всех онлайн взаимодействиях без дополнительных барьеров. Подобно тому, как архитекторы зданий могут заботиться или пренебрегать технологиями доступности, такими как рампы для инвалидных колясок, веб-разработчики могут помогать или мешать пользователям, использующим дополнительные средства для выхода в интернет.
      Читать дальше →
      • +12
      • 3.8k
      • 3
    • Низкая связанность, архитектура и организация команд

      • Translation
      Перевод статьи подготовлен специально для студентов курса «DevOps практики и инструменты».




      В этой статье обсуждается взаимосвязь между структурой кода и структурой организации при разработке программного обеспечения. Я рассуждаю над тем, почему программное обеспечение и команды не могут легко масштабироваться, какие уроки мы можем подсмотреть в природе и Интернете, и показываю как мы можем уменьшить связанность программного обеспечения и команд для преодоления проблем масштабирования.
      Читать дальше →
      • +23
      • 6.2k
      • 5
    • Как оценивать и сравнивать устройства шифрования для сетей Ethernet

      Этот обзор (или, если хотите, руководство для сравнения) я написал, когда мне поручили сравнить между собой несколько устройств разных вендоров. К тому же эти устройства принадлежали к разным классам. Пришлось разбираться в архитектуре и характеристиках всех этих устройств и составлять «систему координат» для сравнения. Я буду рад, если мой обзор поможет кому-то:

      • Разобраться в описаниях и спецификациях устройств шифрования
      • Отличить «бумажные» характеристики от действительно важных в реальной жизни
      • Выйти за рамки привычного набора вендоров и включить в рассмотрение любые продукты, подходящие для решения поставленной задачи
      • Задать правильные вопросы на переговорах
      • Составить тендерные требования (RFP)
      • Понять, какими характеристиками придется пожертвовать, если будет выбрана какая-то модель устройства
      Читать дальше →
      • +14
      • 6.2k
      • 5
    • Если вы что-то создаёте, избегайте расписания менеджера

      • Translation


      В книге ”Masters of Doom” о компании id Software и её влиянии на массовую культуру Дэвид Кушнер размышлял о необычном стиле работы ведущего программиста Джона Кармака.

      Чтобы повысить производительность и не отвлекаться от работы над движком Quake, тот принял агрессивный подход — начал постепенно смещать начало рабочего дня. В конце концов Джон садился программировать вечером, а заканчивал перед рассветом. Эти непрерывные отрезки тишины, изоляции и глубокой работы позволили ему создать первый в мире сверхбыстрый 3D-движок. Игра Quake произвела настоящий фурор.
      Читать дальше →
    • Шорты про Scrum

        Гибкий суррогат


        Словом «Scrum» называются, как минимум, две сущности: философия и фреймворк.
        Философия, или подход к работе, описан в книге Джеффа Сазерленда.
        Фреймворк, т.е. алгоритм действий, описан в документе под названием Scrum Guide.
        Философия превратилась в фреймворк, потому что авторы философии хотели заработать на ней денег (по их собственным словам).

        Фреймворк сильно упрощен, по сравнению с философией. Главное — упрощена, а точнее выкинута, цель.

        Цель философии: ускорение достижения результата. Причем, в разы. В книге есть примеры ускорения в 8 раз.

        Цель фреймворка: чтобы у вас был Scrum. Там так и написано: делаете по инструкции — у вас Scrum, нарушаете инструкцию — у вас не Scrum.

        Фреймворк не предполагает ускорения достижения результата, вообще.

        Люди, преподающие или внедряющие Scrum, работают с фреймворком. Рассказывают и внедряют алгоритм, не приводящий ни к каким результатам, кроме «у нас теперь Scrum».

        Суть понятна. Философию продавать очень сложно. Фреймворк — проще.

        Фреймворк — это продукт. Он, как положено, прошел «упаковку». Он прост, понятен, есть поддержка и много специалистов. Ничего не напоминает?

        Всё хорошо, кроме результата — его нет.
        Читать дальше →
      • Как проектировать большие и сложные веб-таблицы

        • Translation
        image

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

        В этом случае дизайнер сталкивается со многими проблемами. Например, сопоставление дизайна с существующими фронт-енд фреймворками или борьба с «неудобными» данными, которые разрушают макет. Мы преодолеем эти проблемы с помощью следующих шагов: систематизируем потребности, станем атомарными и определим взаимодействие.
        Читать дальше →
      • WebAssembly: что и как


          Эта статья основана на моём выступлении на конференции ITSubbotnik, прошедшем 2 ноября 2019 года в Москве.


          Вообще я бэкенд программист, но меня заинтересовала эта технология, она позволяет использовать мои знания бэкенда на фронте.


          Проблема


          Начнём с проблемы, которая решается этой (относительно новой) технологией. Проблема эта — быстро исполнять код в браузере. Быстро — это значит, «быстрее чем JavaScript», в идеале настолько быстро, насколько позволяет имеющийся у нас процессор.

          Читать дальше →
        • В современном автомобиле строк кода больше чем…

            image

            Количество строк кода в современном автомобиле в 200 раз больше чем в Шаттле, в 60 раз больше, чем в истребителе F-22 Raptor, в 50 раз больше, чем в телескопе Хаббл, в 20 раз больше чем в марсоходе Curiosity, в 4 раза больше чем в истребителях пятого поколения, в 2 раза больше, чем в большом адронном коллайдере или Facebook, если распечатать весь код на бумаге, то стопка будет высотой 200 метров. (по данным на 2009-2012 год)

            Данные по количеству строк кода в современном автомобиле вызвали бурные споры на Reddit. Вопросы на темы от «В каком месте эти строчки прячутся, если у микроконтроллеров ограничена память?» до «Разве количество строк кода хоть что-то значит?»

            Сравнительные данные по количеству строк кода (SLOC) в различных проектах довольно интересные.
            Читать дальше →
          • Опенсорсный чип OpenTitan заменит проприетарные корни доверия Intel и ARM



              Некоммерческая организация lowRISC при участии Google и других спонсоров 5 ноября 2019 года представила проект OpenTitan, который называет «первым опенсорсным проектом по созданию открытой, качественной архитектуры микросхем с корнем доверия (RoT) на аппаратном уровне».

              OpenTitan на архитектуре RISC-V — микросхема специального назначения для установки на серверах в дата-центрах и в любом другом оборудовании, где нужно обеспечить аутентичность загрузки, защитить прошивку от изменений и исключить вероятность руткитов: это материнские платы, сетевые карты, маршрутизаторы, устройства IoT, мобильные гаджеты и др.

              Конечно, подобные модули есть в современных процессорах. Например, аппаратный модуль Intel Boot Guard является корнем доверия в процессорах Intel. Он по цепочке доверия верифицирует подлинность UEFI BIOS перед загрузкой ОС. Но вопрос, насколько мы можем доверять проприетарным корням доверия с учётом того, что у нас нет гарантий отсутствия багов в дизайне, а проверить его нет возможности? См. статью «Доверенная загрузка Шрёдингера. Intel Boot Guard» с описанием того, «как годами клонируемая ошибка на производстве нескольких вендоров позволяет потенциальному злоумышленнику использовать эту технологию для создания в системе неудаляемого (даже программатором) скрытого руткита».
              Читать дальше →
            • «Шакал»: сжимаем фронтенд

                Привет! Я — Ваня, лид платформенной команды в Тинькофф Бизнес.

                Мое любимое занятие — открывать вкладку DevTools и проверять, сколько весят артефакты сайта. В этой статье расскажу, как мы сократили вес приложения на 30% силами платформенной фронтенд-команды за один день без изменения кода сайта. Никаких хитростей и регистраций — только nginx, docker и node.js (опционально).


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

                • Translation
                • Tutorial
                Передать нужный код для каждого браузера – непростая задача.

                В этой статье рассмотрим несколько вариантов, как эту задачу можно решить.



                Передача современного кода современным браузером может очень сильно повысить производительность. Ваши JavaScript-пакеты смогут содержать более компактный или оптимизированный современный синтаксис и поддерживать старые браузеры.

                Среди инструментов для разработчиков доминирует паттерн module/nomodule декларативной загрузки современного или legacy-кода, который предоставляет браузерам источники и позволяет решать, какие из них использовать:

                <script type="module" src="/modern.js"></script>  
                <script nomodule src="/legacy.js"></script> 

                К сожалению, не всё так просто. Показанный выше подход на основе HTML инициирует перезагрузку скриптов в Edge и Safari.
                Читать дальше →
              • Улучшите свой CSS с помощью этих 5 принципов

                • Translation


                Написание CSS — процесс достаточно простой и понятный, тогда почему для этого требуются еще какие-то принципы и best-practices?

                По мере увеличения масштабов проекта и количества людей, работающего над ним, всё более и более явно начинают проявляться новые сложности, которые могут вызвать серьезные проблемы в будущем. Дублирование кода, сложные цепочки переопределения свойств, использование !important, оставшиеся и неиспользуемые CSS-свойства от удаленных HTML-элементов и так далее. Такой код сложнее читать и исправлять.

                Написание CSS на профессиональном уровне сделает код более поддерживаемым, расширяемым, понятным и чистым. Давайте рассмотрим 5 простых и очень эффективным принципов, которые выведут ваш CSS на новый уровень
                Читать дальше →
              • Мифы о доступности цветового контраста

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

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


                Читать дальше →
              • Часть вторая. Как проходить code review по версии Google

                  Возможно вы читали первую часть статьи про код ревью со стороны ревьювера (кстати, мы уже успели ее обсудить в последнем выпуске подкаста "Цинковый прод").

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

                  Как обычно, будем говорить MR (Merge Request) вместо CL, потому что термин CL мало кто понимает.


                  Оригинал инструкции для авторов MR по версии Google можно посмотреть здесь, а я дам краткую выжимку.


                  Итак, поехали

                  Читать дальше →
                • Принципы документирования и локализации, или как получить хорошую локализацию минимальными затратами

                    Всем привет!

                    Меня зовут Денисов Александр. Я работаю в компании Naumen и отвечаю за документирование и локализацию программного продукта Naumen Contact Center (NCC).

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

                    image
                    Читать дальше →
                  • Введение в Git

                    • Tutorial

                    Оглавление


                    Предисловие
                    1. Настройка git
                    ....1.1 Конфигурационные файлы
                    ....1.2 Настройки по умолчанию
                    ....1.3 Псевдонимы (aliases)
                    2. Основы git
                    ....2.1 Создание репозитория
                    ....2.2 Состояние файлов
                    ....2.3 Работа с индексом
                    ....2.4 Работа с коммитами
                    ....2.5 Просмотр истории
                    ....2.6 Работа с удалённым репозиторием
                    3. Ветвление в git
                    ....3.1 Базовые операций
                    ....3.2 Слияние веток
                    ....3.3 Rerere
                    4. Указатели в git
                    ....4.1 Перемещение указателей
                    5. Рекомендуемая литература

                    Предисловие


                    Git — самая популярная распределённая система контроля версиями.[1][2]

                    Основное предназначение Git – это сохранение снимков последовательно улучшающихся состояний вашего проекта (Pro git, 2019).
                    Читать дальше →
                  • Как не нужно составлять согласие на обработку персональных данных

                      И какие согласия не стоит подписывать.



                      Доброго времени суток, Хабр!

                      Эта статья родилась совершенно спонтанно из такой вот истории.

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

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

                      Под катом разберемся, что с согласием не так и почему оно незаконно.
                      Читать дальше →
                    • Лошадь сдохла – слезь: переход с tslint на eslint

                        До недавнего времени во всех проектах фронта разработчики Dodo Pizza Engineering использовали tslint – полезный инструмент, который подсказывает, когда ты накосячил в коде допустил неточность, помогает поддерживать код в одном стиле и сам исправляет многие замечания. Но тут tslint взял и умер. Под катом я расскажу, почему так вышло, как перестать лить слёзы по умершему и перейти на инструмент eslint, а также покажу кое-что очень интимное.


                        Читать дальше →
                      • Как проводить Code Review по версии Google

                          Вопросы код-ревью меня интересуют очень давно. Много раз возникали те или иные проблемы то с качеством кода, то с климатом в коллективе. И действительно, code review — это если не единственное, то одно из самых главных мест для возникновения конфликтов в коллективе разработчиков.

                          И вот недавно при подготовке к очередному выпуску подкаста "Цинковый прод" я узнаю, что Google опубликовал свод правил по проведению Code Review, битком набитый ценными мыслями. Весь материал довольно объемный и не влезет в одну статью, поэтому я постараюсь выделить наиболее интересные (мне) мысли.


                          Итак, поехали

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